Führerredux Wiki
fuhrerreduxwiki
https://fuhrerredux.miraheze.org/wiki/Main_Page
MediaWiki 1.40.1
first-letter
Media
Special
Talk
User
User talk
Führerredux Wiki
Führerredux Wiki talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
UserWiki
UserWiki talk
User profile
User profile talk
GeoJson
GeoJson talk
Campaign
Campaign talk
TimedText
TimedText talk
BPMN
BPMN talk
Gantt
Gantt talk
Mermaid
Mermaid talk
Drawio
Drawio talk
Module
Module talk
Gadget
Gadget talk
Gadget definition
Gadget definition talk
FX
FX talk
Template:Cite
10
1164
2490
2009-01-23T18:05:30Z
w>Aervanath
0
redirect to [[Template:Citation]] per request on talk page
wikitext
text/x-wiki
#REDIRECT [[Template:Citation]]
b0762d88014fb55e2365a35525816c8f782cd8ff
Template:Doc subpage
10
491
1087
2009-04-19T21:57:38Z
wikipedia>MSGJ
0
[[WP:AES|←]]Redirected page to [[Template:Documentation subpage]]
wikitext
text/x-wiki
#redirect[[Template:Documentation subpage]]
3aaef8c38750fcf2836627f907d6456f297f493d
Template:Cnote2 begin
10
1621
2956
2009-09-20T18:40:37Z
w>ChyranandChloe
0
redir
wikitext
text/x-wiki
#Redirect[[Template:Cnote2 Begin]]
1d2c3a2fb7c1a2a5bd063109ecd51f51df9949d5
Template:Cnote2 end
10
1622
2957
2009-09-20T18:41:07Z
w>ChyranandChloe
0
redir
wikitext
text/x-wiki
#Redirect[[Template:Cnote2 End]]
526e9e84e398c3252c087485d73f5d070261843a
Template:File other
10
1312
2647
2010-10-04T14:41:22Z
w>WOSlinker
0
remove {{pp-template}}
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:6}}
| file
| other
}}
}}
| file
| image = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
0ae5bdb15fbe55f5787d00f85a443e4eac787c5e
Template:Service record/doc
10
1520
2855
2010-11-30T17:19:02Z
w>Mhiji
0
moved [[Template:Service record/doc]] to [[Template:Infobox service record/doc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox service record/doc]]
38cb0b93fc4900e0c498c2a21ceaf5575b9d3853
Template:Command structure/doc
10
1516
2851
2010-11-30T17:20:18Z
w>Mhiji
0
moved [[Template:Command structure/doc]] to [[Template:Infobox command structure/doc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox command structure/doc]]
72133518cc1e5fc21c0f32cd8a42ae6c98d84e28
Template:Infobox tea/types
10
1488
2823
2011-04-29T17:43:28Z
w>Calliopejen1
0
wikitext
text/x-wiki
{{#switch: {{{1}}}
| Black = aaaaaa
| Green = 009c00
| Oolong = 590000
| Pouchong = ff7594
| Post-fermented = 8822ff
| Puerh = 5e3253
| White = d7f2ac
| Wuyi = 000097
| Yellow = fff127
| aaaaaa
}}
7f33a00eb961101caca49c87ec3dabd582cd4027
Template:Infobox UK place/area
10
1412
2747
2012-04-23T10:13:20Z
w>AGK
0
Changed protection level of Template:Infobox UK place/area: [[Wikipedia:High-risk templates|Highly-visible template]] (between 700 and 1200 transclusions) ([edit=autoconfirmed] (indefinite) [move=sysop] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{Convert|{{{top}}}|sqmi|km2|abbr=on}}|<!-- else -->{{Convert|{{{top}}}|km2|sqmi|abbr=on}} }}</includeonly><noinclude>
{{documentation|content=
This subtemplate uses [[Template:Convert]] to convert area measurements from square miles to km<sup>2</sup> (if <code>type</code> equals mile) or from km<sup>2</sup> to square miles (if <code>type</code> does not equal mile).
== Example ==
:<code><nowiki>{{Infobox UK place/area|top=1,000|type=mile}}</nowiki></code> → {{Infobox UK place/area|top=1,000|type=mile}}
:<code><nowiki>{{Infobox UK place/area|top=1,000|type=km}}</nowiki></code> → {{Infobox UK place/area|top=1,000|type=km}}
This template should not be used directly.
}}</noinclude>
2f18ba1d6cce152785aee7b65721835ab75ab309
Template:Cite book/lua
10
692
1552
2013-03-24T23:28:10Z
wikipedia>Dragons flight
0
[[WP:AES|←]]Redirected page to [[Template:Cite book]]
wikitext
text/x-wiki
#redirect [[Template:Cite book]]
598ed4dfc9eb5f2d9778d19c1e673eca6ae6aeb4
Template:Campaign/doc
10
1509
2844
2013-05-07T21:33:04Z
w>BDD
0
BDD moved page [[Template:Campaign/doc]] to [[Template:Campaignbox/doc]] over redirect: RM; see talk page
wikitext
text/x-wiki
#REDIRECT [[Template:Campaignbox/doc]]
96204735bd25c964b25be72f9fe56c67b3302279
Template:Infobox consort styles
10
1125
2450
2013-07-13T18:50:35Z
w>Pigsonthewing
0
ce
wikitext
text/x-wiki
{{Infobox manner of address
| background = #BBAADD
| color = #000066
| name = {{{royal name<includeonly>|</includeonly>}}}
| consort = true
| image = {{{image<includeonly>|</includeonly>}}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}<noinclude>{{documentation}}</noinclude>
54d4cc507a47d9fde85887bb2d02c274590597d6
Template:Infobox Company
10
1116
2441
2013-10-19T10:46:54Z
w>WOSlinker
0
Changed protection level of Template:Infobox Company: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox company]]
a5464fab7611dce6198f7e414696325559cec471
Template:Infobox UK place/dens
10
1413
2748
2013-10-19T11:05:31Z
w>WOSlinker
0
Changed protection level of Template:Infobox UK place/dens: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
<!-- this template is for formatting a density (using [[Template:Convert]])
if type=mile then output is sqmi (km2) otherwise km2 (sqmi)
rounding of output is to nearest whole number
--><includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{Convert|{{#expr: ({{formatnum: {{{top}}}|R}}/{{formatnum: {{{bottom }}}|R}}) round 0}}|/sqmi|/sqkm|abbr=on}}|<!-- else -->{{Convert|{{#expr: ({{formatnum: {{{top}}}|R}}/{{formatnum: {{{bottom }}}|R}}) round 0}}|/sqkm|/sqmi|abbr=on}} }}</includeonly>
9d6fa55efce3e6c937266f011c1bae890f0d90e5
Template:Infobox settlement/pref
10
1442
2777
2013-10-19T11:16:10Z
w>WOSlinker
0
Changed protection level of Template:Infobox settlement/pref: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#switch:{{ucfirst:{{{1}}}}}
|Imperial
|English
|UK|US|U.S.
|US Customary|U.S. Customary
|Standard = impus
|{{#switch:{{{2}}}
|[[United Kingdom]]|United Kingdom
|[[United States]]|United States
|[[United States of America]]|United States of America
|[[United States|United States of America]]
|[[Image:Flag of the United States.svg|20px]] [[United States]] = impus
|{{#ifeq:{{{3}}}_{{lc:{{{1}}}}}|area_dunam|dunam|metric}}
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
7f7165e08b34afaaf9f84a31965beb8f3e8a21b8
Template:Infobox settlement/link
10
1441
2776
2013-10-19T11:19:36Z
w>WOSlinker
0
Changed protection level of Template:Infobox settlement/link: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
{{#if:{{{link|}}}<!--
-->|[[{{{link}}}|{{{type}}}]]<!--
-->|{{#ifexist:{{{type}}} of {{PAGENAME}}<!--
-->|[[{{{type}}} of {{PAGENAME}}|{{{type|}}}]]<!--
-->|{{#if:{{{name|}}}<!--
-->|{{#ifexist:{{{type}}} of {{{name}}}<!--
-->|[[{{{type}}} of {{{name}}}|{{{type|}}}]]<!--
-->|{{{type}}}<!--
-->}}<!--
-->|{{{type}}}<!--
-->}}<!--
-->}}<!--
-->}}<noinclude>
{{documentation}}
</noinclude>
7f1193f6be51d8bf296df176cd7c49b5d819202e
Template:Country data Holy Roman Empire
10
1500
2835
2013-10-19T14:59:12Z
w>WOSlinker
0
Changed protection level of Template:Country data Holy Roman Empire: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Holy Roman Empire
| flag alias = Banner of the Holy Roman Emperor (after 1400).svg
| flag alias-1200 = Flag of the Holy Roman Empire (1200-1350).svg
| flag alias-old = Heiliges Römisches Reich - Reichssturmfahne vor 1433.svg
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1200
| var2 = old
</noinclude>
}}
c24cc53598b544658ee4420e6aa0370eca6c4d78
Template:Convinfobox/2
10
1557
2892
2013-10-21T06:35:44Z
w>WOSlinker
0
Changed protection level of Template:Convinfobox/2: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
<noinclude>empty
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
b95cff677c7897f77c1cb03f8d7fabf9a61a3d5a
Template:Convinfobox/3
10
1554
2889
2013-10-21T06:35:49Z
w>WOSlinker
0
Changed protection level of Template:Convinfobox/3: allow template editors to modify ([Edit=Protected template] (indefinite) [Move=Protected template] (indefinite))
wikitext
text/x-wiki
<noinclude>empty
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
b95cff677c7897f77c1cb03f8d7fabf9a61a3d5a
Template:Error
10
1384
2719
2013-10-29T00:20:58Z
w>Mr. Stradivarius
0
Protected Template:Error: [[WP:High-risk templates|Highly visible template]]: 32,000 transclusions ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{#invoke:Error|error|{{{message|{{{1}}}}}}|tag={{{tag|}}}}}<noinclude>
{{documentation}}
</noinclude>
5da54c14258c1b1755a03bccb88dc5d9d0cefb56
Template:0
10
1169
2498
2013-11-02T02:28:36Z
w>Fuhghettaboutit
0
Changed protection level of Template:0: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
<includeonly><span style="visibility:hidden;color:transparent;">{{{1|0}}}</span></includeonly><noinclude>
{{documentation}}
</noinclude>
3a81b6766266cc4e7b5039558fa86857b943df9b
Template:Auto link
10
1402
2737
2013-11-02T02:46:31Z
w>Fuhghettaboutit
0
Changed protection level of Template:Auto link: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#ifexist:{{{1|}}}
|[[{{{1}}}|{{{2|{{{1}}}}}}]]
|{{{2|{{{1}}}}}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
c4960ed09830c052d57b46f4bed246f6912635ac
Template:Collapsible list
10
1178
2507
2013-11-02T05:07:45Z
w>Fuhghettaboutit
0
Changed protection level of Template:Collapsible list: Enable access by template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:collapsible list|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
aff61df28bcc6c3457d6aa36ada4fffe68c409a9
Template:!-
10
571
1290
2013-11-17T11:54:04Z
wikipedia>Mr. Stradivarius
0
Changed protection level of Template:!-: [[WP:High-risk templates|Highly visible template]]: reinstate full-protection - this should never be edited ([Edit=Block all non-admin users] (indefinite) [Move=Block all non-admin users] (indefinite))
wikitext
text/x-wiki
|-<noinclude>
{{documentation}}
</noinclude>
19a1b27b5273caa6fd83a1208fb704afa9ee7c04
Template:Native phrase
10
1195
2524
2013-12-18T21:08:38Z
Nick
46
Protected Template:Native phrase: [[WP:High-risk templates|Highly visible template]]: #redirect ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
#redirect [[Template:Native name]]
561f2c45647b28659d991f0a467779366e7ec49e
Template:Convinfobox
10
1161
2487
2013-12-22T16:32:09Z
w>Frietjes
0
sync with sandbox, will save old version in sandbox for comparison
wikitext
text/x-wiki
{{Convinfobox/{{#if:{{{1|}}}|pri}}{{#if:{{{3|}}}|sec}}{{#if:{{{6|}}}|{{#if:{{{5|}}}|ter}}3|2}}|{{{1}}}|{{{2}}}|{{{3}}}|{{{4}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<noinclude>{{documentation}}</noinclude>
dd1f683285c4b5ba7197ff1275954bd1592ad76a
Template:Dated maintenance category
10
858
1900
2014-01-08T08:14:55Z
wikipedia>John of Reading
0
Second attempt. Those spaces upset inline templates such as {{As of}}. Instead, try an unconditional <nowiki/>
wikitext
text/x-wiki
<nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!--
-->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}}
|{{#if:{{{3|}}}
|[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!--
-->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}}
|<!--
-->|[[Category:Articles with invalid date parameter in template]]<!--
-->}}
|[[Category:{{#if:{{{5|}}}
|{{{5}}}<!--
-->|{{{1}}}<!--
-->}}]]<!--
-->}}{{#if:{{{4|}}}
|[[Category:{{{4}}}]]}}<!--
-->}}<!--
-->}}<noinclude>
{{documentation}}
</noinclude>
41e7d4000124d4f718ddf222af0b72825048c4c4
Template:Userbox
10
141
2619
2014-01-09T17:16:29Z
w>Mr. Stradivarius
0
switch to Lua version at [[Module:Userbox]]
wikitext
text/x-wiki
{{#invoke:userbox|userbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
43f31821f815f586868b4e5ea3e7116d7b972f58
Template:Userbox-r
10
1286
2621
2014-01-09T17:19:18Z
w>Mr. Stradivarius
0
Changed protection level of Template:Userbox-r: [[WP:High-risk templates|Highly visible template]]: allow template editors ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{#invoke:userbox|userbox-r}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
6aa99e94ac1015b6267ab88c2e9e2ec3a9752192
Template:Cite speech
10
972
2134
2014-02-15T11:20:29Z
wikipedia>Trappist the monk
0
Upgrade to Lua module;
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=speech
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
cf9cd1f1cc50d72b2e007ae130b09b98802fb607
Template:Infobox geopolitical organization
10
1220
2549
2014-02-21T17:02:10Z
w>Wbm1058
0
remove template in the wrong namespace, removed: {{R from other capitalisation}} using [[Project:AWB|AWB]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox country]]{{R from alternate name}}
<!-- see Template:Infobox Geopolitical organization -->
4d4892c38a22f1866ca7a29f81ddbc7fc26967f5
Template:Location map~
10
1633
2975
2014-03-13T19:27:13Z
wikipedia>Jackmcbarn
0
new function name
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map|mark}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
0dc485fa8e546ebe81ad6c28972fbea662afcf39
Module:Namespace detect
828
95
237
2014-04-05T17:01:23Z
wikipedia>Mr. Stradivarius
0
use demopage instead of page as the main "page" parameter
Scribunto
text/plain
--[[
--------------------------------------------------------------------------------
-- --
-- NAMESPACE DETECT --
-- --
-- This module implements the {{namespace detect}} template in Lua, with a --
-- few improvements: all namespaces and all namespace aliases are supported, --
-- and namespace names are detected automatically for the local wiki. The --
-- module can also use the corresponding subject namespace value if it is --
-- used on a talk page. Parameter names can be configured for different wikis --
-- by altering the values in the "cfg" table in --
-- Module:Namespace detect/config. --
-- --
--------------------------------------------------------------------------------
--]]
local data = mw.loadData('Module:Namespace detect/data')
local argKeys = data.argKeys
local cfg = data.cfg
local mappings = data.mappings
local yesno = require('Module:Yesno')
local mArguments -- Lazily initialise Module:Arguments
local mTableTools -- Lazily initilalise Module:TableTools
local ustringLower = mw.ustring.lower
local p = {}
local function fetchValue(t1, t2)
-- Fetches a value from the table t1 for the first key in array t2 where
-- a non-nil value of t1 exists.
for i, key in ipairs(t2) do
local value = t1[key]
if value ~= nil then
return value
end
end
return nil
end
local function equalsArrayValue(t, value)
-- Returns true if value equals a value in the array t. Otherwise
-- returns false.
for i, arrayValue in ipairs(t) do
if value == arrayValue then
return true
end
end
return false
end
function p.getPageObject(page)
-- Get the page object, passing the function through pcall in case of
-- errors, e.g. being over the expensive function count limit.
if page then
local success, pageObject = pcall(mw.title.new, page)
if success then
return pageObject
else
return nil
end
else
return mw.title.getCurrentTitle()
end
end
-- Provided for backward compatibility with other modules
function p.getParamMappings()
return mappings
end
local function getNamespace(args)
-- This function gets the namespace name from the page object.
local page = fetchValue(args, argKeys.demopage)
if page == '' then
page = nil
end
local demospace = fetchValue(args, argKeys.demospace)
if demospace == '' then
demospace = nil
end
local subjectns = fetchValue(args, argKeys.subjectns)
local ret
if demospace then
-- Handle "demospace = main" properly.
if equalsArrayValue(argKeys.main, ustringLower(demospace)) then
ret = mw.site.namespaces[0].name
else
ret = demospace
end
else
local pageObject = p.getPageObject(page)
if pageObject then
if pageObject.isTalkPage then
-- Get the subject namespace if the option is set,
-- otherwise use "talk".
if yesno(subjectns) then
ret = mw.site.namespaces[pageObject.namespace].subject.name
else
ret = 'talk'
end
else
ret = pageObject.nsText
end
else
return nil -- return nil if the page object doesn't exist.
end
end
ret = ret:gsub('_', ' ')
return ustringLower(ret)
end
function p._main(args)
-- Check the parameters stored in the mappings table for any matches.
local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys
local params = mappings[namespace] or {}
local ret = fetchValue(args, params)
--[[
-- If there were no matches, return parameters for other namespaces.
-- This happens if there was no text specified for the namespace that
-- was detected or if the demospace parameter is not a valid
-- namespace. Note that the parameter for the detected namespace must be
-- completely absent for this to happen, not merely blank.
--]]
if ret == nil then
ret = fetchValue(args, argKeys.other)
end
return ret
end
function p.main(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {removeBlanks = false})
local ret = p._main(args)
return ret or ''
end
function p.table(frame)
--[[
-- Create a wikitable of all subject namespace parameters, for
-- documentation purposes. The talk parameter is optional, in case it
-- needs to be excluded in the documentation.
--]]
-- Load modules and initialise variables.
mTableTools = require('Module:TableTools')
local namespaces = mw.site.namespaces
local cfg = data.cfg
local useTalk = type(frame) == 'table'
and type(frame.args) == 'table'
and yesno(frame.args.talk) -- Whether to use the talk parameter.
-- Get the header names.
local function checkValue(value, default)
if type(value) == 'string' then
return value
else
return default
end
end
local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace')
local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases')
-- Put the namespaces in order.
local mappingsOrdered = {}
for nsname, params in pairs(mappings) do
if useTalk or nsname ~= 'talk' then
local nsid = namespaces[nsname].id
-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.
nsid = nsid + 1
mappingsOrdered[nsid] = params
end
end
mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)
-- Build the table.
local ret = '{| class="wikitable"'
.. '\n|-'
.. '\n! ' .. nsHeader
.. '\n! ' .. aliasesHeader
for i, params in ipairs(mappingsOrdered) do
for j, param in ipairs(params) do
if j == 1 then
ret = ret .. '\n|-'
.. '\n| <code>' .. param .. '</code>'
.. '\n| '
elseif j == 2 then
ret = ret .. '<code>' .. param .. '</code>'
else
ret = ret .. ', <code>' .. param .. '</code>'
end
end
end
ret = ret .. '\n|-'
.. '\n|}'
return ret
end
return p
a4757000273064f151f0f22dc0e139092e5ff443
Template:Infobox Australian place/pagelinks
10
1393
2728
2014-04-19T01:33:37Z
w>AussieLegend
0
creating page for page headers
wikitext
text/x-wiki
<div align=center>''See also: [[Template:Infobox Australian place/Blank|Blank infobox page]] | [[Template:Infobox Australian place/doc|Documentation page]] | [[Template Talk:Infobox Australian place|Discussion page]]'' | ''[[Template:Infobox Australian place/Examples|Examples page]]''</div>
bafd05c658553720dccb42e2dc2ca3e82fe7dcda
Template:Hatnote
10
120
287
2014-05-23T15:55:04Z
wikipedia>SMcCandlish
0
tweak
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
4a1d1028d07c9056022807a96051e1c82cf2a1c7
Template:Hex2dec
10
1611
2946
2014-06-11T17:02:43Z
w>Frietjes
0
optional override for default to emit error
wikitext
text/x-wiki
{{#invoke: BaseConvert | convert
| n={{{1}}}
| base=10
| from=16
| default={{{default|0}}}
}}<noinclude>{{documentation}}</noinclude>
ec1e947900f45d54c750cf17a0b7f36620368092
Template:Pagetype
10
92
231
2014-07-09T08:29:38Z
wikipedia>Callanecc
0
Changed protection level of Template:Pagetype: [[WP:High-risk templates|Highly visible template]]: With more than 5.5 million transclusions and cascade protections this should be full protected as well ([Edit=Allow only administrators] (indefinite) [Move=
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:pagetype|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b8e6aa66678cd57877ea2c607372a45070f030a7
Template:Transwiki guide candidate
10
1675
3105
2014-07-11T02:57:19Z
wikipedia>Dpleibovitz
0
inline documentation
wikitext
text/x-wiki
<includeonly>{{ombox
|style=border:#38C400 1px solid;
|image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]]
|text=This is a candidate to have a [[Help:Transwiki guide|transwiki guide]]. Due to the complexity of the project or template, this guide will help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template. If you know this template syntax very well, feel free to start the guide in {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}}. Once the transwiki guide page is complete, replace this tag by {{tl|Transwiki guide}}.
}}[[Category:Transwiki guide candidate|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude>
{{doc|content=
{{Transwiki guide candidate||*}}
Adding this tag to the page will automatically include it in [[:Category:Transwiki guide candidate]]. If the template has a document page, you should add it inside the <code><nowiki><includeonly></nowiki></code> tag in the document. Parameter {{{1}}} provides the option to change the page name of the transwiki guide if desired, <nowiki>[[{{FULLPAGENAME}}/Transwiki guide]]</nowiki> by default. Parameter {{{2}}} is for changing the category sorting, <nowiki>{{PAGENAME}}</nowiki> by default.
}}
f23b4f6bbbd56c5c856fbb1bcead70c17a389838
Template:Country data Electorate of Saxony
10
1505
2840
2014-07-31T13:55:53Z
w>Taravyvan Adijene
0
стыль
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Electorate of Saxony
| shortname alias = Saxony
| flag alias = Flag of Electoral Saxony.svg
| size = {{{size|}}}
| name = {{{name|}}}
<noinclude>
| related1 = Kingdom of Saxony
| related2 = Saxony
| cat = Saxony electorate
</noinclude>
}}
92d992249b05224909f6fc125f5b07f9889af451
Template:Pp-template
10
852
1886
2014-08-05T17:17:27Z
wikipedia>Mr. Stradivarius
0
convert this to use [[Module:Protection banner]]; see [[Module talk:Protection banner#Proposal to convert all protection templates to use this module|here]] for details
wikitext
text/x-wiki
<includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
31be6fc5b968e0deb5100a35b856393cdeb35b90
Template:))!
10
1423
2758
2014-08-07T05:34:06Z
w>Plastikspork
0
Protected Template:))!: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
]]<noinclude>{{documentation}}</noinclude>
5078ba120138d54da6e9f92897c07e5dc660ad98
Template:Strfind short
10
196
446
2014-08-31T23:39:01Z
wikipedia>Mr. Stradivarius
0
Changed protection level of Template:Strfind short: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{#Invoke:String|find|source={{{1|}}}|{{{2}}}}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f5475bb1d4bf09dc8dea7613cd4bc79847dafcbc
Template:When on basepage
10
490
1085
2014-09-30T08:52:52Z
wikipedia>Sardanaphalus
0
Sardanaphalus moved page [[Template:Basepage subpage]] to [[Template:When on basepage]]: Per move request
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "page" parameter then detect
basepage/subpage/subsubpage-->
{{#if:{{{page|}}}
| {{#if:{{#titleparts:{{{page}}}|0|3}}
| subsubpage <!--Subsubpage or lower-->
| {{#if:{{#titleparts:{{{page}}}|0|2}}
| subpage
| basepage
}}
}}
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}}
| subsubpage <!--Subsubpage or lower-->
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}}
| subpage
| basepage
}}
}}
}}
| basepage = {{{1|}}}
| subpage = {{{2|}}}
| subsubpage = {{{3| {{{2|}}} }}} <!--Respecting empty parameter on purpose-->
}}<!--End switch--><noinclude>
{{Documentation}}
</noinclude>
cf4dc92df647a26ab0ce149772a1fe3ac6c3dfc0
Template:WPMILHIST Infobox style
10
1362
2697
2014-10-07T15:24:52Z
w>Jackmcbarn
0
make main_box piggyback off of main_box_raw
wikitext
text/x-wiki
<includeonly>{{#switch:{{{1|}}}
|main_box=class="{{#if:{{{2|}}}|infobox {{{2}}}|infobox}}" style="{{#invoke:Data|Module:WPMILHIST Infobox style|main_box_raw}}"
|{{#invoke:Data|Module:WPMILHIST Infobox style|{{{1|}}}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
b117547056afc703e2f1371497b0a53fa5a22751
Template:Convinfobox/priter3
10
1571
2906
2014-10-19T17:54:15Z
w>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{1}}}|{{{2}}}|in|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{1}}}|{{{2}}}|l{{#ifexpr:{{{5}}}>=14|b stl}}b|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{1}}}|{{{2}}}|oz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{#switch:{{{2}}}{{{4}}}
|ftin={{convert|{{{1}}}|ft|0|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{1}}}|st|0|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{1}}}|lb|0|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
}}
}}</includeonly><noinclude><!-- currently more or less ignoring {{{5}}} -->
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
1c5d795e180fa2d16e88dc012543d3f904743e16
Template:Convinfobox/sec3
10
1568
2903
2014-10-19T17:55:53Z
w>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{3}}}|ft|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{3}}}|st|0|lb|{{#ifeq:{{{2}}}|kg|kg lb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{3}}}|lb|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{#switch:{{{2}}}{{{4}}}
|ftin={{convert|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{3}}}|lb|{{#ifeq:{{{6}}}{{#ifexpr:{{{3}}}<14|n}}|kg|kg stlb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{3}}}|{{{4}}}|{{{2}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
}}
}}</includeonly><noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
4eb7733cb3c141c03d61f9584260c61ce0f62842
Template:Convinfobox/ter3
10
1569
2904
2014-10-19T17:57:00Z
w>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{5}}}|in|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{5}}}|lb|{{#ifeq:{{{2}}}{{#ifexpr:{{{5}}}<14|n}}|kg|kg stlb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{5}}}|oz|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{#switch:{{{2}}}{{{4}}}
|ftin={{convert|{{{5}}}|{{{6}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{5}}}|{{{6}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{5}}}|{{{6}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{5}}}|{{{6}}}|{{{2}}} {{{4}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
}}
}}</includeonly><noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
804501b258d2d052a1fd772f4438e3b3ed44e097
Template:!!
10
572
1292
2014-11-04T14:12:38Z
wikipedia>Pigsonthewing
0
stet
wikitext
text/x-wiki
||<noinclude>
{{documentation}}
</noinclude>
cfbaaca3cb3edae590f75b87fb775d1be21774a4
Template:Dcr
10
1364
2699
2014-12-08T00:18:23Z
w>Sroc
0
create as shortcut to {{Deprecated code|red=y}}
wikitext
text/x-wiki
{{Deprecated code|red=y|{{{1|Example text}}}}}<noinclude>
{{documentation|Template:Deprecated code/doc}}
<!--Categories and interwikis go on the /doc subpage.-->
</noinclude>
1dc3e61f1612d63f29d92ab18deb61cb8951419a
Module:Ns has subpages
828
861
1908
2014-12-10T06:37:29Z
wikipedia>Mr. Stradivarius
0
Protected Module:Ns has subpages: [[WP:High-risk templates|High-risk Lua module]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
Scribunto
text/plain
-- This module implements [[Template:Ns has subpages]].
-- While the template is fairly simple, this information is made available to
-- Lua directly, so using a module means that we don't have to update the
-- template as new namespaces are added.
local p = {}
function p._main(ns, frame)
-- Get the current namespace if we were not passed one.
if not ns then
ns = mw.title.getCurrentTitle().namespace
end
-- Look up the namespace table from mw.site.namespaces. This should work
-- for a majority of cases.
local nsTable = mw.site.namespaces[ns]
-- Try using string matching to get the namespace from page names.
-- Do a quick and dirty bad title check to try and make sure we do the same
-- thing as {{NAMESPACE}} in most cases.
if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then
local nsStripped = ns:gsub('^[_%s]*:', '')
nsStripped = nsStripped:gsub(':.*$', '')
nsTable = mw.site.namespaces[nsStripped]
end
-- If we still have no match then try the {{NAMESPACE}} parser function,
-- which should catch the remainder of cases. Don't use a mw.title object,
-- as this would increment the expensive function count for each new page
-- tested.
if not nsTable then
frame = frame or mw.getCurrentFrame()
local nsProcessed = frame:callParserFunction('NAMESPACE', ns)
nsTable = nsProcessed and mw.site.namespaces[nsProcessed]
end
return nsTable and nsTable.hasSubpages
end
function p.main(frame)
local ns = frame:getParent().args[1]
if ns then
ns = ns:match('^%s*(.-)%s*$') -- trim whitespace
ns = tonumber(ns) or ns
end
local hasSubpages = p._main(ns, frame)
return hasSubpages and 'yes' or ''
end
return p
e133068ba73738b16e1e3eba47735516a461eb5b
Template:Flag
10
1490
2825
2014-12-18T05:55:14Z
w>Plastikspork
0
Closing
wikitext
text/x-wiki
{{country data {{{1|}}}|flag/core|name={{{name|{{{1|}}}}}}|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude>{{documentation}}</noinclude>
d13aac8e23bee030a6fc9b49a8aa1135104ace22
Template:Country data Luxembourg
10
1210
2539
2014-12-23T00:16:50Z
w>Mjroots
0
variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Luxembourg
| flag alias = Flag of Luxembourg.svg
| flag alias-civil = Civil Ensign of Luxembourg.svg
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| redir1 = LUX
| var1 = civil
</noinclude>
}}
9c76f01b95d0d97baea7583cf7d8cad58336978b
Template:Icon
10
977
2148
2015-01-23T10:29:55Z
wikipedia>Mr. Stradivarius
0
switch this to use [[Module:Icon]]
wikitext
text/x-wiki
{{#invoke:Icon|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
bd5b855953c5eec9d9c48400aa39315cb4218558
Template:Color
10
213
2160
2015-02-07T15:43:19Z
wikipedia>Pigsonthewing
0
allow simple form; will document
wikitext
text/x-wiki
<span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude>
f12cd387c0d5c11494a7182b7538cc3292eb3a4a
Template:Clear right
10
1357
2692
2015-02-09T15:14:22Z
w>Edokter
0
Fix
wikitext
text/x-wiki
{{Clear|right}}<noinclude>
{{Documentation|Template:Clear/doc}}
</noinclude>
12b36d3e1933e27905b1549e2e69366dc1c3c7b2
Template:Operational plan/doc
10
1512
2847
2015-03-03T09:35:46Z
w>Invadibot
0
Bot: Fixing double redirect to [[Template:Infobox military operation/doc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox military operation/doc]]
10b255654acded6663dadad8d9084ba41f66bd68
Template:Coord/wikidata
10
1680
3118
2015-03-12T14:57:08Z
wikipedia>Frietjes
0
[[WP:AES|←]]Created page with '<includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude> {{documentation|content= This is a tem...'
wikitext
text/x-wiki
<includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude>
{{documentation|content=
This is a temporary fork of [[Template:coord]] for demonstrating the ability to parse coordinates from wikidata.
}}</noinclude>
e4b606dc74efb921276bc7f6eed1ed8a23329387
Template:Str rep
10
160
373
2015-04-14T16:35:55Z
wikipedia>Redrose64
0
Protected Template:Str rep: [[WP:High-risk templates|Highly visible template]]: 167176 transclusions ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|1}}<noinclude>
{{Documentation}}</noinclude>
4706daa3137857f2792cc7109ca24b6d58c78dee
Template:Startflatlist
10
1397
2732
2015-04-28T13:11:14Z
w>Edokter
0
Protected Template:Startflatlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Flatlist]]
bbe00719a80ea6189b69639e33629793a30c1235
Template:Startplainlist
10
986
2168
2015-04-28T13:11:26Z
wikipedia>Edokter
0
Protected Template:Startplainlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Plainlist]]
004e758d1686df1d3da2ef0f1c8778ff1f12077d
Template:Separated entries
10
1097
2393
2015-05-12T11:17:13Z
wikipedia>Kelapstick
0
Protected Template:Separated entries: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Separated entries|main}}<noinclude>
{{Documentation|Module:Separated entries/doc}}
</noinclude>
f3648d40ca0c91acbdf52ad7f89c181d7f691251
Module:Buffer
828
758
1691
2015-05-15T16:15:29Z
wikipedia>Mr. Stradivarius
0
Protected Module:Buffer: [[WP:High-risk templates|High-risk Lua module]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
Scribunto
text/plain
--[[=============================
This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia
All methods were developed independently and any resemblance to other string buffer libraries would be coincidental.
Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to
the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables.
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual
Source code comments may be thin at some points because they are intended to be supplemented by the documentation page:
https://en.wikipedia.org/wiki/Module:Buffer/doc
Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License
https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
https://en.wikipedia.org/wiki/Module:Buffer
https://en.wikipedia.org/wiki/User:Codehydro
=============================--]]
local function Valid(v)--type validation
if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons
local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types)
if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type()
if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat
end
end
local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map
local function init()--init = noOp after first run
function Next(t) return next, t end--slightly faster to do this than to use select()
function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance.
function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key
function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
--k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive)
init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key
end
function MBpairs(t, ...)--pairs always iterates in order
local iter, ex = ...
iter = iter==init()--nil
if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast
vMap[t] = #t return pFast, t, nil
elseif ... or not vMap[t] or select('#', ...)~=1 then
local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups
iMap[t], vMap[t], oMap[t] = ti, tn, to
for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys
for k in (ex or Next)(t) do
if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end
end
if #ti~=n then
table.sort(ti)
for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive
end
for k = 1, #to do tn[to[k]] = k + 1 end
end
return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless
end
end
local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope)
local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions
parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory
end
local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names
local _stream do local stream--keep stream near top of scope
local function init(f)--init = noOp after first run
local function each(self, ...)
for k = 1, select('#', ...) do
k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...))))
if k then table.insert(self, k) end
end
return self
end
init, stream, _stream = noOp, {
__call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode
__index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function
__tostring = function(t) return setmetatable(t, MB)() end
} for k, v in next, MB do stream[k] = stream[k] or v end
setmetatable(stream, getmetatable(MB))
end
function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end
end
local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent)
return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar
(not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string
or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive
) or Buffer
end
local function MBselect(n, ...)--helper for :_out and :_str
local n, seps = n - 1, {select(2, ...)}
if type(seps[n])=='table' then
if buffHTML and rawget(seps[n], buffHTML) then return ... end
setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil
end
return ..., seps
end
local _inHTML do local lastBuffer, lastHTML
local function init(...)--init replaced and new version called on return
local create, mwFunc = mw.html.create do
local mwHTMLmeta = getmetatable(create())
buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope
function init(nodes, ...)
local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...)
tag = create(Valid(name), args)
if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end
if args then
local a, b = args.selfClosing, args.parent
args.selfClosing, args.parent = nil
if next(args) then Element._add(parent(tag.nodes, tag), args) end
args.selfClosing, args.parent = a, b--in case args is reused
end
return tag
end
for k, v in next, {[mw] = mwHTMLmeta,
__call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end,
__concat = false,--false means take from MB
__eq = false
} do buffHTML[k] = v or MB[k] end
end
local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g
g = {__index = function(t, i)
if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end
end}
setmetatable(nonSelf, g)
setmetatable(BHi, g)
end
for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements
local func = mwFunc[k]
BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end
end
do local function joinNode(HTML, sep)
local nodes, join = HTML.nodes
if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end
return join or tostring(HTML)
end
for k, v in next, {
getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree
getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used
killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end,
_out = function(HTML, ...)
if ...==0 then MBi._out(HTML.nodes, ...) return HTML end
lastHTML, HTML = HTML, HTML:allDone()
local n, ops, seps = select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true))
end
return parent[HTML]:_(joinNode(HTML, ...))
end,
_str = function(HTML, ...)--does not set lastHTML
if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone()
local HTML, n = HTML:allDone(), select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true))
end
return joinNode(HTML, ...)
end,
_parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end
} do BHi[k] = v end
end
do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {}
do local out local function func(nodes, ...) return out(parent[nodes], ...) end
outFuncs = setmetatable({
tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end,
done = function(b, ops)
b = parent[b]
while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end
return b
end
}, {__index = function(nodes, i)
if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals
end})
end
Element = {
_add = function(nodes, t)
for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end
local HTML = parent[nodes] for k, v in MBpairs(t, false) do
if htmlArg[k] then HTML[k] = v
elseif v and v~=true then
if nonSelf[k] then
if k=='tag' then
if type(v)=='table' then
skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML)
Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v)
if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil
if not k.tagName then k.styles, k.attributes = nil end
else table.insert(nodes, create(v)) end
elseif mwFunc[k] then
if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end
MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v)
elseif v[1] or v[2] then
k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v]))
Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error.
else MBi[k](nodes, v) end--k probably == '_G' or '_R'
elseif mwFunc[k] then
if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v)
else
local css = k=='css'
for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first
for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow
end
elseif rawget(Element, k) or rawget(MBi, k) then
if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all
else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table
else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature
skip[v] = nil
end
end
return nodes
end
}
local tempMeta = {mode='v', copy={styles=true,attributes=true}}
function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end
rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge
end
function MBi:getHTML(...)
lastBuffer = self
if ... then
if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...)
else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end
end
return lastHTML
end
function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end
return init(...)
end
function _inHTML(self, ...)
local HTML = init(nil, ...)
if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end
lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add
return HTML
end
end
local _var, unbuild do local prev, rebuild
local function init(...)--init replaced before return
local function pick(b, v) return b and table.insert(b, v) or v end
local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end
local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, {
__index = {c = 1},
__tostring = function(t) return t:_build() end,
table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents
number = function(a, b) return pick(b, c(a, true)) end,
string = function(a, b) return pick(b, string.char(c(a))) end
}, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end}
local function shift(t, c)
t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c
if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end
end
function rebuild(...)
local v, c = ...
if v or select('#', ...)==0 then
if v and not c then return prev end
local meta, c = select(v and 1 or 3, alt, c, same, 0)
return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta)
elseif v==nil then--no-op
elseif c then shift(prev, c)--v == false
else prev:_build() end
end
init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true
return init(...)
end
function unbuild(sep)
for k, v in MBpairs(sep, nil) do
k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end
end
end
function _var(self, ...)
local obj if ... and ...~=true then obj = init(...)
elseif prev then
if ...~=false then obj = rebuild(...)
else rebuild(...) end
end
return obj and MBi._(self, obj, nil, true) or self
end
end
local lib; MBi = setmetatable({stream = _stream,
_inHTML = _inHTML,
_var = _var,
_ = function(self, v, ...)
local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...)
if raw then rawkey[self] = math.huge else v = Valid(v) end
if v or raw then
if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at'
at, self.last_concat = at and (tonumber(at)~=at and raw + at or at)
table.insert(self, select(at and 1 or 2, at, v))
if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end
end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf)
return self
end,
_nil = function(self, at, ...)
if ...~=true and ...~=false then--faster than type(...) ~= 'boolean'
if not at or at=='0' then
self[#self] = ... if ... then rawkey[self] = math.huge end
else
local n, v = tonumber(at), ...
if n~=at then
if n then n = #self + at
elseif at~=true and select('#', ...)==0 then v, n = at, #self end
end
if n then
if v==nil and n > 0 then table.remove(self, n)
else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library
end
end
self.last_concat = nil
end
return self
end,
_all = function(self, t, valKey)
for k, v in MBpairs(t) do MBmix(self, v, valKey) end
for k, v in valKey and MBpairs(t, false) or noOp, t do
if tonumber(v) then MBi._(self, k, v)--self not always a buffer
elseif rawget(MBi, k) and v and v~=true then
if v[1]==nil or getmetatable(v) then MBi[k](self, v)
else MBi[k](self, unpack(v, 1, table.maxn(v))) end
end
end
return self
end,
_str = function(t, ...)
local n = select('#', ...)
if n > 1 then
local k, ops, seps, r = 2, MBselect(n, ...)
r = MB(t(seps[1]))
while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end
return table.concat(r, seps[k] or nil)
end
return MB.__call(t, ...)
end,
_in = function (self, ...) return parent(MB(...), self) end,
_out = function(t, ...)
if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back*
local n = select('#', ...)
if n > 1 then
local k, ops, seps = 1, MBselect(n, ...)
while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end
elseif parent[t] then return parent[t]:_(t(...)) end
return t
end,
_cc = function(self, clear, copy, meta)
if clear then
if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects
elseif copy==true then copy = self end
if clear~=0 then
assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this
for k in self and next or noOp, clear do rawset(clear, k, nil) end
else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist)
if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls)
meta = meta or getmetatable(copy)
if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html
local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2)
e, spec[MBi._cc], parent[null] = i - 1, null, clear
for k = 1, e do table.insert(clear, false) end
while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end
for k = 1, e do rawset(clear, k, nil) end
end
for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end
elseif copy then rawset(clear, 1, (Valid(copy))) end
rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy]
end
return self and rawset(self, 'last_concat', nil) or clear
end,
_parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end,
getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end,
killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end,
_build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node()
last_concat = false--prevent library check
}, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis
local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then
lib = lib or function (s, f, ...)
if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end
return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values
end
return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion!
or function(self, ...)return lib(self, func, ...)end)[i]
end
end})
end
function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args
local _G, new_G = _G--localize _G for console testing (console _G ~= module _G)
return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end,
__call = function(t, ...)
local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ...
if i or j or rawsep or Valid(sep) then
raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j)
if rawsep or raw and (raw>=(j or #t) or i < 1) then
raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals
raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration
for k, v in MBpairs(t) do
if raw[1] or not i or k>=i then if j and k > j then break end
if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v
k = Valid(v) if k then
raw.s = rawsep or sep and raw[1] and table.insert(raw, sep)
table.insert(raw, k)
end
end
end
if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid
t.last_concat = raw.lc return table.concat(raw)
end
return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t))
end
return MB.__tostring(t)
end,
__tostring = function(t)
if t.last_concat then return t.last_concat end
local r = rawkey[spec[t]] or rawkey[t]
r = table.concat(r and r>=#t and MBi._all({}, t) or t)
return (noCache or rawset(t, 'last_concat', r)) and r
end,
__concat = function(a, b)
if buffHTML then
for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do
if v and spec[v] and spec[v]==Element then
if parent[v].selfClosing then
if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects;
b, a = select(k, b, parent[v], a)
else local temp = Element .. v --helper method; returns a mirror of parent[v]
MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b)
return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes
end
end
end
end
return table.concat(MBmix(MBmix({}, a), b))
end,
__pairs = MBpairs,
__ipairs = MBpairs,
__eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var)
}, {__tostring = function()return''end,
__call = function(self, ...) MB = MB or self
if new_G then if ... and _G and ...==_G then new_G = ... end
elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then
local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable()
new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement.
_G = function(self, i, ...)
local X, save = rawget(new_G, i), select('#', ...)==0 and self or ...
if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer
local mG = getmetatable(new_G) or {__call=mG.__call}
if mG.__index then pcall(rawset, mG.__index, i, X)
else mG.__index = setmetatable(new_G, mG) and {[i] = X} end
end
return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save
end,
_R = function(self, i, v, m)
if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end
elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil})
else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp
return self
end,
_2 = function(self, ...)
if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite
if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end
return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil
end,
_B = function(self, v) return v or v==nil and Nil end
} for k, v in next, gfuncs do MBi[k] = v end
setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''},
{__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})})
function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end
end
local new = setmetatable({}, self)
if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end
return ... and MBi._(new, ...) or new
end,
__index = function(t, i)
MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end
end
})
a531c35e1366f84755b75caab181cd45e5330bbe
Template:Comma separated entries
10
1090
2379
2015-05-26T18:05:33Z
wikipedia>Izkala
0
Switch to using [[Module:Separated entries]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|comma}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f9811ed089bab742e4aad8b8463eddcc7607f062
Template:Br separated entries
10
162
377
2015-05-26T18:06:33Z
wikipedia>Izkala
0
Switch to using [[Module:Separated entries]]; leading and trailing whitespace and newlines are now trimmed
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br}}<noinclude>
{{documentation}}
</noinclude>
2019f7fc383259e70d66e43cbd97a43d20889f1b
Template:Hlist
10
429
1356
2015-07-04T15:13:14Z
wikipedia>Penwhale
0
Changed protection level of Template:Hlist: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
9e3824c2e3c0e0dbef2f37556ac0b994987fecf9
Template:Redirect template
10
1013
2222
2015-07-23T08:16:39Z
wikipedia>Paine Ellsworth
0
for correct appearance of documentation page on template page
wikitext
text/x-wiki
{{#invoke:Redirect template|main}}<noinclude>
{{Documentation}}</noinclude>
0b8db63883716ef3a4d3a9492f8571ae96028547
Template:Div col end
10
47
89
2015-10-03T15:58:07Z
wikipedia>NeilN
0
Changed protection level of Template:Div col end: per request at [[WP:RFPP]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template editors and admins] (indefinite))
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Div col/doc}}
</noinclude>
78088d41c21d779e3722f220fcc9773dfbbc1e4f
Template:Spaces
10
840
1862
2015-10-25T11:38:26Z
wikipedia>Edokter
0
use class
wikitext
text/x-wiki
<span class="nowrap">{{#iferror:{{#expr:{{{1|1}}}}}
|{{#switch:{{{1}}}
|fig= 
|en= 
|em= 
|thin= 
|hair= 
|
}}
|{{#invoke:String|rep|{{#switch:{{{2}}}
|fig= 
|en= 
|em= 
|thin= 
|hair= 
|
}}|{{{1|1}}}}}
}}</span><noinclude>
{{documentation}}
</noinclude>
a9ed762825e7579f15dcb9b171b0c1c3bf524b3f
Template:((
10
479
1053
2015-11-13T02:17:23Z
wikipedia>Fuhghettaboutit
0
Changed protection level of Template:((: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators] (indefinite)...
wikitext
text/x-wiki
{{<noinclude>
{{documentation}}
</noinclude>
3f1af626705a06bc9cdea766736e292d321af5a3
Template:Cite journal
10
891
1972
2015-11-13T02:17:24Z
wikipedia>Fuhghettaboutit
0
Changed protection level of Template:Cite journal: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators] (in...
wikitext
text/x-wiki
<includeonly>{{#invoke:Citation/CS1|citation
|CitationClass=journal
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
50b33a0bde8c0dc83f3753f7873bcb448b565944
Template:Cite encyclopedia
10
1701
3201
2015-11-13T02:17:24Z
wikipedia>Fuhghettaboutit
0
Changed protection level of Template:Cite encyclopedia: when I changed this to add template editors, I didn't realize it had cascding protection—so all my change did was make it appear as if it could be edited by them ([Edit=Allow only administrators...
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=encyclopaedia
}}</includeonly><noinclude>
{{documentation}}
[[Category:Lua-based templates]]
</noinclude>
a5fbaa0493d06b11ef4dd711383f9fd5174a4238
Template:Nowrap
10
90
227
2015-11-28T10:13:53Z
wikipedia>Edokter
0
Adapt comment; edits inside noinclude blocks should not affect job queue, but won't kill parser either way.
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
5d0dc6b6d89b37f4356242404f46138a4017f015
Template:\
10
1170
2499
2015-12-13T11:55:37Z
w>Graeme Bartlett
0
Changed protection level of Template:\: [[WP:High-risk templates|Highly visible template]] ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
/ <noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
8cbfbe9d6f2aaa7726dfacfb2ee3c213dae39921
Template:Ordered list
10
607
1372
2015-12-14T10:30:21Z
wikipedia>The Earwig
0
Protected "[[Template:Ordered list]]": [[WP:High-risk templates|Highly visible template]]: thousands of mainspace transclusions; match siblings; unlikely to be edited ([Edit=Allow only template editors and admins] (indefinite) [Move=Allow only template...
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|ordered}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c74568f5fac4f743ef2e52f830e220d8cdbc3ae1
Template:Bulleted list
10
606
1370
2015-12-26T16:25:12Z
wikipedia>Frietjes
0
documentation does this
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|bulleted}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
37ac60a83d34c2df10fb601002557ad1b55919bb
Template:Delink
10
166
385
2015-12-26T16:26:10Z
wikipedia>Frietjes
0
{{documentation}} does this
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ccf86b4255142fffb206ab8240f36ed22e029d6a
Module:Location map/data/France
828
1451
2786
2016-01-02T11:08:51Z
w>John of Reading
0
[[File:France location map-Regions and departements-2016.svg]] per edit request
Scribunto
text/plain
return {
name = 'France',
top = 51.5,
bottom = 41.0,
left = -5.8,
right = 10.0,
image = 'France location map-Regions and departements-2016.svg',
image1 = 'France relief location map.jpg'
}
f6a24cf3923848e019c3beea5e68fc676cbe98f9
Template:PAGENAMEBASE
10
170
393
2016-03-06T09:37:56Z
wikipedia>Cabayi
0
per edit request & discussion
wikitext
text/x-wiki
{{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}}<noinclude>
{{documentation}}
</noinclude>
f23a5d434cb5b0baac5e1f58e9ceef9118e6873f
Template:C
10
1321
2656
2016-04-29T21:00:11Z
Ahecht
42
rm #titleparts
wikitext
text/x-wiki
[[:Category:{{PAGENAME:{{{1}}}}}|{{{2|{{PAGENAME:{{{1}}}}}}}}]]<noinclude>
{{Documentation}}
</noinclude>
2f3365787e653c7567d4355e225be4c6c4295ebd
Template:Infobox archbishop styles/doc
10
1272
2606
2016-06-01T10:37:33Z
w>PPEMES
0
Chicbyaccident moved page [[Template:Infobox archbishop styles/doc]] to [[Template:Infobox Archbishop styles/doc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox Archbishop styles/doc]]
{{R from move}}
943660dede9281afbeba7e9a9962f4f35b1bb79d
Template:(!
10
1172
2501
2016-08-09T22:00:28Z
w>Renamed user mou89p43twvqcvm8ut9w3
0
Changed protection level of Template:(!: [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{|</includeonly><noinclude><nowiki>{|</nowiki>{{Documentation}}
</noinclude>
f709d1f206330f000c28ae20e722426c750f9bd5
Template:Fakeref
10
1501
2836
2016-08-16T12:12:24Z
w>AvicBot
0
Bot: Fixing double redirect to [[Template:Dummy reference]]
wikitext
text/x-wiki
#REDIRECT [[Template:Dummy reference]]
c85c391fe2de3ebfd2154c56303a2085c57e9dd2
Template:Category link
10
609
1376
2016-09-21T14:41:05Z
wikipedia>Anthony Appleyard
0
Anthony Appleyard moved page [[Template:Cl]] to [[Template:Category link]] over redirect: [[Special:Permalink/740508935|Requested]] by Nyuszika7H at [[WP:RM/TR]]: The template should be located at the natural, unabbreviated title and {{[[Temp...
wikitext
text/x-wiki
{{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}( {{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}} ){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude>
{{Documentation}}
</noinclude>
cb0fcaeb8242d1d37c27a8dcb57f76fe5b5faa36
Template:Str left
10
1058
2314
2016-09-30T07:01:19Z
wikipedia>Ymblanter
0
Changed protection level of Template:Str left: [[WP:High-risk templates|Highly visible template]]: RFPP request ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
2048b0d7b35e156528655b1d090e8b5ffab3f400
Template:Based on
10
1262
2596
2016-11-03T08:48:48Z
w>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#invoke:Based on|main}}</includeonly><noinclude>{{Documentation}}</noinclude>
46792656a06b09c2ef31b84b58d60e444c54fbbd
Template:End date
10
1484
2819
2016-11-21T11:10:04Z
Materialscientist
50
Changed protection level for "[[Template:End date]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#if: {{{4|}}}
|{{#if: {{{5|}}}
|{{padleft:{{{4}}}|2|0}}:{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}}
|:{{padleft:{{{6}}}|2|0}} }}, }} }}<!--ABOVE FOR TIME; BELOW FOR DATE
-->{{#if: {{{1|}}}
|{{#if: {{{2|}}}
|{{#if: {{{3|}}}
|{{#if:{{{df|}}}|{{#expr:{{{3}}}}} {{MONTHNAME|{{{2}}}}}|{{MONTHNAME|{{{2}}}}} {{#expr:{{{3}}}}},}} {{{1}}}|{{MONTHNAME|{{{2}}}}} {{{1}}}}}|{{{1}}}}}}}{{#if: {{{7|}}}
| ({{#ifeq: {{{7}}}|Z|UTC|{{{7}}}}})}}<!-- BELOW FOR hCalendar
--><span style="display:none"> (<span class="dtend">{{#if: {{{1|}}}
| {{{1}}}{{#if: {{{2|}}}
| -{{padleft:{{{2}}}|2|0}}{{#if: {{{3|}}}
| -{{padleft:{{{3}}}|2|0}} }} }}<!--
-->{{#if: {{{4|}}}
| T{{padleft:{{{4}}}|2|0}}{{#if: {{{5|}}}
| :{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}}
| :{{padleft:{{{6}}}|2|0}} }} }} }} }}{{{7|}}}</span>)</span></includeonly><noinclude>
{{documentation}}
</noinclude>
bf4e79ea00f1ec70f817d021932b6371df465dcf
Module:Error
828
1385
2720
2016-11-21T11:11:11Z
Materialscientist
50
Changed protection level for "[[Module:Error]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- This module implements {{error}}.
local p = {}
local function _error(args)
local tag = mw.ustring.lower(tostring(args.tag))
-- Work out what html tag we should use.
if not (tag == 'p' or tag == 'span' or tag == 'div') then
tag = 'strong'
end
-- Generate the html.
return tostring(mw.html.create(tag)
:addClass('error')
:wikitext(tostring(args.message or args[1] or error('no message specified', 2)))
)
end
function p.error(frame)
local args
if type(frame.args) == 'table' then
-- We're being called via #invoke. The args are passed through to the module
-- from the template page, so use the args that were passed into the template.
args = frame.args
else
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
args = frame
end
-- if the message parameter is present but blank, change it to nil so that Lua will
-- consider it false.
if args.message == "" then
args.message = nil
end
return _error(args)
end
return p
f77bd720c216b5626efe795d3b49462d50971f7d
Template:Sp
10
1421
2756
2016-11-21T11:11:18Z
Materialscientist
50
Changed protection level for "[[Template:Sp]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<includeonly> </includeonly><noinclude>
{{Documentation}}
</noinclude>
91088ab5ac3317ad2587589a4d7902feaed49943
Template:Both
10
159
371
2016-12-04T04:31:50Z
wikipedia>JJMC89
0
make subst'able
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{SAFESUBST:<noinclude />#if:{{{2|}}}|1}}}}<noinclude>
{{documentation}}
</noinclude>
57c3c0ffa811a7f31c675b2d79aedf4382e9b88d
Template:Cite web
10
971
2132
2016-12-05T05:36:52Z
wikipedia>Anthony Appleyard
0
Protected "[[Template:Cite web]]": restore old protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=web
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
ea1b0f38afd9728a1cf9f2e3f540887a402fab8e
Template:Convinfobox/pri2
10
1180
2509
2016-12-23T16:48:45Z
w>Frietjes
0
we need the <noinclude> tag
wikitext
text/x-wiki
<includeonly>{{convert|{{{1}}}|{{{2}}}|{{{4}}}|{{{5|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}</includeonly><noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
4f7541f33c39c2bce052ff78783cf168d9b310b2
Template:Section link
10
128
305
2017-01-17T01:29:39Z
wikipedia>Primefac
0
done
wikitext
text/x-wiki
{{#invoke:Section link|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
8d047e5845f8a9b74a4655b5dd79ca7595a8f88b
Template:Tlp
10
1249
2583
2017-01-23T13:35:17Z
w>MSGJ
0
MSGJ moved page [[Template:Tlp]] to [[Template:Template link with parameters]]: expand name of template
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with parameters]]
{{R from move}}
3867e4ef4fe637ce8530859b5486b23e916d0b8a
Template:Pp
10
1018
2232
2017-01-24T15:07:04Z
wikipedia>Xaosflux
0
Changed protection level for "[[Template:Pp]]": is linked from cascaded main page, moving would be very disruptive ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Protection banner|main}}<noinclude>
{{documentation}}
</noinclude>
4b195ffc44cfde864ef77b55a54c006333226ced
Template:See also
10
1047
2292
2017-02-02T05:40:25Z
wikipedia>Nihiltres
0
Updated from sandbox to use [[Module:Labelled list hatnote]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
74d2ab6a0df5605fbe2085c405925ec659be52b7
Template:Wikidata image
10
1238
2572
2017-02-08T17:10:10Z
w>Primefac
0
TFD closed as keep (using [[User:Evad37/XFDcloser|XFDcloser]])
wikitext
text/x-wiki
{{#if:{{NAMESPACE}}||
{{#if:{{{1|}}}
| {{#if:{{#property:P18}}
| {{#ifeq:{{filepath:{{{1|}}} }}|{{filepath:{{#property:P18}} }}
|
|
}}
| {{#if:{{#property:P41}}{{#property:P94}}{{#property:P117}}{{#property:P154}}{{#property:P242}}
|
|
}}
}}
| {{#if:{{#property:P18}}
| {{#if:{{{2|}}}
|
| [[Category:No local image but image on Wikidata]]
}}
|
}}
}}
}}<noinclude>
{{doc}}
</noinclude>
572e9efe168616980e2b149a2536e292dfbee5d0
Module:ParameterCount
828
191
436
2017-02-11T14:32:57Z
wikipedia>Mr. Stradivarius
0
Protected "[[Module:ParameterCount]]": [[WP:High-risk templates|High-risk Lua module]]: 20,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- This module produces a count of all the arguments passed to it.
local yesno = require('Module:Yesno')
-- Trim a string
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
-- Test whether a string is blank
local function isBlank(s)
return not s:find('%S')
end
-- Tests whether a string is a valid positional key, and if so, returns it. If
-- the key is invalid, this returns nil.
local function isPositionalKey(s)
s = trim(s)
if s:find('^[1-9][0-9]*$') then
return tonumber(s)
end
end
-- Return the count of all arguments for which testFunc returns a truthy value.
local function count(args, testFunc)
local ret = 0
for key, val in pairs(args) do
if testFunc(key, val) then
ret = ret + 1
end
end
return ret
end
-- Check shared arguments and get the parent argument count.
local function main(frame, testFunc)
local blankifiedTestFunc
if yesno(frame.args.checkblanks) ~= false then
-- Extend the test function to check for blanks as well.
blankifiedTestFunc = function (key, val)
if not isBlank(val) then
return testFunc(key, val)
end
end
else
blankifiedTestFunc = testFunc
end
return count(frame:getParent().args, blankifiedTestFunc)
end
return {
-- Called with {{#invoke:ParameterCount|all}}
-- All specified parameters are counted, even those not supported by the
-- template.
all = function (frame)
return main(frame, function () return true end)
end,
-- Called with {{#invoke:ParameterCount|main}}
-- Users can specify a list of parameters to check, and a list of Lua
-- Ustring patterns to check each parameter against.
main = function (frame)
local args = frame.args
local keys, patterns = {}, {}
-- Get key list
for i, key in ipairs(args) do
local positionalKey = isPositionalKey(key)
if positionalKey then
keys[positionalKey] = true
else
keys[trim(key)] = true
end
end
-- Get patterns
do
local function getPattern(i)
local pattern = args['pattern' .. tostring(i)]
if pattern and pattern ~= '' then
return pattern
end
end
local i = 1
local pattern = getPattern(i)
while pattern do
patterns[i] = pattern
i = i + 1
pattern = getPattern(i)
end
end
-- Construct the test function
local testFunc = function (key, val)
if keys[key] then
return true
end
for i, pattern in ipairs(patterns) do
if mw.ustring.find(tostring(key), pattern) then
return true
end
end
return false
end
return main(frame, testFunc)
end
}
63e3811b7a17825c071b1920ce88af06bc1e778d
Template:Basepage subpage
10
1258
2592
2017-03-12T04:26:29Z
w>Godsy
0
[[Template:This is a redirect]] has been deprecated, change to [[Template:Redirect category shell]].
wikitext
text/x-wiki
#REDIRECT [[Template:When on basepage]]
{{Redirect category shell|
{{R from move}}
{{R from template shortcut}}
}}
47118a1bed1942b7f143cdff1dec183002fc9f4b
Template:-
10
1348
2683
2017-03-12T14:41:31Z
w>Paine Ellsworth
0
add [[WP:RCAT|rcat]]
wikitext
text/x-wiki
#REDIRECT [[Template:Clear]]
{{Redirect category shell|
{{R from modification}}
{{R from template shortcut}}
}}
3fb0b377ebee11659e4a3ba0034f60898dbc473f
Template:Location map
10
1398
2733
2017-03-16T00:55:26Z
w>Plastikspork
0
TFD closed as no consensus (using [[User:Evad37/TFDcloser|TFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map|main}}</includeonly><noinclude>{{documentation}}</noinclude>
732416b8068d2dc3549db5aa5ffa786beb502886
Template:U
10
1641
3000
2017-03-18T12:22:31Z
wikipedia>John of Reading
0
Switch to Redirect category shell per edit request
wikitext
text/x-wiki
#REDIRECT [[Template:User link]]
{{Redirect category shell|
{{R from template shortcut}}
}}
4e19f83e5bbe5d6e452f64e86adc28c022309e09
Template:Navbar-collapsible
10
1606
2941
2017-03-21T12:45:35Z
w>Jc86035
0
changed to use [[Module:Navbar]] directly (re-adds padding after it was removed from CSS)
wikitext
text/x-wiki
{{#invoke:navbar|navbar|collapsible=1}}<noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
78fb9a414152df09b31fe54f5794b38f8d664685
Template:Precision
10
1446
2781
2017-03-25T12:38:46Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Precision]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (...
wikitext
text/x-wiki
<includeonly>{{#invoke:Math|precision|{{{1|0}}}|check_fraction=true}}</includeonly><noinclude>
{{documentation}}
</noinclude>
944a0e5e6c5ace1e2a418c7969c645313b30395a
Template:Str ≠ len
10
1240
2574
2017-03-25T12:38:47Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Str ≠ len]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access]...
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} != {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
62d778f3efdfb20ede86ceede35feb64ed51fe02
Template:Smallsup
10
1464
2799
2017-03-25T12:38:47Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Smallsup]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (i...
wikitext
text/x-wiki
<includeonly><sup><small>{{{1}}}</small></sup></includeonly><noinclude>
{{Documentation}}
</noinclude>
c174fb3247218273210500118556feb9f3c76d5a
Template:Tomorrow
10
1248
2582
2017-03-25T12:38:48Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Tomorrow]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT|TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (i...
wikitext
text/x-wiki
{{#switch:{{{1}}}
|long={{#time:F"{{{2| }}}"j",{{{2| }}}"Y|+1 day}}
|num={{#time:n"{{{2| }}}"j|+1 day}}
|#default={{#time:F"{{{2| }}}"j|+1 day}}
}}<noinclude>{{Documentation}}</noinclude>
5e44249f064450c1b28daa6959741f668465bb5e
Template:Max
10
1447
2782
2017-03-25T16:04:13Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Max]]": Allowing template editors on some templates with full protection dating back to pre-[[WP:TPROT]] times which aren't too often or too sensitively used. ([Edit=Require template editor access] (indefinite)...
wikitext
text/x-wiki
<includeonly>{{#invoke:Math|max}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
f052e3a9b5b08740be624045e49f31d86e09f0ad
Template:Wraps infobox
10
1270
2604
2017-04-06T22:09:28Z
w>Steel1943
0
Undid revision 774200807 by [[Special:Contributions/Steel1943|Steel1943]] ([[User talk:Steel1943|talk]]) revert self - I remember why I did it that way: in case there are wrapper templates outside of the "Template:" namespace
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|Template|{{Ombox
| type = style
| image = [[Image:Ambox warning yellow.svg|40x40px|alt=|link=]]
| text = '''This template is a customized wrapper for the [[Help:Infobox|infobox]] template {{tl|{{{1}}}}}'''. Any field from {{tld|{{{1}}}}} can work so long as it is added to this template first. Questions? Just ask over at [[Template talk:{{{1}}}]] while referencing [[{{FULLBASEPAGENAME}}]].
}}<includeonly>{{#ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | {{#ifexist:Category:Templates calling {{{1}}}|[[Category:Templates calling {{{1}}}]]|[[Category:Infobox wrapper templates]]}} }}</includeonly>}}<noinclude>
{{Documentation}}</noinclude>
9333031962cdc26221dd5c66ca03094535e6dbf3
Template:Country data EU
10
1207
2536
2017-04-07T20:08:10Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Country data EU]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Country data European Union]]<noinclude>[[Category: Country data redirects|EU]]</noinclude>
2267fd165f54795dc23946ea44a5a5f233a3d041
Template:Country data PER
10
1724
3250
2017-04-07T20:08:14Z
wikipedia>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Country data PER]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Country data Peru]]
[[category:country data redirects|PER]]
ab47b4cecba4ecbadf1dd2e33112395e6a627818
Template:Lang-gr
10
995
2186
2017-04-07T20:59:06Z
wikipedia>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Lang-gr]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:lang-el]]
5d94e6e51e5276de93e697f3f837f9a3586261c9
Template:Side box
10
113
273
2017-04-08T19:24:23Z
wikipedia>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Side box]]": [[WP:High-risk templates|Highly visible template]]: Allowing template editors ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Side box|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f02d48c7bd2f7bc64e2982d16b3578c99137d27e
Template:Fix/category
10
1089
2377
2017-04-08T20:24:09Z
wikipedia>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Fix/category]]": [[WP:High-risk templates|Highly visible template]]: Allowing template editors ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}}
|[[{{{cat-date}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}}
|[[{{{cat-date2}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date2}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}}
|[[{{{cat-date3}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date3}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}
8f0a79cdee91c3d967a6d70cf7bfab4093b3d6ae
Template:Navbar
10
874
1938
2017-04-22T18:49:17Z
wikipedia>Plastikspork
0
Closed
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbar|navbar}}</includeonly><noinclude>
{{documentation}}
</noinclude>
868e3566b7e8a9a5a7f3dac75cac429c47de10d3
Template:Spaced ndash
10
1494
2829
2017-04-23T13:25:27Z
w>Jo-Jo Eumerus
0
Changed protection level for "[[Template:Spaced ndash]]": Matching redirect target ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Spaced en dash]]
{{R from move}}
943ce837a48a4907650d7398e8d10271b21dde62
Template:Quote box2
10
1108
2415
2017-04-30T16:51:42Z
wikipedia>AnomieBOT
0
[[User:AnomieBOT/docs/TemplateSubster|Substing templates]]: {{Redr}}. See [[User:AnomieBOT/docs/TemplateSubster]] for info.
wikitext
text/x-wiki
#REDIRECT [[Template:Quote box]]
{{redirect category shell|{{R from merge}}{{R tsh}}}}
4b306c94366d95b16edcb871c5a56c3885f5a64e
Template:Font
10
1556
2891
2017-05-05T07:41:21Z
w>WOSlinker
0
redo without nowiki
wikitext
text/x-wiki
<includeonly><span style="font-family:{{ {{{|safesubst:}}}#if: {{{font|}}} |{{{font}}}|sans-serif}};font-size:{{ {{{|safesubst:}}}#if: {{{size|}}} |{{{size}}}|100%}};{{ {{{|safesubst:}}}#if: {{{color|}}} |color:{{{color}}}|color:black}};{{ {{{|safesubst:}}}#if: {{{bgcolor|}}} |background-color:{{{bgcolor}}}|background-color:transparent}};{{ {{{|safesubst:}}}#if: {{{title|}}} |title:{{{title}}}|}};{{ {{{|safesubst:}}}#if: {{{css|}}} |{{{css}}}|}}">{{ {{{|safesubst:}}}#if: {{{1|}}} |{{{1}}}|{{{text}}}}}</span></includeonly><noinclude>
{{documentation}}
</noinclude>
9a684ea3bacb70176207da87afe59dd965dd9e1b
Template:Wikipedia how to
10
151
351
2017-05-06T06:01:45Z
wikipedia>AnomieBOT
0
[[User:AnomieBOT/docs/TemplateSubster|Substing templates]]: {{redr}}. See [[User:AnomieBOT/docs/TemplateSubster]] for info.
wikitext
text/x-wiki
#REDIRECT [[Template:Wikipedia how-to]]
{{redirect category shell|{{R from move}}}}
a4dd8999d6f78f4bbc7d6222d0e3036a37cc6074
Template:Infobox Portuguese royalty styles
10
1129
2454
2017-05-18T11:45:38Z
w>Frietjes
0
wikitext
text/x-wiki
{{Infobox manner of address
| background = #07A983
| type = Royal
| name = {{{name<includeonly>|</includeonly>}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| Aviz = Brasao de Aviz.PNG
| UK = Coat of arms of the United Kingdom of Portugal, Brazil and the Algarves.svg
| Constitution = Brasão de armas do reino de Portugal.svg
| own = {{{image|}}}
| #default = Coat of Arms of the Kingdom of Portugal (1640-1910).png
}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|100px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Portuguese royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude>
{{documentation}}
</noinclude>
96dbab7dc288fd60753296d1ada69b3ba020182f
Template:Infobox Spanish royalty styles
10
1132
2457
2017-05-18T12:01:03Z
w>Frietjes
0
Adding unknown parameter tracking through [[:Category:Pages using infobox manner of address with unknown parameters]] using [[Module:check for unknown parameters]]
wikitext
text/x-wiki
{{Infobox manner of address
| background = #FF7F50
| type = Royal
| name = {{{name<includeonly>|</includeonly>}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| aragon = Armas del soberano de Aragón.svg
| asturias = Escudo del Reino de Asturias (Modelo de la Bandera).svg
| castile = Kingdom of Castile Arms.svg
| granada = Granada Arms.svg
| leon = Kingdom of Leon Arms.svg
| navarre = Escudo del Reino de Navarra.svg
| 1475-1516 = Escudo de los reyes Católicos 2.svg
| 1516-1556 = CoA Charles I of Spain.png
| 1556-1700 = Escudo de Armas de Felipe II de España.svg
| 1700-1868 = Escudo del rey de España abreviado antes de 1868.svg
| 1808-1812 = Señal Real de Jose I con Orden del Toison.svg
| 1870-1873 = Escudo de España Amadeo de Saboya.svg
| 1873-1931 = Escudo de España 1874-1931.svg
| own = {{{image|}}}
| #default = Escudo de España (mazonado).svg
}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Spanish royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude>
{{documentation}}
</noinclude>
f78a1173b6a0742abab95a479a562eb00793ea76
Template:Find sources mainspace
10
1028
2254
2017-05-20T18:49:40Z
wikipedia>Plastikspork
0
Fix
wikitext
text/x-wiki
{{#invoke:Find sources|Find sources mainspace}}<noinclude>
{{#invoke:Find sources/autodoc|Find sources mainspace}}
</noinclude>
47c0ba9d406528e894f4077dd33ec0fe489d0af2
Template:UF-coord
10
1365
2700
2017-06-05T09:56:32Z
w>WOSlinker
0
add option to hide title param
wikitext
text/x-wiki
For [[Geographic coordinate system|coordinates]], use {{tl|coord}} with ''display=inline{{#ifeq:{{{title|}}}|no||,title}}''. Please do not be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]].<noinclude>
[[Category:Microformat (uF) message templates]]
</noinclude>
c0c43b7b3c810c02429a4a11e223f186d6ffc8b4
Template:About French nav boxes
10
1454
2789
2017-06-10T22:01:49Z
w>Helpful Pixie Bot
0
Update deprecated redirect template.
wikitext
text/x-wiki
#REDIRECT [[Template:About France nav boxes]]
{{Redirect category shell|
{{Redirect from move}}
{{Redirect from incorrect name}}
}}
9604a89a021334052646856b2ef8266c8f227286
Template:Location map+
10
1632
2973
2017-06-16T21:44:41Z
wikipedia>Plastikspork
0
TFD closed as no consensus ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map/multi|container}}</includeonly><noinclude>{{documentation}}</noinclude>
6d8191274535019dfbe086080294788b4c2e6602
Template:Refend
10
173
399
2017-07-24T21:40:56Z
wikipedia>WOSlinker
0
remove </dl> since no <dl> in Template:Refbegin
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{template doc|Template:refbegin/doc}}
{{TemplateDataHeader}}
<templatedata>
{
"description": "Ends a reference lists started by {{refbegin}}.",
"params": {
}
}
</templatedata>
</noinclude>
ae41356c6aab3e8901a484fcb46ff4aa314f1bb9
Template:Strong
10
208
2567
2017-09-16T03:10:40Z
w>Matt Fitzpatrick
0
added role parameter and attribute
wikitext
text/x-wiki
<strong {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
a6c6d3b520e2018e19376e2f0e1a72801336d1df
Template:Vanchor
10
1245
2579
2017-09-16T17:45:37Z
w>Zzuuzz
0
Changed protection level for "[[Template:Vanchor]]": [[Wikipedia:High-risk templates|High risk template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Visible anchor]]
{{Redirect category shell|
{{R from template shortcut}}
}}
8adbd53dde59b46bf409a2fbda6056f8c0199e9c
Template:Cs1
10
835
1852
2017-10-09T12:22:45Z
wikipedia>Xezbeth
0
Protected "[[Template:Cs1]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
[[Help:Citation Style 1|Citation Style 1]]<noinclude>
[[Category:Documentation assistance templates]]
</noinclude>
1da8ad17d867e11fdecfe858aa0b0e5a632bb6e8
Template:Crossref
10
121
289
2017-10-09T12:24:30Z
wikipedia>Xezbeth
0
Protected "[[Template:Crossref]]": [[Wikipedia:High-risk templates|Highly visible]] template redirect ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Crossreference]]
{{Rcat shell|
{{R from template shortcut}}
}}
dc4192593ccb8eaa34c0440c4aa712442a06c329
Template:Blue
10
850
1882
2017-10-09T16:10:03Z
wikipedia>MusikAnimal
0
Protected "[[Template:Blue]]": [[WP:High-risk templates|Highly visible template]]; 11,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<span style="color:blue">{{{1}}}</span><noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}</noinclude>
89f3353953a76d63c4ba5cd23af400b64ef178f4
Template:Subsidebar bodystyle
10
885
1960
2017-10-09T16:52:36Z
wikipedia>MusikAnimal
0
Protected "[[Template:Subsidebar bodystyle]]": [[WP:High-risk templates|Highly visible template]]; 10,000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#redirect [[Template:Subinfobox bodystyle]]
09334898141c9cd97ab7e7c9226a3424a88c0cd7
Template:Cite book
10
690
1548
2017-11-15T09:11:45Z
wikipedia>Salix alba
0
put TD in a collapse top / bottom section
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=book
}}</includeonly><noinclude>
{{documentation}}
{{collapse top|TemplateData}}
{{Cite book/TemplateData}}
{{collapse bottom}}
</noinclude>
c474cbe5d051e08f516083d594207d449245c717
Module:Citation/CS1/Utilities/doc
828
901
1992
2017-11-30T14:34:02Z
wikipedia>Shellwood
0
Reverted edits by [[Special:Contribs/50.35.74.125|50.35.74.125]] ([[User talk:50.35.74.125|talk]]) to last version by Trappist the monk
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This page contains various functions and tables that are common to multiple of the various modules that make up [[Module:Citation/CS1]].
{{#lst:Module:Citation/CS1/doc|module_components_table}}
c4f3e7c1767fa08a7f9f535de814b7de4d01a10f
Template:See
10
983
2162
2017-12-09T06:09:36Z
wikipedia>Alex 21
0
Changed redirect target from [[Template:Further information]] to [[Template:Further]]
wikitext
text/x-wiki
#REDIRECT [[Template:Further]]
5d02b5a16045ac62c67ba614e550dec3a5661db7
Module:Lang/ISO 639 synonyms
828
475
1027
2017-12-13T23:10:47Z
wikipedia>Trappist the monk
0
Scribunto
text/plain
-- File-Date: 2013-01-11
return {
["aar"] = "aa",
["abk"] = "ab",
["afr"] = "af",
["aka"] = "ak",
["amh"] = "am",
["ara"] = "ar",
["arg"] = "an",
["asm"] = "as",
["ava"] = "av",
["ave"] = "ae",
["aym"] = "ay",
["aze"] = "az",
["bak"] = "ba",
["bam"] = "bm",
["bel"] = "be",
["ben"] = "bn",
["bih"] = "bh",
["bis"] = "bi",
["bod"] = "bo",
["bos"] = "bs",
["bre"] = "br",
["bul"] = "bg",
["cat"] = "ca",
["ces"] = "cs",
["cha"] = "ch",
["che"] = "ce",
["chu"] = "cu",
["chv"] = "cv",
["cor"] = "kw",
["cos"] = "co",
["cre"] = "cr",
["cym"] = "cy",
["dan"] = "da",
["deu"] = "de",
["div"] = "dv",
["dzo"] = "dz",
["ell"] = "el",
["eng"] = "en",
["epo"] = "eo",
["est"] = "et",
["eus"] = "eu",
["ewe"] = "ee",
["fao"] = "fo",
["fas"] = "fa",
["fij"] = "fj",
["fin"] = "fi",
["fra"] = "fr",
["fry"] = "fy",
["ful"] = "ff",
["gla"] = "gd",
["gle"] = "ga",
["glg"] = "gl",
["glv"] = "gv",
["grn"] = "gn",
["guj"] = "gu",
["hat"] = "ht",
["hau"] = "ha",
["heb"] = "he",
["her"] = "hz",
["hin"] = "hi",
["hmo"] = "ho",
["hrv"] = "hr",
["hun"] = "hu",
["hye"] = "hy",
["ibo"] = "ig",
["ido"] = "io",
["iii"] = "ii",
["iku"] = "iu",
["ile"] = "ie",
["ina"] = "ia",
["ind"] = "id",
["ipk"] = "ik",
["isl"] = "is",
["ita"] = "it",
["jav"] = "jv",
["jpn"] = "ja",
["kal"] = "kl",
["kan"] = "kn",
["kas"] = "ks",
["kat"] = "ka",
["kau"] = "kr",
["kaz"] = "kk",
["khm"] = "km",
["kik"] = "ki",
["kin"] = "rw",
["kir"] = "ky",
["kom"] = "kv",
["kon"] = "kg",
["kor"] = "ko",
["kua"] = "kj",
["kur"] = "ku",
["lao"] = "lo",
["lat"] = "la",
["lav"] = "lv",
["lim"] = "li",
["lin"] = "ln",
["lit"] = "lt",
["ltz"] = "lb",
["lub"] = "lu",
["lug"] = "lg",
["mah"] = "mh",
["mal"] = "ml",
["mar"] = "mr",
["mkd"] = "mk",
["mlg"] = "mg",
["mlt"] = "mt",
["mon"] = "mn",
["mri"] = "mi",
["msa"] = "ms",
["mya"] = "my",
["nau"] = "na",
["nav"] = "nv",
["nbl"] = "nr",
["nde"] = "nd",
["ndo"] = "ng",
["nep"] = "ne",
["nld"] = "nl",
["nno"] = "nn",
["nob"] = "nb",
["nor"] = "no",
["nya"] = "ny",
["oci"] = "oc",
["oji"] = "oj",
["ori"] = "or",
["orm"] = "om",
["oss"] = "os",
["pan"] = "pa",
["pli"] = "pi",
["pol"] = "pl",
["por"] = "pt",
["pus"] = "ps",
["que"] = "qu",
["roh"] = "rm",
["ron"] = "ro",
["run"] = "rn",
["rus"] = "ru",
["sag"] = "sg",
["san"] = "sa",
["sin"] = "si",
["slk"] = "sk",
["slv"] = "sl",
["sme"] = "se",
["smo"] = "sm",
["sna"] = "sn",
["snd"] = "sd",
["som"] = "so",
["sot"] = "st",
["spa"] = "es",
["sqi"] = "sq",
["srd"] = "sc",
["srp"] = "sr",
["ssw"] = "ss",
["sun"] = "su",
["swa"] = "sw",
["swe"] = "sv",
["tah"] = "ty",
["tam"] = "ta",
["tat"] = "tt",
["tel"] = "te",
["tgk"] = "tg",
["tgl"] = "tl",
["tha"] = "th",
["tir"] = "ti",
["ton"] = "to",
["tsn"] = "tn",
["tso"] = "ts",
["tuk"] = "tk",
["tur"] = "tr",
["twi"] = "tw",
["uig"] = "ug",
["ukr"] = "uk",
["urd"] = "ur",
["uzb"] = "uz",
["ven"] = "ve",
["vie"] = "vi",
["vol"] = "vo",
["wln"] = "wa",
["wol"] = "wo",
["xho"] = "xh",
["yid"] = "yi",
["yor"] = "yo",
["zha"] = "za",
["zho"] = "zh",
["zul"] = "zu"
}
f3fb5374c9e0fdef6ce6ea22736b79468358ca19
Template:WikiProject Infoboxes sidebar
10
153
355
2017-12-20T17:30:20Z
wikipedia>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{Helpbox
| name = WikiProject Infoboxes sidebar
| class = plainlist collapsible {{#ifeq:{{{1|}}}|collapsed |collapsed}}
| float = {{{float|right}}}
| titlestyle = font-size:100%;padding:0.5em;
| title = {{resize|130%|[[Wikipedia:WikiProject Infoboxes|WikiProject Infoboxes]]}}<!--(resized here otherwise [show/hide] link also resized)-->
| headingstyle = font-size:105%;
| list1 = {{raise|0.25em|[[Wikipedia:List of infoboxes|List of infoboxes]]}}
| group2 = Style and help
| list2 =
*[[Wikipedia:Manual of Style/Infoboxes|Manual of Style/Infoboxes]]
*[[Help:Infobox]]
| group3 = Cleanup
| list3 =
{{Sidebar |child=yes |navbar=off
| heading1 = Talk page
| content1 =
*{{tl|Cleanup infobox}}
*{{tl|New infobox}}
*{{tl|Infobox requested}}
| heading2 = Article
| content2 =
*{{tl|Missing-taxobox}}
}}
| group4 = Building
| list4 =
*{{tl|Infobox}}
*[[Wikipedia:List of infoboxes/Proposed|List of infoboxes/Proposed]]
| group5 = To do
| list5 =
* [[:Category:Wikipedia articles with an infobox request|Add infobox]]
* [[:Category:Pages needing an infobox conversion|Change template used]]
* [[:Category:Wikipedia infobox cleanup|Cleanup contents]]
* [[:Category:Templates suitable for conversion to use Template:Infobox|Convert to use <nowiki>{{</nowiki>Infobox}}]]
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
d2db05e6c97d88a0b4925b16966067694c2e84b8
Template:Var
10
862
1912
2017-12-21T13:31:52Z
wikipedia>Izno
0
nix xml lang invocation
wikitext
text/x-wiki
<var {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-right: 1px;{{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</var><noinclude>
<!--Categories and interwikis go near the bottom of the /doc page.-->
{{Documentation}}
</noinclude>
0e9e47694c01ca4c7b29566a1cb11a117dfbf2c0
Template:Lang-cy
10
1406
2741
2017-12-23T22:22:05Z
w>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=cy
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Celtic multilingual support templates]]
</noinclude>
369e33088d05559f9f5fb2b2892ee4d9d5f47570
Template:Lang-de
10
999
2194
2017-12-23T22:22:11Z
wikipedia>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=de
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fce950f3988f353d598dd94038c50a0016c8f3e7
Template:Lang-fr
10
998
2192
2017-12-23T22:56:28Z
wikipedia>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=fr
}}</includeonly><noinclude>
{{documentation|Template:Lang-x/doc}}
[[Category:Italic multilingual support templates]]
</noinclude>
d931674bb3f25747fd413f72d24d104de98129b6
Template:Lang-ga
10
1401
2736
2017-12-23T22:56:51Z
w>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=ga
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Celtic multilingual support templates]]
</noinclude>
740ff9624e14c7aafc2ba79a3ac8a42115ec2868
Template:Lang-gd
10
1399
2734
2017-12-23T22:57:10Z
w>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=gd
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Celtic multilingual support templates]]
</noinclude>
abab1f7b12490144ea728c17ce94795701ad7bbb
Template:Lang-gv
10
1416
2751
2017-12-23T22:58:52Z
w>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=gv
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Celtic multilingual support templates]]
</noinclude>
ff9779c0cd433b720fa50af0e7a4d3f39f536756
Template:Lang-sco
10
1400
2735
2017-12-24T00:04:06Z
w>Trappist the monk
0
/* top */weaken initial style; see [[Template_talk:Lang#-Latn_stuff]]; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=sco
|rtl=no
}}{{#if:{{{abbr|}}}{{{i|}}}{{{l|}}}|[[Category:Lang-x templates with unsupported parameters]]}}</includeonly><noinclude>{{documentation}}<!-- place category links on the /doc sub-page --></noinclude>
f258cc60d888eb1c551da74f8835eaffbb5bfd16
Template:Lang-el
10
996
2188
2017-12-31T16:25:28Z
wikipedia>Trappist the monk
0
/* top */revise initial style for certain {{lang-xx}} templates; using [[Project:AWB|AWB]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_inherit
|code=el
}}</includeonly>{{#if:{{{2|}}}|{{Main other|[[Category:Instances of Lang-el using second unnamed parameter]]}}}}<noinclude>
{{Documentation}}
</noinclude>
1898a92fadc3297db4e90db7600d5d1d8a945355
Template:Mxt
10
1004
2204
2018-01-10T18:59:27Z
wikipedia>Primefac
0
Protected "[[Template:Mxt]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example monospaced example-mono" style="font-family: monospace, monospace; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
b00aa06d96188f3a153fd18bd7f0eebcb7f3b8d2
Template:Uses Wikidata
10
1069
2336
2018-01-10T18:59:53Z
wikipedia>Primefac
0
Protected "[[Template:Uses Wikidata]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access]...
wikitext
text/x-wiki
{{Sister project
| position = {{{position|}}}
| project = data
| text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}:
{{#invoke:Uses Wikidata|usesProperty}}
}}}}{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default={{#ifeq:{{PAGENAME}} |Uses Wikidata ||{{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }}
}}<!--
--><noinclude>{{documentation}}</noinclude>
4b6f6f2ef4c6d4b84fa8aab733189b440b156a3f
Template:Unichar/hexformat
10
1612
2947
2018-01-10T18:59:53Z
w>Primefac
0
Protected "[[Template:Unichar/hexformat]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed acce...
wikitext
text/x-wiki
{{#ifeq:{{{1|<#salted#>}}} | <#salted#>
| <#salted#>
| {{padleft:{{uc:{{#switch:{{lc:{{padleft:|2|{{{1|0}}}}}}}
| 0x = {{Str right|{{{1}}}|2}} <!--rm here: prefix u+, because that option is too expensive-->
|{{{1}}}
}}}}|4|0
}}
}}<noinclude>
{{Documentation}}
</noinclude>
c723d83bf4332dfedf6cc64dbff3813f6be109b6
Template:Unichar/ulink
10
1613
2948
2018-01-10T18:59:54Z
w>Primefac
0
Protected "[[Template:Unichar/ulink]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access]...
wikitext
text/x-wiki
{{#switch:{{{ulink|<#salted#>}}}
| <#salted#>=U+
| =[[{{{ulinkdefault|}}}|U+]]
| #default=[[{{{ulink|}}}{{!}}U+]]}}<noinclude>
{{Documentation}}
</noinclude>
856cde83e4c4901ac1e40ed58a968201bfc0bf7b
Template:Dummy reference
10
576
1300
2018-01-10T19:21:30Z
wikipedia>Primefac
0
Protected "[[Template:Dummy reference]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access...
wikitext
text/x-wiki
<sup class="reference nowrap ltr" style="color:#002bb8;">[{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|<span style="font-style:italic">}}{{#if:{{{txtcol|}}}|<span style="color:{{{txtcol|}}}">}}{{{1|1}}}{{#if:{{{txtcol|}}}|</span>}}{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|</span>}}]</sup><noinclude>
{{documentation}}
</noinclude>
7be6798eb28af3f887fa775b50dc87e0c575cde9
Template:Tsh
10
1584
2919
2018-01-10T19:22:23Z
w>Primefac
0
Protected "[[Template:Tsh]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Template shortcut]]
{{rcatsh|
{{R msp}}
{{R tsh}}
}}
9fde60ec995035a7ff432aea9b23c316c236351d
Template:Yes/no
10
577
1302
2018-01-10T19:22:36Z
wikipedia>Primefac
0
Protected "[[Template:Yes/no]]": [[WP:SEMI|semi-protecting]] highly-visible templates in response to recent template-space vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefi...
wikitext
text/x-wiki
#REDIRECT [[Template:Yesno]]
80e458cd4d851471d13896c26ecf96ce6dcdd579
Template:!mxt
10
1003
2202
2018-01-11T16:01:48Z
wikipedia>SMcCandlish
0
+class
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
123b663ea682585bd66d348c0b22b9356b6082bb
Template:Wde
10
1738
3291
2018-01-12T21:14:24Z
wikipedia>Uzume
0
[[WP:AES|←]]Redirected page to [[Template:Wikidata entity link]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wikidata entity link]]
[[Category:Wikidata templates]]
6ef9e52b49c26bd5d901ebd61f6b059c8971384b
Template:Break
10
1522
2857
2018-01-13T00:13:51Z
w>Plastikspork
0
Add safesubst
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:string|rep|<br/>|{{<includeonly>safesubst:</includeonly>#iferror:{{<includeonly>safesubst:</includeonly>#expr:1*{{{1|1}}}}}|1}}}}<noinclude>
{{Documentation}}
</noinclude>
6cf61c4ac248e7e59d6800616a169450e252ad59
Template:Convinfobox/pri3
10
1559
2894
2018-01-19T00:29:04Z
w>Primefac
0
Protected "[[Template:Convinfobox/pri3]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{1}}}|{{{2}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{1}}}|{{{2}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{1}}}|{{{2}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{#switch:{{{2}}}{{{4}}}
|ftin={{convert|{{{1}}}|ft|0|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{1}}}|st|0|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{1}}}|lb|0|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
}}
}}</includeonly><noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
a7c30bd34a3aebd6106d54e89f332fefd6d62d19
Template:Defn
10
620
1398
2018-01-19T00:29:21Z
wikipedia>Primefac
0
Protected "[[Template:Defn]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<dd class="glossary {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"|{{#if:{{{term|}}}|id="{{{term}}}-defn{{{2|{{{no|1}}}}}}"|}}|}} {{#if:{{{style|}}}|style="{{{style}}}"|}}>{{#if:{{{2|{{{no|}}}}}}|{{{2|{{{no}}}}}}. |}}{{{defn|{{{1|{{{content}}}}}}}}}</dd><noinclude>
{{Documentation}}<!--Categories go in the /doc subpage.-->
</noinclude>
7364e2a37ab009857bdee7a77e7e297830fc560b
Template:Glossary
10
621
1400
2018-01-19T00:29:58Z
wikipedia>Primefac
0
Protected "[[Template:Glossary]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<dl class="glossary {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"|}} {{#if:{{{id|}}}|id="{{{id}}}"|}}><noinclude>{{glossary end}}
<!--Categories and interwikis go on the /doc page.-->
{{Documentation}}
</noinclude>
afaf333b451c8bb5f581afb121ef9c3c5f8b7be8
Template:In5
10
1322
2657
2018-01-19T00:30:16Z
w>Primefac
0
Protected "[[Template:In5]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#invoke:in5|in5|1={{{1|}}}}}</includeonly><noinclude>
{{Documentation}}
<!--[[Category:Smart formatting templates|In5]]-->
</noinclude>
4c0824d7372b628cf664469045531f09fd04428b
Template:Sectionlink
10
138
325
2018-01-19T00:33:18Z
wikipedia>Primefac
0
Protected "[[Template:Sectionlink]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT[[Template:Section link]]
b1506aa42c4652e1f14405ccedd78d7061f91540
Template:UF-hcal
10
1507
2842
2018-01-19T00:34:07Z
w>Primefac
0
Protected "[[Template:UF-hcal]]": [[WP:SEMIPROT|semi-protection]] of high-usage templates to combat systematic vandalism ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
{{Microformat message
| format = hCalendar
| data = event details
| subtemplates =
{{#if:{{{hide_subtemplates}}} |<noinclude>}}
Dates will only be included if you use {{tl|start date}} (for single dates) or {{tl|end date}}. Do not, however, use these templates [[Wikipedia:WikiProject Microformats/dates|if a date before 1583 CE is involved]].
To include URLs, use {{tl|URL}}.
{{#if:{{{hide_subtemplates}}} |</noinclude>}}
|attendee |contact |description |dtend |dtstart |location |organiser |summary |url |vevent
| nocollapse = on
}}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars|{{PAGENAME}}]]}} }}</includeonly><noinclude>
{{Documentation |content={{Microformat message templates}}}}
[[Category:Microformat (uF) message templates]]
</noinclude>
f453b47f676a5c474e14155f7013b69b4716748b
Template:Namespace detect
10
101
249
2018-01-27T23:54:39Z
wikipedia>JJMC89
0
clean subst
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b4af86f91bea873fdb8145e7809511fed3a610ce
Template:Userbox-2
10
1285
2620
2018-02-01T22:38:09Z
BrownHairedGirl
49
Reverted edits by [[Special:Contribs/BrownHairedGirl|BrownHairedGirl]] ([[User talk:BrownHairedGirl|talk]]) to last version by Mr. Stradivarius
wikitext
text/x-wiki
{{#invoke:userbox|userbox-2}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
64b78ae9b9299893580048b4a7ed50d3fd8e1e8a
Template:Remove first word
10
1193
2522
2018-02-13T20:10:27Z
w>WOSlinker
0
separate pp-template not needed
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|pattern=^[^{{{sep|%s}}}]*{{{sep|%s}}}*|replace=|plain=false}}<noinclude>{{Documentation}}</noinclude>
df7a9e692f68be1581be06af5f51eaed5483b4c8
Template:Yesno-no
10
48
91
2018-02-13T20:27:17Z
wikipedia>WOSlinker
0
separate pp-template not needed
wikitext
text/x-wiki
{{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1ad7b7800da1b867ead8f6ff8cef76e6201b3b56
Template:Ns0
10
1433
2768
2018-02-20T15:44:55Z
Xaosflux
7
{{Rcat shell|{{R with history}}{{R from template shortcut}}}} requested on talk
wikitext
text/x-wiki
#REDIRECT [[Template:Main other]]
{{Rcat shell|{{R with history}}{{R from template shortcut}}}}
9122fb3f145931b4d9e90d3a9b8d46e21d215f67
Template:Convinfobox/sec2
10
1555
2890
2018-02-23T16:29:42Z
w>Primefac
0
Changed protection level for "[[Template:Convinfobox/sec2]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{convert|{{{3}}}|{{{4}}}|{{{2}}}|{{{5|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}</includeonly><noinclude>[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
de2102273c8b197c846ee1de461a9b1a2fb56463
Template:Convinfobox/prisec3
10
1560
2895
2018-02-23T16:29:42Z
w>Primefac
0
Changed protection level for "[[Template:Convinfobox/prisec3]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{1}}}|{{{2}}}|ftin|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} -->
|stlb={{convert|{{{1}}}|{{{2}}}|lb stlb|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} -->
|lboz={{convert|{{{1}}}|{{{2}}}|lboz|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} -->
|{{#switch:{{{2}}}{{{4}}}
|ftin={{convert|{{{1}}}|ft|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{1}}}|st|{{{3}}}|lb|{{#ifeq:{{{6}}}|kg|kg lb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{1}}}|lb|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{1}}}|{{{2}}}|{{{4}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}<!--ignoring {{{3}}} -->
}}
}}</includeonly><noinclude>{{pp-template|small=yes}}
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
3c35b4ff4e9e53c2a8ec1830e553dbccaec9678a
Template:Greater color contrast ratio
10
1102
2403
2018-02-23T16:29:56Z
wikipedia>Primefac
0
Changed protection level for "[[Template:Greater color contrast ratio]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:Color contrast|greatercontrast}}</includeonly><noinclude>
{{documentation}}
</noinclude>
eaba2f8ea92d1caa3afd9d70142b65215c23038d
Template:Ill
10
1106
2411
2018-02-23T16:29:56Z
wikipedia>Primefac
0
Changed protection level for "[[Template:Ill]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Interlanguage link]]
{{R from template shortcut}}
55504a3a5908b8242853cfc46ecf93ac892b00a5
Template:Link if exists
10
1432
2767
2018-02-23T16:30:08Z
w>Primefac
0
Changed protection level for "[[Template:Link if exists]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#if:{{{prefix|}}}|{{#ifexist:{{{prefix}}}:{{{1}}}|[[:{{{prefix}}}:{{{1}}}]]|{{{1}}}}}|{{#if:{{{nsp|}}}|{{#ifexist:{{{nsp}}}:{{{1}}}|[[:{{{nsp}}}:{{{1}}}|{{{1}}}]]|{{{1}}}}}|{{#ifexist:{{{1}}}|[[{{{1}}}]]|{{{1}}}}}}}}}<noinclude>
{{Documentation}}
</noinclude>
75d07d4f262e23341348d92c559cd3a033ab4efd
Template:Raise
10
134
317
2018-02-23T16:30:18Z
wikipedia>Primefac
0
Changed protection level for "[[Template:Raise]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<span style="position:relative; bottom:{{#if:{{{2|}}} |{{{1}}} |0.6em}};">{{{2|{{{1}}}}}}</span><noinclude>{{Documentation}}</noinclude>
da747eda753555e094baeeb84eeca1be020ee399
Template:Snd
10
1026
2250
2018-02-23T16:30:27Z
wikipedia>Primefac
0
Changed protection level for "[[Template:Snd]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Spaced en dash]]
{{Redirect category shell|
{{R from template shortcut}}
}}
3b75d99127048894a5fec4237592923ea987cd13
Template:TemplateDataHeader
10
1065
2328
2018-02-23T16:30:31Z
wikipedia>Primefac
0
Changed protection level for "[[Template:TemplateDataHeader]]": [[WP:HIGHRISK|high-risk]] template with 4000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:TemplateData header]]
{{R from move}}
61e461016bcb3a0a6fc4d8aea35d590298c19630
Template:Convinfobox/prisec2
10
1181
2510
2018-02-23T17:02:12Z
w>Primefac
0
Changed protection level for "[[Template:Convinfobox/prisec2]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Convinfobox/pri2]]<!--{{convert/{{{2}}}|{{{1}}}|{{{3}}}|{{{4}}}|d=valunit2/{{{d}}}}}<noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>-->
b2680a6b956cc0cd7c35c6ea3085e03944317fb9
Template:DfE performance tables
10
1475
2810
2018-02-23T17:02:13Z
w>Primefac
0
Changed protection level for "[[Template:DfE performance tables]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
[https://www.compare-school-performance.service.gov.uk/school/{{{1}}} {{#if:{{{2|}}}|{{{2}}}|Performance tables for {{{1}}}}}]<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
b866211253fb092ef9288552b4d1b09676fa053d
Template:Engvar
10
1527
2862
2018-02-23T17:02:13Z
w>Primefac
0
Changed protection level for "[[Template:Engvar]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Engvar|variants}}<noinclude>
{{documentation}}
</noinclude>
8a5e5d43fff0053bf6bd7fab7f761a6be4c05d21
Template:EduBase
10
1474
2809
2018-02-23T17:02:14Z
w>Primefac
0
Changed protection level for "[[Template:EduBase]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
[https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/{{{1}}} {{#if:{{{2|}}}|{{{2}}}|EduBase details for {{{1}}}}}]<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
e1b557b24590c21cd1fe38b1d92ea247ebfd199c
Template:Highlight/core
10
1382
2717
2018-02-23T17:02:19Z
w>Primefac
0
Changed protection level for "[[Template:Highlight/core]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<span style="background:{{{2|yellow}}}">{{{1}}}</span>
f76d1f4ced4fc1f2123540938d029827d88d49d1
Template:Ofsted
10
1476
2811
2018-02-23T17:02:48Z
w>Primefac
0
Changed protection level for "[[Template:Ofsted]]": [[WP:HIGHRISK|high-risk]] template with 2000+ transclusions ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
[https://reports.ofsted.gov.uk/inspection-reports/find-inspection-report/provider/ELS/{{{1|{{{id|{{#property:P2253|[[Category:Ofsted template with no id set]]}}}}}}}} {{#if:{{{2|}}}|{{{2}}}|Ofsted details for unique reference number {{{1|{{{id|{{#property:P2253|}}}}}}}}}}]<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS -->
</noinclude>
ecd37ae7a3de5338f20455a26993f9245d6a9381
Template:Details
10
1052
2302
2018-02-26T07:20:44Z
wikipedia>Galobtter
0
redirect to complete merge
wikitext
text/x-wiki
#REDIRECT [[Template:Further]]
{{Redirect category shell|
{{R from merge}}
}}
1a90a51d85f6cb700979ea38f5f69bee0ff2c85e
Template:Redirect
10
1034
2266
2018-02-27T17:34:09Z
wikipedia>Primefac
0
[[Wikipedia:Templates for discussion/Log/2018 February 18#Template:Redirect3_and_Template:About2]] closed as merge ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:redirect hatnote|redirect|1}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c764f9cf8b31b4d5aa3e131bf254bfc78e5ba39b
Module:Location map/data/United Kingdom
828
1404
2739
2018-02-28T03:30:43Z
w>Plastikspork
0
Protected "[[Module:Location map/data/United Kingdom]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
return {
name = 'the United Kingdom',
top = 61,
bottom = 49,
left = -11,
right = 2.2,
image = 'United Kingdom adm location map.svg',
image1 = 'United Kingdom relief location map.jpg'
}
1f97510fc974e293b60c91f5c448703dd31521fc
Template:Cite news
10
970
2130
2018-03-03T19:19:37Z
wikipedia>Jo-Jo Eumerus
0
Per edit request on [[Help talk:Citation Style 1]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=news
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
d8c42e9ff15cc4f8c922db4f02cd5ea0ef1c14ee
Module:No ping
828
212
480
2018-03-05T11:40:46Z
Revi
24
5 revisions imported
Scribunto
text/plain
-- This module implements {{noping}}.
local p = {}
function p.main(frame)
local args = frame:getParent().args
return p._main(args)
end
function p._main(args)
local ret = {}
local fullUrl = mw.uri.fullUrl
local format = string.format
for i, username in ipairs(args) do
local url = fullUrl(mw.site.namespaces.User.name .. ':' .. username)
url = tostring(url)
local label = args['label' .. tostring(i)]
url = format('[%s %s]', url, label or username)
ret[#ret + 1] = url
end
ret = mw.text.listToText(ret)
ret = '<span class="plainlinks">' .. ret .. '</span>'
return ret
end
return p
46a1de5db467e72a12dcd8726fa83fe2cc683780
Module:Location map/data/France Île-de-France
828
1452
2787
2018-03-07T04:28:24Z
w>Plastikspork
0
Protected "[[Module:Location map/data/France Île-de-France]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
return {
name = 'Île-de-France (region)',
top = 49.275,
bottom = 48.075,
left = 1.375,
right = 3.625,
image = 'Ile-de-France region location map.svg',
image1 = 'Ile-de-France region relief location map.jpg'
}
fe238fb7298a4f1392a67720ea8aa47eff1c0c03
Template:Yesno-yes
10
601
1354
2018-03-11T01:06:35Z
wikipedia>JJMC89
0
allow subst
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|yes}}}|¬={{{¬|yes}}}|def={{{def|yes}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1644b79058ef2cece539a411edc164d98bb11ebe
Module:Location map/data/Greece
828
1458
2793
2018-03-11T23:53:18Z
w>Plastikspork
0
Changed protection level for "[[Module:Location map/data/Greece]]" ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
return {
name = 'Greece',
top = 42.0,
bottom = 34.6,
left = 19.1,
right = 29.9,
image = 'Greece location map.svg',
image1 = 'Greece relief location map.jpg'
}
4332f04d7e48da6122a873dfbff04a5ba2805bd3
Module:Distinguish
828
29
53
2018-04-01T10:06:10Z
wikipedia>Galobtter
0
fixed with text and selfref
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools --initialize lazily
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.distinguish(frame)
mArguments = require('Module:Arguments')
mTableTools = require('Module:TableTools')
local args = mArguments.getArgs(frame)
local selfref = args.selfref
local text = args.text
args = mTableTools.compressSparseArray(args)
return p._distinguish(args, text, selfref)
end
function p._distinguish(args, text, selfref)
checkType("_distinguish", 1, args, 'table')
if #args == 0 and not text then return '' end
local text = string.format(
'Not to be confused with %s.',
text or mHatlist.orList(args, true)
)
hnOptions = {selfref = selfref}
return mHatnote._hatnote(text, hnOptions)
end
return p
0364d14af01fc656ad1d898c5036fbd12a7ca938
Template:Tree list/branching
10
487
1077
2018-04-06T09:13:27Z
wikipedia>TheDJ
0
Undid revision 834547400 by [[Special:Contributions/TheDJ|TheDJ]] ([[User talk:TheDJ|talk]])
wikitext
text/x-wiki
<includeonly><li class="emptyline"></includeonly><noinclude>
{{Documentation|Template:Tree list/doc}}
</noinclude>
530e32b7119fdb2a9fcb93fdecf211a365e6541f
Template:Cref2
10
1602
2937
2018-04-11T15:07:07Z
w>Primefac
0
TFD closed as no consensus ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
<sup id="ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_{{urlencode:{{anchorencode:{{{2|1}}}}}}}" class="reference">[[#cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}|[{{{1}}}]]]</sup><noinclude>
{{Documentation}}
</noinclude>
fc4539b5205c7a4601c12660a4a408b38a33b48b
Template:Script/Cuneiform
10
1608
2943
2018-04-11T20:56:22Z
w>TheLateDentarthurdent
0
wikitext
text/x-wiki
<span style="font-size:125%;font-family:{{#switch: {{{1|}}}
|sux
|4 = Akkadian" title="Classical Sumerian cuneiform"
|akk
|elx
|xeb
|xhu
|5 = Akkadian" title="Neo-Sumerian cuneiform"
|hit = UllikummiA, Assurbanipal, CuneiformNA,'Noto Sans Cuneiform'" title="Hittite cuneiform"<!-- preference for Ullikummi, later cuneiform styles as last resort --!>
|xht
|xlu
|6 = 'Free Idg Serif',Akkadian,'Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform','Segoe UI Historic';" title="Old Assyrian cuneiform"<!-- use Akkadian, Noto, and Segoe as last resort -->
|7 = CuneiformNA,Assurbanipal,Akkadian,'Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform','Segoe UI Historic';" title="Neo-Assyrian cuneiform"<!-- use Akkadian, Noto, and Segoe as last resort -->
|peo = Behistun, Aegean, 'Old Persian';" title="Old Persian cuneiform"
|#default = 'Segoe UI Historic','Akkadian','Noto Sans Cuneiform','Noto Sans Sumero-Akkadian Cuneiform';" title="cuneiform text"
}} lang="{{#switch:{{{1|}}}|akk|elx|hit|sux|xeb|xht|xhu|xlu={{{1}}}|und}}-Xsux">{{{2|{{{1}}}}}}</span><noinclude>
{{documentation}}
</noinclude>
9c950719d250966ef009257ce28de495f4042f9c
Template:Category see also
10
1580
2915
2018-04-28T17:31:03Z
BrownHairedGirl
49
use [[Template:Category see also/Category pair check]], as tested in sandbox
wikitext
text/x-wiki
<includeonly>{{#invoke:Category see also|main}}{{Category see also/Category pair check|{{{1|}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
14ce283b0335304ba9090d85c617ea7cddea0668
Template:Navbox lists
10
632
1424
2018-05-30T19:49:39Z
Ahecht
42
Ahecht moved page [[Template:Navbox lists]] to [[Template:HTML lists]]: title is "HTML lists"
wikitext
text/x-wiki
#REDIRECT [[Template:HTML lists]]
{{R from move}}
8b26162bd61fb3a71c7bbf97d6b1aff6ba54020e
Module:Based on
828
1263
2597
2018-07-08T02:54:33Z
w>Alex 21
0
Include space
Scribunto
text/plain
local p = {}
function p.lua_main(frame)
local s = frame.args[1]
if frame.args[3] then
local args = {}
for i, v in ipairs(frame.args) do
if i >= 2 then
args[#args+1] = v
end
end
args['style'] = 'display: inline'
args['list_style'] = 'display: inline'
args['item1_style'] = 'display: inline'
h = mw.html.create('div')
h:wikitext(s)
h:tag('br') -- h:newline() is not working for some reason
h:wikitext('by ')
h:wikitext(frame:expandTemplate{ title = 'Unbulleted list', args = args })
return h
elseif frame.args[2] then
s = s .. '<br />by ' .. frame.args[2]
return s
end
return s
end
function p.main(frame)
return p.lua_main(frame:getParent())
end
return p
f339a89d130bc03d93a1769df04b16e520723fbf
Template:For loop
10
568
1284
2018-07-23T22:55:18Z
Pppery
6
Merge complete
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:For loop|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
12b7b7010fe32f888e21bcdfa6a904fc8a925437
Template:Asbox
10
755
1685
2018-07-24T20:05:09Z
wikipedia>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
</noinclude>
b20553d60f223a0f36a3089524989e235d379b74
Template:Tag
10
573
1294
2018-07-26T17:17:13Z
wikipedia>SMcCandlish
0
These are called attributes; no one who does HTML calls them "parameters".
wikitext
text/x-wiki
<code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!--
Opening tag
-->{{#switch:{{{2|pair}}}
|c|close =
|e|empty|s|single|v|void
|o|open
|p|pair = <{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}| {{{params|{{{attribs}}}}}}}}
}}<!--
Content between tags
-->{{#switch:{{{2|pair}}}
|c|close = {{{content|}}}
|e|empty|s|single|v|void =  />
|o|open = >{{{content|}}}
|p|pair = {{#ifeq:{{{1|tag}}}|!--||>}}{{{content|...}}}
}}<!--
Closing tag
-->{{#switch:{{{2|pair}}}
|e|empty|s|single|v|void
|o|open =
|c|close
|p|pair = {{#ifeq:{{{1|tag}}}|!--|-->|</{{{1|tag}}}>}}
}}<!--
--></code><noinclude>
{{Documentation}}
</noinclude>
eae208bc1612c834de697fa3ee9b343966cf8602
Template:Flowlist/styles.css
10
619
1396
2018-07-27T12:35:42Z
wikipedia>Galobtter
0
attribution: from [[MediaWiki:Common.css]]
sanitized-css
text/css
.flowlist ul {
overflow-x: hidden;
margin-left: 0;
padding-left: 1.6em;
}
.flowlist ol {
overflow-x: hidden;
margin-left: 0;
padding-left: 3.2em;
}
.flowlist dl {
overflow-x: hidden;
}
9e1541baa2f3cc3d7b4d7ac39f073f3a43a91c06
Template:Further
10
982
2158
2018-07-27T17:29:22Z
wikipedia>Galobtter
0
fix so that don't need [[Module:Further]] anymore
wikitext
text/x-wiki
<includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}| on {{{topic|}}}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dd29c6dfb3894a2dc3f20144a654b7012c9a9214
Template:Infobox mapframe
10
1431
2766
2018-08-01T10:02:30Z
Oshwah
51
Protected "[[Template:Infobox mapframe]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Infobox mapframe|main}}</includeonly><noinclude>{{Infobox mapframe|id=Q100}}
{{Documentation}}
</noinclude>
2e2f2b0dae1b73b5eb1f58d9070b6b1e3db462e1
Template:Offer help
10
144
337
2018-08-09T06:26:26Z
Anomalocaris
21
{{smaller|{{hatnote...}}}} → {{hatnote|{{smaller...}}}} because {{smaller}} uses <span> and {{hatnote}} uses <div> and <span> can't wrap <div>
wikitext
text/x-wiki
{{Hatnote|{{smaller|'''Find this page confusing? {{edit|Special:MyTalk|Just use this link to ask for help on your talk page|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}; a volunteer will visit you there shortly!'''}}}}
<noinclude>
[[Category:Hatnote templates]]
[[Category:Wikipedia help templates]]
</noinclude>
081a2d2e563a98d43f291dc22865004902a44ce0
Template:Infobox former country
10
1218
2547
2018-08-12T22:08:56Z
w>Primefac
0
merge complete
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox country]]
{{r from merger}}
d1a087676a1c1fbf80c00fb58bf83cff967f7de4
Template:Infobox
10
86
2438
2018-08-15T18:33:36Z
w>Primefac
0
Undid revision 855063393 by [[Special:Contributions/Jdlrobson|Jdlrobson]] ([[User talk:Jdlrobson|talk]]) rather problematic change mentioned [[Template_talk:Infobox#Using_template_styles_to_reduce_technical_debt_inside_mobile_skin|on talk page]], reverting until it can be sorted
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
Template:Help navigation
10
149
346
2018-09-02T18:31:09Z
wikipedia>Senator2029
0
Rcats
wikitext
text/x-wiki
#REDIRECT [[Template:Wikipedia help pages]]
{{R from template shortcut}}
{{R from move}}
c8dc8546e49bfbe586503ce5abeeee1590843b2d
Module:WPMILHIST Infobox style
828
1100
2399
2018-09-21T22:30:21Z
wikipedia>Frietjes
0
slightly larger for [[Operation Fritham]]
Scribunto
text/plain
local retval = {
main_box_raw_auto_width = 'border-spacing:2px;',
header_raw = 'background-color:#C3D6EF;text-align:center;vertical-align:middle;font-size:110%;',
sub_header_raw = 'background-color:#DCDCDC;text-align:center;vertical-align:middle;',
header_color = 'background-color:#C3D6EF;',
nav_box = 'margin:0;float:right;clear:right;width:25.5em;margin-bottom:0.5em;margin-left:1em;',
nav_box_child = 'margin:0;float:right;clear:right;width:25em;margin-bottom:0.5em;',
nav_box_wide = '',
nav_box_header = 'background-color:#C3D6EF;',
nav_box_wide_header = 'background-color:#C3D6EF;',
nav_box_label = 'background-color:#DCDCDC;',
image_box_raw = 'text-align:center;border-bottom:1px solid #aaa;line-height:1.5em;',
image_box_plain_raw = 'text-align:center;line-height:1.5em;',
internal_border = '1px dotted #aaa;',
section_border = '1px solid #aaa;'
}
retval.main_box_raw = 'width:25.5em;' .. retval.main_box_raw_auto_width
retval.header_bar = 'style="' .. retval.header_raw .. '"'
retval.sub_header_bar = 'style="' .. retval.sub_header_raw .. '"'
retval.image_box = 'style="' .. retval.image_box_raw .. '"'
retval.image_box_plain = 'style="' .. retval.image_box_plain_raw .. '"'
return retval
0f9ea47bc17e40cdabbae6de54f63e40ae502f8e
Template:Infobox cabinet members
10
1155
2481
2018-09-22T23:39:47Z
w>Zackmann08
0
Use the new module again
wikitext
text/x-wiki
{{#invoke:Infobox cabinet members|infobox}}<noinclude>
{{documentation}}
</noinclude>
18dd2deb87b06f977c67ee3b5d9e2118c3dc32ee
Template:Infobox French royalty styles
10
1127
2452
2018-10-09T20:54:49Z
w>DePiep
0
wikitext
text/x-wiki
{{Infobox manner of address
| background = #6495ED
| color = #000066
| type = Royal
| name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| kingdom = France moderne.svg
| old = France Ancient.svg
| own = {{{image|}}}
| #default = France moderne.svg
}}
| image2 = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| kingdom = Navarre Shield.svg
| #default = }}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_]]}}|preview=Page using [[Template:Infobox French royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude>
{{documentation}}
<!-- add categories and interwikis to Template:Infobox French Royalty styles/doc -->
</noinclude>
ee72504e5dedf043a3a2f8220bf171a2e5e7a11e
Template:Tree list
10
483
1065
2018-10-23T17:14:48Z
wikipedia>Frietjes
0
wikitext
text/x-wiki
<templatestyles src="Tree list/styles.css" /><!--
--><div class="treeview"><noinclude>
</div>
{{Documentation}}
</noinclude>
3c3df2fc2f0185fa60fd2fdde34e5b13181ff42f
Template:Noitalic
10
1543
2878
2018-10-23T17:14:56Z
w>Frietjes
0
wikitext
text/x-wiki
<templatestyles src="Noitalic/styles.css"/><span class="noitalic">{{{1}}}</span><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
b6c6960cde0b0f24db007ad9e43851203c95069d
Template:Nobold
10
14
23
2018-10-23T17:15:13Z
wikipedia>Frietjes
0
wikitext
text/x-wiki
<templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
9c92b5951772bb26ca0fbe9256418b65e47700dd
Template:Navbox with collapsible groups
10
1541
2876
2018-10-26T16:36:20Z
w>Frietjes
0
use lua version; will temporarily save the old version in the sandbox for comparison in the testcases
wikitext
text/x-wiki
{{#invoke:Navbox with collapsible groups|navbox}}<noinclude>
{{documentation}}
</noinclude>
a44295b44aa63f852f43d5a21b90ff395fbfcf4e
Template:Infobox royal styles
10
1131
2456
2018-11-10T14:57:24Z
w>Frietjes
0
expand infoboximage, this is handled by the parent template
wikitext
text/x-wiki
{{Infobox manner of address
| background = #CCBBEE
| colour = #000066
| name = {{{name<includeonly>|{{{royal name|}}}</includeonly>}}}
| image = {{{image|}}}
| size = {{{image_size|}}}
| image_alt = {{{image_alt|}}}
| reference = {{{reference<includeonly>|{{{dipstyle|}}}</includeonly>}}}
| spoken = {{{spoken<includeonly>|{{{offstyle|}}}</includeonly>}}}
| alternative = {{br separated entries | {{{alternative<includeonly>|{{{altstyle|}}}</includeonly>}}} | {{{{{|safesubst:}}}#if:{{{lang|}}}| {{{lang}}}: {{{altlang|}}} }} }}
}}<noinclude>{{documentation}}</noinclude>
c3f747e4827e3d6c75e7bdd37a2cf72bbe32af2a
Template:Tracks Wikidata
10
1255
2589
2018-11-12T18:34:23Z
w>Frietjes
0
use svg composite image to reduce overhead
wikitext
text/x-wiki
{{Sister project
| image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]]
| position = {{{position|}}}
| text = This {{template other
| template
| {{module other
| module
| {{category other
| category
| page <!-- not template, module, or category -->
}}
}}
}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}}
| one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details.
| the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}}
}}
}}<includeonly>{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default = {{template other
| [[Category:Templates tracking Wikidata]]
| {{module other
| [[Category:Modules tracking Wikidata]]
| {{category other
| <!-- if used in a category, don't automatically add parent category -->
| <!-- not template, module, or category -->
}}
}}
}}
}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc sub-page -->
</noinclude>
6a945044f5d5ab2a4623ed832c541d35146e740a
Template:Nbsp
10
1443
2778
2018-11-19T18:04:40Z
w>Amorymeltzer
0
{{R from template shortcut}}
wikitext
text/x-wiki
#REDIRECT [[Template:Spaces]]
{{Redirect category shell|
{{R from move}}
{{R from alternative name}}
{{R from template shortcut}}
}}
13b85f36a53a9f13b06535afaa4c19339f1ea4b6
Template:Country data Slovenia
10
1209
2538
2018-11-28T21:46:29Z
w>Illegitimate Barrister
0
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Slovenia
| flag alias = Flag of Slovenia.svg
| link alias-army = Slovenian Ground Force
| link alias-military=Slovenian Armed Forces
| flag alias-military=Flag of the Slovenian Armed Forces.svg
| flag alias-naval=Naval Jack of Slovenia.svg
| link alias-naval=Slovenian Navy
| link-alias-navy=Slovenian Navy
| size = {{{size|}}}
| variant = {{{variant|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
<noinclude>
| redir1 = SVN
| redir2 = SLO
| related1 = SR Slovenia
</noinclude>
}}
68574d7f8429700e25b2100ce323c396d0954025
Module:Interval
828
1070
2338
2018-11-29T01:11:27Z
wikipedia>Anomie
0
Changed protection level for "[[Module:Interval]]": Syncing protection from formerly cascade-protected [[Template:ACEWatchlistNotice]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
-- This module powers {{interval}}.
local p = {}
-- Constants
local lang = mw.language.getContentLanguage()
local getArgs = require('Module:Arguments').getArgs
local function getArgNums(args)
-- Returns an array containing the keys of all positional arguments
-- that contain data (i.e. non-whitespace values).
-- (from Module:Unbulleted_list)
local nums = {}
for k, v in pairs(args) do
if type(k) == 'number' and
k >= 1 and
math.floor(k) == k and
mw.ustring.match(v, '%S') then
table.insert(nums, k)
end
end
table.sort(nums)
return nums
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local n, rule, format = args.n, args.rule, args.format
local numbers = getArgNums(args)
local low, high, lowpos, highpos = nil, nil, 0, #numbers + 1
-- If comparing times, convert them all to seconds after the epoch
if format == 'time' then
if n then
n = lang:formatDate('U', '@' .. n)
else
n = os.time() -- Set n to now if no time provided
end
end
n = tonumber(n)
for i, num in ipairs(numbers) do
local interval
if format == 'time' then
interval = tonumber(lang:formatDate('U', '@' .. args[num]))
else
interval = tonumber(args[num])
end
if n and ((n >= interval and not rule) or (n > interval and rule == '>')) then
low = interval
lowpos = num
else
high = high and math.min(interval, high) or interval
if high == interval then highpos = num end
end
end
return lowpos .. '-' .. highpos
end
return p
e9162c263908d88338f24fa3293ff72adfbc9277
Template:TOC limit
10
978
2150
2018-12-07T07:36:09Z
wikipedia>TheDJ
0
Use template styles
wikitext
text/x-wiki
<templatestyles src="Template:TOC limit/styles.css" /><div class="toclimit-{{{1|{{{limit|3}}}}}}">__TOC__</div><noinclude>
{{documentation}}
</noinclude>
76fd91b1053a09dfa5aece7e60e48693d38dfc03
Template:Format item
10
579
1306
2018-12-07T07:48:58Z
MusikAnimal
4
Protected "[[Template:Format item]]": [[Wikipedia:High-risk templates|High-risk template]] ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Item|format}}</includeonly><noinclude>
{{doc}}
</noinclude>
0de34fe93b7513b034123ce1c532fd0f2df896dc
Template:Item
10
580
1308
2018-12-07T07:48:58Z
MusikAnimal
4
Protected "[[Template:Item]]": [[Wikipedia:High-risk templates|High-risk template]] ([Edit=Require autoconfirmed or confirmed access] (indefinite) [Move=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Item|pack}}</includeonly><noinclude>
{{doc}}
</noinclude>
2a8d49a45be839260ad83d33fa73c804d0a39e55
Template:Oldid
10
1289
2624
2018-12-10T20:41:24Z
w>Jonesey95
0
rm stray trailing space, per talk page request
wikitext
text/x-wiki
<span class="plainlinks">[{{fullurl:{{{page|{{{1|Main Page}}}}}}|oldid={{{oldid|{{{2|}}}}}}}} {{{label|{{{title|{{{3|{{#if:{{{oldid|{{{2|}}}}}}|Old revision|Current version}} of {{#if:{{{page|{{{1|}}}}}}|'''{{{page|{{{1}}}}}}'''|a page}}}}}}}}}}}]</span><noinclude>
{{documentation}}
</noinclude>
4a42ae0cc77ec0385d4b6508c5d3f366db39ecdb
Template:Flagdeco
10
1721
3244
2018-12-16T14:05:04Z
wikipedia>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<!--
-->|<!--
#Check for existence of Template: Country data foo before invoking it
-->{{#ifexist: Template: Country data {{{1|}}}<!--
-->|<!--
# It exists, so proceed
-->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!--
-->|<!--
# It doesn't exist, so do nothing
-->}}<!--
-->|<!--
# DEFAULT call Template: Country data {{{1|}}}
# with no prior checks
-->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!--
# Track use where "Template:Country data Foo" does not exist
-->{{#ifexist: Template:Country data {{{1|}}}||{{namespace detect showall
| 1 =
| 2 = [[Category:Flagdeco with missing country data templates]]
| user = 1
| talk = 1
| other = 2
}}}}<!--
-->}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
2cd50bb91e18505de93484a7348c92b68745dbf9
Template:!)
10
1171
2500
2018-12-16T17:33:17Z
w>Amorymeltzer
0
Changed protection level for "[[Template:!)]]": [[WP:High-risk templates|Highly visible template]]: 200k+ transclusions ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
|}<noinclude>
{{Documentation}}
</noinclude>
4708392952b330b1c5bf605bc6fc76222b1609d2
Template:Category handler
10
1085
2369
2018-12-16T20:13:00Z
wikipedia>Amorymeltzer
0
Changed protection level for "[[Template:Category handler]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Category handler|main}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, and interwikis to Wikidata. -->
</noinclude>
d14e9f545cf1833acbe174ae70b615c39b18cf63
Template:Template other
10
25
45
2018-12-16T22:06:25Z
wikipedia>Amorymeltzer
0
Changed protection level for "[[Template:Template other]]": [[WP:High-risk templates|Highly visible template]]: Transclusion count has increased dramatically ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Template:MONTHNUMBER
10
1341
2676
2018-12-17T15:25:23Z
w>Amorymeltzer
0
Changed protection level for "[[Template:MONTHNUMBER]]": Allow template editor access, see [[Template:MONTHNAME]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}
|{{#switch:{{lc:{{{1}}}}}
|january|jan=1
|february|feb=2
|march|mar=3
|apr|april=4
|may=5
|june|jun=6
|july|jul=7
|august|aug=8
|september|sep|sept=9
|october|oct=10
|november|nov=11
|december|dec=12
|{{#ifexpr:{{{1}}}<0
|{{#ifexpr:(({{{1}}})round 0)!=({{{1}}})
|{{#expr:12-(((0.5-({{{1}}}))round 0)mod 12)}}
|{{#expr:12-(((11.5-({{{1}}}))round 0)mod 12)}}
}}
|{{#expr:(((10.5+{{{1}}})round 0)mod 12)+1}}
}}
}}
|Missing required parameter 1=''month''!
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
c2ade663b96231e493986cd17b454923da290098
Module:Separated entries
828
165
383
2018-12-17T20:54:33Z
wikipedia>Amorymeltzer
0
Changed protection level for "[[Module:Separated entries]]": [[WP:High-risk templates|High-risk Lua module]]: Over 2M transclusions ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
-- This module takes positional parameters as input and concatenates them with
-- an optional separator. The final separator (the "conjunction") can be
-- specified independently, enabling natural-language lists like
-- "foo, bar, baz and qux". The starting parameter can also be specified.
local compressSparseArray = require('Module:TableTools').compressSparseArray
local p = {}
function p._main(args)
local separator = args.separator
-- Decode (convert to Unicode) HTML escape sequences, such as " " for space.
and mw.text.decode(args.separator) or ''
local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator
-- Discard values before the starting parameter.
local start = tonumber(args.start)
if start then
for i = 1, start - 1 do args[i] = nil end
end
-- Discard named parameters.
local values = compressSparseArray(args)
return mw.text.listToText(values, separator, conjunction)
end
local function makeInvokeFunction(separator, conjunction, first)
return function (frame)
local args = require('Module:Arguments').getArgs(frame)
args.separator = separator or args.separator
args.conjunction = conjunction or args.conjunction
args.first = first or args.first
return p._main(args)
end
end
p.main = makeInvokeFunction()
p.br = makeInvokeFunction('<br />')
p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain())
return p
e80231ff3de01afd7f62a94e0a34dc1e67504085
Template:Getalias
10
1466
2801
2018-12-18T17:22:20Z
w>Frietjes
0
Undid revision 874341463 by [[Special:Contributions/Frietjes|Frietjes]] ([[User talk:Frietjes|talk]])
wikitext
text/x-wiki
{{country data {{{1}}}|getalias/core|name={{{2|}}}|variant={{{variant|{{{3|}}}}}}}}<noinclude>
{{documentation}}
</noinclude>
5b427cd2c7117883f1c5abf4e355f7a28f7dfa03
Module:Location map/info
828
1637
2989
2018-12-19T19:56:18Z
wikipedia>Frietjes
0
use while loop
Scribunto
text/plain
local p = {}
function p.main(frame)
local map = mw.loadData(string.gsub(mw.title.getCurrentTitle().prefixedText,'/doc$',''))
local retval =
[=[{| class="wikitable" style="text-align:center; margin-top:0;"
|+ Location map of ]=] .. map.name .. '\n' .. [=[
|-
! name
|colspan="3"| ]=] .. map.name .. [=[
|-
]=]
if map.top then
retval = retval ..
[=[!rowspan="4"|border<br/>coordinates
|-
|colspan="3"| ]=] .. map.top .. '\n' .. [=[
|-
|style="width:7em;"| ]=] .. map.left .. '\n' .. [=[
| ←↕→
|style="width:7em;"| ]=] .. map.right
if map.right > 180 then
retval = retval .. ' (' .. map.right - 360 .. ')'
end
retval = retval .. '\n' .. [=[
|-
|colspan="3"| ]=] .. map.bottom .. '\n' .. [=[
|-
! map center
|colspan="4"| ]=]
local width = (map.right - map.left) % 360
if width == 0 then
width = 360
end
local center = (map.left + width/2) % 360
if center >= 180 then
center = center - 360
end
retval = retval .. frame:expandTemplate{title = 'coord', args = { (map.top + map.bottom)/2, center }}
retval = retval .. '\n' .. [=[
|-]=]
end
if map.x then
retval = retval .. '\n' .. [=[
! x
|colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.x .. '\n' .. [=[
|-
! y
|colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.y .. '\n' .. [=[
|-]=]
end
retval = retval .. '\n' .. [=[
! image
|colspan="3"| <code>[[:File:]=] .. map.image .. '|' .. map.image .. [=[]]</code>
|-
|colspan="4"|[[File:]=] .. map.image .. [=[|400x400px]]
|-]=]
local i = 0
while map['image' .. (i+1)] or map['image' .. (i+2)] do
i = i + 1
if map['image' .. i] then
retval = retval .. '\n' .. [=[
! image]=] .. i .. '\n' .. [=[
|colspan="3"| <code>[[:File:]=] .. map['image' .. i] .. '|' .. map['image' .. i] .. [=[]]</code>
|-
|colspan="4"|[[File:]=] .. map['image' .. i] .. [=[|400x400px]]
|-]=]
end
end
if map.skew then
retval = retval .. '\n' .. [=[
! skew
|colspan="3"| ]=] .. map.skew .. '\n' .. [=[
|-]=]
end
if map.lat_skew then
retval = retval .. '\n' .. [=[
! lat_skew
|colspan="3"| ]=] .. map.lat_skew .. '\n' .. [=[
|-]=]
end
if map.mark then
retval = retval .. '\n' .. [=[
! mark
|colspan="3"| <code>[[:File:]=] .. map.mark .. '|' .. map.mark .. [=[]]</code>
|-]=]
end
if map.marksize then
retval = retval .. '\n' .. [=[
! marksize
|colspan="3"| ]=] .. map.marksize .. '\n' .. [=[
|-]=]
end
retval = retval .. '\n|}'
return retval
end
return p
6de577a38f924784dc5d0f48ae864c6199f783ed
Template:Wikipedia glossary
10
147
343
2018-12-29T19:34:03Z
wikipedia>AlanM1
0
Undid revision 875859439 by [[Special:Contributions/2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1|2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1]] ([[User talk:2601:5CB:C100:7F81:A918:9ACD:1FCC:CEE1|talk]]) Rv apparent test
wikitext
text/x-wiki
{{Side box
| imageright = [[File:Wiki letter w.svg]]
| text = This page is referenced in the {{#if:{{{1|}}}
|Wikipedia Glossary, under [[Wikipedia:Glossary#{{{1}}}|{{{1}}}]]
|{{nowrap|[[Wikipedia:Glossary|Wikipedia Glossary]]}}
}}.
| class = plainlinks
}}<includeonly>{{#switch:{{NAMESPACE}}
|Help|Wikipedia={{#if:{{{nocat|{{{category|}}}}}}||[[Category:Wikipedia glossary items]]}}
|User={{#ifeq:{{YesNo-No|{{{category}}}}}|yes|[[Category:Wikipedia glossary items]]}}
|#default=
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
4287695cf50f15b3de9f5acbe926e13d83cb1ef4
Module:Color contrast
828
148
1360
2019-01-06T22:38:25Z
wikipedia>Johnuniq
0
fix unintended color2lum global error which is causing errors; clean whitespace
Scribunto
text/plain
--
-- This module implements
-- {{Color contrast ratio}}
-- {{Greater color contrast ratio}}
-- {{ColorToLum}}
-- {{RGBColorToLum}}
--
local p = {}
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
local function sRGB (v)
if (v <= 0.03928) then
v = v / 12.92
else
v = math.pow((v+0.055)/1.055, 2.4)
end
return v
end
local function rgbdec2lum(R, G, B)
if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
else
return ''
end
end
local function hsl2lum(h, s, l)
if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
local c = (1 - math.abs(2*l - 1))*s
local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
local m = l - c/2
local r, g, b = m, m, m
if( 0 <= h and h < 60 ) then
r = r + c
g = g + x
elseif( 60 <= h and h < 120 ) then
r = r + x
g = g + c
elseif( 120 <= h and h < 180 ) then
g = g + c
b = b + x
elseif( 180 <= h and h < 240 ) then
g = g + x
b = b + c
elseif( 240 <= h and h < 300 ) then
r = r + x
b = b + c
elseif( 300 <= h and h < 360 ) then
r = r + c
b = b + x
end
return rgbdec2lum(255*r, 255*g, 255*b)
else
return ''
end
end
local function color2lum(c)
if (c == nil) then
return ''
end
-- html '#' entity
c = c:gsub("#", "#")
-- whitespace
c = c:match( '^%s*(.-)[%s;]*$' )
-- unstrip nowiki strip markers
c = mw.text.unstripNoWiki(c)
-- lowercase
c = c:lower()
-- first try to look it up
local L = HTMLcolor[c]
if (L ~= nil) then
return L
end
-- convert from hsl
if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)
end
-- convert from rgb
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$')
return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))
end
-- convert from rgb percent
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)
end
-- remove leading # (if there is one) and whitespace
c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$')
-- split into rgb
local cs = mw.text.split(c or '', '')
if( #cs == 6 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2])
local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4])
local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6])
return rgbdec2lum(R, G, B)
elseif ( #cs == 3 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1])
local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2])
local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3])
return rgbdec2lum(R, G, B)
end
-- failure, return blank
return ''
end
-- This exports the function for use in other modules.
-- The colour is passed as a string.
function p._lum(color)
return color2lum(color)
end
function p._greatercontrast(args)
local bias = tonumber(args['bias'] or '0') or 0
local css = (args['css'] and args['css'] ~= '') and true or false
local v1 = color2lum(args[1] or '')
local c2 = args[2] or '#FFFFFF'
local v2 = color2lum(c2)
local c3 = args[3] or '#000000'
local v3 = color2lum(c3)
local ratio1 = -1;
local ratio2 = -1;
if (type(v1) == 'number' and type(v2) == 'number') then
ratio1 = (v2 + 0.05)/(v1 + 0.05)
ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1
end
if (type(v1) == 'number' and type(v3) == 'number') then
ratio2 = (v3 + 0.05)/(v1 + 0.05)
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
end
if css then
local c1 = args[1] or ''
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c1 = '#' .. c1
end
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c2 = '#' .. c2
end
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c3 = '#' .. c3
end
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
end
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
end
function p._ratio(args)
local v1 = color2lum(args[1])
local v2 = color2lum(args[2])
if (type(v1) == 'number' and type(v2) == 'number') then
-- v1 should be the brighter of the two.
if v2 > v1 then
v1, v2 = v2, v1
end
return (v1 + 0.05)/(v2 + 0.05)
else
return args['error'] or '?'
end
end
function p._styleratio(args)
local style = (args[1] or ''):lower()
local bg, fg = 'white', 'black'
local lum_bg, lum_fg = 1, 0
if args[2] then
local lum = color2lum(args[2])
if lum ~= '' then bg, lum_bg = args[2], lum end
end
if args[3] then
local lum = color2lum(args[3])
if lum ~= '' then fg, lum_fg = args[3], lum end
end
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '#', '#'), ';')
for k = 1,#slist do
local s = slist[k]
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
k = k or ''
v = v or ''
if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_bg = v, lum end
elseif (k:match('^[%s]*(color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_fg = v, lum end
end
end
if lum_bg > lum_fg then
return (lum_bg + 0.05)/(lum_fg + 0.05)
else
return (lum_fg + 0.05)/(lum_bg + 0.05)
end
end
--[[
Use {{#invoke:Color contrast|somecolor}} directly or
{{#invoke:Color contrast}} from a wrapper template.
Parameters:
-- |1= — required; A color to check.
--]]
function p.lum(frame)
local color = frame.args[1] or frame:getParent().args[1]
return p._lum(color)
end
function p.ratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._ratio(args)
end
function p.styleratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._styleratio(args)
end
function p.greatercontrast(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._greatercontrast(args)
end
return p
1e399769117591366a63f62996c9a407077cc711
Template:FULLBASEPAGENAME
10
1269
2603
2019-01-07T15:38:13Z
w>Bsherr
0
bypassing redirect, removing excess white space
wikitext
text/x-wiki
{{#if: {{Ns has subpages | {{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}} }}
| {{#if: {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}}
| {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}}
| {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
}}
| {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}
}}<noinclude>
{{documentation}}
</noinclude>
a21f32ffc20eab6d41631b3fb8af4c63e153a6c3
Template:Death date and age
10
1355
2690
2019-01-07T22:52:46Z
w>Johnuniq
0
update from sandbox: use [[Module:Age]] for better checking of dates and more consistent results
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:age|death_date_and_age}}</includeonly><noinclude>{{documentation}}</noinclude>
ea101f2e404c144901a5394890ee3b892075c848
Template:Country data Portugal
10
1196
2525
2019-01-12T11:28:17Z
w>Cabayi
0
Per [[Special:Permalink/878009113#Template-protected edit request on 7 January 2019|request]] by [[User:Havsjö]]
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Portugal
| flag alias = Flag of Portugal.svg
| flag alias-1248 = PortugueseFlag1248.svg
| flag alias-1385 = PortugueseFlag1385.svg
| flag alias-1495 = Flag Portugal (1495).svg
| flag alias-1578 = Flag Portugal (1578).svg
| flag alias-1640 = Flag Portugal (1640).svg
| flag alias-1707 = Flag Portugal (1707).svg
| flag alias-1750 = Flag of Portugal (1750).svg
| flag alias-1816 = Flag of the United Kingdom of Portugal, Brazil, and the Algarves.svg
| flag alias-1830 = Flag Portugal (1830).svg
| flag alias-civil = Flag Portugal sea (1830).svg
| flag alias-air force=Portugal Air force fin flash.svg
| flag alias-army = Military flag of Portugal.svg
| link alias-air force = Portuguese Air Force
| link alias-army = Portuguese Army
| link alias-naval = Portuguese Navy
| flag alias-navy=Naval Jack of Portugal.svg
| link alias-navy = Portuguese Navy
| flag alias-marines=Naval Jack of Portugal.svg
| link alias-marines=Portuguese Marine Corps
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1248
| var2 = 1385
| var3 = 1495
| var4 = 1578
| var5 = 1640
| var6 = 1707
| var7 = 1750
| var8 = 1816
| var9 = 1830
| var13 = civil
| redir1 = PRT
| redir2 = POR
| related1 = Portuguese Empire
</noinclude>
}}
208ba0708db45e46bb27b8b9f46d8c0b7b4bb9ed
Module:Color contrast/colors
828
150
1362
2019-01-24T12:30:11Z
wikipedia>Galobtter
0
Changed protection level for "[[Module:Color contrast/colors]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
return {
aliceblue = 0.92880068253475,
antiquewhite = 0.84646951707754,
aqua = 0.7874,
aquamarine = 0.8078549208338,
azure = 0.97265264954166,
beige = 0.8988459998705,
bisque = 0.80732327372979,
black = 0,
blanchedalmond = 0.85084439608156,
blue = 0.0722,
blueviolet = 0.12622014321946,
brown = 0.098224287876511,
burlywood = 0.51559844533893,
cadetblue = 0.29424681085422,
chartreuse = 0.76032025902623,
chocolate = 0.23898526114557,
coral = 0.37017930872924,
cornflowerblue = 0.30318641994179,
cornsilk = 0.93562110372965,
crimson = 0.16042199953026,
cyan = 0.7874,
darkblue = 0.018640801980939,
darkcyan = 0.20329317839046,
darkgoldenrod = 0.27264703559993,
darkgray = 0.39675523072563,
darkgreen = 0.091143429047575,
darkgrey = 0.39675523072563,
darkkhaki = 0.45747326349994,
darkmagenta = 0.07353047651207,
darkolivegreen = 0.12651920884889,
darkorange = 0.40016167026524,
darkorchid = 0.13413142174857,
darkred = 0.054889674531132,
darksalmon = 0.40541471563381,
darkseagreen = 0.43789249325969,
darkslateblue = 0.065792846227988,
darkslategray = 0.067608151928044,
darkslategrey = 0.067608151928044,
darkturquoise = 0.4874606277449,
darkviolet = 0.10999048339343,
deeppink = 0.23866895828276,
deepskyblue = 0.44481603395575,
dimgray = 0.14126329114027,
dimgrey = 0.14126329114027,
dodgerblue = 0.27442536991456,
firebrick = 0.10724525535015,
floralwhite = 0.95922484825004,
forestgreen = 0.18920812076002,
fuchsia = 0.2848,
gainsboro = 0.71569350050648,
ghostwhite = 0.94311261886323,
gold = 0.69860877428159,
goldenrod = 0.41919977809569,
gray = 0.2158605001139,
green = 0.15438342968146,
greenyellow = 0.80609472611453,
grey = 0.2158605001139,
honeydew = 0.96336535554782,
hotpink = 0.34658438169715,
indianred = 0.21406134963884,
indigo = 0.03107561486337,
ivory = 0.99071270600615,
khaki = 0.77012343394121,
lavender = 0.80318750514521,
lavenderblush = 0.90172748631046,
lawngreen = 0.73905893124963,
lemonchiffon = 0.94038992245622,
lightblue = 0.63709141280807,
lightcoral = 0.35522120733135,
lightcyan = 0.94587293494829,
lightgoldenrodyellow = 0.93348351018297,
lightgray = 0.65140563741982,
lightgreen = 0.69091979956865,
lightgrey = 0.65140563741982,
lightpink = 0.58566152734898,
lightsalmon = 0.4780675225206,
lightseagreen = 0.35050145117042,
lightskyblue = 0.56195637618331,
lightslategray = 0.23830165007287,
lightslategrey = 0.23830165007287,
lightsteelblue = 0.53983888284666,
lightyellow = 0.98161818392882,
lime = 0.7152,
limegreen = 0.44571042246098,
linen = 0.88357340984379,
magenta = 0.2848,
maroon = 0.045891942324215,
mediumaquamarine = 0.49389703310801,
mediumblue = 0.044077780212328,
mediumorchid = 0.21639251153773,
mediumpurple = 0.22905858091648,
mediumseagreen = 0.34393112338131,
mediumslateblue = 0.20284629471622,
mediumspringgreen = 0.70704308194184,
mediumturquoise = 0.5133827926448,
mediumvioletred = 0.14371899849357,
midnightblue = 0.02071786635086,
mintcream = 0.97834604947588,
mistyrose = 0.82183047859185,
moccasin = 0.80083000991567,
navajowhite = 0.76519682342785,
navy = 0.015585128108224,
oldlace = 0.91900633405549,
olive = 0.20027537200568,
olivedrab = 0.22593150951929,
orange = 0.4817026703631,
orangered = 0.25516243753416,
orchid = 0.31348806761439,
palegoldenrod = 0.78792647887614,
palegreen = 0.77936759006353,
paleturquoise = 0.76436077921714,
palevioletred = 0.28754994117889,
papayawhip = 0.87797100199835,
peachpuff = 0.74905589878251,
peru = 0.30113074877936,
pink = 0.63271070702466,
plum = 0.45734221587969,
powderblue = 0.68254586500605,
purple = 0.061477070432439,
rebeccapurple = 0.07492341159447,
red = 0.2126,
rosybrown = 0.32319457649407,
royalblue = 0.16663210743188,
saddlebrown = 0.097922285020521,
salmon = 0.36977241527596,
sandybrown = 0.46628543696283,
seagreen = 0.19734199706275,
seashell = 0.92737862206922,
sienna = 0.13697631337098,
silver = 0.52711512570581,
skyblue = 0.55291668518184,
slateblue = 0.14784278062136,
slategray = 0.20896704076536,
slategrey = 0.20896704076536,
snow = 0.96533341834849,
springgreen = 0.73052306068529,
steelblue = 0.20562642207625,
tan = 0.48237604163921,
teal = 0.16996855778968,
thistle = 0.56818401093733,
tomato = 0.30638612719415,
turquoise = 0.5895536427578,
violet = 0.40315452986676,
wheat = 0.74909702820482,
white = 1,
whitesmoke = 0.91309865179342,
yellow = 0.9278,
yellowgreen = 0.50762957208707,
}
6ae47fdb24de4eed5ec26d203faf5341a388987b
Module:Navbox with collapsible groups
828
1542
2877
2019-01-24T21:07:28Z
MusikAnimal
4
Protected "[[Module:Navbox with collapsible groups]]": [[WP:High-risk templates|High-risk Lua module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- This module implements {{Navbox with collapsible groups}}
local q = {}
local Navbox = require('Module:Navbox')
-- helper functions
local function concatstrings(s)
local r = table.concat(s, '')
if r:match('^%s*$') then r = nil end
return r
end
local function concatstyles(s)
local r = table.concat(s, ';')
while r:match(';%s*;') do
r = mw.ustring.gsub(r, ';%s*;', ';')
end
if r:match('^%s*;%s*$') then r = nil end
return r
end
function q._navbox(pargs)
-- table for args passed to navbox
local targs = {}
-- process args
local passthrough = {
['name']=true,['navbar']=true,['state']=true,['border']=true,
['bodyclass']=true,['groupclass']=true,['listclass']=true,
['style']=true,['bodystyle']=true,['basestyle']=true,
['title']=true,['titleclass']=true,['titlestyle']=true,
['above']=true,['aboveclass']=true,['abovestyle']=true,
['below']=true,['belowclass']=true,['belowstyle']=true,
['image']=true,['imageclass']=true,['imagestyle']=true,
['imageleft']=true,['imageleftstyle']=true
}
for k,v in pairs(pargs) do
if k and type(k) == 'string' then
if passthrough[k] then
targs[k] = v
elseif (k:match('^list[0-9][0-9]*$')
or k:match('^content[0-9][0-9]*$') ) then
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
if (targs['list' .. n] == nil and pargs['group' .. n] == nil
and pargs['sect' .. n] == nil and pargs['section' .. n] == nil) then
targs['list' .. n] = concatstrings(
{pargs['list' .. n] or '', pargs['content' .. n] or ''})
end
elseif (k:match('^group[0-9][0-9]*$')
or k:match('^sect[0-9][0-9]*$')
or k:match('^section[0-9][0-9]*$') ) then
local n = mw.ustring.gsub(k, '^[a-z]*([0-9]*)$', '%1')
if targs['list' .. n] == nil then
local titlestyle = concatstyles(
{pargs['groupstyle'] or '',pargs['secttitlestyle'] or '',
pargs['group' .. n .. 'style'] or '',
pargs['section' .. n ..'titlestyle'] or ''})
local liststyle = concatstyles(
{pargs['liststyle'] or '', pargs['contentstyle'] or '',
pargs['list' .. n .. 'style'] or '',
pargs['content' .. n .. 'style'] or ''})
local title = concatstrings(
{pargs['group' .. n] or '',
pargs['sect' .. n] or '',
pargs['section' .. n] or ''})
local list = concatstrings(
{pargs['list' .. n] or '',
pargs['content' .. n] or ''})
local state = (pargs['abbr' .. n] and pargs['abbr' .. n] == pargs['selected'])
and 'uncollapsed' or pargs['state' .. n] or 'collapsed'
targs['list' .. n] = Navbox._navbox(
{'child', navbar = 'plain', state = state,
basestyle = pargs['basestyle'],
title = title, titlestyle = titlestyle,
list1 = list, liststyle = liststyle,
listclass = pargs['list' .. n .. 'class'],
image = pargs['image' .. n],
imageleft = pargs['imageleft' .. n],
listpadding = pargs['listpadding']})
end
end
end
end
-- ordering of style and bodystyle
targs['style'] = concatstyles({targs['style'] or '', targs['bodystyle'] or ''})
targs['bodystyle'] = nil
-- child or subgroup
if targs['border'] == nil then targs['border'] = pargs[1] end
return Navbox._navbox(targs)
end
function q.navbox(frame)
local pargs = require('Module:Arguments').getArgs(frame, {wrappers = {'Template:Navbox with collapsible groups'}})
-- Read the arguments in the order they'll be output in, to make references number in the right order.
local _
_ = pargs.title
_ = pargs.above
for i = 1, 20 do
_ = pargs["group" .. tostring(i)]
_ = pargs["list" .. tostring(i)]
end
_ = pargs.below
return q._navbox(pargs)
end
return q
2864676f591b877887a32d4052e2f3a2c90c8d97
Module:Item
828
583
1314
2019-01-24T21:24:24Z
MusikAnimal
4
Protected "[[Module:Item]]": [[Wikipedia:High-risk templates|High-risk module]] ([Edit=Require autoconfirmed or confirmed access] (indefinite))
Scribunto
text/plain
local p = {}
local function escape(str)
return str:gsub("[|\\]", function (c) return string.format("\\%03d", c:byte()) end)
end
local function unescape(str)
return str:gsub("\\(%d%d%d)", function (d) return string.char(d) end)
end
-- Implements [[Template:Item]]
function p.pack(frame)
local parent = frame:getParent()
local result = ''
for key, value in pairs(parent.args) do
result = result .. "|" .. escape(tostring(key)) .. "|" .. escape(value)
end
return result .. "|";
end
local function unpack(str)
local result = { }
for key, value in str:gfind("|([^|]*)|([^|]*)") do
result[unescape(key)] = unescape(value)
end
return result
end
-- Implements [[Template:Component]]
function p.component(frame)
return unpack(frame.args[1])[frame.args[2]]
end
local function getItems(frame)
return frame:getParent().args
end
local function invert(tbl)
local result = { }
for key, value in pairs(tbl) do
result[value] = key
end
return result
end
-- Add args into item as appropriate (see [[Template:Format item]])
local function addArgs(
item, -- unpacked item to modify
args, -- arguments for adding into item
ignore, -- pass in invert{keys to ignore}
shift -- for numbered arguments, args[key+shift] is assigned to item[key]
-- returns: item
)
for key, value in pairs(args) do
if not ignore[key] then
local _, _, paramKey = string.find(key, "^param (.*)")
local _, _, importantKey = string.find(key, "^important (.*)")
paramKey = paramKey or importantKey or key
if shift and type(paramKey) == "number" then
paramKey = paramKey - shift
if paramKey < 1 then paramKey = nil end
end
if paramKey and (importantKey or item[paramKey] == nil) then
item[paramKey] = value
end
end
end
return item
end
-- Implements [[Template:Format item]]
function p.format(frame)
local args = frame:getParent().args
local ignore = invert{ "template", "item" }
local templateArgs = addArgs(unpack(args.item), args, ignore)
return frame:expandTemplate{ title = args.template, args = templateArgs }
end
-- See [[Template:Item#Format each item using a template]]
function p.each(frame)
local args = frame.args
local items = getItems(frame)
local separator = args[1] or ""
local prepend = args[2] or ""
local append = args[3] or ""
local ignore = invert{ "template" }
local shift = 3
local result = ""
for i, item in ipairs(items) do
local templateArgs = addArgs(unpack(item), args, ignore, shift)
result = result .. prepend .. frame:expandTemplate{ title = args.template, args = templateArgs } .. append
if items[i + 1] then
result = result .. separator
end
end
return result
end
-- See [[Template:Item#Gather given parameter from all items]]
function p.gather(frame)
local args = frame.args
local items = getItems(frame)
local parameter = args.parameter or "1"
local templateArgs = { }
for i, item in ipairs(items) do
templateArgs[i] = unpack(item)[parameter]
end
return frame:expandTemplate{ title = args.template, args = templateArgs }
end
return p
46e61b1549d18c301bcc79ecd120a0aa790f8894
Module:In5
828
1323
2658
2019-01-24T21:24:24Z
MusikAnimal
4
Protected "[[Module:In5]]": [[Wikipedia:High-risk templates|High-risk module]] ([Edit=Require autoconfirmed or confirmed access] (indefinite))
Scribunto
text/plain
-- This module implements {{in5}}.
local p = {}
function p.in5(frame)
local indent = frame.args[1]
-- Trim whitespace and convert to number. Default to 5 if not present,
-- as per the template title.
indent = tonumber( mw.text.trim(indent) ) or 5
-- Round down to nearest integer. Decimal values produce funky results
-- from the original template, but there's no need for us to replicate that.
indent = math.floor( indent )
-- Don't output anything for zero or less. Again, there was some funky output
-- here for negatives, but now we're in Lua we should use sane defaults.
if indent <= 0 then
return
end
local base = ' '
local modulo = ' '
--[[
Indent values and the corresponding values for base and modulo:
indent base modulo
1 0 1
2 0 2
3 1 1
4 1 2
5 2 1
6 2 2
7 3 1
8 3 2
9 4 1
10 4 2
]]
local baseNum = math.floor( (indent - 1) / 2 )
local modNum = math.fmod( indent - 1 , 2 ) + 1
return mw.ustring.rep( base, baseNum) .. mw.ustring.rep( modulo, modNum )
end
return p
6fe4f26677b1aa215e77c4071bf60ff3ec286466
Module:WikidataIB/nolinks
828
1232
2565
2019-01-31T16:27:33Z
w>RexxS
0
add abbreviations UK and USA
Scribunto
text/plain
local p ={}
--[[
The values here are the English sitelinks for items that should not be linked.
These 36 are not definitive and may be altered to suit.
--]]
p.items = {
"Australia",
"Austria",
"Belgium",
"Canada",
"China",
"Denmark",
"England",
"France",
"Germany",
"Greece",
"Hungary",
"Iceland",
"India",
"Republic of Ireland",
"Israel",
"Italy",
"Jamaica",
"Japan",
"Luxembourg",
"Mexico",
"Netherlands",
"New Zealand",
"Northern Ireland",
"Norway",
"Poland",
"Portugal",
"Russia",
"Scotland",
"South Africa",
"Spain",
"Sweden",
"Switzerland",
"Turkey",
"United Kingdom",
"UK",
"United States",
"USA",
"Wales",
}
--[[
This provides a convenient way to create a test whether an item is on the list.
--]]
p.itemsindex = {}
for i, v in ipairs(p.items) do
p.itemsindex[v] = true
end
return p
d42a1e1cb5d411ab1b578dc0d36aa0266f32b2d6
Module:Location map/data/USA
828
1681
3120
2019-02-10T18:47:41Z
wikipedia>Zyxw
0
update name used in automatic captions
Scribunto
text/plain
return {
name = 'the United States',
x = '50.0 + 124.03149777329222 * ((1.9694462586094064-($1 * pi / 180)) * sin(0.6010514667026994 * ($2 + 96) * pi / 180))',
y = '50.0 + 1.6155950752393982 * 124.03149777329222 * ( 0.02613325650382181 - (1.3236744353715044 - (1.9694462586094064 - ($1 * pi / 180)) * cos(0.6010514667026994 * ($2 + 96) * pi / 180)))',
image = 'Usa edcp location map.svg',
image1 = 'Usa edcp relief location map.png'
}
d2c98c333c13b7dc164dbaccae5a3365c15aa096
Template:Mbox templates (small)
10
1310
2645
2019-02-15T16:20:44Z
w>Frietjes
0
wikitext
text/x-wiki
<includeonly>{{Infobox
| bodyclass = nowrap
| bodystyle = width:auto;padding-bottom:0.6em;line-height:1.25em;
| abovestyle = font-size:inherit;
| above = Message box<br/>meta-templates
| labelstyle = margin:0;padding:0 0.3em 0;text-align:center;font-weight:normal;
| datastyle = margin:0;padding:0 0.5em 0 0;
| label1 = ''template'' | data1 = ''context''
| label2 = {{tl|Ambox}} | data2 = article
| label3 = {{tl|Cmbox}} | data3 = category
| label4 = {{tl|Imbox}} | data4 = image
| label5 = {{tl|Tmbox}} | data5 = talk
| label6 = {{tl|Fmbox}} | data6 = footer / header
| label7 = {{tl|Ombox}} | data7 = other pages
| label8 = {{tl|Mbox}} | data8 = auto-detect
| label9 = {{tl|Asbox}} | data9 = article stub
| label10 = {{tl|Dmbox}} | data10 = disambiguation
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
0b3ecac37228509c27b7b87ac29255ffde9ae20b
Template:Tlm
10
1673
3101
2019-02-23T03:01:01Z
Pppery
6
Module renamed
wikitext
text/x-wiki
{{#invoke:tlm|format_link}}<noinclude>{{documentation}}
4ad7a6ab500f2a6f21da459c329c828b24999af4
Module:Engvar
828
1528
2863
2019-02-25T04:25:52Z
w>JJMC89
0
Changed protection level for "[[Module:Engvar]]": [[WP:High-risk templates|Highly visible module]]: match template ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- This module implements Template:Engvar.
-- Template:Engvar is to be build into the template (like an infobox), with default & variant spellings defined.
-- That template should also allow parameter '|engvar=' for the editor (article page).
-- The module/template Engvar then returns the spelling variant as is set in that article (for example '|engvar=en-GB').
-- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word.
local p = {}
local getArgs = require('Module:Arguments').getArgs
local gsub = string.gsub
local lower = string.lower
local upper = string.upper
function p.variants(frame)
local args = getArgs(frame)
return p._variants(args)
end
function p._variants(args)
local returnWord = nil
local defaultWord = args.defaultWord or ''
if args.engvar == nil then
-- Nothing to look for; use defaultWord right away
returnWord = defaultWord
elseif args.defaultLang == gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO) then
-- By the defaultLang, the defaultWord is asked
returnWord = defaultWord
else
returnWord = args[gsub(lower(args.engvar), '^en%-(%w%w)$', formatISO)]
end
if returnWord == nil then
-- No hit so far. Search by words in the engvar entered, checking the list
local useLang = engvarLang(args.engvar)
if useLang == nil then
returnWord = defaultWord .. addMaintCat(args)
else
returnWord = args[useLang] or defaultWord
end
end
return returnWord
end
-- Returns arguments and intermediate result. Plus the template result, in front.
function p.explain(frame)
local args = getArgs(frame)
local ret = {}
table.insert(ret, '\n\n: Settings:')
table.insert(ret, 'defaultWord=' .. (args.defaultWord or '') .. '; ')
table.insert(ret, 'defaultLang=' .. (args.defaultLang or '') .. '; ')
table.insert(ret, 'engvarCat=' .. (args.engvarCat or '[default:yes]') .. '; ')
table.insert(ret, 'engvarCatSort=' .. (args.engvarCatSort or ''))
table.insert(ret, '\n\n: engvar=' .. (args.engvar or '') .. ' [input] ')
local useLang = engvarLang(args.engvar or '')
table.insert(ret, ' => Engvar code [used]: >' .. (useLang or '') .. '<.')
for k, v in pairs(args) do
if k == 'en-UK' then
table.insert(ret, k .. ' ? better: use "en-GB"; ')
elseif k == 'en-SA' then
table.insert(ret, k .. ' ? misleading; use "en-ZA"; ')
end
if k == 'defaultWord' then
elseif k == 'defaultLang' then
elseif k == 'engvar' then
elseif k == 'engvarcat' then
elseif k == gsub(lower(k), '^en%-(%w%w)$', formatISO) then
table.insert(ret, k .. '=' .. v .. '; ')
else
table.insert(ret, k .. ' [not standard:]=' .. v .. '; ')
end
end
return (args.engvar or '') .. ' => ' .. p._variants(args) .. table.concat(ret, ' ')
end
-- Turn a match into pattern 'en-XX'
function formatISO(country)
return ('en-' .. upper(country) or '')
end
function engvarLang(searchEngvar)
-- Search verbose language identifiers to ISO-format 'en-XX'
-- Assumed: not a blank string '' to search
local match = string.match
searchEngvar = gsub(searchEngvar, '^%s*en%-(.*)', '%1') -- rm any opening 'en-'.
searchEngvar = gsub(lower(searchEngvar), '[%s%(%)%-]', '') -- To lc, remove all: (, ) , ws, hyphen.
local useLang
--Special codes
if match(searchEngvar, 'oxford')
or searchEngvar == 'oed' then
useLang = 'en-OED' -- 'oxford' to catch before anyting 'british'
elseif match(searchEngvar, 'iupac') then
useLang = 'en-IUPAC' -- chemistry
-- Very often used
elseif match(searchEngvar, 'british')
or searchEngvar == 'uk'
or searchEngvar == 'gbr' then
useLang = 'en-GB'
elseif searchEngvar == 'us'
or match(searchEngvar, 'unitedstates')
or searchEngvar == 'american'
or searchEngvar == 'usa' then
useLang = 'en-US'
elseif match(searchEngvar, 'australia')
or searchEngvar == 'aus' then
useLang = 'en-AU'
-- Often used
elseif match(searchEngvar, 'india')
or searchEngvar == 'ind' then
useLang = 'en-IN'
elseif searchEngvar == 'newzealand'
or searchEngvar == 'nzl' then
useLang = 'en-NZ'
elseif match(searchEngvar, 'southafrica') -- not: en-SA
or searchEngvar == 'zaf' then
useLang = 'en-ZA'
elseif searchEngvar == 'canada'
or searchEngvar == 'can' then
useLang = 'en-CA'
elseif match(searchEngvar, 'hiberno')
or match(searchEngvar, 'ireland')
or match(searchEngvar, 'irish')
or searchEngvar == 'irl' then
useLang = 'en-EI'
elseif match(searchEngvar, 'hongkong')
or searchEngvar == 'hkg' then
useLang = 'en-HK'
-- Less often used
elseif match(searchEngvar, 'jamaica')
or searchEngvar == 'jam' then
useLang = 'en-JM'
elseif match(searchEngvar, 'malawi')
or searchEngvar == 'mwi' then
useLang = 'en-MW'
elseif match(searchEngvar, 'nigeria')
or searchEngvar == 'nga' then
useLang = 'en-NG'
elseif match(searchEngvar, 'pakistan')
or searchEngvar == 'pak' then
useLang = 'en-PK'
elseif match(searchEngvar, 'philippine')
or searchEngvar == 'phl' then
useLang = 'en-PH'
elseif match(searchEngvar, 'scotland')
or match(searchEngvar, 'scottish')
or searchEngvar == 'sco' then
useLang = 'en-SCO' -- Has no alpha-2 code; not 'scotch'
elseif match(searchEngvar, 'singapore')
or searchEngvar == 'sgp' then
useLang = 'en-SG'
elseif match(searchEngvar, 'trinidad')
or match(searchEngvar, 'tobago')
or searchEngvar == 'tto' then
useLang = 'en-TT'
else
useLang = nil
end
return useLang
end
function addMaintCat(args)
local catMaintenance
if args.engvarCat == 'no' then
else
local title = mw.title.getCurrentTitle()
if title:inNamespaces(0) then -- 0=main, 10=templ, 828=module
if args.engvarCatSort then
catMaintenance = '|' .. args.engvarCatSort .. ', ' .. title.text
end
catMaintenance = '[[Category:Articles using an unknown Template:Engvar option' .. (catMaintenance or '') .. ']]'
end
end
return catMaintenance or ''
end
return p
c67c97cf2bc643d26781b77fd4b0d63383ab47a8
Module:Page
828
180
413
2019-02-25T22:06:47Z
MusikAnimal
4
Changed protection level for "[[Module:Page]]": [[Wikipedia:High-risk templates|High-risk template or module]]; used in system message ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
local callAssert = require('Module:CallAssert')
local function main(frame, field)
local args, pargs = frame.args, ( frame:getParent() or {} ).args or {}
local makeTitle=args.makeTitle or pargs.makeTitle
local namespace=args.namespace or pargs.namespace or ""
local fragment=args.fragment or pargs.fragment or ""
local interwiki=args.interwiki or pargs.interwiki or ""
local page=args.page or args[1] or pargs.page or pargs[1] or ""
local id= tonumber( args.id or pargs.id )
local pn = {}
local title -- holds the result of the mw.title.xxx call
for i = 1,9 do pn[i] = args['p'..i] or pargs['p'..i] end
if not id and not mw.ustring.match( page, '%S' ) then page = nil end
if id then
title = callAssert(mw.title.new, 'mw.title.new', id)
elseif not page then
title = callAssert(mw.title.getCurrentTitle, 'getCurrentTitle')
elseif makeTitle then
title = callAssert(mw.title.makeTitle, 'makeTitle', namespace, page, fragment, interwiki)
else
title = callAssert(mw.title.new, 'mw.title.new', page, namespace)
end
local result = title[field]
if type(result) == "function" then
result = result(title, unpack(pn))
end
return tostring(result or "")
end
-- handle all errors in main
main = require('Module:Protect')(main)
local p = {}
-- main function does all the work
local meta = {}
function meta.__index(self, key)
return function(frame)
return main(frame, key)
end
end
setmetatable(p, meta)
function p.getContent(frame)
local args, pargs = frame.args, ( frame:getParent() or {} ).args or {}
local fmt = args.as or pargs.as or "pre"
local text = main(frame, "getContent")
fmt = mw.text.split( fmt, ", ?" )
for _, how in ipairs( fmt ) do
if how == "pre" then
text = table.concat{ "<pre>", text, "</pre>" }
elseif how == "expand" then
text = frame:preprocess(text)
elseif how == "nowiki" then
text = mw.text.nowiki(text)
end
end
return text
end
return p
9b70f0ff53b1c20fd8667c9f3d80167653279cc4
Template:Stub
10
754
1683
2019-02-26T06:07:29Z
wikipedia>Grutness
0
wikitext
text/x-wiki
{{asbox
| image =
| pix =
| subject =
| article = article
| qualifier =
| category = Stubs
| tempsort = no
| lowercase = y
| name = Template:Stub
}}
c8372a9cd3ab0d8ef30c901442b93e0675510604
Template:Collapsible lists option
10
854
1890
2019-02-28T00:22:15Z
wikipedia>Bsherr
0
replacing PAGENAMEBASE with BASEPAGENAME
wikitext
text/x-wiki
<div style="padding-right:3.6em<!--i.e. around three times Wikipedia's standard indent width, to keep the following away from e.g. template/s on righthand side of page-->;">
This template includes collapsible lists.
<!------------ (to show all lists) -------------->
: {{Unbulleted list
|style=padding-bottom:0.3em; |list_style=line-height:1.5em;
| 1 = {{blue|•}} To set it to display all lists when it appears (i.e. all lists expanded), use:
| 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}all}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}all}}</code></span>{{spaces|2}}(i.e. omitting "<code>expanded{{=}}</code>").
}}
<!------------ (to show one list) --------------->
: {{Unbulleted list
|style=padding-bottom:0.3em; |list_style=line-height:1.5em;
| 1 = {{blue|•}} To set it to display one particular list while keeping the remainder collapsed (i.e. hidden apart from their headings), use:
| 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}''listname''}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}''listname''}}</code></span>
| 3 = …where ''listname'' is one of the following (do not include any quotemarks):
|item4_style=;padding:0.2em 0 0.3em 1.4em;
| 4 = <kbd style="border: none; background: transparent;">{{{listnames<includeonly>|{{color|red|''Required parameter "listnames" missing!''}}</includeonly>}}} </kbd>
| 5 = {{#if:{{{example<includeonly>|</includeonly>}}}
<!--------(optional example)--------->
| <noinclude>{{small|[''optional:''{{thinsp}}]}}<br /></noinclude><!--
-->For example, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}{{{example}}}}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}{{{example}}}}}</code></span>
}} }}<!--
<!------------ (optional default) --------------->
{{#if:{{{default<includeonly>|</includeonly>}}} |
* {{#ifeq:{{{default}}}|all |All lists have
| <noinclude>{{small|[''optional:''{{thinsp}}]}} [All lists have]{{\}}[The list named '''''default''''' has]</noinclude><!--
--><includeonly>The list named '''<code>{{{default}}}</code>''' has</includeonly>}} been set to be shown when the template appears.
}}
</div><noinclude>{{Documentation}}</noinclude>
637dd404169257c607f658e1515b2824edef2441
Template:TOC limit/styles.css
10
979
2152
2019-03-03T23:36:55Z
wikipedia>Pppery
0
Adding protection template
sanitized-css
text/css
/* {{pp-template}}
Allow limiting of which header levels are shown in a TOC;
<div class="toclimit-3">, for instance, will limit to
showing ==headings== and ===headings=== but no further
(as long as there are no =headings= on the page, which
there shouldn't be according to the MoS). */
.toclimit-2 .toclevel-1 ul,
.toclimit-3 .toclevel-2 ul,
.toclimit-4 .toclevel-3 ul,
.toclimit-5 .toclevel-4 ul,
.toclimit-6 .toclevel-5 ul,
.toclimit-7 .toclevel-6 ul {
display: none;
}
6bdcbe092c6376237fc1740ef6832611c1f3c8fa
Template:Nobold/styles.css
10
15
25
2019-03-03T23:43:41Z
Pppery
6
Adding protection template
text
text/plain
/* {{pp-template}} */
/* Styling for Template:Nobold */
.nobold {
font-weight: normal;
}
83e5f0adacf8c7984251f1fd9d11ed82ebaadf03
Template:Noitalic/styles.css
10
1544
2879
2019-03-03T23:58:52Z
Pppery
6
Adding protection template
sanitized-css
text/css
/* {{pp-template}} */
/* Styling for Template:Noitalic */
.noitalic {
font-style: normal;
}
60f12a58153e983e13c50327a57398edc337e9d0
Template:Mono/styles.css
10
463
1352
2019-03-04T00:01:15Z
Pppery
6
Adding protection template
sanitized-css
text/css
/* {{pp-template}} */
.monospaced {
/* "monospace, monospace" per [[WP:MONO]] */
font-family: monospace, monospace;
}
cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4
Template:Image other
10
1314
2649
2019-03-05T14:22:01Z
Xaosflux
7
Changed protection level for "[[Template:Image other]]": Pages alread protected from [[Wikipedia:Cascade-protected items/content]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
#redirect [[Template:File other]]
{{R from move}}
e3583b1d79b68a0ef4746b77209e6b23ebe74381
Module:Protect
828
182
417
2019-03-13T12:54:02Z
Xaosflux
7
Changed protection level for "[[Module:Protect]]": used in interface [[MediaWiki:Protectedinterface]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
local function processResult(options, success, ...)
if not success then
local message = tostring(... or '(no message)')
if options.removeLocation then
message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1)
end
return string.format(options.errFormat, message)
end
return ...
end
local function protect(func, errFormat, options)
if type(errFormat) == 'table' then
options = options or errFormat
errFormat = nil
end
options = mw.clone(options) or {}
options.errFormat = errFormat or options.errFormat or 'Error: %s'
if not options.raw then
options.errFormat = '<strong class="error">' .. options.errFormat .. '</strong>'
end
options.removeLocation = options.removeLocation == nil or options.removeLocation
return function (...)
return processResult(options, pcall(func, ...))
end
end
return protect
b9ef98da3f3df35e58a7136f9a9c73a12aa8b35d
Module:CallAssert
828
179
411
2019-03-13T12:54:41Z
Xaosflux
7
Changed protection level for "[[Module:CallAssert]]": used in interface [[MediaWiki:Protectedinterface]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
local function pack(...)
return {...}, select('#', ...)
end
local function mapArray(func, array, count)
local result = {}
for i = 1, count or #array do
result[i] = func(array[i])
end
return result
end
local function quote(value)
if type(value) == 'string' then
return (string.gsub(string.format('%q', value), '\\\n', '\\n')) -- Outer parentheses remove second value returned by gsub
end
local str = tostring(value)
if type(value) == 'table' and str ~= 'table' then
return '{' .. str .. '}'
end
return str
end
local function callAssert(func, funcName, ...)
local result, resultCount = pack(func(...))
if not result[1] then
local args, argsCount = pack(...)
args = mapArray(quote, args, argsCount)
local message = mw.ustring.format(
'%s(%s) failed',
funcName,
table.concat(args, ', ')
)
error(message, 2)
end
return unpack(result, 1, resultCount)
end
return callAssert
1f6b71105b007b84f1593a11438484f1ad94f68a
Template:User link
10
1642
3002
2019-03-16T07:58:47Z
wikipedia>Jonesey95
0
display "Example" on this page only, per talk page request
wikitext
text/x-wiki
[[User:{{{1<noinclude>|Example</noinclude>}}}|{{<includeonly>safesubst:</includeonly>#if:{{{2|}}}|{{{2}}}|{{{1<noinclude>|Example</noinclude>}}}}}]]<noinclude>
{{documentation}}
</noinclude>
77cabe6631a64537cdf8e5ca3d3d8d3ae2734552
Template:Lua
10
65
125
2019-03-20T22:04:45Z
wikipedia>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Demo
10
1338
2673
2019-03-22T06:54:17Z
w>JJMC89
0
handled by {{documentation}}
wikitext
text/x-wiki
{{#invoke:Demo|main}}<noinclude>{{documentation}}</noinclude>
e458e378477c6077a01987f334fdc73bee48512c
Template:Shortcut compact
10
1135
2461
2019-03-22T07:02:15Z
DannyS712
44
remove old unneeded inline html comment
wikitext
text/x-wiki
<table class="shortcutbox shortcutbox-compact noprint" style="clear:right; float:right; border:1px solid #aaa; background:#fff; margin: 0.1em 0.1em 0.1em 0.1em; padding:1px; text-align:center;"><tr><th><small> [[Wikipedia:Shortcut|Shortcut{{#if:{{{2|}}}|s}}]]: {{#if:{{{1|}}}|[[{{{1}}}]] }}{{#if:{{{2|}}}| [[{{{2}}}]] }}{{#if:{{{3|}}}| [[{{{3}}}]] }}{{#if:{{{4|}}}| [[{{{4}}}]] }}{{#if:{{{5|}}}| [[{{{5}}}]] }} </small></th></tr></table><noinclude>
{{Documentation}}
</noinclude>
d33089183a3f8b3ef85f64beb703cad9f7eece42
Template:Map caption
10
1730
3264
2019-03-23T17:46:25Z
wikipedia>Galobtter
0
fix spacing
wikitext
text/x-wiki
<div style="text-align:center;line-height:1.15em;">Location of{{#if:{{{countryprefix|}}}
| {{{countryprefix}}}
}} {{#ifexist:{{{country}}}
|[[{{{country}}}]]
|{{{country|{{PAGENAME}}}}}
}}{{#ifeq:{{{location|{{{location_color|any}}}}}}|none|
| ({{{location|{{{location_color|orange}}}}}})
}}{{#if:{{{region|{{{legend|}}}}}}
|{{#if:{{{subregion|}}}
|<p style="text-align:left;margin-left:1.2ex;margin-top:0px;margin-bottom:0px;line-height:1.15em;">–
|<p style="text-align:center;margin-top:0px;margin-bottom:0px;line-height:1.15em;">
}}{{#switch:{{{region|none}}}
| none =
| Europe
| [[Europe]]
| in Europe
| in [[Europe]]
| on the European continent
| on the [[Europe|European continent]] = in [[Europe]]
| Pacific
| [[Pacific]]
| the Pacific
| the [[Pacific]]
| the Pacific Ocean = in the [[Pacific Ocean]]
| Middle East
| [[Middle East]]
| Arctic Circle
| [[Arctic Circle]]
| Pacific Ocean
| [[Pacific Ocean]] = in the {{#ifexist:{{{region}}}|[[{{{region}}}]]|{{{region}}}}}
| #default = in {{#ifexist:{{{region}}}
|[[{{{region}}}]]
|{{{region}}}
}}
}}{{#if:{{{region|}}}
|{{#ifeq:{{{region_color|any}}}|none|
| ({{#if:{{{subregion|}}}
|{{#ifeq:{{{subregion_color|tan}}}|{{{region_color|white}}}|
|{{#ifeq:{{{subregion_color|any}}}|none|
|{{{subregion_color|tan}}} &
}}
}}
}}{{{region_color|white}}})
}}{{#if:{{{subregion|}}}
|<br />– {{#switch:{{{subregion|none}}}
| EU
| [[EU]]
| the EU
| the [[EU]]
| European Union
| [[European Union]]
| the European Union
| the [[European Union]] = in the [[European Union]]
| #default = in {{#ifexist:{{{subregion}}}
|[[{{{subregion}}}]]
|{{{subregion}}}
}}
}}{{#ifeq:{{{subregion_color|any}}}|none|
| ({{{subregion_color|tan}}})
}}
}}
}}{{#if:{{{legend|}}}
|{{#switch:<!--[13]-->{{{subregion|none}}}
| EU
| [[EU]]
| the EU
| the [[EU]]
| European Union
| [[European Union]]
| the European Union
| the [[European Union]] = {{#ifeq:{{{subregion_color|tan}}}|tan
|
| –
}}
| none = {{#ifeq:{{{region|none}}}|none|
| –
}}
| #default = –
}} [[[:File:{{{legend}}}|Legend]]]
}}</p>
}}</div><noinclude>
{{documentation}}
</noinclude>
6f689b2b33b7f1e8612ae284122114c91acec1f2
Template:Lang-la
10
1463
2798
2019-04-03T12:06:16Z
w>WOSlinker
0
pp templates not needed here
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=la
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Italic multilingual support templates]]
</noinclude>
e9fb23bc455a402a9643bb61d1c151a865c3ff66
Template:Lang-kw
10
1414
2749
2019-04-03T12:07:40Z
w>WOSlinker
0
pp templates not needed here
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=kw
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Celtic multilingual support templates]]
</noinclude>
46c715ee6b9def2a94113dcd89e67018ee32050c
Template:Cl
10
610
1378
2019-04-24T04:30:48Z
wikipedia>JJMC89
0
actual template is in the category
wikitext
text/x-wiki
#REDIRECT [[Template:Category link]]
{{R from move}}
f79fddc38797fc163b6e6ddeb4377afbea7d0cfc
Template:Clc
10
200
454
2019-04-24T04:30:59Z
wikipedia>JJMC89
0
actual template is in the category
wikitext
text/x-wiki
#REDIRECT [[Template:Category link with count]]
02280e2ab57b544236e11f913e3759c5781ca9d5
Module:ISO 3166
828
185
423
2019-04-28T16:52:10Z
wikipedia>Frietjes
0
restrict tracking to articlespace per request
Scribunto
text/plain
-- to enable us to replicate the current functioning of Country extract, we need to deal with:
-- 2 {{<name>}} DONE!
-- 3 [[<name>]] DONE!
-- 4 [[<name>|<junk>]] DONE!
-- 5 [[image:flag of <country>.[svg|gif|png|jpg]|\d+px]] DONE!
local p = {}
local getArgs = require("Module:Arguments").getArgs
local data = mw.loadData("Module:ISO 3166/data/National")
--[[----------F I N D N A M E----------]]-- -- Finds the name in the database
local function findname(code,cdata,qry)
local sqry = p.strip(qry)
if cdata["name"] and sqry==p.strip(cdata["name"])
or cdata["isoname"] and sqry==p.strip(cdata["isoname"])
or not cdata["nocode"] and sqry==code
or sqry==cdata["alpha3"] or sqry==cdata["numeric"]
then
return true
end
for _,tname in pairs(cdata["isonames"] or {}) do
if sqry==p.strip(tname) then
return true
end
end
for _,tname in pairs(cdata["altnames"] or {}) do
if sqry==p.strip(tname) then
return true
end
end
return false
end
--[[----------I S O N A M E----------]]-- -- Find the ISO name of a country/region
local function isoname(data,code,lang)
if data[code]["isonames"] then
local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang]
or data[code]["isonames"][lang]
or data[code]["isodisplaynames"] and data[code]["isodisplaynames"][data[code]["defaultlang"] or data["defaultlang"]]
or data[code]["isonames"][data[code]["defaultlang"] or data["defaultlang"]]
or data[code]["isodisplaynames"] and data[code]["isodisplaynames"]["en"]
or data[code]["isonames"]["en"]
if name then return name end
for _,iname in pairs(data[code]["isonames"]) do return iname end
return data[code]["isodisplayname"] or data[code]["isoname"]
else
return data[code]["isodisplayname"] or data[code]["isoname"]
end
end
--[[----------S T R I P----------]]-- -- Removes junk from the input
function p.strip(text)
local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list
["Ä"]="A",["Å"]="A",["Ç"]="C",["È"]="E",["É"]="E",
["Ê"]="E",["Ë"]="E",["Ì"]="I",["Í"]="I",["Î"]="I",
["Ï"]="I",["Ñ"]="N",["Ò"]="O",["Ó"]="O",["Ô"]="O",
["Õ"]="O",["Ö"]="O",["Ø"]="O",["Ù"]="U",["Ú"]="U",
["Û"]="U",["Ü"]="U",["Ý"]="Y"
}
local remove = {"NATION OF","COUNTRY OF","TERRITORY OF", -- text to be removed list
"FLAG OF","FLAG","KINGDOM OF","STATE OF"," STATE ",
"PROVINCE OF","PROVINCE","TERRITORY"
}
local patterns = {[".+:"]="",["|.+"]="",["%(.-%)"]="", -- patterns to follow (order may matter)
["%..*"]="",["^THE "]="",["%_"]=" ",["%-"]=" ",
["%d%d?%d?PX"]="",
}
text = mw.ustring.upper(text) -- Case insensitivity
text = mw.ustring.gsub(text,"[À-Ý]",accents) -- Deaccent
for pattern,value in pairs(patterns) do -- Follow patterns
text = mw.ustring.gsub(text,pattern,value)
end
for _,words in pairs(remove) do -- Remove unneeded words
text = mw.ustring.gsub(text,words,"")
end
text = mw.ustring.gsub(text,"%W","") -- Remove non alpha-numeric
return text
end
--[[----------P . C A L L S T R I P ---------]]-- -- Calls P.strip but using Module:Arguments
function p.callstrip(frame)
local args = getArgs(frame)
return p.strip(args[1]) or ""
end
--[[----------P . L U A C O D E---------]]-- -- Makes the ISO code of a country
function p.luacode(args)
if string.find(args[1] or '',"%-") then
args[1], args[2] = string.match(args[1] or '',"^([^%-]*)%-(.*)$")
end
if args[1] then args[1] = p.strip(args[1]) end
if args[2] then args[2] = p.strip(args[2]) end
if args["codetype"]=="3" then
args["codetype"]="alpha3"
end
local eot = args.error or ""
local catnocountry = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure country]]'
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure subdivision]]'
if not args[1] then
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry, '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
end
if not args[2] then --3166-1 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,args[1]) then
if args["codetype"]=="numeric" or args["codetype"]=="alpha3" then
return cdata[args["codetype"]]
else
return alpha2
end
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
else --3166-2 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,args[1]) then
if mw.ustring.match(alpha2,"GB") then -- For England, Wales etc.
alpha2 = "GB"
end
local sdata = mw.loadData("Module:ISO 3166/data/"..alpha2)
local empty = true
for scode,scdata in pairs(sdata) do
if type(scdata)=="table" then
empty = false
if findname(scode,scdata,args[2]) then
return alpha2.."-"..scode
end
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnosubdivision = '' end
return catnosubdivision
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
end
end
--[[----------P . C O D E---------]]-- -- Calls P.Luacode but using Module:Arguments
function p.code(frame)
return p.luacode(getArgs(frame)) or ""
end
--[[----------P . N U M E R I C---------]]-- -- Calls P.Luacode but using Module:Arguments and setting it to output a numeric value
function p.numeric(frame)
local args = getArgs(frame)
args["codetype"]="numeric"
return p.luacode(args) or ""
end
--[[----------P . L U A N A M E---------]]-- -- Makes the ISO/common name of a country
function p.luaname(args)
local code1 = p.luacode(args)
local code2 = ''
if string.find(code1,"%-") then
code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$")
end
if string.find(code1,"^%u%u$") then
if code2=="" then --3166-1 alpha-2 code
if data[code1] then
return (args.isoname or args.lang) and isoname(data,code1,args.lang)
or (data[code1]["displayname"] or data[code1]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
else --3166-2 code
local sdata
if data[code1] then
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return '[[Category:Wikipedia page with obscure country]]'
end
if sdata[code2] then
return (args.isoname or args.lang) and isoname(sdata,code2,args.lang)
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
end
end
end
--[[----------P . N A M E---------]]-- -- Calls P.Luaname but using Module:Arguments
function p.name(frame)
return p.luaname(getArgs(frame)) or ""
end
--[[----------P . G E O C O O R D I N S E R T---------]]-- -- Wrapper for Module:Coordinates.coordinsert
function p.geocoordinsert(frame)
-- {{#invoke:ISO 3166|geocoordinsert|{{coord|...}}
-- |country=..|subdivision1=...|subdivision2=...
-- |type=...|scale=...|dim=...|source=...|globe=...
-- }}
local args = frame.args
local subdivisionqueried = false
local catnocountry = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure country]]'
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure subdivision]]' or ''
local tracking = ''
local targs = {}
targs[1] = args[1] or ''
for i, v in pairs(args) do
if i == 'country' and not mw.ustring.find(targs[1], 'region:') then
local country = v
local k, region = 1, ''
-- look for a valid subdivision
while region == '' and k < 3 do
local subdivision = args['subdivision' .. k] or ''
if subdivision ~= '' then
region = p.luacode({country, subdivision, nocat = 'true'})
subdivisionqueried = true
end
k = k + 1
end
-- subdivision lookup failed or never attempted, try country only
if region == '' then
region = p.luacode({country, nocat = 'true'})
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry, catnosubdivision = '', '' end
if region == '' then
tracking = tracking .. catnocountry
elseif subdivisionqueried == true then
tracking = tracking .. catnosubdivision
end
end
-- something worked, add it to the targs
if region ~= '' then
targs[#targs + 1] = 'region:' .. region
end
elseif i == 'type' or i == 'scale' or i == 'dim'
or i == 'source' or i == 'globe' then
targs[#targs + 1] = i .. ':' .. v
end
end
-- call Module:Coordinates.coordinsert if there is something to insert
if #targs > 1 then
local coordinsert = require('Module:Coordinates').coordinsert
return coordinsert({args = targs}) .. tracking
end
-- otherwise, just return the coordinates
return targs[1] .. tracking
end
return p
6bc354f2610f29e712065cbe3ea814144fa3a600
Template:Citation
10
1091
2381
2019-05-06T17:38:52Z
wikipedia>Trappist the monk
0
per [[Wikipedia:Templates for discussion/Log/2019 April 18#separate patent cites from Template:Citation|TfD]];
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=citation
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
682134a60c143dec260ce779777d3be2d4c94eaa
Template:Str endswith
10
1540
2875
2019-05-30T14:16:29Z
w>MSGJ
0
use [[Module:String]] per [[Wikipedia:Templates_for_discussion/Log/2019_February_18#Module:Str_endswith|TfD]] discussion
wikitext
text/x-wiki
{{#ifeq:{{{1|a}}}{{{2|a}}}|{{{1|b}}}{{{2|b}}}|{{#invoke:String|endswith|source={{{1}}}|pattern={{{2}}} }}|yes<!--backward compatibility -->}}<noinclude>
{{documentation}}
</noinclude>
13dfad2dc8c562869bc85a37524258ffebf9a62f
Template:Infobox country/multirow
10
428
1261
2019-06-29T22:48:38Z
wikipedia>Primefac
0
update /doc
wikitext
text/x-wiki
{{infobox | child = yes | decat=yes
| rowclass25 = mergedrow
| label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{1|}}}</div>
| data25 = {{{2|}}}
| rowclass26 = mergedrow
| label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{3|}}}</div>
| data26 = {{{4|}}}
| rowclass27 = mergedrow
| label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{5|}}}</div>
| data27 = {{{6|}}}
| rowclass28 = mergedrow
| label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{7|}}}</div>
| data28 = {{{8|}}}
| rowclass29 = mergedrow
| label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{9|}}}</div>
| data29 = {{{10|}}}
| rowclass30 = mergedrow
| label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{11|}}}</div>
| data30 = {{{12|}}}
| rowclass31 = mergedrow
| label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{13|}}}</div>
| data31 = {{{14|}}}
| rowclass32 = mergedrow
| label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{15|}}}</div>
| data32 = {{{16|}}}
| rowclass33 = mergedrow
| label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{17|}}}</div>
| data33 = {{{18|}}}
| rowclass34 = mergedrow
| label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{19|}}}</div>
| data34 = {{{20|}}}
| rowclass35 = mergedrow
| label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{21|}}}</div>
| data35 = {{{22|}}}
| rowclass36 = mergedrow
| label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{23|}}}</div>
| data36 = {{{24|}}}
| rowclass37 = mergedrow
| label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{25|}}}</div>
| data37 = {{{26|}}}
| rowclass38 = mergedrow
| label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{27|}}}</div>
| data38 = {{{28|}}}
| rowclass39 = mergedrow
| label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{29|}}}</div>
| data39 = {{{30|}}}
| rowclass40 = mergedrow
| label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{31|}}}</div>
| data40 = {{{32|}}}
| rowclass41 = mergedrow
| label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{33|}}}</div>
| data41 = {{{34|}}}
| rowclass42 = mergedrow
| label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{35|}}}</div>
| data42 = {{{36|}}}
| rowclass43 = mergedrow
| label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{37|}}}</div>
| data43 = {{{38|}}}
| rowclass44 = mergedrow
| label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{39|}}}</div>
| data44 = {{{40|}}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows.
}}</noinclude>
52b488ce963e6b79723ab148c9a82507ed2b4078
Template:Infobox military conflict
10
1152
2478
2019-07-01T21:49:58Z
w>Frietjes
0
moving to module
wikitext
text/x-wiki
<includeonly>{{#invoke:Infobox military conflict|main}}</includeonly><noinclude>{{documentation}}</noinclude>
d340eca466eb5d0a69c1f4ac57d0f34d306ed031
Template:Wikidata
10
1054
2306
2019-07-03T10:25:41Z
wikipedia>Ymblanter
0
Changed protection level for "[[Template:Wikidata]]": [[WP:High-risk templates|Highly visible template]]: request at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:Wd|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
5bf277586915dfd4207113978658a5f0bfd87abf
Template:V
10
1334
2669
2019-07-05T10:02:32Z
w>Deryck Chan
0
Deryck Chan moved page [[Template:V]] to [[Template:VTE]] over redirect: [[Wikipedia:Redirects_for_discussion/Log/2019_June_26#Template:Vte]]
wikitext
text/x-wiki
#REDIRECT [[Template:VTE]]
{{R from move}}
a5f11734455ad74228b1d295ede41cc7ab830fcf
Module:Military navigation
828
1099
2397
2019-07-11T13:06:26Z
wikipedia>Frietjes
0
Scribunto
text/plain
local p = { }
local Navbox = require('Module:Navbox')
local Styles = require('Module:WPMILHIST Infobox style')
local function isblank(s)
return (not s) or s == ''
end
local function isnotblank(s)
return s and s ~= ''
end
function p.main(frame)
local args = { }
local pargs = frame:getParent().args
local sargs = {}
local tcats = ''
-- process bodystyle and titlestyle
if (pargs['style'] or '') == 'wide' then
args['titlestyle'] = Styles['nav_box_wide_header']
args['bodystyle'] = Styles['nav_box_wide']
else
args['titlestyle'] = Styles['nav_box_header']
if (pargs['border'] or '') == 'child' or
(pargs['border'] or '') == 'subgroup' then
args['bodystyle'] = Styles['nav_box_child']
tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]'
else
args['bodystyle'] = Styles['nav_box']
end
end
sargs['titlestyle'] = 1
sargs['bodystyle'] = 1
-- process groupstyle, abovestyle, belowstyle
args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '')
sargs['groupstyle'] = 1
args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '')
sargs['abovestyle'] = 1
args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '')
sargs['belowstyle'] = 1
-- process oddstyle, evenstyle
args['oddstyle'] = isnotblank(pargs['odd_color'])
and ('background:' .. pargs['odd_color']) or nil
sargs['oddstyle'] = 1
args['evenstyle'] = isnotblank(pargs['even_color'])
and ('background:' .. pargs['even_color']) or nil
sargs['evenstyle'] = 1
-- process name and rawname
args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname']
if isblank(args['name']) then args['navbar'] = 'plain' end
sargs['name'] = 1
sargs['rawname'] = 1
-- copy the remaining args
for k, v in pairs(pargs) do
if v and v ~= '' and sargs[k] == nil then
args[k] = v
end
end
-- add allow wrap
if args['title'] and (pargs['style'] or '') ~= 'wide' then
if not mw.ustring.match(args['title'], '<span class="wrap">') then
-- probably a more efficient way to match 15 or more characters
local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]'
m = m .. m .. m
args['title'] = mw.ustring.gsub(args['title'],
'%[%[(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%1</span>]]')
args['title'] = mw.ustring.gsub(args['title'],
'%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%2</span>]]')
end
end
-- add navbox-vertical for non-wide format
if (pargs['style'] or '') ~= 'wide' then
args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '')
end
return tcats .. Navbox._navbox(args)
end
return p
26dd1b8952c65fbc4d05e418e8d7c3daed93fa49
Module:Formatted appearance
828
1264
2598
2019-07-18T17:24:43Z
w>Gonnym
0
Scribunto
text/plain
-- This module requires the use of Module:List.
local list = require('Module:List')
local p = {}
-- Local function which is used to get a correctly formatted entry.
-- Function checks if the array had a value added by checking the counter,
-- and returns the relevant result.
local function getFormattedEntry(args, counter)
if (counter == 1) then -- Check if the counter stayed the same.
return "" -- Nothing was added to array; Return empty string.
elseif (counter == 2) then -- Check if only one value was added to the array.
return args[1] -- Only one value was added to array; Return that value.
else -- The array had more than one value added.
return list.makeList("unbulleted", args) -- Call list.makeList() to retrieve the formatted plainlist.
end
end
--[[
Local function which is used to format an appearance for a comic book,
in the style of:
Line 1: <comic book title> #<issue number> (with comic book title in italics)
Line 2: <release date>
For other usages, see createGenericEntry().
The function works with the following combinations:
-- Only comic book title (example: "The Incredible Hulk").
-- Title and issue number (example: "The Incredible Hulk" and "181").
-- Title and release date (example: "The Incredible Hulk and "November 1974").
-- Title, issue number and release date (example: "The Incredible Hulk", "181" and "November 1974").
-- Only release date (example: "November 1974").
--]]
local function createComicEntry(appearanceMajor, appearanceMinor, appearanceDate)
local fullString = {} -- Variable to save the array.
local counter = 1 -- Variable to save the array counter.
if (appearanceMajor ~= nil) then -- Check if a comic book title was entered.
if (appearanceMinor == nil) then -- A comic book title was entered; Check if a issue number was entered.
fullString[counter] = appearanceMajor -- A issue was not entered; Add only the comic book title to the array.
counter = counter + 1 -- Increment counter by one.
else
fullString[counter] = appearanceMajor .. " " .. appearanceMinor -- A issue was entered; Add both to the array.
counter = counter + 1 -- Increment counter by one.
end
end
if (appearanceDate ~= nil) then -- Check if a release date was entered.
fullString[counter] = appearanceDate -- A release date was entered; Add it to the array.
counter = counter + 1 -- Increment counter by one.
end
return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry.
end
--[[
Local function which is used to format an appearance for most usages,
including television, film, books, songs and games, in the style of:
Line 1: <minor work title> (in quotes) (Minor works include: TV episodes, chapters, songs and game missions)
Line 2: <major work title> (in italics) (Major works include: TV series, films, books, albums and games)
Line 3: <release date>
For comic book usages, see createComicEntry().
The function works with the following combinations:
-- Only minor work title (example: "Live Together, Die Alone").
-- Minor work title and major work title (example: "Live Together, Die Alone" and "Lost").
-- Minor work title and release date (example: "Live Together, Die Alone" and "May 24, 2006").
-- Minor work title, major work title and release date (example: "Live Together, Die Alone", "Lost" and "May 24, 2006").
-- Only major work title (example: "Lost").
-- major work title and release date (example: "Lost" and "May 24, 2006").
-- Only release date (example: "May 24, 2006").
--]]
local function createGenericEntry(appearanceMajor, appearanceMinor, appearanceDate)
local fullString = {} -- Variable to save the array.
local counter = 1 -- Variable to save the array counter.
if (appearanceMinor ~= nil) then -- Check if a minor appearance was entered.
fullString[counter] = appearanceMinor -- A minor appearance was entered; Add it to the array.
counter = counter + 1 -- Increment counter by one.
end
if (appearanceMajor ~= nil) then -- Check if a major appearance was entered.
fullString[counter] = appearanceMajor -- A major appearance was entered; Add it to the array.
counter = counter + 1 -- Increment counter by one.
end
if (appearanceDate ~= nil) then -- Check if a release date was entered.
fullString[counter] = appearanceDate -- A release date was entered; Add it to the array.
counter = counter + 1 -- Increment counter by one.
end
return getFormattedEntry(fullString, counter) -- Call getFormattedEntry() to get a correctly formatted entry.
end
-- Local function which is used to format with a hash symbol comic book issues.
-- For other minor works, see getFormattedGenericMinorWork().
local function getFormattedComicMinorWorkTitle(issue)
if (issue ~= nil) then -- Check if the issue is not nil.
if (string.find(issue, "#")) then -- Check if the issue already has a hash symbol.
return issue -- Hash symbol already present; Return issue.
else
local formattedString = string.gsub(issue, "%d+", "#%1") -- Hash symbol not found; Add the symbol before the issue number.
return formattedString -- Return issue.
end
else
return nil -- issue is nil; Return nil.
end
end
-- Local function which is used to format with quotes a minor work title of most types.
-- For comic book issues, see getFormattedComicMinorWork() (see [MOS:MINORWORK]).
local function getFormattedGenericMinorWorkTitle(title)
if (title ~= nil) then -- Check if the title is not nil.
return "\"" .. title .. "\"" -- Title is not nil; Add quotes to the title.
else
return nil -- Title is nil; Return nil.
end
end
-- Local function which is used to format with italics a major work title (see [MOS:MAJORWORK]).
local function getFormattedMajorWorkTitle(title)
if (title ~= nil) then -- Check if the title is not nil.
return "''" .. title .. "''" -- Title is not nil; Add italics to the title.
else
return nil -- Title is nil; Return nil.
end
end
-- Local function which does the actual main process.
local function _getFormattedAppearance(args)
local appearanceMajor = args['major_work'] -- Get the title of the major work.
local appearanceMinor = args['minor_work'] -- Get the title of the minor work.
local isComic = false -- Variable to save the status of wether the appearence is from a comic book.
if (args['issue'] ~= nil) then -- Check if the comic specific issue is not nil.
appearanceMinor = args['issue'] -- Issue is not nil; Get the issue number.
isComic = true -- Set isComic to true.
end
local appearanceDate = args['date'] -- Get the release date of the minor work.
local formattedAppearanceMajor = getFormattedMajorWorkTitle(appearanceMajor) -- Call getFormattedMajorWorkTitle() to get a formatted major work title.
if (isComic == false) then -- Check if the appearance is a comic book appearance.
-- The appearance is not a comic book appearance;
local formattedAppearanceMinor = getFormattedGenericMinorWorkTitle(appearanceMinor) -- Call getFormattedGenericMinorWorkTitle() to get a formatted minor work title.
return createGenericEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createGenericEntry() to create an appearance entry.
else
-- The appearance is a comic book appearance.
local formattedAppearanceMinor = getFormattedComicMinorWorkTitle(appearanceMinor) -- Call getFormattedComicMinorWorkTitle() to get a formatted minor work title.
return createComicEntry(formattedAppearanceMajor, formattedAppearanceMinor, appearanceDate) -- Call createComicEntry() to create a comic book appearance entry.
end
end
--[[
Public function which is used to format the |first_appeared= and |last_appeared= fields.
The usage of this module allows for correct title formatting (see [MOS:MAJORWORK] and [MOS:MINORWORK]),
and correct line breaks based on guidelines (see [WP:UBLIST]).
Parameters:
-- |major_work= — optional; The title of the major work the fictional element appeared in.
Major works include TV series, films, books, albums and games.
-- |minor_work= — optional; The title of the minor work the fictional element appeared in.
Minor works include TV episodes, chapters, songs and game missions.
-- |issue= — optional; The number of the comic book issue the fictional element appeared in.
-- |date= — optional; The date of the publication/release of the minor work where the fictional element appeared in.
--]]
function p.getFormattedAppearance(frame)
local getArgs = require('Module:Arguments').getArgs -- Use Module:Arguments to access module arguments.
local args = getArgs(frame) -- Get the arguments sent via the template.
return _getFormattedAppearance(args) -- Call _getFormattedAppearance() to perform the actual process.
end
return p
21c7590d5c0d7d710104335553aa10711c9b3b6e
Template:WIA
10
1740
3295
2019-08-20T18:35:30Z
wikipedia>Muboshgu
0
[[MOS:ACCESS#Text]] / [[MOS:FONTSIZE]]: "Avoid using smaller font sizes in elements that already use a smaller font size, such as infoboxes, navboxes and reference sections."
wikitext
text/x-wiki
([[Wounded in action|{{abbr|WIA|Wounded in action}}]])<noinclude>{{documentation}}</noinclude>
e1621e089aafa654395dd85099656f4d070e1f5e
Template:KIA
10
1495
2830
2019-08-20T18:37:30Z
w>Muboshgu
0
[[MOS:ACCESS#Text]] / [[MOS:FONTSIZE]]: "Avoid using smaller font sizes in elements that already use a smaller font size, such as infoboxes, navboxes and reference sections."
wikitext
text/x-wiki
[[<!---(link:)-->{{{1|Killed in action}}}<!--
-->|<!--(label:)-->{{#ifeq:{{{alt|}}}|yes |(KIA) |<span style="font-family:'Times New Roman','Old English Text MT',serif">{{#ifeq:{{{bold|}}}|no |† |'''†'''}}</span>}}<!--
-->]]<noinclude>
{{Documentation}}
</noinclude>
40db638380717ea2f21d23962d35f009deec5b20
Template:Infobox pope styles
10
1128
2453
2019-09-11T09:48:34Z
w>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
{{Infobox manner of address
| background = gold
| type = Papal
| name = {{{name|{{{papal name|{{<includeonly>safesubst:</includeonly>PAGENAME}}}}}}}}
| image = {{<includeonly>safesubst:</includeonly>#if:{{{image|}}}|{{{image}}}|Emblem of the Papacy SE.svg}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|60px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| religious = {{{relstyle<includeonly>|</includeonly>}}}
| posthumous = {{{deathstyle<includeonly>|</includeonly>}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Pope styles]] with unknown parameter "_VALUE_"|ignoreblank=y| deathstyle | dipstyle | image | image_size | name | offstyle | papal name | relstyle }}<noinclude>
{{documentation}}
</noinclude>
6d3096faba3a697b5e6da3e933b32598e4561958
Template:Ubl
10
1239
2573
2019-09-11T19:30:27Z
w>Paine Ellsworth
0
convert to shell template
wikitext
text/x-wiki
#REDIRECT [[Template:Unbulleted list]]
{{Rcat shell|
{{R from template shortcut}}
}}
6b250cba5f224bbaa761c7bdc41463e1cef32a3d
Template:Infobox person/height
10
177
407
2019-09-26T15:11:11Z
wikipedia>Frietjes
0
use lua version for efficiency and readability, passes all tests in the testscases so seems fine
wikitext
text/x-wiki
{{#invoke:person height|main}}<noinclude>
{{Documentation}}
</noinclude>
7e4749e2788885b5a8760fedb7cc278e9a60a85a
Module:Is infobox in lead
828
1356
2691
2019-10-07T04:35:39Z
w>Galobtter
0
exclude certain infoboxes per talk
Scribunto
text/plain
local p = {}
function p.main (frame)
return p._main (frame.args[1])
end
function p._main (searchString)
local content = mw.title.getCurrentTitle():getContent()
local offset = string.find(content, "==", 1 , true)
if offset then
local lead = string.sub(content, 1, offset-1)
if (string.find(lead, searchString)) then
lead = lead
:gsub( "{{%s-[Ii]nfobox%s-mapframe", "") --don't check for infobox mapframe
:gsub( "{{%s-[Ii]nfobo[^}]-%|%s-embed%s-=%s-yes", "") --don't check for embeded infoboxes
:gsub( "{{%s-[Ii]nfobo[^}]-%|%s-child%s-=%s-yes", "") --don't check for child infoboxes
local iter = string.gmatch(lead, "{{%s-[Ii]nfobox")
iter()
if not iter() then --if able to find two infoboxes in the lead, then don't return true
local iter2 = string.gmatch(content, searchString)
iter2()
if not iter2() then --if able to find two of the specific infobox in the article, then don't return true
return true
end
end
end
end
end
return p
e51275218355573466c0d04d6f23c98f0d6532f4
Template:Mono
10
461
1348
2019-10-13T01:15:06Z
wikipedia>Izno
0
implement ifsubst
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
800f06823c02b03f8b9cf1e245ad8c4829cfe931
Template:Infobox settlement/lengthdisp
10
1456
2791
2019-10-16T22:18:36Z
w>WOSlinker
0
avoid redirects
wikitext
text/x-wiki
<includeonly>{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}}}
|metv={{#if:{{{km|}}}{{{m|}}}
|{{{km|}}}{{{m|}}}
|{{#if:{{{mi|}}}
|{{round
|{{#expr:{{formatnum:{{{mi}}}|R}}*1.609344}}
|{{precision|{{formatnum:{{{mi}}}|R}}}}
}}
|{{round
|{{#expr:{{formatnum:{{{ft}}}|R}}*0.3048}}
|{{max
|{{precision|{{formatnum:{{{ft}}}|R}}}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{ft}}}|R}}*0.3048}}}}
}}
}}
}}
}}
|metu={{#if:{{{km|}}}{{{mi|}}}|k}}m
|impv={{#if:{{{mi|}}}{{{ft|}}}
|{{{mi|}}}{{{ft|}}}
|{{#if:{{{km|}}}
|{{round
|{{#expr:{{formatnum:{{{km}}}|R}}/1.609344}}
|{{max
|{{precision|{{formatnum:{{{km}}}|R}}}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{km}}}|R}}/1.609344}}}}
}}
}}
|{{round
|{{#expr:{{formatnum:{{{m}}}|R}}/0.3048}}
|{{precision|{{formatnum:{{{m}}}|R}}}}
}}
}}
}}
|impu={{#if:{{{km|}}}{{{mi|}}}|mi|ft}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
8525c091822d9f317f267e88861faee9689a3a3f
Template:Infobox settlement/areadisp
10
1438
2773
2019-10-16T22:23:26Z
w>WOSlinker
0
avoid redirects
wikitext
text/x-wiki
<includeonly>{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}|area}}{{#if:{{{mag|}}}|/mag}}
|metv={{#if:{{{ha|}}}{{{km2|}}}
|{{#if:{{{ha|}}}|{{{ha}}}|{{{km2}}}}}
|{{#if:{{{dunam|}}}
|{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<1E3
|{{round<!-- convert dunams to hectares -->
|{{#expr:{{formatnum:{{{dunam}}}|R}}/10}}
|({{precision|{{formatnum:{{{dunam}}}|R}}}}+1)
}}<!-- end round -->
|{{round<!-- convert dunams to square kilometres -->
|{{#expr:{{formatnum:{{{dunam}}}|R}}/1E3}}
|({{precision|{{formatnum:{{{dunam}}}|R}}}}+3)
}}<!-- end round -->
}}<!-- end #ifexpr:...{{{dunam}}}...<1E3 -->
|{{#if:{{{acre|}}}
|{{round<!-- convert acres to hectares -->
|{{#expr:{{formatnum:{{{acre}}}|R}}*0.4046856422}}
|{{max<!-- output at least one sig fig -->
|{{precision|{{formatnum:{{{acre}}}|R}}}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{acre}}}|R}}*0.4046856422}}}}
}}<!-- end max -->
}}<!-- end round -->
|{{round<!-- convert square miles to square kilometres -->
|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2.589988110336}}
|{{max<!-- output at least one sig fig -->
|({{precision|{{formatnum:{{{sqmi}}}|R}}}}-1)
|-{{Order of magnitude|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2.589988110336}}}}
}}<!-- end max -->
}}<!-- end rnd -->
}}<!-- end #if:{{{acre|}}} -->
}}<!-- end #if:{{{dunam|}}} -->
}}<!-- end #if:{{{ha|}}}{{{km2|}}} -->
|metu={{#if:{{{ha|}}}{{#if:{{{km2|}}}
|
|{{#if:{{{dunam|}}}
|{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<1E3|X}}
|{{{acre|}}}
}}
}}
|ha
|km<sup>2</sup>
}}
|impv={{#if:{{{acre|}}}{{{sqmi|}}}
|{{#if:{{{acre|}}}|{{{acre}}}|{{{sqmi}}}}}
|{{#if:{{{ha|}}}{{{km2|}}}
|{{#if:{{{ha|}}}
|{{round<!-- convert hectares to acres -->
|{{#expr:{{formatnum:{{{ha}}}|R}}/0.4046856422}}
|({{precision|{{formatnum:{{{ha}}}|R}}}})
}}<!-- end round -->
|{{round<!-- convert square kilometres to square miles -->
|{{#expr:{{formatnum:{{{km2}}}|R}}/2.589988110336}}
|{{max<!-- output at least one sig fig -->
|{{precision|{{formatnum:{{{km2}}}|R}}}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{km2}}}|R}}/2.589988110336}}}}
}}<!-- end max -->
}}<!-- end round -->
}}<!-- end #if:{{{ha|}}} -->
|{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<2589
|{{round<!-- convert dunams to acres -->
|{{#expr:{{formatnum:{{{dunam}}}|R}}/4.046856422}}
|{{max<!-- output at least one sig fig -->
|({{precision|{{formatnum:{{{dunam}}}|R}}}})
|-{{Order of magnitude|{{#expr:{{formatnum:{{{dunam}}}|R}}/4.046856422}}}}
}}<!-- end max -->
}}<!-- end round -->
|{{round<!-- convert dunams to square miles -->
|{{#expr:{{formatnum:{{{dunam}}}|R}}/2589.988110336}}
|{{max<!-- output at least one sig fig -->
|({{precision|{{formatnum:{{{dunam}}}|R}}}}+3)
|-{{Order of magnitude|{{#expr:{{formatnum:{{{dunam}}}|R}}/2589.988110336}}}}
}}<!-- end max -->
}}<!-- end round -->
}}<!-- end #ifexpr:...{{{dunam}}}...<2589 -->
}}<!-- end #if:{{{ha|}}}{{{km2|}}} -->
}}<!-- end #if:{{{acre|}}}{{{sqmi|}}} -->
|impu={{#if:{{{acre|}}}{{#if:{{{sqmi|}}}
|
|{{{ha|}}}{{#if:{{{km2|}}}
|
|{{#ifexpr:{{formatnum:{{{dunam}}}|R}}<2589|X}}
}}
}}
|acre
|sq mi
}}
|dunv={{#if:{{#ifeq:{{lc:{{{pref}}}}}|dunam|{{{dunam|}}}|no dunams}}
|{{{dunam}}}
|{{#if:{{{ha|}}}{{{km2|}}}
|{{#if:{{{km2|}}}
|{{round<!-- convert square kilometres to dunams -->
|{{#expr:{{formatnum:{{{km2}}}|R}}*1E3}}
|({{precision|{{formatnum:{{{km2}}}|R}}}}-3)
}}<!-- end round -->
|{{round<!-- convert hectares to dunams -->
|{{#expr:{{formatnum:{{{ha}}}|R}}*10}}
|({{precision|{{formatnum:{{{ha}}}|R}}}}-1)
}}<!-- end round -->
}}<!-- end #if:{{{km2|}}} -->
|{{#if:{{{sqmi|}}}
|{{round<!-- convert square miles to dunams -->
|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2589.988110336}}
|{{max<!-- output at least one sig fig -->
|({{precision|{{formatnum:{{{sqmi}}}|R}}}}-4)
|-{{Order of magnitude|{{#expr:{{formatnum:{{{sqmi}}}|R}}*2589.988110336}}}}
}}<!-- end max -->
}}<!-- end round -->
|{{round<!-- convert acres to dunams -->
|{{#expr:{{formatnum:{{{acre}}}|R}}*4.046856422}}
|{{max<!-- output at least one sig fig -->
|({{precision|{{formatnum:{{{acre}}}|R}}}}-1)
|-{{Order of magnitude|{{#expr:{{formatnum:{{{acre}}}|R}}*4.046856422}}}}
}}<!-- end max -->
}}<!-- end round -->
}}<!-- end #if:{{{sqmi|}}} -->
}}<!-- end #if:{{{ha|}}}{{{km2|}}} -->
}}
|dunu={{#if:{{{link|}}}|[[dunam]]|dunam}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
a6ccd372b44beed9525741b6fcd5317fb970eb89
Template:Edit
10
100
247
2019-10-17T18:13:48Z
Wugapodes
19
Add support for tooltips per edit request on talk
wikitext
text/x-wiki
<span class="noprint plainlinks" title="{{#if:{{{tooltip|}}}|{{{tooltip}}}|Edit {{{1}}}}}">[{{fullurl:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|action=edit{{#if:{{{section|}}}|§ion={{{section}}}}}{{#if:{{{editintro|}}}|&editintro={{urlencode:{{{editintro}}}|wiki}}}}{{#if:{{{preload|}}}|&preload={{urlencode:{{{preload}}}|wiki}}}}{{#if:{{{preloadtitle|}}}|&preloadtitle={{urlencode:{{{preloadtitle}}}}}}}}} {{{2|edit}}}]</span><noinclude>
{{documentation}}
</noinclude>
20ae9613e64bbdd279f1d1c7a3d2ddf64d1b1b48
Template:Flagdeco/core
10
1722
3246
2019-10-22T23:20:36Z
wikipedia>S.A. Julio
0
/* top */adjusting for improved method to define custom flag sizes
wikitext
text/x-wiki
<span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]]</span><noinclude>{{documentation}}</noinclude>
42dea5caf343aa87e6e075eb1bec3aebe1f396b1
Template:To
10
222
502
2019-10-25T21:00:29Z
RhinosF1
27
12 revisions imported: requested + few more
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#if:{{{1|<noinclude>$</noinclude>}}}
|<span class="template-ping">'''''<small>To</small>''''' [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{1|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label1|{{{1|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{2|}}}
|{{SAFESUBST:<noinclude />#if:{{{3|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{2|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label2|{{{2|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{3|}}}
|{{SAFESUBST:<noinclude />#if:{{{4|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{3|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label3|{{{3|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{4|}}}
|{{SAFESUBST:<noinclude />#if:{{{5|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{4|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label4|{{{4|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{5|}}}
|{{SAFESUBST:<noinclude />#if:{{{6|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{5|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label5|{{{5|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{6|}}}
|{{SAFESUBST:<noinclude />#if:{{{7|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{6|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label6|{{{6|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{7|}}}
| and [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{7|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label7|{{{7|Example}}}}}}}}]]
}}
}}
}}
}}
}}
}}{{{p|:}}}</span>
|{{SAFESUBST:<noinclude />Error|Error in [[Template:To]]: Username not given.}}
}}<noinclude>
{{documentation}}
</noinclude>
9c0fea6f23b8ce7384dc9f1dcde0385ac8f6288e
Template:Center
10
431
936
2019-10-25T21:01:11Z
meta>RhinosF1
0
11 revisions imported: requested + few more
wikitext
text/x-wiki
<includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1}}}</div>{{#if:{{{1|}}}||[[Category:Pages using center with no arguments]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
7bbd9f349458b75c72afaefd8f39f80b7903afc7
Template:Imbox
10
1313
2648
2019-10-30T12:49:02Z
w>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
{{#invoke:Message box|imbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
4d46e2eee16ad5fba44d200a3b26b401f2fd6710
Template:Time ago
10
1532
2867
2019-11-08T05:01:19Z
Wugapodes
19
noncaps
wikitext
text/x-wiki
{{#invoke:Time ago|main}}<noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage and interwikis go in Wikidata. -->
</noinclude>
c4d4d92759a3f7eea8f93dd962df4c0abcea36fd
Module:Location map/data/Earth
828
1502
2837
2019-11-17T21:50:23Z
w>Sumanuil
0
Blast it.
Scribunto
text/plain
return {
name = 'Earth',
top = 90,
bottom = -90,
left = -180,
right = 180,
image = 'World location map (equirectangular 180).svg',
image1='World location map (equirectangular 180).svg'}
0c7a9c4349065ea43134d0a61037d31862f2a042
Template:URL
10
1175
2504
2019-11-18T00:50:36Z
w>Jonesey95
0
Adding unknown parameter tracking through [[:Category:Pages using URL template with unknown parameters]] using [[Module:check for unknown parameters]]
wikitext
text/x-wiki
<includeonly>{{#invoke:URL|url}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using URL template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:URL]] with unknown parameter "_VALUE_"|ignoreblank=y | 1 | 2 }}<noinclude>{{documentation}}</noinclude>
5671474ce4656f07c5bdc47292d1dcbe9c70317e
Template:Getalias/core
10
1467
2802
2019-12-02T23:56:56Z
w>S.A. Julio
0
cat
wikitext
text/x-wiki
{{{{{{name|}}} alias-{{{variant}}}|{{{{{{name|}}} alias|{{{alias}}}}}}}}}<noinclude>
{{Documentation|content=This template is used internally by [[Template:getalias]]. It is not intended to be transcluded directly.}}
[[Category:Flag template system]]
[[Category:Flag template system cores]]
</noinclude>
78b28eacac86e1f96380a66894b79478231bc541
Template:Unbulleted list
10
163
379
2019-12-09T17:31:16Z
wikipedia>Jonesey95
0
Undid revision 929522913 by [[Special:Contributions/MSGJ|MSGJ]] ([[User talk:MSGJ|talk]]). Reverted, as this change has been shown to have bugs. Discussion continues on talk page.
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|unbulleted}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
89815a491d3e05b20af446e34cda13f13c25fb4f
Template:Wdib
10
1230
2563
2019-12-19T17:05:39Z
w>RexxS
0
Undid revision 931560015 by [[Special:Contributions/RexxS|RexxS]] ([[User talk:RexxS|talk]]) rv test
wikitext
text/x-wiki
{{#invoke:WikidataIB|getValue}}<noinclude>
{{documentation}}
</noinclude>
fa7d9c2bb5c42c526c39cda90ec66adf62985650
Template:Purge page
10
876
1942
2020-01-01T18:16:39Z
wikipedia>DannyS712
0
use [[Special:Purge]] shortcut
wikitext
text/x-wiki
<i class="noprint">[[Special:Purge/{{FULLPAGENAME}}|<small {{#if:{{{color|}}}|style="color:{{{color}}}"}}>{{{1|Purge server cache}}}</small>]]</i><noinclude>{{Documentation}}</noinclude>
2b1975cb149a2921ef0b42dc0a85a8d2b12e9fde
Module:Location map/data/North America
828
1682
3122
2020-01-06T15:45:38Z
wikipedia>CommonsDelinker
0
Replacing North_America_laea_relief_location_map.jpg with [[File:North_America_laea_relief_location_map_with_borders.jpg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR2|Criterion 2]] (meaningless
Scribunto
text/plain
return {
name = 'North America',
x = '(69.398)*( cos( $1*0.01745329252 )*sin( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5) - (-50.0)',
y = '(100 + (-50.0) ) - (68.9773)*( cos( 47.5*0.01745329252 )*sin( $1*0.01745329252 ) - sin( 47.5*0.01745329252 )*cos( $1*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5)',
image = 'North_America_laea_location map.svg',
image1 = 'North America laea relief location map with borders.jpg'
}
5023e7c80f1e6a04f4c3eba9557784b383579454
Template:Cs2
10
836
1854
2020-01-10T12:28:45Z
wikipedia>Redrose64
0
Undid revision 934607874 by [[Special:Contributions/Milker|Milker]] ([[User talk:Milker|talk]]) please don't do this, it screws with tools
wikitext
text/x-wiki
[[Help:Citation Style 2|Citation Style 2]]<noinclude>
[[Category:Documentation assistance templates]]
</noinclude>
858b36b946491e8f374a732e2a72589c9d6f7f00
Template:Strongbad
10
1254
2588
2020-01-20T02:07:28Z
w>JJMC89
0
make sure "{{{style}}}" is not passed to {{strong}} per request by 184.254.188.63; use {{main other}}
wikitext
text/x-wiki
{{main other|{{FormattingError|Template:Strongbad is only for use in template documentation, guidelines and other Wikipedia-internal purposes. Do not use it in actual articles.}}|{{strong|1={{{1}}}|style=color: red; {{{style|}}} |role={{{role|}}} |class={{{class|}}} |id={{{id|}}} |title={{{title|}}} }}}}<noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
c695b91f21a832d4e6d92504b57ab3c0d6520996
Template:\sandbox
10
1317
2652
2020-02-11T15:54:10Z
w>Christian75
0
{{sandbox other}} was changed so its now like (sandbox OR doc) other - fixing that
wikitext
text/x-wiki
{{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}}<noinclude>{{Documentation}}</noinclude>
24faafab5125adc84dc558242ae324e5040dc906
Template:Infobox Austrian royalty styles
10
1120
2445
2020-03-10T18:31:08Z
w>Zyxw
0
{{Wraps infobox|Infobox manner of address}}
wikitext
text/x-wiki
{{Infobox manner of address
| type = Monarchical
| name = {{{royal name<includeonly>|</includeonly>}}}
| image = Imperial Coat of Arms of the Empire of Austria (1815).svg
| size = 50px
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}<noinclude>{{Documentation|content=
{{Wraps infobox|Infobox manner of address}}
{{DEFAULTSORT:Austrian royalty styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
}}</noinclude>
69499ae914132efb0c35f278c64b1225dcdfc017
Template:Sfnm
10
890
1970
2020-03-27T22:18:25Z
wikipedia>Trappist the monk
0
+template;
wikitext
text/x-wiki
<includeonly>{{#invoke:Footnotes|sfnm|template=sfnm}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
19c7cdc6dc3804ba6e3901ed90cd2817f9956898
Template:Ombox
10
111
269
2020-04-01T06:12:36Z
MusikAnimal
4
1 revision imported
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Module:Arguments
828
7
9
2020-04-01T06:12:40Z
MusikAnimal
4
1 revision imported
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Category handler
828
143
2240
2020-04-01T06:12:40Z
wikipedia>MusikAnimal
0
1 revision imported
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
b74dd63857b24904ac452429b11213f18647471f
Module:Category handler/config
828
1023
2244
2020-04-01T06:12:40Z
wikipedia>MusikAnimal
0
1 revision imported
Scribunto
text/plain
--------------------------------------------------------------------------------
-- [[Module:Category handler]] configuration data --
-- Language-specific parameter names and values can be set here. --
-- For blacklist config, see [[Module:Category handler/blacklist]]. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- foo = 'parameter name', --
-- --
-- To add multiple names, you can use this format: --
-- --
-- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, --
--------------------------------------------------------------------------------
cfg.parameters = {
-- The nocat and categories parameter suppress
-- categorisation. They are used with Module:Yesno, and work as follows:
--
-- cfg.nocat:
-- Result of yesno() Effect
-- true Categorisation is suppressed
-- false Categorisation is allowed, and
-- the blacklist check is skipped
-- nil Categorisation is allowed
--
-- cfg.categories:
-- Result of yesno() Effect
-- true Categorisation is allowed, and
-- the blacklist check is skipped
-- false Categorisation is suppressed
-- nil Categorisation is allowed
nocat = 'nocat',
categories = 'categories',
-- The parameter name for the legacy "category2" parameter. This skips the
-- blacklist if set to the cfg.category2Yes value, and suppresses
-- categorisation if present but equal to anything other than
-- cfg.category2Yes or cfg.category2Negative.
category2 = 'category2',
-- cfg.subpage is the parameter name to specify how to behave on subpages.
subpage = 'subpage',
-- The parameter for data to return in all namespaces.
all = 'all',
-- The parameter name for data to return if no data is specified for the
-- namespace that is detected.
other = 'other',
-- The parameter name used to specify a page other than the current page;
-- used for testing and demonstration.
demopage = 'page',
}
--------------------------------------------------------------------------------
-- Parameter values --
-- These are set values that can be used with certain parameters. Only one --
-- value can be specified, like this: --
-- --
-- cfg.foo = 'value name' -- --
--------------------------------------------------------------------------------
-- The following settings are used with the cfg.category2 parameter. Setting
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2
-- is present but equal to anything other than cfg.category2Yes or
-- cfg.category2Negative then it supresses cateogrisation.
cfg.category2Yes = 'yes'
cfg.category2Negative = '¬'
-- The following settings are used with the cfg.subpage parameter.
-- cfg.subpageNo is the value to specify to not categorise on subpages;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.
cfg.subpageNo = 'no'
cfg.subpageOnly = 'only'
--------------------------------------------------------------------------------
-- Default namespaces --
-- This is a table of namespaces to categorise by default. The keys are the --
-- namespace numbers. --
--------------------------------------------------------------------------------
cfg.defaultNamespaces = {
[ 0] = true, -- main
[ 6] = true, -- file
[ 12] = true, -- help
[ 14] = true, -- category
[100] = true, -- portal
[108] = true, -- book
}
--------------------------------------------------------------------------------
-- Wrappers --
-- This is a wrapper template or a list of wrapper templates to be passed to --
-- [[Module:Arguments]]. --
--------------------------------------------------------------------------------
cfg.wrappers = 'Template:Category handler'
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
373cd107b13a5b00e6a1b7e66a749f12502c849d
Module:Category handler/data
828
1022
2242
2020-04-01T06:12:41Z
wikipedia>MusikAnimal
0
1 revision imported
Scribunto
text/plain
-- This module assembles data to be passed to [[Module:Category handler]] using
-- mw.loadData. This includes the configuration data and whether the current
-- page matches the title blacklist.
local data = require('Module:Category handler/config')
local mShared = require('Module:Category handler/shared')
local blacklist = require('Module:Category handler/blacklist')
local title = mw.title.getCurrentTitle()
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(
title.prefixedText,
blacklist
)
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(
title,
mShared.getParamMappings()
)
return data
abbc68048ff698e88dda06b64ecf384bbf583120
Module:Category handler/shared
828
1024
2246
2020-04-01T06:12:41Z
wikipedia>MusikAnimal
0
1 revision imported
Scribunto
text/plain
-- This module contains shared functions used by [[Module:Category handler]]
-- and its submodules.
local p = {}
function p.matchesBlacklist(page, blacklist)
for i, pattern in ipairs(blacklist) do
local match = mw.ustring.match(page, pattern)
if match then
return true
end
end
return false
end
function p.getParamMappings(useLoadData)
local dataPage = 'Module:Namespace detect/data'
if useLoadData then
return mw.loadData(dataPage).mappings
else
return require(dataPage).mappings
end
end
function p.getNamespaceParameters(titleObj, mappings)
-- We don't use title.nsText for the namespace name because it adds
-- underscores.
local mappingsKey
if titleObj.isTalkPage then
mappingsKey = 'talk'
else
mappingsKey = mw.site.namespaces[titleObj.namespace].name
end
mappingsKey = mw.ustring.lower(mappingsKey)
return mappings[mappingsKey] or {}
end
return p
d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5
Module:Namespace detect/config
828
97
241
2020-04-01T06:12:44Z
MusikAnimal
4
1 revision imported
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect configuration data --
-- --
-- This module stores configuration data for Module:Namespace detect. Here --
-- you can localise the module to your wiki's language. --
-- --
-- To activate a configuration item, you need to uncomment it. This means --
-- that you need to remove the text "-- " at the start of the line. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. Values added --
-- here will work in addition to the default English parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- cfg.foo = 'parameter name' --
-- --
-- To add multiple names, you can use this format: --
-- --
-- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} --
--------------------------------------------------------------------------------
---- This parameter displays content for the main namespace:
-- cfg.main = 'main'
---- This parameter displays in talk namespaces:
-- cfg.talk = 'talk'
---- This parameter displays content for "other" namespaces (namespaces for which
---- parameters have not been specified):
-- cfg.other = 'other'
---- This parameter makes talk pages behave as though they are the corresponding
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].
---- Edit that module to change the default values of "yes", "no", etc.
-- cfg.subjectns = 'subjectns'
---- This parameter sets a demonstration namespace:
-- cfg.demospace = 'demospace'
---- This parameter sets a specific page to compare:
cfg.demopage = 'page'
--------------------------------------------------------------------------------
-- Table configuration --
-- These configuration items allow customisation of the "table" function, --
-- used to generate a table of possible parameters in the module --
-- documentation. --
--------------------------------------------------------------------------------
---- The header for the namespace column in the wikitable containing the list of
---- possible subject-space parameters.
-- cfg.wikitableNamespaceHeader = 'Namespace'
---- The header for the wikitable containing the list of possible subject-space
---- parameters.
-- cfg.wikitableAliasesHeader = 'Aliases'
--------------------------------------------------------------------------------
-- End of configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
0e4ff08d13c4b664d66b32c232deb129b77c1a56
Module:Namespace detect/data
828
96
239
2020-04-01T06:12:45Z
MusikAnimal
4
1 revision imported
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect data --
-- This module holds data for [[Module:Namespace detect]] to be loaded per --
-- page, rather than per #invoke, for performance reasons. --
--------------------------------------------------------------------------------
local cfg = require('Module:Namespace detect/config')
local function addKey(t, key, defaultKey)
if key ~= defaultKey then
t[#t + 1] = key
end
end
-- Get a table of parameters to query for each default parameter name.
-- This allows wikis to customise parameter names in the cfg table while
-- ensuring that default parameter names will always work. The cfg table
-- values can be added as a string, or as an array of strings.
local defaultKeys = {
'main',
'talk',
'other',
'subjectns',
'demospace',
'demopage'
}
local argKeys = {}
for i, defaultKey in ipairs(defaultKeys) do
argKeys[defaultKey] = {defaultKey}
end
for defaultKey, t in pairs(argKeys) do
local cfgValue = cfg[defaultKey]
local cfgValueType = type(cfgValue)
if cfgValueType == 'string' then
addKey(t, cfgValue, defaultKey)
elseif cfgValueType == 'table' then
for i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
local function getParamMappings()
--[[
-- Returns a table of how parameter names map to namespace names. The keys
-- are the actual namespace names, in lower case, and the values are the
-- possible parameter names for that namespace, also in lower case. The
-- table entries are structured like this:
-- {
-- [''] = {'main'},
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},
-- ...
-- }
--]]
local mappings = {}
local mainNsName = mw.site.subjectNamespaces[0].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
local nsname = mw.ustring.lower(ns.name)
local canonicalName = mw.ustring.lower(ns.canonicalName)
mappings[nsname] = {nsname}
if canonicalName ~= nsname then
table.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
table.insert(mappings[nsname], mw.ustring.lower(alias))
end
end
end
return mappings
end
return {
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}
d224f42a258bc308ef3ad8cc8686cd7a4f47d005
Module:Yesno
828
6
7
2020-04-01T06:27:55Z
MusikAnimal
4
Undid revision 948472533 by [[Special:Contributions/w>Vogone|w>Vogone]] ([[User talk:w>Vogone|talk]])
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:File link
828
32
59
2020-04-01T06:31:54Z
MusikAnimal
4
Undid revision 948472508 by [[Special:Contributions/w>IPad365|w>IPad365]] ([[User talk:w>IPad365|talk]])
Scribunto
text/plain
-- This module provides a library for formatting file wikilinks.
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
-- own function to get the right error level.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"type error in '%s' parameter of '_main' (expected string, got %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adds a positional parameter to the buffer.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adds a named parameter to the buffer. We assume that the parameter name
-- is the same as the argument key.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Filename
checkArg('file', args.file, 3)
ret[#ret + 1] = 'File:' .. args.file
-- Format
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Border
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:File link'
})
if not origArgs.file then
error("'file' parameter missing from [[Template:File link]]", 0)
end
-- Copy the arguments that were passed to a new table to avoid looking up
-- every possible parameter in the frame object.
local args = {}
for k, v in pairs(origArgs) do
-- Make _BLANK a special argument to add a blank parameter. For use in
-- conditional templates etc. it is useful for blank arguments to be
-- ignored, but we still need a way to specify them so that we can do
-- things like [[File:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p
66925f088d11530f2482f04181a3baaaa0ad3d0c
Template:Template error report
10
1074
2346
2020-04-02T18:00:39Z
wikipedia>MusikBot II
0
Protected "[[Template:Template error report]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Template parameter usage]]
ec2d98a233a7e573eee70a96c736db071107fc23
Template:Sandbox other
10
54
103
2020-04-03T00:08:09Z
wikipedia>Evad37
0
Also match subpage names beginning with "sandbox", per [[Template_talk:Sandbox_other#Template-protected_edit_request_on_28_March_2020|edit request]]
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:Tlf
10
57
109
2020-04-13T14:42:57Z
wikipedia>Primefac
0
Primefac moved page [[Template:Tlf]] to [[Template:Template link with link off]]: full name to indicate what it does
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with link off]]
{{Redirect category shell|
{{R from move}}
}}
52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf
Template:Template link with alternate text
10
1304
2639
2020-04-13T14:54:11Z
w>Primefac
0
Primefac moved page [[Template:Tla]] to [[Template:Template link with alternate text]]: full name for clarity
wikitext
text/x-wiki
{{Tlg|subst={{{subst|}}}|nowrap={{{nowrap|}}}|{{{1|}}}<!--
-->|alttext{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!--
-->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!--
-->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!--
-->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!--
-->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!--
-->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!--
-->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!--
-->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!--
-->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!--
-->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!--
-->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude>
{{Documentation}}
</noinclude>
7caf0bb11d2f63149bfc961432b7cf4a05b02cad
Template:Tla
10
1305
2640
2020-04-13T14:54:11Z
w>Primefac
0
Primefac moved page [[Template:Tla]] to [[Template:Template link with alternate text]]: full name for clarity
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with alternate text]]
{{Redirect category shell|
{{R from move}}
}}
5705a62c7a5cc85e5377bd4b550ebeb0cc5b10fa
Template:Lower
10
1206
2535
2020-04-17T00:36:35Z
Ahecht
42
Make substable
wikitext
text/x-wiki
<span style="position: relative; top: {{safesubst<noinclude />:#if:{{{2|}}}|{{{1}}}|0.6em}};">{{{2|{{{1}}}}}}</span><noinclude>
{{documentation}}
</noinclude>
8c1373e7c520b1f0a9dd17ea8a02e8922e84bb99
Module:Category handler/blacklist
828
1025
2248
2020-04-18T08:48:05Z
wikipedia>Jo-Jo Eumerus
0
Per category talk page
Scribunto
text/plain
-- This module contains the blacklist used by [[Module:Category handler]].
-- Pages that match Lua patterns in this list will not be categorised unless
-- categorisation is explicitly requested.
return {
'^Main Page$', -- don't categorise the main page.
-- Don't categorise the following pages or their subpages.
-- "%f[/\0]" matches if the next character is "/" or the end of the string.
'^Wikipedia:Cascade%-protected items%f[/\0]',
'^User:UBX%f[/\0]', -- The userbox "template" space.
'^User talk:UBX%f[/\0]',
-- Don't categorise subpages of these pages, but allow
-- categorisation of the base page.
'^Wikipedia:Template index/.*$',
-- Don't categorise archives.
'/[aA]rchive',
"^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$",
}
87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855
Template:Infobox country/status text
10
562
1263
2020-04-21T23:25:38Z
wikipedia>Jonesey95
0
Fix too small font per [[MOS:FONTSIZE]].
wikitext
text/x-wiki
{{#if:{{{status_text|}}} |{{{status_text}}} |{{#switch:{{ucfirst:{{{status|}}}}}
|Empire=<!--Empire-->
|Nomadic empire|Nomadic Empire=[[Nomadic empire]]
|Ancient Chinese state |Ancient Chinese State=[[Ancient Chinese state]]
|Federation |Federal=<!--Federation-->
|Confederation=<!--Confederation-->
|State union |State Union |Union=<!--State union-->
|Special |Special territory=<!--Special territory-->
|Unrecognized state |Unrecognised state |Unrecognized State |Unrecognised State
|Unrecognized |Unrecognised=[[List of states with limited recognition|Unrecognized state]]
|City-state |City-State |City state |City State
|City={{#if:{{{empire|}}}
| {{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Free Imperial City]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|<br/>(until 1806)}}|}} |#default=City-state {{#if:{{{empire|}}}|of [[{{{empire}}}]]|}} }}
|<!--City-state-->
}}
|Commonwealth realm |Commonwealth Realm=[[Commonwealth Realm]]
|League of Nations Mandate |League of Nations
|Mandate={{#if:{{{empire|}}}
| [[League of Nations mandate|Mandate]] of {{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }}
| [[League of Nations mandate]]
}}
|United Nations Trust Territory| UN Trust Territory
|Trust Territory=[[United Nations Trust Territories|Trust Territory]]<!--
-->{{#if:{{{empire|}}} | of {{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} }}
|Protectorate=Protectorate of <!--
-->{{#if:{{{empire|}}}
|{{#switch:{{{empire}}}
|United Kingdom |UK=the [[United Kingdom]]
|United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}}
}}
|whom? {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}
}}
|Client |Client state |Client State |Puppet |Puppet-state
|Puppet state={{#if:{{{empire|}}}
| {{#switch:{{{empire}}} |First French Empire |France=[[French client republic|Client]] of the [[First French Empire]] |#default=[[Puppet state]] of {{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }}
| Puppet state ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}
}}
|Vassal={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[States of the Holy Roman Empire|State]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|(until 1806)}}|}} |#default=Vassal{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Fief={{#switch:{{{empire|}}} |#default=Fief{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Abbey={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Imperial Abbey]] of the [[Holy Roman Empire]] {{Main other|[[Category:Imperial abbeys|{{{common_name}}}]]}} |#default=Abbey{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Satellite state |Satellite State
|Satellite= Satellite state of the [[Soviet Union]]
|Colony={{#switch:{{ucfirst:{{{empire}}}}}
|United Kingdom |UK |British Empire |Britain=[[Territorial evolution of the British Empire|British colony]]
|England=[[English overseas possessions|English colony]]
|France |First French Empire| French Empire=[[French colonial empire|French colony]]
|NL |Netherlands |The Netherlands=[[Dutch Empire|Dutch colony]]
|Belgium=[[Belgian colonial empire|Belgian colony]]
|Spain |Spanish Empire=[[Spanish Empire|Spanish colony]]
|Portugal=[[Portuguese Empire|Portuguese colony]]
|Germany |German Empire=[[German colonial empire|German colony]]
|Italy=[[Italian Empire|Italian colony]]
|Sweden=[[Swedish overseas colonies|Swedish colony]]
|Denmark=[[Danish colonial empire|Danish colony]]
|Norway=[[Norwegian Empire|Norwegian colony]]
|Russia=[[Russian Empire|Russian colony]]
|Japan=[[Empire of Japan|Japanese colony]]
|#default=Colony ({{#if:{{{empire|}}} |{{{empire}}}) |''of whom?'') {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }}
}}
|Provisional Government |Provisional government
|Provisional=[[Provisional government]]
|Exiled Government |Exiled government
|Exile={{#if:{{{year_exile_start|}}}
| [[Government in exile|In exile]] {{#if:{{{year_exile_end|}}} |({{{year_exile_start}}}{{spaced ndash}}{{{year_exile_end}}}) |since {{{year_exile_start}}} }}
| [[Government in exile]]
}}
|#default={{{status}}}
}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly.
}}</noinclude>
4f904d43bb6c4d628d19a39a391cc105027b09bf
Template:Birth date
10
1361
2696
2020-04-23T08:58:57Z
Uzume
8
update tracking to use [[Module:Wd]] and not the unmaintained and deprecated [[Module:Wikidata]]
wikitext
text/x-wiki
<span style="display:none">(<span class="bday">{{{1|{{{year}}}}}}-{{padleft:{{MONTHNUMBER|{{{2|{{{month}}}}}}}}|2|0}}-{{padleft:{{{3|{{{day}}}}}}|2|0}}</span>)</span>{{#if:{{{df|}}}
|{{#expr:{{{3|{{{day}}}}}}}} {{MONTHNAME|{{{2|{{{month}}}}}}}}
|{{MONTHNAME|{{{2|{{{month<noinclude>|1</noinclude>}}}}}}}} {{#expr:{{{3|{{{day<noinclude>|1</noinclude>}}}}}}}},
}} {{#expr:{{{1|{{{year<noinclude>|1900</noinclude>}}}}}}}}<includeonly><!--
-- Error checks --
-->{{#ifexpr: ( {{{1|{{{year}}}}}} > {{CURRENTYEAR}} )
|  {{error|invalid year}}{{main other|[[Category:Pages using age template with invalid date]]}}
}}{{#if:{{{2|}}}|{{#ifexpr: ( {{{2|{{{month}}}}}} > 12 ) OR ( {{{2|{{{month}}}}}} < 1 )
|  {{error|invalid month}}{{main other|[[Category:Pages using age template with invalid date]]}}|}}
}}{{#if:{{{3|}}}|{{#ifexpr: ( {{{3|{{{day}}}}}} > 31 ) OR ( {{{3|{{{day}}}}}} < 1 )
|  {{error|invalid day}}{{main other|[[Category:Pages using age template with invalid date]]}}|}}
}}{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
de0809a844b9b3f3cf78bd54c37f6436fd2e7233
Template:Sidebar with collapsible lists
10
845
1872
2020-04-23T17:08:31Z
wikipedia>Plastikspork
0
TFD closed as oppose ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
{{#invoke: Sidebar | collapsible }}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
4bd1f39f9101790ed6e315752e377a8ac7a95869
Template:Convinfobox/doc
10
1570
2905
2020-04-24T16:09:17Z
w>Vanisaac
0
missed removing #ifeq
wikitext
text/x-wiki
{{Documentation subpage}}
{{high-use|135543}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
This template is a frontend for {{tl|convert}}. It is intended as a meta-template for use within the code for a template, where the input is not known ''a priori''. For unit conversions within articles, one should use {{tl|convert}} directly.
This template accepts from four to seven unnamed parameters. Odd parameters must be numerical (or empty) and specify the numerical value of a measurement and the intended precision of the conversion. Even parameters must be unit codes as used in {{tlf|convert}}. Named parameters are the same as used by {{tlf|convert}}.
This template differs from {{tlf|convert}} in the following respects.
* The units to convert to and the units to convert from must be specified (therefore there are no default convert-to units).
* Fields for the numerical value of a measurement may be left blank.
* The default is to abbreviate units (where abbreviations exist).
* Range conversions are not available.
This template may be used when it is unknown in which direction the conversion is to be made. The direction is determined as shown in the following examples.
* <code><nowiki>{{convinfobox|100|m2||sqft}}</nowiki></code> → {{convinfobox|100|m2||sqft}}
* <code><nowiki>{{convinfobox||m2|100|sqft}}</nowiki></code> → {{convinfobox||m2|100|sqft}}
==Dual conversions==
Dual conversions may be performed by adding a fifth (possibly blank) and sixth unnamed parameter.
* <code><nowiki>{{convinfobox|375|ml||impoz||USoz}}</nowiki></code> → {{convinfobox|375|ml||impoz||USoz}}
* <code><nowiki>{{convinfobox||ml|40|impoz||USoz}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz}}
* <code><nowiki>{{convinfobox||ml||impoz|32|USoz}}</nowiki></code> → {{convinfobox||ml||impoz|32|USoz}}
==Paired units==
Length may be expressed in feet and inches.
* <code><nowiki>{{convinfobox|180|cm||ft||in}}</nowiki></code> → {{convinfobox|180|cm||ft||in}}
* <code><nowiki>{{convinfobox||cm|5|ft||in}}</nowiki></code> → {{convinfobox||cm|5|ft||in}}
* <code><nowiki>{{convinfobox||cm||ft|120|in}}</nowiki></code> → {{convinfobox||cm||ft|120|in}}
* <code><nowiki>{{convinfobox||cm|5|ft|6|in}}</nowiki></code> → {{convinfobox||cm|5|ft|6|in}}
* <code><nowiki>{{convinfobox||ft||in|180|cm}}</nowiki></code> → {{convinfobox||ft||in|180|cm}}
* <code><nowiki>{{convinfobox|5|ft||in||cm}}</nowiki></code> → {{convinfobox|5|ft||in||cm}}
* <code><nowiki>{{convinfobox||ft|120|in||cm}}</nowiki></code> → {{convinfobox||ft|120|in||cm}}
* <code><nowiki>{{convinfobox|5|ft|6|in||cm}}</nowiki></code> → {{convinfobox|5|ft|6|in||cm}}
Similarly, mass may be expressed in pounds and ounces.
* <code><nowiki>{{convinfobox|8.5|kg||lb||oz}}</nowiki></code> → {{convinfobox|8.5|kg||lb||oz}}
* <code><nowiki>{{convinfobox||kg|4|lb|3|oz}}</nowiki></code> → {{convinfobox||kg|4|lb|3|oz}}
Mass may also be expressed in stone and pounds.
* <code><nowiki>{{convinfobox|65|kg||st||lb}}</nowiki></code> → {{convinfobox|65|kg||st||lb}}
* <code><nowiki>{{convinfobox||kg|10|st||lb}}</nowiki></code> → {{convinfobox||kg|10|st||lb}}
* <code><nowiki>{{convinfobox||kg|10|st|7|lb}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb}}
* <code><nowiki>{{convinfobox||kg||st|145|lb}}</nowiki></code> → {{convinfobox||kg||st|145|lb}}
==Specifying more than one value==
The template currently bases conversions on the first non-blank numerical value ignoring any secondary or tertiary values.
* <code><nowiki>{{convinfobox|100|m2|100|sqft}}</nowiki></code> → {{convinfobox|100|m2|100|sqft}}
* <code><nowiki>{{convinfobox|375|ml|40|impoz||USoz}}</nowiki></code> → {{convinfobox|375|ml|40|impoz||USoz}}
* <code><nowiki>{{convinfobox|375|ml||impoz|32|USoz}}</nowiki></code> → {{convinfobox|375|ml||impoz|32|USoz}}
* <code><nowiki>{{convinfobox||ml|40|impoz|32|USoz}}</nowiki></code> → {{convinfobox||ml|40|impoz|32|USoz}}
==Rounding==
As with {{tlf|convert}} rounding can be done automatically or manually by specifying the precision and/or number of significant figures in the converted value. The number of significant figures can be determined by the parameter {{para|sigfig|}}. The precision can be determined by the fifth (if there is no sixth) or seventh (if there is a sixth) unnamed parameter as shown in the examples below.
* <code><nowiki>{{convinfobox|100|m2||sqft|4}}</nowiki></code> → {{convinfobox|100|m2||sqft|4}}
* <code><nowiki>{{convinfobox|100|m2||sqft|sigfig=4}}</nowiki></code> → {{convinfobox|100|m2||sqft|sigfig=4}}
* <code><nowiki>{{convinfobox||ml|40|impoz||USoz|2}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz|2}}
* <code><nowiki>{{convinfobox||ml|40|impoz||USoz|sigfig=3}}</nowiki></code> → {{convinfobox||ml|40|impoz||USoz|sigfig=3}}
* <code><nowiki>{{convinfobox||kg|10|st|7|lb|3}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb|3}}
* <code><nowiki>{{convinfobox||kg|10|st|7|lb|sigfig=5}}</nowiki></code> → {{convinfobox||kg|10|st|7|lb|sigfig=5}}
Specify precision "0" to prevent rounding of values ending in zero:
* kilograms (kg)
** with "0": <code><nowiki>{{convinfobox|110|kg||lb|0}}</nowiki></code> → {{convinfobox|110|kg||lb|0}}
** without: <code><nowiki>{{convinfobox|110|kg||lb}}</nowiki></code> → {{convinfobox|110|kg||lb}}
* pounds (lb)
** with "0": <code><nowiki>{{convinfobox||kg|240|lb|0}}</nowiki></code> → {{convinfobox||kg|240|lb|0}}
** without: <code><nowiki>{{convinfobox||kg|240|lb}}</nowiki></code> → {{convinfobox||kg|240|lb}}
* metres (m)
** with "0": <code><nowiki>{{convinfobox|100|m||ft|0}}</nowiki></code> → {{convinfobox|100|m||ft|0}}
** without: <code><nowiki>{{convinfobox|100|m||ft}}</nowiki></code> → {{convinfobox|100|m||ft}}
* inches (in)
** with "0": <code><nowiki>{{convinfobox||cm|100|in|0}}</nowiki></code> → {{convinfobox||cm|100|in|0}}
** without: <code><nowiki>{{convinfobox||cm|100|in}}</nowiki></code> → {{convinfobox||cm|100|in}}
==Leaving all numerical fields blank==
If all numerical value fields are left blank the template returns nothing.
* <code><nowiki>{{convinfobox||m2||sqft}}</nowiki></code> → {{convinfobox||m2||sqft}}
* <code><nowiki>{{convinfobox||ml||impoz||USoz}}</nowiki></code> → {{convinfobox||ml||impoz||USoz}}
==See also==
; Supporting templates
* [[Template:Convert]] (invokes [[Module:Convert]])
* [[:Category:Subtemplates of Template Convinfobox]]
** [[Template:Convinfobox/2]]
** [[Template:Convinfobox/3]]
** [[Template:Convinfobox/pri2]]
** [[Template:Convinfobox/pri3]]
** [[Template:Convinfobox/prisec3]]
** [[Template:Convinfobox/priter3]]
** [[Template:Convinfobox/sec2]]
** [[Template:Convinfobox/sec3]]
** [[Template:Convinfobox/secter3]]
** [[Template:Convinfobox/ter3]]
; Templates transcluding {{tl|convinfobox}}
{{Collapsible list | framestyle = border 1px; | titlestyle = text-align:left;background-color:lightgrey; |
# [[Template:Infobox amusement park]]
# [[Template:Infobox animal]]
# [[Template:Infobox bandy biography]]
# [[Template:Infobox body of water]]
# [[Template:Infobox cemetery]]
# [[Template:Infobox college football player]]
# [[Template:Infobox combat robot]]
# [[Template:Infobox diocese]]
# [[Template:Infobox figure skater]]
# [[Template:Infobox football biography]]
# [[Template:Infobox hiking trail]]
# [[Template:Infobox islands/area]]
#* [[Template:Infobox islands]] (via [[Template:Infobox islands/area]])
# [[Template:Infobox mountain]]
#* [[Template:Infobox Berg]] (via [[Template:Infobox mountain]])
# [[Template:Infobox mountain range]]
#* [[Template:Infobox Gebirgsgruppe]] (via [[Template:Infobox mountain range]])
# [[Template:Infobox NFL player]]
# [[Template:Infobox person]]
# [[Template:Infobox pipeline]]
# [[Template:Infobox power transmission line]]
# [[Template:Infobox protected area]]
# [[Template:Infobox rail line]]
#* [[Template:Infobox Paris Metro line]] (via [[Template:Infobox rail line]])
# [[Template:Infobox rugby biography]]
# [[Template:Infobox rugby league biography]]
# [[Template:Infobox sportsperson]]
#* [[Template:Infobox biathlete]] (via [[Template:Infobox sportsperson]])
#* [[Template:Infobox boxer (amateur)]] (via [[Template:Infobox sportsperson]])
#* [[Template:Infobox sailor]] (via [[Template:Infobox sportsperson]])
#* [[Template:Infobox speed skater]] (via [[Template:Infobox sportsperson]])
#* [[Template:Infobox sport wrestler]] (via [[Template:Infobox sportsperson]])
#* [[Template:Infobox swimmer]] (via [[Template:Infobox sportsperson]])
# [[Template:Infobox tennis biography]]
# [[Template:Infobox themed area]]
# [[Template:Infobox valley]]
# [[Template:Infobox water park]]
# [[Template:Infobox YouTube personality]]
}}
{{Math templates|conversion}}
<includeonly>{{Sandbox other||
<!-- Categories go here -->
[[Category:Subtemplates of Template Convinfobox| ]]
[[Category:Convert-like templates|{{SUBPAGENAME}}]]
}}</includeonly>
bcd9e864b587a1b0402f275454301f7b6e85e425
Template:Cslist
10
612
1382
2020-04-25T18:00:10Z
wikipedia>MusikBot II
0
Protected "[[Template:Cslist]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<templatestyles src="Cslist/styles.css" />{{#invoke:Cslist |makelist}}<noinclude>
{{documentation}}
</noinclude>
8de0ef2dc8a52f1f2d050ca747d583cd776a0b84
Module:WikidataIB/titleformats
828
1233
2566
2020-04-30T16:11:19Z
w>RexxS
0
add magazine
Scribunto
text/plain
--[[
To satisfy Wikipedia:Manual of Style/Titles, certain types of items are italicised,
and others are quoted.
This submodule lists the entity-ids used in 'instance of' (P31),
which allows a module to identify the values that should be formatted.
The table p.formats is indexed by entity-id, and contains the value " or ''
--]]
local p = {}
p.italics = {
"Q571", -- book
"Q13593966", -- literary trilogy
"Q277759", -- book series
"Q2188189", -- musical work
"Q11424", -- film
"Q13593818", -- film trilogy
"Q24856", -- film series
"Q5398426", -- television series
"Q482994", -- album
"Q169930", -- extended play
"Q1760610", -- comic book
"Q7889", -- video game
"Q7058673", -- video game series
"Q25379", -- play
"Q2743", -- musical
"Q37484", -- epic poem
"Q41298", -- magazine
}
p.quotes = {
"Q207628", -- musical composition
}
p.size = 0
p.formats = {}
for i, v in ipairs(p.italics) do
p.formats[v] = "''"
p.size = p.size + 1
end
for i, v in ipairs(p.quotes) do
p.formats[v] = '"'
p.size = p.size + 1
end
return p
aecc52ff69e56d315f5b60dc21d02dd94a63dfea
Template:Flagicon/core
10
1174
2503
2020-04-30T21:02:17Z
Ahecht
42
safesubst<noinclude />:
wikitext
text/x-wiki
<span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{safesubst<noinclude />:#if:{{{flag alias|}}}|{{{flag alias}}}|Flag placeholder.svg}}}}}|{{safesubst<noinclude />:#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{safesubst<noinclude />:#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt={{{alias}}}|link={{{alias}}}]]</span><noinclude>{{documentation}}</noinclude>
14677aa18a0f6a866112637a51ba28adf4dd4bbe
Template:Allow wrap
10
1523
2858
2020-05-06T01:06:14Z
w>Plastikspork
0
Per [[Wikipedia:Templates for discussion/Log/2020 April 27#Template:Allow wrap]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wrap]]
d248c393d32080c1c735591d205ab0fdca5737f1
Template:Wrap
10
1493
2828
2020-05-06T01:08:38Z
w>Plastikspork
0
Merged
wikitext
text/x-wiki
<includeonly><span class="wrap">{{{1| }}}</span></includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
aa85f77c2939e3f50fa04a160b08510cf331ee11
Template:Flagicon image
10
1492
2827
2020-05-10T01:25:28Z
w>Ɱ
0
add link param per talk
wikitext
text/x-wiki
<span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude>
057d0b94a9367359ad010c3da1fcdcb1e880dcb5
Module:ISO 3166/data/GR
828
1457
2792
2020-05-18T22:17:47Z
w>Drmccreedy
0
Undid revision 957444222 by [[Special:Contributions/Aliwal2012|Aliwal2012]] ([[User talk:Aliwal2012|talk]]) Revert edit that contradicts the source at https://www.iso.org/obp/ui/#iso:code:3166:GR
Scribunto
text/plain
return {
lang = "el",
-- Administrative regions & self-governed part
["A"] = {name="Eastern Macedonia and Thrace",isoname="Anatolikí Makedonía kai Thráki"},
["B"] = {name="Central Macedonia",isoname="Kentrikí Makedonía"},
["C"] = {name="Western Macedonia",isoname="Dytikí Makedonía"},
["D"] = {name="Epirus",isoname="Ípeiros"},
["E"] = {name="Thessaly",isoname="Thessalía"},
["F"] = {name="Ionian Islands",isoname="Ionía Nísia"},
["G"] = {name="Western Greece",isoname="Dytikí Elláda"},
["H"] = {name="Central Greece",isoname="Stereá Elláda"},
["I"] = {name="Attica",isoname="Attikí"},
["J"] = {name="Peloponnese",isoname="Pelopónnisos"},
["K"] = {name="North Aegean",isoname="Vóreio Aigaío"},
["L"] = {name="South Aegean",isoname="Nótio Aigaío"},
["M"] = {name="Crete",isoname="Kríti"},
["69"] = {name="Mount Athos",isoname="Ágion Óros"}
}
d64f5cf8df26c3d16093a20be7a4fa19074a1410
Module:For loop
828
569
1286
2020-05-22T07:38:08Z
wikipedia>Johnuniq
0
require [[Module:Template invocation]] only if required (see [[Template talk:Post-nominals#Use of Module:Template_invocation]]); clean whitespace, variables
Scribunto
text/plain
-- This module implements {{for loop}}.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}
function p.main(frame)
local args = getArgs(frame, {
trim = false,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local template = args['call'] or 'void'
local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting()
local variableParam = args.pv
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters
local variableValPrefix = args.prefix or ''
local variableValPostfix = args.postfix or ''
local sep = args[1] or ''
local constantArgs = p.getConstants(args)
local variableVals = p.getVariableVals(args)
local result = ''
local addSeparator = false;
for _, v in ipairs(variableVals) do
v = mw.text.trim(v)
if #v > 0 or not yesno(args.skipBlanks) then
if addSeparator then
result = result .. sep
end
addSeparator = true;
local targs = constantArgs
targs[variableParam] = variableValPrefix .. v .. variableValPostfix
if calltemplates then
local output = p.callTemplate(template, targs)
if #mw.text.trim(output) == 0 then
addSeparator = false
end
result = result .. output
else
local makeTemplate = require('Module:Template invocation').invocation
result = result .. makeTemplate(template, targs)
end
end
end
return result
end
function p.getConstants(args)
local constantArgNums = p.getArgNums(args, 'pc', 'n')
local constantArgs = {}
for _, num in ipairs(constantArgNums) do
local keyArg = 'pc' .. tostring(num) .. 'n'
local valArg = 'pc' .. tostring(num) .. 'v'
local key = args[keyArg]
key = tonumber(key) or key
local value = args[valArg]
constantArgs[key] = value
end
return constantArgs
end
function p.getVariableVals(args)
local variableVals = {}
if args.start or args.stop or args.by then
if args[2] then
error("Both start/stop/by and numbered parameters specified")
end
local start = tonumber(args.start or 1)
local stop = tonumber(args.stop or 1)
local by = tonumber(args.by or 1)
for i = start, stop, by do
variableVals [#variableVals + 1] = i
end
else
for i, v in ipairs(args) do
if i ~= 1 then
variableVals[i - 1] = v
end
end
end
return variableVals
end
function p.getArgNums(args, prefix, suffix)
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix and suffix.
local nums = {}
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
for k, _ in pairs(args) do
local num = tostring(k):match(pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
table.sort(nums)
return nums
end
function p.callTemplate(template, targs)
return mw.getCurrentFrame():expandTemplate{title = template, args = targs}
end
return p
4ed4682b1fd3fbf2bf0836b46dd19bc0363d40e2
Module:Color contrast/colors
828
150
349
2020-06-03T20:27:38Z
MrJaroslavik
18
1 revision imported: :)
Scribunto
text/plain
return {
aliceblue = 0.92880068253475,
antiquewhite = 0.84646951707754,
aqua = 0.7874,
aquamarine = 0.8078549208338,
azure = 0.97265264954166,
beige = 0.8988459998705,
bisque = 0.80732327372979,
black = 0,
blanchedalmond = 0.85084439608156,
blue = 0.0722,
blueviolet = 0.12622014321946,
brown = 0.098224287876511,
burlywood = 0.51559844533893,
cadetblue = 0.29424681085422,
chartreuse = 0.76032025902623,
chocolate = 0.23898526114557,
coral = 0.37017930872924,
cornflowerblue = 0.30318641994179,
cornsilk = 0.93562110372965,
crimson = 0.16042199953026,
cyan = 0.7874,
darkblue = 0.018640801980939,
darkcyan = 0.20329317839046,
darkgoldenrod = 0.27264703559993,
darkgray = 0.39675523072563,
darkgreen = 0.091143429047575,
darkgrey = 0.39675523072563,
darkkhaki = 0.45747326349994,
darkmagenta = 0.07353047651207,
darkolivegreen = 0.12651920884889,
darkorange = 0.40016167026524,
darkorchid = 0.13413142174857,
darkred = 0.054889674531132,
darksalmon = 0.40541471563381,
darkseagreen = 0.43789249325969,
darkslateblue = 0.065792846227988,
darkslategray = 0.067608151928044,
darkslategrey = 0.067608151928044,
darkturquoise = 0.4874606277449,
darkviolet = 0.10999048339343,
deeppink = 0.23866895828276,
deepskyblue = 0.44481603395575,
dimgray = 0.14126329114027,
dimgrey = 0.14126329114027,
dodgerblue = 0.27442536991456,
firebrick = 0.10724525535015,
floralwhite = 0.95922484825004,
forestgreen = 0.18920812076002,
fuchsia = 0.2848,
gainsboro = 0.71569350050648,
ghostwhite = 0.94311261886323,
gold = 0.69860877428159,
goldenrod = 0.41919977809569,
gray = 0.2158605001139,
green = 0.15438342968146,
greenyellow = 0.80609472611453,
grey = 0.2158605001139,
honeydew = 0.96336535554782,
hotpink = 0.34658438169715,
indianred = 0.21406134963884,
indigo = 0.03107561486337,
ivory = 0.99071270600615,
khaki = 0.77012343394121,
lavender = 0.80318750514521,
lavenderblush = 0.90172748631046,
lawngreen = 0.73905893124963,
lemonchiffon = 0.94038992245622,
lightblue = 0.63709141280807,
lightcoral = 0.35522120733135,
lightcyan = 0.94587293494829,
lightgoldenrodyellow = 0.93348351018297,
lightgray = 0.65140563741982,
lightgreen = 0.69091979956865,
lightgrey = 0.65140563741982,
lightpink = 0.58566152734898,
lightsalmon = 0.4780675225206,
lightseagreen = 0.35050145117042,
lightskyblue = 0.56195637618331,
lightslategray = 0.23830165007287,
lightslategrey = 0.23830165007287,
lightsteelblue = 0.53983888284666,
lightyellow = 0.98161818392882,
lime = 0.7152,
limegreen = 0.44571042246098,
linen = 0.88357340984379,
magenta = 0.2848,
maroon = 0.045891942324215,
mediumaquamarine = 0.49389703310801,
mediumblue = 0.044077780212328,
mediumorchid = 0.21639251153773,
mediumpurple = 0.22905858091648,
mediumseagreen = 0.34393112338131,
mediumslateblue = 0.20284629471622,
mediumspringgreen = 0.70704308194184,
mediumturquoise = 0.5133827926448,
mediumvioletred = 0.14371899849357,
midnightblue = 0.02071786635086,
mintcream = 0.97834604947588,
mistyrose = 0.82183047859185,
moccasin = 0.80083000991567,
navajowhite = 0.76519682342785,
navy = 0.015585128108224,
oldlace = 0.91900633405549,
olive = 0.20027537200568,
olivedrab = 0.22593150951929,
orange = 0.4817026703631,
orangered = 0.25516243753416,
orchid = 0.31348806761439,
palegoldenrod = 0.78792647887614,
palegreen = 0.77936759006353,
paleturquoise = 0.76436077921714,
palevioletred = 0.28754994117889,
papayawhip = 0.87797100199835,
peachpuff = 0.74905589878251,
peru = 0.30113074877936,
pink = 0.63271070702466,
plum = 0.45734221587969,
powderblue = 0.68254586500605,
purple = 0.061477070432439,
rebeccapurple = 0.07492341159447,
red = 0.2126,
rosybrown = 0.32319457649407,
royalblue = 0.16663210743188,
saddlebrown = 0.097922285020521,
salmon = 0.36977241527596,
sandybrown = 0.46628543696283,
seagreen = 0.19734199706275,
seashell = 0.92737862206922,
sienna = 0.13697631337098,
silver = 0.52711512570581,
skyblue = 0.55291668518184,
slateblue = 0.14784278062136,
slategray = 0.20896704076536,
slategrey = 0.20896704076536,
snow = 0.96533341834849,
springgreen = 0.73052306068529,
steelblue = 0.20562642207625,
tan = 0.48237604163921,
teal = 0.16996855778968,
thistle = 0.56818401093733,
tomato = 0.30638612719415,
turquoise = 0.5895536427578,
violet = 0.40315452986676,
wheat = 0.74909702820482,
white = 1,
whitesmoke = 0.91309865179342,
yellow = 0.9278,
yellowgreen = 0.50762957208707,
}
6ae47fdb24de4eed5ec26d203faf5341a388987b
Template:If empty
10
425
924
2020-06-03T20:37:55Z
MrJaroslavik
18
1 revision imported: :)
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}
0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8
Template:Ombox
10
111
468
269
2020-06-03T20:37:57Z
MrJaroslavik
18
1 revision imported: :)
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Module:If empty
828
426
926
2020-06-03T20:37:59Z
MrJaroslavik
18
1 revision imported: :)
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
-- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank,
-- even though there's really no legitimate use case for this. At some point, this will be removed.
local lowestNil = math.huge
for i = 8,1,-1 do
if args[i] == nil then
args[i] = ''
lowestNil = i
end
end
for k,v in ipairs(args) do
if v ~= '' then
if lowestNil < k then
-- If any uses of this template depend on the behavior above, add them to a tracking category.
-- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified
-- by it.
frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'})
frame:extensionTag('references', '', {group = 'TrackingCategory'})
end
return v
end
end
end
return p
39b83f8d043283ec767774d927e2f6f3fb3078b4
Template:Sidebar
10
28
51
2020-06-04T02:43:13Z
wikipedia>Primefac
0
TFD closed as keep ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
{{#invoke:Sidebar|sidebar}}<noinclude>
{{documentation}}</noinclude>
ab2498000a99daf324f656b0badd187b4a3e2b42
Template:Birth date and age
10
1241
2575
2020-06-07T01:32:39Z
Uzume
8
update tracking to use [[Module:Wd]] instead of the unmaintained and deprecated [[Module:Wikidata]]
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:age|birth_date_and_age}}{{#invoke:Check for unknown parameters|check|ignoreblank=y|preview=Page using [[Template:Birth date and age]] with unknown parameter "_VALUE_"|unknown={{main other|[[Category:Pages using birth date and age template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|1|2|3|day|month|year|df|mf}}{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
55c7a1b79d4b09cf1b1c81565ac2bd7da422612e
Template:Death year and age
10
1380
2715
2020-06-07T01:44:35Z
Uzume
8
update tracking to use [[Module:Wd]] instead of the unmaintained and deprecated [[Module:Wikidata]]
wikitext
text/x-wiki
<includeonly>{{#if:{{{3|}}}|{{MONTHNAME|{{{3|}}}}} {{{1|}}}|{{{1|}}}}} (aged {{#expr:{{{1}}}-{{{2}}}-1}}–{{#expr:{{{1}}}-{{{2}}}}}){{#invoke:Check for unknown parameters|check|ignoreblank=y|preview=Page using [[Template:Death year and age]] with unknown parameter "_VALUE_"|unknown=[[Category:Pages using death year and age template with unknown parameters|_VALUE_{{PAGENAME}}]]|1|2|3}}{{#ifeq: {{NAMESPACENUMBER}} | 0
| {{#if: {{#invoke:wd|label|raw}}
| {{#if: {{#invoke:String|match|{{#invoke:wd|properties|raw|P31}},|Q5,|1|1|true|}}
| {{#if: {{#invoke:wd|properties|raw|P570}}
|
| [[Category:Date of death not in Wikidata]]
}}{{#if: {{#invoke:wd|properties|raw|P569}}
|
| [[Category:Date of birth not in Wikidata]]
}}
}}
| [[Category:Articles without Wikidata item]]
}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
8323e50ca35831b2f1c4809287d485f7d2d6af78
Template:Navbox with columns
10
1548
2883
2020-06-08T16:31:04Z
Ahecht
42
Reduce [[WP:PEIS]]
wikitext
text/x-wiki
<!--
Please do not edit without discussion first as this is a "VERY complex" template.
-->{{#invoke:Navbox|navbox
|name = {{{name|}}}
|navbar = {{{navbar|}}}
|state = {{{state|}}}
|border = {{{border|{{{1|}}}}}}
|title = {{{title|}}}
|above = {{{above|}}}
|image = {{{image|}}}
|imageleft = {{{imageleft|}}}
|bodyclass = {{{bodyclass|}}}
|titleclass = {{{titleclass|}}}
|aboveclass = {{{aboveclass|}}}
|belowclass = {{{belowclass|}}}
|groupclass = {{{groupclass|}}}
|listclass = {{{listclass|}}}
|style = {{{style|}}}{{{bodystyle|}}}
|basestyle = {{{basestyle|}}}
|titlestyle = {{{titlestyle|}}}
|abovestyle = {{{abovestyle|}}}
|belowstyle = {{{belowstyle|}}}
|imagestyle = {{{imagestyle|}}}
|imageleftstyle = {{{imageleftstyle|}}}
|oddstyle = {{{oddstyle|}}}
|evenstyle = {{{evenstyle|}}}
|{{#if:{{{evenodd|}}}|evenodd|void}} = {{{evenodd|}}}
|list1padding = 0px;
|list1 = <!--
--><table class="navbox-columns-table" style="border-spacing: 0px; text-align:left;<!--
-->{{#if:{{{col1header|}}}{{{fullwidth|}}}|width:100%;<!--
-->|width:auto; margin-left:auto; margin-right:auto;}}{{{coltablestyle|}}}"><!--
--- Header row ---
-->{{#if:{{{col1header|}}}|<tr><!--
--><td class="navbox-abovebelow" <!--
-->colspan={{{col1headercolspan|1}}} style="<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col1headerstyle|}}}">{{{col1header}}}</td><!--
-->{{#if:{{{col2header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col2headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col2headerstyle|}}}">{{{col2header}}}</td>}}<!--
-->{{#if:{{{col3header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col3headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col3headerstyle|}}}">{{{col3header}}}</td>}}<!--
-->{{#if:{{{col4header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col4headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col4headerstyle|}}}">{{{col4header}}}</td>}}<!--
-->{{#if:{{{col5header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col5headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col5headerstyle|}}}">{{{col5header}}}</td>}}<!--
-->{{#if:{{{col6header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col6headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col6headerstyle|}}}">{{{col6header}}}</td>}}<!--
-->{{#if:{{{col7header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col7headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col7headerstyle|}}}">{{{col7header}}}</td>}}<!--
-->{{#if:{{{col8header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col8headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col8headerstyle|}}}">{{{col8header}}}</td>}}<!--
-->{{#if:{{{col9header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col9headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col9headerstyle|}}}">{{{col9header}}}</td>}}<!--
-->{{#if:{{{col10header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col10headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col10headerstyle|}}}">{{{col10header}}}</td>}}<!--
-->{{#if:{{{col11header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col11headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col11headerstyle|}}}">{{{col11header}}}</td>}}<!--
-->{{#if:{{{col12header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col12headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col12headerstyle|}}}">{{{col12header}}}</td>}}<!--
-->{{#if:{{{col13header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col13headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col13headerstyle|}}}">{{{col13header}}}</td>}}<!--
-->{{#if:{{{col14header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col14headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col14headerstyle|}}}">{{{col14header}}}</td>}}<!--
-->{{#if:{{{col15header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col15headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col15headerstyle|}}}">{{{col15header}}}</td>}}<!--
-->{{#if:{{{col16header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col16headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col16headerstyle|}}}">{{{col16header}}}</td>}}<!--
-->{{#if:{{{col17header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col17headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col17headerstyle|}}}">{{{col17header}}}</td>}}<!--
-->{{#if:{{{col18header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col18headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col18headerstyle|}}}">{{{col18header}}}</td>}}<!--
-->{{#if:{{{col19header|}}}|<td class="navbox-abovebelow" <!--
-->colspan={{{col19headercolspan|1}}} style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col19headerstyle|}}}">{{{col19header}}}</td>}}<!--
-->{{#if:{{{col20header|}}}|<td class="navbox-abovebelow" <!--
-->style="border-left:2px solid #fdfdfd;<!--
-->font-weight:bold;{{{colheaderstyle|}}}{{{col20headerstyle|}}}">{{{col20header}}}</td>}}<!--
--></tr>}}<!--
--- Main columns---
--><tr style="vertical-align:top;"><!--
-->{{#if:{{{col1|}}}|<!--
-->{{#if:{{{col1header|}}}{{{col1footer|}}}{{{fullwidth|}}}|<!--
-->|{{#switch:{{{padding|}}}|off|0|0em|0px|0%|0;|0em;|0px;|0%;=<!--
-->|#default=<td style="width:{{{padding|5em}}};"> </td>}}}}<!--
--><td class="navbox-list" style="padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col1style|}}};width:{{{col1width|{{{colwidth|10em}}}}}};"><div>
{{{col1}}}
</div></td>}}<!--
-->{{#if:{{{col2|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col2style|}}};width:{{{col2width|{{{colwidth|10em}}}}}};"><div>
{{{col2}}}
</div></td>}}<!--
-->{{#if:{{{col3|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col3style|}}};width:{{{col3width|{{{colwidth|10em}}}}}};"><div>
{{{col3}}}
</div></td>}}<!--
-->{{#if:{{{col4|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col4style|}}};width:{{{col4width|{{{colwidth|10em}}}}}};"><div>
{{{col4}}}
</div></td>}}<!--
-->{{#if:{{{col5|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col5style|}}};width:{{{col5width|{{{colwidth|10em}}}}}};"><div>
{{{col5}}}
</div></td>}}<!--
-->{{#if:{{{col6|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col6style|}}};width:{{{col6width|{{{colwidth|10em}}}}}};"><div>
{{{col6}}}
</div></td>}}<!--
-->{{#if:{{{col7|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col7style|}}};width:{{{col7width|{{{colwidth|10em}}}}}};"><div>
{{{col7}}}
</div></td>}}<!--
-->{{#if:{{{col8|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col8style|}}};width:{{{col8width|{{{colwidth|10em}}}}}};"><div>
{{{col8}}}
</div></td>}}<!--
-->{{#if:{{{col9|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col9style|}}};width:{{{col9width|{{{colwidth|10em}}}}}};"><div>
{{{col9}}}
</div></td>}}<!--
-->{{#if:{{{col10|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col10style|}}};width:{{{col10width|{{{colwidth|10em}}}}}};"><div>
{{{col10}}}
</div></td>}}<!--
-->{{#if:{{{col11|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col11style|}}};width:{{{col11width|{{{colwidth|10em}}}}}};"><div>
{{{col11}}}
</div></td>}}<!--
-->{{#if:{{{col12|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col12style|}}};width:{{{col12width|{{{colwidth|10em}}}}}};"><div>
{{{col12}}}
</div></td>}}<!--
-->{{#if:{{{col13|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col13style|}}};width:{{{col13width|{{{colwidth|10em}}}}}};"><div>
{{{col13}}}
</div></td>}}<!--
-->{{#if:{{{col14|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col14style|}}};width:{{{col14width|{{{colwidth|10em}}}}}};"><div>
{{{col14}}}
</div></td>}}<!--
-->{{#if:{{{col15|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col15style|}}};width:{{{col15width|{{{colwidth|10em}}}}}};"><div>
{{{col15}}}
</div></td>}}<!--
-->{{#if:{{{col16|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col16style|}}};width:{{{col16width|{{{colwidth|10em}}}}}};"><div>
{{{col16}}}
</div></td>}}<!--
-->{{#if:{{{col17|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col17style|}}};width:{{{col17width|{{{colwidth|10em}}}}}};"><div>
{{{col17}}}
</div></td>}}<!--
-->{{#if:{{{col18|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col18style|}}};width:{{{col18width|{{{colwidth|10em}}}}}};"><div>
{{{col18}}}
</div></td>}}<!--
-->{{#if:{{{col19|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{oddcolstyle|}}};{{{col19style|}}};width:{{{col19width|{{{colwidth|10em}}}}}};"><div>
{{{col19}}}
</div></td>}}<!--
-->{{#if:{{{col20|}}}|<td class="navbox-list" style="border-left:2px solid #fdfdfd;padding:0px;<!--
-->{{{colstyle|}}};{{{evencolstyle|}}};{{{col20style|}}};width:{{{col20width|{{{colwidth|10em}}}}}};"><div>
{{{col20}}}
</div></td>}}<!--
--></tr><!--
--- Footer row ---
-->{{#if:{{{col1footer|}}}|<!--
--><tr><!--
--><td class="navbox-abovebelow" colspan={{{col1footercolspan|1}}} style="<!--
-->font-weight:bold;{{{colfooterstyle|}}};{{{col1footerstyle|}}}">{{{col1footer}}}</td><!--
-->{{#if:{{{col2footer|}}}|<td class="navbox-abovebelow" colspan={{{col2footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col2footerstyle|}}}">{{{col2footer}}}</td>}}<!--
-->{{#if:{{{col3footer|}}}|<td class="navbox-abovebelow" colspan={{{col3footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col3footerstyle|}}}">{{{col3footer}}}</td>}}<!--
-->{{#if:{{{col4footer|}}}|<td class="navbox-abovebelow" colspan={{{col4footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col4footerstyle|}}}">{{{col4footer}}}</td>}}<!--
-->{{#if:{{{col5footer|}}}|<td class="navbox-abovebelow" colspan={{{col5footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col5footerstyle|}}}">{{{col5footer}}}</td>}}<!--
-->{{#if:{{{col6footer|}}}|<td class="navbox-abovebelow" colspan={{{col6footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col6footerstyle|}}}">{{{col6footer}}}</td>}}<!--
-->{{#if:{{{col7footer|}}}|<td class="navbox-abovebelow" colspan={{{col7footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col7footerstyle|}}}">{{{col7footer}}}</td>}}<!--
-->{{#if:{{{col8footer|}}}|<td class="navbox-abovebelow" colspan={{{col8footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col8footerstyle|}}}">{{{col8footer}}}</td>}}<!--
-->{{#if:{{{col9footer|}}}|<td class="navbox-abovebelow" colspan={{{col9footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col9footerstyle|}}}">{{{col9footer}}}</td>}}<!--
-->{{#if:{{{col10footer|}}}|<td class="navbox-abovebelow" colspan={{{col10footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col10footerstyle|}}}">{{{col10footer}}}</td>}}<!--
-->{{#if:{{{col11footer|}}}|<td class="navbox-abovebelow" colspan={{{col11footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col11footerstyle|}}}">{{{col11footer}}}</td>}}<!--
-->{{#if:{{{col12footer|}}}|<td class="navbox-abovebelow" colspan={{{col12footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col12footerstyle|}}}">{{{col12footer}}}</td>}}<!--
-->{{#if:{{{col13footer|}}}|<td class="navbox-abovebelow" colspan={{{col13footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col13footerstyle|}}}">{{{col13footer}}}</td>}}<!--
-->{{#if:{{{col14footer|}}}|<td class="navbox-abovebelow" colspan={{{col14footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col14footerstyle|}}}">{{{col14footer}}}</td>}}<!--
-->{{#if:{{{col15footer|}}}|<td class="navbox-abovebelow" colspan={{{col15footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col15footerstyle|}}}">{{{col15footer}}}</td>}}<!--
-->{{#if:{{{col16footer|}}}|<td class="navbox-abovebelow" colspan={{{col16footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col16footerstyle|}}}">{{{col16footer}}}</td>}}<!--
-->{{#if:{{{col17footer|}}}|<td class="navbox-abovebelow" colspan={{{col17footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col17footerstyle|}}}">{{{col17footer}}}</td>}}<!--
-->{{#if:{{{col18footer|}}}|<td class="navbox-abovebelow" colspan={{{col18footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col18footerstyle|}}}">{{{col18footer}}}</td>}}<!--
-->{{#if:{{{col19footer|}}}|<td class="navbox-abovebelow" colspan={{{col19footercolspan|1}}} style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col19footerstyle|}}}">{{{col19footer}}}</td>}}<!--
-->{{#if:{{{col20footer|}}}|<td class="navbox-abovebelow" style="<!--
-->border-left:2px solid #fdfdfd;font-weight:bold;{{{colfooterstyle|}}};{{{col20footerstyle|}}}">{{{col20footer}}}</td>}}<!--
-->}}<!--
--></tr></table>{{#if:{{{col1header|}}}{{{col1|}}}{{{col1footer|}}}||[[Category:Pages using navbox columns without the first column]]}}
<!-- Allow a few additional groups/lists after columns -->
|liststyle = {{{liststyle|}}}
|list1style = background:transparent;color:inherit;
|list3style = {{{list1style|}}}
|list4style = {{{list2style|}}}
|list5style = {{{list3style|}}}
|list6style = {{{list4style|}}}
|list7style = {{{list5style|}}}
|list8style = {{{list6style|}}}
|list9style = {{{list7style|}}}
|list10style = {{{list8style|}}}
|list11style = {{{list9style|}}}
|list12style = {{{list10style|}}}
|list3 = {{{list1|}}}
|list4 = {{{list2|}}}
|list5 = {{{list3|}}}
|list6 = {{{list4|}}}
|list7 = {{{list5|}}}
|list8 = {{{list6|}}}
|list9 = {{{list7|}}}
|list10 = {{{list8|}}}
|list11 = {{{list9|}}}
|list12 = {{{list10|}}}
|groupstyle = {{{groupstyle|}}}
|group3style = {{{group1style|}}}
|group4style = {{{group2style|}}}
|group5style = {{{group3style|}}}
|group6style = {{{group4style|}}}
|group7style = {{{group5style|}}}
|group8style = {{{group6style|}}}
|group9style = {{{group7style|}}}
|group10style = {{{group8style|}}}
|group11style = {{{group9style|}}}
|group12style = {{{group10style|}}}
|group3 = {{{group1|}}}
|group4 = {{{group2|}}}
|group5 = {{{group3|}}}
|group6 = {{{group4|}}}
|group7 = {{{group5|}}}
|group8 = {{{group6|}}}
|group9 = {{{group7|}}}
|group10 = {{{group8|}}}
|group11 = {{{group9|}}}
|group12 = {{{group10|}}}
|below = {{{below|}}}
|tracking = no
}}<noinclude>
{{documentation}}
<!---Please add metadata to the <includeonly> section at the bottom of the /doc subpage--->
</noinclude>
894f4dbf70ef056dc92f156e092c2d819b49b95d
Template:MONTHNAME
10
1342
2677
2020-06-10T21:21:03Z
w>Primefac
0
Reverted edits by [[Special:Contribs/Primefac|Primefac]] ([[User talk:Primefac|talk]]) to last version by Jo-Jo Eumerus
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{#switch:{{MONTHNUMBER|{{{1}}}}}|1=January|2=February|3=March|4=April|5=May|6=June|7=July|8=August|9=September|10=October|11=November|12=December|Incorrect required parameter 1=''month''!}}|Missing required parameter 1=''month''!}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
25327282f70efd1189b70245a0e23509f3bb65e6
Template:Plain link
10
833
1848
2020-06-10T21:31:27Z
wikipedia>Primefac
0
TFD withdrawn
wikitext
text/x-wiki
<span class="plainlinks">{{SAFESUBST:<noinclude />#if:{{{2|{{{NAME|{{{name|}}}}}}}}}
|[{{{1|{{{URL|{{{url}}}}}}}}} {{{2|{{{NAME|{{{name|}}}}}}}}}]
|[{{{1|{{{URL|{{{url}}}}}}}}}]
}}</span><noinclude>
{{documentation}}
</noinclude>
2730384491e116ee2f16e9ceed1cb23b7bb148a0
Module:Infobox military conflict/styles.css
828
1498
2833
2020-06-19T22:52:04Z
w>Frietjes
0
per request
sanitized-css
text/css
/* {{pp-template}} */
@media all and (min-width:720px) {
.desktop-float-right {
box-sizing: border-box;
float: right;
clear: right;
}
}
.infobox.vevent .status > p:first-child {
margin: 0;
}
1acb4afebca5f88c4679a397575d07b5de04407d
Template:Country data Wales
10
1472
2807
2020-06-19T23:23:56Z
w>CommonsDelinker
0
Replacing Flag_of_Wales.svg with [[File:Flag_of_Wales_(1959).svg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR4|Criterion 4]] (harmonizing names of file set)).
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Wales
| flag alias = Flag of Wales (1959–present).svg
| flag alias-1807 = Flag of Wales (1807–1953).svg
| flag alias-1953 = Flag of Wales (1953–1959).svg
| flag alias-1959 = Flag of Wales (1959).svg
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
| altlink = {{{altlink|}}}
<noinclude>
| var1 = 1807
| var2 = 1953
| var3 = 1959
| redir1 = WAL
</noinclude>
}}
957019bb66a64636b3969a43e593f430dacb379b
Template:Cnote2
10
1599
2934
2020-06-20T16:35:27Z
w>Jonesey95
0
div instead of span for ref text to allow for multi-line notes, e.g. at [[Spanish invasion of Portugal (1762)]]
wikitext
text/x-wiki
<li id="cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}" name="cnote_{{anchorencode:{{{1}}}}}{{#if:{{{group|}}}|_grp_{{anchorencode:{{{group}}}}}}}" {{#if:{{{value|}}}|value{{=}}"{{{value}}}"}} >{{#if:{{{n|}}}|{{#switch: {{{n}}}<!--
-->|0=<!--
-->|1=<span class="mw-cite-backlink">'''[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|^]]'''</span><!--
-->|2=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]]</sup>'''''</span><!--
-->|3=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]]</sup>'''''</span><!--
-->|4=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]]</sup>'''''</span><!--
-->|5=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_5|e]]</sup>'''''</span><!--
-->|6=<span class="mw-cite-backlink">^ '''''<sup>[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|a]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_2|b]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_3|c]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_4|d]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_5|e]] [[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_6|f]]</sup>'''''</span><!--
-->|#default = <span class="error">n must either be omitted or equal an integer between 1 and 6</span><!--
-->}}|<span class="mw-cite-backlink">'''[[#ref_{{urlencode:{{anchorencode:{{{1}}}}}}}{{#if:{{{group|}}}|_grp_{{urlencode:{{anchorencode:{{{group}}}}}}}}}_1|^]]'''</span>
}} <div style="display:inline;" class="reference-text">{{{2|<span class="error">parameter "2", text parameter, is empty</span>}}}</div></li><noinclude>
{{Documentation}}
</noinclude>
59e5c114f31cbaa7f982d01b7e46be191fa94987
Template:Non-admin comment
10
225
508
2020-06-22T19:25:35Z
MrJaroslavik
18
Protected "[[Template:Non-admin comment]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
<small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}}
|admin
|sysop= administrator
|crat= bureaucrat
|cu= checkuser
|steward= steward
|sysadmin= system administrator
|#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} comment</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
74955aa8ac53710e3ce1e366be475275521360ac
Template:Non-admin closure
10
227
512
2020-06-22T19:27:33Z
MrJaroslavik
18
Protected "[[Template:Non-admin closure]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
<small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}}
|admin
|sysop= administrator
|crat= bureaucrat
|cu= checkuser
|steward= steward
|sysadmin= system administrator
|#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} closure</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
d22fc6e8966962e37b3af6a3649df85fe7462c5c
Module:Reply to
828
210
476
2020-06-29T14:27:31Z
MrJaroslavik
18
1 revision imported
Scribunto
text/plain
local p = {}
local function makeError(msg)
msg ='Error in [[Template:Reply to]]: ' .. msg
return mw.text.tag('strong', {['class']='error'}, msg)
end
function p.replyto(frame)
local origArgs = frame:getParent().args
local args = {}
local maxArg = 1
local usernames = 0
for k, v in pairs(origArgs) do
if type(k) == 'number' then
if mw.ustring.match(v,'%S') then
if k > maxArg then maxArg = k end
usernames = usernames + 1
local title = mw.title.new(v)
if not title then return makeError('Input contains forbidden characters.') end
args[k] = title.rootText
end
elseif v == '' and k:sub(0,5) == 'label' then
args[k] = '​'
else
args[k] = v
end
end
if usernames > (tonumber(frame.args.max) or 50) then
return makeError(string.format(
'More than %s names specified.',
tostring(frame.args.max or 50)
))
else
if usernames < 1 then
if frame.args.example then args[1] = frame.args.example else return makeError('Username not given.') end
end
args['label1'] = args['label1'] or args['label']
local isfirst = true
local outStr = args['prefix'] or '@'
for i = 1, maxArg do
if args[i] then
if isfirst then
isfirst = false
else
if ( (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..', ' end
if i == maxArg then outStr = outStr..' '..(args['c'] or 'and') .. ' ' end
end
outStr = string.format(
'%s[[User:%s|%s]]',
outStr,
args[i],
args['label'..tostring(i)] or args[i]
)
end
end
outStr = outStr..(args['p'] or ':')
return mw.text.tag('span', {['class']='template-ping'}, outStr)
end
end
return p
14f0cd73a8a9f122c0e0e15382219083c602c62a
Module:Userbox
828
142
333
2020-07-01T19:43:34Z
MrJaroslavik
18
Scribunto
text/plain
-- This module implements {{userbox}}.
local categoryHandler = require('Module:Category handler').main
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function checkNum(val, default)
-- Checks whether a value is a number greater than or equal to zero. If so,
-- returns it as a number. If not, returns a default value.
val = tonumber(val)
if val and val >= 0 then
return val
else
return default
end
end
local function addSuffix(num, suffix)
-- Turns a number into a string and adds a suffix.
if num then
return tostring(num) .. suffix
else
return nil
end
end
local function checkNumAndAddSuffix(num, default, suffix)
-- Checks a value with checkNum and adds a suffix.
num = checkNum(num, default)
return addSuffix(num, suffix)
end
local function makeCat(cat, sort)
-- Makes a category link.
if sort then
return mw.ustring.format('[[Category:%s|%s]]', cat, sort)
else
return mw.ustring.format('[[Category:%s]]', cat)
end
end
--------------------------------------------------------------------------------
-- Argument processing
--------------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local origArgs = require('Module:Arguments').getArgs(frame)
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.main(funcName, args)
end
end
p.userbox = makeInvokeFunc('_userbox')
p['userbox-2'] = makeInvokeFunc('_userbox-2')
p['userbox-r'] = makeInvokeFunc('_userbox-r')
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.main(funcName, args)
local userboxData = p[funcName](args)
local userbox = p.render(userboxData)
local cats = p.categories(args)
return userbox .. (cats or '')
end
function p._userbox(args)
-- Does argument processing for {{userbox}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
data.infoClass = args['info-class']
-- Get id values.
local id = args.logo or args[3] or args.id
data.id = id
data.showId = id and true or false
data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.idTextAlign = args['id-a'] or 'center'
data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor
data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0'
data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.idOtherParams = args['logo-other-param'] or args['id-op']
data.idClass = args['id-class']
return data
end
p['_userbox-2'] = function (args)
-- Does argument processing for {{userbox-2}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args[2] or args['info-c'] or '#eeeeee'
-- Get info values.
data.info = args[4] or args.info or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt')
data.infoColor = args[8] or args['info-fc'] or 'black'
data.infoPadding = args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-lh'] or '1.25em'
data.infoOtherParams = args['info-op']
-- Get id values.
data.showId = true
data.id = args.logo or args[3] or args.id1 or 'id1'
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px')
data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd'
data.idTextAlign = 'center'
data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt')
data.idLineHeight = args['id1-lh'] or '1.25em'
data.idColor = args['id1-fc'] or data.infoColor
data.idPadding = args['id1-p'] or '0 1px 0 0'
data.idOtherParams = args['id1-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[5] or args.id2 or 'id2'
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px')
data.id2Height = data.idHeight
data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd'
data.id2TextAlign = 'center'
data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt')
data.id2LineHeight = args['id2-lh'] or '1.25em'
data.id2Color = args['id2-fc'] or data.infoColor
data.id2Padding = args['id2-p'] or '0 0 0 1px'
data.id2OtherParams = args['id2-op']
return data
end
p['_userbox-r'] = function (args)
-- Does argument processing for {{userbox-r}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get id values.
data.showId = false -- We only show id2 in userbox-r.
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-align'] or args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[3] or args.id or 'id'
data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.id2TextAlign = args['id-a'] or 'center'
data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px'
data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.id2OtherParams = args['logo-other-param'] or args['id-op']
return data
end
function p.render(data)
-- Renders the userbox html using the content of the data table.
-- Render the div tag html.
local root = mw.html.create('div')
root
:css('float', data.float)
:css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or ''))
:css('margin', '1px')
:css('width', data.width)
:addClass('wikipediauserbox')
:addClass(data.bodyClass)
-- Render the table tag html.
local tableroot = root:tag('table')
tableroot
:css('border-collapse', 'collapse')
:css('width', data.width)
:css('margin-bottom', '0')
:css('margin-top', '0')
:css('background', data.backgroundColor)
-- Render the id html.
local tablerow = tableroot:tag('tr')
if data.showId then
tablerow:tag('th')
:css('border', '0')
:css('width', data.idWidth)
:css('height', data.idHeight)
:css('background', data.idBackgroundColor)
:css('text-align', data.idTextAlign)
:css('font-size', data.idFontSize)
:css('color', data.idColor)
:css('padding', data.idPadding)
:css('line-height', data.idLineHeight)
:css('vertical-align', 'middle')
:cssText(data.idOtherParams)
:addClass(data.idClass)
:wikitext(data.id)
end
-- Render the info html.
tablerow:tag('td')
:css('border', '0')
:css('text-align', data.infoTextAlign)
:css('font-size', data.infoFontSize)
:css('padding', data.infoPadding)
:css('height', data.infoHeight)
:css('line-height', data.infoLineHeight)
:css('color', data.infoColor)
:css('vertical-align', 'middle')
:cssText(data.infoOtherParams)
:addClass(data.infoClass)
:wikitext(data.info)
-- Render the second id html.
if data.showId2 then
tablerow:tag('th')
:css('border', '0')
:css('width', data.id2Width)
:css('height', data.id2Height)
:css('background', data.id2BackgroundColor)
:css('text-align', data.id2TextAlign)
:css('font-size', data.id2FontSize)
:css('color', data.id2Color)
:css('padding', data.id2Padding)
:css('line-height', data.id2LineHeight)
:css('vertical-align', 'middle')
:cssText(data.id2OtherParams)
:wikitext(data.id2)
end
local title = mw.title.getCurrentTitle()
if (title.namespace == 2) and not title.text:match("/") then
return tostring(root) -- regular user page
elseif title.namespace == 14 then
return tostring(root) -- category
elseif title.isTalkPage then
return tostring(root) -- talk page
end
local legible = true
local contrast = require('Module:Color contrast')._ratio
local function has_text(wikitext)
local function get_alt(text)
return text:match("|alt=([^|]*)") or ""
end
wikitext = wikitext:gsub("]]", "|]]")
wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt)
return mw.text.trim(wikitext) ~= ""
end
if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then
legible = false
end
if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < 4.5 then
if has_text(data.id or "") then
legible = false
end
end
if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < 4.5 then
if has_text(data.id2 or "") then
legible = false
end
end
if not legible then
root:wikitext('[[Category:Potentially illegible userboxes]]')
end
return tostring(root)
end
function p.categories(args, page)
-- Gets categories from [[Module:Category handler]].
-- The page parameter makes the function act as though the module was being called from that page.
-- It is included for testing purposes.
local cats = {}
cats[#cats + 1] = args.usercategory
cats[#cats + 1] = args.usercategory2
cats[#cats + 1] = args.usercategory3
if #cats > 0 then
-- Get the title object
local title
if page then
title = mw.title.new(page)
else
title = mw.title.getCurrentTitle()
end
-- Build category handler arguments.
local chargs = {}
chargs.page = page
chargs.nocat = args.nocat
chargs.main = '[[Category:Pages with misplaced templates]]'
if args.notcatsubpages then
chargs.subpage = 'no'
end
-- User namespace.
local user = ''
for i, cat in ipairs(cats) do
user = user .. makeCat(cat)
end
chargs.user = user
-- Template namespace.
local basepage = title.baseText
local template = ''
for i, cat in ipairs(cats) do
template = template .. makeCat(cat, ' ' .. basepage)
end
chargs.template = template
return categoryHandler(chargs)
else
return nil
end
end
return p
1a6d5c3f5a72eb494c764796412b42184f714b7b
Module:About
828
112
271
2020-07-14T13:59:23Z
wikipedia>Nihiltres
0
Removed defaultOptions.namespace as redundant, per request on talk by Andrybak
Scribunto
text/plain
local mArguments --initialize lazily
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.about (frame)
-- A passthrough that gets args from the frame and all
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
return p._about(args)
end
function p._about (args, options)
-- Produces "about" hatnote.
-- Type checks and defaults
checkType('_about', 1, args, 'table', true)
args = args or {}
checkType('_about', 2, options, 'table', true)
options = options or {}
local defaultOptions = {
aboutForm = 'This %s is about %s. ',
PageType = require('Module:Pagetype').main(),
otherText = nil, --included for complete list
sectionString = 'section'
}
for k, v in pairs(defaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Set initial "about" string
local pageType = (args.section and options.sectionString) or options.PageType
local about = ''
if args[1] then
about = string.format(options.aboutForm, pageType, args[1])
end
--Allow passing through certain options
local fsOptions = {
otherText = options.otherText,
extratext = args.text
}
local hnOptions = {
selfref = args.selfref
}
-- Set for-see list
local forSee = mHatList._forSee(args, 2, fsOptions)
-- Concatenate and return
return mHatnote._hatnote(about .. forSee, hnOptions)
end
return p
1abb25315b25b63b97d98ecae17733cbea8fcc6a
Template:Flagcountry
10
1204
2533
2020-07-17T15:28:45Z
w>Jonesey95
0
Adding unknown parameter tracking through [[:Category:Pages using flagcountry template with unknown parameters]] using [[Module:check for unknown parameters]]
wikitext
text/x-wiki
{{country data {{{1}}}|flagcountry/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}|name={{{name|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using flagcountry template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Flagcountry]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | name | size | variant }}<noinclude>{{documentation}}</noinclude>
8e77099d5f28ae1a07d27fb07c9fac8684bd56cf
Module:String
828
17
29
2020-08-02T15:49:42Z
wikipedia>RexxS
0
separate annotations for str.match from those for str._match
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:Switcher
828
1734
3277
2020-08-02T16:55:17Z
wikipedia>Jackmcbarn
0
stop using the function name to hold the default
Scribunto
text/plain
local p = {}
function p.main(frame)
local root = mw.html.create('div'):addClass('switcher-container')
local default = (tonumber(frame.args.default) or 0) * 2 - 1
for i,v in ipairs(frame.args) do
if i % 2 == 1 then
local span = root
:tag('div')
:wikitext(frame.args[i])
:tag('span')
:addClass('switcher-label')
:css('display', 'none')
:wikitext(mw.text.trim(frame.args[i + 1]))
if i == default then
span:attr('data-switcher-default', '')
end
end
end
return root
end
return p
9393d11155145cb28d5fdad5ce6b9cde1bbad60f
Module:Date
828
1228
2561
2020-08-03T02:55:18Z
w>Johnuniq
0
update from sandbox: implement show=M (minutes) and show=s (seconds); better method to fill a partial date
Scribunto
text/plain
-- Date functions for use by other modules.
-- I18N and time zones are not supported.
local MINUS = '−' -- Unicode U+2212 MINUS SIGN
local floor = math.floor
local Date, DateDiff, diffmt -- forward declarations
local uniq = { 'unique identifier' }
local function is_date(t)
-- The system used to make a date read-only means there is no unique
-- metatable that is conveniently accessible to check.
return type(t) == 'table' and t._id == uniq
end
local function is_diff(t)
return type(t) == 'table' and getmetatable(t) == diffmt
end
local function _list_join(list, sep)
return table.concat(list, sep)
end
local function collection()
-- Return a table to hold items.
return {
n = 0,
add = function (self, item)
self.n = self.n + 1
self[self.n] = item
end,
join = _list_join,
}
end
local function strip_to_nil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (convenient when Date fields are provided from
-- another module which may pass a string, a number, or another type).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function is_leap_year(year, calname)
-- Return true if year is a leap year.
if calname == 'Julian' then
return year % 4 == 0
end
return (year % 4 == 0 and year % 100 ~= 0) or year % 400 == 0
end
local function days_in_month(year, month, calname)
-- Return number of days (1..31) in given month (1..12).
if month == 2 and is_leap_year(year, calname) then
return 29
end
return ({ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 })[month]
end
local function h_m_s(time)
-- Return hour, minute, second extracted from fraction of a day.
time = floor(time * 24 * 3600 + 0.5) -- number of seconds
local second = time % 60
time = floor(time / 60)
return floor(time / 60), time % 60, second
end
local function hms(date)
-- Return fraction of a day from date's time, where (0 <= fraction < 1)
-- if the values are valid, but could be anything if outside range.
return (date.hour + (date.minute + date.second / 60) / 60) / 24
end
local function julian_date(date)
-- Return jd, jdz from a Julian or Gregorian calendar date where
-- jd = Julian date and its fractional part is zero at noon
-- jdz = same, but assume time is 00:00:00 if no time given
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- Testing shows this works for all dates from year -9999 to 9999!
-- JDN 0 is the 24-hour period starting at noon UTC on Monday
-- 1 January 4713 BC = (-4712, 1, 1) Julian calendar
-- 24 November 4714 BC = (-4713, 11, 24) Gregorian calendar
local offset
local a = floor((14 - date.month)/12)
local y = date.year + 4800 - a
if date.calendar == 'Julian' then
offset = floor(y/4) - 32083
else
offset = floor(y/4) - floor(y/100) + floor(y/400) - 32045
end
local m = date.month + 12*a - 3
local jd = date.day + floor((153*m + 2)/5) + 365*y + offset
if date.hastime then
jd = jd + hms(date) - 0.5
return jd, jd
end
return jd, jd - 0.5
end
local function set_date_from_jd(date)
-- Set the fields of table date from its Julian date field.
-- Return true if date is valid.
-- http://www.tondering.dk/claus/cal/julperiod.php#formula
-- This handles the proleptic Julian and Gregorian calendars.
-- Negative Julian dates are not defined but they work.
local calname = date.calendar
local low, high -- min/max limits for date ranges −9999-01-01 to 9999-12-31
if calname == 'Gregorian' then
low, high = -1930999.5, 5373484.49999
elseif calname == 'Julian' then
low, high = -1931076.5, 5373557.49999
else
return
end
local jd = date.jd
if not (type(jd) == 'number' and low <= jd and jd <= high) then
return
end
local jdn = floor(jd)
if date.hastime then
local time = jd - jdn -- 0 <= time < 1
if time >= 0.5 then -- if at or after midnight of next day
jdn = jdn + 1
time = time - 0.5
else
time = time + 0.5
end
date.hour, date.minute, date.second = h_m_s(time)
else
date.second = 0
date.minute = 0
date.hour = 0
end
local b, c
if calname == 'Julian' then
b = 0
c = jdn + 32082
else -- Gregorian
local a = jdn + 32044
b = floor((4*a + 3)/146097)
c = a - floor(146097*b/4)
end
local d = floor((4*c + 3)/1461)
local e = c - floor(1461*d/4)
local m = floor((5*e + 2)/153)
date.day = e - floor((153*m + 2)/5) + 1
date.month = m + 3 - 12*floor(m/10)
date.year = 100*b + d - 4800 + floor(m/10)
return true
end
local function fix_numbers(numbers, y, m, d, H, M, S, partial, hastime, calendar)
-- Put the result of normalizing the given values in table numbers.
-- The result will have valid m, d values if y is valid; caller checks y.
-- The logic of PHP mktime is followed where m or d can be zero to mean
-- the previous unit, and -1 is the one before that, etc.
-- Positive values carry forward.
local date
if not (1 <= m and m <= 12) then
date = Date(y, 1, 1)
if not date then return end
date = date + ((m - 1) .. 'm')
y, m = date.year, date.month
end
local days_hms
if not partial then
if hastime and H and M and S then
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
days_hms = hms({ hour = H, minute = M, second = S })
end
end
if days_hms or not (1 <= d and d <= days_in_month(y, m, calendar)) then
date = date or Date(y, m, 1)
if not date then return end
date = date + (d - 1 + (days_hms or 0))
y, m, d = date.year, date.month, date.day
if days_hms then
H, M, S = date.hour, date.minute, date.second
end
end
end
numbers.year = y
numbers.month = m
numbers.day = d
if days_hms then
-- Don't set H unless it was valid because a valid H will set hastime.
numbers.hour = H
numbers.minute = M
numbers.second = S
end
end
local function set_date_from_numbers(date, numbers, options)
-- Set the fields of table date from numeric values.
-- Return true if date is valid.
if type(numbers) ~= 'table' then
return
end
local y = numbers.year or date.year
local m = numbers.month or date.month
local d = numbers.day or date.day
local H = numbers.hour
local M = numbers.minute or date.minute or 0
local S = numbers.second or date.second or 0
local need_fix
if y and m and d then
date.partial = nil
if not (-9999 <= y and y <= 9999 and
1 <= m and m <= 12 and
1 <= d and d <= days_in_month(y, m, date.calendar)) then
if not date.want_fix then
return
end
need_fix = true
end
elseif y and date.partial then
if d or not (-9999 <= y and y <= 9999) then
return
end
if m and not (1 <= m and m <= 12) then
if not date.want_fix then
return
end
need_fix = true
end
else
return
end
if date.partial then
H = nil -- ignore any time
M = nil
S = nil
else
if H then
-- It is not possible to set M or S without also setting H.
date.hastime = true
else
H = 0
end
if not (0 <= H and H <= 23 and
0 <= M and M <= 59 and
0 <= S and S <= 59) then
if date.want_fix then
need_fix = true
else
return
end
end
end
date.want_fix = nil
if need_fix then
fix_numbers(numbers, y, m, d, H, M, S, date.partial, date.hastime, date.calendar)
return set_date_from_numbers(date, numbers, options)
end
date.year = y -- -9999 to 9999 ('n BC' → year = 1 - n)
date.month = m -- 1 to 12 (may be nil if partial)
date.day = d -- 1 to 31 (* = nil if partial)
date.hour = H -- 0 to 59 (*)
date.minute = M -- 0 to 59 (*)
date.second = S -- 0 to 59 (*)
if type(options) == 'table' then
for _, k in ipairs({ 'am', 'era', 'format' }) do
if options[k] then
date.options[k] = options[k]
end
end
end
return true
end
local function make_option_table(options1, options2)
-- If options1 is a string, return a table with its settings, or
-- if it is a table, use its settings.
-- Missing options are set from table options2 or defaults.
-- If a default is used, a flag is set so caller knows the value was not intentionally set.
-- Valid option settings are:
-- am: 'am', 'a.m.', 'AM', 'A.M.'
-- 'pm', 'p.m.', 'PM', 'P.M.' (each has same meaning as corresponding item above)
-- era: 'BCMINUS', 'BCNEGATIVE', 'BC', 'B.C.', 'BCE', 'B.C.E.', 'AD', 'A.D.', 'CE', 'C.E.'
-- Option am = 'am' does not mean the hour is AM; it means 'am' or 'pm' is used, depending on the hour,
-- and am = 'pm' has the same meaning.
-- Similarly, era = 'BC' means 'BC' is used if year <= 0.
-- BCMINUS displays a MINUS if year < 0 and the display format does not include %{era}.
-- BCNEGATIVE is similar but displays a hyphen.
local result = { bydefault = {} }
if type(options1) == 'table' then
result.am = options1.am
result.era = options1.era
elseif type(options1) == 'string' then
-- Example: 'am:AM era:BC' or 'am=AM era=BC'.
for item in options1:gmatch('%S+') do
local lhs, rhs = item:match('^(%w+)[:=](.+)$')
if lhs then
result[lhs] = rhs
end
end
end
options2 = type(options2) == 'table' and options2 or {}
local defaults = { am = 'am', era = 'BC' }
for k, v in pairs(defaults) do
if not result[k] then
if options2[k] then
result[k] = options2[k]
else
result[k] = v
result.bydefault[k] = true
end
end
end
return result
end
local ampm_options = {
-- lhs = input text accepted as an am/pm option
-- rhs = code used internally
['am'] = 'am',
['AM'] = 'AM',
['a.m.'] = 'a.m.',
['A.M.'] = 'A.M.',
['pm'] = 'am', -- same as am
['PM'] = 'AM',
['p.m.'] = 'a.m.',
['P.M.'] = 'A.M.',
}
local era_text = {
-- Text for displaying an era with a positive year (after adjusting
-- by replacing year with 1 - year if date.year <= 0).
-- options.era = { year<=0 , year>0 }
['BCMINUS'] = { 'BC' , '' , isbc = true, sign = MINUS },
['BCNEGATIVE'] = { 'BC' , '' , isbc = true, sign = '-' },
['BC'] = { 'BC' , '' , isbc = true },
['B.C.'] = { 'B.C.' , '' , isbc = true },
['BCE'] = { 'BCE' , '' , isbc = true },
['B.C.E.'] = { 'B.C.E.', '' , isbc = true },
['AD'] = { 'BC' , 'AD' },
['A.D.'] = { 'B.C.' , 'A.D.' },
['CE'] = { 'BCE' , 'CE' },
['C.E.'] = { 'B.C.E.', 'C.E.' },
}
local function get_era_for_year(era, year)
return (era_text[era] or era_text['BC'])[year > 0 and 2 or 1] or ''
end
local function strftime(date, format, options)
-- Return date formatted as a string using codes similar to those
-- in the C strftime library function.
local sformat = string.format
local shortcuts = {
['%c'] = '%-I:%M %p %-d %B %-Y %{era}', -- date and time: 2:30 pm 1 April 2016
['%x'] = '%-d %B %-Y %{era}', -- date: 1 April 2016
['%X'] = '%-I:%M %p', -- time: 2:30 pm
}
if shortcuts[format] then
format = shortcuts[format]
end
local codes = {
a = { field = 'dayabbr' },
A = { field = 'dayname' },
b = { field = 'monthabbr' },
B = { field = 'monthname' },
u = { fmt = '%d' , field = 'dowiso' },
w = { fmt = '%d' , field = 'dow' },
d = { fmt = '%02d', fmt2 = '%d', field = 'day' },
m = { fmt = '%02d', fmt2 = '%d', field = 'month' },
Y = { fmt = '%04d', fmt2 = '%d', field = 'year' },
H = { fmt = '%02d', fmt2 = '%d', field = 'hour' },
M = { fmt = '%02d', fmt2 = '%d', field = 'minute' },
S = { fmt = '%02d', fmt2 = '%d', field = 'second' },
j = { fmt = '%03d', fmt2 = '%d', field = 'dayofyear' },
I = { fmt = '%02d', fmt2 = '%d', field = 'hour', special = 'hour12' },
p = { field = 'hour', special = 'am' },
}
options = make_option_table(options, date.options)
local amopt = options.am
local eraopt = options.era
local function replace_code(spaces, modifier, id)
local code = codes[id]
if code then
local fmt = code.fmt
if modifier == '-' and code.fmt2 then
fmt = code.fmt2
end
local value = date[code.field]
if not value then
return nil -- an undefined field in a partial date
end
local special = code.special
if special then
if special == 'hour12' then
value = value % 12
value = value == 0 and 12 or value
elseif special == 'am' then
local ap = ({
['a.m.'] = { 'a.m.', 'p.m.' },
['AM'] = { 'AM', 'PM' },
['A.M.'] = { 'A.M.', 'P.M.' },
})[ampm_options[amopt]] or { 'am', 'pm' }
return (spaces == '' and '' or ' ') .. (value < 12 and ap[1] or ap[2])
end
end
if code.field == 'year' then
local sign = (era_text[eraopt] or {}).sign
if not sign or format:find('%{era}', 1, true) then
sign = ''
if value <= 0 then
value = 1 - value
end
else
if value >= 0 then
sign = ''
else
value = -value
end
end
return spaces .. sign .. sformat(fmt, value)
end
return spaces .. (fmt and sformat(fmt, value) or value)
end
end
local function replace_property(spaces, id)
if id == 'era' then
-- Special case so can use local era option.
local result = get_era_for_year(eraopt, date.year)
if result == '' then
return ''
end
return (spaces == '' and '' or ' ') .. result
end
local result = date[id]
if type(result) == 'string' then
return spaces .. result
end
if type(result) == 'number' then
return spaces .. tostring(result)
end
if type(result) == 'boolean' then
return spaces .. (result and '1' or '0')
end
-- This occurs if id is an undefined field in a partial date, or is the name of a function.
return nil
end
local PERCENT = '\127PERCENT\127'
return (format
:gsub('%%%%', PERCENT)
:gsub('(%s*)%%{(%w+)}', replace_property)
:gsub('(%s*)%%(%-?)(%a)', replace_code)
:gsub(PERCENT, '%%')
)
end
local function _date_text(date, fmt, options)
-- Return a formatted string representing the given date.
if not is_date(date) then
error('date:text: need a date (use "date:text()" with a colon)', 2)
end
if type(fmt) == 'string' and fmt:match('%S') then
if fmt:find('%', 1, true) then
return strftime(date, fmt, options)
end
elseif date.partial then
fmt = date.month and 'my' or 'y'
else
fmt = 'dmy'
if date.hastime then
fmt = (date.second > 0 and 'hms ' or 'hm ') .. fmt
end
end
local function bad_format()
-- For consistency with other format processing, return given format
-- (or cleaned format if original was not a string) if invalid.
return mw.text.nowiki(fmt)
end
if date.partial then
-- Ignore days in standard formats like 'ymd'.
if fmt == 'ym' or fmt == 'ymd' then
fmt = date.month and '%Y-%m %{era}' or '%Y %{era}'
elseif fmt == 'my' or fmt == 'dmy' or fmt == 'mdy' then
fmt = date.month and '%B %-Y %{era}' or '%-Y %{era}'
elseif fmt == 'y' then
fmt = date.month and '%-Y %{era}' or '%-Y %{era}'
else
return bad_format()
end
return strftime(date, fmt, options)
end
local function hm_fmt()
local plain = make_option_table(options, date.options).bydefault.am
return plain and '%H:%M' or '%-I:%M %p'
end
local need_time = date.hastime
local t = collection()
for item in fmt:gmatch('%S+') do
local f
if item == 'hm' then
f = hm_fmt()
need_time = false
elseif item == 'hms' then
f = '%H:%M:%S'
need_time = false
elseif item == 'ymd' then
f = '%Y-%m-%d %{era}'
elseif item == 'mdy' then
f = '%B %-d, %-Y %{era}'
elseif item == 'dmy' then
f = '%-d %B %-Y %{era}'
else
return bad_format()
end
t:add(f)
end
fmt = t:join(' ')
if need_time then
fmt = hm_fmt() .. ' ' .. fmt
end
return strftime(date, fmt, options)
end
local day_info = {
-- 0=Sun to 6=Sat
[0] = { 'Sun', 'Sunday' },
{ 'Mon', 'Monday' },
{ 'Tue', 'Tuesday' },
{ 'Wed', 'Wednesday' },
{ 'Thu', 'Thursday' },
{ 'Fri', 'Friday' },
{ 'Sat', 'Saturday' },
}
local month_info = {
-- 1=Jan to 12=Dec
{ 'Jan', 'January' },
{ 'Feb', 'February' },
{ 'Mar', 'March' },
{ 'Apr', 'April' },
{ 'May', 'May' },
{ 'Jun', 'June' },
{ 'Jul', 'July' },
{ 'Aug', 'August' },
{ 'Sep', 'September' },
{ 'Oct', 'October' },
{ 'Nov', 'November' },
{ 'Dec', 'December' },
}
local function name_to_number(text, translate)
if type(text) == 'string' then
return translate[text:lower()]
end
end
local function day_number(text)
return name_to_number(text, {
sun = 0, sunday = 0,
mon = 1, monday = 1,
tue = 2, tuesday = 2,
wed = 3, wednesday = 3,
thu = 4, thursday = 4,
fri = 5, friday = 5,
sat = 6, saturday = 6,
})
end
local function month_number(text)
return name_to_number(text, {
jan = 1, january = 1,
feb = 2, february = 2,
mar = 3, march = 3,
apr = 4, april = 4,
may = 5,
jun = 6, june = 6,
jul = 7, july = 7,
aug = 8, august = 8,
sep = 9, september = 9, sept = 9,
oct = 10, october = 10,
nov = 11, november = 11,
dec = 12, december = 12,
})
end
local function _list_text(list, fmt)
-- Return a list of formatted strings from a list of dates.
if not type(list) == 'table' then
error('date:list:text: need "list:text()" with a colon', 2)
end
local result = { join = _list_join }
for i, date in ipairs(list) do
result[i] = date:text(fmt)
end
return result
end
local function _date_list(date, spec)
-- Return a possibly empty numbered table of dates meeting the specification.
-- Dates in the list are in ascending order (oldest date first).
-- The spec should be a string of form "<count> <day> <op>"
-- where each item is optional and
-- count = number of items wanted in list
-- day = abbreviation or name such as Mon or Monday
-- op = >, >=, <, <= (default is > meaning after date)
-- If no count is given, the list is for the specified days in date's month.
-- The default day is date's day.
-- The spec can also be a positive or negative number:
-- -5 is equivalent to '5 <'
-- 5 is equivalent to '5' which is '5 >'
if not is_date(date) then
error('date:list: need a date (use "date:list()" with a colon)', 2)
end
local list = { text = _list_text }
if date.partial then
return list
end
local count, offset, operation
local ops = {
['>='] = { before = false, include = true },
['>'] = { before = false, include = false },
['<='] = { before = true , include = true },
['<'] = { before = true , include = false },
}
if spec then
if type(spec) == 'number' then
count = floor(spec + 0.5)
if count < 0 then
count = -count
operation = ops['<']
end
elseif type(spec) == 'string' then
local num, day, op = spec:match('^%s*(%d*)%s*(%a*)%s*([<>=]*)%s*$')
if not num then
return list
end
if num ~= '' then
count = tonumber(num)
end
if day ~= '' then
local dow = day_number(day:gsub('[sS]$', '')) -- accept plural days
if not dow then
return list
end
offset = dow - date.dow
end
operation = ops[op]
else
return list
end
end
offset = offset or 0
operation = operation or ops['>']
local datefrom, dayfirst, daylast
if operation.before then
if offset > 0 or (offset == 0 and not operation.include) then
offset = offset - 7
end
if count then
if count > 1 then
offset = offset - 7*(count - 1)
end
datefrom = date + offset
else
daylast = date.day + offset
dayfirst = daylast % 7
if dayfirst == 0 then
dayfirst = 7
end
end
else
if offset < 0 or (offset == 0 and not operation.include) then
offset = offset + 7
end
if count then
datefrom = date + offset
else
dayfirst = date.day + offset
daylast = date.monthdays
end
end
if not count then
if daylast < dayfirst then
return list
end
count = floor((daylast - dayfirst)/7) + 1
datefrom = Date(date, {day = dayfirst})
end
for i = 1, count do
if not datefrom then break end -- exceeds date limits
list[i] = datefrom
datefrom = datefrom + 7
end
return list
end
-- A table to get the current date/time (UTC), but only if needed.
local current = setmetatable({}, {
__index = function (self, key)
local d = os.date('!*t')
self.year = d.year
self.month = d.month
self.day = d.day
self.hour = d.hour
self.minute = d.min
self.second = d.sec
return rawget(self, key)
end })
local function extract_date(newdate, text)
-- Parse the date/time in text and return n, o where
-- n = table of numbers with date/time fields
-- o = table of options for AM/PM or AD/BC or format, if any
-- or return nothing if date is known to be invalid.
-- Caller determines if the values in n are valid.
-- A year must be positive ('1' to '9999'); use 'BC' for BC.
-- In a y-m-d string, the year must be four digits to avoid ambiguity
-- ('0001' to '9999'). The only way to enter year <= 0 is by specifying
-- the date as three numeric parameters like ymd Date(-1, 1, 1).
-- Dates of form d/m/y, m/d/y, y/m/d are rejected as potentially ambiguous.
local date, options = {}, {}
if text:sub(-1) == 'Z' then
-- Extract date/time from a Wikidata timestamp.
-- The year can be 1 to 16 digits but this module handles 1 to 4 digits only.
-- Examples: '+2016-06-21T14:30:00Z', '-0000000180-00-00T00:00:00Z'.
local sign, y, m, d, H, M, S = text:match('^([+%-])(%d+)%-(%d%d)%-(%d%d)T(%d%d):(%d%d):(%d%d)Z$')
if sign then
y = tonumber(y)
if sign == '-' and y > 0 then
y = -y
end
if y <= 0 then
options.era = 'BCE'
end
date.year = y
m = tonumber(m)
d = tonumber(d)
H = tonumber(H)
M = tonumber(M)
S = tonumber(S)
if m == 0 then
newdate.partial = true
return date, options
end
date.month = m
if d == 0 then
newdate.partial = true
return date, options
end
date.day = d
if H > 0 or M > 0 or S > 0 then
date.hour = H
date.minute = M
date.second = S
end
return date, options
end
return
end
local function extract_ymd(item)
-- Called when no day or month has been set.
local y, m, d = item:match('^(%d%d%d%d)%-(%w+)%-(%d%d?)$')
if y then
if date.year then
return
end
if m:match('^%d%d?$') then
m = tonumber(m)
else
m = month_number(m)
end
if m then
date.year = tonumber(y)
date.month = m
date.day = tonumber(d)
return true
end
end
end
local function extract_day_or_year(item)
-- Called when a day would be valid, or
-- when a year would be valid if no year has been set and partial is set.
local number, suffix = item:match('^(%d%d?%d?%d?)(.*)$')
if number then
local n = tonumber(number)
if #number <= 2 and n <= 31 then
suffix = suffix:lower()
if suffix == '' or suffix == 'st' or suffix == 'nd' or suffix == 'rd' or suffix == 'th' then
date.day = n
return true
end
elseif suffix == '' and newdate.partial and not date.year then
date.year = n
return true
end
end
end
local function extract_month(item)
-- A month must be given as a name or abbreviation; a number could be ambiguous.
local m = month_number(item)
if m then
date.month = m
return true
end
end
local function extract_time(item)
local h, m, s = item:match('^(%d%d?):(%d%d)(:?%d*)$')
if date.hour or not h then
return
end
if s ~= '' then
s = s:match('^:(%d%d)$')
if not s then
return
end
end
date.hour = tonumber(h)
date.minute = tonumber(m)
date.second = tonumber(s) -- nil if empty string
return true
end
local item_count = 0
local index_time
local function set_ampm(item)
local H = date.hour
if H and not options.am and index_time + 1 == item_count then
options.am = ampm_options[item] -- caller checked this is not nil
if item:match('^[Aa]') then
if not (1 <= H and H <= 12) then
return
end
if H == 12 then
date.hour = 0
end
else
if not (1 <= H and H <= 23) then
return
end
if H <= 11 then
date.hour = H + 12
end
end
return true
end
end
for item in text:gsub(',', ' '):gsub(' ', ' '):gmatch('%S+') do
item_count = item_count + 1
if era_text[item] then
-- Era is accepted in peculiar places.
if options.era then
return
end
options.era = item
elseif ampm_options[item] then
if not set_ampm(item) then
return
end
elseif item:find(':', 1, true) then
if not extract_time(item) then
return
end
index_time = item_count
elseif date.day and date.month then
if date.year then
return -- should be nothing more so item is invalid
end
if not item:match('^(%d%d?%d?%d?)$') then
return
end
date.year = tonumber(item)
elseif date.day then
if not extract_month(item) then
return
end
elseif date.month then
if not extract_day_or_year(item) then
return
end
elseif extract_month(item) then
options.format = 'mdy'
elseif extract_ymd(item) then
options.format = 'ymd'
elseif extract_day_or_year(item) then
if date.day then
options.format = 'dmy'
end
else
return
end
end
if not date.year or date.year == 0 then
return
end
local era = era_text[options.era]
if era and era.isbc then
date.year = 1 - date.year
end
return date, options
end
local function autofill(date1, date2)
-- Fill any missing month or day in each date using the
-- corresponding component from the other date, if present,
-- or with 1 if both dates are missing the month or day.
-- This gives a good result for calculating the difference
-- between two partial dates when no range is wanted.
-- Return filled date1, date2 (two full dates).
local function filled(a, b)
-- Return date a filled, if necessary, with month and/or day from date b.
-- The filled day is truncated to fit the number of days in the month.
local fillmonth, fillday
if not a.month then
fillmonth = b.month or 1
end
if not a.day then
fillday = b.day or 1
end
if fillmonth or fillday then -- need to create a new date
a = Date(a, {
month = fillmonth,
day = math.min(fillday or a.day, days_in_month(a.year, fillmonth or a.month, a.calendar))
})
end
return a
end
return filled(date1, date2), filled(date2, date1)
end
local function date_add_sub(lhs, rhs, is_sub)
-- Return a new date from calculating (lhs + rhs) or (lhs - rhs),
-- or return nothing if invalid.
-- The result is nil if the calculated date exceeds allowable limits.
-- Caller ensures that lhs is a date; its properties are copied for the new date.
if lhs.partial then
-- Adding to a partial is not supported.
-- Can subtract a date or partial from a partial, but this is not called for that.
return
end
local function is_prefix(text, word, minlen)
local n = #text
return (minlen or 1) <= n and n <= #word and text == word:sub(1, n)
end
local function do_days(n)
local forcetime, jd
if floor(n) == n then
jd = lhs.jd
else
forcetime = not lhs.hastime
jd = lhs.jdz
end
jd = jd + (is_sub and -n or n)
if forcetime then
jd = tostring(jd)
if not jd:find('.', 1, true) then
jd = jd .. '.0'
end
end
return Date(lhs, 'juliandate', jd)
end
if type(rhs) == 'number' then
-- Add/subtract days, including fractional days.
return do_days(rhs)
end
if type(rhs) == 'string' then
-- rhs is a single component like '26m' or '26 months' (with optional sign).
-- Fractions like '3.25d' are accepted for the units which are handled as days.
local sign, numstr, id = rhs:match('^%s*([+-]?)([%d%.]+)%s*(%a+)$')
if sign then
if sign == '-' then
is_sub = not (is_sub and true or false)
end
local y, m, days
local num = tonumber(numstr)
if not num then
return
end
id = id:lower()
if is_prefix(id, 'years') then
y = num
m = 0
elseif is_prefix(id, 'months') then
y = floor(num / 12)
m = num % 12
elseif is_prefix(id, 'weeks') then
days = num * 7
elseif is_prefix(id, 'days') then
days = num
elseif is_prefix(id, 'hours') then
days = num / 24
elseif is_prefix(id, 'minutes', 3) then
days = num / (24 * 60)
elseif is_prefix(id, 'seconds') then
days = num / (24 * 3600)
else
return
end
if days then
return do_days(days)
end
if numstr:find('.', 1, true) then
return
end
if is_sub then
y = -y
m = -m
end
assert(-11 <= m and m <= 11)
y = lhs.year + y
m = lhs.month + m
if m > 12 then
y = y + 1
m = m - 12
elseif m < 1 then
y = y - 1
m = m + 12
end
local d = math.min(lhs.day, days_in_month(y, m, lhs.calendar))
return Date(lhs, y, m, d)
end
end
if is_diff(rhs) then
local days = rhs.age_days
if (is_sub or false) ~= (rhs.isnegative or false) then
days = -days
end
return lhs + days
end
end
local full_date_only = {
dayabbr = true,
dayname = true,
dow = true,
dayofweek = true,
dowiso = true,
dayofweekiso = true,
dayofyear = true,
gsd = true,
juliandate = true,
jd = true,
jdz = true,
jdnoon = true,
}
-- Metatable for a date's calculated fields.
local datemt = {
__index = function (self, key)
if rawget(self, 'partial') then
if full_date_only[key] then return end
if key == 'monthabbr' or key == 'monthdays' or key == 'monthname' then
if not self.month then return end
end
end
local value
if key == 'dayabbr' then
value = day_info[self.dow][1]
elseif key == 'dayname' then
value = day_info[self.dow][2]
elseif key == 'dow' then
value = (self.jdnoon + 1) % 7 -- day-of-week 0=Sun to 6=Sat
elseif key == 'dayofweek' then
value = self.dow
elseif key == 'dowiso' then
value = (self.jdnoon % 7) + 1 -- ISO day-of-week 1=Mon to 7=Sun
elseif key == 'dayofweekiso' then
value = self.dowiso
elseif key == 'dayofyear' then
local first = Date(self.year, 1, 1, self.calendar).jdnoon
value = self.jdnoon - first + 1 -- day-of-year 1 to 366
elseif key == 'era' then
-- Era text (never a negative sign) from year and options.
value = get_era_for_year(self.options.era, self.year)
elseif key == 'format' then
value = self.options.format or 'dmy'
elseif key == 'gsd' then
-- GSD = 1 from 00:00:00 to 23:59:59 on 1 January 1 AD Gregorian calendar,
-- which is from jd 1721425.5 to 1721426.49999.
value = floor(self.jd - 1721424.5)
elseif key == 'juliandate' or key == 'jd' or key == 'jdz' then
local jd, jdz = julian_date(self)
rawset(self, 'juliandate', jd)
rawset(self, 'jd', jd)
rawset(self, 'jdz', jdz)
return key == 'jdz' and jdz or jd
elseif key == 'jdnoon' then
-- Julian date at noon (an integer) on the calendar day when jd occurs.
value = floor(self.jd + 0.5)
elseif key == 'isleapyear' then
value = is_leap_year(self.year, self.calendar)
elseif key == 'monthabbr' then
value = month_info[self.month][1]
elseif key == 'monthdays' then
value = days_in_month(self.year, self.month, self.calendar)
elseif key == 'monthname' then
value = month_info[self.month][2]
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
-- Date operators.
local function mt_date_add(lhs, rhs)
if not is_date(lhs) then
lhs, rhs = rhs, lhs -- put date on left (it must be a date for this to have been called)
end
return date_add_sub(lhs, rhs)
end
local function mt_date_sub(lhs, rhs)
if is_date(lhs) then
if is_date(rhs) then
return DateDiff(lhs, rhs)
end
return date_add_sub(lhs, rhs, true)
end
end
local function mt_date_concat(lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end
local function mt_date_tostring(self)
return self:text()
end
local function mt_date_eq(lhs, rhs)
-- Return true if dates identify same date/time where, for example,
-- Date(-4712, 1, 1, 'Julian') == Date(-4713, 11, 24, 'Gregorian') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
-- The months may both be nil, but must be the same.
return lhs.year == rhs.year and lhs.month == rhs.month and lhs.calendar == rhs.calendar
end
return lhs.jdz == rhs.jdz
end
local function mt_date_lt(lhs, rhs)
-- Return true if lhs < rhs, for example,
-- Date('1 Jan 2016') < Date('06:00 1 Jan 2016') is true.
-- This is called only if lhs and rhs have the same type and the same metamethod.
if lhs.partial or rhs.partial then
-- One date is partial; the other is a partial or a full date.
if lhs.calendar ~= rhs.calendar then
return lhs.calendar == 'Julian'
end
if lhs.partial then
lhs = lhs.partial.first
end
if rhs.partial then
rhs = rhs.partial.first
end
end
return lhs.jdz < rhs.jdz
end
--[[ Examples of syntax to construct a date:
Date(y, m, d, 'julian') default calendar is 'gregorian'
Date(y, m, d, H, M, S, 'julian')
Date('juliandate', jd, 'julian') if jd contains "." text output includes H:M:S
Date('currentdate')
Date('currentdatetime')
Date('1 April 1995', 'julian') parse date from text
Date('1 April 1995 AD', 'julian') using an era sets a flag to do the same for output
Date('04:30:59 1 April 1995', 'julian')
Date(date) copy of an existing date
Date(date, t) same, updated with y,m,d,H,M,S fields from table t
Date(t) date with y,m,d,H,M,S fields from table t
]]
function Date(...) -- for forward declaration above
-- Return a table holding a date assuming a uniform calendar always applies
-- (proleptic Gregorian calendar or proleptic Julian calendar), or
-- return nothing if date is invalid.
-- A partial date has a valid year, however its month may be nil, and
-- its day and time fields are nil.
-- Field partial is set to false (if a full date) or a table (if a partial date).
local calendars = { julian = 'Julian', gregorian = 'Gregorian' }
local newdate = {
_id = uniq,
calendar = 'Gregorian', -- default is Gregorian calendar
hastime = false, -- true if input sets a time
hour = 0, -- always set hour/minute/second so don't have to handle nil
minute = 0,
second = 0,
options = {},
list = _date_list,
subtract = function (self, rhs, options)
return DateDiff(self, rhs, options)
end,
text = _date_text,
}
local argtype, datetext, is_copy, jd_number, tnums
local numindex = 0
local numfields = { 'year', 'month', 'day', 'hour', 'minute', 'second' }
local numbers = {}
for _, v in ipairs({...}) do
v = strip_to_nil(v)
local vlower = type(v) == 'string' and v:lower() or nil
if v == nil then
-- Ignore empty arguments after stripping so modules can directly pass template parameters.
elseif calendars[vlower] then
newdate.calendar = calendars[vlower]
elseif vlower == 'partial' then
newdate.partial = true
elseif vlower == 'fix' then
newdate.want_fix = true
elseif is_date(v) then
-- Copy existing date (items can be overridden by other arguments).
if is_copy or tnums then
return
end
is_copy = true
newdate.calendar = v.calendar
newdate.partial = v.partial
newdate.hastime = v.hastime
newdate.options = v.options
newdate.year = v.year
newdate.month = v.month
newdate.day = v.day
newdate.hour = v.hour
newdate.minute = v.minute
newdate.second = v.second
elseif type(v) == 'table' then
if tnums then
return
end
tnums = {}
local tfields = { year=1, month=1, day=1, hour=2, minute=2, second=2 }
for tk, tv in pairs(v) do
if tfields[tk] then
tnums[tk] = tonumber(tv)
end
if tfields[tk] == 2 then
newdate.hastime = true
end
end
else
local num = tonumber(v)
if not num and argtype == 'setdate' and numindex == 1 then
num = month_number(v)
end
if num then
if not argtype then
argtype = 'setdate'
end
if argtype == 'setdate' and numindex < 6 then
numindex = numindex + 1
numbers[numfields[numindex]] = num
elseif argtype == 'juliandate' and not jd_number then
jd_number = num
if type(v) == 'string' then
if v:find('.', 1, true) then
newdate.hastime = true
end
elseif num ~= floor(num) then
-- The given value was a number. The time will be used
-- if the fractional part is nonzero.
newdate.hastime = true
end
else
return
end
elseif argtype then
return
elseif type(v) == 'string' then
if v == 'currentdate' or v == 'currentdatetime' or v == 'juliandate' then
argtype = v
else
argtype = 'datetext'
datetext = v
end
else
return
end
end
end
if argtype == 'datetext' then
if tnums or not set_date_from_numbers(newdate, extract_date(newdate, datetext)) then
return
end
elseif argtype == 'juliandate' then
newdate.partial = nil
newdate.jd = jd_number
if not set_date_from_jd(newdate) then
return
end
elseif argtype == 'currentdate' or argtype == 'currentdatetime' then
newdate.partial = nil
newdate.year = current.year
newdate.month = current.month
newdate.day = current.day
if argtype == 'currentdatetime' then
newdate.hour = current.hour
newdate.minute = current.minute
newdate.second = current.second
newdate.hastime = true
end
newdate.calendar = 'Gregorian' -- ignore any given calendar name
elseif argtype == 'setdate' then
if tnums or not set_date_from_numbers(newdate, numbers) then
return
end
elseif not (is_copy or tnums) then
return
end
if tnums then
newdate.jd = nil -- force recalculation in case jd was set before changes from tnums
if not set_date_from_numbers(newdate, tnums) then
return
end
end
if newdate.partial then
local year = newdate.year
local month = newdate.month
local first = Date(year, month or 1, 1, newdate.calendar)
month = month or 12
local last = Date(year, month, days_in_month(year, month), newdate.calendar)
newdate.partial = { first = first, last = last }
else
newdate.partial = false -- avoid index lookup
end
setmetatable(newdate, datemt)
local readonly = {}
local mt = {
__index = newdate,
__newindex = function(t, k, v) error('date.' .. tostring(k) .. ' is read-only', 2) end,
__add = mt_date_add,
__sub = mt_date_sub,
__concat = mt_date_concat,
__tostring = mt_date_tostring,
__eq = mt_date_eq,
__lt = mt_date_lt,
}
return setmetatable(readonly, mt)
end
local function _diff_age(diff, code, options)
-- Return a tuple of integer values from diff as specified by code, except that
-- each integer may be a list of two integers for a diff with a partial date, or
-- return nil if the code is not supported.
-- If want round, the least significant unit is rounded to nearest whole unit.
-- For a duration, an extra day is added.
local wantround, wantduration, wantrange
if type(options) == 'table' then
wantround = options.round
wantduration = options.duration
wantrange = options.range
else
wantround = options
end
if not is_diff(diff) then
local f = wantduration and 'duration' or 'age'
error(f .. ': need a date difference (use "diff:' .. f .. '()" with a colon)', 2)
end
if diff.partial then
-- Ignore wantround, wantduration.
local function choose(v)
if type(v) == 'table' then
if not wantrange or v[1] == v[2] then
-- Example: Date('partial', 2005) - Date('partial', 2001) gives
-- diff.years = { 3, 4 } to show the range of possible results.
-- If do not want a range, choose the second value as more expected.
return v[2]
end
end
return v
end
if code == 'ym' or code == 'ymd' then
if not wantrange and diff.iszero then
-- This avoids an unexpected result such as
-- Date('partial', 2001) - Date('partial', 2001)
-- giving diff = { years = 0, months = { 0, 11 } }
-- which would be reported as 0 years and 11 months.
return 0, 0
end
return choose(diff.partial.years), choose(diff.partial.months)
end
if code == 'y' then
return choose(diff.partial.years)
end
if code == 'm' or code == 'w' or code == 'd' then
return choose({ diff.partial.mindiff:age(code), diff.partial.maxdiff:age(code) })
end
return nil
end
local extra_days = wantduration and 1 or 0
if code == 'wd' or code == 'w' or code == 'd' then
local offset = wantround and 0.5 or 0
local days = diff.age_days + extra_days
if code == 'wd' or code == 'd' then
days = floor(days + offset)
if code == 'd' then
return days
end
return floor(days/7), days % 7
end
return floor(days/7 + offset)
end
local H, M, S = diff.hours, diff.minutes, diff.seconds
if code == 'dh' or code == 'dhm' or code == 'dhms' or code == 'h' or code == 'hm' or code == 'hms' or code == 'M' or code == 's' then
local days = floor(diff.age_days + extra_days)
local inc_hour
if wantround then
if code == 'dh' or code == 'h' then
if M >= 30 then
inc_hour = true
end
elseif code == 'dhm' or code == 'hm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'M' then
if S >= 30 then
M = M + 1
end
else
-- Nothing needed because S is an integer.
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
days = days + 1
end
end
end
if code == 'dh' or code == 'dhm' or code == 'dhms' then
if code == 'dh' then
return days, H
elseif code == 'dhm' then
return days, H, M
else
return days, H, M, S
end
end
local hours = days * 24 + H
if code == 'h' then
return hours
elseif code == 'hm' then
return hours, M
elseif code == 'M' or code == 's' then
M = hours * 60 + M
if code == 'M' then
return M
end
return M * 60 + S
end
return hours, M, S
end
if wantround then
local inc_hour
if code == 'ymdh' or code == 'ymwdh' then
if M >= 30 then
inc_hour = true
end
elseif code == 'ymdhm' or code == 'ymwdhm' then
if S >= 30 then
M = M + 1
if M >= 60 then
M = 0
inc_hour = true
end
end
elseif code == 'ymd' or code == 'ymwd' or code == 'yd' or code == 'md' then
if H >= 12 then
extra_days = extra_days + 1
end
end
if inc_hour then
H = H + 1
if H >= 24 then
H = 0
extra_days = extra_days + 1
end
end
end
local y, m, d = diff.years, diff.months, diff.days
if extra_days > 0 then
d = d + extra_days
if d > 28 or code == 'yd' then
-- Recalculate in case have passed a month.
diff = diff.date1 + extra_days - diff.date2
y, m, d = diff.years, diff.months, diff.days
end
end
if code == 'ymd' then
return y, m, d
elseif code == 'yd' then
if y > 0 then
-- It is known that diff.date1 > diff.date2.
diff = diff.date1 - (diff.date2 + (y .. 'y'))
end
return y, floor(diff.age_days)
elseif code == 'md' then
return y * 12 + m, d
elseif code == 'ym' or code == 'm' then
if wantround then
if d >= 16 then
m = m + 1
if m >= 12 then
m = 0
y = y + 1
end
end
end
if code == 'ym' then
return y, m
end
return y * 12 + m
elseif code == 'ymw' then
local weeks = floor(d/7)
if wantround then
local days = d % 7
if days > 3 or (days == 3 and H >= 12) then
weeks = weeks + 1
end
end
return y, m, weeks
elseif code == 'ymwd' then
return y, m, floor(d/7), d % 7
elseif code == 'ymdh' then
return y, m, d, H
elseif code == 'ymwdh' then
return y, m, floor(d/7), d % 7, H
elseif code == 'ymdhm' then
return y, m, d, H, M
elseif code == 'ymwdhm' then
return y, m, floor(d/7), d % 7, H, M
end
if code == 'y' then
if wantround and m >= 6 then
y = y + 1
end
return y
end
return nil
end
local function _diff_duration(diff, code, options)
if type(options) ~= 'table' then
options = { round = options }
end
options.duration = true
return _diff_age(diff, code, options)
end
-- Metatable for some operations on date differences.
diffmt = { -- for forward declaration above
__concat = function (lhs, rhs)
return tostring(lhs) .. tostring(rhs)
end,
__tostring = function (self)
return tostring(self.age_days)
end,
__index = function (self, key)
local value
if key == 'age_days' then
if rawget(self, 'partial') then
local function jdz(date)
return (date.partial and date.partial.first or date).jdz
end
value = jdz(self.date1) - jdz(self.date2)
else
value = self.date1.jdz - self.date2.jdz
end
end
if value ~= nil then
rawset(self, key, value)
return value
end
end,
}
function DateDiff(date1, date2, options) -- for forward declaration above
-- Return a table with the difference between two dates (date1 - date2).
-- The difference is negative if date1 is older than date2.
-- Return nothing if invalid.
-- If d = date1 - date2 then
-- date1 = date2 + d
-- If date1 >= date2 and the dates have no H:M:S time specified then
-- date1 = date2 + (d.years..'y') + (d.months..'m') + d.days
-- where the larger time units are added first.
-- The result of Date(2015,1,x) + '1m' is Date(2015,2,28) for
-- x = 28, 29, 30, 31. That means, for example,
-- d = Date(2015,3,3) - Date(2015,1,31)
-- gives d.years, d.months, d.days = 0, 1, 3 (excluding date1).
if not (is_date(date1) and is_date(date2) and date1.calendar == date2.calendar) then
return
end
local wantfill
if type(options) == 'table' then
wantfill = options.fill
end
local isnegative = false
local iszero = false
if date1 < date2 then
isnegative = true
date1, date2 = date2, date1
elseif date1 == date2 then
iszero = true
end
-- It is known that date1 >= date2 (period is from date2 to date1).
if date1.partial or date2.partial then
-- Two partial dates might have timelines:
---------------------A=================B--- date1 is from A to B inclusive
--------C=======D-------------------------- date2 is from C to D inclusive
-- date1 > date2 iff A > C (date1.partial.first > date2.partial.first)
-- The periods can overlap ('April 2001' - '2001'):
-------------A===B------------------------- A=2001-04-01 B=2001-04-30
--------C=====================D------------ C=2001-01-01 D=2001-12-31
if wantfill then
date1, date2 = autofill(date1, date2)
else
local function zdiff(date1, date2)
local diff = date1 - date2
if diff.isnegative then
return date1 - date1 -- a valid diff in case we call its methods
end
return diff
end
local function getdate(date, which)
return date.partial and date.partial[which] or date
end
local maxdiff = zdiff(getdate(date1, 'last'), getdate(date2, 'first'))
local mindiff = zdiff(getdate(date1, 'first'), getdate(date2, 'last'))
local years, months
if maxdiff.years == mindiff.years then
years = maxdiff.years
if maxdiff.months == mindiff.months then
months = maxdiff.months
else
months = { mindiff.months, maxdiff.months }
end
else
years = { mindiff.years, maxdiff.years }
end
return setmetatable({
date1 = date1,
date2 = date2,
partial = {
years = years,
months = months,
maxdiff = maxdiff,
mindiff = mindiff,
},
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
end
local y1, m1 = date1.year, date1.month
local y2, m2 = date2.year, date2.month
local years = y1 - y2
local months = m1 - m2
local d1 = date1.day + hms(date1)
local d2 = date2.day + hms(date2)
local days, time
if d1 >= d2 then
days = d1 - d2
else
months = months - 1
-- Get days in previous month (before the "to" date) given December has 31 days.
local dpm = m1 > 1 and days_in_month(y1, m1 - 1, date1.calendar) or 31
if d2 >= dpm then
days = d1 - hms(date2)
else
days = dpm - d2 + d1
end
end
if months < 0 then
years = years - 1
months = months + 12
end
days, time = math.modf(days)
local H, M, S = h_m_s(time)
return setmetatable({
date1 = date1,
date2 = date2,
partial = false, -- avoid index lookup
years = years,
months = months,
days = days,
hours = H,
minutes = M,
seconds = S,
isnegative = isnegative,
iszero = iszero,
age = _diff_age,
duration = _diff_duration,
}, diffmt)
end
return {
_current = current,
_Date = Date,
_days_in_month = days_in_month,
}
48b9402c32798b1e9f91f2ab44283ebda7b53ed9
Template:Note2
10
1535
2870
2020-08-05T18:01:16Z
w>MusikBot II
0
Protected "[[Template:Note2]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:A note]]
13605dfac3b49a18480f2ac3f9f04a860d69ca5f
Template:SDcat
10
762
1699
2020-08-07T18:02:31Z
wikipedia>MusikBot II
0
Protected "[[Template:SDcat]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:SDcat |setCat}}</includeonly><noinclude>
{{documentation}}
</noinclude>
8c6e8783ddb0dc699d6fb60370db97b73725b9a6
Template:Aligned table
10
1552
2887
2020-08-09T16:18:21Z
w>Bsherr
0
adding comment
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
5cb1e4aa4b2ef03c66dc6643cfbc807bba8ed995
Template:Code
10
229
1282
2020-08-09T22:30:02Z
wikipedia>Bsherr
0
adding comment
wikitext
text/x-wiki
{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
5d9b1a0980efe1b02eb91bc717438a5ae4a5ee04
Template:Convert
10
1168
2497
2020-08-09T22:52:24Z
w>Bsherr
0
adding comment
wikitext
text/x-wiki
<includeonly>{{{{{♥|safesubst:}}}#invoke:convert|convert}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
952ac4080dc4a427c4a65db9951c8a4f4c91c626
Template:Em
10
114
275
2020-08-09T23:17:35Z
wikipedia>Bsherr
0
/* top */as found, replacing [[Template:Tld]] with [[Template:Tlc]] or adding/updating category placement comments, plus general and typo fixes
wikitext
text/x-wiki
<em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
e2fac6fb507a0dd72c4e79d02403049c7d857c8d
Template:Infobox British royalty styles
10
1123
2448
2020-08-10T01:29:42Z
w>Bsherr
0
as found, replacing [[Template:Tld]] with [[Template:Tlc]] or adding/updating category placement comments, plus general and typo fixes
wikitext
text/x-wiki
{{Infobox manner of address
| background = #CCBBEE
| colour = #000066
| type = Royal
| name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| england = Royal Arms of England (1198-1340).svg
| greatbritain = Royal Arms of Great Britain (1714-1801).svg
| republic = Arms of the Protectorate (1653–1659).svg
| scotland = Royal Arms of the Kingdom of Scotland.svg
| own = {{{image|}}}
| #default = Arms of the United Kingdom.svg
}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|50px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox British royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
dfc99b45948c8197b535331a8df1fedd8c3e9315
Template:Pars
10
1562
2897
2020-08-14T20:06:37Z
w>Mgkrupa
0
Fix
wikitext
text/x-wiki
<includeonly>{{
#if: {{{2|}}}
|{{font | size={{{2}}} | text=(}}<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1| }}}</span>{{font | size={{{2}}} | text=)}}|{{#if: {{{s|}}}
|{{font | size={{{s}}} | text=(}}|(}}{{
#if: {{{1|}}}
|<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1}}}</span>| }}{{
#if: {{{s|}}}
|{{font | size={{{s}}} | text=)}}|)}}}}</includeonly><noinclude>
<!-------
Below, we add spacing to the above code to make it more readable:
------->
{{#if: {{{2|}}} | <!--- Start case where 2 is defined --->
{{font | {{{2}}} | text=(}}<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1| }}}</span>{{font | {{{2}}} | text=)}} <!--- End case where 2 is defined -->
| <!-- Start case where 2 is NOT defined -->
{{#if: {{{s|}}} |{{font | size={{{s}}} | text=(}}|(}} <!--- If s is defined then font ( otherwise, print a normal ( --->
{{#if: {{{1|}}} | <!--- Start case where 1 is defined --->
<span class="nowrap" style="padding-left:0.1em; padding-right:0.1em;">{{{1}}}</span>
| <!--- Start case where 1 is NOT defined --->
}}
{{#if: {{{s|}}} |{{font | size={{{s}}} | text=)}}|)}} <!--- If s is defined then font ) otherwise, else print a normal ) --->
}}<!--- End the if statement: {{#if: {{{2|}}} | ... --->
{{documentation}}
</noinclude>
0ad03a501529101f992f0cf350d24ec4d9d9b590
Module:SDcat
828
765
1705
2020-08-16T17:20:37Z
wikipedia>RexxS
0
if no connection to Wikidata, then do nothing
Scribunto
text/plain
--[[
SDcat
Module to check whether local short description matches that on Wikidata
--]]
local p = {}
-------------------------------------------------------------------------------
--[[
setCat has the qid of a Wikidata entity passed as |qid=
(it defaults to the associated qid of the current article if omitted)
and the local short description passed as |sd=
It returns a category if there is an associated Wikidata entity.
It returns one of the following tracking categories, as appropriate:
* Category:Short description matches Wikidata (case-insensitive)
* Category:Short description is different from Wikidata
* Category:Short description with empty Wikidata description
For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible.
--]]
-- function exported for use in other modules
-- (local short description, Wikidata entity-ID, link prefix)
p._setCat = function(sdesc, itemID, lp)
if not mw.wikibase then return nil end
if itemID == "" then itemID = nil end
-- Wikidata description field
local wdesc = (mw.wikibase.getDescription(itemID) or ""):lower()
if wdesc == "" then
return "[[" .. lp .. "Category:Short description with empty Wikidata description]]"
elseif wdesc == sdesc then
return "[[" .. lp .. "Category:Short description matches Wikidata]]"
else
return "[[" .. lp .. "Category:Short description is different from Wikidata]]"
end
end
-- function exported for call from #invoke
p.setCat = function(frame)
local args
if frame.args.sd then
args = frame.args
else
args = frame:getParent().args
end
-- local short description
local sdesc = mw.text.trim(args.sd or ""):lower()
-- Wikidata entity-ID
local itemID = mw.text.trim(args.qid or "")
-- link prefix, strip quotes
local lp = mw.text.trim(args.lp or ""):gsub('"', '')
return p._setCat(sdesc, itemID, lp)
end
return p
6c19ac0f72c79a618eb105808f74701376bb2b38
Template:Templatedata header
10
1620
2955
2020-08-18T14:12:38Z
w>Jonesey95
0
create redirect for what my hands want to type. Silly InterCaps.
wikitext
text/x-wiki
#REDIRECT [[Template:TemplateData header]]
25d8c9db52326d0ad51e186b96b8c4cff0cf02c3
Template:Sandbox other
10
54
991
103
2020-08-21T20:48:35Z
Dmehus
10
16 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki.
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:Template other
10
25
995
45
2020-08-21T20:48:37Z
Dmehus
10
10 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki.
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Module:String
828
17
997
29
2020-08-21T20:48:39Z
Dmehus
10
14 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki.
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:Check for unknown parameters
828
16
999
2020-08-21T20:48:39Z
Dmehus
10
6 revisions imported: Importing [[mh:test:Template:Soft redirect|Template:Soft redirect]], [[mh:test:Template:Soft redirect 2|Template:Soft redirect 2]], [[mh:test:Template:Interwiki redirect|Template:Interwiki redirect]], and [[mh:test:Template:Interwiki redirect/doc|Template:Interwiki redirect/doc]] from TestWiki.
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local knownargs = {}
local unknown = args['unknown'] or 'Found _VALUE_, '
local preview = args['preview']
local values = {}
local res = {}
local regexps = {}
-- create the list of known args, regular expressions, and the return string
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
if isnotempty(preview) then
preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>'
elseif preview == nil then
preview = unknown
end
-- loop over the parent args, and make sure they are on the list
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and
knownargs[tostring(k)] == nil and
( showblankpos or isnotempty(v) )
then
table.insert(values, k .. ' = ' .. clean(v))
end
end
-- add results to the output tables
if #values > 0 then
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
unknown = preview
end
for _, v in pairs(values) do
if v == '' then
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
v = ' '
end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
82e91534624e40370b95f1a60152f320b41cb688
Template:Navbox
10
205
464
2020-08-28T00:36:54Z
Dmehus
10
1 revision imported: Importing [[w:Template:Not around|Template:Not around]], [[w:Template:Not around/doc|Template:Not around/doc]], and associated templates from English Wikipedia.
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fe9b964401f895918ee4fe078678f1722a3c41ec
Module:Color contrast
828
148
345
2020-08-28T00:37:19Z
Dmehus
10
5 revisions imported: Importing [[w:Template:Not around|Template:Not around]], [[w:Template:Not around/doc|Template:Not around/doc]], and associated templates from English Wikipedia.
Scribunto
text/plain
--
-- This module implements
-- {{Color contrast ratio}}
-- {{Greater color contrast ratio}}
-- {{ColorToLum}}
-- {{RGBColorToLum}}
--
local p = {}
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
local function sRGB (v)
if (v <= 0.03928) then
v = v / 12.92
else
v = math.pow((v+0.055)/1.055, 2.4)
end
return v
end
local function rgbdec2lum(R, G, B)
if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
else
return ''
end
end
local function hsl2lum(h, s, l)
if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
local c = (1 - math.abs(2*l - 1))*s
local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
local m = l - c/2
local r, g, b = m, m, m
if( 0 <= h and h < 60 ) then
r = r + c
g = g + x
elseif( 60 <= h and h < 120 ) then
r = r + x
g = g + c
elseif( 120 <= h and h < 180 ) then
g = g + c
b = b + x
elseif( 180 <= h and h < 240 ) then
g = g + x
b = b + c
elseif( 240 <= h and h < 300 ) then
r = r + x
b = b + c
elseif( 300 <= h and h < 360 ) then
r = r + c
b = b + x
end
return rgbdec2lum(255*r, 255*g, 255*b)
else
return ''
end
end
local function color2lum(c)
if (c == nil) then
return ''
end
-- html '#' entity
c = c:gsub("#", "#")
-- whitespace
c = c:match( '^%s*(.-)[%s;]*$' )
-- unstrip nowiki strip markers
c = mw.text.unstripNoWiki(c)
-- lowercase
c = c:lower()
-- first try to look it up
local L = HTMLcolor[c]
if (L ~= nil) then
return L
end
-- convert from hsl
if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)
end
-- convert from rgb
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$')
return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))
end
-- convert from rgb percent
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)
end
-- remove leading # (if there is one) and whitespace
c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$')
-- split into rgb
local cs = mw.text.split(c or '', '')
if( #cs == 6 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2])
local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4])
local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6])
return rgbdec2lum(R, G, B)
elseif ( #cs == 3 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1])
local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2])
local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3])
return rgbdec2lum(R, G, B)
end
-- failure, return blank
return ''
end
-- This exports the function for use in other modules.
-- The colour is passed as a string.
function p._lum(color)
return color2lum(color)
end
function p._greatercontrast(args)
local bias = tonumber(args['bias'] or '0') or 0
local css = (args['css'] and args['css'] ~= '') and true or false
local v1 = color2lum(args[1] or '')
local c2 = args[2] or '#FFFFFF'
local v2 = color2lum(c2)
local c3 = args[3] or '#000000'
local v3 = color2lum(c3)
local ratio1 = -1;
local ratio2 = -1;
if (type(v1) == 'number' and type(v2) == 'number') then
ratio1 = (v2 + 0.05)/(v1 + 0.05)
ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1
end
if (type(v1) == 'number' and type(v3) == 'number') then
ratio2 = (v3 + 0.05)/(v1 + 0.05)
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
end
if css then
local c1 = args[1] or ''
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c1 = '#' .. c1
end
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c2 = '#' .. c2
end
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c3 = '#' .. c3
end
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
end
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
end
function p._ratio(args)
local v1 = color2lum(args[1])
local v2 = color2lum(args[2])
if (type(v1) == 'number' and type(v2) == 'number') then
-- v1 should be the brighter of the two.
if v2 > v1 then
v1, v2 = v2, v1
end
return (v1 + 0.05)/(v2 + 0.05)
else
return args['error'] or '?'
end
end
function p._styleratio(args)
local style = (args[1] or ''):lower()
local bg, fg = 'white', 'black'
local lum_bg, lum_fg = 1, 0
if args[2] then
local lum = color2lum(args[2])
if lum ~= '' then bg, lum_bg = args[2], lum end
end
if args[3] then
local lum = color2lum(args[3])
if lum ~= '' then fg, lum_fg = args[3], lum end
end
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '#', '#'), ';')
for k = 1,#slist do
local s = slist[k]
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
k = k or ''
v = v or ''
if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_bg = v, lum end
elseif (k:match('^[%s]*(color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_fg = v, lum end
end
end
if lum_bg > lum_fg then
return (lum_bg + 0.05)/(lum_fg + 0.05)
else
return (lum_fg + 0.05)/(lum_bg + 0.05)
end
end
--[[
Use {{#invoke:Color contrast|somecolor}} directly or
{{#invoke:Color contrast}} from a wrapper template.
Parameters:
-- |1= — required; A color to check.
--]]
function p.lum(frame)
local color = frame.args[1] or frame:getParent().args[1]
return p._lum(color)
end
function p.ratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._ratio(args)
end
function p.styleratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._styleratio(args)
end
function p.greatercontrast(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._greatercontrast(args)
end
return p
1e399769117591366a63f62996c9a407077cc711
Template:Yesno
10
12
19
2020-08-28T03:15:17Z
Xaosflux
7
add additional paramerters, "t", "f" - requested on talk - worked in sandbox /testcases
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
629c2937bc5cf7cfe13cd2a598582af832782399
Module:TNT
828
77
1073
2020-08-30T07:28:25Z
wikipedia>Johnuniq
0
Changed protection level for "[[Module:TNT]]": [[WP:High-risk templates|High-risk Lua module]]: per request at [[WP:RFPP]] to match [[Module:Excerpt]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
table.insert(params, mw.text.trim(v))
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in pairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in pairs(data.data) do
local newVal = {}
local name = nil
for pos, val in pairs(row) do
local columnName = names[pos]
if columnName == 'name' then
name = val
else
newVal[columnName] = val
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
9d0d10e54abd232c806dcabccaf03e52858634a1
Template:Gbmappingsmall
10
1403
2738
2020-09-01T00:17:20Z
Ahecht
42
Reduce [[WP:PEIS]]
wikitext
text/x-wiki
{{#if:{{{1|}}}|{{#invoke:Ordnance Survey coordinates|oscoord|{{{1}}}_region:GB_scale:25000|{{{1}}}|name={{{name|}}}}}}}<noinclude>
{{documentation|Template:Gbmapping/doc}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
62950f72eed4e5bfccd0a82c4c20fec7fd51b4b5
Template:Abbr
10
89
225
2020-09-02T09:46:47Z
wikipedia>Primefac
0
remove third parameter, as it is causing lint issues (TPER)
wikitext
text/x-wiki
<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}}
</noinclude>
5fd53aa19ba927ce3eea9092a4fa31f881df0a6e
Template:Increase
10
1176
2505
2020-09-08T22:54:27Z
w>Sdkb
0
adding size parameter, per talk
wikitext
text/x-wiki
[[File:Increase2.svg|{{{size|11px}}}|alt={{{1|Increase}}}|link=|{{{1|Increase}}}]]<noinclude>
{{documentation}}
</noinclude>
dac0cb099f2bf8616e0649249f7e4593a2bf54bd
Template:Subpage other
10
1265
2599
2020-09-10T16:00:23Z
w>Favonian
0
Changed protection level for "[[Template:Subpage other]]": [[WP:High-risk templates|Highly visible template]]: requested at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#ifeq:{{SUBPAGENAME}}|{{ROOTPAGENAME}}|{{{2|}}}|{{{1|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
ebcb508ec39c25594f4151c4e32c01eeb5732f3d
Template:IsValidPageName
10
178
409
2020-09-10T21:37:46Z
Pppery
6
Module being deleted
wikitext
text/x-wiki
{{#ifeq:{{{1}}}|-||{{#iferror:{{#invoke:Page|invalid|{{{1}}}}}||valid}}}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
df8eb681019823d4eba2df6f8d521bc95426d54e
Template:Cslist/styles.css
10
613
1384
2020-09-18T15:41:55Z
wikipedia>Izno
0
add embedded option
sanitized-css
text/css
/* {{pp-template}} */
/* make an inline list with either comma or semicolon separators */
ul.cslist,
ul.sslist {
margin: 0;
padding: 0;
display: inline-block;
list-style: none;
}
ul.cslist-embedded {
display: inline;
}
.cslist li, .sslist li {
margin: 0;
padding: 0 0.25em 0 0;
display: inline-block;
}
.cslist li:after {
content: ", ";
}
.sslist li:after {
content: "; ";
}
.cslist li:last-child:after,
.sslist li:last-child:after {
content: none;
}
b7fc7c7a6f4e14d23d0a7483f5727aec838c7a21
Module:Cslist
828
614
1386
2020-09-18T15:45:25Z
wikipedia>Izno
0
sync from sandbox
Scribunto
text/plain
p = {}
p.makelist = function(frame)
local args = frame.args
if not args[1] then
args = frame:getParent().args
if not args[1] then return end
end
local semi = (args.semi or ""):sub(1,1):lower()
semi = (semi == "t") or (semi == "y")
local embedded = (args.embedded or ""):sub(1,1):lower()
embedded = (embedded == "y")
local out = ""
for k, v in ipairs(args) do
v = mw.text.trim(v)
if v ~= "" then
out = out .. "<li>" .. v .. "</li>"
end
end
local listclass = ""
if semi then
listclass = listclass .. "sslist"
else
listclass = listclass .. "cslist"
end
if embedded then
listclass = listclass .. " cslist-embedded"
end
if out ~= "" then
return '<ul class="'.. listclass ..'">' .. out .. '</ul>'
end
end
return p
82fa872fef0f065ea5b7e6639e4390c93142fac9
Template:Sup
10
1483
2818
2020-09-23T06:24:01Z
w>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly><sup>{{{1}}}</sup></includeonly><noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
d7d0f30bf52c68f2f488db57534de2552c40c938
Module:Anchor
828
567
1280
2020-09-24T22:32:51Z
Pppery
6
Add class per edit request
Scribunto
text/plain
-- This module implements {{anchor}}.
local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')
local p = {}
function p.main(frame)
-- Get the positional arguments from #invoke, remove any nil values,
-- and pass them to p._main.
local args = getArgs(frame)
local argArray = tableTools.compressSparseArray(args)
return p._main(unpack(argArray))
end
function p._main(...)
-- Generate the list of anchors.
local anchors = {...}
local ret = {}
for _, anchor in ipairs(anchors) do
ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
end
return table.concat(ret)
end
return p
e41d3f5d2f2840528aebb9bac719873540fcb3b8
Template:Infobox settlement/metric
10
1445
2780
2020-09-28T06:57:35Z
w>Jonesey95
0
This should work better; strip commas but leave decimal points
wikitext
text/x-wiki
<includeonly>{{formatnum:{{replace|{{{metv}}}|,|}}}}{{{s| }}}{{{metu|m}}} ({{formatnum:{{replace|{{{impv}}}|,|}}}}{{{s| }}}{{{impu|ft}}}{{#ifeq:{{{impv|0}}}|1||{{#ifeq:{{{s}}}|/||{{#ifeq:{{{impu}}}|acre|s}}}}}})</includeonly><noinclude>
{{documentation}}
</noinclude>
238498d088545a64bfa63221c9bf59ecddda8b56
Template:Infobox settlement/densdisp
10
1428
2763
2020-09-28T06:58:54Z
w>Jonesey95
0
Undid revision 980749675 by [[Special:Contributions/Jonesey95|Jonesey95]] ([[User talk:Jonesey95|talk]]). broken
wikitext
text/x-wiki
<includeonly>{{#if:
{{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}}
|{{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}}
|{{#switch:auto
|{{{/km2}}}|{{{/sqmi}}}={{#iferror:{{#expr:-{{formatnum:{{{pop}}}|R}}}}
||{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}}
+{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}}
+{{#iferror:{{#expr:{{formatnum:{{{acre|}}}|R}}}}}}
+{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}}
+{{#iferror:{{#expr:{{formatnum:{{{dunam|}}}|R}}}}}}
+0
>0
|1}}
}}
}}
|1
}}
|1
}}
|{{infobox settlement/{{infobox settlement/pref|{{{pref}}}|{{{name}}}}}
|metv={{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}}
|{{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}}+0>0
|{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}}+0>0
|{{round|{{#expr:100*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:100*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{dunam|}}}|R}}}}}}+0>0
|{{round|{{#expr:1000*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:1000*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}}+0>0
|{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}/2.589988110336}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}/2.589988110336}}}}}}}}
|{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}/0.004046856422}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}/0.004046856422}}}}}}}}
}}}}}}}}
|{{round
|{{#expr:{{formatnum:{{{/sqmi}}}|R}}/2.589988110336}}
|{{max
|{{precision|{{formatnum:{{{/sqmi}}}|R}}}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{/sqmi}}}|R}}/2.589988110336}}}}
}}
}}
}}
|{{{/km2}}}
}}
|metu=km<sup>2</sup>
|impv={{#iferror:{{#expr:-{{formatnum:{{{/sqmi}}}|R}}}}
|{{#iferror:{{#expr:-{{formatnum:{{{/km2}}}|R}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{sqmi|}}}|R}}}}}}+0>0
|{{round|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{sqmi}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{acre|}}}|R}}}}}}+0>0
|{{round|{{#expr:640*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:640*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{acre}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{km2|}}}|R}}}}}}+0>0
|{{round|{{#expr:2.589988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:2.589988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{km2}}}|R}}}}}}}}}}
|{{#ifexpr:{{#iferror:{{#expr:{{formatnum:{{{ha|}}}|R}}}}}}+0>0
|{{round|{{#expr:258.9988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:258.9988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{ha}}}|R}}}}}}}}}}
|{{round|{{#expr:2589.988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}<!--
-->|{{#expr:1-{{Order of magnitude|{{#expr:2589.988110336*{{formatnum:{{{pop}}}|R}}/{{formatnum:{{{dunam}}}|R}}}}}}}}}}
}}}}}}}}
|{{round
|{{#expr:{{formatnum:{{{/km2}}}|R}}*2.589988110336}}
|{{max
|{{#expr:{{precision|{{formatnum:{{{/km2}}}|R}}}}-1}}
|-{{Order of magnitude|{{#expr:{{formatnum:{{{/km2}}}|R}}*2.589988110336}}}}
}}
}}
}}
|{{{/sqmi}}}
}}
|impu=sq mi
|s=/
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
8d2587f8008e5720272fd3abbbdd54f8c8dc306a
Module:Effective protection level
828
31
57
2020-09-29T03:38:47Z
wikipedia>Jackmcbarn
0
bring in changes from sandbox
Scribunto
text/plain
local p = {}
-- Returns the permission required to perform a given action on a given title.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
level = level and level.autoreview
if level == 'review' then
return 'reviewer'
elseif level ~= '' then
return level
else
return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review
end
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then
error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 )
end
if title.namespace == 8 then -- MediaWiki namespace
if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page
return 'interfaceadmin'
else -- any non-JS/CSS MediaWiki page
return 'sysop'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page
return 'interfaceadmin'
elseif title.contentModel == 'json' then -- user JSON page
return 'sysop'
end
end
if action == 'undelete' then
return 'sysop'
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
if level == 'sysop' or level == 'editprotected' then
return 'sysop'
elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
return 'sysop'
elseif level == 'templateeditor' then
return 'templateeditor'
elseif action == 'move' then
local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.
if blacklistentry and not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif title.namespace == 6 then
return 'filemover'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
end
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
if blacklistentry then
if not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason
return 'autoconfirmed'
elseif level then
return level
elseif action == 'upload' then
return 'autoconfirmed'
elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts
return 'user'
else
return '*'
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
70256a489edf6be9808031b14a7e3ef3e025da97
Template:Infobox president styles/doc
10
1282
2616
2020-10-02T00:31:30Z
w>Funandtrvl
0
update code
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{Wraps infobox|Infobox manner of address}}<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
{{DEFAULTSORT:President Styles}}
[[Category:Politics and government infobox templates]]
[[Category:Styles infobox templates]]
}}</includeonly>
fc305a1de6b95992169b7ee28a91564caa394736
Template:Infobox president styles
10
1130
2455
2020-10-02T00:32:11Z
w>Funandtrvl
0
update code
wikitext
text/x-wiki
{{Infobox manner of address
| type = Presidential
| name = {{{name<includeonly>|{{{{{|safesubst:}}}PAGENAME}}</includeonly>}}}
| image = {{{image<includeonly>|</includeonly>}}}
| image_alt = {{{image_alt<includeonly>|</includeonly>}}}
| image_size = {{{image_size|{{{size|}}}}}}
| image2 = {{{image2<includeonly>|</includeonly>}}}
| image2_alt = {{{image2_alt<includeonly>|</includeonly>}}}
| image2_size = {{{image2_size<includeonly>|{{{size2|{{{image_size|{{{size|}}}}}}}}}</includeonly>}}}
| reference = {{{dipstyle<includeonly>|{{{reference|}}}</includeonly>}}}
| spoken = {{{offstyle<includeonly>|{{{spoken|}}}</includeonly>}}}
| alternative = {{{altstyle<includeonly>|{{{alternative|}}}</includeonly>}}}
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
36f010eb727c3f11fe68f7746b627990316ee943
Template:Infobox viceroy styles
10
1133
2458
2020-10-02T00:38:51Z
w>Funandtrvl
0
sort
wikitext
text/x-wiki
{{Infobox manner of address
| background = #6C488F
| colour = #fff
| type = Viceregal
| name = {{{name}}}
| image = {{{image}}}
| size = {{{size}}}
| reference = {{{dipstyle}}}
| spoken = {{{offstyle}}}
}}<noinclude>{{Documentation|content=
{{Wraps infobox|Infobox manner of address}}
[[Category:Styles infobox templates|Viceroy Styles]]
}}</noinclude>
cd354143e4edcf04301736abc85435204215a3d5
Template:Legend/styles.css
10
1104
2407
2020-10-03T19:24:47Z
wikipedia>Nihiltres
0
Updated (a touch boldly) based on discussion on talk; sets legend-color size and line-height to 1.25 em, makes width minimum, not fixed, and removes font-size
sanitized-css
text/css
/* {{pp-template}} */
.legend {
page-break-inside: avoid;
break-inside: avoid-column;
}
.legend-color {
display: inline-block;
min-width: 1.25em;
height: 1.25em;
line-height: 1.25;
margin: 1px 0;
text-align: center;
border: 1px solid black;
background-color: transparent;
color: black;
}
.legend-text {/*empty for now, but part of the design!*/}
f55cad65402533fc931db7fefc801536194952d7
Template:Uses Infobox settlement
10
1435
2770
2020-10-07T15:07:33Z
w>TerraCyprus
0
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|Template|{{Ombox
| type = style
| image = [[File:Ambox warning yellow.svg|40x40px|alt=|link=]]
| text = '''This template is a customized wrapper for {{tl|Infobox settlement}} and as such included in [[:Category:Templates calling Infobox settlement]]'''. Any field from {{tld|Infobox settlement}} can work so long as it is added to this template first. It will also emit the same [[hCard]] and [[Geo (microformat)|Geo]] [[microformat]]s as {{tld|Infobox settlement}}. Questions? Just ask here or over at [[Template talk:Infobox settlement]].
}}<includeonly>{{#ifeq: {{PAGENAME}} | {{BASEPAGENAME}} | [[Category:Templates calling Infobox settlement]] }}</includeonly>}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
54c13b0fa52195c6f1f43fe35f20cb8d5e3b2823
Template:Cite Americana/doc
10
1703
3205
2020-10-13T18:53:06Z
wikipedia>AManWithNoPlan
0
/* Using volume, pages, page */
wikitext
text/x-wiki
{{Documentation subpage}}
=== Purpose ===
This template facilitates the citation of articles from editions of ''[[Encyclopedia Americana]]'' that are in the [[public domain]] using {{tl|cite encyclopedia}}. The template can also be used to cite articles from editions that are not in the public domain. In these cases, the <code>noicon</code> parameter should be used to suppress the icon.
=== Usage ===
<code><nowiki>{{Cite Americana|wstitle=''name of the Americana article here''}}</nowiki></code>
or with a specification of additional options:
<pre><nowiki>{{</nowiki>Cite Americana</pre>
|noicon=''1'' — suppress the leading icon
|inline=''1'' — changes the prescript and should be used when this template is used as an inline citation
|short=''1'' — suppresses some of the fields such as editor's name
|ref=''harv'' — can be overridden (if you need to ask you do not need to change it)
|wstitle=''Americana article'' — if the article is available on Wikisource
|display=''alternative name'' — displayed inplace of the wstitle name
|title=''Americana article'' — if the article is not available on Wikisource
|url= — will not be set unless the parameter ''title='' is set
If not set, set in the template Cite Americana to default values
|encyclopedia= — "''Encyclopedia Americana''"
|editor-first= — defaults to "''George Edwin''"
|editor-last= — defaults to "''Rines''"
|{encyclopedia=
|year — defaults to 1920
If set pass in other standard parameters:
|first=
|first1=
|first2=
|last=
|last1=
|last2=
|author=
|author1=
|author2=
|authors=
|authorlink=
|coauthors=
|volume=
|page=
|pages=
|separator=
|postscript=
<pre>}}</pre>
Some parameters, unless set to other values, are pre-set:
*<code>editor-first</code> defaults to "''George Edwin''"
*<code>editor-last</code> defaults to "''Rines''"
*<code>year</code> defaults to "''1920''"
=== Examples ===
====Simple====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon}}
====With comment====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.
====Using <code>author</code>====
<code><nowiki>{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}</nowiki></code>
displays as:
{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}
====Using <code>volume</code>, <code>pages</code>, <code>page</code>====
These work as with other {{tl|cite journal}} templates:
<code><nowiki>{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}</nowiki></code>
displays as:
{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}
====Using <code>display</code>====
The mechanics of Wikisource will sometimes require that a link have disambiguation information which is not part of the original title. The <code>display</code> parameter allows this information to be hidden for the purpose of the citation. For example:
<code><nowiki>{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}
====Using <code>noicon</code>====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}
====Using <code>vb</code>====
If text is incorporated verbatim into an article, the <code>vb</code> parameter can be used to tack on a notice appropriate to the policy in [[Wikipedia:Plagiarism]].
<code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}
This option is depreciated. Instead use {{tl|Americana}} which does the same thing without the need for a ''vb=x'' parameter.
====Using <code>title</code> (no Wikisource link)====
<code><nowiki>{{Cite Americana |title=Sterne, Simon}}</nowiki></code>
displays as:
{{Cite Americana |title=Sterne, Simon}}
When <code>title</code> is being used, <code>url</code> can be used to specify an external link. For example:
<pre><nowiki>
{{Cite Americana
|title=Sterne, Simon
|url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632
}} At [[Google Books]].
</nowiki></pre>
displays as:
{{Cite Americana
|title=Sterne, Simon
|url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632
}} At [[Google Books]].
====Using <code>short</code>====
If a shorter citation is desired, excluding the editor of the 1920 edition, the <code>short</code> option can be used. For example:
<code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael|short=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Schlatter, Michael|short=x}}
If another edition besides 1920 is being used, the editor name can be customized using <code>editor-first</code> and <code>editor-last</code>. If used, these two items will be displayed whether or not the <code>short</code> option is specified.
== Hidden categories ==
This template places articles into a hidden category with sub-categories to aid maintenance:
*[[:Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana]]
== See also ==
* {{tl|Americana}} Similar in effect to setting the parameter vb=''x''
* {{tl|Americana Poster}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
{{DEFAULTSORT:Americana Cite}}
[[Category:Attribution templates]]
[[Category:Encyclopedia source templates]]
[[Category:Wikisource link templates]]
[[ja:Template:Cite Americana]]
}}</includeonly>
51b57656e51c3431a29d8167fb0a29bcf06f68ea
Template:Tlx
10
22
205
2020-10-15T22:47:01Z
Dmehus
10
1 revision imported: Importing [[w:Template:Help me|Template:Help me]], [[w:Template:Admin help|Template:Admin help]], and related templates from the English Wikipedia
wikitext
text/x-wiki
<code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!--
-->[[{{{lang|{{{LANG|}}}}}}{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!--
-->{{#if:{{{2|}}} ||{{{2}}}}}<!--
-->{{#if:{{{3|}}} ||{{{3}}}}}<!--
-->{{#if:{{{4|}}} ||{{{4}}}}}<!--
-->{{#if:{{{5|}}} ||{{{5}}}}}<!--
-->{{#if:{{{6|}}} ||{{{6}}}}}<!--
-->{{#if:{{{7|}}} ||{{{7}}}}}<!--
-->{{#if:{{{8|}}} ||{{{8}}}}}<!--
-->{{#if:{{{9|}}} ||{{{9}}}}}<!--
-->{{#if:{{{10|}}} ||{{{10}}}}}<!--
-->{{#if:{{{11|}}} ||{{{11}}}}}<!--
-->{{#if:{{{12|}}} ||{{{12}}}}}<!--
-->{{#if:{{{13|}}} ||{{{13}}}}}<!--
-->{{#if:{{{14|}}} ||{{{14}}}}}<!--
-->{{#if:{{{15|}}} ||{{{15}}}}}<!--
-->{{#if:{{{16|}}} ||{{{16}}}}}<!--
-->{{#if:{{{17|}}} ||{{{17}}}}}<!--
-->{{#if:{{{18|}}} ||{{{18}}}}}<!--
-->{{#if:{{{19|}}} ||{{{19}}}}}<!--
-->{{#if:{{{20|}}} ||{{{20}}}}}<!--
-->{{#if:{{{21|}}} ||''...''}}<!--
--><nowiki>}}</nowiki></code>{{#if: {{{LANG|}}} | {{Z181}} | {{#if: {{{SISTER|}}} | {{Z181}} }} }}<noinclude>
{{Documentation}}
</noinclude>
111a24c08959adf503c520d62428ef5f76e1fe00
Module:Category handler
828
143
335
2020-10-15T22:47:03Z
Dmehus
10
3 revisions imported: Importing [[w:Template:Help me|Template:Help me]], [[w:Template:Admin help|Template:Admin help]], and related templates from the English Wikipedia
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
b74dd63857b24904ac452429b11213f18647471f
Template:Uses TemplateStyles
10
81
197
2020-10-17T15:10:07Z
meta>K6ka
0
Created page with "<div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; backg..."
wikitext
text/x-wiki
<div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;">
<p style="margin:0 3% 0 3%;text-align:center;font-size:94%">
[[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br />
{{{1|}}}
</p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude>
{{clr}}
{{Documentation}}</noinclude>
fed44ca463856190bcf6280438ed7ea020ad82c3
Template:Main
10
102
989
2020-10-17T15:14:39Z
K6ka
11
Created page with ":<div class="noprint">''Main article{{#if:{{{2|}}}|s}}: [[{{{1}}}]]{{#if:{{{2| }}} |{{#if:{{{3|}}}|, | and }}[[{{{2}}}]]}}{{#if:{{{3|}}} |{{#if:{{{4|}}}|,&..."
wikitext
text/x-wiki
:<div class="noprint">''Main article{{#if:{{{2|}}}|s}}: [[{{{1}}}]]{{#if:{{{2| }}}
|{{#if:{{{3|}}}|, | and }}[[{{{2}}}]]}}{{#if:{{{3|}}}
|{{#if:{{{4|}}}|, |, and }}[[{{{3}}}]]}}{{#if:{{{4|}}}
|{{#if:{{{5|}}}|, |, and }}[[{{{4}}}]]}}{{#if:{{{5|}}}
|, and [[{{{5}}}]]}}''{{#if:{{{6| }}}|<strong class="error">  [[Template:Main]] error: too many pages listed, maximum is 5.</strong>}}</div>
<noinclude>{{documentation}}</noinclude>
dbea45af8a2459110824c7e32c4b359d2dbca61d
Template:Lang
10
432
1910
2020-10-19T17:49:42Z
wikipedia>Gonnym
0
wikitext
text/x-wiki
<includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
ed35aafbfe8198c5ad80fd861124244d0c7f2742
Template:Nosubst
10
1585
2920
2020-10-24T00:12:48Z
w>EmausBot
0
Bot: Fixing double redirect to [[Template:Never substitute]]
wikitext
text/x-wiki
#REDIRECT [[Template:Never substitute]]
{{Redirect category shell|
{{R from move}}
}}
0bb895940dbacb304662975e79cc45e09170c0ae
Module:Infobox mapframe
828
1425
2760
2020-10-28T02:54:00Z
w>Evad37
0
only allow shapes/lines based on wikidata id if there is an id
Scribunto
text/plain
local mf = require('Module:Mapframe')
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local infoboxImage = require('Module:InfoboxImage').InfoboxImage
-- Defaults
local DEFAULT_FRAME_WIDTH = "270"
local DEFAULT_FRAME_HEIGHT = "200"
local DEFAULT_ZOOM = 10
local DEFAULT_GEOMASK_STROKE_WIDTH = "1"
local DEFAULT_GEOMASK_STROKE_COLOR = "#777777"
local DEFAULT_GEOMASK_FILL = "#888888"
local DEFAULT_GEOMASK_FILL_OPACITY = "0.5"
local DEFAULT_SHAPE_STROKE_WIDTH = "3"
local DEFAULT_SHAPE_STROKE_COLOR = "#FF0000"
local DEFAULT_SHAPE_FILL = "#606060"
local DEFAULT_SHAPE_FILL_OPACITY = "0.5"
local DEFAULT_LINE_STROKE_WIDTH = "5"
local DEFAULT_LINE_STROKE_COLOR = "#FF0000"
local DEFAULT_MARKER_COLOR = "#5E74F3"
-- Trim whitespace from args, and remove empty args
function trimArgs(argsTable)
local cleanArgs = {}
for key, val in pairs(argsTable) do
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val ~= '' then
cleanArgs[key] = val
end
else
cleanArgs[key] = val
end
end
return cleanArgs
end
function getBestStatement(item_id, property_id)
if not(item_id) or not(mw.wikibase.isValidEntityId(item_id)) or not(mw.wikibase.entityExists(item_id)) then
return false
end
local statements = mw.wikibase.getBestStatements(item_id, property_id)
if not statements or #statements == 0 then
return false
end
local hasNoValue = ( statements[1].mainsnak and statements[1].mainsnak.snaktype == 'novalue' )
if hasNoValue then
return false
end
return statements[1]
end
function hasWikidataProperty(item_id, property_id)
return getBestStatement(item_id, property_id) and true or false
end
function getStatementValue(statement)
return statement and statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value or nil
end
function relatedEntity(item_id, property_id)
local value = getStatementValue( getBestStatement(item_id, property_id) )
return value and value.id or false
end
function idType(id)
if not id then
return nil
elseif mw.ustring.match(id, "[Pp]%d+") then
return "property"
elseif mw.ustring.match(id, "[Qq]%d+") then
return "item"
else
return nil
end
end
function getZoom(value, unit)
local length_km
if unit == 'km' then
length_km = tonumber(value)
elseif unit == 'mi' then
length_km = tonumber(value)*1.609344
elseif unit == 'km2' then
length_km = math.sqrt(tonumber(value))
elseif unit == 'mi2' then
length_km = math.sqrt(tonumber(value))*1.609344
end
-- max for zoom 2 is 6400km, for zoom 3 is 3200km, for zoom 4 is 1600km, etc
local zoom = math.floor(8 - (math.log10(length_km) - 2)/(math.log10(2)))
-- limit to values below 17
zoom = math.min(17, zoom)
-- take off 1 when calculated from area, to account for unusual shapes
if unit == 'km2' or unit == 'mi2' then
zoom = zoom - 1
end
-- minimum value is 1
return math.max(1, zoom)
end
function shouldAutoRun(frame)
-- Check if should be running
local explicitlyOn = yesno(mw.text.trim(frame.getParent(frame).args.mapframe or "")) -- true of false or nil
local onByDefault = (explicitlyOn == nil) and yesno(mw.text.trim(frame.args.onByDefault or ""), false) -- true or false
return explicitlyOn or onByDefault
end
function argsFromAuto(frame)
-- Get args from the frame (invoke call) and the parent (template call).
-- Frame arguments are default values which are overridden by parent values
-- when both are present
local args = getArgs(frame, {parentFirst = true})
-- Discard args not prefixed with "mapframe-", remove that prefix from those that remain
local fixedArgs = {}
for name, val in pairs(args) do
local fixedName = string.match(name, "^mapframe%-(.+)$" )
if fixedName then
fixedArgs[fixedName] = val
-- allow coord, coordinates, etc to be unprefixed
elseif name == "coordinates" or name == "coord" or name == "coordinate" and not fixedArgs.coord then
fixedArgs.coord = val
-- allow id, qid to be unprefixed, map to id (if not already present)
elseif name == "id" or name == "qid" and not fixedArgs.id then
fixedArgs.id = val
end
end
return fixedArgs
end
local p = {}
p.autocaption = function(frame)
if not shouldAutoRun(frame) then return "" end
local args = argsFromAuto(frame)
if args.caption then
return args.caption
elseif args.switcher then
return ""
end
local maskItem
local maskType = idType(args.geomask)
if maskType == 'item' then
maskItem = args.geomask
elseif maskType == "property" then
maskItem = relatedEntity(args.id or mw.wikibase.getEntityIdForCurrentPage(), args.geomask)
end
local maskItemLabel = maskItem and mw.wikibase.getLabel( maskItem )
return maskItemLabel and "Location in "..maskItemLabel or ""
end
function parseCustomWikitext(customWikitext)
-- infoboxImage will format an image if given wikitext containing an
-- image, or else pass through the wikitext unmodified
return infoboxImage({
args = {
image = customWikitext
}
})
end
p.auto = function(frame)
if not shouldAutoRun(frame) then return "" end
local args = argsFromAuto(frame)
if args.custom then
return frame:preprocess(parseCustomWikitext(args.custom))
end
local mapframe = p._main(args)
return frame:preprocess(mapframe)
end
p.main = function(frame)
local parent = frame.getParent(frame)
local parentArgs = parent.args
local mapframe = p._main(parentArgs)
return frame:preprocess(mapframe)
end
p._main = function(_config)
-- `config` is the args passed to this module
local config = trimArgs(_config)
-- Require wikidata item, or specified coords
local wikidataId = config.id or mw.wikibase.getEntityIdForCurrentPage()
if not(wikidataId) and not(config.coord) then
return ''
end
-- Require coords (specified or from wikidata), so that map will be centred somewhere
-- (P625 = coordinate location)
local hasCoordinates = hasWikidataProperty(wikidataId, 'P625') or config.coordinates or config.coord
if not hasCoordinates then
return ''
end
-- `args` is the arguments which will be passed to the mapframe module
local args = {}
-- Some defaults/overrides for infobox presentation
args.display = "inline"
args.frame = "yes"
args.plain = "yes"
args["frame-width"] = config["frame-width"] or config.width or DEFAULT_FRAME_WIDTH
args["frame-height"] = config["frame-height"] or config.height or DEFAULT_FRAME_HEIGHT
args["frame-align"] = "center"
args["frame-coord"] = config["frame-coordinates"] or config["frame-coord"] or ""
-- Note: config["coordinates"] or config["coord"] should not be used for the alignment of the frame;
-- see talk page ( https://en.wikipedia.org/wiki/Special:Diff/876492931 )
-- deprecated lat and long parameters
args["frame-lat"] = config["frame-lat"] or config["frame-latitude"] or ""
args["frame-long"] = config["frame-long"] or config["frame-longitude"] or ""
-- Calculate zoom from length or area (converted to km or km2)
if config.length_km then
args.zoom = getZoom(config.length_km, 'km')
elseif config.length_mi then
args.zoom = getZoom(config.length_mi, 'mi')
elseif config.area_km2 then
args.zoom = getZoom(config.area_km2, 'km2')
elseif config.area_mi2 then
args.zoom = getZoom(config.area_mi2, 'mi2')
else
args.zoom = config.zoom or DEFAULT_ZOOM
end
-- Conditionals: whether point, geomask should be shown
local hasOsmRelationId = hasWikidataProperty(wikidataId, 'P402') -- P402 is OSM relation ID
local shouldShowPointMarker;
if config.point == "on" then
shouldShowPointMarker = true
elseif config.point == "none" then
shouldShowPointMarker = false
else
shouldShowPointMarker = not(hasOsmRelationId) or (config.marker and config.marker ~= 'none') or (config.coordinates or config.coord)
end
local shouldShowShape = config.shape ~= 'none'
local shapeType = config.shape == 'inverse' and 'shape-inverse' or 'shape'
local shouldShowLine = config.line ~= 'none'
local maskItem
local useWikidata = wikidataId and true or false -- Use shapes/lines based on wikidata id, if there is one
-- But do not use wikidata when local coords are specified (and not turned off), unless explicitly set
if useWikidata and config.coord and shouldShowPointMarker then
useWikidata = config.wikidata and true or false
end
-- Switcher
if config.switcher == "zooms" then
-- switching between zoom levels
local maxZoom = math.max(tonumber(args.zoom), 3) -- what zoom would have otherwise been (if 3 or more, otherwise 3)
local minZoom = 1 -- completely zoomed out
local midZoom = math.floor((maxZoom + minZoom)/2) -- midway between maxn and min
args.switch = "zoomed in, zoomed midway, zoomed out"
args.zoom = string.format("SWITCH:%d,%d,%d", maxZoom, midZoom, minZoom)
elseif config.switcher == "auto" then
-- switching between P276 and P131 areas with recursive lookup, e.g. item's city,
-- that city's state, and that state's country
args.zoom = nil -- let kartographer determine the zoom
local maskLabels = {}
local maskItems = {}
local maskItemId = relatedEntity(wikidataId, "P276") or relatedEntity(wikidataId, "P131")
local maskLabel = mw.wikibase.getLabel(maskItemId)
while maskItemId and maskLabel and mw.text.trim(maskLabel) ~= "" do
table.insert(maskLabels, maskLabel)
table.insert(maskItems, maskItemId)
maskItemId = maskItemId and relatedEntity(maskItemId, "P131")
maskLabel = maskItemId and mw.wikibase.getLabel(maskItemId)
end
if #maskLabels > 1 then
args.switch = table.concat(maskLabels, "###")
maskItem = "SWITCH:" .. table.concat(maskItems, ",")
elseif #maskLabels == 1 then
maskItem = maskItemId[1]
end
elseif config.switcher == "geomasks" and config.geomask then
-- switching between items in geomask parameter
args.zoom = nil -- let kartographer determine the zoom
local separator = (mw.ustring.find(config.geomask, "###", 0, true ) and "###") or
(mw.ustring.find(config.geomask, ";", 0, true ) and ";") or ","
local pattern = "%s*"..separator.."%s*"
local maskItems = mw.text.split(mw.ustring.gsub(config.geomask, "SWITCH:", ""), pattern)
local maskLabels = {}
if #maskItems > 1 then
for i, item in ipairs(maskItems) do
table.insert(maskLabels, mw.wikibase.getLabel(item))
end
args.switch = table.concat(maskLabels, "###")
maskItem = "SWITCH:" .. table.concat(maskItems, ",")
end
end
-- resolve geomask item id (if not using geomask switcher)
if not maskItem then --
local maskType = idType(config.geomask)
if maskType == 'item' then
maskItem = config.geomask
elseif maskType == "property" then
maskItem = relatedEntity(wikidataId, config.geomask)
end
end
-- Keep track of arg numbering
local argNumber = ''
local function incrementArgNumber()
if argNumber == '' then
argNumber = 2
else
argNumber = argNumber + 1
end
end
-- Geomask
if maskItem then
args["type"..argNumber] = "shape-inverse"
args["id"..argNumber] = maskItem
args["stroke-width"..argNumber] = config["geomask-stroke-width"] or DEFAULT_GEOMASK_STROKE_WIDTH
args["stroke-color"..argNumber] = config["geomask-stroke-color"] or config["geomask-stroke-colour"] or DEFAULT_GEOMASK_STROKE_COLOR
args["fill"..argNumber] = config["geomask-fill"] or DEFAULT_GEOMASK_FILL
args["fill-opacity"..argNumber] = config["geomask-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY
-- Let kartographer determine zoom and position, unless it is explicitly set in config
if not config.zoom and not config.switcher then
args.zoom = nil
args["frame-coord"] = nil
args["frame-lat"] = nil
args["frame-long"] = nil
local maskArea = getStatementValue( getBestStatement(maskItem, 'P2046') )
end
incrementArgNumber()
-- Hack to fix phab:T255932
if not args.zoom then
args["type"..argNumber] = "line"
args["id"..argNumber] = maskItem
args["stroke-width"..argNumber] = 0
incrementArgNumber()
end
end
-- Shape (or shape-inverse)
if useWikidata and shouldShowShape then
args["type"..argNumber] = shapeType
if config.id then args["id"..argNumber] = config.id end
args["stroke-width"..argNumber] = config["shape-stroke-width"] or config["stroke-width"] or DEFAULT_SHAPE_STROKE_WIDTH
args["stroke-color"..argNumber] = config["shape-stroke-color"] or config["shape-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_SHAPE_STROKE_COLOR
args["fill"..argNumber] = config["shape-fill"] or DEFAULT_SHAPE_FILL
args["fill-opacity"..argNumber] = config["shape-fill-opacity"] or DEFAULT_SHAPE_FILL_OPACITY
incrementArgNumber()
end
-- Line
if useWikidata and shouldShowLine then
args["type"..argNumber] = "line"
if config.id then args["id"..argNumber] = config.id end
args["stroke-width"..argNumber] = config["line-stroke-width"] or config["stroke-width"] or DEFAULT_LINE_STROKE_WIDTH
args["stroke-color"..argNumber] = config["line-stroke-color"] or config["line-stroke-colour"] or config["stroke-color"] or config["stroke-colour"] or DEFAULT_LINE_STROKE_COLOR
incrementArgNumber()
end
-- Point
if shouldShowPointMarker then
args["type"..argNumber] = "point"
if config.id then args["id"..argNumber] = config.id end
if config.coord then args["coord"..argNumber] = config.coord end
if config.marker then args["marker"..argNumber] = config.marker end
args["marker-color"..argNumber] = config["marker-color"] or config["marker-colour"] or DEFAULT_MARKER_COLOR
incrementArgNumber()
end
local mapframe = args.switch and mf.multi(args) or mf._main(args)
local tracking = hasOsmRelationId and '' or '[[Category:Infobox mapframe without OSM relation ID on Wikidata]]'
return mapframe .. tracking
end
return p
d17ee86b24e6e7a955ec94561da65fe2a215b5a4
Template:Tsp
10
1731
3268
2020-10-29T18:00:20Z
wikipedia>MusikBot II
0
Protected "[[Template:Tsp]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Thin space]]
[[Category:Inline spacing templates|Thinsp]]
[[Category:Typing-aid templates|Thinsp]]
5c0846b57ba875d535c1e5602e2c070f41d4cf23
Module:WLink
828
615
1388
2020-10-30T15:03:05Z
wikipedia>Plastikspork
0
Import for [[Template:LDLBerlin]]
Scribunto
text/plain
local WLink = { suite = "WLink",
serial = "2016-10-05" };
--[=[
ansiPercent()
formatURL()
getArticleBase()
getBaseTitle()
getEscapedTitle()
getExtension()
getFile()
getFragment()
getLanguage()
getNamespace()
getPlain()
getProject()
getTarget()
getTargetPage()
getTitle()
getWeblink()
isBracketedLink()
isBracketedURL()
isCategorization()
isExternalLink()
isInterlanguage()
isInterwiki()
isMedia()
isTitledLink()
isValidLink()
isWikilink()
wikilink()
failsafe()
]=]
-- local globals
local URLutil = false;
local utilURL = function ()
-- Attach URLutil library module
-- Postcondition:
-- Returns table, with URLutil library
-- Throws error, if not available
if not URLutil then
local lucky, util = pcall( require, "Module:URLutil" );
if lucky then
if type( util ) == "table" then
URLutil = util.URLutil();
end
util = "library URLutil invalid";
end
if type( URLutil ) ~= "table" then
error( util, 0 );
end
end
return URLutil;
end -- utilURL()
local contentExtlink = function ( attempt )
-- Retrieve span of external link between brackets
-- Precondition:
-- attempt -- string, with presumable link
-- the first char is expected to be "["
-- Postcondition:
-- Returns string, number, number
-- string including whitespace
-- number with index of relevant "["
-- number with index after relevant "]"
-- false if nothing found
local r1 = false;
local r2 = false;
local r3 = attempt:find( "]", 2, true );
if r3 then
local s = attempt:sub( 2, r3 - 1 );
local i = s:find( "[", 1, true );
if i then
r1 = s:sub( i + 1 );
r2 = i;
else
r1 = s;
r2 = 1;
end
else
r3 = false;
end
return r1, r2, r3;
end -- contentExtlink()
local contentWikilink = function ( attempt )
-- Retrieve span of wikilink between brackets
-- Precondition:
-- attempt -- string, with presumable link
-- the first two chars are expected to be "[["
-- Postcondition:
-- Returns string, number, number
-- string including whitespace
-- number with index of relevant "[["
-- number with index after relevant "]]"
-- false if nothing found
local r1 = false;
local r2 = false;
local r3 = attempt:find( "]]", 3, true );
if r3 then
local s = attempt:sub( 3, r3 - 1 );
local i = s:find( "[[", 1, true );
if i then
r1 = s:sub( i + 2 );
r2 = i;
else
r1 = s;
r2 = 1;
end
end
return r1, r2, r3;
end -- contentWikilink()
local extractExtlink = function ( attempt )
-- Retrieve external link
-- Precondition:
-- attempt -- string, with presumable link
-- the first char is expected to be "["
-- Postcondition:
-- Returns string, string
-- first with target and title
-- second result false if not titled
-- false if nothing found
local r1 = false;
local r2 = false;
local s = contentExtlink( attempt );
if s then
local i = s:find( "%s", 1 );
if i then
r1 = s:sub( 1, i - 1 );
r2 = mw.text.trim( s:sub( i + 1 ) );
if r2 == "" then
r2 = false;
end
else
r1 = s;
end
if r1 then
r1 = mw.text.trim( r1 );
if r1 == "" or
not utilURL().isResourceURL( r1 ) then
r1 = false;
end
end
if not r1 then
r2 = false;
end
end
return r1, r2;
end -- extractExtlink()
local extractWikilink = function ( attempt )
-- Retrieve wikilink
-- Precondition:
-- attempt -- string, with presumable link
-- the first two chars are expected to be "[["
-- Postcondition:
-- Returns string, string
-- first with target
-- second result title, or false if not piped
-- false if nothing found
local r1 = false;
local r2 = false;
local s = contentWikilink( attempt );
if s then
local i = s:find( "|", 1, true );
if i then
r1 = s:sub( 1, i - 1 );
r2 = s:sub( i + 1 );
else
r1 = s;
end
r1 = mw.text.trim( r1 );
if r1 == "" then
r1 = false;
else
r1 = r1:gsub( "_", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " +", " " );
r1 = mw.text.decode( r1 );
end
end
return r1, r2;
end -- extractWikilink()
local prefix = function ( ask, ahead )
-- Interprete prefix of language or project type
-- Precondition:
-- ask -- string, with presumable prefix
-- ahead -- true, if first segment
-- Postcondition:
-- Returns string,string or nil
-- first string one of "lead", "lang", "project"
-- second string is formatted value
-- type is one of "lead", "lang", "project"
-- nil if nothing found
local r1, r2;
local prefixes = { b = true,
c = "commons",
d = true,
commons = true,
m = "meta",
mediawiki = "mw",
mw = true,
meta = true,
n = true,
q = true,
s = true,
simple = false,
v = true,
voy = true,
w = true,
wikibooks = "b",
wikidata = "d",
wikinews = "n",
wikipedia = "w",
wikiquote = "q",
wikisource = "s",
wikiversity = "v",
wikivoyage = "voy",
wikt = true,
wiktionary = "wikt"
};
local s = mw.text.trim( ask );
if s == "" then
if ahead then
r1 = "lead";
r2 = true;
end
else
local p;
s = s:lower();
p = prefixes[ s ];
if p == true then
r1 = "project";
r2 = s;
elseif p then
r1 = "project";
r2 = p;
elseif p == false then
r1 = "lang";
r2 = s;
elseif s:match( "^%l%l%l?$" )
and mw.language.isSupportedLanguage( s ) then
r1 = "lang";
r2 = s;
end
end
return r1, r2;
end -- prefix()
local target = function ( attempt, lonely )
-- Retrieve first target (wikilink or URL), or entire string
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- lonely -- remove fragment, if true
-- Postcondition:
-- Returns string, number
-- string, with detected link target, or entire
-- number, with number of brackets, if found, or 2
local r1, r2 = WLink.getTarget( attempt );
if not r1 then
r1 = mw.text.trim( attempt );
r2 = 2;
end
if lonely then
local i = r1:find( "#", 1, true );
if i == 1 then
r1 = "";
elseif i then
r1 = r1:sub( 1, i - 1 );
end
end
return r1, r2;
end -- target()
function WLink.ansiPercent( attempt, alter )
-- Convert string by ANSI encoding rather than UTF-8 encoding
-- Precondition:
-- attempt -- string, with presumable ANSI characters
-- alter -- string or nil, to use for spaces instead of %20
-- Postcondition:
-- Returns string, encoded
local k, s;
local r = attempt;
if alter then
r = r:gsub( " ", alter );
end
for i = mw.ustring.len( r ), 1, -1 do
k = mw.ustring.codepoint( r, i, i );
if k <= 32 or k > 126 then
if k > 255 then
s = mw.ustring.sub( r, i, i );
if k > 2047 then
s = string.format( "%%%2X%%%2X%%%2X",
s:byte( 1, 1 ),
s:byte( 2, 2 ),
s:byte( 3, 3 ) );
else
s = string.format( "%%%2X%%%2X",
s:byte( 1, 1 ),
s:byte( 2, 2 ) );
end
else
s = string.format( "%%%2X", k );
end
r = string.format( "%s%s%s",
mw.ustring.sub( r, 1, i - 1 ),
s,
mw.ustring.sub( r, i + 1 ) );
end
end -- for --i
r = mw.ustring.gsub(r, '^%*', '%%2A')
return r;
end -- WLink.ansiPercent()
function WLink.formatURL( adjust )
-- Create bracketed link, if not yet
-- Precondition:
-- adjust -- string, with URL or domain/path or bracketed link
-- Postcondition:
-- Returns string, with bracketed link
-- false on invalid format
local r;
if type( adjust ) == "string" then
if WLink.isBracketedLink( adjust ) then
r = adjust;
else
local url = mw.text.trim( adjust );
local host;
utilURL();
host = URLutil.getHost( adjust );
if not host then
url = "http://" .. adjust;
host = URLutil.getHost( url );
end
if host then
local path = URLutil.getRelativePath( url );
local show;
if path == "/" then
if not url:match( "/$" ) then
url = url .. "/";
end
show = host;
else
local i = path:find( "#" );
if i then
path = path:sub( 1, i - 1 );
end
show = host .. path;
end
r = string.format( "[%s %s]", url, show );
else
r = adjust;
end
end
else
r = false;
end
return r;
end -- WLink.formatURL()
function WLink.getArticleBase( attempt )
-- Retrieve generic article title, no fragment nor brackets
-- Precondition:
-- attempt -- string, with wikilink or page title
-- current page title, if missing
-- Postcondition:
-- Returns string, with identified lemma, or all
-- false on invalid format
local r;
if attempt then
local m;
r, m = target( attempt, true );
if m ~= 2 then
r = false;
end
else
r = mw.title.getCurrentTitle().text;
end
if r then
local sub = r:match( "^(.*%S) *%(.+%)$" );
if sub then
r = sub;
end
end
return r;
end -- WLink.getArticleBase()
function WLink.getBaseTitle( attempt )
-- Retrieve last segment in subpage, no fragment
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with identified segment, or all
local r;
local s, m = target( attempt, true );
if m == 2 then
local sub = s:match( "/([^/]+)$" );
if sub then
r = sub;
else
r = s;
end
else
r = false;
end
return r;
end -- WLink.getBaseTitle()
function WLink.getEscapedTitle( attempt )
-- Retrieve escaped link title
-- Precondition:
-- attempt -- string, with presumable link title
-- Postcondition:
-- Returns string, with suitable link title
local s = mw.text.trim( attempt );
return s:gsub( "\n", " " )
:gsub( "%[", "[" )
:gsub( "%]", "]" )
:gsub( "|", "|" );
end -- WLink.getEscapedTitle()
function WLink.getExtension( attempt )
-- Retrieve media extension
-- Precondition:
-- attempt -- string, with wikilink (media link) or page title
-- if URL, PDF may be detected
-- Postcondition:
-- Returns string, with detected downcased media type
-- false if no extension found
local r = false;
local s, m = target( attempt );
if m == 2 then
s = s:match( "%.(%a+)$" );
if s then
r = s:lower();
end
elseif s:upper():match( "[%./](PDF)%W?" ) then
r = "pdf";
end
return r;
end -- WLink.getExtension()
function WLink.getFile( attempt )
-- Retrieve media page identifier
-- Precondition:
-- attempt -- string, with wikilink (media link) or page title
-- Postcondition:
-- Returns string, with detected file title
-- no namespace nor project
-- false if no file found
local r = false;
local s, m = target( attempt );
if m == 2 then
local slow = ":" .. s:lower();
local find = function ( a )
local seek = string.format( ":%s:().+%%.%%a+$",
a:lower() );
local join = slow:find( seek );
local ret;
if join then
ret = s:sub( join + #a + 1 );
end
return ret;
end;
r = find( "file" );
if not r then
local trsl = mw.site.namespaces[6];
r = find( trsl.name );
if not r then
trsl = trsl.aliases;
for k, v in pairs( trsl ) do
r = find( v );
if r then
break; -- for k, v
end
end -- for k, v
end
end
end
return r;
end -- WLink.getFile()
function WLink.getFragment( attempt )
-- Retrieve fragment
-- Precondition:
-- attempt -- string, with presumable fragment
-- Postcondition:
-- Returns string, with detected fragment
-- false if no address found
local r = false;
local s, m = target( attempt );
if s then
local i = s:find( "#", 1, true );
if i then
if i > 1 then
s = s:sub( i - 1 );
i = 2;
end
if s:find( "&#", 1, true ) then
s = mw.text.decode( s );
i = s:find( "#", 1, true );
if not i then
s = "";
i = 0;
end
end
s = s:sub( i + 1 );
r = mw.text.trim( s );
if r == "" then
r = false;
elseif m == 2 then
r = r:gsub( "%.(%x%x)", "%%%1" )
:gsub( "_", " " );
r = mw.uri.decode( r, "PATH" );
end
end
end
return r;
end -- WLink.getFragment()
function WLink.getLanguage( attempt )
-- Retrieve language project identifier
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with detected downcased language identifier
-- false if no project language found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.lang then
r = w.lang;
end
end
return r;
end -- WLink.getLanguage()
function WLink.getNamespace( attempt )
-- Retrieve namespace number
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns number, of detected namespace
-- false if no namespace found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and not w.lang and not w.project and w.ns then
r = w.ns;
end
end
return r;
end -- WLink.getNamespace()
function WLink.getPlain( attempt )
-- Retrieve text with all links replaced by link titles
-- Precondition:
-- attempt -- string, with wikitext
-- Postcondition:
-- Returns string, with modified wikitext without links
local r = attempt;
local i = 1;
local j, k, n, lean, s, shift, space, suffix;
while ( true ) do
j = r:find( "[", i, true );
if j then
suffix = r:sub( j );
i = j + 1;
lean = ( r:byte( i, i ) == 91 );
if lean then
s, k, n = contentWikilink( suffix );
else
s, k, n = contentExtlink( suffix );
end
if s then
if k > 1 then
n = n - k;
i = j + k;
j = i - 1;
suffix = r:sub( j );
end
if lean then
s, shift = extractWikilink( suffix );
if s then
space = s:match( "^([^:]+):" );
if space then
space = mw.site.namespaces[ space ];
if space then
space = space.id;
end
end
if space == 6 or space == 14 then
shift = "";
elseif not shift then
shift = s;
end
else
s = "";
shift = "";
end
else
s, shift = extractExtlink( suffix );
if not s then
s = "";
end
if not shift then
shift = "";
end
i = i - 1;
end
if j > 1 then
s = r:sub( 1, j - 1 );
else
s = "";
end
r = string.format( "%s%s%s",
s, shift, r:sub( n + i ) );
i = i + #shift;
else
break; -- while true
end
else
break; -- while true
end
end -- while true
return r;
end -- WLink.getPlain()
function WLink.getProject( attempt )
-- Retrieve wikifarm project identifier
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with detected downcased project identifier
-- false if no project identifier found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.project then
r = w.project;
end
end
return r;
end -- WLink.getProject()
function WLink.getTarget( attempt )
-- Retrieve first target (wikilink or URL)
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, number
-- string, with first detected link target
-- number, with number of brackets, if found
-- false if nothing found
local r1 = false;
local r2 = false;
local i = attempt:find( "[", 1, true );
if i then
local m;
r1 = attempt:sub( i );
if r1:byte( 2, 2 ) == 91 then
m = 2;
r1 = extractWikilink( r1 );
else
m = 1;
r1 = extractExtlink( r1 );
end
if r1 then
r2 = m;
end
else
r1 = attempt:match( "%A?([hf]t?tps?://%S+)%s?" );
if r1 then
if utilURL().isResourceURL( r1 ) then
r2 = 0;
else
r1 = false;
end
else
r1 = false;
end
end
return r1, r2;
end -- WLink.getTarget()
function WLink.getTargetPage( attempt )
-- Retrieve first target page (page name or URL of page)
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, with first detected linked page
-- false if nothing found
local r1, r2 = WLink.getTarget( attempt );
if r1 then
local i = r1:find( "#", 1, true );
if i then
if i == 1 then
r1 = false;
else
r1 = mw.text.trim( r1:sub( 1, i - 1 ) );
end
end
end
return r1, r2;
end -- WLink.getTargetPage()
function WLink.getTitle( attempt )
-- Retrieve first link title (wikilink or URL), or wikilink target
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, with first detected link target
-- false if nothing found
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local s1, s2;
r = attempt:sub( i );
if r:byte( 2, 2 ) == 91 then
s1, s2 = extractWikilink( r );
if s2 then
r = s2;
else
r = s1;
end
else
s1, r = extractExtlink( r );
end
end
return r;
end -- WLink.getTitle()
function WLink.getWeblink( attempt, anURLutil )
-- Retrieve bracketed link from resource URL
-- Precondition:
-- attempt -- string, with URL, or something different
-- anURLutil -- library module object, or nil
-- Postcondition:
-- Returns string, with first detected link target
-- false if nothing found
local second = ".ac.co.go.gv.or.";
local r;
if type( anURLutil ) == "table" then
URLutil = anURLutil;
else
utilURL();
end
if URLutil.isResourceURL( attempt ) then
local site = URLutil.getAuthority( attempt );
local show;
if #attempt == #site then
site = site .. "/";
end
show = URLutil.getTop3domain( "//" .. site );
if show then
local scan = "[%./](%a+)(%.%l%l%.)(%a+)$";
local search = "." .. show;
local s1, s2, s3 = search:match( scan );
if s2 then
if not second:find( s2, 1, true ) then
show = string.format( "%s.%s", s2, s3 );
end
else
show = false;
end
end
if not show then
show = URLutil.getTop2domain( "//" .. site );
if not show then
show = URLutil.getHost( "//" .. site );
end
end
r = string.format( "[%s %s]", attempt, show );
else
r = attempt;
end
return r;
end -- WLink.getWeblink()
function WLink.isBracketedLink( attempt )
-- Does attempt match a bracketed link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local s = attempt:sub( i );
if s:byte( 2, 2 ) == 91 then
s = extractWikilink( s );
else
s = extractExtlink( s );
end
if s then
r = true;
end
end
return r;
end -- WLink.isBracketedLink()
function WLink.isBracketedURL( attempt )
-- Does attempt match a bracketed URL?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
return ( r == 1 );
end -- WLink.isBracketedURL()
function WLink.isCategorization( attempt )
-- Does attempt match a categorization?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.ns == 14
and not ( w.lead or w.lang or w.project )
and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isCategorization()
function WLink.isExternalLink( attempt )
-- Does attempt match an external link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
if r then
r = ( r < 2 );
end
return r;
end -- WLink.isExternalLink()
function WLink.isInterlanguage( attempt )
-- Does attempt match an interlanguage link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.lang and not w.project and not w.lead
and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isInterlanguage()
function WLink.isInterwiki( attempt )
-- Does attempt match an interwiki link within wikifarm?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and ( w.lang or w.project ) and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isInterwiki()
function WLink.isMedia( attempt )
-- Does attempt match a media translusion?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.ns == 6
and not ( w.lead or w.lang or w.project )
and w.title ~= ""
and WLink.getExtension( w.title ) then
r = true;
end
end
return r;
end -- WLink.isMedia()
function WLink.isTitledLink( attempt )
-- Does attempt match a titled link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local c, n;
local s = attempt:sub( i );
if s:byte( 2, 2 ) == 91 then
n = s:find( "%]%]", 5 );
c = "|";
else
n = s:find( "%]", 8 );
c = "%s%S";
end
if n then
local m = s:find( c, 2 );
if m and m + 1 < n and WLink.getTarget( attempt ) then
r = true;
end
end
end
return r;
end -- WLink.isTitledLink()
function WLink.isValidLink( attempt )
-- Does attempt match a link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
if r then
r = true;
end
return r;
end -- WLink.isValidLink()
function WLink.isWikilink( attempt )
-- Does attempt match a wikilink?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, m = WLink.getTarget( attempt );
return ( m == 2 );
end -- WLink.isWikilink()
function WLink.wikilink( attempt )
-- Retrieve wikilink components
-- Precondition:
-- attempt -- string, with presumable link
-- expected to be enclosed in "[[" "]]"
-- else wikilink
-- Postcondition:
-- Returns table or false
-- table of assignments with { type, value}
-- type is one of "lead",
-- "project", "lang",
-- "ns", "space", "title"
-- false if nothing found
local s = contentWikilink( attempt );
local got, n, r;
if not s then
s = attempt;
end
i = s:find( "|", 1, true );
if i then
s = s:sub( 1, i - 1 );
end
got = mw.text.split( s, ":" );
n = table.maxn( got );
if n == 1 then
r = { title = mw.text.trim( s ) };
else
local j, k, o, v;
r = { title = "" };
if n > 4 then
k = 4;
else
k = n - 1;
end
j = k;
for i = 1, j do
s = mw.text.trim( got[ i ] );
if s ~= "" then
o = mw.site.namespaces[ mw.text.trim( got[ i ] ) ];
if o then
r.ns = o.id;
r.space = o.name;
k = i + 1;
j = i - 1;
break; -- for i
end
end
end -- for i
for i = 1, j do
o, v = prefix( got[ i ], ( i == 1 ) );
if o then
if r[ o ] then
k = i;
break; -- for i
else
r[ o ] = v;
end
else
k = i;
break; -- for i
end
end -- for i
for i = k, n do
r.title = r.title .. got[ i ];
if i < n then
r.title = r.title .. ":";
end
end -- for i
end
if r.lead and
( r.project or not r.title or
( not r.lang and r.ns ~= 6 and r.ns ~= 14 ) ) then
r.lead = false;
end
return r;
end -- WLink.wikilink()
function WLink.failsafe( assert )
-- Retrieve versioning and check for compliance
-- Precondition:
-- assert -- string, with required version, or false
-- Postcondition:
-- Returns string with appropriate version, or false
local r;
if assert and assert > WLink.serial then
r = false;
else
r = WLink.serial;
end
return r
end -- WLink.failsafe()
local function Template( frame, action, leave, lone )
-- Run actual code from template transclusion
-- Precondition:
-- frame -- object
-- action -- string, with function name
-- leave -- true: keep whitespace around
-- lone -- true: permit call without parameters
-- Postcondition:
-- Return string; might be error message
local lucky = true;
local s = false;
local r = false;
local space;
for k, v in pairs( frame.args ) do
if k == 1 then
if leave then
s = v;
else
s = mw.text.trim( v );
end
elseif action == "ansiPercent" and k == "space" then
if v ~= "" then
space = v;
end
elseif k ~= "template" then
lucky = false;
if r then
r = r .. "|";
else
r = "Unknown parameter: ";
end
r = string.format( "%s%s=", r, k );
end
end -- for k, v
if lucky then
if s or lone then
lucky, r = pcall( WLink[ action ], s, space );
else
r = "Parameter missing";
lucky = false;
end
end
if lucky then
if type( r ) == "boolean" then
if r then
r = "1";
else
r = "";
end
end
else
r = string.format( "<span class=\"error\">%s</span>", r );
end
return r;
end -- Template()
-- Export
local p = { };
p.ansiPercent = function ( frame )
return Template( frame, "ansiPercent" );
end
p.formatURL = function ( frame )
return Template( frame, "formatURL" );
end
p.getArticleBase = function ( frame )
return Template( frame, "getArticleBase", false, true );
end
p.getBaseTitle = function ( frame )
return Template( frame, "getBaseTitle" );
end
p.getEscapedTitle = function ( frame )
return Template( frame, "getEscapedTitle" );
end
p.getExtension = function ( frame )
return Template( frame, "getExtension" );
end
p.getFile = function ( frame )
return Template( frame, "getFile" );
end
p.getFragment = function ( frame )
return Template( frame, "getFragment" );
end
p.getInterwiki = function ( frame )
return Template( frame, "getInterwiki" );
end
p.getLanguage = function ( frame )
return Template( frame, "getLanguage" );
end
p.getNamespace = function ( frame )
return tostring( Template( frame, "getNamespace" ) );
end
p.getPlain = function ( frame )
return Template( frame, "getPlain" );
end
p.getProject = function ( frame )
return Template( frame, "getProject" );
end
p.getTarget = function ( frame )
return Template( frame, "getTarget" );
end
p.getTargetPage = function ( frame )
return Template( frame, "getTargetPage" );
end
p.getTitle = function ( frame )
return Template( frame, "getTitle" );
end
p.getWeblink = function ( frame )
return Template( frame, "getWeblink" );
end
p.isBracketedLink = function ( frame )
return Template( frame, "isBracketedLink" );
end
p.isBracketedURL = function ( frame )
return Template( frame, "isBracketedURL" );
end
p.isCategorization = function ( frame )
return Template( frame, "isCategorization" );
end
p.isExternalLink = function ( frame )
return Template( frame, "isExternalLink" );
end
p.isInterlanguage = function ( frame )
return Template( frame, "isInterlanguage" );
end
p.isInterwiki = function ( frame )
return Template( frame, "isInterwiki" );
end
p.isMedia = function ( frame )
return Template( frame, "isMedia" );
end
p.isTitledLink = function ( frame )
return Template( frame, "isTitledLink" );
end
p.isValidLink = function ( frame )
return Template( frame, "isValidLink" );
end
p.isWeblink = function ( frame )
return Template( frame, "isWeblink" );
end
p.isWikilink = function ( frame )
return Template( frame, "isWikilink" );
end
p.failsafe = function ( frame )
local since = frame.args[ 1 ];
if since then
since = mw.text.trim( since );
if since == "" then
since = false;
end
end
return WLink.failsafe( since ) or "";
end
p.WLink = function ()
return WLink;
end
return p;
af57214e9ddc77f93c9fcb1dd97b58d8180700d4
Module:For
828
119
285
2020-11-02T22:29:56Z
wikipedia>Andrybak
0
don't add talk pages and pages in the user namespace to [[:Category:Hatnote templates with errors]] – this is similar to [[Special:Diff/953627233/986768317|Module:Other uses of]] and [[Special:Diff/967664662|Module:Hatnote]]
Scribunto
text/plain
local mArguments --initialize lazily
local mHatlist = require('Module:Hatnote list')
local mHatnote = require('Module:Hatnote')
local yesNo = require('Module:Yesno')
local p = {}
--Implements {{For}} from the frame
--uses capitalized "For" to avoid collision with Lua reserved word "for"
function p.For (frame)
mArguments = require('Module:Arguments')
return p._For(mArguments.getArgs(frame))
end
--Implements {{For}} but takes a manual arguments table
function p._For (args)
local use = args[1]
if (not use) then
return mHatnote.makeWikitextError(
'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.',
'Template:For#Errors',
args.category
)
end
local pages = {}
function two (a, b) return a, b, 1 end --lets us run ipairs from 2
for k, v in two(ipairs(args)) do table.insert(pages, v) end
local title = mw.title.getCurrentTitle()
local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace
local oddCat = skipCat and '' or '[[Category:Hatnote templates using unusual parameters]]'
local category = yesNo(args.category)
return mHatnote._hatnote(
mHatlist.forSeeTableToString({{use = use, pages = pages}}),
{selfref = args.selfref}
) .. (
(use == 'other uses') and ((category == true) or (category == nil)) and
oddCat or ''
)
end
return p
2faf1bd8c657f3425af829cbde9733a936d8d4f4
Template:Pp-move
10
1311
2646
2020-11-04T22:21:55Z
w>Primefac
0
TFD closed as remove the icon ([[WP:XFDC|XFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
31be6fc5b968e0deb5100a35b856393cdeb35b90
Template:Start date
10
1346
2681
2020-11-05T01:49:22Z
w>Primefac
0
TFD closed as keep
wikitext
text/x-wiki
<includeonly>{{#if: {{{4|}}}
|{{#if: {{{5|}}}
|{{padleft:{{{4}}}|2|0}}:{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}}
|:{{padleft:{{{6}}}|2|0}} }}, }} }}<!--ABOVE FOR TIME; BELOW FOR DATE
-->{{#if: {{{1|}}}
|{{#if: {{{2|}}}
|{{#if: {{{3|}}}
|{{#if: {{{df|}}}|{{#expr:{{{3}}}}} {{MONTHNAME|{{{2}}}}}|{{MONTHNAME|{{{2}}}}} {{#expr:{{{3}}}}},}} {{{1}}}|{{MONTHNAME|{{{2}}}}} {{{1}}}}}|{{{1}}}}}}}{{#if: {{{7|}}}
| ({{#ifeq: {{{7}}}|Z|UTC|{{{7}}}}})}}<!-- BELOW FOR hCalendar
--><span style="display:none"> (<span class="bday dtstart published updated">{{#if: {{{1|}}}
| {{{1}}}{{#if: {{{2|}}}
| -{{padleft:{{{2}}}|2|0}}{{#if: {{{3|}}}
| -{{padleft:{{{3}}}|2|0}} }} }}<!--
-->{{#if: {{{4|}}}
| T{{padleft:{{{4}}}|2|0}}{{#if: {{{5|}}}
| :{{padleft:{{{5}}}|2|0}}{{#if: {{{6|}}}
| :{{padleft:{{{6}}}|2|0}} }} }} }} }}{{{7|}}}</span>)</span></includeonly><noinclude>
{{documentation}}
</noinclude>
2bdc464c20f7d568f3d482c9fb2d04f5d266f982
Template:!((
10
1422
2757
2020-11-08T16:32:29Z
Pppery
6
Undid revision 987674468 by [[Special:Contributions/Primefac|Primefac]] ([[User talk:Primefac|talk]]) [[Wikipedia:Village_pump_(technical)#Template:!((_broken?]]
wikitext
text/x-wiki
[[<noinclude>{{documentation}}</noinclude>
b31c0a6e585fb48187b92ab9ccbfdd182bbf0b64
Template:Gbm4ibx
10
1407
2742
2020-11-09T23:27:46Z
w>MSGJ
0
[[WP:AES|←]]Redirected page to [[Template:Gbmappingsmall]]
wikitext
text/x-wiki
#redirect[[Template:Gbmappingsmall]]
e86d7a298d9b43b26fa5d7fdb3d785558ba70fa4
Template:Sfnm/doc
10
900
1990
2020-11-12T22:16:57Z
wikipedia>Mirokado
0
ce: +"|"
wikitext
text/x-wiki
{{Documentation subpage}}
{{lua |Module:Footnotes}}
<!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnm}} supports the inclusion of multiple sources in a single footnote.
==Usage==
Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameters where the first source is numbered <code>1</code>, the second <code>2</code>, etc. There is no set limit to the number of sources that may be listed in a single template though editors should be aware that readability suffers with an increase of the number of sources.
The following markup:
<code><nowiki>{{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50}}</nowiki></code>
will produce the following footnote: {{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|1ignore-err=yes|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
===Parameters===
The following parameters are used where {{var|n}} always begins at 1, increases by one for each successive source; {{var|n}} has no set limit.
*{{para|{{var|n}}a{{var|m}}}} – source {{var|n}} author (required) – has the form: <code>{{var|n}}a{{var|m}}</code> where <code>{{var|n}}</code> is the source number, <code>a</code> indicates that this is an author parameter, and <code>{{var|m}}</code> identifies the {{var|m}}th author of source {{var|n}} → {{para|1a1}} is first source author one, {{para|5a4}} is fifth source author four; author numbers (<code>{{var|m}}</code>) greater than <code>4</code> are ignored;
*{{para|{{var|n}}y}} – year – accepted formats are: <code>YYYY</code>, <code>n.d.</code> or <code>nd</code> (no date), <code>c. YYYY</code>, <code>YYYY–YYYY</code> (endash separator); all dates may have a single lowercase letter disambiguator suffix; see [[Template:Sfn#More than one work in a year|sfn §More than one work in a year]]
*{{para|{{var|n}}p}} – in-source page cited
*{{para|{{var|n}}pp}} – in-source pages cited
*{{para|{{var|n}}loc}} – in-source location when not pagination – appended to {{para|{{var|n}}p}} or {{para|{{var|n}}pp}} if present
*{{para|{{var|n}}ref}} – alternate reference identifier used to link source to its full citation; the special keyword <code>none</code> inhibits creation of a link from source to its long form reference
*{{para|{{var|n}}ps}} – source postscript – terminal character or text; defaults to none; the special keyword <code>none</code> (used by {{tld|sfn}}) is silently ignored
*{{para|ps}} – postscript – template's final terminal character or text; defaults to period (<code>.</code>); the special keyword <code>none</code> inhibits the postscript character; yields to {{para|{{var|n}}ps}} where {{var|n}} is the last source
When a source has a single author, use of positional parameters for author and year is supported; both <code>|{{var|author}}</code> and <code>|{{var|year}}</code> are required when there is more than one of these single-author sources listed in the template:
<code><nowiki>{{Sfnm|Smith|2005|1p=15|Jones|2004|2p=2}}</nowiki></code>
which will produce the following footnote: {{Sfnm|Smith|2005|1p=15|1ignore-err=yes|Jones|2004|2p=2|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
==Literature cited==
*{{cite journal|last1=Jones|first1=John|year=2004|title=My Journal Article|journal=Journal of Important Studies|volume=509|issue=13 |pages=10–23}}
*{{cite book|last1=Jones|first1=John|last2=Johnson|first2=John|last3=Smith|first3=John|year=2004|title=Our First Book}}
*{{cite journal|last1=Smith|first1=John|year=2005|title=Another Journal Article|journal=Journal of Important Studies|volume=510|issue=14 |pages=100–134}}
*{{cite book|last1=Smith|first1=John|last2=Jones|first2=John|last3=Johnson|first3=John|year=2005|title=Our Second Book}}
==See also==
*{{tlx|sfnmp}} – a similar template that renders source year in parentheses
<includeonly>{{sandbox other||
<!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE -->
[[Category:Footnote templates]]
[[Category:Author–date citation templates]]
}}</includeonly>
fef2c7fdc6e4e76c768655462ac23beb02f19157
Module:Documentation/styles.css
828
53
101
2020-11-19T20:21:58Z
wikipedia>Izno
0
Changed protection level for "[[Module:Documentation/styles.css]]": actually match module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
text
text/plain
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Template:Tnull
10
616
1390
2020-11-20T18:16:50Z
wikipedia>Primefac
0
Primefac moved page [[Template:Tnull]] to [[Template:Template link null]]: more obvious template name to match family
wikitext
text/x-wiki
#REDIRECT [[Template:Template link null]]
{{Redirect category shell|
{{R from move}}
}}
b22d666a4b16808dc3becc2403546fb9ab5dea7e
Template:Tlg
10
1038
2274
2020-11-20T18:19:26Z
wikipedia>Primefac
0
Primefac moved page [[Template:Tlg]] to [[Template:Template link general]]: clearer name
wikitext
text/x-wiki
#REDIRECT [[Template:Template link general]]
{{Redirect category shell|
{{R from move}}
}}
707ce913a3ffa8193c9377c3ded7db7b72407500
Template:Tld
10
194
442
2020-11-20T18:52:18Z
wikipedia>Primefac
0
avoid redir
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code]]
be5d6275ea41d83224503e05901f3405c82141f7
Template:Tlx
10
22
39
2020-11-20T18:53:35Z
wikipedia>Primefac
0
Primefac moved page [[Template:Tlx]] to [[Template:Template link expanded]] over redirect: expand name, make it more obvious
wikitext
text/x-wiki
#REDIRECT [[Template:Template link expanded]]
{{Redirect category shell|
{{R from move}}
}}
1fec988ceb46cb324af228aac45d7cd25fcc9008
Template:Template link with parameters
10
1250
2584
2020-11-21T12:04:32Z
w>Primefac
0
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nowrap=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlp}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
8fe73a6eea633360a927820d10469b7292bfc1c2
Template:Template link expanded
10
23
41
2020-11-21T12:04:41Z
wikipedia>Primefac
0
update
wikitext
text/x-wiki
{{#Invoke:Template link general|main|code=on}}<noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlx}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
6c99696fee02f1da368ed20d2504e19bc15b1c13
Template:Template link with link off
10
56
107
2020-11-21T12:06:17Z
wikipedia>Primefac
0
update
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlf}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851
Template:Template link code
10
193
440
2020-11-21T12:06:22Z
wikipedia>Primefac
0
update
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes|nowrap=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlc}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
044f00ca1bfc10cb967c32e893043ccc6f739764
Template:Template link null
10
617
1392
2020-11-21T12:06:41Z
wikipedia>Primefac
0
update
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tnull}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
2167c503e001d24d870ef82a9de0aaa9832404cb
Template:COinS safe
10
1006
2208
2020-12-10T09:01:22Z
wikipedia>Andrybak
0
[[:File:Stop hand nuvola.svg]] is licensed under "Creative Commons Attribution-ShareAlike 2.5", link is required for attribution — Undid revision 987128260 by [[Special:Contributions/JsfasdF252|JsfasdF252]] ([[User talk:JsfasdF252|talk]])
wikitext
text/x-wiki
{{notice
|image={{#ifeq: {{{1|}}}|n|Stop hand nuvola.svg}}
|{{#ifeq: {{{1|}}}|n
|This template should not be used in citation templates such as [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|Citation Style 2]], because it includes markup that will pollute the [[COinS]] metadata they produce; see [[Wikipedia:COinS]]. {{{addtext|}}}{{Sandbox other||[[Category:Templates not safe for use in citation templates]]}}
|This template is safe for use in citation templates that produce [[COinS]] metadata; see [[Wikipedia:COinS]]. If HTML or other markup is added, then the template must be reevaluated. {{{addtext|}}}
}}
}}<noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
</noinclude>
47abee673d74440d28e801111bf6ee765cd998df
Template:Paragraph break
10
1387
2722
2020-12-16T06:57:50Z
w>L235
0
Changed protection level for "[[Template:Paragraph break]]": [[WP:High-risk templates|Highly visible template]]: one million transclusions, about to be used in interface message ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<div class="paragraphbreak" style="margin-top:0.5em"></div><noinclude>{{documentation}}</noinclude>
e925d7431b29a50eb27a29386a5e00e801e9a924
Template:Pb
10
1386
2721
2020-12-16T06:58:19Z
w>L235
0
Changed protection level for "[[Template:Pb]]": redirect target increased to full protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Paragraph break]]
{{Redirect category shell|
{{R from template shortcut}}
}}
357bfb9ee480c2e7d85730836d41cf3a5def25cb
Template:Unichar/name
10
1616
2951
2020-12-22T06:54:57Z
w>DePiep
0
subst:small
wikitext
text/x-wiki
{{#switch:{{{gc|}}} | Cc | Cs | Cp | Cn = <!--no smallcaps name, but straight nlink if given-->{{#ifeq:{{{nlink|}}} | <#salted#> || {{#if: {{{nlink|}}} | [[{{{nlink|}}}]] | {{error|Error using {{tl|unichar}}: Pagename expected in "nlink{{=}}"| tag=span }}}}}}
| #default={{#switch:{{{nlink|<#salted#>}}}
| <#salted#> =<!--no link--><span style="font-size:85%;">{{uc:{{{na|}}}}}</span>
| =<!--wikilink to na-->[[{{{na|}}}{{!}}<span style="font-size:85%;">{{uc:{{{na|}}}}}</span>]]
| #default =<!--piped link-->[[{{{nlink|}}}{{!}}<span style="font-size:85%;">{{uc:{{{na|}}}}}</span>]]}}}}<!--
--><noinclude>{{Documentation}}</noinclude>
d4ae6ab2fe431f12b3533da8294d1703c6716178
Template:Block indent/styles.css
10
1224
2554
2020-12-27T21:05:41Z
w>Izno
0
pp
sanitized-css
text/css
/* {{pp|small=yes}} */
.block-indent {
padding-left: 3em;
padding-right: 0;
overflow: hidden;
}
c89721fb334bfbd775783b44641a3466b6748d6b
Template:Block indent
10
1223
2553
2020-12-27T21:23:56Z
w>Izno
0
templatestyles for block indent
wikitext
text/x-wiki
<templatestyles src="Block indent/styles.css"/><div class="block-indent {{{class|}}}" {{#if:{{{left|}}}{{{em|}}}{{{right|}}}{{{style|}}}|style="{{#if:{{{left|{{{em|}}}}}}|padding-left: {{{left|{{{em}}}}}}em;}}{{#if:{{{right|}}}|padding-right: {{{right}}}em;}}{{#if:{{{style|}}}|{{{style}}}}}"}}>{{{1|{{{text|{{{content|{{{quote|<noinclude>{{lorem ipsum}}</noinclude><includeonly>{{error|Error: No content given to indent (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly>}}}}}}}}}}}}</div><noinclude>
{{documentation}}
</noinclude>
f1e4d04c02e97bfe86521e96e8265e947e574340
Template:Quote
10
1101
2401
2020-12-28T21:58:57Z
wikipedia>JJMC89
0
JJMC89 moved page [[Template:Quote]] to [[Template:Blockquote]]: [[Wikipedia:Requested moves|requested move]]; consensus at [[Template talk:Blockquote]]
wikitext
text/x-wiki
#REDIRECT [[Template:Blockquote]]
{{Redirect category shell|
{{R from move}}
}}
405f136736cb7a6c3831adc68bce0bf0a7b18c45
Template:Blockquote/styles.css
10
873
1936
2020-12-28T21:59:00Z
wikipedia>JJMC89
0
JJMC89 moved page [[Template:Quote/styles.css]] to [[Template:Blockquote/styles.css]] without leaving a redirect: [[Wikipedia:Requested moves|requested move]]; consensus at [[Template talk:Blockquote]]
sanitized-css
text/css
/* {{pp-template}} */
.templatequote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
.templatequote .templatequotecite {
line-height: 1.5em;
/* @noflip */
text-align: left;
/* @noflip */
padding-left: 1.6em;
margin-top: 0;
}
2f501be7e53e631123db261484f3ef52d1d0e909
Template:Quotation
10
875
1940
2020-12-28T22:03:36Z
wikipedia>JJMC89
0
[[WP:AES|←]]Changed redirect target from [[Template:Quote]] to [[Template:Blockquote]]
wikitext
text/x-wiki
#REDIRECT [[Template:Blockquote]]
945d9b4f4764cef422ae81b16bb6713645f92824
Template:WIA/doc
10
1741
3297
2020-12-29T20:55:02Z
wikipedia>Cbrittain10
0
wikitext
text/x-wiki
{{Documentation subpage}}
===Usage===
{{tlx|WIA}} produces: {{WIA}}
This template is used to indicate wounded commanders in {{tlx|Infobox military conflict}}.
===See also===
*{{tl|DOW}}
*{{tl|Executed}}
*{{tl|KIA}}
*{{tl|POW}}
*{{tl|Surrendered}}
*{{tl|MIA}}
*{{tl|Natural Causes}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!--Categories below here, please; interwikis to Wikidata.-->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
365dec2816e1ee347d5d8be208b2bc63cc7df513
Module:Location map/styles.css
828
1396
2731
2021-01-02T20:03:01Z
w>Izno
0
Protected "[[Module:Location map/styles.css]]": [[WP:High-risk templates|Highly visible template]]: match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
sanitized-css
text/css
/* {{pp|small=yes}} */
.locmap .od {
position: absolute;
}
.locmap .id {
position: absolute;
line-height: 0;
}
.locmap .l0 {
font-size: 0;
position: absolute;
}
.locmap .pv {
line-height: 110%;
position: absolute;
text-align: center;
}
.locmap .pl {
line-height: 110%;
position: absolute;
top: -0.75em;
text-align: right;
}
.locmap .pr {
line-height: 110%;
position: absolute;
top: -0.75em;
text-align: left;
}
.locmap .pv > div {
display: inline;
padding: 1px;
}
.locmap .pl > div {
display: inline; /* inline does not impact floated elements */
padding: 1px;
float: right;
}
.locmap .pr > div {
display: inline; /* inline does not impact floated elements */
padding: 1px;
float: left;
}
1af8c3b5ae1ff654548b74f76b5208f6b360c5a1
Führerredux Wiki:WikiProject Geographical coordinates/source:
4
1670
3095
2021-01-07T23:39:44Z
wikipedia>Funandtrvl
0
update links, copy edit
wikitext
text/x-wiki
Specifies, where present, the data source and data source format/datum, and optionally, the original data, presented in parentheses. This is initially primarily intended for use by geotagging robots, so that data is not blindly repeatedly copied from format to format and Wikipedia to Wikipedia, with progressive loss of precision and attributability.
Examples:
* A lat/long geotag derived from an [[Ordnance Survey]] [[Ordnance Survey National Grid|National Grid Reference]] NM 435 355 found in the English-language Wikipedia would be tagged as "source:enwiki-osgb36(NM435355)"
* A latitude-longitude location sourced from data taken from the German-language Wikipedia would be tagged as "source:dewiki" – and so on, for other language codes;
* A location sourced from the public domain [[GEOnet Names Server|GeoNet Names Server]] database would be tagged as "source:GNS". No datum or format information is needed, since by default all Wikipedia coordinates are in latitude/longitude format based on the [[World Geodetic System|WGS84]] datum. Similarly, US locations sourced from the similar public domain [[Geographic Names Information System|GNIS]] database would be tagged as "source:GNIS".
[[Category:WikiProject Geographical coordinates]]
caf1408990661ff81d9edcc1ee786751081527aa
Template:Math
10
1549
2884
2021-01-13T19:22:54Z
w>Andrybak
0
fix usage of [[Template:Main other]] – requested by [[User:DePiep]]
wikitext
text/x-wiki
<span class="texhtml {{#if:{{{big|}}}{{{size|}}}|texhtml-big}}" {{#if:{{{big|}}}{{{size|}}}|style="font-size:{{{size|165%}}};"}}>{{{1}}}</span><!--
-->{{#invoke:Check for unknown parameters|check
| unknown = {{main other|[[Category:Pages using Math with unknown parameters|_VALUE_]]}}
| showblankpositional=1
| preview = unknown parameter "_VALUE_" (consider using <code>{{!}}1=</code>, <code><nowiki>{{!}}</nowiki></code>, <code><nowiki>{{=}}</nowiki></code>)
| 1 | big | size
}}<noinclude>
{{Documentation}}
</noinclude>
b9b46ed7f0b97e7448c1893c7fe0d86197f84be6
Module:Aligned table
828
1553
2888
2021-01-13T21:53:43Z
w>Plastikspork
0
Optional rowclass
Scribunto
text/plain
-- This module implements {{aligned table}}
local p = {}
local function isnotempty(s)
return s and s:match( '^%s*(.-)%s*$' ) ~= ''
end
function p.table(frame)
local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
local entries = {}
local colclass = {}
local colstyle = {}
local cols = tonumber(args['cols']) or 2
-- create the root table
local root = mw.html.create('table')
-- add table style for fullwidth
if isnotempty(args['fullwidth']) then
root
:css('width', '100%')
:css('border-collapse', 'collapse')
:css('border-spacing', '0px 0px')
:css('border', 'none')
end
-- add table classes
if isnotempty(args['class']) then
root:addClass(args['class'])
end
-- add table style
if isnotempty(args['style']) then
root:cssText(args['style'])
end
-- build arrays with the column styles and classes
if isnotempty(args['leftright']) then
colstyle[1] = 'text-align:left;'
colstyle[2] = 'text-align:right;'
end
if isnotempty(args['rightleft']) then
colstyle[1] = 'text-align:right;'
colstyle[2] = 'text-align:left;'
end
for i = 1,cols do
colclass[ i ] = colclass[ i ] or ''
colstyle[ i ] = colstyle[ i ] or ''
if isnotempty(args['colstyle']) then
colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colalign' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'align']) then
colstyle[ i ] = 'text-align:' .. args['col' .. tostring(i) .. 'align'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['align' .. tostring(i)]) then
colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colnowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'nowrap']) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
elseif isnotempty(args['nowrap' .. tostring(i)]) then
colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ]
end
if isnotempty(args['colwidth' .. tostring(i)]) then
colstyle[ i ] = 'width:' .. args['colwidth' .. tostring(i)] .. ';' .. colstyle[ i ]
elseif isnotempty(args['col' .. tostring(i) .. 'width']) then
colstyle[ i ] = 'width:' .. args['col' .. tostring(i) .. 'width'] .. ';' .. colstyle[ i ]
elseif isnotempty(args['colwidth']) then
colstyle[ i ] = 'width:' .. args['colwidth'] .. ';' .. colstyle[ i ]
end
if isnotempty(args['colstyle' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['colstyle' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'style']) then
colstyle[ i ] = colstyle[ i ] .. args['col' .. tostring(i) .. 'style']
elseif isnotempty(args['style' .. tostring(i)]) then
colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)]
end
if isnotempty(args['colclass' .. tostring(i)]) then
colclass[ i ] = args['colclass' .. tostring(i)]
elseif isnotempty(args['col' .. tostring(i) .. 'class']) then
colclass[ i ] = args['col' .. tostring(i) .. 'class']
elseif isnotempty(args['class' .. tostring(i)]) then
colclass[ i ] = args['class' .. tostring(i)]
end
end
-- compute the maximum cell index
local cellcount = 0
for k, v in pairs( args ) do
if type( k ) == 'number' then
cellcount = math.max(cellcount, k)
end
end
-- compute the number of rows
local rows = math.ceil(cellcount / cols)
-- build the table content
if isnotempty(args['title']) then
local caption = root:tag('caption')
caption:cssText(args['titlestyle'])
caption:wikitext(args['title'])
end
if isnotempty(args['above']) then
local row = root:tag('tr')
local cell = row:tag('th')
cell:attr('colspan', cols)
cell:cssText(args['abovestyle'])
cell:wikitext(args['above'])
end
for j=1,rows do
-- start a new row
local row = root:tag('tr')
if isnotempty(args['rowstyle']) then
row:cssText(args['rowstyle'])
else
row:css('vertical-align', 'top')
end
if isnotempty(args['rowclass']) then
row:addClass(args['rowclass'])
end
-- loop over the cells in the row
for i=1,cols do
local cell
if isnotempty(args['row' .. tostring(j) .. 'header']) then
cell = row:tag('th'):attr('scope','col')
elseif isnotempty(args['col' .. tostring(i) .. 'header']) then
cell = row:tag('th'):attr('scope','row')
else
cell = row:tag('td')
end
if args['class' .. tostring(j) .. '.' .. tostring(i)] then
cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowclass' .. tostring(j)] then
cell:addClass(args['rowclass' .. tostring(j)])
elseif args['row' .. tostring(j) .. 'class'] then
cell:addClass(args['row' .. tostring(j) .. 'class'])
elseif args['rowevenclass'] and math.fmod(j,2) == 0 then
cell:addClass(args['rowevenclass'])
elseif args['rowoddclass'] and math.fmod(j,2) == 1 then
cell:addClass(args['rowoddclass'])
end
if colclass[i] ~= '' then
cell:addClass(colclass[i])
end
end
if args['style' .. tostring(j) .. '.' .. tostring(i)] then
cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)])
else
if args['rowstyle' .. tostring(j)] then
cell:cssText(args['rowstyle' .. tostring(j)])
elseif args['rowevenstyle'] and math.fmod(j,2) == 0 then
cell:cssText(args['rowevenstyle'])
elseif args['rowoddstyle'] and math.fmod(j,2) == 1 then
cell:cssText(args['rowoddstyle'])
elseif args['row' .. tostring(j) .. 'style'] then
cell:cssText(args['row' .. tostring(j) .. 'style'])
end
if isnotempty(colstyle[i]) then
cell:cssText(colstyle[i])
end
end
cell:wikitext(mw.ustring.gsub(args[cols*(j - 1) + i] or '', '^(.-)%s*$', '%1') or '')
end
end
-- return the root table
return tostring(root)
end
return p
be91fb962ffe123e655c15a0cffb64f72c3042cb
Template:Xt
10
1225
2555
2021-01-14T19:30:02Z
Xaosflux
7
Changed protection level for "[[Template:Xt]]": used in system messages ([[MediaWiki:Titleblacklist-custom-archive]]) ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example" style="font-family: Georgia, 'DejaVu Serif', serif; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<noinclude>
{{Documentation}}
</noinclude>
e8c5895953384f68b9648a698f7f33d79748e408
Module:Data
828
1363
2698
2021-01-16T19:03:09Z
w>Jackmcbarn
0
Make this work when called with wikitext's fake tables
Scribunto
text/plain
local mt = {}
function mt.__index(t, k)
return function(frame)
local data = mw.loadData(k)
local i = 1
for _,v in ipairs(frame.args) do
local ty = type(data)
if ty ~= 'table' then
local args = {}
for j = 1, i - 1 do
args[j] = frame.args[j]
end
if frame.args.softfail then
return '<span class="error">[[Category:Pages with failed Module:Data lookups]]Error: Tried to read index "' .. mw.text.nowiki(v) .. '" of mw.loadData("' .. mw.text.nowiki(k) .. '").' .. mw.text.nowiki(table.concat(args, '.')) .. ', which is a ' .. ty .. '</span>'
else
error('Tried to read index "' .. v .. '" of mw.loadData("' .. k .. '").' .. table.concat(args, '.') .. ', which is a ' .. ty)
end
end
data = data[v]
i = i + 1
end
return data
end
end
return setmetatable({}, mt)
654c5ba2e0c73e7415457ca7a67fe0dfacfdba3b
Template:High risk
10
763
1701
2021-01-19T20:55:25Z
Elli
39
Added {{[[:Template:R avoided double redirect|R avoided double redirect]]}} tag to redirect
wikitext
text/x-wiki
#REDIRECT [[Template:High-use]]
{{Redirect category shell|
{{R avoided double redirect|1=Template:High-risk}}
{{R from alternative hyphenation|'''{{-r|Template:High-risk}}'''}}{{R from template shortcut}}
}}
ce1776d54ed01e65417b2a4ed18778e32694aa48
Template:TemplateData header
10
59
993
2021-01-21T15:35:18Z
Integer
33
properly rm unavailable template
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->TemplateData}}<!--
e.o. #if:nolink; DEFAULT:
--> documentation for this template used by VisualEditor and other tools<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
1aa9d45b42ec98f7c188b4427ab410246868bd23
Template:Cot
10
1736
3283
2021-01-23T15:32:43Z
wikipedia>Elli
0
not needed
wikitext
text/x-wiki
#REDIRECT [[Template:Collapse top]]
{{Redirect category shell|
{{R from template shortcut}}
}}
708f8bf79aefbfe8ee62f4fa68561059be0372d2
Template:Tlc
10
1001
2198
2021-01-23T16:04:55Z
wikipedia>Elli
0
cats
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code]]
{{Redirect category shell|
{{R from template shortcut}}
{{R from high-use template}}
{{R from move}}
}}
48ef4a029c0e27cccb1148a29fb8b7ccb211a4a2
Module:Userbox/doc
828
1287
2622
2021-01-31T02:29:09Z
w>Andrybak
0
/* Tracking categories */ a tracking category has been renamed per [[Wikipedia:Categories_for_discussion/Log/2021_January_19#Category:Pages_with_misplaced_templates]]
wikitext
text/x-wiki
{{High-use|233415}}
{{Lua|Module:Category handler|Module:Arguments|Module:Color contrast}}
This module does the processing for three userbox templates, {{tl|userbox}}, {{tl|userbox-2}} and {{tl|userbox-r}}.
{| class="wikitable"
|-
! Template
! Description
! Examples
|-
| {{tl|userbox}}
| Makes userboxes with an id on the left-hand side, or with no id.
| {{userbox|id=id}}
{{clear}}
{{userbox}}
|-
| {{tl|userbox-2}}
| Makes userboxes with an id on both the left- and right-hand sides.
| {{userbox-2}}
|-
| {{tl|userbox-r}}
| Makes userboxes with an id on the right-hand side.
| {{userbox-r}}
|}
To use any of these templates from a wiki page, please see the individual template pages for documentation. To generate userboxes directly from Lua, read on.
== Generating userboxes from Lua ==
To generate a userbox directly from Lua, first load the module.
<syntaxhighlight lang="lua">
local userbox = require('Module:Userbox')
</syntaxhighlight>
You can then run any of the three templates with the code:
<syntaxhighlight lang="lua">
userbox.main(functionName, args)
</syntaxhighlight>
For {{tl|userbox}} use the function name "<code>_userbox</code>"; for {{tl|userbox-2}} use the function name "<code>_userbox-2</code>"; and for {{tl|userbox-r}} use the function name "<code>_userbox-r</code>". The <code>args</code> parameter is a table of arguments to pass to the different userbox functions. To see a list of valid arguments, please consult the individual template pages.
== Tracking categories ==
* {{clc|Userboxes with insufficient color contrast}}
* {{clc|Pages with templates in the wrong namespace}}
959aeab2b9a931fbb3e6f5906961bd851cc3921b
Template:Anchor
10
566
1278
2021-01-31T22:06:17Z
wikipedia>Plastikspork
0
Fix |=FOO bug where {{anchor|=FOO}} transcludes [[Template:FOO]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
7d65122552007ac959072bddfa6f723296c81998
Module:Location map/data/USA Minnesota
828
1631
2971
2021-02-02T04:06:43Z
wikipedia>Izno
0
per tper
Scribunto
text/plain
return {
name = 'Minnesota',
top = 49.6,
bottom = 43.3,
left = -97.4,
right = -89.3,
image = 'USA Minnesota location map.svg',
image1 = 'USA Minnesota relief location map.svg'
}
cbeccbdc44b6fb67f064c0fd0fe0857151aefb98
Module:Time ago
828
1533
2868
2021-02-02T18:35:13Z
w>GreenC
0
add new feature "|numeric" to print number only
Scribunto
text/plain
-- Implement [[Template:Time ago]]
local numberSpell, yesno -- lazy load
function numberSpell(arg)
numberSpell = require('Module:NumberSpell')._main
return numberSpell(arg)
end
function yesno(arg)
yesno = require('Module:Yesno')
return yesno(arg)
end
local p = {}
-- Table to convert entered text values to numeric values.
local timeText = {
['seconds'] = 1,
['minutes'] = 60,
['hours'] = 3600,
['days'] = 86400,
['weeks'] = 604800,
['months'] = 2629800, -- 365.25 * 24 * 60 * 60 / 12
['years'] = 31557600
}
-- Table containing tables of possible units to use in output.
local timeUnits = {
[1] = { 'second', 'seconds', "second's", "seconds'" },
[60] = { 'minute', 'minutes', "minutes'", "minutes'" },
[3600] = { 'hour', 'hours', "hour's", "hours'" },
[86400] = { 'day', 'days', "day's", "days'" },
[604800] = { 'week', 'weeks', "week's", "weeks'", unit = 'w' },
[2629800] = { 'month', 'months', "month's", "months'", unit = 'm' },
[31557600] = { 'year', 'years', "year's", "years'", unit = 'y' }
}
function p._main( args )
-- Initialize variables
local lang = mw.language.getContentLanguage()
local auto_magnitude_num
local min_magnitude_num
local magnitude = args.magnitude
local min_magnitude = args.min_magnitude
local purge = args.purge
-- Add a purge link if something (usually "yes") is entered into the purge parameter
if purge then
purge = ' <span class="plainlinks">([' .. mw.title.getCurrentTitle():fullUrl('action=purge') .. ' purge])</span>'
else
purge = ''
end
-- Check that the entered timestamp is valid. If it isn't, then give an error message.
local success, inputTime = pcall( lang.formatDate, lang, 'xnU', args[1] )
if not success then
return '<strong class="error">Error: first parameter cannot be parsed as a date or time.</strong>'
end
-- Store the difference between the current time and the inputted time, as well as its absolute value.
local timeDiff = lang:formatDate( 'xnU' ) - inputTime
local absTimeDiff = math.abs( timeDiff )
if magnitude then
auto_magnitude_num = 0
min_magnitude_num = timeText[magnitude]
else
-- Calculate the appropriate unit of time if it was not specified as an argument.
local autoMagnitudeData = {
{ factor = 2, amn = 31557600 },
{ factor = 2, amn = 2629800 },
{ factor = 2, amn = 86400 },
{ factor = 2, amn = 3600 },
{ factor = 2, amn = 60 }
}
for _, t in ipairs( autoMagnitudeData ) do
if absTimeDiff / t.amn >= t.factor then
auto_magnitude_num = t.amn
break
end
end
auto_magnitude_num = auto_magnitude_num or 1
if min_magnitude then
min_magnitude_num = timeText[min_magnitude]
else
min_magnitude_num = -1
end
end
if not min_magnitude_num then
-- Default to seconds if an invalid magnitude is entered.
min_magnitude_num = 1
end
local result_num
local magnitude_num = math.max( min_magnitude_num, auto_magnitude_num )
local unit = timeUnits[magnitude_num].unit
if unit and absTimeDiff >= 864000 then
local Date = require('Module:Date')._Date
local input = lang:formatDate('Y-m-d H:i:s', args[1]) -- Date needs a clean date
input = Date(input)
if input then
local id
if input.hour == 0 and input.minute == 0 then
id = 'currentdate'
else
id = 'currentdatetime'
end
result_num = (Date(id) - input):age(unit)
end
end
result_num = result_num or math.floor ( absTimeDiff / magnitude_num )
local punctuation_key, suffix
if timeDiff >= 0 then -- Past
if result_num == 1 then
punctuation_key = 1
else
punctuation_key = 2
end
if args.ago == '' then
suffix = ''
else
suffix = ' ' .. (args.ago or 'ago')
end
else -- Future
if args.ago == '' then
suffix = ''
if result_num == 1 then
punctuation_key = 1
else
punctuation_key = 2
end
else
suffix = ' time'
if result_num == 1 then
punctuation_key = 3
else
punctuation_key = 4
end
end
end
local result_unit = timeUnits[ magnitude_num ][ punctuation_key ]
-- Convert numerals to words if appropriate.
local spell_out = args.spellout
local spell_out_max = tonumber(args.spelloutmax)
local result_num_text
if spell_out and (
( spell_out == 'auto' and 1 <= result_num and result_num <= 9 and result_num <= ( spell_out_max or 9 ) ) or
( yesno( spell_out ) and 1 <= result_num and result_num <= 100 and result_num <= ( spell_out_max or 100 ) )
)
then
result_num_text = numberSpell( result_num )
else
result_num_text = tostring( result_num )
end
-- numeric or string
local numeric_out = args.numeric
local result = ""
if numeric_out then
result = tostring( result_num )
else
result = result_num_text .. ' ' .. result_unit .. suffix -- Spaces for suffix have been added in earlier.
end
return result .. purge
end
function p.main( frame )
local args = require( 'Module:Arguments' ).getArgs( frame, {
valueFunc = function( k, v )
if v then
v = v:match( '^%s*(.-)%s*$' ) -- Trim whitespace.
if k == 'ago' or v ~= '' then
return v
end
end
return nil
end,
wrappers = 'Template:Time ago'
})
return p._main( args )
end
return p
d5309383cbe3d8c0b4e2f11cd02263496759343c
Template:NCES School ID
10
1478
2813
2021-02-03T17:29:15Z
w>Jonesey95
0
Fix empty citation, unnamed or unsupported parameter, or invalid parameter value; see [[Help:CS1 errors]]
wikitext
text/x-wiki
<includeonly>{{#if: {{{do_not_render|}}}||
{{#if: {{{do_not_show_link|}}}|{{{1}}}|[https://nces.ed.gov/ccd/schoolsearch/school_detail.asp?Search=1&ID={{{1}}} {{{1}}}]}}
}}{{#tag:ref|
{{cite web
|title=Search for Public Schools - {{{school_name}}} ({{{1}}})
|url=https://nces.ed.gov/ccd/schoolsearch/school_detail.asp?Search=1&ID={{{1}}}
|publisher=[[Institute of Education Sciences]]
|website=[[National Center for Education Statistics]]
|access-date={{{access_date}}}
}}
|name={{#if: {{{ref_name|}}}|{{{ref_name}}}|"nces_sch"}}}}</includeonly><noinclude>{{documentation}}</noinclude>
45bed3660d9806dae24facca88fb9aec6d761c25
Module:Location map/data/USA Tennessee
828
1683
3124
2021-02-07T02:01:09Z
wikipedia>Jonesey95
0
add relief
Scribunto
text/plain
return {
name = 'Tennessee',
top = 38.1,
bottom = 33.6,
left = -90.5,
right = -81.4,
image = 'USA Tennessee location map.svg',
image1 = 'USA Tennessee relief location map.svg'
}
575b36ab0fd4a6a90399da47a84bac37db2fd8f9
Template:Tl
10
8
11
2021-02-12T22:03:00Z
wikipedia>Anthony Appleyard
0
Anthony Appleyard moved page [[Template:Tl]] to [[Template:Template link]]: [[Special:Permalink/1006428669|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Redirect category shell|
{{R from move}}
}}
d6593bb3b4a866249f55d0f34b047a71fe1f1529
Template:Div col
10
45
85
2021-02-14T23:20:57Z
wikipedia>Matt Fitzpatrick
0
whitelist parameter class
wikitext
text/x-wiki
<includeonly><templatestyles src="Div col/styles.css"/><!--
--><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!--
-->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!--
-->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!--
-->}}><!--
-->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes
-->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!--
--></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude>
{{Documentation}}
</noinclude>
6e84133dd867d6c701e7b161878cf66665bb7eb7
Template:Use Oxford spelling
10
973
2136
2021-02-15T02:37:48Z
wikipedia>Goszei
0
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{DMCA|Use Oxford spelling|from|{{{date|}}}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Oxford spelling template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use Oxford spelling|Oxford spelling template]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}<noinclude>{{Documentation}}</noinclude>
1eda85fc7798888a17dcf7b9c4cbf511134ce261
Template:Shortcut
10
135
319
2021-02-16T17:54:05Z
wikipedia>Nardog
0
TfM closed
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
2f2ccc402cde40b1ae056628bffa0852ee01653c
Template:Template shortcut
10
255
1406
2021-02-16T17:54:32Z
wikipedia>Nardog
0
TfM closed as convert
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>
bfb2889c4c0ec36294b7b667f5e03350d2df680e
Module:Shortcut/config
828
137
323
2021-02-16T18:43:45Z
wikipedia>Nardog
0
Scribunto
text/plain
-- This module holds configuration data for [[Module:Shortcut]].
return {
-- The heading at the top of the shortcut box. It accepts the following parameter:
-- $1 - the total number of shortcuts. (required)
['shortcut-heading'] = '[[Wikipedia:Shortcut|{{PLURAL:$1|Shortcut|Shortcuts}}]]',
-- The heading when |redirect=yes is given. It accepts the following parameter:
-- $1 - the total number of shortcuts. (required)
['redirect-heading'] = '[[Wikipedia:Redirect|{{PLURAL:$1|Redirect|Redirects}}]]',
-- The error message to display when a shortcut is invalid (is not a string, or
-- is the blank string). It accepts the following parameter:
-- $1 - the number of the shortcut in the argument list. (required)
['invalid-shortcut-error'] = 'shortcut #$1 was invalid (shortcuts must be ' ..
'strings of at least one character in length)',
-- The error message to display when no shortcuts or other displayable content
-- were specified. (required)
['no-content-error'] = 'Error: no shortcuts were specified and the ' ..
mw.text.nowiki('|msg=') ..
' parameter was not set.',
-- A category to add when the no-content-error message is displayed. (optional)
['no-content-error-category'] = 'Shortcut templates with missing parameters',
}
f9d1d94844d5953753eb19e30a3ce389eda3d319
Führerredux Wiki:WikiProject Geographical coordinates/globe:
4
1667
3089
2021-02-17T05:24:27Z
Artoria2e5
57
CRS is pretty much implied by map, so it's pretty wrong to say there is none. Update list of WMA bodies.
wikitext
text/x-wiki
The <code>globe:</code> parameter specifies the [[planet]], [[dwarf planet]], [[asteroid]], or [[natural satellite]] upon which the coordinates reside. Apart from ''[[earth]]'' (the default), recognized values are: ''[[Mercury (planet)|mercury]]'', ''[[venus]]'', ''[[moon]]'', ''[[mars]]'', ''[[Phobos (moon)|phobos]]'', ''[[Deimos (moon)|deimos]]'', ''[[Ceres (dwarf planet)|ceres]]'', ''[[4 Vesta|vesta]]'', ''[[jupiter]]'', ''[[Ganymede (moon)|ganymede]]'', ''[[Callisto (moon)|callisto]]'', ''[[Io (moon)|io]]'', ''[[Europa (moon)|europa]]'', ''[[Mimas (moon)|mimas]]'', ''[[enceladus]]'', ''[[Tethys (moon)|tethys]]'', ''[[Dione (moon)|dione]]'', ''[[Rhea (moon)|rhea]]'', ''[[Titan (moon)|titan]]'', ''[[Hyperion (moon)|hyperion]]'', ''[[Iapetus (moon)|iapetus]]'', ''[[Phoebe (moon)|phoebe]]'', ''[[Miranda (moon)|miranda]]'', ''[[Ariel (moon)|ariel]]'', ''[[Umbriel (moon)|umbriel]]'', ''[[Titania (moon)|titania]]'', ''[[Oberon (moon)|oberon]]'', ''[[Triton (moon)|triton]]'', ''[[pluto]]'', and ''[[Charon (moon)|charon]]''.
{| class="wikitable sortable"
|+ Samples
! Subject
! G
! Markup
! Result
|-
| [[Kittu (crater)|Kittu Crater]]
| ganymede
| <code><nowiki>{{coord|0.4|N|334.6|W|globe:ganymede}}</nowiki></code>
| {{coord|0.4|N|334.6|W|globe:ganymede}}
|-
| [[Viking 2]] lander
| mars
| <code><nowiki>{{coord|48.269|N|225.990|W|globe:mars}}</nowiki></code>
| {{coord|48.269|N|225.990|W|globe:mars}}
|-
| [[Mozart (crater)|Mozart Crater]]
| mercury
| <code><nowiki>{{coord|7.8|N|190.5|W|globe:mercury}}</nowiki></code>
| {{coord|7.8|N|190.5|W|globe:mercury}}
|-
| [[Apollo 11]] lander
| moon
| <code><nowiki>{{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}</nowiki></code>
| {{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}
|-
| [[Ksa (crater)|Ksa Crater]]
| titan
| <code><nowiki>{{coord|14.0|N|65.4|W|globe:titan}}</nowiki></code>
| {{coord|14.0|N|65.4|W|globe:titan}}
|-
| [[Venera 13]] lander
| venus
| <code><nowiki>{{coord|7.5|S|303|E|globe:venus}}</nowiki></code>
| {{coord|7.5|S|303|E|globe:venus}}
|-
| [[Stickney (crater)|Stickney Crater]]
| phobos
| <code><nowiki>{{coord|1|N|49|W|globe:phobos}}</nowiki></code>
| {{coord|1|N|49|W|globe:phobos}}
|}
Very rough mapping is provided on geohack for almost all supported globes. The pop-out WikiMiniAtlas system provides limited mapping for Moon, Mars, Mercury, Venus, Io, and Titan, {{as of|2021|02|lc=1}}.
The maps roughly implies a coordinate reference system, but does not clearly specify one (unlike Earth's WGS84). Since the template defaults to east longitude, the <code>|W|</code> direction must be specified for globes that measure longitude westward. For celestial coordinates, use {{tl|Sky}} instead.
[[Category:WikiProject Geographical coordinates]]
ac8ba8717272d81a67cf6d6c89bd07c44965c6dc
Template:Nowiki2
10
629
1418
2021-02-18T18:38:29Z
wikipedia>Jonesey95
0
Reverted 1 edit by [[Special:Contributions/154.133.144.234|154.133.144.234]] ([[User talk:154.133.144.234|talk]]) to last revision by Ans
wikitext
text/x-wiki
{{#if: {{{tag|}}}
| {{#if: {{{style|}}}
| <{{{tag}}} style="{{{style}}}">
| <{{{tag}}}>
}}
}}{{#invoke:LuaCall | call | mw.text.nowiki |\{{{1|}}}<!-- -->}}{{#if: {{{tag|}}}
| </{{{tag}}}>
}}<noinclude>
{{Documentation}}
</noinclude>
2712eeff2099493a4151603b9ed4ea74e51fa6ed
Template:IUCN banner
10
1390
2725
2021-02-20T03:30:08Z
w>Matt Fitzpatrick
0
implemented edit request by Reywas92, links to IUCN protected area categories instead of IUCN
wikitext
text/x-wiki
{{#if: {{{1|}}} | {{#switch: {{uc:{{{1|}}}}}
| IA = <div style="background-color: #E7AF97;">[[IUCN protected area categories|IUCN category]]<!--
--> Ia ([[strict nature reserve]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||}}
| IB = <div style="background-color: #DACAA5;">[[IUCN protected area categories|IUCN category]]<!--
--> Ib ([[wilderness area]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category Ib]]}}
| II = <div style="background-color: #CDE5B2;">[[IUCN protected area categories|IUCN category]]<!--
--> II ([[national park]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category II]]}}
| III = <div style="background-color: #BFFFBF;">[[IUCN protected area categories|IUCN category]]<!--
--> III ([[natural monument|natural monument or feature]]){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category III]]}}
| IV = <div style="background-color: #B2E5CD;">[[IUCN protected area categories|IUCN category]]<!--
--> IV (habitat/species management area){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category IV]]}}
| V = <div style="background-color: #A5CADA;">[[IUCN protected area categories|IUCN category]]<!--
--> V (protected landscape/seascape){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category V]]}}
| VI = <div style="background-color: #A8BDEC;">[[IUCN protected area categories|IUCN category]]<!--
--> VI (protected area with sustainable use of natural resources){{{2|}}}</div>{{#if:{{NAMESPACE}}||[[Category:IUCN Category VI]]}}
| #default = <div style="color: #C80815; font-weight: bold;">An unknown <!--
-->[[IUCN protected area categories|IUCN category]] was entered.{{main other|[[Category:Pages using IUCN banner with invalid value]]}}</div>
}} }}<noinclude>
{{Documentation}}
<!--
PLEASE ADD CATEGORIES AND INTERWIKIS
TO THE /doc SUBPAGE, THANKS
-->
</noinclude>
4a54015e466e8edcb6ca736e10616330f5cc2b54
Template:Template link general
10
1037
2272
2021-02-20T18:40:07Z
wikipedia>Pppery
0
Make substable per edit request
wikitext
text/x-wiki
{{{{{|safesubst:}}}#Invoke:Template link general|main}}<noinclude>
{{Documentation}}
</noinclude>
9871d2f490eaedd832a0ae8016adbf807ddf7b71
Template:Userbox
10
141
331
2021-02-23T21:04:49Z
MrJaroslavik
18
[[Category:Userboxes]]
wikitext
text/x-wiki
{{#invoke:userbox|userbox}}<noinclude>
{{documentation}} [[Category:Userboxes]]</noinclude>
cef9fe752d7f8791d4317858904bde773db441a6
Module:Unsubst
828
235
530
2021-02-28T16:50:26Z
Redmin
30
Undid revision 164895 by [[Special:Contributions/R4356th|R4356th]] ([[User talk:R4356th|talk]]): The edit broke the module. :(
Scribunto
text/plain
local p = {}
local specialParams = {
['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates
['$B'] = 'template content',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' )
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Build an equivalent template invocation
-- First, find the title to use
local titleobj = mw.title.new(frame:getParent():getTitle())
local title
if titleobj.namespace == 10 then -- NS_TEMPLATE
title = titleobj.text
elseif titleobj.namespace == 0 then -- NS_MAIN
title = ':' .. titleobj.text
else
title = titleobj.prefixedText
end
-- Build the invocation body with numbered args first, then named
local ret = '{{' .. title
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '')
end
end
return p
83a208bd98f5e78524b299923e5f6e6268a17c53
Template:No ping
10
211
478
2021-03-05T21:17:26Z
MrJaroslavik
18
wikitext
text/x-wiki
{{#invoke:No ping|main}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
f562b06355eb8e61bec522fedc6a997feb68d7c8
Template:Green
10
214
484
2021-03-06T15:01:15Z
MrJaroslavik
18
wikitext
text/x-wiki
<span style="color: #00BA00;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
b52b710c69a84c2f5afa810e03f1c25ea5b33f78
Template:Cyan
10
232
524
2021-03-06T15:05:11Z
MrJaroslavik
18
MrJaroslavik moved page [[Template:Bold Blue]] to [[Template:Cyan]] without leaving a redirect
wikitext
text/x-wiki
<span style="color: #00cccc;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
0e41138de5432d774a72ac7f8607b5c8bb6e9d23
Template:Big
10
231
520
2021-03-06T15:09:22Z
MrJaroslavik
18
wikitext
text/x-wiki
<span style="font-size: 120%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
ccacbee62715b1977a9a2534a2cd4761ed5882f1
Template:Color
10
213
482
2021-03-06T15:12:43Z
MrJaroslavik
18
wikitext
text/x-wiki
<span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e
Template:Reflist/styles.css
10
565
1276
2021-03-08T23:00:26Z
wikipedia>Izno
0
Changed protection level for "[[Template:Reflist/styles.css]]": match parent ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
sanitized-css
text/css
/* {{pp|small=yes}} */
/* can we remove the font size declarations? .references gets a font-size in
* common.css that is always 90, and there is nothing else in reflist out in
* the wild. May affect column sizes.
*/
.reflist {
font-size: 90%; /* Default font-size */
margin-bottom: 0.5em;
list-style-type: decimal;
}
.reflist .references {
font-size: 100%; /* Reset font-size when nested in div.reflist */
margin-bottom: 0; /* Avoid double margin when nested in div.reflist */
list-style-type: inherit; /* Enable custom list style types */
}
/* columns-2 and columns-3 are legacy for "2 or more" column view from when the
* template was implemented with column-count.
*/
.reflist-columns-2 {
column-width: 30em;
}
.reflist-columns-3 {
column-width: 25em;
}
/* Reset top margin for lists embedded in columns */
.reflist-columns {
margin-top: 0.3em;
}
.reflist-columns ol {
margin-top: 0;
}
/* Avoid elements breaking between columns */
.reflist-columns li {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
.reflist-upper-alpha {
list-style-type: upper-alpha;
}
.reflist-upper-roman {
list-style-type: upper-roman;
}
.reflist-lower-alpha {
list-style-type: lower-alpha;
}
.reflist-lower-greek {
list-style-type: lower-greek;
}
.reflist-lower-roman {
list-style-type: lower-roman;
}
531a26d48f0e7826c61f764cfb7d5fb200032c34
Template:NAC
10
226
510
2021-03-10T20:37:38Z
MrJaroslavik
18
[[Category:Template redirects]]
wikitext
text/x-wiki
#REDIRECT [[Template:Non-admin closure]]
[[Category:Template redirects]]
e832ee229612e587cd776e14de78cad816d72d44
Template:NACC
10
224
506
2021-03-10T20:38:11Z
MrJaroslavik
18
[[Category:Template redirects]]
wikitext
text/x-wiki
#REDIRECT [[Template:Non-admin comment]]
[[Category:Template redirects]]
1cd21d3bf7de101beb4306ce2af0275eae30628f
Template:Serif
10
230
518
2021-03-10T20:45:26Z
MrJaroslavik
18
wikitext
text/x-wiki
<span style="font-family: 'Georgia Pro', Georgia, 'DejaVu Serif', Times, 'Times New Roman', serif; {{{style|}}}" {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
1f36ee4412dd29b6f8065b6a8f4191905763d83e
Module:Math
828
593
1334
2021-03-11T22:23:48Z
wikipedia>Primefac
0
typo fix
Scribunto
text/plain
--[[
This module provides a number of basic mathematical operations.
]]
local yesno, getArgs -- lazily initialized
local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.
--[[
Helper functions used to avoid redundant code.
]]
local function err(msg)
-- Generates wikitext error messages.
return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg)
end
local function unpackNumberArgs(args)
-- Returns an unpacked list of arguments specified with numerical keys.
local ret = {}
for k, v in pairs(args) do
if type(k) == 'number' then
table.insert(ret, v)
end
end
return unpack(ret)
end
local function makeArgArray(...)
-- Makes an array of arguments from a list of arguments that might include nils.
local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.
local nums = {} -- Stores the numbers of valid numerical arguments.
local ret = {}
for k, v in pairs(args) do
v = p._cleanNumber(v)
if v then
nums[#nums + 1] = k
args[k] = v
end
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[#ret + 1] = args[num]
end
return ret
end
local function fold(func, ...)
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
-- and must return a number as an output. This number is then supplied as input to the next function call.
local vals = makeArgArray(...)
local count = #vals -- The number of valid arguments
if count == 0 then return
-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
nil, 0
end
local ret = table.remove(vals, 1)
for _, val in ipairs(vals) do
ret = func(ret, val)
end
return ret, count
end
--[[
Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value).
]]
local function binary_fold(func, ...)
local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...)
return value
end
--[[
random
Generate a random number
Usage:
{{#invoke: Math | random }}
{{#invoke: Math | random | maximum value }}
{{#invoke: Math | random | minimum value | maximum value }}
]]
function wrap.random(args)
local first = p._cleanNumber(args[1])
local second = p._cleanNumber(args[2])
return p._random(first, second)
end
function p._random(first, second)
math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))
-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.
if first and second then
if first <= second then -- math.random doesn't allow the first number to be greater than the second.
return math.random(first, second)
end
elseif first then
return math.random(first)
else
return math.random()
end
end
--[[
order
Determine order of magnitude of a number
Usage:
{{#invoke: Math | order | value }}
]]
function wrap.order(args)
local input_string = (args[1] or args.x or '0');
local input_number = p._cleanNumber(input_string);
if input_number == nil then
return err('order of magnitude input appears non-numeric')
else
return p._order(input_number)
end
end
function p._order(x)
if x == 0 then return 0 end
return math.floor(math.log10(math.abs(x)))
end
--[[
precision
Detemines the precision of a number using the string representation
Usage:
{{ #invoke: Math | precision | value }}
]]
function wrap.precision(args)
local input_string = (args[1] or args.x or '0');
local trap_fraction = args.check_fraction;
local input_number;
if not yesno then
yesno = require('Module:Yesno')
end
if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]].
local pos = string.find(input_string, '/', 1, true);
if pos ~= nil then
if string.find(input_string, '/', pos + 1, true) == nil then
local denominator = string.sub(input_string, pos+1, -1);
local denom_value = tonumber(denominator);
if denom_value ~= nil then
return math.log10(denom_value);
end
end
end
end
input_number, input_string = p._cleanNumber(input_string);
if input_string == nil then
return err('precision input appears non-numeric')
else
return p._precision(input_string)
end
end
function p._precision(x)
if type(x) == 'number' then
x = tostring(x)
end
x = string.upper(x)
local decimal = x:find('%.')
local exponent_pos = x:find('E')
local result = 0;
if exponent_pos ~= nil then
local exponent = string.sub(x, exponent_pos + 1)
x = string.sub(x, 1, exponent_pos - 1)
result = result - tonumber(exponent)
end
if decimal ~= nil then
result = result + string.len(x) - decimal
return result
end
local pos = string.len(x);
while x:byte(pos) == string.byte('0') do
pos = pos - 1
result = result - 1
if pos <= 0 then
return 0
end
end
return result
end
--[[
max
Finds the maximum argument
Usage:
{{#invoke:Math| max | value1 | value2 | ... }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.max(args)
return p._max(unpackNumberArgs(args))
end
function p._max(...)
local max_value = binary_fold((function(a, b) return a > b end), ...)
if max_value then
return max_value
end
end
--[[
median
Find the median of set of numbers
Usage:
{{#invoke:Math | median | number1 | number2 | ...}}
OR
{{#invoke:Math | median }}
]]
function wrap.median(args)
return p._median(unpackNumberArgs(args))
end
function p._median(...)
local vals = makeArgArray(...)
local count = #vals
table.sort(vals)
if count == 0 then
return 0
end
if p._mod(count, 2) == 0 then
return (vals[count/2] + vals[count/2+1])/2
else
return vals[math.ceil(count/2)]
end
end
--[[
min
Finds the minimum argument
Usage:
{{#invoke:Math| min | value1 | value2 | ... }}
OR
{{#invoke:Math| min }}
When used with no arguments, it takes its input from the parent
frame. Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.min(args)
return p._min(unpackNumberArgs(args))
end
function p._min(...)
local min_value = binary_fold((function(a, b) return a < b end), ...)
if min_value then
return min_value
end
end
--[[
sum
Finds the sum
Usage:
{{#invoke:Math| sum | value1 | value2 | ... }}
OR
{{#invoke:Math| sum }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.sum(args)
return p._sum(unpackNumberArgs(args))
end
function p._sum(...)
local sums, count = fold((function(a, b) return a + b end), ...)
if not sums then
return 0
else
return sums
end
end
--[[
average
Finds the average
Usage:
{{#invoke:Math| average | value1 | value2 | ... }}
OR
{{#invoke:Math| average }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.average(args)
return p._average(unpackNumberArgs(args))
end
function p._average(...)
local sum, count = fold((function(a, b) return a + b end), ...)
if not sum then
return 0
else
return sum / count
end
end
--[[
round
Rounds a number to specified precision
Usage:
{{#invoke:Math | round | value | precision }}
--]]
function wrap.round(args)
local value = p._cleanNumber(args[1] or args.value or 0)
local precision = p._cleanNumber(args[2] or args.precision or 0)
if value == nil or precision == nil then
return err('round input appears non-numeric')
else
return p._round(value, precision)
end
end
function p._round(value, precision)
local rescale = math.pow(10, precision or 0);
return math.floor(value * rescale + 0.5) / rescale;
end
--[[
log10
returns the log (base 10) of a number
Usage:
{{#invoke:Math | log10 | x }}
]]
function wrap.log10(args)
return math.log10(args[1])
end
--[[
mod
Implements the modulo operator
Usage:
{{#invoke:Math | mod | x | y }}
--]]
function wrap.mod(args)
local x = p._cleanNumber(args[1])
local y = p._cleanNumber(args[2])
if not x then
return err('first argument to mod appears non-numeric')
elseif not y then
return err('second argument to mod appears non-numeric')
else
return p._mod(x, y)
end
end
function p._mod(x, y)
local ret = x % y
if not (0 <= ret and ret < y) then
ret = 0
end
return ret
end
--[[
gcd
Calculates the greatest common divisor of multiple numbers
Usage:
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}
--]]
function wrap.gcd(args)
return p._gcd(unpackNumberArgs(args))
end
function p._gcd(...)
local function findGcd(a, b)
local r = b
local oldr = a
while r ~= 0 do
local quotient = math.floor(oldr / r)
oldr, r = r, oldr - quotient * r
end
if oldr < 0 then
oldr = oldr * -1
end
return oldr
end
local result, count = fold(findGcd, ...)
return result
end
--[[
precision_format
Rounds a number to the specified precision and formats according to rules
originally used for {{template:Rnd}}. Output is a string.
Usage:
{{#invoke: Math | precision_format | number | precision }}
]]
function wrap.precision_format(args)
local value_string = args[1] or 0
local precision = args[2] or 0
return p._precision_format(value_string, precision)
end
function p._precision_format(value_string, precision)
-- For access to Mediawiki built-in formatter.
local lang = mw.getContentLanguage();
local value
value, value_string = p._cleanNumber(value_string)
precision = p._cleanNumber(precision)
-- Check for non-numeric input
if value == nil or precision == nil then
return err('invalid input when rounding')
end
local current_precision = p._precision(value)
local order = p._order(value)
-- Due to round-off effects it is neccesary to limit the returned precision under
-- some circumstances because the terminal digits will be inaccurately reported.
if order + precision >= 14 then
if order + p._precision(value_string) >= 14 then
precision = 13 - order;
end
end
-- If rounding off, truncate extra digits
if precision < current_precision then
value = p._round(value, precision)
current_precision = p._precision(value)
end
local formatted_num = lang:formatNum(math.abs(value))
local sign
-- Use proper unary minus sign rather than ASCII default
if value < 0 then
sign = '−'
else
sign = ''
end
-- Handle cases requiring scientific notation
if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then
value = value * math.pow(10, -order)
current_precision = current_precision + order
precision = precision + order
formatted_num = lang:formatNum(math.abs(value))
else
order = 0;
end
formatted_num = sign .. formatted_num
-- Pad with zeros, if needed
if current_precision < precision then
local padding
if current_precision <= 0 then
if precision > 0 then
local zero_sep = lang:formatNum(1.1)
formatted_num = formatted_num .. zero_sep:sub(2,2)
padding = precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('0', padding)
end
else
padding = precision - current_precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('0', padding)
end
end
-- Add exponential notation, if necessary.
if order ~= 0 then
-- Use proper unary minus sign rather than ASCII default
if order < 0 then
order = '−' .. lang:formatNum(math.abs(order))
else
order = lang:formatNum(order)
end
formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
end
return formatted_num
end
--[[
divide
Implements the division operator
Usage:
{{#invoke:Math | divide | x | y | round= | precision= }}
--]]
function wrap.divide(args)
local x = args[1]
local y = args[2]
local round = args.round
local precision = args.precision
if not yesno then
yesno = require('Module:Yesno')
end
return p._divide(x, y, yesno(round), precision)
end
function p._divide(x, y, round, precision)
if y == nil or y == "" then
return err("Empty divisor")
elseif not tonumber(y) then
if type(y) == 'string' and string.sub(y, 1, 1) == '<' then
return y
else
return err("Not a number: " .. y)
end
elseif x == nil or x == "" then
return err("Empty dividend")
elseif not tonumber(x) then
if type(x) == 'string' and string.sub(x, 1, 1) == '<' then
return x
else
return err("Not a number: " .. x)
end
else
local z = x / y
if round then
return p._round(z, 0)
elseif precision then
return p._round(z, precision)
else
return z
end
end
end
--[[
Helper function that interprets the input numerically. If the
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
]]
function p._cleanNumber(number_string)
if type(number_string) == 'number' then
-- We were passed a number, so we don't need to do any processing.
return number_string, tostring(number_string)
elseif type(number_string) ~= 'string' or not number_string:find('%S') then
-- We were passed a non-string or a blank string, so exit.
return nil, nil;
end
-- Attempt basic conversion
local number = tonumber(number_string)
-- If failed, attempt to evaluate input as an expression
if number == nil then
local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)
if success then
number = tonumber(result)
number_string = tostring(number)
else
number = nil
number_string = nil
end
else
number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it.
number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs.
if number_string:find('^%-?0[xX]') then
-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.
number_string = tostring(number)
end
end
return number, number_string
end
--[[
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.
]]
local mt = { __index = function(t, k)
return function(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.
end
end }
return setmetatable(p, mt)
2bbe734d898299f65412963a3c1782e9fcc4d9ca
Template:Strong
10
208
472
2021-03-14T15:34:10Z
MrJaroslavik
18
wikitext
text/x-wiki
<strong {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
2b665c5a888ca8f341022ccbca66617352915475
Template:Asbox/styles.css
10
756
1687
2021-03-15T18:13:21Z
wikipedia>Paine Ellsworth
0
per edit request on talk page - hide page overflow
sanitized-css
text/css
/* {{pp-template}} */
/* Article stub message box styles */
.asbox {
position: relative;
overflow:hidden;
}
.asbox table {
background: transparent;
}
.asbox p {
margin: 0;
}
.asbox p + p {
margin-top: 0.25em;
}
.asbox-body {
font-style: italic;
}
.asbox-note {
font-size: smaller;
}
.asbox .navbar {
position: absolute;
top: -0.75em;
right: 1em;
display: none;
}
9f0904fdac11fd6eebd84c73d5680f09d19c9b5a
Template:Edit conflict
10
217
490
2021-03-17T18:22:05Z
MrJaroslavik
18
wikitext
text/x-wiki
<small>([[w:Help:Edit conflict|edit conflict]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
eb558263ebad66e81bbdde9479c936ab789b4443
Template:Code
10
229
516
2021-03-17T19:57:21Z
MrJaroslavik
18
wikitext
text/x-wiki
{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf
Template:Strong/doc
10
236
532
2021-03-17T20:00:35Z
MrJaroslavik
18
+
wikitext
text/x-wiki
{{Documentation subpage}}
== Usage ==
{| class="wikitable"
!Template !! Result
|-
|{{tlx|Strong}} || {{strong|Example text}}
|}
== See also ==
{{#lst:Template:Template list|inline-talk-templates}}
9f233bad1e32c07e57f879f52cefdf00fbbb245b
Template:Not watching
10
223
504
2021-03-17T20:26:38Z
MrJaroslavik
18
wikitext
text/x-wiki
<small>(I am not [[mediawikiwiki:Help:Watchlist|watching]] this page, so please [[Template:Ping/doc|ping me]] if you want my attention.)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
8cd9e9cb5cdc0597c26d6b827ad2a764272fc86e
Template:Minor planet
10
984
2164
2021-03-19T14:02:32Z
wikipedia>Anthony Appleyard
0
Anthony Appleyard moved page [[Template:Mp]] to [[Template:Minor planet]]: [[Special:Permalink/1013000047|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move
wikitext
text/x-wiki
{{#switch: {{{1}}}
| s =
| S = {{nowrap|S/{{{2}}} ({{{3}}}{{#if: {{{5|}}} |<sub>{{{4}}}</sub>) {{{5}}}|) {{{4}}}}}}}
| {{#expr: {{{1}}}*1 }} = {{nowrap|({{{1}}}) {{{2}}}{{#if: {{{3|}}} |<sub>{{{3}}}</sub>|}}}}
| #default = {{nowrap|{{{1}}}{{#if: {{{2|}}} |<sub>{{{2}}}</sub>|}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
853353b9192dc27e9ad940f8ffd53dfa024dd92e
Template:Mp
10
985
2166
2021-03-19T14:02:32Z
wikipedia>Anthony Appleyard
0
Anthony Appleyard moved page [[Template:Mp]] to [[Template:Minor planet]]: [[Special:Permalink/1013000047|Requested]] by Buidhe at [[WP:RM/TR]]: RM closed as move
wikitext
text/x-wiki
#REDIRECT [[Template:Minor planet]]
{{Redirect category shell|
{{R from move}}
}}
8ce86e91382eef3030101b778977c0f2311084fc
Template:Template link
10
9
13
2021-03-25T19:03:22Z
wikipedia>Izno
0
[[Wikipedia:Templates for discussion/Log/2021 March 18#Template:Tlu]] closed as keep ([[WP:XFDC#4.0.11|XFDcloser]])
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
Template:Pinged
10
218
492
2021-03-26T12:06:36Z
MrJaroslavik
18
wikitext
text/x-wiki
<small>([[Wikipedia:Notifications|pinged]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
a0c3480990f212de7bdf6319a34ee21eaa63171e
Template:Responding to ping
10
221
500
2021-03-26T12:11:41Z
MrJaroslavik
18
e
wikitext
text/x-wiki
<small>(<span style="color:#555;">responding to [[Wikipedia:Notifications|ping]]</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
385a033181f51764191d1e0869a00c37e566e037
Template:Small
10
103
522
2021-03-26T13:30:59Z
MrJaroslavik
18
e
wikitext
text/x-wiki
<span style="font-size: 85%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
f23637c47373ee160441b2c17d177a7473fd86d8
Template:Lua/doc
10
254
563
2021-03-26T13:53:43Z
meta>MrJaroslavik
0
+
wikitext
text/x-wiki
{{Documentation subpage}}
This template is used to show that templates have been converted to [[w:Lua (programming language)|Lua]]. It is placed at the top of the template's /doc page. It automatically adds the template to [[:Category:Lua-based templates]], or to one of its subcategories.
== Usage ==
; Basic : {{tlx|Lua|''module name''}}
; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}}
The first module name is required.
== See also ==
{{#lst:Template:Template list|utility-templates}}
3c648cadb41f91efa2ab1359a6bfe56734580fcd
Template:Yesno
10
12
496
19
2021-03-26T16:47:25Z
MrJaroslavik
18
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>{{Documentation}}[[Category:Utility templates]]</noinclude>
2f65f96436ffb94ac53eaa31f4b01118a2b75333
Template:Has short description
10
1352
2687
2021-03-29T18:21:45Z
w>MusikBot II
0
Protected "[[Template:Has short description]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:string2 |findpagetext |text={%{ *[Ss]hort description |plain=false |title={{{title|{{{1|}}} }}} }}<noinclude>
{{documentation}}
</noinclude>
87587209a436a4c02ef7564ffe868c4348cc6a3c
Template:Frac
10
1550
2885
2021-04-01T06:00:35Z
DannyS712
44
update redirect target
wikitext
text/x-wiki
#REDIRECT [[Template:Fraction]]
f1f0a8f5f566d2a42806b8bfed1033896a0e45e2
Template:Category see also/Category pair check
10
1581
2916
2021-04-05T07:12:15Z
BrownHairedGirl
49
{{!}}
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{#ifeq: {{NAMESPACE}} | Category |<!--
-->{{#if: {{#invoke:String|match|{{BASEPAGENAME}}|%d+[snrt][tdh]%-century.+$|ignore_errors=true}}<!--
-->|<!-- it's on a century category
-->{{#if: {{#invoke:String|match|{{{1|}}}|{{#invoke:String|match|{{BASEPAGENAME}}|-century.+$|ignore_errors=true}}|ignore_errors=true|plain=true}}<!--
-->|<!-- the link is to a similar century category
-->[[Category:Template Category see also used when Template Category pair probably should be]]<!--
-->}}<!--
-->}}<!--
-->}}</includeonly><noinclude>
{{doc|content=
Check whether [[Template:Category see also]] has been used when [[Template:Category pair]] probably should be use.
The test is:
#Is this page in the Category namespace?
#Does this page's title end in "nn(st{{!}}nd{{!}}rd{{!}}th)-century something"
#does the first linked cat's title end in the same "-century something" as the title of the page it is used on?
If the answer to all 3 is yes, then categorise the page in the hidden tracking category [[:Category:Template Category see also used when Template Category pair probably should be]]
}}</noinclude>
fb4997b39da2696034cc359b969ad8896937680b
Template:!xt
10
1226
2556
2021-04-05T10:10:56Z
Xaosflux
7
Changed protection level for "[[Template:!xt]]": reduced highly visible msg use, lower to TEP ([Edit=Require template editor access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad" style="font-family: Georgia, 'DejaVu Serif', serif; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<noinclude>
{{Documentation}}
</noinclude>
5c54359c619901a0b19422399dc9a3e324e02879
Template:Str ≥ len
10
1237
2571
2021-04-06T11:38:38Z
Elli
39
Undid revision 1016291968 by [[Special:Contributions/Elli|Elli]] ([[User talk:Elli|talk]]) wrong template, damn it!
wikitext
text/x-wiki
{{{{{|safesubst:}}}#ifexpr: {{{{{|safesubst:}}}#invoke:String|len|s={{{1|}}}}} >= {{{2|0}}} <noinclude><!-- str >= len --></noinclude>
| {{{3|}}}
| {{{4|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
30546d5d5d81a3efb26afb9d6cc182bdeb70eadc
Template:Flagicon
10
1173
2502
2021-04-06T23:46:15Z
w>Wbm1058
0
remove unnecessary specification
wikitext
text/x-wiki
<includeonly>{{safesubst<noinclude />:#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<noinclude><!--
--></noinclude>|<noinclude><!--
#Check for existence of Template: Country data foo before invoking it
--></noinclude>{{safesubst<noinclude />:#ifexist: Template: Country data {{{1|}}}<noinclude><!--
--></noinclude>|<noinclude><!--
# It exists, so proceed
--></noinclude>{{country data {{{1|}}}|flagicon/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude><!--
--></noinclude>|<noinclude><!--
# It doesn't exist, so do nothing
--></noinclude>}}<noinclude><!--
--></noinclude>|<noinclude><!--
# DEFAULT call Template: Country data {{{1|}}}
# with no prior checks
--></noinclude>{{country data {{{1|}}}|flagicon/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<noinclude><!--
# Track use where "Template:Country data Foo" does not exist
--></noinclude>{{safesubst<noinclude />:#ifexist: Template:Country data {{{1|}}}||{{safesubst<noinclude />:namespace detect showall
| 1 =
| 2 = [[Category:Flagicons with missing country data templates]]
| user = 1
| talk = 1
| other = 2
}}}}<noinclude><!--
--></noinclude>}}</includeonly>{{safesubst<noinclude />:#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using flagicon template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Flagicon]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | noredlink | size | variant }}<noinclude>
{{Documentation}}
</noinclude>
4ba00e607bb28194908c631e424736dd64374684
Template:Country data Lithuania
10
1214
2543
2021-04-10T12:19:16Z
w>Maiō T.
0
removing unnecessary link alias (basketball)
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Lithuania
| flag alias = Flag of Lithuania.svg
| flag alias-1918 = Flag of Lithuania 1918-1940.svg
| flag alias-1988 = Flag of Lithuania (1988-2004).svg
| flag alias-naval = Naval Ensign of Lithuania.svg
| link alias-naval = Lithuanian Naval Force
| flag alias-military=Flag of the Lithuanian Armed Forces.png
| link alias-military=Lithuanian Armed Forces
| flag alias-army = Flag of the Lithuanian Army.svg
| link alias-army = Lithuanian Land Force
| flag alias-navy=Flag of Lithuania (state).svg
| link alias-navy = Lithuanian Naval Force
| flag alias-air force=Air Force Ensign of Lithuania.svg
| link alias-air force=Lithuanian Air Force
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1918
| var2 = 1988
| redir1 = LTU
| related1 = Lithuanian SSR
</noinclude>
}}
ff73a63b7cb85165f1f72854a062d92b4a488078
Template:Infobox school/short description
10
1473
2808
2021-04-19T18:13:40Z
w>Trialpears
0
Combine two patterns, should almost certainly be cut down more, but not right now
wikitext
text/x-wiki
{{#if:{{Has short description}}
||{{#invoke:String|replace|source= <!--
=======Short description=======
-->{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ss]chool}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Hochschule}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Secondary school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Education in Canada}}{{#invoke:Is infobox in lead|main|[Hh]igh school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Secondary School}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Malaysia school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Malaysia School}}{{#invoke:Is infobox in lead|main|[iI]nfobox UK school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox US school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox secondary school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Public School}}{{#invoke:Is infobox in lead|main|[sS]chool infobox}}{{#invoke:Is infobox in lead|main|[Ii]nfobox middle school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox high school}}{{#invoke:Is infobox in lead|main|[Ii]nfobox School2}}{{#invoke:Is infobox in lead|main|[Ii]nfobox HighSchool}}{{#invoke:Is infobox in lead|main|[Ss]chool}}|{{#invoke:Type in location|main|<!--
===Type logic===
No refs, brs or templates-->{{#ifexpr:{{#invoke:String|len|{{#invoke:String|match|s={{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}}} < 40|{{#invoke:String2|sentence|{{trim|{{#invoke:String|match|s={{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}<!--
Add school to end--> {{#switch:{{#invoke:String|match|s={{#invoke:String|match|s=
{{delink|1={{{type}}}}}|pattern=[^<{;]*|nomatch=}}|pattern=[%a%d]*%s?$|nomatch=}}
|college
|school
|academy
|College
|School
|Academy=
|#default = school
}}}}}}|School}}<!--
===Location logic===
-->|{{comma separated entries
| 1 = {{#if:{{{city|}}}|{{{city|}}}}}
| 2 = {{#if:{{{county|}}}|{{{county}}}}}
| 3 = {{#if:{{{state|}}}|{{{state}}}}}
| 4 = {{#if:{{{province|}}}|{{{province}}}}}
| 5 = {{#if:{{{country|}}}|{{#ifexist:Template:Country data {{{country}}}|{{Getalias|{{{country}}}}}|{{{country}}}}}}}
}}|check-patterns = [Ss]chool;[Cc]ollege;[Aa]cademy;|full-loc=yes}}}}|pattern='"`uniq%-%-ref%-%d*%-qinu`"'|replace=|plain= false }}}}<noinclude>{{documentation|content={{lua|Module:String|Module:Is infobox in lead}}
This template is used for generating a short description for Infobox school.}}</noinclude>
acd568d953a92004b465ae1f9c0e6c0bc5c7724b
Template:Script/Arabic
10
1597
2932
2021-04-22T15:49:22Z
w>Great Brightstar
0
Add new parameter
wikitext
text/x-wiki
{{{{{|safesubst:}}}ifsubst|1=|2=<templatestyles src="Script/styles_arabic.css" />}}<span class="script-arabic script-Arab" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#ifeq: {{{no_rtl_mark|+}}} | {{{no_rtl_mark|-}}}||dir="rtl"}} style="font-size: {{{size|125%}}}; {{{style|}}}" {{{attributes|}}}>{{{1}}}</span>{{#ifeq: {{{no_rtl_mark|+}}} | {{{no_rtl_mark|-}}}||‎}}<noinclude>{{documentation}}</noinclude>
3a58c5f3d4a69db622440a76ed4b489dfe3fdbfe
Template:Lua sidebar/styles.css
10
1067
2332
2021-04-24T04:27:37Z
wikipedia>Izno
0
max-width
sanitized-css
text/css
.lua-sidebar {
width: auto;
max-width: 22em;
}
9984d36eb49fae70dd00527c993784d775409a6b
Template:Fraction
10
1551
2886
2021-04-27T19:20:10Z
w>Izno
0
use TemplateStyles for all fraction, not just sr implementation
wikitext
text/x-wiki
<templatestyles src="Fraction/styles.css" /><span class="frac" role="math">{{#if:{{{3|}}}<!-- if 3
-->|{{{1}}}<span class="sr-only">+</span><span class="num">{{{2}}}</span>⁄<span class="den">{{{3}}}</span><!-- then 1 2/3
-->|{{#if:{{{2|}}}<!-- elseif 2
-->|<span class="num">{{{1}}}</span>⁄<span class="den">{{{2}}}</span><!-- then 1/2
-->|{{#if:{{{1|}}}<!-- elseif 1
-->|<span class="num">1</span>⁄<span class="den">{{{1}}}</span><!-- then 1/1
-->|⁄<!-- else 0, a slash
-->}}<!-- endif 1
-->}}<!-- endif 2
-->}}<!-- endif 3
--></span><noinclude>
{{documentation}}
</noinclude>
32779636568aafb8675c6d968dc449c4f12ecdb2
Module:Citation/CS1/Whitelist/doc
828
889
1968
2021-04-28T15:24:37Z
wikipedia>Izno
0
match text
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This module contains a list of all parameters that [[Module:Citation/CS1]] knows about. Each parameter is assigned a state.
* '''true''': These parameters are valid and supported parameters
* '''false''': These parameters are deprecated but still supported
* '''{{'}}tracked{{'}}''': These parameters are valid and supported parameters tracked in an eponymous properties category.
* '''nil''': Parameters not present are not supported, or no longer supported.
The <code>basic_arguments</code> table is supported by all templates.
{{#lst:Module:Citation/CS1/doc|module_components_table}}
f600e3ad575307e19afcbe7dc3e978954fa94a9f
Template:Transwiki guide
10
587
1322
2021-05-02T22:04:59Z
wikipedia>DB1729
0
Reverted 1 edit by [[Special:Contributions/154.154.69.110|154.154.69.110]] ([[User talk:154.154.69.110|talk]]) to last revision by Mr. Stradivarius
wikitext
text/x-wiki
{{ombox
|style=border:#38C400 1px solid;
|image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]]
|text={{{text|This project or template has a [[Help:Transwiki guide|transwiki guide]] to help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template.<br/>See {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}} for instructions.}}}
|small={{{small|}}}
}}<includeonly>[[Category:Transwiki guide|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c25c9124a8e52dcec5a026adb2cc071776579ab7
Module:If preview/configuration
828
455
2558
2021-05-05T18:56:00Z
w>Izno
0
Protected "[[Module:If preview/configuration]]": match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
--[[
We perform the actual check for whether this is a preview here since
preprocessing is relatively expensive.
]]
local frame = mw.getCurrentFrame()
local function is_preview()
local revision_id = frame:preprocess('{{REVISIONID}}')
-- {{REVISIONID}} is usually the empty string when previewed.
-- I don't know why we're checking for nil but hey, maybe someday things
-- would have broken
return revision_id == nil or revision_id == ''
end
local function templatestyles()
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:If preview/styles.css' }
}
end
return {
preview = is_preview(),
templatestyles = templatestyles(),
warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>',
missing_warning = 'The template has no warning text. Please add a warning.'
}
3edc8897c51a61b9e710b2a4d9eb657b3c2f1034
Module:If preview/styles.css
828
456
2559
2021-05-05T18:56:47Z
w>Izno
0
pp
sanitized-css
text/css
/* {{pp|small=yes}} */
.preview-warning {
font-style: italic;
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
color: red;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.preview-warning + link + .preview-warning {
margin-top: -0.5em;
}
8b79ffc4853d424a805b084de00030e04bbd573e
Module:If preview
828
453
2557
2021-05-05T19:01:42Z
w>Izno
0
merge in functionality from [[Module:Preview warning]] and add TemplateStyles, remove p.boolean as not necessary, move some stuff into a cfg page, and don't return temporaries in p.main, remove use
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:If preview/configuration')
--[[
main
This function returns either the first argument or second argument passed to
this module, depending on whether the page is being previewed.
]]
function p.main(frame)
if cfg.preview then
return frame.args[1] or ''
else
return frame.args[2] or ''
end
end
--[[
pmain
This function returns either the first argument or second argument passed to
this module's parent (i.e. template using this module), depending on whether it
is being previewed.
]]
function p.pmain(frame)
return p.main(frame:getParent())
end
local function warning_text(warning)
return mw.ustring.format(
cfg.warning_infrastructure,
cfg.templatestyles,
warning
)
end
function p._warning(args)
local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or ''
if warning == '' then
return warning_text(cfg.missing_warning)
end
if not cfg.preview then return '' end
return warning_text(warning)
end
--[[
warning
This function returns a "preview warning", which is the first argument marked
up with HTML and some supporting text, depending on whether the page is being previewed.
disabled since we'll implement the template version in general
]]
--function p.warning(frame)
-- return p._warning(frame.args)
--end
--[[
warning, but for pass-through templates like {{preview warning}}
]]
function p.pwarning(frame)
return p._warning(frame:getParent().args)
end
return p
9a92196d0001b8016f2501aedfadcc3adcb974ef
Module:Parameter validation/default config
828
1253
2587
2021-05-06T23:30:07Z
w>Izno
0
add dependency to if preview
Scribunto
text/plain
function create(cat, msg)
return mw.ustring.format("{{main other|[[Category:Pages using tname_naked with %s parameters]]}}", cat) .. create_message(msg)
end
function create_message(msg)
return require('Module:If preview')._warning({
mw.ustring.format("[[templatename]] used with %s.", msg)
})
end
local options = {
["undeclared"] = create("unknown", 'unknown parameter(s): paramname'),
["deprecated"] = create("deprecated", 'deprecated parameter(s): paramname'),
["duplicate"] = create("duplicate", 'duplicate parameter(s): paramandvalue'),
["doc-subpage"] = "doc",
}
local result = {
[0] = options,
[2] = options,
[4] = options,
[6] = options,
[10] = options,
[12] = options,
[14] = options,
}
return result
d0fc6166846893f2e0723a5fb53a574cd393a047
Template:Country data Finland
10
1208
2537
2021-05-07T07:41:42Z
w>Skjoldbro
0
air force
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Finland
| flag alias = Flag of Finland.svg
| flag alias-grand duchy = Flag of Russia.svg
| flag alias-1809 = Flag of Russia.svg
| flag alias-1917 = Flag of Finland 1918 (state).svg
| flag alias-1918 = Flag of Finland (1918-1920).svg
| flag alias-1920 = Flag of Finland.svg
| flag alias-state = Flag of Finland (state).svg
| flag alias-state-1918 = Flag of Finland 1918-1920 (State).svg
| flag alias-state-1920 = Flag of Finland 1920-1978 (State).svg
| flag alias-naval = Military Flag of Finland.svg
| border-naval =
| flag alias-naval-1918 = Flag of Finland 1918-1920 (Military).svg
| border-naval-1918 =
| flag alias-naval-1920 = Flag of Finland 1920-1978 (Military).svg
| border-naval-1920 =
| link alias-naval = Finnish Navy
| flag alias-navy = Naval Jack of Finland.svg
| link alias-navy = Finnish Navy
| link alias-air force = Finnish Air Force
| link alias-army = Finnish Army
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = grand duchy
| var2 = 1809
| var3 = 1917
| var4 = 1918
| var5 = 1920
| var6 = state
| var7 = state-1918
| var8 = state-1920
| var9 = naval-1918
| var10 = naval-1920
| redir1 = FIN
| related1 = Åland
</noinclude>
}}
2b032fd45283601b72bcda96d62ac73a3218f5ec
Module:Check for clobbered parameters
828
1234
2568
2021-05-07T15:16:54Z
w>Izno
0
use if preview
Scribunto
text/plain
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
local checknested = isnotempty(args['nested'])
local delimiter = isnotempty(args['delimiter']) and args['delimiter'] or ';'
local argpairs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
local plist = mw.text.split(v, delimiter)
local pfound = {}
local count = 0
for ii, vv in ipairs(plist) do
vv = trim(vv)
if checknested and pargs[vv] or isnotempty(pargs[vv]) then
count = count + 1
table.insert(pfound, vv)
end
end
if count > 1 then
table.insert(argpairs, pfound)
end
end
end
local warnmsg = {}
local res = ''
local cat = ''
if args['cat'] and mw.ustring.match(args['cat'],'^[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]:') then
cat = args['cat']
end
local template = args['template'] and ' in ' .. args['template'] or ''
if #argpairs > 0 then
for i, v in ipairs( argpairs ) do
table.insert(
warnmsg,
mw.ustring.format(
'Using more than one of the following parameters%s: <code>%s</code>.',
template,
table.concat(v, '</code>, <code>')
)
)
if cat ~= '' then
res = res .. '[[' .. cat .. '|' .. (v[1] == '' and ' ' or '') .. v[1] .. ']]'
end
end
end
if #warnmsg > 0 then
res = require('Module:If preview')._warning({
table.concat(warnmsg, '<br>')
}) .. res
end
return res
end
return p
2d18fb6802fa261d88a0e135ab147ab9f062acde
Module:Parameter validation
828
1252
2586
2021-05-08T15:21:49Z
w>ProcrastinatingReader
0
doc was moved into actual doc page
Scribunto
text/plain
local util = {
empty = function( s )
return s == nil or type( s ) == 'string' and mw.text.trim( s ) == ''
end
,
extract_options = function ( frame, optionsPrefix )
optionsPrefix = optionsPrefix or 'options'
local options, n, more = {}
if frame.args['module_options'] then
local module_options = mw.loadData( frame.args['module_options'] )
if type( module_options ) ~= 'table' then return {} end
local title = mw.title.getCurrentTitle()
local local_ptions = module_options[ title.namespace ] or module_options[ title.nsText ] or {}
for k, v in pairs( local_ptions ) do options[k] = v end
end
repeat
ok, more = pcall( mw.text.jsonDecode, frame.args[optionsPrefix .. ( n or '' )] )
if ok and type( more ) == 'table' then
for k, v in pairs( more ) do options[k] = v end
end
n = ( n or 0 ) + 1
until not ok
return options
end
,
build_namelist = function ( template_name, sp )
local res = { template_name }
if sp then
if type( sp ) == 'string' then sp = { sp } end
for _, p in ipairs( sp ) do table.insert( res, template_name .. '/' .. p ) end
end
return res
end
,
table_empty = function( t ) -- normally, test if next(t) is nil, but for some perverse reason, non-empty tables returned by loadData return nil...
if type( t ) ~= 'table' then return true end
for a, b in pairs( t ) do return false end
return true
end
,
}
local function _readTemplateData( templateName )
local title = mw.title.makeTitle( 0, templateName )
local templateContent = title and title.exists and title:getContent() -- template's raw content
local capture = templateContent and mw.ustring.match( templateContent, '<templatedata%s*>(.*)</templatedata%s*>' ) -- templatedata as text
-- capture = capture and mw.ustring.gsub( capture, '"(%d+)"', tonumber ) -- convert "1": {} to 1: {}. frame.args uses numerical indexes for order-based params.
local trailingComma = capture and mw.ustring.find( capture, ',%s*[%]%}]' ) -- look for ,] or ,} : jsonDecode allows it, but it's verbotten in json
if capture and not trailingComma then return pcall( mw.text.jsonDecode, capture ) end
return false
end
local function readTemplateData( templateName )
if type( templateName ) == 'string' then
templateName = { templateName, templateName .. '/' .. docSubPage }
end
if type( templateName ) == "table" then
for _, name in ipairs( templateName ) do
local td, result = _readTemplateData( name )
if td then return result end
end
end
return nil
end
-- this is the function to be called by other modules. it expects the frame, and then an optional list of subpages, e.g. { "Documentation" }.
-- if second parameter is nil, only tempalte page will be searched for templatedata.
function calculateViolations( frame, subpages )
-- used for parameter type validy test. keyed by TD 'type' string. values are function(val) returning bool.
local type_validators = {
['number'] = function( s ) return mw.language.getContentLanguage():parseFormattedNumber( s ) end
}
function compatible( typ, val )
local func = type_validators[typ]
return type( func ) ~= 'function' or util.empty( val ) or func( val )
end
local t_frame = frame:getParent()
local t_args, template_name = t_frame.args, t_frame:getTitle()
template_name = mw.ustring.gsub( template_name, '/sandbox', '', 1 )
local td_source = util.build_namelist( template_name, subpages )
if frame.args['td_source'] then
table.insert(td_source, frame.args['td_source'])
end
local templatedata = readTemplateData( td_source )
local td_params = templatedata and templatedata.params
local all_aliases, all_series = {}, {}
if not td_params then return { ['no-templatedata'] = { [''] = '' } } end
-- from this point on, we know templatedata is valid.
local res = {} -- before returning to caller, we'll prune empty tables
-- allow for aliases
for x, p in pairs( td_params ) do for y, alias in ipairs( p.aliases or {} ) do
p['primary'] = x
td_params[x] = p
all_aliases[alias] = p
if tonumber(alias) then all_aliases[tonumber(alias)] = p end
end end
-- handle undeclared and deprecated
local already_seen = {}
local series = frame.args['series']
for p_name, value in pairs( t_args ) do
local tp_param, noval, numeric, table_name = td_params[p_name] or all_aliases[p_name], util.empty( value ), tonumber( p_name )
local hasval = not noval
if not tp_param and series then -- 2nd chance. check to see if series
for s_name, p in pairs(td_params) do
if mw.ustring.match( p_name, '^' .. s_name .. '%d+' .. '$') then
-- mw.log('found p_name '.. p_name .. ' s_name:' .. s_name, ' p is:', p) debugging series support
tp_param = p
end -- don't bother breaking. td always correct.
end
end
if not tp_param then -- not in TD: this is called undeclared
-- calculate the relevant table for this undeclared parameter, based on parameter and value types
table_name =
noval and numeric and 'empty-undeclared-numeric' or
noval and not numeric and 'empty-undeclared' or
hasval and numeric and 'undeclared-numeric' or
'undeclared' -- tzvototi nishar.
else -- in td: test for deprecation and mistype. if deprecated, no further tests
table_name = tp_param.deprecated and hasval and 'deprecated'
or tp_param.deprecated and noval and 'empty-deprecated'
or not compatible( tp_param.type, value ) and 'incompatible'
or not series and already_seen[tp_param] and hasval and 'duplicate'
if hasval and table_name ~= 'duplicate' then
already_seen[tp_param] = p_name
end
end
-- report it.
if table_name then
res[table_name] = res[table_name] or {}
if table_name == 'duplicate' then
local primary_param = tp_param['primary']
local primaryData = res[table_name][primary_param]
if not primaryData then
primaryData = {}
table.insert(primaryData, already_seen[tp_param])
end
table.insert(primaryData, p_name)
res[table_name][primary_param] = primaryData
else
res[table_name][p_name] = value
end
end
end
-- check for empty/missing parameters declared "required"
for p_name, param in pairs( td_params ) do
if param.required and util.empty( t_args[p_name] ) then
local is_alias
for _, alias in ipairs( param.aliases or {} ) do is_alias = is_alias or not util.empty( t_args[alias] ) end
if not is_alias then
res['empty-required'] = res['empty-required'] or {}
res['empty-required'][p_name] = ''
end
end
end
mw.logObject(res)
return res
end
-- wraps report in hidden frame
function wrapReport(report, template_name, options)
mw.logObject(report)
if util.empty( report ) then return '' end
local naked = mw.title.new( template_name )['text']
naked = mw.ustring.gsub(naked, 'Infobox', 'infobox', 1)
report = ( options['wrapper-prefix'] or "<div class = 'paramvalidator-wrapper'><span class='paramvalidator-error'>" )
.. report
.. ( options['wrapper-suffix'] or "</span></div>" )
report = mw.ustring.gsub( report, 'tname_naked', naked )
report = mw.ustring.gsub( report, 'templatename', template_name )
return report
end
-- this is the "user" version, called with {{#invoke:}} returns a string, as defined by the options parameter
function validateParams( frame )
local options, report, template_name = util.extract_options( frame ), '', frame:getParent():getTitle()
local ignore = function( p_name )
for _, pattern in ipairs( options['ignore'] or {} ) do
if mw.ustring.match( p_name, '^' .. pattern .. '$' ) then return true end
end
return false
end
local replace_macros = function( error_type, s, param_names )
function concat_and_escape( t , sep )
sep = sep or ', '
local s = table.concat( t, sep )
return ( mw.ustring.gsub( s, '%%', '%%%%' ) )
end
if s and ( type( param_names ) == 'table' ) then
local k_ar, kv_ar = {}, {}
for k, v in pairs( param_names ) do
table.insert( k_ar, k )
if type(v) == 'table' then
v = table.concat(v, ', ')
end
if error_type == 'duplicate' then
table.insert( kv_ar, v)
else
table.insert( kv_ar, k .. ': ' .. v)
end
end
s = mw.ustring.gsub( s, 'paramname', concat_and_escape( k_ar ) )
s = mw.ustring.gsub( s, 'paramandvalue', concat_and_escape( kv_ar, ' AND ' ) )
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) ~= "" then
s = mw.ustring.gsub( s, "<div.*<%/div>", "", 1 )
end
end
return s
end
local report_params = function( key, param_names )
local res = replace_macros( key, options[key], param_names )
res = frame:preprocess(res or '')
report = report .. ( res or '' )
return res
end
-- no option no work.
if util.table_empty( options ) then return '' end
-- get the errors.
local violations = calculateViolations( frame, options['doc-subpage'] )
-- special request of bora: use skip_empty_numeric
if violations['empty-undeclared-numeric'] then
for i = 1, tonumber( options['skip-empty-numeric'] ) or 0 do
violations['empty-undeclared-numeric'][i] = nil
end
end
-- handle ignore list, and prune empty violations - in that order!
local offenders = 0
for name, tab in pairs( violations ) do
-- remove ignored parameters from all violations
for pname in pairs( tab ) do if ignore( pname ) then tab[pname] = nil end end
-- prune empty violations
if util.table_empty( tab ) then violations[name] = nil end
-- WORK IS DONE. report the errors.
-- if report then count it.
if violations[name] and report_params( name, tab ) then offenders = offenders + 1 end
end
if offenders > 1 then report_params( 'multiple' ) end
if offenders ~= 0 then report_params( 'any' ) end -- could have tested for empty( report ), but since we count them anyway...
return wrapReport(report, template_name, options)
end
return {
['validateparams'] = validateParams,
['calculateViolations'] = calculateViolations,
['wrapReport'] = wrapReport
}
289097a36b9577156e033783df8886344de39bba
Module:Convert/helper
828
1411
2746
2021-05-11T13:58:57Z
w>Izno
0
remove visualhide version
Scribunto
text/plain
-- This module provides some functions to prepare template parameters
-- for use with Template:Convert.
-- This module is not used by Template:Convert or Module:Convert.
local function stripToNil(text)
-- If text is a non-empty string, return its trimmed content,
-- otherwise return nothing (empty string or not a string).
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
-- Remove commas and references (any strip markers) from a number.
-- First usage in Template:Infobox_UK_place/dist (June 2018)
local function cleanNumber(frame)
local args = frame.args
local text = stripToNil(args[1]) or ''
if text == '' or tonumber(text) then
return text
end
return mw.text.killMarkers(text):gsub(',', '')
end
-- Format regular input with fraction (MOS-confirmant) into Convert-format "12+3/8" ("+" added).
-- First usage in Template:NFL_predraft (August 2017)
local function number(frame)
--[[ Preprocess a template parameter to translate a number to be used as
input for {{convert}}.
{{#invoke:convert/helper|number|12 3/8}} → 12+3/8
Input Output
12 12
12 3/8 12+3/8
{{frac|12|3|8}} 12+3/8
12{{frac|3|8}} 12+3/8
12⅜ 12+3/8
Template:Fraction redirects to Template:Frac so either may be used in the input.
]]
local args = frame.args
local text = stripToNil(args[1]) or ''
if text == '' or tonumber(text) then
return text -- examples: '', '12', '12.3', '12.3e4', or negative
end
text = text:gsub(' ', ' '):gsub(' +', ' '):gsub(' *%+ *', '+'):gsub('⁄', '/'):gsub('⁄', '/')
local integer, numerator, denominator, rest
-- Look for a fraction of form '12 3/8' or '12+3/8' or '3/8'.
integer, numerator, denominator = text:match('^(%d+)[ +](%d+)/(%d+)$')
if integer then
return integer .. '+' .. numerator .. '/' .. denominator
end
numerator, denominator = text:match('^(%d+)/(%d+)$')
if numerator then
return numerator .. '/' .. denominator
end
-- Look for an expanded fraction such as the result of {{frac|12|3|8}} or 12{{frac|3|8}} or {{frac|3|8}}.
numerator, denominator = text:match('<sup>(%d+)</sup>/<sub>(%d+)</sub></span>')
if numerator then
integer = text:match('(%d+)<span class="sr-only">') or
text:match('^(%d+)%s*​<span') or -- Template:Frac outputs zwsp since December 2017
text:match('^(%d+)%s*<span')
return (integer and (integer .. '+') or '') .. numerator .. '/' .. denominator
end
-- Look for a fraction of form '12¾' or '¾'.
local fractions = {
['½'] = '1/2',
['⅓'] = '1/3',
['⅔'] = '2/3',
['¼'] = '1/4',
['¾'] = '3/4',
['⅛'] = '1/8',
['⅜'] = '3/8',
['⅝'] = '5/8',
['⅞'] = '7/8',
}
integer, rest = text:match('^(%d*)%s*(.*)')
local expand = fractions[rest]
if expand then
return (integer == '' and integer or (integer .. '+')) .. expand
end
return text
end
return {
number = number,
cleanNumber = cleanNumber,
}
4957c76eda25bacea18a2116722dca57131580d5
Template:Cnote2 End
10
1601
2936
2021-05-13T11:49:22Z
w>WOSlinker
0
re-order noincluded tags
wikitext
text/x-wiki
<noinclude><div><ol></noinclude></ol></div><noinclude>
{{Documentation}}
</noinclude>
b0e1cb6018b2c6cdab0c447b54c801bf3ed6dc72
Template:Glossary end
10
622
1402
2021-05-14T06:45:23Z
wikipedia>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ
0
Balance tag using noinclude to remove page from Linter report
wikitext
text/x-wiki
<noinclude><dl></noinclude></dl><!--end glossary--><noinclude>
{{Documentation|Template:Glossary/doc}}<!--Categories go in the /doc subpage.-->
</noinclude>
ed16ee7194c9e6e05c38ab0d43496928c52bc915
Template:Endflatlist
10
1055
2308
2021-05-14T06:57:00Z
wikipedia>WOSlinker
0
fix lint
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{documentation|Template:Flatlist/doc}}
</noinclude>
05fe2bc6790622a0a6caf09151a0c0640fed63dd
Template:Endplainlist
10
611
1380
2021-05-14T07:01:30Z
wikipedia>WOSlinker
0
fix lint
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{documentation|Template:Plainlist/doc}}
</noinclude>
d545c41582328dd4f197e2b1848c8ad7392b92e0
Template:Term
10
623
1404
2021-05-15T23:58:30Z
wikipedia>Sbb
0
Added "noid=" parameter to suppress creation of "id="
wikitext
text/x-wiki
<dt class="glossary {{{class|}}}" {{#if: {{{noid|}}}||id="{{#invoke:delink|delink|{{#invoke:String|replace|source={{lc:{{{id|{{{term|{{{1}}}}}}}}}}}|"|<!--blank to strip out double quote mark-->}}}}"}} style="{{#if:{{{multi|}}}|margin-top: -0.2em;|margin-top: 0.4em; {{{style|}}}}}">{{#if:{{{nondefining|}}}||<dfn class="glossary">}}{{{content|{{{2|{{{term|{{{1}}}}}}}}}}}}{{#if:{{{nondefining|}}}||</dfn>}}</dt><noinclude>
{{Documentation}}
</noinclude>
c13cf2ed1b2adb71abf978313b6bfe8f1e58d7ef
Template:Visible anchor/styles.css
10
1244
2578
2021-05-18T04:27:30Z
Pppery
6
Adding protection template
sanitized-css
text/css
/* {{pp-template}} */
.vanchor > :target ~ .vanchor-text {
background-color: #b1d2ff;
}
0bc96886f41e0799b8dbfa48836892c2bb7de792
Template:Infobox musical artist/color
10
1373
2708
2021-05-23T01:54:23Z
w>Jonesey95
0
re-disable coloring per [[MOS:COLOR]] accessibility guideline and discussion at talk page
wikitext
text/x-wiki
<includeonly>{{#switch: {{{1|}}}
<!--| solo_singer = #f0e68c <!-- khaki -->
<!--| non_vocal_instrumentalist = #f4bf92 <!-- unnamed pale orange -->
<!--| non_performing_personnel = #bfe0bf <!-- unnamed pale green -->
<!--| group_or_band = #b0c4de <!-- lightsteelblue -->
<!--| classical_ensemble = #b0e0e6 <!-- PowderBlue -->
<!--| temporary = #d3d3d3 <!-- LightGrey -->
| #b0c4de
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
ae2ea5c9efb77ed141edfca8b0ed3cb2041d6acf
Template:En dash range
10
168
389
2021-05-25T11:47:03Z
wikipedia>GKFX
0
Use module:plain text directly
wikitext
text/x-wiki
{{{1}}}{{#ifeq:{{#invoke:String|find|source={{#invoke:Plain text|main|{{{1}}}{{{2}}}}}|target=[%s–—-]|plain=false}}|0|–| – }}{{{2}}}<noinclude>
{{Documentation}}
</noinclude>
4f0bde90a2efc3a10317f528ce19b0e0fd212808
Template:GeoTemplate/styles.css
10
1689
3149
2021-05-25T16:38:27Z
wikipedia>Dennis Bratland
0
Reverted 1 edit by [[Special:Contributions/5.251.174.129|5.251.174.129]] ([[User talk:5.251.174.129|talk]]) to last revision by Jc86035
sanitized-css
text/css
.geoservices tr:nth-child(odd) {
background: #f0f0f0;
}
1202731d4eca686823cf4e9af4933104fe73ccb6
Template:Wikipedia how-to
10
146
341
2021-05-26T12:15:05Z
wikipedia>PK2
0
bypassing redirects
wikitext
text/x-wiki
{{ombox
| type = notice
| style = {{#if:{{{style|}}} |margin:0 auto;width:80%;{{{style}}} }}
| image = [[File:Twemoji 1f527.svg|30x30px]]
| imageright = {{#if:{{{shortcut|{{{shortcut1|{{{sc1|{{{1<includeonly>|</includeonly>}}}}}}}}}}}} |{{Shortcut|{{{shortcut|{{{shortcut1|{{{sc1|{{{1}}}}}}}}}}}}|{{{shortcut2|{{{sc2|{{{2|}}}}}}}}}||{{{shortcut3|{{{sc3|{{{3|}}}}}}}}}|{{{shortcut4|{{{sc4|{{{4|}}}}}}}}}||{{{shortcut5|{{{sc5|{{{5|}}}}}}}}}<noinclude>|category=no</noinclude>}} }}
| text = <div style="padding-top: 6px; padding-bottom: 5px;">'''This help page is a [[Wikipedia:Project namespace#Wikipedia how-to and information pages|how-to guide]].'''<br><div style="font-size: 90%;">It details processes or procedures of <!--
-->{{#if:{{{page|{{{pages|{{{interprets|}}}}}}}}}
| <!--doesn't handle multiple items--> {{#ifexist:{{{page|{{{pages|{{{interprets}}}}}}}}} |[[{{{page|{{{pages|{{{interprets}}}}}}}}}]] |{{{page|{{{pages|{{{interprets}}}}}}}}}}}
| some aspect(s) of Wikipedia's norms and practices
}}. It is not one of [[Wikipedia:Policies and guidelines|Wikipedia's policies or guidelines]], and may reflect varying levels of [[Wikipedia:Consensus|consensus]] and [[Wikipedia:Consensus#Achieving consensus|vetting]].</div></div>
}}{{#if: {{{nocat|{{{demo|}}}}}}||<includeonly>{{Namespace detect
| wikipedia = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}}
| help = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}}
| user = [[Category:User essays]]{{{category|}}}
}}
</includeonly>}}<noinclude>
{{Documentation|content=
{{Information page/doc |howto=y}}
}}
</noinclude>
f95ec6e4a0105cd44573344bb11ca768408c3862
Template:Markup/row
10
582
1312
2021-05-27T17:27:33Z
wikipedia>Altercari
0
changing background colour to match <pre>
wikitext
text/x-wiki
<noinclude>{| style="border-width:medium;"</noinclude><includeonly>{{#if:{{{c1|value}}}| 
{{!-}}
{{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:9px 5px 5px; vertical-align:top;"{{!}} <!--
-->{{#tag:pre |{{{c1|[markup]}}}|style="margin:0;border:none;padding:0; word-wrap:break-word; white-space:-moz-pre-wrap;white-space:-o-pre-wrap;white-space:-pre-wrap;white-space:pre-wrap; {{{c1style|}}}"}}
{{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:5px; vertical-align:top;"{{!}} <!--
--><div style="{{{c2style|}}}">
{{{c2|[''rendering'']}}}
</div>
}}</includeonly><!--
--><noinclude>
|-
|style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"|
|style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"|
|-
|}</noinclude>
2636425c7478cebf61528d5eb4cab52b8e695ec9
Module:Category see also
828
1582
2917
2021-06-02T21:14:44Z
w>Fayenatic london
0
better without the colon before "the categories"
Scribunto
text/plain
-- This module implements {{Category see also}}
local mHatnote = require('Module:Hatnote')
local p = {}
local function makeWikitextError(msg)
return string.format(
'<strong class="error">Error: %s ([[Template:Category see also]])</strong>',
msg
)
end
-- Gets the length of the sequence seq. Usually this should be done with the #
-- operator, but we need to work with tables that get their values through an
-- __index metamethod.
local function getSequenceLength(seq)
local length = 0
for i in ipairs(seq) do
length = i
end
return length
end
-- Given a table of options, returns a function that formats categories for
-- those options.
--
-- Options:
-- project - a project code such as "fr" (for the French Wikipedia)
-- showPrefix - a boolean value for whether to show the "Category:" prefix
-- (and the project prefix if specified)
--
-- This is implemented as a function generator rather than a simple function
-- so that we can just process the options once, instead of every time we
-- generate a category.
local function newCategoryLinker(options)
local formatString
if options.project then
if options.showPrefix then
formatString = '[[:' .. options.project .. ':Category:%s]]'
else
formatString = '[[:' .. options.project .. ':Category:%s|%s]]'
end
else
if options.showPrefix then
formatString = '[[:Category:%s]]'
else
formatString = '[[:Category:%s|%s]]'
end
end
return function (category)
local title = mw.title.new(category)
local pageName, display
if not title then
-- category is not a valid title, usually because of invalid
-- characters like < or [. Raise an error and suppress the stack
-- level information so that we can catch it and format the error
-- message as wikitext.
error(string.format(
"'%s' is not a valid category name",
category
), 0)
elseif title.namespace == 14 then -- Category namespace
pageName = title.text
display = title.text
else
pageName = title.prefixedText
display = category
end
-- We can get away with using two arguments even when
-- options.showDisplay is false, as string.format ignores extra
-- arguments as long as there is an argument for each flag in the
-- format string.
return formatString:format(pageName, display)
end
end
function p._main(args)
local nLinks = getSequenceLength(args)
if nLinks < 1 then
return makeWikitextError('at least one parameter required')
end
local makeCategoryLink = newCategoryLinker{
project = args.project,
showPrefix = nLinks == 1,
}
local links = {}
for i, cat in ipairs(args) do
local success, categoryLink = pcall(makeCategoryLink, cat)
if success then
links[i] = categoryLink
else
-- If there was an error, then categoryLink is the error message.
return makeWikitextError(categoryLink)
end
end
local formatString
if nLinks == 1 then
formatString = '%s: %s'
else
formatString = '%s the categories %s'
end
-- Don't output a comma before the "and" if we have only two links.
local conjunction
if nLinks == 2 then
conjunction = ' and '
else
conjunction = ', and '
end
local hatnoteText = formatString:format(
args.LABEL or 'See also',
mw.text.listToText(links, ', ', conjunction)
)
return mHatnote._hatnote(hatnoteText, {selfref = true})
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Category see also',
})
return p._main(args)
end
return p
c169a2ec75b2cf75797fd60734063ae10cb9e6df
Template:Category link with count
10
67
129
2021-06-11T18:13:44Z
wikipedia>GKFX
0
Support wider range of (valid) input format
wikitext
text/x-wiki
[[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!--
-->]] ({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude>
{{Documentation}}
</noinclude>
f93f1540b8c157703bd6d24ae35c35bef745981d
Template:Spaced en dash
10
1027
2252
2021-06-13T13:09:03Z
wikipedia>Plastikspork
0
[[Wikipedia:Templates for discussion/Log/2021 June 5#Template:Spaced en dash]] closed as keep ([[WP:XFDC#4.0.12|XFDcloser]])
wikitext
text/x-wiki
– <noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
235afe8e7aca71d984c1bba5d8c96db414594b53
Template:Min
10
1372
2707
2021-06-13T13:59:10Z
w>Plastikspork
0
Add safesubst:
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:Math|min}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
bff49f508be41713bee8292bdec4f87351d8bf66
Template:Str find
10
1449
2784
2021-06-13T14:13:03Z
w>Plastikspork
0
Add safesubst:
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|str_find|source={{{1|}}}|{{{2|}}}}}<noinclude>
{{documentation}}</noinclude>
7d00c28a988f56cba96c826e8c50fff28d8e1a28
Template:Campaignbox
10
1496
2831
2021-06-14T01:38:04Z
w>Plastikspork
0
Undid revision 1028444717 by [[Special:Contributions/Mathglot|Mathglot]] ([[User talk:Mathglot|talk]]) It's already there!
wikitext
text/x-wiki
<includeonly>{{Military navigation
|name = {{#if:{{{raw_name|}}} |{{{raw_name|}}} |{{#if:{{{title|}}} |{{{name|}}} |}} }}
|state = {{{state|}}}
|border = {{{border|}}}
|title = <span style="line-height:1.6em">{{#if:{{{title|}}}|{{{title}}}|{{{name}}}}}</span>
|bodyclass = {{{bodyclass|}}}
|listclass = {{{listclass|}}}
|list1 = {{{battles|}}}
|below = {{{notes|}}}
}}{{#ifeq:{{NAMESPACE}}|Template|[[Category:Campaignbox templates]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
bd5acf07aa1526d63d10975ff20fe9d70de2f838
Template:Infobox settlement/columns
10
1439
2774
2021-06-14T22:57:30Z
w>Izno
0
templatestyles
wikitext
text/x-wiki
<templatestyles src="Infobox settlement/columns/styles.css"/>
<div class="ib-settlement-cols">
<div class="ib-settlement-cols-row">{{#if:{{{0|}}}
|<!-- if 0
-->{{#if:{{{1|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}
|<!-- if 0 and (1 or 2 or 3 or 4 or 5)
--><div class="ib-settlement-cols-cellt">
{{#if:{{{1|}}}|<div>{{{1}}}</div>}}
{{#if:{{{2|}}}|<div>{{{2}}}</div>}}
{{#if:{{{3|}}}|<div>{{{3}}}</div>}}
{{#if:{{{4|}}}|<div>{{{4}}}</div>}}
{{#if:{{{5|}}}|<div>{{{5}}}</div>}}
</div>
}}<div class="ib-settlement-cols-cellt">{{{0}}}</div>
|<!-- if not 0
-->{{#ifexpr:({{#if:{{{1|}}}|1|0}}+{{#if:{{{2|}}}|1|0}}+{{#if:{{{3|}}}|1|0}}+{{#if:{{{4|}}}|1|0}}) > 2
|<!-- if more than two images
-->{{#if:{{{1|}}}
|<div class="ib-settlement-cols-cell">{{{1}}}</div>{{#if:{{{2|}}}||</div></div><div class="ib-settlement-cols"><!-- TODO: The "3" element case currently produces two div-tables, which is non-optimal, but someone else should figure out how to fix it; 4 and 2 cases output as one "table". --><div class="ib-settlement-cols-row">}}
}}{{#if:{{{2|}}}
|<div class="ib-settlement-cols-cell">{{{2}}}</div>{{#if:{{{1|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}}
}}</div><div class="ib-settlement-cols-row">{{#if:{{{3|}}}
|{{#if:{{{4|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}}<div class="ib-settlement-cols-cell">{{{3}}}</div>
}}{{#if:{{{4|}}}
|{{#if:{{{3|}}}||</div></div><div class="ib-settlement-cols"><div class="ib-settlement-cols-row">}}<div class="ib-settlement-cols-cell">{{{4}}}</div>
}}
|<!-- if two or fewer images
-->{{#if:{{{1|}}}|<div class="ib-settlement-cols-cell">{{{1}}}</div>}}<!--
-->{{#if:{{{2|}}}|<div class="ib-settlement-cols-cell">{{{2}}}</div>}}<!--
-->{{#if:{{{3|}}}|<div class="ib-settlement-cols-cell">{{{3}}}</div>}}<!--
-->{{#if:{{{4|}}}|<div class="ib-settlement-cols-cell">{{{4}}}</div>}}
}}
}}</div></div><noinclude>
{{documentation}}
</noinclude>
bdd926fcf77e5f0f9f899ac6b2e23cd7efc8584e
Template:Infobox settlement/columns/styles.css
10
1440
2775
2021-06-14T22:58:40Z
w>Izno
0
Protected "[[Template:Infobox settlement/columns/styles.css]]": [[WP:High-risk templates|Highly visible template]]: match parent ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-settlement-cols {
text-align: center;
display: table;
width: 100%;
}
.ib-settlement-cols-row {
display: table-row;
}
.ib-settlement-cols-cell {
display: table-cell;
vertical-align: middle;
}
.ib-settlement-cols-cellt {
display: table-cell;
vertical-align: top;
}
7dbb426d519700a7c47317b5c131244df8fc62f0
Template:Columns-list
10
608
1374
2021-06-15T05:12:03Z
wikipedia>Hike395
0
add safesubst
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{{{{|safesubst:}}}#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude>
{{documentation}}
</noinclude>
af8bdb75f288fe4d8e225dee6d1fe7cfad8e6a7e
Template:Subinfobox bodystyle
10
884
1958
2021-06-23T03:07:17Z
wikipedia>Goszei
0
inherit background color
wikitext
text/x-wiki
background-color: transparent; border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none<noinclude>
{{documentation}}
</noinclude>
284ca3e8ef640a5762c6cd04c574077c4ec182bb
Template:Navbox
10
205
1930
464
2021-06-26T18:05:09Z
wikipedia>Trialpears
0
Remove TfD notice as it wouldn't involve any changes to this template.
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fe9b964401f895918ee4fe078678f1722a3c41ec
Template:Tracks and uses Wikidata
10
597
1342
2021-06-30T13:54:54Z
wikipedia>ExE Boss
0
Use [[Module:Uses Wikidata]]
wikitext
text/x-wiki
<onlyinclude><includeonly>{{sister project
|position = {{{position|}}}
|image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]]
|text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!--
--> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details.<!--
--> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|tuProperty}} }}
}}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!--
-->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!--
-->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }}
}}
}}</includeonly></onlyinclude>
{{Documentation}}
a14be63ad2ca80e80789fd88e86e1340f7e5ef00
Template:Crossreference
10
122
291
2021-07-12T05:56:35Z
wikipedia>SMcCandlish
0
clearer code
wikitext
text/x-wiki
<templatestyles src="Crossreference/styles.css" />{{Hatnote inline
|1={{{1|{{{text|{{{content|<noinclude>sample content</noinclude>}}}}}}}}}
|extraclasses=crossreference {{{class|{{{extraclasses|}}}}}}
|selfref={{#if:{{{selfref|{{{printworthy|{{{unprintworthy|}}}}}}}}}||yes}}
|inline={{{inline|true}}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b8ac8a6a83bb08330ba0b9f31a7fcd8567217d0e
Template:Hatnote inline
10
125
299
2021-07-12T05:59:40Z
wikipedia>SMcCandlish
0
more readable code
wikitext
text/x-wiki
{{Hatnote inline/invoke
|1={{{1|{{{text|{{{content}}}}}}}}}
|extraclasses={{{class|{{{extraclasses|}}}}}}
|selfref={{#if:{{{printworthy|{{{selfref|}}}}}}||yes}}
|category={{{category|}}}
|inline={{{inline|true}}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
257f3004ea74817011cab7b3bdfd0c87531d7e35
Template:Crossreference/styles.css
10
124
296
2021-07-12T06:50:43Z
wikipedia>SMcCandlish
0
Nope, that had no effect at all.
sanitized-css
text/css
/* {{pp-template}} */
/* This snippet just undoes the default "padding-left: 1.6em;" imposed by
div.hatnote, when Template:Crossreference is used in block (div) mode.
Ignore the dumb CSS editor's "Element (div.crossreference) is overqualified"
warning. It is wrong. We do not want to apply any CSS intended for block
mode when it is not in block mode. While it's unlikely our "padding-left: 0;"
does anything wrong in inline (span) mode, we can't guarantee it forever. */
div.crossreference {
padding-left: 0;
}
ae665603577c5dbafbdf190ec9e29f2ed1f7cd77
Module:Hatnote inline
828
127
303
2021-07-12T17:42:32Z
wikipedia>Nihiltres
0
Made substitution fix more specific by limiting to 1 match per substitution-pair
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote-inline --
-- --
-- This module produces hatnote-style links, and links to related articles, --
-- but inside a <span>, instead of the <div> used by Module:Hatnote. It --
-- implements the {{hatnote-inline}} meta-template. --
--------------------------------------------------------------------------------
local mHatnote = require('Module:Hatnote')
local mArguments = require('Module:Arguments')
local yesno = require('Module:Yesno')
local p = {}
function p.hatnoteInline (frame)
local args = mArguments.getArgs(frame)
local hatnote = mHatnote.hatnote(frame)
if args.inline == nil or yesno(args.inline, true) then
local subs = {
['<div'] = '<span',
['</div>$'] = '</span>'
}
for k, v in pairs(subs) do hatnote = string.gsub(hatnote, k, v, 1) end
end
return hatnote
end
p.hatnote = p.hatnoteInline --alias
return p
b5000cd7910b7eae23206235b64880a775e4209b
Module:Hatnote/styles.css
828
35
65
2021-07-12T19:22:27Z
wikipedia>Izno
0
per my talk page
text
text/plain
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
44680ffd6e888866df2cdfa0341af9c7b97da94c
Template:Cnote2 Begin
10
1600
2935
2021-07-15T11:20:05Z
w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ
0
Rm redundant interlanguage link
wikitext
text/x-wiki
<div style="<!--
-->{{#if:{{{colwidth|}}}| column-width: {{{colwidth}}}; }}<!--
-->{{#if:{{{1|}}}| column-count: {{{1}}}; }}<!--
-->"><ol class="references" style="list-style-type:{{{liststyle|upper-alpha}}};"><noinclude></ol></div>
{{Documentation}}
</noinclude>
5ed52f11009c71c09bde1c486e4899c1b0597963
Template:For
10
116
279
2021-07-17T12:58:12Z
wikipedia>Plastikspork
0
[[Wikipedia:Templates for discussion/Log/2021 July 8#Template:For]] closed as do not merge ([[WP:XFDC#4.0.12|XFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:For|For}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
3f70c0fa7cd736071e7c6e7dcd90ff3704df26bb
Template:About France nav boxes
10
1453
2788
2021-07-18T12:41:29Z
w>Excellenc1
0
Added templates
wikitext
text/x-wiki
{{Navbox
| title = France template boxes
| name = About France nav boxes
| state = {{{state|auto}}}
| listclass = hlist
| group1 = Navboxes
| list1 =
* {{tl|Prefectures of regions of France}}
* {{tl|Prefectures of departments of France}}
* {{tl|Regions of France}}
* {{tl|Regional Councils (France)}}
| group2 = Infoboxes
| list2 =
* {{tl|Infobox French commune}}
* {{tl|Infobox French constituency}}
* {{tl|Infobox French place}}
* {{tl|Infobox French royalty styles}}
}}<noinclude>
{{documentation|content =
This template is used for template documentation pages, to navigate between similar templates
}}
[[Category:WikiProject France templates]]
[[Category:WikiProject navigational templates|France]]
[[Category:Documentation see also templates]]
</noinclude>
6c66f9a9f462414954f411814776d5e446111fee
Template:Talk page stalker
10
219
494
2021-07-21T07:22:08Z
Startus
12
Fixing link
wikitext
text/x-wiki
{{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|<small>}}([[:wikipedia:Wikipedia:Talk page stalker|{{safesubst:<noinclude />#switch:{{lc:{{{1}}}}}
|c = Talk page stalker
|cw = Talk page watcher
|ce = Talk page enjoyer
|cg = Talk page gnome
|cr = Talk page reader
|a = TPS
|aw = TPW
|ag = TPG
|ar = TPR
|v = stalking
|vw = watching
|vg = gnoming
|vr = reading
|b = by talk page stalker
|bw = by talk page watcher
|bg = by talk gnome
|br = by talk reader
|alc = tps
|alcw = tpw
|alcg = tpg
|alcr = tpr
|w=talk page watcher
|g=talk page gnome
|r = talk page reader
|#default=talk page stalker
}}]]){{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
e674d1371b451e6981f3786ceb6e4c4d2778e633
Template:Talk page watcher
10
220
498
2021-07-21T07:23:46Z
Startus
12
Fix link
wikitext
text/x-wiki
{{safesubst:<noinclude />#ifeq:{{{small|}}}|no||<small>}}([[{{safesubst:<noinclude />#ifeq:{{{safe|}}}|yes|Help:Watchlist|wikipedia:Wikipedia:Talk page stalker}}|{{safesubst:<noinclude />#switch:{{safesubst:<noinclude />lc:{{{1}}}}}|c=Talk page watcher|a=TPW|v=watching|b=by talk page watcher|alc=tpw|#default=talk page watcher}}]]){{safesubst:<noinclude />#ifeq:{{{small|}}}|no||</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
e3ec255c54f7b6317bc81f5c9180959b494749de
Template:Infobox military unit
10
1153
2479
2021-07-21T21:20:00Z
w>Jonesey95
0
add auto short description (displays only when short description is not provided by the article)
wikitext
text/x-wiki
<includeonly>{{Infobox
| bodystyle = {{WPMILHIST Infobox style|main_box_raw}}
| abovestyle = {{WPMILHIST Infobox style|header_raw}}
| subheaderstyle = {{WPMILHIST Infobox style|sub_header_raw}}
| above = {{{unit_name|{{PAGENAMEBASE}}}}}
| subheader = {{{native_name|}}}
| imagestyle = {{WPMILHIST Infobox style|image_box_raw}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright=1|alt={{{alt|}}}}}
| caption = {{{caption|}}}
| headerstyle = {{WPMILHIST Infobox style|header_raw}}
| labelstyle = padding-right: 1em;
| label1 = {{#if:{{{start_date|}}}|{{#if:{{{end_date|}}}|Active|Founded}}|Active}}
| data1 = {{#if:{{{start_date|}}}|{{#if:{{{end_date|}}}|{{{start_date}}}–{{{end_date}}}|{{{start_date}}}}}|{{{dates|}}}}}
| label2 = Disbanded
| data2 = {{{disbanded|}}}
| label3 = {{#if:{{{country|}}}|Country|Countries}}
| data3 = {{#if:{{{country|}}}|{{{country}}}|{{{countries|}}}}}
| label4 = Allegiance
| data4 = {{{allegiance|}}}
| label5 = Branch
| data5 = {{{branch|}}}
| label6 = Type
| data6 = {{{type|}}}
| label7 = Role
| data7 = {{{role|}}}{{{specialization|}}}
| label8 = Size
| data8 = {{{size|}}}
| label9 = Part of
| data9 = {{{command_structure|}}}
| label10 = {{#if:{{{garrison_label|}}}|{{{garrison_label|}}}|Garrison/HQ}}
| data10 = {{{garrison|}}}
| label11 = Nickname(s)
| data11 = {{{nickname|}}}
| label12 = Patron
| data12 = {{{patron|}}}
| label13 = Motto(s)
| data13 = {{{motto|}}}
| label14 = {{if empty|{{{colors_label|}}}|{{{colours_label|}}}|{{#if:{{{colours|}}}|Colours|Colors}}}}
| data14 = {{#if:{{{colours|}}}|{{{colours|}}}|{{{colors|}}}}}
| label15 = March
| data15 = {{{march|}}}
| label16 = Mascot(s)
| data16 = {{{mascot|}}}
| label17 = Anniversaries
| data17 = {{{anniversaries|}}}
| label18 = {{#if:{{{equipment_label|}}}|{{{equipment_label|}}}|Equipment}}
| data18 = {{{equipment|}}}
| label19 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Engagements}}
| data19 = {{{battles|}}}
| label20 = Decorations
| data20 = {{{decorations|}}}
| label21 = {{#if:{{{battle_honours_label|}}}|{{{battle_honours_label|}}}|[[Battle honour|Battle honour]]s}}
| data21 = {{{battle_honours|}}}
| label22 = Flying hours
| data22 = {{{flying_hours|}}}
| label23 = Website
| data23 = {{{website|}}}
| header24 = {{#if:{{{commander1|}}}{{{commander2|}}}{{{commander3|}}}{{{current_commander|}}}{{{ceremonial_chief|}}}{{{colonel_of_the_regiment|}}}{{{notable_commanders|}}} | Commanders }}
| label25 = {{#if:{{{commander1_label|}}}|{{{commander1_label|}}}|{{#if:{{{current_commander_label|}}}|{{{current_commander_label|}}}|Current<br>commander}}}}
| data25 = {{#if:{{{commander1|}}}|{{{commander1|}}}|{{{current_commander|}}}}}
| label26 = {{#if:{{{commander2_label|}}}|{{{commander2_label|}}}|{{#if:{{{ceremonial_chief_label|}}}|{{{ceremonial_chief_label|}}}|Ceremonial chief}}}}
| data26 = {{#if:{{{commander2|}}}|{{{commander2|}}}|{{{ceremonial_chief|}}}}}
| label27 = {{#if:{{{commander3_label|}}}|{{{commander3_label|}}}|{{#if:{{{colonel_of_the_regiment_label|}}}|{{{colonel_of_the_regiment_label|}}}|Colonel of<br>the Regiment}}}}
| data27 = {{#if:{{{commander3|}}}|{{{commander3|}}}|{{{colonel_of_the_regiment|}}}}}
| label28 = {{#if:{{{commander4_label|}}}|{{{commander4_label|}}}|{{#if:{{{command_sergeant_major_label|}}}|{{{command_sergeant_major_label|}}}|Command Sergeant Major}}}}
| data28 = {{#if:{{{commander4|}}}|{{{commander4|}}}|{{{command_sergeant_major|}}}}}
| label29 = {{{commander5_label|Commander}}}
| data29 = {{{commander5|}}}
| label30 = {{{commander6_label|Commander}}}
| data30 = {{{commander6|}}}
| label31 = {{{commander7_label|Commander}}}
| data31 = {{{commander7|}}}
| label32 = {{{commander8_label|Commander}}}
| data32 = {{{commander8|}}}
| label33 = {{{commander9_label|Commander}}}
| data33 = {{{commander9|}}}
| label34 = Notable<br>commanders
| data34 = {{{notable_commanders|}}}
| header35 = {{#if:{{{identification_symbol|}}}{{{identification_symbol_2|}}} | Insignia }}
| header36 = {{#ifeq: {{{identification_symbol_label|}}} | none | {{{identification_symbol|}}} | }}
| label36 = {{#if:{{{identification_symbol_label|}}}|{{{identification_symbol_label|}}}|Identification<br>symbol}}
| data36 = {{#ifeq: {{{identification_symbol_label|}}} | none | | {{{identification_symbol|}}} }}
| label37 = {{#if:{{{identification_symbol_2_label|}}}|{{{identification_symbol_2_label|}}}|Identification<br>symbol}}
| data37 = {{{identification_symbol_2|}}}
| label38 = {{#if:{{{identification_symbol_3_label|}}}|{{{identification_symbol_3_label|}}}|Identification<br>symbol}}
| data38 = {{{identification_symbol_3|}}}
| label39 = {{#if:{{{identification_symbol_4_label|}}}|{{{identification_symbol_4_label|}}}|Identification<br>symbol}}
| data39 = {{{identification_symbol_4|}}}
| label40 = {{#if:{{{identification_symbol_5_label|}}}|{{{identification_symbol_5_label|}}}|Identification<br>symbol}}
| data40 = {{{identification_symbol_5|}}}
| label41 = {{#if:{{{identification_symbol_6_label|}}}|{{{identification_symbol_6_label|}}}|Identification<br>symbol}}
| data41 = {{{identification_symbol_6|}}}
| header42 = {{#if:{{{aircraft_attack|}}}{{{aircraft_bomber|}}}{{{aircraft_electronic|}}}{{{aircraft_fighter|}}}{{{aircraft_interceptor|}}}{{{aircraft_patrol|}}}{{{aircraft_recon|}}}{{{aircraft_trainer|}}}{{{aircraft_transport|}}}{{{aircraft_tanker|}}}{{{aircraft_helicopter|}}}{{{aircraft_helicopter_attack|}}}{{{aircraft_helicopter_cargo|}}}{{{aircraft_helicopter_multirole|}}}{{{aircraft_helicopter_observation|}}}{{{aircraft_helicopter_trainer|}}}{{{aircraft_helicopter_utility|}}}{{{aircraft_general|}}} | Aircraft flown }}
| label43 = [[Attack aircraft|Attack]]
| data43 = {{{aircraft_attack|}}}
| label44 = [[Bomber]]
| data44 = {{{aircraft_bomber|}}}
| label45 = [[Electronic warfare|Electronic<br>warfare]]
| data45 = {{{aircraft_electronic|}}}
| label46 = [[Fighter aircraft|Fighter]]
| data46 = {{{aircraft_fighter|}}}
| label47 = [[Helicopter]]
| data47 = {{{aircraft_helicopter|}}}
| label48 = [[Attack helicopter]]
| data48 = {{{aircraft_helicopter_attack|}}}
| label49 = [[Cargo helicopter]]
| data49 = {{{aircraft_helicopter_cargo|}}}
| label50 = [[Multirole helicopter]]
| data50 = {{{aircraft_helicopter_multirole|}}}
| label51 = [[Observation helicopter]]
| data51 = {{{aircraft_helicopter_observation|}}}
| label52 = [[Trainer helicopter]]
| data52 = {{{aircraft_helicopter_trainer|}}}
| label53 = [[Utility helicopter]]
| data53 = {{{aircraft_helicopter_utility|}}}
| label54 = [[Interceptor aircraft|Interceptor]]
| data54 = {{{aircraft_interceptor|}}}
| label55 = [[Patrol aircraft|Patrol]]
| data55 = {{{aircraft_patrol|}}}
| label56 = [[Surveillance aircraft|Reconnaissance]]
| data56 = {{{aircraft_recon|}}}
| label57 = [[Trainer (aircraft)|Trainer]]
| data57 = {{{aircraft_trainer|}}}
| label58 = [[Cargo aircraft|Transport]]
| data58 = {{{aircraft_transport|}}}
| label59 = [[Aerial refueling|Tanker]]
| data59 = {{{aircraft_tanker|}}}
| data60 = {{{aircraft_general|}}}
| data61 = {{{misc|{{{module|}}}}}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military unit with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military unit]] with unknown parameter "_VALUE_"|ignoreblank=y| aircraft_attack | aircraft_bomber | aircraft_electronic | aircraft_fighter | aircraft_general | aircraft_helicopter | aircraft_helicopter_attack | aircraft_helicopter_cargo | aircraft_helicopter_multirole | aircraft_helicopter_observation | aircraft_helicopter_trainer | aircraft_helicopter_utility | aircraft_interceptor | aircraft_patrol | aircraft_recon | aircraft_tanker | aircraft_trainer | aircraft_transport | allegiance | alt | anniversaries | battle_honours | battle_honours_label | battles | battles_label | branch | caption | ceremonial_chief | ceremonial_chief_label | colonel_of_the_regiment | colonel_of_the_regiment_label | colors | colors_label | colours | colours_label | command_sergeant_major | command_sergeant_major_label | command_structure | commander1 | commander1_label | commander2 | commander2_label | commander3 | commander3_label | commander4 | commander4_label | commander5 | commander5_label | commander6 | commander6_label | commander7 | commander7_label | commander8 | commander8_label | commander9 | commander9_label | countries | country | current_commander | current_commander_label | dates | decorations | disbanded | end_date | equipment | equipment_label | flying_hours | garrison | garrison_label | identification_symbol | identification_symbol_2 | identification_symbol_2_label | identification_symbol_3 | identification_symbol_3_label | identification_symbol_4 | identification_symbol_4_label | identification_symbol_5 | identification_symbol_5_label | identification_symbol_6 | identification_symbol_6_label | identification_symbol_label | image | image_size | march | mascot | misc | module | motto | native_name | nickname | notable_commanders | patron | role | size | specialization | start_date | type | unit_name | website }}<includeonly>{{short description|Military unit|2=noreplace}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
01758240c8ad335ee4eb92e9c72c53739871bb39
Template:Thin space
10
1521
2856
2021-07-22T18:00:13Z
w>MusikBot II
0
Protected "[[Template:Thin space]]": [[Wikipedia:High-risk templates|High-risk template or module]] ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<span style="white-space: nowrap;">{{#if:{{{1|}}}|{{#if:{{{2|}}}|| }}}}{{{1|}}} <!--
-->{{#if:{{{2|}}}|{{{2}}}}}{{#if:{{{3|}}}| {{{3}}}}}<!--
-->{{#if:{{{4|}}}| {{{4}}}}}{{#if:{{{5|}}}| {{{5}}}}}<!--
-->{{#if:{{{6|}}}| {{{6}}}}}{{#if:{{{7|}}}| {{{7}}}}}<!--
-->{{#if:{{{8|}}}| {{{8}}}}}{{#if:{{{9|}}}| {{{9}}}}}<!--
-->{{#if:{{{10|}}}| {{{10}}}}}</span><noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
5f135f79d223a744b75485254555580623480420
Template:Cite Americana
10
1700
3199
2021-07-24T13:46:29Z
wikipedia>Trappist the monk
0
add class=noviewer
wikitext
text/x-wiki
<!--
optional icon - included by default
-->{{#if:{{{noicon|}}}||{{#if:{{{wstitle|}}}||[[File:PD-icon.svg|12px|class=noviewer|alt=public domain|link=]] }}}}<!--
optional verbatim message - not included by default
-->{{#if:{{{vb|}}}|{{#if: {{{inline|}}}|One or more of the preceding sentences|This article}} incorporates text from a publication now in the [[public domain]]: |}}<!--no white space
-->{{#invoke:template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=cite encyclopedia
|_exclude=display, inline, no-icon, noicon, short, wstitle, vb, _debug
|_reuse=title <!-- these are reused -->
<!-- set defaults for some parameters-->
|year={{{year|1920}}}
|editor-first={{{editor-first|{{#if:{{{short|}}}| |George Edwin}}}}}
|editor-last={{{editor-last|{{#if:{{{short|}}}| |Rines}}}}}
|encyclopedia=[[Encyclopedia Americana]]
|title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{{wstitle|}}}|{{cite wikisource/make link
|link=The Encyclopedia Americana ({{{year|1920}}})/{{{wstitle|}}}
|anchor=
|label={{{display|{{{wstitle|}}}}}}
|noicon={{{no-icon|{{{noicon|}}}}}}
}}}}}}
}}<includeonly><!--
-->{{#ifeq: {{NAMESPACEE}} |<!--is not set-->
|<!--Set: sort out the parameters-->
{{#if: {{{wstitle|}}} |[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with a Wikisource reference]]
|<!--else-->
{{#if: {{{title|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana without a Wikisource reference]]
|<!--else-->
{{#if: {{{1|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with an unnamed parameter]]
|<!--else-->
[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with no wstitle or title parameter]]
}}
}}
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
ed5c9ece372ad2d5f69121e72f392dbb30307c17
Template:If both
10
1222
2552
2021-07-27T21:26:23Z
w>Trialpears
0
substitutable
wikitext
text/x-wiki
{{{{{|safesubst:}}}#if:{{{1|}}}| {{{{{|safesubst:}}}#if:{{{2|}}}|{{{3|}}}|{{{4|}}}}} |{{{4|}}} }}<noinclude>
{{Documentation}}
<!--
PLEASE ADD CATEGORIES AND INTERWIKIS
TO THE /doc SUBPAGE, THANKS
-->
</noinclude>
d77fc191cada8977a8131dd6d85dde5e31d0e6f2
Template:UF-hcard-org
10
1487
2822
2021-08-02T18:52:40Z
w>Sdkb
0
adding option to replace "start date and age" with just "start date"
wikitext
text/x-wiki
{{Microformat message
| format = hCard
| data = an organization's details
| subtemplates =
* Use {{#ifeq:{{yesno-yes|{{{age|}}}}}|yes|{{tl|Start date and age}}|{{tl|Start date}}}} for the date on which an organisation was "established", "founded", "opened" or otherwise started, [[Wikipedia:WikiProject Microformats/dates|unless that date is before 1583 CE]].
* Use {{tl|URL}} for an organisation's URL.
|adr |agent |category |country-name |extended-address |fn |geo |label |latitude |locality |longitude |nickname |note |org |region |street-address |url |vcard
| nocollapse = on
}}<includeonly>{{sandbox other||
[[Category:Templates generating hCards]]
}}</includeonly><noinclude>
{{Documentation |content={{Microformat message templates}}}}
[[Category:Microformat (uF) message templates]]
[[Category:Templates generating hCards| ]]
</noinclude>
631bc99cd046167681b6eb518559d92fc65a4920
Template:Pval
10
1256
2590
2021-08-08T07:44:26Z
w>Mathglot
0
Creating as #REDIRECT [[Template:Param value]]
wikitext
text/x-wiki
#REDIRECT [[Template:Param value]]
068e5f0a141e534b855634c386541985fd9f0609
Template:Infobox Dutch royalty styles
10
1126
2451
2021-08-08T19:34:00Z
w>Rkt2312
0
wikitext
text/x-wiki
{{Infobox manner of address
| name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAMEBASE}}}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| 1581 = Coat of arms of the republic of the united Netherlands (before 1665).svg
| 1665 = Coat of arms of the republic of the united Netherlands (after 1665).svg
| 1806 = Coat of Arms of the Kingdom of Holland (1806).svg
| 1808 = Coat of Arms of the Kingdom of Holland (1808).svg
| 1815 = Royal Coat of Arms of the Netherlands (1815-1907).svg
| own = {{{image|}}}
| #default = Royal coat of arms of the Netherlands.svg
}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|{{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| 1581 | 1665 | 1806 | 1808 = 55px
| 1815 = 65px
| own = 50px
| #default = 65px
}}}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| alternative = {{{altstyle<includeonly>|</includeonly>}}}
| type = Royal
| background = #FF9900
}}{{<includeonly>safesubst:</includeonly>#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Dutch royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | altstyle | dipstyle | image | image_size | name | offstyle }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
36562db2a62c2566320372b7b5273a5387c121f0
Template:Infobox Belgian royalty styles
10
1121
2446
2021-08-08T19:40:23Z
w>Rkt2312
0
wikitext
text/x-wiki
{{Infobox manner of address
| name = {{{name|{{<includeonly>safesubst:</includeonly>PAGENAME}}}}}
| image = {{<includeonly>safesubst:</includeonly>#switch: {{{1}}}
| 1830 = Coat of Arms of King Leopold I of Belgium.svg
| 1837 = Coat of Arms of the King of the Belgians (1837-1921).svg
| 1921 = Coat of Arms of the King of the Belgians (1921-2019).svg
| own = {{{image|}}}
| #default = Great coat of arms of Belgium.svg
}}
| size = {{<includeonly>safesubst:</includeonly>#if:{{{image_size|}}}|{{{image_size}}}|60px}}
| reference = {{{reference<includeonly>|</includeonly>}}}
| spoken = {{{spoken<includeonly>|</includeonly>}}}
| alternative = {{{alternative<includeonly>|</includeonly>}}}
| type = Royal
| background = #ED2939
| colour = #000000
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Belgian royalty styles]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | alternative | image | image_size | name | reference | spoken }}<noinclude>
{{documentation}}
</noinclude>
8f3c1bba00cb5ba8fe2c8364ce21af2fd2c4393e
Template:Quote box
10
1087
2373
2021-08-14T16:46:21Z
wikipedia>Firefly
0
reimplement changes per TP
wikitext
text/x-wiki
<templatestyles src="Template:Quote_box/styles.css" /><div class="quotebox pullquote {{#switch: {{lc:{{{align|}}}}}
| center = centered
| left = floatleft
| none =
| floatright
}} {{{class|}}}" style="
{{#if:{{{width|}}} |width:{{{width}}};}}
{{#ifeq:{{{border}}}|none|border:none;|{{#if:{{{border|}}}|border-width: {{{border}}}}};}}
{{#if:{{{fontsize|}}}|font-size: {{{fontsize}}};}}
{{#if:{{{bgcolor|}}}|background-color: {{#ifeq:{{{bgcolor|}}}|none|transparent|{{{bgcolor}}}}};}}
{{{style|}}}">
{{#if:{{{title|}}}
|<div class="quotebox-title {{{tclass|}}}" style="
{{#if:{{{title_bg|{{{bgcolor|}}}}}}|background-color: {{#ifeq:{{{title_bg|{{{bgcolor}}}}}}|none|transparent|{{{title_bg|{{{bgcolor}}}}}}}};}}
{{#if:{{{title_fnt|}}}|color: {{{title_fnt}}};}}
{{{tstyle|}}}">{{{title}}}</div>
}}
<blockquote class="quotebox-quote {{main other||{{#if:{{{quoted|}}}|quoted}}}} {{#switch: {{lc:{{{qalign|{{{halign|left}}}}}}}}
|right = right-aligned
|center = center-aligned
|left-aligned
}} {{{qclass|}}}" style="
{{{qstyle|}}}">
{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}
</blockquote>
{{#if:{{{author|{{{source|}}}}}}{{{2|}}}{{{3|}}}|<cite class="{{#switch: {{lc:{{{salign|{{{qalign|{{{halign|left}}} }}} }}} }}
|right = right-aligned
|center = center-aligned
|left-aligned
}}" style="{{{sstyle|}}}"><!--Manually inserted dashes will need to be removed from uses of the template first, I guess, then enable this:--><!--— -->{{{author|{{{2|}}}}}}{{#if:{{{author|}}}{{{2|}}}|{{#if:{{{source|}}}{{{3|}}}|<!--Display comma-space only if both cite parameters are present.-->, }}}}{{{source|{{{3|}}}}}}</cite>}}
</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using quote box with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Quote box]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | align | author | bgcolor | border | class | content | fontsize | halign | qalign | qclass | qstyle | quote | quoted | quotetext | salign | source | sstyle | style | tclass | text | title | title_bg | title_fnt | tstyle | width }}<noinclude>
{{Documentation}}
</noinclude>
2aa78cc6cbf64f216a9f86c2027aee9ba5b873e1
Template:Tooltip/styles.css
10
1051
2300
2021-08-15T03:04:59Z
wikipedia>Pppery
0
Adding protection template
sanitized-css
text/css
/* {{pp-template}} */
.tooltip-dotted {
border-bottom: 1px dotted;
cursor: help;
}
567ab0781901eeeb93077ef25052613364378d1e
Template:Cite wikisource/make link
10
1702
3203
2021-08-16T19:55:21Z
wikipedia>MusikAnimal
0
Changed protection settings for "[[Template:Cite wikisource/make link]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#if:{{{noicon|}}}
|[[:s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]
|[[s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]}}<noinclude>
{{documentation}}
</noinclude>
8811d0350c08f66930c6b4d5ea7dc16afa99541c
Template:Q
10
1059
2316
2021-08-16T20:38:04Z
wikipedia>ToBeFree
0
Changed protection settings for "[[Template:Q]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Wikidata entity link]]
[[Category:Wikidata templates]]
{{Redirect category shell|
{{R from template shortcut}}
{{R from move}}
}}
7f19fdcb2b05d966cd3f0f5f540cf8fa37935869
Template:Linkless exists
10
189
432
2021-08-16T23:47:06Z
MusikAnimal
4
Changed protection settings for "[[Template:Linkless exists]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#if:{{PROTECTIONEXPIRY:edit|{{{1|}}}}}|{{{2|true}}}|{{{3|}}}}}<noinclude>{{documentation}}</noinclude>
1aa1e6e4f3589f452babd54a7c0bbc590dc2f96d
Template:YEAR
10
1242
2576
2021-08-17T01:21:54Z
w>MusikBot II
0
Changed protection settings for "[[Template:YEAR]]": [[Wikipedia:High-risk templates|High-risk template or module]] 62847 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#if: {{{1|}}}
|{{#iferror:{{#time:Y|1 January {{{1|}}} }}
|{{#iferror:{{#time:Y|{{{1|}}} }}
|{{#ifeq:{{{2|}}}|{{{2}}}|error|{{error|Error}}}}
|{{#time:Y|{{{1|}}} }} }}
|{{#time:Y|1 January {{{1|}}} }} }}
|{{CURRENTYEAR}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
397274250b850cd58a73ae0feb580b3f511afb46
Template:FTE
10
1477
2812
2021-08-18T03:18:39Z
w>TheGEICOgecko
0
Whether the "a" or "an" article is used depends on the beginning sound of the first syllable. The first syllable is "F", or "ehf". Since the first sound is the sound of a vowel, the article should be "an."
wikitext
text/x-wiki
(on an [[Full-time equivalent|FTE]] basis)<noinclude>
[[Category:Education templates]]
</noinclude>
497f38612f32a203cdfdd7677223681bb60bd56e
Module:Asbox
828
757
1689
2021-08-19T05:19:44Z
DannyS712
44
prevent global variable disallowedUnicodeChars, triggers warnings at [[Template:Ankylosaurian-stub]] - assuming it was by accident - please revert if this breaks anything
Scribunto
text/plain
--[[
This module was created by User:CodeHydro (Alexander Zhikun He).
User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main()
p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough
https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287
p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ
https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791
Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages.
--]]
local WRAPPER_TEMPLATE, args = 'Template:Asbox'
local templatestyles = 'Asbox/styles.css'
local p, Buffer, stubCats = {
--Prevents dupli-cats... get it? Maybe not?
cats = setmetatable({}, {__newindex = function(t, i, v)
if not rawget(t, i) then
rawset(t, i, v)
table.insert(t, i)
end
end}),
--initializes variables required by both p.main and p.templatepage
init = function(self, frame, page)
args, page = args or require('Module:Arguments').getArgs(frame, {
wrappers = WRAPPER_TEMPLATE
}), page or mw.title.getCurrentTitle()
--Ensures demo parameter will never affect category() output for articles
self.demo = self.demo or page.namespace ~= 0 and args.demo
return args, page
end
}, require('Module:Buffer')
--[[
Formats category links. Stores them until called with cat.done=true
Takes multiple or single categories in the form of 'cat'
or a table of strings and/or tables containing parts. (See below)
]]
local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s'
local function category(cat)
for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do
--[[
If v is a table:
[1] = full category name; defaults to local attention if blank
k = Category sort key. Prefix before v.t
t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string
Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t
]]
if v and v ~= true then--reject v = nil, false, or true
p.cats[catTag:format(tostring(v) == v and
v
or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|')
)] = true
end
end
return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or ''
end
--[[
Makes an ombox warning;
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}}
Will return an empty string instead when ifNot evaluates to true
]]
local function ombox(v)
if v.ifNot then return end
p.ombox = p.ombox or require('Module:Message box').ombox
category{v[2]}
return p.ombox{
type = 'content',
text = v[1]
}
end
--[[
Unlike original template, module now takes unlimited cats! This function also performs
most stub category error checks except for the ombox for when main |category= is omitted (See p.template())
]]
local function catStub(page, pageDoc)
stubCats = {missing = {}, v = {}}
-- zwj and zwnj have semantical use in other other wikis, don't remove them
local zwj = '\226\128\141' -- U+200D, E2 80 8D
local zwnj = '\226\128\140' -- U+200C, E2 80 8C
local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string
local code
for k, _ in pairs(args) do
--Find category parameters and store the number (main cat = '')
table.insert(stubCats, string.match(k, '^category(%d*)$'))
end
table.sort(stubCats)
for k, v in ipairs(stubCats) do
--Get category names and, if called by p.templatepage, the optional sort key
local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars
--Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category.
table.insert(stubCats.v,
page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys.
v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject
or tsort and {cat, k = ' ', t = tsort}
or {cat, k = ' *', t = page.text}--note space in front of sort key
)
or cat
)
--Check category existance only if on the template page (i.e. stub documentation)
if page then
if not mw.title.new('Category:' .. cat).exists then
code = code or mw.html.create'code':wikitext'|category'
table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v)))
end
--[[
Checks non-demo stub template for documentation and flags if doc is present.
All stub cats names are checked and flagged if it does not match 'Category: [] stub'.
The main stub cat is exempt from the name check if the stub template has its own doc
(presumably, this doc would have an explanation as to why the main stub cat is non-conforming).
]]
table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and
'Stub message templates with documentation subpages'
or not cat:match' stubs$' and {k = 'S', t = page.text}
)
end
end
--Add category names after loop is completed
category(stubCats.v)
return #stubCats.missing > 0 and ombox{
--Changed, original msg:
--One or more of the stub categories defined in this template do not seem to exist!
--Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}.
'The following parameter'
.. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do')
.. ' not exist: ' .. mw.text.listToText(stubCats.missing),
{k = 'N', t = page.text}
}
end
--Shows population of categories found by catStub(). Outputs demo values if none
local function population()
local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n'
if not args.category and stubCats[1] ~= false then
table.insert(stubCats, 1, false)
end
for _, v in ipairs(stubCats) do
table.insert(wikitext, base:format(
v and args['category' .. v] or '{{{category}}}',
v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0
))
end
return table.concat(wikitext)
end
--Includes standard stub documention and flags stub templates with bad parameter values.
function p.templatepage(frame, page)
args, page = p:init(frame, page)
local tStubDoc = mw.title.new'Template:Stub documentation'
local pageDoc = page:subPageTitle('doc')
--Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=.
--Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub()
return Buffer(
ombox{--Show ombox warnings for missing args.
ifNot = args.category,
'The <code>|category</code> parameter is not set. Please add an appropriate stub category.',
{k = 'C', t = page.text}
})
:_(ombox{
ifNot = args.subject or args.article or args.qualifier,
'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.',
{k = 'D', t = page.text}
})
:_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories
:_(category{
done = p.demo ~= 'doc',--Outputs categories if not doc demo
'Stub message templates',
args.icon and
'Stub message templates using icon parameter'
or args.image and (
mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true
or {k = 'B', t = page.text}
)
or 'Stub message templates without images',
args.imagealt and {k = 'I', t = page.text},
})
:_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation
require('Module:Documentation').main{
content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree
require('Module:Asbox stubtree').subtree{args = {pagename = page.text}}
)
:_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space
:_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping '
:_(mw.html.create'code'
:wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}')
)
:_' produces the message shown at the beginning, and adds the article to the following categor'
:_(#stubCats > 1 and 'ies' or 'y')
:_':\n'
:_(population())
:_(pageDoc.exists and--transclusion of /doc if it exists
frame:expandTemplate{title = pageDoc.text}
)
:_'\n== General information ==\n'
:_(frame:expandTemplate{title = tStubDoc.text})
:_'\n\n'(),
['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].'
:_in'The general information is transcluded from [[Template:Stub documentation]]. '
:_(mw.html.create'span'
:cssText'font-size:smaller;font-style:normal;line-height:130%'
:node(('([%s edit] | [%s history])'):format(
tStubDoc:fullUrl('action=edit', 'relative'),
tStubDoc:fullUrl('action=history', 'relative')
))
)
:_out()
:_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and
"This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's ["
.. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative')
.. '| /doc] subpage, which is not protected.'
)' <br/>'
}
)()
end
function p.main(frame, page)
args, page = p:init(frame, page)
local output = mw.html.create'div'
:attr{role = 'note'}
:addClass'metadata plainlinks asbox stub'
:tag'table'
:attr{role = 'presentation'}
:tag'tr'
:addClass'noresize'
:node((args.icon or args.image) and
mw.html.create'td'
:wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format(
args.image or '',
args.pix or '40x30',
args.imagealt or 'Stub icon'
))
)
:tag'td'
:tag'p'
:addClass'asbox-body'
:wikitext(
Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space
' is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [',
page:fullUrl('action=edit', 'relative'),
' expanding it].'
)
:done()
:node(args.note and
mw.html.create()
:tag'p'
:addClass'asbox-note'
:wikitext(args.note)
:done()
)
:allDone()
:node(args.name and
require'Module:Navbar'._navbar{
args.name,
mini = 'yes',
}
)
--[[
Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories.
Articles using the template do not need a sort key since they have unique names.
When p.demo equals 'doc', the demo stub categories will appear as those for a stub template.
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art')
]]
if page.namespace == 0 then -- Main namespace
category'All stub articles'
catStub()
elseif p.demo then
if p.demo ~= 'doc' then catStub() end
--Unless p.demo is set to 'art', it will also include error categories normally only shown on
--the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space.
p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page)
output = mw.html.create()
:node(output)
:tag'small':wikitext(
'Demo categories: ',
(category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2'))
):done()
:wikitext(p.demo == 'doc' and p.demodoc or nil)
else
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}}
local normalizedName = mw.title.new(args.name or '')
if normalizedName and normalizedName.fullText == page.fullText then
output = mw.html.create():node(output):wikitext(p.templatepage(frame, page))
elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage
category{{k = args.name and 'E' or 'W', t = page.text}}
end
end
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil))
end
return p
0a9850f35fe9b15eaadd5d693d751ca62ddb60cf
Template:Infobox country/formernext
10
560
1255
2021-08-20T02:01:15Z
wikipedia>Goszei
0
ensure proper display on mobile
wikitext
text/x-wiki
{| style="width:95%; background: transparent; text-align:center; margin:0 auto; display:inline-table;"
|-
| style="text-align:center; border:0; padding-bottom:0"|<div id="before-after"></div> {{#if:{{{p1|}}}|'''Preceded by'''}} || style="text-align:center;border:0; padding-bottom:0;"| {{#if:{{{s1|}}}|'''Succeeded by'''}}
|-
| style="vertical-align:top; text-align:center; border:0;"| {{#if:{{{p1|}}} | <!--start subtable:-->{{{!}} style="width:100%; background: transparent; text-align:center; margin:0 auto; border:0;"
{{!}}-
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p1|}}}|[[File:{{{flag_p1}}}|20px{{#ifeq:{{{border_p1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p1|}}}|{{{image_p1}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p1}}}]]
{{!}}-
{{#if:{{{p2|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p2|}}}|[[File:{{{flag_p2}}}|20px{{#ifeq:{{{border_p2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p2|}}}|{{{image_p2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p2}}}]]}}
{{!}}-
{{#if:{{{p3|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p3|}}}|[[File:{{{flag_p3}}}|20px{{#ifeq:{{{border_p3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p3|}}}|{{{image_p3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p3}}}]]}}
{{!}}-
{{#if:{{{p4|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p4|}}}|[[File:{{{flag_p4}}}|20px{{#ifeq:{{{border_p4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p4|}}}|{{{image_p4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p4}}}]]}}
{{!}}-
{{#if:{{{p5|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p5|}}}|[[File:{{{flag_p5}}}|20px{{#ifeq:{{{border_p5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p5|}}}|{{{image_p5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p5}}}]]}}
{{!}}-
{{#if:{{{p6|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p6|}}}|[[File:{{{flag_p6}}}|20px{{#ifeq:{{{border_p6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p6|}}}|{{{image_p6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p6}}}]]}}
{{!}}-
{{#if:{{{p7|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p7|}}}|[[File:{{{flag_p7}}}|20px{{#ifeq:{{{border_p7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p7|}}}|{{{image_p7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p7}}}]]}}
{{!}}-
{{#if:{{{p8|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p8|}}}|[[File:{{{flag_p8}}}|20px{{#ifeq:{{{border_p8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p8|}}}|{{{image_p8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p8}}}]]}}
{{!}}-
{{#if:{{{p9|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p9|}}}|[[File:{{{flag_p9}}}|20px{{#ifeq:{{{border_p9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p9|}}}|{{{image_p9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p9}}}]]}}
{{!}}-
{{#if:{{{p10|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p10|}}}|[[File:{{{flag_p10}}}|20px{{#ifeq:{{{border_p10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p10|}}}|{{{image_p10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p10}}}]]}}
{{!}}-
{{#if:{{{p11|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p11|}}}|[[File:{{{flag_p11}}}|20px{{#ifeq:{{{border_p11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p11|}}}|{{{image_p11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p11}}}]]}}
{{!}}-
{{#if:{{{p12|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p12|}}}|[[File:{{{flag_p12}}}|20px{{#ifeq:{{{border_p12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p12|}}}|{{{image_p12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p12}}}]]}}
{{!}}-
{{#if:{{{p13|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p13|}}}|[[File:{{{flag_p13}}}|20px{{#ifeq:{{{border_p13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p13|}}}|{{{image_p13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p13}}}]]}}
{{!}}-
{{#if:{{{p14|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p14|}}}|[[File:{{{flag_p14}}}|20px{{#ifeq:{{{border_p14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p14|}}}|{{{image_p14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p14}}}]]}}
{{!}}-
{{#if:{{{p15|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p15|}}}|[[File:{{{flag_p15}}}|20px{{#ifeq:{{{border_p15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p15|}}}|{{{image_p15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p15}}}]]}}
{{!}}-
{{#if:{{{p16|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p16|}}}|[[File:{{{flag_p16}}}|20px{{#ifeq:{{{border_p16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p16|}}}|{{{image_p16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p16}}}]]}}
{{!}}-
{{#if:{{{p17|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p17|}}}|[[File:{{{flag_p17}}}|20px{{#ifeq:{{{border_p17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p17|}}}|{{{image_p17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p17}}}]]}}
{{!}}-
{{#if:{{{p18|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p18|}}}|[[File:{{{flag_p18}}}|20px{{#ifeq:{{{border_p18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p18|}}}|{{{image_p18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p18}}}]]}}
{{!}}-
{{#if:{{{p19|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p19|}}}|[[File:{{{flag_p19}}}|20px{{#ifeq:{{{border_p19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p19|}}}|{{{image_p19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p19}}}]]}}
{{!}}-
{{#if:{{{p20|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p20|}}}|[[File:{{{flag_p20}}}|20px{{#ifeq:{{{border_p20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p20|}}}|{{{image_p20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p20}}}]]}}
{{!}}-
{{#if:{{{p21|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p21|}}}|[[File:{{{flag_p21}}}|20px{{#ifeq:{{{border_p21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p21|}}}|{{{image_p21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p21}}}]]}}
<!--end subtable:-->
{{!}}}
}}
| style="vertical-align:top; text-align:center;border:0;"| {{#if:{{{s1|}}} | <!--start subtable:-->{{{!}} style="width:92%; background:transparent; text-align:center; margin:0 auto; border:0;"
{{!}}-
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s1}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s1|}}}|[[File:{{{flag_s1}}}|20px{{#ifeq:{{{border_s1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s1|}}}|{{{image_s1}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}-
{{#if:{{{s2|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s2}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s2|}}}|[[File:{{{flag_s2}}}|20px{{#ifeq:{{{border_s2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s2|}}}|{{{image_s2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s3|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s3}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s3|}}}|[[File:{{{flag_s3}}}|20px{{#ifeq:{{{border_s3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s3|}}}|{{{image_s3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s4|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s4}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s4|}}}|[[File:{{{flag_s4}}}|20px{{#ifeq:{{{border_s4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s4|}}}|{{{image_s4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s5|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s5}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s5|}}}|[[File:{{{flag_s5}}}|20px{{#ifeq:{{{border_s5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s5|}}}|{{{image_s5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s6|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s6}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s6|}}}|[[File:{{{flag_s6}}}|20px{{#ifeq:{{{border_s6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s6|}}}|{{{image_s6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s7|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s7}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s7|}}}|[[File:{{{flag_s7}}}|20px{{#ifeq:{{{border_s7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s7|}}}|{{{image_s7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s8|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s8}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s8|}}}|[[File:{{{flag_s8}}}|20px{{#ifeq:{{{border_s8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s8|}}}|{{{image_s8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s9|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s9}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s9|}}}|[[File:{{{flag_s9}}}|20px{{#ifeq:{{{border_s9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s9|}}}|{{{image_s9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s10|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s10}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s10|}}}|[[File:{{{flag_s10}}}|20px{{#ifeq:{{{border_s10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s10|}}}|{{{image_s10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s11|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s11}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s11|}}}|[[File:{{{flag_s11}}}|20px{{#ifeq:{{{border_s11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s11|}}}|{{{image_s11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s12|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s12}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s12|}}}|[[File:{{{flag_s12}}}|20px{{#ifeq:{{{border_s12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s12|}}}|{{{image_s12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s13|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s13}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s13|}}}|[[File:{{{flag_s13}}}|20px{{#ifeq:{{{border_s13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s13|}}}|{{{image_s13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s14|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s14}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s14|}}}|[[File:{{{flag_s14}}}|20px{{#ifeq:{{{border_s14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s14|}}}|{{{image_s14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s15|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s15}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s15|}}}|[[File:{{{flag_s15}}}|20px{{#ifeq:{{{border_s15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s15|}}}|{{{image_s15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s16|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s16}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s16|}}}|[[File:{{{flag_s16}}}|20px{{#ifeq:{{{border_s16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s16|}}}|{{{image_s16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s17|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s17}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s17|}}}|[[File:{{{flag_s17}}}|20px{{#ifeq:{{{border_s17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s17|}}}|{{{image_s17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s18|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s18}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s18|}}}|[[File:{{{flag_s18}}}|20px{{#ifeq:{{{border_s18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s18|}}}|{{{image_s18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s19|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s19}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s19|}}}|[[File:{{{flag_s19}}}|20px{{#ifeq:{{{border_s19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s19|}}}|{{{image_s19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s20|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s20}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s20|}}}|[[File:{{{flag_s20}}}|20px{{#ifeq:{{{border_s20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s20|}}}|{{{image_s20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s21|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s21}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s21|}}}|[[File:{{{flag_s21}}}|20px{{#ifeq:{{{border_s21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s21|}}}|{{{image_s21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
<!--end subtable:-->
<!--end subtable:-->
{{!}}}
}}
<!--end subtable:-->
{{!}}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently handle up to 21 flags.
}}</noinclude>
05a74d48da51cce78e3518579c2af4cd1e699e4a
Template:TemplateData header
10
59
113
2021-08-29T21:32:29Z
wikipedia>SUM1
0
Added "based" parameter to other transclusion
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage|based=y}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
ddfbb4ae793846b96d4c06330417fa6ed4da2adc
Template:Wikipedia help pages
10
145
339
2021-09-01T20:22:34Z
wikipedia>Shushugah
0
Re-added navigation bar to make finding this template easier. I didn't see any special reasons stated in the talk page and if this is prone to vandalism, it should be protected, not obscured from editing
wikitext
text/x-wiki
<noinclude>{{Notice |style=margin-bottom:1.5em; |1=<span style="font-size:large;color:purple;">Please do not post your requests or questions on this page. If you have questions about using Wikipedia, please ask at the '''[[Wikipedia:Help desk|Help desk]]''' or the '''[[Wikipedia:Teahouse|Teahouse]]'''. For questions about subjects and topics, please use the '''[[Wikipedia:Reference desk|Reference Desk]]'''. Volunteers at these locations will respond to your questions as soon as possible.</span>}}</noinclude><!--
-->{{#invoke:navbox|navbox
| name = Wikipedia help pages
| state ={{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}}
| bodyclass = hlist
| basestyle = text-align:center;
| title = [[Help:Directory|Wikipedia help pages]]
| above =
*'''Visit the ''[[Wikipedia:Teahouse|Teahouse]]'' or the ''[[Wikipedia:Help desk|Help desk]]'' for an interactive {{abbr|Q & A|questions and answers}} forum.'''
----
* '''[[Wikipedia:FAQ|FAQs]]''' '''{{Define|(?)|This is a list of frequently asked questions about using and contributing to Wikipedia.}}'''
* '''[[Wikipedia:Reference desk|Reference desks]]''' '''{{Define|(?)|Works like a library reference desk. Ask a question here and Wikipedia volunteers will try to answer it.}}'''
* '''[[Wikipedia:Noticeboards|Noticeboards]]''' '''{{Define|(?)|Pages where editors can ask questions and request assistance from people who are familiar with the policies and guidelines covered by each individual board.}}'''
* '''[[Help:Cheatsheet|Cheatsheet]]''' '''{{Define|(?)| For a list of the most commonly used Wiki markup and templates.}}'''
*''' [[Wikipedia:Directories and indexes|Directories]]''' '''{{Define|(?)|For a list of Wikipedia's directories and indexes.}}'''
| group1 = [[Wikipedia:About|About Wikipedia]] {{Define|(?)|Wikipedia's governess and customs}}
| list1 =
* [[Wikipedia:Administration|Administration]]
**[[Wikipedia:Purpose|Purpose]]
** [[Wikipedia:Five pillars|Principles]]
* [[Wikipedia:Policies and guidelines|Policies and guidelines]]
* [[Wikipedia:What Wikipedia is not|What Wikipedia is not]]
* [[Wikipedia:General disclaimer|Disclaimer]] ([[Wikipedia:Advice for parents|parental advice]])
* [[Wikipedia:Request directory|Making requests]]
* [[Wikipedia:Who writes Wikipedia?|Who writes Wikipedia?]]
| group2 = [[Wikipedia:Reader's index to Wikipedia|Help for readers]] {{Define|(?)|Concerns and questions readers may have about Wikipedia}}
| list2 =
*[[Wikipedia:FAQ/Readers|FAQ]]
*[[Wikipedia:Wikipedia book creator status|Books]]
* [[Help:Copyright|Copyright]]
* [[Help:Glossary|Glossary]]
* [[Help:Mobile access|Mobile access]]
* [[Help:Navigation|Navigation]]
* [[Help:Other languages|Other languages]]
* [[Help:Searching|Searching]]
* [[Help:Student help|Students]]
* [[Help:Viewing media|Viewing media]]
| group3 = [[Wikipedia:Contributing to Wikipedia|Contributing<br/>to Wikipedia]] {{Define|(?)|Overviews and resources needed to comprehend, comment on, and edit}}
| list3 =
* [[Wikipedia:Guidance for younger editors|Advice for young editors]]
* [[Wikipedia:Avoiding common mistakes|Avoiding common mistakes]]
* [[Wikipedia:Etiquette|Etiquette]]
* [[Wikipedia:Simplified Manual of Style|Simplified Manual of Style]]
* [[Wikipedia:Simplified ruleset|Simplified rule-set]]
** [[Wikipedia:Ignore all rules|"Ignore all rules"]]
** [[Wikipedia:The rules are principles|"The rules are principles"]]
*[[Wikipedia:Styletips|Style-tips]]
* [[Wikipedia:Tip of the day|Tip of the day]]
* [[Help:Your first article|Your first article]] ([[Wikipedia:Article wizard|article wizard]])
| group4 = [[Help:Getting started|Getting started]] {{Define|(?)|Introductions and tutorials}}
| list4 =
* [[Wikipedia:Why create an account?|Why create an account?]]
*[[Help:Introduction|Introductions by topic]]
* [[Wikipedia:Graphics tutorials|Graphics tutorials]]
** [[Help:Pictures|Picture tutorial]]
** [[Wikipedia:IRC/Tutorial|IRC {{smaller|(live chat)}} tutorial]]
* [[Wikipedia:VisualEditor/User guide|VisualEditor user guide]]
| group5 = [[Wikipedia:Dos and don'ts|Dos and don'ts]] {{Define|(?)|Wikipedia policies, guidelines, and formatting standards in bullet points}}
| list5 =
* [[Wikipedia:Accessibility dos and don'ts|Accessibility]]
* [[Wikipedia:Biography dos and don'ts|Biographies]]
* [[Wikipedia:Biographies of living persons dos and don'ts|Biographies (living)]]
* [[Wikipedia:Categorization dos and don'ts|Categorization]]
* [[Wikipedia:Consensus dos and don'ts|Consensus]]
* [[Wikipedia:Talk dos and don'ts|Discussions]]
* [[Wikipedia:Disambiguation dos and don'ts|Disambiguation]]
* [[Wikipedia:Image dos and don'ts|Images]]
* [[Wikipedia:Lead dos and don'ts|Leads]]
* [[Wikipedia:Linking dos and don'ts|Links]]
* [[Wikipedia:List dos and don'ts|Lists]]
* [[Wikipedia:References dos and don'ts|References]]
* [[Wikipedia:Table dos and don'ts|Tables]]
* [[Wikipedia:Article title dos and don'ts|Titles (of articles)]]
| group7 = [[:Category:Wikipedia how-to|How-to pages]] and<br/>[[:Category:Wikipedia information pages|information pages]] {{Define|(?)|Topic specific informative and instructional pages}}
| list7 =
* [[Wikipedia:Guide to appealing blocks|Appealing blocks]]
* [[Wikipedia:Guide to deletion|Article deletion]]
* [[Help:Category|Categories]]
* [[Help:Citations quick reference|Citations/references]]
** [[Help:Referencing for beginners|Referencing for beginners]]
** [[Help:Citation Style 1|Citation Style 1]]
** [[Help:Cite errors|Cite errors]]
** [[Help:References and page numbers|References and page numbers]]
* [[Help:Convert|Convert]]
* [[Help:Diff|Diff]]
* [[Help:Editing|Editing]]
** [[Help:Minor edit|Minor edit]]
** [[Help:Edit toolbar|toolbar]]
** [[Help:Edit conflict|edit conflict]]
* [[Help:Find sources|Find sources]]
* [[Help:Files|Files]]
* [[Help:Footnotes|Footnotes]]
* [[Wikipedia:Guide to image deletion|Image deletion]]
* [[Help:Infobox|Infoboxes]]
* [[Help:Link|Linking]] ([[Help:Link color|link color]])
* [[Help:Logging in|Logging in]]
* [[Wikipedia:Merging|Merging]]
* [[Help:Page name|Page name]]
** [[Help:How to move a page|Renaming pages]]
* [[Help:Redirect|Redirect]]
* [[Help:Reset password|Passwords]]
** [[Help:Email confirmation|Email confirmation]]
* [[Help:Reverting|Reverting]]
** [[Help:Simple guide to vandalism cleanup|Simple vandalism cleanup]]
* [[Help:Talk pages|Talk pages]] ([[Help:Archiving a talk page|archiving]]
*[[Help:Archiving (plain and simple)|simple archiving]])
* [[Help:User contributions|User contributions]]
* [[Help:WP search protocol|WP search protocol]]
| group8 = [[Wiki markup|Coding]] {{Define|(?)|Wikitext information consists of the syntax used to format a page}}
| list8 =
* [[Help:Wikitext|Wiki markup]]
* [[Help:Barchart|Barchart]]s
* [[Help:Calculation|Calculation]]s
* [[Help:Special characters|Characters]]
* [[Help:Columns|Column]]s
* [[Wikipedia:Manual of Style/Hidden text|Hidden text]]
* [[Help:HTML in wikitext|HTML]]
* [[Help:List|Lists]]
* [[Help:Magic words|Magic words]]
* [[Help:Musical symbols|Music symbols]]
* [[Help:Section|Sections]]
* [[Help:Sound file markup|Sounds]]
* [[Help:Table|Tables]]
* [[Help:Template|Template]]s
* [[Wikipedia:Transclusion|Transclusion]]
* [[Help:URL|URL]]
* [[Help:Visual file markup|Visual files]]
| group9 = [[Wikipedia:Directories and indexes|Directories]] {{Define|(?)|Wikipedia's directories and indexes}}
| list9 =
* [[Wikipedia:Wikipedia abbreviations|Abbreviations]]
*[[Wikipedia:Contents|Contents]] <small>(Encyclopedia proper)</small>
* [[Wikipedia:Department directory|Departments]]
* [[Wikipedia:Editor's index to Wikipedia|Editor's index]]
* [[Wikipedia:Essay directory|Essays]]
* [[Wikipedia:FAQ/Index|FAQs]]
* [[Wikipedia:Glossary|Glossary]]
* [[Wikipedia:List of guidelines|Guidelines]]
* [[Wikipedia:Manual of Style/Contents|Manual of Style ]]
* [[Wikipedia:List of policies|Policies]]
*[[Wikipedia:Maintenance|Tasks]]
* [[Wikipedia:Tips|Tips]]
* [[Wikipedia:Tools|Tools]]
| below =''' [[Help: Wikipedia: The Missing Manual|Missing Manual]]'''
----
{{edit|Special:MyTalk|'''Ask for help on your talk page'''|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}} '''{{Define|(?)|
If you need help, you can use this link to ask a question on your talk page; a volunteer will visit you there shortly!}}'''
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
</noinclude>
b936e44c69277aadf07ff0d3d227e49775c7d720
Template:Infobox settlement/styles.css
10
1429
2764
2021-09-08T20:43:54Z
w>Izno
0
fix .maptable line
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-settlement {
width: 23em;
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-settlement td,
.ib-settlement th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-settlement .mergedtoprow .infobox-full-data,
.ib-settlement .mergedtoprow .infobox-header,
.ib-settlement .mergedtoprow .infobox-data,
.ib-settlement .mergedtoprow .infobox-label,
.ib-settlement .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-settlement .mergedrow .infobox-full-data,
.ib-settlement .mergedrow .infobox-data,
.ib-settlement .mergedrow .infobox-label {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-settlement .mergedbottomrow .infobox-full-data,
.ib-settlement .mergedbottomrow .infobox-data,
.ib-settlement .mergedbottomrow .infobox-label {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-settlement .maptable {
border: 0;
padding: 0;
}
.ib-settlement .infobox-header,
.ib-settlement .infobox-below {
text-align: left;
}
.ib-settlement .infobox-above {
font-size: 125%;
line-height: 1.3em;
}
.ib-settlement .infobox-subheader {
background-color: #cddeff;
font-weight: bold;
}
.ib-settlement-native {
font-weight: normal;
padding-top: 0.2em;
}
.ib-settlement-other-name {
font-size: 78%;
}
.ib-settlement-official {
font-weight: bold;
}
.ib-settlement-caption {
padding: 0.3em 0 0 0;
}
.ib-settlement-caption-link {
padding: 0.2em 0;
}
.ib-settlement-nickname {
display: inline;
}
.ib-settlement-fn {
font-weight: normal;
display: inline;
}
bcad428737f5a62eb7bced25a38fccbd46dde186
Template:Years or months ago
10
1461
2796
2021-09-09T05:28:30Z
w>GPHemsley
0
Fix 1-2 years in the future at year magnitude
wikitext
text/x-wiki
<includeonly>{{#ifexpr:{{#if:{{{2|}}}|1|0}}=0 or abs( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12)) >= 12
|<!-- in years -->{{#expr:floor(abs( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ))}} {{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0
|<!-- future -->{{#ifexpr:ceil( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ) = -1|year's|years'}}
|<!-- past/current -->{{#ifexpr:floor( ( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) ) / 12 ) = 1|year|years}}
}}
|<!-- in months -->{{#expr:abs( ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) )}} {{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0
|<!-- future -->{{#ifexpr: ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) = -1|month's|months'}}
|<!-- past/current -->{{#ifexpr: ({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) = 1|month|months}}
}}
}} {{#ifexpr:({{{4|{{CURRENTMONTH}}}}}+{{{3|{{CURRENTYEAR}}}}}*12) - ({{{2|{{CURRENTMONTH}}}}}+{{{1|{{CURRENTYEAR}}}}}*12) < 0|time|ago}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
1c004998622fa0e92c3422d828e3b87bb5f5a948
Template:Infobox country/styles.css
10
244
1265
2021-09-09T08:52:58Z
wikipedia>Goszei
0
use default
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-country {
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-country td,
.ib-country th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-country .mergedtoprow .infobox-header,
.ib-country .mergedtoprow .infobox-label,
.ib-country .mergedtoprow .infobox-data,
.ib-country .mergedtoprow .infobox-full-data,
.ib-country .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-country .mergedrow .infobox-label,
.ib-country .mergedrow .infobox-data,
.ib-country .mergedrow .infobox-full-data {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-country .mergedbottomrow .infobox-label,
.ib-country .mergedbottomrow .infobox-data,
.ib-country .mergedbottomrow .infobox-full-data {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-country .infobox-header {
text-align: left;
}
.ib-country .infobox-above {
font-size: 125%;
line-height: 1.2;
}
.ib-country-names {
padding-top: 0.25em;
font-weight: normal;
}
.ib-country-name-style {
display: inline;
}
.ib-country .infobox-image {
padding: 0.5em 0;
}
.ib-country-anthem {
border-top: 1px solid #a2a9b1;
padding-top: 0.5em;
margin-top: 0.5em;
}
.ib-country-map-caption {
position: relative;
top: 0.3em;
}
.ib-country-largest,
.ib-country-lang {
font-weight: normal;
}
.ib-country-ethnic,
.ib-country-religion,
.ib-country-sovereignty {
font-weight: normal;
display: inline;
}
.ib-country-fake-li {
text-indent: -0.9em;
margin-left: 1.2em;
font-weight: normal;
}
.ib-country-fake-li2 {
text-indent: 0.5em;
margin-left: 1em;
font-weight: normal;
}
.ib-country-website {
line-height: 11pt;
}
.ib-country-map-caption3 {
position: relative;
top: 0.3em;
}
.ib-country-fn {
text-align: left;
margin: 0 auto;
}
.ib-country-fn-alpha {
list-style-type: lower-alpha;
margin-left: 1em;
}
.ib-country-fn-num {
margin-left: 1em;
}
3112a323cf9739e86afd52812cd38e196abfae7d
Module:Redirect
828
91
229
2021-09-10T07:46:37Z
wikipedia>Johnuniq
0
restore p.getTargetFromText which is used by [[Module:RfD]] which is causing "Lua error in Module:RfD at line 87: attempt to call upvalue 'getTargetFromText' (a nil value)"
Scribunto
text/plain
-- This module provides functions for getting the target of a redirect page.
local p = {}
-- Gets a mw.title object, using pcall to avoid generating script errors if we
-- are over the expensive function count limit (among other possible causes).
local function getTitle(...)
local success, titleObj = pcall(mw.title.new, ...)
if success then
return titleObj
else
return nil
end
end
-- Gets the name of a page that a redirect leads to, or nil if it isn't a
-- redirect.
function p.getTargetFromText(text)
local target = string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]"
) or string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]"
)
return target and mw.uri.decode(target, 'PATH')
end
-- Gets the target of a redirect. If the page specified is not a redirect,
-- returns nil.
function p.getTarget(page, fulltext)
-- Get the title object. Both page names and title objects are allowed
-- as input.
local titleObj
if type(page) == 'string' or type(page) == 'number' then
titleObj = getTitle(page)
elseif type(page) == 'table' and type(page.getContent) == 'function' then
titleObj = page
else
error(string.format(
"bad argument #1 to 'getTarget'"
.. " (string, number, or title object expected, got %s)",
type(page)
), 2)
end
if not titleObj then
return nil
end
local targetTitle = titleObj.redirectTarget
if targetTitle then
if fulltext then
return targetTitle.fullText
else
return targetTitle.prefixedText
end
else
return nil
end
end
--[[
-- Given a single page name determines what page it redirects to and returns the
-- target page name, or the passed page name when not a redirect. The passed
-- page name can be given as plain text or as a page link.
--
-- Returns page name as plain text, or when the bracket parameter is given, as a
-- page link. Returns an error message when page does not exist or the redirect
-- target cannot be determined for some reason.
--]]
function p.luaMain(rname, bracket, fulltext)
if type(rname) ~= "string" or not rname:find("%S") then
return nil
end
bracket = bracket and "[[%s]]" or "%s"
rname = rname:match("%[%[(.+)%]%]") or rname
local target = p.getTarget(rname, fulltext)
local ret = target or rname
ret = getTitle(ret)
if ret then
if fulltext then
ret = ret.fullText
else
ret = ret.prefixedText
end
return bracket:format(ret)
else
return nil
end
end
-- Provides access to the luaMain function from wikitext.
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
return p.luaMain(args[1], args.bracket, args.fulltext) or ''
end
-- Returns true if the specified page is a redirect, and false otherwise.
function p.luaIsRedirect(page)
local titleObj = getTitle(page)
if not titleObj then
return false
end
if titleObj.isRedirect then
return true
else
return false
end
end
-- Provides access to the luaIsRedirect function from wikitext, returning 'yes'
-- if the specified page is a redirect, and the blank string otherwise.
function p.isRedirect(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
if p.luaIsRedirect(args[1]) then
return 'yes'
else
return ''
end
end
return p
a224c45940343d66f49a78b0a39b2045e2c45d20
Template:Braces
10
853
1888
2021-09-12T08:18:17Z
wikipedia>Ans
0
not use <nowiki>, so that it can be expanded by Lua frame:preprocess()
wikitext
text/x-wiki
{{#if:{{{code|{{{tt|}}}}}}|<code>}}<!--
-->{{((}}{{{1|{{thin space}}}}}<!--
-->{{#if:{{{2|}}} |{{thin space}}{{!}}{{thin space}}{{{2}}}}}<!--
-->{{#if:{{{3|}}} |{{thin space}}{{!}}{{thin space}}{{{3}}}}}<!--
-->{{#if:{{{4|}}} |{{thin space}}{{!}}{{thin space}}{{{4}}}}}<!--
-->{{#if:{{{5|}}} |{{thin space}}{{!}}{{thin space}}{{{5}}}}}<!--
-->{{#if:{{{6|}}} |{{thin space}}{{!}}{{thin space}}{{{6}}}}}<!--
-->{{#if:{{{7|}}} |{{thin space}}{{!}}{{thin space}}{{{7}}}}}<!--
-->{{#if:{{{8|}}} |{{thin space}}{{!}}{{thin space}}{{{8}}}}}<!--
-->{{#if:{{{9|}}} |{{thin space}}{{!}}{{thin space}}{{{9}}}}}<!--
-->{{))}}<!--
-->{{#if:{{{code|{{{tt|}}}}}}|</code>}}<noinclude>{{Documentation}}</noinclude>
74380d03f02b9bc8e318779cf6ef320eec5c3e56
Template:Infobox country/formernext/styles.css
10
561
1257
2021-09-15T14:37:42Z
wikipedia>Great Brightstar
0
Fix for mobile phone screen
sanitized-css
text/css
.ib-country-formernext {
width: 95%;
margin: 0 auto;
display: flex;
justify-content: center;
}
.ib-country-formernext > div {
min-width: 50%;
flex-grow: 1;
}
.ib-country-formernext table {
width: 100%;
}
/*
.ib-country-formernext caption {
font-weight: bold;
text-align: center;
}
*/
@media all and (max-width: 720px) {
body.skin-minerva .ib-country-formernext table {
display: table;
}
}
a0cc4f82f1cfcb3da5919ad63b7e9fc65b113823
Template:About
10
110
267
2021-09-16T00:56:50Z
wikipedia>Wbm1058
0
should implement in [[Module:About]]. Piped {{!}} links causing false positives.
wikitext
text/x-wiki
{{#invoke:about|about}}<noinclude>
{{Documentation}}
</noinclude>
34b07e47d9b8220bf56dd9882945ad464b21a731
Template:TOC right
10
1056
2310
2021-09-17T13:06:17Z
wikipedia>Izno
0
don't emit style unless width exists
wikitext
text/x-wiki
<templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!--
--><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" {{#if:{{{width|{{{1|}}}}}}|style="width: {{{width|{{{1}}}}}};"}}>__TOC__</div><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
67c60b46e441afa40d8c4c1227aa6580a0cda2e9
Template:TOC right/styles.css
10
1057
2312
2021-09-17T13:56:38Z
wikipedia>Izno
0
do the same thing I apparently did to tocleft much earlier
sanitized-css
text/css
/* {{pp-template}} */
/* The TOC is hidden on Minerva (mobile skin) for width < 720px so must also hide this wrapper */
@media all and (max-width: 720px) {
body.skin-minerva .tocright {
display: none;
}
.tocright {
width: 100% !important; /* fix the inline width while at small resolution */
}
}
@media all and (min-width: 720px) {
.tocright {
float: right;
clear: right;
width: auto;
margin: 0 0 0.5em 1em;
}
.tocright-clear-left {
clear: left;
}
.tocright-clear-both {
clear: both;
}
.tocright-clear-none {
clear: none;
}
}
60435a52ddabf7eb321fa80dbf78c0d63d13f95b
Template:R/where
10
1368
2703
2021-09-17T17:59:43Z
w>MusikBot II
0
Protected "[[Template:R/where]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 30280 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<!-- Only for internal use: |plural=pages |singular=page |location=in-source-location |spacing=character -->{{#if:{{{plural|}}}|{{{plural|}}}{{#if:{{{singular|}}}|,{{{spacing|}}}[{{{singular|}}}]}}|{{{singular|}}}}}{{#if:{{{location|}}}|{{#if:{{{plural|}}}{{{singular|}}}|,{{{spacing|}}}}}{{{location|}}}}}<noinclude>
{{documentation}}
</noinclude>
989c22572564c1eff6ca2e1f6e95d6b4faba5c3a
Template:Navbar-header/styles.css
10
1665
3079
2021-09-19T17:16:02Z
wikipedia>Izno
0
Protected "[[Template:Navbar-header/styles.css]]" ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
sanitized-css
text/css
/* {{pp|small=y}} */
.navbar-header {
text-align: center;
position: relative;
white-space: nowrap;
}
.navbar-header .navbar {
position: absolute;
right: 0;
top: 0;
margin: 0 5px;
}
cb7fd125aebdbd99d22411362a9b5007e97c32be
Template:PAGENAMETDOC
10
1295
2630
2021-09-19T22:49:59Z
w>JJMC89 bot III
0
Moving [[:Category:Wikipedia variable-like templates]] to [[:Category:Wikipedia magic word templates]] per [[Wikipedia:Categories for discussion/Log/2021 September 11#Category:Wikipedia variable-like templates]]
wikitext
text/x-wiki
{{#ifeq:{{#invoke:String|find|{{FULLPAGENAME}}|/sandbox%d*$|plain=false}}|0|{{{{#if:{{{1|}}}||FULL}}BASEPAGENAME}}|{{{{#if:{{{1|}}}||FULL}}PAGENAME}}}}<noinclude>
{{Documentation|content=
This template returns the current {{Tlx|FULLBASEPAGENAME}}, unless the title ends in <code>/sandbox</code> plus any number of digits, in which case it returns the {{tlx|FULLPAGENAME}}. It is primarily meant for demonstrating the sandbox version of templates in their documentation.
This template takes one numbered parameter (<code>1</code>); if anything is in this parameter then it will return <code>{{BASEPAGENAME}}</code> and <code>{{PAGENAME}}</code>, which have no namespace prefix.
}}
[[Category:Wikipedia magic word templates]]
</noinclude>
ae0c3ac1a7415671c46f970d5faad2fd708640b0
Module:Sidebar/styles.css
828
44
83
2021-09-20T01:15:45Z
wikipedia>Goszei
0
self-rv, it's a little tight
text
text/plain
/* {{pp-template}} */
/* TODO: Invert width design to be "mobile first" */
.sidebar {
/* TODO: Ask if we should have max-width 22em instead */
width: 22em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
/* @noflip */
margin: 0.5em 0 1em 1em;
background: #f8f9fa;
border: 1px solid #aaa;
padding: 0.2em;
text-align: center;
line-height: 1.4em;
font-size: 88%;
border-collapse: collapse;
/* Timeless has display: none on .nomobile at mobile resolutions, so we
* unhide it with display: table and let precedence and proximity win.
*/
display: table;
}
/* Unfortunately, so does Minerva desktop, except Minerva drops an
* !important on the declaration. So we have to be mean for Minerva users.
* Mobile removes the element entirely with `wgMFRemovableClasses` in
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/
wmf-config/InitialiseSettings.php#L16992
* which is why displaying it categorically with display: table works.
* We don't really want to expose the generic user in the wild on mobile to have
* to deal with sidebars. (Maybe the ones with collapsible lists, so that
* might be an improvement. That is blocked on [[:phab:T111565]].)
*/
body.skin-minerva .sidebar {
display: table !important;
/* also, minerva is way too aggressive about other stylings on tables.
* TODO remove when this template gets moved to a div. plans on talk page.
* We always float right on Minerva because that's a lot of extra CSS
* otherwise. */
float: right !important;
margin: 0.5em 0 1em 1em !important;
}
.sidebar-subgroup {
width: 100%;
margin: 0;
border-spacing: 0;
}
.sidebar-left {
/* @noflip */
float: left;
/* @noflip */
clear: left;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-none {
float: none;
clear: both;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-outer-title {
padding: 0 0.4em 0.2em;
font-size: 125%;
line-height: 1.2em;
font-weight: bold;
}
.sidebar-top-image {
padding: 0.4em;
}
.sidebar-top-caption,
.sidebar-pretitle-with-top-image,
.sidebar-caption {
padding: 0.2em 0.4em 0;
line-height: 1.2em;
}
.sidebar-pretitle {
padding: 0.4em 0.4em 0;
line-height: 1.2em;
}
.sidebar-title,
.sidebar-title-with-pretitle {
padding: 0.2em 0.8em;
font-size: 145%;
line-height: 1.2em;
}
.sidebar-title-with-pretitle {
padding: 0.1em 0.4em;
}
.sidebar-image {
padding: 0.2em 0.4em 0.4em;
}
.sidebar-heading {
padding: 0.1em 0.4em;
}
.sidebar-content {
padding: 0 0.5em 0.4em;
}
.sidebar-content-with-subgroup {
padding: 0.1em 0.4em 0.2em;
}
.sidebar-above,
.sidebar-below {
padding: 0.3em 0.8em;
font-weight: bold;
}
.sidebar-collapse .sidebar-above,
.sidebar-collapse .sidebar-below {
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.sidebar-navbar {
text-align: right;
font-size: 115%;
padding: 0 0.4em 0.4em;
}
.sidebar-list-title {
padding: 0 0.4em;
text-align: left;
font-weight: bold;
line-height: 1.6em;
font-size: 105%;
}
/* centered text with mw-collapsible headers is finicky */
.sidebar-list-title-c {
padding: 0 0.4em;
text-align: center;
margin: 0 3.3em;
}
@media (max-width: 720px) {
/* users have wide latitude to set arbitrary width and margin :(
"Super-specific" selector to prevent overriding this appearance by
lower level sidebars too */
body.mediawiki .sidebar {
width: 100% !important;
clear: both;
float: none !important; /* Remove when we div based; Minerva is dumb */
margin-left: 0 !important;
margin-right: 0 !important;
}
/* TODO: We might consider making all links wrap at small resolutions and then
* only introduce nowrap at higher resolutions. Do when we invert the media
* query.
*/
}
7d621b35a37807a103b59075851fe36201204ceb
Template:Country data Malta
10
1216
2545
2021-09-25T06:38:18Z
w>Paine Ellsworth
0
per edit request on talk page - include unofficial flag variant - 1943
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Malta
| flag alias = Flag of Malta.svg
| flag alias-1875 = Flag of Malta (1875–1898).svg
| flag alias-1898 = Flag of Malta (1898–1923).svg
| flag alias-1923 = Flag of Malta (1923–1943).svg
| flag alias-1943 = Flag of Malta (1943–1964).svg
| flag alias-unofficial-1943 = Flag of Malta (1943).svg
| flag alias-colonial = Flag of Malta (1943-1964).svg <!-- deprecated, but in use -->
| flag alias-civil = Civil Ensign of Malta.svg
| link alias-naval = Maritime Squadron of the Armed Forces of Malta
| link alias-navy = Maritime Squadron of the Armed Forces of Malta
| flag alias-navy =Naval Jack of Malta.svg
| flag alias-1814 = 19th Century Flag of Malta.svg
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1875
| var2 = 1898
| var3 = 1923
| var4 = 1943
| var5 = unofficial-1943
| var6 = civil
| var7 = 1814
| redir1 = MLT
| related1 = Sovereign Military Order of Malta
</noinclude>
}}
abdbfec3b581828dc7c870e10ed7e938c73d9857
Template:R
10
1369
2704
2021-09-25T21:49:10Z
w>Matthiaspaul
0
updated
wikitext
text/x-wiki
<includeonly><!-- ### 1 ###
-->{{r/ref|{{{name1|{{{name|{{{n1|{{{n|{{{1|}}}}}}}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction1|{{{direction|{{{dir1|{{{dir|}}}}}}}}}}}}
|page{{#if:{{{page1|{{{page|{{{p1|{{{1p|{{{p|}}}}}}}}}}}}}}}||NULL}}={{{page1|{{{page|{{{p1|{{{1p|{{{p|}}}}}}}}}}}}}}}
|pages{{#if:{{{pages1|{{{pages|{{{pp1|{{{1pp|{{{pp|}}}}}}}}}}}}}}}||NULL}}={{{pages1|{{{pages|{{{pp1|{{{1pp|{{{pp|}}}}}}}}}}}}}}}
|location{{#if:{{{location1|{{{location|{{{loc1|{{{1loc|{{{loc|{{{at1|{{{at|}}}}}}}}}}}}}}}}}}}}}||NULL}}={{{location1|{{{location|{{{loc1|{{{1loc|{{{loc|{{{at1|{{{at|}}}}}}}}}}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page1|{{{quotation-page|{{{quote-page1|{{{quote-page|{{{qp1|{{{qp|}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-page1|{{{quotation-page|{{{quote-page1|{{{quote-page|{{{qp1|{{{qp|}}}}}}}}}}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages1|{{{quotation-pages|{{{quote-pages1|{{{quote-pages|{{{qpp1|{{{qpp|}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-pages1|{{{quotation-pages|{{{quote-pages1|{{{quote-pages|{{{qpp1|{{{qpp|}}}}}}}}}}}}}}}}}}
|quote-location{{#if:{{{quotation-location1|{{{quotation-location|{{{quote-location1|{{{quote-location|{{{quote-loc1|{{{quote-loc|{{{quote-at1|{{{quote-at|}}}}}}}}}}}}}}}}}}}}}}}}||NULL}}={{{quotation-location1|{{{quotation-location|{{{quote-location1|{{{quote-location|{{{quote-loc1|{{{quote-loc|{{{quote-at1|{{{quote-at|}}}}}}}}}}}}}}}}}}}}}}}}
|quote={{{quotation1|{{{quotation|{{{quote1|{{{quote|{{{q1|{{{q|}}}}}}}}}}}}}}}}}}
|language={{{quotation-language1|{{{quotation-language|{{{quote-language1|{{{quote-language|{{{quotation-lang1|{{{quotation-lang|{{{quote-lang1|{{{quote-lang|{{{ql1|{{{ql|{{{language1|{{{language|{{{lang1|{{{language|{{{l1|{{{l|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation1|{{{translation-quotation|{{{trans-quotation1|{{{trans-quotation|{{{translation-quote1|{{{translation-quote|{{{trans-quote1|{{{trans-quote|{{{tq1|{{{tq|{{{translation1|{{{translation|{{{trans1|{{{trans|{{{t1|{{{t|{{{xlat1|{{{xlat|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite1|{{{quotation-cite|{{{quote-cite1|{{{quote-cite|{{{qc1|{{{qc|}}}}}}}}}}}}}}}}}}
|reference={{{reference1|{{{references|{{{reference|{{{notes|{{{note|{{{content|{{{text|{{{refn1|{{{refn|{{{refs|{{{r1|{{{r|}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
|annotation={{{annotation1|{{{annotation|{{{annot1|{{{annot|{{{a1|{{{a|}}}}}}}}}}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript|{{{postscript1|{{{ps|{{{ps1|{{{1ps|}}}}}}}}}}}}}}}
|section={{{section1|{{{section|{{{sec1|{{{sec|{{{s1|{{{s|}}}}}}}}}}}}}}}}}}
|needed-reason={{{needed-reason1|{{{needed-reason|{{{needed1|{{{needed|{{{reason|}}}}}}}}}}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref1|{{{1ref|{{{ref|{{{id1|{{{id|}}}}}}}}}}}}}}}
|link-id={{{link-id1|{{{link-id|}}}}}}
|debug={{{debug|}}}}}<!-- ### 2 ###
-->{{#if:{{{name2|{{{n2|{{{2|}}}}}}}}}|{{r/ref|{{{name2|{{{n2|{{{2|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction2|{{{dir2|}}}}}}
|page{{#if:{{{page2|{{{p2|{{{2p|}}}}}}}}}||NULL}}={{{page2|{{{p2|{{{2p|}}}}}}}}}
|pages{{#if:{{{pages2|{{{pp2|{{{2pp|}}}}}}}}}||NULL}}={{{pages2|{{{pp2|{{{2pp|}}}}}}}}}
|location{{#if:{{{location2|{{{loc2|{{{2loc|{{{at2|}}}}}}}}}}}}||NULL}}={{{location2|{{{loc2|{{{2loc|{{{at2|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page2|{{{quote-page2|{{{qp2|}}}}}}}}}||NULL}}={{{quotation-page2|{{{quote-page2|{{{qp2|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages2|{{{quote-pages2|{{{qpp2|}}}}}}}}}||NULL}}={{{quotation-pages2|{{{quote-pages2|{{{qpp2|}}}}}}}}}
|quote-location{{#if:{{{quotation-location2|{{{quote-location2|{{{quote-loc2|{{{quote-at2|}}}}}}}}}}}}||NULL}}={{{quotation-location2|{{{quote-location2|{{{quote-loc2|{{{quote-at2|}}}}}}}}}}}}
|quote={{{quotation2|{{{quote2|{{{q2|}}}}}}}}}
|language={{{quotation-language2|{{{quote-language2|{{{quotation-lang2|{{{quote-lang2|{{{ql2|{{{language2|{{{lang2|{{{l2|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation2|{{{trans-quotation2|{{{translation-quote2|{{{trans-quote2|{{{tq2|{{{translation2|{{{trans2|{{{t2|{{{xlat2|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite2|{{{quote-cite2|{{{qc2|}}}}}}}}}
|reference={{{reference2|{{{refn2|{{{r2|}}}}}}}}}
|annotation={{{annotation2|{{{annot2|{{{a2|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript2|{{{ps2|{{{2ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section2||{{{sec2|{{{s2|}}}}}}}}}
|needed-reason={{{needed-reason2|{{{needed2|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref2|{{{2ref|{{{id2|}}}}}}}}}
|link-id={{{link-id2|}}}
|debug={{{debug|}}}}}<!-- ### 3 ###
-->{{#if:{{{name3|{{{n3|{{{3|}}}}}}}}}|{{r/ref|{{{name3|{{{n3|{{{3|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction3|{{{dir3|}}}}}}
|page{{#if:{{{page3|{{{p3|{{{3p|}}}}}}}}}||NULL}}={{{page3|{{{p3|{{{3p|}}}}}}}}}
|pages{{#if:{{{pages3|{{{pp3|{{{3pp|}}}}}}}}}||NULL}}={{{pages3|{{{pp3|{{{3pp|}}}}}}}}}
|location{{#if:{{{location3|{{{loc3|{{{3loc|{{{at3|}}}}}}}}}}}}||NULL}}={{{location3|{{{loc3|{{{3loc|{{{at3|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page3|{{{quote-page3|{{{qp3|}}}}}}}}}||NULL}}={{{quotation-page3|{{{quote-page3|{{{qp3|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages3|{{{quote-pages3|{{{qpp3|}}}}}}}}}||NULL}}={{{quotation-pages3|{{{quote-pages3|{{{qpp3|}}}}}}}}}
|quote-location{{#if:{{{quotation-location3|{{{quote-location3|{{{quote-loc3|{{{quote-at3|}}}}}}}}}}}}||NULL}}={{{quotation-location3|{{{quote-location3|{{{quote-loc3|{{{quote-at3|}}}}}}}}}}}}
|quote={{{quotation3|{{{quote3|{{{q3|}}}}}}}}}
|language={{{quotation-language3|{{{quote-language3|{{{quotation-lang3|{{{quote-lang3|{{{ql3|{{{language3|{{{lang3|{{{l3|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation3|{{{trans-quotation3|{{{translation-quote3|{{{trans-quote3|{{{tq3|{{{translation3|{{{trans3|{{{t3|{{{xlat3|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite3|{{{quote-cite3|{{{qc3|}}}}}}}}}
|reference={{{reference3|{{{refn3|{{{r3|}}}}}}}}}
|annotation={{{annotation3|{{{annot3|{{{a3|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript3|{{{ps3|{{{3ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section3||{{{sec3|{{{s3|}}}}}}}}}
|needed-reason={{{needed-reason3|{{{needed3|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref3|{{{3ref|{{{id3|}}}}}}}}}
|link-id={{{link-id3|}}}
|debug={{{debug|}}}}}<!-- ### 4 ###
-->{{#if:{{{name4|{{{n4|{{{4|}}}}}}}}}|{{r/ref|{{{name4|{{{n4|{{{4|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction4|{{{dir4|}}}}}}
|page{{#if:{{{page4|{{{p4|{{{4p|}}}}}}}}}||NULL}}={{{page4|{{{p4|{{{4p|}}}}}}}}}
|pages{{#if:{{{pages4|{{{pp4|{{{4pp|}}}}}}}}}||NULL}}={{{pages4|{{{pp4|{{{4pp|}}}}}}}}}
|location{{#if:{{{location4|{{{loc4|{{{4loc|{{{at4|}}}}}}}}}}}}||NULL}}={{{location4|{{{loc4|{{{4loc|{{{at4|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page4|{{{quote-page4|{{{qp4|}}}}}}}}}||NULL}}={{{quotation-page4|{{{quote-page4|{{{qp4|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages4|{{{quote-pages4|{{{qpp4|}}}}}}}}}||NULL}}={{{quotation-pages4|{{{quote-pages4|{{{qpp4|}}}}}}}}}
|quote-location{{#if:{{{quotation-location4|{{{quote-location4|{{{quote-loc4|{{{quote-at4|}}}}}}}}}}}}||NULL}}={{{quotation-location4|{{{quote-location4|{{{quote-loc4|{{{quote-at4|}}}}}}}}}}}}
|quote={{{quotation4|{{{quote4|{{{q4|}}}}}}}}}
|language={{{quotation-language4|{{{quote-language4|{{{quotation-lang4|{{{quote-lang4|{{{ql4|{{{language4|{{{lang4|{{{l4|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation4|{{{trans-quotation4|{{{translation-quote4|{{{trans-quote4|{{{tq4|{{{translation4|{{{trans4|{{{t4|{{{xlat4|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite4|{{{quote-cite4|{{{qc4|}}}}}}}}}
|reference={{{reference4|{{{refn4|{{{r4|}}}}}}}}}
|annotation={{{annotation4|{{{annot4|{{{a4|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript4|{{{ps4|{{{4ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section4||{{{sec4|{{{s4|}}}}}}}}}
|needed-reason={{{needed-reason4|{{{needed4|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref4|{{{4ref|{{{id4|}}}}}}}}}
|link-id={{{link-id4|}}}
|debug={{{debug|}}}}}<!-- ### 5 ###
-->{{#if:{{{name5|{{{n5|{{{5|}}}}}}}}}|{{r/ref|{{{name5|{{{n5|{{{5|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction5|{{{dir5|}}}}}}
|page{{#if:{{{page5|{{{p5|{{{5p|}}}}}}}}}||NULL}}={{{page5|{{{p5|{{{5p|}}}}}}}}}
|pages{{#if:{{{pages5|{{{pp5|{{{5pp|}}}}}}}}}||NULL}}={{{pages5|{{{pp5|{{{5pp|}}}}}}}}}
|location{{#if:{{{location5|{{{loc5|{{{5loc|{{{at5|}}}}}}}}}}}}||NULL}}={{{location5|{{{loc5|{{{5loc|{{{at5|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page5|{{{quote-page5|{{{qp5|}}}}}}}}}||NULL}}={{{quotation-page5|{{{quote-page5|{{{qp5|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages5|{{{quote-pages5|{{{qpp5|}}}}}}}}}||NULL}}={{{quotation-pages5|{{{quote-pages5|{{{qpp5|}}}}}}}}}
|quote-location{{#if:{{{quotation-location5|{{{quote-location5|{{{quote-loc5|{{{quote-at5|}}}}}}}}}}}}||NULL}}={{{quotation-location5|{{{quote-location5|{{{quote-loc5|{{{quote-at5|}}}}}}}}}}}}
|quote={{{quotation5|{{{quote5|{{{q5|}}}}}}}}}
|language={{{quotation-language5|{{{quote-language5|{{{quotation-lang5|{{{quote-lang5|{{{ql5|{{{language5|{{{lang5|{{{l5|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation5|{{{trans-quotation5|{{{translation-quote5|{{{trans-quote5|{{{tq5|{{{translation5|{{{trans5|{{{t5|{{{xlat5|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite5|{{{quote-cite5|{{{qc5|}}}}}}}}}
|reference={{{reference5|{{{refn5|{{{r5|}}}}}}}}}
|annotation={{{annotation5|{{{annot5|{{{a5|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript5|{{{ps5|{{{5ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section5||{{{sec5|{{{s5|}}}}}}}}}
|needed-reason={{{needed-reason5|{{{needed5|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref5|{{{5ref|{{{id5|}}}}}}}}}
|link-id={{{link-id5|}}}
|debug={{{debug|}}}}}<!-- ### 6 ###
-->{{#if:{{{name6|{{{n6|{{{6|}}}}}}}}}|{{r/ref|{{{name6|{{{n6|{{{6|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction6|{{{dir6|}}}}}}
|page{{#if:{{{page6|{{{p6|{{{6p|}}}}}}}}}||NULL}}={{{page6|{{{p6|{{{6p|}}}}}}}}}
|pages{{#if:{{{pages6|{{{pp6|{{{6pp|}}}}}}}}}||NULL}}={{{pages6|{{{pp6|{{{6pp|}}}}}}}}}
|location{{#if:{{{location6|{{{loc6|{{{6loc|{{{at6|}}}}}}}}}}}}||NULL}}={{{location6|{{{loc6|{{{6loc|{{{at6|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page6|{{{quote-page6|{{{qp6|}}}}}}}}}||NULL}}={{{quotation-page6|{{{quote-page6|{{{qp6|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages6|{{{quote-pages6|{{{qpp6|}}}}}}}}}||NULL}}={{{quotation-pages6|{{{quote-pages6|{{{qpp6|}}}}}}}}}
|quote-location{{#if:{{{quotation-location6|{{{quote-location6|{{{quote-loc6|{{{quote-at6|}}}}}}}}}}}}||NULL}}={{{quotation-location6|{{{quote-location6|{{{quote-loc6|{{{quote-at6|}}}}}}}}}}}}
|quote={{{quotation6|{{{quote6|{{{q6|}}}}}}}}}
|language={{{quotation-language6|{{{quote-language6|{{{quotation-lang6|{{{quote-lang6|{{{ql6|{{{language6|{{{lang6|{{{l6|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation6|{{{trans-quotation6|{{{translation-quote6|{{{trans-quote6|{{{tq6|{{{translation6|{{{trans6|{{{t6|{{{xlat6|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite6|{{{quote-cite6|{{{qc6|}}}}}}}}}
|reference={{{reference6|{{{refn6|{{{r6|}}}}}}}}}
|annotation={{{annotation6|{{{annot6|{{{a6|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript6|{{{ps6|{{{6ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section6||{{{sec6|{{{s6|}}}}}}}}}
|needed-reason={{{needed-reason6|{{{needed6|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref6|{{{6ref|{{{id6|}}}}}}}}}
|link-id={{{link-id6|}}}
|debug={{{debug|}}}}}<!-- ### 7 ###
-->{{#if:{{{name7|{{{n7|{{{7|}}}}}}}}}|{{r/ref|{{{name7|{{{n7|{{{7|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction7|{{{dir7|}}}}}}
|page{{#if:{{{page7|{{{p7|{{{7p|}}}}}}}}}||NULL}}={{{page7|{{{p7|{{{7p|}}}}}}}}}
|pages{{#if:{{{pages7|{{{pp7|{{{7pp|}}}}}}}}}||NULL}}={{{pages7|{{{pp7|{{{7pp|}}}}}}}}}
|location{{#if:{{{location7|{{{loc7|{{{7loc|{{{at7|}}}}}}}}}}}}||NULL}}={{{location7|{{{loc7|{{{loc7|{{{at7|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page7|{{{quote-page7|{{{qp7|}}}}}}}}}||NULL}}={{{quotation-page7|{{{quote-page7|{{{qp7|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages7|{{{quote-pages7|{{{qpp7|}}}}}}}}}||NULL}}={{{quotation-pages7|{{{quote-pages7|{{{qpp7|}}}}}}}}}
|quote-location{{#if:{{{quotation-location7|{{{quote-location7|{{{quote-loc7|{{{quote-at7|}}}}}}}}}}}}||NULL}}={{{quotation-location7|{{{quote-location7|{{{quote-loc7|{{{quote-at7|}}}}}}}}}}}}
|quote={{{quotation7|{{{quote7|{{{q7|}}}}}}}}}
|language={{{quotation-language7|{{{quote-language7|{{{quotation-lang7|{{{quote-lang7|{{{ql7|{{{language7|{{{lang7|{{{l7|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation7|{{{trans-quotation7|{{{translation-quote7|{{{trans-quote7|{{{tq7|{{{translation7|{{{trans7|{{{t7|{{{xlat7|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite7|{{{quote-cite7|{{{qc7|}}}}}}}}}
|reference={{{reference7|{{{refn7|{{{r7|}}}}}}}}}
|annotation={{{annotation7|{{{annot7|{{{a7|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript7|{{{ps7|{{{7ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section7||{{{sec7|{{{s7|}}}}}}}}}
|needed-reason={{{needed-reason7|{{{needed7|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref7|{{{7ref|{{{id7|}}}}}}}}}
|link-id={{{link-id7|}}}
|debug={{{debug|}}}}}<!-- ### 8 ###
-->{{#if:{{{name8|{{{n8|{{{8|}}}}}}}}}|{{r/ref|{{{name8|{{{n8|{{{8|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction8|{{{dir8|}}}}}}
|page{{#if:{{{page8|{{{p8|{{{8p|}}}}}}}}}||NULL}}={{{page8|{{{p8|{{{8p|}}}}}}}}}
|pages{{#if:{{{pages8|{{{pp8|{{{8pp|}}}}}}}}}||NULL}}={{{pages8|{{{pp8|{{{8pp|}}}}}}}}}
|location{{#if:{{{location8|{{{loc8|{{{8loc|{{{at8|}}}}}}}}}}}}||NULL}}={{{location8|{{{loc8|{{{8loc|{{{at8|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page8|{{{quote-page8|{{{qp8|}}}}}}}}}||NULL}}={{{quotation-page8|{{{quote-page8|{{{qp8|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages8|{{{quote-pages8|{{{qpp8|}}}}}}}}}||NULL}}={{{quotation-pages8|{{{quote-pages8|{{{qpp8|}}}}}}}}}
|quote-location{{#if:{{{quotation-location8|{{{quote-location8|{{{quote-loc8|{{{quote-at8|}}}}}}}}}}}}||NULL}}={{{quotation-location8|{{{quote-location8|{{{quote-loc8|{{{quote-at8|}}}}}}}}}}}}
|quote={{{quotation8|{{{quote8|{{{q8|}}}}}}}}}
|language={{{quotation-language8|{{{quote-language8|{{{quotation-lang8|{{{quote-lang8|{{{ql8|{{{language8|{{{lang8|{{{l8|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation8|{{{trans-quotation8|{{{translation-quote8|{{{trans-quote8|{{{tq8|{{{translation8|{{{trans8|{{{t8|{{{xlat8|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite8|{{{quote-cite8|{{{qc8|}}}}}}}}}
|reference={{{reference8|{{{refn8|{{{r8|}}}}}}}}}
|annotation={{{annotation8|{{{annot8|{{{a8|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript8|{{{ps8|{{{8ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section8||{{{sec8|{{{s8|}}}}}}}}}
|needed-reason={{{needed-reason8|{{{needed8|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref8|{{{8ref|{{{id8|}}}}}}}}}
|link-id={{{link-id8|}}}
|debug={{{debug|}}}}}<!-- ### 9 ###
-->{{#if:{{{name9|{{{n9|{{{9|}}}}}}}}}|{{r/ref|{{{name9|{{{n9|{{{9|}}}}}}}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|direction={{{direction9|{{{dir9|}}}}}}
|page{{#if:{{{page9|{{{p9|{{{9p|}}}}}}}}}||NULL}}={{{page9|{{{p9|{{{9p|}}}}}}}}}
|pages{{#if:{{{pages9|{{{pp9|{{{9pp|}}}}}}}}}||NULL}}={{{pages9|{{{pp9|{{{9pp|}}}}}}}}}
|location{{#if:{{{location9|{{{loc9|{{{9loc|{{{at9|}}}}}}}}}}}}||NULL}}={{{location9|{{{loc9|{{{9loc|{{{at9|}}}}}}}}}}}}
|quote-page{{#if:{{{quotation-page9|{{{quote-page9|{{{qp9|}}}}}}}}}||NULL}}={{{quotation-page9|{{{quote-page9|{{{qp9|}}}}}}}}}
|quote-pages{{#if:{{{quotation-pages9|{{{quote-pages9|{{{qpp9|}}}}}}}}}||NULL}}={{{quotation-pages9|{{{quote-pages9|{{{qpp9|}}}}}}}}}
|quote-location{{#if:{{{quotation-location9|{{{quote-location9|{{{quote-loc9|{{{quote-at9|}}}}}}}}}}}}||NULL}}={{{quotation-location9|{{{quote-location9|{{{quote-loc9|{{{quote-at9|}}}}}}}}}}}}
|quote={{{quotation9|{{{quote9|{{{q9|}}}}}}}}}
|language={{{quotation-language9|{{{quote-language9|{{{quotation-lang9|{{{quote-lang9|{{{ql9|{{{language9|{{{lang9|{{{l9|}}}}}}}}}}}}}}}}}}}}}}}}
|translation={{{translation-quotation9|{{{trans-quotation9|{{{translation-quote9|{{{trans-quote9|{{{tq9|{{{translation9|{{{trans9|{{{t9|{{{xlat9|}}}}}}}}}}}}}}}}}}}}}}}}}}}
|quote-cite={{{quotation-cite9|{{{quote-cite9|{{{qc9|}}}}}}}}}
|reference={{{reference9|{{{refn9|{{{r9|}}}}}}}}}
|annotation={{{annotation9|{{{annot9|{{{a9|}}}}}}}}}
|leadin={{{leadin|}}}
|postscript={{{postscript9|{{{ps9|{{{9ps|{{{postscript|{{{ps|}}}}}}}}}}}}}}}
|section={{{section9||{{{sec9|{{{s9|}}}}}}}}}
|needed-reason={{{needed-reason9|{{{needed9|}}}}}}
|needed-date={{{needed-date|{{{date|}}}}}}
|wrap={{{wrap|}}}
|no-pp={{{no-pp|{{{nopp|}}}}}}
|style={{{style|}}}
|content-id={{{ref9|{{{9ref|{{{id9|}}}}}}}}}
|link-id={{{link-id9|}}}
|debug={{{debug|}}}}}<!-- ### Error handling ###
-->{{#if:{{{name10|{{{n10|{{{10|}}}}}}}}}|<sup class="error" style="font-size:0.9em; line-height:0;">The template only supports up to 9 references.</sup> <!--
-->}}}}}}}}}}}}}}}}}}</includeonly><noinclude>{{documentation}}</noinclude>
a5e416bfb1c7ffcf9e0136d4662d8d9be25aa1b3
Template:Template link with bold
10
1327
2662
2021-09-28T03:40:57Z
w>MusikBot II
0
Protected "[[Template:Template link with bold]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 464 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
{{#Invoke:Template link general|main|bold=on}}<noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlb}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
c6b5b2f301c776c8edbfd7097363890498f4b452
Template:Tlb
10
1328
2663
2021-09-28T03:41:05Z
w>MusikBot II
0
Protected "[[Template:Tlb]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 463 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with bold]]
{{Redirect category shell|
{{R from move}}
}}
4d50427c62f6e0b7c679872a92bd9fce01e974f0
Template:Bulletedlist
10
1690
3152
2021-09-30T22:49:05Z
wikipedia>MusikBot II
0
Protected "[[Template:Bulletedlist]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 381 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Bulleted list]]
fc3e32ae77e74a144ca12970d1e03f8429824b63
Template:Cuneiform
10
1607
2942
2021-09-30T22:50:08Z
w>MusikBot II
0
Protected "[[Template:Cuneiform]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 376 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Script/Cuneiform]]
{{R from short name}}
{{R from move}}
[[Category:Script–font templates]]
7ea7e4e895f7bd6848f5e1a38497bd79cc9ee658
Template:Xtag
10
1335
2670
2021-09-30T22:56:31Z
w>MusikBot II
0
Protected "[[Template:Xtag]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 358 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<code class="nowrap">{{#switch:{{{2|pair}}}
|c|close = <!--nothing-->
|s|single
|o|open
|p|pair = <{{#switch:{{{1|}}}
|categorytree=[[mw:Extension:CategoryTree|categorytree]]
|charinsert=[[mw:Extension:CharInsert|charinsert]]
|ce=[[Help:Displaying a formula#Chemistry|ce]]
|chem=[[Help:Displaying a formula#Chemistry|chem]]
|gallery=[[Help:Gallery tag|gallery]]
|graph=[[Help:Graph|graph]]
|hiero=[[mw:Extension:WikiHiero|hiero]]
|includeonly=[[Help:Template#Noinclude, includeonly, and onlyinclude|includeonly]]
|indicator=[[mw:Help:Page status indicators|indicator]]
|imagemap=[[mw:Extension:ImageMap|imagemap]]
|inputbox=[[mw:Extension:InputBox|inputbox]]
|mapframe=[[mw:Extension:Kartographer|mapframe]]
|maplink=[[mw:Extension:Kartographer#<maplink>|maplink]]
|math=[[mw:Extension:Math|math]]
|math chem=[[Help:Displaying a formula#Chemistry|math chem]]
|noinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|noinclude]]
|nowiki=[[Help:Nowiki|nowiki]]
|onlyinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|onlyinclude]]
|poem=[[mw:Extension:Poem|poem]]
|pre=[[WP:PRE|pre]]
|ref=[[mw:Extension:Cite/Cite.php|ref]]
|references=[[mw:Extension:Cite/Cite.php|references]]
|score=[[Help:Score|score]]
|section=[[mw:Extension:Labeled Section Transclusion|section]]
|source=[[mw:Extension:SyntaxHighlight|source]]
|syntaxhighlight=[[mw:Extension:SyntaxHighlight|syntaxhighlight]]
|templatedata=[[Wikipedia:TemplateData/Tutorial|templatedata]]
|templatestyles=[[mw:Extension:TemplateStyles|templatestyles]]
|timeline=[[mw:Extension:EasyTimeline|timeline]]
|#default={{{1|}}}[[Category:Pages using xtag template with unsupported tag name]]
}}{{#if:{{{params|}}}| {{{params}}}}}
}}{{#switch:{{{2|open}}}
|c|close = {{{content|}}}
|s|single =  />
|o|open = >{{{content|}}}
|p|pair = >{{{content|...}}}
}}{{#switch:{{{2|open}}}
|s|single
|o|open = <!--nothing-->
|c|close
|p|pair = </{{{1|tag}}}>
}}</code><noinclude>
{{documentation}}
</noinclude>
274ddc76ab9ba88d76a509a5e261938c59d6a050
Template:Format TemplateData
10
624
1408
2021-10-05T19:23:32Z
wikipedia>MusikBot II
0
Protected "[[Template:Format TemplateData]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 305 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{yesno-yes|{{{header}}}}}|yes|{{TemplateData header}}
}}{{#invoke:Format TemplateData| f |classNoNumTOC=nonumtoc |cssParams=border:#B3B7FF 1px solid;|docpageCreate=%s/doc |docpageDetect=/doc$ |msgDescMiss=Missing description |cat=Templates with TemplateData errors}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
9f91faf4253ddd2a7da1f06be8940e26509a0cd6
Template:High use
10
864
1916
2021-10-05T19:24:15Z
wikipedia>MusikBot II
0
Protected "[[Template:High use]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 345 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#Redirect [[Template:High-use]]
{{Redirect category shell|{{R from modification}}{{R from template shortcut}}}}
65ce33c8f2d9659b46256ceb1f7fe57859f66fb2
Module:GetParameters
828
1354
2689
2021-10-07T13:22:34Z
w>Andrybak
0
drop misleading comment copy-pasted from [[Module:String]]
Scribunto
text/plain
local p = {}
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function p.getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
--[[
Helper Function to interpret boolean strings
]]
function p.getBoolean( boolean_str )
local boolean_value;
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower();
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false;
else
boolean_value = true;
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str;
else
error( 'No boolean value found' );
end
return boolean_value
end
function p.defined(frame)
local arg = mw.text.trim(frame.args[1])
--if arg == tostring(tonumber(arg)) then -- undesired result for '-0'
-- arg = tonumber(arg)
--end
--if mw.ustring.find(arg, '^%s*-?[1-9][0-9]*%s*$') ~= nil or arg == '0' then
-- arg = tonumber(arg)
--end
if mw.ustring.find(arg, '^-?[1-9][0-9]*$') ~= nil then
arg = tonumber(arg)
elseif arg == '0' then
arg = 0
end
return frame:getParent().args[arg] ~= nil
end
return p
00e952f0ee8f6ea68e990d589dfb15e7d4036623
Module:Unsubst
828
235
1906
530
2021-10-08T18:22:16Z
wikipedia>Trappist the monk
0
sync from sandbox; see [[Module_talk:Unsubst#template_invocation_name_override|talk]];
Scribunto
text/plain
local checkType = require('libraryUtil').checkType
local p = {}
local BODY_PARAM = '$B'
local specialParams = {
['$params'] = 'parameter list',
['$aliases'] = 'parameter aliases',
['$flags'] = 'flags',
['$B'] = 'template content',
['$template-name'] = 'template invocation name override',
}
function p.main(frame, body)
-- If we are substing, this function returns a template invocation, and if
-- not, it returns the template body. The template body can be specified in
-- the body parameter, or in the template parameter defined in the
-- BODY_PARAM variable. This function can be called from Lua or from
-- #invoke.
-- Return the template body if we aren't substing.
if not mw.isSubsting() then
if body ~= nil then
return body
elseif frame.args[BODY_PARAM] ~= nil then
return frame.args[BODY_PARAM]
else
error(string.format(
"no template content specified (use parameter '%s' from #invoke)",
BODY_PARAM
), 2)
end
end
-- Sanity check for the frame object.
if type(frame) ~= 'table'
or type(frame.getParent) ~= 'function'
or not frame:getParent()
then
error(
"argument #1 to 'main' must be a frame object with a parent " ..
"frame available",
2
)
end
-- Find the invocation name.
local mTemplateInvocation = require('Module:Template invocation')
local name
if frame.args['$template-name'] and '' ~= frame.args['$template-name'] then
name = frame.args['$template-name'] -- override whatever the template name is with this name
else
name = mTemplateInvocation.name(frame:getParent():getTitle())
end
-- Combine passed args with passed defaults
local args = {}
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
else
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
end
-- Trim parameters, if not specified otherwise
if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then
for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end
end
-- Pull information from parameter aliases
local aliases = {}
if frame.args['$aliases'] then
local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' )
for k, v in ipairs( list ) do
local tmp = mw.text.split( v, '%s*>%s*' )
aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2])
end
end
for k, v in pairs( aliases ) do
if args[k] and ( not args[v] or args[v] == '' ) then
args[v] = args[k]
end
args[k] = nil
end
-- Remove empty parameters, if specified
if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then
local tmp = 0
for k, v in ipairs( args ) do
if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then
tmp = k
else
break
end
end
for k, v in pairs( args ) do
if v == '' then
if not (type(k) == 'number' and k < tmp) then args[k] = nil end
end
end
end
-- Order parameters
if frame.args['$params'] then
local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {}
for k, v in ipairs(params) do
v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v
if args[v] then tmp[v], args[v] = args[v], nil end
end
for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end
args = tmp
end
return mTemplateInvocation.invocation(name, args)
end
p[''] = p.main -- For backwards compatibility
return p
7f01ffc8aa2ac4a4772f14c12e0b77e384ecabb6
Template:Resize
10
118
283
2021-10-10T18:04:18Z
wikipedia>WOSlinker
0
add div=yes option
wikitext
text/x-wiki
{{safesubst<noinclude />:#if:{{{2|}}}
|<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:{{{1|}}};">{{{2|}}}</{{#ifeq:{{{div|}}}|yes|div|span}}>
|<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:90%;">{{{1}}}</{{#ifeq:{{{div|}}}|yes|div|span}}>
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
</noinclude>
3df5b1480eb04f48aa1e701ca895121b4cbb4ed3
Template:Define
10
139
327
2021-10-20T01:50:33Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Define]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 4633 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Abbr]]
{{Rcat shell|
{{R related}}
{{R tsh}}
}}
4ab7bdcf7ba10c7ef8ee30a9bf6600863997473d
Template:Location map many
10
1635
2981
2021-10-20T19:50:19Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Location map many]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3711 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map/multi|many}}</includeonly><noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
72cc22fd09760697977eba240c5a13c892f971f0
Template:Module other
10
481
1057
2021-10-20T19:50:22Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Module other]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3570 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Module}}
| module
| other
}}
}}
| module = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
503694836c1b07142e63fd35d8be69ec8bb9ffe7
Template:Sfrac
10
1546
2881
2021-10-20T19:50:38Z
w>MusikBot II
0
Changed protection settings for "[[Template:Sfrac]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3630 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=<templatestyles src="Sfrac/styles.css" /><span role="math" class="sfrac {{#if:{{{3|}}}|">{{{1}}}<span class="sr-only">+</span><span class="}}<!--
-->tion"><!--
--><span class="num">{{#if:{{{3|}}}|{{{2}}}|{{#if:{{{2|}}}|{{{1}}}|1}}}}</span><!--
--><span class="sr-only">/</span><!--
--><span class="den">{{{3|{{{2|{{{1|1}}}}}}}}}</span><!--
-->{{#if:{{{3|}}}|</span>}}<!--
--></span>}}<noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES TO /doc SUBPAGE - NOT HERE.-->
</noinclude>
7fb36dbb14902432f62d75772d46c65d238c0c1b
Template:Sfrac/styles.css
10
1547
2882
2021-10-20T19:50:39Z
w>MusikBot II
0
Changed protection settings for "[[Template:Sfrac/styles.css]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3660 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
sanitized-css
text/css
/* {{pp|small=y}} */
.sfrac {
white-space: nowrap;
}
.sfrac.tion,
.sfrac .tion {
display: inline-block;
vertical-align: -0.5em;
font-size: 85%;
text-align: center;
}
.sfrac .num,
.sfrac .den {
display: block;
line-height: 1em;
margin: 0 0.1em;
}
.sfrac .den {
border-top: 1px solid;
}
/* [[Template:Screen reader-only]] is canonical implementation onwiki */
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
/* white-space: nowrap; /* already have nowrap above */
}
81b03751b1a10d20a2f88c0f3309a4f8873b247b
Template:Hatnote inline/invoke
10
126
301
2021-10-22T01:54:39Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Hatnote inline/invoke]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3213 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote inline|hatnote}}</includeonly><noinclude>
{{Documentation|content=This is an includeonly part of [[Template:Hatnote inline]].}}</noinclude>
bcceba0d964fb499427b81aef69b70f463221df3
Template:Vad
10
987
2170
2021-10-22T01:56:03Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Vad]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3283 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
#redirect [[Template:Vertically aligned date]]
{{rcat shell|{{r from template shortcut}}}}
[[Category:Typing-aid templates|{{PAGENAME}}]]
b90a5de41f13a9857edeae26aa461f4c09a00c01
Template:Vertically aligned date
10
988
2172
2021-10-22T01:56:05Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Vertically aligned date]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3282 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly><span style="display:inline-block; width:{{if empty|{{{2|}}}|{{{width|}}}|3.6em}}; text-align:{{if empty|{{{3|}}}|{{{align|}}}|right}}; font-weight:{{if empty|{{{4|}}}|{{{font|}}}|normal}};">{{{1}}}</span></includeonly><noinclude>{{documentation}}</noinclude>
5d09cbb92ba4b8bdbd1feae1e19a300def099a81
Template:View
10
1306
2641
2021-10-22T01:56:06Z
w>MusikBot II
0
Changed protection settings for "[[Template:View]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3357 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{#invoke:navbar|navbar|plain = 1|template = {{{template|{{{1|}}}}}}}}<noinclude>
{{Documentation|Template:Navbar/doc}}
</noinclude>
1ca014f2b7724c60659a51b385a22ce31f318f86
Template:Military navigation
10
1098
2395
2021-10-23T13:20:32Z
wikipedia>Andrybak
0
use [[Template:Sandbox other]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Military navigation|main}}</includeonly><noinclude>
{{Documentation|Wikipedia:WikiProject Military history/Military navigation}}
{{Sandbox other||
[[Category:Navigational box wrapper templates]]
[[Category:Military navigational boxes| ]]
}}</noinclude>
10eb2cd55540aab60dd8603c113e21995e9bb545
Template:Confused
10
1325
2660
2021-10-26T17:20:49Z
w>MusikBot II
0
Changed protection settings for "[[Template:Confused]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2629 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Distinguish]]
{{pp-template|small=yes}}
3103c28fbfba681c21033c5de184b3ce78f33a6e
Template:Deprecated code
10
1002
2200
2021-10-26T17:21:01Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Deprecated code]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2827 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<del class="deprecated-content {{{class|}}}" style="color:{{#if:{{{red|}}}|#8B0000|#808080}}; text-decoration:none; {{#if:{{{style|}}}|{{{style}}}|}}" {{#if:{{{id|}}}|id="{{{id}}}"|}} {{#if:{{{title|{{{2|}}}}}}|title="{{{title|{{{2}}}}}}"|}}>{{{1}}}</del><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
c8fa271da275bc211fa5f70ab12b5ed41d822332
Template:ISO 15924/wp-article/format
10
1595
2930
2021-10-26T17:21:57Z
w>MusikBot II
0
Changed protection settings for "[[Template:ISO 15924/wp-article/format]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2559 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<!-- {{mono|1={{{alpha4|}}}}}-{{{value|}}} <small>(f:{{{format|}}})</small>--><!--
-1st-{{#invoke:String|match|s={{{value|}}}# |pattern=^([^%#]+)%# |plain=false |nomatch=NoMa}}
_2nd_{{#invoke:String|match|s={{{value|}}}# |pattern=%#([^%#]*) |plain=false |nomatch=NoMa}}--><!--
-->{{#switch:{{{format|}}}
||#default={{{value|}}}
|wl=[[{{{value|}}}]]
|wl-label=[[{{{value|}}}{{#if:{{{label|}}}|{{!}}{{{label|}}}|{{ISO 15924/wp-article/label|alpha4={{{alpha4|}}}|add pipe=yes}}}}]]
|slink={{#if:{{#invoke:String|match|s={{{value|}}} |pattern=%#([^%#]*) |plain=false |nomatch=}}|<!--
if:has § section -->{{slink
|1={{#invoke:String|match|s={{{value|}}}# |pattern=^([^%#]+)%# |plain=false |nomatch=}}
|2={{#invoke:String|match|s={{{value|}}}# |pattern=%#([^%#]*) |plain=false |nomatch=}}
}}|<!--
else:has § section -->[[{{{value|}}}]]}}
}}<noinclude>
*{{tl|ISO 15924/wp-article/doc}}
*{{tl|ISO 15924/wp-article/sandbox}}
*{{tl|ISO 15924/wp-article/testcases}}</noinclude>
fa0f6bc12f6f1f7da273ff3f0cecd9c221dadf6b
Template:Notelist-lr
10
575
1298
2021-10-26T17:22:56Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Notelist-lr]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2950 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{notelist|colwidth={{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group=lower-roman}}</includeonly><noinclude>
{{documentation}}
</noinclude>
4f00350b2a4eb03726e2440b940be93d06bec3be
Template:Redirect-distinguish
10
1035
2268
2021-10-26T17:23:32Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Redirect-distinguish]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2673 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Redirect-distinguish|redirectDistinguish}}</includeonly><noinclude>{{Documentation}}</noinclude>
c08b04d280b5edf1a7dbf07eefb2d946e18de6d2
Module:Suppress categories
828
69
133
2021-10-26T17:25:37Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Module:Suppress categories]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2510 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
Scribunto
text/plain
-- This is a simple module to strip categories from wikitext. It does
-- not support nested links or magic words like __TOC__, etc. Even so,
-- it should still handle most categories.
local p = {}
-- Detects if a category link is valid or not. If it is valid,
-- the function returns the blank string. If not, the input
-- is returned with no changes.
local function processCategory( all, submatch )
local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' )
beforePipe = beforePipe or submatch
if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then
return all
else
return ''
end
end
-- Preprocess the content if we aren't being called from #invoke,
-- and pass it to gsub to remove valid category links.
local function suppress( content, isPreprocessed )
if not isPreprocessed then
content = mw.getCurrentFrame():preprocess( content )
end
content = mw.ustring.gsub(
content,
'(%[%[[%s_]*[cC][aA][tT][eE][gG][oO][rR][yY][%s_]*:[%s_]*(.-)[%s_]*%]%])',
processCategory
)
return content
end
-- Get the content to suppress categories from, and find
-- whether the content has already been preprocessed. (If the
-- module is called from #invoke, it has been preprocessed already.)
function p.main( frame )
local content, isPreprocessed
if frame == mw.getCurrentFrame() then
content = frame:getParent().args[1]
if frame.args[1] then
content = frame.args[1]
end
isPreprocessed = true
else
content = frame
isPreprocessed = false
end
return suppress( content, isPreprocessed )
end
return p
0ec3903841c489357a879434c5dc23c11d182c78
Module:Infobox/doc
828
84
207
2021-10-28T06:23:55Z
Startus
12
Add
wikitext
text/x-wiki
{{Lua|Module:Navbar}}
{{Uses TemplateStyles|Module:Infobox/styles.css}}
Implements {{tlx|Infobox}}
eb64e52082cc779b0e3e1c353702e778203cea42
Template:Infobox/doc
10
207
470
2021-10-28T12:43:53Z
Startus
12
Add
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Infobox}}
{{Uses TemplateStyles|[[Module:Infobox/styles.css]]}}
==Usage==
c98286012fccf1f2eab447f27d4e51c9fb5aac2c
Template:Ambox
10
1021
2238
2021-10-28T18:27:47Z
wikipedia>GKFX
0
Copy fix from sandbox; only articles should go in this category.
wikitext
text/x-wiki
{{#invoke:Message box|ambox}}{{#ifeq:{{{small}}};{{NAMESPACENUMBER}}|left;0|[[Category:Articles using small message boxes]]}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0c13ec156138ae0499c998cc3d7fbbeac4aeeed6
Template:Dark cyan
10
233
526
2021-10-29T03:58:53Z
Pixial
28
Created page with "<span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>"
wikitext
text/x-wiki
<span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
e9c0ab2752c4b605c80909eb5c6dc128971991c4
Template:Main/doc
10
451
1001
2021-11-02T10:06:19Z
Raidarr
34
wikitext
text/x-wiki
==Description==
This template is used at the start of a section to link to the main article on that subject.
==Syntax==
Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives...
:{{main|Help:Contents}}
You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives...
:{{Main|One|Two|Three|Four|Five}}
==Credits==
This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki.
<includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly>
<noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude>
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Page 1",
"description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.",
"type": "string"
},
"2": {
"label": "Page 2",
"description": "The name of the second page you want to link to.",
"type": "string"
},
"3": {
"label": "Page 3",
"description": "The name of the third page you want to link to.",
"type": "string"
},
"4": {
"label": "Page 4",
"description": "The name of the fourth page you want to link to.",
"type": "string"
},
"5": {
"label": "Page 5",
"description": "The name of the fifth page you want to link to.",
"type": "string"
},
"6": {
"label": "Page 6",
"description": "The name of the sixth page you want to link to.",
"type": "string"
}
},
"description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".",
"paramOrder": [
"1",
"2",
"3",
"4",
"5",
"6"
]
}
</templatedata>
06d3a43cfa1555d654afcc6d7860e3f8a1006194
Template:Navbox bottom
10
603
1364
2021-11-04T17:59:51Z
wikipedia>MusikBot II
0
Protected "[[Template:Navbox bottom]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3929 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:navbox top and bottom|bottom}}</includeonly><noinclude>
{{documentation|Template:Navbox top/doc}}</noinclude>
65e502a67d1bc2bba488cdada997a395b417883c
Template:Navbox top
10
604
1366
2021-11-04T17:59:52Z
wikipedia>MusikBot II
0
Protected "[[Template:Navbox top]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3930 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:navbox top and bottom|top}}</includeonly><noinclude>
{{documentation}}
</noinclude>
d92793ae2725f6cbd0007a404bcce9a530d30349
Module:Navbox top and bottom
828
605
1368
2021-11-04T18:00:00Z
wikipedia>MusikBot II
0
Protected "[[Module:Navbox top and bottom]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 3931 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
Scribunto
text/plain
-- This implements {{navbox top}} and {{navbox bottom}}
local p = {}
local function build_navbox(parentArgs, list)
local args = {}
for argName, value in pairs(parentArgs) do
if value ~= '' then
if type(argName) == 'string' then
args[argName] = value
end
end
end
args['bodystyle'] = 'display:table;' .. (args['bodystyle'] or '')
args['list1padding'] = '0'
args['list1style'] = 'border-width:0;'
args['list1'] = list
-- Note Navbox.navbox() has a kludge to order the parent frame's args
-- into a specific order. For now, this is omitted from this module.
local Navbox = require('Module:Navbox')
return Navbox._navbox(args)
end
function p.top(frame)
local args = frame:getParent().args
local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>')
return parts[1]
end
function p.bottom(frame)
local args = frame:getParent().args
local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>')
return parts[2]
end
return p
ac5dfc18e5611b01115dbf9818d1cf54ee5156d2
Template:Main
10
102
251
2021-11-07T22:34:09Z
wikipedia>Nihiltres
0
Includeonly the template to avoid errors on the template pages
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
99ebf54e265aa9354bc4861d3b0da913f1441ede
Template:Refbegin/styles.css
10
172
397
2021-11-09T00:27:00Z
wikipedia>Izno
0
-.refbegin-100, used in just 100 of 200k articles. suitable alternative at [[template:Div col]]
sanitized-css
text/css
/* {{pp-template}} */
.refbegin {
font-size: 90%;
margin-bottom: 0.5em;
}
.refbegin-hanging-indents > ul {
margin-left: 0;
}
.refbegin-hanging-indents > ul > li {
margin-left: 0;
padding-left: 3.2em;
text-indent: -3.2em;
}
.refbegin-hanging-indents ul,
.refbegin-hanging-indents ul li {
list-style: none;
}
@media (max-width: 720px) {
.refbegin-hanging-indents > ul > li {
padding-left: 1.6em;
text-indent: -1.6em;
}
}
.refbegin-columns {
margin-top: 0.3em;
}
/* Reset top margin for lists embedded in columns */
.refbegin-columns ul {
margin-top: 0;
}
/* Avoid elements breaking between columns */
.refbegin-columns li {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
287ba19370a7bfc842825711a05d34dae68d5f64
Template:Refbegin
10
171
395
2021-11-09T00:30:45Z
wikipedia>Izno
0
-refbegin-100, see styles page history for rationale
wikitext
text/x-wiki
<includeonly><templatestyles src="Refbegin/styles.css" /><!--
--><div class="refbegin <!--
-->{{#if: {{{indent|}}} | refbegin-hanging-indents }} <!--
-->{{#if: {{{1|}}}
| refbegin-columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }}
| references-column-width
| references-column-count references-column-count-{{#if:1|{{{1}}}}} }}
| {{#if: {{{colwidth|}}}
| references-column-width }} }}" style="<!--
-->{{#if: {{{1|}}}
| {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }}
| column-width: {{#if:1|{{{1|30em}}}}}
| column-count: {{#if:1|{{{1}}}}}; }}
| {{#if: {{{colwidth|}}}
| column-width: {{{colwidth|30em}}} }} }}"></includeonly><noinclude>
{{Documentation}}
</noinclude>
da42157a5c16164d1de140113dabd9e71ad03401
Template:Disambiguation
10
1163
2489
2021-11-15T00:12:46Z
w>GKFX
0
Undid revision 1055277199 by [[Special:Contributions/GKFX|GKFX]] ([[User talk:GKFX|talk]]) - changed categorization of "Socialist Party (Sweden) (disambiguation)"
wikitext
text/x-wiki
<includeonly>{{#if:{{{nocat|}}}||{{Disambiguation page short description}}}}</includeonly>
{{Dmbox
| type = disambig
| text = {{#switch: {{{nsoverride|<includeonly>{{NAMESPACE}}</includeonly>}}}|<!--detects namespace between Wikipedia, Portal, and everything else-->
| #default = This [[Help:Disambiguation|disambiguation]] page lists {{{type|{{#if:{{{ignore_parentheses|}}}||{{Title disambig text|1={{Str rep|{{{page-title|{{FULLPAGENAME}}}}}|(disambiguation)|}}}}}}}}} {{namespace detect|main=articles|category=categories|wikipedia=project pages<includeonly>|template=templates</includeonly>|other=pages}} associated with the title '''{{#if:{{{ignore_parentheses|}}}|{{{page-title|{{FULLPAGENAME}}}}}|{{PAGENAMEBASE|{{{page-title|{{FULLPAGENAME}}}}}}}}}'''.<!--for normal disambiguation pages-->
| Wikipedia = This page is a list of [[Wikipedia:Project namespace|project pages]] associated with the same title or shortcut.[[Category:Wikipedia disambiguation pages]]<!--for Wikipedia disambiguation pages-->
| Portal = This page is a list of [[Wikipedia:Contents/Portals|portals]] associated with the same title.[[Category:Portal disambiguation pages]]<!--for Portal disambiguation pages-->
}}<br /><small>{{main other<!--detects if in mainspace or not-->
| demospace = {{{demospace|}}}<!--for testing, see docs at [[Template:Main other]]-->
| If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}|namespace=0}} internal link] led you here, you may wish to change the link to point directly to the intended article.<!--If in mainspace, the "internal link" only links to incoming links in mainspace, and we use the term "intended article"-->
| If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}}} internal link] led you here, you may wish to change the link to point directly to the intended page.<!--If not in mainspace, the "internal link" links to incoming links in all namespaces, and we use the term "intended page"-->
}}</small>
| nocat = {{{nocat|}}} <!--So "nocat=true" works-->
}}{{main other
| demospace = {{{demospace|}}}
| [[Category:Disambiguation pages]]{{disambiguation/cat|{{{1|}}}}}{{disambiguation/cat|{{{2|}}}}}{{disambiguation/cat|{{{3|}}}}}{{disambiguation/cat|{{{4|}}}}}{{disambiguation/cat|{{{5|}}}}}{{disambiguation/cat|{{{6|}}}}}{{disambiguation/cat|{{{7|}}}}}{{disambiguation/cat|{{{8|}}}}}{{disambiguation/cat|{{{9|}}}}}{{disambiguation/cat|{{{10|}}}}}{{#if: {{{hn|}}} | [[Category:Human name disambiguation pages|{{{hn}}}]] }}{{#if:{{Title disambig text|1={{Str rep|{{FULLPAGENAME}}|(disambiguation)|}}}}|[[Category:Disambiguation pages with (qualified) titles]]|}}<!-- The preceding test should include articles like "Socialist Party (Sweden) (disambiguation)". -->
| <!-- Don't categorise when not in main (article) space. However, note that {{Dmbox}} categorises pages into Category:All disambiguation pages and Category:All article disambiguation pages-->
}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{#invoke:redirect|isRedirect|{{TALKPAGENAME}}}}|yes|[[Category:Unsynchronized disambiguation talk pages]]}}}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
8c6d81108d5cbf10e14b3d6ddf893eb283f72569
Template:Lua sidebar
10
1293
2628
2021-11-15T22:24:39Z
w>Izno
0
reduce expansion size slightly
wikitext
text/x-wiki
{{Sidebar
| class = lua-sidebar
| templatestyles = Template:Lua sidebar/styles.css
| title = Related pages
| content1 = {{plainlist}}
* [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}|Template]] {{#if:{{#invoke:redirect|isRedirect|Template talk:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}}}||([[Template talk:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}|talk]])}}
* [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/sandbox|Template sandbox]]
* [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/testcases|Template testcases]]
* [[Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/doc|Template doc]]
* [[Special:PrefixIndex/Template:{{{template|{{{title|{{BASEPAGENAME}}}}}}}}/|Template subpages]]
* [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}|Module]] {{#if:{{#invoke:redirect|isRedirect|Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}}}||([[Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}|talk]])}}
* [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/sandbox|Module sandbox]]
* [[Module talk:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/testcases|Module testcases]]
* [[Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/doc|Module doc]]
* [[Special:PrefixIndex/Module:{{{module|{{{title|{{BASEPAGENAME}}}}}}}}/|Module subpages]]
{{endplainlist}}
| content2 = {{{1|}}}
}}<noinclude>
{{Documentation}}
</noinclude>
f11e49d67a400d29f6d73720fea7eb5a273ab663
Template:ISO 15924/unicode-chapter/format
10
1627
2962
2021-11-27T14:00:18Z
w>GKFX
0
Use padleft function rather than trying to emulate it
wikitext
text/x-wiki
{{#if:{{{value|}}}|
{{#switch:{{{format|}}}
|#default={{{value|0.0}}}
|version=Unicode {{{version|}}}
|pdf-plain=https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf
|pdf=[https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf Ch {{{value|}}}]<!-- for url pdf: create like "09" when <=9. Assumes no Ch number >99 -->
|pdf-sort={{sort | 1={{{value|}}} | 2=[https://www.unicode.org/versions/Unicode{{{version|13.0.0}}}/ch{{padleft:{{#expr: floor({{{value|1}}}) }}|2}}.pdf Ch {{{value|}}}] }}
}}|<!-- no value: return blank -->}}<noinclude>{{documentation}}</noinclude>
b91ee050d20fa162de8edc148d34a8d2fc591339
Template:Unichar/gc
10
1615
2950
2021-11-27T14:35:52Z
w>GKFX
0
Use modern string functions
wikitext
text/x-wiki
{{#if:{{{1|}}}<!--
-->|{{#ifexpr: {{{1}}}<=65535<!--
in plane 0 BMP
-->|{{#ifexpr: (00<={{{1}}}) and ({{{1}}}<=31) or (127<={{{1}}}) and ({{{1}}}<=159)<!--
-->| Cc <!--00..1F 7F..9F
-->| {{#ifexpr: (55296<={{{1}}}) and ({{{1}}}<=57343)<!--
-->| Cs <!--D800..DFFF high&low Surrogates
-->| {{#ifexpr: ((57344<={{{1}}}) and ({{{1}}}<=63743))<!--
-->| Cp <!--E000..F8FF Private Use
-->| {{#ifexpr: (64976<={{{1}}} and {{{1}}}<=65007) or {{{1}}}=65534 or {{{1}}}=65535<!--
-->| Cn <!--FDD0..FDEF FFFE FFFF; Not-a-character
-->| {{#ifexpr: ({{{1}}}=173) or ({{{1}}}=1807) or ({{{1}}}=6068) or ({{{1}}}=6069) or (8203<={{{1}}} and {{{1}}}<=8207) or (8234<={{{1}}} and {{{1}}}<=8238) or (8288<={{{1}}} and {{{1}}}<=8292) or (8298<={{{1}}} and {{{1}}}<=8303) or ({{{1}}}=65279) or (65529<={{{1}}} and {{{1}}}<=65531)<!--
-->| Cf <!--00AD 070F 17B4 17B5 200B..200F 202A..202E 2060..2064 206A..206F FEFF FFF9..FFFB
-->| {{#ifexpr: (1536<={{{1}}} and {{{1}}}<=1539) or ({{{1}}}=1757)<!--
-->| Cf (visible)<!--0600..0603 06DD See documentation: five visible Cf characters
-->| {{#ifexpr: {{{1}}}=32 or {{{1}}}=160 or {{{1}}}=5760 or {{{1}}}=6158 or {{{1}}}=8239 or {{{1}}}=8287 or {{{1}}}=8288 or {{{1}}}=12288 or (8192<={{{1}}} and {{{1}}}<=8205)<!--
-->| Zs <!--20 A0 1680 180E 202? 205F 2060 2000..200D 3000 Space
-->| {{#ifexpr: {{{1}}}=8232<!--
-->| Zl <!--2028 LSEP
-->| {{#ifexpr: {{{1}}}=8233<!--
-->| Zp <!--2029 PSEP
-->| <!--(final param position in BMP: no gc determined)
-->}} }} }} }} }} }} }} }} }}<!--
-->|<!--in planes 1-16, not 0
-->{{#switch: {{#invoke:ustring|sub|{{{hval|}}}|-4}}<!--
-->| FFFE | FFFF = Cn <!--hhFFFE hhFFFF Not-a-character
-->| {{#ifexpr: ((983040<={{{1}}}) and ({{{1}}}<=1114111))<!--
-->| Cp <!--Private use, planes 15-16 (minus Cn, checked earlier)
-->| {{#ifexpr: {{{1}}}>=1114112 | <#not a Unicode code point#><!--greater th 0x110000
-->| {{#ifexpr: ({{{1}}}=69821) or (119155<={{{1}}} and {{{1}}}<=119162) or ({{{1}}}=917505) or (917536<={{{1}}} and {{{1}}}<=917631)<!--
-->| Cf <!--110BD 1D173..1D17A E0001 E0020..E0096 (planes 1 and E = 1 and 14):
-->| <!--all other cp in planes 1-16, other gc not determined
-->}} }} }} }} }}<!--
-->|<#not a Unicode code point#> <!--Input is blank or undefined
-->}}<noinclude>
{{documentation}}
</noinclude>
56bfe36121a397d56a47202b6477f66e007b5203
Template:Terminate sentence
10
248
3075
2021-11-29T17:59:48Z
wikipedia>MusikBot II
0
Protected "[[Template:Terminate sentence]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 9267 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude>
e4142b47b3d7959b82f582bab87ca10768d4d93b
Template:Find country
10
197
448
2021-12-02T20:25:42Z
wikipedia>GKFX
0
No need to use {{Trim}} inside an if function, as they are already trimmed.
wikitext
text/x-wiki
<includeonly>{{#if: {{{1|}}}
| {{#invoke:Find country|main|string={{{1|}}}|match={{{match|}}}|nomatch={{{nomatch|}}}}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
87d8d8e45c6295e043512958d665ffbdf7819cc1
Template:Maroon
10
234
528
2021-12-03T14:53:28Z
Ugochimobi
29
Created page with "<span style="color: Maroon;">{{{1}}}</span><noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}}</noinclude>"
wikitext
text/x-wiki
<span style="color: Maroon;">{{{1}}}</span><noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}</noinclude>
ec7268d828ab5a3e2b2aea1613d331ff6ad7375f
Template:ISO 15924/qid
10
1625
2960
2021-12-08T07:37:34Z
w>DePiep
0
add new | Sunu = Q109984965
wikitext
text/x-wiki
<!-- Exact list from ISO datafile, as of 2021-01-25: 206 output values (alpha4 codes).
--><includeonly>{{#switch:{{{alpha4|{{{1|}}}}}}
| Adlm = Q19606346
| Afak = Q382019
| Aghb = Q2495716
| Ahom = Q2839633
| Arab = Q1828555
| Aran = Q1133121
| Armi = Q26978
| Armn = Q11932
| Avst = Q790681
| Bali = Q804984
| Bamu = Q806024
| Bass = Q810458
| Batk = Q51592
| Beng = Q756802
| Bhks = Q17017839
| Blis = Q609817
| Bopo = Q198269
| Brah = Q185083
| Brai = Q79894
| Bugi = Q1074947
| Buhd = Q1002969
| Cakm = Q1059328
| Cans = Q2479183
| Cari = Q1094567
| Cham = Q1060381
| Cher = Q26549
| Chrs = Q72386710
| Cirt = Q2003257
| Copt = Q321083
| Cpmn = Q1751985
| Cprt = Q1757689
| Cyrl = Q8209
| Cyrs = Q442244
| Deva = Q38592
| Diak = Q3307073
| Dogr = Q72402987
| Dsrt = Q1200582
| Dupl = Q5316025
| Egyd = Q188519
| Egyh = Q208111
| Egyp = Q132659
| Elba = Q1036714
| Elym = Q60744423
| Ethi = Q257634
| Geok = Q1090055
| Geor = Q3317411
| Glag = Q145625
| Gong = Q18125340
| Gonm = Q16977603
| Goth = Q467784
| Gran = Q1119274
| Grek = Q8216
| Gujr = Q733944
| Guru = Q689894
| Hanb = Q28454520
| Hang = Q8222
| Hani = Q8201
| Hano = Q1584045
| Hans = Q185614
| Hant = Q178528
| Hatr = Q20813038
| Hebr = Q33513
| Hira = Q48332
| Hluw = Q521323
| Hmng = Q365954
| Hmnp = Q33712499
| Hrkt = Q187659
| Hung = Q446224
| Inds = Q601388
| Ital = Q4891256
| Jamo = Q41799425
| Java = Q879704
| Jpan = Q190502
| Jurc = Q912240
| Kali = Q4919239
| Kana = Q82946
| Kawi = Q975802
| Khar = Q1161266
| Khmr = Q1054190
| Khoj = Q1740656
| Kitl = Q6401797
| Kits = Q6401800
| Knda = Q839666
| Kore = Q711797
| Kpel = Q1586299
| Kthi = Q1253814
| Lana = Q1314503
| Laoo = Q1815229
| Latf = Q148443
| Latg = Q1432616
| Latn = Q8229
| Leke = Q19572613
| Lepc = Q1481626
| Limb = Q933796
| Lina = Q30972
| Linb = Q190102
| Lisu = Q1194621
| Loma = Q72948512
| Lyci = Q913587
| Lydi = Q4261300
| Mahj = Q6732850
| Maka = Q72947229
| Mand = Q1812130
| Mani = Q3544702
| Marc = Q72403709
| Maya = Q211248
| Medf = Q72950215
| Mend = Q951069
| Merc = Q73028124
| Mero = Q73028623
| Mlym = Q1164129
| Modi = Q1703713
| Mong = Q1055705
| Moon = Q918391
| Mroo = Q75919253
| Mtei = Q2981413
| Mult = Q17047906
| Mymr = Q43887939
| Nagm = Q106917274
| Nand = Q6963324
| Narb = Q22948270
| Nbat = Q855624
| Newa = Q7237292
| Nkdb = Q1190953
| Nkgb = Q731189
| Nkoo = Q1062587
| Nshu = Q56436
| Ogam = Q184661
| Olck = Q201688
| Orkh = Q5058305
| Orya = Q1760127
| Osge = Q7105529
| Osma = Q1377866
| Ougr = Q1998938
| Palm = Q17538100
| Pauc = Q25339852
| Pcun = Q104845336
| Pelm = Q56305763
| Perm = Q147899
| Phag = Q822836
| Phli = Q24089793
| Phlp = Q7253954
| Phlv = Q72403118
| Phnx = Q26752
| Piqd = Q56627865
| Plrd = Q601734
| Prti = Q24089828
| Psin = Q1065250
| Qaaa | Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz| Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw | Qabx | Qaaa-Qabx | Qaaa–Qabx = Q105037964
| Ranj = Q2385276
| Rjng = Q2007960
| Rohg = Q21028705
| Roro = Q209764
| Runr = Q82996
| Samr = Q1550930
| Sara = Q1089000
| Sarb = Q446074
| Saur = Q3535165
| Sgnw = Q1497335
| Shaw = Q1970098
| Shrd = Q2047117
| Shui = Q752854
| Sidd = Q250379
| Sind = Q6402810
| Sinh = Q1574992
| Sogd = Q578359
| Sogo = Q72403254
| Sora = Q7563292
| Soyo = Q8009382
| Sund = Q51589
| Sunu = Q109984965
| Sylo = Q144128
| Syrc = Q26567
| Syre = Q72400430
| Syrj = Q72400431
| Syrn = Q72400435
| Tagb = Q977444
| Takr = Q759202
| Tale = Q2566326
| Talu = Q3498863
| Taml = Q26803
| Tang = Q1373610
| Tavt = Q11818518
| Telu = Q570450
| Teng = Q473725
| Tfng = Q208503
| Tglg = Q812124
| Thaa = Q877906
| Thai = Q236376
| Tibt = Q46861
| Tirh = Q1765752
| Tnsa = Q105576311
| Toto = Q104837516
| Ugar = Q332652
| Vaii = Q523078
| Visp = Q1303365
| Vith = Q3301993
| Wara = Q79199
| Wcho = Q33713728
| Wole = Q6643710
| Xpeo = Q1471822
| Xsux = Q401
| Yezi = Q72401962
| Yiii = Q1197646
| Zanb = Q50809208
| Zinh = Q104839726
| Zmth = Q1140046
| Zsye = Q1049294
| Zsym = Q80071
| Zxxx = Q104839715
| Zyyy = Q104839687
| Zzzz = Q104839675
| #default={{{default|<!-- {{error|Error using {{tlx|ISO 15924/qid}}: input "{{{qid|{{{1|}}}}}}" not recognized|tag=span}} -->}}}
}}</includeonly><!--
--><noinclude>{{documentation}}</noinclude>
1b0bbc65224c7a923aeb95c2fdda2d60e4ac1622
Template:Main other
10
13
21
2021-12-10T16:08:06Z
Xaosflux
7
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
86ad907ffeea3cc545159e00cd1f2d6433946450
Module:Navbox/styles.css
828
108
263
2021-12-21T22:10:10Z
wikipedia>Izno
0
remove qualifications on th - this will remove styling from "hand-crafted" navboxes, but there's no other elegant way to deal with it. see talk page
sanitized-css
text/css
/* {{pp|small=y}} */
.navbox {
box-sizing: border-box;
border: 1px solid #a2a9b1;
width: 100%;
clear: both;
font-size: 88%;
text-align: center;
padding: 1px;
margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */
}
.navbox .navbox {
margin-top: 0; /* No top margin for nested navboxes */
}
.navbox + .navbox, /* TODO: remove first line after transclusions have updated */
.navbox + .navbox-styles + .navbox {
margin-top: -1px; /* Single pixel border between adjacent navboxes */
}
.navbox-inner,
.navbox-subgroup {
width: 100%;
}
.navbox-group,
.navbox-title,
.navbox-abovebelow {
padding: 0.25em 1em;
line-height: 1.5em;
text-align: center;
}
.navbox-group {
white-space: nowrap;
/* @noflip */
text-align: right;
}
.navbox,
.navbox-subgroup {
background-color: #fdfdfd;
}
.navbox-list {
line-height: 1.5em;
border-color: #fdfdfd; /* Must match background color */
}
.navbox-list-with-group {
text-align: left;
border-left-width: 2px;
border-left-style: solid;
}
/* cell spacing for navbox cells */
/* Borders above 2nd, 3rd, etc. rows */
/* TODO: figure out how to replace tr as structure;
* with div structure it should be just a matter of first-child */
tr + tr > .navbox-abovebelow,
tr + tr > .navbox-group,
tr + tr > .navbox-image,
tr + tr > .navbox-list {
border-top: 2px solid #fdfdfd; /* Must match background color */
}
.navbox-title {
background-color: #ccf; /* Level 1 color */
}
.navbox-abovebelow,
.navbox-group,
.navbox-subgroup .navbox-title {
background-color: #ddf; /* Level 2 color */
}
.navbox-subgroup .navbox-group,
.navbox-subgroup .navbox-abovebelow {
background-color: #e6e6ff; /* Level 3 color */
}
.navbox-even {
background-color: #f7f7f7;
}
.navbox-odd {
background-color: transparent;
}
/* TODO: figure out how to remove reliance on td as structure */
.navbox .hlist td dl,
.navbox .hlist td ol,
.navbox .hlist td ul,
.navbox td.hlist dl,
.navbox td.hlist ol,
.navbox td.hlist ul {
padding: 0.125em 0;
}
.navbox .navbar {
display: block;
font-size: 100%;
}
.navbox-title .navbar {
/* @noflip */
float: left;
/* @noflip */
text-align: left;
/* @noflip */
margin-right: 0.5em;
}
e80b0d7a5770e6e105dab832deb6c37a5245ebc6
Template:Infobox cardinal styles
10
1124
2449
2021-12-23T16:12:29Z
w>Turtle-bienhoa
0
wikitext
text/x-wiki
<includeonly>{{Infobox manner of address
| child = {{{child|}}}
| background = #ffa4a4
| name = {{{name|{{{cardinal name|{{safesubst:PAGENAME}}}}}}}}
| image = {{safesubst:#if:{{{image|}}}|{{{image}}}|Template-Cardinal_(Bishop).svg}}
| size = {{safesubst:#if:{{{image_size|}}}|{{{image_size}}}|60px}}
| reference = {{{dipstyle|}}}
| spoken = {{{offstyle|}}}
| informal = [[Cardinal (Catholic Church)|Cardinal]]
| see = {{{see|{{{See|}}}}}}
| posthumous = {{{posthumous|}}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
b049fc346b72a3e7b920dbb610b80e3e0a0b65a4
Template:Notelist
10
570
1288
2021-12-25T05:48:43Z
wikipedia>Jonesey95
0
Adding unknown parameter tracking through [[:Category:Pages using notelist with unknown parameters]] using [[Module:check for unknown parameters]]. How was this not here before?
wikitext
text/x-wiki
{{reflist|{{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using notelist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Notelist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | notes | refs }}<noinclude>
{{documentation}}</noinclude>
093e937792d01a5dfc9dd3b5e5deda6b48d0f2be
Module:Hatnote list
828
36
67
2021-12-26T20:05:24Z
wikipedia>Nihiltres
0
Undid revision 1062166786 by [[Special:Contributions/Matthiaspaul|Matthiaspaul]] ([[User talk:Matthiaspaul|talk]]); should be fixed now, and if not, please ping me with examples as I couldn't reproduce the original error
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote list --
-- --
-- This module produces and formats lists for use in hatnotes. In particular, --
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --
-- are andList & orList helpers for formatting lists with those conjunctions. --
--------------------------------------------------------------------------------
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
--------------------------------------------------------------------------------
-- List stringification helper functions
--
-- These functions are used for stringifying lists, usually page lists inside
-- the "Y" portion of "For X, see Y" for-see items.
--------------------------------------------------------------------------------
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
conjunction = "and",
separator = ",",
altSeparator = ";",
space = " ",
formatted = false
}
--Searches display text only
local function searchDisp(haystack, needle)
return string.find(
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
)
end
-- Stringifies a list generically; probably shouldn't be used directly
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
if #list == 0 then return nil end
checkType("stringifyList", 2, options, "table", true)
options = options or {}
for k, v in pairs(stringifyListDefaultOptions) do
if options[k] == nil then options[k] = v end
end
local s = options.space
-- Format the list if requested
if options.formatted then
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
end
--DRY function
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
--------------------------------------------------------------------------------
-- For see
--
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the
-- {{about}} and {{redirect}} templates and their variants.
--------------------------------------------------------------------------------
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
forSeeForm = 'For %s, see %s.',
}
--Collapses duplicate punctuation
local function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
}
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end
return text
end
-- Structures arguments into a table for stringification, & options
function p.forSeeArgsToTable (args, from, options)
-- Type-checks and defaults
checkType("forSeeArgsToTable", 1, args, 'table')
checkType("forSeeArgsToTable", 2, from, 'number', true)
from = from or 1
checkType("forSeeArgsToTable", 3, options, 'table', true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then maxArg = k end
end
-- Structure the data out from the parameter list:
-- * forTable is the wrapper table, with forRow rows
-- * Rows are tables of a "use" string & a "pages" table of pagename strings
-- * Blanks are left empty for defaulting elsewhere, but can terminate list
local forTable = {}
local i = from
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
repeat
-- New empty row
local forRow = {}
-- On blank use, assume list's ended & break at end of this loop
forRow.use = args[i]
if not args[i] then terminated = true end
-- New empty list of pages
forRow.pages = {}
-- Insert first pages item if present
table.insert(forRow.pages, args[i + 1])
-- If the param after next is "and", do inner loop to collect params
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}
while args[i + 2] == options.andKeyword do
if args[i + 3] then
table.insert(forRow.pages, args[i + 3])
end
-- Increment to next "and"
i = i + 2
end
-- Increment to next use
i = i + 2
-- Append the row
table.insert(forTable, forRow)
until terminated or i > maxArg
return forTable
end
-- Stringifies a table as formatted by forSeeArgsToTable
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Stringify each for-see item into a list
local strList = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
link = mHatnote.disambiguate(options.title)
}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
end
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps
-- but not blank/whitespace values. Ignores named args and args < "from".
function p._forSee (args, from, options)
local forSeeTable = p.forSeeArgsToTable(args, from, options)
return p.forSeeTableToString(forSeeTable, options)
end
-- As _forSee, but uses the frame.
function p.forSee (frame, from, options)
mArguments = require('Module:Arguments')
return p._forSee(mArguments.getArgs(frame), from, options)
end
return p
d0828422b1aa0d0d0092d699d059c9e882260398
Template:Quote box/styles.css
10
1088
2375
2021-12-27T10:11:04Z
wikipedia>Goszei
0
self-revert
sanitized-css
text/css
/* {{pp-template}} */
.quotebox {
background-color: #F9F9F9;
border: 1px solid #aaa;
box-sizing: border-box;
padding: 10px;
font-size: 88%;
max-width: 100%;
}
.quotebox.floatleft {
margin: .5em 1.4em .8em 0;
}
.quotebox.floatright {
margin: .5em 0 .8em 1.4em;
}
.quotebox.centered {
overflow: hidden;
position: relative;
margin: .5em auto .8em auto;
}
.quotebox.floatleft span,
.quotebox.floatright span {
font-style: inherit;
}
.quotebox > blockquote {
margin: 0;
padding: 0;
/* Styling from Minerva */
border-left: 0;
font-family: inherit;
font-size: inherit;
}
.quotebox-title {
background-color: #F9F9F9;
text-align: center;
font-size: 110%;
font-weight: bold;
}
.quotebox-quote > :first-child {
margin-top: 0;
}
.quotebox-quote:last-child > :last-child {
margin-bottom: 0;
}
.quotebox-quote.quoted:before {
font-family:'Times New Roman',serif;
font-weight:bold;
font-size: large;
color: gray;
content: ' “ ';
vertical-align: -45%;
line-height: 0;
}
.quotebox-quote.quoted:after {
font-family:'Times New Roman',serif;
font-weight:bold;
font-size: large;
color: gray;
content: ' ” ';
line-height: 0;
}
.quotebox .left-aligned {
text-align: left;
}
.quotebox .right-aligned {
text-align: right;
}
.quotebox .center-aligned {
text-align: center;
}
.quotebox .quote-title,
.quotebox .quotebox-quote {
display: block;
}
.quotebox cite {
display:block;
font-style:normal;
}
@media screen and (max-width:640px) {
.quotebox {
/*override inline styles */
width: 100% !important;
margin: 0 0 .8em !important;
float: none !important;
}
}
c6ed92a92ff9774be727e66a8b57231cb39829ff
Template:Infobox manner of address
10
1118
2443
2021-12-30T11:42:51Z
w>Neveselbert
0
Reverted 2 edits by an unknown user
wikitext
text/x-wiki
{{Infobox
| child = {{#if:{{{child|}}}{{{embed|}}}|yes}}
| bodyclass = vcard
| abovestyle = font-weight: normal; background-color: {{#if:{{{background|}}}|{{{background}}}|#DEDEDE}}; {{#if:{{{color|{{{colour|}}}}}}|color: {{{color|{{{colour}}}}}};}}
| above = <includeonly><span style="font-size:80%">{{#if:{{{type|}}}|{{{type}}} styles|Styles}} of</span><br>'''<span class="fn">{{{royal name|{{{name|{{PAGENAMEBASE}}}}}}}}</span>'''{{#if:{{{consort|}}}|<span style="font-size:80%"> as consort</span>}}</includeonly>
| title = {{#if:{{{child|}}}{{{embed|}}}|<div style="background-color: {{#if:{{{background|}}}|{{{background}}}|#DEDEDE}}; {{#if:{{{color|{{{colour|}}}}}}|color: {{{color|{{{colour}}}}}};}}">'''{{#if:{{{type|}}}|{{{type}}} styles|Styles}}'''</div>}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|alt={{{image_alt|}}}|size={{{image_size|{{{size|}}}}}} }} {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|alt={{{image2_alt|}}}|size={{{image2_size|{{{size2|{{{image_size|{{{size|}}}}}}}}}}}} }}
| caption = {{{caption|}}}
| label1 = [[Style (manner of address)|Reference style]]
| data1 = {{{dipstyle|{{{reference|}}}}}}
| label2 = Spoken style
| data2 = {{{offstyle|{{{spoken|}}}}}}
| label3 = Religious style
| data3 = {{{relstyle|{{{religious|}}}}}}
| label4 = Posthumous style
| data4 = {{{deathstyle|{{{posthumous|}}}}}}
| label5 = Alternative style
| data5 = {{{altstyle|{{{alternative|}}}}}}
| label6 = Informal style
| data6 = {{{informal|}}}
| label7 = [[Episcopal see|See]]
| data7 = {{{see|}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox manner of address with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox manner of address]] with unknown parameter "_VALUE_"|ignoreblank=y| alternative | altstyle | background | caption | child | color | colour | consort | deathstyle | dipstyle | embed | image | image_alt | image_size | image2 | image2_alt | image2_size | informal | name | offstyle | posthumous | reference | religious | relstyle | royal name | see | size | size2 | spoken | type }}<noinclude>
{{documentation}}<!-- add categories and interwikis to Template:Infobox manner of address/doc -->
</noinclude>
235abec48f09dde53aabf712e465e6f3fde9c8cc
Template:Infobox bishop styles
10
1122
2447
2021-12-31T09:23:28Z
w>Neveselbert (mobile)
0
background
wikitext
text/x-wiki
{{Infobox manner of address
| embed = {{{child|{{{embed|}}}}}}
| background = {{#if:{{yesno|{{{child|{{{embed|}}}}}}}}|transparent|plum}}
| name = {{{name|{{{bishop name|{{{{{|safesubst:}}}PAGENAMEBASE}}}}}}}}
| image = {{{{{|safesubst:}}}#if:{{{image|}}}|{{{image}}}|Mitre plain 2.png}}
| size = {{#if:{{{image_size|}}}|{{{image_size}}}|60px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| religious = {{{relstyle<includeonly>|</includeonly>}}}
| posthumous = {{{deathstyle<includeonly>|</includeonly>}}}
}}<noinclude>{{documentation}}</noinclude>
d2806619da310db378f3d471a9cc722575acdc85
Template:Infobox archbishop styles
10
1119
2444
2021-12-31T09:26:52Z
w>Neveselbert (mobile)
0
PAGENAMEBASE
wikitext
text/x-wiki
{{Infobox manner of address
| embed = {{{child|{{{embed|}}}}}}
| background = {{#if:{{yesno|{{{child|{{{embed|}}}}}}}}|transparent|plum}}
| name = {{{archbishop name|{{{{{|safesubst:}}}PAGENAMEBASE}}}}}
| image = {{{{{|safesubst:}}}#if:{{{image|}}}|{{{image}}}|Mitre (plain).svg}}
| size = {{{{{|safesubst:}}}#if:{{{image_size|}}}|{{{image_size}}}|60px}}
| reference = {{{dipstyle<includeonly>|</includeonly>}}}
| spoken = {{{offstyle<includeonly>|</includeonly>}}}
| religious = {{{relstyle<includeonly>|</includeonly>}}}
| posthumous = {{{deathstyle<includeonly>|</includeonly>}}}
}}<noinclude>{{documentation}}</noinclude>
f83a24dd169f899e99799dec4333b118361fddc7
Template:Tp
10
140
329
2022-01-01T05:37:19Z
Xaosflux
7
{{Rcat shell|{{R from template shortcut}}}}
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Rcat shell|{{R from template shortcut}}}}
59847a20c2c64a767694d7612bfc5d1130c96b9a
Module:ISO 3166/data/FR
828
1450
2785
2022-01-02T05:08:53Z
w>Drmccreedy
0
2021-11-25 update of ISO 3166-2
Scribunto
text/plain
return {
lang = "fr",
-- Metropolitan regions
["ARA"] = {name="Auvergne-Rhône-Alpes"},
["BFC"] = {name="Bourgogne-Franche-Comté"},
["BRE"] = {name="Brittany",isoname="Bretagne"},
["CVL"] = {name="Centre-Val de Loire"},
["GES"] = {name="Grand Est",isoname="Grand-Est"},
["HDF"] = {name="Hauts-de-France"},
["IDF"] = {name="Île-de-France"},
["NAQ"] = {name="Nouvelle-Aquitaine"},
["NOR"] = {name="Normandy",isoname="Normandie"},
["OCC"] = {name="Occitanie"},
["PAC"] = {name="Provence-Alpes-Côte d'Azur",isoname="Provence-Alpes-Côte-d’Azur"},
["PDL"] = {name="Pays de la Loire",isoname="Pays-de-la-Loire"},
-- Metropolitan collectivity with special status
["20R"] = {name="Corsica",isoname="Corse"},
["69M"] = {name="Métropole de Lyon"},
["75C"] = {name="Paris"},
-- European collectivity
["6AE"] = {name="Alsace"},
-- Metropolitan departments
["01"] = {name="Ain"},
["02"] = {name="Aisne"},
["03"] = {name="Allier"},
["04"] = {name="Alpes-de-Haute-Provence"},
["05"] = {name="Hautes-Alpes"},
["06"] = {name="Alpes-Maritimes"},
["07"] = {name="Ardèche"},
["08"] = {name="Ardennes"},
["09"] = {name="Ariège"},
["10"] = {name="Aube"},
["11"] = {name="Aude"},
["12"] = {name="Aveyron"},
["13"] = {name="Bouches-du-Rhône"},
["14"] = {name="Calvados"},
["15"] = {name="Cantal"},
["16"] = {name="Charente"},
["17"] = {name="Charente-Maritime"},
["18"] = {name="Cher"},
["19"] = {name="Corrèze"},
["21"] = {name="Côte-d'Or"},
["22"] = {name="Côtes-d'Armor"},
["23"] = {name="Creuse"},
["24"] = {name="Dordogne"},
["25"] = {name="Doubs"},
["26"] = {name="Drôme"},
["27"] = {name="Eure"},
["28"] = {name="Eure-et-Loir"},
["29"] = {name="Finistère"},
["2A"] = {name="Corse-du-Sud"},
["2B"] = {name="Haute-Corse"},
["30"] = {name="Gard"},
["31"] = {name="Haute-Garonne"},
["32"] = {name="Gers"},
["33"] = {name="Gironde"},
["34"] = {name="Hérault"},
["35"] = {name="Ille-et-Vilaine"},
["36"] = {name="Indre"},
["37"] = {name="Indre-et-Loire"},
["38"] = {name="Isère"},
["39"] = {name="Jura"},
["40"] = {name="Landes"},
["41"] = {name="Loir-et-Cher"},
["42"] = {name="Loire"},
["43"] = {name="Haute-Loire"},
["44"] = {name="Loire-Atlantique"},
["45"] = {name="Loiret"},
["46"] = {name="Lot"},
["47"] = {name="Lot-et-Garonne"},
["48"] = {name="Lozère"},
["49"] = {name="Maine-et-Loire"},
["50"] = {name="Manche"},
["51"] = {name="Marne"},
["52"] = {name="Haute-Marne"},
["53"] = {name="Mayenne"},
["54"] = {name="Meurthe-et-Moselle"},
["55"] = {name="Meuse"},
["56"] = {name="Morbihan"},
["57"] = {name="Moselle"},
["58"] = {name="Nièvre"},
["59"] = {name="Nord"},
["60"] = {name="Oise"},
["61"] = {name="Orne"},
["62"] = {name="Pas-de-Calais"},
["63"] = {name="Puy-de-Dôme"},
["64"] = {name="Pyrénées-Atlantiques"},
["65"] = {name="Hautes-Pyrénées"},
["66"] = {name="Pyrénées-Orientales"},
["67"] = {name="Bas-Rhin"},
["68"] = {name="Haut-Rhin"},
["69"] = {name="Rhône"},
["70"] = {name="Haute-Saône"},
["71"] = {name="Saône-et-Loire"},
["72"] = {name="Sarthe"},
["73"] = {name="Savoie"},
["74"] = {name="Haute-Savoie"},
["76"] = {name="Seine-Maritime"},
["77"] = {name="Seine-et-Marne"},
["78"] = {name="Yvelines"},
["79"] = {name="Deux-Sèvres"},
["80"] = {name="Somme"},
["81"] = {name="Tarn"},
["82"] = {name="Tarn-et-Garonne"},
["83"] = {name="Var"},
["84"] = {name="Vaucluse"},
["85"] = {name="Vendée"},
["86"] = {name="Vienne"},
["87"] = {name="Haute-Vienne"},
["88"] = {name="Vosges"},
["89"] = {name="Yonne"},
["90"] = {name="Territoire de Belfort"},
["91"] = {name="Essonne"},
["92"] = {name="Hauts-de-Seine"},
["93"] = {name="Seine-Saint-Denis"},
["94"] = {name="Val-de-Marne"},
["95"] = {name="Val-d'Oise"},
-- Overseas departments
["971"] = {name="Guadeloupe"},
["972"] = {name="Martinique"},
["973"] = {name="French Guiana",isoname="Guyane (française)"},
["974"] = {name="Réunion",isoname="La Réunion"},
["976"] = {name="Mayotte"},
-- Overseas collectivity
["BL"] = {name="Saint Barthélemy",isoname="Saint-Barthélemy"},
["MF"] = {name="Saint Martin",isoname="Saint-Martin"},
["PF"] = {name="French Polynesia",isoname="Polynésie française"},
["PM"] = {name="Saint Pierre and Miquelon",isoname="Saint-Pierre-et-Miquelon"},
["WF"] = {name="Wallis and Futuna",isoname="Wallis-et-Futuna"},
-- Overseas collectivity with special status
["NC"] = {name="New Caledonia",isoname="Nouvelle-Calédonie"},
-- Overseas territory
["TF"] = {name="French Southern Territories",isoname="Terres australes françaises",altnames={"French Southern and Antarctic Lands"}},
-- Dependencies
["CP"] = {name="Clipperton Island",isoname="Clipperton"}
}
f875305f239ca6fa0ef4fe2f7f107bf957db90be
Template:Ifsubst
10
600
1350
2022-01-02T08:48:20Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#if:{{{demo|}}}
|{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}
|{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}}
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}}}<noinclude>
{{Documentation}}
</noinclude>
38e667b5df326086489bf557a5f7c4e43393af78
Template:FULLROOTPAGENAME
10
859
1902
2022-01-02T08:54:02Z
wikipedia>Dinoguy1000
0
fix "|=foo" bug
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#if: {{ safesubst:<noinclude/>Ns has subpages | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{ safesubst:<noinclude/>NAMESPACE:{{{1}}}}}|{{ safesubst:<noinclude/>NAMESPACE}}}} }}
| {{ safesubst:<noinclude/>#titleparts:{{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}|1}}
| {{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}
}}<noinclude>
{{documentation}}
</noinclude>
fd0c4e7050dded2d50e5df405e6e5e31dd0d46ac
Template:No redirect
10
130
309
2022-01-02T09:07:18Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
{{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}}
| <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span>
| {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}}
}}<noinclude>
{{documentation}}
</noinclude>
1760035b1bed54ee08b810208ed3551b812dfe13
Template:Order of magnitude
10
1448
2783
2022-01-02T09:08:29Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
<includeonly>{{safesubst:<noinclude/>#ifexpr:{{{1|0}}}=0
|{{safesubst:<noinclude/>#ifexpr:abs{{{1|0}}}1=1
|0
|{{safesubst:<noinclude/>#expr:floor((ln(abs{{{1}}}1)/ln10)+1)}}
}}
|{{safesubst:<noinclude/>#expr:floor((ln(abs({{{1|0}}}) )/ln 10)+1E((abs{{{1|0}}}>1E100 or abs{{{1|0}}}<1E-100)-14))}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
cede5694e8ebb404ecdd17ae1f8e1c5d19562728
Template:Description missing
10
1316
2651
2022-01-02T09:09:12Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
{{imbox
| type = style
| text =
This file has no '''{{ #if: {{{1|}}} | {{{1}}} | description }}''', and may be lacking other information. <br> Files should have a summary to inform others of the content, author, source, and date if possible. If you know or have access to such information, please add it to the file page.
----
<small>Notify the uploader with: {{#ifeq:{{{1}}}|author information
|<nowiki>{{subst:add-author-I|1=</nowiki>{{PAGENAME}}<nowiki>}}</nowiki>
|<nowiki>{{subst:add-desc-I|1=</nowiki>{{PAGENAME}}<nowiki>}}</nowiki>
}}</small>
}}{{image other <!--Only categorise when on image pages-->
| {{#ifeq:{{{category|μ}}}|μ| [[Category:Wikipedia files lacking a description|{{PAGENAME}}]] }}
}}
}}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
c15249dbb035d582396ee15b9876f6157f3b21f9
Template:Clarify
10
1661
3061
2022-01-02T09:15:39Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
{{Fix-span
|link=Wikipedia:Please clarify
|text=clarification needed
|title={{delink|{{{reason|The text near this tag may need clarification or removal of jargon.}}}}}
|date={{{date|}}}
|pre-text={{{pre-text|}}}
|post-text={{{post-text|}}}
|cat-date=Category:Wikipedia articles needing clarification
|content={{{text|}}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
afe686147e4423132c07ddd2f1d9c73c4bdcca30
Template:Citation style
10
1302
2637
2022-01-02T09:37:16Z
Dinoguy1000
20
fix "|=foo" bug
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Citation style}} begin-->{{Ambox
| name = Citation style
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| small = {{{small|}}}
| class = ambox-citation_style
| sect = {{{1|}}}
| issue = '''has an unclear citation style'''. {{#if:{{{reason|{{{details|}}}}}}|The reason given is: '''{{Terminate sentence|{{{reason|{{{details}}}}}}}}'''}}
| fix = The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]] and [[Help:Footnotes|footnoting]].
| cat = Wikipedia references cleanup
| all = All articles needing references cleanup
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
| date = {{{date|}}}
| removalnotice = yes
}}<!--{{Citation style}} end-->
}}<noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
ffdf9d833ab08e004e41c1c6da5fde056385ee2f
Template:Underlinked
10
1307
2642
2022-01-02T09:38:44Z
Dinoguy1000
20
fix "|=foo" bug; rm unnecessary substitution check
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
<!--{{Underlinked}} begin-->{{Ambox
| name = Underlinked
| type = style
| image = [[File:Ambox wikify.svg|50x40px|link=|alt=]]
| issue = This {{{1|article}}} '''needs more [[Wikipedia:Manual of Style/Linking|links to other articles]] to help [[Wikipedia:Manual of Style/Linking#Principles|integrate it into the encyclopedia]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text.
| removalnotice = yes
| date = {{{date|}}}
| cat = Articles with too few wikilinks
| all = All articles with too few wikilinks
| cat2 = Articles covered by WikiProject Wikify
| all2 = All articles covered by WikiProject Wikify
}}<!--{{Underlinked}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
91b612fd89e6e3fdf0b30df492c6a9e2b83f3449
Template:Native name
10
1182
2511
2022-01-02T15:28:59Z
w>Trappist the monk
0
use [[Module:Native name]];
wikitext
text/x-wiki
<includeonly>{{#invoke:native name|native_name}}</includeonly><noinclude>{{Documentation}}</noinclude>
8ef2e413bdb984b6a4b78857616db695b6658203
Module:Navbar/styles.css
828
39
73
2022-01-03T23:12:15Z
wikipedia>Izno
0
navbar styles that were moved to parent templates
text
text/plain
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Template:Pluralize from text
10
174
401
2022-01-09T17:59:39Z
wikipedia>MusikBot II
0
Protected "[[Template:Pluralize from text]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 18336 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Detect singular|pluralize}}<noinclude>{{documentation}}</noinclude>
305f4b531ea5639895c83cecd0fd809f7f5cf845
Template:Small
10
103
253
2022-01-17T03:43:07Z
wikipedia>Explicit
0
[[Wikipedia:Templates for discussion/Log/2022 January 10#Template:Smaller]] closed as merge ([[WP:XFDC#4.0.12|XFDcloser]])
wikitext
text/x-wiki
<span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude>
{{Documentation}}<!--Categories and interwikis go in the /doc sub-page.-->
</noinclude>
76d3535c2917cc3bfb1b032506073faa15e1a480
Module:Redirect-distinguish
828
1036
2270
2022-01-18T05:49:10Z
wikipedia>Elli
0
Undid revision 1066390800 by [[Special:Contributions/Faster than Thunder|Faster than Thunder]] ([[User talk:Faster than Thunder|talk]]) yeah, no, this is inappropriate
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools = require('Module:TableTools')
local p = {}
function p.redirectDistinguish (frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
return p._redirectDistinguish(args)
end
function p._redirectDistinguish(args)
if not args[1] then
return mHatnote.makeWikitextError(
'no redirect supplied',
'Template:Redirect-distinguish',
args.category
)
end
local redirectTitle = mw.title.new(args[1])
local currentTitle = currentTitle or mw.title.getCurrentTitle()
if
string.match(args[1], 'REDIRECT%d+') or
args[1] == 'TERM' or
currentTitle.namespace ~= 0
then
--do nothing
elseif not redirectTitle or not redirectTitle.exists then
args[1] = args[1] .. '[[Category:Missing redirects]]'
elseif not redirectTitle.isRedirect then
if string.find(redirectTitle:getContent(), '#invoke:RfD') then
args[1] = args[1] ..
'[[Category:Articles with redirect hatnotes impacted by RfD]]'
else
args[1] = args[1] ..
'[[Category:Articles with redirect hatnotes needing review]]'
end
end
if not args[2] then
return mHatnote.makeWikitextError(
'no page to be distinguished supplied',
'Template:Redirect-distinguish',
args.category
)
end
args = mTableTools.compressSparseArray(args)
--Assignment by removal here makes for convenient concatenation later
local redirect = table.remove(args, 1)
local text = string.format(
'"%s" redirects here. Not to be confused with %s.',
redirect,
mHatlist.orList(args, true)
)
return mHatnote._hatnote(text)
end
return p
4bdb55228ac3e76fde51e08f10054d210d702b91
Template:Smaller
10
104
255
2022-01-18T10:48:21Z
wikipedia>Primefac
0
merge complete
wikitext
text/x-wiki
#REDIRECT [[Template:Small]]
{{r from merge}}
2209ecdc4a987eb3d73f648941a3daaed04cd5d5
Module:Infobox/styles.css
828
19
33
2022-01-18T15:18:00Z
wikipedia>Jdlrobson
0
Fix [[phab:T281642]], a pet peeve of mine. This copies across styles from [[MediaWiki:Minerva.css]]
text
text/plain
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Template:Detect singular
10
199
452
2022-01-19T08:38:01Z
wikipedia>MSGJ
0
Changed protection settings for "[[Template:Detect singular]]": template protection should be adaquate ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:Detect singular|main}}<noinclude>
{{documentation}}
</noinclude>
0dd1507d935296f20a354173ba876d010a9ed72b
Template:POV
10
1301
2636
2022-01-20T20:37:15Z
w>JJMC89
0
[[Wikipedia:Categories for discussion/Log/2021 December 23#Category:NPOV disputes]]
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
<!--{{POV}} begin-->{{Ambox
| name = POV
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type = content
| class = ambox-POV
| style = {{{style|}}}
| image = [[File:Unbalanced scales.svg|50x40px|link=]]
| issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|disputed]]'''.
| talk = {{{talk|#}}}
| fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]].
| removalnotice = yes
| date = {{{date|}}}
| cat = Wikipedia neutral point of view disputes
| all = All Wikipedia neutral point of view disputes
}}<!--{{POV}} end-->
}}<noinclude>
{{Documentation}}
</noinclude>
e8c041c852b18976809007fd683af9617ab6dacb
Module:Citation/CS1/Utilities
828
892
1974
2022-01-22T14:11:16Z
wikipedia>Trappist the monk
0
update per [[Wikipedia:Village_pump_(proposals)#rfc:_shall_we_update_cs1/2?|RfC]];
Scribunto
text/plain
local z = {
error_cats_t = {}; -- for categorizing citations that contain errors
error_ids_t = {}; -- list of error identifiers; used to prevent duplication of certain errors; local to this module
error_msgs_t = {}; -- sequence table of error messages
maint_cats_t = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work
prop_cats_t = {}; -- for categorizing citations based on certain properties, language of source for instance
prop_keys_t = {}; -- for adding classes to the citation's <cite> tag
};
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set (var)
return not (var == nil or var == '');
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array (needle, haystack)
if needle == nil then
return false;
end
for n, v in ipairs (haystack) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
When <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else
with allow_empty = false, <str> must have at least one character inside the markup
with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context.
After further evaluation the two cases might be merged at a later stage, but should be kept separated for now.
]]
local function has_accept_as_written (str, allow_empty)
if not is_set (str) then
return str, false;
end
local count;
if true == allow_empty then
str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set
else
str, count = str:gsub ('^%(%((.+)%)%)$', '%1');
end
return str, 0 ~= count;
end
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table. <args> may be a single string or a
sequence table of multiple strings.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< E R R O R _ C O M M E N T >----------------------------------------------------
Wraps error messages with CSS markup according to the state of hidden. <content> may be a single string or a
sequence table of multiple strings.
]]
local function error_comment (content, hidden)
return substitute (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content);
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
]]
local function hyphen_to_dash (str)
if not is_set (str) then
return str;
end
local accept; -- boolean
str = str:gsub ("(%(%(.-%)%))", function(m) return m:gsub(",", ","):gsub(";", ";") end) -- replace commas and semicolons in accept-as-written markup with similar unicode characters so they'll be ignored during the split
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-'); -- replace HTML numeric entity with hyphen character
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
item, accept = has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item
if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
table.insert (out, item); -- add the (possibly modified) item to the output table
end
local temp_str = ''; -- concatenate the output table into a comma separated string
temp_str, accept = has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out
if accept then
temp_str = has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value
return temp_str:gsub(",", ","):gsub(";", ";");
else
return temp_str:gsub(",", ","):gsub(";", ";"); -- else, return assembled temp_str
end
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are
provided or link is omitted, returns an empty string.
]=]
local function make_wikilink (link, display)
if not is_set (link) then return '' end
if is_set (display) and link ~= display then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
--[[--------------------------< S E T _ M E S S A G E >----------------------------------------------------------
Sets an error message using the ~/Configuration error_conditions{} table along with arguments supplied in the function
call, inserts the resulting message in z.error_msgs_t{} sequence table, and returns the error message.
<error_id> – key value for appropriate error handler in ~/Configuration error_conditions{} table
<arguments> – may be a single string or a sequence table of multiple strings to be subsititued into error_conditions[error_id].message
<raw> – boolean
true – causes this function to return the error message not wrapped in visible-error, hidden-error span tag;
returns error_conditions[error_id].hidden as a second return value
does not add message to z.error_msgs_t sequence table
false, nil – adds message wrapped in visible-error, hidden-error span tag to z.error_msgs_t
returns the error message wrapped in visible-error, hidden-error span tag; there is no second return value
<prefix> – string to be prepended to <message> -- TODO: remove support for these unused(?) arguments?
<suffix> – string to be appended to <message>
TODO: change z.error_cats_t and z.maint_cats_t to have the form cat_name = true? this to avoid dups without having to have an extra table
]]
local added_maint_cats = {} -- list of maintenance categories that have been added to z.maint_cats_t; TODO: figure out how to delete this table
local function set_message (error_id, arguments, raw, prefix, suffix)
local error_state = cfg.error_conditions[error_id];
prefix = prefix or '';
suffix = suffix or '';
if error_state == nil then
error (cfg.messages['undefined_error'] .. ': ' .. error_id); -- because missing error handler in Module:Citation/CS1/Configuration
elseif is_set (error_state.category) then
if error_state.message then -- when error_state.message defined, this is an error message
table.insert (z.error_cats_t, error_state.category);
else
if not added_maint_cats[error_id] then
added_maint_cats[error_id] = true; -- note that we've added this category
table.insert (z.maint_cats_t, substitute (error_state.category, arguments)); -- make cat name then add to table
end
return; -- because no message, nothing more to do
end
end
local message = substitute (error_state.message, arguments);
message = table.concat (
{
message,
' (',
make_wikilink (
table.concat (
{
cfg.messages['help page link'],
'#',
error_state.anchor
}),
cfg.messages['help page label']),
')'
});
z.error_ids_t[error_id] = true;
if z.error_ids_t['err_citation_missing_title'] and -- if missing-title error already noted
in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these
return '', false; -- don't bother because one flavor of missing title is sufficient
end
message = table.concat ({prefix, message, suffix});
if true == raw then
return message, error_state.hidden; -- return message not wrapped in visible-error, hidden-error span tag
end
message = error_comment (message, error_state.hidden); -- wrap message in visible-error, hidden-error span tag
table.insert (z.error_msgs_t, message); -- add it to the messages sequence table
return message; -- and done; return value generally not used but is used as a flag in various functions of ~/Identifiers
end
--[[-------------------------< I S _ A L I A S _ U S E D >-----------------------------------------------------
This function is used by select_one() to determine if one of a list of alias parameters is in the argument list
provided by the template.
Input:
args – pointer to the arguments table from calling template
alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration
index – for enumerated parameters, identifies which one
enumerated – true/false flag used to choose how enumerated aliases are examined
value – value associated with an alias that has previously been selected; nil if not yet selected
selected – the alias that has previously been selected; nil if not yet selected
error_list – list of aliases that are duplicates of the alias already selected
Returns:
value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected
selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected
]]
local function is_alias_used (args, alias, index, enumerated, value, selected, error_list)
if enumerated then -- is this a test for an enumerated parameters?
alias = alias:gsub ('#', index); -- replace '#' with the value in index
else
alias = alias:gsub ('#', ''); -- remove '#' if it exists
end
if is_set (args[alias]) then -- alias is in the template's argument list
if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases
local skip;
for _, v in ipairs (error_list) do -- spin through the error list to see if we've added this alias
if v == alias then
skip = true;
break; -- has been added so stop looking
end
end
if not skip then -- has not been added so
table.insert (error_list, alias); -- add error alias to the error list
end
else
value = args[alias]; -- not yet selected an alias, so select this one
selected = alias;
end
end
return value, selected; -- return newly selected alias, or previously selected alias
end
--[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------
Adds a category to z.maint_cats_t using names from the configuration file with additional text if any.
To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maint_cats_t.
]]
local function add_maint_cat (key, arguments)
if not added_maint_cats [key] then
added_maint_cats [key] = true; -- note that we've added this category
table.insert (z.maint_cats_t, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table
end
end
--[[--------------------------< A D D _ P R O P _ C A T >--------------------------------------------------------
Adds a category to z.prop_cats_t using names from the configuration file with additional text if any.
foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages
may be categorized but multiples of the same language are not categorized.
added_prop_cats is a table declared in page scope variables above
]]
local added_prop_cats = {}; -- list of property categories that have been added to z.prop_cats_t
local function add_prop_cat (key, arguments, key_modifier)
local key_modified = key .. ((key_modifier and key_modifier) or ''); -- modify <key> with <key_modifier> if present and not nil
if not added_prop_cats [key_modified] then
added_prop_cats [key_modified] = true; -- note that we've added this category
table.insert (z.prop_cats_t, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table
table.insert (z.prop_keys_t, 'cs1-prop-' .. key); -- convert key to class for use in the citation's <cite> tag
end
end
--[[--------------------------< S A F E _ F O R _ I T A L I C S >----------------------------------------------
Protects a string that will be wrapped in wiki italic markup '' ... ''
Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that
they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact
poorly under Mediawiki's HTML tidy.
]]
local function safe_for_italics (str)
if not is_set (str) then return str end
if str:sub (1, 1) == "'" then str = "<span></span>" .. str; end
if str:sub (-1, -1) == "'" then str = str .. "<span></span>"; end
return str:gsub ('\n', ' '); -- Remove newlines as they break italics.
end
--[[--------------------------< W R A P _ S T Y L E >----------------------------------------------------------
Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one
argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason
this function is similar to but separate from wrap_msg().
]]
local function wrap_style (key, str)
if not is_set (str) then
return "";
elseif in_array (key, {'italic-title', 'trans-italic-title'}) then
str = safe_for_italics (str);
end
return substitute (cfg.presentation[key], {str});
end
--[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------
make a separated list of items using provided separators.
<sep_list> - typically '<comma><space>'
<sep_list_pair> - typically '<space>and<space>'
<sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>'
defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end']
if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied
]]
local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end)
local list = '';
if not sep_list then -- set the defaults
sep_list = cfg.presentation['sep_list'];
sep_list_pair = cfg.presentation['sep_list_pair'];
sep_list_end = cfg.presentation['sep_list_end'];
end
if 2 >= count then
list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item
elseif 2 < count then
list = table.concat (list_seq, sep_list, 1, count - 1); -- concatenate all but last item with plain list separator
list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator
end
return list;
end
--[[--------------------------< S E L E C T _ O N E >----------------------------------------------------------
Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just
names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified
by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'.
Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities.
Generates an error if more than one match is present.
]]
local function select_one (args, aliases_list, error_condition, index)
local value = nil; -- the value assigned to the selected parameter
local selected = ''; -- the name of the parameter we have chosen
local error_list = {};
if index ~= nil then index = tostring(index); end
for _, alias in ipairs (aliases_list) do -- for each alias in the aliases list
if alias:match ('#') then -- if this alias can be enumerated
if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias
end
value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias
else
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- test for non-enumerated alias
end
end
if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names()
for i, v in ipairs (error_list) do
error_list[i] = wrap_style ('parameter', v);
end
table.insert (error_list, wrap_style ('parameter', selected));
set_message (error_condition, {make_sep_list (#error_list, error_list)});
end
return value, selected;
end
--[=[-------------------------< R E M O V E _ W I K I _ L I N K >----------------------------------------------
Gets the display text from a wikilink like [[A|B]] or [[B]] gives B
The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup).
In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label
if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match
in the initial gsub, the replacement function l() doesn't get called.
]=]
local function remove_wiki_link (str)
return (str:gsub ("%[%[([^%[%]]*)%]%]", function(l)
return l:gsub ("^[^|]*|(.*)$", "%1" ):gsub ("^%s*(.-)%s*$", "%1");
end));
end
--[=[-------------------------< I S _ W I K I L I N K >--------------------------------------------------------
Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts.
If str is a complex wikilink ([[L|D]]):
returns wl_type 2 and D and L from [[L|D]];
if str is a simple wikilink ([[D]])
returns wl_type 1 and D from [[D]] and L as empty string;
if not a wikilink:
returns wl_type 0, str as D, and L as empty string.
trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and
treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes).
]=]
local function is_wikilink (str)
local D, L
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]
if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content)
return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L
end
L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]]
if not is_set (D) then -- if no separate display
D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]]
wl_type = 1;
end
D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters
return wl_type, D, L or '';
end
--[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >--------------------------------
Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata.
This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to
markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind.
Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag
to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was
removed; returns the argument and nil when no markup removed
]]
local function strip_apostrophe_markup (argument)
if not is_set (argument) then
return argument, nil; -- no argument, nothing to do
end
if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit.
return argument, nil;
end
local flag;
while true do
if argument:find ("'''''", 1, true) then -- bold italic (5)
argument, flag = argument:gsub ("%'%'%'%'%'", ""); -- remove all instances of it
elseif argument:find ("''''", 1, true) then -- italic start and end without content (4)
argument, flag=argument:gsub ("%'%'%'%'", "");
elseif argument:find ("'''", 1, true) then -- bold (3)
argument, flag=argument:gsub ("%'%'%'", "");
elseif argument:find ("''", 1, true) then -- italic (2)
argument, flag = argument:gsub ("%'%'", "");
else
break;
end
end
return argument, flag; -- done
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr)
cfg = cfg_table_ptr;
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
add_maint_cat = add_maint_cat, -- exported functions
add_prop_cat = add_prop_cat,
error_comment = error_comment,
has_accept_as_written = has_accept_as_written,
hyphen_to_dash = hyphen_to_dash,
in_array = in_array,
is_set = is_set,
is_wikilink = is_wikilink,
make_sep_list = make_sep_list,
make_wikilink = make_wikilink,
remove_wiki_link = remove_wiki_link,
safe_for_italics = safe_for_italics,
select_one = select_one,
set_message = set_message,
set_selected_modules = set_selected_modules,
strip_apostrophe_markup = strip_apostrophe_markup,
substitute = substitute,
wrap_style = wrap_style,
z = z, -- exported table
}
b006801b48981b2987f20fc09cbe0dfda525e044
Template:SDcat/doc
10
764
1703
2022-01-23T09:54:20Z
wikipedia>Christian75
0
{{High risk}}
wikitext
text/x-wiki
{{Documentation subpage}}
{{High risk}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{lua|Module:SDcat}}
This template is merely a wrapper for [[Module:SDcat]], which adds tracking categories to articles depending on whether their [[WP:short description|short description]] matches the associated description field on Wikidata. Complete documentation is available at [[Module:SDcat]].
== Usage ==
<code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code>
=== For testing ===
<code><nowiki>{{SDcat |sd=short description |qid=Wikidata entity ID |lp=link prefix (usually ":") }}</nowiki></code>
<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:WikiProject Short descriptions]]
}}</includeonly>
2a2e572b915cc316e39d344979cbca621b80c828
Template:Country data Hungary
10
1200
2529
2022-01-24T06:40:01Z
w>Paine Ellsworth
0
use AWB to add navy variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Hungary
| flag alias = Flag of Hungary.svg
| flag alias-1848 = Flag of Hungary (1848-1849, 1867-1869).svg
| flag alias-1849 = Flag of the Habsburg Monarchy.svg
| flag alias-1867 = Flag of Hungary (1848-1849, 1867-1869).svg
| flag alias-1869 = Flag of Hungary (1869-1874).svg
| flag alias-1874 = Flag of Hungary (1874-1896).svg
| flag alias-1896 = Flag of Hungary (1896-1915; angels).svg
| flag alias-1915 = Flag of Hungary (1915-1918; angels).svg
| flag alias-1918 = Flag of Hungary (1918-1919).svg
| flag alias-1919 = Flag of Hungary (1919).svg
| flag alias-1920 = Flag of Hungary (1915-1918, 1919-1946).svg
| flag alias-1946 = Flag of Hungary (1946-1949, 1956-1957; 1-2 aspect ratio).svg
| flag alias-1949 = Flag of Hungary (1949-1956; 1-2 aspect ratio).svg
| flag alias-1956 = Flag of Hungary (1946-1949, 1956-1957; 1-2 aspect ratio).svg
| flag alias-1957 = Flag of Hungary.svg
| flag alias-state = Flag of Hungary with arms (state).svg
| flag alias-civil = Civil Ensign of Hungary.svg
| flag alias-naval = Naval Ensign of Hungary.svg
| link alias-naval = Hungarian Defence Forces
| flag alias-military = Flag of the Hungarian Defence Forces.svg
| link alias-military = Hungarian Defence Forces
| flag alias-army = War Flag of Hungary.svg
| link alias-army = Hungarian Ground Forces
| link alias-air force = Hungarian Air Force
| flag alias-navy = Naval Ensign of Hungary.svg
| link alias-navy = Hungarian Defence Forces
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1848
| var2 = 1849
| var3 = 1867
| var4 = 1869
| var5 = 1874
| var6 = 1896
| var7 = 1915
| var8 = 1918
| var9 = 1919
| var10 = 1920
| var11 = 1946
| var12 = 1949
| var13 = 1956
| var14 = 1957
| var15 = state
| var16 = civil
| redir1 = HUN
| related1 = Austria-Hungary
</noinclude>
}}
88752fd60055fe5e7639e859ebfe4a6950f9719f
Template:Country data England
10
1471
2806
2022-01-24T23:39:10Z
w>Paine Ellsworth
0
use AWB to add navy variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = England
| flag alias = Flag of England.svg
| flag alias-naval = English White Ensign 1620.svg
| link alias-naval = Royal Navy
| flag alias-navy = English White Ensign 1620.svg
| link alias-navy = Royal Navy
| link alias-cricket = England {{{mw|}}} {{{age|}}} cricket team
| {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = England Saxons
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
<noinclude>
| redir1 = ENG
</noinclude>
}}
b756ff0386791b9afed0b09eea6989b7881a0b2c
Module:Documentation/config
828
52
99
2022-01-25T23:46:11Z
wikipedia>Ianblair23
0
link
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
71b68ed73088f1a59d61acf06bbee9fde6677f03
Module:TableTools
828
21
37
2022-01-31T13:08:18Z
wikipedia>MSGJ
0
updates/fixes requested by [[User:Uzume]]
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Template:Talk other
10
1012
2220
2022-02-04T21:51:58Z
wikipedia>MSGJ
0
remove comment
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}}
| talk
| other
}}
}}
| talk = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
</noinclude>
a8a973e372c5984a59953eb0cb4767a03dc6cd3c
Template:Mbox/styles.css
10
117
280
2022-02-08T04:13:27Z
Agent Isai
9
Imported from [[mw:|MediaWiki.org]]
sanitized-css
text/css
/** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */
/** [[Module:Message box]] */
/*
* WARNING
* Some wikis use the styles located here in their local CSS with an import
* directive. Do not remove classes from this page until those wikis have
* transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does
* not load this gadget; see Module:Message box for more details.
*/
/** NOTE: These do not include .messagebox styles, which are long-deprecated. */
/* For old WikiProject banners inside banner shells. */
.mbox-inside .standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
width: 100%;
margin: 2px 0;
padding: 2px;
}
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
th.mbox-text, td.mbox-text { /* The message body cell(s) */
border: none;
/* @noflip */
padding: 0.25em 0.9em; /* 0.9em left/right */
width: 100%; /* Make all mboxes the same width regardless of text length */
}
td.mbox-image { /* The left image cell */
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */
text-align: center;
}
td.mbox-imageright { /* The right image cell */
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */
text-align: center;
}
td.mbox-empty-cell { /* An empty narrow cell */
border: none;
padding: 0;
width: 1px;
}
/* Article message box styles */
table.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* Image message box styles */
table.imbox {
margin: 4px 10%;
border-collapse: collapse;
border: 3px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */
margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */
display: block; /* Fix for webkit to force 100% width. */
}
.mbox-inside .imbox { /* For imboxes inside other templates. */
margin: 4px;
}
table.imbox-notice {
border: 3px solid #36c; /* Blue */
}
table.imbox-speedy {
border: 3px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.imbox-delete {
border: 3px solid #b32424; /* Red */
}
table.imbox-content {
border: 3px solid #f28500; /* Orange */
}
table.imbox-style {
border: 3px solid #fc3; /* Yellow */
}
table.imbox-move {
border: 3px solid #9932cc; /* Purple */
}
table.imbox-protection {
border: 3px solid #a2a9b1; /* Gray-gold */
}
table.imbox-license {
border: 3px solid #88a; /* Dark gray */
background-color: #f7f8ff; /* Light gray */
}
table.imbox-featured {
border: 3px solid #cba135; /* Brown-gold */
}
/* Category message box styles */
table.cmbox {
margin: 3px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1;
background-color: #dfe8ff; /* Default "notice" blue */
box-sizing: border-box;
}
table.cmbox-notice {
background-color: #d8e8ff; /* Blue */
}
table.cmbox-speedy {
margin-top: 4px;
margin-bottom: 4px;
border: 4px solid #b32424; /* Red */
background-color: #ffdbdb; /* Pink */
}
table.cmbox-delete {
background-color: #ffdbdb; /* Pink */
}
table.cmbox-content {
background-color: #ffe7ce; /* Orange */
}
table.cmbox-style {
background-color: #fff9db; /* Yellow */
}
table.cmbox-move {
background-color: #e4d8ff; /* Purple */
}
table.cmbox-protection {
background-color: #efefe1; /* Gray-gold */
}
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
/* Talk page message box styles */
table.tmbox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
min-width: 80%;
box-sizing: border-box;
}
.tmbox.mbox-small {
min-width: 0; /* reset the min-width of tmbox above */
}
.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */
width: 100%; /* For Safari and Opera */
}
.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */
line-height: 1.5em; /* also "nested", so reset styles that are */
font-size: 100%; /* set in "mbox-small" above. */
}
table.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
table.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
table.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
table.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
table.tmbox-protection,
table.tmbox-notice {
border: 1px solid #c0c090; /* Gray-brown */
}
/* Disambig and set index box styles */
table.dmbox {
clear: both;
margin: 0.9em 1em;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
background: transparent;
}
/* Footer and header message box styles */
table.fmbox {
clear: both;
margin: 0.2em 0;
width: 100%;
border: 1px solid #a2a9b1;
background-color: #f8f9fa; /* Default "system" gray */
box-sizing: border-box;
}
table.fmbox-system {
background-color: #f8f9fa;
}
table.fmbox-warning {
border: 1px solid #bb7070; /* Dark pink */
background-color: #ffdbdb; /* Pink */
}
table.fmbox-editnotice {
background-color: transparent;
}
/* Div based "warning" style fmbox messages. */
div.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon,
div.titleblacklist-warning,
div.locked-warning {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* These mbox-small classes must be placed after all other
ambox/tmbox/ombox etc classes. "html body.mediawiki" is so
they override "table.ambox + table.ambox" above. */
html body.mediawiki .mbox-small { /* For the "small=yes" option. */
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
box-sizing: border-box;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
html body.mediawiki .mbox-small-left { /* For the "small=left" option. */
/* @noflip */
margin: 4px 1em 4px 0;
box-sizing: border-box;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
/* Style for compact ambox */
/* Hide the images */
.compact-ambox table .mbox-image,
.compact-ambox table .mbox-imageright,
.compact-ambox table .mbox-empty-cell {
display: none;
}
/* Remove borders, backgrounds, padding, etc. */
.compact-ambox table.ambox {
border: none;
border-collapse: collapse;
background-color: transparent;
margin: 0 0 0 1.6em !important;
padding: 0 !important;
width: auto;
display: block;
}
body.mediawiki .compact-ambox table.mbox-small-left {
font-size: 100%;
width: auto;
margin: 0;
}
/* Style the text cell as a list item and remove its padding */
.compact-ambox table .mbox-text {
padding: 0 !important;
margin: 0 !important;
}
/* Allow for hiding text in compact form */
.compact-ambox .hide-when-compact {
display: none;
}
70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31
Template:Mbox
10
115
276
2022-02-08T04:14:19Z
Agent Isai
9
Fix
wikitext
text/x-wiki
<templatestyles src="Template:Mbox/styles.css" />
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
728fa77a17d75dc95885aca4d53afc6ba121c503
Template:Mbox/doc
10
123
294
2022-02-08T04:25:41Z
Agent Isai
9
Imported from [[metawikimedia:Template:Mbox/doc|Wikimedia Meta-Wiki]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This is the {{tl|mbox}} or '''multi namespace message box''' meta-template.
This meta-template is used to build message box templates that are used on several types of pages and thus need to change style depending on what page they are used on. Based on page type detected it uses one of
{{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}}.
Note that this template should only be used for message boxes that really need to adapt their style. Most message boxes do not need this and should use one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} or {{tl|ombox}} directly. Using those templates directly means that your template will look the same on its template page and at any other place you show it, which makes it clear on what kind of pages it is supposed to be used. It also gives you access to any extra features those templates offer, and it saves some server load.
=== Usage ===
This template takes the same parameters as {{tl|ambox}} and {{tl|imbox}} etc. See full documentation there.
Some of the boxes this template calls only handles images of max 52px width, thus that limitation also applies to this template or you will get ugly padding problems.
=== Demospace ===
This template optionally takes the "demospace" parameter as described at {{tl|namespace detect}}. That parameter is only for testing and demonstration purposes. If you want to lock your message box to one style then instead use one of the other mboxes directly.
Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was updated to understand both names well before that, thus it still works fine. For backwards compatibility it still understands "demospace = image" which means the same thing as "demospace = file". But using "demospace = image" is now deprecated.
Namespace "Book:" was added to the English Wikipedia on 28 December 2009. This template uses the {{tl|ombox}} style on "Book:" pages or when "demospace=book". And it uses the {{tl|tmbox}} style on "Book talk:" pages or when "demospace=talk". Note that "demospace=talk" means any talk space, there is no "demospace=book talk".
=== Parameters ===
List of all parameters:
<pre>
{{mbox
| demospace = {{{demospace|}}} / main / talk / file / category / other
| type = speedy / delete / content / style / notice / move / protection
| image = none / [[Image:Some image.svg|40px]]
| imageright = [[Image:Some image.svg|40px]]
| style = CSS values
| textstyle = CSS values
| text = The message body text.
| small = {{{small|}}} / left / yes
| smallimage = none / [[Image:Some image.svg|30px]]
| smallimageright = none / [[Image:Some image.svg|30px]]
| smalltext = A shorter message body text.
}}
</pre>
Note: The small parameters only have effect when the template is on an article, talk page or an "other" page. For documentation on the small parameters see {{tl|ambox}}, {{tl|tmbox}} and {{tl|ombox}}. Using the small parameters when they are not valid has no effect, but also does no harm.
==== Types ====
; speedy
{{mbox|type=speedy}}
; delete
{{mbox|type=delete}}
; content
{{mbox|type=content}}
; style
{{mbox|type=style}}
; notice
{{mbox|type=notice}}
; move
{{mbox|type=move}}
; protection
{{mbox|type=protection}}
278a7c9c87f273913737e59c5dd76ef6fb086ba8
Template:R/superscript
10
1367
2702
2022-02-11T23:53:14Z
w>Matthiaspaul
0
Expand language code into language string if recognized code, else display as such
wikitext
text/x-wiki
<!-- Only for internal use: |wrap=n[o]/y[es]/f[orced] |leadin=value |prefix=value |pp=value |where=value |sup-where=value |quote-where=value |quote=value |language=value |translation=value |suffix=value -->{{#if:{{{where|}}}|<sup class="reference {{#switch:{{{wrap|}}}|f|forced=|no}}wrap">{{#if:{{{quote|}}}|{{{prefix|}}}}}<span title="<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{{leadin|}}}: {{#if:{{{quote-where|}}}|{{{quote-where|}}}|{{{where|}}}}}|encode=false}}|charset=<>"}}<!--|"|"}}|<|<}}|>|>}}-->{{#if:{{{quote|}}}| Quotation<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{#if:{{{language|}}}| ({{#ifeq:{{lang|fn=is_ietf_tag|{{{language|}}}}}|true|{{lang|fn=name_from_tag|{{{language|}}}}}|{{{language|}}}}})}}: "{{trim quotes|s={{{quote|}}}}}"{{#if:{{{translation|}}}| Translation: "{{trim quotes|s={{{translation}}}}}"}}|encode=false}}|charset=<>"}}<!--|"|"}}|<|<}}|>|>}}-->" class="tooltip tooltip-dashed" style="border-bottom: 1px dashed;}}">{{#if:{{{quote|}}}||{{{prefix|}}}}}<!--DEBUG: Take care of :;*# as first character here. This also breaks plainlinks/stripmarkers/catlinks testcases {{#invoke:String|replace|source=-->{{{pp|}}}{{{sup-where|}}}<!--| | }}-->{{#if:{{{quote|}}}||{{{suffix|}}}}}</span>{{#if:{{{quote|}}}|{{{suffix|}}}}}</sup>}}<noinclude>
{{documentation}}
</noinclude>
186ae68ce7116a76b6cff6fefc5d1f860e9e4690
Template:R/ref
10
1370
2705
2022-02-12T00:28:55Z
w>Matthiaspaul
0
Translate recognized language names into languages codes, unrecognized codes or names will be left as is for now
wikitext
text/x-wiki
<includeonly><!--
### Debug facility: ###
-->{{#if:{{{debug|}}}|DEBUG: 1="{{{1|}}}", 2="{{{2|}}}", (name="{{{name|}}}"), (group="{{{group|}}})", direction="{{{direction|}}}", pages="{{{pages|}}}", page="{{{page|}}}", location="{{{location|}}}", quote-pages="{{{quote-pages|}}}", quote-page="{{{quote-page|}}}", quote-location="{{{quote-location|}}}", quote="{{{quote|}}}", language="{{{language|}}}", translation="{{{translation|}}}", quote-cite="{{{quote-cite|}}}", reference="{{{reference|}}}", annotation="{{{annotation|}}}", leadin="{{{leadin|}}}", postscript="{{{postscript|}}}", section="{{{section|}}}", needed-reason="{{{needed-reason|}}}", needed-date="{{{needed-date|}}}", wrap="{{{wrap|}}}", no-pp="{{{no-pp|}}}", style="{{{style|}}}", content-id="{{{content-id|}}}", link-id="{{{link-id|}}}", debug="{{{debug|}}}". Potential context-section-name:"{{anchorencode:cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}}}".}}<!--
### Opening "support context" span: ###
-->{{#if:{{{section|}}}|{{#if:{{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|<templatestyles src="Template:Tooltip/styles.css"/><span class="rt-commentedText tooltip tooltip-dotted" title="Context: "<!--{{#invoke:String|replace|source={{#invoke:String|replace|source={{#invoke:String|replace|source=-->{{#invoke:DecodeEncode|encode|s={{#invoke:Plain text|main|1={{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|encode=false}}|charset=<>"}}<!--|"|"}}|<|<}}|>|>}}-->"">}}}}<!--
### First call to create reference link (variants identical except for dir): ###
-->{{#if:{{{link-id|}}}|<span id="{{anchorencode:{{{link-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{#if:{{{direction|}}}|{{#tag:ref|{{#if:{{{annotation|}}}||{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{reference|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}{{{postscript|}}}}}|name={{{1|}}}|group={{{2|}}}|dir={{{direction|}}}}}|{{#tag:ref|{{#if:{{{annotation|}}}||{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{reference|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}{{{postscript|}}}}}|name={{{1|}}}|group={{{2|}}}}}}}{{#if:{{{link-id|}}}|</span>}}<!--
### Optional second call to append data to reference (variants identical except for dir): ###
-->{{#if:{{{annotation|}}}|{{#if:{{{direction|}}}|<!---->{{#tag:ref|{{#switch:{{{annotation|}}}|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|‌{{#if:{{{content-id|}}}|<span id="{{anchorencode:{{{content-id|}}}}}">}}{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}{{#if:{{{content-id|}}}|</span>}}}}|quote|q=‌{{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|=|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}: }}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing= }}: }}<!----><q {{#if:{{{content-id|}}}|id="{{anchorencode:{{{content-id|}}}}}"}} {{#if:{{{quote-cite|{{{link-id|}}}}}}|cite="#{{anchorencode:{{{quote-cite|{{{link-id|}}}}}}}}"}} {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}><bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{quote|}}}}}</bdi></q>{{#if:{{{translation|}}}| [<bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{translation|}}}}}</bdi>]}}|{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{leadin|}}}{{{annotation|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}}}{{{postscript|}}}|follow={{{1|}}}|group={{{2|}}}|dir={{{direction|}}}}}|<!---->{{#tag:ref|{{#switch:{{{annotation|}}}|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|‌{{#if:{{{content-id|}}}|<span id="{{anchorencode:{{{content-id|}}}}}">}}{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}{{#if:{{{content-id|}}}|</span>}}}}|quote|q=‌{{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|=|pages|pp|page|p={{#if:{{{pages|}}}{{{page|}}}{{{location|}}}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}: }}|{{{leadin|}}}{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing= }}: }}<!----><q {{#if:{{{content-id|}}}|id="{{anchorencode:{{{content-id|}}}}}"}} {{#if:{{{quote-cite|{{{link-id|}}}}}}|cite="#{{anchorencode:{{{quote-cite|{{{link-id|}}}}}}}}"}} {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}><bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{quote|}}}}}</bdi></q>{{#if:{{{translation|}}}| [<bdi {{#if:{{{language|}}}|lang="{{R/langcode|{{{language|}}}}}"}}>{{trim quotes|s={{{translation|}}}}}</bdi>]}}|{{#if:{{{content-id|}}}|<span<!-- or <cite...> --> id="{{anchorencode:{{{content-id|}}}}}" class="citation<!-- wikicite cite-r -->">}}{{{leadin|}}}{{{annotation|}}}{{#if:{{{content-id|}}}|</span><!-- or </cite> -->}}}}{{{postscript|}}}|follow={{{1|}}}|group={{{2|}}}}}}}}}<!--
### Superscript pages and tooltip for help, pages, quotes: ###
-->{{r/superscript
|prefix={{#switch:{{{style|}}}|AMA|Ama|ama=(|: }}
|suffix={{#switch:{{{style|}}}|AMA|Ama|ama=)| }}
|pp={{#switch:{{{style|}}}|AMA|Ama|ama={{#if:{{{no-pp|}}}||{{#if:{{{pages|}}}|pp|{{#if:{{{page|}}}|p}}}}}}}}<!-- p/pp is only used in superscript label, therefore it does not contain any qp params -->
|leadin={{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|pages|pp|page|p={{#if:{{{pages|}}}|Pages|{{#if:{{{page|}}}|Page|{{#if:{{{location|}}}|Location|Page / location}}}}}}|{{#if:{{{quote-pages|}}}|Pages|{{#if:{{{quote-page|}}}|Page|{{#if:{{{quote-location|}}}|Location|{{#if:{{{pages|}}}|Pages|{{#if:{{{page|}}}|Page|{{#if:{{{location|}}}|Location|Page / location}}}}}}}}}}}}}}<!-- leadin is only used in tooltip -->
|where={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}<!-- where must not include qp params -->
|sup-where={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}| }}|singular={{{page|}}}|location={{{location|}}}|spacing= }}<!-- sup-where same as where, but with improved list spacing for superscript -->
|quote-where={{#switch:{{{quote-pages|{{{quote-page|{{{quote-location|}}}}}}}}}|pages|pp|page|p={{R/where|plural={{#invoke:String2|hyphen2dash|{{{pages|}}}}}|singular={{{page|}}}|location={{{location|}}}|spacing= }}|{{R/where|plural={{#invoke:String2|hyphen2dash|{{{quote-pages|}}}}}|singular={{{quote-page|}}}|location={{{quote-location|}}}|spacing= }}}}<!-- quote-where must not contain normal in-source-location params -->
|quote={{{quote|}}}
|language={{{language|}}}
|translation={{{translation|}}}
|wrap={{{wrap|}}}
}}<!--
### Closing "support context" span: ###
-->{{#if:{{{section|}}}|{{#if:{{#lst:{{FULLPAGENAME}}|{{anchorencode:{{#switch:{{{section|}}}||yes|y=cite_sect-{{trim quotes|s={{{1|}}}}}-{{trim quotes|s={{{2|}}}}}-{{trim quotes|s={{{page|{{#invoke:String2|hyphen2dash|{{{pages|}}}}}}}}}}{{trim quotes|s={{{location|}}}}}|{{{section|}}}}}}}}}|</span>}}}}<!--
### Page needed functionality: ###
-->{{#if:{{{needed-reason|}}}|{{page needed|date={{{needed-date|}}}|reason={{#switch:{{{needed-reason|}}}|yes|y=No reason given|{{{needed-reason|}}}}}}}}}<!--
### Line wrapping functionality: ###
-->{{#switch:{{{wrap|}}}|yes|y|forced|f=​}}<!--
### End of code ###
--></includeonly><noinclude>
{{documentation}}
</noinclude>
8c000845bfa3c2aecd10d5cf62184fff077698d8
Template:Short description/lowercasecheck
10
99
245
2022-02-12T16:35:05Z
wikipedia>ToBeFree
0
Changed protection settings for "[[Template:Short description/lowercasecheck]]": 4 million transclusions, through [[Template:Short description]] ([[WP:HRT]]) ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{#ifeq:<!--test first character for lower-case letter-->{{#invoke:string|find|1={{{1|}}}|2=^%l|plain=false}}|1
|<!-- first character is a lower case letter; test against whitelist
-->{{#switch: {{First word|{{{1|}}}}}<!--begin whitelist-->
|c. <!--for circa-->
|gTLD
|iMac
|iOS
|iOS,
|iPad
|iPhone
|iTunes
|macOS
|none
|pH
|pH-dependent=<!-- end whitelist; short description starts with an allowed lower-case string; whitelist matched; do nothing -->
|#default=<!-- apply category to track lower-case short descriptions -->{{main other|[[Category:Pages with lower-case short description|{{trim|{{{1|}}}}}]]}}{{Testcases other|{{red|CATEGORY APPLIED}}}}<!-- end whitelist test -->}}
|<!-- short description does not start with lower-case letter; do nothing; end lower-case test -->
}}<noinclude>
{{documentation}}
</noinclude>
9a6d4db14b74614625fd234b4f8ee3c8e1a235c0
Template:Ombox/shortcut
10
1324
2659
2022-02-14T04:33:33Z
w>Metropolitan90
0
Reverted edits by [[Special:Contribs/WindowsSunshine|WindowsSunshine]] ([[User talk:WindowsSunshine|talk]]) to last version by Metropolitan90
wikitext
text/x-wiki
#REDIRECT [[Template:Shortcut]]
{{Redirect category shell|
{{R with history}}
}}
9e9eea04b95b36c896dc8822b728f55db2ffbf9b
Template:R from move/except
10
1015
2226
2022-02-18T17:38:54Z
wikipedia>Wbm1058
0
populate new subcategory [[:Category:Redirects for discussion with talk page redirects]] – without making template loops!
wikitext
text/x-wiki
<noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}.
</noinclude>{{#switch: {{FULLPAGENAME}}
|MediaWiki:Move-redirect-text=
|Template:R from move/except=
|#default=[[Category:Redirects from moves]]
}}{{#ifeq: {{NAMESPACENUMBER}}|1|
{{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes|
{{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes|
{{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}||
{{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}||
{{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]]
}}
}}
}}
|{{#ifexist:{{SUBJECTPAGENAME}}|
{{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]|
{{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|#invoke:RfD}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}}
}}
}}
|{{error|Page is not a redirect, misplaced [[Template:R from move]]}}
}}
}}<noinclude>
{{Documentation|Template:R from move/doc}}
</noinclude>
58acac66a7de5fe499db8890decc66a5ef426bd4
Template:Portal
10
868
1924
2022-02-20T15:46:07Z
wikipedia>Plastikspork
0
[[Wikipedia:Templates for discussion/Log/2022 February 12#Template:Portal-mobile]] closed as merge ([[WP:XFDC#4.0.13|XFDcloser]])
wikitext
text/x-wiki
<includeonly>{{#invoke:Portal|portal}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata -->
</noinclude>
7efcc8b88b0b619f32db09d73f4574b044b6bf29
Template:Portal-inline
10
844
1870
2022-02-20T17:10:52Z
wikipedia>Plastikspork
0
Reduce [[WP:PEIS]]
wikitext
text/x-wiki
<includeonly>{{#invoke:portal-inline|main}}</includeonly><noinclude>
{{documentation}}
</noinclude>
2d1d12ec317da6ccc5d28b1be3105d68b53ff0be
Module:Check for unknown parameters
828
16
27
2022-02-21T05:24:13Z
wikipedia>BusterD
0
Changed protection settings for "[[Module:Check for unknown parameters]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Template:Use dmy dates
10
856
1894
2022-02-22T16:24:28Z
wikipedia>Frietjes
0
fix |=February 2022 bug (see https://en.wikipedia.org/w/index.php?title=Night_of_the_Pencils_(film)&type=revision&diff=1073091061&oldid=1067523640 which transcluded [[Template:February 2022]])
wikitext
text/x-wiki
{{ <includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B=
{{DMCA|Use dmy dates|from|{{{date|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Use dmy dates template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use dmy dates]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}}}<noinclude>{{documentation}}</noinclude>
3a087cd27e88fd70a0765c62d5ab506c3b73c9e7
Template:Wikidata entity link
10
1060
2318
2022-02-22T17:47:17Z
wikipedia>Uzume
0
simplify and always uppercase
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}
| {{#switch:{{padleft:|1|{{uc:{{{1}}}}}}}
| Q | P = [[d:Special:EntityPage/{{uc:{{{1}}}}}|{{#invoke:wd|label|{{uc:{{{1}}}}}}} <small>({{uc:{{{1}}}}})</small>]]
| #default = [[d:Special:EntityPage/Q{{uc:{{{1}}}}}|{{#invoke:wd|label|Q{{uc:{{{1}}}}}}} <small>(Q{{uc:{{{1|}}}}})</small>]]
}}
| {{#if:{{#invoke:wd|label|raw}}
| [[d:Special:EntityPage/{{#invoke:wd|label|raw}}|{{#invoke:wd|label}} <small>({{#invoke:wd|label|raw}})</small>]]
| <small>(no entity)</small>
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
3eaf99f5fdf869bc08932bb8eda9eba23858c9c8
Template:Wikidata property link
10
1071
2340
2022-02-22T18:23:19Z
wikipedia>Uzume
0
simplify and always uppercase
wikitext
text/x-wiki
<includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}}
| N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]]
}}
| O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]
}}
| F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}}
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}}
}}
| #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]]
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
ad40089191f2bfc6ae162a4c12411f2860ccb493
Template:Replace
10
1053
2304
2022-02-23T02:25:08Z
wikipedia>Xaosflux
0
Changed protection settings for "[[Template:Replace]]": 1MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|plain={{{plain|true}}}|count={{{count|}}}}}<noinclude>
{{documentation}}
</noinclude>
4192ba916713e0f44fdfd0f8e0d9d105c0c85472
Template:))
10
480
1055
2022-02-23T02:26:26Z
Xaosflux
7
Changed protection settings for "[[Template:))]]": 100K+uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
}}<noinclude>
{{documentation}}
</noinclude>
85ca77d4d6ff71d8e6396ebd798f87fa7f45dc02
Module:Effective protection expiry
828
30
55
2022-02-23T10:59:29Z
Xaosflux
7
Changed protection settings for "[[Module:Effective protection expiry]]": used in the mediawiki interface / match [[Module:Effective protection level]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
local p = {}
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
return stabilitySettings and stabilitySettings.expiry or 'unknown'
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
end
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
if rawExpiry == 'infinity' then
return 'infinity'
elseif rawExpiry == '' then
return 'unknown'
else
local year, month, day, hour, minute, second = rawExpiry:match(
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
)
if year then
return string.format(
'%s-%s-%sT%s:%s:%s',
year, month, day, hour, minute, second
)
else
error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
end
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
9a8c58dc2667232ed08a9b206a5d89ca8150312b
Template:Country data Bulgaria
10
1198
2527
2022-02-25T18:11:30Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Bulgaria
| flag alias = Flag of Bulgaria.svg
| flag alias-1878 = Flag of Bulgaria.svg
| flag alias-1947 = Flag of Bulgaria (1946–1948).svg
| flag alias-1948 = Flag of Bulgaria (1948–1967).svg
| flag alias-1967 = Flag of Bulgaria (1967-1971).svg
| flag alias-1971 = Flag of Bulgaria (1971–1990).svg
| flag alias-naval-1879 = Naval Ensign of Bulgaria (1878-1944).svg
| flag alias-naval-1949 = Naval Ensign of Bulgaria (1949-1955).svg
| flag alias-naval-1955 = Naval Ensign of Bulgaria (1955-1990).svg
| flag alias-naval-1991 = Naval Ensign of Bulgaria 1991-2005.svg
| flag alias-naval = Naval Ensign of Bulgaria.svg
| link alias-naval = Bulgarian Navy
| flag alias-army = War flag of Bulgaria.svg
| link alias-army = Bulgarian Land Forces
| link alias-air force = Bulgarian Air Force
| flag alias-navy = Naval Ensign of Bulgaria.svg
| link alias-navy = Bulgarian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1878
| var2 = 1947
| var3 = 1948
| var4 = 1967
| var5 = 1971
| var6 = naval-1879
| var7 = naval-1949
| var8 = naval-1955
| var9 = naval-1991
| redir1 = BGR
| redir2 = BUL
| related1 = Kingdom of Bulgaria
</noinclude>
}}
3c6d30533fdfb1975878aa79f5e7f467985c402e
Template:Country data Greece
10
1202
2531
2022-02-25T18:12:31Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Greece
| flag alias = Flag of Greece.svg
| flag alias-old = Flag of Greece (1822-1978).svg
| flag alias-1970 = Flag of Greece (1970-1975).svg
| flag alias-royal = State flag of Greece (1863–1924;1935–73).svg
| flag alias-otto = Flag of Greece (1822-1978).svg
| flag alias-army = Hellenic Army War Flag.svg
| link alias-army = Hellenic Army
| border-army=
| flag alias-air force=Fin Flash of Greece.svg
| link alias-air force=Hellenic Air Force
| flag alias-royalnavy = Naval Ensign of Kingdom of Greece.svg
| link alias-naval = Hellenic Navy
| flag alias-navy = Flag of Greece.svg
| link alias-navy = Hellenic Navy
| link alias-military = Hellenic Armed Forces
| link alias-royalnavy = Royal Hellenic Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = old
| var2 = 1970
| var3 = royal
| var4 = otto
| var5 = royalnavy
| redir1 = GRC
| redir2 = GRE
</noinclude>
}}
9362470d876ccba9fb1cf88c0a43720002dfeccf
Template:Country data Peru
10
1723
3248
2022-02-25T18:32:42Z
wikipedia>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Peru
| flag alias = Flag of Peru.svg
| flag alias-spain = Flag of Cross of Burgundy.svg
| flag alias-1820 = Flag of Tacna Regiment (1820 proposal).svg
| flag alias-1821 = Flag of Peru (1821-1822).svg
| flag alias-1822 = Flag of Peru (1822).svg
| flag alias-1822a = Flag of Peru (1822-1825).svg
| flag alias-1825 = Flag of Peru (1825–1884).svg
| flag alias-confederation = Flag of the Peru-Bolivian Confederation.svg
| flag alias-north = Flag of Peru (1825–1884).svg
| link alias-north = North Peru
| flag alias-south = Flag of South Peru.svg
| link alias-south = South Peru
| flag alias-1884 = Flag of Peru (1884–1950).svg
| flag alias-state = Flag of Peru (state).svg
| flag alias-football = Flag of Peru (state).svg
| flag alias-army = Flag of the Peruvian Army.svg
| link alias-army = Peruvian Army
| flag alias-naval= Flag of the Peruvian Navy.svg
| link alias-naval = Peruvian Navy
| flag alias-air force= Flag of the Peruvian Air Force.svg
| link alias-air force = Peruvian Air Force
| flag alias-military=Flag of Peru (war).svg
| link alias-military=Peruvian Armed Forces
| flag alias-marines = Flag of the Peruvian Navy.svg
| link alias-marines = Peruvian Naval Infantry
| flag alias-navy = Flag of Peru (state).svg
| link alias-navy = Peruvian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altvar = {{{altvar|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = spain
| var2 = 1820
| var3 = 1821
| var4 = 1822
| var5 = 1822a
| var6 = 1825
| var7 = confederation
| var8 = north
| var9 = south
| var10 = 1884
| var11 = state
| var12 = football
| redir1 = PER
</noinclude>
}}
49f1c34c9465c56dbcb96877d044cb5aa1b9f728
Template:Country data Italy
10
1192
2521
2022-02-25T19:19:17Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Italy
| flag alias = Flag of Italy.svg
| flag alias-1861 = Flag of Italy (1861–1946).svg
| flag alias-1943 = War flag of the Italian Social Republic.svg
| flag alias-2003 = Flag of Italy (2003–2006).svg
| flag alias-civil = Civil Ensign of Italy.svg
| flag alias-naval = Naval Ensign of Italy.svg
| flag alias-navy-1947 = Naval Ensign of Italy (1947-2013).svg
| link alias-naval = Italian Navy
| link alias-air force = Italian Air Force
| link alias-army = Italian Army
| flag alias-navy = Naval Ensign of Italy.svg
| link alias-navy = Italian Navy
| link alias-roller hockey = Italy {{{mw}}} national roller hockey team
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
<noinclude>
| var1 = 1861
| var2 = 1943
| var4 = 2003
| var5 = civil
| var6 = navy-1947
| redir1 = ITA
| related1 = Kingdom of Italy
| related2 = Italian Social Republic
| related3 = Napoleonic Italy
</noinclude>
}}
305bf5a66b74b7211326d9326b28d66a836e8721
Template:Country data Australia
10
1465
2800
2022-02-26T07:16:37Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Australia
| flag alias = Flag of Australia (converted).svg
| flag alias-1901 = Flag of Australia (1901-1903).svg
| flag alias-1903 = Flag of Australia (1903-1908).svg
| flag alias-union = Flag of the United Kingdom.svg
| flag alias-colonial = Australian Colonial Flag.svg
| flag alias-civil = Civil Ensign of Australia.svg
| flag alias-naval = Naval Ensign of Australia.svg
| flag alias-naval-1913 = Naval Ensign of the United Kingdom.svg
| link alias-naval = Royal Australian Navy
| link alias-army = Australian Army
| flag alias-air force = Air Force Ensign of Australia.svg
| link alias-air force = Royal Australian Air Force
| flag alias-air force-1948 = Air Force Ensign of Australia (1948–1982).svg
| flag alias-air force-1922 = Air Force Ensign of the United Kingdom.svg
| link alias-football = Australia {{{mw|men's}}} national {{{age|}}} soccer {{{class|}}} team
| flag alias-marines=INF1002 - UCP - 2RAR.png
| link alias-marines=2nd Battalion, Royal Australian Regiment
| flag alias-navy = Naval Ensign of Australia.svg
| link alias-navy = Royal Australian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1901
| var2 = 1903
| var3 = colonial
| var4 = civil
| var5 = naval-1913
| redir1 = AUS
| related1 = Australasia
</noinclude>
}}
11ef56986a6e70fb8ca4e0b3c9da8416651191d5
Template:Country data Netherlands
10
1188
2517
2022-02-26T20:00:49Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Netherlands
| flag alias = Flag of the Netherlands.svg
| flag alias-prinsengeus = Naval Jack of the Netherlands.svg
| flag alias-army =Flag of the Royal Netherlands Army.svg
| flag alias-air force=Flag of the Royal Netherlands Air Force.svg
| link alias-air force= Royal Netherlands Air Force
| link alias-army= Royal Netherlands Army
| link alias-naval = Royal Netherlands Navy
| flag alias-navy = Naval Jack of the Netherlands.svg
| link alias-navy=Royal Netherlands Navy
| flag alias-marines = Naval Jack of the Netherlands.svg
| link alias-marines = Netherlands Marine Corps
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = prinsengeus
| redir1 = NLD
| redir2 = NED
| redir3 = The Netherlands
| related1 = Kingdom of the Netherlands
| related2 = Dutch Republic
| related3 = Batavian Republic
</noinclude>
}}
1c723f169b6e9824c190beea044f0bdf8852db76
Template:Country data Latvia
10
1212
2541
2022-02-26T20:51:20Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Latvia
| flag alias = Flag of Latvia.svg
| flag alias-naval = Naval Ensign of Latvia.svg
| link alias-naval = Latvian Naval Forces
| link alias-army = Latvian Land Forces
| flag alias-navy = Naval Ensign of Latvia.svg
| link alias-navy = Latvian Naval Forces
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| redir1 = LVA
| redir2 = LAT
| related1 = Latvian SSR
</noinclude>
}}
b73038430b70fdf779abd8896f6b69e2cb3a2eb7
Template:Country data Estonia
10
1215
2544
2022-02-26T22:50:13Z
w>Paine Ellsworth
0
no longer required - High use template is now in the documentation
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Estonia
| flag alias = Flag of Estonia.svg
| flag alias-naval = Naval Jack of Estonia.svg
| link alias-naval = Estonian Navy
| flag alias-army=Flag of Estonian Land Forces.svg
| link alias-army=Estonian Land Forces
| flag alias-air force =Flag of the Estonia Air Force.png
| link alias-air force = Estonian Air Force
| flag alias-navy = Naval Ensign of Estonia.svg
| link alias-navy = Estonian Navy
| border-naval =
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| redir1 = EST
| related1 = Estonian SSR
</noinclude>
}}
9d47f0787ce2f607d4f6b61cd4956aa9ac9fd47f
Module:Find sources
828
1029
2256
2022-02-27T13:33:28Z
wikipedia>Primefac
0
Changed protection settings for "[[Module:Find sources]]": re-raise, 1.5million transclusions and no edits from the EXCON editor ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- This module implements {{find sources}} and other similar templates, and
-- also provides a mechanism to easily create new source-finding templates.
-- Define constants
local ROOT_PAGE = 'Module:Find sources'
local TEMPLATE_ROOT = ROOT_PAGE .. '/templates/' -- for template config modules
local LINK_CONFIG = ROOT_PAGE .. '/links' -- for link config modules
local CONFIG_PAGE = ROOT_PAGE .. '/config' -- for global config
-- Load required modules
local checkType = require('libraryUtil').checkType
local cfg = mw.loadData(CONFIG_PAGE)
local p = {}
local function maybeLoadData(page)
local success, data = pcall(mw.loadData, page)
return success and data
end
local function substituteParams(msg, ...)
return mw.message.newRawMessage(msg, ...):plain()
end
local function renderSearchString(searchTerms, separator, transformFunc)
-- This takes a table of search terms and turns it into a search string
-- that can be used in a URL or in a display value. The transformFunc
-- parameter can be used to transform each search term in some way (for
-- example, URL-encoding them).
local searchStrings = {}
for i, s in ipairs(searchTerms) do
searchStrings[i] = s
end
if transformFunc then
for i, s in ipairs(searchStrings) do
searchStrings[i] = transformFunc(s)
end
end
return table.concat(searchStrings, separator)
end
function p._renderLink(code, searchTerms, display, tooltip)
-- Renders the external link wikicode for one link, given the link code,
-- a table of search terms, and an optional display value and tooltip.
-- Get link config.
local links = maybeLoadData(LINK_CONFIG)
local linkCfg = links[code]
if not linkCfg then
error(string.format(
"invalid link code '%s'; no link config found at [[%s]]",
code,
LINK_CONFIG
))
end
-- Make URL.
local url
do
local separator = linkCfg.separator or "+"
local searchString = renderSearchString(
searchTerms,
separator,
mw.uri.encode
)
url = substituteParams(linkCfg.url, searchString)
end
if tooltip then
return string.format('<span title="%s" style="border-bottom: 1px dotted;">[%s %s]</span>',
mw.text.encode(tooltip), url, display or linkCfg.display)
else
return string.format('[%s %s]', url, display or linkCfg.display)
end
end
function p._main(template, args)
-- The main access point from Lua.
checkType('_main', 1, template, 'string')
checkType('_main', 2, args, 'table', true)
args = args or {}
local title = mw.title.getCurrentTitle()
-- Get the template config.
local templateCfgPage = TEMPLATE_ROOT .. template
local templateCfg = maybeLoadData(templateCfgPage)
if not templateCfg then
error(string.format(
"invalid template name '%s'; no template config found at [[%s]]",
template, templateCfgPage
))
end
-- Namespace check.
if not templateCfg.isUsedInMainspace and title.namespace == 0 then
local formatString = '<strong class="error">%s</strong>'
if cfg['namespace-error-category'] then
formatString = formatString .. '[[%s:%s]]'
end
return string.format(
formatString,
cfg['namespace-error'],
mw.site.namespaces[14].name,
cfg['namespace-error-category']
)
end
-- Get the search terms from the arguments.
local searchTerms = {}
for i, s in ipairs(args) do
searchTerms[i] = s
end
if not searchTerms[1] then
-- Use the current subpage name as the default search term, unless
-- another title is provided. If the page uses a disambiguator like
-- "Foo (bar)", make "Foo" the first term and "bar" the second.
local searchTitle = args.title or title.subpageText
local term, dab = searchTitle:match('^(.*) (%b())$')
if dab then
dab = dab:sub(2, -2) -- Remove parens
end
if term and dab then
searchTerms[1] = term
searchTerms[2] = dab
else
searchTerms[1] = searchTitle
end
end
searchTerms[1] = '"' .. searchTerms[1] .. '"'
-- Make the intro link
local introLink
if templateCfg.introLink then
local code = templateCfg.introLink.code
local display = templateCfg.introLink.display or renderSearchString(
searchTerms,
' '
)
local tooltip = templateCfg.introLink.tooltip
introLink = p._renderLink(code, searchTerms, display, tooltip)
else
introLink = ''
end
-- Make the other links
local links = {}
local separator = templateCfg.separator or cfg['default-separator']
local sep = ''
for i, t in ipairs(templateCfg.links) do
links[i] = sep .. p._renderLink(t.code, searchTerms, t.display, t.tooltip) ..
(t.afterDisplay or '')
sep = t.separator or separator
end
links = table.concat(links)
-- Make the blurb.
local blurb = substituteParams(templateCfg.blurb, introLink, links)
local span = mw.html.create('span')
span
:addClass('plainlinks')
:addClass(templateCfg.class)
:cssText(templateCfg.style)
:wikitext(blurb)
return tostring(span)
end
setmetatable(p, { __index = function(t, template)
-- The main access point from #invoke.
-- Invocations will look like {{#invoke:Find sources|template name}},
-- where "template name" is a subpage of [[Module:Find sources/templates]].
local tname = template
if tname:sub(-8) == '/sandbox' then
-- This makes {{Find sources/sandbox|Albert Einstein}} work.
tname = tname:sub(1, -9)
end
return function(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = mw.site.namespaces[10].name .. ':' .. tname
})
return t._main(template, args)
end
end})
return p
10c2d5c5a05295b49581eecba936dae039a4a290
Module:Find sources/templates/Find sources mainspace
828
1031
2260
2022-03-01T07:33:51Z
wikipedia>Primefac
0
Changed protection settings for "[[Module:Find sources/templates/Find sources mainspace]]": match main module ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
return {
blurb = "''Find sources:'' $1 – $2",
introLink = {
code = 'google'
},
links = {
{
code = 'google news',
display = 'news'
},
{
code = 'google newspapers',
display = 'newspapers'
},
{
code = 'google books',
display = 'books'
},
{
code = 'google scholar',
display = 'scholar'
},
{
code = 'jstor',
display = 'JSTOR'
}
},
isUsedInMainspace = true
}
abfeb1a778b232887c9400ca7667092141e60257
Template:Ns has subpages
10
860
1904
2022-03-02T10:43:18Z
wikipedia>Trialpears
0
Changed protection settings for "[[Template:Ns has subpages]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
060d2d01af26cb67fd90a7c346a0d2d5e450a040
Führerredux Wiki:WikiProject Geographical coordinates/type:
4
1671
3097
2022-03-03T11:32:00Z
wikipedia>ZandDev
0
add <code>
wikitext
text/x-wiki
The <code>type:</code> parameter specifies the type of location for reverse mapping (for instance, to select a marker icon in the [[Wikipedia:WikiMiniAtlas|WikiMiniAtlas]]).
It also sets the [[Scale (map)|map scale]], which can however be overridden by ''[[#dim:D|dim:]]'' or ''[[#scale:N|scale:]]''.
Valid types are:
{| align="center" class="wikitable"
! T
! Description
! Map scale
|-
| '''adm1st'''
| Administrative unit of country, 1st level (province, state), see [[List of administrative divisions by country|table]], e.g. [[U.S. state]]s
|align="right" | 1:1,000,000
|-
| '''adm2nd'''
| Administrative unit of country, 2nd level, see [[List of administrative divisions by country|table]], e.g. [[county (United States)]]
|align="right" | 1:300,000
|-
| '''adm3rd'''
| Administrative unit of country, 3rd level, see [[List of administrative divisions by country|table]]
|align="right" | 1:100,000
|-
| '''airport'''
| airports and airbases
|align="right" | 1:30,000
|-
| '''city('''''pop''''')'''
| cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with known population<br/>Please replace ''pop'' with a number. Commas in ''pop'' will be ignored. There should be no blanks.
|align="right" | 1:30,000 ... 1:300,000
|-
| '''city'''
| cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with unspecified population</br>These are treated as minor cities.
|align="right" | 1:100,000
|-
| '''country'''
| (e.g. "type:country")
|align="right" | 1:10,000,000
|-
| '''edu'''
| schools, colleges, and universities
|align="right" | 1:10,000
|-
| '''event'''
| one-time or regular events and incidents that occurred at a specific location, including battles, earthquakes, festivals, and shipwrecks
|align="right" | 1:50,000
|-
| '''forest'''
| forests and woodlands
|align="right" | 1:50,000
|-
| '''glacier'''
| glaciers and icecaps
|align="right" | 1:50,000
|-
| '''isle'''
| islands and isles
|align="right" | 1:100,000
|-
| '''landmark'''
| buildings (including churches, factories, museums, theatres, and power plants but excluding schools and railway stations), caves, cemeteries, cultural landmarks, geologic faults, headlands, intersections, mines, ranches, roads, structures (including antennas, bridges, castles, dams, lighthouses, monuments, and stadiums), tourist attractions, valleys, and other points of interest
|align="right" | 1:10,000
|-
| '''mountain'''
| peaks, mountain ranges, hills, submerged reefs, and seamounts
|align="right" | 1:100,000
|-
| '''pass'''
| mountain passes
|align="right" | 1:10,000
|-
| '''railwaystation'''
| stations, stops, and maintenance areas of railways and trains, including railroad, metro, rapid transit, underground, subway, elevated railway, etc.
|align="right" | 1:10,000
|-
| '''river'''
| rivers, canals, creeks, brooks, and streams, including intermittent ones
|align="right" | 1:100,000
|-
| '''satellite'''
| geo-stationary satellites
|align="right" | 1:10,000,000
|-
| '''waterbody'''
| bays, fjords, lakes, reservoirs, ponds, lochs, loughs, meres, lagoons, estuaries, inland seas, and waterfalls
|align="right" | 1:100,000
|-
| '''camera'''
| To indicate the location of where a specific image was taken. This type is used by coordinate templates on File pages.
|align="right" | 1:10,000
|-
|
| ''Default scale: if no type is used or the type is not defined in the GeoHack extension''
|align="right" | 1:300,000
|}
{| class="wikitable"
|+ Samples
! T
! Markup
! Result
|-
| '''waterbody'''
| <code><nowiki>{{coord|46|43|N|7|58|E|type:waterbody}}</nowiki></code>
| {{coord|46|43|N|7|58|E|type:waterbody}}
|}
[[Category:WikiProject Geographical coordinates]]
7016fdfb370cc695e3f6ab439d3a71a4351a5cb8
Führerredux Wiki:WikiProject Geographical coordinates/scale:
4
1669
3093
2022-03-03T11:36:59Z
wikipedia>ZandDev
0
add <code>
wikitext
text/x-wiki
The <code>scale:</code> parameter specifies the desired [[scale (map)|map scale]] as 1:''N'', overriding the scale implied by any <code>[[#type:T|type:]]</code> parameter.
[[tswiki:GeoHack|GeoHack]] uses <code>scale:</code> to select a map scale for a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default scale of 1:300,000.
{| class="wikitable"
|+ Samples
! Subject
! Scale
! Markup
! Result
|-
|[[Big Ben]]
|align=right|1:500
|<code><nowiki>{{coord|51.500611|N|0.124611|W|scale:500}}</nowiki></code>
|{{coord|51.500611|N|0.124611|W|scale:500}}
|-
|[[Palace of Westminster]]
|align=right|1:5,000
|<code><nowiki>{{coord|51.5006|N|0.1246|W|scale:5000}}</nowiki></code>
|{{coord|51.5006|N|0.1246|W|scale:5000}}
|-
|[[City of Westminster]]
|align=right|1:50,000
|<code><nowiki>{{coord|51.501|N|0.125|W|scale:50000}}</nowiki></code>
|{{coord|51.501|N|0.125|W|scale:50000}}
|-
|[[Greater London]]
|align=right|1:500,000
|<code><nowiki>{{coord|51.50|N|0.12|W|scale:500000}}</nowiki></code>
|{{coord|51.50|N|0.12|W|scale:500000}}
|}
[[Category:WikiProject Geographical coordinates]]
a577d814da250e0ddf28a80dccfa978d6bda0027
Führerredux Wiki:WikiProject Geographical coordinates/region:
4
1668
3091
2022-03-03T11:39:59Z
wikipedia>ZandDev
0
add <code>
wikitext
text/x-wiki
The <code>region:</code> parameter specifies the political region for terrestrial coordinates. It is used to select appropriate map resources. If no <code>region:</code> parameter is provided, [[tswiki:GeoHack|GeoHack]] attempts to determine the region from the coordinates.
The region should be supplied as either a two character [[ISO 3166-1 alpha-2]] country code or an [[ISO 3166-2]] region code.
Examples of [[ISO 3166-1 alpha-2]] codes:
{{columns-list|
* '''AQ''' Antarctica
* '''AU''' Australia
* '''BR''' Brazil
* '''DE''' Germany
* '''GB''' United Kingdom
* '''HK''' Hong Kong
* '''IN''' India
* '''LK''' Sri Lanka
* '''RU''' Russia
* '''US''' United States}}
Examples of [[ISO 3166-2]] region codes:
{{columns-list|
* '''DE-TH''' Thuringia, Germany
* '''GB-BIR''' Birmingham, England
* '''NO-03''' Oslo, Norway
* '''US-NY''' New York state, US}}
The oceans have the following Wiki assigned code elements per [[:de:Vorlage:Coordinate#Ozeane]].
* '''XN''' Arctic Ocean
* '''XA''' Atlantic Ocean
* '''XI''' Indian Ocean
* '''XP''' Pacific Ocean
* '''XS''' Southern Ocean
In addition, two Wiki assigned code elements can be used with {{tl|coord}}:
* '''XZ''' for objects in or above international waters (similar to [[UN/LOCODE]]).
* '''ZZ''' for use in examples.
{| class="wikitable" cellpadding="20"
|+ Samples
! Focus region
! Region
! Markup
! Result
|-
| Switzerland
| <code>CH</code>
| <code><nowiki>{{coord|46.9524|N|7.4396|E|region:CH}}</nowiki></code>
| {{coord|46.9524|N|7.4396|E|region:CH}}
|-
| Berlin, Germany
| <code>DE-BE</code>
| <code><nowiki>{{coord|52.5164|N|13.3775|E|region:DE-BE}}</nowiki></code>
| {{coord|52.5164|N|13.3775|E|region:DE-BE}}
|}
[[Category:WikiProject Geographical coordinates]]
af478499a611b769b017fad30805b13e8221cc30
Template:Convinfobox/secter3
10
1561
2896
2022-03-04T18:00:00Z
w>MusikBot II
0
Protected "[[Template:Convinfobox/secter3]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#switch:{{{4}}}{{{6}}}
|ftin={{convert|{{{3}}}|ft|{{{5}}}|in|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{3}}}|st|{{{5}}}|lb|{{#ifeq:{{{2}}}|kg|kg lb|{{{2}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{3}}}|lb|{{{5}}}|oz|{{{2}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{#switch:{{{2}}}{{{4}}}<!-- the rest ignores {{{5}}} -- for now --->
|ftin={{convert|{{{3}}}|in|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|stlb={{convert|{{{3}}}|lb|{{#ifeq:{{{6}}}{{#ifexpr:{{{3}}}<14|n}}|kg|kg stlb|{{{6}}}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|lboz={{convert|{{{3}}}|oz|{{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
|{{convert|{{{3}}}|{{{4}}}|{{{2}}} {{{6}}}|{{{7|}}}|sp={{{sp|}}}|lk={{{lk|off}}}|abbr={{{abbr|on}}}|disp={{{disp|}}}|adj={{{adj|}}}|sigfig={{{sigfig|}}}}}
}}
}}</includeonly><noinclude>
[[Category:Subtemplates of Template Convinfobox]]
</noinclude>
8cbda9bd8ed84b81ba20ec1a24deca7b98dabf65
Template:Red
10
216
488
2022-03-06T17:29:13Z
DarkMatterMan4500
26
wikitext
text/x-wiki
<span style="color:red;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
776e0c4686c43abb83f7da74dfa1def9f58bea72
Module:SDcat/doc
828
766
1707
2022-03-06T21:26:28Z
wikipedia>Tomastvivlaren
0
wikitext
text/x-wiki
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High risk}}
Module to check whether local short description matches that on Wikidata
setCat has the qid of a Wikidata entity passed as |qid=
(it defaults to the associated qid of the current article if omitted)
and the local short description passed as |sd=
It returns a category if there is an associated Wikidata entity.
It returns one of the following tracking categories, as appropriate:
* Category:Short description matches Wikidata (case-insensitive)
* Category:Short description is different from Wikidata
* Category:Short description with empty Wikidata description
For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible.
== Usage ==
; From within a template
: <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code>
: or
: <code><nowiki>{{#invoke:SDcat |setCat |sd={{{shortdescription|}}} }}</nowiki></code>
[[Template:SDcat]] is a wrapper for this module.
; From another module
: <code>sdcat = require("Module:SDcat")._setCat</code>
: <code>local tracking_cat = sdcat(shortdesc, itemID)</code>
=== For testing ===
<code><nowiki>{{#invoke:SDcat |setCat |qid={{get QID|Douglas Adams}}|sd=English author and humorist (1952–2001) |lp=":"}}</nowiki></code>
A few examples of tests are at [[Module talk:SDcat]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
21f47b1966831d0fef3720fba993cebeffaddb00
Template:Infobox Greece place
10
1148
2474
2022-03-07T07:54:55Z
w>Markussep
0
wikitext
text/x-wiki
<includeonly>{{Infobox settlement
| name = {{{name|}}}
| native_name = {{{name_local|}}}
| native_name_lang = el
| image_skyline = {{{image_skyline|}}}
| imagesize = {{#if:{{{imagesize|}}}|{{{imagesize}}}|270x220px}}
| image_caption = {{{caption_skyline|}}}
| image_flag = {{{city_flag|}}}
| flag_size = 100x100px
| image_seal = {{{city_seal|}}}
| seal_size = 100x100px
| pushpin_map = {{#if: {{{coordinates|}}} | Greece }}
| pushpin_mapsize = 270px
| pushpin_map_caption = {{#if: {{{image_map|}}} | {{hidden begin| style = margin-top:2px |titlestyle=font-size:115%; height:auto; padding-right:2em; |border=line |title={{{map_caption|Location within the region}}} }} {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size=250x250px|title=center}} {{hidden end}} }}
| coordinates = {{{coordinates|}}}
| subdivision_type = Country
| subdivision_name = Greece
| subdivision_type1 = [[Geographic regions of Greece|Geographic region]]
| subdivision_name1 = {{{georegion|}}}
| subdivision_type2 = [[Administrative regions of Greece|Administrative region]]
| subdivision_name2 = {{{periph|}}}
| subdivision_type3 = [[Regional units of Greece|Regional unit]]
| subdivision_name3 = {{{periphunit|}}}
| subdivision_type4 = [[Administrative divisions of Greece|Municipality]]
| subdivision_name4 = {{{municipality|}}}
| subdivision_type5 = [[Administrative divisions of Greece|Municipal unit]]
| subdivision_name5 = {{{municunit|}}}
| subdivision_type6 = [[Administrative divisions of Greece|Community]]
| subdivision_name6 = {{{community|}}}
| established_title = City established
| established_date = {{{established_c|}}}
| established_title1 = Municipality established
| established_date1 = {{{established_m|}}}
| established_title2 = Village established
| established_date2 = {{{established_v|}}}
| parts_type = {{#if: {{{districts|}}} | Districts }}
| parts = {{{districts|}}}
| leader_party = {{#if: {{{mayor|}}} | {{{party|}}}{{#if:{{{since|}}} | {{#if:{{{party|}}} |;}} since {{{since}}} }} }}
| leader_title = Mayor
| leader_name = {{{mayor|}}}
| seat = {{{seat|}}}
| area_total_km2 = {{{area|}}}
| area_urban_km2 = {{{area_urban|}}}
| area_rural_km2 = {{{area_village|}}}
| area_metro_km2 = {{{area_metro|}}}
| area_blank1_title = {{#if: {{{area_municipality|}}} | Municipality }}
| area_blank1_km2 = {{{area_municipality|}}}
| area_blank2_title = {{#if: {{{area_municunit|}}} | Municipal unit }}
| area_blank2_km2 = {{{area_municunit|}}}
| elevation_m = {{{elevation|}}}
| elevation_max_m = {{{elevation_max|}}}
| elevation_min_m = {{{elevation_min|}}}
| population_footnotes = {{#ifeq: {{{population_as_of}}} | 2001 |<ref name=census01>{{cite book |title=De Facto Population of Greece Population and Housing Census of March 18th, 2001 |publisher=National Statistical Service of Greece |date=2003 |url=http://dlib.statistics.gr/Book/GRESYE_02_0101_00095.pdf |format=PDF 39 MB}}</ref> | {{#ifeq: {{{population_as_of}}} | 2011 |<ref name=census11>{{cite web | url = http://www.statistics.gr/documents/20181/1210503/resident_population_census2011rev.xls | title = Απογραφή Πληθυσμού - Κατοικιών 2011. ΜΟΝΙΜΟΣ Πληθυσμός | publisher = Hellenic Statistical Authority | language = el }}</ref>}} }}
| population_total = {{{population|}}}
| population_as_of = {{{population_as_of|}}}
| population_density_km2 = auto
| population_urban = {{{population_urban|}}}
| population_density_urban_km2 = auto
| population_rural = {{{population_village|}}}
| population_density_rural_km2 = auto
| population_metro = {{{population_metro|}}}
| population_density_metro_km2 = auto
| population_blank1_title = Municipality
| population_blank1 = {{{pop_municipality|}}}
| population_density_blank1_km2 = auto
| population_blank2_title = Municipal unit
| population_blank2 = {{{pop_municunit|}}}
| population_density_blank2_km2 = auto
| population_demonym = {{{demonym|}}}
| demographics_type1 = {{#if: {{{pop_community|{{{area_community|}}}}}} | Community}}
| demographics1_title1 = Population
| demographics1_info1 = {{formatnum:{{{pop_community|}}}}} {{#if: {{{pop_community|}}} | ({{{population_as_of}}})}}
| demographics1_title2 = Area (km<sup>2</sup>)
| demographics1_info2 = {{{area_community|}}}
| demographics1_footnotes = {{#ifeq: {{{population_as_of}}} | 2001 |<ref name=census01>{{cite book |title=De Facto Population of Greece Population and Housing Census of March 18th, 2001 |publisher=National Statistical Service of Greece |date=2003 |url=http://dlib.statistics.gr/Book/GRESYE_02_0101_00095.pdf |format=PDF 39 MB}}</ref> | {{#ifeq: {{{population_as_of}}} | 2011 |<ref name=census11>{{cite web | url = http://www.statistics.gr/documents/20181/1210503/resident_population_census2011rev.xls | title = Απογραφή Πληθυσμού - Κατοικιών 2011. ΜΟΝΙΜΟΣ Πληθυσμός | publisher = Hellenic Statistical Authority | language = el }}</ref>}} }}
| timezone1 = [[Eastern European Time|EET]]
| utc_offset1 = +2
| timezone1_DST = [[Eastern European Summer Time|EEST]]
| utc_offset1_DST = +3
| postal_code_type = [[Postal codes in Greece|Postal code]]
| postal_code = {{{postal_code|}}}
| area_code_type = [[Telephone numbers in Greece|Area code(s)]]
| area_code = {{{area_code|}}}
| registration_plate_type = [[Vehicle registration plates of Greece|Vehicle registration]]
| registration_plate = {{{licence|}}}
| website = {{{website|}}}
| footnotes = {{{footnotes|}}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox Greece place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Greece place]] with unknown parameter "_VALUE_"|ignoreblank=y| area | area_code | area_community | area_metro | area_municipality | area_municunit | area_urban | area_village | caption_skyline | city_flag | city_seal | community | coordinates | demonym | districts | elevation | elevation_max | elevation_min | established_c | established_m | established_v | footnotes | georegion | image_map | image_skyline | imagesize | licence | map_caption | mayor | municipality | municunit | name | name_local | party | periph | periphunit | pop_community | pop_municipality | pop_municunit | population | population_as_of | population_metro | population_urban | population_village | postal_code | seat | since | website }}<noinclude>
{{documentation}}
</noinclude>
d22a94f72bf64ff5c8706a7f19da5bfc6ba8731a
Template:Title disambig text
10
161
375
2022-03-08T02:00:55Z
wikipedia>Neveselbert
0
safesubst
wikitext
text/x-wiki
{{safesubst<noinclude/>:#invoke:String|match|{{{1|{{PAGENAME}}}}}|%s%((.-%)?)%)||-1|ignore_errors=true}}<noinclude>
{{Documentation}}
</noinclude>
09be4d07c948b00ed15066030e4a7029dd966c0a
Module:Template link general
828
24
43
2022-03-08T08:30:51Z
wikipedia>Primefac
0
update from sandbox - fixes to _show_result and adding _expand
Scribunto
text/plain
-- This implements Template:Tlg
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Is a string non-empty?
local function _ne(s)
return s ~= nil and s ~= ""
end
local nw = mw.text.nowiki
local function addTemplate(s)
local i, _ = s:find(':', 1, true)
if i == nil then
return 'Template:' .. s
end
local ns = s:sub(1, i - 1)
if ns == '' or mw.site.namespaces[ns] then
return s
else
return 'Template:' .. s
end
end
local function trimTemplate(s)
local needle = 'template:'
if s:sub(1, needle:len()):lower() == needle then
return s:sub(needle:len() + 1)
else
return s
end
end
local function linkTitle(args)
if _ne(args.nolink) then
return args['1']
end
local titleObj
local titlePart = '[['
if args['1'] then
-- This handles :Page and other NS
titleObj = mw.title.new(args['1'], 'Template')
else
titleObj = mw.title.getCurrentTitle()
end
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or
addTemplate(args['1']))
local textPart = args.alttext
if not _ne(textPart) then
if titleObj ~= nil then
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText
else
-- redlink
textPart = args['1']
end
end
if _ne(args.subst) then
-- HACK: the ns thing above is probably broken
textPart = 'subst:' .. textPart
end
if _ne(args.brace) then
textPart = nw('{{') .. textPart .. nw('}}')
elseif _ne(args.braceinside) then
textPart = nw('{') .. textPart .. nw('}')
end
titlePart = titlePart .. '|' .. textPart .. ']]'
if _ne(args.braceinside) then
titlePart = nw('{') .. titlePart .. nw('}')
end
return titlePart
end
function p.main(frame)
local args = getArgs(frame, {
trim = true,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)
local italic = _ne(args.italic) or _ne(args.italics)
local dontBrace = _ne(args.brace) or _ne(args.braceinside)
local code = _ne(args.code) or _ne(args.tt)
local show_result = _ne(args._show_result)
local expand = _ne(args._expand)
-- Build the link part
local titlePart = linkTitle(args)
if bold then titlePart = "'''" .. titlePart .. "'''" end
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end
-- Build the arguments
local textPart = ""
local textPartBuffer = "|"
local codeArguments = {}
local codeArgumentsString = ""
local i = 2
local j = 1
while args[i] do
local val = args[i]
if val ~= "" then
if _ne(args.nowiki) then
-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will
-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up
val = nw(mw.text.unstripNoWiki(val))
end
local k, v = string.match(val, "(.*)=(.*)")
if not k then
codeArguments[j] = val
j = j + 1
else
codeArguments[k] = v
end
codeArgumentsString = codeArgumentsString .. textPartBuffer .. val
if italic then
val = '<span style="font-style:italic;">' .. val .. '</span>'
end
textPart = textPart .. textPartBuffer .. val
end
i = i + 1
end
-- final wrap
local ret = titlePart .. textPart
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end
if code then
ret = '<code>' .. ret .. '</code>'
elseif _ne(args.plaincode) then
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'
end
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end
--[[ Wrap as html??
local span = mw.html.create('span')
span:wikitext(ret)
--]]
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end
if show_result then
local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments}
ret = ret .. " → " .. result
end
if expand then
local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}')
local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query)
mw.log()
ret = ret .. " [" .. tostring(url) .. "]"
end
return ret
end
return p
c7307fa3959d308a2dd7fd2f5009c1ce6db3d122
Template:In string
10
1235
2569
2022-03-11T21:09:13Z
w>Neveselbert
0
Reverted [[WP:AGF|good faith]] edits by [[Special:Contributions/Neveselbert|Neveselbert]] ([[User talk:Neveselbert|talk]])
wikitext
text/x-wiki
{{#invoke:String|replace
|source={{#invoke:String|find|source={{{source|{{{1|}}}}}}|target={{{target|{{{2|}}}}}}|start={{{start|{{{3|}}}}}}|plain={{{plain|{{{4|}}}}}}}}
|pattern=^0$
|replace={{#if:{{{nomatch|}}}|{{{nomatch|}}}|{{#if:{{{nomatch}}}|0<!-- no replacement -->|<!--return blank-->}}}}
|plain=false}}<!--
--><noinclude>{{documentation}}</noinclude>
b980c10def03090ad85d76557485fb1be3a19aef
Module:InfoboxImage
828
164
381
2022-03-13T19:18:18Z
wikipedia>WOSlinker
0
add class param from sandbox as per edit request
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if class ~= nil and class ~= "" then
result = result .. "|class=" .. class;
end
-- if alt value is a keyword then do not use as a description
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if title ~= "" and title ~= nil then
-- does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;
0ee5fe75ba239fc5c9cedc81ca11bdc0be068542
Module:EditAtWikidata
828
1045
2288
2022-03-13T22:49:52Z
wikipedia>Johnuniq
0
update from [[Module:EditAtWikidata/sandbox]] per talk: tweaks + greatly reduce memory usage + class=noprint
Scribunto
text/plain
-- Module to display an icon with a tooltip such as "Edit this at Wikidata".
-- Icon is linked to the Wikidata entry for the article where this is placed.
-- This message is only displayed if a local_parameter is not supplied
-- i.e. when called from a template, it can be coded not to display the message.
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article.
-- Usage:
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}}
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
local p = {}
local i18n =
{
["message"] = "Edit this at Wikidata"
}
local function trimToNil(text)
-- Return trimmed non-empty text, or nil.
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
function p._showMessage(args)
local local_parm = trimToNil(args[1])
if local_parm then return "" end
-- Parameter qid=x specifies the Wikidata ID for the article.
-- This is not normally used except for testing outside the article.
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage()
if qid and mw.wikibase.entityExists(qid) then
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry.
local anchor = trimToNil(args.pid)
-- Parameter nbsp replaces the leading space with
local space = trimToNil(args.nbsp) and " " or " "
return
space ..
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" ..
"|alt=" .. i18n.message ..
"|link=https://www.wikidata.org/wiki/" .. qid ..
(anchor and ("#" .. anchor) or "") ..
"|class=noprint" ..
"|" .. i18n.message ..
"]]"
end
return ""
end
function p.showMessage(frame)
return p._showMessage(frame.args)
end
return p
9753d108ec0b308834a1e692bedfe5473e10de2a
Template:Transliteration
10
435
2491
2022-03-14T21:07:34Z
w>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude>
{{documentation}}
</noinclude>
cf981ec0dfa428550086604e3a81e36da231f3df
Template:Tt
10
1735
3281
2022-03-19T17:59:52Z
wikipedia>MusikBot II
0
Protected "[[Template:Tt]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Mono]]
a7a3647ba0499a71e399c9dd87e77998307f51bf
Template:Documentation
10
50
95
2022-03-29T02:14:34Z
wikipedia>Bsherr
0
consistent with new substitution template format
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
Template:Template redirect
10
1040
2278
2022-03-31T17:59:41Z
wikipedia>MusikBot II
0
Protected "[[Template:Template redirect]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 255 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main|template=yes|redirect=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>
ec5365d4636ace45dd2b6b23308dc97a0b73a7ad
Template:If empty
10
425
2144
924
2022-04-03T20:56:41Z
wikipedia>Wugapodes
0
Changed protection settings for "[[Template:If empty]]": [[WP:High-risk templates|Highly visible template]]: used on 2 million pages and permanently cascade protected; matches module protection ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}<noinclude>{{Documentation}}</noinclude>
745940b7bdde8a1585c887ee4ee5ce81d98461a4
Template:Helpbox
10
131
311
2022-04-04T14:36:16Z
Xaosflux
7
Changed protection settings for "[[Template:Helpbox]]": HR, used in FP interfacetype pages such as [[Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{Sidebar
| name = {{#if:{{{templatename|}}} |{{{templatename}}} |{{{name|{{PAGENAME}}}}} }}
| templatestyles = Template:Helpbox/styles.css
| child templatestyles = {{{child templatestyles|}}}
| float = {{{float|}}}
| class = help-box noprint {{{class|{{{bodyclass|}}}}}}
| style = {{{1|}}}
| titlestyle = {{{titlestyle|}}}
| title = {{{title|{{{name|}}}}}}
| headingstyle = {{{headingstyle|}}}
| heading1 = {{{group1|}}}
| content1 = {{{list1|}}}
| heading2 = {{{group2|}}}
| content2 = {{{list2|}}}
| heading3 = {{{group3|}}}
| content3 = {{{list3|}}}
| heading4 = {{{group4|}}}
| content4 = {{{list4|}}}
| heading5 = {{{group5|}}}
| content5 = {{{list5|}}}
| heading6 = {{{group6|}}}
| content6 = {{{list6|}}}
| heading7 = {{{group7|}}}
| content7 = {{{list7|}}}
| heading8 = {{{group8|}}}
| content8 = {{{list8|}}}
| heading9 = {{{group9|}}}
| content9 = {{{list9|}}}
| heading10 = {{{group10|}}}
| content10 = {{{list10|}}}
| heading11 = {{{group11|}}}
| content11 = {{{list11|}}}
| heading12 = {{{group12|}}}
| content12 = {{{list12|}}}
| heading13 = {{{group13|}}}
| content13 = {{{list13|}}}
| heading14 = {{{group14|}}}
| content14 = {{{list14|}}}
| heading15 = {{{group15|}}}
| content15 = {{{list15|}}}
| heading16 = {{{group16|}}}
| content16 = {{{list16|}}}
| heading17 = {{{group17|}}}
| content17 = {{{list17|}}}
| heading18 = {{{group18|}}}
| content18 = {{{list18|}}}
| heading19 = {{{group19|}}}
| content19 = {{{list19|}}}
| heading20 = {{{group20|}}}
| content20 = {{{list20|}}}
| navbar = {{#if:{{{templatename|}}} |
| {{#if:{{{title|}}} |{{#if:{{{name|}}} | |none}}
| none
}}
}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
5509d0ec3a4e28588e980d97b41e6d36f114d139
Template:Helpbox/styles.css
10
132
313
2022-04-04T14:36:19Z
Xaosflux
7
Changed protection settings for "[[Template:Helpbox/styles.css]]": HR, used in FP interfacetype pages such as [[Wikipedia:Text of Creative Commons Attribution-ShareAlike 3.0 Unported License]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
sanitized-css
text/css
/* {{pp|small=y}} */
.help-box {
background: #f5faff;
line-height: 1.6em;
}
.help-box .sidebar-title {
background: #cee0f2;
font-size: 130%;
padding-left: 0.4em;
padding-right: 0.4em; /* gap before first heading/content */
margin-bottom: 6px;
}
.help-box .sidebar-heading {
background: #cee0f2;
padding: 0.1em 0.7em 0.15em;
}
.help-box .sidebar-content,
/* conservatively target subgroups since we're working with a metatemplate */
.help-box .sidebar-content-with-subgroup {
padding-top: 0.15em;
}
@media all and (min-width: 720px) {
.help-box {
width: auto;
max-width: 22em;
}
}
e9436864978a21f55d6aa0b3e1fc6670c322c65d
Template:Lang-ru
10
997
2190
2022-04-11T05:48:13Z
wikipedia>Paine Ellsworth
0
Undid revision 1073439901 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv - High-use template now in documentation
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_inherit
|code=ru
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Balto-Slavic multilingual support templates]]
</noinclude>
695925373c486c81a8f6581d4c8d3f95e56c469c
Module:BaseConvert
828
1618
2953
2022-04-13T04:58:12Z
w>Johnuniq
0
update from [[Module:BaseConvert/sandbox]] per talk; this removes globals
Scribunto
text/plain
local p = {}
local digits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
local function normalizeFullWidthChars(s)
return mw.ustring.gsub(s, '[!-~]', function(s)
return mw.ustring.char(mw.ustring.codepoint(s, 1) - 0xFEE0)
end)
end
local function _convert(n, base, from, precision, width, default, prefix, suffix)
n = tostring(n)
-- strip off any leading '0x' (unless x is a valid digit in the input base)
from = tonumber(from)
if not from or from < 34 then
local c
n, c = n:gsub('^(-?)0[Xx]', '%1')
if c > 0 and not from then from = 16 end
end
-- check for a negative sign. Do this while the input is still in string form,
-- because tonumber doesn't support negative numbers in non-10 bases.
local sign = ''
local c
n, c = n:gsub('^-', '')
if c > 0 then sign = '-' end
-- replace any full-width Unicode characters in the string with their ASCII equivalents
n = normalizeFullWidthChars(n)
-- handle scientific notation with whitespace around the 'e' e.g. '5 e7'
n = n:gsub('%s*[eE]%s*', 'e')
from = from or 10
local num = tonumber(n, from)
base = tonumber(base)
precision = tonumber(precision)
width = tonumber(width)
if not num or not base then return default or n end
local i, f = math.modf(num)
local t = {}
repeat
local d = (i % base) + 1
i = math.floor(i / base)
table.insert(t, 1, digits:sub(d, d))
until i == 0
while #t < (width or 0) do
table.insert(t, 1, '0')
end
local intPart = table.concat(t, '')
-- compute the fractional part
local tf = {}
while f > 0 and #tf < (precision or 10) do
f = f * base
i, f = math.modf(f)
table.insert(tf, digits:sub(i + 1, i + 1))
end
-- add trailing zeros if needed
if precision and #tf < precision then
for i = 1, precision - #tf do
table.insert(tf, '0')
end
end
local fracPart = table.concat(tf, '')
-- remove trailing zeros if not needed
if not precision then
fracPart = fracPart:gsub('0*$', '')
end
-- add the radix point if needed
if #fracPart > 0 then
fracPart = '.' .. fracPart
end
return (prefix or '') .. sign .. intPart .. fracPart .. (suffix or '')
end
function p.convert(frame)
-- Allow for invocation via #invoke or directly from another module
local args
if frame == mw.getCurrentFrame() then
args = frame.args
else
args = frame
end
local n = args.n
local base = args.base
local from = args.from
local precision = args.precision
local width = args.width
local default = args.default
local prefix = args.prefix
local suffix = args.suffix
return _convert(n, base, from, precision, width, default, prefix, suffix)
end
setmetatable(p, {
__index = function(t, k)
local from, base = k:match('^([0-9]+)to([0-9]+)$')
if not from then return nil end
return function(frame)
local args = frame.args
return _convert(mw.text.trim(args[1]), base, from, args.precision, args.width,
args.default, args.prefix, args.suffix)
end
end
})
return p
da7f7d5ef21f3c02054dddf627df0574719a2d53
Template:Script/doc/id-unk
10
1590
2925
2022-04-13T17:59:49Z
w>MusikBot II
0
Changed protection settings for "[[Template:Script/doc/id-unk]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2518 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{Script/doc/id-unk/core
|input1={{{input1|<noinclude>Test</noinclude>}}}
|alpha4={{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}}
|is-alpha4={{#invoke:String|match|s=_{{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}}|pattern=^_[A-Z][a-z][a-z][a-z]$|plain=false |nomatch=}}<!-- is-alpha4=empty/blank when false -->
|is-in-unicode={{ISO 15924 alias|alpha4={{Script/doc/id-unk/name-to-alpha4|input1={{{input1|<noinclude>Test</noinclude>}}}}}|default=}}<!--is-in-unicode=Unicode Alias ID when true; blank when false -->
}}<!--
--><noinclude>{{documentation}}</noinclude>
f06bc79ad50f07bd27f6fdc6f47e5c4c6c4a05d9
Template:Script/doc/id-unk/core
10
1591
2926
2022-04-13T17:59:50Z
w>MusikBot II
0
Changed protection settings for "[[Template:Script/doc/id-unk/core]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2519 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{#if:{{{is-alpha4|<noinclude>LAtn</noinclude>}}}<!-- if:is-alpha4 - check is defined?:
-->|{{#if:{{Script/doc/id-unk/is-iso-alpha4|alpha4={{{alpha4|<noinclude>Latn</noinclude>}}}|default=}}|<!-- ok -->|{{Script/doc/id-unk/report|catsort={{{input1|}}}|msg=}}}}<!-- else:is-alpha4 - report
-->|{{Script/doc/id-unk/report|catsort={{{input1|}}}|msg=}}<!--
-->}}<!--
--><noinclude>{{documentation|1=Template:Script/doc/id-unk/doc}}</noinclude>
e7a8f16eebe71f45718e094589a59d447dbcbfe5
Template:DOW
10
1499
2834
2022-04-16T02:39:11Z
w>Thrakkx
0
Like [[Template:WIA]] and [[Template:POW]], the parentheses should not be part of the link
wikitext
text/x-wiki
([[Killed in action|{{abbr|DOW|Died of wounds}}]])<noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}
</noinclude>
a14551ef11993cd99ef9b8d4f781f0feaf2e7640
Template:Notice and warning templates
10
1331
2666
2022-04-16T04:10:52Z
w>Izno
0
nix false positive
wikitext
text/x-wiki
{{Navbox
| name = Notice and warning templates
| state = {{{state|}}}
| title = {{c|Notice and warning templates}}
| liststyle = text-align:left;
| tracking = no <!-- keep all the documanted templates out of the hlist tracking category -->
| list1 =
* {{tlb|Caution}} – For messages indicating e.g. that errors or misuse may have wide repercussions.
* {{tlb|Consensus}} – For notices relating to [[Wikipedia:Consensus|consensus]] about methods, procedures, editing, etc.
* {{tlb|Notice}} – For significant information.
* {{tlb|Warning}} – For particularly significant warnings.
* {{tl|Warnsign}} – Inline version of {{tlf|Warning}}.
| below = See also {{tl|Ambox}}, the generic [[Template:Mbox|message box]] for article messages.
}}<noinclude>
{{Documentation |content={{Collapsible option |statename=optional <!--|default=collapsed-->}}
[[Category:Notice and warning templates| ]]
[[Category:Documentation see also templates]]
}}<!--(end Documentation)-->
</noinclude>
fa67f43a108fbcd1277016c428ca6332aac76f7a
Template:Unichar/notes
10
1617
2952
2022-04-17T10:57:13Z
w>DePiep
0
wikitext
text/x-wiki
{{#if:{{{char_entity|}}}{{{note|}}}
|({{trim|1=<!--
-->{{#ifeq:{{{char_entity|}}}|||{{mono|1={{{char_entity|}}}}}<!-- -->{{#if:{{{note|}}}|{{int:dot-separator}}}}}} <!--
-->{{{note|}}}<!--
-->}})}}<!--
--><noinclude>{{Documentation}}</noinclude>
6ab33077bcd6f1892e6f23c9286f59de43c1fb25
Template:Unichar/main
10
1610
2945
2022-04-17T11:02:31Z
w>DePiep
0
wikitext
text/x-wiki
{{#ifexpr:({{{dval|-1}}}=0) and ({{#ifeq:X{{{hval}}}|X0000 |0 |1}}) |<!--(error triggered if X{{{hval}}} ≠ X0000:)-->{{Error |tag=span |Error using {{tl|unichar}}: Input "{{{hvalinput|}}}" is not a [[hexadecimal]] value.}}
| {{nowrap|{{{{#ifeq:{{{sans|}}}|y|sans-serif|mono}}|{{Unichar/ulink |ulink={{{ulink|<#salted#>}}} |ulinkdefault=Unicode}}{{{hval|}}}}} }}<!--
-->{{Unichar/glyph |hval={{{hval|}}} |gc={{{gc|<#not a Unicode code point#>}}} |size={{{size}}}
|use={{{use|}}} |use2={{{use2|}}} |cwith={{{cwith|}}} |image={{{image|}}} |br={{{br|}}} }} <!--
-->{{Unichar/name |na={{{na|}}} |nlink={{{nlink|<#salted#>}}} |gc={{{gc|}}} }} <!--
-->{{Unichar/notes |html={{{html|}}}
|char_entity={{#ifeq:{{{html|no}}}|yes|{{#invoke:LoadData|Numcr2namecr|{{{dval|}}}}}|}}
|note={{{note|}}} }}
}}<!--
--><noinclude>{{Documentation|1=Template:Unichar/doc}}</noinclude>
d5b632dcc9a4089d49f7d7d81b6aaf9e8adf3a85
Template:Country data European Union
10
1191
2520
2022-04-18T01:09:30Z
w>Paine Ellsworth
0
per edit request on talk page - remove shortname alias
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = European Union
| flag alias = Flag of Europe.svg
| size = {{{size|}}}
| name = {{{name|}}}
<noinclude>
| redir1 = EU
| related1 = Europe
</noinclude>
}}
a0a90732df569849342cb7fb84f87ad11d803cb7
Template:Location map data documentation
10
1638
2991
2022-04-22T11:06:31Z
wikipedia>Paine Ellsworth
0
convert to /doc page for protected template
wikitext
text/x-wiki
<includeonly>__NOEDITSECTION__{{#invoke:Location map/info|main}}
{{{image|}}}
'''{{#titleparts:{{FULLPAGENAME}}|3}}''' is a location map definition used to overlay markers and labels on {{{projection|an [[equirectangular projection]]}}} map of {{{name|[[{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}]]}}}. The markers are placed by [[latitude]] and [[longitude]] coordinates on the default map or a similar map image.
== Usage ==
These definitions are used by the following templates when invoked with parameter "{{#titleparts:{{FULLPAGENAME}}|1|3}}":
* {{tlx|Location map | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map many | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map+ | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map~ | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
== Map definition ==
* <code>'''name''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}</code>
*: Name used in the default map caption
* <code>'''image''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}]]</code>
*: The default map image, without "Image:" or "File:"
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|
* <code>'''image1''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}]]</code>
*: An alternative map image, usually a relief map, which can be displayed via the ''relief'' or ''AlternativeMap'' parameters
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|
* <code>'''image2''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}]]</code>{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|
* <code>'''image3''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}]]</code>
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|
* <code>'''image4''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}]]</code>
}}
*: Alternative map image{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} which can be displayed via the ''AlternativeMap'' parameter
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}|
* <code>'''top''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}</code>
*: [[Latitude]] at top edge of map, in [[decimal degrees]]
* <code>'''bottom''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}</code>
*: Latitude at bottom edge of map, in decimal degrees
* <code>'''left''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}</code>
*: [[Longitude]] at left edge of map, in decimal degrees
* <code>'''right''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}</code>
*: Longitude at right edge of map, in decimal degrees
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}|
* <code>'''x''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}</code>
*: An expression to calculate a location on the map via its [[longitude]]; evaluates as 0 along the left edge and 100 along the right edge
* <code>'''y''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}</code>
*: An expression to calculate a location on the map via its [[latitude]]; evaluates as 0 along the top edge and 100 along the bottom edge
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|
* <code>'''mark''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}]] ([[File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|8px]])</code>
*: The default mark image to display with this map. This can be overridden by the <code>mark</code> parameter in [[Template:Location map]], which would otherwise default to [[:File:Red pog.svg|Red pog.svg]] ([[File:Red pog.svg|8px]]).
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}|
* <code>'''marksize''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>
*: The default mark size (in [[pixel]]s) for the mark image displayed with this map (should not include <code>px</code>, for example <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>, not <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}px</code>). This can be overridden by the <code>marksize</code> parameter in [[Template:Location map]], which would otherwise default to 8.
}}
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|
== Alternative map ==
The {{tl|Location map}}, {{tl|Location map many}}, and {{tl|Location map+}} templates have parameters to specify an alternative map image. {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}
| The map displayed as '''image1''' can be used with the ''relief'' or ''AlternativeMap'' parameters.
}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}
| The map{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} displayed as '''image2''' {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|/ '''image3'''}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|/ '''image4'''}} can be used with the ''AlternativeMap'' parameter.
}} Examples may be found below or in the following:
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|
* [[Template:Location map#Relief parameter]]
* [[Template:Location map+/relief]]
}}
* [[Template:Location map#AlternativeMap parameter]]
* [[Template:Location map+/AlternativeMap]]
}}
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}|
== Precision ==
{{#if:{{{precision|}}}|{{{precision}}}|
[[Longitude]]: from West to East this map definition covers {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 round 4}} degrees.
* At an image width of 200 [[pixel]]s, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 200 round 4}} degrees per pixel.
* At an image width of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 1000 round 4}} degrees per pixel.
[[Latitude]]: from North to South this map definition covers {{#expr: {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} round 4}} degrees.
* At an image height of 200 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 200 round 4}} degrees per pixel.
* At an image height of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 1000 round 4}} degrees per pixel.
}}}}
{{#if:{{{examples|}}}|
== Examples using location map templates ==
{{{examples}}}
{{clear}}
}}
== See also ==
{{{see also|}}}
=== Location map templates ===
* [[Template:Location map]], to display one mark and label using latitude and longitude
* [[Template:Location map many]], to display up to nine marks and labels
* [[Template:Location map+]], to display an unlimited number of marks and labels
=== Creating new map definitions ===
* [[Template:Location map/Creating a new map definition]]</includeonly><noinclude>
{{Documentation}}
</noinclude>
1fb38b8a638db2fc998cb284051bcbe9a98f1e5e
Template:Ml
10
1565
2900
2022-04-22T11:31:32Z
w>MSGJ
0
MSGJ moved page [[Template:Ml]] to [[Template:Module link]]: clearer name
wikitext
text/x-wiki
#REDIRECT [[Template:Module link]]
{{Redirect category shell|
{{R from move}}
}}
55769c1a9d3b6c6828298b7a402d8e8506532cdd
Template:Script/doc/id-unk/name-to-alpha4
10
1592
2927
2022-04-24T13:48:45Z
w>Aidan9382
0
Add {{pp-30-500|small=yes}}
wikitext
text/x-wiki
<!-- ONLY add names that are recognised by the #switch in {{Script}}.
List as of 20 Feb 2021:
-->{{#switch:{{{input1|}}}
|Arabic = Arab
|Fraser = Lisu
|Greek = Grek
|Hebrew = Hebr
|Hanunoo = Hano
|Limbu = Limb
|Meithei = Mtei
|Nastaliq = Aran
|Nko = Nkoo
|Phoenician = Phnx
|Pollard = Plrd
|Vai = Vaii
|Yezidi = Yezi
|Yi = Yiii
|#default = {{{input1|}}}
}}
<noinclude>{{pp-30-500|small=yes}}</noinclude>
dc9a6a9cf44711aa27eb5695a79ffe51668ac1c1
Module:Bold list
828
630
1420
2022-04-26T07:59:10Z
wikipedia>Peter coxhead
0
correction
Scribunto
text/plain
-- Written by User:Ahecht in response to a thread at [[WP:VPI]]
return { main = function(frame)
args = {}
for i, v in ipairs(frame:getParent().args) do table.insert(args, v) end
conj = "'''" .. (#args > 2 and ", " or " ") .. (frame.args.conj or "or") .. " '''"
return "'''"..mw.text.listToText(args, "''', '''", conj).."'''"
end }
48d1ae74e90832a1b3366b51745334f53a668249
Template:Infobox royalty/short description
10
1358
2693
2022-04-27T13:17:55Z
w>Jonesey95
0
add auto short description
wikitext
text/x-wiki
<!--Check if infobox is in lead to avoid false positives-->{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [mM]onarch}}{{#invoke:Is infobox in lead|main|[Ii]nfobox King}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Emperor}}{{#invoke:Is infobox in lead|main|[Ii]nfobox Roman emperor}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Rr]oyalty}}|<!--
Short description processing
-->{{#if:{{{1|}}}|{{short description|{{ucfirst:{{trim|{{#invoke:String|match|s={{delink|1={{{1|}}}}}|pattern=[^<{;]*|nomatch=}}}}}}|noreplace}}}}}}<noinclude>
{{Documentation|content={{High-use}} This template implements automatic short descriptions for infobox royalty.
{{auto short description}}}}</noinclude>
6ef93a983aca3589861fdcde286ff3c1b546359a
Template:Multiple issues/styles.css
10
1300
2635
2022-05-07T20:39:15Z
w>Izno
0
add these other inline styles
sanitized-css
text/css
/* {{pp|small=y}} */
.multiple-issues-text {
width: 95%;
margin: 0.2em 0;
}
.multiple-issues-text > .mw-collapsible-content {
margin-top: 0.3em;
}
/* Remove borders, backgrounds, padding, etc. */
.compact-ambox .ambox {
border: none;
border-collapse: collapse;
background-color: transparent;
margin: 0 0 0 1.6em !important;
padding: 0 !important;
width: auto;
display: block;
}
body.mediawiki .compact-ambox .ambox.mbox-small-left {
font-size: 100%;
width: auto;
margin: 0;
}
/* Style the text cell as a list item and remove its padding */
.compact-ambox .ambox .mbox-text {
padding: 0 !important;
margin: 0 !important;
}
.compact-ambox .ambox .mbox-text-span {
display: list-item;
line-height: 1.5em;
list-style-type: disc;
}
/* Hide the images */
.compact-ambox .ambox .mbox-image,
.compact-ambox .ambox .mbox-imageright,
.compact-ambox .ambox .mbox-empty-cell,
/* Allow for hiding text in compact form */
.compact-ambox .hide-when-compact {
display: none;
}
e90883916010fd38cd4f9c7e10c4a01908c965cb
Template:Bold list
10
627
1414
2022-05-10T14:00:24Z
Ahecht
42
{{{|safesubst:}}}
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#invoke:Bold list|main|conj={{{conj|or}}}}}</includeonly><noinclude>{{{{BASEPAGENAME}}|A|B|C}}
{{Documentation}}</noinclude>
2a2ac83abf84eb3db2c1d0b15b6c66cf88f18e99
Template:Infobox service record
10
1514
2849
2022-05-10T22:28:10Z
w>Galobtter
0
Added {{being deleted}} per [[Wikipedia:Templates for discussion/Log/2022 April 30#Template:Infobox ship begin]] ([[WP:XFDC#4.0.13|XFDcloser]])
wikitext
text/x-wiki
<noinclude>{{Being deleted|2022 April 30|Template:Infobox ship begin|merge= Template:Infobox ship}}</noinclude><includeonly>{{#switch:{{#ifeq:{{{is_ship|}}}|yes|1|0}}{{#ifeq:{{{is_multi|}}}|yes|1|0}}|
|00 = <table {{WPMILHIST Infobox style|main_box}}><!-- standalone -->
|#default = }}<!-- not standalone (in a primary infobox)
-->{{#ifeq:{{{is_ship|}}}|yes|<tr><!-- here for ship -->
<th colspan="2" {{WPMILHIST Infobox style|header_bar}}>{{#if:{{{label|}}}|{{{label|}}}|Service record}}</th>
</tr>
{{#if:{{{partof|}}}|<tr><td>Part of:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{partof}}}}}</td></tr>
}}{{#if:{{{codes|}}}|<tr><td>Identification codes:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{codes}}}}}</td></tr>
}}{{#if:{{{commanders|}}}|<tr><td>Commanders:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{commanders}}}}}</td></tr>
}}{{#if:{{{operations|}}}|<tr><td>Operations:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{operations}}}}}</td></tr>
}}{{#if:{{{victories|}}}|<tr><td>Victories:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{victories}}}}}</td></tr>
}}{{#if:{{{awards|}}}|<tr><td>Awards:</td><td>
{{#invoke:WPSHIPS utilities|unbulleted_list|{{{awards}}}}}</td></tr>
}}|<tr><!-- here for non-ship -->
<th colspan="2" {{WPMILHIST Infobox style|header_bar}}>{{#if:{{{label|}}}|{{{label|}}}|Service record}}</th>
</tr>
{{#if:{{{partof|}}}|<tr><th style="padding-right: 1em;">Part of</th><td>
{{{partof}}}</td></tr>
}}{{#if:{{{codes|}}}|<tr><th style="padding-right: 1em;">Identification codes</th><td>
{{{codes}}}</td></tr>
}}{{#if:{{{commanders|}}}|<tr><th style="padding-right: 1em;">Commanders</th><td>
{{{commanders}}}</td></tr>
}}{{#if:{{{operations|}}}|<tr><th style="padding-right: 1em;">Operations</th><td>
{{{operations}}}</td></tr>
}}{{#if:{{{victories|}}}|<tr><th style="padding-right: 1em;">Victories</th><td>
{{{victories}}}</td></tr>
}}{{#if:{{{awards|}}}|<tr><th style="padding-right: 1em;">Awards</th><td>
{{{awards}}}</td></tr>
}}}}{{#switch:{{#ifeq:{{{is_ship|}}}|yes|1|0}}{{#ifeq:{{{is_multi|}}}|yes|1|0}}|
|00 = </table>
|#default = }}</includeonly><noinclude>
{{convert to use Infobox}}
{{documentation}}
</noinclude>
f7f64fe650c609522ae5737c494edc577cf855e4
Template:Citation needed
10
1084
2367
2022-05-13T03:22:19Z
wikipedia>Hyacinth
0
Reverted edits by [[Special:Contribs/Hyacinth|Hyacinth]] ([[User talk:Hyacinth|talk]]) to last version by Izno
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Fix
|name={{{name|Citation needed}}}
|link=Wikipedia:Citation needed
|text=citation needed
|class=Template-Fact
|title={{{reason|This claim needs references to reliable sources.}}}
|date={{{date|}}}
|cat=[[Category:All articles with unsourced statements]]
|cat-date=Category:Articles with unsourced statements
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages containing citation needed template with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Citation needed]] with unknown parameter "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude>
{{Documentation}}
</noinclude>
0da00647cf516584566df3fd518b1d55696e4b25
Greater Greece
0
1113
2425
2022-05-13T21:09:22Z
wikipedia>Christian75
0
{{R hatnote}}
wikitext
text/x-wiki
#REDIRECT [[Megali Idea]]
{{R hatnote}}
1e2421e237e64daf0b351ac051651fb9c1da961b
Module:String2
828
1353
2688
2022-05-14T12:03:50Z
w>GKFX
0
Copy changes by [[User:Tholme]] from [[Module:String2/sandbox]] per edit request.
Scribunto
text/plain
local p = {}
p.trim = function(frame)
return mw.text.trim(frame.args[1] or "")
end
p.sentence = function (frame)
-- {{lc:}} is strip-marker safe, string.lower is not.
frame.args[1] = frame:callParserFunction('lc', frame.args[1])
return p.ucfirst(frame)
end
p.ucfirst = function (frame )
local s = mw.text.trim( frame.args[1] or "" )
local s1 = ""
-- if it's a list chop off and (store as s1) everything up to the first <li>
local lipos = mw.ustring.find(s, "<li>" )
if lipos then
s1 = mw.ustring.sub(s, 1, lipos + 3)
s = mw.ustring.sub(s, lipos + 4)
end
-- s1 is either "" or the first part of the list markup, so we can continue
-- and prepend s1 to the returned string
local letterpos
if mw.ustring.find(s, "^%[%[[^|]+|[^%]]+%]%]") then
-- this is a piped wikilink, so we capitalise the text, not the pipe
local _
_, letterpos = mw.ustring.find(s, "|%W*%w") -- find the first letter after the pipe
else
letterpos = mw.ustring.find(s, '%w')
end
if letterpos then
local first = mw.ustring.sub(s, 1, letterpos - 1)
local letter = mw.ustring.sub(s, letterpos, letterpos)
local rest = mw.ustring.sub(s, letterpos + 1)
return s1 .. first .. mw.ustring.upper(letter) .. rest
else
return s1 .. s
end
end
p.title = function (frame )
-- http://grammar.yourdictionary.com/capitalization/rules-for-capitalization-in-titles.html
-- recommended by The U.S. Government Printing Office Style Manual:
-- "Capitalize all words in titles of publications and documents,
-- except a, an, the, at, by, for, in, of, on, to, up, and, as, but, or, and nor."
local alwayslower = {['a'] = 1, ['an'] = 1, ['the'] = 1,
['and'] = 1, ['but'] = 1, ['or'] = 1, ['for'] = 1,
['nor'] = 1, ['on'] = 1, ['in'] = 1, ['at'] = 1, ['to'] = 1,
['from'] = 1, ['by'] = 1, ['of'] = 1, ['up'] = 1 }
local res = ''
local s = mw.text.trim( frame.args[1] or "" )
local words = mw.text.split( s, " ")
for i, s in ipairs(words) do
-- {{lc:}} is strip-marker safe, string.lower is not.
s = frame:callParserFunction('lc', s)
if i == 1 or alwayslower[s] ~= 1 then
s = mw.getContentLanguage():ucfirst(s)
end
words[i] = s
end
return table.concat(words, " ")
end
-- findlast finds the last item in a list
-- the first unnamed parameter is the list
-- the second, optional unnamed parameter is the list separator (default = comma space)
-- returns the whole list if separator not found
p.findlast = function(frame)
local s = mw.text.trim( frame.args[1] or "" )
local sep = frame.args[2] or ""
if sep == "" then sep = ", " end
local pattern = ".*" .. sep .. "(.*)"
local a, b, last = s:find(pattern)
if a then
return last
else
return s
end
end
-- stripZeros finds the first number and strips leading zeros (apart from units)
-- e.g "0940" -> "940"; "Year: 0023" -> "Year: 23"; "00.12" -> "0.12"
p.stripZeros = function(frame)
local s = mw.text.trim(frame.args[1] or "")
local n = tonumber( string.match( s, "%d+" ) ) or ""
s = string.gsub( s, "%d+", n, 1 )
return s
end
-- nowiki ensures that a string of text is treated by the MediaWiki software as just a string
-- it takes an unnamed parameter and trims whitespace, then removes any wikicode
p.nowiki = function(frame)
local str = mw.text.trim(frame.args[1] or "")
return mw.text.nowiki(str)
end
-- split splits text at boundaries specified by separator
-- and returns the chunk for the index idx (starting at 1)
-- #invoke:String2 |split |text |separator |index |true/false
-- #invoke:String2 |split |txt=text |sep=separator |idx=index |plain=true/false
-- if plain is false/no/0 then separator is treated as a Lua pattern - defaults to plain=true
p.split = function(frame)
local args = frame.args
if not(args[1] or args.txt) then args = frame:getParent().args end
local txt = args[1] or args.txt or ""
if txt == "" then return nil end
local sep = (args[2] or args.sep or ""):gsub('"', '')
local idx = tonumber(args[3] or args.idx) or 1
local plain = (args[4] or args.plain or "true"):sub(1,1)
plain = (plain ~= "f" and plain ~= "n" and plain ~= "0")
local splittbl = mw.text.split( txt, sep, plain )
if idx < 0 then idx = #splittbl + idx + 1 end
return splittbl[idx]
end
-- val2percent scans through a string, passed as either the first unnamed parameter or |txt=
-- it converts each number it finds into a percentage and returns the resultant string.
p.val2percent = function(frame)
local args = frame.args
if not(args[1] or args.txt) then args = frame:getParent().args end
local txt = mw.text.trim(args[1] or args.txt or "")
if txt == "" then return nil end
local function v2p (x)
x = (tonumber(x) or 0) * 100
if x == math.floor(x) then x = math.floor(x) end
return x .. "%"
end
txt = txt:gsub("%d[%d%.]*", v2p) -- store just the string
return txt
end
-- one2a scans through a string, passed as either the first unnamed parameter or |txt=
-- it converts each occurrence of 'one ' into either 'a ' or 'an ' and returns the resultant string.
p.one2a = function(frame)
local args = frame.args
if not(args[1] or args.txt) then args = frame:getParent().args end
local txt = mw.text.trim(args[1] or args.txt or "")
if txt == "" then return nil end
txt = txt:gsub(" one ", " a "):gsub("^one", "a"):gsub("One ", "A "):gsub("a ([aeiou])", "an %1"):gsub("A ([aeiou])", "An %1")
return txt
end
-- findpagetext returns the position of a piece of text in a page
-- First positional parameter or |text is the search text
-- Optional parameter |title is the page title, defaults to current page
-- Optional parameter |plain is either true for plain search (default) or false for Lua pattern search
-- Optional parameter |nomatch is the return value when no match is found; default is nil
p._findpagetext = function(args)
-- process parameters
local nomatch = args.nomatch or ""
if nomatch == "" then nomatch = nil end
--
local text = mw.text.trim(args[1] or args.text or "")
if text == "" then return nil end
--
local title = args.title or ""
local titleobj
if title == "" then
titleobj = mw.title.getCurrentTitle()
else
titleobj = mw.title.new(title)
end
--
local plain = args.plain or ""
if plain:sub(1, 1) == "f" then plain = false else plain = true end
-- get the page content and look for 'text' - return position or nomatch
local content = titleobj and titleobj:getContent()
return content and mw.ustring.find(content, text, 1, plain) or nomatch
end
p.findpagetext = function(frame)
local args = frame.args
local pargs = frame:getParent().args
for k, v in pairs(pargs) do
args[k] = v
end
if not (args[1] or args.text) then return nil end
-- just the first value
return (p._findpagetext(args))
end
-- returns the decoded url. Inverse of parser function {{urlencode:val|TYPE}}
-- Type is:
-- QUERY decodes + to space (default)
-- PATH does no extra decoding
-- WIKI decodes _ to space
p._urldecode = function(url, type)
url = url or ""
type = (type == "PATH" or type == "WIKI") and type
return mw.uri.decode( url, type )
end
-- {{#invoke:String2|urldecode|url=url|type=type}}
p.urldecode = function(frame)
return mw.uri.decode( frame.args.url, frame.args.type )
end
-- what follows was merged from Module:StringFunc
-- helper functions
p._GetParameters = require('Module:GetParameters')
-- Argument list helper function, as per Module:String
p._getParameters = p._GetParameters.getParameters
-- Escape Pattern helper function so that all characters are treated as plain text, as per Module:String
function p._escapePattern( pattern_str)
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
-- Helper Function to interpret boolean strings, as per Module:String
p._getBoolean = p._GetParameters.getBoolean
--[[
Strip
This function Strips characters from string
Usage:
{{#invoke:String2|strip|source_string|characters_to_strip|plain_flag}}
Parameters
source: The string to strip
chars: The pattern or list of characters to strip from string, replaced with ''
plain: A flag indicating that the chars should be understood as plain text. defaults to true.
Leading and trailing whitespace is also automatically stripped from the string.
]]
function p.strip( frame )
local new_args = p._getParameters( frame.args, {'source', 'chars', 'plain'} )
local source_str = new_args['source'] or ''
local chars = new_args['chars'] or '' or 'characters'
source_str = mw.text.trim(source_str)
if source_str == '' or chars == '' then
return source_str
end
local l_plain = p._getBoolean( new_args['plain'] or true )
if l_plain then
chars = p._escapePattern( chars )
end
local result
result = mw.ustring.gsub(source_str, "["..chars.."]", '')
return result
end
--[[
Match any
Returns the index of the first given pattern to match the input. Patterns must be consecutively numbered.
Returns the empty string if nothing matches for use in {{#if:}}
Usage:
{{#invoke:String2|matchAll|source=123 abc|456|abc}} returns '2'.
Parameters:
source: the string to search
plain: A flag indicating that the patterns should be understood as plain text. defaults to true.
1, 2, 3, ...: the patterns to search for
]]
function p.matchAny(frame)
local source_str = frame.args['source'] or error('The source parameter is mandatory.')
local l_plain = p._getBoolean( frame.args['plain'] or true )
for i = 1, math.huge do
local pattern = frame.args[i]
if not pattern then return '' end
if mw.ustring.find(source_str, pattern, 1, l_plain) then
return tostring(i)
end
end
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
]]
function p.hyphen_to_dash( str, spacing )
if (str == nil or str == '') then
return str
end
local accept
str = mw.text.decode(str, true ) -- replace html entities with their characters; semicolon mucks up the text.split
local out = {}
local list = mw.text.split (str, '%s*[,;]%s*') -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
item = mw.text.trim(item) -- trim whitespace
item, accept = item:gsub ('^%(%((.+)%)%)$', '%1')
if accept == 0 and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2') -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–') -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
table.insert (out, item) -- add the (possibly modified) item to the output table
end
local temp_str = table.concat (out, ',' .. spacing) -- concatenate the output table into a comma separated string
temp_str, accept = temp_str:gsub ('^%(%((.+)%)%)$', '%1') -- remove accept-this-as-written markup when it wraps all of concatenated out
if accept ~= 0 then
temp_str = str:gsub ('^%(%((.+)%)%)$', '%1') -- when global markup removed, return original str; do it this way to suppress boolean second return value
end
return temp_str
end
function p.hyphen2dash( frame )
local str = frame.args[1] or ''
local spacing = frame.args[2] or ' ' -- space is part of the standard separator for normal spacing (but in conjunction with templates r/rp/ran we may need a narrower spacing
return p.hyphen_to_dash(str, spacing)
end
-- Similar to [[Module:String#endswith]]
function p.startswith(frame)
return (frame.args[1]:sub(1, frame.args[2]:len()) == frame.args[2]) and 'yes' or ''
end
return p
418f407ee2454811910e333a13523afc975fa40c
Template:Script/doc/id-unk/is-iso-alpha4
10
1593
2928
2022-05-15T17:59:43Z
w>MusikBot II
0
Changed protection settings for "[[Template:Script/doc/id-unk/is-iso-alpha4]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2501 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<!-- ISO 15924 alpha4-IDs:
Returns input alpha4 when existing, <blank> when not existing (per #default).
"Special ISO codes" (number 900-999) are NOT recognised here (Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz).
List of ISO codes as of 2021-02-17 (201 regular codes)
-->{{#switch:{{{alpha4|}}}
|Adlm|Afak|Aghb|Ahom|Arab|Aran|Armi|Armn|Avst|Bali|Bamu|Bass|Batk|Beng|Bhks|Blis|Bopo|Brah|Brai|Bugi|Buhd
|Cakm|Cans|Cari|Cham|Cher|Chrs|Cirt|Copt|Cpmn|Cprt|Cyrl|Cyrs|Deva|Diak|Dogr|Dsrt|Dupl
|Egyd|Egyh|Egyp|Elba|Elym|Ethi|Geok|Geor|Glag|Gong|Gonm|Goth|Gran|Grek|Gujr|Guru
|Hanb|Hang|Hani|Hano|Hans|Hant|Hatr|Hebr|Hira|Hluw|Hmng|Hmnp|Hrkt|Hung|Inds|Ital|Jamo|Java|Jpan|Jurc
|Kali|Kana|Khar|Khmr|Khoj|Kitl|Kits|Knda|Kore|Kpel|Kthi|Lana|Laoo|Latf|Latg|Latn|Leke|Lepc|Limb|Lina|Linb|Lisu|Loma|Lyci|Lydi
|Mahj|Maka|Mand|Mani|Marc|Maya|Medf|Mend|Merc|Mero|Mlym|Modi|Mong|Moon|Mroo|Mtei|Mult|Mymr
|Nand|Narb|Nbat|Newa|Nkdb|Nkgb|Nkoo|Nshu|Ogam|Olck|Orkh|Orya|Osge|Osma|Ougr
|Palm|Pauc|Pcun|Pelm|Perm|Phag|Phli|Phlp|Phlv|Phnx|Piqd|Plrd|Prti|Psin|Ranj|Rjng|Rohg|Roro|Runr|Samr
|Sara|Sarb|Saur|Sgnw|Shaw|Shrd|Shui|Sidd|Sind|Sinh|Sogd|Sogo|Sora|Soyo|Sund|Sylo|Syrc|Syre|Syrj|Syrn
|Tagb|Takr|Tale|Talu|Taml|Tang|Tavt|Telu|Teng|Tfng|Tglg|Thaa|Thai|Tibt|Tirh|Tnsa|Toto|Ugar|Vaii|Visp|Vith
|Wara|Wcho|Wole|Xpeo|Xsux|Yezi|Yiii|Zanb={{{alpha4|}}}
|#default={{{default|}}}}}<!--
--><noinclude>{{documentation|content=
:Returns input alpha4 when existing, <blank> when not existing (per #default).
:"Special ISO codes" (number 900-999) are NOT recognised here (Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz).
: List of ISO codes as of 2021-02-17 (201 regular codes)
*>Adlm → {{Script/doc/id-unk/is-iso-alpha4|alpha4=Adlm}}
*>Aaaa → {{Script/doc/id-unk/is-iso-alpha4|alpha4=Aaaa}}
}}</noinclude>
140e866d057277d3d3e4378580bd9108e92356da
Template:Information/styles.css
10
1315
2650
2022-05-18T18:45:49Z
w>Izno
0
pp
sanitized-css
text/css
/* {{pp|small=y}} */
.file-information {
width: 100%;
padding: 5px;
border: 1px solid #a2a9b1;
background-color: #f8f9fa;
font-size: 95%;
box-sizing: border-box;
}
.file-information caption {
font-weight: bold;
}
.file-information td {
padding: 2px;
vertical-align: top;
}
.file-information th {
padding: 2px;
vertical-align: top;
background: #ccf;
text-align: right;
padding-right: 0.4em;
}
/* higher specificity than the likely-later .imbox styles */
.file-information td .imbox {
margin: 4px;
}
@media (min-width: 720px) {
/* let's not enforce col widths except above 720px */
.file-information th {
width: 15%;
}
}
60e6939d0e32461ec31fdfe218d8bb88dd5c7889
Template:Information
10
1134
2460
2022-05-18T18:49:43Z
w>Izno
0
use templatestyles
wikitext
text/x-wiki
<!--
Automatically detect protected files:
--><includeonly>{{#switch: {{PROTECTIONLEVEL:upload}}
|sysop|templateeditor|extendedconfirmed={{pp-upload|small=yes}}
}}{{#switch: {{PROTECTIONLEVEL:move}}
|sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}}
}}{{#switch: {{PROTECTIONLEVEL:edit}}
|sysop={{pp-protected|small=yes}}
|templateeditor={{pp-template|small=yes}}
|extendedconfirmed={{Pp-30-500|small=yes}}
|autoconfirmed={{pp-protected|small=yes}}
| <!--Not protected-->
}}
</includeonly><templatestyles src="Information/styles.css"/>
{| class="file-information"
|+ File information
|-
! scope="row" {{#if:{{{Description|{{{description|}}}}}}|id="fileinfotpl_desc"}} |Description
| {{{Location|}}}
{{#if: {{{Description|{{{description|}}}}}}
| {{{Description|{{{description}}}}}}
| {{Description missing<noinclude>|category=</noinclude>}}
}}
|-
! scope="row" {{#if:{{{Source|{{{source|}}}}}}|id="fileinfotpl_src"}} | Source
|
{{#if:{{{Source|{{{source|}}}}}}
| {{{Source|{{{source}}}}}}
| {{#ifeq:{{NAMESPACE}}|File|<includeonly>[[Category:Files with no machine-readable source]]</includeonly>}} No source specified. Please edit this file description and [[Wikipedia:Citing sources#Multimedia|provide a source]].
}}
|-
! scope="row" {{#if:{{{Date|{{{date|}}}}}}|id="fileinfotpl_date"}} | Date
|
{{{Date|{{{date|}}}}}}
|-
! scope="row" {{#if:{{{Author|{{{author|}}}}}}|id="fileinfotpl_aut"}} | Author
|
{{#if: {{{Author|{{{author|}}}}}}
| {{{Author|{{{author}}}}}}
| {{Description missing|author information|category=}}{{#ifeq:{{NAMESPACE}}|File|<includeonly>[[Category:Files lacking an author]]</includeonly>}}
}}
|-
! scope="row" {{#if:{{{Permission|{{{permission|}}}}}}|id="fileinfotpl_perm"}} | Permission<br /><small>([[Commons:Commons:Reusing content outside Wikimedia|Reusing this file]])</small>
|
{{#if:{{{Permission|{{{permission|}}}}}}
| {{{Permission|{{{permission}}}}}}
| See below.
}}
{{#switch: {{{Other_versions| {{{other_versions| {{{other versions|}}} }}} }}}
| =
| - =
| none =
| #default =
{{!}}-
! scope="row" id="fileinfotpl_ver" {{!}} Other versions
{{!}} {{{Other_versions| {{{other_versions| {{{other versions|}}} }}} }}}
}}
{{#switch: {{{Additional_information|{{{additional_information|{{{Additional information|{{{additional information|}}}}}}}}}}}}
| =
| - =
| none =
| #default =
{{!}}-
! scope="row" id="fileinfotpl_add" {{!}} Additional information
{{!}} {{{Additional_information|{{{additional_information|{{{Additional information|{{{additional information|}}}}}}}}}}}}
}}
|}<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
09b7ac1ac351b9b118fd2e28290491600b1bfccd
Template:Infobox country
10
241
1253
2022-05-21T18:18:18Z
wikipedia>Primefac
0
fix pipe parameter issue
wikitext
text/x-wiki
{{infobox
|templatestyles = Template:Infobox country/styles.css
| bodyclass = ib-country vcard
| aboveclass = adr
| above =
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{conventional_long_name|}}}
|<div class="fn org country-name">{{{conventional_long_name|}}}</div>
}}{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
|<div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}}}</div>
}}<!--
-->{{#ifeq:{{{micronation|}}}|yes
|<span class="fn org">[[Micronation]]</span>
}}
}}
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
| class2 = anthem
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}
|'''Anthem:''' {{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}
}}{{#if:{{{anthems|}}}
|'''Anthems:''' {{{anthems}}}
}}{{#if:{{{royal_anthem|}}}
|
<div class="ib-country-anthem">'''[[Royal anthem]]:''' {{{royal_anthem}}}</div>
}}{{#if:{{{flag_anthem|}}}
|
<div class="ib-country-anthem">'''[[Flag anthem]]:''' {{{flag_anthem}}}</div>
}}{{#if:{{{national_march|}}}
|
<div class="ib-country-anthem">'''National march:''' {{{national_march}}}</div>
}}{{#if:{{{territorial_anthem|}}}
|
<div class="ib-country-anthem">'''Territorial anthem:''' {{{territorial_anthem}}}</div>
}}{{#if:{{{regional_anthem|}}}
|
<div class="ib-country-anthem">'''Regional anthem:''' {{{regional_anthem}}}</div>
}}{{#if:{{{state_anthem|}}}
|
<div class="ib-country-anthem">'''State anthem:''' {{{state_anthem}}}</div>
}}{{#if:{{{march|}}}
|
<div class="ib-country-anthem">'''March:''' {{{march}}}</div>
}}
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}
|{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}
| '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!--
-->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}
}}
| data4 = {{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }}
| data5 = {{#if:{{{image_map2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }}
| label6 = Status
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}
| label7 = Location
| data7 = {{{loctext|}}}
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!------------------------------------------
capital is largest_city/_settlement:
-------------------------------------------
--><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div>
}}
| data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}
| label9 = Capital-in-exile
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative center }}
| data10 = {{#switch:{{{admin_center|}}}
|capital | =
|[[{{{capital|}}}]] =
|{{{capital|}}} =
|#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}
| label11 = Largest {{{largest_settlement_type|city}}}
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!-- nothing already appears above -->
| {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}
}}
| rowclass12 = mergedtoprow
| label12 = Official languages
| data12 = {{{official_languages|}}}
| rowclass13 = mergedrow
| label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}} languages</span>
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}
| rowclass14 = mergedrow
| label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national languages</span>
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}
| rowclass15 = mergedrow
| label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional languages</span>
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}
| label16 = Common languages
| data16 = {{{common_languages|}}}
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes
|{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}
|{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}
| label17 ={{#ifeq:{{{languages_sub|}}}|yes
|<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other languages }}</div>
|{{if empty| {{{languages_type|}}} | Other languages }}
}}
| data17 = {{{languages|}}}
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes
|<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other languages }}</div>
|{{if empty|{{{languages2_type|}}} | Other languages }}
}}
| data18 = {{{languages2|}}}
| label19 = [[Ethnic group|Ethnic groups]] <!--
-->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}}
| data19 = {{{ethnic_groups|}}}
| label20 = Religion <!--
-->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}}
| data20 = {{{religion|}}}
| label21 = [[Demonym|Demonym(s)]]
| data21 = {{#if:{{{demonym|}}}
|{{#ifexist:{{{demonym}}} people
| [[{{{demonym}}} people|{{{demonym}}}]]
| {{{demonym}}}
}}
}}
| label22 = Type
| data22 = {{{org_type|}}}
| label23 = {{if empty|{{{membership_type|}}} | Membership }}
| data23 = {{{membership|}}}
| label24 = {{#if:{{{government_type|}}}
| {{#if:{{{politics_link|}}}
| [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!--
-->}}<!--
-->}}<!--
-->}}
| data24 = {{{government_type|}}}
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}
| {{#if:{{{name|}}}{{{membership|}}}
| <!--template being used for geopolitical org:-->Leaders
| <!--template being used for country/territory: -->Government
}}
}} }}
| rowclass26 = mergedrow
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}
| rowclass27 = mergedrow
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}
| data27 = {{#if:{{{title_leader|}}}| }}
| rowclass28 = mergedrow
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}
| rowclass29 = mergedrow
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}
| data29 = {{#if:{{{title_representative|}}}| }}
| rowclass30 = mergedrow
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}
| rowclass31 = mergedrow
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}
| data31 = {{#if:{{{title_deputy|}}}| }}
| rowclass32 = mergedrow
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}
| label40 = Legislature
| data40 = {{{legislature|}}}
| rowclass41 = mergedrow
| label41 = <div class="ib-country-fake-li">• {{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div>
| data41 = {{{upper_house|{{{house1|}}}}}}
| rowclass42 = mergedbottomrow
| label42 = <div class="ib-country-fake-li">• {{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div>
| data42 = {{{lower_house|{{{house2|}}}}}}
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}
|{{#if:{{{sovereignty_type|}}}
| {{{sovereignty_type}}}<!--
-->{{#if:{{{sovereignty_note|}}} | <div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}}
| {{#if:{{{established|}}}| | Establishment }}
}} }}
| label44 = Establishment
| data44 = {{#if:{{{sovereignty_type|}}}
|
|{{{established|}}}
}}
| label45 = {{#if:{{{era|}}}|Historical era|History}}
| data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}| }}}}
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }}
| rowclass60 = mergedtoprow
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}
| {{#if:{{{area_link|}}}
| [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!--
-->}}<!--
-->}} }}
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label61 = <div class="ib-country-fake-li">• {{{area_label|Total}}}{{{FR_foot4|}}}</div>
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}
|{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}
|{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_ha|}}}{{{area_acre|}}}
|{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}
}}
}}{{{area_footnote|}}}{{#if:{{{area_rank|}}} | ([[List of countries and dependencies by area|{{{area_rank}}}]]) }}
}}
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label62 = <div class="ib-country-fake-li">• Land</div>
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}
|{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}
|{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}
|{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}
}}
}}{{{area_land_footnote|}}}
}}
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label63 = <div class="ib-country-fake-li">• Water</div>
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}
|{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}
|{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}
|{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}
}}
}}{{{area_water_footnote|}}}
}}
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label64 = <div class="ib-country-fake-li">• Water (%)</div>
| data64 = {{{percent_water|}}}
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label65 = <div class="ib-country-fake-li">• {{{area_label2|}}}</div>
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label66 = <div class="ib-country-fake-li">• {{{area_label3|}}}</div>
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}
| rowclass72 = mergedrow
| label72 = <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }}
| rowclass73 = mergedrow
| label73 = <div class="ib-country-fake-li2">• [[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div>
| data73 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}
|{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}
}}
}}
| rowclass89 = mergedbottomrow
| label89 = <div class="ib-country-fake-li2">• [[Cadastre]]{{{FR_foot3|}}}</div>
| data89 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}
| {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}
}}
}}
| rowclass90 = mergedtoprow
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}
|{{#if:{{{population_link|}}}
| {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!--
-->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!--
-->| Population<!--
-->}}<!--
-->}} }}
| rowclass91 = mergedrow
| label91 = <div class="ib-country-fake-li">• {{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div>
| data91 = {{#if:{{{population_estimate|}}}
|{{{population_estimate}}}<!--
-->{{#if:{{{population_estimate_rank|}}} | ([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}
}}
| rowclass92 = mergedrow
| label92= <div class="ib-country-fake-li">• {{{population_label2|}}}</div>
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}
| rowclass93= mergedrow
| label93= <div class="ib-country-fake-li">• {{{population_label3|}}}</div>
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}
| rowclass94= mergedrow
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }}
| rowclass95= mergedrow
| label95= <div class="ib-country-fake-li">• {{#if:{{{population_census_year|}}} |{{{population_census_year}}} census|Census}}</div>
| data95= {{#if:{{{population_census|}}}
|{{{population_census}}}<!--
-->{{#if:{{{population_census_rank|}}} | ([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}
}}
| rowclass96= mergedrow
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1= ({{{FR_total_population_estimate_year}}})}}}}}}
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}}
| rowclass97 = mergedrow
| label97= <div class="ib-country-fake-li">• Total{{{FR_foot|}}}</div>
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}
|{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}| ([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}
}} }}
| rowclass98 = mergedrow
| label98= <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}
| ([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}
}}
| rowclass99 = mergedbottomrow
| label99= <div class="ib-country-fake-li">• Density{{{FR_foot5|}}}</div>
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}
| {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!--
-->{{#if:{{{population_density_rank|}}} | ([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}
}}
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}
| label100 = Membership
| data100= {{{nummembers|}}}
| rowclass101= mergedtoprow
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|([[Purchasing power parity|PPP]])}}
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}
|{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}} }}estimate
}}
| rowclass102= mergedrow
| label102= <div class="ib-country-fake-li">• Total</div>
| data102= {{#if:{{{GDP_PPP|}}}
|{{{GDP_PPP}}}<!--
-->{{#if:{{{GDP_PPP_rank|}}} | ([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}
}}
| rowclass103= mergedbottomrow
| label103= <div class="ib-country-fake-li">• Per capita</div>
| data103= {{#if:{{{GDP_PPP_per_capita|}}}
|{{{GDP_PPP_per_capita}}}<!--
-->{{#if:{{{GDP_PPP_per_capita_rank|}}} | ([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}
}}
| rowclass104= mergedtoprow
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|(nominal)}}
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}
|{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}} }}estimate
}}
| rowclass105= mergedrow
| label105= <div class="ib-country-fake-li">• Total</div>
| data105= {{#if:{{{GDP_nominal|}}}
|{{{GDP_nominal}}}<!--
-->{{#if:{{{GDP_nominal_rank|}}} | ([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}
}}
| rowclass106= mergedbottomrow
| label106= <div class="ib-country-fake-li">• Per capita</div>
| data106= {{#if:{{{GDP_nominal_per_capita|}}}
| {{{GDP_nominal_per_capita}}}<!--
-->{{#if:{{{GDP_nominal_per_capita_rank|}}} | ([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}
}}
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} | {{nobold|1=({{{Gini_year}}})}}}}
| data107= {{#if:{{{Gini|}}}
| {{#switch:{{{Gini_change|}}}
|increase = {{increaseNegative}} <!--
-->|decrease = {{decreasePositive}} <!--
-->|steady = {{steady}} <!--
-->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!--
---------Evaluate and add Gini category:----------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{Gini}}}>100 <!--
-->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=46 <!--
-->| {{color|darkred|high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=30 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{Gini}}}>=0 <!--
-->| {{color|forestgreen|low}}<!--
-->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
-----------Add Gini_rank (if supplied):----------
-->{{#if:{{{Gini_rank|}}}
| · [[List of countries by income equality|{{{Gini_rank}}}]]<!--
-->}}<!--
-->}}
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} | {{nobold|1=({{{HDI_year}}})}}}}
| data108= {{#if:{{{HDI|}}}
| {{#switch:{{{HDI_change|}}}
|increase = {{increase}} <!--
-->|decrease = {{decrease}} <!--
-->|steady = {{steady}} <!--
-->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!--
---------Evaluate and add HDI category:---------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{HDI}}}>1 <!--
-->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{HDI}}}>0.799 <!--
-->| {{color|darkgreen|very high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.699 <!--
-->| {{color|forestgreen|high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.549 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{HDI}}}>=0.000<!--
-->| {{color|red|low}}<!--
-->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
----------Add HDI_rank (if supplied):-----------
-->{{#if:{{{HDI_rank|}}}
| · [[List of countries by Human Development Index|{{{HDI_rank}}}]]<!--
-->}}<!--
-->}}
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}
| data109= {{#if:{{{currency|}}}
| {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}
}}
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}
| label119= Time zone
| data119= {{#if:{{{utc_offset|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}
|{{{time_zone|}}}
}}
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}
| label120= <div class="ib-country-fake-li">• Summer ([[Daylight saving time|DST]])</div>
| data120= {{#if:{{{utc_offset_DST|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}
|{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}
}}
| rowclass121= mergedbottomrow
| label121= <nowiki />
| data121= {{{DST_note|}}}
| label122 = [[Antipodes]]
| data122= {{{antipodes|}}}
| label123 = Date format
| data123= {{{date_format|}}}
| label125= [[Left- and right-hand traffic|Driving side]]
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}
| label126= {{#if:{{{calling_code|}}}
|{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]
| Calling code
}}
}}
| data126= {{{calling_code|}}}
| label127= [[ISO 3166|ISO 3166 code]]
| data127= {{#switch:{{{iso3166code|}}}
|omit = <!--(do nothing)-->
| = <!--if iso3166code is not supplied:
-->{{#if:{{{common_name|}}}
| {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}
| [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]
}}
}}
|#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]
}}
| label128= [[Country code top-level domain|Internet TLD]]
| data128= {{{cctld|}}}
| data129 = {{#if:{{{official_website|}}}
|<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div>
}}
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}
| {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}}
}}
| data134 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}}
}}
| label135 = Today part of
| data135 = {{{today|}}}
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-alpha">
{{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li>
}}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li>
}}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li>
}}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li>
}}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li>
}}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li>
}}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li>
}}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}}
</ol></div>}}
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-num">
{{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li>
}}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li>
}}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li>
}}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li>
}}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li>
}}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li>
}}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li>
}}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}}
</ol></div>}}
| data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}}
| belowclass = mergedtoprow noprint
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other|
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]
}}}}<!--
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.
-->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}
}}<!--End of former country tracking cats--><noinclude>
{{documentation}}
</noinclude>
be47d674190a41bd16abfd73bfb38394b5c704f2
Template:Infobox year in country
10
1138
2464
2022-05-26T16:36:36Z
w>Peter Ormond
0
wikitext
text/x-wiki
{{infobox
|bodystyle= width:240px;
|above= {{#if:{{{country|}}}|<span class="dtstart">{{{year}}}</span> in <span class="location">{{{country}}}</span>|{{PAGENAMEBASE}} }}
|aboveclass = summary
|label1 = [[Monarch]]
|data1 = {{{monarch|}}}
|label2 = [[President (government title)|President]]
|data2 = {{{president|}}}
|label3 = [[Governor-General|Governor-General]]
|data3 = {{{governor-general|}}}
|label4 = [[Prime minister]]
|data4 = {{{pm|}}}
|label5 = Population
|data5 = {{{population|}}}
|label6 = [[Australian of the Year]]
|data6 = {{{australian|}}}
|label7 =[[Election]]s
|data7 = {{{elections|}}}
}}<noinclude>
{{documentation}}
</noinclude>
bda07ae65dbe07b8a2ae0e226a4c0674d73604f8
Template:Social democracy sidebar/doc
10
855
1892
2022-06-01T01:34:17Z
wikipedia>Paine Ellsworth
0
create /doc page for protected template
wikitext
text/x-wiki
{{Documentation subpage}}
{{Social democracy sidebar}}
{{caution|{{tl|Social democracy}} exists as an alternate version of this template. Any content changes made here should be made there as well.}}
{{collapsible lists option|listnames={{hlist|history|concepts|variants|people|orgs|by region|related}}}}
* For Commonwealth spelling ("organisations" as opposed to "organizations") use <code>sp=uk</code>.
<includeonly>{{Sandbox other||
<!-- Categories below this line -->
[[Category:Socialism sidebar templates]]
}}</includeonly>
b2065e61a30b381a4ecc5c86c22ec9654a3d0250
Template:Module rating
10
482
1059
2022-06-03T15:10:23Z
wikipedia>The Anome
0
Reverted edits by [[Special:Contribs/Dawn PScLim|Dawn PScLim]] ([[User talk:Dawn PScLim|talk]]) to last version by Alexis Jazz
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc
Module:Portal-inline
828
846
1874
2022-06-05T03:25:23Z
wikipedia>Hike395
0
automatically call [[Module:Portal/sandbox]] under test + new interface to getImageName
Scribunto
text/plain
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local portalModule = require('Module:Portal'..sandbox)
local getImageName = portalModule._image
local checkPortals = portalModule._checkPortals
local processPortalArgs = portalModule._processPortalArgs
local p = {}
-- Function to format error message and tracking category
-- Arguments:
-- errMsg: string, or nil/false if no error
-- trackingCat: string for tracking category (or empty string)
local function formatError(errMsg, trackingCat)
local result = trackingCat or ''
if errMsg then
local errTag = mw.html.create('span')
errTag:addClass("error")
errTag:css("font-size",'100%')
errTag:wikitext("Error: "..errMsg)
result = tostring(errTag)..result
end
return result
end
local function image(portal, args)
local size = args.size == "tiny" and "16x16px" or "32x28px"
return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size)
end
local function link(portal, args)
local displayName = ""
if not (args.text == "" or args.text == nil) then
displayName = args.text
elseif args.short then
displayName = portal
else
displayName = portal .. " portal"
end
return string.format('[[Portal:%s|%s]]',portal,displayName)
end
function p._main(portals, args)
mw.logObject(args)
-- Normalize all arguments
if args.redlinks == 'include' then args.redlinks = true end
for key, default in pairs({tracking=true,redlinks=false,short=false}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local trackingCat = ''
local errMsg = nil
-- Check for existing categories, drop if not.
-- Possible generate tracking category & error message if needed
args.minPortals = args.minPortals or 1
args.maxPortals = args.maxPortals or 1
portals, trackingCat, errMsg = checkPortals(portals,args)
-- use more specific tracking cat for inline portal
trackingCat = mw.ustring.gsub(trackingCat,"Portal templates","Portal-inline template")
-- either too many/few portals, or no portals left after filtering, then return
if errMsg or #portals == 0 then
return formatError(errMsg, trackingCat)
end
return image(portals[1],args)..' '..link(portals[1],args)..(trackingCat or '')
end
function p.main(frame)
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._main(portals, args)
end
return p
7e394801df5882169db7a3b64af605c5acded536
Template:T
10
478
1051
2022-06-05T04:09:28Z
Dinoguy1000
20
not that it matters much, but fix comment closing
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Rcat shell|
{{R from template shortcut}}
}}
<!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta -->
bb10dbc83695404528dbc095ea267429142c7f05
Template:Infobox musical artist/hCard class
10
1374
2709
2022-06-06T00:41:07Z
w>Paine Ellsworth
0
per edit request on talk page - include variant "person"
wikitext
text/x-wiki
{{#switch: {{{1|}}}
| person
| solo_singer
| non_vocal_instrumentalist
| non_performing_personnel = fn
| group_or_band
| cover_band
| classical_ensemble
| temporary = fn org
| {{{1|fn}}}
}}<!-- "fn" for individual people, "fn org" for bands and other groupings) --><noinclude>
{{documentation}}
</noinclude>
ec5e7a594595111e2e301936305a1c1a0d2e1bc4
Template:Country data Cyprus
10
1194
2523
2022-06-08T13:58:32Z
w>Terasail
0
Update file location to stop using redirect. Per [[Special:Diff/1092144696|edit request]]
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Cyprus
| flag alias = Flag of Cyprus.svg
| flag alias-1878 = Flag of the United Kingdom.svg
| flag alias-1881 = Flag of Cyprus (1881–1922).svg
| flag alias-colonial = Blue Ensign of Cyprus (1922).svg
| flag alias-April 1960 = Flag of Cyprus (1960).svg
| flag alias-1960 = Flag of Cyprus (1960–2006).svg
| link alias-army = Cypriot Ground Forces
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
| altlink = {{{altlink|}}}
<noinclude>
| redir1 = CYP
| var1 = 1878
| var2 = 1881
| var3 = colonial
| var4 = April 1960
| var5 = 1960
</noinclude>
}}
7480d14089e4230b22a47579a3da386902cc7bdd
Module:Uses Wikidata
828
594
1336
2022-06-08T17:12:17Z
Legoktm
41
fix capitalization of Wikidata and Wikipedia in query output
Scribunto
text/plain
local p = {}
function p.usesProperty(frame)
local args = frame.getParent(frame).args or nil
if mw.text.trim(args[1] or '') == '' then
args = frame.args
end
local result = '<ul>'
local ii = 1
while true do
local p_num = mw.text.trim(args[ii] or '')
if p_num ~= '' then
local label = mw.wikibase.getLabel(p_num) or "NO LABEL"
result = result .. "<li>[[File:Disc Plain blue dark.svg|middle|4px|link=|alt=]] <b><i>[[d:Property talk:" .. p_num .. "|" .. label .. " (" .. string.upper(p_num) .. ")]]</i></b> (see <span class='plainlinks'>[https://query.wikidata.org/embed.html#SELECT%20%3FWikidata_item_%20%3FWikidata_item_Label%20%3Fvalue%20%3FvalueLabel%20%3FEnglish_Wikipedia_article%20%23Show%20data%20in%20this%20order%0A%7B%0A%09%3FWikidata_item_%20wdt%3A" .. p_num .. "%20%3Fvalue%20.%20%23Collecting%20all%20items%20which%20have%20" .. p_num .. "%20data%2C%20from%20whole%20Wikidata%20item%20pages%0A%09OPTIONAL%20%7B%3FEnglish_Wikipedia_article%20schema%3Aabout%20%3FWikidata_item_%3B%20schema%3AisPartOf%20%3Chttps%3A%2F%2Fen.wikipedia.org%2F%3E%20.%7D%20%23If%20collected%20item%20has%20link%20to%20English%20Wikipedia%2C%20show%20that%0A%09SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%20%7D%20%23Show%20label%20in%20this%20language.%20%22en%22%20is%20English.%20%20%20%0A%7D%0ALIMIT%201000 uses]</span>)</li>"
ii = ii + 1
else break
end
end
result = result.."</ul>"
return result
end
function p.tuProperty(frame)
local parent = frame.getParent(frame)
local result = '<ul>'
local ii = 1
while true do
local p_num = mw.text.trim(parent.args[ii] or '')
if p_num ~= '' then
local label = mw.wikibase.getLabel(p_num) or "NO LABEL"
result = result .. "<li><span style='font-size:90%;line-height:1;'>●</span> <b>[[d:Property:" .. p_num .. "|" .. label .. "]]</b> <span style='font-size:90%;'>([[d:Property talk:" .. string.upper(p_num) .. "|" .. p_num .. "]])</span></li>"
ii = ii + 1
else break
end
end
result = result.."</ul>"
return result
end
return p
8b704fdbc00fb94538c56f18c5c01f1e72963ea9
Module:Labelled list hatnote
828
105
257
2022-06-08T23:33:35Z
wikipedia>Nihiltres
0
Fixed iteration-and-removal bug
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Labelled list --
-- --
-- This module does the core work of creating a hatnote composed of a list --
-- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", --
-- for {{see also}} and similar templates. --
--------------------------------------------------------------------------------
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local yesno --initialize lazily
local p = {}
-- Defaults global to this module
local defaults = {
label = 'See also', --Final fallback for label argument
labelForm = '%s: %s',
prefixes = {'label', 'label ', 'l'},
template = 'Module:Labelled list hatnote'
}
-- Localizable message strings
local msg = {
errorSuffix = '#Errors',
noInputWarning = 'no page names specified',
noOutputWarning =
"'''[[%s]] — no output: none of the target pages exist.'''"
}
-- Helper function that pre-combines display parameters into page arguments.
-- Also compresses sparse arrays, as a desirable side-effect.
function p.preprocessDisplays (args, prefixes)
-- Prefixes specify which parameters, in order, to check for display options
-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'
prefixes = prefixes or defaults.prefixes
local indices = {}
local sparsePages = {}
for k, v in pairs(args) do
if type(k) == 'number' then
indices[#indices + 1] = k
local display
for i = 1, #prefixes do
display = args[prefixes[i] .. k]
if display then break end
end
sparsePages[k] = display and
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
end
end
table.sort(indices)
local pages = {}
for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end
return pages
end
--Helper function to get a page target from a processed page string
--e.g. "Page|Label" → "Page" or "Target" → "Target"
local function getTarget(pagename)
local pipe = string.find(pagename, '|')
return string.sub(pagename, 0, pipe and pipe - 1 or nil)
end
-- Produces a labelled pages-list hatnote.
-- The main frame (template definition) takes 1 or 2 arguments, for a singular
-- and (optionally) plural label respectively:
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}
-- The resulting template takes pagename & label parameters normally.
function p.labelledList (frame)
mArguments = require('Module:Arguments')
yesno = require('Module:Yesno')
local labels = {frame.args[1] or defaults.label}
labels[2] = frame.args[2] or labels[1]
labels[3] = frame.args[3] --no defaulting
labels[4] = frame.args[4] --no defaulting
local template = frame:getParent():getTitle()
local args = mArguments.getArgs(frame, {parentOnly = true})
local pages = p.preprocessDisplays(args)
local options = {
category = yesno(args.category),
extraclasses = frame.args.extraclasses,
ifexists = yesno(frame.args.ifexists),
namespace = frame.args.namespace or args.namespace,
selfref = yesno(frame.args.selfref or args.selfref),
template = template
}
return p._labelledList(pages, labels, options)
end
function p._labelledList (pages, labels, options)
if options.ifexists then
for k = #pages, 1, -1 do --iterate backwards to allow smooth removals
local v = pages[k]
local title = mw.title.new(getTarget(v), namespace)
if (v == '') or title == nil or not title.exists then
table.remove(pages, k)
end
end
end
labels = labels or {}
label = (#pages == 1 and labels[1] or labels[2]) or defaults.label
for k, v in pairs(pages) do
if mHatnote.findNamespaceId(v) ~= 0 then
label =
(
#pages == 1 and
(labels[3] or labels[1] or defaults.label) or
(labels[4] or labels[2] or defaults.label)
) or defaults.label
end
end
if #pages == 0 then
if options.ifexists then
mw.addWarning(
string.format(
msg.noOutputWarning, options.template or defaults.template
)
)
return ''
else
return mHatnote.makeWikitextError(
msg.noInputWarning,
(options.template or defaults.template) .. msg.errorSuffix,
options.category
)
end
end
local text = string.format(
options.labelForm or defaults.labelForm,
label,
mHatlist.andList(pages, true)
)
local hnOptions = {
extraclasses = options.extraclasses,
selfref = options.selfref
}
return mHatnote._hatnote(text, hnOptions)
end
return p
b7a8ba27cf6195e6427701b94e8d2acad3c40a21
Template:Reflist
10
564
1274
2022-06-11T17:42:16Z
wikipedia>Izno
0
correct my error per [[Template talk:Reflist#liststyle and group]]
wikitext
text/x-wiki
<templatestyles src="Reflist/styles.css" /><div class="reflist <!--
-->{{#if:{{{1|}}}{{{colwidth|}}}|reflist-columns references-column-width}} <!--
-->{{#switch:{{{liststyle|{{{group|}}}}}}|upper-alpha|upper-roman|lower-alpha|lower-greek|lower-roman=reflist-{{{liststyle|{{{group}}}}}}}} <!--
-->{{#if:{{{1|}}}|{{#iferror:{{#ifexpr: {{{1|1}}} > 1 }}||{{#switch:{{{1|}}}|1=|2=reflist-columns-2|#default=reflist-columns-3}} }}}}" <!-- end class
-->{{#if: {{{1|}}}<!-- start style -->
| {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} |style="column-width: {{{1}}};"}}
| {{#if: {{{colwidth|}}}|style="column-width: {{{colwidth}}};"}}
}}>
{{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude>
{{Documentation}}
</noinclude>
8c65cc88272db6c0f5cf2b49f84d3e460e60ee5f
Template:Party color
10
1162
2488
2022-06-11T21:27:11Z
w>El C
0
Changed protection settings for "[[Template:Party color]]": [[WP:High-risk templates|Highly visible template]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Political party|fetch|{{{1|}}}|color|error{{#if:{{{error|}}}||_NULL}}={{{error|}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
feaa4368067274a1d84c963300852bddc39ad130
Template:Clear
10
26
47
2022-06-13T15:31:11Z
Xaosflux
7
Changed protection settings for "[[Template:Clear]]": [[WP:High-risk templates|Highly visible template]]: 3MM+ uses ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<div style="clear:{{{1|both}}};"></div><noinclude>
{{documentation}}
</noinclude>
38bab3e3d7fbd3d6800d46556e60bc6bac494d72
Module:Uses TemplateStyles/config
828
489
1083
2022-06-16T15:10:06Z
Pppery
6
Matching reality rather than 2018 me's wishful thinking
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the
-- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css
-- Set to nil to disable sandbox links.
cfg['sandbox_title'] = 'sandbox'
-- Error category: this category is added if the module call contains errors
-- (e.g. no stylesheet listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Uses TemplateStyles templates with errors'
-- Default category: this category is added if no custom category is specified
-- in module/template call. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Templates using TemplateStyles'
-- Protection conflict category: this category is added if the protection level
-- of any stylesheet is lower than the protection level of the template. A category name
-- without namespace, or nil to disable categorization (not recommended).
cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level'
-- Hierarchy of protection levels, used to determine whether one protection level is lower
-- than another and thus should populate protection_conflict_category. No protection is treated as zero
cfg['protection_hierarchy'] = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
-- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil
-- to disable padlock check.
cfg['padlock_pattern'] = '{{pp-'
-- Missing padlock category: this category is added if a protected stylesheet
-- doesn’t contain any padlock template (specified by the above Lua pattern).
-- A category name without namespace (no nil allowed) if the pattern is not nil,
-- unused (and thus may be nil) otherwise.
cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks'
return cfg -- Don’t touch this line.
58e7a37c44f6ea3f6b8af54a559d696cc7256493
Module:Uses TemplateStyles
828
488
1081
2022-06-16T15:13:38Z
Pppery
6
Matching reality rather than 2018 me's wishful thinking
Scribunto
text/plain
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')
local p = {}
local function format(msg, ...)
return TNT.format('I18n/Uses TemplateStyles', msg, ...)
end
local function getConfig()
return mw.loadData('Module:Uses TemplateStyles/config')
end
local function renderBox(tStyles)
local boxArgs = {
type = 'notice',
small = true,
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
}
if #tStyles < 1 then
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
else
local cfg = getConfig()
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
local link = string.format('[[:%s]]', ts)
local sandboxLink = nil
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
end
end
tStylesLinks[i] = sandboxLink or link
end
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = format(
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
'\n' .. tStylesList
end
return mMessageBox.main('mbox', boxArgs)
end
local function renderTrackingCategories(args, tStyles, titleObj)
if yesno(args.nocat) then
return ''
end
local cfg = getConfig()
local cats = {}
-- Error category
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
end
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
if (titleObj.namespace == 10 or titleObj.namespace == 828)
and not cfg['subpage_blacklist'][titleObj.subpageText]
then
local category = args.category or cfg['default_category']
if category then
cats[#cats + 1] = category
end
if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
local addedLevelCat = false
local addedPadlockCat = false
for i, ts in ipairs(tStyles) do
local tsTitleObj = mw.title.new(ts)
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
local content = tsTitleObj:getContent()
if not content:find(cfg['padlock_pattern']) then
cats[#cats + 1] = cfg['missing_padlock_category']
addedPadlockCat = true
end
end
if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
currentProt = cfg['protection_hierarchy'][currentProt] or 0
tsProt = cfg['protection_hierarchy'][tsProt] or 0
if tsProt < currentProt then
addedLevelCat = true
cats[#cats + 1] = cfg['protection_conflict_category']
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
function p._main(args, cfg)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local trackingCategories = renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
71ca57c37849f38e3c5ee30061bdae730963e48e
Template:Portal templates navbox
10
877
1944
2022-06-17T05:03:25Z
wikipedia>Hike395
0
rm deprecated template
wikitext
text/x-wiki
{{Navbox
| name = Portal templates navbox
| title = [[Wikipedia:Portal|Portal]] templates
| listclass = hlist
| state = {{{state|}}}
| image = [[File:Portal.svg|50px]]
| above = '''[[Wikipedia:WikiProject Portals/Components|Visual overview of template usage]]'''
| group1 = Layout and formatting
| list1 =
* {{tl|Box portal skeleton}}
* {{tl|Box-header}}
** [[Template:Box-header#Box-header_color_palettes|color palettes]]
** [[Template:Box-header-plain|plain]]
** [[Template:Box-header-round|round]]
** [[Template:Box-header-square|square]]
** [[Template:Box-header-watch|watch]]
*{{tl|Box-header colour}}<sup>1</sup>
*{{tl|Box-footer}}
*{{tl|Flex columns}}
*{{tl|Plain navboxes}}
| group2 = Content transclusion
| list2 =
* {{tl|Transclude lead excerpt}}<sup>2</sup>
* {{tl|Transclude linked excerpt}}<sup>2</sup>
* {{tl|Transclude list item excerpt}}<sup>2</sup>
* {{tl|Transclude random excerpt}}<sup>2</sup>
* {{tl|Transclude selected excerpt}}<sup>2</sup>
* {{tl|Excerpt}}
* {{tl|Transclude DYK}}<sup>9</sup>
* {{tl|Transclude selected current events}}<sup>3</sup>
* {{tl|Transclude selected recent additions}}<sup>4</sup>
| group3 = Content slideshows
| list3 =
* {{tl|Random slideshow}}<sup>5</sup>
* {{tl|Transclude files as random slideshow}}<sup>5</sup>
* {{tl|Transclude excerpts as random slideshow}}<sup>6</sup>
* {{tl|Transclude linked excerpts as random slideshow}}<sup>6</sup>
* {{tl|Transclude list item excerpts as random slideshow}}<sup>6</sup>
| group4 = Content randomisation
| list4 =
* {{tl|Random portal component}}<sup>7</sup>
* {{tl|Random quotation}}
* {{tl|Random subpage}}
| group5 = General
| list5 =
* {{tl|Portals}}
* {{tl|Portals browsebar}}
* {{tl|Portal description}}
* {{tl|Portal information sidebar}}
* {{tl|Portal navbar no header2}}
* {{tl|Purge link portals}}
* {{tl|Wikimedia for portals}}
| group6 = Linking templates
| list6 =
* {{tl|Portal}}
* {{tl|Portal bar}}
* {{tl|Portal-inline}}<sup>11</sup>
* {{tl|Pbox}}
* {{tl|Related portals2}}
| group7 = Talk pages / Maintenance
| list7 =
* {{tl|Portal talk}}
* {{tl|Portal maintenance status}}<sup>8</sup>
* {{tl|Portal suggestions}}
* {{tl|Portal toolbox}}
* {{tl|WikiProject Portals}}<sup>8</sup>
| group8 = Images
| list8=
* {{tl|Portal dynamic image}}
* {{tl|Portal image banner}}<sup>10</sup>
* {{tl|Portal pictures}}<sup>12</sup>
* {{tl|Portal POTD}}
| group9 = Modules
| list9 =
* <sup>1</sup> [[Module:Box-header]]
* <sup>2</sup> [[Module:Excerpt/portals]]
* <sup>3</sup> [[Module:Selected current events]]
* <sup>4</sup> [[Module:Selected recent additions]]
* <sup>5</sup> [[Module:Random slideshow]]
* <sup>6</sup> [[Module:Excerpt slideshow]]
* <sup>7</sup> [[Module:Random portal component]]
* <sup>8</sup> [[Module:Portal maintenance status]]
* <sup>9</sup> [[Module:Transclude DYK]]
* <sup>10</sup> [[Module:Portal image banner]]
* <sup>11</sup> [[Module:Portal-inline]]
* <sup>12</sup> [[Module:Portal pictures]]
| group10 = Usage
| list10 =
* [[Wikipedia:Portal]]
* [[Wikipedia:WikiProject Portals]]
| below = ''For more information, see: {{cl|Template-Class Portal pages}} and {{cl|Wikipedia Portal templates}}''
}}<noinclude>
{{documentation|content={{Collapsible option}}
[[Category:Wikipedia Portal templates| ]]
[[Category:Documentation see also templates]]
}}</noinclude>
ce81e0e88e4b3ebef2ae1365a5dd97095f35e9f9
Template:Script/styles.css
10
1589
2924
2022-06-25T03:46:19Z
w>Dpleibovitz
0
protection icon
sanitized-css
text/css
/* {{pp|small=yes}} */
.script-Cprt {
font-size: 1.25em;
font-family: 'Segoe UI Historic', 'Noto Sans Cypriot', Code2001; /* SMP, rarely supported, state font explicitly */
}
.script-Hano {
font-size: 125%;
font-family: 'Noto Sans Hanunoo', FreeSerif, Quivira;
}
.script-Latf,
.script-de-Latf {
font-size: 1.25em;
font-family: 'Breitkopf Fraktur', UnifrakturCook, UniFrakturMaguntia, MarsFraktur, 'MarsFraktur OT', KochFraktur, 'KochFraktur OT', OffenbacherSchwabOT, 'LOB.AlteSchwabacher', 'LOV.AlteSchwabacher', 'LOB.AtlantisFraktur', 'LOV.AtlantisFraktur', 'LOB.BreitkopfFraktur', 'LOV.BreitkopfFraktur', 'LOB.FetteFraktur', 'LOV.FetteFraktur', 'LOB.Fraktur3', 'LOV.Fraktur3', 'LOB.RochFraktur', 'LOV.RochFraktur', 'LOB.PostFraktur', 'LOV.PostFraktur', 'LOB.RuelhscheFraktur', 'LOV.RuelhscheFraktur', 'LOB.RungholtFraktur', 'LOV.RungholtFraktur', 'LOB.TheuerbankFraktur', 'LOV.TheuerbankFraktur', 'LOB.VinetaFraktur', 'LOV.VinetaFraktur', 'LOB.WalbaumFraktur', 'LOV.WalbaumFraktur', 'LOB.WeberMainzerFraktur', 'LOV.WeberMainzerFraktur', 'LOB.WieynckFraktur', 'LOV.WieynckFraktur', 'LOB.ZentenarFraktur', 'LOV.ZentenarFraktur';
}
.script-en-Latf{
font-size: 1.25em;
font-family: Cankama, 'Old English Text MT', 'Textura Libera', 'Textura Libera Tenuis', London;
}
.script-it-Latf {
font-size: 1.25em;
font-family: 'Rotunda Pommerania', Rotunda, 'Typographer Rotunda';
}
.script-Lina {
font-size: 1.25em;
font-family: 'Noto Sans Linear A';
}
.script-Linb {
font-size: 1.25em;
font-family: 'Noto Sans Linear B';
}
.script-Ugar {
font-size: 1.25em;
font-family: 'Segoe UI Historic', 'Noto Sans Ugaritic', Aegean;
}
.script-Xpeo {
font-size: 1.25em;
font-family: 'Segoe UI Historic', 'Noto Sans Old Persian', Artaxerxes, Xerxes, Aegean; /* Use Xerxes for Old Persian */
}
fe0852f472ffbe2b3c3f5faa21f2f3ae633999cc
Template:Country data Czech Republic
10
1211
2540
2022-07-03T18:55:09Z
w>Paine Ellsworth
0
per edit request on talk page - include flag variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Czech Republic
| flag alias = Flag of the Czech Republic.svg
| flag alias-1990 = Flag of Bohemia.svg
| flag alias-air force = Flag of the Czech Air Force.svg
| link alias-air force = Czech Air Force
| flag alias-army = Flag of the Czech Land Force.svg
| link alias-army = Czech Land Forces
| size = {{{size|}}}
| name = {{{name|}}}
| variant = {{{variant|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
<noinclude>
| var1 = 1990
| redir1 = CZE
| redir2 = Czechia
| related1 = Czechoslovakia
| related2 = Bohemia
| related3 = Slovakia
</noinclude>
}}
6c23f290bd62faa6f881f7891d1142783e26ee21
Template:Country data Slovakia
10
1213
2542
2022-07-03T19:06:55Z
w>Paine Ellsworth
0
per edit request on talk page - include flag variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Slovakia
| flag alias = Flag of Slovakia.svg
| flag alias-1939 = Flag of Slovakia (1939–1945).svg
| flag alias-1990 = Flag of Slovakia (1939–1945).svg
| link alias-army = Ground Forces of the Slovak Republic{{!}}Slovak Ground Forces
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1939
| var2 = 1990
| redir1 = SVK
| related1 = Czechoslovakia
</noinclude>
}}
e7b28706d1a4e6fc783c1d519d45426534ecb325
Template:Auto short description
10
1266
2600
2022-07-04T08:57:44Z
w>Sammi Brie
0
grammar fix
wikitext
text/x-wiki
{{Ombox
| type = notice
| text = This template {{#if:{{{sometimes|}}}|sometimes{{sp}}}}adds an automatically generated '''[[Wikipedia:Short description|short description]]'''{{#if:{{{category|}}}|{{sp}}({{{category}}})|}}{{#if:{{{conditions|}}}|{{space}}{{{conditions}}}}}. If the automatic short description is not optimal, replace it by adding {{tl|Short description}} at the top of the article.
}}<includeonly>{{Subpage other|<!-- do not categorise -->|[[Category:Templates that generate short descriptions{{#if:{{{category|}}}|{{sp}}for {{{category}}}|}}]]}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
4ef114404749d204ef6574916944eb2d8478640e
Template:Country data Spain
10
1189
2518
2022-07-04T17:08:31Z
w>Skjoldbro
0
updated air force
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Spain
| flag alias = Flag of Spain.svg
| flag alias-1506 = Flag of Cross of Burgundy.svg
| flag alias-1701 = Bandera de España 1701-1748.svg
| flag alias-1748 = Bandera de España 1748-1785.svg
| flag alias-1760 = Bandera de España 1760-1785.svg
| flag alias-1785 = Flag of Spain (1785–1873, 1875–1931).svg
| flag alias-1873 = Flag of the First Spanish Republic.svg
| flag alias-1874 = Flag of Spain (1785–1873, 1875–1931).svg
| flag alias-1931 = Flag of Spain (1931–1939).svg
| flag alias-civil-1931 = Flag of the Second Spanish Republic (plain).svg
| flag alias-1936 = Bandera del bando nacional 1936-1938.svg
| flag alias-1938 = Flag of Spain (1938–1945).svg
| flag alias-1945 = Flag of Spain (1945–1977).svg
| flag alias-1977 = Flag of Spain (1977–1981).svg
| flag alias-civil = Flag of Spain (Civil).svg
| flag alias-civil-1785 = BandMercante1785.svg
| flag alias-navy = Flag of Spain.svg
| link alias-navy = Spanish Navy
| flag alias-marines = Flag of Spain.svg
| link alias-marines = Spanish Marine Infantry
| flag alias-army = Flag of Spain.svg
| link alias-army = Spanish Army
| flag alias-naval = Naval Jack of Spain.svg
| link alias-naval = Spanish Navy
| flag alias-air force = Flag of Spain.svg
| link alias-air force = Spanish Air and Space Force
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1506
| var2 = 1701
| var3 = 1748
| var4 = 1760
| var5 = 1785
| var6 = 1873
| var7 = 1874
| var8 = 1931
| var9 = civil-1931
| var10 = 1936
| var11 = 1938
| var12 = 1945
| var13 = 1977
| var14 = civil
| var15 = civil-1785
| redir1 = ESP
| redir2 = SPA
| related1 = Spanish Empire
| related2 = Kingdom of Spain
| related3 = Spanish Republic
| related4 = Spanish State
| related5 = Francoist Spain
</noinclude>
}}
a27e5d2bc6539467e8a94c500b05f5caf7b87dff
Category:Infobox templates
14
87
221
2022-07-04T17:35:52Z
MrJaroslavik
18
[[Category:Templates]]
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Template:Flowlist
10
618
1394
2022-07-06T18:59:15Z
5.43.73.144
0
Undid revision 1096805456 by [[Special:Contributions/5.43.73.144|5.43.73.144]] ([[User talk:5.43.73.144|talk]])
wikitext
text/x-wiki
<templatestyles src="Flowlist/styles.css" /><div class="flowlist {{{class|}}}" {{#if: {{{style|}}}|style="{{{style}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
8fab8f03d7353b9e7ebe1b375ebbfc6801f60bdb
Template:Round
10
1444
2779
2022-07-09T01:53:46Z
w>Neveselbert
0
safesubst
wikitext
text/x-wiki
<includeonly>{{safesubst<noinclude/>:#iferror:{{#expr:{{{2|0}}}}} |
{{main other|[[Category:Pages with bad rounding precision]]}}{{hid|Bad rounding here}}<!--
-->{{safesubst<noinclude/>:#invoke:Math|precision_format| {{{1}}} | 1-{{order of magnitude|{{{1}}}}} }}|
{{safesubst<noinclude/>:#invoke:Math|precision_format| {{{1}}} | {{{2|0}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9c2874586b74824fe1beb6830b56eabe7ad936ce
Template:Dmbox/styles.css
10
1579
2914
2022-07-09T23:19:50Z
w>Izno
0
move type here
sanitized-css
text/css
/* {{pp-template}} */
.dmbox {
display: flex;
align-items: center;
clear: both;
margin: 0.9em 1em;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
padding: 0.25em 0.35em;
font-style: italic;
}
.dmbox > * {
flex-shrink: 0;
margin: 0 0.25em;
}
.dmbox-body {
flex-grow: 1;
flex-shrink: 1;
padding: 0.1em 0;
}
.dmbox-invalid-type {
text-align: center;
}
fc3d6254fb13a6335a9b149f480301e676893c5f
Template:Dmbox
10
1578
2913
2022-07-09T23:19:54Z
w>Izno
0
remove invitations for custom styles that are coincidentally totally unused in template space, move invalid type to class
wikitext
text/x-wiki
<templatestyles src="Dmbox/styles.css" />
<div role="note" id="
{{#switch:{{{type|}}}
| setindex = setindexbox
| disambig
| #default = disambigbox
}}" class="metadata plainlinks dmbox
{{#switch:{{{type|}}}
| setindex = dmbox-setindex
| disambig
| #default = dmbox-disambig
}} {{{class|}}}">{{#ifeq:{{{image|}}}|none|
| {{#if:{{{image|}}}
| <div>{{{image}}}</div>
| [[File:{{#switch:{{{type|}}}
| setindex = DAB list gray.svg
| disambig <!-- disambig = default -->
| #default = Disambig gray.svg
}}|30px|alt=Disambiguation icon]]
}}
}}<div class="dmbox-body">{{{text}}}</div>{{#if:{{{imageright|}}}|<div>{{{imageright}}}</div>}}
</div><!--
Detect and report usage with faulty "type" parameter:
-->{{#switch:{{{type|}}}
| <!-- No type fed, is also valid input -->
| disambig
| setindex = <!-- Do nothing, valid "type" -->
| #default = <div class="dmbox-invalid-type">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace -->
}}<!--
Magic word for disambiguation pages:
-->{{#if:{{{nocat|}}}||{{#ifeq:{{{type|}}}|disambig|__DISAMBIG__|}}}}<!--
Categorization:
-->{{#switch:{{{type|}}}
| setindex =
{{category handler
| main = [[Category:All set index articles]]
| nocat = {{{nocat|}}} <!--So "nocat=true" works-->
| page = {{{page|}}} <!--For testing-->
}}
| disambig <!-- disambig = default -->
| #default =
{{category handler
| main = [[Category:All article disambiguation pages]][[Category:All disambiguation pages]]
| template = <!-- Don't categorize on template pages. -->
| other = [[Category:All disambiguation pages]]
| nocat = {{{nocat|}}} <!--So "nocat=true" works-->
| page = {{{page|}}} <!--For testing-->
}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
4c9c79a614028b3fff2ae17bc227ba6144d926d6
Module:Message box/imbox.css
828
1319
2654
2022-07-09T23:27:41Z
w>Izno
0
move margin 10% to media query
sanitized-css
text/css
/* {{pp|small=y}} */
.imbox {
margin: 4px 0;
border-collapse: collapse;
border: 3px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
/* For imboxes inside imbox-text cells. */
.imbox .mbox-text .imbox {
margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */
/* TODO: Still needed? */
display: block; /* Fix for webkit to force 100% width. */
}
.imbox-speedy {
border: 3px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.imbox-delete {
border: 3px solid #b32424; /* Red */
}
.imbox-content {
border: 3px solid #f28500; /* Orange */
}
.imbox-style {
border: 3px solid #fc3; /* Yellow */
}
.imbox-move {
border: 3px solid #9932cc; /* Purple */
}
.imbox-protection {
border: 3px solid #a2a9b1; /* Gray-gold */
}
.imbox-license {
border: 3px solid #88a; /* Dark gray */
background-color: #f7f8ff; /* Light gray */
}
.imbox-featured {
border: 3px solid #cba135; /* Brown-gold */
}
.imbox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.imbox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.imbox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.imbox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.imbox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.imbox {
margin: 4px 10%;
}
}
1e82a3c342695a9b4fbdcc4e5e0930d4845a23d4
Template:Generic template demo
10
201
456
2022-07-10T21:03:19Z
wikipedia>Aidan9382
0
+{{R semiprotected}}
wikitext
text/x-wiki
#REDIRECT [[Template:Parameter names example]]
{{R semiprotected}}
[[Category:Wikipedia utility templates]]
[[Category:Template namespace templates]]
[[Category:Documentation assistance templates]]
22f645541f749cfd0eeffdee734b51b284103400
Module:Message box/tmbox.css
828
1329
2664
2022-07-11T18:36:42Z
w>Izno
0
remove min-widths on tmbox that seem exclusive to tmbox, move tmbox-small to min-width 720px
sanitized-css
text/css
/* {{pp|small=y}} */
.tmbox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.tmbox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
.tmbox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.tmbox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.tmbox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.tmbox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.tmbox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.tmbox {
margin: 4px 10%;
}
.tmbox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
eaa4546995ebb3a8d20394cad8af74ea477bdb44
Module:Message box/ombox.css
828
73
141
2022-07-11T18:40:17Z
wikipedia>Izno
0
and move mbox-small to 720px here as well
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Module:Location map/data/doc
828
1636
2987
2022-07-12T02:55:19Z
wikipedia>Paine Ellsworth
0
add [[WP:RCAT|rcat template]]
wikitext
text/x-wiki
#REDIRECT [[Template:Location map data documentation]]
{{Redirect category shell|
{{R from move}}
{{R from documentation page}}
}}
e51e2661650b2ce62f1b5840282f71fc1c8e86d5
Module:Message box/ambox.css
828
1017
2230
2022-07-12T15:25:07Z
wikipedia>Izno
0
hack around mf being opinionated
sanitized-css
text/css
/* {{pp|small=y}} */
.ambox {
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
/* Single border between stacked boxes. Take into account base templatestyles,
* user styles, and Template:Dated maintenance category.
* remove link selector when T200206 is fixed
*/
.ambox + link + .ambox,
.ambox + link + style + .ambox,
.ambox + link + link + .ambox,
/* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */
.ambox + .mw-empty-elt + link + .ambox,
.ambox + .mw-empty-elt + link + style + .ambox,
.ambox + .mw-empty-elt + link + link + .ambox {
margin-top: -1px;
}
/* For the "small=left" option. */
/* must override .ambox + .ambox styles above */
html body.mediawiki .ambox.mbox-small-left {
/* @noflip */
margin: 4px 1em 4px 0;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
.ambox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.5em;
width: 100%;
}
.ambox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.5em;
text-align: center;
}
.ambox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.5em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ambox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ambox .mbox-image-div {
width: 52px;
}
/* Hack around MobileFrontend being opinionated */
html.client-js body.skin-minerva .mbox-text-span {
margin-left: 23px !important;
}
@media (min-width: 720px) {
.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
}
}
29898fdc5160b39a8f580c76efe77afa1f6f58a4
Module:Message box/cmbox.css
828
1332
2667
2022-07-15T21:26:29Z
w>Izno
0
remove the special speedy margins
sanitized-css
text/css
/* {{pp|small=y}} */
.cmbox {
margin: 3px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1;
background-color: #dfe8ff; /* Default "notice" blue */
box-sizing: border-box;
}
.cmbox-speedy {
border: 4px solid #b32424; /* Red */
background-color: #ffdbdb; /* Pink */
}
.cmbox-delete {
background-color: #ffdbdb; /* Pink */
}
.cmbox-content {
background-color: #ffe7ce; /* Orange */
}
.cmbox-style {
background-color: #fff9db; /* Yellow */
}
.cmbox-move {
background-color: #e4d8ff; /* Purple */
}
.cmbox-protection {
background-color: #efefe1; /* Gray-gold */
}
.cmbox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.cmbox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.cmbox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.cmbox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.cmbox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.cmbox {
margin: 3px 10%;
}
}
95109477b86803acfea977ae0bce2319e72f170d
Template:Infobox military person
10
1140
2466
2022-07-20T12:03:40Z
w>S.A. Julio
0
allow for optional larger embedded header to match output of similar embedded infoboxes
wikitext
text/x-wiki
{{Infobox
| child = {{lc:{{{embed}}}}}
| bodyclass = vcard
| bodystyle = {{WPMILHIST Infobox style|{{#switch:{{{width_style|}}}|narrow|person|auto=main_box_raw_auto_width|wide|military|#default=main_box_raw}}}}
| subheaderstyle = font-weight:bold;
| subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes|{{if empty|{{{embed_title|}}}|{{#ifeq:{{{embed_title_large|}}}|yes|<div style="text-align: center; font-size: 125%; line-height: 1.2em; font-weight: bold;">Military career</div>|Military career}}}}}}
| decat = yes <!-- remove from template:infobox tracking categories -->
| above = {{br separated entries
|1={{#if:{{{honorific prefix|{{{honorific_prefix|}}}}}}|<div class="honorific-prefix" style="font-size: 77%; font-weight: normal;display:inline;">{{{honorific prefix|{{{honorific_prefix|}}}}}}</div>}}
|2={{#if:{{{name|<includeonly>{{PAGENAME}}</includeonly>}}}|<div style="display:inline" class="fn">{{{name|{{PAGENAMEBASE}}}}}</div>}}
|3={{#if:{{{honorific suffix|{{{honorific_suffix|}}}}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal;display:inline;">{{{honorific suffix|{{{honorific_suffix|}}}}}}</div>}}
}}
| abovestyle = font-size:125%; {{WPMILHIST Infobox style|header_color}}
| image = {{#if:{{{image|}}}
|{{#ifeq:{{Str left | {{{image|}}} | 1 }}|[|{{main other|[[Category:Infobox military person image param needs updating]]}}}}{{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
|{{#if:{{{medal|}}}
|{{#ifeq:{{Str left | {{{medal|}}} | 1 }}|[|{{main other|[[Category:Infobox military person image param needs updating]]}}}}{{#invoke:InfoboxImage|InfoboxImage|image={{{medal|}}}|size={{{medal_size|}}}|sizedefault=frameless|upright={{{medal_upright|0.4}}}|alt={{{medal_alt|}}}|suppressplaceholder=yes}}
}}
}}
| imagestyle = border-bottom: {{WPMILHIST Infobox style|section_border}}; line-height: 1.5em
| caption = {{{caption|}}}
| captionstyle = font-size: 100%
| labelstyle = padding-right: 1em
| label1 = Native name
| data1 = {{#if:{{{native_name|}}}|<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div> }}
| label2 = Birth name
| data2 = {{{birth_name|}}}
| class2 = nickname
| label3 = Other name(s)
| data3 = {{{other_name|}}}
| class3 = nickname
| label4 = Nickname(s)
| data4 = {{{nickname|}}}
| class4 = nickname
| label5 = Born
| data5 = {{br separated entries | {{{birth_date|}}} | {{{birth_place|}}} }}
| label6 = Died
| data6 = {{br separated entries | {{{death_date|}}} | {{{death_place|}}} }}
| label7 = {{#if:{{{placeofburial_label|}}}|{{{placeofburial_label}}}|Buried}}
| data7 = {{#if:{{{placeofburial|}}}{{{placeofburial_coordinates|}}}|<div style="display:inline" class="label">{{{placeofburial|}}}</div> {{#if:{{{placeofburial_coordinates|}}}|{{{placeofburial_coordinates}}}}}}}
| label8 = Allegiance
| data8 = {{{allegiance|}}}
| label9 = {{#if:{{{branch_label|}}}|{{{branch_label}}}|Service/<wbr/>branch}}
| data9 = {{{branch|}}}
| label10 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years of service}}
| data10 = {{{serviceyears|}}}
| label11 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}}
| data11 = {{{rank|}}}
| label12 = [[Service number]]
| data12 = {{{servicenumber|}}}
| label13 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}}
| data13 = {{{unit|}}}
| label14 = Commands held
| data14 = {{{commands|}}}
| label15 = Known for
| data15 = {{{known for|{{{known_for|{{{known|}}}}}}}}}
| label16 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}}
| data16 = {{{battles|}}}
| label17 = Awards
| data17 = {{{awards|}}}
| label18 = Memorials
| data18 = {{{memorials|}}}
| label19 = [[Alma mater]]
| data19 = {{{alma_mater|}}}
| label20 = Spouse(s)
| data20 = {{{spouse|}}}
| label21 = Children
| data21 = {{{children|}}}
| label22 = Relations
| data22 = {{{relations|}}}
| label23 = Other work
| data23 = {{{otherwork|{{{laterwork|}}}}}}
| label24 = Signature
| data24 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=100px|alt={{{signature alt|{{{signature_alt|}}}}}}}}
| label25 = {{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|Website}}
| data25 = {{{website|{{{homepage|{{{URL|}}}}}}}}}
| data26 = {{{module|}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military person with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military person]] with unknown parameter "_VALUE_"|ignoreblank=y| allegiance | alma_mater | alt | awards | battles | battles_label | birth_date | birth_name | birth_place | branch | branch_label | caption | children | commands | death_date | death_place | embed | embed_title | embed_title_large | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | image | image_size | image_upright | known | known_for | laterwork | medal | medal_size | medal_upright | medal_alt | memorials | module | name | native_name | native_name_lang | nickname | other_name | otherwork | placeofburial | placeofburial_coordinates | placeofburial_label | rank | rank_label | relations | servicenumber | serviceyears | serviceyears_label | signature | signature alt | signature_alt | signature_size | spouse | unit | unit_label | URL | website | width_style }}{{#if:{{both|{{{image|}}}|{{{medal|}}}}}|[[Category:Pages using infobox military person with both image and medal]]
}}{{main other|{{#if:{{{embed|}}}|[[Category:Pages using infobox military person with embed|{{#if:{{{embed_title|}}}|Τ}}{{FULLPAGENAME}}]]
}}}}<noinclude>{{documentation}}</noinclude>
40ed85ca511488b15f19cbf9112a5bf680bef61b
Template:Start date and age
10
1460
2795
2022-07-21T11:34:00Z
w>Wbm1058
0
editors are pulling Wikidata to use for this template's parameters and often there is no date in Wikidata. This is considered "normal" so just return a blank when parameters 1, 2 and 3 are missing rather than an error. See [[Template:Start date and age/testcases#Empty/Missing parameters]]
wikitext
text/x-wiki
<includeonly><!--
IMPLEMENTATION OF DATE
-->{{#if: {{{1|}}}<!--
-->|{{#if: {{{2|}}}<!--
-->|{{#if: {{{3|}}}<!--
-->|{{#ifeq:{{yesno|{{{df|no}}}}}|yes<!--
-->|{{#expr:{{{3}}}}} {{MONTHNAME|{{{2}}}}}<!--
-->|{{MONTHNAME|{{{2}}}}} {{#expr:{{{3}}}}},<!--
-->}} {{{1}}}<!--
-->|{{MONTHNAME|{{{2}}}}} {{{1}}}<!--
-->}}<!--
-->|{{{1}}}<!--
-->}}<!--
--><span class="noprint">{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes||;}}<!--
-->{{#ifeq:{{yesno|{{{br|no}}}}}|yes|<br/>| }}<!--
-->{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes|(}}<!--
-->{{#if: {{{2|}}}<!--
-->|{{#if: {{{3|}}}<!--
-->|{{time ago|{{{1}}}-{{{2}}}-{{{3}}}|min_magnitude=days}}<!--
-->|{{years or months ago|{{{1}}}|{{#time:n|1-{{trim|{{{2}}}}}-1}}}}<!--
-->}}<!--
-->|{{#iferror:{{#expr:{{{1}}}}}<!--
-->|{{time ago|{{{1}}}|min_magnitude=days}}<!--
-->|{{years or months ago|{{{1}}}}}<!--
-->}}<!--
-->}}<!--
-->{{#ifeq:{{yesno|{{{paren|{{{p|no}}}}}}}}|yes|)}}</span><!--
-->|<!--first parameter is missing.-->{{#if: {{{2|}}}|{{Error|Error: first parameter is missing.|tag=span}}<!--
-->|{{#if: {{{3|}}}|{{Error|Error: first parameter is missing.|tag=span}} }} }}<!--
-->}}<!--
IMPLEMENTATION OF microformat date classes
--><span style="display:none"> (<span class="{{#ifeq:{{yesno|{{{end|no}}}}}|yes|dtend|bday dtstart published updated}}"><!--
-->{{#if: {{{1|}}}<!--
-->|{{{1}}}<!--
-->{{#if: {{{2|}}}<!--
-->| -{{#time:m|1-{{trim|{{{2}}}}}-1}}<!--
-->{{#if: {{{3|}}}<!--
-->| -{{padleft:{{{3}}}|2|0}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
--></span>)</span></includeonly><noinclude>
{{documentation}}
</noinclude>
08be06a2e067095a02918bec2fb734a7fb72e739
Template:Legend
10
1103
2405
2022-07-21T13:18:40Z
wikipedia>TheDJ
0
don't invert
wikitext
text/x-wiki
<includeonly><!--
--><templatestyles src="Legend/styles.css" /><!--
--><div class="legend"><!--
--><span class="legend-color mw-no-invert" style="<!--
-->{{#if:{{{border|}}}|border: {{{border}}};|{{#if:{{{outline|}}}|border: 1px solid {{{outline}}};}}}}<!--
-->{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|white|black|css=y}}}}<!--
-->{{#if:{{{textcolor|}}}|color:{{{textcolor}}};}}<!--
-->{{#if:{{{size|}}}|font-size:{{{size}}};}}"><!--
-->{{#if:{{{text|}}}{{{alt|}}}
| <span class="legend-text" style="{{#if:{{{alt|}}}|color:{{{1|}}};}}font-family: monospace, monospace;">{{If empty|{{{alt|}}}|{{{text|}}}| }}</span>| }}<!--
--></span><!--
--> {{{2|}}}<!--
--></div><!--
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
bbd1ff4b07414421f82b44f2eabe760b816e56e2
Module:Text
828
176
405
2022-07-21T16:43:48Z
wikipedia>Hike395
0
update date
Scribunto
text/plain
local yesNo = require("Module:Yesno")
local Text = { serial = "2022-07-21",
suite = "Text" }
--[=[
Text utilities
]=]
-- local globals
local PatternCJK = false
local PatternCombined = false
local PatternLatin = false
local PatternTerminated = false
local QuoteLang = false
local QuoteType = false
local RangesLatin = false
local SeekQuote = false
local function initLatinData()
if not RangesLatin then
RangesLatin = { { 7, 687 },
{ 7531, 7578 },
{ 7680, 7935 },
{ 8194, 8250 } }
end
if not PatternLatin then
local range
PatternLatin = "^["
for i = 1, #RangesLatin do
range = RangesLatin[ i ]
PatternLatin = PatternLatin ..
mw.ustring.char( range[ 1 ], 45, range[ 2 ] )
end -- for i
PatternLatin = PatternLatin .. "]*$"
end
end
local function initQuoteData()
-- Create quote definitions
if not QuoteLang then
QuoteLang =
{ af = "bd",
ar = "la",
be = "labd",
bg = "bd",
ca = "la",
cs = "bd",
da = "bd",
de = "bd",
dsb = "bd",
et = "bd",
el = "lald",
en = "ld",
es = "la",
eu = "la",
-- fa = "la",
fi = "rd",
fr = "laSPC",
ga = "ld",
he = "ldla",
hr = "bd",
hsb = "bd",
hu = "bd",
hy = "labd",
id = "rd",
is = "bd",
it = "ld",
ja = "x300C",
ka = "bd",
ko = "ld",
lt = "bd",
lv = "bd",
nl = "ld",
nn = "la",
no = "la",
pl = "bdla",
pt = "lald",
ro = "bdla",
ru = "labd",
sk = "bd",
sl = "bd",
sq = "la",
sr = "bx",
sv = "rd",
th = "ld",
tr = "ld",
uk = "la",
zh = "ld",
["de-ch"] = "la",
["en-gb"] = "lsld",
["en-us"] = "ld",
["fr-ch"] = "la",
["it-ch"] = "la",
["pt-br"] = "ldla",
["zh-tw"] = "x300C",
["zh-cn"] = "ld" }
end
if not QuoteType then
QuoteType =
{ bd = { { 8222, 8220 }, { 8218, 8217 } },
bdla = { { 8222, 8220 }, { 171, 187 } },
bx = { { 8222, 8221 }, { 8218, 8217 } },
la = { { 171, 187 }, { 8249, 8250 } },
laSPC = { { 171, 187 }, { 8249, 8250 }, true },
labd = { { 171, 187 }, { 8222, 8220 } },
lald = { { 171, 187 }, { 8220, 8221 } },
ld = { { 8220, 8221 }, { 8216, 8217 } },
ldla = { { 8220, 8221 }, { 171, 187 } },
lsld = { { 8216, 8217 }, { 8220, 8221 } },
rd = { { 8221, 8221 }, { 8217, 8217 } },
x300C = { { 0x300C, 0x300D },
{ 0x300E, 0x300F } } }
end
end -- initQuoteData()
local function fiatQuote( apply, alien, advance )
-- Quote text
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code
-- advance -- number, with level 1 or 2
local r = apply and tostring(apply) or ""
alien = alien or "en"
advance = tonumber(advance) or 0
local suite
initQuoteData()
local slang = alien:match( "^(%l+)-" )
suite = QuoteLang[alien] or slang and QuoteLang[slang] or QuoteLang["en"]
if suite then
local quotes = QuoteType[ suite ]
if quotes then
local space
if quotes[ 3 ] then
space = " "
else
space = ""
end
quotes = quotes[ advance ]
if quotes then
r = mw.ustring.format( "%s%s%s%s%s",
mw.ustring.char( quotes[ 1 ] ),
space,
apply,
space,
mw.ustring.char( quotes[ 2 ] ) )
end
else
mw.log( "fiatQuote() " .. suite )
end
end
return r
end -- fiatQuote()
Text.char = function ( apply, again, accept )
-- Create string from codepoints
-- Parameter:
-- apply -- table (sequence) with numerical codepoints, or nil
-- again -- number of repetitions, or nil
-- accept -- true, if no error messages to be appended
-- Returns: string
local r = ""
apply = type(apply) == "table" and apply or {}
again = math.floor(tonumber(again) or 1)
if again < 1 then
return ""
end
local bad = { }
local codes = { }
for _, v in ipairs( apply ) do
local n = tonumber(v)
if not n or (n < 32 and n ~= 9 and n ~= 10) then
table.insert(bad, tostring(v))
else
table.insert(codes, math.floor(n))
end
end
if #bad > 0 then
if not accept then
r = tostring( mw.html.create( "span" )
:addClass( "error" )
:wikitext( "bad codepoints: " .. table.concat( bad, " " )) )
end
return r
end
if #codes > 0 then
r = mw.ustring.char( unpack( codes ) )
if again > 1 then
r = r:rep(again)
end
end
return r
end -- Text.char()
local function trimAndFormat(args, fmt)
local result = {}
if type(args) ~= 'table' then
args = {args}
end
for _, v in ipairs(args) do
v = mw.text.trim(tostring(v))
if v ~= "" then
table.insert(result,fmt and mw.ustring.format(fmt, v) or v)
end
end
return result
end
Text.concatParams = function ( args, apply, adapt )
-- Concat list items into one string
-- Parameter:
-- args -- table (sequence) with numKey=string
-- apply -- string (optional); separator (default: "|")
-- adapt -- string (optional); format including "%s"
-- Returns: string
local collect = { }
return table.concat(trimAndFormat(args,adapt), apply or "|")
end -- Text.concatParams()
Text.containsCJK = function ( s )
-- Is any CJK code within?
-- Parameter:
-- s -- string
-- Returns: true, if CJK detected
s = s and tostring(s) or ""
if not patternCJK then
patternCJK = mw.ustring.char( 91,
4352, 45, 4607,
11904, 45, 42191,
43072, 45, 43135,
44032, 45, 55215,
63744, 45, 64255,
65072, 45, 65103,
65381, 45, 65500,
131072, 45, 196607,
93 )
end
return mw.ustring.find( s, patternCJK ) ~= nil
end -- Text.containsCJK()
Text.removeDelimited = function (s, prefix, suffix)
-- Remove all text in s delimited by prefix and suffix (inclusive)
-- Arguments:
-- s = string to process
-- prefix = initial delimiter
-- suffix = ending delimiter
-- Returns: stripped string
s = s and tostring(s) or ""
prefix = prefix and tostring(prefix) or ""
suffix = suffix and tostring(suffix) or ""
local prefixLen = mw.ustring.len(prefix)
local suffixLen = mw.ustring.len(suffix)
if prefixLen == 0 or suffixLen == 0 then
return s
end
local i = s:find(prefix, 1, true)
local r = s
local j
while i do
j = r:find(suffix, i + prefixLen)
if j then
r = r:sub(1, i - 1)..r:sub(j+suffixLen)
else
r = r:sub(1, i - 1)
end
i = r:find(prefix, 1, true)
end
return r
end
Text.getPlain = function ( adjust )
-- Remove wikisyntax from string, except templates
-- Parameter:
-- adjust -- string
-- Returns: string
local r = Text.removeDelimited(adjust,"<!--","-->")
r = r:gsub( "(</?%l[^>]*>)", "" )
:gsub( "'''", "" )
:gsub( "''", "" )
:gsub( " ", " " )
return r
end -- Text.getPlain()
Text.isLatinRange = function (s)
-- Are characters expected to be latin or symbols within latin texts?
-- Arguments:
-- s = string to analyze
-- Returns: true, if valid for latin only
s = s and tostring(s) or "" --- ensure input is always string
initLatinData()
return mw.ustring.match(s, PatternLatin) ~= nil
end -- Text.isLatinRange()
Text.isQuote = function ( s )
-- Is this character any quotation mark?
-- Parameter:
-- s = single character to analyze
-- Returns: true, if s is quotation mark
s = s and tostring(s) or ""
if s == "" then
return false
end
if not SeekQuote then
SeekQuote = mw.ustring.char( 34, -- "
39, -- '
171, -- laquo
187, -- raquo
8216, -- lsquo
8217, -- rsquo
8218, -- sbquo
8220, -- ldquo
8221, -- rdquo
8222, -- bdquo
8249, -- lsaquo
8250, -- rsaquo
0x300C, -- CJK
0x300D, -- CJK
0x300E, -- CJK
0x300F ) -- CJK
end
return mw.ustring.find( SeekQuote, s, 1, true ) ~= nil
end -- Text.isQuote()
Text.listToText = function ( args, adapt )
-- Format list items similar to mw.text.listToText()
-- Parameter:
-- args -- table (sequence) with numKey=string
-- adapt -- string (optional); format including "%s"
-- Returns: string
return mw.text.listToText(trimAndFormat(args, adapt))
end -- Text.listToText()
Text.quote = function ( apply, alien, advance )
-- Quote text
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code, or nil
-- advance -- number, with level 1 or 2, or nil
-- Returns: quoted string
apply = apply and tostring(apply) or ""
local mode, slang
if type( alien ) == "string" then
slang = mw.text.trim( alien ):lower()
else
slang = mw.title.getCurrentTitle().pageLanguage
if not slang then
-- TODO FIXME: Introduction expected 2017-04
slang = mw.language.getContentLanguage():getCode()
end
end
if advance == 2 then
mode = 2
else
mode = 1
end
return fiatQuote( mw.text.trim( apply ), slang, mode )
end -- Text.quote()
Text.quoteUnquoted = function ( apply, alien, advance )
-- Quote text, if not yet quoted and not empty
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code, or nil
-- advance -- number, with level 1 or 2, or nil
-- Returns: string; possibly quoted
local r = mw.text.trim( apply and tostring(apply) or "" )
local s = mw.ustring.sub( r, 1, 1 )
if s ~= "" and not Text.isQuote( s, advance ) then
s = mw.ustring.sub( r, -1, 1 )
if not Text.isQuote( s ) then
r = Text.quote( r, alien, advance )
end
end
return r
end -- Text.quoteUnquoted()
Text.removeDiacritics = function ( adjust )
-- Remove all diacritics
-- Parameter:
-- adjust -- string
-- Returns: string; all latin letters should be ASCII
-- or basic greek or cyrillic or symbols etc.
local cleanup, decomposed
if not PatternCombined then
PatternCombined = mw.ustring.char( 91,
0x0300, 45, 0x036F,
0x1AB0, 45, 0x1AFF,
0x1DC0, 45, 0x1DFF,
0xFE20, 45, 0xFE2F,
93 )
end
decomposed = mw.ustring.toNFD( adjust and tostring(adjust) or "" )
cleanup = mw.ustring.gsub( decomposed, PatternCombined, "" )
return mw.ustring.toNFC( cleanup )
end -- Text.removeDiacritics()
Text.sentenceTerminated = function ( analyse )
-- Is string terminated by dot, question or exclamation mark?
-- Quotation, link termination and so on granted
-- Parameter:
-- analyse -- string
-- Returns: true, if sentence terminated
local r
if not PatternTerminated then
PatternTerminated = mw.ustring.char( 91,
12290,
65281,
65294,
65311 )
.. "!%.%?…][\"'%]‹›«»‘’“”]*$"
end
if mw.ustring.find( analyse, PatternTerminated ) then
r = true
else
r = false
end
return r
end -- Text.sentenceTerminated()
Text.ucfirstAll = function ( adjust)
-- Capitalize all words
-- Arguments:
-- adjust = string to adjust
-- Returns: string with all first letters in upper case
adjust = adjust and tostring(adjust) or ""
local r = mw.text.decode(adjust,true)
local i = 1
local c, j, m
m = (r ~= adjust)
r = " "..r
while i do
i = mw.ustring.find( r, "%W%l", i )
if i then
j = i + 1
c = mw.ustring.upper( mw.ustring.sub( r, j, j ) )
r = string.format( "%s%s%s",
mw.ustring.sub( r, 1, i ),
c,
mw.ustring.sub( r, i + 2 ) )
i = j
end
end -- while i
r = r:sub( 2 )
if m then
r = mw.text.encode(r)
end
return r
end -- Text.ucfirstAll()
Text.uprightNonlatin = function ( adjust )
-- Ensure non-italics for non-latin text parts
-- One single greek letter might be granted
-- Precondition:
-- adjust -- string
-- Returns: string with non-latin parts enclosed in <span>
local r
initLatinData()
if mw.ustring.match( adjust, PatternLatin ) then
-- latin only, horizontal dashes, quotes
r = adjust
else
local c
local j = false
local k = 1
local m = false
local n = mw.ustring.len( adjust )
local span = "%s%s<span dir='auto' style='font-style:normal'>%s</span>"
local flat = function ( a )
-- isLatin
local range
for i = 1, #RangesLatin do
range = RangesLatin[ i ]
if a >= range[ 1 ] and a <= range[ 2 ] then
return true
end
end -- for i
end -- flat()
local focus = function ( a )
-- char is not ambivalent
local r = ( a > 64 )
if r then
r = ( a < 8192 or a > 8212 )
else
r = ( a == 38 or a == 60 ) -- '&' '<'
end
return r
end -- focus()
local form = function ( a )
return string.format( span,
r,
mw.ustring.sub( adjust, k, j - 1 ),
mw.ustring.sub( adjust, j, a ) )
end -- form()
r = ""
for i = 1, n do
c = mw.ustring.codepoint( adjust, i, i )
if focus( c ) then
if flat( c ) then
if j then
if m then
if i == m then
-- single greek letter.
j = false
end
m = false
end
if j then
local nx = i - 1
local s = ""
for ix = nx, 1, -1 do
c = mw.ustring.sub( adjust, ix, ix )
if c == " " or c == "(" then
nx = nx - 1
s = c .. s
else
break -- for ix
end
end -- for ix
r = form( nx ) .. s
j = false
k = i
end
end
elseif not j then
j = i
if c >= 880 and c <= 1023 then
-- single greek letter?
m = i + 1
else
m = false
end
end
elseif m then
m = m + 1
end
end -- for i
if j and ( not m or m < n ) then
r = form( n )
else
r = r .. mw.ustring.sub( adjust, k )
end
end
return r
end -- Text.uprightNonlatin()
Text.test = function ( about )
local r
if about == "quote" then
initQuoteData()
r = { }
r.QuoteLang = QuoteLang
r.QuoteType = QuoteType
end
return r
end -- Text.test()
-- Export
local p = { }
for _, func in ipairs({'containsCJK','isLatinRange','isQuote','sentenceTerminated'}) do
p[func] = function (frame)
return Text[func]( frame.args[ 1 ] or "" ) and "1" or ""
end
end
for _, func in ipairs({'getPlain','removeDiacritics','ucfirstAll','uprightNonlatin'}) do
p[func] = function (frame)
return Text[func]( frame.args[ 1 ] or "" )
end
end
function p.char( frame )
local params = frame:getParent().args
local story = params[ 1 ]
local codes, lenient, multiple
if not story then
params = frame.args
story = params[ 1 ]
end
if story then
local items = mw.text.split( mw.text.trim(story), "%s+" )
if #items > 0 then
local j
lenient = (yesNo(params.errors) == false)
codes = { }
multiple = tonumber( params[ "*" ] )
for _, v in ipairs( items ) do
j = tonumber((v:sub( 1, 1 ) == "x" and "0" or "") .. v)
table.insert( codes, j or v )
end
end
end
return Text.char( codes, multiple, lenient )
end
function p.concatParams( frame )
local args
local template = frame.args.template
if type( template ) == "string" then
template = mw.text.trim( template )
template = ( template == "1" )
end
if template then
args = frame:getParent().args
else
args = frame.args
end
return Text.concatParams( args,
frame.args.separator,
frame.args.format )
end
function p.listToFormat(frame)
local lists = {}
local pformat = frame.args["format"]
local sep = frame.args["sep"] or ";"
-- Parameter parsen: Listen
for k, v in pairs(frame.args) do
local knum = tonumber(k)
if knum then lists[knum] = v end
end
-- Listen splitten
local maxListLen = 0
for i = 1, #lists do
lists[i] = mw.text.split(lists[i], sep)
if #lists[i] > maxListLen then maxListLen = #lists[i] end
end
-- Ergebnisstring generieren
local result = ""
local result_line = ""
for i = 1, maxListLen do
result_line = pformat
for j = 1, #lists do
result_line = mw.ustring.gsub(result_line, "%%s", lists[j][i], 1)
end
result = result .. result_line
end
return result
end
function p.listToText( frame )
local args
local template = frame.args.template
if type( template ) == "string" then
template = mw.text.trim( template )
template = ( template == "1" )
end
if template then
args = frame:getParent().args
else
args = frame.args
end
return Text.listToText( args, frame.args.format )
end
function p.quote( frame )
local slang = frame.args[2]
if type( slang ) == "string" then
slang = mw.text.trim( slang )
if slang == "" then
slang = false
end
end
return Text.quote( frame.args[ 1 ] or "",
slang,
tonumber( frame.args[3] ) )
end
function p.quoteUnquoted( frame )
local slang = frame.args[2]
if type( slang ) == "string" then
slang = mw.text.trim( slang )
if slang == "" then
slang = false
end
end
return Text.quoteUnquoted( frame.args[ 1 ] or "",
slang,
tonumber( frame.args[3] ) )
end
function p.zip(frame)
local lists = {}
local seps = {}
local defaultsep = frame.args["sep"] or ""
local innersep = frame.args["isep"] or ""
local outersep = frame.args["osep"] or ""
-- Parameter parsen
for k, v in pairs(frame.args) do
local knum = tonumber(k)
if knum then lists[knum] = v else
if string.sub(k, 1, 3) == "sep" then
local sepnum = tonumber(string.sub(k, 4))
if sepnum then seps[sepnum] = v end
end
end
end
-- sofern keine expliziten Separatoren angegeben sind, den Standardseparator verwenden
for i = 1, math.max(#seps, #lists) do
if not seps[i] then seps[i] = defaultsep end
end
-- Listen splitten
local maxListLen = 0
for i = 1, #lists do
lists[i] = mw.text.split(lists[i], seps[i])
if #lists[i] > maxListLen then maxListLen = #lists[i] end
end
local result = ""
for i = 1, maxListLen do
if i ~= 1 then result = result .. outersep end
for j = 1, #lists do
if j ~= 1 then result = result .. innersep end
result = result .. (lists[j][i] or "")
end
end
return result
end
function p.failsafe()
return Text.serial
end
p.Text = function ()
return Text
end -- p.Text
return p
07f1fc4d39342fd92bdae1c5463bbfede7eeda1a
Template:R from move
10
1014
2224
2022-07-21T18:41:22Z
wikipedia>Steel1943
0
Undid revision 996791156 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) this wording addition needs discussion since it wasn't discussed and I don't agree with it (and how I didn't notice it for over a year ... not sure)
wikitext
text/x-wiki
<noinclude>{{hatnote|This rcat template is automatically added to all new redirects that result from page moves; it must be added manually to older redirects when appropriate.}}{{This is a redirect/rcat}}
</noinclude>{{Redirect template
|id=R from move
|name=From a page move
|from=a page that has been moved (renamed)
|info=This page was kept as a redirect to avoid breaking links, both internal and external, that may have been made to the old page name.
|all category=Redirects from moves
}}<includeonly>{{R from move/except}}</includeonly><noinclude>
<!-- Place categories on /doc subpage; interwikis go to Wikidata. -->
{{Documentation}}
</noinclude>
a54816f5e100ad6245cbc939f9c0c04671b65c05
Template:Para
10
49
93
2022-07-22T08:06:17Z
wikipedia>TheDJ
0
breakup super long words, so we do not overflow the viewport.
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
06006deea2ed5d552aab61b4332321ab749ae7e8
Template:Infobox film
10
1345
2680
2022-07-25T18:43:55Z
w>Paine Ellsworth
0
per edit request on talk page - remove hard categorization
wikitext
text/x-wiki
<includeonly>{{main other|{{Infobox film/short description|released={{{released|}}}|country={{{country|}}}|director={{{director|}}}}}}}{{Infobox
| italic title = {{{italic_title|<noinclude>no</noinclude>}}}
| bodyclass = vevent
| aboveclass = summary
| abovestyle = font-size: 125%; font-style: italic;
| above = {{If empty |{{{name|}}} |{{PAGENAMEBASE}} }}
| image = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{{image_size|}}} |sizedefault=frameless |upright=1 |alt={{{alt|}}} |title={{{alt|}}} |border={{{border|yes}}} }}
| caption = {{{caption|}}}
| labelstyle = white-space: nowrap; padding-right: 0.65em;<!--(to ensure gap between any long/nonwrapped label and subsequent data on same line-->
| class1 = description
| data1 = {{{native_name|}}}
| label2 = Directed by
| data2 = {{If empty |{{{director|}}} |{{{directors|}}} }}
| label3 = Written by
| data3 = {{If empty |{{{writer|}}} |{{{writers|}}} }}
| label4 = Screenplay by
| data4 = {{{screenplay|}}}
| label5 = Story by
| data5 = {{{story|}}}
| label6 = Based on
| data6 = {{{based_on|}}}
| label7 = Produced by
| data7 = {{If empty |{{{producer|}}} |{{{producers|}}} }}
| label8 = Starring
| data8 = {{{starring|}}}
| label9 = Narrated by
| data9 = {{If empty |{{{narrator|}}} |{{{narrators|}}} }}
| label10 = Cinematography
| data10 = {{{cinematography|}}}
| label11 = Edited by
| data11 = {{{editing|}}}
| label12 = Music by
| data12 = {{{music|}}}
| label13 = Animation by
| data13 = {{{animator|}}}
| label14 = Layouts by
| data14 = {{{layout_artist|}}}
| label15 = Backgrounds by
| data15 = {{{background_artist|}}}
| label16 = Color process
| data16 = {{{color_process|}}}
| label17 = {{Longitem |Production<br/>{{Pluralize from text|{{If empty |{{{production_companies|}}} |{{{studio|}}} }} || company | companies }}}}
| data17 = {{#if: {{{production_companies|{{{studio|}}} }}} | <div style="vertical-align: middle;">{{{production_companies|{{{studio|}}}}}}</div> }}
| label18 = Distributed by
| data18 = {{If empty |{{{distributor|}}} |{{{distributors|}}} }}
| label19 = {{Longitem|style=white-space: normal;|Release date{{Pluralize from text|{{{released|}}}|||s}}}}
| data19 = {{{released|}}}
| label20 = {{Longitem|style=white-space: normal;|Running time}}
| data20 = {{{runtime|}}}
| label21 = {{Pluralize from text|{{{country|}}}|| Country | Countries }}
| data21 = {{{country|}}}
| label22 = {{Pluralize from text|{{{language|}}}|| Language | Languages }}
| data22 = {{{language|}}}
| label23 = Budget
| data23 = {{{budget|}}}
| label24 = Box office
| data24 = {{{gross|}}}
}}<!-- Tracking categories
-->{{Main other|{{#if: {{{image_size|}}} | [[Category:Pages using infobox film with image size parameter]] }}}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox film with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[:Template:Infobox film]] with unknown parameter "_VALUE_"|showblankpositional=1| alt | animator | background_artist | based_on | border | budget | caption | cinematography | color_process | country | director | directors | distributor | distributors | editing | gross | italic_title | image | image_size | language | layout_artist | music | name | narrator | narrators | native_name | producer | producers | production_companies | released | runtime | screenplay | starring | story | studio | writer | writers }}<!--
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
07a0172daa3d6b251a4759f7e0ddb4bfa918f12e
Module:ISO 3166/data/National
828
186
426
2022-07-28T05:06:29Z
wikipedia>Paine Ellsworth
0
per edit request on talk page - include "U.S." initialism
Scribunto
text/plain
return {
["AD"] = {alpha3="AND",numeric="020",name="Andorra"},
["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}},
["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"},
["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"},
["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"},
["AL"] = {alpha3="ALB",numeric="008",name="Albania"},
["AM"] = {alpha3="ARM",numeric="051",name="Armenia"},
["AO"] = {alpha3="AGO",numeric="024",name="Angola"},
["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"},
["AR"] = {alpha3="ARG",numeric="032",name="Argentina"},
["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"},
["AT"] = {alpha3="AUT",numeric="040",name="Austria"},
["AU"] = {alpha3="AUS",numeric="036",name="Australia"},
["AW"] = {alpha3="ABW",numeric="533",name="Aruba"},
["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}},
["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"},
["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}},
["BB"] = {alpha3="BRB",numeric="052",name="Barbados"},
["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"},
["BE"] = {alpha3="BEL",numeric="056",name="Belgium"},
["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"},
["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"},
["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"},
["BI"] = {alpha3="BDI",numeric="108",name="Burundi"},
["BJ"] = {alpha3="BEN",numeric="204",name="Benin"},
["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}},
["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"},
["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"},
["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"},
["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"},
["BR"] = {alpha3="BRA",numeric="076",name="Brazil"},
["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"},
["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"},
["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"},
["BW"] = {alpha3="BWA",numeric="072",name="Botswana"},
["BY"] = {alpha3="BLR",numeric="112",name="Belarus"},
["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"},
["CA"] = {alpha3="CAN",numeric="124",name="Canada"},
["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}},
["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}},
["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}},
["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}},
["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"},
["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}},
["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"},
["CL"] = {alpha3="CHL",numeric="152",name="Chile"},
["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"},
["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}},
["CO"] = {alpha3="COL",numeric="170",name="Colombia"},
["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"},
["CU"] = {alpha3="CUB",numeric="192",name="Cuba"},
["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}},
["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}},
["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"},
["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"},
["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"},
["DE"] = {alpha3="DEU",numeric="276",name="Germany"},
["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"},
["DK"] = {alpha3="DNK",numeric="208",name="Denmark"},
["DM"] = {alpha3="DMA",numeric="212",name="Dominica"},
["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"},
["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"},
["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"},
["EE"] = {alpha3="EST",numeric="233",name="Estonia"},
["EG"] = {alpha3="EGY",numeric="818",name="Egypt"},
["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"},
["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"},
["ES"] = {alpha3="ESP",numeric="724",name="Spain"},
["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"},
["FI"] = {alpha3="FIN",numeric="246",name="Finland"},
["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"},
["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}},
["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}},
["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}},
["FR"] = {alpha3="FRA",numeric="250",name="France"},
["GA"] = {alpha3="GAB",numeric="266",name="Gabon"},
["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}},
["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country
["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country
["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country
["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country
["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country
["GD"] = {alpha3="GRD",numeric="308",name="Grenada"},
["GE"] = {alpha3="GEO",numeric="268",name="Georgia"},
["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"},
["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"},
["GH"] = {alpha3="GHA",numeric="288",name="Ghana"},
["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"},
["GL"] = {alpha3="GRL",numeric="304",name="Greenland"},
["GM"] = {alpha3="GMB",numeric="270",name="Gambia"},
["GN"] = {alpha3="GIN",numeric="324",name="Guinea"},
["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"},
["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"},
["GR"] = {alpha3="GRC",numeric="300",name="Greece"},
["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"},
["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"},
["GU"] = {alpha3="GUM",numeric="316",name="Guam"},
["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"},
["GY"] = {alpha3="GUY",numeric="328",name="Guyana"},
["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}},
["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}},
["HN"] = {alpha3="HND",numeric="340",name="Honduras"},
["HR"] = {alpha3="HRV",numeric="191",name="Croatia"},
["HT"] = {alpha3="HTI",numeric="332",name="Haiti"},
["HU"] = {alpha3="HUN",numeric="348",name="Hungary"},
["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"},
["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}},
["IL"] = {alpha3="ISR",numeric="376",name="Israel"},
["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"},
["IN"] = {alpha3="IND",numeric="356",name="India"},
["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"},
["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"},
["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"},
["IS"] = {alpha3="ISL",numeric="352",name="Iceland"},
["IT"] = {alpha3="ITA",numeric="380",name="Italy"},
["JE"] = {alpha3="JEY",numeric="832",name="Jersey"},
["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"},
["JO"] = {alpha3="JOR",numeric="400",name="Jordan"},
["JP"] = {alpha3="JPN",numeric="392",name="Japan"},
["KE"] = {alpha3="KEN",numeric="404",name="Kenya"},
["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"},
["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"},
["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"},
["KM"] = {alpha3="COM",numeric="174",name="Comoros"},
["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}},
["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}},
["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}},
["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"},
["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"},
["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"},
["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"},
["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"},
["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}},
["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"},
["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"},
["LR"] = {alpha3="LBR",numeric="430",name="Liberia"},
["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"},
["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"},
["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"},
["LV"] = {alpha3="LVA",numeric="428",name="Latvia"},
["LY"] = {alpha3="LBY",numeric="434",name="Libya"},
["MA"] = {alpha3="MAR",numeric="504",name="Morocco"},
["MC"] = {alpha3="MCO",numeric="492",name="Monaco"},
["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"},
["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"},
["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}},
["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"},
["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"},
["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}},
["ML"] = {alpha3="MLI",numeric="466",name="Mali"},
["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}},
["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"},
["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}},
["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"},
["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"},
["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"},
["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"},
["MT"] = {alpha3="MLT",numeric="470",name="Malta"},
["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"},
["MV"] = {alpha3="MDV",numeric="462",name="Maldives"},
["MW"] = {alpha3="MWI",numeric="454",name="Malawi"},
["MX"] = {alpha3="MEX",numeric="484",name="Mexico"},
["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"},
["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"},
["NA"] = {alpha3="NAM",numeric="516",name="Namibia"},
["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"},
["NE"] = {alpha3="NER",numeric="562",name="Niger"},
["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"},
["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"},
["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"},
["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"},
["NO"] = {alpha3="NOR",numeric="578",name="Norway"},
["NP"] = {alpha3="NPL",numeric="524",name="Nepal"},
["NR"] = {alpha3="NRU",numeric="520",name="Nauru"},
["NU"] = {alpha3="NIU",numeric="570",name="Niue"},
["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}},
["OM"] = {alpha3="OMN",numeric="512",name="Oman"},
["PA"] = {alpha3="PAN",numeric="591",name="Panama"},
["PE"] = {alpha3="PER",numeric="604",name="Peru"},
["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"},
["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"},
["PH"] = {alpha3="PHL",numeric="608",name="Philippines"},
["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"},
["PL"] = {alpha3="POL",numeric="616",name="Poland"},
["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}},
["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"},
["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"},
["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}},
["PT"] = {alpha3="PRT",numeric="620",name="Portugal"},
["PW"] = {alpha3="PLW",numeric="585",name="Palau"},
["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"},
["QA"] = {alpha3="QAT",numeric="634",name="Qatar"},
["RE"] = {alpha3="REU",numeric="638",name="Réunion"},
["RO"] = {alpha3="ROU",numeric="642",name="Romania"},
["RS"] = {alpha3="SRB",numeric="688",name="Serbia"},
["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"},
["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"},
["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"},
["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"},
["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"},
["SD"] = {alpha3="SDN",numeric="729",name="Sudan"},
["SE"] = {alpha3="SWE",numeric="752",name="Sweden"},
["SG"] = {alpha3="SGP",numeric="702",name="Singapore"},
["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"},
["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"},
["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"},
["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"},
["SM"] = {alpha3="SMR",numeric="674",name="San Marino"},
["SN"] = {alpha3="SEN",numeric="686",name="Senegal"},
["SO"] = {alpha3="SOM",numeric="706",name="Somalia"},
["SR"] = {alpha3="SUR",numeric="740",name="Suriname"},
["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"},
["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}},
["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"},
["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}},
["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"},
["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}},
["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"},
["TD"] = {alpha3="TCD",numeric="148",name="Chad"},
["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"},
["TG"] = {alpha3="TGO",numeric="768",name="Togo"},
["TH"] = {alpha3="THA",numeric="764",name="Thailand"},
["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"},
["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"},
["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}},
["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"},
["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"},
["TO"] = {alpha3="TON",numeric="776",name="Tonga"},
["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"},
["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"},
["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"},
["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}},
["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"},
["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"},
["UG"] = {alpha3="UGA",numeric="800",name="Uganda"},
["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"},
["US"] = {alpha3="USA",numeric="840",name="United States",isoname="United States of America",altnames={"US","USA","U.S."}},
["UY"] = {alpha3="URY",numeric="858",name="Uruguay"},
["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"},
["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}},
["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}},
["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"},
["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}},
["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}},
["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"},
["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"},
["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"},
["WS"] = {alpha3="WSM",numeric="882",name="Samoa"},
["YE"] = {alpha3="YEM",numeric="887",name="Yemen"},
["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"},
["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"},
["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"},
["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"}
}
1ae753fe1fa53ce062b0a008dbc9778d589666f0
Template:Cite book/new
10
693
1554
2022-07-30T22:12:50Z
wikipedia>Trappist the monk
0
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1/sandbox|citation
|CitationClass=book
|SandboxPath=/sandbox
}}</includeonly><noinclude>
{{documentation|content=
The '''Template:Cite_book/new''' uses the [[Lua script]] interface with [[Module:Citation/CS1/sandbox]] to format book cites using the [[wp:CS1|Citation Style 1]] for cite parameters.
}}
[[Category:Lua-based templates]]
</noinclude>
67558f4bbe6d0235534f2800b4363bf48fafef92
Template:Country data Croatia
10
1185
2514
2022-07-31T23:45:06Z
Pppery
6
Per edit request
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Croatia
| flag alias = Flag of Croatia.svg
| flag alias-civil = Civil Ensign of Croatia.svg
| flag alias-1990 = Flag of Croatia (1990).svg
| flag alias-naval = Naval ensign of Croatia.svg
| link alias-naval = Croatian Navy
| flag alias-air force = Flag of the Croatian Air Force.svg
| link alias-air force = Croatian Air Force
| link alias-military = Armed Forces of Croatia
| flag alias-army = Flag of Croatian Army.svg
| link alias-army = Croatian Army
| flag alias-navy = Naval ensign of Croatia.svg
| link alias-navy = Croatian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = civil
| var2 = 1990
| redir1 = HRV
| redir2 = CRO
| related1 = Independent State of Croatia
| related2 = SR Croatia
| related3 = PR Croatia
| related4 = Kingdom of Croatia (Habsburg)
</noinclude>
}}
b48856d8f7becf31f9935ba8fce138f3283dc4ea
Module:Format TemplateData/config
828
633
1426
2022-08-01T17:59:53Z
wikipedia>MusikBot II
0
Protected "[[Module:Format TemplateData/config]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 515 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
Scribunto
text/plain
local Serial = "2022-03-20"
--[=[
enwiki configuration {{TemplateData}}
mw.loadData()
]=]
return { catProblem = false,
classMultiColumns = "column-multiple",
classNoNumTOC = "nonumtoc",
classTable = { "wikitable", "templatedata-params" },
cssParams = { ["border"] = "#B3B7FF 1px solid" },
docpageCreate = "%s/doc",
docpageDetect = "/doc",
helpBoolean = false,
helpContent = false,
helpDate = false,
helpFile = false,
helpFormat = false,
helpLine = false,
helpNumber = false,
helpPage = false,
helpString = false,
helpTemplate = false,
helpURL = false,
helpUser = false,
msgDescMiss = "missing <code>description</code>",
permit =
{ boole = { [true] = { css = { ["color"] = "#050",
["font-weight"] = "bold" },
lead = false,
show = "True" },
[false] = { css = { ["color"] = "#610",
["font-weight"] = "bold" },
lead = false,
show = "False" } },
css = { tableheadbg = { ["background-color"] = "#B3B7FF" },
bg = { ["bg"] = "none" },
required = { ["border-left"] = "3px solid black" },
suggested = { ["border-left"] = "3px solid #888" },
optional = { ["border-left"] = "3px solid #CCC" },
deprecated = { ["background-color"] = "#FDD",
["border-left"] = "3px dotted red" } }
},
tStylesTOCnum = "TOC nonum",
tStylesMultiColumns = "column-multiple",
serial = Serial }
ce8c2e3e08b7c06d862b014b7affdebda341027a
Module:Multilingual
828
634
1428
2022-08-09T00:07:40Z
wikipedia>Sdrqaz
0
Protected "[[Module:Multilingual]]": [[WP:High-risk templates|High-risk Lua module]]: [[Special:Diff/1103230387/1103232518|Requested by Pppery at RfPP]]. Used in [[Module:Format TemplateData]], which is semi-protected and has 516 transclusions ([Edit=Require autoconfirmed or confirmed access] (indefinite))
Scribunto
text/plain
local Multilingual = { suite = "Multilingual",
serial = "2020-12-10",
item = 47541920,
globals = { ISO15924 = 71584769,
WLink = 19363224 }
}
--[=[
Utilities for multilingual texts and ISO 639 (BCP47) issues etc.
* fair()
* fallback()
* findCode()
* fix()
* format()
* getBase()
* getLang()
* getName()
* i18n()
* int()
* isLang()
* isLangWiki()
* isMinusculable()
* isRTL()
* message()
* sitelink()
* tabData()
* userLang()
* userLangCode()
* wikibase()
* failsafe()
loadData: Multilingual/config Multilingual/names
]=]
local Failsafe = Multilingual
local GlobalMod = Multilingual
local GlobalData = Multilingual
local User = { sniffer = "showpreview" }
Multilingual.globals.Multilingual = Multilingual.item
Multilingual.exotic = { simple = true,
no = true }
Multilingual.prefer = { cs = true,
de = true,
en = true,
es = true,
fr = true,
it = true,
nl = true,
pt = true,
ru = true,
sv = true }
local foreignModule = function ( access, advanced, append, alt, alert )
-- Fetch global module
-- Precondition:
-- access -- string, with name of base module
-- advanced -- true, for require(); else mw.loadData()
-- append -- string, with subpage part, if any; or false
-- alt -- number, of wikidata item of root; or false
-- alert -- true, for throwing error on data problem
-- Postcondition:
-- Returns whatever, probably table
-- 2020-01-01
local storage = access
local finer = function ()
if append then
storage = string.format( "%s/%s",
storage,
append )
end
end
local fun, lucky, r, suited
if advanced then
fun = require
else
fun = mw.loadData
end
GlobalMod.globalModules = GlobalMod.globalModules or { }
suited = GlobalMod.globalModules[ access ]
if not suited then
finer()
lucky, r = pcall( fun, "Module:" .. storage )
end
if not lucky then
if not suited and
type( alt ) == "number" and
alt > 0 then
suited = string.format( "Q%d", alt )
suited = mw.wikibase.getSitelink( suited )
GlobalMod.globalModules[ access ] = suited or true
end
if type( suited ) == "string" then
storage = suited
finer()
lucky, r = pcall( fun, storage )
end
if not lucky and alert then
error( "Missing or invalid page: " .. storage )
end
end
return r
end -- foreignModule()
local fetchData = function ( access )
-- Retrieve translated keyword from commons:Data:****.tab
-- Precondition:
-- access -- string, with page identification on Commons
-- Returns table, with data, or string, with error message
-- 2019-12-05
local storage = access
local r
if type( storage ) == "string" then
local s
storage = mw.text.trim( storage )
s = storage:lower()
if s:sub( 1, 2 ) == "c:" then
storage = mw.text.trim( storage:sub( 3 ) )
s = storage:lower()
elseif s:sub( 1, 8 ) == "commons:" then
storage = mw.text.trim( storage:sub( 9 ) )
s = storage:lower()
end
if s:sub( 1, 5 ) == "data:" then
storage = mw.text.trim( storage:sub( 6 ) )
s = storage:lower()
end
if s == "" or s == ".tab" then
storage = false
elseif s:sub( -4 ) == ".tab" then
storage = storage:sub( 1, -5 ) .. ".tab"
else
storage = storage .. ".tab"
end
end
if type( storage ) == "string" then
local data
if type( GlobalData.TabDATA ) ~= "table" then
GlobalData.TabDATA = { }
end
data = GlobalData.TabDATA[ storage ]
if data then
r = data
else
local lucky
lucky, data = pcall( mw.ext.data.get, storage, "_" )
if type( data ) == "table" then
data = data.data
if type( data ) == "table" then
GlobalData.TabDATA[ storage ] = data
else
r = string.format( "%s [[%s%s]]",
"INVALID Data:*.tab",
"commons:Data:",
storage )
end
else
r = "BAD PAGE Data:*.tab – commons:" .. storage
end
if r then
GlobalData.TabDATA[ storage ] = r
data = false
else
r = data
end
end
else
r = "BAD PAGE commons:Data:*.tab"
end
return r
end -- fetchData()
local favorites = function ()
-- Provide fallback codes
-- Postcondition:
-- Returns table with sequence of preferred languages
-- * ahead elements
-- * user (not yet accessible)
-- * page content language (not yet accessible)
-- * page name subpage
-- * project
-- * en
local r = Multilingual.polyglott
if not r then
local self = mw.language.getContentLanguage():getCode():lower()
local sub = mw.title.getCurrentTitle().subpageText
local f = function ( add )
local s = add
for i = 1, #r do
if r[ i ] == s then
s = false
break -- for i
end
end -- for i
if s then
table.insert( r, s )
end
end
r = { }
if sub:find( "/", 2, true ) then
sub = sub:match( "/(%l%l%l?)$" )
if sub then
table.insert( r, sub )
end
elseif sub:find( "^%l%l%l?%-?%a?%a?%a?%a?$" ) and
mw.language.isSupportedLanguage( sub ) then
table.insert( r, sub )
end
f( self )
f( "en" )
Multilingual.polyglott = r
end
return r
end -- favorites()
local feasible = function ( ask, accept )
-- Is ask to be supported by application?
-- Precondition:
-- ask -- lowercase code
-- accept -- sequence table, with offered lowercase codes
-- Postcondition:
-- nil, or true
local r
for i = 1, #accept do
if accept[ i ] == ask then
r = true
break -- for i
end
end -- for i
return r
end -- feasible()
local fetch = function ( access, append )
-- Attach config or library module
-- Precondition:
-- access -- module title
-- append -- string, with subpage part of this; or false
-- Postcondition:
-- Returns: table, with library, or false
local got, sign
if append then
sign = string.format( "%s/%s", access, append )
else
sign = access
end
if type( Multilingual.ext ) ~= "table" then
Multilingual.ext = { }
end
got = Multilingual.ext[ sign ]
if not got and got ~= false then
local global = Multilingual.globals[ access ]
local lib = ( not append or append == "config" )
got = foreignModule( access, lib, append, global )
if type( got ) == "table" then
if lib then
local startup = got[ access ]
if type( startup ) == "function" then
got = startup()
end
end
else
got = false
end
Multilingual.ext[ sign ] = got
end
return got
end -- fetch()
local fetchISO639 = function ( access )
-- Retrieve table from commons:Data:ISO639/***.tab
-- Precondition:
-- access -- string, with subpage identification
-- Postcondition:
-- Returns table, with data, even empty
local r
if type( Multilingual.iso639 ) ~= "table" then
Multilingual.iso639 = { }
end
r = Multilingual.iso639[ access ]
if type( r ) == "nil" then
local raw = fetchData( "ISO639/" .. access )
if type( raw ) == "table" then
local t
r = { }
for i = 1, #raw do
t = raw[ i ]
if type( t ) == "table" and
type( t[ 1 ] ) == "string" and
type( t[ 2 ] ) == "string" then
r[ t[ 1 ] ] = t[ 2 ]
else
break -- for i
end
end -- for i
else
r = false
end
Multilingual.iso639[ access ] = r
end
return r or { }
end -- fetchISO639()
local fill = function ( access, alien, frame )
-- Expand language name template
-- Precondition:
-- access -- string, with language code
-- alien -- language code for which to be generated
-- frame -- frame, if available
-- Postcondition:
-- Returns string
local template = Multilingual.tmplLang
local r
if type( template ) ~= "table" then
local cnf = fetch( "Multilingual", "config" )
if cnf then
template = cnf.tmplLang
end
end
if type( template ) == "table" then
local source = template.title
local f, lucky, s
Multilingual.tmplLang = template
if type( source ) ~= "string" and
type( template.namePat ) == "string" and
template.namePat:find( "%s", 1, true ) then
source = string.format( template.namePat, access )
end
if type( source ) == "string" then
if not Multilingual.frame then
if frame then
Multilingual.frame = frame
else
Multilingual.frame = mw.getCurrentFrame()
end
end
f = function ( a )
return Multilingual.frame:expandTemplate{ title = a }
end
lucky, s = pcall( f, source )
if lucky then
r = s
end
end
end
return r
end -- fill()
local find = function ( ask, alien )
-- Derive language code from name
-- Precondition:
-- ask -- language name, downcased
-- alien -- language code of ask
-- Postcondition:
-- nil, or string
local codes = mw.language.fetchLanguageNames( alien, "all" )
local r
for k, v in pairs( codes ) do
if mw.ustring.lower( v ) == ask then
r = k
break -- for k, v
end
end -- for k, v
if not r then
r = Multilingual.fair( ask )
end
return r
end -- find()
local fold = function ( frame )
-- Merge template and #invoke arglist
-- Precondition:
-- frame -- template frame
-- Postcondition:
-- table, with combined arglist
local r = { }
local f = function ( apply )
if type( apply ) == "table" and
type( apply.args ) == "table" then
for k, v in pairs( apply.args ) do
v = mw.text.trim( v )
if v ~= "" then
r[ tostring( k ) ] = v
end
end -- for k, v
end
end -- f()
f( frame:getParent() )
f( frame )
return r
end -- fold()
User.favorize = function ( accept, frame )
-- Guess user language
-- Precondition:
-- accept -- sequence table, with offered ISO 639 etc. codes
-- frame -- frame, if available
-- Postcondition:
-- Returns string with best code, or nil
if not ( User.self or User.langs ) then
if not User.trials then
User.tell = mw.message.new( User.sniffer )
if User.tell:exists() then
User.trials = { }
if not Multilingual.frame then
if frame then
Multilingual.frame = frame
else
Multilingual.frame = mw.getCurrentFrame()
end
end
User.sin = Multilingual.frame:callParserFunction( "int",
User.sniffer )
else
User.langs = true
end
end
if User.sin then
local order = { }
local post = { }
local three = { }
local unfold = { }
local s, sin
for i = 1, #accept do
s = accept[ i ]
if not User.trials[ s ] then
if #s > 2 then
if s:find( "-", 3, true ) then
table.insert( unfold, s )
else
table.insert( three, s )
end
else
if Multilingual.prefer[ s ] then
table.insert( order, s )
else
table.insert( post, s )
end
end
end
end -- for i
for i = 1, #post do
table.insert( order, post[ i ] )
end -- for i
for i = 1, #three do
table.insert( order, three[ i ] )
end -- for i
for i = 1, #unfold do
table.insert( order, unfold[ i ] )
end -- for i
for i = 1, #order do
s = order[ i ]
sin = User.tell:inLanguage( s ):plain()
if sin == User.sin then
User.self = s
break -- for i
else
User.trials[ s ] = true
end
end -- for i
end
end
return User.self
end -- User.favorize()
Multilingual.fair = function ( ask )
-- Format language specification according to RFC 5646 etc.
-- Precondition:
-- ask -- string or table, as created by .getLang()
-- Postcondition:
-- Returns string, or false
local s = type( ask )
local q, r
if s == "table" then
q = ask
elseif s == "string" then
q = Multilingual.getLang( ask )
end
if q and
q.legal and
mw.language.isKnownLanguageTag( q.base ) then
r = q.base
if q.n > 1 then
local order = { "extlang",
"script",
"region",
"other",
"extension" }
for i = 1, #order do
s = q[ order[ i ] ]
if s then
r = string.format( "%s-%s", r, s )
end
end -- for i
end
end
return r or false
end -- Multilingual.fair()
Multilingual.fallback = function ( able, another )
-- Is another language suitable as replacement?
-- Precondition:
-- able -- language version specifier to be supported
-- another -- language specifier of a possible replacement,
-- or not to retrieve a fallback table
-- Postcondition:
-- Returns boolean, or table with fallback codes
local r
if type( able ) == "string" and #able > 0 then
if type( another ) == "string" and #another > 0 then
if able == another then
r = true
else
local s = Multilingual.getBase( able )
if s == another then
r = true
else
local others = mw.language.getFallbacksFor( s )
r = feasible( another, others )
end
end
else
local s = Multilingual.getBase( able )
if s then
r = mw.language.getFallbacksFor( s )
if r[ 1 ] == "en" then
local d = fetchISO639( "fallback" )
if type( d ) == "table" and
type( d[ s ] ) == "string" then
r = mw.text.split( d[ s ], "|" )
table.insert( r, "en" )
end
end
end
end
end
return r or false
end -- Multilingual.fallback()
Multilingual.findCode = function ( ask )
-- Retrieve code of local (current project or English) language name
-- Precondition:
-- ask -- string, with presumable language name
-- A code itself will be identified, too.
-- Postcondition:
-- Returns string, or false
local seek = mw.text.trim( ask )
local r = false
if #seek > 1 then
if seek:find( "[", 1, true ) then
local wlink = fetch( "WLink" )
if wlink and
type( wlink.getPlain ) == "function" then
seek = wlink.getPlain( seek )
end
end
seek = mw.ustring.lower( seek )
if Multilingual.isLang( seek ) then
r = Multilingual.fair( seek )
else
local collection = favorites()
for i = 1, #collection do
r = find( seek, collection[ i ] )
if r then
break -- for i
end
end -- for i
end
end
return r
end -- Multilingual.findCode()
Multilingual.fix = function ( attempt )
-- Fix frequently mistaken language code
-- Precondition:
-- attempt -- string, with presumable language code
-- Postcondition:
-- Returns string with correction, or false if no problem known
local r = fetchISO639( "correction" )[ attempt:lower() ]
return r or false
end -- Multilingual.fix()
Multilingual.format = function ( apply, alien, alter, active, alert,
frame, assembly, adjacent, ahead )
-- Format one or more languages
-- Precondition:
-- apply -- string with language list or item
-- alien -- language of the answer
-- -- nil, false, "*": native
-- -- "!": current project
-- -- "#": code, downcased, space separated
-- -- "-": code, mixcase, space separated
-- -- any valid code
-- alter -- capitalize, if "c"; downcase all, if "d"
-- capitalize first item only, if "f"
-- downcase every first word only, if "m"
-- active -- link items, if true
-- alert -- string with category title in case of error
-- frame -- if available
-- assembly -- string with split pattern, if list expected
-- adjacent -- string with list separator, else assembly
-- ahead -- string to prepend first element, if any
-- Postcondition:
-- Returns string, or false if apply empty
local r = false
if apply then
local slang
if assembly then
local bucket = mw.text.split( apply, assembly )
local shift = alter
local separator
if adjacent then
separator = adjacent
elseif alien == "#" or alien == "-" then
separator = " "
else
separator = assembly
end
for k, v in pairs( bucket ) do
slang = Multilingual.format( v, alien, shift, active,
alert )
if slang then
if r then
r = string.format( "%s%s%s",
r, separator, slang )
else
r = slang
if shift == "f" then
shift = "d"
end
end
end
end -- for k, v
if r and ahead then
r = ahead .. r
end
else
local single = mw.text.trim( apply )
if single == "" then
r = false
else
local lapsus, slot
slang = Multilingual.findCode( single )
if slang then
if alien == "-" then
r = slang
elseif alien == "#" then
r = slang:lower()
else
r = Multilingual.getName( slang, alien )
if active then
slot = fill( slang, false, frame )
if slot then
local wlink = fetch( "WLink" )
if wlink and
type( wlink.getTarget )
== "function" then
slot = wlink.getTarget( slot )
end
else
lapsus = alert
end
end
end
else
r = single
if active then
local title = mw.title.makeTitle( 0, single )
if title.exists then
slot = single
end
end
lapsus = alert
end
if not r then
r = single
elseif alter == "c" or alter == "f" then
r = mw.ustring.upper( mw.ustring.sub( r, 1, 1 ) )
.. mw.ustring.sub( r, 2 )
elseif alter == "d" then
if Multilingual.isMinusculable( slang, r ) then
r = mw.ustring.lower( r )
end
elseif alter == "m" then
if Multilingual.isMinusculable( slang, r ) then
r = mw.ustring.lower( mw.ustring.sub( r, 1, 1 ) )
.. mw.ustring.sub( r, 2 )
end
end
if slot then
if r == slot then
r = string.format( "[[%s]]", r )
else
r = string.format( "[[%s|%s]]", slot, r )
end
end
if lapsus and alert then
r = string.format( "%s[[Category:%s]]", r, alert )
end
end
end
end
return r
end -- Multilingual.format()
Multilingual.getBase = function ( ask )
-- Retrieve base language from possibly combined ISO language code
-- Precondition:
-- ask -- language code
-- Postcondition:
-- Returns string, or false
local r
if ask then
local slang = ask:match( "^%s*(%a%a%a?)-?%a*%s*$" )
if slang then
r = slang:lower()
else
r = false
end
else
r = false
end
return r
end -- Multilingual.getBase()
Multilingual.getLang = function ( ask )
-- Retrieve components of a RFC 5646 language code
-- Precondition:
-- ask -- language code with subtags
-- Postcondition:
-- Returns table with formatted subtags
-- .base
-- .region
-- .script
-- .suggest
-- .year
-- .extension
-- .other
-- .n
local tags = mw.text.split( ask, "-" )
local s = tags[ 1 ]
local r
if s:match( "^%a%a%a?$" ) then
r = { base = s:lower(),
legal = true,
n = #tags }
for i = 2, r.n do
s = tags[ i ]
if #s == 2 then
if r.region or not s:match( "%a%a" ) then
r.legal = false
else
r.region = s:upper()
end
elseif #s == 4 then
if s:match( "%a%a%a%a" ) then
r.legal = ( not r.script )
r.script = s:sub( 1, 1 ):upper() ..
s:sub( 2 ):lower()
elseif s:match( "20%d%d" ) or
s:match( "1%d%d%d" ) then
r.legal = ( not r.year )
r.year = s
else
r.legal = false
end
elseif #s == 3 then
if r.extlang or not s:match( "%a%a%a" ) then
r.legal = false
else
r.extlang = s:lower()
end
elseif #s == 1 then
s = s:lower()
if s:match( "[tux]" ) then
r.extension = s
for k = i + 1, r.n do
s = tags[ k ]
if s:match( "^%w+$" ) then
r.extension = string.format( "%s-%s",
r.extension, s )
else
r.legal = false
end
end -- for k
else
r.legal = false
end
break -- for i
else
r.legal = ( not r.other ) and
s:match( "%a%a%a" )
r.other = s:lower()
end
if not r.legal then
break -- for i
end
end -- for i
if r.legal then
r.suggest = Multilingual.fix( r.base )
if r.suggest then
r.legal = false
end
end
else
r = { legal = false }
end
if not r.legal then
local cnf = fetch( "Multilingual", "config" )
if cnf and type( cnf.scream ) == "string" then
r.scream = cnf.scream
end
end
return r
end -- Multilingual.getLang()
Multilingual.getName = function ( ask, alien )
-- Which name is assigned to this language code?
-- Precondition:
-- ask -- language code
-- alien -- language of the answer
-- -- nil, false, "*": native
-- -- "!": current project
-- -- any valid code
-- Postcondition:
-- Returns string, or false
local r
if ask then
local slang = alien
local tLang
if slang then
if slang == "*" then
slang = Multilingual.fair( ask )
elseif slang == "!" then
slang = favorites()[ 1 ]
else
slang = Multilingual.fair( slang )
end
else
slang = Multilingual.fair( ask )
end
if not slang then
slang = ask or "?????"
end
slang = slang:lower()
tLang = fetch( "Multilingual", "names" )
if tLang then
tLang = tLang[ slang ]
if tLang then
r = tLang[ ask ]
end
end
if not r then
if not Multilingual.ext.tMW then
Multilingual.ext.tMW = { }
end
tLang = Multilingual.ext.tMW[ slang ]
if tLang == nil then
tLang = mw.language.fetchLanguageNames( slang )
if tLang then
Multilingual.ext.tMW[ slang ] = tLang
else
Multilingual.ext.tMW[ slang ] = false
end
end
if tLang then
r = tLang[ ask ]
end
end
if not r then
r = mw.language.fetchLanguageName( ask:lower(), slang )
if r == "" then
r = false
end
end
else
r = false
end
return r
end -- Multilingual.getName()
Multilingual.i18n = function ( available, alt, frame )
-- Select translatable message
-- Precondition:
-- available -- table, with mapping language code ./. text
-- alt -- string|nil|false, with fallback text
-- frame -- frame, if available
-- Returns
-- 1. string|nil|false, with selected message
-- 2. string|nil|false, with language code
local r1, r2
if type( available ) == "table" then
local codes = { }
local trsl = { }
local slang
for k, v in pairs( available ) do
if type( k ) == "string" and
type( v ) == "string" then
slang = mw.text.trim( k:lower() )
table.insert( codes, slang )
trsl[ slang ] = v
end
end -- for k, v
slang = Multilingual.userLang( codes, frame )
if slang and trsl[ slang ] then
r1 = mw.text.trim( trsl[ slang ] )
if r1 == "" then
r1 = false
else
r2 = slang
end
end
end
if not r1 and type( alt ) == "string" then
r1 = mw.text.trim( alt )
if r1 == "" then
r1 = false
end
end
return r1, r2
end -- Multilingual.i18n()
Multilingual.int = function ( access, alien, apply )
-- Translated system message
-- Precondition:
-- access -- message ID
-- alien -- language code
-- apply -- nil, or sequence table with parameters $1, $2, ...
-- Postcondition:
-- Returns string, or false
local o = mw.message.new( access )
local r
if o:exists() then
if type( alien ) == "string" then
o:inLanguage( alien:lower() )
end
if type( apply ) == "table" then
o:params( apply )
end
r = o:plain()
end
return r or false
end -- Multilingual.int()
Multilingual.isLang = function ( ask, additional )
-- Could this be an ISO language code?
-- Precondition:
-- ask -- language code
-- additional -- true, if Wiki codes like "simple" permitted
-- Postcondition:
-- Returns boolean
local r, s
if additional then
s = ask
else
s = Multilingual.getBase( ask )
end
if s then
r = mw.language.isKnownLanguageTag( s )
if r then
r = not Multilingual.fix( s )
elseif additional then
r = Multilingual.exotic[ s ] or false
end
else
r = false
end
return r
end -- Multilingual.isLang()
Multilingual.isLangWiki = function ( ask )
-- Could this be a Wiki language version?
-- Precondition:
-- ask -- language version specifier
-- Postcondition:
-- Returns boolean
local r
local s = Multilingual.getBase( ask )
if s then
r = mw.language.isSupportedLanguage( s ) or
Multilingual.exotic[ ask ]
else
r = false
end
return r
end -- Multilingual.isLangWiki()
Multilingual.isMinusculable = function ( ask, assigned )
-- Could this language name become downcased?
-- Precondition:
-- ask -- language code, or nil
-- assigned -- language name, or nil
-- Postcondition:
-- Returns boolean
local r = true
if ask then
local cnf = fetch( "Multilingual", "config" )
if cnf then
local s = string.format( " %s ", ask:lower() )
if type( cnf.stopMinusculization ) == "string"
and cnf.stopMinusculization:find( s, 1, true ) then
r = false
end
if r and assigned
and type( cnf.seekMinusculization ) == "string"
and cnf.seekMinusculization:find( s, 1, true )
and type( cnf.scanMinusculization ) == "string" then
local scan = assigned:gsub( "[%(%)]", " " ) .. " "
if not scan:find( cnf.scanMinusculization ) then
r = false
end
end
end
end
return r
end -- Multilingual.isMinusculable()
Multilingual.isRTL = function ( ask )
-- Check whether language is written right-to-left
-- Precondition:
-- ask -- string, with language (or script) code
-- Returns true, if right-to-left
local r
Multilingual.rtl = Multilingual.rtl or { }
r = Multilingual.rtl[ ask ]
if type( r ) ~= "boolean" then
local bib = fetch( "ISO15924" )
if type( bib ) == "table" and
type( bib.isRTL ) == "function" then
r = bib.isRTL( ask )
else
r = mw.language.new( ask ):isRTL()
end
Multilingual.rtl[ ask ] = r
end
return r
end -- Multilingual.isRTL()
Multilingual.message = function ( arglist, frame )
-- Show text in best match of user language like system message
-- Precondition:
-- arglist -- template arguments
-- frame -- frame, if available
-- Postcondition:
-- Returns string with appropriate text
local r
if type( arglist ) == "table" then
local t = { }
local m, p, save
for k, v in pairs( arglist ) do
if type( k ) == "string" and
type( v ) == "string" then
v = mw.text.trim( v )
if v ~= "" then
if k:match( "^%l%l" ) then
t[ k ] = v
elseif k:match( "^%$%d$" ) and k ~= "$0" then
p = p or { }
k = tonumber( k:match( "^%$(%d)$" ) )
p[ k ] = v
if not m or k > m then
m = k
end
end
end
end
end -- for k, v
if type( arglist[ "-" ] ) == "string" then
save = arglist[ arglist[ "-" ] ]
end
r = Multilingual.i18n( t, save, frame )
if p and r and r:find( "$", 1, true ) then
t = { }
for i = 1, m do
t[ i ] = p[ i ] or ""
end -- for i
r = mw.message.newRawMessage( r, t ):plain()
end
end
return r or ""
end -- Multilingual.message()
Multilingual.sitelink = function ( all, frame )
-- Make link at local or other site with optimal linktext translation
-- Precondition:
-- all -- string or table or number, item ID or entity
-- frame -- frame, if available
-- Postcondition:
-- Returns string with any helpful internal link, or plain text
local s = type( all )
local object, r
if s == "table" then
object = all
elseif s == "string" then
object = mw.wikibase.getEntity( all )
elseif s == "number" then
object = mw.wikibase.getEntity( string.format( "Q%d", all ) )
end
if type( object ) == "table" then
local collection = object.sitelinks
local entry
s = false
if type( collection ) == "table" then
Multilingual.site = Multilingual.site or
mw.wikibase.getGlobalSiteId()
entry = collection[ Multilingual.site ]
if entry then
s = ":" .. entry.title
elseif collection.enwiki then
s = "w:en:" .. collection.enwiki.title
end
end
r = Multilingual.wikibase( object, "labels", frame )
if s then
if s == ":" .. r then
r = string.format( "[[%s]]", s )
else
r = string.format( "[[%s|%s]]", s, r )
end
end
end
return r or ""
end -- Multilingual.sitelink()
Multilingual.tabData = function ( access, at, alt, frame )
-- Retrieve translated keyword from commons:Data:****.tab
-- Precondition:
-- access -- string, with page identification on Commons
-- at -- string, with keyword
-- alt -- string|nil|false, with fallback text
-- frame -- frame, if available
-- Returns
-- 1. string|nil|false, with selected message
-- 2. language code, or "error"
local data = fetchData( access )
local r1, r2
if type( data ) == "table" then
if type( at ) == "string" then
local seek = mw.text.trim( at )
if seek == "" then
r1 = "EMPTY Multilingual.tabData key"
else
local e, poly
for i = 1, #data do
e = data[ i ]
if type( e ) == "table" then
if e[ 1 ] == seek then
if type( e[ 2 ] ) == "table" then
poly = e[ 2 ]
else
r1 = "INVALID Multilingual.tabData bad #"
.. tostring( i )
end
break -- for i
end
else
break -- for i
end
end -- for i
if poly then
data = poly
else
r1 = "UNKNOWN Multilingual.tabData key: " .. seek
end
end
else
r1 = "INVALID Multilingual.tabData key"
end
else
r1 = data
end
if r1 then
r2 = "error"
elseif data then
r1, r2 = Multilingual.i18n( data, alt, frame )
r2 = r2 or "error"
end
return r1, r2
end -- Multilingual.tabData()
Multilingual.userLang = function ( accept, frame )
-- Try to support user language by application
-- Precondition:
-- accept -- string or table
-- space separated list of available ISO 639 codes
-- Default: project language, or English
-- frame -- frame, if available
-- Postcondition:
-- Returns string with appropriate code
local s = type( accept )
local codes, r, slang
if s == "string" then
codes = mw.text.split( accept:lower(), "%s+" )
elseif s == "table" then
codes = { }
for i = 1, #accept do
s = accept[ i ]
if type( s ) == "string" and
s ~= "" then
table.insert( codes, s:lower() )
end
end -- for i
end
slang = User.favorize( codes, frame )
if slang then
if feasible( slang, codes ) then
r = slang
elseif slang:find( "-", 1, true ) then
slang = Multilingual.getBase( slang )
if feasible( slang, codes ) then
r = slang
end
end
if not r then
local others = mw.language.getFallbacksFor( slang )
for i = 1, #others do
slang = others[ i ]
if feasible( slang, codes ) then
r = slang
break -- for i
end
end -- for i
end
end
if not r then
local back = favorites()
for i = 1, #back do
slang = back[ i ]
if feasible( slang, codes ) then
r = slang
break -- for i
end
end -- for i
if not r and codes[ 1 ] then
r = codes[ 1 ]
end
end
return r or favorites()[ 1 ]
end -- Multilingual.userLang()
Multilingual.userLangCode = function ()
-- Guess a user language code
-- Postcondition:
-- Returns code of current best guess
return User.self or favorites()[ 1 ]
end -- Multilingual.userLangCode()
Multilingual.wikibase = function ( all, about, attempt, frame )
-- Optimal translation of wikibase component
-- Precondition:
-- all -- string or table, object ID or entity
-- about -- boolean, true "descriptions" or false "labels"
-- attempt -- string or not, code of preferred language
-- frame -- frame, if available
-- Postcondition:
-- Returns
-- 1. string, with selected message
-- 2. string, with language code, or not
local s = type( all )
local object, r, r2
if s == "table" then
object = all
elseif s == "string" then
object = mw.wikibase.getEntity( all )
end
if type( object ) == "table" then
if about and about ~= "labels" then
s = "descriptions"
else
s = "labels"
end
object = object[ s ]
if type( object ) == "table" then
if object[ attempt ] then
r = object[ attempt ].value
r2 = attempt
else
local poly
for k, v in pairs( object ) do
poly = poly or { }
poly[ k ] = v.value
end -- for k, v
if poly then
r, r2 = Multilingual.i18n( poly, nil, frame )
end
end
end
end
return r or "", r2
end -- Multilingual.wikibase()
Failsafe.failsafe = function ( atleast )
-- Retrieve versioning and check for compliance
-- Precondition:
-- atleast -- string, with required version
-- or wikidata|item|~|@ or false
-- Postcondition:
-- Returns string -- with queried version/item, also if problem
-- false -- if appropriate
-- 2020-08-17
local since = atleast
local last = ( since == "~" )
local linked = ( since == "@" )
local link = ( since == "item" )
local r
if last or link or linked or since == "wikidata" then
local item = Failsafe.item
since = false
if type( item ) == "number" and item > 0 then
local suited = string.format( "Q%d", item )
if link then
r = suited
else
local entity = mw.wikibase.getEntity( suited )
if type( entity ) == "table" then
local seek = Failsafe.serialProperty or "P348"
local vsn = entity:formatPropertyValues( seek )
if type( vsn ) == "table" and
type( vsn.value ) == "string" and
vsn.value ~= "" then
if last and vsn.value == Failsafe.serial then
r = false
elseif linked then
if mw.title.getCurrentTitle().prefixedText
== mw.wikibase.getSitelink( suited ) then
r = false
else
r = suited
end
else
r = vsn.value
end
end
end
end
end
end
if type( r ) == "nil" then
if not since or since <= Failsafe.serial then
r = Failsafe.serial
else
r = false
end
end
return r
end -- Failsafe.failsafe()
-- Export
local p = { }
p.fair = function ( frame )
-- Format language code
-- 1 -- language code
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.fair( s ) or ""
end -- p.fair
p.fallback = function ( frame )
-- Is another language suitable as replacement?
-- 1 -- language version specifier to be supported
-- 2 -- language specifier of a possible replacement
local s1 = mw.text.trim( frame.args[ 1 ] or "" )
local s2 = mw.text.trim( frame.args[ 2 ] or "" )
local r = Multilingual.fallback( s1, s2 )
if type( r ) == "table" then
r = r[ 1 ]
else
r = r and "1" or ""
end
return r
end -- p.fallback
p.findCode = function ( frame )
-- Retrieve language code from language name
-- 1 -- name in current project language
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.findCode( s ) or ""
end -- p.findCode
p.fix = function ( frame )
local r = frame.args[ 1 ]
if r then
r = Multilingual.fix( mw.text.trim( r ) )
end
return r or ""
end -- p.fix
p.format = function ( frame )
-- Format one or more languages
-- 1 -- language list or item
-- slang -- language of the answer, if not native
-- * -- native
-- ! -- current project
-- any valid code
-- shift -- capitalize, if "c"; downcase, if "d"
-- capitalize first item only, if "f"
-- link -- 1 -- link items
-- scream -- category title in case of error
-- split -- split pattern, if list expected
-- separator -- list separator, else split
-- start -- prepend first element, if any
local r
local link
if frame.args.link == "1" then
link = true
end
r = Multilingual.format( frame.args[ 1 ],
frame.args.slang,
frame.args.shift,
link,
frame.args.scream,
frame,
frame.args.split,
frame.args.separator,
frame.args.start )
return r or ""
end -- p.format
p.getBase = function ( frame )
-- Retrieve base language from possibly combined ISO language code
-- 1 -- code
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.getBase( s ) or ""
end -- p.getBase
p.getName = function ( frame )
-- Retrieve language name from ISO language code
-- 1 -- code
-- 2 -- language to be used for the answer, if not native
-- ! -- current project
-- * -- native
-- any valid code
local s = mw.text.trim( frame.args[ 1 ] or "" )
local slang = frame.args[ 2 ]
local r
Multilingual.frame = frame
if slang then
slang = mw.text.trim( slang )
end
r = Multilingual.getName( s, slang )
return r or ""
end -- p.getName
p.int = function ( frame )
-- Translated system message
-- 1 -- message ID
-- lang -- language code
-- $1, $2, ... -- parameters
local sysMsg = frame.args[ 1 ]
local r
if sysMsg then
sysMsg = mw.text.trim( sysMsg )
if sysMsg ~= "" then
local n = 0
local slang = frame.args.lang
local i, params, s
if slang == "" then
slang = false
end
for k, v in pairs( frame.args ) do
if type( k ) == "string" then
s = k:match( "^%$(%d+)$" )
if s then
i = tonumber( s )
if i > n then
n = i
end
end
end
end -- for k, v
if n > 0 then
local s
params = { }
for i = 1, n do
s = frame.args[ "$" .. tostring( i ) ] or ""
table.insert( params, s )
end -- for i
end
r = Multilingual.int( sysMsg, slang, params )
end
end
return r or ""
end -- p.int
p.isLang = function ( frame )
-- Could this be an ISO language code?
-- 1 -- code
local s = mw.text.trim( frame.args[ 1 ] or "" )
local lucky, r = pcall( Multilingual.isLang, s )
return r and "1" or ""
end -- p.isLang
p.isLangWiki = function ( frame )
-- Could this be a Wiki language version?
-- 1 -- code
-- Returns non-empty, if possibly language version
local s = mw.text.trim( frame.args[ 1 ] or "" )
local lucky, r = pcall( Multilingual.isLangWiki, s )
return r and "1" or ""
end -- p.isLangWiki
p.isRTL = function ( frame )
-- Check whether language is written right-to-left
-- 1 -- string, with language code
-- Returns non-empty, if right-to-left
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.isRTL( s ) and "1" or ""
end -- p.isRTL()
p.message = function ( frame )
-- Translation of text element
return Multilingual.message( fold( frame ), frame )
end -- p.message
p.sitelink = function ( frame )
-- Make link at local or other site with optimal linktext translation
-- 1 -- item ID
local s = mw.text.trim( frame.args[ 1 ] or "" )
local r
if s:match( "^%d+$") then
r = tonumber( s )
elseif s:match( "^Q%d+$") then
r = s
end
if r then
r = Multilingual.sitelink( r, frame )
end
return r or s
end -- p.sitelink
p.tabData = function ( frame )
-- Retrieve best message text from Commons Data
-- 1 -- page identification on Commons
-- 2 -- keyword
-- alt -- fallback text
local suite = frame.args[ 1 ]
local seek = frame.args[ 2 ]
local salt = frame.args.alt
local r = Multilingual.tabData( suite, seek, salt, frame )
return r
end -- p.tabData
p.userLang = function ( frame )
-- Which language does the current user prefer?
-- 1 -- space separated list of available ISO 639 codes
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.userLang( s, frame )
end -- p.userLang
p.wikibase = function ( frame )
-- Optimal translation of wikibase component
-- 1 -- object ID
-- 2 -- 1 for "descriptions", 0 for "labels".
-- or either "descriptions" or "labels"
local r
local s = mw.text.trim( frame.args[ 1 ] or "" )
if s ~= "" then
local s2 = mw.text.trim( frame.args[ 2 ] or "0" )
local slang = mw.text.trim( frame.args.lang or "" )
local large = ( s2 ~= "" and s2 ~= "0" )
if slang == "" then
slang = false
end
r = Multilingual.wikibase( s, large, slang, frame )
end
return r or ""
end -- p.wikibase
p.failsafe = function ( frame )
-- Versioning interface
local s = type( frame )
local since
if s == "table" then
since = frame.args[ 1 ]
elseif s == "string" then
since = frame
end
if since then
since = mw.text.trim( since )
if since == "" then
since = false
end
end
return Failsafe.failsafe( since ) or ""
end -- p.failsafe()
p.Multilingual = function ()
return Multilingual
end -- p.Multilingual
return p
6fc38809302c05872fef2c1602e2d4a3be5143ec
Template:ISO 3166 code
10
184
421
2022-08-09T02:50:13Z
wikipedia>Neveselbert
0
safesubst
wikitext
text/x-wiki
{{safesubst<noinclude/>:#invoke:ISO 3166|code|{{{1}}}|{{{2|}}}}}<noinclude>
{{Documentation|content={{ISO 3166 conversion template doc}}}}
</noinclude>
06f8325798ef5cb3ed4eb035d562ab9f8656cc6c
Template:Country2nationality
10
183
419
2022-08-09T02:51:23Z
wikipedia>Neveselbert
0
safesubst
wikitext
text/x-wiki
<includeonly>{{safesubst<noinclude/>:#ifeq:{{safesubst<noinclude/>:#invoke:String|len|s={{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}}}}|2|{{safesubst<noinclude/>:Iso2nationality| {{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}} }}| {{safesubst<noinclude/>:#if:{{{1|}}}| {{safesubst<noinclude/>:#switch: {{{1}}} | England = English | Scotland = Scottish | Wales = Welsh | Catalonia = Catalan | Kosovo = Kosovan }}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9c6b20fc59b2033477fb4dea0ffd1984bd673368
Module:Find country
828
198
450
2022-08-09T10:48:32Z
wikipedia>Neveselbert
0
'US', 'U.S.',
Scribunto
text/plain
--[[ v1.00
Test the string against the list of countries/continents.
Return the first word which matches a country/continent name ...
unless the "match=" parameter specifies a different match.
If there is no match, then return an empty string ... unless
the "nomatch" parameter specifies something different
]]
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- config
local nomatch = ""
local matchnum = 1
local countryList = {
'South Africa',
'the Central African Republic',
'Central African Republic',
'Africa',
'Antarctica',
'Central Asia',
'South Asia',
'South East Asia',
'Southeast Asia',
'Asia',
'the Caribbean',
'Caribbean',
'Eurasia',
'Europe',
'the Middle East',
'Middle East',
'Central America',
'North America',
'South America',
'Oceania',
'the Americas',
'Afghanistan',
'Albania',
'Algeria',
'American Samoa',
'Andorra',
'Angola',
'Anguilla',
'Antigua and Barbuda',
'Argentina',
'Armenia',
'Aruba',
'Australia',
'the Austrian Empire',
'Austrian Empire',
'Austria-Hungary',
'Austria',
'Azerbaijan',
'the Bahamas',
'Bahamas',
'Bahrain',
'Bangladesh',
'Barbados',
'Belarus',
'Belgium',
'Belize',
'Benin',
'Bermuda',
'Bhutan',
'Bolivia',
'Bosnia and Herzegovina',
'Botswana',
'Brazil',
'Brunei Darussalam',
'Brunei',
'Bulgaria',
'Burkina Faso',
'Burundi',
'Cambodia',
'Cameroon',
'Canada',
'Cape Verde',
'the Cayman Islands',
'Cayman Islands',
'Chad',
'Chile',
"the People's Republic of China",
"People's Republic of China",
'China PR',
'PR China',
'China',
'Colombia',
'Comoros',
'the Republic of the Congo',
'the Democratic Republic of the Congo',
'Democratic Republic of the Congo',
'Congo DR',
'DR Congo',
'DRC',
'the Congo',
'Congo',
'Cook Islands',
'Costa Rica',
'Croatia',
'Cuba',
'Curaçao',
'Curacao',
'Cyprus',
'the Czech Republic',
'Czech Republic',
'Czechia',
'Denmark',
'Djibouti',
'the Dominican Republic',
'Dominican Republic',
'Dominica',
'East Timor',
'Timor-Leste',
'Ecuador',
'Egypt',
'El Salvador',
'England',
'Eritrea',
'Estonia',
'Eswatini',
'Ethiopia',
'the Falkland Islands',
'Falkland Islands',
'the Faroe Islands',
'Faroe Islands',
'Fiji',
'Finland',
'France',
'Gabon',
'the Gambia',
'Gambia',
'Georgia',
'Germany',
'Ghana',
'Gibraltar',
'Great Britain',
'Britain',
'Greece',
'Grenada',
'Guam',
'Guatemala',
'Papua New Guinea',
'Equatorial Guinea',
'Guinea-Bissau',
'Guinea',
'Guyana',
'Haiti',
'Honduras',
'Hong Kong',
'Hungary',
'Iceland',
'India',
'Indonesia',
'Iran',
'Iraq',
'Northern Ireland',
'the Republic of Ireland',
'Republic of Ireland',
'Ireland',
'Israel',
'Italy',
'Ivory Coast',
"Côte d'Ivoire",
'Jamaica',
'Japan',
'Jordan',
'Kazakhstan',
'Kenya',
'Kiribati',
'Kosovo',
'the Republic of Kosovo',
'Republic of Kosovo',
'Kuwait',
'Kyrgyzstan',
'the Kyrgyz Republic',
'Kyrgyz Republic',
"the Lao People's Democratic Republic",
"Lao People's Democratic Republic",
'Laos',
'Latvia',
'Lebanon',
'Lesotho',
'Liberia',
'Libya',
'Liechtenstein',
'Lithuania',
'Luxembourg',
'Macau',
'the Republic of Macedonia',
'Republic of Macedonia',
'North Macedonia',
'Macedonia',
'Madagascar',
'Malawi',
'Malaysia',
'the Maldives',
'Maldives',
'Mali',
'Malta',
'the Marshall Islands',
'Marshall Islands',
'Mauritania',
'Mauritius',
'Mexico',
'the Federated States of Micronesia',
'Federated States of Micronesia',
'Micronesia',
'FSM',
'Moldova',
'Monaco',
'Mongolia',
'Montenegro',
'Montserrat',
'Morocco',
'Mozambique',
'Myanmar',
'Namibia',
'Nauru',
'Nepal',
'the Netherlands',
'Netherlands',
'New Caledonia',
'New Zealand',
'Nicaragua',
'Nigeria',
'Niger',
'North Korea',
"the People's Democratic Republic of Korea",
"the Democratic People's Republic of Korea",
"Democratic People's Republic of Korea",
"People's Democratic Republic of Korea",
'DPR Korea',
'Korea DPR',
'Norway',
'Oman',
'the Ottoman Empire',
'Ottoman Empire',
'Ottoman Egypt',
'Pakistan',
'Palau',
'Mandatory Palestine',
'Palestine',
'the Palestinian territories',
'Palestinian territories',
'Panama',
'Paraguay',
'Peru',
'the Philippines',
'Philippines',
'Poland',
'Portugal',
'Puerto Rico',
'the Spanish Virgin Islands',
'Spanish Virgin Islands',
'Qatar',
'Romania',
'the Russian Empire',
'Russian Empire',
'the Russian Federation',
'Russian Federation',
'Russia',
'Rwanda',
'Saint Kitts and Nevis',
'Saint Lucia',
'Saint Vincent and the Grenadines',
'Western Samoa',
'Samoa',
'San Marino',
'São Tomé and Príncipe',
'São Tomé and Príncipe',
'Sao Tome and Principe',
'Saudi Arabia',
'Scotland',
'Senegal',
'Serbia',
'Seychelles',
'Sierra Leone',
'Singapore',
'Slovakia',
'Slovenia',
'the Solomon Islands',
'Solomon Islands',
'Somalia',
'South Korea',
'the Republic of Korea',
'Korea Republic',
'South Sudan',
'Sudan',
'Spain',
'Sri Lanka',
'Suriname',
'Swaziland',
'Sweden',
'Switzerland',
'Syria',
'Tahiti',
'the Republic of China',
'Republic of China',
'Taiwan',
'Tajikistan',
'Tanzania',
'Thailand',
'Togo',
'Tonga',
'Trinidad and Tobago',
'Trinidad',
'Tobago',
'Tunisia',
'Turkey',
'Turkmenistan',
'Turks and Caicos Islands',
'Tuvalu',
'Uganda',
'Ukraine',
'the United Arab Emirates',
'the UAE',
'the U.A.E.',
'United Arab Emirates',
'UAE',
'U.A.E.',
'the United Kingdom',
'United Kingdom',
'the UK',
'the U.K.',
'UK',
'U.K.',
'the United States of America',
'the United States',
'the USA',
'the U.S.A.',
'United States of America',
'United States',
'US',
'U.S.',
'USA',
'U.S.A.',
'America',
'Uruguay',
'Uzbekistan',
'Vanuatu',
'Venezuela',
'Vietnam',
'the British Virgin Islands',
'British Virgin Islands',
'UK Virgin Islands',
'U.K. Virgin Islands',
'the United States Virgin Islands',
'the US Virgin Islands',
'the U.S. Virgin Islands',
'United States Virgin Islands',
'US Virgin Islands',
'U.S. Virgin Islands',
'the Virgin Islands',
'Virgin Islands',
'Wales',
'Yemen',
'Zambia',
'Zimbabwe',
'Find country/testcases'
}
-- returns the name of a country that is found in the string
-- ... or an empty string if there is no match
function findcountryinstring(str)
nMatches = 0
myMatches ={}
str=" " .. str:gsub("^%s*(.-)%s*$", "%1") .. " "
-- check agaist each country
-- if there is a match, then return that country
for i, thiscountry in ipairs(countryList) do
if mw.ustring.find(str, thiscountry) then
nMatches = nMatches + 1
myMatches[nMatches] = thiscountry
end
end
if (nMatches == 0) then
-- none of the title words matches a whole country
return nomatch
end
if ((matchnum >= 1) and (matchnum <= nMatches)) then
return myMatches[matchnum]
end
if (matchnum < 0) then
matchnum = matchnum + 1 -- so that -1 is the last match etc
if ((matchnum + nMatches) >= 1) then
return myMatches[matchnum + nMatches]
end
end
-- if we get here, we have not found a match at the position specified by "matchnum"
return nomatch
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
if (args['nomatch'] ~= nil) then
nomatch = args['nomatch']
end
-- by default, we return the first match
-- but the optional "C" paarmeter sets the "matchnum" variable, which
-- * for a positive matchnum "n", returns the nth match if it exists
-- * for a positive matchnum "n", returns (if it exists) the nth match
-- counting backwards from the end.
-- So "match=-1" returns the last match
-- and "match=-3" returns the 3rd-last match
if (args['match'] ~= nil) then
matchnum = tonumber(args['match'])
if ((matchnum == nil) or (matchnum == 0)) then
matchnum = 1
end
end
-- by default, we use the current page
-- but if the "string=" parameters is supplied, we use that
-- so we try the parameter first
thispagename = nil
if ((args['string'] ~= nil) and (args['string'] ~= "")) then
-- we have a non-empty "string" parameter, so we use it
thisstring = args['string']
else
-- get the page title
thispage = mw.title.getCurrentTitle()
thisstring = thispage.text;
end
-- now check the pagename to try to find a country
result = findcountryinstring(thisstring)
if (result == "") then
return nomatch
end
return result
end
return p
c15468102dad4b0bd85392d3ecf49bcb6e12c324
Module:File link/doc
828
1733
3275
2022-08-10T15:49:41Z
wikipedia>JrandWP
0
high-use
wikitext
text/x-wiki
{{high-use}}
{{Module rating|protected}}
{{Lua|Module:Yesno|Module:Arguments}}
This module is used to construct wikitext links to files. It is primarily useful for templates and modules that use complicated logic to make file links. Simple file links should be made with wikitext markup directly, as it uses less resources than calling this module. For help with wikitext file markup please refer to the [[mw:Help:Images|documentation at mediawiki.org]].
== Usage from wikitext ==
From wikitext, this module should be called from a template, usually {{tl|file link}}. Please see the template page for documentation. However, it can also be called using the syntax <code><nowiki>{{#invoke:File link|main|</nowiki>''arguments''<nowiki>}}</nowiki></code>.
== Usage from Lua ==
First, you need to import the module.
<syntaxhighlight lang="lua">
local mFileLink = require('Module:File link')
</syntaxhighlight>
Then you can make file links using the <code>_main</code> function.
<syntaxhighlight lang="lua">
mFileLink._main(args)
</syntaxhighlight>
<var>args</var> is a table of arguments that can have the following keys:
* <code>file</code> - the filename. (required)
* <code>format</code> - the file format, e.g. 'thumb', 'thumbnail', 'frame', 'framed', or 'frameless'.
* <code>formatfile</code> - a filename to specify with the 'thumbnail' format option. The filename specified will be used instead of the automatically generated thumbnail.
* <code>border</code> - set this to true or "yes" (or any other value recognized as true by [[Module:Yesno]]) to set a border for the image.
* <code>location</code> - the horizontal alignment of the file, e.g. 'right', 'left', 'center', or 'none'.
* <code>alignment</code> - the vertical alignment of the file, e.g. 'baseline', 'middle', 'sub', 'super', 'text-top', 'text-bottom', 'top', or 'bottom'.
* <code>size</code> - the size of the image, e.g. '100px', 'x100px' or '100x100px'.
* <code>upright</code> - the 'upright' parameter, used for setting the size of tall and thin images.
* <code>link</code> - the page that the file should link to. Use the blank string <nowiki>''</nowiki> to suppress the default link to the file description page.
* <code>alt</code> - the alt text. Use the blank string <nowiki>''</nowiki> to suppress the default alt text.
* <code>caption</code> - a caption for the file.
* <code>page</code> - sets a page number for multi-paged files such as PDFs.
* <code>class</code> - adds a <code>class</code> parameter to image links. The MediaWiki software adds this parameter to the <code>class="..."</code> attribute of the image's <code><nowiki><img /></nowiki></code> element when the page is rendered into HTML.
* <code>lang</code> - adds a language attribute to specify what language to render the file in.
* <code>start</code> - specifies a start time for audio and video files.
* <code>end</code> - specifies an end time for audio and video files.
* <code>thumbtime</code> - specifies the time to use to generate the thumbnail image for video files.
To see the effect of each of these parameters, see the [[mw:Help:Images#Format|images help page on mediawiki.org]].
=== Examples ===
With the file only:
<syntaxhighlight lang="lua">
mFileLink.main{file = 'Example.png'}
-- Renders as [[File:Example.png]]
</syntaxhighlight>
With format, size, link and caption options:
<syntaxhighlight lang="lua">
mFileLink.main{
file = 'Example.png',
format = 'thumb',
size = '220px',
link = 'Wikipedia:Sandbox',
caption = 'An example.'
}
-- Renders as [[File:Example.png|thumb|220px|link=Wikipedia:Sandbox|An example.]]
</syntaxhighlight>
With format, size, and border:
<syntaxhighlight lang="lua">
mFileLink.main{
file = 'Example.png',
format = 'frameless',
size = '220px',
border = true
}
-- Renders as [[File:Example.png|frameless|border|220px]]
</syntaxhighlight>
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
}}</includeonly>
3ed97b9b6e53a4e041285a77da0c01f25e581d13
Template:Country data Denmark
10
1199
2528
2022-08-11T13:37:10Z
w>Skjoldbro
0
border-navy
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Denmark
| flag alias = Flag of Denmark.svg
| flag alias-state = Flag of Denmark (state).svg
| border-state =
| flag alias-naval = Naval Ensign of Denmark.svg
| link alias-naval = Royal Danish Navy
| link alias-army = Royal Danish Army
| flag alias-army = Flag of Denmark (state).svg
| link alias-air force = Royal Danish Air Force
| flag alias-air force = Flag of Denmark (state).svg
| flag alias-navy = Naval Ensign of Denmark.svg
| link alias-navy = Royal Danish Navy
| border-army =
| border-air force =
| border-naval =
| border-navy =
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = state
| redir1 = DNK
| redir2 = DEN
| redir3 = Kingdom of Denmark
</noinclude>
}}
5598dd9004bbdd8ead3c89bfede63f7ca49a6169
Template:Count
10
192
438
2022-08-11T14:32:42Z
wikipedia>Neveselbert
0
cr.
wikitext
text/x-wiki
{{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude>
ccdb0aa784669ceae716044a9267ac7c4dea7283
Template:ISO 15924 script codes and related Unicode data/row
10
1630
2965
2022-08-12T20:49:21Z
w>DePiep
0
wikitext
text/x-wiki
|- {{#invoke:anchor|main|{{{alpha4|}}}}}
| <!-- ISO alpha4 -->{{mono|1={{{alpha4|}}}}}
| style="text-align: center" |<!-- ISO numerical code -->{{mono|1={{ISO 15924 number|alpha4={{{alpha4|}}}}}}}
| <!-- enwiki article -->[[{{ISO 15924/wp-article|1={{{alpha4|}}}}}|{{ISO 15924 name|1={{{alpha4|}}}}}]]
| <!-- dir -->{{#invoke:WikidataIB|getValue|P1406|{{{direction|}}} |qid={{ISO 15924/qid|1={{{alpha4|}}}|default=}} |onlysourced=no |fwd =ALL}}
<!-- Unicode data OR not-in-Unicode -->{{#if:{{ISO 15924 alias |1={{{alpha4|}}}|default=}}
|
{{!}} <!-- Unicode alias -->{{ISO 15924 alias|1={{{alpha4|}}}}}
{{!}} style="text-align: right;" {{!}} <!-- version -->{{{version|}}}
{{!}} style="text-align: right;" {{!}} <!-- # chars -->{{{chars|}}}
{{!}} <!-- note -->{{{note|}}}
|<!-- else: so this one is not in unicode. 4 cols; now show unicode-status (the negative one then; not the note): -->
{{!}} colspan="4" style="margin: 0; text-indent: -1em; padding-left: 1em;" {{!}} <span style="visibility: hidden; ">ZZ</span>— {{{unicode-status|}}}<!-- cell format: indent text and add "ZZ" prefix to sort after regular A-Z Aliases. -->{{#if:{{{note|}}}|<nowiki>;</nowiki> {{{note|}}}}}
}}<!-- if-else: end -->
| <!-- Chapter pdf e link -->{{ISO 15924/unicode-chapter|1={{{alpha4|}}}|format=pdf}}<!--
--><noinclude>
|}
{{documentation|1=Template:ISO 15924 script codes and related Unicode data/doc}}</noinclude>
90539cc1867b59e284ce2bc848302e34926afd09
Template:Infobox tea
10
1151
2477
2022-08-15T00:51:07Z
w>Goszei
0
no default width
wikitext
text/x-wiki
<includeonly>{{Infobox
| above = {{{Tea_name}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{Tea_image|}}}|size={{{image_width|}}}}}
| label1 = Type
| data1 = {{{Tea_type|}}}
| data2 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" />
| label3 = Other names
| data3= {{{Tea_names|}}}
| label4 = Origin
| data4 = {{{Tea_origin|}}}
| data5 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" />
| label6 = Quick description
| data6= {{{Tea_quick|}}}
| data7 = <hr style="background-color:#{{Infobox tea/types|{{{Tea_color}}}}}; height:2px;" />
| label8 = Temperature
| data8 = {{{Tea_temperature|}}}
| label9 = Time
| data9 = {{{Tea_time|}}}
| data11 = {{{module|}}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
f24efc05f5d1c955f4cd10fa41449c160b3fe8d2
Template:Fix
10
1086
2371
2022-08-19T21:02:28Z
wikipedia>Izno
0
per request
wikitext
text/x-wiki
{{#switch:{{{subst|¬}}}
|¬={{category handler
|template=[[Category:Templates needing substitution checking]]
|nocat={{{nocat|<noinclude>true</noinclude>}}}
}}
|SUBST=[[Category:Pages with incorrectly substituted templates]]
}}{{Category handler
|main={{Fix/category
|cat-date={{{cat-date|}}}
|cat={{{cat|}}}
|cat-date2={{{cat-date2|}}}
|cat2={{{cat2|}}}
|cat-date3={{{cat-date3|}}}
|cat3={{{cat3|}}}
|date={{{date|}}}
}}
|template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}}
|subpage=no
}}{{#if:{{{text|}}}
|<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">[<i>{{#if:{{{pre-text|}}}
|{{{pre-text}}} 
}}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:string|replace|source={{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}| ({{{date}}})}}}}|pattern=" |replace=" |plain=true}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}}
| {{{post-text}}}
}}</i>]</sup>|{{{special|}}}
}}<noinclude>
{{Documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
64d5219edf0f07567b3006bfc9681f9408b164b0
Template:Used in system
10
1326
2661
2022-08-20T15:58:28Z
Pppery
6
Not an improvement - there's already a well-established edit request process starting with clicking "view source" and we don't need a duplicative process for the specific set of templates that are used in system messages
wikitext
text/x-wiki
{{#invoke:High-use|main|1=|2={{{2|}}}|system={{#if:{{{1|}}}|{{{1}}}|in system messages}}<noinclude>|nocat=true</noinclude>}}<noinclude>
{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
0abe278369db6cbbe319e7452d7644e27e11c532
Template:Collapse bottom
10
188
430
2022-08-21T18:03:39Z
wikipedia>MSGJ
0
Undid revision 1105766128 by [[Special:Contributions/MSGJ|MSGJ]] ([[User talk:MSGJ|talk]]) - did not work
wikitext
text/x-wiki
<includeonly>|}</div></includeonly><noinclude>
{{Documentation|Template:Collapse top/doc}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
64b210e8ab0882b262da50e9fbccf2132bc34fab
Module:Citation/CS1/doc
828
837
1856
2022-08-23T22:20:38Z
wikipedia>Trappist the monk
0
get rid of meaningless % of all pages tripe;
wikitext
text/x-wiki
<section begin=header />
{{sandbox other||
{{#switch:{{FULLPAGENAME}}
|Module:Citation/CS1={{high-risk |article-space=yes |no-percent=yes}} {{Uses TemplateStyles|Module:Citation/CS1/styles.css}}
|Module:Citation/CS1/Configuration={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Whitelist={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Date validation={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Identifiers={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Utilities={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/COinS={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Suggestions={{high-use |article-space=yes |no-percent=yes}}
}}
{{Module rating|p}}}}<!-- if pagename does not contain sandbox -->
<section end=header />
This module and associated sub-modules support the {{cs1}} and {{cs2}} citation templates. In general, it is not intended to be called directly, but is called by one of the core CS1 and CS2 templates.
<section begin=module_components_table />
These files comprise the module support for CS1|2 citation templates:
{| class="wikitable" style="margin: 1em auto 1em auto;"
|+CS1 {{pipe}} CS2 modules
|-
!colspan="2"|live!!colspan="2"|sandbox!!diff!!description
|-
| rowspan="8"| [[File:Full-protection-shackle.svg|20px|alt=Gold padlock|link=|sysop]] || [[Module:Citation/CS1]] || [[Module:Citation/CS1/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Rendering and support functions
|-
| [[Module:Citation/CS1/Configuration]] || [[Module:Citation/CS1/Configuration/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Configuration/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FConfiguration&rev1=&page2=Module%3ACitation%2FCS1%2FConfiguration%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Translation tables; error and identifier handlers
|-
| [[Module:Citation/CS1/Whitelist]] || [[Module:Citation/CS1/Whitelist/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Whitelist/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FWhitelist&rev1=&page2=Module%3ACitation%2FCS1%2FWhitelist%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List of active and deprecated CS1{{pipe}}2 parameters
|-
| [[Module:Citation/CS1/Date validation]] || [[Module:Citation/CS1/Date validation/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Date_validation/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FDate+validation&rev1=&page2=Module%3ACitation%2FCS1%2FDate+validation%2Fsandbox&rev2=&action=&diffonly=&unhide= diff] || Date format validation functions
|-
| [[Module:Citation/CS1/Identifiers]] || [[Module:Citation/CS1/Identifiers/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Identifiers/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FIdentifiers&rev1=&page2=Module%3ACitation%2FCS1%2FIdentifiers%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that support the named identifiers (ISBN, DOI, PMID, etc.)
|-
| [[Module:Citation/CS1/Utilities]] || [[Module:Citation/CS1/Utilities/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Utilities/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FUtilities&rev1=&page2=Module%3ACitation%2FCS1%2FUtilities%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Common functions and tables
|-
| [[Module:Citation/CS1/COinS]] || [[Module:Citation/CS1/COinS/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/COinS/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FCOinS&rev1=&page2=Module%3ACitation%2FCS1%2FCOinS%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that render a CS1{{pipe}}2 template's metadata
|-
| [[Module:Citation/CS1/styles.css]] || [[Module:Citation/CS1/sandbox/styles.css]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox/styles.css&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2Fstyles.css&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox%2Fstyles.css&rev2=&action=&diffonly=&unhide= diff]|| [[CSS]] styles applied to the CS1{{pipe}}2 templates
|-
| [[File:Template-protection-shackle.svg|20px|alt=Silver padlock|link=|auto confirmed]] || [[Module:Citation/CS1/Suggestions]] || [[Module:Citation/CS1/Suggestions/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Suggestions/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FSuggestions&rev1=&page2=Module%3ACitation%2FCS1%2FSuggestions%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List that maps common erroneous parameter names to valid parameter names
|}
<section end=module_components_table />
Other documentation:
* [[Module talk:Citation/CS1/Feature requests]]
* [[Module talk:Citation/CS1/COinS]]
* [[Module:Cs1 documentation support]] – a set of functions (some experimental) that extract information from the module suite for the purpose of documenting CS1|2
** [[Module:Citation/CS1/doc/Category list]] – lists of category names taken directly from [[Module:Citation/CS1/Configuration]] and [[Module:Citation/CS1/Configuration/sandbox]]
testcases
*[[Module:Citation/CS1/testcases]] ([[Module talk:Citation/CS1/testcases|run]])
*[[Module:Citation/CS1/testcases/errors]] ([[Module talk:Citation/CS1/testcases/errors|run]]) – error and maintenance messaging
*[[Module:Citation/CS1/testcases/dates]] ([[Module talk:Citation/CS1/testcases/dates|run]]) – date validation
*[[Module:Citation/CS1/testcases/identifiers]] ([[Module talk:Citation/CS1/testcases/identifiers|run]]) – identifiers
*[[Module:Citation/CS1/testcases/anchor]] ([[Module talk:Citation/CS1/testcases/anchor|run]]) – CITEREF anchors
<includeonly>{{sandbox other||
[[Category:Modules that add a tracking category]]
{{#ifeq:{{SUBPAGENAME}}|Identifiers|[[Category:Modules using data from Wikidata]]}}
}}</includeonly>
56cf87a73a7f0f558be8d5697e91dcbcb2fdb3b6
Template:Post-nominals
10
1377
2712
2022-09-04T00:10:43Z
Pppery
6
Add tracking cat per edit request
wikitext
text/x-wiki
<span class="noexcerpt nowraplinks" style="font-size:{{{size|85%}}}; font-weight:normal;"><!--
-->{{if empty|{{{unlinked|}}}|{{{list|}}}|{{{post-noms|}}}|{{for loop|{{#if:{{{sep|}}}{{{commas|}}}|<span style="font-size:14px;>,</span>}} |call=post-nominals/{{{country|CAN}}}|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}|skipBlanks=yes}}}}<!--
--></span><!--
-->{{#if:{{{country|{{{unlinked|{{{list|{{{post-noms|<noinclude>1</noinclude>}}}}}}}}}}}}||[[Category:Pages using Template:Post-nominals with missing parameters]]}}<!--
-->{{#if:{{{unlinked|{{{list|{{{post-noms|}}}}}}}}}|[[Category:Pages using Template:Post-nominals with customized linking]]
}}<noinclude>{{Documentation}}</noinclude>
2b89288bd9d53136ad548b8a601c1bf4f69e8daf
Module:Hatnote
828
34
63
2022-09-05T18:18:32Z
wikipedia>Nihiltres
0
Reordered helper functions (first by export status, then alphabetically) and migrated p.quote upstream from [[Module:Redirect hatnote]] (includes contributions by Tamzin and Nihiltres)
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Articles with hatnote templates targeting a nonexistent page' or nil
function p.quote(title)
--Wraps titles in quotation marks. If the title starts/ends with a quotation
--mark, kerns that side as with {{-'}}
local quotationMarks = {
["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true
}
local quoteLeft, quoteRight = -- Test if start/end are quotation marks
quotationMarks[string.sub(title, 1, 1)],
quotationMarks[string.sub(title, -1, -1)]
if quoteLeft or quoteRight then
title = mw.html.create("span"):wikitext(title)
end
if quoteLeft then title:css("padding-left", "0.15em") end
if quoteRight then title:css("padding-right", "0.15em") end
return '"' .. tostring(title) .. '"'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote#Errors',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3ae1ed7094c5005ca0896395ec9a587287a0bef1
Module:Redirect hatnote
828
1033
2264
2022-09-05T18:21:32Z
wikipedia>Nihiltres
0
Updated from sandbox: Migrated p._quote to Module:Hatnote
Scribunto
text/plain
--[[
-- This module produces a "redirect" hatnote. It looks like this:
-- '"X" redirects here. For other uses, see Y.'
-- It implements the {{redirect}} template.
--]]
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local mArguments --lazily initialize
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitle(...)
--Calls mw.title.new and returns either a title object, or nil on error
local success, titleObj = pcall(mw.title.new, ...)
return success and titleObj or nil
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.redirect(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {parentOnly=true})
--Get number of redirects
local numRedirects = tonumber(frame.args[1]) or 1
-- Create the options table.
local options = {}
options.selfref = args.selfref
return p._redirect(args, numRedirects, options)
end
function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle)
-- Validate the input. Don't bother checking currentTitle, redirectTitle or
-- targetTitle, as they are only used in testing.
checkType('_redirect', 1, args, 'table')
checkType('_redirect', 2, numRedirects, 'number', true)
numRedirects = numRedirects or 1
checkType('_redirect', 3, options, 'table', true)
options = options or {}
currentTitle = currentTitle or mw.title.getCurrentTitle()
-- Get the table of redirects
local redirect = {}
for i = 1, numRedirects do
-- Return an error if a redirect parameter is missing.
if not args[i] then
return mHatnote.makeWikitextError(
'missing redirect parameter',
'Template:Redirect#Errors',
args.category
)
end
redirect[i] = args[i]
end
-- Generate the text.
local formattedRedirect = {}
for k,v in pairs(redirect) do
formattedRedirect[k] = mHatnote.quote(v)
end
local text = {
mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.',
mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text})
}
text = table.concat(text, ' ')
-- Functionality for adding categories
local categoryTable = {}
local function addCategory(cat)
if cat and cat ~= '' then
-- Add by index to avoid duplicates
categoryTable[string.format('[[Category:%s]]', cat)] = true
end
end
--Generate tracking categories
local mhOptions = {}
local redirTitle
for k,v in pairs(redirect) do
-- We don't need a tracking category if the template invocation has been
-- copied directly from the docs, or if we aren't in main- or category-space.
if not v:find('^REDIRECT%d*$') and v ~= 'TERM' --
and currentTitle.namespace == 0 or currentTitle.namespace == 14
then
redirTitle = redirectTitle or getTitle(v)
if not redirTitle or not redirTitle.exists then
addCategory('Missing redirects')
elseif not redirTitle.isRedirect then
if string.find(redirTitle:getContent(), '#invoke:RfD') then
addCategory('Articles with redirect hatnotes impacted by RfD')
else
addCategory('Articles with redirect hatnotes needing review')
end
else
local target = targetTitle or redirTitle.redirectTarget
if target and target ~= currentTitle then
addCategory('Articles with redirect hatnotes needing review')
end
end
end
-- Generate the options to pass to [[Module:Hatnote]].
if currentTitle.namespace == 0 and not mhOptions.selfref
and redirTitle and redirTitle.namespace ~= 0
then
-- We are on a mainspace page, and the hatnote starts with something
-- like "Wikipedia:Foo redirects here", so automatically label it as
-- a self-reference.
mhOptions.selfref = true
else
mhOptions.selfref = options.selfref
end
end
--concatenate all the categories
local category = ''
for k,v in pairs(categoryTable) do
category = category .. k
end
return mHatnote._hatnote(text, mhOptions) .. category
end
return p
6609c6166f6a1124c96c97915bc7b4182f1874f9
Template:Infobox mapframe/doc/parameters
10
1481
2816
2022-09-08T16:19:59Z
Dinoguy1000
20
use the "style=" parameter on {{Navbar}} instead of the weird {{Float}} template
wikitext
text/x-wiki
<noinclude>{{Documentation}}</noinclude><includeonly>{{navbar|Template:Infobox mapframe/doc/parameters|plain=y|style=float: right;}}</includeonly><nowiki></nowiki>
*Basic parameters:{{#if:{{{noprefix|}}}||<nowiki></nowiki>
**'''mapframe''' – Specify yes or no to show or hide the map, overriding the default. ''Default:'' {{{mapframe|no}}}
**'''mapframe-caption''' – Caption for the map. ''Default'': {{{mapframe-caption|''blank'' (or if {{para|mapframe-geomask}} is set, "Location in {{kbd|geomask's label}}")}}}
**'''mapframe-custom''' – Use a custom map instead of the automatic mapframe. Specify either a {{tlx|maplink}} template, or another template that generates a mapframe map, or an image name. If used, the subsequent mapframe parameters will be ignored. ''Default'': ''not specified''}}
**{{#if:{{{noprefix|}}}|'''id'''|'''mapframe-id''' or '''id''' or '''qid'''}} – Id (Q-number) of Wikidata item to use. ''Default:'' ''item for current page''
**{{#if:{{{noprefix|}}}||'''mapframe-coordinates''' or '''mapframe-coord''' or}} '''coordinates''' or '''coord''' – Coordinates to use, instead of any on Wikidata. Use the {{tl|Coord}} template, e.g. {{para|coord|2={{tlx|Coord|12.34|N|56.78|E}}}}. ''Default:'' ''coordinates from Wikidata''
**'''{{#if:{{{noprefix|}}}||mapframe-}}wikidata''' – Set to {{code|yes}} to show shape/line features from the wikidata item, if any, when {{para|coord}} is set. ''Default:'' {{{mapframe-wikidata|''not specified''}}}
*Customise which features are displayed:
**'''{{#if:{{{noprefix|}}}||mapframe-}}shape''' – Turn off display of shape feature by setting to {{code|none}}. Use an inverse shape (geomask) instead of a regular shape by setting to {{code|inverse}}. ''Default:'' {{{mapframe-shape|''not specified''}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}point''' – Turn off display of point feature by setting to {{code|none}}. Force point marker to be displayed by setting to {{code|on}}. ''Default:'' {{{mapframe-point|''not specified''}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}line''' – Turn off display of line feature by setting to {{code|none}}. ''Default:'' {{{mapframe-line|''not specified''}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}geomask''' – Wikidata item to use as a geomask (everything outside the boundary is shaded darker). Can either be a specific Wikidata item (Q-number), or a property that specifies the item to use (e.g. <code>P17</code> for {{Q|P17}}, <code>P131</code> for {{Q|P131}}). ''Default:'' {{{mapframe-marker|''not specified''}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}switcher''' – set to {{code|auto}} or {{code|geomasks}} or {{code|zooms}} to enable [[Template:Switcher]]-style switching between multiple mapframes. ''Default:'' {{{mapframe-switcher|''not specified''}}}
***{{code|auto}} – switch geomasks found in {{Q|P276}} and {{Q|P131}} statements on the page's Wikidata item, searching recursively. E.g. an item's city, that city's state, and that state's country.
***{{code|geomasks}} – switch between the geomasks specified as a comma-separated list of Wikidata items (Q-numbers) in the '''{{#if:{{{noprefix|}}}||mapframe-}}geomask''' parameter
***{{code|zooms}} – switch between "zoomed in"/"zoomed midway"/"zoomed out", where "zoomed in" is the default zoom (with a minimum of {{code|3}}), "zoomed out" is {{code|1}}, and "zoomed midway" is the average
*Other optional parameters:
**'''{{#if:{{{noprefix|}}}||mapframe-}}frame-width''' or '''{{#if:{{{noprefix|}}}||mapframe-}}width''' – Frame width. ''Default:'' {{{mapframe-frame-width|270}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}frame-height''' or '''{{#if:{{{noprefix|}}}||mapframe-}}height''' – Frame height. ''Default:'' {{{mapframe-frame-height|200}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}shape-fill''' – Color used to fill shape features. ''Default:'' {{{mapframe-shape-fill|#606060}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}shape-fill-opacity''' – Opacity level of shape fill, a number between 0 and 1. ''Default:'' {{{mapframe-shape-fill-opacity|0.5}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}stroke-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}stroke-colour''' – Color of line features, and outlines of shape features. ''Default:'' {{{mapframe-stroke-color|{{{mapframe-stroke-colour|#ff0000}}}}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}stroke-width''' – Width of line features, and outlines of shape features; default is "5". ''Default:'' {{{mapframe-stroke-width|5}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}marker''' – Marker symbol to use for coordinates; see [[mw:Help:Extension:Kartographer/Icons]] for options. ''Default:'' {{{mapframe-marker|''not specified (i.e. blank)''}}}
***Can also be set to {{code|blank}} to override any default marker symbol
**'''{{#if:{{{noprefix|}}}||mapframe-}}marker-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}marker-colour''' – Background color for the marker. ''Default:'' {{{mapframe-marker-color|{{{mapframe-marker-colour|#5E74F3}}}}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-color''' or '''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-colour''' – Color of outline of geomask shape. ''Default:'' {{{mapframe-geomask-stroke-color|{{{mapframe-geomask-stroke-colour|#555555}}}}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-stroke-width''' – Width of outline of geomask shape. ''Default:'' {{{mapframe-geomask-stroke-width|2}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-fill''' – Color used to fill outside geomask features. ''Default:'' {{{mapframe-geomask-fill|#606060}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}geomask-fill-opacity''' – Opacity level of fill outside geomask features, a number between 0 and 1. ''Default:'' {{{mapframe-geomask-fill-opacity|0.5}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}zoom''' – Set the zoom level, from "1" (map of earth) to "18" (maximum zoom in), to be used if the zoom level cannot be determined automatically from object length or area. ''Default:'' {{{mapframe-zoom|10}}}
**'''{{#if:{{{noprefix|}}}||mapframe-}}length_km {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}length_mi {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}area_km2 {{nobold|or}} {{#if:{{{noprefix|}}}||mapframe-}}area_mi2''' – Determine zoom level by passing in object's length (in kilometres or miles) or area (in square kilometres or square miles). ''Default:'' ''not specified''
**'''{{#if:{{{noprefix|}}}||mapframe-}}frame-coordinates''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-coord''' – Alternate latitude and longitude coordinates for initial placement of map, using {{tl|coord}}. ''Default:'' ''derived from item coordinates''{{#if:{{{deprecated|}}}|<nowiki></nowiki>
*Deprecated parameters
**{{gray|1='''{{#if:{{{noprefix|}}}||mapframe-}}frame-lat''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-latitude'''}} – Alternate latitude coordinate for initial placement of map; default is derived from item coordinates
**{{gray|1='''{{#if:{{{noprefix|}}}||mapframe-}}frame-long''' or '''{{#if:{{{noprefix|}}}||mapframe-}}frame-longitude'''}} – Alternate longitude coordinate for initial placement of map; default is derived from item coordinates
}}
cff45f38e77371fef06f83bec6bdbffebc880c3f
Module:URL
828
1177
2506
2022-09-11T18:55:11Z
w>Paine Ellsworth
0
per edit request on talk page - update
Scribunto
text/plain
--
-- This module implements {{URL}}
--
-- See unit tests at [[Module:URL/testcases]]
local p = {}
local function safeUri(s)
local success, uri = pcall(function()
return mw.uri.new(s)
end)
if success then
return uri
end
end
local function extractUrl(args)
for name, val in pairs(args) do
if name ~= 2 and name ~= "msg" then
local url = name .. "=" .. val;
url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3')
local uri = safeUri(url);
if uri and uri.host then
return url
end
end
end
end
function p._url(url, text, msg)
url = mw.text.trim(url or '')
text = mw.text.trim(text or '')
local nomsg = (msg or ''):sub(1,1):lower() == "n" or msg == 'false' -- boolean: true if msg is "false" or starts with n or N
if url == '' then
if text == '' then
if nomsg then
return nil
else
return mw.getCurrentFrame():expandTemplate{ title = 'tlx', args = { 'URL', "''example.com''", "''optional display text''" } }
end
else
return text
end
end
-- If the URL contains any unencoded spaces, encode them, because MediaWiki will otherwise interpret a space as the end of the URL.
url = mw.ustring.gsub(url, '%s', function(s) return mw.uri.encode(s, 'PATH') end)
-- If there is an empty query string or fragment id, remove it as it will cause mw.uri.new to throw an error
url = mw.ustring.gsub(url, '#$', '')
url = mw.ustring.gsub(url, '%?$', '')
-- If it's an HTTP[S] URL without the double slash, fix it.
url = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3')
local uri = safeUri(url)
-- Handle URL's without a protocol and URL's that are protocol-relative,
-- e.g. www.example.com/foo or www.example.com:8080/foo, and //www.example.com/foo
if uri and (not uri.protocol or (uri.protocol and not uri.host)) and url:sub(1, 2) ~= '//' then
url = 'http://' .. url
uri = safeUri(url)
end
if text == '' then
if uri then
if uri.path == '/' then uri.path = '' end
local port = ''
if uri.port then port = ':' .. uri.port end
text = mw.ustring.lower(uri.host or '') .. port .. (uri.relativePath or '')
-- Add <wbr> before _/.-# sequences
text = mw.ustring.gsub(text,"(/+)","<wbr/>%1") -- This entry MUST be the first. "<wbr/>" has a "/" in it, you know.
text = mw.ustring.gsub(text,"(%.+)","<wbr/>%1")
-- text = mw.ustring.gsub(text,"(%-+)","<wbr/>%1") -- DISABLED for now
text = mw.ustring.gsub(text,"(%#+)","<wbr/>%1")
text = mw.ustring.gsub(text,"(_+)","<wbr/>%1")
else -- URL is badly-formed, so just display whatever was passed in
text = url
end
end
return mw.ustring.format('<span class="url">[%s %s]</span>', url, text)
end
--[[
The main entry point for calling from Template:URL.
--]]
function p.url(frame)
local templateArgs = frame.args
local parentArgs = frame:getParent().args
local url = templateArgs[1] or parentArgs[1]
local text = templateArgs[2] or parentArgs[2] or ''
local msg = templateArgs.msg or parentArgs.msg or ''
url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or ''
return p._url(url, text, msg)
end
--[[
The entry point for calling from the forked Template:URL2.
This function returns no message by default.
It strips out wiki-link markup, html tags, and everything after a space.
--]]
function p.url2(frame)
local templateArgs = frame.args
local parentArgs = frame:getParent().args
local url = templateArgs[1] or parentArgs[1]
local text = templateArgs[2] or parentArgs[2] or ''
-- default to no message
local msg = templateArgs.msg or parentArgs.msg or 'no'
url = url or extractUrl(templateArgs) or extractUrl(parentArgs) or ''
-- if the url came from a Wikidata call, it might have a pen icon appended
-- we want to keep that and add it back at the end.
local u1, penicon = mw.ustring.match( url, "(.*)( <span class='penicon.*)" )
if penicon then url = u1 end
-- strip out html tags and [ ] from url
url = (url or ''):gsub("<[^>]*>", ""):gsub("[%[%]]", "")
-- truncate anything after a space
url = url:gsub("%%20", " "):gsub(" .*", "")
return (p._url(url, text, msg) or "") .. (penicon or "")
end
return p
8d7a4c6fe04a01815e940475cf64b28e1ef48cfb
Template:Highlight
10
1381
2716
2022-09-14T20:44:05Z
w>Redrose64
0
Undid revision 1109662205 by [[Special:Contributions/Enterprisey|Enterprisey]] ([[User talk:Enterprisey|talk]]) this belongs on the doc page
wikitext
text/x-wiki
{{#if:{{{3|}}}|{{#ifexpr:({{#time:U|{{{3}}}}} - {{#time:U|now}}) > 0|{{highlight/core|{{{1|}}}|{{#ifeq:{{{2|}}}||yellow|{{{2}}}}}}}|{{{1|}}}}}|{{highlight/core|{{{1|}}}|{{{2|yellow}}}}}}}<noinclude>{{documentation}}</noinclude>
45c668ad6ef10b2963df4e5be697c70980dbf350
Template:Parameter names example
10
66
127
2022-09-15T17:36:18Z
wikipedia>Aidan9382
0
Hatnote should ideally be moved into documentation as to allow users to edit it regardless of the protection on the main template
wikitext
text/x-wiki
<includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
de1e29d6ebc113e9d1649ea6a976625885db8a2f
Template:Country data Germany
10
1187
2516
2022-09-17T07:38:32Z
w>Skjoldbro
0
wikitext
text/x-wiki
{{safesubst<noinclude />: {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Germany
| flag alias = Flag of Germany.svg
| flag alias-1866 = Flag of the German Empire.svg
| link alias-1866 = German Empire
| flag alias-empire = Flag of the German Empire.svg
| link alias-empire = German Empire
| flag alias-1919 = Flag of Germany (3-2 aspect ratio).svg
| link alias-1919 = Weimar Republic
| flag alias-Weimar = Flag of Germany (3-2 aspect ratio).svg
| link alias-Weimar = Weimar Republic
| flag alias-1933 = Flag of Germany (1933-1935).svg
| flag alias-1935 = Flag of Germany (1935–1945).svg
| link alias-1935 = Nazi Germany
| flag alias-Nazi = Flag of Germany (1935–1945).svg
| link alias-Nazi = Nazi Germany
| flag alias-1946 = Merchant flag of Germany (1946–1949).svg
| border-1946 =
| flag alias-1949 = Flag of Germany.svg
| flag alias-EUA = German Olympic flag (1959-1968).svg
| flag alias-gold = Flag of West Germany; Flag of Germany (1990–1996).svg
| flag alias-state = Flag of Germany (state).svg
| flag alias-naval = Naval Ensign of Germany.svg
| border-naval =
| link alias-naval = German Navy
| flag alias-coast guard=German Federal Coast Guard racing stripe.svg
| border-coast guard=
| link alias-coast guard=German Federal Coast Guard
| flag alias-army = Colour of Germany.svg
| flag alias-air force =Flag of Germany (state).svg
| link alias-air force = German Air Force
| link alias-army = German Army
| flag alias-navy = Naval Ensign of Germany.svg
| link alias-navy = German Navy
| border-navy =
| border-army=
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1866
| var2 = empire
| var3 = 1919
| var4 = Weimar
| var5 = 1933
| var6 = 1935
| var7 = Nazi
| var8 = 1946
| var9 = 1949
| var10 = EUA
| var11 = gold
| var12 = state
| redir1 = DEU
| redir2 = GER
| related1 = German Empire
| related2 = Weimar Republic
| related3 = Nazi Germany
| related4 = Allied-occupied Germany
| related5 = East Germany
| related6 = West Germany
</noinclude>
}}
f8c90307d21fdadc176f684f3fc1be65db23f569
Template:GeoTemplate/doc
10
1688
3147
2022-09-21T19:58:03Z
wikipedia>DB1729
0
Reverted edits by [[Special:Contributions/Jacksonj200401|Jacksonj200401]] ([[User talk:Jacksonj200401|talk]]): unexplained content removal ([[WP:HG|HG]]) (3.4.10)
wikitext
text/x-wiki
{{Documentation subpage}}
{{transclusionless|reason=this template is used by [[:mw:GeoHack]] to display maps on pages linked from, but outside of, the English Wikipedia. The GeoTemplate family of templates is used by {{tl|coord}} links on articles about places on Earth and on extraterrestrial bodies. See {{tl|Surface features of space objects}} for links to many such articles.}}
See [[:mw:GeoHack]] for more information about the GeoTemplate family of templates and how they are used.
== Microformat ==
{{UF-geo-other}}
[[Category:WikiProject Geographical coordinates]]
[[Category:GeoTemplates]]
[[Category:External link templates]]
af4c59f784148170319b0a83bfbec60a1b6dcc58
Template:Redirect category shell
10
1011
2218
2022-09-22T23:42:24Z
wikipedia>FlightTime
0
Update lnk trgt(s)
wikitext
text/x-wiki
__NONEWSECTIONLINK__{{Mbox
| name = Redirect category shell
| type = move
| image = none
| style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em;
| textstyle = padding-top: 0.9em; padding-bottom: 0.9em;
| text = '''This {{Talk other|talk page|page}} is a [[Wikipedia:Redirect|redirect]]. <small>The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:</small>'''{{#if:{{{h|}}}
|:: ''{{{h}}}''
}}<!--
Automatically detect protected redirects:
--><includeonly>{{#switch: {{PROTECTIONLEVEL:move}}
|sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}}
}}{{#switch: {{PROTECTIONLEVEL:edit}}
|sysop={{R protected|embed=yes}}
|templateeditor={{pp-protected|small=yes}}{{R template protected|embed=yes}}
|extendedconfirmed={{pp-protected|small=yes}}{{R extended-protected|embed=yes}}
|autoconfirmed={{pp-protected|small=yes}}{{R semi-protected|embed=yes}}
| <!--Not protected, or only semi-move-protected-->
}}</includeonly>{{#if: {{{1|}}}||<includeonly>
* {{red|'''Important – Please Read! {{maroon|This template should {{em|not}} be applied without parameters by bot nor by any automated or semi-automated process. It should {{em|not}} be used without parameters {{em|unless you want to learn how to categorize redirects}}. For editors who want to learn how to categorize redirects, this template is a {{em|learning tool}}. {{em|Only}} those editors who intend to return to the redirect to learn which rcats to use should apply this template without parameters, or with an empty first parameter!}}'''}}</includeonly>
* '''Manifold sort''': If help is needed to determine appropriate categories, then this redirect populates '''{{Cat|Miscellaneous redirects}}'''. Monitors of that category will check this redirect and add or remove [[Wikipedia:Categorizing redirects|rcats]] as needed.{{#ifeq: {{lc:{{{nocat|false}}}}} | false |{{{category|<includeonly>[[Category:Miscellaneous redirects]]</includeonly>}}}}}
}}
{{#if: {{{2|}}}|{{{2}}}|{{{1|}}}}}{{#if: {{{1|}}}{{{2|}}}||{{#ifeq: {{ROOTPAGENAME}}|Redirect category shell||[[Category:Redirect category shell without parameters]]}}}}
''<small>When appropriate, [[Wikipedia:Protection policy|protection levels]] are automatically sensed, described and categorized.</small>''
}}<noinclude>
{{Documentation}}
</noinclude>
554b3ada8f7ca8c0e840ea18a0344d3e94d13c38
Template:Stub documentation
10
761
1697
2022-09-24T21:20:03Z
wikipedia>Paine Ellsworth
0
rm whitespace + install High-use template where appropriate
wikitext
text/x-wiki
{{#ifeq:{{#invoke:High-use|num|x}}|many||{{High-use}}}}
This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]].
=== What is a stub? ===
A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject.
=== How is a stub identified? ===
* If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]].
* More than one stub template may be used, if necessary, though no more than four should be used on any article.
* Place a stub template ''[[Wikipedia:Manual of Style/Layout#Order of article elements|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>.
=== Further information ===
Further information can be found at:
* [[Wikipedia:Stub]]
* [[Wikipedia:WikiProject Stub sorting]]
New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation.
=== See also ===
* [[Template:Empty section]] – To flag an empty section as a '''stub section'''
* [[Template:Expand section]] – To flag sections selectively as incomplete
* [[Template:Data missing]] – To flag missing information or other data
* [[Wikipedia:Content assessment]]<!--
--><noinclude>
{{documentation}}
[[Category:Template documentation]]
</noinclude>
5e5f29f413afaf1f92838315049bbcf2056e4cdd
Template:'
10
887
1964
2022-09-27T12:43:06Z
wikipedia>Primefac
0
Primefac moved page [[Template:']] to [[Template:Apostrophe]]: expand name for clarity
wikitext
text/x-wiki
#REDIRECT [[Template:Apostrophe]]
{{Redirect category shell|
{{R from move}}
}}
eec747ee088b154d601ca1ea8201cf3e92fc33c4
Template:Apostrophe
10
888
1966
2022-09-27T12:43:06Z
wikipedia>Primefac
0
Primefac moved page [[Template:']] to [[Template:Apostrophe]]: expand name for clarity
wikitext
text/x-wiki
<span class="nowrap" style="padding-left:0.1em;">'</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
7ffcfc167bac0db92bf907ef65b839f48971bdb4
Template:Pipe
10
834
1850
2022-09-27T13:42:50Z
wikipedia>Ymblanter
0
Protected "[[Template:Pipe]]": [[WP:High-risk templates|Highly visible template]]: request at [[WP:RFPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
|<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage -->
</noinclude>
2e39a107f660e0f346b655cc3cb1a4a6be07247d
Template:Mbox templates see also
10
1308
2643
2022-09-27T19:16:15Z
w>Izno
0
remove per discussion on [[Template talk:Talk header]]
wikitext
text/x-wiki
<div>{{view|Template:Mbox templates see also|edit|brackets=yes}} There are seven metatemplates in the [[Module:Message box]] family:</div>
* {{tl|Ambox}}, for messageboxes on article pages.
* {{tl|Cmbox}}, for messageboxes on category pages.
* {{tl|Imbox}}, for messageboxes on file (image) pages.
* {{tl|Tmbox}}, for messageboxes on talk pages.
* {{tl|Fmbox}}, for header and footer messageboxes.
* {{tl|Ombox}}, for messageboxes on other types of page.
* {{tl|Mbox}}, for messageboxes that are used in different [[Wikipedia:Namespace|namespaces]] and change their presentation accordingly.
Closely related metatemplates:
* {{tl|Asbox}}, for messageboxes in article stubs.
* {{tl|Dmbox}}, for messageboxes on disambiguation or set-index pages.
* {{tla|Ivory messagebox|Ivmbox}}, a simple full-width box with default ivory background intended to frame important messages or notices.<noinclude>
{{Documentation}}
</noinclude>
bb802665b65c4908f4fea71ac8ca65ef82ff71c8
Template:Infobox country/imagetable
10
427
1259
2022-09-29T14:58:37Z
Elli
39
copy changes [[Template:Infobox country/imagetable/sandbox|from sandbox]]
wikitext
text/x-wiki
{{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}|
<div class="noresize" style="display:table; width:100%;">
<div style="display:table-cell; vertical-align:middle; padding-left:5px;">
{{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}}
<div>{{{caption1|}}}</div>
</div>
<div style="display:table-cell; vertical-align:middle; padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2|}}}</div>
</div>
</div>
<!--else:-->|
{{#if:{{{image1a|}}}{{{image1b|}}}|
<div class="noresize" style="display:table; width:100%;">
{{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}}
</div>
<div>{{{caption1}}}</div>
}}
{{#if:{{{image2|}}}|
<div style="padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2}}}</div>
</div>
}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly.
}}</noinclude>
4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b
Template:KIA/doc
10
1692
3157
2022-09-30T09:55:25Z
wikipedia>Paine Ellsworth
0
not present
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE -->
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Notice |{{about|the "[[killed in action]]" symbol|the template for the automobile company|Template:Kia}}}}
This template is used after a person's name in the <code>{{tl|Infobox military conflict}}</code> template to indicate that the person was [[killed in action]].
== Usage ==
<code>{{tl|KIA}}</code> displays dagger symbol: {{KIA}}<br/>
<code>{{tlx|KIA|<nowiki>bold=no</nowiki>}}</code> does not bold the symbol: {{KIA|bold=no}}<br/>
<code>{{tlx|KIA|<nowiki>alt=yes</nowiki>}}</code> (or <code>{{tlx|KIA2}}</code> for short) displays the abbreviation: {{KIA|alt=yes}}
The text displayed is linked to [[Killed in action]].
== See also ==
*{{tl|DOW}}
*{{tl|Executed}}
*{{tl|Assassinated}}
*{{tl|POW}}
*{{tl|Surrendered}}
*{{tl|WIA}}
*{{tl|MIA}}
*{{tl|Natural Causes}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!--Categories below here, please; interwikis to Wikidata.-->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
18858e746e8994ff29072294d2b27dc74c7983b4
Template:POW
10
1693
3161
2022-09-30T10:02:59Z
wikipedia>Paine Ellsworth
0
update
wikitext
text/x-wiki
([[Prisoner of war|{{abbr|POW|Prisoner of war}}]])<noinclude>
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
{{Documentation}}
</noinclude>
a3d34013543a96d966a6abd9a34f756a40c80826
Template:POW/doc
10
1694
3163
2022-09-30T10:04:21Z
wikipedia>Paine Ellsworth
0
update /doc
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
== Information ==
This template is used to indicate commanders who were captured or surrendered in {{tl|Infobox military conflict}}.
== Usage ==
<code>{{tl|POW}}</code> produces: {{POW}}
== See also ==
*{{tl|WIA}}
*{{tl|Executed}}
*{{tl|Surrendered}}
*{{tl|KIA}}
*{{tl|DOW}}
*{{tl|MIA}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
d1623cfcea1bfa435326fcdeec6262db4ab599c8
Template:ISO 15924/unicode-chapter
10
1626
2961
2022-10-03T17:33:38Z
w>DePiep
0
I think scripts not in Unicode should not link to The U Standard (this way). See [[:template:ISO 15924 script codes and related Unicode data]]
wikitext
text/x-wiki
{{ISO 15924/unicode-chapter/format
|format={{{format|}}}
|version={{{version|15.0.0}}}
|value={{#switch:{{{alpha4|{{{1|}}}}}}
| Adlm = 19.9
| Aghb = 8.11
| Ahom = 15.16
| Arab = 9.2
| Armi = 10.4
| Armn = 7.6
| Avst = 10.7
| Bali = 17.3
| Bamu = 19.6
| Bass = 19.7
| Batk = 17.6
| Beng = 12.2
| Bhks = 14.3
| Bopo = 18.3
| Brah = 14.1
| Brai = 21.1
| Bugi = 17.2
| Buhd = 17.1
| Cakm = 13.11
| Cans = 20.2
| Cari = 8.5
| Cham = 16.10
| Cher = 20.1
| Chrs = 10.8
| Copt = 7.3
| Cpmn = 8.4<!-- 14.0 -->
| Cprt = 8.3
| Cyrl = 7.4
| Deva = 12.1
| Diak = 15.15
| Dogr = 15.18
| Dsrt = 20.4
| Dupl = 21.6
| Egyp = 11.4
| Elba = 8.10
| Elym = 10.9
| Ethi = 19.1
| Geok = 7.7
| Geor = 7.7
| Glag = 7.5
| Gong = 13.15
| Gonm = 13.14
| Goth = 8.9
| Gran = 15.14
| Grek = 7.2
| Gujr = 12.4
| Guru = 12.3
| Hang = 18.6
| Hani = 18.1
| Hano = 17.1
| Hatr = 10.12
| Hebr = 9.1
| Hira = 18.4
| Hluw = 11.6
| Hmng = 16.11
| Hmnp = 16.12
| Hrkt = 18.4
| Hung = 8.8
| Ital = 8.6
| Java = 17.4
| Kali = 16.9
| Kana = 18.4
| Kawi = 17.9<!-- 15.0 -->
| Khar = 14.2
| Khmr = 16.4
| Khoj = 15.7
| Kits = 18.12
| Knda = 12.8
| Kthi = 15.2
| Lana = 16.7
| Laoo = 16.2
| Latn = 7.1
| Lepc = 13.12
| Limb = 13.6
| Lina = 8.1
| Linb = 8.2
| Lisu = 18.9
| Lyci = 8.5
| Lydi = 8.5
| Mahj = 15.6
| Maka = 17.8
| Mand = 9.5
| Mani = 10.5
| Marc = 14.5
| Medf = 19.10
| Mend = 19.8
| Merc = 11.5
| Mero = 11.5
| Mlym = 12.9
| Modi = 15.12
| Mong = 13.5
| Mroo = 13.8
| Mtei = 13.7
| Mult = 15.10
| Mymr = 16.3
| Nagn = 15.8<!-- 15.0 -->
| Nand = 15.13
| Narb = 10.1
| Nbat = 10.10
| Newa = 13.3
| Nkoo = 19.4
| Nshu = 18.8
| Ogam = 8.14
| Olck = 13.10
| Orkh = 14.8
| Orya = 12.5
| Osge = 20.3
| Osma = 19.2
| Ougr = 14.11<!-- 14.0 -->
| Palm = 10.11
| Pauc = 16.13
| Perm = 8.13
| Phag = 14.4
| Phli = 10.6
| Phlp = 10.6
| Phnx = 10.3
| Plrd = 18.10
| Prti = 10.6
| Rjng = 17.5
| Rohg = 16.14
| Runr = 8.7
| Samr = 9.4
| Sarb = 10.2
| Saur = 13.13
| Sgnw = 21.7
| Shaw = 8.15
| Shrd = 15.3
| Sidd = 15.5
| Sind = 15.9
| Sinh = 13.2
| Sogd = 14.10
| Sogo = 14.9
| Sora = 15.17
| Soyo = 14.7
| Sund = 17.7
| Sylo = 15.1
| Syrc = 9.3
| Tagb = 17.1
| Takr = 15.4
| Tale = 16.5
| Talu = 16.6
| Taml = 12.6
| Tang = 18.11
| Tavt = 16.8
| Telu = 12.7
| Tfng = 19.3
| Tglg = 17.1
| Thaa = 13.1
| Thai = 16.1
| Tibt = 13.4
| Tirh = 15.11
| Tnsa = 13.18<!-- 14.0 -->
| Toto = 13.17<!-- 14.0 -->
| Ugar = 11.2
| Vaii = 19.5
| Vith = 8.12<!-- 14.0 -->
| Wara = 13.9
| Wcho = 13.16
| Xpeo = 11.3
| Xsux = 11.1
| Yezi = 9.6
| Yiii = 18.7
| Zanb = 14.6
| #default=<!-- script not in Unicode, or Qaaa ... Qabx / Z... code -->
}}}}<!--
--><noinclude>{{documentation}}</noinclude>
145b69165c4db6cc875235be7b7cd2f12cd63cb4
Module:Format link
828
33
61
2022-10-04T13:37:11Z
Pppery
6
Avoid Lua erroring when we run out of expensive parser function calls
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Format link
--
-- Makes a wikilink from the given link and display values. Links are escaped
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local mError -- lazily initialise [[Module:Error]]
local yesno -- lazily initialise [[Module:Yesno]]
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
local function maybeItalicize(s, shouldItalicize)
-- Italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return '<i>' .. s .. '</i>'
else
return s
end
end
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
link = prePipe or link
-- Find the page, if it exists.
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
-- Find the section, if it exists.
local section
if postHash and postHash ~= '' then
section = postHash
end
return {
link = link,
page = page,
section = section,
display = display,
}
end
local function formatDisplay(parsed, options)
-- Formats a display string based on a parsed link table (matching the
-- output of parseLink) and an options table (matching the input options for
-- _formatLink).
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if (not section) then
return page
elseif (not page) then
return mw.ustring.format('§ %s', section)
else
return mw.ustring.format('%s § %s', page, section)
end
end
local function missingArgError(target)
mError = require('Module:Error')
return mError.error{message =
'Error: no link or target specified! ([[' .. target .. '#Errors|help]])'
}
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local link = args[1] or args.link
local target = args[3] or args.target
if not (link or target) then
return missingArgError('Template:Format link')
end
return p._formatLink{
link = link,
display = args[2] or args.display,
target = target,
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
categorizeMissing = args.categorizemissing
}
end
function p._formatLink(options)
-- The formatLink export function, for use in modules.
checkType('_formatLink', 1, options, 'table')
local function check(key, expectedType) --for brevity
checkTypeForNamedArg(
'_formatLink', key, options[key], expectedType or 'string', true
)
end
check('link')
check('display')
check('target')
check('italicizePage', 'boolean')
check('italicizeSection', 'boolean')
check('categorizeMissing')
-- Normalize link and target and check that at least one is present
if options.link == '' then options.link = nil end
if options.target == '' then options.target = nil end
if not (options.link or options.target) then
return missingArgError('Module:Format link')
end
local parsed = parseLink(options.link)
local display = options.display or parsed.display
local catMissing = options.categorizeMissing
local category = ''
-- Find the display text
if not display then display = formatDisplay(parsed, options) end
-- Handle the target option if present
if options.target then
local parsedTarget = parseLink(options.target)
parsed.link = parsedTarget.link
parsed.page = parsedTarget.page
end
-- Test if page exists if a diagnostic category is specified
if catMissing and (mw.ustring.len(catMissing) > 0) then
local title = nil
if parsed.page then title = mw.title.new(parsed.page) end
if title and (not title.isExternal) then
local success, exists = pcall(function() return title.exists end)
if success and not exists then
category = mw.ustring.format('[[Category:%s]]', catMissing)
end
end
end
-- Format the result as a link
if parsed.link == display then
return mw.ustring.format('[[:%s]]%s', parsed.link, category)
else
return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category)
end
end
--------------------------------------------------------------------------------
-- Derived convenience functions
--------------------------------------------------------------------------------
function p.formatPages(options, pages)
-- Formats an array of pages using formatLink and the given options table,
-- and returns it as an array. Nil values are not allowed.
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink{
link = page,
categorizeMissing = options.categorizeMissing,
italicizePage = options.italicizePage,
italicizeSection = options.italicizeSection
}
end
return ret
end
return p
1253bdd2683ee4badc33856bfd5499b09a7dca1f
Template:No documentation
10
1678
3111
2022-10-05T18:56:25Z
wikipedia>MusikBot II
0
Protected "[[Template:No documentation]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 485 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
#REDIRECT [[Template:Improve documentation]]
e143e50c85e46c0394365f74e3688aa439b542fe
Template:Color box
10
1470
2805
2022-10-06T18:11:46Z
w>Terasail
0
Remove TfD tag (Nomination removed)
wikitext
text/x-wiki
<templatestyles src="Legend/styles.css" /><span class="legend-color" style="{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|black|white|css=y}}
}}{{#if:{{{3|}}}|color:{{{3}}};
}}{{#if:{{{border|}}}|border:1px solid {{{border}}};
}}{{#if:{{{padding|}}}|padding:{{{padding}}};}}">{{#if:{{{2|}}}
|{{#if:{{{padding|}}}|{{{2}}}| {{{2}}} }}
| }}</span><noinclude>
{{documentation}}</noinclude>
3ae512cce09eab9e599e79e21b13c0190a5f3e27
Template:Cob
10
1219
2548
2022-10-07T15:01:20Z
DatGuy
47
+r from template shortcut
wikitext
text/x-wiki
#REDIRECT [[Template:Collapse bottom]]
{{Redirect category shell|
{{R from template shortcut}}
}}
1cd16c56552caeb938d794d973d1a13c885f7830
Template:Tree list/end
10
486
1075
2022-10-11T18:02:26Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Tree list/end]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2502 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Tree list/doc}}
</noinclude>
cdcda060fe4563745fb7a50f1c335c9abe5e2b08
Template:Tree list/styles.css
10
484
1067
2022-10-16T20:54:08Z
wikipedia>Izno
0
no reason to be protocol relative these days, some ws
sanitized-css
text/css
/* {{pp-template}} */
.treeview ul {
padding: 0;
margin: 0;
}
.treeview li {
padding: 0;
margin: 0;
list-style-type: none;
list-style-image: none;
}
.treeview li li {
background: url("https://upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px;
/* @noflip */
padding-left: 21px;
text-indent: 0.3em;
}
.treeview li li:last-child {
background-position: 0 -5971px
}
/* first line here deals with new situation after RemexHTML switch,
* where emptyline cause the first child to become the 2nd child. Such a mess
*/
.treeview li.emptyline > ul > .mw-empty-elt:first-child + .emptyline,
.treeview li.emptyline > ul > li:first-child {
background-position: 0 9px
}
a033cdb57b07f78781a6c065fa37884bfe489045
Template:Script/styles arabic.css
10
1598
2933
2022-10-17T20:44:25Z
w>FDRMRZUSA
0
Activated 'Amiri'.
sanitized-css
text/css
/* {{pp-template}} */
.script-arabic {
font-family: 'SF Arabic', Scheherazade, Lateef, LateefGR, 'Scheherazade New', 'Amiri', 'Noto Naskh Arabic', 'Droid Arabic Naskh', 'Microsoft Uighur', 'Sakkal Majalla', 'Harmattan', 'Arabic Typesetting', 'Arabic Transparent', 'Times New Roman', 'Arial', Calibri, 'Microsoft Sans Serif', 'Segoe UI', serif, sans-serif;
font-weight: normal;
}
7cdd2634c489de0b3907523a449bb10c6a3104cf
Module:Icon
828
980
2154
2022-10-21T08:04:06Z
wikipedia>WOSlinker
0
use require("strict") instead of require("Module:No globals")
Scribunto
text/plain
-- This module implements [[Template:Icon]].
require("strict")
local yesNo = require("Module:Yesno")
local getArgs = require("Module:Arguments").getArgs
local getPlain = nil
local p = {}
-- Determine whether we're being called from a sandbox
local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or ''
-- Implements [[Template:Icon]]
-- Returns the icon image corresponding to a string (like 'B')
function p._main(args, data)
local data_module = 'Module:Icon/data'..sandbox
data = data or mw.loadData(data_module)
local code = args.class or args[1]
local iconData
if code then
code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
iconData = data[code]
end
if not iconData then
iconData = data._DEFAULT
end
return string.format(
'[[File:%s%s%s|%s|class=noviewer|alt=%s]]',
iconData.image,
iconData.tooltip and '|' .. iconData.tooltip or '',
iconData.link == false and '|link=' or '',
args.size or '16x16px',
iconData.alt or ''
)
end
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]
-- Returns an icon, plus a suitably formatted wikilink
function p._link(args, data)
args.size = args.size or args.iconsize
local icon = p._main(args, data)
-- If no link given in args[2], default back to [[Template:Icon]]
if not args[2] then
return icon
end
-- Strip wiki markup out of link
getPlain = getPlain or require("Module:Text").Text().getPlain
local link = getPlain(args[2])
local display = args[3] or args[2]
-- italicize display string, if requested
if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then
display = '<i>'..display..'</i>'
end
-- if display is link, just use standard wlink
if link == display then
return icon..' [['..link..']]'
end
return icon..' [['..link..'|'..display..']]'
end
function p.main(frame)
local args = getArgs(frame,{parentFirst=true})
return p._main(args)
end
function p.link(frame)
local args = getArgs(frame,{parentFirst=true})
return p._link(args)
end
return p
7688d9a465bd7c4caa51f7e5c02676c162d583f5
Module:Protection banner
828
40
75
2022-10-21T08:07:11Z
wikipedia>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
-- This module implements {{pp-meta}} and its daughter templates such as
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
-- Initialise necessary modules.
require('strict')
local makeFileLink = require('Module:File link')._main
local effectiveProtectionLevel = require('Module:Effective protection level')._main
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
local yesno = require('Module:Yesno')
-- Lazily initialise modules and objects we don't always need.
local getArgs, makeMessageBox, lang
-- Set constants.
local CONFIG_MODULE = 'Module:Protection banner/config'
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeCategoryLink(cat, sort)
if cat then
return string.format(
'[[%s:%s|%s]]',
mw.site.namespaces[14].name,
cat,
sort
)
end
end
-- Validation function for the expiry and the protection date
local function validateDate(dateString, dateType)
if not lang then
lang = mw.language.getContentLanguage()
end
local success, result = pcall(lang.formatDate, lang, 'U', dateString)
if success then
result = tonumber(result)
if result then
return result
end
end
error(string.format(
'invalid %s: %s',
dateType,
tostring(dateString)
), 4)
end
local function makeFullUrl(page, query, display)
return string.format(
'[%s %s]',
tostring(mw.uri.fullUrl(page, query)),
display
)
end
-- Given a directed graph formatted as node -> table of direct successors,
-- get a table of all nodes reachable from a given node (though always
-- including the given node).
local function getReachableNodes(graph, start)
local toWalk, retval = {[start] = true}, {}
while true do
-- Can't use pairs() since we're adding and removing things as we're iterating
local k = next(toWalk) -- This always gets the "first" key
if k == nil then
return retval
end
toWalk[k] = nil
retval[k] = true
for _,v in ipairs(graph[k]) do
if not retval[v] then
toWalk[v] = true
end
end
end
end
--------------------------------------------------------------------------------
-- Protection class
--------------------------------------------------------------------------------
local Protection = {}
Protection.__index = Protection
Protection.supportedActions = {
edit = true,
move = true,
autoreview = true,
upload = true
}
Protection.bannerConfigFields = {
'text',
'explanation',
'tooltip',
'alt',
'link',
'image'
}
function Protection.new(args, cfg, title)
local obj = {}
obj._cfg = cfg
obj.title = title or mw.title.getCurrentTitle()
-- Set action
if not args.action then
obj.action = 'edit'
elseif Protection.supportedActions[args.action] then
obj.action = args.action
else
error(string.format(
'invalid action: %s',
tostring(args.action)
), 3)
end
-- Set level
obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)
if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then
-- Users need to be autoconfirmed to move pages anyway, so treat
-- semi-move-protected pages as unprotected.
obj.level = '*'
end
-- Set expiry
local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)
if effectiveExpiry == 'infinity' then
obj.expiry = 'indef'
elseif effectiveExpiry ~= 'unknown' then
obj.expiry = validateDate(effectiveExpiry, 'expiry date')
end
-- Set reason
if args[1] then
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 3)
end
end
-- Set protection date
if args.date then
obj.protectionDate = validateDate(args.date, 'protection date')
end
-- Set banner config
do
obj.bannerConfig = {}
local configTables = {}
if cfg.banners[obj.action] then
configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]
end
if cfg.defaultBanners[obj.action] then
configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]
configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default
end
configTables[#configTables + 1] = cfg.masterBanner
for i, field in ipairs(Protection.bannerConfigFields) do
for j, t in ipairs(configTables) do
if t[field] then
obj.bannerConfig[field] = t[field]
break
end
end
end
end
return setmetatable(obj, Protection)
end
function Protection:isUserScript()
-- Whether the page is a user JavaScript or CSS page.
local title = self.title
return title.namespace == 2 and (
title.contentModel == 'javascript' or title.contentModel == 'css'
)
end
function Protection:isProtected()
return self.level ~= '*'
end
function Protection:shouldShowLock()
-- Whether we should output a banner/padlock
return self:isProtected() and not self:isUserScript()
end
-- Whether this page needs a protection category.
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock
function Protection:isTemporary()
return type(self.expiry) == 'number'
end
function Protection:makeProtectionCategory()
if not self:shouldHaveProtectionCategory() then
return ''
end
local cfg = self._cfg
local title = self.title
-- Get the expiry key fragment.
local expiryFragment
if self.expiry == 'indef' then
expiryFragment = self.expiry
elseif type(self.expiry) == 'number' then
expiryFragment = 'temp'
end
-- Get the namespace key fragment.
local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]
if not namespaceFragment and title.namespace % 2 == 1 then
namespaceFragment = 'talk'
end
-- Define the order that key fragments are tested in. This is done with an
-- array of tables containing the value to be tested, along with its
-- position in the cfg.protectionCategories table.
local order = {
{val = expiryFragment, keypos = 1},
{val = namespaceFragment, keypos = 2},
{val = self.reason, keypos = 3},
{val = self.level, keypos = 4},
{val = self.action, keypos = 5}
}
--[[
-- The old protection templates used an ad-hoc protection category system,
-- with some templates prioritising namespaces in their categories, and
-- others prioritising the protection reason. To emulate this in this module
-- we use the config table cfg.reasonsWithNamespacePriority to set the
-- reasons for which namespaces have priority over protection reason.
-- If we are dealing with one of those reasons, move the namespace table to
-- the end of the order table, i.e. give it highest priority. If not, the
-- reason should have highest priority, so move that to the end of the table
-- instead.
--]]
table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))
--[[
-- Define the attempt order. Inactive subtables (subtables with nil "value"
-- fields) are moved to the end, where they will later be given the key
-- "all". This is to cut down on the number of table lookups in
-- cfg.protectionCategories, which grows exponentially with the number of
-- non-nil keys. We keep track of the number of active subtables with the
-- noActive parameter.
--]]
local noActive, attemptOrder
do
local active, inactive = {}, {}
for i, t in ipairs(order) do
if t.val then
active[#active + 1] = t
else
inactive[#inactive + 1] = t
end
end
noActive = #active
attemptOrder = active
for i, t in ipairs(inactive) do
attemptOrder[#attemptOrder + 1] = t
end
end
--[[
-- Check increasingly generic key combinations until we find a match. If a
-- specific category exists for the combination of key fragments we are
-- given, that match will be found first. If not, we keep trying different
-- key fragment combinations until we match using the key
-- "all-all-all-all-all".
--
-- To generate the keys, we index the key subtables using a binary matrix
-- with indexes i and j. j is only calculated up to the number of active
-- subtables. For example, if there were three active subtables, the matrix
-- would look like this, with 0 corresponding to the key fragment "all", and
-- 1 corresponding to other key fragments.
--
-- j 1 2 3
-- i
-- 1 1 1 1
-- 2 0 1 1
-- 3 1 0 1
-- 4 0 0 1
-- 5 1 1 0
-- 6 0 1 0
-- 7 1 0 0
-- 8 0 0 0
--
-- Values of j higher than the number of active subtables are set
-- to the string "all".
--
-- A key for cfg.protectionCategories is constructed for each value of i.
-- The position of the value in the key is determined by the keypos field in
-- each subtable.
--]]
local cats = cfg.protectionCategories
for i = 1, 2^noActive do
local key = {}
for j, t in ipairs(attemptOrder) do
if j > noActive then
key[t.keypos] = 'all'
else
local quotient = i / 2 ^ (j - 1)
quotient = math.ceil(quotient)
if quotient % 2 == 1 then
key[t.keypos] = t.val
else
key[t.keypos] = 'all'
end
end
end
key = table.concat(key, '|')
local attempt = cats[key]
if attempt then
return makeCategoryLink(attempt, title.text)
end
end
return ''
end
function Protection:isIncorrect()
local expiry = self.expiry
return not self:shouldHaveProtectionCategory()
or type(expiry) == 'number' and expiry < os.time()
end
function Protection:isTemplateProtectedNonTemplate()
local action, namespace = self.action, self.title.namespace
return self.level == 'templateeditor'
and (
(action ~= 'edit' and action ~= 'move')
or (namespace ~= 10 and namespace ~= 828)
)
end
function Protection:makeCategoryLinks()
local msg = self._cfg.msg
local ret = {self:makeProtectionCategory()}
if self:isIncorrect() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-incorrect'],
self.title.text
)
end
if self:isTemplateProtectedNonTemplate() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-template'],
self.title.text
)
end
return table.concat(ret)
end
--------------------------------------------------------------------------------
-- Blurb class
--------------------------------------------------------------------------------
local Blurb = {}
Blurb.__index = Blurb
Blurb.bannerTextFields = {
text = true,
explanation = true,
tooltip = true,
alt = true,
link = true
}
function Blurb.new(protectionObj, args, cfg)
return setmetatable({
_cfg = cfg,
_protectionObj = protectionObj,
_args = args
}, Blurb)
end
-- Private methods --
function Blurb:_formatDate(num)
-- Formats a Unix timestamp into dd Month, YYYY format.
lang = lang or mw.language.getContentLanguage()
local success, date = pcall(
lang.formatDate,
lang,
self._cfg.msg['expiry-date-format'] or 'j F Y',
'@' .. tostring(num)
)
if success then
return date
end
end
function Blurb:_getExpandedMessage(msgKey)
return self:_substituteParameters(self._cfg.msg[msgKey])
end
function Blurb:_substituteParameters(msg)
if not self._params then
local parameterFuncs = {}
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
parameterFuncs.EXPIRY = self._makeExpiryParameter
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.IMAGELINK = self._makeImageLinkParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
self._params = setmetatable({}, {
__index = function (t, k)
local param
if parameterFuncs[k] then
param = parameterFuncs[k](self)
end
param = param or ''
t[k] = param
return param
end
})
end
msg = msg:gsub('${(%u+)}', self._params)
return msg
end
function Blurb:_makeCurrentVersionParameter()
-- A link to the page history or the move log, depending on the kind of
-- protection.
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'move' then
-- We need the move log link.
return makeFullUrl(
'Special:Log',
{type = 'move', page = pagename},
self:_getExpandedMessage('current-version-move-display')
)
else
-- We need the history link.
return makeFullUrl(
pagename,
{action = 'history'},
self:_getExpandedMessage('current-version-edit-display')
)
end
end
function Blurb:_makeEditRequestParameter()
local mEditRequest = require('Module:Submit an edit request')
local action = self._protectionObj.action
local level = self._protectionObj.level
-- Get the edit request type.
local requestType
if action == 'edit' then
if level == 'autoconfirmed' then
requestType = 'semi'
elseif level == 'extendedconfirmed' then
requestType = 'extended'
elseif level == 'templateeditor' then
requestType = 'template'
end
end
requestType = requestType or 'full'
-- Get the display value.
local display = self:_getExpandedMessage('edit-request-display')
return mEditRequest._link{type = requestType, display = display}
end
function Blurb:_makeExpiryParameter()
local expiry = self._protectionObj.expiry
if type(expiry) == 'number' then
return self:_formatDate(expiry)
else
return expiry
end
end
function Blurb:_makeExplanationBlurbParameter()
-- Cover special cases first.
if self._protectionObj.title.namespace == 8 then
-- MediaWiki namespace
return self:_getExpandedMessage('explanation-blurb-nounprotect')
end
-- Get explanation blurb table keys
local action = self._protectionObj.action
local level = self._protectionObj.level
local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'
-- Find the message in the explanation blurb table and substitute any
-- parameters.
local explanations = self._cfg.explanationBlurbs
local msg
if explanations[action][level] and explanations[action][level][talkKey] then
msg = explanations[action][level][talkKey]
elseif explanations[action][level] and explanations[action][level].default then
msg = explanations[action][level].default
elseif explanations[action].default and explanations[action].default[talkKey] then
msg = explanations[action].default[talkKey]
elseif explanations[action].default and explanations[action].default.default then
msg = explanations[action].default.default
else
error(string.format(
'could not find explanation blurb for action "%s", level "%s" and talk key "%s"',
action,
level,
talkKey
), 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeImageLinkParameter()
local imageLinks = self._cfg.imageLinks
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if imageLinks[action][level] then
msg = imageLinks[action][level]
elseif imageLinks[action].default then
msg = imageLinks[action].default
else
msg = imageLinks.edit.default
end
return self:_substituteParameters(msg)
end
function Blurb:_makeIntroBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-blurb-expiry')
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
end
end
function Blurb:_makeIntroFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-fragment-expiry')
else
return self:_getExpandedMessage('intro-fragment-noexpiry')
end
end
function Blurb:_makePagetypeParameter()
local pagetypes = self._cfg.pagetypes
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or error('no default pagetype defined', 8)
end
function Blurb:_makeProtectionBlurbParameter()
local protectionBlurbs = self._cfg.protectionBlurbs
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionBlurbs[action][level] then
msg = protectionBlurbs[action][level]
elseif protectionBlurbs[action].default then
msg = protectionBlurbs[action].default
elseif protectionBlurbs.edit.default then
msg = protectionBlurbs.edit.default
else
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionDateParameter()
local protectionDate = self._protectionObj.protectionDate
if type(protectionDate) == 'number' then
return self:_formatDate(protectionDate)
else
return protectionDate
end
end
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._cfg.protectionLevels
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionLevels[action][level] then
msg = protectionLevels[action][level]
elseif protectionLevels[action].default then
msg = protectionLevels[action].default
elseif protectionLevels.edit.default then
msg = protectionLevels.edit.default
else
error('no protection level defined for protectionLevels.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionLogParameter()
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'autoreview' then
-- We need the pending changes log.
return makeFullUrl(
'Special:Log',
{type = 'stable', page = pagename},
self:_getExpandedMessage('pc-log-display')
)
else
-- We need the protection log.
return makeFullUrl(
'Special:Log',
{type = 'protect', page = pagename},
self:_getExpandedMessage('protection-log-display')
)
end
end
function Blurb:_makeTalkPageParameter()
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._protectionObj.title.namespace].talk.name,
self._protectionObj.title.text,
self._args.section or 'top',
self:_getExpandedMessage('talk-page-link-display')
)
end
function Blurb:_makeTooltipBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-blurb-expiry')
else
return self:_getExpandedMessage('tooltip-blurb-noexpiry')
end
end
function Blurb:_makeTooltipFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-fragment-expiry')
else
return self:_getExpandedMessage('tooltip-fragment-noexpiry')
end
end
function Blurb:_makeVandalTemplateParameter()
return mw.getCurrentFrame():expandTemplate{
title="vandal-m",
args={self._args.user or self._protectionObj.title.baseText}
}
end
-- Public methods --
function Blurb:makeBannerText(key)
-- Validate input.
if not key or not Blurb.bannerTextFields[key] then
error(string.format(
'"%s" is not a valid banner config field',
tostring(key)
), 2)
end
-- Generate the text.
local msg = self._protectionObj.bannerConfig[key]
if type(msg) == 'string' then
return self:_substituteParameters(msg)
elseif type(msg) == 'function' then
msg = msg(self._protectionObj, self._args)
if type(msg) ~= 'string' then
error(string.format(
'bad output from banner config function with key "%s"'
.. ' (expected string, got %s)',
tostring(key),
type(msg)
), 4)
end
return self:_substituteParameters(msg)
end
end
--------------------------------------------------------------------------------
-- BannerTemplate class
--------------------------------------------------------------------------------
local BannerTemplate = {}
BannerTemplate.__index = BannerTemplate
function BannerTemplate.new(protectionObj, cfg)
local obj = {}
obj._cfg = cfg
-- Set the image filename.
local imageFilename = protectionObj.bannerConfig.image
if imageFilename then
obj._imageFilename = imageFilename
else
-- If an image filename isn't specified explicitly in the banner config,
-- generate it from the protection status and the namespace.
local action = protectionObj.action
local level = protectionObj.level
local namespace = protectionObj.title.namespace
local reason = protectionObj.reason
-- Deal with special cases first.
if (
namespace == 10
or namespace == 828
or reason and obj._cfg.indefImageReasons[reason]
)
and action == 'edit'
and level == 'sysop'
and not protectionObj:isTemporary()
then
-- Fully protected modules and templates get the special red "indef"
-- padlock.
obj._imageFilename = obj._cfg.msg['image-filename-indef']
else
-- Deal with regular protection types.
local images = obj._cfg.images
if images[action] then
if images[action][level] then
obj._imageFilename = images[action][level]
elseif images[action].default then
obj._imageFilename = images[action].default
end
end
end
end
return setmetatable(obj, BannerTemplate)
end
function BannerTemplate:renderImage()
local filename = self._imageFilename
or self._cfg.msg['image-filename-default']
or 'Transparent.gif'
return makeFileLink{
file = filename,
size = (self.imageWidth or 20) .. 'px',
alt = self._imageAlt,
link = self._imageLink,
caption = self.imageCaption
}
end
--------------------------------------------------------------------------------
-- Banner class
--------------------------------------------------------------------------------
local Banner = setmetatable({}, BannerTemplate)
Banner.__index = Banner
function Banner.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 40
obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.
obj._reasonText = blurbObj:makeBannerText('text')
obj._explanationText = blurbObj:makeBannerText('explanation')
obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.
return setmetatable(obj, Banner)
end
function Banner:__tostring()
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local mbargs = {
page = self._page,
type = 'protection',
image = self:renderImage(),
text = string.format(
"'''%s'''%s",
reasonText,
explanationText and '<br />' .. explanationText or ''
)
}
return makeMessageBox('mbox', mbargs)
end
--------------------------------------------------------------------------------
-- Padlock class
--------------------------------------------------------------------------------
local Padlock = setmetatable({}, BannerTemplate)
Padlock.__index = Padlock
function Padlock.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 20
obj.imageCaption = blurbObj:makeBannerText('tooltip')
obj._imageAlt = blurbObj:makeBannerText('alt')
obj._imageLink = blurbObj:makeBannerText('link')
obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]
or cfg.padlockIndicatorNames.default
or 'pp-default'
return setmetatable(obj, Padlock)
end
function Padlock:__tostring()
local frame = mw.getCurrentFrame()
-- The nowiki tag helps prevent whitespace at the top of articles.
return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{
name = 'indicator',
args = {name = self._indicatorName},
content = self:renderImage()
}
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- This is used for testing purposes.
return {
Protection = Protection,
Blurb = Blurb,
BannerTemplate = BannerTemplate,
Banner = Banner,
Padlock = Padlock,
}
end
function p._main(args, cfg, title)
args = args or {}
cfg = cfg or require(CONFIG_MODULE)
local protectionObj = Protection.new(args, cfg, title)
local ret = {}
-- If a page's edit protection is equally or more restrictive than its
-- protection from some other action, then don't bother displaying anything
-- for the other action (except categories).
if not yesno(args.catonly) and (protectionObj.action == 'edit' or
args.demolevel or
not getReachableNodes(
cfg.hierarchy,
protectionObj.level
)[effectiveProtectionLevel('edit', protectionObj.title)])
then
-- Initialise the blurb object
local blurbObj = Blurb.new(protectionObj, args, cfg)
-- Render the banner
if protectionObj:shouldShowLock() then
ret[#ret + 1] = tostring(
(yesno(args.small) and Padlock or Banner)
.new(protectionObj, blurbObj, cfg)
)
end
end
-- Render the categories
if yesno(args.category) ~= false then
ret[#ret + 1] = protectionObj:makeCategoryLinks()
end
return table.concat(ret)
end
function p.main(frame, cfg)
cfg = cfg or require(CONFIG_MODULE)
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]
-- Find user args, and use the parent frame if we are being called from a
-- wrapper template.
getArgs = getArgs or require('Module:Arguments').getArgs
local userArgs = getArgs(frame, {
parentOnly = defaultArgs,
frameOnly = not defaultArgs
})
-- Build the args table. User-specified args overwrite default args.
local args = {}
for k, v in pairs(defaultArgs or {}) do
args[k] = v
end
for k, v in pairs(userArgs) do
args[k] = v
end
return p._main(args, cfg)
end
return p
894f0884d4c2da1ce19d385b96f59af654b0946a
Module:Redirect template
828
1016
2228
2022-10-21T08:08:03Z
wikipedia>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
require('strict')
local p = {}
-- key is beginning of arg name. value is table with namespace number and link
-- alternatively, a function taking the namespace number and returning a validity
-- can be used
local namespaceCategories = {
all = { function() return true end },
main = { 0, '[[wp:mainspace|main]]' },
help = { 12, '[[wp:help namespace|help]]' },
portal = { 100, '[[wp:portal|portal]]' },
talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Talk pages|talk]]' },
template = { 10, '[[wp:template namespace|template]]' },
wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' },
category = { 14, '[[wp:categorization|category]]' },
user = { 2, '[[wp:user pages|user]]' },
}
-- remove whitespaces from beginning and end of args
local function valueFunc(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
end
end
return val
end
local function getPrettyName(args)
for k in pairs(namespaceCategories) do
if args[k .. ' category'] then
return string.format("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name)
end
end
return string.format("'''%s''': ", args.name)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc})
local namespace = mw.title.getCurrentTitle().namespace
--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed
local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' '
local content = string.format('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>',
args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '',
args.name and getPrettyName(args) or '',
args.from and (' from ' .. args.from) or '',
args.to and (' to ' .. args.to) or '',
args.info and beCompatibleWithBug12974 or '',
args.info or ''
)
for k,v in pairs(namespaceCategories) do
if args[k .. ' category'] then
if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args[k .. ' category'])
end
elseif args['other category'] then
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args['other category'])
end
else
content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}}
end
end
end
if namespace == 0 then
local yesno = require('Module:Yesno')
if yesno(args.printworthy) == true then
return content .. '[[Category:Printworthy redirects]]'
elseif yesno(args.printworthy) == false then
return content .. '[[Category:Unprintworthy redirects]]'
end
end
return content
end
return p
bcc2d5353cffbfcb00be2d9a7c2f9f276613e488
Module:Delink
828
167
387
2022-10-21T09:52:18Z
wikipedia>WOSlinker
0
use require("strict") instead of require("Module:No globals")
Scribunto
text/plain
-- This module de-links most wikitext.
require("strict")
local p = {}
local getArgs
local function delinkReversePipeTrick(s)
if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes.
return s
end
return s:match("%[%[|(.*)%]%]")
end
local function delinkPipeTrick(s)
-- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]].
-- First, remove the text before the first colon, if any.
if s:match(":") then
s = s:match("%[%[.-:(.*)|%]%]")
-- If there are no colons, grab all of the text apart from the square brackets and the pipe.
else
s = s:match("%[%[(.*)|%]%]")
end
-- Next up, brackets and commas.
if s:match("%(.-%)$") then -- Brackets trump commas.
s = s:match("(.-) ?%(.-%)$")
elseif s:match(",") then -- If there are no brackets, display only the text before the first comma.
s = s:match("(.-),.*$")
end
return s
end
-- Return wikilink target |wikilinks=target
local function getDelinkedTarget(s)
local result = s
-- Deal with the reverse pipe trick.
if result:match("%[%[|") then
return delinkReversePipeTrick(result)
end
result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
result = mw.text.decode(result, true) -- decode HTML entities.
-- Check for bad titles. To do this we need to find the
-- title area of the link, i.e. the part before any pipes.
local target_area
if result:match("|") then -- Find if we're dealing with a piped link.
target_area = result:match("^%[%[(.-)|.*%]%]")
else
target_area = result:match("^%[%[(.-)%]%]")
end
-- Check for bad characters.
if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then
return s
end
return target_area
end
local function getDelinkedLabel(s)
local result = s
-- Deal with the reverse pipe trick.
if result:match("%[%[|") then
return delinkReversePipeTrick(result)
end
result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
result = mw.text.decode(result, true) -- decode HTML entities.
-- Check for bad titles. To do this we need to find the
-- title area of the link, i.e. the part before any pipes.
local target_area
if result:match("|") then -- Find if we're dealing with a piped link.
target_area = result:match("^%[%[(.-)|.*%]%]")
else
target_area = result:match("^%[%[(.-)%]%]")
end
-- Check for bad characters.
if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then
return s
end
-- Check for categories, interwikis, and files.
local colon_prefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon.
local ns = mw.site.namespaces[colon_prefix] -- see if this is a known namespace
if mw.language.isKnownLanguageTag(colon_prefix) or (ns and (ns.canonicalName == "File" or ns.canonicalName == "Category")) then
return ""
end
-- Remove the colon if the link is using the [[Help:Colon trick]].
if result:match("%[%[:") then
result = "[[" .. result:match("%[%[:(.*%]%])")
end
-- Deal with links using the [[Help:Pipe trick]].
if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then
return delinkPipeTrick(result)
end
-- Find the display area of the wikilink
if result:match("|") then -- Find if we're dealing with a piped link.
result = result:match("^%[%[.-|(.+)%]%]")
-- Remove new lines from the display of multiline piped links,
-- where the pipe is before the first new line.
result = result:gsub("\n", "")
else
result = result:match("^%[%[(.-)%]%]")
end
return result
end
local function delinkURL(s)
-- Assume we have already delinked internal wikilinks, and that
-- we have been passed some text between two square brackets [foo].
-- If the text contains a line break it is not formatted as a URL, regardless of other content.
if s:match("\n") then
return s
end
-- Check if the text has a valid URL prefix and at least one valid URL character.
local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"}
local url_prefix
for _ ,v in ipairs(valid_url_prefixes) do
if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then
url_prefix = v
break
end
end
-- Get display text
if not url_prefix then
return s
end
s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket.
s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ).
s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off.
local s_decoded = mw.text.decode(s, true)
if mw.ustring.match(s_decoded, "%c") then
return s
end
return s_decoded
end
local function delinkLinkClass(text, pattern, delinkFunction)
if type(text) ~= "string" then
error("Attempt to de-link non-string input.", 2)
end
if type(pattern) ~= "string" or mw.ustring.sub(pattern, 1, 1) ~= "^" then
error('Invalid pattern detected. Patterns must begin with "^".', 2)
end
-- Iterate over the text string, and replace any matched text. using the
-- delink function. We need to iterate character by character rather
-- than just use gsub, otherwise nested links aren't detected properly.
local result = ""
while text ~= "" do
-- Replace text using one iteration of gsub.
text = mw.ustring.gsub(text, pattern, delinkFunction, 1)
-- Append the left-most character to the result string.
result = result .. mw.ustring.sub(text, 1, 1)
text = mw.ustring.sub(text, 2, -1)
end
return result
end
function p._delink(args)
local text = args[1] or ""
if args.refs == "yes" then
-- Remove any [[Help:Strip markers]] representing ref tags. In most situations
-- this is not a good idea - only use it if you know what you are doing!
text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "")
end
if args.comments ~= "no" then
text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments.
end
if args.wikilinks ~= "no" and args.wikilinks ~= "target" then
-- De-link wikilinks and return the label portion of the wikilink.
text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedLabel)
elseif args.wikilinks == "target" then
-- De-link wikilinks and return the target portions of the wikilink.
text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedTarget)
end
if args.urls ~= "no" then
text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs.
end
if args.whitespace ~= "no" then
-- Replace single new lines with a single space, but leave double new lines
-- and new lines only containing spaces or tabs before a second new line.
text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2")
text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces.
end
return text
end
function p.delink(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._delink(getArgs(frame, {wrappers = 'Template:Delink'}))
end
return p
5b8e75ac750b5d3ed76cc4158aefcd1568a6a6fd
Module:Ustring
828
1596
2931
2022-10-21T16:00:20Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict')
return setmetatable({}, {
__index = function(t, k)
local what = mw.ustring[k]
if type(what) ~= "function" then
return what
end
return function(frame)
local fargs = frame.args
local fargsused = { tag = true }
local args = {}
local str_i = 1
while fargs['s' .. str_i] do
fargsused['s' .. str_i] = true
args[str_i] = fargs['s' .. str_i]
str_i = str_i + 1
end
for i, v in ipairs(fargs) do
fargsused[i] = true
args[i + str_i - 1] = tonumber(v) or v:gsub("^\\", "", 1)
end
if not fargs.tag then
return (what(unpack(args))) -- Outside parens truncate to first result avoiding tail call
end
local tagargs = {}
for x, y in pairs(fargs) do
if not fargsused[x] then tagargs[x] = y end
end
return frame:extensionTag{name = fargs.tag, content = what(unpack(args)), args = tagargs}
end
end
})
e0455dab4b66831f7596e77432ad865faeef506c
Module:Australian place map
828
1389
2724
2022-10-21T21:04:12Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
-- This module implements the selection of the location map
-- in [[Template:Infobox Australian place]] and [[Template:Infobox Australian road]]
require('strict')
local p = {}
local function isnotblank( s ) return s and s ~= '' end
local statenames = {
sa = 'South Australia',
vic = 'Victoria',
nsw = 'New South Wales',
qld = 'Queensland',
nt = 'Northern Territory',
wa = 'Western Australia',
tas = 'Tasmania',
act = 'Australian Capital Territory',
jbt = 'Jervis Bay Territory',
ni = 'Norfolk Island'
}
local mapwidths = {
sa = 230,
qld = 190,
nt = 190,
wa = 180,
tas = 210,
act = 180
}
function p.main(frame)
local largs = frame:getParent().args
local place_type = (largs.type or ''):lower()
local map_name = largs.map_type or ''
local map_type = (largs.map_type or 'auto'):lower()
local state_abbr = (largs.state or ''):lower()
local map_width = 270
local coords = largs.coordinates or ''
local coordsa = largs.coordinates_a or ''
local coordsb = largs.coordinates_b or ''
-- Default for LGAs is nomap
-- Default for everywhere else is auto
if map_type == '' or map_type == 'auto' then
if place_type == 'lga' then
map_type = 'nomap'
else
map_type = 'auto'
end
end
-- Apply legacy parameters
if isnotblank( largs.alternative_location_map ) then
map_type = largs.alternative_location_map
map_name = map_type
elseif isnotblank( largs.force_national_map ) then
map_type = 'national'
map_name = 'Australia'
elseif isnotblank( largs.use_lga_map ) then
map_type = 'lga'
end
-- Process the value in map_type
if map_type == 'state' or map_type == 'auto' or map_type == 'lga' then
map_name = 'Australia ' .. (statenames[state_abbr] or '')
map_width = mapwidths[state_abbr] or 270
if map_type == 'lga' then
map_name = map_name .. ' ' .. (largs.lga or '')
map_width = mapwidths[state_abbr] or 270
end
elseif map_type == 'national' or map_type == 'australia' then
map_name = 'Australia'
end
if isnotblank(coords) or isnotblank(coordsa) then
else
map_type = 'nomap'
end
-- Finally build the map
if map_type ~= 'nomap' then
local caption = largs.pushpin_map_caption or ''
if caption ~= '' then caption = '<div style="font-size: smaller;">' .. caption .. '</div>' end
if isnotblank(coordsa) then
return frame:expandTemplate{
title = 'Location map many',
args = {
map_name,
relief = largs.relief or '',
label1 = isnotblank(coordsb) and isnotblank(largs.direction_a) and (largs.direction_a .. ' end') or (largs.road_name or ''),
coordinates1 = coordsa,
position1 = isnotblank(largs.pushpin_label_position_a) and largs.pushpin_label_position_a or 'left',
coordinates2 = coordsb,
label2 = isnotblank(largs.direction_b) and (largs.direction_b .. ' end') or '',
position2 = isnotblank(largs.pushpin_label_position_b) and largs.pushpin_label_position_b or 'left',
marksize = 8,
float = 'center',
caption = caption,
border = 'infobox',
width = map_width,
alt = largs.map_alt or ''
}
}
end
return frame:expandTemplate{
title = 'Location map',
args = {
map_name,
label = largs.name or '',
relief = largs.relief or '',
coordinates = coords,
marksize = 6,
position = largs.pushpin_label_position or '',
float = 'center',
caption = caption,
border = 'infobox',
width = map_width,
alt = largs.map_alt or ''
}
}
end
return ''
end
return p
24556cd36514a51adcec62de79be9cbaa5005ec6
Module:Location map/multi
828
1634
2979
2022-10-21T21:08:54Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local locmap = require('Module:Location map')
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.container(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map+', valueFunc = locmap.valueFunc})
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = locmap.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local placeslist = mw.text.gsplit(args.places, '#PlaceList#')
local permaplaces = {}
local numbermaps = #map
local count = 0
for i = 1,numbermaps do
permaplaces[i] = {}
end
for place in placeslist do
table.insert(permaplaces[count%numbermaps + 1],place)
count = count + 1
end
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
args.places = table.concat(permaplaces[k])
outputs[k] = p.container(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return locmap.top(frame, args, map) .. (args.places and args.places:gsub('%s*\n%s*', '') or '') .. locmap.bottom(frame, args, map)
end
end
local function manyMakeArgs(fullArgs, n)
if n == 1 then
return {
lat = fullArgs.lat1 or fullArgs.lat,
long = fullArgs.long1 or fullArgs.long,
coordinates = fullArgs.coordinates1 or fullArgs.coordinates,
lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg,
lat_min = fullArgs.lat1_min or fullArgs.lat_min,
lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec,
lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir,
lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg,
lon_min = fullArgs.lon1_min or fullArgs.lon_min,
lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec,
lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir,
outside = fullArgs.outside1 or fullArgs.outside,
mark = fullArgs.mark1 or fullArgs.mark,
marksize = fullArgs.mark1size or fullArgs.marksize,
link = fullArgs.link1 or fullArgs.link,
label = fullArgs.label1 or fullArgs.label,
label_size = fullArgs.label1_size or fullArgs.label_size,
label_width = fullArgs.label1_width or fullArgs.label_width,
position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos,
background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg
}
else
return {
lat = fullArgs['lat' .. n],
long = fullArgs['long' .. n],
coordinates = fullArgs['coordinates' .. n],
lat_deg = fullArgs['lat' .. n .. '_deg'],
lat_min = fullArgs['lat' .. n .. '_min'],
lat_sec = fullArgs['lat' .. n .. '_sec'],
lat_dir = fullArgs['lat' .. n .. '_dir'],
lon_deg = fullArgs['lon' .. n .. '_deg'],
lon_min = fullArgs['lon' .. n .. '_min'],
lon_sec = fullArgs['lon' .. n .. '_sec'],
lon_dir = fullArgs['lon' .. n .. '_dir'],
outside = fullArgs['outside' .. n],
mark = fullArgs['mark' .. n],
marksize = fullArgs['mark' .. n .. 'size'],
link = fullArgs['link' .. n],
label = fullArgs['label' .. n],
label_size = fullArgs['label' .. n .. '_size'],
label_width = fullArgs['label' .. n .. '_width'],
position = fullArgs['position' .. n] or fullArgs['pos' .. n],
background = fullArgs['background' .. n] or fullArgs['bg' .. n]
}
end
end
function p.many(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map many', valueFunc = locmap.valueFunc})
end
if not args[1] then
args[1] = 'World'
end
if not map then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.many(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
local markhigh
if args.markhigh then
mw.log('Removed parameter markhigh used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
for k, v in pairs(args) do -- @todo change to uargs once we have that
if v then
if string.sub(k, -4) == '_deg' then
k = string.sub(k, 1, -5)
end
if string.sub(k, 1, 3) == 'lat' then
k = tonumber(string.sub(k, 4))
if k then
table.insert(marks, k)
end
elseif string.sub(k, 1, 11) == 'coordinates' then
k = tonumber(string.sub(k, 12))
if k then
table.insert(marks,k)
end
end
end
end
table.sort(marks)
if marks[1] ~= 1 and (args.lat or args.lat_deg or args.coordinates) then
table.insert(marks, 1, 1)
end
local body = ''
for _, v in ipairs(marks) do
-- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecified
body = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) )
if args['mark' .. v .. 'high'] then
mw.log('Removed parameter mark' .. v .. 'high used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
end
args.label = nil -- there is no global label
return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' or '')
end
function p.load(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
local dataModule = mw.loadData(frame.args[1])
if not map then
map = {}
for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.load(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
if dataModule.marks then
for k,markArgs in ipairs(dataModule.marks) do
marks[k] = tostring(locmap.mark(frame, markArgs, map))
end
end
if dataModule.secondaryModules then
for _,modname in ipairs(dataModule.secondaryModules) do
for _,markArgs in ipairs(mw.loadData(modname).marks) do
marks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map))
end
end
end
return locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map)
end
return p
1acc0ca37712cbe36ee567f805a46c941859c489
Module:Template wrapper
828
602
1358
2022-10-21T21:11:46Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict');
local error_msg = '<span style=\"font-size:100%\" class=\"error\"><code style=\"color:inherit; border:inherit; padding:inherit;\">|_template=</code> missing or empty</span>';
--[[--------------------------< I S _ I N _ T A B L E >--------------------------------------------------------
scan through tbl looking for value; return true if found, false else
]]
local function is_in_table (tbl, value)
for k, v in pairs (tbl) do
if v == value then return true end
end
return false;
end
--[[--------------------------< A D D _ P A R A M E T E R >----------------------------------------------------
adds parameter name and its value to args table according to the state of boolean list argument; kv pair for
template execution; k=v string for template listing.
]]
local function add_parameter (k, v, args, list)
if list then
table.insert( args, table.concat ({k, '=', v})); -- write parameter names and values to args table as string
else
args[k] = v; -- copy parameters to args table
end
end
--[[--------------------------< A L I A S _ M A P _ G E T >----------------------------------------------------
returns a table of local template (parent frame) parameter names and the target template names that match where
in [key]=<value> pairs where:
[key] is local template parameter name (an alias)
<value> is target template parameter name (the canonical parameter name used in the working template)
The parameter |_alias-map= has the form:
|_alias-map=<list>
where <list> is a comma-separated list of alias / canonical parameter name pairs in the form
<from> : <to>
where:
<from> is the local template's parameter name (alias)
<to> is the target template's parameter name (canonical)
for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names:
<from#> : <to#>
]]
local function alias_map_get (_alias_map)
local T = mw.text.split (_alias_map, '%s*,%s*'); -- convert the comma-separated list into a table of alias pairs
local mapped_aliases = {}; -- mapped aliases will go here
local l_name, t_name; -- parameter names
for _, alias_pair in ipairs (T) do -- loop through the table of alias pairs
l_name, t_name = alias_pair:match ('(.-)%s*:%s*(.+)'); -- from each pair, get local and target parameter names
if l_name and t_name then -- if both are set
if tonumber (l_name) then
l_name = tonumber (l_name); -- convert number-as-text to a number
end
mapped_aliases[l_name] = t_name; -- add them to the map table
end
end
return mapped_aliases;
end
--[[--------------------------< F R A M E _ A R G S _ G E T >--------------------------------------------------
Fetch the wrapper template's 'default' and control parameters; adds default parameters to args
returns content of |_template= parameter (name of the working template); nil else
]]
local function frame_args_get (frame_args, args, list)
local template;
for k, v in pairs (frame_args) do -- here we get the wrapper template's 'default' parameters
if 'string' == type (k) and (v and ('' ~= v)) then -- do not pass along positional or empty parameters
if '_template' == k then
template = v; -- save the name of template that we are wrapping
elseif '_exclude' ~= k and '_reuse' ~= k and '_include-positional' ~= k and '_alias-map' ~= k then -- these already handled so ignore here;
add_parameter (k, v, args, list); -- add all other parameters to args in the style dictated by list
end
end
end
return template; -- return contents of |_template= parameter
end
--[=[--------------------------< P F R A M E _ A R G S _ G E T >------------------------------------------------
Fetches the wrapper template's 'live' parameters; adds live parameters that aren't members of the exclude table to
args table; positional parameters may not be excluded
no return value
]=]
local function pframe_args_get (pframe_args, args, exclude, _include_positional, list)
for k, v in pairs (pframe_args) do
if 'string' == type (k) and not is_in_table (exclude, k) then -- do not pass along excluded parameters
if v and ('' ~= v) then -- pass along only those parameters that have assigned values
if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template
v = ''; -- unset the value in the args table
end
add_parameter (k, v, args, list) -- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters
end
end
end
if _include_positional then
for i, v in ipairs (pframe_args) do -- pass along positional parameters
if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template
v = ''; -- unset the value in the args table
end
add_parameter (i, v, args, list);
end
end
end
--[[--------------------------< _ M A I N >--------------------------------------------------------------------
Collect the various default and live parameters into args styled according to boolean list.
returns name of the working or listed template or nil for an error message
]]
local function _main (frame, args, list)
local template;
local exclude = {}; -- table of parameter names for parameters that are not passed to the working template
local reuse_list = {}; -- table of pframe parameter names whose values are modified before they are passed to the working template as the same name
local alias_map = {}; -- table that maps parameter aliases to working template canonical parameter names
local _include_positional;
if frame.args._exclude and ('' ~= frame.args._exclude) then -- if there is |_exclude= and it's not empty
exclude = mw.text.split (frame.args._exclude, "%s*,%s*"); -- make a table from its contents
end
-- TODO: |_reuse= needs a better name (|_reuse=)
if frame.args._reuse and ('' ~= frame.args._reuse) then -- if there is |_reuse= and it's not empty
reuse_list = mw.text.split (frame.args._reuse, "%s*,%s*"); -- make a table from its contents
end
if frame.args['_alias-map'] and ('' ~= frame.args['_alias-map']) then -- if there is |_alias-map= and it's not empty
alias_map = alias_map_get (frame.args['_alias-map']); -- make a table from its contents
end
template = frame_args_get (frame.args, args, list); -- get parameters provided in the {{#invoke:template wrapper|...|...}}
if nil == template or '' == template then -- this is the one parameter that is required by this module
return nil; -- not present, tell calling function to emit an error message
end
_include_positional = 'yes' == frame.args['_include-positional']; -- when true pass all positional parameters along with non-excluded named parameters to ...
-- ... the working template; positional parameters are not excludable
local _pframe_args = frame:getParent().args; -- here we get the wrapper template's 'live' parameters from pframe.args
local pframe_args = {}; -- a local table that we can modify
for k, v in pairs (_pframe_args) do -- make a copy that we can modify
pframe_args[k] = v;
end
-- here we look for pframe parameters that are aliases of canonical parameter names; when found
-- we replace the alias with the canonical. We do this here because the reuse_list works on
-- canonical parameter names so first we convert alias parameter names to canonical names and then
-- we remove those canonical names from the pframe table that are reused (provided to the working
-- template through the frame args table)
for k, v in pairs (alias_map) do -- k is alias name, v is canonical name
if pframe_args[k] then -- if pframe_args has parameter with alias name
pframe_args[v] = _pframe_args[k]; -- create new canonical name with alias' value
pframe_args[k] = nil; -- unset the alias
end
end
for k, v in pairs (pframe_args) do -- do enumerated parameter alias -> canonical translation
if 'string' == type (k) then -- only named parameters can be enumerated
if alias_map[k..'#'] then -- non-enumerated alias matches enumerated parameter pattern? enumerator at end only
pframe_args[alias_map[k..'#']:gsub('#', '')] = v; -- remove '#' and copy parameter to pframe_args table
pframe_args[k] = nil; -- unset the alias
elseif k:match ('%d+') then -- if this parameter name contains digits
local temp = k:gsub ('%d+', '#'); -- make a copy; digits replaced with single '#'
local enum = k:match ('%d+'); -- get the enumerator
if alias_map[temp] then -- if this parameter is a recognized enumerated alias
pframe_args[alias_map[temp]:gsub('#', enum)] = v; -- use canonical name and replace '#' with enumerator and add to pframe_args
pframe_args[k] = nil; -- unset the alias
end
end
end
end
-- pframe parameters that are _reused are 'reused' have the form something like this:
-- |chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]]
-- where a parameter in the wrapping template is modified and then passed to the working template
-- using the same parameter name (in this example |chapter=)
-- remove parameters that will be reused
for k, v in ipairs (reuse_list) do -- k is numerical index, v is canonical parameter name to ignore
if pframe_args[v] then -- if pframe_args has parameter that should be ignored
pframe_args[v] = nil; -- unset the ignored parameter
end
end
pframe_args_get (pframe_args, args, exclude, _include_positional, list); -- add parameters and values to args that are not listed in the exclude table
return template; -- args now has all default and live parameters, return working template name
end
--[[--------------------------< W R A P >----------------------------------------------------------------------
Template entry point. Call this function to 'execute' the working template
]]
local function wrap (frame)
local args = {}; -- table of default and live parameters and their values to be passed to the wrapped template
local template; -- the name of the working template
template = _main (frame, args, false); -- get default and live parameters and the name of the working template
if not template then -- template name is required
return error_msg; -- emit error message and abandon if template name not present
end
return frame:expandTemplate {title=template, args=args}; -- render the working template
end
--[[--------------------------< L I S T >----------------------------------------------------------------------
Template entry point. Call this function to 'display' the source for the working template. This function added
as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments
This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}}
Values in the args table are numerically indexed strings in the form 'name=value'
]]
local function list(frame, do_link)
local args = {}; -- table of default and live parameters and their values to be passed to the listed template
local template; -- the name of the listed template
template = _main (frame, args, true); -- get default and live parameters and the name of the listed template
if not template then -- template name is required
return error_msg; -- emit error message and abandon if template name not present
end
if do_link then
template = ('[[%s|%s]]'):format(frame:expandTemplate{ title='Transclude', args = {template} }, template)
end
table.sort(args)
for i = 1, #args do
local stripped = args[i]:match('^' .. i .. '=([^=]*)$')
if stripped then args[i] = stripped else break end
end
return frame:preprocess(table.concat({
'<code style="color:inherit; background:inherit; border:none;">{{',
template,
('<wbr><nowiki>|%s</nowiki>'):rep(#args):format(unpack(args)), '}}</code>'})); -- render the template
end
local function link (frame)
return list(frame, true)
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
link = link,
list = list,
wrap = wrap,
};
5e3d3ed3f3988725fb0fef6b44479bacc4210f37
Module:Footnotes
828
896
1982
2022-10-21T21:15:31Z
wikipedia>Legoktm
0
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
--[[--------------------------< A R G S _ D E F A U L T >------------------------------------------------------
a table to specify initial values.
]]
local args_default = {
bracket_left = '',
bracket_right = '',
bracket_year_left = '',
bracket_year_right = '',
postscript = '',
page = '',
pages = '',
location = '',
page_sep = ", p. ",
pages_sep = ", pp. ",
ref = '',
template = 'harv', -- if template name not provided in {{#invoke:}} use this
};
--[[--------------------------< T A R G E T _ C H E C K >------------------------------------------------------
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside
a template that wraps another template; 'multiple targets' error may not be suppressed
]]
local function target_check (anchor_id, args)
local namespace = mw.title.getCurrentTitle().namespace;
local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');
local anchor_id_list = anchor_id_list_module.anchor_id_list;
local article_whitelist = anchor_id_list_module.article_whitelist;
local template_list = anchor_id_list_module.template_list;
local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');
local whitelist = whitelist_module.whitelist;
local special_patterns = whitelist_module.special_patterns;
local DNB_special_patterns = whitelist_module.DNB_special_patterns;
local DNB_template_names = whitelist_module.DNB_template_names;
if 10 == namespace then
return ''; -- automatic form of |no-tracking=yes; TODO: is this too broad?
end
local tally = anchor_id_list[anchor_id]; -- nil when anchor_id not in list; else a tally
local msg;
local category;
if not tally then
if args.ignore then
return ''; -- if ignore is true then no message, no category
end
if article_whitelist and article_whitelist[anchor_id] then -- if an article-local whitelist and anchor ID is in it
return ''; -- done
end
local wl_anchor_id = anchor_id; -- copy to be modified to index into the whitelist
if args.year then -- for anchor IDs created by this template (not in |ref=) that have a date
if args.year:match ('%d%l$') or -- use the date value to determine if we should remove the disambiguator
args.year:match ('n%.d%.%l$') or
args.year:match ('nd%l$') then
wl_anchor_id = wl_anchor_id:gsub ('%l$', ''); -- remove the disambiguator
end
end
local t_tbl = whitelist[wl_anchor_id]; -- get list of templates associated with this anchor ID
if t_tbl then -- when anchor ID not whitelisted t_tbl is nil
for _, t in ipairs (t_tbl) do -- spin through the list of templates associated with this anchor ID
if template_list[t] then -- if associated template is found in the list of templates in the article
return ''; -- anchor ID is whitlisted and article has matching template so no error
end
end
end
for _, pattern in ipairs (special_patterns) do -- spin through the spcial patterns and try to match
if anchor_id:match (pattern) then
return '';
end
end
for _, dnb_t in ipairs (DNB_template_names or {}) do -- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error
if template_list[dnb_t] then -- if the article has this DNB template
for _, pattern in ipairs (DNB_special_patterns) do -- spin through the DNB-specifiec wildcard patterns
if anchor_id:match (pattern) then -- and attempt a match
return ''; -- found a match
end
end
end
end
msg = 'no target: ' .. anchor_id; -- anchor_id not found
category = '[[Category:Harv and Sfn no-target errors]]';
elseif 1 < tally then
msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id; -- more than one anchor_id in this article
category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or ''; -- only categorize in article space
return '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category;
end
-- category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or ''; -- only categorize in article space
category = 0 == namespace and category or ''; -- only categorize in article space
--use this version to show error messages
-- return msg and '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or '';
--use this version to hide error messages
return msg and '<span class="error harv-error" style="display: none; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or '';
end
--[[--------------------------< I S _ Y E A R >----------------------------------------------------------------
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:
YYYY
n.d.
nd
c. YYYY
YYYY–YYYY (separator is endash)
YYYY–YY (separator is endash)
return true when param has a recognized form; false else
]]
local patterns_date= {
'^%d%d%d%d?%l?$',
'^n%.d%.%l?$',
'^nd%l?$',
'^c%. %d%d%d%d?%l?$',
'^%d%d%d%d–%d%d%d%d%l?$',
'^%d%d%d%d–%d%d%l?$',
}
local function is_year (param, args)
args.year = ''; -- used for harv error;
for _, pattern in ipairs (patterns_date) do
if mw.ustring.match (param, pattern) then
args.year = param; -- used for harv error;
return true;
end
end
end
--[[--------------------------< C O R E >----------------------------------------------------------------------
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)
]]
local function core( args )
local result;
local err_msg = ''
if args.P5 ~= '' then
if is_year (args.P5, args) then
result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});
else
args.P5 = ''; -- when P5 not a year don't include in anchor
result = table.concat ({args.P1, ' et al.'}); -- and don't render it
end
elseif args.P4 ~= '' then
if is_year (args.P4, args) then
result = table.concat ({args.P1, ', ', args.P2, ' & ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right}); -- three names and a year
else
result = table.concat ({args.P1, ' et al.'}); -- four names
end
elseif args.P3 ~= '' then
if is_year (args.P3, args) then
result = table.concat ({args.P1, ' & ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right}); -- two names and a year
else
result = table.concat ({args.P1, ', ', args.P2, ' ', ' & ', args.P3}); -- three names
end
elseif args.P2 ~= '' then
if is_year (args.P2, args) then
result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right}); -- one name and year
else
result = table.concat ({args.P1, ' & ', args.P2}); -- two names
end
else
result = args.P1; -- one name
end
-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')
-- and when no in-source location (no |p=, |pp=, or |loc=)
-- and when the first or only character in args.postscript is a dot
-- remove the author-date result trailing dot
-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)
if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then
result = result:gsub ('%.$', '');
end
if args.ref ~= 'none' then
local anchor_id;
if args.ref ~= '' then
anchor_id = mw.uri.anchorEncode (args.ref);
err_msg = target_check (anchor_id, args);
result = table.concat ({'[[#', anchor_id, '|', result, ']]'});
else
anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));
err_msg = target_check (anchor_id, args);
result = table.concat ({'[[#', anchor_id, '|', result, ']]'});
end
end
if args.page ~= '' then
result = table.concat ({result, args.page_sep, args.page});
elseif args.pages ~= ''then
result = table.concat ({result, args.pages_sep, args.pages});
end
if args.location ~= '' then
result = table.concat ({result, ', ', args.location});
end
result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' '); -- strip redundant spaces
return result .. err_msg;
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
This code copied from Module:Citation/CS1. The only modification is to require Module:Citation/CS1/Utilities
so that it has access to the functions is_set() and has_accept_as_written()
]]
local function hyphen_to_dash( str )
local utilities = require ('Module:Citation/CS1/Utilities'); -- only modification so that this function has access to is_set() and has_accept_as_written()
if not utilities.is_set (str) then
return str;
end
local accept; -- Boolean
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-'); -- replace HTML numeric entity with hyphen character
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
item, accept = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item
if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
table.insert (out, item); -- add the (possibly modified) item to the output table
end
local temp_str = ''; -- concatenate the output table into a comma separated string
temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out
if accept then
temp_str = utilities.has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value
return temp_str;
else
return temp_str; -- else, return assembled temp_str
end
end
--[[--------------------------< A R G S _ F E T C H >---------------------------------------------------------
Because all of the templates share a common set of parameters, a single common function to fetch those parameters
from frame and parent frame.
]]
local function args_fetch (frame, ps)
local args = args_default; -- create a copy of the default table
local pframe = frame:getParent(); -- point to the template's parameter table
for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any
args[k] = v;
end
args.postscript = pframe.args.postscript or pframe.args.ps or ps;
if 'none' == args.postscript then
args.postscript = '';
end
args.page = pframe.args.p or pframe.args.page or '';
args.pages = pframe.args.pp or pframe.args.pages or '';
args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';
args.location = pframe.args.loc or '';
args.ref = pframe.args.ref or pframe.args.Ref or '';
args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);
for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- loop through the five positional parameters and trim if set else empty string
args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';
end
if args.P5 and not is_year (args.P5, args) then
local i = 6; -- initialize the indexer to the sixth positional parameter
while pframe.args[i] do -- in case there are too many authors loop through the authors looking for a year
local v = mw.text.trim (pframe.args[i]); -- trim
if is_year (v, args) then -- if a year
args.P5 = v; -- overwrite whatever was in args.P5 with year
break; -- and abandon the search
end
i = i + 1; -- bump the indexer
end
end
return args;
end
--[[--------------------------< H A R V A R D _ C I T A T I O N >----------------------------------------------
common entry point for:
{{harvard citation}} aka {{harv}}
{{Harvard citation no brackets}} aka {{harvnb}}
{{harvcol}}
{{harvcolnb}}
{{harvcoltxt}}
{{Harvard citation text}} aka {{harvtxt}}
{{Harvp}}
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.
]]
local function harvard_citation (frame)
local args = args_fetch (frame, ''); -- get the template and invoke parameters; default postscript is empty string
return core (args);
end
--[[--------------------------< S T R I P _ U R L >------------------------------------------------------------
used by sfn() and sfnm(). This function fixes an issue with reference tooltip gadget where the tooltip is not displayed
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters The researved characters are:
!#$&'()*+,/:;=?@[]
]]
local function strip_url (pages)
local escaped_uri;
if not pages or ('' == pages) then
return pages;
end
for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do -- for each external link get the uri
escaped_uri = uri:gsub ("([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); -- save a copy with lua pattern characters escaped
uri = uri:gsub ("[!#%$&'%(%)%*%+,/:;=%?@%[%]%.%%]", ''); -- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'
pages = pages:gsub (escaped_uri, uri, 1); -- replace original uri with the stripped version
end
return pages;
end
--[[--------------------------< S F N >------------------------------------------------------------------------
entry point for {{sfn}} and {{sfnp}}
]]
local function sfn (frame)
local args = args_fetch (frame, '.'); -- get the template and invoke parameters; default postscript is a dot
local result = core (args); -- go make a CITEREF anchor
-- put it all together and then strip redundant spaces
local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');
return frame:extensionTag ({name='ref', args={name=name}, content=result});
end
--[[--------------------------< S F N M >----------------------------------------------------------------------
common entry point for {{sfnm}} and {{sfnmp}}
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.
]]
local function sfnm (frame)
local args = args_default; -- create a copy of the default table
local pframe = frame:getParent(); -- point to the template's parameter table
local n = 1; -- index of source; this is the 'n' in na1, ny, etc
local first_pnum = 1; -- first of a pair of positional parameters
local second_pnum = 2; -- second of a pair of positional parameters
local last_ps = 0; -- index of the last source with |nps= set
local last_index = 0; -- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering
local out = {}; -- table to hold rendered sources
local footnote = {'FOOTNOTE'}; -- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go
for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any
args[k] = v;
end
while true do
if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then
break; -- no na1 or matching positional parameter so done
end
if pframe.args[table.concat ({n, 'a1'})] then -- does this source use named parameters?
for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- initialize for this source
args[v] = '';
end
for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- extract author and year parameters for this source
args[v] = pframe.args[table.concat ({n, 'a', i})] or ''; -- attempt to assign author name
if '' == args[v] then -- when there wasn't an author name
args[v] = pframe.args[table.concat ({n, 'y'})] or ''; -- attempt to assign year
break; -- done with author/date for this source
end
end
else -- this source uses positional parameters
args.P1 = mw.text.trim (pframe.args[first_pnum]); -- yes, only one author supported
args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or ''; -- when positional author, year must also be positional
for _, v in ipairs ({'P3', 'P4', 'P5'}) do -- blank the rest of these for this source
args[v] = '';
end
first_pnum = first_pnum + 2; -- source must use positional author and positional year
second_pnum = first_pnum + 1; -- bump these for possible next positional source
end
args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';
if 'none' == args.postscript then -- this for compatibility with other footnote templates; does nothing
args.postscript = '';
end
args.ref = pframe.args[table.concat ({n, 'ref'})] or ''; -- alternate reference for this source
args.page = pframe.args[table.concat ({n, 'p'})] or ''; -- insource locations for this source
args.pages = pframe.args[table.concat ({n, 'pp'})] or '';
args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';
args.location = pframe.args[table.concat ({n, 'loc'})] or '';
args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);
table.insert (out, core (args)); -- save the rendering of this source
for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- create the FOOTNOTE id
if '' ~= args[v] then
table.insert (footnote, args[v]);
end
end
for k, v in ipairs ({'page', 'pages', 'location'}) do -- these done separately so that we can strip uri-reserved characters from extlinked page numbers
if '' ~= args[v] then
table.insert (footnote, strip_url (args[v]))
end
end
last_index = n; -- flags used to select terminal postscript from nps or from end_ps
if '' ~= args.postscript then
last_ps = n;
end
n = n+1; -- bump for the next one
end
local name = table.concat (footnote):gsub ('%s+', ' '); -- put the footnote together and strip redundant space
args.end_ps = pframe.args.postscript or pframe.args.ps or '.'; -- this is the postscript for the whole not for the individual sources
if 'none' == args.end_ps then -- not an original sfnm parameter value; added for compatibility with other footnote templates
args.end_ps = '';
end
local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or args.end_ps});
return frame:extensionTag ({name='ref', args={name=name}, content=result});
end
--[[--------------------------< S F N R E F >------------------------------------------------------------------
implements {{sfnref}}
]]
local function sfnref (frame)
local args = getArgs (frame);
local out = {};
for i=1, 5 do -- get the first five args if there are five args
if args[i] then
out[i] = args[i];
else
break; -- less than 5 args break out
end
end
if 5 == #out then -- when we have seen five args there may bemore
local i = 6; -- initialize the indexer to the sixth positional parameter
while args[i] do -- in case there are too many authors loop through the authors looking for a year
if is_year (args[i], args) then -- if a year
out[5] = args[i]; -- overwrite whatever was in args[5] with year
break; -- and abandon the search
end
i = i + 1; -- bump the indexer
end
end
return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
harvard_citation = harvard_citation,
sfn = sfn,
sfnm = sfnm,
sfnref = sfnref,
};
6e6f14a1fb0053e5aed88c564fc13d570e2d5a03
Module:Italic title
828
1343
2678
2022-10-21T21:17:12Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
-- This module implements {{italic title}}.
require('strict')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local yesno = require('Module:Yesno')
--------------------------------------------------------------------------------
-- ItalicTitle class
--------------------------------------------------------------------------------
local ItalicTitle = {}
do
----------------------------------------------------------------------------
-- Class attributes and functions
-- Things that belong to the class are here. Things that belong to each
-- object are in the constructor.
----------------------------------------------------------------------------
-- Keys of title parts that can be italicized.
local italicizableKeys = {
namespace = true,
title = true,
dab = true,
}
----------------------------------------------------------------------------
-- ItalicTitle constructor
-- This contains all the dynamic attributes and methods.
----------------------------------------------------------------------------
function ItalicTitle.new()
local obj = {}
-- Function for checking self variable in methods.
local checkSelf = libraryUtil.makeCheckSelfFunction(
'ItalicTitle',
'obj',
obj,
'ItalicTitle object'
)
-- Checks a key is present in a lookup table.
-- Param: name - the function name.
-- Param: argId - integer position of the key in the argument list.
-- Param: key - the key.
-- Param: lookupTable - the table to look the key up in.
local function checkKey(name, argId, key, lookupTable)
if not lookupTable[key] then
error(string.format(
"bad argument #%d to '%s' ('%s' is not a valid key)",
argId,
name,
key
), 3)
end
end
-- Set up object structure.
local parsed = false
local categories = {}
local italicizedKeys = {}
local italicizedSubstrings = {}
-- Parses a title object into its namespace text, title, and
-- disambiguation text.
-- Param: options - a table of options with the following keys:
-- title - the title object to parse
-- ignoreDab - ignore any disambiguation parentheses
-- Returns the current object.
function obj:parseTitle(options)
checkSelf(self, 'parseTitle')
checkType('parseTitle', 1, options, 'table')
checkTypeForNamedArg('parseTitle', 'title', options.title, 'table')
local title = options.title
-- Title and dab text
local prefix, parentheses
if not options.ignoreDab then
prefix, parentheses = mw.ustring.match(
title.text,
'^(.+) %(([^%(%)]+)%)$'
)
end
if prefix and parentheses then
self.title = prefix
self.dab = parentheses
else
self.title = title.text
end
-- Namespace
local namespace = mw.site.namespaces[title.namespace].name
if namespace and #namespace >= 1 then
self.namespace = namespace
end
-- Register the object as having parsed a title.
parsed = true
return self
end
-- Italicizes part of the title.
-- Param: key - the key of the title part to be italicized. Possible
-- keys are contained in the italicizableKeys table.
-- Returns the current object.
function obj:italicize(key)
checkSelf(self, 'italicize')
checkType('italicize', 1, key, 'string')
checkKey('italicize', 1, key, italicizableKeys)
italicizedKeys[key] = true
return self
end
-- Un-italicizes part of the title.
-- Param: key - the key of the title part to be un-italicized. Possible
-- keys are contained in the italicizableKeys table.
-- Returns the current object.
function obj:unitalicize(key)
checkSelf(self, 'unitalicize')
checkType('unitalicize', 1, key, 'string')
checkKey('unitalicize', 1, key, italicizableKeys)
italicizedKeys[key] = nil
return self
end
-- Italicizes a substring in the title. This only affects the main part
-- of the title, not the namespace or the disambiguation text.
-- Param: s - the substring to be italicized.
-- Returns the current object.
function obj:italicizeSubstring(s)
checkSelf(self, 'italicizeSubstring')
checkType('italicizeSubstring', 1, s, 'string')
italicizedSubstrings[s] = true
return self
end
-- Un-italicizes a substring in the title. This only affects the main
-- part of the title, not the namespace or the disambiguation text.
-- Param: s - the substring to be un-italicized.
-- Returns the current object.
function obj:unitalicizeSubstring(s)
checkSelf(self, 'unitalicizeSubstring')
checkType('unitalicizeSubstring', 1, s, 'string')
italicizedSubstrings[s] = nil
return self
end
-- Renders the object into a page name. If no title has yet been parsed,
-- the current title is used.
-- Returns string
function obj:renderTitle()
checkSelf(self, 'renderTitle')
-- Italicizes a string
-- Param: s - the string to italicize
-- Returns string.
local function italicize(s)
assert(type(s) == 'string', 's was not a string')
assert(s ~= '', 's was the empty string')
return string.format('<i>%s</i>', s)
end
-- Escape characters in a string that are magic in Lua patterns.
-- Param: pattern - the pattern to escape
-- Returns string.
local function escapeMagicCharacters(s)
assert(type(s) == 'string', 's was not a string')
return s:gsub('%p', '%%%0')
end
-- If a title hasn't been parsed yet, parse the current title.
if not parsed then
self:parseTitle{title = mw.title.getCurrentTitle()}
end
-- Italicize the different parts of the title and store them in a
-- titleParts table to be joined together later.
local titleParts = {}
-- Italicize the italicizable keys.
for key in pairs(italicizableKeys) do
if self[key] then
if italicizedKeys[key] then
titleParts[key] = italicize(self[key])
else
titleParts[key] = self[key]
end
end
end
-- Italicize substrings. If there are any substrings to be
-- italicized then start from the raw title, as this overrides any
-- italicization of the main part of the title.
if next(italicizedSubstrings) then
titleParts.title = self.title
for s in pairs(italicizedSubstrings) do
local pattern = escapeMagicCharacters(s)
local italicizedTitle, nReplacements = titleParts.title:gsub(
pattern,
italicize
)
titleParts.title = italicizedTitle
-- If we didn't make any replacements then it means that we
-- have been passed a bad substring or that the page has
-- been moved to a bad title, so add a tracking category.
if nReplacements < 1 then
categories['Pages using italic title with no matching string'] = true
end
end
end
-- Assemble the title together from the parts.
local ret = ''
if titleParts.namespace then
ret = ret .. titleParts.namespace .. ':'
end
ret = ret .. titleParts.title
if titleParts.dab then
ret = ret .. ' (' .. titleParts.dab .. ')'
end
return ret
end
-- Returns an expanded DISPLAYTITLE parser function called with the
-- result of obj:renderTitle, plus any other optional arguments.
-- Returns string
function obj:renderDisplayTitle(...)
checkSelf(self, 'renderDisplayTitle')
return mw.getCurrentFrame():callParserFunction(
'DISPLAYTITLE',
self:renderTitle(),
...
)
end
-- Returns an expanded DISPLAYTITLE parser function called with the
-- result of obj:renderTitle, plus any other optional arguments, plus
-- any tracking categories.
-- Returns string
function obj:render(...)
checkSelf(self, 'render')
local ret = self:renderDisplayTitle(...)
for cat in pairs(categories) do
ret = ret .. string.format(
'[[Category:%s]]',
cat
)
end
return ret
end
return obj
end
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
local function getArgs(frame, wrapper)
assert(type(wrapper) == 'string', 'wrapper was not a string')
return require('Module:Arguments').getArgs(frame, {
wrappers = wrapper
})
end
-- Main function for {{italic title}}
function p._main(args)
checkType('_main', 1, args, 'table')
local italicTitle = ItalicTitle.new()
italicTitle:parseTitle{
title = mw.title.getCurrentTitle(),
ignoreDab = yesno(args.all, false)
}
if args.string then
italicTitle:italicizeSubstring(args.string)
else
italicTitle:italicize('title')
end
return italicTitle:render(args[1])
end
function p.main(frame)
return p._main(getArgs(frame, 'Template:Italic title'))
end
function p._dabonly(args)
return ItalicTitle.new()
:italicize('dab')
:render(args[1])
end
function p.dabonly(frame)
return p._dabonly(getArgs(frame, 'Template:Italic dab'))
end
return p
9b49016c8f526f680e9ecdaf36ec4ceafda2a2f8
Module:Language/doc
828
446
1063
2022-10-21T21:29:07Z
wikipedia>WOSlinker
0
remove no globals link
wikitext
text/x-wiki
{{Module rating|beta}}
{{Language templates}}
{{Lua|Module:Language/data|Module:Unicode data}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added.
The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module.
===Examples===
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre>
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}
====Invalid codes====
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}</pre>
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}
====Errors====
<pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre>
* {{#invoke:Language|wikt|en-Latin|language}}
== Tracking categories ==
* {{Category link with count|Language module errors}}
* {{Category link with count|Language module reconstructed with no asterisk}}
* {{Category link with count|Language module using redirect code}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4
Module:Infobox military conflict
828
1497
2832
2022-10-21T21:37:13Z
Legoktm
41
Replace [[Module:No globals]] with require( "strict" )
Scribunto
text/plain
require('strict')
local infoboxStyle = mw.loadData('Module:WPMILHIST Infobox style')
local templatestyles = 'Module:Infobox military conflict/styles.css'
local IMC = {}
IMC.__index = IMC
function IMC:renderPerCombatant(builder, headerText, prefix, suffix)
prefix = prefix or ''
suffix = suffix or ''
local colspans = {}
-- This may result in colspans[1] getting set twice, but
-- this is no big deal. The second set will be correct.
local lastCombatant = 1
for i = 1,self.combatants do
if self.args[prefix .. i .. suffix] then
colspans[lastCombatant] = i - lastCombatant
lastCombatant = i
end
end
local jointText = self.args[prefix .. (self.combatants + 1) .. suffix]
if headerText and (colspans[1] or jointText) then
builder:tag('tr')
:tag('th')
:attr('colspan', self.combatants)
:cssText(infoboxStyle.header_raw)
:wikitext(headerText)
end
-- The only time colspans[1] wouldn't be set is if no
-- combatant has a field with the given prefix and suffix.
if colspans[1] then
-- Since each found argument set the colspan for the previous
-- one, the final one wasn't set above, so set it now.
colspans[lastCombatant] = self.combatants - lastCombatant + 1
builder = builder:tag('tr')
for i = 1,self.combatants do
-- At this point, colspans[i] will be set for i=1 unconditionally, and for
-- any other value of i where self.args[prefix .. i .. suffix] is set.
if colspans[i] then
builder:tag('td')
-- don't bother emitting colspan="1"
:attr('colspan', colspans[i] ~= 1 and colspans[i] or nil)
:css('width', math.floor(100 / self.combatants * colspans[i] + 0.5) .. '%')
-- no border on the right of the rightmost column
:css('border-right', i ~= lastCombatant and infoboxStyle.internal_border or nil)
-- no padding on the left of the leftmost column
:css('padding-left', i ~= 1 and '0.25em' or nil)
-- don't show the border if we're directly under a header
:css('border-top', not headerText and infoboxStyle.internal_border or nil)
:newline()
:wikitext(self.args[prefix .. i .. suffix])
end
end
end
if jointText then
builder:tag('tr')
:tag('td')
:attr('colspan', self.combatants)
:css('text-align', 'center')
-- don't show the border if we're directly under a header
:css('border-top', (not headerText or colspans[1]) and infoboxStyle.internal_border or nil)
:newline()
:wikitext(jointText)
end
end
function IMC:renderHeaderTable(builder)
builder = builder:tag('table')
:css('width', '100%')
:css('margin', 0)
:css('padding', 0)
:css('border', 0)
:css('display', 'inline-table')
if self.args.date then
builder:tag('tr')
:tag('th')
:css('padding-right', '1em')
:wikitext('Date')
:done()
:tag('td')
:wikitext(self.args.date)
end
builder = builder:tag('tr')
:tag('th')
:css('padding-right', '1em')
:wikitext('Location')
:done()
:tag('td')
:tag('div')
:addClass('location')
:wikitext(self.args.place or '{{{place}}}') -- hack so that people who don't know Lua know that this parameter is required
:done()
if self.args.coordinates then
builder:wikitext(self.args.coordinates)
end
builder = builder:done():done()
-- only for "Putsch"
if self.args.action then
builder:tag('tr')
:tag('th')
:css('padding-right', '1em')
:wikitext(self.args.action and 'Action')
:done()
:tag('td')
:wikitext(self.args.action)
end
if self.args.status or self.args.result then
builder:tag('tr')
:tag('th')
:css('padding-right', '1em')
:wikitext(self.args.status and 'Status' or 'Result')
:done()
:tag('td')
:addClass('status')
:newline()
:wikitext(self.args.status or self.args.result)
end
if self.args.territory then
builder:tag('tr')
:tag('th')
:css('padding-right', '1em')
:wikitext('Territorial<br />changes')
:done()
:tag('td')
:newline()
:wikitext(self.args.territory)
end
end
function IMC:render()
local builder = mw.html.create()
if self.args.campaignbox then
-- this should be the same as using {{stack|clear=right|...}}
builder:wikitext(self.frame:expandTemplate{ title = 'stack begin', args = { clear='true'} })
end
builder = builder:tag('table')
:addClass('infobox vevent')
:cssText(infoboxStyle.main_box_raw)
:css('width', self.args.width or nil)
builder:tag('tr')
:tag('th')
:addClass('summary')
:attr('colspan', self.combatants)
:cssText(infoboxStyle.header_raw)
:wikitext(self.args.conflict or mw.title.getCurrentTitle().text)
if self.args.partof then
builder:tag('tr')
:tag('td')
:attr('colspan', self.combatants)
:cssText(infoboxStyle.sub_header_raw)
:wikitext('Part of ' .. self.args.partof)
end
if self.args.image then
builder:tag('tr')
:tag('td')
:attr('colspan', self.combatants)
:cssText(infoboxStyle.image_box_raw)
:wikitext(string.format('%s%s%s',
require('Module:InfoboxImage').InfoboxImage{args = {
image = self.args.image,
size = self.args.image_size,
sizedefault = 'frameless',
upright = 1,
alt = self.args.alt
}},
self.args.caption and '<br />' or '',
self.args.caption or ''
))
end
self:renderHeaderTable(builder:tag('tr'):tag('td'):attr('colspan', self.combatants))
self:renderPerCombatant(builder, self.args.combatants_header or 'Belligerents', 'combatant')
-- can be un-hardcoded once gerrit:165108 is merged
for _,v in ipairs{'a','b','c','d'} do
self:renderPerCombatant(builder, nil, 'combatant', v)
end
self:renderPerCombatant(builder, self.args.commanders_header or 'Commanders and leaders', 'commander')
for _,v in ipairs{'a','b','c','d'} do
self:renderPerCombatant(builder, nil, 'commander', v)
end
self:renderPerCombatant(builder, self.args.units_header or 'Units involved', 'units')
self:renderPerCombatant(builder, self.args.strengths_header or 'Strength', 'strength')
self:renderPerCombatant(builder, self.args.polstrengths_header or 'Political support', 'polstrength')
self:renderPerCombatant(builder, self.args.milstrengths_header or 'Military support', 'milstrength')
self:renderPerCombatant(builder, self.args.casualties_header or 'Casualties and losses', 'casualties')
if self.args.notes then
builder:tag('tr')
:tag('td')
:attr('colspan', self.combatants)
:css('border-top', infoboxStyle.section_border)
:newline()
:wikitext(self.args.notes)
end
if self.args.map_type then
builder:tag('tr')
:tag('td')
:attr('colspan', self.combatants)
:css('border-top', infoboxStyle.internal_border)
:node(require('Module:Location map').main(self.frame, {
self.args.map_type,
relief = self.args.map_relief,
coordinates = self.args.coordinates,
width = self.args.map_size or 220,
float = 'center',
border = 'none',
mark = self.args.map_mark,
marksize = self.args.map_marksize or 8,
label = self.args.map_label,
alt = self.args.map_alt,
caption = self.args.map_caption or ('Location within '
.. (require('Module:Location map').data(self.frame, {self.args.map_type, 'name'})))
}))
end
builder = builder:done()
if self.args.campaignbox then
builder = builder:done()
builder:wikitext(self.args.campaignbox .. self.frame:expandTemplate{ title = 'stack end'})
end
return builder
end
function IMC.new(frame, args)
if not args then
args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Infobox military conflict'})
end
local obj = {
frame = frame,
args = args
}
-- until gerrit:165108 is merged, there's still a cap on combatants, but as soon as it merges, we can update this little bit of code to uncap it
-- also, don't try to make this more efficient, or references could be in the wrong order
obj.combatants = 2
for _,v in ipairs{'', 'a', 'b', 'c', 'd'} do
for i = 1,5 do
if args['combatant' .. i .. v] then
obj.combatants = math.max(obj.combatants, i)
end
end
end
return setmetatable(obj, IMC)
end
local p = {}
function p.main(frame)
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(IMC.new(frame):render())
end
return p
737c5c2ab35460ae4165baecc4a140ed140cd602
Module:Infobox cabinet members
828
1525
2860
2022-10-21T22:00:04Z
w>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
require('strict')
local getArgs = require('Module:Arguments').getArgs
local p = {}
function p.infobox(frame, args)
if not args then
args = getArgs(frame)
end
local root = mw.html.create()
local columns = args.party_column and 4 or 3
mw.log(columns)
if args.caption then
args.caption = '<br />' .. tostring(
mw.html.create('span')
:cssText(args.captionstyle)
:wikitext(args.caption)
)
end
if args.topcaption then
args.topcaption = '<br />' .. tostring(
mw.html.create('span')
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
)
end
local floatcss = {
left = 'margin-left:0; margin-right:1em; float:left; clear:left;',
center = 'margin-left:auto; margin-right:auto; float:none; clear:none;',
none = 'margin-left:0; margin-right:0; float:none; clear:none;',
right = 'margin-left:1em; margin-right:0; float:right; clear:right;'
}
root = root
:tag('table')
:addClass('infobox')
:css('width', 'auto')
:css('text-align', 'left')
:css('line-height', '1.2em')
:cssText(args.float and floatcss[(args.float):lower()] or floatcss['right'])
if args.topimage then
root
:tag('tr'):tag('td')
:attr('colspan', columns)
:css('text-align', 'center')
:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {
image = args.topimage,
size = args.topimagesize,
sizedefault = 'frameless',
upright = 1,
alt = args.topimagealt
}} .. (args.topcaption or '')
)
end
if args.above then
root
:tag('tr'):tag('th')
:attr('colspan', columns)
:css('line-height','1.5em')
:css('font-size','110%')
:css('background','#DCDCDC')
:css('text-align', 'center')
:wikitext(args.above)
end
if args.image then
root
:tag('tr'):tag('td')
:attr('colspan', columns)
:css('text-align', 'center')
:wikitext(require('Module:InfoboxImage').InfoboxImage{args = {
image = args.image,
size = args.imagesize,
sizedefault = 'frameless',
upright = 1,
alt = args.imagealt
}} .. (args.caption or '')
)
end
local header = root:tag('tr')
header:tag('th')
:wikitext(args.office_label or 'Office')
header:tag('th')
:wikitext(args.name_label or 'Name')
if args.party_column then
header:tag('th')
:wikitext(args.party_label or 'Party')
end
header:tag('th')
:wikitext(args.term_label or 'Term')
root:tag('tr')
:tag('td')
:attr('colspan', columns)
:css('background', '#000')
local subRows = {}
local keys = {}
for k,v in pairs(args) do
k = tostring(k)
local num = k:match('^office(%d+)$')
if num and args['name' .. num .. 'a'] then
num = tonumber(num)
if subRows[num] == nil then
subRows[num] = {}
table.insert(keys, num)
end
end
local num,l = k:match('^name(%d+)([a-z])$')
if num then
num = tonumber(num)
if subRows[num] == nil then
subRows[num] = {}
table.insert(keys,num)
end
subRows[num][l] = l
end
end
table.sort(keys)
for i, num in ipairs(keys) do
if i > 1 then
root:tag('tr')
:tag('td')
:attr('colspan',columns)
:css('background','#D1D1D1')
end
local r = {}
for j,l in pairs(subRows[num]) do
table.insert(r,l)
end
table.sort(r)
local row = root:tag('tr')
local ocell = row:tag('td'):wikitext(args['office' .. num])
local subrow = 0
for j, l in pairs(r) do
subrow = subrow + 1
if subrow > 1 then
row:tag('tr')
end
row:tag('th')
:css('font-weight', 'bold')
:wikitext(args['name'..num..l])
if args.party_column then
row:tag('td')
:wikitext(args['party'..num..l])
end
row:tag('td')
:wikitext(args['term'..num..l])
end
ocell:attr('rowspan', (subrow > 1) and subrow or nil)
end
if args.below then
root:tag('tr')
:tag('td')
:attr('colspan', columns)
:css('border-top', '#D1D1D1 2px solid')
:wikitext(args.below)
end
return tostring(root)
end
return p
cfc6a95b4679ebd09dd67a9b7abfbcd29eab957f
Module:Section link
828
129
307
2022-10-22T09:09:53Z
wikipedia>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
-- This module implements {{section link}}.
require('strict');
local checkType = require('libraryUtil').checkType
local p = {}
local function makeSectionLink(page, section, display)
display = display or section
page = page or ''
-- MediaWiki doesn't allow these in `page`, so only need to do for `section`
if type(section) == 'string' then
section = string.gsub(section, "{", "{")
section = string.gsub(section, "}", "}")
end
return string.format('[[%s#%s|%s]]', page, section, display)
end
local function normalizeTitle(title)
title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '')
title = mw.ustring.gsub(title, "%b<>", "")
return mw.title.new(title).prefixedText
end
function p._main(page, sections, options, title)
-- Validate input.
checkType('_main', 1, page, 'string', true)
checkType('_main', 3, options, 'table', true)
if sections == nil then
sections = {}
elseif type(sections) == 'string' then
sections = {sections}
elseif type(sections) ~= 'table' then
error(string.format(
"type error in argument #2 to '_main' " ..
"(string, table or nil expected, got %s)",
type(sections)
), 2)
end
options = options or {}
title = title or mw.title.getCurrentTitle()
-- Deal with blank page names elegantly
if page and not page:find('%S') then
page = nil
options.nopage = true
end
-- Make the link(s).
local isShowingPage = not options.nopage
if #sections <= 1 then
local linkPage = page or ''
local section = sections[1] or 'Notes'
local display = '§ ' .. section
if isShowingPage then
page = page or title.prefixedText
if options.display and options.display ~= '' then
if normalizeTitle(options.display) == normalizeTitle(page) then
display = options.display .. ' ' .. display
else
error(string.format(
'Display title "%s" was ignored since it is ' ..
"not equivalent to the page's actual title",
options.display
), 0)
end
else
display = page .. ' ' .. display
end
end
return makeSectionLink(linkPage, section, display)
else
-- Multiple sections. First, make a list of the links to display.
local ret = {}
for i, section in ipairs(sections) do
ret[i] = makeSectionLink(page, section)
end
-- Assemble the list of links into a string with mw.text.listToText.
-- We use the default separator for mw.text.listToText, but a custom
-- conjunction. There is also a special case conjunction if we only
-- have two links.
local conjunction
if #sections == 2 then
conjunction = '​ and '
else
conjunction = ', and '
end
ret = mw.text.listToText(ret, nil, conjunction)
-- Add the intro text.
local intro = '§§ '
if isShowingPage then
intro = (page or title.prefixedText) .. ' ' .. intro
end
ret = intro .. ret
return ret
end
end
function p.main(frame)
local yesno = require('Module:Yesno')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Section link',
valueFunc = function (key, value)
value = value:match('^%s*(.-)%s*$') -- Trim whitespace
-- Allow blank first parameters, as the wikitext template does this.
if value ~= '' or key == 1 then
return value
end
end
})
for k, v in pairs(args) do -- replace underscores in the positional parameter values
if 'number' == type(k) then
if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes
args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters
else
args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores
end
end
end
-- Sort the arguments.
local page
local sections, options = {}, {}
for k, v in pairs(args) do
if k == 1 then
-- Doing this in the loop because of a bug in [[Module:Arguments]]
-- when using pairs with deleted arguments.
page = mw.text.decode(v, true)
elseif type(k) == 'number' then
sections[k] = v
else
options[k] = v
end
end
options.nopage = yesno (options.nopage); -- make boolean
-- Extract section from page, if present
if page then
local p, s = page:match('^(.-)#(.*)$')
if p then page, sections[1] = p, s end
end
-- Compress the sections array.
local function compressArray(t)
local nums, ret = {}, {}
for num in pairs(t) do
nums[#nums + 1] = num
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[i] = t[num]
end
return ret
end
sections = compressArray(sections)
return p._main(page, sections, options)
end
return p
5cc61d43dc601ca43e9472500fc5cd09ca7cea44
Module:Footnotes/anchor id list/data
828
898
1986
2022-10-22T09:20:53Z
wikipedia>WOSlinker
0
use require('strict') instead of require('Module:No globals')
Scribunto
text/plain
-- copied from Module:Ref info/data - maybe overkill here?
-- for this application make lists from the redirect lists and force all template names first character uppercase
require('strict');
--[[--------------------------< C S 1 _ T E M P L A T E _ P A T T E R N S >------------------------------------
These are patterns for cs1 templates and their redirects. These patterns exclude redirects that are vcite-like
which redirects should be deleted because vcite is not cs1.
]]
local cs1_template_patterns = { -- lua patterns of the cannonical names and redirects
'[Cc]ite ar[Xx]iv', -- arXiv is the canonical name
'[Cc]ite ArXiv',
'[Cc]ite AV media', -- canonical
'[Cc]ite audio', '[Cc]ite AV', '[Cc]ite AV ?Media', '[Cc]ite av media',
'[Cc]ite cd', '[Cc]ite DVD', '[Cc]ite dvd', '[Cc]ite film',
'[Cc]ite image', '[Cc]ite media', '[Cc]ite movie',
'[Cc]ite music video', '[Cc]ite radio', '[Cc]ite song',
'[Cc]ite ?video', '[Cc]ite visual', '[Cc]ite You[Tt]ube',
'[Cc]ita vídeo', -- non-English redirect; TODO: tally separately?
'[Cc]ite AV media notes', -- canonical
'[Cc]ite album[ %-]notes', '[Cc]ite av media notes',
'[Cc]ite DVD[ %-]notes', '[Cc]ite dvd%-notes', '[Cc]ite liner notes',
'[Cc]ite music release notes', '[Ll]iner notes',
'[Cc]ite bio[Rr]xiv', -- bioRxiv is the canonical form
'[Cc]ite [Bb]ook', -- book is the canonical form
'[Bb]ook cite', '[Bb]ook reference', '[Bb]ook reference url',
'[Cc] book', '[Cc]it book', '[Cc]ite books', '[Cc]ite chapter',
'[Cc]ite ebook', '[Cc]ite manual', '[Cc]ite page',
'[Cc]ite publication', '[Cc]ite score',
'[Cc]ite work', '[Cc]ite%-?book',
'[Bb]okref', '[Cc]itace monografie', '[Cc]itar livro', -- non-English redirects; TODO: tally separately?
'[Cc]iteer boek', '[Oo]uvrage', '[Rr]ef%-llibre', '서적 인용',
'[Cc]ite citeseerx', -- canonical
'[Cc]ite conference', -- canonical
'[Cc]ita conferenza', '[Cc]ite proceedings', '[Cc]onference reference', -- cita conferenza is non-English; TODO: tally separately?
'[Cc]ite ?encyclopedia', -- cite encyclopedia is the canonical name
'[Cc]ite contribution', '[Cc]ite dic', '[Cc]ite dictionary',
'[Cc]ite encyclopaedia', '[Cc]ite encyclopædia', '[Ee]ncyclopedia',
'[Cc]ite [Ee]pisode', -- episode is the canonical form
'[Cc]ite show',
'[Cc]ite interview', -- canonical
'[Cc]ite ?journal', -- cite journal is the canonical form
'[Cc] journal', '[Cc]itation journal', '[Cc]ite abstract',
'[Cc]ite document', '[Cc]ite Journal', '[Cc]ite journal zh',
'[Cc]ite ?paper', '[Vv]cite2 journal',
'[Cc]ita pubblicazione', '[Cc]itace periodika', '[Cc]itar jornal', -- non-English redirects; TODO: tally separately?
'[Cc]itar publicació', '[Cc]ytuj pismo', '[Tt]idskriftsref',
'Навод из стручног часописа', '저널 인용',
'[Cc]ite [Mm]agazine', -- magazine is the canonical form
'[Cc]ite mag', '[Cc]ite magazine article', '[Cc]ite newsletter',
'[Cc]ite periodical',
'[Cc]ite mailing ?list', -- mailing list is the canonical form
'[Cc]ite list',
'[Cc]ite maps?', -- map is the canonical form
'[Cc]ite[ %-]?news', -- cite news is the canonical form
'[Cc] news', '[Cc]it news', '[Cc]itation news', '[Cc]ite article',
'[Cc]ite n', '[Cc]ite new', '[Cc]ite newspaper', '[Cc]ite News',
'[Cc]ite news%-q', '[Cc]ite news2', '[Cc]itenewsauthor', '[Cc]ute news',
'[Cc]itar notícia', '[Hh]aber kaynağı', '[Tt]idningsref', 'استشهاد بخبر', -- non-English redirects; TODO: tally separately?
'뉴스 인용',
'[Cc]ite newsgroup', -- canonical
'[Cc]ite usenet',
'[Cc]ite podcast', -- canonical
'[Cc]ite [Pp]ress release', -- press release is the canonical form
'[Cc]ite media release', '[Cc]ite news release', '[Cc]ite pr',
'[Cc]ite press', '[Cc]ite press release\.', '[Cc]ite press[%-]?release',
'[Cc]ite report', -- canonical
'[Cc]ite serial', -- canonical
'[Cc]ite sign', -- canonical
'[Cc]ite plaque',
'[Cc]ite speech', -- canonical
'[Cc]ite ssrn', -- canonical
'[Cc]ite SSRN',
'[Cc]ite tech ?report', -- techreport is the canonical form
'[Cc]ite standard', '[Cc]ite technical report', '[Tt]echrep reference',
'[Cc]ite thesis', -- canonical
'[Cc]ite dissertation',
'[Cc]itar tese', -- non-English redirect; TODO: tally separately?
'[Cc]ite [Ww]eb', -- web is the canonical form
'[Cc] web', '[Cc]it web', '[Cc]ite blog', '[Cc]ite URL', '[Cc]ite url',
'[Cc]ite w', '[Cc]ite wb', '[Cc]ite we', '[Cc]ite web\.',
'[Cc]ite webpage', '[Cc]ite website', '[Cc]ite website article',
'[Cc]ite%-?web', '[Cc]itweb', '[Cc]w', '[Rr]ef web', '[Ww]eb citation',
'[Ww]eb cite', '[Ww]eb link', '[Ww]eb[ %-]reference', '[Ww]eblink',
'[Cc]hú thích web', '[Cc]ita web', '[Cc]itace elektronické monografie', -- non-English redirects; TODO: tally separately?
'[Cc]itat web', 'مرجع ويب', 'یادکرد وب', '웹 인용',
}
--[[--------------------------< C S 2 _ T E M P L A T E _ P A T T E R N S >------------------------------------
These are patterns for cs2 templates redirects.
]]
local cs2_template_patterns = { -- lua patterns of the cannonical names and redirects
'[Cc]itation',
'[Cc]ite', '[Cc]ite citation', '[Cc]ite study',
'[Cc]ite [Tt]echnical standard',
}
--[[--------------------------< V C I T E _ T E M P L A T E _ P A T T E R N S >--------------------------------
These are patterns for Vcite-family templates and their redirects.
]]
local vcite_template_patterns = {
'[Vv]cite book', -- canonical
'[Vv]ancite book', '[Vv]ancite report', '[Vv]cite encyclopedia',
'[Vv]cite report',
'[Vv]cite journal', -- canonical
'[Cc]it journal', '[Cc]it paper', '[Vv]ancite journal', '[Vv]cite paper',
'[Vv]cite news', -- canonical
'[Vv]ancite news',
'[Vv]cite web', -- canonical
'[Vv]ancite web',
}
--[[--------------------------< H A R V C _ T E M P L A T E _ P A T T E R N S >--------------------------------
These are patterns for the harvc template and its redirects.
]]
local harvc_template_patterns = {
'[Hh]arvc', -- canonical
'[Cc]itec',
}
--[[--------------------------< C S 1 _ L I K E _ T E M P L A T E _ P A T T E R N S >--------------------------
These are patterns for miscellaneous templates and their redirects that 'look like' cs1 templates (begin with cite ...)
Because they 'look like' cs1 templates they are handled as if they were cs1 templates. These templates are NOT
wrapper templates; names and dates are always to be extracted from the article instantiation of the template.
]]
local cs1_like_template_patterns = {
'[Cc]ite LSA', -- canonical
}
--[[--------------------------< W I K I C I T E _ T E M P L A T E _ P A T T E R N S >--------------------------
These are patterns for the wikicite template and its redirects.
]]
local wikicite_template_patterns = {
'[Ww]ikicite', -- canonical
}
--[[--------------------------< A N C H O R _ T E M P L A T E _ P A T T E R N S >------------------------------
These are patterns for the anchor template and its redirects.
]]
local anchor_template_patterns = {
'[Aa]nchors?', -- anchor is canonical form
'[Aa]nchor for redirect',
'[Aa]nchro',
'[Aa]ncor',
}
--[[--------------------------< S F N _ W H I T E L I S T _ P A T T E R N S >----------------------------------
These are patterns for the anchor template and its redirects.
]]
local sfn_whitelist_patterns = {
'[Ss]fn whitelist', -- canonical
'[Hh]arv whitelist',
}
--[[--------------------------< K N O W N _ T E M P L A T E S >------------------------------------------------
These tables are created from the *_template_patterns tables. To make these tables, entries in the source tables
are evaluated to replace lua patterns with the appropriate characters to create names for the output tables.
First charqacter is always uppercase
For example:
[Cc]ite ar[Xx]iv
becomes
Cite arXiv
Cite arxiv
]]
local known_templates_cs12 = {}; -- the exported tables
local known_templates_vcite = {};
local known_templates_harvc = {};
local known_templates_wikicite = {};
local known_templates_anchor = {};
local known_templates_sfn_whitelist = {};
local function add_stripped (list, name)
if not list[name] then
list[name] = true;
end
end
local function pattern_convert (pattern, list)
local lead, tail, c, l, name;
local first_char_patterns = {
'^%[(%a)%a%]', -- leading character (usually uppercase)
'^%[%a(%a)%]', -- leading character (usually lowercase)
}
c = tostring (pattern:match ('%u')); -- tostring() required because I don't know why; lua chokes complaining that c is not a string
name = pattern:gsub ('^%[%a%a%]', c); -- replace bracketed first character [Xx] with selected character from the match
if name:match ('(.-)%[(%a)(%a)%](.*)') then -- mixed case optional letters
lead, c, l, tail = name:match ('(.-)%[(%a)(%a)%](.*)');
add_stripped (list, lead .. c .. tail); -- uppercase
add_stripped (list, lead .. l .. tail); -- lowercase
elseif name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$') then -- [ %-]?
lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$');
add_stripped (list, lead .. tail); -- neither char
add_stripped (list, lead .. ' ' .. tail); -- space
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$') then -- [%-]?
lead, c, tail = name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$');
add_stripped (list, lead .. tail); -- no hyphen
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%[]+)(%[ %%%-%])(.+)$') then -- [ %-]
lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%])(.+)$');
add_stripped (list, lead .. ' ' .. tail); -- space
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%?]+)(%%%-%?)(.+)$') then -- %-?
lead, c, tail = name:match ('^([^%?]+)(%%%-%?)(.+)$');
add_stripped (list, lead .. tail); -- no hyphen
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^(.-)(%%%-)(.+)$') then -- %-
lead, c, tail = name:match ('^(.-)(%%%-)(.+)$');
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^(.-)(.)%?(.*)$') then -- .?
lead, c, tail = name:match ('^(.-)(.)%?(.*)$');
add_stripped (list, lead .. tail); -- no character
add_stripped (list, lead .. c .. tail); -- character
else
add_stripped (list, name); -- no patterns so save as is
end
end
for _, t in ipairs ({
{cs1_template_patterns, known_templates_cs12},
{cs2_template_patterns, known_templates_cs12},
{cs1_like_template_patterns, known_templates_cs12},
{vcite_template_patterns, known_templates_vcite},
{harvc_template_patterns, known_templates_harvc},
{wikicite_template_patterns, known_templates_wikicite},
{anchor_template_patterns, known_templates_anchor},
{sfn_whitelist_patterns, known_templates_sfn_whitelist},
}) do
for _, pattern in ipairs (t[1]) do -- for each patern in *_template_patterns
pattern_convert (pattern, t[2]) -- convert and store in known_templates_*
end
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return
{
known_templates_anchor = known_templates_anchor,
known_templates_cs12 = known_templates_cs12,
known_templates_harvc = known_templates_harvc,
known_templates_vcite = known_templates_vcite,
known_templates_wikicite = known_templates_wikicite,
known_templates_sfn_whitelist = known_templates_sfn_whitelist,
}
29b949b2a7e0e2aedfb7399749d699512125a378
Module:Coordinates/doc
828
598
1344
2022-10-22T12:02:06Z
wikipedia>WOSlinker
0
remove no globals link
wikitext
text/x-wiki
{{High-risk}}
{{Module rating|protected}}
{{Tracks and uses Wikidata|P625}}
{{Lua|Module:Math|Module:Arguments}}
{{Uses TemplateStyles|Module:Coordinates/styles.css}}
'''Note:''' The code which this module's main function (<code>coord</code>) outputs is directly parsed and/or manipulated by [[Module:Location map]] and other functions of this module itself (<code>coord2text</code> and <code>coordinsert</code>). If the structure of the output changes (for example, to use [[:mw:Help:Extension:Kartographer|the <code><nowiki><mapframe></nowiki></code> and <code><nowiki><maplink></nowiki></code> tags]]), please update the aforementioned scripts as well.
==Using the module with coordinsert==
When using the {{tl|Coord}} template inside another template, like an infobox, there may be parameters (like <code><var>type</var>:<var>airport</var></code>) which should be added automatically. To do so, do something like this:
<code>{{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates|}}}|<var>parameter1:value1|parameter2:value2|parameter3:value3…</var>}}|</code>
Do not add more vertical bars <code>|</code> than necessary.
==Using the module with coord2text to extract latitude or longitude==
Developers maintaining legacy code may need to extract latitude or longitude to use a parameters in other code, or a mathematical expression.
The module's "coord2text" function can be used to extract data from the {{tl|Coord}} template. To extract the latitude from a Coord template, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}
To extract the longitude, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}
== Modules using this module directly ==
* [[Module:HS listed building row]]
== Tracking categories ==
* {{clc|Pages with malformed coordinate tags}}
* {{clc|Coordinates not on Wikidata}}
* {{clc|Coordinates on Wikidata}}
* {{clc|Coordinates on Wikidata set to no value}}
* {{clc|Coordinates on Wikidata set to unknown value}}
<includeonly>{{#switch:{{SUBPAGENAME}}|sandbox2|sandbox=|
[[Category:Modules that add a tracking category]]
}}</includeonly>
174a46bca3b8e3d6b54c213ded0b947107295f97
Template:Trim
10
1229
2562
2022-10-26T14:01:15Z
w>MSGJ
0
x parameter not needed
wikitext
text/x-wiki
<includeonly>{{safesubst:#if:1|{{{1|}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
3d29fbfff9683523147db6e1f55c0e17ed30863b
Module:Yesno
828
6
147
7
2022-10-28T05:41:15Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Module:Yesno]]: Required for local usage
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:Arguments
828
7
149
9
2022-10-28T05:41:15Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Module:Arguments]]: Required for local usage
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Template:Lua
10
65
193
125
2022-10-28T05:41:39Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Template:Lua]]: Required for local usage
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>{{Lua|Module:Lua banner}}{{documentation}}[[Category:Utility templates]]</noinclude>
fd85a870209733ca65a7290fa45f6b4f321bac0b
Module:Lua banner/config
828
80
191
2022-10-28T05:41:41Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Module:Lua_banner/config]]: Required for local usage
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Allow wishes: whether wishes for conversion to Lua are allowed.
-- If true, calls with zero parameters are valid, and considered to be wishes:
-- The box’s text is “This template should use Lua”, and cfg['wish_category'] is
-- added. If false, such calls are invalid, an error message appears, and
-- cfg['error_category'] is added.
cfg['allow_wishes'] = false
-- Default category: this category is added if the module call contains errors
-- (e.g. no module listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Lua templates with errors'
-- Wish category: this category is added if no module is listed, and wishes are
-- allowed. (Not used if wishes are not allowed.) A category name without
-- namespace, or nil to disable categorization.
cfg['wish_category'] = nil
-- Default category: this category is added if none of the below module_categories
-- matches the first module listed. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Lua-based templates'
-- Module categories: one of these categories is added if the first listed module
-- is the listed module (e.g. {{Lua|Module:String}} adds
-- [[Category:Lua String-based templates]].) Format:
-- ['<module name>'] = '<category name>'
-- where neither <module name> nor <category name> contains namespace. An empty
-- table (i.e. no module-based categorization) will suffice on smaller wikis.
cfg['module_categories'] = {
['Citation'] = 'Lua-based citation templates',
['Citation/CS1'] = 'Lua-based citation templates',
}
return cfg -- Don’t touch this line.
96ff2360e00fa7bf1df8fa9bea988789b8a82cab
Module:No globals
828
76
155
2022-10-28T05:42:58Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Module:No_globals]]: Required for local usage
Scribunto
text/plain
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
if k ~= 'arg' then
-- perf optimization here and below: do not load Module:TNT unless there is an error
error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2)
end
return nil
end
function mt.__newindex(t, k, v)
if k ~= 'arg' then
error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2)
end
rawset(t, k, v)
end
setmetatable(_G, mt)
efcb47c74e7e2bb9a4ad8764d99a0afce8fed410
Module:Template translation
828
75
151
2022-10-28T05:42:59Z
meta>Agent Isai
0
6 revisions imported from [[:metawikimedia:Module:Template_translation]]: Required for local usage
Scribunto
text/plain
local this = {}
function this.checkLanguage(subpage, default)
--[[Check first if there's an any invalid character that would cause the
mw.language.isKnownLanguageTag function() to throw an exception:
- all ASCII controls in [\000-\031\127],
- double quote ("), sharp sign (#), ampersand (&), apostrophe ('),
- slash (/), colon (:), semicolon (;), lower than (<), greater than (>),
- brackets and braces ([, ], {, }), pipe (|), backslash (\\)
All other characters are accepted, including space and all non-ASCII
characters (including \192, which is invalid in UTF-8).
--]]
if mw.language.isValidCode(subpage) and mw.language.isKnownLanguageTag(subpage)
--[[However "SupportedLanguages" are too restrictive, as they discard many
valid BCP47 script variants (only because MediaWiki still does not
define automatic transliterators for them, e.g. "en-dsrt" or
"fr-brai" for French transliteration in Braille), and country variants,
(useful in localized data, even if they are no longer used for
translations, such as zh-cn, also useful for legacy codes).
We want to avoid matching subpagenames containing any uppercase letter,
(even if they are considered valid in BCP 47, in which they are
case-insensitive; they are not "SupportedLanguages" for MediaWiki, so
they are not "KnownLanguageTags" for MediaWiki).
To be more restrictive, we exclude tags
* for specific uses in template subpages and unusable as language tags;
* that is not ASCII and not a lowercase letter, minus-hyphen, or digit,
or does not start by a letter or does not finish by a letter or digit;
* or that has subtags with more than 8 characters between hyphens;
* or that has two hyphens.
--]]
or subpage ~= "doc"
and subpage ~= "layout"
and subpage ~= "button"
and subpage ~= "buttons"
and subpage ~= "sandbox"
and subpage ~= "testcase"
and subpage ~= "testcases"
and string.find(subpage, "^[%l][%-%d%l]*[%d%l]$") ~= nil
and string.find(subpage, "[%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l]") == nil
and string.find(subpage, "%-%-") == nil then
return subpage
end
-- Otherwise there's currently no known language subpage
return default
end
--[[Get the last subpage of an arbitrary page if it is a translation.
To be used from templates.
]]
function this.getLanguageSubpage(frame)
local title = frame and frame.args[1]
if not title or title == '' then
title = mw.title.getCurrentTitle()
end
return this._getLanguageSubpage(title)
end
--[[Get the last subpage of an arbitrary page if it is a translation.
To be used from Lua.
]]
function this._getLanguageSubpage(title)
if type(title) == 'string' then
title = mw.title.new(title)
end
if not title then
-- invalid title
return nil
end
--[[This code does not work in all namespaces where the Translate tool works.
-- It works in the main namespace on Meta because it allows subpages there
-- It would not work in the main namespace of English Wikipedia (but the
-- articles are monolignual on that wiki).
-- On Meta-Wiki the main space uses subpages and its pages are translated.
-- The Translate tool allows translatng pages in all namespaces, even if
-- the namespace officially does not have subpages.
-- On Meta-Wiki the Category namespace still does not have subpages enabled,
-- even if they would be very useful for categorizing templates, that DO have
-- subpages (for documentatio and tstboxes pages). This is a misconfiguration
-- bug of Meta-Wiki. The work-around is to split the full title and then
-- get the last titlepart.
local subpage = title.subpageText
--]]
local titleparts = mw.text.split(title.fullText, '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, '')
end
--[[Get the last subpage of the current page if it is a translation.
]]
function this.getCurrentLanguageSubpage()
return this._getLanguageSubpage(mw.title.getCurrentTitle())
end
--[[Get the first part of the language code of the subpage, before the '-'.
--]]
function this.getMainLanguageSubpage()
parts = mw.text.split(this.getCurrentLanguageSubpage(), '-')
return parts[1]
end
--[[Get the last subpage of the current frame if it is a translation.
Not used locally.
--]]
function this.getFrameLanguageSubpage(frame)
return this._getLanguageSubpage(frame:getParent():getTitle())
end
--[[Get the language of the current page. Not used locally.
--]]
function this.getLanguage()
local subpage = mw.title.getCurrentTitle().subpageText
return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode())
end
--[[Get the language of the current frame. Not used locally.
--]]
function this.getFrameLanguage(frame)
local titleparts = mw.text.split(frame:getParent():getTitle(), '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode())
end
function this.title(namespace, basepagename, subpage)
local message, title
local pagename = basepagename
if (subpage or '') ~= '' then
pagename = pagename .. '/' .. subpage
end
local valid, title = xpcall(function()
return mw.title.new(pagename, namespace) -- costly
end, function(msg) -- catch undocumented exception (!?)
-- thrown when namespace does not exist. The doc still
-- says it should return a title, even in that case...
message = msg
end)
if valid and title ~= nil and (title.id or 0) ~= 0 then
return title
end
return { -- "pseudo" mw.title object with id = nil in case of error
prefixedText = pagename, -- the only property we need below
message = message -- only for debugging
}
end
--[[If on a translation subpage (like Foobar/de), this function returns
a given template in the same language, if the translation is available.
Otherwise, the template is returned in its default language, without
modification.
This is aimed at replacing the current implementation of Template:TNTN.
This version does not expand the returned template name: this solves the
problem of self-recursion in TNT when translatable templates need themselves
to transclude other translable templates (such as Tnavbar).
--]]
function this.getTranslatedTemplate(frame, withStatus)
local args = frame.args
local pagename = args['template']
--[[Check whether the pagename is actually in the Template namespace, or
if we're transcluding a main-namespace page.
(added for backward compatibility of Template:TNT)
]]
local namespace, title = args['tntns'] or ''
if namespace ~= '' then -- Checks for tntns parameter for custom ns.
title = this.title(namespace, pagename) -- Costly
else -- Supposes that set page is in ns10.
namespace = 'Template'
title = this.title(namespace, pagename) -- Costly
if title.id == nil then -- not found in the Template namespace, assume the main namespace (for backward compatibility)
namespace = ''
title = this.title(namespace, pagename) -- Costly
end
end
-- Get the last subpage and check if it matches a known language code.
local subpage = args['uselang'] or ''
if subpage == '' then
subpage = this.getCurrentLanguageSubpage()
end
if subpage == '' then
-- Check if a translation of the pagename exists in English
local newtitle = this.title(namespace, pagename, 'en') -- Costly
-- Use the translation when it exists
if newtitle.id ~= nil then
title = newtitle
end
else
-- Check if a translation of the pagename exists in that language
local newtitle = this.title(namespace, pagename, subpage) -- Costly
if newtitle.id == nil then
-- Check if a translation of the pagename exists in English
newtitle = this.title(namespace, pagename, 'en') -- Costly
end
-- Use the translation when it exists
if newtitle.id ~= nil then
title = newtitle
end
end
-- At this point the title should exist
if withStatus then
-- status returned to Lua function below
return title.prefixedText, title.id ~= nil
else
-- returned directly to MediaWiki
return title.prefixedText
end
end
--[[If on a translation subpage (like Foobar/de), this function renders
a given template in the same language, if the translation is available.
Otherwise, the template is rendered in its default language, without
modification.
This is aimed at replacing the current implementation of Template:TNT.
Note that translatable templates cannot transclude themselves other
translatable templates, as it will recurse on TNT. Use TNTN instead
to return only the effective template name to expand externally, with
template parameters also provided externally.
--]]
function this.renderTranslatedTemplate(frame)
local title, found = this.getTranslatedTemplate(frame, true)
-- At this point the title should exist prior to performing the expansion
-- of the template, otherwise render a red link to the missing page
-- (resolved in its assumed namespace). If we don't tet this here, a
-- script error would be thrown. Returning a red link is consistant with
-- MediaWiki behavior when attempting to transclude inexistant templates.
if not found then
return '[[' .. title .. ']]'
end
-- Copy args pseudo-table to a proper table so we can feed it to expandTemplate.
-- Then render the pagename.
local args = frame.args
local pargs = (frame:getParent() or {}).args
local arguments = {}
if (args['noshift'] or '') == '' then
for k, v in pairs(pargs) do
local n = tonumber(k) or 0
if n <= 0 then -- unnumbered args
arguments[k] = v
elseif n >= 2 then -- numbered args >= 2 need to be shifted
arguments[n - 1] = v
end
end
else -- special case where TNT is used as autotranslate
-- (don't shift again what is shifted in the invokation)
for k, v in pairs(pargs) do
arguments[k] = v
end
end
arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded
arguments['tntns'] = nil -- discard the specified namespace override
arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame
arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame
return frame:expandTemplate{title = ':' .. title, args = arguments}
end
--[[A helper for mocking TNT in Special:TemplateSandbox. TNT breaks
TemplateSandbox; mocking it with this method means templates won't be
localized but at least TemplateSandbox substitutions will work properly.
Won't work with complex uses.
--]]
function this.mockTNT(frame)
local pargs = (frame:getParent() or {}).args
local arguments = {}
for k, v in pairs(pargs) do
local n = tonumber(k) or 0
if n <= 0 then -- unnumbered args
arguments[k] = v
elseif n >= 2 then -- numbered args >= 2 need to be shifted
arguments[n - 1] = v
end
end
if not pargs[1] then
return ''
end
return frame:expandTemplate{title = 'Template:' .. pargs[1], args = arguments}
end
return this
5d6ccce18a15ce0078fd1918b6afeb5b443f37ee
Module:Documentation/i18n
828
78
177
2022-10-28T05:43:07Z
meta>Agent Isai
0
2 revisions imported from [[:metawikimedia:Module:Documentation/i18n]]: Required for local usage
Scribunto
text/plain
local format = require('Module:TNT').format
local i18n = {}
i18n['cfg-error-msg-type'] = format('I18n/Documentation', 'cfg-error-msg-type')
i18n['cfg-error-msg-empty'] = format('I18n/Documentation', 'cfg-error-msg-empty')
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
i18n['template-namespace-heading'] = format('I18n/Documentation', 'template-namespace-heading')
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
i18n['module-namespace-heading'] = format('I18n/Documentation', 'module-namespace-heading')
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
i18n['file-namespace-heading'] = format('I18n/Documentation', 'file-namespace-heading')
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
i18n['other-namespaces-heading'] = format('I18n/Documentation', 'other-namespaces-heading')
-- cfg['view-link-display']
-- The text to display for "view" links.
i18n['view-link-display'] = format('I18n/Documentation', 'view-link-display')
-- cfg['edit-link-display']
-- The text to display for "edit" links.
i18n['edit-link-display'] = format('I18n/Documentation', 'edit-link-display')
-- cfg['history-link-display']
-- The text to display for "history" links.
i18n['history-link-display'] = format('I18n/Documentation', 'history-link-display')
-- cfg['purge-link-display']
-- The text to display for "purge" links.
i18n['purge-link-display'] = format('I18n/Documentation', 'purge-link-display')
-- cfg['create-link-display']
-- The text to display for "create" links.
i18n['create-link-display'] = format('I18n/Documentation', 'create-link-display')
return i18n
9a9f234b177a424f1fc465eb25c484eff54905c0
Module:Documentation/styles.css
828
53
179
101
2022-10-28T05:43:10Z
meta>Agent Isai
0
31 revisions imported from [[:metawikimedia:Module:Documentation/styles.css]]: Required for local usage
text
text/plain
/* {{PP-template}} */
.ts-doc-sandbox .mbox-image {
padding:.75em 0 .75em .75em;
}
.ts-doc-doc {
clear: both;
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
margin-top: 1em;
padding: 5px;
}
.ts-doc-header {
padding-bottom: 3px;
border-bottom: 1px solid #a2a9b1;
margin-bottom: 1ex;
}
.ts-doc-header .ts-tlinks-tlinks {
display: inline-block;
line-height: 24px;
margin-left: 1em;
}
.ts-doc-header .ts-tlinks-tlinks a.external {
color: #0645ad;
}
.ts-doc-header .ts-tlinks-tlinks a.external:visited {
color: #0b0080;
}
.ts-doc-header .ts-tlinks-tlinks a.external:active {
color: #faa700;
}
.ts-doc-content:after {
content: '';
clear: both;
display: block;
}
.ts-doc-heading {
display: inline-block;
padding-left: 55px;
background: center left/50px no-repeat;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png);
background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg);
font-size: 1.5em;
}
.ts-doc-content > *:first-child,
.ts-doc-footer > *:first-child {
margin-top: .5em;
}
.ts-doc-content > *:last-child,
.ts-doc-footer > *:last-child {
margin-bottom: .5em;
}
.ts-doc-footer {
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
padding: .25em 1em;
margin-top: .2em;
font-style: italic;
}
.ts-doc-footer small {
font-style: normal;
}
.ts-doc-sandbox {
clear: both;
}
c37b0ddfd0b1c128c187ca56721d1c4e481b05ff
Template:IsDocSubpage
10
79
183
2022-10-28T05:43:20Z
meta>Agent Isai
0
1 revision imported from [[:metawikimedia:Template:IsDocSubpage]]: Required for local usage
wikitext
text/x-wiki
<onlyinclude><includeonly>{{#ifexpr: (
{{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or (
{{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}}
and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}}
)
)<!--
-->|{{{true|1}}}<!--
-->|{{{false|}}}<!--
-->}}</includeonly></onlyinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
e60f69b26953d441bf5b76229c9222f16c042ae6
Module:Check isxn
828
1094
2387
2022-11-03T23:27:58Z
wikipedia>Trappist the monk
0
sync from sandbox;
Scribunto
text/plain
--[[
This code is derived from the ISXN validation code at Module:Citation/CS1. It allows validating ISBN,
ISMN, and ISSN without invoking a citation template.
]]
local p = {}
--[[--------------------------< E R R _ M S G _ S U P L _ T >--------------------------------------------------
error message supplements for check_isbn(); adapted from a similarly named table at Module:Citation/CS1/Configuration
]]
local err_msg_supl_t = {
['char'] = 'invalid character',
['check'] = 'checksum',
['form'] = 'invalid form',
['group'] = 'invalid group id',
['length'] = 'length',
['prefix'] = 'invalid prefix',
}
--[[--------------------------< IS _ V A L I D _ I S X N >-----------------------------------------------------
ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in check_isbn().
If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes,
spaces and other non-isxn characters.
]]
local function is_valid_isxn (isxn_str, len)
local temp = 0;
isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58
len = len+1; -- adjust to be a loop counter
for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum
if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58)
temp = temp + 10*( len - i ); -- it represents 10 decimal
else
temp = temp + tonumber( string.char(v) )*(len-i);
end
end
return temp % 11 == 0; -- returns true if calculation result is zero
end
--[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >----------------------------------------------
ISBN-13 and ISMN validator code calculates checksum across all 13 isbn/ismn digits including the check digit.
If the number is valid, the result will be 0. Before calling this function, isbn-13/ismn must be checked for length
and stripped of dashes, spaces and other non-isxn-13 characters.
]]
local function is_valid_isxn_13 (isxn_str)
local temp=0;
isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39
for i, v in ipairs( isxn_str ) do
temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit
end
return temp % 10 == 0; -- sum modulo 10 is zero when isbn-13/ismn is correct
end
--[[--------------------------< C H E C K _ I S B N >------------------------------------------------------------
Determines whether an ISBN string is valid. Implements an ISBN validity check for {{ISBN}}, {{ISBNT}}, {{SBN}}, and
{{Format ISBN}}.
]]
local function check_isbn (isbn_str, frame)
local function return_result (check, err_type) -- local function to render the various error returns
if not check then -- <check> false when there is an error
local template = ((frame.args.template_name and '' ~= frame.args.template_name) and frame.args.template_name) or nil; -- get template name
if not template then
return '<span class="error" style="font-size:100%"> calling template requires template_name parameter</span>';
end
local out_t = {'<span class="error" style="font-size:100%">'}; -- open the error message span
table.insert (out_t, ' Parameter error in {{[[Template:'); -- open 'template' markup; open wikilink with Template namespace
table.insert (out_t, template); -- template name wikilink
table.insert (out_t, '|'); -- its pipe
table.insert (out_t, template); -- wikilink label
table.insert (out_t, ']]}}: '); -- close wikilink; close 'template' markup
table.insert (out_t, err_type); -- type of isbn error
table.insert (out_t, '</span>') -- close the error message span
if 0 == mw.title.getCurrentTitle().namespace then -- categorize only when this template is used in mainspace
local category = table.concat ({'[[Category:Pages with ISBN errors]]'});
table.insert (out_t, category);
end
return table.concat (out_t); -- make a big string and done
end
return ''; -- no error, return an empty string
end
if nil ~= isbn_str:match ('[^%s-0-9X]') then
return return_result (false, err_msg_supl_t.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X
end
local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace
local len = id:len();
if len ~= 10 and len ~= 13 then
return return_result (false, err_msg_supl_t.length); -- fail if incorrect length
end
if len == 10 then
if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position
return return_result (false, err_msg_supl_t.form);
end
if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin)
return return_result (false, err_msg_supl_t.group); -- fail if isbn-10 begins with 630/1
end
return return_result (is_valid_isxn (id, 10), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum)
else
if id:match ('^%d+$') == nil then
return return_result (false, err_msg_supl_t.char); -- fail if ISBN-13 is not all digits
end
if id:match ('^97[89]%d*$') == nil then
return return_result (false, err_msg_supl_t.prefix); -- fail when ISBN-13 does not begin with 978 or 979
end
if id:match ('^9790') then
return return_result (false, err_msg_supl_t.group); -- group identifier '0' is reserved to ISMN
end
return return_result (is_valid_isxn_13 (id), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum)
end
end
--[[--------------------------< C H E C K _ I S M N >------------------------------------------------------------
Determines whether an ISMN string is valid. Similar to isbn-13, ismn is 13 digits begining 979-0-... and uses the
same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf
section 2, pages 9–12.
]]
local function check_ismn (id, error_string)
local text;
local valid_ismn = true;
id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the ismn
if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ismn must be 13 digits and begin 9790
valid_ismn = false;
else
valid_ismn=is_valid_isxn_13 (id); -- validate ismn
end
return valid_ismn and '' or error_string
end
--[[--------------------------< I S S N >----------------------------------------------------------------------
Validate and format an issn. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four
digits with a space. When that condition occurred, the resulting link looked like this:
|issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link
This code now prevents that by inserting a hyphen at the issn midpoint. It also validates the issn for length and makes sure that the checkdigit agrees
with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check issn
error message.
]]
local function check_issn(id, error_string)
local issn_copy = id; -- save a copy of unadulterated issn; use this version for display if issn does not validate
local text;
local valid_issn = true;
if not id:match ('^%d%d%d%d%-%d%d%d[%dX]$') then
return error_string;
end
id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the issn
if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the issn: 8 digits long, containing only 0-9 or X in the last position
valid_issn=false; -- wrong length or improper character
else
valid_issn=is_valid_isxn(id, 8); -- validate issn
end
return valid_issn and '' or error_string
end
------------------------------< E N T R Y P O I N T S >--------------------------------------------------====
function p.check_isbn(frame)
return check_isbn(frame.args[1] or frame:getParent().args[1], frame)
end
function p.check_ismn(frame)
return check_ismn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error')
end
function p.check_issn(frame)
return check_issn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error')
end
return p
177daafde5a0a7d4292a7ae725b9db16f2079e4e
Template:Tl
10
8
292
11
2022-11-09T19:50:43Z
Agent Isai
9
1 revision imported from [[:wikipedia:Template:Tl]]: Importing from [[w:|English Wikipedia]] to sync templates
wikitext
text/x-wiki
{{[[{{#if:{{{2|}}}|{{{2|}}}:}}Special:MyLanguage/Template:{{{1}}}|{{{1}}}]]}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
08b547a58917e4cfd27e175b3114e45f0e34e2c4
Module:Message box/configuration
828
11
157
2022-11-09T19:50:51Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Message_box/configuration]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox license.png' -- @todo We need an SVG version of this
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg'
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
b6f0151037e6867b577c8cca32ff297e48697a10
Module:Infobox
828
18
161
2022-11-09T19:51:01Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Infobox]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
--
-- This module implements {{Infobox}}
--
local p = {}
local navbar = require('Module:Navbar')._navbar
local args = {}
local origArgs
local root
local function notempty( s ) return s and s:match( '%S' ) end
local function fixChildBoxes(sval, tt)
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
return s
else
return sval
end
end
local function union(t1, t2)
-- Returns the union of the values of two tables, as a sequence.
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
local function getArgNums(prefix)
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
local function addRow(rowArgs)
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
if rowArgs.header then
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:attr('id', rowArgs.rowid)
:tag('th')
:attr('colspan', 2)
:attr('id', rowArgs.headerid)
:addClass(rowArgs.class)
:addClass(args.headerclass)
:css('text-align', 'center')
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
elseif rowArgs.data then
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row:attr('id', rowArgs.rowid)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:attr('id', rowArgs.labelid)
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
if not rowArgs.label then
dataCell
:attr('colspan', 2)
:css('text-align', 'center')
end
dataCell
:attr('id', rowArgs.dataid)
:addClass(rowArgs.class)
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:newline()
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
end
end
local function renderTitle()
if not args.title then return end
root
:tag('caption')
:addClass(args.titleclass)
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
root
:tag('tr')
:tag('th')
:attr('colspan', 2)
:addClass(args.aboveclass)
:css('text-align', 'center')
:css('font-size', '125%')
:css('font-weight', 'bold')
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass(args.belowclass)
:css('text-align', 'center')
:cssText(args.belowstyle)
:newline()
:wikitext(fixChildBoxes(args.below,'td'))
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addRow({
data = args['subheader' .. tostring(num)],
datastyle = args.subheaderstyle or args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:cssText(args.captionstyle)
:wikitext(caption)
end
addRow({
data = tostring(data),
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
local function renderRows()
-- Gets the union of the header and data argument numbers,
-- and renders them all in order using addRow.
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
dataid = args['dataid' .. tostring(num)],
labelid = args['labelid' .. tostring(num)],
headerid = args['headerid' .. tostring(num)],
rowid = args['rowid' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:css('text-align', 'right')
:wikitext(navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
end
end
local function renderTrackingCategories()
if args.decat ~= 'yes' then
if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
end
if args.child == 'yes' and args.title then
root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]')
end
end
end
local function _infobox()
-- Specify the overall layout of the infobox, with special settings
-- if the infobox is used as a 'child' inside another infobox.
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass('infobox')
:addClass(args.bodyclass)
if args.subbox == 'yes' then
root
:css('padding', '0')
:css('border', 'none')
:css('margin', '-3px')
:css('width', 'auto')
:css('min-width', '100%')
:css('font-size', '100%')
:css('clear', 'none')
:css('float', 'none')
:css('background-color', 'transparent')
else
root
:css('width', '22em')
end
root
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
renderSubheaders()
renderImages()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderTrackingCategories()
return tostring(root)
end
local function preprocessSingleArg(argName)
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
local function preprocessArgs(prefixTable, step)
-- Assign the parameters with the given prefixes to the args table, in order, in batches
-- of the step size specified. This is to prevent references etc. from appearing in the
-- wrong order. The prefixTable should be an array containing tables, each of which has
-- two possible fields, a "prefix" string and a "depend" table. The function always parses
-- parameters containing the "prefix" string, but only parses parameters in the "depend"
-- table if the prefix parameter is present and non-blank.
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones.
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present and not blank, or
-- we are processing "prefix1" and "prefix" is present and not blank, and
-- if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
function p.infobox(frame)
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so that
-- references etc. will display in the expected places. Parameters that depend on
-- another parameter are only processed if that parameter is present, to avoid
-- phantom references appearing in article reference lists.
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'},
{prefix = 'dataid'},
{prefix = 'labelid'},
{prefix = 'headerid'},
{prefix = 'rowid'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent
preprocessSingleArg('decat')
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
} .. _infobox()
end
return p
eccecf7ea52ce105242adb57836ea74e04395312
Module:List
828
20
185
2022-11-09T19:51:04Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:List]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
-- This module outputs different kinds of lists. At the moment, bulleted,
-- unbulleted, horizontal, ordered, and horizontal ordered lists are supported.
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Template:Flatlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Template:Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for i, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for i, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for i, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
b60cb90a28f54a237f389f8009157816b631d806
Module:TableTools
828
21
159
37
2022-11-09T19:51:05Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:TableTools]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
--[[
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should --
-- not be called directly from #invoke. --
------------------------------------------------------------------------------------
--]]
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
--[[
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
--]]
function p.isPositiveInteger(v)
if type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then
return true
else
return false
end
end
--[[
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a value can be a valid table key. Lua will
-- generate an error if a NaN is used as a table key.
------------------------------------------------------------------------------------
--]]
function p.isNan(v)
if type(v) == 'number' and tostring(v) == '-nan' then
return true
else
return false
end
end
--[[
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
--]]
function p.shallowClone(t)
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
--]]
function p.removeDuplicates(t)
checkType('removeDuplicates', 1, t, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for i, v in ipairs(t) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
--]]
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k, v in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
--[[
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will
-- return {1, 3, 6}.
------------------------------------------------------------------------------------
--]]
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
return s
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k, v in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
--[[
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table
-- of subtables in the format
-- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} }
-- Keys that don't end with an integer are stored in a subtable named "other".
-- The compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
--]]
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
--[[
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
--]]
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
--[[
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
--]]
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for k in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
else -- This will fail with table, boolean, function.
return item1 < item2
end
end
--[[
Returns a list of the keys in a table, sorted using either a default
comparison function or a custom keySort function.
]]
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' })
end
local list = {}
local index = 1
for key, value in pairs(t) do
list[index] = key
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(list, keySort)
end
return list
end
--[[
Iterates through a table, with the keys sorted using the keysToList function.
If there are only numerical keys, sparseIpairs is probably more efficient.
]]
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local list = p.keysToList(t, keySort, true)
local i = 0
return function()
i = i + 1
local key = list[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
--[[
Returns true if all keys in the table are consecutive integers starting at 1.
--]]
function p.isArray(t)
checkType("isArray", 1, t, "table")
local i = 0
for k, v in pairs(t) do
i = i + 1
if t[i] == nil then
return false
end
end
return true
end
-- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 }
function p.invert(array)
checkType("invert", 1, array, "table")
local map = {}
for i, v in ipairs(array) do
map[v] = i
end
return map
end
--[[
{ "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true }
--]]
function p.listToSet(t)
checkType("listToSet", 1, t, "table")
local set = {}
for _, item in ipairs(t) do
set[item] = true
end
return set
end
--[[
Recursive deep copy function.
Preserves identities of subtables.
]]
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = deepcopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
--[[
Concatenates all values in the table that are indexed by a number, in order.
sparseConcat{ a, nil, c, d } => "acd"
sparseConcat{ nil, b, c, d } => "bcd"
]]
function p.sparseConcat(t, sep, i, j)
local list = {}
local list_i = 0
for _, v in p.sparseIpairs(t) do
list_i = list_i + 1
list[list_i] = v
end
return table.concat(list, sep, i, j)
end
--[[
-- This returns the length of a table, or the first integer key n counting from
-- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return
-- a different value when there are gaps in the array portion of the table.
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of
-- the number of unnamed template parameters, so use this function for
-- frame.args.
--]]
function p.length(t)
local i = 1
while t[i] ~= nil do
i = i + 1
end
return i - 1
end
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
fe918509f168332267834b3a6f5c219a9de5b2e7
Module:Navbar
828
37
163
2022-11-09T19:51:14Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Navbar]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e
Module:Navbar/configuration
828
38
165
2022-11-09T19:51:15Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Navbar/configuration]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
bbf3d86b48a5b40835e8e232ae9821e6bca390ec
Module:Documentation
828
51
171
2022-11-09T19:51:21Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Documentation]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
local messageBox = require('Module:Message box')
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local i18n = mw.loadData('Module:Documentation/i18n')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-type', cfgKey, expectType, type(msg)), 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error(require('Module:TNT').format('I18n/Documentation', 'cfg-error-msg-empty', '$' .. match, cfgKey), 4)
end
local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
return ret
end
p.message = message
local function makeWikilink(page, display)
if display then
return mw.ustring.format('[[%s|%s]]', page, display)
else
return mw.ustring.format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return mw.ustring.format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
return '<small>(' .. table.concat(ret, ' | ') .. ')</small>'
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Load TemplateStyles
----------------------------------------------------------------------------
p.main = function(frame)
local parent = frame.getParent(frame)
local output = p._main(parent.args)
return frame:extensionTag{ name='templatestyles', args = { src= message('templatestyles-scr') } } .. output
end
----------------------------------------------------------------------------
-- Main function
----------------------------------------------------------------------------
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--
-- Messages:
-- 'main-div-id' --> 'template-documentation'
-- 'main-div-classes' --> 'template-documentation iezoomfix'
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
-- This div tag is from {{documentation/start box}}, but moving it here
-- so that we don't have to worry about unclosed tags.
:tag('div')
:attr('id', message('main-div-id'))
:addClass(message('main-div-class'))
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:done()
:wikitext(p._endBox(args, env))
:wikitext(p.addTrackingCategories(env))
return tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title objects and other namespace- or
-- path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
-- env.printTitle - the print version of the template, located at the /Print subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.printTitle()
--[[
-- Title object for the /Print subpage.
-- Messages:
-- 'print-subpage' --> 'Print'
--]]
return env.templateTitle:subPageTitle(message('print-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the same as the
-- subject namespace. However, pages in the Article, File, MediaWiki or Category
-- namespaces must have their /doc, /sandbox and /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.fullUrl(
'Special:ComparePages',
{page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[w:Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[w:Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local frame = mw.getCurrentFrame()
local isPreviewing = frame:preprocess('{{REVISIONID}}') == '' -- True if the page is being previewed.
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if isPreviewing or not compareUrl then
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
else
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
text = text .. makeCategoryLink(message('sandbox-category'))
omargs.text = text
omargs.class = message('sandbox-class')
return messageBox.main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local title = env.title
local protectionLevels
local protectionTemplate = message('protection-template')
local namespace = title.namespace
if not (protectionTemplate and (namespace == 10 or namespace == 828)) then
-- Don't display the protection template if we are not in the template or module namespaces.
return nil
end
protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editLevels = protectionLevels.edit
local moveLevels = protectionLevels.move
if moveLevels and moveLevels[1] == 'sysop' or editLevels and editLevels[1] then
-- The page is full-move protected, or full, template, or semi-protected.
local frame = mw.getCurrentFrame()
return frame:expandTemplate{title = protectionTemplate, args = message('protection-template-args', nil, 'table')}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
local data = {}
data.title = title
data.docTitle = docTitle
-- View, display, edit, and purge links if /doc exists.
data.viewLinkDisplay = i18n['view-link-display']
data.editLinkDisplay = i18n['edit-link-display']
data.historyLinkDisplay = i18n['history-link-display']
data.purgeLinkDisplay = i18n['purge-link-display']
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 6 then -- File namespace
preload = message('file-docpage-preload')
elseif subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
data.preload = preload
data.createLinkDisplay = i18n['create-link-display']
return data
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local function escapeBrackets(s)
-- Escapes square brackets with HTML entities.
return s
:gsub('%[', '[') -- Replace square brackets with HTML entities.
:gsub('%]', ']')
end
local ret
local docTitle = data.docTitle
local title = data.title
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay)
local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay)
ret = '[%s] [%s] [%s] [%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink)
else
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
ret = '[%s]'
ret = escapeBrackets(ret)
ret = mw.ustring.format(ret, createLink)
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks'
-- 'start-box-link-id' --> 'doc_editlinks'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = i18n['template-namespace-heading']
elseif subjectSpace == 828 then -- Module namespace
data.heading = i18n['module-namespace-heading']
elseif subjectSpace == 6 then -- File namespace
data.heading = i18n['file-namespace-heading']
else
data.heading = i18n['other-namespaces-heading']
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
data.linksClass = message('start-box-linkclasses')
data.linksId = message('start-box-link-id')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
:addClass(message('header-div-class'))
:tag('div')
:addClass(message('heading-div-class'))
:wikitext(data.heading)
local links = data.links
if links then
sbox
:tag('div')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
local cbox = mw.html.create('div')
cbox
:addClass(message('content-div-class'))
:wikitext('\n' .. (content or '') .. '\n')
return tostring(cbox)
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the footer text field.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '')
text = text .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates.
if printBlurb then
text = text .. '<br />' .. printBlurb
end
end
end
local ebox = mw.html.create('div')
ebox
:addClass(message('footer-div-class'))
:wikitext(text)
return tostring(ebox)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[w:Wikipedia:Template documentation|documentation]]
-- is [[w:Wikipedia:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[w:Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle or args.content then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editUrl = docTitle:fullUrl{action = 'edit'}
local editDisplay = i18n['edit-link-display']
local editLink = makeUrlLink(editUrl, editDisplay)
local historyUrl = docTitle:fullUrl{action = 'history'}
local historyDisplay = i18n['history-link-display']
local historyLink = makeUrlLink(historyUrl, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = i18n['create-link-display']
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'}
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
function p.makePrintBlurb(args, env)
--[=[
-- Generates the blurb displayed when there is a print version of the template available.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'print-link-display' --> '/Print'
-- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]'
-- .. ' of this template exists at $1.'
-- .. ' If you make a change to this template, please update the print version as well.'
-- 'display-print-category' --> true
-- 'print-category' --> 'Templates with print versions'
--]=]
local printTitle = env.printTitle
if not printTitle then
return nil
end
local ret
if printTitle.exists then
local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display'))
ret = message('print-blurb', {printLink})
local displayPrintCategory = message('display-print-category', nil, 'boolean')
if displayPrintCategory then
ret = ret .. makeCategoryLink(message('print-category'))
end
end
return ret
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
a029650bff998bd1a25784b49e99f984f068d85d
Module:Documentation/config
828
52
173
99
2022-11-09T19:51:21Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Documentation/config]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local _format = require('Module:TNT').format
local function format(id)
return _format('I18n/Documentation', id)
end
local cfg = {} -- Do not edit this line.
cfg['templatestyles-scr'] = 'Module:Documentation/styles.css'
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-template']
-- The name of the template that displays the protection icon (a padlock on enwiki).
cfg['protection-template'] = 'PP-template'
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
-- cfg['protection-template-args']
-- Any arguments to send to the protection template. This should be a Lua table.
-- For example, if the protection template is "pp-template", and the wikitext template invocation
-- looks like "{{pp-template|docusage=yes}}", then this table should look like "{docusage = 'yes'}".
--]]
cfg['protection-template-args'] = {docusage = 'yes'}
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[Image:Edit In Sandbox Icon - Color.svg|40px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = format('sandbox-notice-pagetype-template')
cfg['sandbox-notice-pagetype-module'] = format('sandbox-notice-pagetype-module')
cfg['sandbox-notice-pagetype-other'] = format('sandbox-notice-pagetype-other')
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = format('sandbox-notice-blurb')
cfg['sandbox-notice-diff-blurb'] = format('sandbox-notice-diff-blurb')
cfg['sandbox-notice-compare-link-display'] = format('sandbox-notice-compare-link-display')
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = format('sandbox-notice-testcases-blurb')
cfg['sandbox-notice-testcases-link-display'] = format('sandbox-notice-testcases-link-display')
cfg['sandbox-notice-testcases-run-blurb'] = format('sandbox-notice-testcases-run-blurb')
cfg['sandbox-notice-testcases-run-link-display'] = format('sandbox-notice-testcases-run-link-display')
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=Documentation icon]]'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = format('transcluded-from-blurb')
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = format('create-module-doc-blurb')
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = format('experiment-blurb-template')
cfg['experiment-blurb-module'] = format('experiment-blurb-module')
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = format('sandbox-link-display')
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = format('sandbox-edit-link-display')
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = format('sandbox-create-link-display')
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = format('compare-link-display')
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = format('mirror-link-display')
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = format('testcases-link-display')
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = format('testcases-edit-link-display')
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = format('testcases-create-link-display')
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = format('add-categories-blurb')
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = format('subpages-blurb')
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = format('subpages-link-display')
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = format('template-pagetype')
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = format('module-pagetype')
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = format('default-pagetype')
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['file-docpage-preload']
-- Preload file for documentation page in the file namespace.
cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- Print version configuration
----------------------------------------------------------------------------------------------------
-- cfg['print-subpage']
-- The name of the template subpage used for print versions.
cfg['print-subpage'] = 'Print'
-- cfg['print-link-display']
-- The text to display when linking to the /Print subpage.
cfg['print-link-display'] = '/Print'
-- cfg['print-blurb']
-- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display'].
cfg['print-blurb'] = format('print-blurb')
-- cfg['display-print-category']
-- Set to true to enable output of cfg['print-category'] if a /Print subpage exists.
-- This should be a boolean value (either true or false).
cfg['display-print-category'] = true
-- cfg['print-category']
-- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists.
cfg['print-category'] = 'Templates with print versions'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['main-div-id']
-- The "id" attribute of the main HTML "div" tag.
cfg['main-div-id'] = 'template-documentation'
-- cfg['main-div-classes']
-- The CSS classes added to the main HTML "div" tag.
cfg['main-div-class'] = 'ts-doc-doc'
cfg['header-div-class'] = 'ts-doc-header'
cfg['heading-div-class'] = 'ts-doc-heading'
cfg['content-div-class'] = 'ts-doc-content'
cfg['footer-div-class'] = 'ts-doc-footer plainlinks'
cfg['sandbox-class'] = 'ts-doc-sandbox'
-- cfg['start-box-linkclasses']
-- The CSS classes used for the [view][edit][history] or [create] links in the start box.
cfg['start-box-linkclasses'] = 'ts-tlinks-tlinks mw-editsection-like plainlinks'
-- cfg['start-box-link-id']
-- The HTML "id" attribute for the links in the start box.
cfg['start-box-link-id'] = 'doc_editlinks'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
79bc957b39b5b752fa4c2e2e80a35faa01901425
Module:Lua banner
828
63
189
2022-11-09T19:51:28Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Lua_banner]]: Importing from [[w:|English Wikipedia]] to sync templates
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')
local p = {}
local function format(msg)
return TNT.format('I18n/Lua banner', msg)
end
local function getConfig()
return mw.loadData('Module:Lua banner/config')
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args, cfg)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules, cfg)
local trackingCategories = p.renderTrackingCategories(args, modules, nil, cfg)
return box .. trackingCategories
end
function p.renderBox(modules, cfg)
local boxArgs = {}
if #modules < 1 then
cfg = cfg or getConfig()
if cfg['allow_wishes'] then
boxArgs.text = format('wishtext')
else
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error_emptylist'))
end
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
end
local moduleList = mList.makeList('bulleted', moduleLinks)
boxArgs.text = format('header') .. '\n' .. moduleList
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = string.format(
'[[File:Lua-logo-nolabel.svg|30px|alt=%s|link=%s]]',
format('logo_alt'),
format('logo_link')
)
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj, cfg)
if yesno(args.nocat) then
return ''
end
cfg = cfg or getConfig()
local cats = {}
-- Error category
if #modules < 1 and not cfg['allow_wishes'] and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
if titleObj.namespace == 10
and not cfg['subpage_blacklist'][titleObj.subpageText]
then
local category = args.category
if not category then
local pagename = modules[1] and mw.title.new(modules[1])
category = pagename and cfg['module_categories'][pagename.text]
if not category then
if cfg['allow_wishes'] and #modules < 1 then
category = cfg['wish_category']
else
category = cfg['default_category']
end
end
end
if category then
cats[#cats + 1] = category
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
0fa5bd41f4b7ea898a70bc3d83af64846d0b0338
Module:Message box/ombox.css
828
73
187
141
2022-11-09T19:51:31Z
meta>Agent Isai
0
1 revision imported from [[:wikipedia:Module:Message_box/ombox.css]]: Importing from [[w:|English Wikipedia]] to sync templates
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Module:Message box
828
10
153
2022-11-09T19:55:49Z
meta>Agent Isai
0
Fix
Scribunto
text/plain
require('Module:No globals')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage
or 'Imbox notice.png', imageSize)
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
fd6a8b1a0ac5916465cdf2eb099825f1d006cfba
Template:Infobox German place
10
1146
2472
2022-11-12T20:01:19Z
w>Markussep
0
unknown parameters
wikitext
text/x-wiki
{{Infobox settlement
<!-- See Template:Infobox settlement for additional fields and descriptions -->
| name = {{#if:{{{Name|{{{name|{{PAGENAME}} }}} }}}|<span class="wrap">{{{Name|{{{name|{{PAGENAMEBASE}} }}} }}}</span>}}
| native_name = {{{German_name|}}}
| settlement_type = {{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#switch: {{{Art|{{{type}}}}}}
| Ortsteil = [[Ortsteil]]
| Stadtteil = [[Stadtteil]]
| Ortschaft = [[Ortschaft]]
| Quarter = [[Quarter (urban subdivision)|Quarter]]
| Village = [[Village]]
| Borough = [[Stadtbezirk|Borough]]
| = Part
| #default = {{{Art|{{{type|Part}}}}}}
}} of {{#if:{{{City|}}} | {{Link if exists|{{{City}}} }} | {{#if:{{{Town|}}} | {{Link if exists|{{{Town}}} }} | {{#if:{{{Municipality|}}} | {{Link if exists|{{{Municipality}}} }} }} }} }}| {{#if: {{{Art|{{{type|}}}}}}| {{#switch: {{{Art|{{{type}}}}}}
| City | city = [[List of cities in Germany by population|City]]
| Stadt | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Town | town = [[Town#Germany|Town]]
| Ortsgemeinde | Gemeinde | Markt | Municipality | municipality | Flecken = [[Municipalities of Germany|Municipality]]
| Unincorporated area = [[Unincorporated area#Germany|Unincorporated area]]
| Amt = [[Amt]]
| Samtgemeinde = [[Samtgemeinde]]
| Verbandsgemeinde = [[Verbandsgemeinde]]
| Verwaltungsgemeinschaft = [[Municipal association (Germany)|Verwaltungsgemeinschaft]]
| #default = {{{Art|{{{type}}}}}}
}} | {{#if: {{{Gemeindeschlüssel|}}} | [[Municipalities of Germany|Municipality]] }} }} }}
| image_skyline = {{{image_photo|{{{image_skyline|}}}}}}
| imagesize = {{{imagesize|}}}
| image_caption = {{{image_caption|}}}
| image_flag = {{{image_flag|}}}
| flag_link = {{#ifexist: Flag of {{{Name|{{{name}}} }}} | Flag of {{{Name|{{{name}}} }}} | {{#ifexist: Flag of {{PAGENAME}} | Flag of {{PAGENAME}} }} }}
| flag_size = 100x100px
| image_shield = {{#switch: {{lc:{{{Wappen|{{{image_coa}}}}}}}}
| none | kein | führt kein wappen.png
| führt kein wappen.svg | führt_kein_wappen.png
| führt_kein_wappen.svg =
| #default = {{{Wappen|{{{image_coa|}}} }}}
}}
| shield_size = 80x80px
| image_map = {{#if: {{{Lageplan|{{{image_plan|}}} }}} | {{hidden begin |style=margin-top:0.2px |titlestyle= height:auto; padding:0.1em; padding-left:0.3em; padding-right:1.5em; |border=line |title = {{#if: {{{Lageplanbeschreibung|{{{plantext|}}} }}} | {{{Lageplanbeschreibung|{{{plantext}}} }}} | Location of {{{Name|{{{name|{{PAGENAME}} }}} }}} {{#if: {{{City|{{{Town|}}} }}} | within {{{City|{{{Town|}}} }}} | {{#if: {{{Kreis|{{{Landkreis|{{{district|}}} }}} }}} | within {{#switch: {{ucfirst:{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} }} | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Urban | Urban district = {{{Bundesland|{{{state|}}} }}} | #default = {{{Kreis|{{{Landkreis|{{{district|}}} }}} }}} district }} }} }} }} }}
{{#ifexist: Template:Imagemap Germany district {{str letter/trim |{{{Kfz|{{{licence|}}} }}} }} | {{#ifexist: Media:{{{Lageplan|{{{image_plan|}}} }}} | {{Imagemap Germany district {{str letter/trim |{{{Kfz|{{{licence|}}} }}} }} | {{{Lageplan|{{{image_plan|}}} }}} }} }} | [[File:{{{Lageplan|{{{image_plan|}}} }}}|250px]] }} {{hidden end}} | {{#if: {{Infobox mapframe}} | {{hidden | header = Location of {{{Name|{{{name|{{PAGENAME}} }}} }}} | headercss=height:5px; | content = <div class="center" style="margin-top:1em">{{Infobox mapframe|area_km2={{{Fläche|{{{area|}}} }}} }}</div>}} }} }}
| pushpin_map = {{#if: {{{coordinates|}}} | Germany#Germany {{#switch: {{unlink|{{{Bundesland|{{{state|}}} }}} }}
| Bayern | Bavaria = Bavaria
| Baden-Wuerttemberg | Baden-Württemberg = Baden-Württemberg
| Berlin = Berlin
| Brandenburg = Brandenburg
| Bremen = Bremen
| Hamburg = Hamburg
| Hessen | Hesse = Hesse
| Mecklenburg-Western Pomerania | MVP | Mecklenburg-Vorpommern = Mecklenburg-Vorpommern
| Niedersachsen | Lower Saxony = Lower Saxony
| Nordrhein-Westfalen | NRW | North Rhine-Westphalia | North Rhine-Westfalia = North Rhine-Westphalia
| Rheinland-Pfalz | Rhineland-Palatinate = Rhineland-Palatinate
| Saarland = Saarland
| Sachsen | Saxony = Saxony
| Sachsen-Anhalt | Saxony-Anhalt = Saxony-Anhalt
| Schleswig-Holstein = Schleswig-Holstein
| Thüringen | Thueringen | Thuringia = Thuringia
| #default = {{{Bundesland|{{{state|}}} }}}
}} }}
| pushpin_mapsize =
| pushpin_map_caption =
| coordinates = {{{coordinates|}}}
| subdivision_type = Country
| subdivision_name = [[Germany]]
| subdivision_type1 = [[States of Germany|State]]
| subdivision_name1 = {{#switch:{{{Bundesland|{{{state|}}} }}}
| Bayern | Bavaria = [[Bavaria]]
| Baden-Wuerttemberg | Baden-Württemberg = [[Baden-Württemberg]]
| Berlin = [[Berlin]]
| Brandenburg = [[Brandenburg]]
| Bremen = [[Bremen (state)|Bremen]]
| Hamburg = [[Hamburg]]
| Hessen | Hesse = [[Hesse]]
| Mecklenburg-Western Pomerania | MVP | Mecklenburg-Vorpommern = [[Mecklenburg-Vorpommern]]
| Niedersachsen | Lower Saxony = [[Lower Saxony]]
| Nordrhein-Westfalen | NRW | North Rhine-Westphalia | North Rhine-Westfalia = [[North Rhine-Westphalia]]
| Rheinland-Pfalz | Rhineland-Palatinate = [[Rhineland-Palatinate]]
| Saarland = [[Saarland]]
| Sachsen | Saxony = [[Saxony]]
| Sachsen-Anhalt | Saxony-Anhalt = [[Saxony-Anhalt]]
| Schleswig-Holstein = [[Schleswig-Holstein]]
| Thüringen | Thueringen | Thuringia = [[Thuringia]]
| #default = {{{Bundesland|{{{state|}}} }}}
}}
| subdivision_type2 = [[Regierungsbezirk|Admin. region]]
| subdivision_name2 = {{#if:{{{Regierungsbezirk|{{{regbzk|{{{region|}}} }}} }}}
| {{#ifexist: {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} (region)
| [[{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}} (region)|{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}]]
| {{#ifexist: {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}
| [[{{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}]]
| {{{Regierungsbezirk|{{{regbzk|{{{region}}} }}} }}}
}}
}}
}}
| subdivision_type3 = [[Districts of Germany|District]]
| subdivision_name3 = {{Link if exists|{{#switch: {{{state|{{{Bundesland|}}} }}} | Hamburg | [[Hamburg]] | Bremen | [[Bremen]] | Berlin | [[Berlin]] = <!-- no districts --> |
{{#switch:{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}
| [[Kreisfreie Stadt|Stadt]] | Kreisfreie Stadt | urban = [[Urban districts of Germany|Urban district]]
| #default = {{#ifexist: {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} (district)
|<!--wlink ending in "(district)"--> [[{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}} (district)|{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}]]
|<!--else--> {{#ifexist: {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}
|<!--wlink not ending in "(district)"--> [[{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}|{{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}]]
|<!--else--> {{{Landkreis|{{{Kreis|{{{district|}}} }}} }}}
}} }} }} }} }}
| subdivision_type4 = {{#if: {{{Gemeindeverwaltungsverband|}}} | [[Gemeindeverwaltungsverband|Municipal assoc.]] |
{{#if: {{{Samtgemeinde|}}} | [[Samtgemeinde|Municipal assoc.]] |
{{#if: {{{Verbandsgemeinde|}}} | [[Verbandsgemeinde|Municipal assoc.]] |
{{#if: {{{Verwaltungsgemeinschaft|}}} | [[Verwaltungsgemeinschaft|Municipal assoc.]] |
{{#if: {{{Amt|}}} | [[Amt|Municipal assoc.]] |
{{#if: {{{Verwaltungsverband|}}} | [[Verwaltungsverband|Municipal assoc.]]
}} }} }} }} }} }}
| subdivision_name4 = {{Link if exists|{{#if: {{{Gemeindeverwaltungsverband|}}} | {{#ifexist: {{{Gemeindeverwaltungsverband}}} (Gemeindeverwaltungsverband) | [[{{{Gemeindeverwaltungsverband}}} (Gemeindeverwaltungsverband){{!}}{{{Gemeindeverwaltungsverband}}}]] | {{{Gemeindeverwaltungsverband}}} }} |
{{#if: {{{Samtgemeinde|}}} | {{#ifexist: {{{Samtgemeinde}}} (Samtgemeinde) | [[{{{Samtgemeinde}}} (Samtgemeinde){{!}}{{{Samtgemeinde}}}]] | {{{Samtgemeinde}}} }} |
{{#if: {{{Verbandsgemeinde|}}} | {{#ifexist: {{{Verbandsgemeinde}}} (Verbandsgemeinde) | [[{{{Verbandsgemeinde}}} (Verbandsgemeinde){{!}}{{{Verbandsgemeinde}}}]] | {{{Verbandsgemeinde}}} }} |
{{#if: {{{Verwaltungsgemeinschaft|}}} | {{#ifexist: {{{Verwaltungsgemeinschaft}}} (Verwaltungsgemeinschaft) | [[{{{Verwaltungsgemeinschaft}}} (Verwaltungsgemeinschaft){{!}}{{{Verwaltungsgemeinschaft}}}]] | {{{Verwaltungsgemeinschaft}}} }} |
{{#if: {{{Amt|}}} | {{#ifexist: {{{Amt}}} (Amt) | [[{{{Amt}}} (Amt){{!}}{{{Amt}}}]] | {{{Amt}}} }} |
{{#if: {{{Verwaltungsverband|}}} | {{#ifexist: {{{Verwaltungsverband}}} (Verwaltungsverband) | [[{{{Verwaltungsverband}}} (Verwaltungsverband){{!}}{{{Verwaltungsverband}}}]] | {{{Verwaltungsverband}}} }}
}} }} }} }} }} }} }}
| subdivision_type5 = {{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} |
{{#if: {{{City|}}} | City |
{{#if: {{{Town|}}} | Town |
{{#if: {{{Municipality|}}} | Municipality
}} }} }} }}
| subdivision_name5 = {{Link if exists|{{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} |
{{#if: {{{City|}}} | {{{City}}} |
{{#if: {{{Town|}}} | {{{Town}}} |
{{#if: {{{Municipality|}}} | {{{Municipality}}}
}} }} }} }} }}
| subdivision_type6 = {{#if: {{{borough|}}} | Borough }}
| subdivision_name6 = {{Link if exists|{{#if: {{{borough|}}} | {{{borough}}} }} }}
| established_title = Founded
| established_date = {{{year|}}}{{#ifeq: {{#expr: {{{year}}} < 100 }} | 1 | AD }}
| established_title1 = First mentioned
| established_date1 = {{{year_of_first_mention|}}}
| extinct_title = {{<includeonly>safesubst:</includeonly>#if:{{{dissolved|}}}|Disbanded}}
| extinct_date = {{{dissolved|}}}
| parts_type = {{#if: {{{Gliederung|{{{divisions|}}}}}} | Subdivisions }}
| parts = {{{Gliederung|{{{divisions|}}}}}}
| leader_party = {{{Partei|{{{party|}}} }}}
| leader_title = {{#switch: {{{Bürgermeistertitel}}}
| Mayor | Bürgermeister | Bürgermeisterin | Ortsbürgermeister | Ortsbürgermeisterin = [[Mayor]]
| Lord mayor | Lord Mayor | Oberbürgermeister | Oberbürgermeisterin = [[Lord mayor]]
| Ortsvorsteher | Ortsvorsteherin = Local representative
| Samtgemeindebürgermeister = [[Mayor|Samtgemeinde-<br />bürgermeister]]
| Samtgemeindebürgermeisterin = [[Mayor|Samtgemeinde-<br />bürgermeisterin]]
| #default = {{#ifexist: {{{Bürgermeistertitel}}} | [[{{{Bürgermeistertitel}}}]] | {{#if: {{{Bürgermeistertitel|}}} | {{{Bürgermeistertitel}}} | [[Mayor]] }} }} }} {{<includeonly>safesubst:</includeonly>#if: {{{leader_term|}}} | {{nobold|({{{leader_term}}}) }}
}}
| leader_name = {{{Bürgermeister|{{{mayor|}}} }}}
| leader_title1 = {{#if: {{{ruling_party1|}}} | Governing parties }}
| leader_name1 = {{Polparty|DE|{{{ruling_party1|}}} }} {{#if: {{{ruling_party2|}}} | / {{Polparty|DE|{{{ruling_party2|}}} }} }} {{#if: {{{ruling_party3|}}} | / {{Polparty|DE|{{{ruling_party3|}}} }} }} {{#if: {{{ruling_party4|}}} | / {{Polparty|DE|{{{ruling_party4|}}} }} }} {{#if: {{{ruling_party5|}}} | / {{Polparty|DE|{{{ruling_party5|}}} }} }}
| area_footnotes = {{{area_footnotes|}}}
| area_total_km2 = {{{Fläche|{{{area|}}} }}}
| area_urban_km2 =
| area_metro_km2 = {{{area_metro|}}}
| elevation_footnotes = <!-- for references: use <ref> tags -->
| elevation_min_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1%2|plain=false}}||{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1|plain=false}} }} }}
| elevation_max_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%1%2|plain=false}}||{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-(%s*%d.*)|%2|plain=false}} }} }}
| elevation_m = {{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-|%1|plain=false}}|{{{Höhe|{{{elevation|}}}}}}|}} }}
| population_footnotes = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{pop_ref|}}} | {{#tag:ref | {{Population Germany|key={{{Gemeindeschlüssel|}}}|datref=QUELLE}} }} }}
| population_total = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{Einwohner|{{{population|}}} }}} | {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} }}
| population_as_of = {{#iferror: {{#expr: {{Population Germany|key={{replace|{{{Gemeindeschlüssel|}}}| |}} }} +1 }} | {{{population_as_of|{{{Stand|}}} }}} | {{Population Germany|key={{{Gemeindeschlüssel|}}}|datref=STAND}} }}
| population_density_km2 = auto
| population_urban = {{{pop_urban|}}}
| population_metro = {{{pop_metro|}}}
| population_demonym = {{{pop_demonym|{{{demonym|}}}}}}
| timezone_link = Time in Germany
| timezone1 = [[Central European Time|CET]]
| utc_offset1 = +01:00
| timezone1_DST = [[Central European Summer Time|CEST]]
| utc_offset1_DST = +02:00
| postal_code_type = [[Postal codes in Germany|Postal codes]]
| postal_code = {{{PLZ|{{{postal_code|}}} }}}
| area_code_type = [[List of dialling codes in Germany|Dialling codes]]
| area_code = {{{Vorwahl|{{{area_code|}}} }}}
| registration_plate = {{{Kfz|{{{licence|}}} }}}
| website = {{{Website|{{{website|}}} }}}
| footnotes = {{{footnotes|}}}
}}<!-- error tracking categories
-->{{#if: {{{coordinates|}}} | | {{ns0|[[Category:Germany articles requiring maintenance|C]]}} }}<!-- coordinates missing
-->{{#ifeq: {{#expr: {{#expr: {{{Einwohner|{{{population|0}}} }}} round 0 }} = {{{Einwohner|{{{population|0}}} }}} }} | 0 | {{ns0|[[Category:Germany articles requiring maintenance|D]]}} | }}<!-- Assign to maintenance category if decimal point is used in population as a thousands divider
-->{{#if: {{{City|}}} {{{Town|}}} {{{Municipality|}}} | {{#if: {{{Gemeindeschlüssel|}}} | {{ns0|[[Category:Germany articles requiring maintenance|T]]}} | }} }}<!-- Subdivisions of municipalities shouldn't have a Gemeindeschlüssel
-->{{#iferror: {{#expr: {{Population Germany|key={{replace|{{{key|{{{Gemeindeschlüssel|}}} }}}| |}} }} + 1 }} | {{#if:{{{City|}}} {{{Town|}}} {{{Municipality|}}}{{{dissolved|}}} |<!-- OK, subdivisions of municipalities and dissolved units have no Gemeindeschlüssel --> | {{ns0|[[Category:Germany articles requiring maintenance|U]]}} }} | }}<!-- Town with missing or incorrect Gemeindeschlüssel
-->{{#if: {{{Bundesland|{{{state|}}} }}} | | {{ns0|[[Category:Germany articles requiring maintenance|X]]}} }}<!-- Missing state name
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox German place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox German place]] with unknown parameter "_VALUE_"|ignoreblank=y| _noautocat | Amt | area | area_code | area_metro | Art | borough | Bundesland | Bürgermeister | Bürgermeistertitel | City | coordinates | demonym | dissolved | district | divisions | Einwohner | elevation | Fläche | footnotes | Gemeindeschlüssel | Gemeindeverwaltungsverband | German_name | Gliederung | Höhe | image_caption | image_coa | image_flag | image_photo | image_plan | image_skyline | imagesize | Kfz | Kreis | Lageplan | Lageplanbeschreibung | Landkreis | leader_term | licence | mayor | Municipality | name | Name | Partei | party | plantext | PLZ | pop_demonym | pop_metro | pop_ref | pop_urban | population | population_as_of | postal_code | regbzk | Regierungsbezirk | region | ruling_party1 | ruling_party2 | ruling_party3 | ruling_party4 | ruling_party5 | Samtgemeinde | Stand | state | Town | type | Verbandsgemeinde | Verwaltungsgemeinschaft | Verwaltungsverband | Vorwahl | Wappen | website | Website | year | year_of_first_mention }}<!--
Assignment to categories
-->{{#if:{{{_noautocat|<noinclude>x</noinclude>}}}||<!--
(TYPE) in (STATE) -->{{#if:{{{City|}}}{{{Town|}}}{{{Municipality|}}} | | {{#switch: {{ucfirst:{{{Art|{{{type|}}}}}}}}
| <!-- Filter for subdivisions for which no town etc. is given --> Ortsteil | Stadtteil | Suburb | Borough | Quarter | Bezirk | Stadtbezirk = {{ns0|[[Category:Germany articles requiring maintenance|Art]]}}
| #default = {{#if:{{{Bundesland|{{{state|}}}}}}|{{ns0|[[Category:{{
#switch: {{ucfirst:{{{Art|{{{type|}}}}}}}}
| Ortsgemeinde | Gemeinde | Markt | Municipality| municipality = Municipalities
| Amt = Ämter
| Gemeindeverwaltungsverband = Gemeindeverwaltungsverbände
| Samtgemeinde = Samtgemeinden
| Verbandsgemeinde = Verbandsgemeinde
| Verwaltungsgemeinschaft = Verwaltungsgemeinschaften
| Verwaltungsverband = Verwaltungsverbände
| Former Verbandsgemeinde = Former Verbandsgemeinden
| Stadt | Kreisfreie Stadt | [[Kreisfreie Stadt|Stadt]] | Town | town = Towns
| City | city = Cities
| Village | Dorf = Villages
| #default = Municipalities
}} in {{#switch: {{{Bundesland|{{{state|}}}}}}
| Bayern | Bavaria | [[Bavaria]] = Bavaria
| Baden-Wuerttemberg | Baden-Württemberg | [[Baden-Württemberg]] = Baden-Württemberg
| Berlin | [[Berlin]] = Berlin
| Brandenburg | [[Brandenburg]] = Brandenburg
| Bremen | [[Bremen]] = Bremen (state)
| Hamburg | [[Hamburg]] = Hamburg
| Hessen | Hesse | [[Hesse]] = Hesse
| Mecklenburg-Vorpommern | Mecklenburg-Western Pomerania | [[Mecklenburg-Vorpommern]] | [[Mecklenburg-Western Pomerania]] = Mecklenburg-Western Pomerania
| Niedersachsen | Lower Saxony | [[Lower Saxony]] = Lower Saxony
| Nordrhein-Westfalen | NRW | North Rhine-Westphalia | [[North Rhine-Westphalia]] = North Rhine-Westphalia
| Rheinland-Pfalz | Rhineland-Palatinate | [[Rhineland-Palatinate]] = Rhineland-Palatinate
| Saarland | [[Saarland]] = Saarland
| Sachsen | Saxony | [[Saxony]] = Saxony
| Sachsen-Anhalt | Saxony-Anhalt | [[Saxony-Anhalt]] = Saxony-Anhalt
| Schleswig-Holstein | [[Schleswig-Holstein]] = Schleswig-Holstein
| Thüringen | Thuringia | [[Thuringia]] = Thuringia
}}]]}}}}}}}} }}{{#if:{{{Höhe|{{{elevation|}}}}}}|{{#ifeq:{{{Höhe|{{{elevation|}}}}}}|{{#invoke:string|replace|{{{Höhe|{{{elevation|}}}}}}|^(%s*%d[%d]*%s*)%-|%1|plain=false}}||[[Category:Pages using infobox German place with an elevation range]] }} }}<noinclude>
{{documentation}}
</noinclude>
4e538171f3e5d4179053901bcdc7c08cdb636ae6
Module:Lua banner/doc
828
467
1269
2022-11-13T06:29:34Z
wikipedia>Geraldo Perez
0
Reverted edits by [[Special:Contribs/200.68.143.95|200.68.143.95]] ([[User talk:200.68.143.95|talk]]) to last version by Izno
wikitext
text/x-wiki
{{high use}}
{{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}}
This module implements the {{tl|lua}} template.
== Usage from wikitext ==
This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation.
== Usage from Lua modules ==
To use this module from other Lua modules, first load the module.
<syntaxhighlight lang="lua">
local mLuaBanner = require('Module:Lua banner')
</syntaxhighlight>
You can then generate a side box using the _main function.
<syntaxhighlight lang="lua">
mLuaBanner._main(args)
</syntaxhighlight>
The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation.
== Tracking category ==
* {{clc|Lua templates with errors}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Modules that add a tracking category]]
}}</includeonly>
864df985eac89c7dc7d6168d9235ff11b9f13b47
Template:Infobox U.S. Cabinet
10
1157
2483
2022-11-15T03:51:44Z
2600:1700:2390:D50:EC8A:721E:C824:39B4
0
wikitext
text/x-wiki
{{Infobox cabinet members
| float = {{{align|right}}}
| topimage = {{#invoke:InfoboxImage|InfoboxImage|image={{if empty|{{{image|}}}|{{{image name|}}}|{{{smallimage|}}}}}|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}|{{{width|}}}}}|sizedefault=frameless|alt={{{alt|}}}|suppressplaceholder=yes}}
| topcaptionstyle = font-size:smaller
| topcaption = {{{caption|}}}
| above = The {{{Name}}} cabinet{{{source|{{{Source|}}}}}}
| border_color1 = #000
| office1 = [[President of the United States|President]]
| politicalparty1a = {{{President party|}}}
| name1a = {{{President|{{PAGENAMEBASE}}}}}
| term1a = {{{President date|{{{President start}}}–{{{President end|}}} }}}
| office2 = [[Vice President of the United States|Vice President]]
| name2a = {{{Vice President}}}
| term2a = {{{Vice President date|{{{Vice President start}}}–{{{Vice President end|}}} }}}
| name2b = {{{Vice President 2|}}}
| term2b = {{{Vice President date 2|{{{Vice President start 2}}}–{{{Vice President end 2|}}} }}}
| name2c = {{{Vice President 3|}}}
| term2c = {{{Vice President date 3|{{{Vice President start 3}}}–{{{Vice President end 3|}}} }}}
| name2d = {{{Vice President 4|}}}
| term2d = {{{Vice President date 4|{{{Vice President start 4}}}–{{{Vice President end 4|}}} }}}
| border_color3 = #000
| office3 = [[United States Secretary of State|Secretary of State]]
| name3a = {{{State|}}}
| term3a = {{{State date|{{{State start}}}–{{{State end|}}} }}}
| name3b = {{{State 2|}}}
| term3b = {{{State date 2|{{{State start 2}}}–{{{State end 2|}}} }}}
| name3c = {{{State 3|}}}
| term3c = {{{State date 3|{{{State start 3}}}–{{{State end 3|}}} }}}
| name3d = {{{State 4|}}}
| term3d = {{{State date 4|{{{State start 4}}}–{{{State end 4|}}} }}}
| name3e = {{{State 5|}}}
| term3e = {{{State date 5|{{{State start 5}}}–{{{State end 5|}}} }}}
| name3f = {{{State 6|}}}
| term3f = {{{State date 6|{{{State start 6}}}–{{{State end 6|}}} }}}
| name3g = {{{State 7|}}}
| term3g = {{{State date 7|{{{State start 7}}}–{{{State end 7|}}} }}}
| name3h = {{{State 8|}}}
| term3h = {{{State date 8|{{{State start 8}}}–{{{State end 8|}}} }}}
| office4 = [[United States Secretary of the Treasury|Secretary of the Treasury]]
| name4a = {{{Treasury|}}}
| term4a = {{{Treasury date|{{{Treasury start}}}–{{{Treasury end|}}} }}}
| name4b = {{{Treasury 2|}}}
| term4b = {{{Treasury date 2|{{{Treasury start 2}}}–{{{Treasury end 2|}}} }}}
| name4c = {{{Treasury 3|}}}
| term4c = {{{Treasury date 3|{{{Treasury start 3}}}–{{{Treasury end 3|}}} }}}
| name4d = {{{Treasury 4|}}}
| term4d = {{{Treasury date 4|{{{Treasury start 4}}}–{{{Treasury end 4|}}} }}}
| name4e = {{{Treasury 5|}}}
| term4e = {{{Treasury date 5|{{{Treasury start 5}}}–{{{Treasury end 5|}}} }}}
| name4f = {{{Treasury 6|}}}
| term4f = {{{Treasury date 6|{{{Treasury start 6}}}–{{{Treasury end 6|}}} }}}
| name4g = {{{Treasury 7|}}}
| term4g = {{{Treasury date 7|{{{Treasury start 7}}}–{{{Treasury end 7|}}} }}}
| name4h = {{{Treasury 8|}}}
| term4h = {{{Treasury date 8|{{{Treasury start 8}}}–{{{Treasury end 8|}}} }}}
| office5 = [[United States Secretary of War|Secretary of War]]
| name5a = {{{War|}}}
| term5a = {{{War date|{{{War start}}}–{{{War end|}}} }}}
| name5b = {{{War 2|}}}
| term5b = {{{War date 2|{{{War start 2}}}–{{{War end 2|}}} }}}
| name5c = {{{War 3|}}}
| term5c = {{{War date 3|{{{War start 3}}}–{{{War end 3|}}} }}}
| name5d = {{{War 4|}}}
| term5d = {{{War date 4|{{{War start 4}}}–{{{War end 4|}}} }}}
| name5e = {{{War 5|}}}
| term5e = {{{War date 5|{{{War start 5}}}–{{{War end 5|}}} }}}
| office6 = [[United States Secretary of Defense|Secretary of Defense]]
| name6a = {{{Defense|}}}
| term6a = {{{Defense date|{{{Defense start}}}–{{{Defense end|}}} }}}
| name6b = {{{Defense 2|}}}
| term6b = {{{Defense date 2|{{{Defense start 2}}}–{{{Defense end 2|}}} }}}
| name6c = {{{Defense 3|}}}
| term6c = {{{Defense date 3|{{{Defense start 3}}}–{{{Defense end 3|}}} }}}
| name6d = {{{Defense 4|}}}
| term6d = {{{Defense date 4|{{{Defense start 4}}}–{{{Defense end 4|}}} }}}
| name6e = {{{Defense 5|}}}
| term6e = {{{Defense date 5|{{{Defense start 5}}}–{{{Defense end 5|}}} }}}
| name6f = {{{Defense 6|}}}
| term6f = {{{Defense date 6|{{{Defense start 6}}}–{{{Defense end 6|}}} }}}
| name6g = {{{Defense 7|}}}
| term6g = {{{Defense date 7|{{{Defense start 7}}}–{{{Defense end 7|}}} }}}
| name6h = {{{Defense 8|}}}
| term6h = {{{Defense date 8|{{{Defense start 8}}}–{{{Defense end 8|}}} }}}
| office7 = [[United States Secretary of the Army|Secretary of the Army]]
| name7a = {{{Army|}}}
| term7a = {{{Army date|{{{Army start}}}–{{{Army end|}}} }}}
| name7b = {{{Army 2|}}}
| term7b = {{{Army date 2|{{{Army start 2}}}–{{{Army end 2|}}} }}}
| office8 = [[United States Secretary of the Air Force|Secretary of the Air Force]]
| name8a = {{{Air Force|}}}
| term8a = {{{Air Force date|{{{Air Force start}}}–{{{Air Force end|}}} }}}
| office9 = [[United States Attorney General|Attorney General]]
| name9a = {{{Justice|}}}
| term9a = {{{Justice date|{{{Justice start}}}–{{{Justice end|}}} }}}
| name9b = {{{Justice 2|}}}
| term9b = {{{Justice date 2|{{{Justice start 2}}}–{{{Justice end 2|}}} }}}
| name9c = {{{Justice 3|}}}
| term9c = {{{Justice date 3|{{{Justice start 3}}}–{{{Justice end 3|}}} }}}
| name9d = {{{Justice 4|}}}
| term9d = {{{Justice date 4|{{{Justice start 4}}}–{{{Justice end 4|}}} }}}
| name9e = {{{Justice 5|}}}
| term9e = {{{Justice date 5|{{{Justice start 5}}}–{{{Justice end 5|}}} }}}
| name9f = {{{Justice 6|}}}
| term9f = {{{Justice date 6|{{{Justice start 6}}}–{{{Justice end 6|}}} }}}
| name9g = {{{Justice 7|}}}
| term9g = {{{Justice date 7|{{{Justice start 7}}}–{{{Justice end 7|}}} }}}
| name9h = {{{Justice 8|}}}
| term9h = {{{Justice date 8|{{{Justice start 8}}}–{{{Justice end 8|}}} }}}
| office10 = [[United States Postmaster General|Postmaster General]]
| name10a = {{{Post|}}}
| term10a = {{{Post date|{{{Post start}}}–{{{Post end|}}} }}}
| name10b = {{{Post 2|}}}
| term10b = {{{Post date 2|{{{Post start 2}}}–{{{Post end 2|}}} }}}
| name10c = {{{Post 3|}}}
| term10c = {{{Post date 3|{{{Post start 3}}}–{{{Post end 3|}}} }}}
| name10d = {{{Post 4|}}}
| term10d = {{{Post date 4|{{{Post start 4}}}–{{{Post end 4|}}} }}}
| name10e = {{{Post 5|}}}
| term10e = {{{Post date 5|{{{Post start 5}}}–{{{Post end 5|}}} }}}
| office11 = [[United States Secretary of the Navy|Secretary of the Navy]]
| name11a = {{{Navy|}}}
| term11a = {{{Navy date|{{{Navy start}}}–{{{Navy end|}}} }}}
| name11b = {{{Navy 2|}}}
| term11b = {{{Navy date 2|{{{Navy start 2}}}–{{{Navy end 2|}}} }}}
| name11c = {{{Navy 3|}}}
| term11c = {{{Navy date 3|{{{Navy start 3}}}–{{{Navy end 3|}}} }}}
| name11d = {{{Navy 4|}}}
| term11d = {{{Navy date 4|{{{Navy start 4}}}–{{{Navy end 4|}}} }}}
| name11e = {{{Navy 5|}}}
| term11e = {{{Navy date 5|{{{Navy start 5}}}–{{{Navy end 5|}}} }}}
| name11f = {{{Navy 6|}}}
| term11f = {{{Navy date 6|{{{Navy start 6}}}–{{{Navy end 6|}}} }}}
| office12 = [[United States Secretary of the Interior|Secretary of the Interior]]
| name12a = {{{Interior|}}}
| term12a = {{{Interior date|{{{Interior start}}}–{{{Interior end|}}} }}}
| name12b = {{{Interior 2|}}}
| term12b = {{{Interior date 2|{{{Interior start 2}}}–{{{Interior end 2|}}} }}}
| name12c = {{{Interior 3|}}}
| term12c = {{{Interior date 3|{{{Interior start 3}}}–{{{Interior end 3|}}} }}}
| name12d = {{{Interior 4|}}}
| term12d = {{{Interior date 4|{{{Interior start 4}}}–{{{Interior end 4|}}} }}}
| name12e = {{{Interior 5|}}}
| term12e = {{{Interior date 5|{{{Interior start 5}}}–{{{Interior end 5|}}} }}}
| name12f = {{{Interior 6|}}}
| term12f = {{{Interior date 6|{{{Interior start 6}}}–{{{Interior end 6|}}} }}}
| name12g = {{{Interior 7|}}}
| term12g = {{{Interior date 7|{{{Interior start 7}}}–{{{Interior end 7|}}} }}}
| name12h = {{{Interior 8|}}}
| term12h = {{{Interior date 8|{{{Interior start 8}}}–{{{Interior end 8|}}} }}}
| office13 = [[United States Secretary of Agriculture|Secretary of Agriculture]]
| name13a = {{{Agriculture|}}}
| term13a = {{{Agriculture date|{{{Agriculture start}}}–{{{Agriculture end|}}} }}}
| name13b = {{{Agriculture 2|}}}
| term13b = {{{Agriculture date 2|{{{Agriculture start 2}}}–{{{Agriculture end 2|}}} }}}
| name13c = {{{Agriculture 3|}}}
| term13c = {{{Agriculture date 3|{{{Agriculture start 3}}}–{{{Agriculture end 3|}}} }}}
| name13d = {{{Agriculture 4|}}}
| term13d = {{{Agriculture date 4|{{{Agriculture start 4}}}–{{{Agriculture end 4|}}} }}}
| name13e = {{{Agriculture 5|}}}
| term13e = {{{Agriculture date 5|{{{Agriculture start 5}}}–{{{Agriculture end 5|}}} }}}
| name13f = {{{Agriculture 6|}}}
| term13f = {{{Agriculture date 6|{{{Agriculture start 6}}}–{{{Agriculture end 6|}}} }}}
| name13g = {{{Agriculture 7|}}}
| term13g = {{{Agriculture date 7|{{{Agriculture start 7}}}–{{{Agriculture end 7|}}} }}}
| name13h = {{{Agriculture 8|}}}
| term13h = {{{Agriculture date 8|{{{Agriculture start 8}}}–{{{Agriculture end 8|}}} }}}
| office14 = [[United States Department of Commerce and Labor|Secretary of Commerce and Labor]]
| name14a = {{{CommerceLabor|}}}
| term14a = {{{CommerceLabor date|{{{CommerceLabor start}}}–{{{CommerceLabor end|}}} }}}
| name14b = {{{CommerceLabor 2|}}}
| term14b = {{{CommerceLabor date 2|{{{CommerceLabor start 2}}}–{{{CommerceLabor end 2|}}} }}}
| name14c = {{{CommerceLabor 3|}}}
| term14c = {{{CommerceLabor date 3|{{{CommerceLabor start 3}}}–{{{CommerceLabor end 3|}}} }}}
| name14d = {{{CommerceLabor 4|}}}
| term14d = {{{CommerceLabor date 4|{{{CommerceLabor start 4}}}–{{{CommerceLabor end 4|}}} }}}
| office15 = [[United States Secretary of Commerce|Secretary of Commerce]]
| name15a = {{{Commerce|}}}
| term15a = {{{Commerce date|{{{Commerce start}}}–{{{Commerce end|}}} }}}
| name15b = {{{Commerce 2|}}}
| term15b = {{{Commerce date 2|{{{Commerce start 2}}}–{{{Commerce end 2|}}} }}}
| name15c = {{{Commerce 3|}}}
| term15c = {{{Commerce date 3|{{{Commerce start 3}}}–{{{Commerce end 3|}}} }}}
| name15d = {{{Commerce 4|}}}
| term15d = {{{Commerce date 4|{{{Commerce start 4}}}–{{{Commerce end 4|}}} }}}
| name15e = {{{Commerce 5|}}}
| term15e = {{{Commerce date 5|{{{Commerce start 5}}}–{{{Commerce end 5|}}} }}}
| name15f = {{{Commerce 6|}}}
| term15f = {{{Commerce date 6|{{{Commerce start 6}}}–{{{Commerce end 6|}}} }}}
| name15g = {{{Commerce 7|}}}
| term15g = {{{Commerce date 7|{{{Commerce start 7}}}–{{{Commerce end 7|}}} }}}
| name15h = {{{Commerce 8|}}}
| term15h = {{{Commerce date 8|{{{Commerce start 8}}}–{{{Commerce end 8|}}} }}}
| office16 = [[United States Secretary of Labor|Secretary of Labor]]
| name16a = {{{Labor|}}}
| term16a = {{{Labor date|{{{Labor start}}}–{{{Labor end|}}} }}}
| name16b = {{{Labor 2|}}}
| term16b = {{{Labor date 2|{{{Labor start 2}}}–{{{Labor end 2|}}} }}}
| name16c = {{{Labor 3|}}}
| term16c = {{{Labor date 3|{{{Labor start 3}}}–{{{Labor end 3|}}} }}}
| name16d = {{{Labor 4|}}}
| term16d = {{{Labor date 4|{{{Labor start 4}}}–{{{Labor end 4|}}} }}}
| name16e = {{{Labor 5|}}}
| term16e = {{{Labor date 5|{{{Labor start 5}}}–{{{Labor end 5|}}} }}}
| name16f = {{{Labor 6|}}}
| term16f = {{{Labor date 6|{{{Labor start 6}}}–{{{Labor end 6|}}} }}}
| name16g = {{{Labor 7|}}}
| term16g = {{{Labor date 7|{{{Labor start 7}}}–{{{Labor end 7|}}} }}}
| name16h = {{{Labor 8|}}}
| term16h = {{{Labor date 8|{{{Labor start 8}}}–{{{Labor end 8|}}} }}}
| office17 = [[United States Secretary of Health and Human Services|Secretary of Health,<br />Education, and Welfare]]
| name17a = {{{Health, Education, and Welfare|}}}
| term17a = {{{Health, Education, and Welfare date|{{{Health, Education, and Welfare start}}}–{{{Health, Education, and Welfare end|}}} }}}
| name17b = {{{Health, Education, and Welfare 2|}}}
| term17b = {{{Health, Education, and Welfare date 2|{{{Health, Education, and Welfare start 2}}}–{{{Health, Education, and Welfare end 2|}}} }}}
| name17c = {{{Health, Education, and Welfare 3|}}}
| term17c = {{{Health, Education, and Welfare date 3|{{{Health, Education, and Welfare start 3}}}–{{{Health, Education, and Welfare end 3|}}} }}}
| name17d = {{{Health, Education, and Welfare 4|}}}
| term17d = {{{Health, Education, and Welfare date 4|{{{Health, Education, and Welfare start 4}}}–{{{Health, Education, and Welfare end 4|}}} }}}
| office18 = [[United States Secretary of Health and Human Services|Secretary of Health and<br />Human Services]]
| name18a = {{{Health and Human Services|}}}
| term18a = {{{Health and Human Services date|{{{Health and Human Services start}}}–{{{Health and Human Services end|}}} }}}
| name18b = {{{Health and Human Services 2|}}}
| term18b = {{{Health and Human Services date 2|{{{Health and Human Services start 2}}}–{{{Health and Human Services end 2|}}} }}}
| name18c = {{{Health and Human Services 3|}}}
| term18c = {{{Health and Human Services date 3|{{{Health and Human Services start 3}}}–{{{Health and Human Services end 3|}}} }}}
| name18d = {{{Health and Human Services 4|}}}
| term18d = {{{Health and Human Services date 4|{{{Health and Human Services start 4}}}–{{{Health and Human Services end 4|}}} }}}
| name18e = {{{Health and Human Services 5|}}}
| term18e = {{{Health and Human Services date 5|{{{Health and Human Services start 5}}}–{{{Health and Human Services end 5|}}} }}}
| name18f = {{{Health and Human Services 6|}}}
| term18f = {{{Health and Human Services date 6|{{{Health and Human Services start 6}}}–{{{Health and Human Services end 6|}}} }}}
| name18g = {{{Health and Human Services 7|}}}
| term18g = {{{Health and Human Services date 7|{{{Health and Human Services start 7}}}–{{{Health and Human Services end 7|}}} }}}
| name18h = {{{Health and Human Services 8|}}}
| term18h = {{{Health and Human Services date 8|{{{Health and Human Services start 8}}}–{{{Health and Human Services end 8|}}} }}}
| office19 = [[United States Secretary of Housing and Urban Development|Secretary of Housing and<br />Urban Development]]
| name19a = {{{Housing and Urban Development|}}}
| term19a = {{{Housing and Urban Development date|{{{Housing and Urban Development start}}}–{{{Housing and Urban Development end|}}} }}}
| name19b = {{{Housing and Urban Development 2|}}}
| term19b = {{{Housing and Urban Development date 2|{{{Housing and Urban Development start 2}}}–{{{Housing and Urban Development end 2|}}} }}}
| name19c = {{{Housing and Urban Development 3|}}}
| term19c = {{{Housing and Urban Development date 3|{{{Housing and Urban Development start 3}}}–{{{Housing and Urban Development end 3|}}} }}}
| name19d = {{{Housing and Urban Development 4|}}}
| term19d = {{{Housing and Urban Development date 4|{{{Housing and Urban Development start 4}}}–{{{Housing and Urban Development end 4|}}} }}}
| name19e = {{{Housing and Urban Development 5|}}}
| term19e = {{{Housing and Urban Development date 5|{{{Housing and Urban Development start 5}}}–{{{Housing and Urban Development end 5|}}} }}}
| name19f = {{{Housing and Urban Development 6|}}}
| term19f = {{{Housing and Urban Development date 6|{{{Housing and Urban Development start 6}}}–{{{Housing and Urban Development end 6|}}} }}}
| name19g = {{{Housing and Urban Development 7|}}}
| term19g = {{{Housing and Urban Development date 7|{{{Housing and Urban Development start 7}}}–{{{Housing and Urban Development end 7|}}} }}}
| name19h = {{{Housing and Urban Development 8|}}}
| term19h = {{{Housing and Urban Development date 8|{{{Housing and Urban Development start 8}}}–{{{Housing and Urban Development end 8|}}} }}}
| office20 = [[United States Secretary of Transportation|Secretary of Transportation]]
| name20a = {{{Transportation|}}}
| term20a = {{{Transportation date|{{{Transportation start}}}–{{{Transportation end|}}} }}}
| name20b = {{{Transportation 2|}}}
| term20b = {{{Transportation date 2|{{{Transportation start 2}}}–{{{Transportation end 2|}}} }}}
| name20c = {{{Transportation 3|}}}
| term20c = {{{Transportation date 3|{{{Transportation start 3}}}–{{{Transportation end 3|}}} }}}
| name20d = {{{Transportation 4|}}}
| term20d = {{{Transportation date 4|{{{Transportation start 4}}}–{{{Transportation end 4|}}} }}}
| name20e = {{{Transportation 5|}}}
| term20e = {{{Transportation date 5|{{{Transportation start 5}}}–{{{Transportation end 5|}}} }}}
| name20f = {{{Transportation 6|}}}
| term20f = {{{Transportation date 6|{{{Transportation start 6}}}–{{{Transportation end 6|}}} }}}
| name20g = {{{Transportation 7|}}}
| term20g = {{{Transportation date 7|{{{Transportation start 7}}}–{{{Transportation end 7|}}} }}}
| name20h = {{{Transportation 8|}}}
| term20h = {{{Transportation date 8|{{{Transportation start 8}}}–{{{Transportation end 8|}}} }}}
| office21 = [[United States Secretary of Energy|Secretary of Energy]]
| name21a = {{{Energy|}}}
| term21a = {{{Energy date|{{{Energy start}}}–{{{Energy end|}}} }}}
| name21b = {{{Energy 2|}}}
| term21b = {{{Energy date 2|{{{Energy start 2}}}–{{{Energy end 2|}}} }}}
| name21c = {{{Energy 3|}}}
| term21c = {{{Energy date 3|{{{Energy start 3}}}–{{{Energy end 3|}}} }}}
| name21d = {{{Energy 4|}}}
| term21d = {{{Energy date 4|{{{Energy start 4}}}–{{{Energy end 4|}}} }}}
| name21e = {{{Energy 5|}}}
| term21e = {{{Energy date 5|{{{Energy start 5}}}–{{{Energy end 5|}}} }}}
| name21f = {{{Energy 6|}}}
| term21f = {{{Energy date 6|{{{Energy start 6}}}–{{{Energy end 6|}}} }}}
| name21g = {{{Energy 7|}}}
| term21g = {{{Energy date 7|{{{Energy start 7}}}–{{{Energy end 7|}}} }}}
| name21h = {{{Energy 8|}}}
| term21h = {{{Energy date 8|{{{Energy start 8}}}–{{{Energy end 8|}}} }}}
| office22 = [[United States Secretary of Education|Secretary of Education]]
| name22a = {{{Education|}}}
| term22a = {{{Education date|{{{Education start}}}–{{{Education end|}}} }}}
| name22b = {{{Education 2|}}}
| term22b = {{{Education date 2|{{{Education start 2}}}–{{{Education end 2|}}} }}}
| name22c = {{{Education 3|}}}
| term22c = {{{Education date 3|{{{Education start 3}}}–{{{Education end 3|}}} }}}
| name22d = {{{Education 4|}}}
| term22d = {{{Education date 4|{{{Education start 4}}}–{{{Education end 4|}}} }}}
| name22e = {{{Education 5|}}}
| term22e = {{{Education date 5|{{{Education start 5}}}–{{{Education end 5|}}} }}}
| name22f = {{{Education 6|}}}
| term22f = {{{Education date 6|{{{Education start 6}}}–{{{Education end 6|}}} }}}
| name22g = {{{Education 7|}}}
| term22g = {{{Education date 7|{{{Education start 7}}}–{{{Education end 7|}}} }}}
| name22h = {{{Education 8|}}}
| term22h = {{{Education date 8|{{{Education start 8}}}–{{{Education end 8|}}} }}}
| office23 = [[United States Secretary of Veterans Affairs|Secretary of Veterans Affairs]]
| name23a = {{{Veterans Affairs|}}}
| term23a = {{{Veterans Affairs date|{{{Veterans Affairs start}}}–{{{Veterans Affairs end|}}} }}}
| name23b = {{{Veterans Affairs 2|}}}
| term23b = {{{Veterans Affairs date 2|{{{Veterans Affairs start 2}}}–{{{Veterans Affairs end 2|}}} }}}
| name23c = {{{Veterans Affairs 3|}}}
| term23c = {{{Veterans Affairs date 3|{{{Veterans Affairs start 3}}}–{{{Veterans Affairs end 3|}}} }}}
| name23d = {{{Veterans Affairs 4|}}}
| term23d = {{{Veterans Affairs date 4|{{{Veterans Affairs start 4}}}–{{{Veterans Affairs end 4|}}} }}}
| name23e = {{{Veterans Affairs 5|}}}
| term23e = {{{Veterans Affairs date 5|{{{Veterans Affairs start 5}}}–{{{Veterans Affairs end 5|}}} }}}
| name23f = {{{Veterans Affairs 6|}}}
| term23f = {{{Veterans Affairs date 6|{{{Veterans Affairs start 6}}}–{{{Veterans Affairs end 6|}}} }}}
| name23g = {{{Veterans Affairs 7|}}}
| term23g = {{{Veterans Affairs date 7|{{{Veterans Affairs start 7}}}–{{{Veterans Affairs end 7|}}} }}}
| name23h = {{{Veterans Affairs 8|}}}
| term23h = {{{Veterans Affairs date 8|{{{Veterans Affairs start 8}}}–{{{Veterans Affairs end 8|}}} }}}
| office24 = [[United States Secretary of Homeland Security|Secretary of Homeland Security]]
| name24a = {{{Homeland Security|}}}
| term24a = {{{Homeland Security date|{{{Homeland Security start}}}–{{{Homeland Security end|}}} }}}
| name24b = {{{Homeland Security 2|}}}
| term24b = {{{Homeland Security date 2|{{{Homeland Security start 2}}}–{{{Homeland Security end 2|}}} }}}
| name24c = {{{Homeland Security 3|}}}
| term24c = {{{Homeland Security date 3|{{{Homeland Security start 3}}}–{{{Homeland Security end 3|}}} }}}
| name24d = {{{Homeland Security 4|}}}
| term24d = {{{Homeland Security date 4|{{{Homeland Security start 4}}}–{{{Homeland Security end 4|}}} }}}
| name24e = {{{Homeland Security 5|}}}
| term24e = {{{Homeland Security date 5|{{{Homeland Security start 5}}}–{{{Homeland Security end 5|}}} }}}
| name24f = {{{Homeland Security 6|}}}
| term24f = {{{Homeland Security date 6|{{{Homeland Security start 6}}}–{{{Homeland Security end 6|}}} }}}
| name24g = {{{Homeland Security 7|}}}
| term24g = {{{Homeland Security date 7|{{{Homeland Security start 7}}}–{{{Homeland Security end 7|}}} }}}
| name24h = {{{Homeland Security 8|}}}
| term24h = {{{Homeland Security date 8|{{{Homeland Security start 8}}}–{{{Homeland Security end 8|}}} }}}
| office25 = [[Administrator of the Environmental Protection Agency|Administrator of the<br />Environmental Protection Agency]]
| name25a = {{{Environmental Protection|}}}
| term25a = {{{Environmental Protection date|{{{Environmental Protection start}}}–{{{Environmental Protection end|}}} }}}
| name25b = {{{Environmental Protection 2|}}}
| term25b = {{{Environmental Protection date 2|{{{Environmental Protection start 2}}}–{{{Environmental Protection end 2|}}} }}}
| name25c = {{{Environmental Protection 3|}}}
| term25c = {{{Environmental Protection date 3|{{{Environmental Protection start 3}}}–{{{Environmental Protection end 3|}}} }}}
| name25d = {{{Environmental Protection 4|}}}
| term25d = {{{Environmental Protection date 4|{{{Environmental Protection start 4}}}–{{{Environmental Protection end 4|}}} }}}
| name25e = {{{Environmental Protection 5|}}}
| term25e = {{{Environmental Protection date 5|{{{Environmental Protection start 5}}}–{{{Environmental Protection end 5|}}} }}}
| name25f = {{{Environmental Protection 6|}}}
| term25f = {{{Environmental Protection date 6|{{{Environmental Protection start 6}}}–{{{Environmental Protection end 6|}}} }}}
| name25g = {{{Environmental Protection 7|}}}
| term25g = {{{Environmental Protection date 7|{{{Environmental Protection start 7}}}–{{{Environmental Protection end 7|}}} }}}
| name25h = {{{Environmental Protection 8|}}}
| term25h = {{{Environmental Protection date 8|{{{Environmental Protection start 8}}}–{{{Environmental Protection end 8|}}} }}}
| office26 = [[Office of Management and Budget|Director of the<br />Bureau of the Budget]]
| name26a = {{{Bureau of the Budget|}}}
| term26a = {{{Bureau of the Budget date|{{{Bureau of the Budget start}}}–{{{Bureau of the Budget end|}}} }}}
| name26b = {{{Bureau of the Budget 2|}}}
| term26b = {{{Bureau of the Budget date 2|{{{Bureau of the Budget start 2}}}–{{{Bureau of the Budget end 2|}}} }}}
| name26c = {{{Bureau of the Budget 3|}}}
| term26c = {{{Bureau of the Budget date 3|{{{Bureau of the Budget start 3}}}–{{{Bureau of the Budget end 3|}}} }}}
| name26d = {{{Bureau of the Budget 4|}}}
| term26d = {{{Bureau of the Budget date 4|{{{Bureau of the Budget start 4}}}–{{{Bureau of the Budget end 4|}}} }}}
| office27 = [[Office of Management and Budget|Director of the Office of<br />Management and Budget]]
| name27a = {{{Management and Budget|}}}
| term27a = {{{Management and Budget date|{{{Management and Budget start}}}–{{{Management and Budget end|}}} }}}
| name27b = {{{Management and Budget 2|}}}
| term27b = {{{Management and Budget date 2|{{{Management and Budget start 2}}}–{{{Management and Budget end 2|}}} }}}
| name27c = {{{Management and Budget 3|}}}
| term27c = {{{Management and Budget date 3|{{{Management and Budget start 3}}}–{{{Management and Budget end 3|}}} }}}
| name27d = {{{Management and Budget 4|}}}
| term27d = {{{Management and Budget date 4|{{{Management and Budget start 4}}}–{{{Management and Budget end 4|}}} }}}
| name27e = {{{Management and Budget 5|}}}
| term27e = {{{Management and Budget date 5|{{{Management and Budget start 5}}}–{{{Management and Budget end 5|}}} }}}
| name27f = {{{Management and Budget 6|}}}
| term27f = {{{Management and Budget date 6|{{{Management and Budget start 6}}}–{{{Management and Budget end 6|}}} }}}
| name27g = {{{Management and Budget 7|}}}
| term27g = {{{Management and Budget date 7|{{{Management and Budget start 7}}}–{{{Management and Budget end 7|}}} }}}
| name27h = {{{Management and Budget 8|}}}
| term27h = {{{Management and Budget date 8|{{{Management and Budget start 8}}}–{{{Management and Budget end 8|}}} }}}
| office28 = [[Director of Central Intelligence|Director of Central Intelligence]]
| name28a = {{{DCI|}}}
| term28a = {{{DCI date|{{{DCI start}}}–{{{DCI end|}}} }}}
| name28b = {{{DCI 2|}}}
| term28b = {{{DCI date 2|{{{DCI start 2}}}–{{{DCI end 2|}}} }}}
| name28c = {{{DCI 3|}}}
| term28c = {{{DCI date 3|{{{DCI start 3}}}–{{{DCI end 3|}}} }}}
| office29 = [[Director of National Intelligence|Director of National Intelligence]]
| name29a = {{{DNI|}}}
| term29a = {{{DNI date|{{{DNI start}}}–{{{DNI end|}}} }}}
| name29b = {{{DNI 2|}}}
| term29b = {{{DNI date 2|{{{DNI start 2}}}–{{{DNI end 2|}}} }}}
| name29c = {{{DNI 3|}}}
| term29c = {{{DNI date 3|{{{DNI start 3}}}–{{{DNI end 3|}}} }}}
| name29d = {{{DNI 4|}}}
| term29d = {{{DNI date 4|{{{DNI start 4}}}–{{{DNI end 4|}}} }}}
| office30 = [[Director of the Central Intelligence Agency|Director of the<br />Central Intelligence Agency]]
| name30a = {{{CIA|}}}
| term30a = {{{CIA date|{{{CIA start}}}–{{{CIA end|}}} }}}
| name30b = {{{CIA 2|}}}
| term30b = {{{CIA date 2|{{{CIA start 2}}}–{{{CIA end 2|}}} }}}
| name30c = {{{CIA 3|}}}
| term30c = {{{CIA date 3|{{{CIA start 3}}}–{{{CIA end 3|}}} }}}
| name30d = {{{CIA 4|}}}
| term30d = {{{CIA date 4|{{{CIA start 4}}}–{{{CIA end 4|}}} }}}
| office31 = [[Office of the United States Trade Representative|United States Trade Representative]]
| name31a = {{{Trade|}}}
| term31a = {{{Trade date|{{{Trade start}}}–{{{Trade end|}}} }}}
| name31b = {{{Trade 2|}}}
| term31b = {{{Trade date 2|{{{Trade start 2}}}–{{{Trade end 2|}}} }}}
| name31c = {{{Trade 3|}}}
| term31c = {{{Trade date 3|{{{Trade start 3}}}–{{{Trade end 3|}}} }}}
| name31d = {{{Trade 4|}}}
| term31d = {{{Trade date 4|{{{Trade start 4}}}–{{{Trade end 4|}}} }}}
| office32 = [[List of ambassadors of the United States to the United Nations|Ambassador to the United Nations]]
| name32a = {{{Ambassador to the United Nations|}}}
| term32a = {{{Ambassador to the United Nations date|{{{Ambassador to the United Nations start}}}–{{{Ambassador to the United Nations end|}}} }}}
| name32b = {{{Ambassador to the United Nations 2|}}}
| term32b = {{{Ambassador to the United Nations date 2|{{{Ambassador to the United Nations start 2}}}–{{{Ambassador to the United Nations end 2|}}} }}}
| name32c = {{{Ambassador to the United Nations 3|}}}
| term32c = {{{Ambassador to the United Nations date 3|{{{Ambassador to the United Nations start 3}}}–{{{Ambassador to the United Nations end 3|}}} }}}
| name32d = {{{Ambassador to the United Nations 4|}}}
| term32d = {{{Ambassador to the United Nations date 4|{{{Ambassador to the United Nations start 4}}}–{{{Ambassador to the United Nations end 4|}}} }}}
| office33 = [[Mutual Security Agency|Director of the<br />Mutual Security Agency]]
| name33a = {{{Mutual Security Agency|}}}
| term33a = {{{Mutual Security Agency date|{{{Mutual Security Agency start}}}–{{{Mutual Security Agency end|}}} }}}
| office34 = [[National Security Advisor (United States)|National Security Advisor]]
| name34a = {{{National Security|}}}
| term34a = {{{National Security date|{{{National Security start}}}–{{{National Security end|}}} }}}
| name34b = {{{National Security 2|}}}
| term34b = {{{National Security date 2|{{{National Security start 2}}}–{{{National Security end 2|}}} }}}
| name34c = {{{National Security 3|}}}
| term34c = {{{National Security date 3|{{{National Security start 3}}}–{{{National Security end 3|}}} }}}
| name34d = {{{National Security 4|}}}
| term34d = {{{National Security date 4|{{{National Security start 4}}}–{{{National Security end 4|}}} }}}
| office35 = [[Council of Economic Advisers|Chair of the<br />Council of Economic Advisers]]
| name35a = {{{Economic Advisers|}}}
| term35a = {{{Economic Advisers date|{{{Economic Advisers start}}}–{{{Economic Advisers end|}}} }}}
| name35b = {{{Economic Advisers 2|}}}
| term35b = {{{Economic Advisers date 2|{{{Economic Advisers start 2}}}–{{{Economic Advisers end 2|}}} }}}
| name35c = {{{Economic Advisers 3|}}}
| term35c = {{{Economic Advisers date 3|{{{Economic Advisers start 3}}}–{{{Economic Advisers end 3|}}} }}}
| name35d = {{{Economic Advisers 4|}}}
| term35d = {{{Economic Advisers date 4|{{{Economic Advisers start 4}}}–{{{Economic Advisers end 4|}}} }}}
| office36 = [[Administrator of the Small Business Administration|Administrator of the<br />Small Business Administration]]
| name36a = {{{Administrator of the Small Business Administration|}}}
| term36a = {{{Administrator of the Small Business Administration date|{{{Administrator of the Small Business Administration start}}}–{{{Administrator of the Small Business Administration end|}}} }}}
| name36b = {{{Administrator of the Small Business Administration 2|}}}
| term36b = {{{Administrator of the Small Business Administration date 2|{{{Administrator of the Small Business Administration start 2}}}–{{{Administrator of the Small Business Administration end 2|}}} }}}
| name36c = {{{Administrator of the Small Business Administration 3|}}}
| term36c = {{{Administrator of the Small Business Administration date 3|{{{Administrator of the Small Business Administration start 3}}}–{{{Administrator of the Small Business Administration end 3|}}} }}}
| name36d = {{{Administrator of the Small Business Administration 4|}}}
| term36d = {{{Administrator of the Small Business Administration date 4|{{{Administrator of the Small Business Administration start 4}}}–{{{Administrator of the Small Business Administration end 4|}}} }}}
| office37 = [[Office of Defense Mobilization|Director of the Office of<br />Defense Mobilization]]
| name37a = {{{Office of Defense Mobilization|}}}
| term37a = {{{Office of Defense Mobilization date|{{{Office of Defense Mobilization start}}}–{{{Office of Defense Mobilization end|}}} }}}
| name37b = {{{Office of Defense Mobilization 2|}}}
| term37b = {{{Office of Defense Mobilization date 2|{{{Office of Defense Mobilization start 2}}}–{{{Office of Defense Mobilization end 2|}}} }}}
| office38 = [[Federal Civil Defense Administration|Administrator of the Federal<br />Civil Defense Administration]]
| name38a = {{{Federal Civil Defense Administration|}}}
| term38a = {{{Federal Civil Defense Administration date|{{{Federal Civil Defense Administration start}}}–{{{Federal Civil Defense Administration end|}}} }}}
| name38b = {{{Federal Civil Defense Administration 2|}}}
| term38b = {{{Federal Civil Defense Administration date 2|{{{Federal Civil Defense Administration start 2}}}–{{{Federal Civil Defense Administration end 2|}}} }}}
| office39 = [[Office of Civil and Defense Mobilization|Director of the Office of<br />Civil and Defense Mobilization]]
| name39a = {{{Office of Civil and Defense Mobilization|}}}
| term39a = {{{Office of Civil and Defense Mobilization date|{{{Office of Civil and Defense Mobilization start}}}–{{{Office of Civil and Defense Mobilization end|}}} }}}
| office40 = [[Federal Emergency Management Agency|Director of the Federal<br />Emergency Management Agency]]
| name40a = {{{FEMA|}}}
| term40a = {{{FEMA date|{{{FEMA start}}}–{{{FEMA end|}}} }}}
| office41 = [[United States Atomic Energy Commission|Chair of the<br />Atomic Energy Commission]]
| name41a = {{{Atomic Energy Commission|}}}
| term41a = {{{Atomic Energy Commission date|{{{Atomic Energy Commission start}}}–{{{Atomic Energy Commission end|}}} }}}
| name41b = {{{Atomic Energy Commission 2|}}}
| term41b = {{{Atomic Energy Commission date 2|{{{Atomic Energy Commission start 2}}}–{{{Atomic Energy Commission end 2|}}} }}}
| name41c = {{{Atomic Energy Commission 3|}}}
| term41c = {{{Atomic Energy Commission date 3|{{{Atomic Energy Commission start 3}}}–{{{Atomic Energy Commission end 3|}}} }}}
| office42 = [[Office of National Drug Control Policy|Director of the Office of<br />National Drug Control Policy]]
| name42a = {{{National Drug Control|}}}
| term42a = {{{National Drug Control date|{{{National Drug Control start}}}–{{{National Drug Control end|}}} }}}
| name42b = {{{National Drug Control 2|}}}
| term42b = {{{National Drug Control date 2|{{{National Drug Control start 2}}}–{{{National Drug Control end 2|}}} }}}
| name42c = {{{National Drug Control 3|}}}
| term42c = {{{National Drug Control date 3|{{{National Drug Control start 3}}}–{{{National Drug Control end 3|}}} }}}
| name42d = {{{National Drug Control 4|}}}
| term42d = {{{National Drug Control date 4|{{{National Drug Control start 4}}}–{{{National Drug Control end 4|}}} }}}
| office43 = [[Office of Science and Technology Policy|Director of the Office of<br />Science and Technology Policy]]
| name43a = {{{Science and Technology Policy|}}}
| term43a = {{{Science and Technology Policy date|{{{Science and Technology Policy start}}}–{{{Science and Technology Policy end|}}} }}}
| name43b = {{{Science and Technology Policy 2|}}}
| term43b = {{{Science and Technology Policy date 2|{{{Science and Technology Policy start 2}}}–{{{Science and Technology Policy end 2|}}} }}}
| name43c = {{{Science and Technology Policy 3|}}}
| term43c = {{{Science and Technology Policy date 3|{{{Science and Technology Policy start 3}}}–{{{Science and Technology Policy end 3|}}} }}}
| name43d = {{{Science and Technology Policy 4|}}}
| term43d = {{{Science and Technology Policy date 4|{{{Science and Technology Policy start 4}}}–{{{Science and Technology Policy end 4|}}} }}}
| office44 = [[White House Chief of Staff|Chief of Staff]]
| name44a = {{{Chief of Staff|}}}
| term44a = {{{Chief of Staff date|{{{Chief of Staff start}}}–{{{Chief of Staff end|}}} }}}
| name44b = {{{Chief of Staff 2|}}}
| term44b = {{{Chief of Staff date 2|{{{Chief of Staff start 2}}}–{{{Chief of Staff end 2|}}} }}}
| name44c = {{{Chief of Staff 3|}}}
| term44c = {{{Chief of Staff date 3|{{{Chief of Staff start 3}}}–{{{Chief of Staff end 3|}}} }}}
| name44d = {{{Chief of Staff 4|}}}
| term44d = {{{Chief of Staff date 4|{{{Chief of Staff start 4}}}–{{{Chief of Staff end 4|}}} }}}
| name44e = {{{Chief of Staff 5|}}}
| term44e = {{{Chief of Staff date 5|{{{Chief of Staff start 5}}}–{{{Chief of Staff end 5|}}} }}}
| name44f = {{{Chief of Staff 6|}}}
| term44f = {{{Chief of Staff date 6|{{{Chief of Staff start 6}}}–{{{Chief of Staff end 6|}}} }}}
| name44g = {{{Chief of Staff 7|}}}
| term44g = {{{Chief of Staff date 7|{{{Chief of Staff start 7}}}–{{{Chief of Staff end 7|}}} }}}
| name44h = {{{Chief of Staff 8|}}}
| term44h = {{{Chief of Staff date 8|{{{Chief of Staff start 8}}}–{{{Chief of Staff end 8|}}} }}}
| office45 = [[White House Deputy Chief of Staff|Deputy Chief of Staff]]
| name45a = {{{Deputy Chief of Staff|}}}
| term45a = {{{Deputy Chief of Staff date|{{{Deputy Chief of Staff start}}}–{{{Deputy Chief of Staff end|}}} }}}
| name45b = {{{Deputy Chief of Staff 2|}}}
| term45b = {{{Deputy Chief of Staff date 2|{{{Deputy Chief of Staff start 2}}}–{{{Deputy Chief of Staff end 2|}}} }}}
| office46 = [[White House Cabinet Secretary|Cabinet Secretary]]
| name46a = {{{Cabinet Secretary|}}}
| term46a = {{{Cabinet Secretary date|{{{Cabinet Secretary start}}}–{{{Cabinet Secretary end|}}} }}}
| name46b = {{{Cabinet Secretary 2|}}}
| term46b = {{{Cabinet Secretary date 2|{{{Cabinet Secretary start 2}}}–{{{Cabinet Secretary end 2|}}} }}}
| office47 = [[Counselor to the President|Counselor to the President]]
| name47a = {{{Counselor to the President|}}}
| term47a = {{{Counselor to the President date|{{{Counselor to the President start}}}–{{{Counselor to the President end|}}} }}}
| name47b = {{{Counselor to the President 2|}}}
| term47b = {{{Counselor to the President date 2|{{{Counselor to the President start 2}}}–{{{Counselor to the President end 2|}}} }}}
| name47c = {{{Counselor to the President 3|}}}
| term47c = {{{Counselor to the President date 3|{{{Counselor to the President start 3}}}–{{{Counselor to the President end 3|}}} }}}
| name47d = {{{Counselor to the President 4|}}}
| term47d = {{{Counselor to the President date 4|{{{Counselor to the President start 4}}}–{{{Counselor to the President end 4|}}} }}}
| name47e = {{{Counselor to the President 5|}}}
| term47e = {{{Counselor to the President date 5|{{{Counselor to the President start 5}}}–{{{Counselor to the President end 5|}}} }}}
| name47f = {{{Counselor to the President 6|}}}
| term47f = {{{Counselor to the President date 6|{{{Counselor to the President start 6}}}–{{{Counselor to the President end 6|}}} }}}
| name47g = {{{Counselor to the President 7|}}}
| term47g = {{{Counselor to the President date 7|{{{Counselor to the President start 7}}}–{{{Counselor to the President end 7|}}} }}}
| name47h = {{{Counselor to the President 8|}}}
| term47h = {{{Counselor to the President date 8|{{{Counselor to the President start 8}}}–{{{Counselor to the President end 8|}}} }}}
| office48 = [[White House Counsel|White House Counsel]]
| name48a = {{{White House Counsel|}}}
| term48a = {{{White House Counsel date|{{{White House Counsel start}}}–{{{White House Counsel end|}}} }}}
| name48b = {{{White House Counsel 2|}}}
| term48b = {{{White House Counsel date 2|{{{White House Counsel start 2}}}–{{{White House Counsel end 2|}}} }}}
| name48c = {{{White House Counsel 3|}}}
| term48c = {{{White House Counsel date 3|{{{White House Counsel start 3}}}–{{{White House Counsel end 3|}}} }}}
| name48d = {{{White House Counsel 4|}}}
| term48d = {{{White House Counsel date 4|{{{White House Counsel start 4}}}–{{{White House Counsel end 4|}}} }}}
| belowstyle = font-size: smaller; text-align:center; max-width:40em
| below = {{{Footnotes|}}}
}}<noinclude>
{{Documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
bd62f33d70f4a13b5e44e1abffdea32650f455c8
Template:Country data France
10
1186
2515
2022-11-21T21:23:02Z
w>Paine Ellsworth
0
Undid revision 1069486652 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv per talk page
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = France
| flag alias = Flag of France.svg
| flag alias-1790 = Flag of France (1790–1794).svg
| flag alias-1794 = Flag of France (1794–1815, 1830–1958).svg
| flag alias-1814 = Flag of the Kingdom of France (1814-1830).svg
| flag alias-1830 = Flag of France (1794–1815, 1830–1958).svg
| flag alias-1848 = Drapeau france 1848.svg
| flag alias-1848a = Drapeau france 1848.svg
| flag alias-1848b = Flag of France (1794–1815, 1830–1958).svg
| flag alias-1974 = Flag of France (lighter variant).svg
| flag alias-naval = Civil and Naval Ensign of France.svg
| flag alias-naval-1790 = Flag of French-Navy-Revolution.svg
| flag alias-air force = Flag of France.svg
| link alias-air force = French Air and Space Force
| flag alias-coast guard = French Maritime Gendarmerie racing stripe.svg
| border-coast guard =
| link alias-coast guard = French Maritime Gendarmerie
| flag alias-army = Flag of France.svg
| link alias-army = French Army
| link alias-naval = French Navy
| flag alias-navy = Civil and Naval Ensign of France.svg
| link alias-navy = French Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1790
| var2 = 1794
| var3 = 1814
| var4 = 1830
| var5 = 1848a
| var6 = 1848b
| var7 = 1974
| var8 = naval-1790
| redir1 = FRA
| related1 = Kingdom of France
| related2 = Free France
</noinclude>
}}
6489f5636282c8d82ad1b5a74115901b2a150efe
Template:Country data Ireland
10
1217
2546
2022-11-24T09:52:50Z
w>Spike 'em
0
Undid revision 1123540616 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) I think this breaks the desired aliasing to Republic of Ireland using this template as a shortcut
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| hatnote = {{Hatnote|This template contains data that applies to the [[Ireland|entire island]]. For the [[Republic of Ireland|sovereign state]], see [[Template:Country data Republic of Ireland]].}}
| alias = {{#if:{{{altvar|}}}|Ireland|{{#if:{{{variant|}}}|Ireland|Republic of Ireland}}}}
| shortname alias = Ireland
| flag alias = Flag of Ireland.svg
| flag alias-1783 = Saint Patrick's Saltire.svg
| flag alias-4prov = Four Provinces Flag.svg
| flag alias-green = Green harp flag of Ireland.svg
| flag alias-football = Saint Patrick's Saltire.svg
| link alias-football = Ireland national football team (1882–1950)
| flag alias-hockey = Flag of Ireland hockey team.svg
| flag alias-field hockey = Flag of Ireland hockey team.svg
| {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = Ireland Wolfhounds
| flag alias-rugby union = IRFU flag.svg
| flag alias-rugby sevens = IRFU flag.svg
| flag alias-rugby league = Four Provinces Flag.svg
| flag alias-cricket = Cricket Ireland flag.svg
| link alias-cricket = Ireland {{{mw|}}} {{{age|}}} cricket team
| flag alias-quidditch = Flag of Quidditch Ireland.svg
| flag alias-air force=Flag of the Irish Air Corps.svg
| link alias-air force=Irish Air Corps
| link alias-naval=Irish Naval Service
| flag alias-military=Flag_of_the_Irish_Defence_Forces.svg
| link alias-military=Irish Defence Forces
| flag alias-army=Flag of the Irish Defence Forces.svg
| link alias-army=Irish Army
| flag alias-navy=Irish Naval Service Colour.svg
| link alias-navy=Irish Naval Service
| flag alias-coast guard=Coast Guard Flag (Ireland).svg
| link alias-coast guard=Irish Coast Guard
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1783
| var2 = green
| var3 = 4prov
| var4 = football
| var5 = rugby union
| var6 = hockey
| var7 = cricket
| var8 = quidditch
| redir1 = IRE
| redir2 = EIR
| related1 = Republic of Ireland
| related2 = Southern Ireland
| related3 = Kingdom of Ireland
| related4 = Lordship of Ireland
| related5 = Irish Free State
</noinclude>
}}
e5e1f2f51926d8f51389937da62183021c07cb35
Template:Slink
10
1388
2723
2022-11-26T02:46:04Z
w>ClydeFranklin
0
Modifying [[WP:RCAT|redirect categories]] using [[User:Wugapodes/Capricorn|Capricorn ♑]]
wikitext
text/x-wiki
#REDIRECT [[Template:Section link]]
{{Redirect category shell|
{{R from template shortcut}}
}}
0f719181783528f8d6d59af515ea2d7e8fb43c92
Template:Population Germany
10
1434
2769
2022-11-26T12:11:32Z
w>Markussep
0
added Hamburg
wikitext
text/x-wiki
<includeonly>{{#switch: {{str left|{{{key|}}}|2}}
| 01 = {{Metadata Population DE-SH|{{{key}}}|{{{datref|}}}}}
| 02 = {{Metadata Population DE-HH|{{{key}}}|{{{datref|}}}}}
| 03 = {{Metadata Population DE-NI|{{{key}}}|{{{datref|}}}}}
| 04 = {{Metadata Population DE-HB|{{{key}}}|{{{datref|}}}}}
| 05 = {{Metadata Population DE-NW|{{{key}}}|{{{datref|}}}}}
| 06 = {{Metadata Population DE-HE|{{{key}}}|{{{datref|}}}}}
| 07 = {{Metadata Population DE-RP|{{{key}}}|{{{datref|}}}}}
| 08 = {{Metadata Population DE-BW|{{{key}}}|{{{datref|}}}}}
| 09 = {{Metadata Population DE-BY|{{{key}}}|{{{datref|}}}}}
| 10 = {{Metadata Population DE-SL|{{{key}}}|{{{datref|}}}}}
| 11 = 3431675
| 12 = {{Metadata Population DE-BB|{{{key}}}|{{{datref|}}}}}
| 13 = {{Metadata Population DE-MV|{{{key}}}|{{{datref|}}}}}
| 14 = {{Metadata Population DE-SN|{{{key}}}|{{{datref|}}}}}
| 15 = {{Metadata Population DE-ST|{{{key}}}|{{{datref|}}}}}
| 16 = {{Metadata Population DE-TH|{{{key}}}|{{{datref|}}}}}
| #default = "key error"
}}</includeonly><noinclude>{{documentation}}</noinclude>
8a0f8dd2ee6ca16dae5edd33d04f8975fe4af589
Template:Suppress categories
10
68
131
2022-11-26T18:00:01Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Suppress categories]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2612 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#invoke:Suppress categories|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
1f9c6065201d31d4c70f982129b5babbb809ae8c
Template:ISBN
10
1095
2389
2022-11-27T20:08:59Z
wikipedia>GKFX
0
Update from sandbox: remove unnecessary {{trim}} and {{#if:}}, and make more readable.
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{Catalog lookup link
|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|
article-link={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||{{#ifeq:{{yesno-yes|{{{link|}}}}}|no||ISBN (identifier)}}}}
|article-name={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||ISBN}}
|link-prefix=[Special:BookSources/
|item-prefix={{!}}
|item-postfix=]
|list-leadout={{{leadout|}}}
}}{{#ifeq:{{yesno-no|{{{invalid1|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{1|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{2|}}}
|{{#ifeq:{{yesno-no|{{{invalid2|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{2|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{3|}}}
|{{#ifeq:{{yesno-no|{{{invalid3|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{3|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{4|}}}
|{{#ifeq:{{yesno-no|{{{invalid4|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{4|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{5|}}}
|{{#ifeq:{{yesno-no|{{{invalid5|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{5|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{6|}}}
|{{#ifeq:{{yesno-no|{{{invalid6|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{6|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{7|}}}
|{{#ifeq:{{yesno-no|{{{invalid7|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{7|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{8|}}}
|{{#ifeq:{{yesno-no|{{{invalid8|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{8|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{9|}}}
|{{#ifeq:{{yesno-no|{{{invalid9|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{9|}}}|template_name={{{template_name|ISBN}}}}}}}}}}}}}}}}}}}}}}}|
{{error-small|Parameter error in {{tl|ISBN}}: Missing [[ISBN]].}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using ISBN template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:ISBN]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | invalid1 | invalid2 | invalid3 | invalid4 | invalid5 | invalid6 | invalid7 | invalid8 | invalid9 | leadout | link | plainlink |template_name }}</includeonly><noinclude>{{documentation}}<!-- Add categories and interwiki lines to the /doc subpage, not here! --></noinclude>
113f1e5cb33437d5e9ada6d1e37a951670fae7d9
Template:Buildings and structures infobox templates
10
1480
2815
2022-11-28T01:59:50Z
w>Bluealbion
0
wikitext
text/x-wiki
{{Navbox
| name = Buildings and structures infobox templates
| state = {{{state<includeonly>|expanded</includeonly>}}}
| bodyclass = hlist
| title = {{c|Buildings and structures infobox templates}}
| above = '''[[Template:Infobox building|Infobox building]]'''
| group1 = Buildings
| list1 =
* [[Template:Infobox airport|airport]]
* [[Template:Infobox archives|archives]]
* [[Template:Infobox brewery|brewery]]
* [[Template:Infobox casino|casino]]
* [[Template:Infobox convention center|convention center]]
* [[Template:Infobox desalination plant|desalination plant]]
* [[Template:Infobox factory|factory]]
* [[Template:Infobox hospital|hospital]]
* [[Template:Infobox housing project|housing project]]
* [[Template:Infobox hut|hut]]
* [[Template:Infobox library|library]]
* [[Template:Infobox lighthouse|lighthouse]]
* [[Template:Infobox mill building|mill building]]
* [[Template:Infobox museum|museum]]
* [[Template:Infobox observatory|observatory]]
* [[Template:Infobox oil refinery|oil refinery]]
* [[Template:Infobox power station|power station]]
* [[Template:Infobox prison|prison]]
* [[Template:Infobox religious building|religious building]]
** [[Template:Infobox church|church]]
** [[Template:Infobox Hindu temple|Hindu temple]]
** [[Template:Infobox LDS Temple|LDS Temple]]
** [[Template:Infobox monastery|monastery]]
* [[Template:Infobox restaurant|restaurant]]
* [[Template:Infobox school|school]]
* [[Template:Infobox shopping mall|shopping mall]]<!--(can be within (single) building/complex)-->
* [[Template:Infobox station|station]]
* [[Template:Infobox venue|venue]]
<!----
Too specific, too general, or not intrinsically/originally a building?:
* [[Template:Infobox Disney resort|Disney resort]]
----->
| group2 = Structures
| list2 =
* [[Template:Infobox artwork|artwork]]
**including statues
* [[Template:Infobox bell|bell]]
* [[Template:Infobox bridge|bridge]]
** [[Template:Infobox bridge type|type]]
* [[Template:Infobox dam|dam]]
* [[Template:Infobox fishery|fishery]]
* [[Template:Infobox future infrastructure project|future infrastructure project]]
* [[Template:Infobox historic site|historic site]]
* [[Template:Infobox laboratory|laboratory]]
* [[Template:Infobox military installation|military installation]]
* [[Template:Infobox monument|monument]]
** [[Template:Infobox military memorial|military memorial]]
* [[Template:Infobox pier|pier]]
* [[Template:Infobox pipeline|pipeline]]
* [[Template:Infobox power transmission line|power transmission line]]
* [[Template:Infobox pyramid|pyramid]]
* [[Template:Infobox roller coaster|roller coaster]]
** [[Template:Infobox dual roller coaster|dual]]
* [[Template:Infobox room|room]]
* [[Template:Infobox swimming pool|swimming pool]]
* [[Template:Infobox telescope|telescope]]
* [[Template:Infobox transmitter|transmitter]]
* [[Template:Infobox tunnel|tunnel]]
* [[Template:Infobox urban development project|urban development project]]
* [[Template:Infobox water ride|water ride]]
* [[Template:Infobox windmill|windmill]]
<!----
Too specific, too general, or not intrinsically/originally a building?:
* [[Template:Infobox Maginot Line|Maginot Line]]
* [[Template:Infobox urban feature|urban feature]]
----->
}}<noinclude>
{{Documentation
| content =
{{Collapsible option |default=expanded}}
[[Category:Buildings and structures infobox templates| ]]
[[Category:Documentation see also templates]]
[[Category:Related-topic templates]]
}}<!--(end Documentation)
--></noinclude>
c6425acdc2a31aa15c8da59b6e78f59998ba577e
Template:Edit templates
10
1336
2671
2022-11-30T00:00:24Z
w>Hairy Dude
0
rm excess dashes. Only need one per line
wikitext
text/x-wiki
<div>[{{view|Template:Edit templates|edit}}] Compare different edit templates:</div>
* {{tl|Ed}} — plain-style edit link surrounded by <nowiki><small></nowiki> tags, specifically for templates only
* {{tl|Ed right}} — plain-style edit link surrounded by <nowiki><small></nowiki> tags and <u>aligned to right of page</u>, specifically for templates only
* {{tl|Edit}} — plain-style edit link, applicable to all Wikipedia namespaces
* {{tl|Edit section}} — edit link surrounded by <nowiki><div></nowiki> tags by default which can specify which section to edit on a page, applicable to all Wikipedia namespaces
* {{tl|Vedit}} — plain-style edit link which edit with the [[Wikipedia:VisualEditor]], applicable to all Wikipedia namespaces
Templates with view, talk and edit links:
* {{tl|Navbar}} — navigation bar with configurable caption and view·talk·edit links, specifically for templates only
* {{tl|View}} — navbar-style view·talk·edit links, specifically for templates only
* {{tl|VTE}} & {{tl|V}} — navbar-style V·T·E links (i.e. view·talk·edit links in short forms), specifically for templates only<noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
</noinclude>
8029caf34e44ffc8200744c8ebf56ec86f65aab9
Module:Icon/data
828
981
2156
2022-12-02T06:35:43Z
wikipedia>Paine Ellsworth
0
per edit request on talk page - include icons for Mediawiki, Phabricator and Wikitech
Scribunto
text/plain
-- This module stores icon data for [[Module:Icon]].
--------------------------------------------------------------------------------
-- Icon data
--------------------------------------------------------------------------------
local data = {
fa = {
image = "Featured article star.svg",
tooltip = "Featured article",
link = true,
},
far = {
image = "Cscr-star piece.png",
tooltip = "Featured article review",
link = true,
},
farc = {
image = "Cscr-star piece.png",
tooltip = "Featured article removal candidate",
link = true,
},
ffa = {
aliases = {"dfa"},
image = "Featured article star - cross.svg",
tooltip = "Former featured article",
link = true,
},
fac = {
aliases = {"fan"},
image = "Cscr-candidate.svg",
tooltip = "Featured article candidate",
link = true,
},
ffac = {
aliases = {"nofa"},
image = "Featured article star - cross.svg",
tooltip = "Failed featured article candidate",
link = true,
},
fl = {
image = "Featured article star.svg",
tooltip = "Featured list",
link = true,
},
flrc = {
aliases = {"flr"},
image = "Cscr-star piece.png",
tooltip = "Featured list removal candidate",
link = true,
},
ffl = {
aliases = {"dfl"},
image = "Cscr-featured-strike.svg",
tooltip = "Former featured list",
link = true,
},
flc = {
aliases = {"fln"},
image = "Cscr-candidate.svg",
tooltip = "Featured list candidate",
link = true,
},
fflc = {
aliases = {"nofl"},
image = "Cscr-former.svg",
tooltip = "Failed featured list candidate",
link = true,
},
a = {
image = "Symbol a class.svg",
tooltip = "A-Class article",
link = true,
},
dac = {
aliases = {"daa"},
image = "Symbol unsupport A vote.svg",
tooltip = "Demoted A-Class article",
link = true,
},
acc = {
aliases = {"acn", "aac"},
image = "A candidate.svg",
tooltip = "A-Class article candidate",
link = true,
},
noac = {
aliases = {"faac"},
image = "Symbol unsupport A vote.svg",
tooltip = "Failed A-Class article candidate",
link = true,
},
ga = {
image = "Symbol support vote.svg",
tooltip = "Good article",
link = false,
},
gar = {
image = "GA Candidate Neutral vote(ChaosNil).svg",
tooltip = "Good article reassessment",
link = false,
},
dga = {
image = "Symbol unsupport vote.svg",
tooltip = "Delisted good article",
link = false,
},
gan = {
aliases = {"gac"},
image = "GA candidate.svg",
tooltip = "Good article nominee",
link = false,
},
ga2 = {
image = "Symbol neutral vote.svg",
tooltip = "Good article, 2nd opinion",
link = false,
},
gah = {
image = "Symbol wait.svg",
tooltip = "Good article on hold",
link = false,
},
fgan = {
aliases = {"noga", "gaf", "gf"},
image = "Symbol oppose vote.svg",
tooltip = "Failed good article nominee",
link = false,
},
fp = {
image = "Cscr-featured.svg",
tooltip = "Featured picture",
link = true,
},
fpc = {
aliases = {"fpn"},
image = "Cscr-candidate.svg",
tooltip = "Featured picture candidate",
link = true,
},
ffp = {
image = "Cscr-former.svg",
tooltip = "Former featured picture",
link = true,
},
vp = {
image = "ENWP VP Logo.svg",
tooltip = "Valued picture",
link = true,
},
vpc = {
image = "Valued pics 1.svg",
tooltip = "Valued picture candidate",
link = true,
},
fs = {
image = "Cscr-featured.svg",
tooltip = "Featured sound",
link = true,
},
ffs = {
image = "Cscr-former.svg",
tooltip = "Former featured sound",
link = true,
},
fsc = {
image = "Cscr-candidate.svg",
tooltip = "Featured sound candidate",
link = true,
},
fpo = {
image = "Linecons big-star.svg",
tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.",
link = true,
},
fpor = {
image = "Cscr-star piece.png",
tooltip = "Featured portal review",
link = true,
},
ffpo = {
image = "Featured article star - cross.svg",
tooltip = "Former featured portal",
link = true,
},
fpoc = {
image = "Cscr-candidate.svg",
tooltip = "Featured portal candidate",
link = true,
},
ft = {
image = "Cscr-featuredtopic.svg",
tooltip = "Featured topic",
link = true,
},
ftrc = {
image = "Cscr-star piece.png",
tooltip = "Featured topic removal candidate",
link = true,
},
fft = {
aliases = {"dft"},
image = "DFT candidate_cluster.svg",
tooltip = "Former featured topic",
link = true,
},
ftc = {
aliases = {"ftn"},
image = "FT candidate cluster.svg",
tooltip = "Featured topic candidate",
link = false,
},
gt = {
image = "Support cluster.svg",
tooltip = "Good topic",
link = false,
},
gtrc = {
image = "Symbol unsupport vote.svg",
tooltip = "Good topic removal candidate",
link = false,
},
gtc = {
aliases = {"gtn"},
image = "GA candidate cluster.svg",
tooltip = "Good topic candidate",
link = false,
},
bplus = {
aliases = {"b+"},
image = "Symbol bplus class.svg",
tooltip = "Bplus-Class article",
link = true,
},
b = {
image = "Symbol b class.svg",
tooltip = "B-Class article",
link = true,
},
br = {
aliases = {"bcr"},
image = "Bclass-checklist.svg",
tooltip = "B-Class review",
link = true,
},
c = {
image = "Symbol c class.svg",
tooltip = "C-Class article",
link = true,
},
start = {
image = "Symbol start class.svg",
tooltip = "Start-Class article",
link = true,
},
stub = {
image = "Symbol stub class.svg",
tooltip = "Stub-Class article",
link = true,
},
list = {
aliases = {"comparison"},
image = "Symbol list class.svg",
tooltip = "List-Class article",
link = false,
},
no = {
image = "Crystal button cancel.svg",
tooltip = "Unknown-Class article",
link = true,
},
book = {
image = "Symbol book class2.svg",
tooltip = "Wikipedia book",
link = true,
},
category = {
aliases = {"cat", "categ"},
image = "Symbol category class.svg",
tooltip = "Category",
link = false,
},
disambiguation = {
aliases = {"dab", "disamb", "disambig"},
image = "Symbol dab class.svg",
tooltip = "Disambiguation page",
link = true,
},
image = {
aliases = {"file"},
image = "Symbol file class.svg",
tooltip = "File",
link = true,
},
needed = {
image = "Symbol needed class.svg",
tooltip = "Needed article",
link = false,
},
outline = {
image = "Global thinking.svg",
tooltip = "Outline",
link = false,
},
portal = {
image = "Symbol portal class.svg",
tooltip = "Portal",
link = true,
},
project = {
image = "Symbol project class.svg",
tooltip = "Project page",
link = false,
},
redirect = {
aliases = {"red", "redir"},
image = "Symbol redirect vote2.svg",
tooltip = "Redirect",
link = true,
},
template = {
aliases = {"temp", "templ"},
image = "Symbol template class.svg",
tooltip = "Template",
link = false,
},
essay = {
image = "Essay.svg",
tooltip = "Essay",
link = false,
},
na = {
image = "Symbol na class.svg",
tooltip = "Non-article page",
link = true,
},
aa = {
image = "Yes check.svg",
tooltip = "Audited article of limited subject matter",
link = false,
},
da = {
image = "Symbol oppose vote.svg",
tooltip = "Demoted article",
link = false,
},
dyk = {
image = "Symbol question.svg",
tooltip = "Did You Know?",
link = false,
},
dyk2 = {
image = "DYK questionmark icon.svg",
tooltip = "Did You Know?",
link = false,
},
pr = {
image = "Nuvola apps kedit.png",
tooltip = "Peer review",
link = true,
},
ppr = {
image = "Nuvola apps kedit.png",
tooltip = "Portal peer review",
link = true,
},
q = {
aliases = {"question"},
image = "Symbol question.svg",
tooltip = "Question",
link = false,
},
cleanup = {
image = "Edit-clear.svg",
tooltip = "Cleanup work",
link = false,
},
qi = {
image = "Quality images logo.svg",
tooltip = "Quality image on Wikimedia Commons",
link = false,
},
vi = {
image = "Valued image seal.svg",
tooltip = "Valued image on Wikimedia Commons",
link = false,
},
tfa = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured Article",
link = true,
},
tfl = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured List",
link = true,
},
itn = {
image = "Globe current.svg",
tooltip = "In The News",
link = true,
},
otd = {
image = "Nuvola apps date.svg",
tooltip = "On This Day",
link = true,
},
wikiproject = {
image = "People icon.svg",
tooltip = "WikiProject",
link = false,
},
goce = {
image = "Writing Magnifying.PNG",
tooltip = "Guild of Copy Editors",
link = true,
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
link = true,
},
commons = {
image = "Commons-logo.svg",
tooltip = "Commons page",
link = false,
},
wikiquote = {
image = "Wikiquote-logo.svg",
tooltip = "Wikiquote page",
link = false,
},
wikiversity = {
image = "Wikiversity logo 2017.svg",
tooltip = "Wikiversity page",
link = true,
},
wikibooks = {
image = "Wikibooks-logo.svg",
tooltip = "Wikibooks page",
link = true,
},
wikisource = {
image = "Wikisource-logo.svg",
tooltip = "Wikisource page",
link = true,
},
wiktionary = {
image = "Wiktionary-logo.svg",
tooltip = "Wiktionary page",
link = true,
},
wikinews = {
image = "Wikinews-logo.svg",
tooltip = "Wikinews page",
link = true,
},
wikispecies = {
image = "Wikispecies-logo.svg",
tooltip = "Wikispecies page",
link = true,
},
wikidata = {
image = "Wikidata-logo.svg",
tooltip = "Wikidata page",
link = false,
},
wikivoyage = {
image = "Wikivoyage-logo.svg",
tooltip = "Wikivoyage page",
link = true,
},
mediawiki = {
image = "MediaWiki-2020-icon.svg",
tooltip = "MediaWiki",
link = false,
},
phabricator = {
aliases = {"phab"},
image = "Favicon-Phabricator-WM.svg",
tooltip = "Phabricator",
link = false,
},
wikitech = {
image = "Wikitech-2021-blue-icon.svg",
tooltip = "Wikitech",
link = false,
},
meta = {
image = "Wikimedia Community Logo.svg",
tooltip = "Meta-wiki page",
link = false,
},
four = {
aliases = {"4a"},
image = "Four Award.svg",
tooltip = "Four Award",
link = false,
},
million = {
image = "Million award logo.svg",
tooltip = "Million Award",
link = true,
},
module = {
image = "Lua-logo-nolabel.svg",
tooltip = "Module",
link = false,
},
vital = {
image = "Círculos_Concéntricos.svg",
tooltip = "Vital article",
link = false,
},
potd = {
image = "Wikipedia-logo.svg",
tooltip = "Picture of the Day",
link = true,
},
_DEFAULT = {
image = "Symbol question.svg",
link = false,
}
}
--------------------------------------------------------------------------------
-- End icon data
--------------------------------------------------------------------------------
-- Make aliases work the same as normal keys, and remove the "aliases" subtables.
local ret= {}
for code, iconData in pairs(data) do
iconData.canonicalCode = code
if iconData.aliases then
for _, alias in ipairs(iconData.aliases) do
ret[alias] = iconData
end
iconData.aliases = nil
end
ret[code] = iconData
end
return ret
d8e668d4755103abdbc8325fa35964e99198c29d
Template:Infobox country languages
10
1137
2463
2022-12-03T17:23:35Z
w>Pablo the Helper
0
wikitext
text/x-wiki
{{Infobox
|above = <includeonly>Languages of </includeonly>{{{country|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
|abovestyle = background-color:#efefef;
|image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image size|300px}}}}}
|caption = {{{caption|}}}
|label1 = [[Official language|Official]]
|data1 = {{{official|}}}
|label2 = Semi-official
|data2 = {{{semi-official|}}}
|label3 = [[National language|National]]
|data3 = {{{national|}}}
|label4 = Recognised
|data4 = {{{unofficial|}}}
|label5 = [[Main language|Main]]
|data5 = {{{main|}}}
|label6 = [[Indigenous language|Indigenous]]
|data6 = {{{indigenous|}}}
|label7 = [[Regional language|Regional]]
|data7 = {{{regional|}}}
|label8 = [[Vernacular]]
|data8 = {{{vernacular|}}}
|label9 = [[Minority language|Minority]]
|data9 = {{{minority|}}}
|label10 = Immigrant
|data10 = {{{immigrant|}}}
|label11 = [[Foreign language|Foreign]]
|data11 = {{{foreign|}}}
|label12 = [[Sign language|Signed]]
|data12 = {{{sign|}}}
|label13 = [[Keyboard layout]]
|data13 = {{#if:{{{keyboard|}}}|<div style="margin: 0 auto; text-align: center;">{{{keyboard}}}<br/>{{#if:{{{keyboard image|}}}|{{{keyboard image}}}}}</div>}}
|label14 = Source
|data14 = {{{source|}}}
|label15 = {{{extralabel|}}}
|data15 = {{{extra|}}}
}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Infobox country languages with unknown parameters|_VALUE_]]}}|preview=unknown parameter "_VALUE_"| country | image | image size | caption | official | semi-official | national | unofficial | main | indigenous | regional | vernacular | minority | immigrant | foreign | sign | keyboard | keyboard image | source | extralabel | extra
}}<noinclude>
{{Documentation}}</noinclude>
da24c63c35b6d764763a5e4b2be5df9070524164
Template:Infobox school
10
1149
2475
2022-12-06T20:34:20Z
w>Ɱ
0
size
wikitext
text/x-wiki
{{Infobox school/short description|type={{{type|{{{schooltype|School}}}}}}|country={{if empty|{{{country|}}}|{{{country1|}}}}}|city={{{city|{{{town|{{{city/town|}}}}}}}}}|county={{{county|}}}|state={{{state|}}}|province={{{province|}}}}}{{Infobox
| bodyclass = vcard
| bodystyle = {{#if: {{{box_width|}}} | width:{{{box_width}}}; }} {{{box_style|}}}
| headerstyle = background:lavender
| autoheaders = y
| aboveclass = fn org
| abovestyle = background-color: lavender
| above = {{br separated entries
|1 = {{If empty|{{{name|}}}|<includeonly>{{PAGENAMEBASE}}</includeonly>}}
|2 = {{#if: {{{native_name|}}} | <div class="nickname">{{{native_name}}}</div> }}
|3 = {{#if: {{{latin_name|}}} | <div class="nickname">{{{latin_name}}}</div> }}
}}
| image1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|}}}|upright=1|alt={{{logo_alt|}}}}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{seal_image|}}}|size={{{seal_size|}}}|upright=1|alt={{{seal_alt|}}}}}
| image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}{{{image_name|}}}{{{imagewikilink|}}}|size={{{image_size|}}}|upright={{{image_upright|1.14}}}|sizedefault=250px|maxsize=325px|alt={{{alt|}}}}}
| caption{{#if:{{{image|}}}{{{image_name|}}}{{{imagewikilink|}}}|3|{{#if:{{{seal_image|}}}|2|{{#if:{{{logo|}}}|1|5}}}}}} = {{#if:{{{image|}}}{{{image_name|}}}{{{seal_image|}}}{{{logo|}}}{{{imagewikilink|}}}|{{{caption|}}} }}
| header1 = {{#if:{{{address|}}}{{{streetaddress|}}}{{{street|}}}|Address|Location}}
| data3 = {{#invoke:Infobox mapframe|auto
|onByDefault={{#ifeq:{{{coordinates|}}}||yes|{{#ifeq:{{#invoke:coordinates|coord2text|{{{coordinates|}}}|lat}}||no|yes}}}}
|mapframe-marker=school|mapframe-zoom=13|mapframe-wikidata=yes}}
| data4 = {{#invoke:Infobox mapframe|autocaption|onByDefault=yes}}
| rowclass5 = adr
| data5 = {{br separated entries
|1 = {{#if:{{{address|}}}{{{streetaddress|}}}{{{street|}}}|<div style="display:inline;" class="street-address">{{if empty|{{{address|}}}|{{{streetaddress|}}}|{{{street|}}}}}</div>}}
|2 = {{#if:{{{location|}}}|<div style="display:inline;" class="street-address">{{{location|}}}</div>}}
|3 = {{#if:{{{region|}}}|<div style="display:inline;" class="locality">{{{region|}}}</div>}}
|4 = {{comma separated entries
| 1 = {{#if:{{{city|}}}{{{town|}}}{{{city/town|}}}|<div style="display:inline;" class="locality">{{if empty|{{{city|}}}|{{{town|}}}|{{{city/town|}}}}}</div>}}
| 2 = {{#if:{{{county|}}}|<div style="display:inline;" class="region">{{{county}}}</div>}}
| 3 = {{#if:{{{state|}}}|<div style="display:inline;" class="region">{{{state}}}</div>}}
| 4 = {{#if:{{{province|}}}|<div style="display:inline;" class="region">{{{province}}}</div>}}
| 5 = {{#if:{{{postcode|}}}{{{postalcode|}}}|<div style="display:inline;" class="postal-code" class="nowrap">{{if empty|{{{postcode|}}}|{{{postalcode|}}}}}</div>}}
}} {{#if:{{{zipcode|}}}|<div style="display:inline;" class="postal-code">{{{zipcode}}}</div>}}
|5 = {{#if:{{{country|}}}|<div style="display:inline;" class="country-name">{{#ifexist:Template:Country data {{{country}}}|{{Getalias|{{{country}}}|shortname}}|{{{country}}}{{main other|{{#ifeq:_MATCH_|{{#invoke:string|replace|{{{country}}}|^%[%[[^%[%]]*%]%]$|_MATCH_|plain=false}}|[[Category:Pages using infobox school with a linked country]]|[[Category:Pages using infobox school with an unknown country]]}}}}}}</div>{{#if:{{{country1|}}}|,}}}} {{#if:{{{country1|}}}|<div style="display:inline;" class="country-name1">{{#ifexist:Template:Country data {{{country1}}}|{{Getalias|{{{country1}}}|shortname}}|{{{country1}}}{{main other|{{#ifeq:_MATCH_|{{#invoke:string|replace|{{{country1}}}|^%[%[[^%[%]]*%]%]$|_MATCH_|plain=false}}|[[Category:Pages using infobox school with a linked country1]]|[[Category:Pages using infobox school with an unknown country1]]}}}}}}</div>}}
}}
| label6 = [[Geographic coordinate system|Coordinates]]
| data6 = {{#if: {{{coordinates|}}} | {{#invoke:Coordinates|coordinsert|{{{coordinates|}}}|type:edu}}{{{coordinates_footnotes|}}}}}
| header7 = Information
| label8 = Other name{{#if:{{{other_names|}}}|s}}
| data8 = {{if empty|{{{other_names|}}}|{{{other_name|}}}}}
| label9 = Former name{{#if:{{{former_names|}}}|s}}
| data9 = {{if empty|{{{former_names|}}}|{{{former_name|}}}}}
| label10 = {{#if:{{{schooltype|}}}|School type|{{#if:{{{fundingtype|}}}|Funding type|Type}} }}
| data10 =
{{#if:{{{schooltype|}}}
|{{#if:{{{fundingtype|}}}
|{{#ifexist:{{{fundingtype}}} school
|[[{{{fundingtype}}} school|{{{fundingtype}}}]]
|{{{fundingtype}}},
}}
|{{{type|}}}
}} {{{schooltype}}}
|{{if empty|{{{fundingtype|}}}|{{{type|}}}}}
}}
| label11 = {{#if: {{{motto|}}} | Motto | Mottoes }}
| data11 = {{#if: {{{motto|}}}{{{mottoes|}}}
|{{if empty|{{{motto|}}}|{{{mottoes|}}}}}{{#if:{{{motto_translation|}}}|<br />({{{motto_translation}}})}}
|{{{motto_translation|}}}
}}
| label12 = Religious affiliation(s)
| data12 = {{if empty|{{{religious_affiliation|}}}|{{{religion|}}}}}
| label13 = Denomination
| data13 = {{{denomination|}}}
| label14 = Patron saint(s)
| data14 = {{{patron|}}}
| label15 = {{#if: {{{established|}}} | Established |<!--
-->{{#if: {{{founded|}}} | Founded |<!--
-->Opened }}}}
| data15 = {{if empty | {{{established|}}} | {{{founded|}}} | {{{opened|}}} }}
| label16 = {{#if: {{{founder|}}} | Founder | Founders }}
| data16 = {{if empty|{{{founder|}}}|{{{founders|}}}}}
| label17 = Status
| data17 = {{{status|}}}
| label18 = Closed
| data18 = {{{closed|}}}
| label19 = Locale
| data19 = {{{locale|}}}
| label20 = [[Sister school]]
| data20 = {{{sister_school|}}}
| label21 = School board
| data21 = {{if empty|{{{school_board|}}}|{{{schoolboard|}}}}}
| label22 = School district
| data22 = {{{district|}}}
| label23 = [[National Center for Education Statistics|NCES]] District ID
| data23 = {{{us_nces_district_id|}}}
| label24 = Local authority
| data24 = {{if empty|{{{local_authority|}}}|{{{LEA|}}}}}
| label25 = Authority
| data25 = {{{authority|}}}
| label26 = Educational authority
| data26 = {{if empty|{{{educational_authority|}}}|{{{educational authority|}}}}}
| label27 = {{if empty| {{{category_label|}}} | Category }}
| data27 = {{{category|}}}
| label28 = {{if empty| {{{oversight_label|}}} | Oversight }}
| data28 = {{{oversight|}}}
| label29 = Trust
| data29 = {{{trust|}}}
| label30 = Authorizer
| data30 = {{{authorizer|}}}
| label31 = Superintendent
| data31 = {{{superintendent|}}}
| label32 = Area trustee
| data32 = {{{trustee|}}}
| label33 = {{#if: {{{specialist|}}} | Specialist | Specialists }}
| data33 = {{if empty|{{{specialist|}}}|{{{specialists|}}}}}
| label34 = Session
| data34 = {{{session|}}}
| label35 = School number
| data35 = {{if empty|{{{school_number|}}}|{{{schoolnumber|}}}|{{{number|}}}}}
| label36 = School code
| data36 = {{if empty|{{{school_code|}}}|{{{school code|}}}}}
| label37 = [[Department for Education]] URN
| data37 = {{#if:{{{urn|}}}
| {{EduBase|{{{urn}}}|{{{urn}}}}} {{DfE performance tables|{{{urn}}}|Tables}}
}}
| label38 = [[Ministry of Education (New Zealand)|Ministry of Education]] Institution no.
| data38 = {{#if: {{{MOE|}}} | [https://www.educationcounts.govt.nz/find-school/school/profile?school={{{MOE}}} {{{MOE}}}] }}
| label39 = [[Ofsted]]
| data39 = {{#if: {{{ofsted|}}} |{{ofsted|{{{urn}}}|Reports}} }}
| label40 = [[College Board#CEEB code|CEEB code]]
| data40 = {{{ceeb|}}}
| label41 = [[National Center for Education Statistics|NCES]] School ID
| data41 = {{{us_nces_school_id|}}}
| label42 = President
| data42 = {{{president|}}}
| label43 = {{if empty| {{{chair_label|}}} | Chair }}
| data43 = {{{chair|}}}
| label44 = {{if empty| {{{chairman_label|}}} | Chairman }}
| data44 = {{{chairman|}}}
| label45 = {{if empty| {{{chairperson_label|}}} | Chairperson }}
| data45 = {{{chairperson|}}}
| label46 = Dean
| data46 = {{{dean|}}}
| label47 = Administrator
| data47 = {{{administrator|}}}
| label48 = Rector
| data48 = {{{rector|}}}
| label49 = Director
| data49 = {{{director|}}}
| label50 = {{if empty| {{{principal_label|}}} | Principal }}
| data50 = {{{principal|}}}
| label51 = {{if empty| {{{principal_label1|}}} | Principal }}
| data51 = {{{principal1|}}}
| label52 = {{if empty| {{{principal_label2|}}} | Principal }}
| data52 = {{{principal2|}}}
| label53 = {{if empty| {{{principal_label3|}}} | Principal }}
| data53 = {{{principal3|}}}
| label54 = {{if empty| {{{principal_label4|}}} | Principal }}
| data54 = {{{principal4|}}}
| label55 = Campus Director
| data55 = {{if empty|{{{campus_director|}}}|{{{campus director|}}}}}
| label56 = Headmistress
| data56 = {{{headmistress|}}}
| label57 = Headmaster
| data57 = {{{headmaster|}}}
| label58 = Head of school
| data58 = {{if empty|{{{head_of_school|}}}|{{{head of school|}}}}}
| label59 = {{#if: {{{head_teacher|}}} | Head teacher | Headteacher }}
| data59 = {{if empty|{{{head_teacher|}}}|{{{headteacher|}}}}}
| label60 = Executive headteacher
| data60 = {{{executive_headteacher|}}}
| label61 = Acting headteacher
| data61 = {{{acting_headteacher|}}}
| label62 = {{if empty| {{{head_name|}}} | {{{head_label|}}} | Head teacher }}
| data62 = {{{head|}}}
| label63 = {{{head_name2}}}
| data63 = {{#if: {{{head_name2|}}} | {{{head2|}}} }}
| label64 = {{if empty| {{{rel_head_name|}}} | Religious head }}
| data64 = {{{rel_head|}}}
| label65 = {{if empty| {{{r_head_label|}}} | Religious head }}
| data65 = {{{r_head|}}}
| label66 = Officer in charge
| data66 = {{{officer_in_charge|}}}
| label67 = Chaplain
| data67 = {{{chaplain|}}}
| label68 = Staff
| data68 = {{if empty|{{{staff|}}}|{{{number_of_staff|}}}|{{{number of staff|}}}}}
| label69 = Faculty
| data69 = {{{faculty|}}}
| label70 = Teaching staff
| data70 = {{{teaching_staff|}}}
| label71 = Employees
| data71 = {{if empty|{{{employees|}}}|{{{num_employ|}}}}}
| label72 = Key people
| data72 = {{{key_people|}}}
| label73 = {{if empty| {{{grades_label|}}} | Grades }}
| data73 = {{{grades|}}}
| label74 = Years offered
| data74 = {{{years|}}}
| label75 = Years taught
| data75 = {{if empty|{{{years_taught|}}}|{{{years taught|}}}}}
| label76 = {{#if: {{{years_taught|}}}{{{years taught|}}} | • Nursery | Nursery years taught }}
| data76 = {{if empty|{{{nursery_years_taught|}}}|{{{nursery years taught|}}}}}
| label77 = {{#if: {{{years_taught|}}}{{{years taught|}}} | • Primary | Primary years taught }}
| data77 = {{if empty|{{{primary_years_taught|}}}|{{{primary years taught|}}}}}
| label78 = {{#if: {{{years_taught|}}}{{{years taught|}}} | • Secondary | Secondary years taught }}
| data78 = {{if empty|{{{secondary_years_taught|}}}|{{{secondary years taught|}}}}}
| label79 = {{if empty| {{{gender_label|}}} | Gender }}
| data79 = {{{gender|}}}
| label80 = {{#if: {{{age_range|}}}{{{age range|}}} | Age range | Age }}
| data80 = {{#if: {{{age_range|}}}{{{age range|}}}
| {{if empty|{{{age_range|}}}|{{{age range|}}}}}
| {{#if: {{{lower_age|}}} | {{{lower_age}}}{{#if:{{{upper_age|}}}| to {{{upper_age}}}|+}} }}
}}
| label81 = {{#if: {{{enrollment|}}} | Enrollment |<!--
-->{{#if: {{{enrolment|}}} | Enrolment |<!--
-->{{#if: {{{students|}}} | Number of students |<!--
-->{{#if:{{{school_roll|}}}{{{roll|}}}| School roll |<!--
-->Number of pupils}}}}}}}}
| data81 = {{if empty|{{{enrollment|}}}
|{{{enrolment|}}}
|{{{students|}}}
|{{{pupils|}}}
|{{{school_roll|}}}
|{{{roll|}}}}}<!--
-->{{#if: {{{enrollment|}}}{{{enrolment|}}}{{{students|}}}{{{pupils|}}}
| {{#if: {{{enrollment_as_of|}}}{{{enrolment_as_of|}}}{{{students_as_of|}}}{{{pupils_as_of|}}}
| ({{if empty|{{{enrollment_as_of|}}}
|{{{enrolment_as_of|}}}
|{{{students_as_of|}}}
|{{{pupils_as_of|}}}}})}}}}
| label82 = Capacity
| data82 = {{{capacity|}}}
| label83 = Sixth form students
| data83 = {{{sixth_form_students|}}}
| label84 = • [[Pre-kindergarten]]
| data84 = {{{grade_preK|}}}
| label85 = • [[Kindergarten]]
| data85 = {{{gradeK|}}}
| label86 = • [[First grade|Grade 1]]
| data86 = {{{grade1|}}}
| label87 = • [[Second grade|Grade 2]]
| data87 = {{{grade2|}}}
| label88 = • [[Third grade|Grade 3]]
| data88 = {{{grade3|}}}
| label89 = • [[Fourth grade|Grade 4]]
| data89 = {{{grade4|}}}
| label90 = • [[Fifth grade|Grade 5]]
| data90 = {{{grade5|}}}
| label91 = • [[Sixth grade|Grade 6]]
| data91 = {{{grade6|}}}
| label92 = • [[Seventh grade|Grade 7]]
| data92 = {{{grade7|}}}
| label93 = • [[Eighth grade|Grade 8]]
| data93 = {{{grade8|}}}
| label94 = • [[Ninth grade|Grade 9]]
| data94 = {{{grade9|}}}
| label95 = • [[Tenth grade|Grade 10]]
| data95 = {{{grade10|}}}
| label96 = • [[Eleventh grade|Grade 11]]
| data96 = {{{grade11|}}}
| label97 = • [[Twelfth grade|Grade 12]]
| data97 = {{{grade12|}}}
| label98 = • Grade 13
| data98 = {{{grade13|}}}
| label99 = • Other
| data99 = {{{other|}}}
| label100 = • {{if empty| {{{other_grade_label}}} | Other }}
| data100 = {{if empty|{{{other_grade_enrollment|}}}|{{{other_grade_enrolment|}}}}}
| label101 = • {{if empty| {{{other_grade_label_1|}}} | Other }}
| data101 = {{if empty|{{{other_grade_enrollment_1|}}}|{{{other_grade_enrolment_1|}}}}}
| label102 = • {{if empty| {{{other_grade_label_2|}}} | Other }}
| data102 = {{if empty|{{{other_grade_enrollment_2|}}}|{{{other_grade_enrolment_2|}}}}}
| label103 = International students
| data103 = {{{international_students|}}}
| label104 = Classes
| data104 = {{{classes|}}}
| label105 = Average class size
| data105 = {{if empty|{{{average_class_size|}}}|{{{avg_class_size|}}}|{{{class|}}}}}
| label106 = Student to teacher ratio
| data106 = {{{ratio|}}}
| label107 = Education system
| data107 = {{{system|}}}
| label108 = Classes offered
| data108 = {{if empty|{{{classes_offered|}}}|{{{classes offered|}}}}}
| label109 = Language
| data109 = {{if empty|{{{language|}}}|{{{medium_of_language|}}}|{{{medium of language|}}}|{{{medium|}}}|{{{mediums|}}}}}
| label111 = Schedule type
| data111 = {{if empty|{{{schedule_type|}}}|{{{schedtyp|}}}}}
| label112 = Schedule
| data112 = {{{schedule|}}}
| label113 = Hours in school day
| data113 = {{{hours_in_day|}}}
| label114 = Classrooms
| data114 = {{{classrooms|}}}
| label115 = Campuses
| data115 = {{{campuses|}}}
| label116 = Campus
| data116 = {{{campus|}}}
| label117 = Campus size
| data117 = {{if empty|{{{campus_size|}}}|{{{campus size|}}}}}
| label118 = Area
| data118 = {{{area|}}}
| label119 = Campus type
| data119 = {{if empty|{{{campus_type|}}}|{{{campus type|}}}}}
| label120 = Houses
| data120 = {{{houses|}}}
| label121 = {{if empty| {{{student_union_label|}}} | Student Union/Association }}
| data121 = {{{student_union|}}}
| label122 = {{#if: {{{colors|}}}{{{school_colors|}}}{{{schoolcolors|}}} | Color(s) | Colour(s) }}
| data122 = {{if empty|{{{colors|}}}|{{{school_colors|}}}|{{{schoolcolors|}}}|{{{colours|}}}|{{{school_colours|}}}|{{{schoolcolours|}}}}}
| label124 = Slogan
| data124 = {{{slogan|}}}
| label125 = Song
| data125 = {{{song|}}}
| label126 = [[Fight song]]
| data126 = {{if empty|{{{fight_song|}}}|{{{fightsong|}}}}}
| label127 = Athletics
| data127 = {{{athletics|}}}
| label128 = Athletics conference
| data128 = {{if empty|{{{athletics_conference|}}}|{{{athletics conference|}}}|{{{athletic_conference|}}}|{{{athletic conference|}}}|{{{conference|}}}}}
| label129 = Sports
| data129 = {{{sports|}}}
| label130 = Mascot
| data130 = {{#if: {{{mascot|}}} | {{{mascot}}} {{main other|<!--
-->{{#if:{{#invoke:string|match|nomatch=|pattern=[Ff][Ii][Ll][Ee]%s*:|s={{{mascot}}}}}|[[Category:Pages using infobox school with a mascot image]]|{{#if:{{#invoke:string|match|nomatch=|pattern=[Ii][Mm][Aa][Gg][Ee]%s*:|s={{{mascot}}}}}|[[Category:Pages using infobox school with a mascot image]]|}}}}<!--
-->}}<!--
-->}}
| label131 = [[Athletic nickname|Nickname]]
| data131 = {{{nickname|}}}
| label132 = {{if empty| {{{teams_label|}}} | Teams }}
| data132 = {{{teams|}}}
| label133 = Team name
| data133 = {{if empty|{{{team_name|}}} | {{{team name|}}} | {{{teamname|}}} }}
| label134 = {{#if: {{{rival|}}} | Rival | Rivals }}
| data134 = {{if empty|{{{rival|}}} | {{{rivals|}}} }}
| label135 = {{#if: {{{accreditation|}}} | Accreditation | Accreditations }}
| data135 = {{if empty|{{{accreditation|}}} | {{{accreditations|}}} }}
| label136 = [[U.S. News & World Report|USNWR]] ranking
| data136 = {{if empty|{{{USNWR_ranking|}}} | {{{ranking|}}} }}
| label137 = National ranking
| data137 = {{{national_ranking|}}}
| label138 = {{if empty|{{{test_name|}}}|{{{testname|}}}|Test}} average
| data138 = {{if empty|{{{test_average|}}} | {{{testaverage|}}} }}
| label141 = Bar pass rate
| data141 = {{if empty|{{{bar_pass_rate|}}} | {{{bar pass rate|}}} }}
| label143 = Socio-economic decile
| data143 = {{{decile|}}}
| label144 = Publication
| data144 = {{{publication|}}}
| label145 = Newspaper
| data145 = {{#if:{{{newspaper|}}}
|{{#ifeq:{{str left|{{{newspaper}}}|2}}|''
|{{{newspaper}}}
|''{{{newspaper}}}''
}}
}}
| label146 = Yearbook
| data146 = {{#if:{{{yearbook|}}}
|{{#ifeq:{{str left|{{{yearbook}}}|2}}|''
|{{{yearbook}}}
|''{{{yearbook}}}''
}}
}}
| label147 = Key products
| data147 = {{{products|}}}
| label148 = Endowment
| data148 = {{{endowment|}}}
| label149 = Budget
| data149 = {{{budget|}}}
| label150 = School fees
| data150 = {{{fees|}}}
| label151 = Annual tuition
| data151 = {{if empty|{{{annual_tuition|}}} | {{{annual tuition|}}} }}
| label152 = Tuition
| data152 = {{{tuition|}}}
| label153 = Revenue
| data153 = {{{revenue|}}}
| label154 = Communities served
| data154 = {{{communities|}}}
| label155 = Feeder schools
| data155 = {{if empty|{{{feeder_schools|}}} | {{{feeders|}}} }}
| label156 = Feeder to
| data156 = {{if empty|{{{feeder_to|}}} | {{{main feeder school for|}}} }}
| label157 = Graduates{{#if: {{{graduates_year|}}} | {{nobold|({{{graduates_year|}}})}} }}
| data157 = {{{graduates|}}}
| label158 = {{#if: {{{affiliation|}}} | Affiliation | Affiliations }}
| data158 = {{if empty|{{{affiliation|}}} | {{{affiliations|}}} }}
| label159 = Alumni
| data159 = {{{alumni|}}}
| label160 = Alumni name
| data160 = {{{alumni_name|}}}
| label161 = [[List of Nobel laureates|Nobel laureate]]s
| data161 = {{{nobel_laureates|}}}
| label162 = Information
| data162 = {{{information|}}}
| label163 = {{if empty| {{{free_label|}}} | Other }}
| data163 = {{#if: {{{free_label|}}} | {{if empty|{{{free|}}}|{{{free_text|}}}}} }}
| label164 = {{if empty|{{{free_label1|}}}|{{{free_label_1|}}}}}
| data164 = {{#if: {{{free_label1|}}}{{{free_label_1|}}} | {{if empty|{{{free_1|}}}|{{{free_text1|}}}}} }}
| label165 = {{if empty|{{{free_label2|}}}|{{{free_label_2|}}}}}
| data165 = {{#if: {{{free_label2|}}}{{{free_label_2|}}} | {{if empty|{{{free_2|}}}|{{{free_text2|}}}}} }}
| label166 = {{if empty|{{{free_label3|}}}|{{{free_label_3|}}}}}
| data166 = {{#if: {{{free_label3|}}}{{{free_label_3|}}} | {{if empty|{{{free_3|}}}|{{{free_text3|}}}}} }}
| label167 = {{if empty|{{{free_label4|}}}|{{{free_label_4|}}}}}
| data167 = {{#if: {{{free_label4|}}}{{{free_label_4|}}} | {{if empty|{{{free_4|}}}|{{{free_text4|}}}}} }}
| label168 = {{if empty|{{{free_label5|}}}|{{{free_label_5|}}}}}
| data168 = {{#if: {{{free_label5|}}}{{{free_label_5|}}} | {{if empty|{{{free_5|}}}|{{{free_text5|}}}}} }}
| label169 = Website
| data169 = {{if empty|{{{website|}}}|{{{homepage|}}}|{{{url|}}}}}
| header170 = _BLANK_
| rowstyle171 =
| data171 = {{{footnotes|}}}
| data172 = {{#if:{{{picture|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{picture}}}}}{{#if: {{{picture_caption|}}} | <br />{{{picture_caption|}}} }}
}}
| data173 = {{#if:{{{picture2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{picture2}}}}}{{#if: {{{picture_caption2|}}} | <br /> {{{picture_caption2|}}} }}
}}
| data174 = {{{module|}}}
| belowstyle =
| below = {{#if: {{{lastupdate|}}} | Last updated: {{{lastupdate}}} }}
}}<!--
-->{{#invoke:Check for clobbered parameters|check|template=Infobox school|cat={{main other|Category:Pages using infobox school with unsupported parameters}}
|established; founded; opened | image_size; image size; imagesize|address; street; streetaddress|city; town; city/town|postcode; postalcode; zipcode|other_names; other_name|former_names; former_name|fundingtype; type|mottoes; motto|religious_affiliation; religion|founders; founder|school_board; schoolboard|educational_authority; educational authority; authority|specialists; specialist|school_number; schoolnumber; number|school_code; school code|campus_director; campus director|head_of_school; head of school|head_teacher; headteacher|head_name; head_label|staff; number_of_staff; number of staff|employees; num_employ|years_taught; years taught|nursery_years_taught; nursery years taught|primary_years_taught; primary years taught|secondary_years_taught; secondary years taught|lower_age; age_range; age range|enrolment; enrollment; students; pupils; school_roll; roll|enrolment_as_of; enrollment_as_of; students_as_of; pupils_as_of|other_grade_enrollment; other_grade_enrolment|other_grade_enrollment_1; other_grade_enrolment_1|other_grade_enrollment_2; other_grade_enrolment_2|average_class_size; avg_class_size; class|classes_offered; classes offered|language; medium_of_language; medium of language; medium; mediums|schedule_type; schedtyp|campus_size; campus size|campus_type; campus type|colours; colors; schoolcolours; schoolcolors; school_colours; school_colors|fight_song; fightsong|athletics_conference; athletics conference; athletic_conference; athletic conference; conference|team_name; team name; teamname|rival; rivals|accreditation; accreditations|USNWR_ranking; ranking|test_average; testaverage|bar_pass_rate; bar pass rate|annual_tuition; annual tuition|feeders; feeder_schools|feeder_to; main feeder school for|affiliation; affiliations|free_label1; free_label_1|free_1; free_text1|free_label2; free_label_2|free_2; free_text2|free_label3; free_label_3|free_3; free_text3|free_label4; free_label_4|free_4; free_text4|free_label5; free_label_5|free_5; free_text5|website; homepage; url
}}{{main other|<!--
-->{{#if:{{{module|}}}|[[Category:Pages using infobox school with the module parameter]]}}<!--
-->{{#if:{{{coordinates|}}}|{{#ifeq:{{#invoke:coordinates|coord2text|{{{coordinates|}}}|lat}}||[[Category:Pages using infobox school with coordinates not using the Coord template]]}}}}<!--
-->}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox school with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox school]] with unknown parameter "_VALUE_"|ignoreblank=y| accreditation | accreditations | ACT | ACT_year | acting_headteacher | address | administrator | affiliation | affiliations | age range | age_range | alt | alumni | alumni_name | annual tuition | annual_tuition | area | athletic conference | athletic_conference | athletics | athletics conference | athletics_conference | authority | authorizer | average_class_size | avg_class_size | bar pass rate | bar_pass_rate | box_style | box_width | budget | campus | campus director | campus size | campus type | campus_director | campus_size | campus_type | campuses | capacity | caption | category | category_label | ceeb | chair | chair_label | chairman | chairman_label | chairperson | chairperson_label | chaplain | city | city/town | class | classes | classes offered | classes_offered | classrooms | closed | colors | colours | communities | conference | coordinates | coordinates_footnotes | country | country1 | county | dean | decile | denomination |dfeno <!-- dfeno is not supported, but it is also not flagged as an unsupported parameter yet, pending talk page discussion. See talk, November 2018 --> | director | district | educational authority | educational_authority | employees | endowment | enrollment | enrollment_as_of | enrolment | enrolment_as_of | established | executive_headteacher | faculty | feeder_schools | feeder_to | feeders | fees | fight_song | fightsong | footnotes | former_name | former_names | founded | founder | founders | free | free_1 | free_2 | free_3 | free_4 | free_5 | free_label | free_label_1 | free_label_2 | free_label_3 | free_label_4 | free_label_5 | free_label1 | free_label2 | free_label3 | free_label4 | free_label5 | free_text | free_text1 | free_text2 | free_text3 | free_text4 | free_text5 | fundingtype | gender | gender_label | grade_preK | grade1 | grade10 | grade11 | grade12 | grade13 | grade2 | grade3 | grade4 | grade5 | grade6 | grade7 | grade8 | grade9 | gradeK | grades | grades_label | graduates | graduates_year | head | head of school | head teacher | head_label | head_name | head_name2 | head_of_school | head_teacher | head2 | headmaster | headmistress | headteacher | homepage | hours_in_day | houses | image | image size | image_name | image_size | imagesize | imagewikilink | information | international_students | key_people | language | lastupdate | latin_name | LEA | local_authority | locale | location | logo | logo_alt | logo_size | lower_age | main feeder school for | mascot | medium | medium of language | medium_of_language | mediums | module | MOE | motto | motto_translation | mottoes | name | national_ranking | native_name | newspaper | nickname | nobel_laureates | num_employ | number | number of staff | number_of_staff | nursery years taught | nursery_years_taught | officer_in_charge | ofsted | opened | other | other_grade_enrollment | other_grade_enrollment_1 | other_grade_enrollment_2 | other_grade_enrolment | other_grade_enrolment_1 | other_grade_enrolment_2 | other_grade_label | other_grade_label_1 | other_grade_label_2 | other_name | other_names | oversight | oversight_label | patron | picture | picture_caption | picture_caption2 | picture2 | postalcode | postcode | president | primary years taught | primary_years_taught | principal | principal_label | principal_label1 | principal_label2 | principal_label3 | principal_label4 | principal1 | principal2 | principal3 | principal4 | products | province | publication | pupils | pupils_as_of | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_mapsize | r_head | r_head_label | ranking | ratio | rector | region | rel_head | rel_head_name | religion | religious_affiliation | revenue | rival | rivals | roll | SAT | SAT_year | schedtyp | schedule | schedule_type | school code | school_board | school_code | school_colors | school_colours | school_number | school_roll | schoolboard | schoolcolors | schoolcolours | schoolnumber | schooltype | seal_alt | seal_image | seal_size | secondary years taught | secondary_years_taught | session | sister_school | sixth_form_students | size | slogan | song | specialist | specialists | sports | staff | state | status | street | streetaddress | student_union | student_union_label | students | students_as_of | superintendent | system | teaching_staff | team name | team_name | teamname | teams | teams_label | test_average | test_name | testaverage | testname | town | trust | trustee | tuition | type | upper_age | url | urn | us_nces_district_id | us_nces_school_id | USNWR_ranking | website | yearbook | years | years taught | years_taught | zipcode | mapframe | mapframe-caption | mapframe-custom | mapframe-id | mapframe-coord | mapframe-wikidata | mapframe-point | mapframe-shape | mapframe-frame-width | mapframe-frame-height | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-geomask | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-zoom | mapframe-length_km | mapframe-length_mi | mapframe-area_km2 | mapframe-area_mi2 | mapframe-frame-coordinates | mapframe-frame-coord | mapframe-switcher }}<!--
--><noinclude>{{documentation}}</noinclude>
134ae3f3fe66f0c16f4e7c3da68ef224b63e6b59
Module:Native name
828
1183
2512
2022-12-08T18:00:44Z
w>Izno
0
use module:list, simplify _native_name_list return
Scribunto
text/plain
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local lang_module = require ('Module:Lang');
local yes_no = require('Module:Yesno')
local defined_values = {
italic = {['no']='no', ['off']='no'}, -- values accepted by |italic= and |italics=; {{lang}} expects 'no' so 'off' must be translated
paren = {['no']=true, ['off']=true, ['omit']=true}, -- values accepted by |paren=
}
local messages_t = {
tag_required = 'an IETF language tag as parameter {{{1}}} is required', -- for {{native name}}
name_required = 'a name as parameter {{{2}}} is required',
tag_required_idx = 'an IETF language tag in |tag%s= is required', -- for {{native name}} when called from {{native name list}}
name_required_idx = 'a name in |name%s= is required',
empty_list = 'list is empty', -- for {{native name list}}
positional = 'positional parameters not supported',
br_list = '<br /> lists not allowed', -- for {{native name checker}}
list_markup = 'list markup expected for multiple names',
malformed_param = 'parameter value is malformed',
}
local help_links_t = {
['native name'] = '[[Template:Native name|help]]',
['native name checker'] = '[[Template:Native name checker|help]]',
['native name list'] = '[[Template:Native name list|help]]',
}
local error_cats_t = {
['native name'] = '[[Category:Native name template errors]]',
['native name checker'] = '[[Category:Native name checker template errors]]',
['native name list'] = '[[Category:Native name list template errors]]',
}
--[[--------------------------< E R R O R _ M S G >------------------------------------------------------------
returns a formatted error message
]]
local function error_msg (msg, template, index)
local cat = ((0 == mw.title.getCurrentTitle().namespace) and error_cats_t[template]) or '';
if index then
local message = string.format (msg, index);
return string.format ('<span style="color:#d33">Error {{%s}}: %s (%s)</span>%s', template, message, help_links_t[template], cat)
end
return string.format ('<span style="color:#d33">Error {{%s}}: %s (%s)</span>%s', template, msg, help_links_t[template], cat)
end
--[=[-------------------------< _ N A T I V E _ N A M E >------------------------------------------------------
implements {{native name}}; entry point from a module
<args_t> is a table of parameter name/value pairs. Parameters that are supported are:
args_t[1] - IETF language tag (required)
args_t[2] - the native name (required)
args_t.italic - accepts string values 'no' or 'off'; {{lang}} expects 'no' so 'off' must be translated
args_t.italics - alias of |italic=
args_t.paren - accepts 'omit', 'off', or 'no'
args_t.icon - alias of paren
args_t.parensize -
args_t.fontsize - deprecated alias of |parensize=
args_t.nolink - any value inhibits wikilinking of language name
args_t.suppress_empty_list_error - when set to 'yes', suppresses an 'empty' error message; mostly for use within another template
this function calls these functions in Module:lang:
_is_ietf_tag
_lang
_name_from_tag
TODO:
add support for romanization and transliteration?
add support for postfix so that 'mis' can render something like this:
{{native|name|mis|Chotilapacquen|parent=omit|postfix= ([[Coahuiltecan languages|Coahuiltecan]])}}
Chotilapacquen (Coahuiltecan)
]=]
local function _native_name (args_t)
local template = (args_t.template and args_t.template) or 'native name'; -- for error messaging; use 'native name list' when called from native_name_list(), etc
if not (args_t[1] or args_t[2]) and yes_no (args_t.suppress_empty_list_error) then
return ''; -- if empty list error is suppressed, return empty string
elseif not args_t[1] then
return error_msg ((args_t.index and messages_t.tag_required_idx) or messages_t.tag_required, template, args_t.index)
elseif not args_t[2] then
return error_msg ((args_t.index and messages_t.name_required_idx) or messages_t.name_required, template, args_t.index)
end
args_t.italic = args_t.italics or args_t.italic; -- plural form first in {{native name}} but singular form for {{lang}}
args_t.italic = defined_values.italic[args_t.italic] or nil; -- translate assigned value
args_t.italics = nil; -- so unset as unneeded
args_t.paren = args_t.paren or args_t.icon;
args_t.icon = nil; -- unset as unneeded
args_t.parensize = args_t.parensize or args_t.fontsize or '100%';
args_t.fontsize = nil; -- unset as unneeded
local out_t = {};
table.insert (out_t, lang_module._lang ({args_t[1], args_t[2], ['italic']=args_t.italic, ['template']=template}));
if not defined_values.paren[args_t.paren] then
table.insert (out_t, ' ');
table.insert (out_t, table.concat ({
'<span class="languageicon" style="font-size:',
args_t.parensize,
'; font-weight:normal">'}));
if args_t.nolink then
table.insert (out_t, table.concat ({'(', lang_module._name_from_tag ({args_t[1], ['template']=template}), ')'}));
else
if lang_module._is_ietf_tag (args_t[1]) then
table.insert (out_t, table.concat ({'(', lang_module._name_from_tag ({args_t[1], ['link'] ='yes', ['template']=template}), ')'}));
else
table.insert (out_t, '(language?)'); -- TODO: any reason to keep this?
end
end
table.insert (out_t, '</span>');
end
return table.concat (out_t);
end
--[[--------------------------< N A T I V E _ N A M E >--------------------------------------------------------
implements {{native name}}; entry point from the template
{{#invoke:native name|native_name|<tag>|<name>|italic=|paren=|parensize=|nolink=}}
]]
local function native_name (frame)
return _native_name (getArgs (frame));
end
--[[--------------------------> _ N A T I V E _ N A M E _ L I S T >--------------------------------------------
implements {{native name}}; entry point from a module
<args_t> is a table of parameter name/value pairs. Supports enumerated forms of the {{native name}} parameters:
args_t.tagn - IETF language tag (|tag1= required)
args_t.namen - the native name (|name1= required)
args_t.italicn - accepts string values 'no' or 'off'
args_t.italicsn - alias of |italicn=
args_t.parenn - accepts 'omit', 'off', or 'no'
args_t.iconn - alias of paren
args_t.parensizen -
args_t.fontsizen - deprecated alias of |parensizen=
args_t.nolinkn - any value inhibits wikilinking of language name
also supports:
args_t.postfixn - wikitext to be appended to list item n (references other appropriate text)
args_t.suppress_empty_list_error - when set to 'yes', suppresses an 'empty list' error message; mostly for use within another template
]]
local function _native_name_list (args_t)
if args_t[1] then
return error_msg (messages_t.positional, 'native name list')
end
local unsorted_enumerators_t = {} -- unsorted k/v table of tagn and namen enumerators where k is the enumerator and v is always true
for param, _ in pairs (args_t) do -- loop through all parameters
local enumerator = mw.ustring.match (param, "^tag(%d+)$") -- is this a |tagn= parameter? extract enumerator if present
if enumerator then -- if there is an enumerator
unsorted_enumerators_t[tonumber(enumerator)] = true -- add enumerator to the table
else
local name_match = mw.ustring.match (param, "^name(%d+)$") -- is this a |tagn= parameter? extract enumerator if present
if name_match then -- if there is an enumerator
unsorted_enumerators_t[tonumber (name_match)] = true -- add enumerator to the table
end
end
end
local enumerators_t = {} -- will hold a sorted sequence of enumerators
for n, _ in pairs (unsorted_enumerators_t) do -- loop through the k/v table of enumerators
table.insert (enumerators_t, n) -- add the enumerator to the sequence
end
table.sort (enumerators_t) -- and ascending sort
local list_t = {}; -- list of formatted native names goes here
for _, n in ipairs (enumerators_t) do -- loop through the sorted enumerators
table.insert (list_t, table.concat ({
_native_name ({ -- go render the native name
args_t['tag'..n],
args_t['name'..n],
['italic'] = args_t['italic'..n],
['italics'] = args_t['italics'..n],
['paren'] = args_t['paren'..n],
['icon'] = args_t['icon'..n],
['parensize'] = args_t['parensize'..n],
['fontsize'] = args_t['fontsize'..n],
['nolink'] = args_t['nolink'..n],
['template'] = 'native name list', -- for error messaging
['index'] = n, -- for error messaging
}),
args_t['postfix'..n] or '',
}));
end
if 0 == #list_t then
return (yes_no (args_t.suppress_empty_list_error) and '') or -- return empty string when error suppressed
error_msg (messages_t.empty_list, 'native name list'); -- otherwise error
elseif 1 == #list_t then
return list_t[1]; -- return the very short list; TODO: add error?
else
return require ('Module:List').unbulleted (list_t); -- use unbulleted list from module
end
end
--[[--------------------------< N A T I V E _ N A M E _ L I S T >----------------------------------------------
implements {{native name list}}; entry point from the template
{{#invoke:native name list|native_name_list|tag1=<tag>|name1=<name>|italic1=|paren1=|parensize1=|nolink1=}}
]]
local function native_name_list (frame)
return _native_name_list (getArgs (frame));
end
--[[--------------------------< _ N A T I V E _ N A M E _ C H E C K E R >--------------------------------------
entry point from a module
implements {{native name checker}}
for use inside infoboxen:
|dataxx = {{native name checker|{{{native_name|}}}}}
inspects rendered content of {{{native_name}}}:
expects: at least one lang="<valid IETF tag>" html attribute; tag must begin with 2 or three letters followed
by a hyphen or double quote character: lang="zh-Hant" or lang="nav" or lang="oj"
emits error message when 2 or more lang="<valid IETF tag>" html attribute but list markup <li> tag not found
emits error message if any form of '<br />' tag is found per MOS:NOBREAK
returns:
nothing when |native_name= is omitted or empty
assigned value when no error
error message on error
]]
local function _native_name_checker (args_t)
local value = args_t[1];
if not value then -- if |native_name= is omitted or empty
return; -- return nothing
end
local _, count = value:gsub ('lang="%a%a%a?[%-"]%a*', '%1');
if 0 == count then
return table.concat ({value, error_msg (messages_t.malformed_param, 'native name checker')}, ' '); -- no {{lang}} or {{native_name}} template
end
if 1 < count then
if not value:find ('<div class="plainlist *" *>') or not value:find ('</div>$') then -- must be wrapped in 'plainlist' div
return table.concat ({value, error_msg (messages_t.list_markup, 'native name checker')}, ' ');
end
end
if value:find ('< */? *[Bb][Rr] */? *>') then -- look for something that vaguely resembles a <br /> tag
return table.concat ({value, error_msg (messages_t.br_list, 'native name checker')}, ' ');
end
return value; -- no failed tests, return the value as is
end
--[[--------------------------< N A T I V E _ N A M E _ C H E C K E R >--------------------------------------
entry point from a module
implements {{native name checker}}
]]
local function native_name_checker (frame)
return _native_name_checker (getArgs (frame));
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
native_name = native_name, -- template interface
native_name_list = native_name_list,
native_name_checker = native_name_checker,
_native_name = _native_name, -- other module interface
_native_name_list = _native_name_list,
_native_name_checker = _native_name_checker,
}
b58f845623d3e920e8098e96bd84a56d2d3079bb
Template:Fix comma category
10
1437
2772
2022-12-08T20:50:50Z
Pppery
6
Doc to subpage
wikitext
text/x-wiki
{{#invoke:String|replace|{{{1}}}|%[%[Category:(.-)from (.-) 2,(.-)%]%]|[[Category:%1 from %2 2%3]]|plain=false}}<noinclude>{{documentation}}</noinclude>
beac35ea2acb0b21dc3e27cb7807f3a10bbb7948
Template:Infobox French commune
10
1147
2473
2022-12-09T19:57:18Z
w>Terasail
0
Remove depreciated parameters from [[Template:Hidden begin]]
wikitext
text/x-wiki
<includeonly>{{Infobox settlement
<!-- See Template:Infobox settlement for additional fields and descriptions -->
| name = {{{name|}}}
| native_name = {{{native name|}}}
| native_name_lang = {{{native_name_lang}}}
| settlement_type = {{ safesubst:#if: {{{commune|}}} | {{{type|Part}}} of {{Link if exists|{{{commune}}} }} | {{{commune status|}}} }}
| total_type = {{ safesubst:#if: {{{total type|}}} | {{{total type|}}} | }}
| image_skyline = {{{image|}}}
| imagesize = {{{image size|270x250px}}}
| image_caption = {{{caption|}}}
| image_flag = {{{image flag|}}}
| flag_size = {{{image flag size|}}}
| flag_link = {{{flag_link|{{{flag link|}}}}}}
| image_shield = {{{image coat of arms|}}}
| shield_size = {{ safesubst:#if: {{{image coat of arms size|}}} | {{{image coat of arms size}}} | 80x80px }}
| shield_link = {{{shield_link|}}}
| motto = {{{city motto|}}}
| image_map = {{ safesubst:#if: {{{map|}}} | {{{map}}} | {{ safesubst:#if: {{{adjustable map|}}} | {{{adjustable map}}} }} }}
| mapsize = {{{map size|}}}
| map_caption = {{{map caption|}}}
| image_map1 = {{ safesubst:#if: {{infobox mapframe}} | {{hidden |title=Location of {{{name|}}} | contentstyle=height:5px; | content = <div class="center" style="margin-top:1em">{{Infobox mapframe|area_km2={{{area km2|}}} }}</div> }} }}
| pushpin_map = {{#switch: {{str left|{{{INSEE|}}}|2}}
| = <!-- blank INSEE code -->{{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }}
|03|15|43|63|01|07|26|38|42|69|73|74 = France#France Auvergne-Rhône-Alpes
|21|58|71|89|25|39|70|90 = France#France Bourgogne-Franche-Comté
|22|29|35|56 = France#France Bretagne
|18|28|36|37|41|45 = France#France Centre
|2A|2B = France#France Corsica
|67|68|08|10|51|52|54|55|57|88 = France#France Grand Est
|59|62|02|60|80 = France#France Hauts-de-France
|75|77|78|91|92|93|94|95 = France#France Île-de-France
|14|50|61|27|76 = France#France Normandy
|24|33|40|47|64|19|23|87|16|17|79|86 = France#France Nouvelle-Aquitaine
|11|30|34|48|66|09|12|31|32|46|65|81|82 = France#France Occitanie
|44|49|53|72|85 = France#France Pays de la Loire
|04|05|06|13|83|84 = France#France Provence-Alpes-Côte d'Azur
|97|98 = <!-- DOMTOM no map available -->{{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }}
|#default = {{ safesubst:#if: {{{map|}}} | | {{ safesubst:#if: {{{adjustable map|}}} | | {{ safesubst:#if: {{{coordinates|}}} | France }} }} }}
}}
| pushpin_mapsize = 270px
| pushpin_label_position = {{ safesubst:#ifexpr: {{safesubst:if empty|{{safesubst:#invoke:coordinates|coord2text|{{{coordinates|}}}|long}}|-2}} > 3 | left | right}}
| pushpin_map_caption =
| coordinates = {{{coordinates|}}}
| subdivision_type = Country
| subdivision_name = [[France]]
| subdivision_type1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|988 = [[Subdivisions of France#Overseas|''Sui generis'' collectivity]]
|975|977|978|986|987 = [[Overseas collectivity]]
|971|972|973|974|976 = [[Overseas departments and regions of France|Overseas region and department]]
|#default = [[Regions of France|Region]]
}}
| subdivision_name1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|975 = [[Saint Pierre and Miquelon]]
|976 = [[Mayotte]]
|977 = [[Saint Barthélemy]]
|978 = [[Collectivity of Saint Martin|Saint Martin]]
|986 = [[Wallis and Futuna]]
|987 = [[French Polynesia]]
|988 = [[New Caledonia]]
|971 = [[Guadeloupe]]
|972 = [[Martinique]]
|973 = [[French Guiana]]
|974 = [[Réunion]]
}}<!--
-->{{ safesubst:#switch: {{str left|{{{INSEE}}}|2}}
|03|15|43|63|01|07|26|38|42|69|73|74 = [[Auvergne-Rhône-Alpes]]
|22|29|35|56 = [[Brittany (administrative region)|Brittany]]
|21|58|71|89|25|39|70|90 = [[Bourgogne-Franche-Comté]]
|18|28|36|37|41|45 = [[Centre-Val de Loire]]
|2A|2B = [[Corsica]]
|67|68|08|10|51|52|54|55|57|88 = [[Grand Est]]
|59|62|02|60|80 = [[Hauts-de-France]]
|75|77|78|91|92|93|94|95 = [[Île-de-France]]
|14|50|61|27|76 = [[Normandy (administrative region)|Normandy]]
|24|33|40|47|64|19|23|87|16|17|79|86 = [[Nouvelle-Aquitaine]]
|11|30|34|48|66|09|12|31|32|46|65|81|82 = [[Occitania (administrative region)|Occitania]]
|44|49|53|72|85 = [[Pays de la Loire]]
|04|05|06|13|83|84 = [[Provence-Alpes-Côte d'Azur]]
}}
| subdivision_type2 = {{ safesubst:#if: {{{province|}}} | [[Administrative divisions of New Caledonia|Province]] | {{ safesubst:#if: {{{administrative subdivision|}}} | [[Administrative divisions of French Polynesia|Subdivision]] | {{ safesubst:#switch: {{{INSEE}}}
|69003 |69029 |69033 |69034 |69040 |69044 |69046 |69063 |69068 |69069 |69071 |69072 |69081 |69085 |69087 |69088 |69089 |69091 |69096 |69100 |69116 |69117 |69123 |69127 |69142 |69143 |69149 |69152 |69153 |69163 |69168 |69191 |69194 |69199 |69202 |69204 |69205 |69207 |69233 |69244 |69250 |69256 |69259 |69260 |69266 |69271 |69273 |69275 |69276 |69278 |69279 |69282 |69283 |69284 |69286 |69290 |69292 |69293 |69296 = [[Territorial collectivity|Metropolis]]
|#default = {{ safesubst:#switch: {{str left|{{{INSEE}}}|2}} |97|98 = |#default = [[Departments of France|Department]] }} }} }} }}
| subdivision_name2 = {{ safesubst:#if: {{{province|}}} | {{{province}}} | {{ safesubst:#if: {{{administrative subdivision|}}} | {{{administrative subdivision}}} | {{ safesubst:#switch: {{{INSEE}}}
|69003 |69029 |69033 |69034 |69040 |69044 |69046 |69063 |69068 |69069 |69071 |69072 |69081 |69085 |69087 |69088 |69089 |69091 |69096 |69100 |69116 |69117 |69123 |69127 |69142 |69143 |69149 |69152 |69153 |69163 |69168 |69191 |69194 |69199 |69202 |69204 |69205 |69207 |69233 |69244 |69250 |69256 |69259 |69260 |69266 |69271 |69273 |69275 |69276 |69278 |69279 |69282 |69283 |69284 |69286 |69290 |69292 |69293 |69296 = [[Lyon Metropolis]]
|#default = {{ safesubst:#switch: {{str left|{{{INSEE}}}|2}}
|01 = [[Ain]]
|02 = [[Aisne]]
|03 = [[Allier]]
|04 = [[Alpes-de-Haute-Provence]]
|05 = [[Hautes-Alpes]]
|06 = [[Alpes-Maritimes]]
|07 = [[Ardèche]]
|08 = [[Ardennes (department)|Ardennes]]
|09 = [[Ariège (department)|Ariège]]
|10 = [[Aube]]
|11 = [[Aude]]
|12 = [[Aveyron]]
|13 = [[Bouches-du-Rhône]]
|14 = [[Calvados (department)|Calvados]]
|15 = [[Cantal]]
|16 = [[Charente]]
|17 = [[Charente-Maritime]]
|18 = [[Cher (department)|Cher]]
|19 = [[Corrèze]]
|2A = [[Corse-du-Sud]]
|2B = [[Haute-Corse]]
|21 = [[Côte-d'Or]]
|22 = [[Côtes-d'Armor]]
|23 = [[Creuse]]
|24 = [[Dordogne]]
|25 = [[Doubs]]
|26 = [[Drôme]]
|27 = [[Eure]]
|28 = [[Eure-et-Loir]]
|29 = [[Finistère]]
|30 = [[Gard]]
|31 = [[Haute-Garonne]]
|32 = [[Gers]]
|33 = [[Gironde]]
|34 = [[Hérault]]
|35 = [[Ille-et-Vilaine]]
|36 = [[Indre]]
|37 = [[Indre-et-Loire]]
|38 = [[Isère]]
|39 = [[Jura (department)|Jura]]
|40 = [[Landes (department)|Landes]]
|41 = [[Loir-et-Cher]]
|42 = [[Loire (department)|Loire]]
|43 = [[Haute-Loire]]
|44 = [[Loire-Atlantique]]
|45 = [[Loiret]]
|46 = [[Lot (department)|Lot]]
|47 = [[Lot-et-Garonne]]
|48 = [[Lozère]]
|49 = [[Maine-et-Loire]]
|50 = [[Manche]]
|51 = [[Marne (department)|Marne]]
|52 = [[Haute-Marne]]
|53 = [[Mayenne]]
|54 = [[Meurthe-et-Moselle]]
|55 = [[Meuse (department)|Meuse]]
|56 = [[Morbihan]]
|57 = [[Moselle (department)|Moselle]]
|58 = [[Nièvre]]
|59 = [[Nord (French department)|Nord]]
|60 = [[Oise]]
|61 = [[Orne]]
|62 = [[Pas-de-Calais]]
|63 = [[Puy-de-Dôme]]
|64 = [[Pyrénées-Atlantiques]]
|65 = [[Hautes-Pyrénées]]
|66 = [[Pyrénées-Orientales]]
|67 = [[Bas-Rhin]]
|68 = [[Haut-Rhin]]
|69 = [[Rhône (department)|Rhône]]
|70 = [[Haute-Saône]]
|71 = [[Saône-et-Loire]]
|72 = [[Sarthe]]
|73 = [[Savoie]]
|74 = [[Haute-Savoie]]
|75 = {{safesubst:#ifeq:{{safesubst:FULLPAGENAME}}|Paris|Paris|[[Paris]]}}
|76 = [[Seine-Maritime]]
|77 = [[Seine-et-Marne]]
|78 = [[Yvelines]]
|79 = [[Deux-Sèvres]]
|80 = [[Somme (department)|Somme]]
|81 = [[Tarn (department)|Tarn]]
|82 = [[Tarn-et-Garonne]]
|83 = [[Var (department)|Var]]
|84 = [[Vaucluse]]
|85 = [[Vendée]]
|86 = [[Vienne]]
|87 = [[Haute-Vienne]]
|88 = [[Vosges (department)|Vosges]]
|89 = [[Yonne]]
|90 = [[Territoire de Belfort]]
|91 = [[Essonne]]
|92 = [[Hauts-de-Seine]]
|93 = [[Seine-Saint-Denis]]
|94 = [[Val-de-Marne]]
|95 = [[Val-d'Oise]]
|#default =
}} }} }} }}
| subdivision_type3 = {{ safesubst:#if: {{{arrondissement|}}} | [[Arrondissements of France|Arrondissement]] }}
| subdivision_name3 = {{ safesubst:#ifexist: Arrondissement of {{{arrondissement|}}} | [[Arrondissement of {{{arrondissement|(arrondissement)}}}|{{{arrondissement}}}]] | {{{arrondissement|}}} }}
| subdivision_type4 = {{ safesubst:#if: {{{canton|}}} | [[Cantons of France|Canton]] }}
| subdivision_name4 = {{ safesubst:#ifexist: Canton of {{{canton|}}} | [[Canton of {{{canton|(canton)}}}|{{{canton}}}]] | {{{canton|}}} }}
| subdivision_type5 = {{ safesubst:#if: {{{intercommunality|}}} | [[Communes of France#Intercommunality|Intercommunality]] }}
| subdivision_name5 = {{{intercommunality|}}}
| subdivision_type6 = {{ safesubst:#if: {{{commune|}}} | [[Communes of France|Commune]] }}
| subdivision_name6 = {{Link if exists|{{{commune}}} }}
| parts_type = {{{subdivisions entry|}}}
| parts = {{{subdivisions|}}}
| leader_party = {{{party|}}}
| leader_title = Mayor {{ safesubst:#if: {{{term|}}} | {{nobold|({{{term}}}) }} }}
| leader_name = {{{mayor|}}}
| area_footnotes = {{ safesubst:#if: {{{area km2|}}} |<sup>'''1'''</sup> }}{{{area footnotes|}}}
| area_urban_footnotes = {{ safesubst:#if: {{{urban area date|}}} | ({{{urban area date|}}}) }}
| area_urban_km2 = {{{urban area km2|}}}
| area_metro_footnotes = {{ safesubst:#if: {{{metro area date|}}} | ({{{metro area date|}}}) }}
| area_metro_km2 = {{{metro area km2|}}}
| area_total_km2 = {{{area km2|}}}
| population_footnotes = {{{population footnotes|}}}
| population_as_of = {{ safesubst:#ifeq: {{Str find|{{{population date}}}|UNIQ}} | 6 | {{Str number/trim|{{{population date}}}}} | {{{population date|}}} }}
| population_rank = {{{population ranking|}}}
| population_urban_footnotes = {{ safesubst:#if: {{{urban pop date|}}} | ({{{urban pop date|}}}) }}
| population_urban = {{{urban pop|}}}
| population_density_urban_km2 = auto
| population_metro_footnotes = {{ safesubst:#if: {{{metro area pop date|}}} | ({{{metro area pop date|}}}) }}
| population_metro = {{{metro area pop|}}}
| population_density_metro_km2 = auto
| population_total = {{{population|}}}
| population_density_km2 = auto
| population_demonym = {{{population demonym|{{{population_demonym|{{{demonym|}}}}}}}}}
| demographics_type1 = {{ safesubst:#if: {{{ethnic|}}} | Ethnic distribution }}
| demographics1_footnotes = <!-- for references: use <ref> tags -->
| demographics1_title1 = {{{ethnic date|}}}
| demographics1_info1 = {{{ethnic|}}}
| timezone1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|971 |972 |977 |978 = [[Atlantic Time Zone|AST]]
|973 |974 |975 |976 |986 |987 |988 = <!-- no named time zone -->
|#default = [[Central European Time|CET]]
}}
| utc_offset1 = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|971 |972 |977 |978 = −04:00
|973 |975 = −03:00
|976 = +03:00
|974 = +04:00
|988 = +11:00
|986 = +12:00
|987 = {{{utc_offset|{{{utc offset|}}}}}} <!-- French Polynesia has 3 time zones -->
|#default = +01:00
}}
| timezone1_DST = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|971 |972 |973 |974 |976 |977 |978 |986 |987 |988 = <!-- no daylight saving time -->
|975 = <!-- no named time zone -->
|#default = [[Central European Summer Time|CEST]]
}}
| utc_offset1_DST = {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|975 = −02:00
|971 |972 |973 |974 |976 |977 |978 |986 |987 |988 = <!-- no daylight saving time -->
|#default = +02:00
}}
| postal_code_type = {{ safesubst:#if: {{{commune|}}} | Postal code | [[INSEE code|INSEE]]/Postal code }}
| postal_code = {{ safesubst:#if: {{{commune|}}} | {{{postal code|}}} | {{ safesubst:#if:{{{insee|{{{INSEE|}}}}}} | {{ safesubst:#switch: {{str left|{{{INSEE|}}}|3}}
|975 |977 |978 |986 = {{{insee|{{{INSEE}}}}}} <!-- no INSEE page for the commune available -->
|976 = [https://www.insee.fr/fr/statistiques/2011101?geo=COM-{{{insee|{{{INSEE}}}}}} {{{insee|{{{INSEE}}}}}}] <!-- "Dossier complet" page for the commune available -->
|987 = [https://www.ispf.pf/Publications/fiches-communales {{{insee|{{{INSEE}}}}}}] <!-- "Fiche communale" page for the commune available -->
|988 = [https://www.isee.nc/publications/la-nouvelle-caledonie-en-cartes-et-en-chiffres/chiffres-cles-des-communes {{{insee|{{{INSEE}}}}}}] <!-- "Fiche communale" page for the commune available -->
|#default = [https://www.insee.fr/fr/statistiques/1405599?geo=COM-{{{insee|{{{INSEE}}}}}} {{{insee|{{{INSEE}}}}}}] <!-- "Comparateur de territoire" page for the commune available -->
}} / }}{{{postal code|}}} }}
| area_code_type = {{ safesubst:#if: {{{dialling code|}}} | [[Telephone numbers in France|Dialling codes]] }}
| area_code = {{{dialling code|}}}
| blank_name_sec1 = {{ safesubst:#if: {{{elevation min m|}}} | Elevation{{ safesubst:#if: {{{elevation footnotes|}}} | {{{elevation footnotes}}} }} }}
| blank_info_sec1 = {{ safesubst:#if: {{{elevation min m|}}} | {{convert|{{formatnum:{{{elevation min m}}}|R}}|–|{{formatnum:{{{elevation max m}}}|R}}|m|ft|abbr=on}} }} {{ safesubst:#if: {{{elevation m|}}} | <br/>(avg. {{convert|{{formatnum:{{{elevation m}}}|R}}|m|ft|abbr=on|disp=or}}) }}
| website = {{{website|}}}
| module = {{{module|}}}
| footnotes = {{{footnotes|}}}{{ safesubst:#if:{{{area km2|}}} | {{ safesubst:#if:{{{province|}}} | <sup>'''1'''</sup> New Caledonia Land Register (DITTT) data, which exclude lakes and ponds larger than 1 km² (0.386 sq mi or 247 acres) as well as the estuaries of rivers. | <sup>'''1'''</sup> French Land Register data, which excludes lakes, ponds, glaciers > 1 km<sup>2</sup> (0.386 sq mi or 247 acres) and river estuaries. }} }}
}}{{safesubst:#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox French commune with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox French commune]] with unknown parameter "_VALUE_"|ignoreblank=y| | adjustable map | administrative subdivision | area footnotes | area km2 | arrondissement | canton | caption | city motto | commune | commune status | coordinates | dialling code | elevation footnotes | elevation m | elevation max m | elevation min m | ethnic | ethnic date | flag link | flag_link | footnotes | image | image coat of arms | image coat of arms size | image flag | image flag size | image size | INSEE | insee | intercommunality | map | map caption | map dot label | map size | mayor | metro area date | metro area km2 | metro area pop | metro area pop date | module | name | native name | native_name_lang | party | population | population date | population demonym | population footnotes | population ranking | population_demonym | postal code | province | shield_link | subdivisions | subdivisions entry | term | time zone | time zone DST | timezone | timezone_DST | total type | type | urban area date | urban area km2 | urban pop | urban pop date | utc offset | utc offset DST | utc_offset | utc_offset_DST | website | demonym
}}<!--
km²: removed, unused. Better not use incidental characters that are not available elsewhere (eg, no area_km² parameter)
demonym: used 1400x, so added next to population demonym.
error tracking categories:
-->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{population| }}}|R}} / {{{area_km2|{{{area km2| }}} }}} }} | {{Main other|[[Category:France articles requiring maintenance|Density error]]}} | }}<!-- testing density
-->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{elevation min m|}}}|R}} + {{formatnum:{{{elevation max m|}}}|R}} + {{formatnum:{{{elevation m|}}}|R}} + 2 }} | {{Main other|[[Category:France articles requiring maintenance|Elevation error]]}} | }}<!-- testing elevation
-->{{ safesubst:#ifexpr: {{str find|{{{map dot label|{{{name|{{PAGENAME}}}}}}}}|<}} > 0 | {{Main other|[[Category:France articles requiring maintenance|L]]}} | {{ safesubst:#ifexpr: {{str find|{{{map dot label|{{{name|{{PAGENAME}}}}}}}}|[}} > 0 | {{Main other|[[Category:France articles requiring maintenance|L]]}}|}} }}<!-- Check for brackets in labels
-->{{ safesubst:#if: {{{name|}}} | | {{Main other|[[Category:France articles requiring maintenance|Name]]}} }}<!-- testing name
-->{{ safesubst:#if: {{{coordinates|}}} | | {{Main other|[[Category:France articles requiring maintenance|Nomap]]}} }}<!-- testing map
-->{{ safesubst:#iferror: {{ safesubst:#expr: {{formatnum:{{{population}}}|R}} + 2 }} | {{Main other|[[Category:France articles requiring maintenance|Population error]]}} | }}<!-- testing population
-->{{Main other|{{ safesubst:#if: {{{INSEE|}}} | | [[Category:France articles requiring maintenance|I]]}} }}<!-- Check for INSEE code
-->{{Main other|{{ safesubst:#if: {{{mayor|}}} | {{ safesubst:#if: {{{term|}}} | | [[Category:France articles requiring maintenance|Term]]}} | }} }}<!-- Check if "mayor" is given without "term" parameter
-->{{Main other|{{ safesubst:#if: {{{term|}}} | {{ safesubst:#if: {{{mayor|}}} | | [[Category:France articles requiring maintenance|Term]]}} | }} }}<!-- Check if "term" is given without "mayor" parameter
--></includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
a87b164620c92ac0ecbbbd7d218b7c4355974412
Template:Plainlist/styles.css
10
154
357
2022-12-11T06:59:53Z
wikipedia>Izno
0
add this reset from mobile.css
sanitized-css
text/css
/* {{pp-template|small=yes}} */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
padding: 0; /* Reset Minerva default */
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
51706efa229ff8794c0d94f260a208e7c5e6ec30
Template:Indented plainlist
10
1246
2580
2022-12-12T00:21:22Z
w>Izno
0
-raw plainlist
wikitext
text/x-wiki
{{plainlist|class={{{class|}}}|style=margin-left:{{{in|{{{indent|1em}}}}}};text-indent:-{{{in|{{{indent|1em}}}}}};{{{style|}}}}}{{#if:{{{1|}}}|
{{{1}}}
{{endplainlist}}}}<noinclude></div>
{{documentation}}
</noinclude>
53356b0408eca171599999a642cb8ababe0874c7
Template:Hidden end
10
485
1071
2022-12-12T14:54:45Z
wikipedia>Terasail
0
Only noinclude once
wikitext
text/x-wiki
<includeonly></div></div></includeonly><noinclude>
{{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}}
{{Documentation|Template:Hidden begin/doc}}
</noinclude>
6cc7eb4776ef10092d5f7d48da123117e7b430b2
Template:Plainlist
10
599
1346
2022-12-12T22:45:26Z
wikipedia>Izno
0
add tstyles here
wikitext
text/x-wiki
<templatestyles src="Plainlist/styles.css"/><div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
582fe7098c25c1ecfc0ad32f62ecd674ebe2bdf0
Module:Side box
828
109
265
2022-12-13T04:33:19Z
wikipedia>Izno
0
we cookin with plainlist templatestyles now
Scribunto
text/plain
local yesno = require('Module:Yesno')
local p = {}
local function makeData(args)
local data = {}
-- Main table classes
data.classes = {}
if yesno(args.metadata) ~= false then
table.insert(data.classes, 'metadata')
end
if args.position and args.position:lower() == 'left' then
table.insert(data.classes, 'side-box-left')
else
table.insert(data.classes, 'side-box-right')
end
if args.collapsible then
table.insert(data.classes, 'mw-collapsible')
if args.collapsible == "collapsed" then
table.insert(data.classes, 'mw-collapsed')
end
data.collapsible = true
end
table.insert(data.classes, args.class)
-- Image
if args.image and args.image ~= 'none' then
data.image = args.image
end
-- we have to check to see if a downstream use has plainlist like
-- Template:Sister_project. also it's the default. wikitext is :(
if args.textclass == 'plainlist' or not args.textclass then
data.textclass = 'plainlist'
data.plainlist_templatestyles = 'Plainlist/styles.css'
else
data.textclass = args.textclass
end
-- Copy over data that does not need adjusting
local argsToCopy = {
-- aria qualities
'role',
'labelledby',
-- Styles
'style',
'textstyle',
'templatestyles',
-- Above row
'above',
'abovestyle',
-- Body row
'text',
'imageright',
-- Below row
'below',
}
for i, key in ipairs(argsToCopy) do
data[key] = args[key]
end
return data
end
local function renderSidebox(data)
-- Renders the sidebox HTML.
-- Table root
local root = mw.html.create('div')
root:attr('role', data.role)
:attr('aria-labelledby', data.labelledby)
:addClass('side-box')
for i, class in ipairs(data.classes or {}) do
root:addClass(class)
end
if data.style then
root:cssText(data.style)
end
local frame = mw.getCurrentFrame()
if data.plainlist_templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles', args = { src = data.plainlist_templatestyles }
})
end
-- The "above" row
if data.above then
local above = root:newline():tag('div')
above:addClass('side-box-abovebelow')
:newline()
:wikitext(data.above)
if data.textstyle then
above:cssText(data.textstyle)
end
if data.abovestyle then
above:cssText(data.abovestyle)
end
end
-- The body row
local body = root:newline():tag('div')
body:addClass('side-box-flex')
:addClass(data.collapsible and 'mw-collapsible-content')
:newline()
if data.image then
body:tag('div')
:addClass('side-box-image')
:wikitext(data.image)
end
local text = body:newline():tag('div')
text:addClass('side-box-text')
:addClass(data.textclass)
if data.textstyle then
text:cssText(data.textstyle)
end
text:wikitext(data.text)
if data.imageright then
body:newline():tag('div')
:addClass('side-box-imageright')
:wikitext(data.imageright)
end
-- The below row
if data.below then
local below = root:newline():tag('div')
below
:addClass('side-box-abovebelow')
:wikitext(data.below)
if data.textstyle then
below:cssText(data.textstyle)
end
end
root:newline()
local templatestyles = ''
if data.templatestyles then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = data.templatestyles }
}
end
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Side box/styles.css' }
} .. templatestyles .. tostring(root)
end
function p._main(args)
local data = makeData(args)
return renderSidebox(data)
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
096bef4a3721857fc16eb509a4f8d75973484485
Template:Hidden begin
10
250
1069
2022-12-13T16:00:54Z
wikipedia>Terasail
0
Remove tracking now that parameters have been removed from transclusions
wikitext
text/x-wiki
<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!--
--><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!--
--><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!--
Content added after the template
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
be0f4e092203b931810fbff9ed6a1b7af51c025f
Module:Shortcut
828
136
321
2022-12-13T23:41:34Z
wikipedia>Izno
0
use module:list for plainlist, move templatestyles to module space
Scribunto
text/plain
-- This module implements {{shortcut}}.
-- Set constants
local CONFIG_MODULE = 'Module:Shortcut/config'
-- Load required modules
local checkType = require('libraryUtil').checkType
local yesno = require('Module:Yesno')
local p = {}
local function message(msg, ...)
return mw.message.newRawMessage(msg, ...):plain()
end
local function makeCategoryLink(cat)
return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
end
function p._main(shortcuts, options, frame, cfg)
checkType('_main', 1, shortcuts, 'table')
checkType('_main', 2, options, 'table', true)
options = options or {}
frame = frame or mw.getCurrentFrame()
cfg = cfg or mw.loadData(CONFIG_MODULE)
local templateMode = options.template and yesno(options.template)
local redirectMode = options.redirect and yesno(options.redirect)
local isCategorized = not options.category or yesno(options.category) ~= false
-- Validate shortcuts
for i, shortcut in ipairs(shortcuts) do
if type(shortcut) ~= 'string' or #shortcut < 1 then
error(message(cfg['invalid-shortcut-error'], i), 2)
end
end
-- Make the list items. These are the shortcuts plus any extra lines such
-- as options.msg.
local listItems = {}
for i, shortcut in ipairs(shortcuts) do
local templatePath, prefix
if templateMode then
-- Namespace detection
local titleObj = mw.title.new(shortcut, 10)
if titleObj.namespace == 10 then
templatePath = titleObj.fullText
else
templatePath = shortcut
end
prefix = options['pre' .. i] or options.pre or ''
end
if options.target and yesno(options.target) then
listItems[i] = templateMode
and string.format("{{%s[[%s|%s]]}}", prefix, templatePath, shortcut)
or string.format("[[%s]]", shortcut)
else
listItems[i] = frame:expandTemplate{
title = 'No redirect',
args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}
}
if templateMode then
listItems[i] = string.format("{{%s%s}}", prefix, listItems[i])
end
end
end
table.insert(listItems, options.msg)
-- Return an error if we have nothing to display
if #listItems < 1 then
local msg = cfg['no-content-error']
msg = string.format('<strong class="error">%s</strong>', msg)
if isCategorized and cfg['no-content-error-category'] then
msg = msg .. makeCategoryLink(cfg['no-content-error-category'])
end
return msg
end
local root = mw.html.create()
root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} })
-- Anchors
local anchorDiv = root
:tag('div')
:addClass('module-shortcutanchordiv')
for i, shortcut in ipairs(shortcuts) do
local anchor = mw.uri.anchorEncode(shortcut)
anchorDiv:tag('span'):attr('id', anchor)
end
-- Shortcut heading
local shortcutHeading
do
local nShortcuts = #shortcuts
if nShortcuts > 0 then
local headingMsg = options['shortcut-heading'] or
redirectMode and cfg['redirect-heading'] or
cfg['shortcut-heading']
shortcutHeading = message(headingMsg, nShortcuts)
shortcutHeading = frame:preprocess(shortcutHeading)
end
end
-- Shortcut box
local shortcutList = root
:tag('div')
:addClass('module-shortcutboxplain noprint')
:attr('role', 'note')
if options.float and options.float:lower() == 'left' then
shortcutList:addClass('module-shortcutboxleft')
end
if options.clear and options.clear ~= '' then
shortcutList:css('clear', options.clear)
end
if shortcutHeading then
shortcutList
:tag('div')
:addClass('module-shortcutlist')
:wikitext(shortcutHeading)
end
local ubl = require('Module:List').unbulleted(listItems)
shortcutList:wikitext(ubl)
return tostring(root)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
-- Separate shortcuts from options
local shortcuts, options = {}, {}
for k, v in pairs(args) do
if type(k) == 'number' then
shortcuts[k] = v
else
options[k] = v
end
end
-- Compress the shortcut array, which may contain nils.
local function compressArray(t)
local nums, ret = {}, {}
for k in pairs(t) do
nums[#nums + 1] = k
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[i] = t[num]
end
return ret
end
shortcuts = compressArray(shortcuts)
return p._main(shortcuts, options, frame)
end
return p
03fd46a265e549852a9ed3d3a9249b247d84cb4f
Template:Hidden begin/styles.css
10
253
1091
2022-12-15T21:41:20Z
Pppery
6
Protection template
sanitized-css
text/css
/* {{pp-template}} */
.hidden-begin {
box-sizing: border-box;
width: 100%;
padding: 5px;
border: none;
font-size: 95%;
}
.hidden-title {
font-weight: bold;
line-height: 1.6;
text-align: left;
}
.hidden-content {
text-align: left;
}
d4ab5680ca52bee10cfd2992f2adc45452c5ab37
Template:Mbox
10
115
365
276
2022-12-18T05:46:16Z
TadejM
22
wikitext
text/x-wiki
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
5bfb2becf8bed35974b47e3ff8660dc14bee40c7
Template:Infobox UK country
10
1145
2471
2022-12-18T22:56:31Z
w>Mario Hidalgo 2020
0
Undid revision 1128192241 by [[Special:Contributions/Mario Hidalgo 2020|Mario Hidalgo 2020]] ([[User talk:Mario Hidalgo 2020|talk]])
wikitext
text/x-wiki
<includeonly>{{Infobox country
| conventional_long_name = {{{conventional_long_name|{{{common_name|{{PAGENAME}}}}}}}}
| common_name = {{{common_name|{{PAGENAME}}}}}
| image_map = {{{image_map|{{{common_name|{{PAGENAME}}}}} in the UK and Europe.svg}}}
| map_caption = {{{map_caption|{{map caption |location_color=dark green |subregion=the [[United Kingdom]] |subregion_color=green |region=Europe|region_color=dark grey}}}}}
| membership_type = {{unbulleted list|style=line-height:normal;white-space:nowrap;|item2_style=margin-top:3px;|{{{membership_type|[[Sovereign state]]}}}|{{#if:{{{legal_jurisdiction|}}}|[[Law of the United Kingdom#Three legal systems|Legal jurisdiction]]}}}}
| membership = {{unbulleted list|style=line-height:normal;|item2_style=margin-top:3px;|{{{membership|[[United Kingdom]]}}}|{{{legal_jurisdiction|}}}}}
| government_type = {{{government_type|}}}
| leader_title1 = [[Monarchy of the United Kingdom|Monarch]]
| leader_title2 = [[First Minister of {{{common_name|{{PAGENAME}}}}}|First Minister]]
| leader_title3 = [[Deputy First Minister of {{{common_name|{{PAGENAME}}}}}|Deputy First Minister]]
<!-- NOTE: The IF statements below ensure the child infobox (intended to create a separate section for leaders under "Parliament of the United Kingdom") goes in the last transcluded "leader_name" field. For example on [[England]], only the monarch is shown, so the first two lines below are nullified (null1 and null2 being invalid field names). In the case of [[Northern Ireland]], all of the fields are used, so none of the lines are nullified. -->
| {{#if:{{{first_minister|}}}{{{deputy_first_minister|}}}|leader_name1|null1}} = {{#if:{{{first_minister|}}}{{{deputy_first_minister|}}}|{{{monarch|}}}}}
| {{#if:{{{deputy_first_minister|}}}|leader_name2|null2}} = {{#if:{{{deputy_first_minister|}}}|{{{first_minister|}}}}}
| leader_name{{#if:{{{deputy_first_minister|}}}|3|{{#if:{{{first_minister|}}}|2|1}}}} = {{{deputy_first_minister|{{{first_minister|{{{monarch|}}}}}}}}}<!--
-->{{infobox|child=yes|headerstyle=text-align:left;|labelstyle=font-weight:normal;padding-left:10px;
| header1 = {{#if:{{{secretary_of_state|}}}{{{number_of_mps|}}}|[[Parliament of the United Kingdom]]}}
| rowclass2 = mergedrow
| label2 = {{#if:{{{secretary_of_state|}}}|• [[Secretary of State for {{{common_name|{{PAGENAME}}}}}|Secretary of State]]}}
| data2 = {{{secretary_of_state|}}}
| rowclass3 = mergedrow
| label3 = {{#if:{{{number_of_mps|}}}|• [[List of MPs elected in the 2019 United Kingdom general election|House of Commons]]}}
| data3 = {{#if:{{{number_of_mps|}}}|[[List of MPs for constituencies in {{{common_name|{{PAGENAME}}}}} (2019–present)|{{{number_of_mps|}}} MPs]] (of 650)}}
| subheader = {{#if:{{both|{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}{{#ifeq:{{yesno|{{{embed|}}}}}|yes|1}}|{{{settlement_type|{{{type|}}}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}}
}}
| currency = {{{currency|[[Pound sterling]]}}}
| currency_code = {{{currency_code|GBP{{))!}}; {{!((}}Pound sign{{!}}£}}}
| time_zone = {{{time_zone|[[Greenwich Mean Time]]}}}
| utc_offset = {{{utc_offset|{{sp}}}}}
| time_zone_DST = {{{time_zone_DST|[[British Summer Time]]}}}
| utc_offset_DST = {{{utc_offset_DST|+1}}}
| date_format = {{{date_format|dd/mm/yyyy ([[Anno Domini|AD]])}}}
| drives_on = {{{drives_on|left}}}
| calling_code = {{{calling_code|[[Telephone numbers in the United Kingdom|+44]]}}}
| native_name = {{{native_name|}}}
| image_flag = {{{image_flag|}}}
| flag_caption = {{{flag_caption|Flag}}}
| image_coat = {{{image_coat|{{{image_symbol|}}}}}}
| symbol_width = {{{symbol_width|}}}
| symbol_type = {{{symbol_type|}}}
| national_motto = {{{national_motto|}}}
| englishmotto = {{{englishmotto|}}}
| national_anthem = {{{national_anthem|}}}
| status = {{{status|}}}
| capital = {{{capital|}}}
| coordinates = {{{coordinates|}}}
| largest_city = {{{largest_city|}}}
| languages_type = {{{languages_type|}}}
| languages = {{{languages|}}}
| languages2_type = {{{languages2_type|}}}
| languages2 = {{{languages2|}}}
| languages2_sub = {{{languages2_sub|}}}
| ethnic_groups = {{{ethnic_groups|}}}
| ethnic_groups_year = {{{ethnic_groups_year|}}}
| religion = {{{religion|}}}
| religion_year = {{{religion_year|}}}
| demonym = {{{demonym|}}}
| org_type = {{{type|}}}
| legislature = {{{legislature|}}}
| sovereignty_type = {{{sovereignty_type|}}}
| sovereignty_note = {{{sovereignty_note|}}}
| established_event1 = {{{established_event1|}}}
| established_date1 = {{{established_date1|}}}
| established_event2 = {{{established_event2|}}}
| established_date2 = {{{established_date2|}}}
| established_event3 = {{{established_event3|}}}
| established_date3 = {{{established_date3|}}}
| established_event4 = {{{established_event4|}}}
| established_date4 = {{{established_date4|}}}
| established_event5 = {{{established_event5|}}}
| established_date5 = {{{established_date5|}}}
| area_rank = {{{area_rank|}}}
| area_magnitude = {{{area_magnitude|}}}
| area_km2 = {{{area_km2|}}}
| area_sq_mi = {{{area_sq_mi|}}}
| percent_water = {{{percent_water|}}}
| area_footnote = {{{area_footnote|}}}
| area_label = {{{area_label|Total}}}
| area_label2 = {{{area_label2|}}}
| area_data2 = {{{area_data2|}}}
| population_estimate = {{{population_estimate|}}}
| population_estimate_rank = {{{population_estimate_rank|}}}
| population_estimate_year = {{{population_estimate_year|}}}
| population_census = {{{population_census|}}}
| population_census_year = {{{population_census_year|}}}
| population_density_km2 = {{{population_density_km2|}}}
| population_density_sq_mi = {{{population_density_sq_mi|}}}
<!-- NOTE: population_density_rank is shown after pop_den_footnote, so normal transclusion of the former causes issues with the child infobox below. The child infobox can't be placed under population_density_rank because the value of this field is surrounded by brackets and linked. -->
| pop_den_footnote = {{{pop_den_footnote|}}}{{#if:{{{population_density_rank|}}}|{{sp}}([[List of countries and territories by population density|{{{population_density_rank}}}]])}}<!--
-->{{#if:{{{GVA|}}}{{{GVA_per_capita|}}}
|{{infobox|child=yes|headerstyle=text-align:left;
| label1 = [[Gross value added|GVA]]
| data1 = {{{GVA_year|}}} estimate
| label2 = {{nobold| • Total}}
| data2 = {{{GVA|}}}
| rowclass2 = mergedrow
| label3 = {{nobold| • Per capita}}
| data3 = {{{GVA_per_capita|}}}
| rowclass3 = mergedrow
}}
}}
| GDP_PPP = {{{GDP_PPP|}}}
| GDP_PPP_year = {{{GDP_PPP_year|}}}
| GDP_PPP_per_capita = {{{GDP_PPP_per_capita|}}}
| GDP_nominal = {{{GDP_nominal|}}}
| GDP_nominal_year = {{{GDP_nominal_year|}}}
| GDP_nominal_per_capita = {{{GDP_nominal_per_capita|}}}
| Gini_year = {{{Gini_year|}}}
| Gini_change = {{{Gini_change|}}}
| Gini = {{{Gini|}}}
| Gini_ref = {{{Gini_ref|}}}
| Gini_rank = {{{Gini_rank|}}}
| HDI_year = {{{HDI_year|}}}
| HDI_change = {{{HDI_change|}}}
| HDI = {{{HDI|}}}
| HDI_ref = {{{HDI_ref|}}}
| HDI_rank = {{{HDI_rank|}}}
| patron_saint{{#if:{{{patron_saints|}}}|s|}} = {{{patron_saints|{{{patron_saint|}}}}}}
| cctld = {{{cctld|}}}
| official_website = {{{official_website|}}}
| footnote_a = {{{footnote_a|}}}
| footnote_b = {{{footnote_b|}}}
| footnote_c = {{{footnote_c|}}}
| footnote_d = {{{footnote_d|}}}
| footnote_e = {{{footnote_e|}}}
| footnote_f = {{{footnote_f|}}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
82126737ba50b8b93dd1a831a64c642af7f1e8e1
Module:Infobox/styles.css
828
19
167
33
2022-12-20T18:53:25Z
meta>MacFan4000
0
Fix - admins: please do not reimport this page as there are more styles here then on wikipedia
text
text/plain
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-above,
.infobox .infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
padding: 0.2em;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
eb850346855e4c081e692209d188b8432a2378d4
Template:Infobox UK place/doc
10
1418
2753
2022-12-21T18:50:40Z
w>DankJae
0
Undid revision 1069114592 by [[Special:Contributions/Unreal7|Unreal7]] ([[User talk:Unreal7|talk]]) Please request the actual template to change. The template parameters remain Assembly, these new parameters were not in the template.
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{Auto short description}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{Uses TemplateStyles|Template:Infobox UK place/styles.css}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{Template:{{BASEPAGENAME}}/generic demo}}
{{tl|Infobox UK place}} is intended for use with articles about places (i.e. human settlements) in the United Kingdom. It has provision for a location map, images, captions, and detailed information about the place e.g. population, governance, and public services.
== Basic syntax ==
[[Template:Infobox_UK_place/doc/examples|Examples]] are available showing typical infoboxes together with the code for those examples. This code can be cut and pasted into new articles. The samples provided are:
* [[Template:Infobox_UK_place/doc/examples#Isle of Man|Isle of Man]]
* [[Template:Infobox_UK_place/doc/examples#Northern Ireland|Northern Ireland]]
* [[Template:Infobox_UK_place/doc/examples#Scotland|Scotland]]
* [[Template:Infobox_UK_place/doc/examples#Wales|Wales]]
* England – these can have differing structures:
** [[Template:Infobox_UK_place/doc/London#Greater London|Greater London]]
** [[Template:Infobox_UK_place/doc/London#City of London|City of London]]
** [[Template:Infobox_UK_place/doc/England#Metropolitan county|Metropolitan county ''(Greater Manchester, Merseyside, Tyne and Wear, South Yorkshire, West Yorkshire, West Midlands)'']]
** [[Template:Infobox_UK_place/doc/England#Shire district in a shire county|Shire district in a shire county]]
** [[Template:Infobox_UK_place/doc/England#...within a parish of the same name|...within a parish of the same name]]
** [[Template:Infobox_UK_place/doc/Unitary#Unitary district within a shire/unitary mix|Unitary district within a shire]]
** [[Template:Infobox_UK_place/doc/Unitary#Standalone unitary|Standalone unitary ''(Herefordshire, Rutland, Bristol, Isle of Wight)'']]
{{clear}}
== Full syntax ==
{{Infobox UK place/full syntax}}
== Parameters ==
===For automated features===
{| class="wikitable"
! Feature
! style="text-align:left" | Required fields
|-
| Basic function
| official_name – ''defaults to <nowiki>{{{PAGENAME}}}</nowiki>''<br />country ([[Country of the United Kingdom|?]])<br />''England only'': region ([[Regions of England|?]])
|-
| Maps
| coordinates<br />country<br />''England only'': region (= ''London'') ''OR'' metropolitan_county ''OR'' shire_county ''OR'' unitary_england (= ''Bristol'', ''Isle of Wight'', ''Southampton'')<br />''Scotland only'': unitary_scotland
Note that by default, the coordinates are displayed to the right of the title, at the top of the page. This can cause an error if there is more than one set of coordinates in the article. To override the display in the title, use {{para|display|inline}} inside of {{tl|Coord}}.
If you wish to include an additional custom {{tl|location map}} (typically for the local area), use {{para|pushpin_map|location map name}} where <code>location map name</code> is the name of the location map.
|-
| Services
| country<br />unitary_scotland ([[Subdivisions of Scotland|?]]) ''OR'' unitary_england ([[Districts of England|?]]) ''OR'' unitary_northern_ireland ([[Districts of Northern Ireland|?]]) ''OR'' unitary_wales ([[Administrative divisions of Wales|?]]) ''OR'' london_borough ([[London borough|?]]) ''OR'' metropolitan_borough ([[Districts of England|?]]) ''OR'' shire_district ([[Districts of England|?]])<br /> ''England only'': shire_county ([[Metropolitan and non-metropolitan counties of England|?]]) ''OR'' metropolitan_county ([[Metropolitan and non-metropolitan counties of England|?]]) ''OR'' lieutenancy_england ([[Ceremonial counties of England|?]])<br />''England only'': region<br />''Vale of White Horse and Hart districts only'': ambulance_service (''needs to be populated'')
|-
| Postal
| post_town ([[post town|?]])<br />postcode_area ([[List of postcode areas in the United Kingdom|?]])<br />postcode_district
|-
| London Assembly
| london_borough
|-
| Footer lists
| country<br />london_borough ''OR'' shire_county ''OR'' metropolitan_county ''OR'' lieutenancy_england ''OR'' unitary_scotland ''OR'' unitary_wales ''OR'' lieutenancy_northern_ireland
|}
===Commonly used===
{| class="wikitable"
| Although not required for any of the automation, the following fields should normally be filled in
|-
|
* constituency_westminster ([[List of United Kingdom Parliament constituencies|?]])
* map_alt
* os_grid_reference ''OR'' irish_grid_reference
* dial_code ''([http://www.ofcom.org.uk/telecoms/ioi/numbers/ this] may be of help finding the dialling code)''
* ''Northern Ireland only'': lieutenancy_northern_ireland ([[Counties of Northern Ireland|?]])
* ''Wales only'': lieutenancy_wales ([[Preserved counties of Wales|?]])
* ''Scotland only'': lieutenancy_scotland ([[Lieutenancy areas of Scotland|?]])
|}
===For optional features===
{| class="wikitable"
! Optional feature
! style="text-align:left" | Required fields
|-
| Other language names
| gaelic_name ''OR'' scots_name ''OR'' welsh_name ''OR'' irish_name ''OR'' cornish_name ''OR'' manx_name
|-
| Any other language name
| other_language ''AND'' other_language_name<br />local_name
|-
| Languages spoken
| language
|-
| Static image(s)
| static_image ''(deprecated)''<br />static_image_name<br />static_image_width - ''defaults to 240px wide to match the maps.''<br />static_image_caption<br />static_image_alt ''(see [[WP:ALT]])''<br />static_image_2 ''(deprecated)''<br />static_image_2_name<br />static_image_2_width - ''defaults to 240px wide to match the maps.''<br />static_image_2_caption<br />static_image_2_alt
|-
| Map label position
| label_position<br />''Used to adjust position of label by dot on map– options are top, bottom, left, right, or none – defaults to right ''
|-
| Smaller parts (e.g. boroughs of a city)
| parts_type<br />''The label for the smaller subdivisions (defaults to Places)''.
parts_style<br />Set to ''list'' to display as a collapsible list, ''coll'' as a collapsed list, or ''para'' to use paragraph style. Default is ''list'' for up to 5 items, otherwise ''coll''.<br />
parts<br />''Text or header of the list of smaller subdivisions''.<br />
p1<br />p2<br />to<br />p50<br />''The smaller subdivisions to be listed. Example: [[Anlaby]]''
|-
| Area
| area_total_sq_mi<br />area_total_km2<br />area_footnotes<br />''Only one value needs to be entered as a number and it will be automatically formatted and converted to opposite system''
|-
| Population figures
| population – ''must be a number''<br />population_density – ''will be calculated automatically if area and population are present''<br />population_ref<br />''(A good place to find the population figures is at [http://neighbourhood.statistics.gov.uk/ neighbourhood.statistics.gov.uk])''<br />''For Census 2001 use <nowiki>| population_ref = <ref>[[United Kingdom Census 2001|Census 2001]]</ref></nowiki>''
|-
|Distance from capitals
| ''Replace <capital> with belfast, cardiff, douglas, dublin, edinburgh, or london''<br /><capital>_distance_mi<br /><capital>_distance_km<br />''Only one value needs to be entered as a number and it will be automatically formatted and converted to opposite system''<br /><capital>_distance<br />''Used for footnotes or direction – see [[Boxing the compass]]''<br /><capital_direction><br />''Enter direction to capital e.g. W, E, NE, SW – it will be linked to [[Boxing the compass]]''<br />''(Distances "[[as the crow flies]]" can be found from [http://www.genuki.org.uk/big/eng/Gazetteers.html Genuki], or [http://www.postcode.org.uk/country/uk/_postcode-distance-calculator.asp postcode.org.uk])''
|-
|Distance ''within'' London
| Same as ''Distance from capitals'' above – replace <capital> with ''charingX''
|-
| Civil parish or Community
| civil_parish OR community_wales ([[Community council#Wales|?]]) OR community_scotland ([[Community council#Scotland|?]])
|-
|iso_code
|[[ISO 3166-2:GB|ISO 3166]] code; e.g. GB-BIR for Birmingham. If no specific code exists, the next highest-level code may be used, so again use GB-BIR for [[Bournville]], which is part of Birmingham.
|-
| Website link
| website<br />''WARNING: overlong urls may result in the sides of the infobox being pushed sideways.''<br /> ''If so, use a short link to the url e.g.'' <nowiki>[longurl.co.uk/home.html Short name]</nowiki>
|-
| embedded
| Embed another infobox in this one
|-
| pushpin_map
| Allows selection of another location map (e.g. Oxford (central)). This will combine with the default by radio button - (show within ''custom.name'' <default>, show ''default.name'', show all)
|}
===Places split by boundaries===
{| class="wikitable"
! Places split by boundaries
|-
|
Many locations straddle the boundaries of post towns, constituencies, districts or regions. Where a place straddles these, they can be accommodated with its own field:
* post_town ''AND'' post_town1 ''AND'' post_town2
* civil_parish ''AND'' civil_parish1'' AND'' civil_parish2
* shire_district ''AND'' shire_district1 ''AND'' shire_district2
* region ''AND'' region1
* westminster_constituency ''AND'' westminster_constituency1 ''AND'' westminster_constituency2
There are slightly more "esoteric" extras to handle some tricky situations of division splits, which, if needed, can be explained by contacting one of the users involved in this template's construction.
|}
{{clear}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "Intended for use with articles about places i.e. human settlements in the United Kingdom. It has provision for a location map, images, captions, and detailed information about the place e.g. population, governance, and public services.",
"params": {
"official_name": {
"label": "official name",
"description": " defaults to {{{PAGENAME}}}",
"type": "string",
"required": false
},
"local_name": {
"label": "local name",
"description": " ",
"type": "string",
"required": false
},
"country": {
"label": "country",
"description": " England, Northern Ireland, Wales, Scotland - NOT [[linked]] ",
"type": "string",
"required": false,
"suggestedvalues": [
"England",
"Northern Ireland",
"Scotland",
"Wales"
]
},
"type": {
"label": "Type",
"description": "Type of human settlement (do not wikilink)",
"example": "Town",
"type": "string",
"suggested": true
},
"crown_dependency": {
"label": "crown dependency",
"description": " Isle of Man - NOT [[linked]] (this removes formal mentions of the UK)",
"type": "string",
"required": false
},
"region": {
"label": "region",
"description": " (England only) this should NOT be linked ",
"type": "string",
"required": false
},
"region1": {
"label": "region1",
"description": " for places split between regions",
"type": "string",
"required": false
},
"static_image": {
"label": "static image",
"description": " now deprecated in favour of static_image_name (below); this is used for a static image (most commonly a skyline or landmark)",
"type": "string",
"required": false
},
"static_image_name": {
"label": "static image name",
"description": " for a static image of the place, such as a skyline or defining local landmark",
"type": "string",
"required": false
},
"static_image_width": {
"label": "static image width",
"description": " allows control of the image width. Should be omitted in most cases (will default to 240)",
"type": "number",
"required": false
},
"static_image_caption": {
"label": "static image caption",
"description": " optional caption for static image",
"type": "string",
"required": false
},
"static_image_alt": {
"label": "static image alt",
"description": " for a description of the image per [[WP:ALT]]",
"type": "string",
"required": false
},
"static_image_2": {
"label": "static image 2",
"description": " now deprecated in favour of static_image_2_name (below); this is used for a second static image (for example a town crest)",
"type": "string",
"required": false
},
"static_image_2_name": {
"label": "static image 2 name",
"description": " for a second static image, such as a town crest; specified as filename.jpg",
"type": "string",
"required": false
},
"static_image_2_width": {
"label": "static image 2 width",
"description": " allows control of the image width. Should not exceed 240",
"type": "number",
"required": false
},
"static_image_2_caption": {
"label": "static image 2 caption",
"description": " optional caption for static image",
"type": "string",
"required": false
},
"static_image_2_alt": {
"label": "static image 2 alt",
"description": " for a description of the image per [[WP:ALT]]",
"type": "string",
"required": false
},
"area_total_sq_mi": {
"label": "area total sq mi",
"description": " square mile data as a number - will automatically provide conversion to km<sup>2</sup>",
"type": "number",
"required": false
},
"area_total_km2": {
"label": "area total km2",
"description": " sq km data as a number - will automatically provide conversion to square mile",
"type": "number",
"required": false
},
"area_footnotes": {
"label": "area footnotes",
"description": " to cite the values used in the area fields. Use the <ref> </ref> tags",
"type": "string",
"required": false
},
"population": {
"label": "population",
"description": " Enter just the number",
"type": "number",
"required": false
},
"population_ref": {
"label": "population ref",
"description": " include a reference: e.g. <ref>Census, 2001</ref>",
"type": "string",
"required": false
},
"population_density": {
"label": "population density",
"description": " for /sq mi ...use convert template {{Pop density mi2 to km2",
"type": "string",
"required": false
},
"statistic": {
"label": "statistic",
"type": "string",
"required": false
},
"statistic_title": {
"label": "statistic title",
"type": "string",
"required": false
},
"statistic1": {
"label": "statistic1",
"type": "string",
"required": false
},
"statistic_title1": {
"label": "statistic title1",
"type": "string",
"required": false
},
"statistic2": {
"label": "statistic2",
"type": "string",
"required": false
},
"statistic_title2": {
"label": "statistic title2",
"type": "string",
"required": false
},
"population_demonym": {
"label": "population demonym",
"description": " ",
"type": "string",
"required": false
},
"os_grid_reference": {
"label": "os grid reference",
"description": " ",
"type": "string",
"required": false
},
"map_type": {
"label": "map type",
"description": " type of map (leave blank for default map, or set to nomap, UK or Greater Belfast to force a particular map)",
"type": "string",
"required": false
},
"map_alt": {
"label": "map alt",
"description": " alt text for map, for visually impaired and other readers who cannot see the image; see [[WP:ALT]]",
"type": "string",
"required": false
},
"label_position": {
"label": "label position",
"description": " adjust position of label by dot – defaults to right ",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"description": "Latitude and longitude. Use {{Coord}}. See the documentation for {{Coord}} for more details on usage.",
"type": "wiki-template-name",
"required": false,
"example": "{{coord|41|50|15|N|87|40|55|W}}"
},
"pushpin_map": {
"label": "pushpin_map",
"description": "The name of a regional location map (e.g. 'Oxford'). The coordinates information (from the coordinates parameter) position a pushpin coordinate marker and label on the map 'automatically'. Example see: Jericho, Oxford",
"type": "string",
"required": false
},
"post_town": {
"label": "post town",
"description": " e.g. UXBRIDGE - converted automatically to upper case",
"type": "string",
"required": false
},
"post_town1": {
"label": "post town1",
"description": " for places in more than one post town",
"type": "string",
"required": false
},
"post_town2": {
"label": "post town2",
"description": " for places in more than one post town",
"type": "string",
"required": false
},
"postcode_area": {
"label": "postcode area",
"description": " e.g. UB",
"type": "string",
"required": false
},
"postcode_area1": {
"label": "postcode area1",
"description": " for places in more than one postcode area",
"type": "string",
"required": false
},
"postcode_area2": {
"label": "postcode area2",
"description": " for places in more than one postcode area",
"type": "string",
"required": false
},
"postcode_district": {
"label": "postcode district",
"description": " e.g. UB1, UB2 (this is displayed)",
"type": "string",
"required": false
},
"postcode_district1": {
"label": "postcode district1",
"description": " for places in more than one postcode area",
"type": "string",
"required": false
},
"postcode_district2": {
"label": "postcode district2",
"description": " for places in more than one postcode area",
"type": "string",
"required": false
},
"dial_code": {
"label": "dial code",
"description": " e.g. 020, 0161 or 01332 - NOT +44...",
"type": "string",
"required": false
},
"dial_code1": {
"label": "dial code1",
"description": " for places with more than one dial code",
"type": "string",
"required": false
},
"dial_code2": {
"label": "dial code2",
"description": " for places with more than one dial code",
"type": "string",
"required": false
},
"constituency_westminster": {
"label": "constituency westminster",
"description": " Use a link. e.g. [[Chiltern Hundreds]]",
"type": "string",
"required": false
},
"constituency_westminster1": {
"label": "constituency westminster1",
"description": " for places in more than one constituency. Use a link.",
"type": "string",
"required": false
},
"constituency_westminster2": {
"label": "constituency westminster2",
"description": " for places in more than one constituency. Use a link.",
"type": "string",
"required": false
},
"constituency_westminster3": {
"label": "constituency westminster3",
"description": " for places in more than one constituency. Use a link.",
"type": "string",
"required": false
},
"civil_parish": {
"label": "civil parish",
"description": " for places within a parish. Use a link, e.g. [[Odd Rode]]",
"type": "string",
"required": false
},
"civil_parish1": {
"label": "civil parish1",
"description": " for places in more than one parish. Use a link.",
"type": "string",
"required": false
},
"civil_parish2": {
"label": "civil parish2",
"description": " for places in more than one parish. Use a link.",
"type": "string",
"required": false
},
"london_distance_mi": {
"label": "london distance mi",
"description": " for UK articles (outside of Greater London), distance to London as the crow flies",
"type": "number",
"required": false
},
"london_distance_km": {
"label": "london distance km",
"description": " ",
"type": "number",
"required": false
},
"london_distance": {
"label": "london distance",
"description": " ",
"type": "number",
"required": false
},
"london_direction": {
"label": "london direction",
"description": " ",
"type": "string",
"required": false
},
"belfast_distance_mi": {
"label": "belfast distance mi",
"description": " NORTHERN IRISH articles only, distance to Belfast as the crow flies",
"type": "number",
"required": false
},
"belfast_distance_km": {
"label": "belfast distance km",
"description": " ",
"type": "number",
"required": false
},
"belfast_distance": {
"label": "belfast distance",
"description": " ",
"type": "number",
"required": false
},
"belfast_direction": {
"label": "belfast direction",
"description": " ",
"type": "string",
"required": false
},
"cardiff_distance_mi": {
"label": "cardiff distance mi",
"description": " WELSH articles only, distance to Cardiff as the crow flies",
"type": "number",
"required": false
},
"cardiff_distance_km": {
"label": "cardiff distance km",
"description": " ",
"type": "number",
"required": false
},
"cardiff_distance": {
"label": "cardiff distance",
"description": " ",
"type": "number",
"required": false
},
"cardiff_direction": {
"label": "cardiff direction",
"description": " ",
"type": "string",
"required": false
},
"dublin_distance_mi": {
"label": "dublin distance mi",
"description": " distance to Dublin – may be relevant to NORTHERN IRISH articles as the crow flies",
"type": "number",
"required": false
},
"dublin_distance_km": {
"label": "dublin distance km",
"description": " ",
"type": "number",
"required": false
},
"dublin_distance": {
"label": "dublin distance",
"description": " ",
"type": "number",
"required": false
},
"dublin_direction": {
"label": "dublin direction",
"description": " ",
"type": "string",
"required": false
},
"edinburgh_distance_mi": {
"label": "edinburgh distance mi",
"description": " SCOTTISH articles only, distance to Edinburgh as the crow flies",
"type": "number",
"required": false
},
"edinburgh_distance_km": {
"label": "edinburgh distance km",
"description": " ",
"type": "number",
"required": false
},
"edinburgh_distance": {
"label": "edinburgh distance",
"description": " ",
"type": "number",
"required": false
},
"edinburgh_direction": {
"label": "edinburgh direction",
"description": " ",
"type": "string",
"required": false
},
"douglas_distance_mi": {
"label": "douglas distance mi",
"description": " MANX articles only, distance to Douglas as the crow flies",
"type": "number",
"required": false
},
"douglas_distance_km": {
"label": "douglas distance km",
"description": " ",
"type": "number",
"required": false
},
"douglas_distance": {
"label": "douglas distance",
"description": " ",
"type": "number",
"required": false
},
"douglas_direction": {
"label": "douglas direction",
"description": " ",
"type": "string",
"required": false
},
"charingX_distance_mi": {
"label": "charingX distance mi",
"description": " for places WITHIN Greater London ONLY as the crow flies",
"type": "number",
"required": false
},
"charingX_distance_km": {
"label": "charingX distance km",
"description": " ",
"type": "number",
"required": false
},
"charingX_distance": {
"label": "charingX distance",
"description": " ",
"type": "number",
"required": false
},
"charingX_direction": {
"label": "charingX direction",
"description": " ",
"type": "string",
"required": false
},
"gaelic_name": {
"label": "gaelic name",
"description": " ",
"type": "string",
"required": false
},
"scots_name": {
"label": "scots name",
"description": " ",
"type": "string",
"required": false
},
"community_scotland": {
"label": "community scotland",
"description": " Use a link, e.g. [[Old Aberdeen]]",
"type": "string",
"required": false
},
"community_scotland1": {
"label": "community scotland1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"unitary_scotland": {
"label": "unitary scotland",
"description": " ",
"type": "string",
"required": false
},
"unitary_scotland1": {
"label": "unitary scotland1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"lieutenancy_scotland": {
"label": "lieutenancy scotland",
"description": " ",
"type": "string",
"required": false
},
"lieutenancy_scotland1": {
"label": "lieutenancy scotland1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"constituency_scottish_parliament": {
"label": "constituency scottish parliament",
"description": " ",
"type": "string",
"required": false
},
"constituency_scottish_parliament1": {
"label": "constituency scottish parliament1",
"description": " for places in more than one constituency",
"type": "string",
"required": false
},
"constituency_scottish_parliament2": {
"label": "constituency scottish parliament2",
"description": " for places in more than one constituency",
"type": "string",
"required": false
},
"welsh_name": {
"label": "welsh name",
"description": " ",
"type": "string",
"required": false
},
"community_wales": {
"label": "community wales",
"description": " Use a link, e.g. [[Eglwyscummin]]",
"type": "string",
"required": false
},
"community_wales1": {
"label": "community wales1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"unitary_wales": {
"label": "unitary wales",
"description": " ",
"type": "string",
"required": false
},
"unitary_wales1": {
"label": "unitary wales1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"lieutenancy_wales": {
"label": "lieutenancy wales",
"description": " ",
"type": "string",
"required": false
},
"lieutenancy_wales1": {
"label": "lieutenancy wales1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"constituency_welsh_assembly": {
"label": "constituency welsh assembly",
"description": " ",
"type": "string",
"required": false
},
"constituency_welsh_assembly1": {
"label": "constituency welsh assembly1",
"description": " for places in more than one constituency",
"type": "string",
"required": false
},
"constituency_welsh_assembly2": {
"label": "constituency welsh assembly2",
"description": " for places in more than one constituency",
"type": "string",
"required": false
},
"irish_name": {
"label": "irish name",
"description": " ",
"type": "string",
"required": false
},
"irish_grid_reference": {
"label": "irish grid reference",
"description": " ",
"type": "string",
"required": false
},
"unitary_northern_ireland": {
"label": "unitary northern ireland",
"description": " ",
"type": "string",
"required": false
},
"unitary_northern_ireland1": {
"label": "unitary northern ireland1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"unitary_northern_ireland2": {
"label": "unitary northern ireland2",
"description": " for places in more than one",
"type": "string",
"required": false
},
"lieutenancy_northern_ireland": {
"label": "lieutenancy northern ireland",
"description": " ",
"type": "string",
"required": false
},
"lieutenancy_northern_ireland1": {
"label": "lieutenancy northern ireland1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"lieutenancy_northern_ireland2": {
"label": "lieutenancy northern ireland2",
"description": " for places in more than one",
"type": "string",
"required": false
},
"constituency_ni_assembly": {
"label": "constituency ni assembly",
"description": " ",
"type": "string",
"required": false
},
"constituency_ni_assembly1": {
"label": "constituency ni assembly1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"manx_name": {
"label": "manx name",
"description": " ",
"type": "string",
"required": false
},
"manx_parish": {
"label": "manx parish",
"description": " for places in the Isle of Man",
"type": "string",
"required": false
},
"manx_sheading": {
"label": "manx sheading",
"description": " for places in the Isle of Man, also generates emergency services",
"type": "string",
"required": false
},
"constituency_manx_parliament": {
"label": "constituency manx parliament",
"description": " for House of Keys constituency",
"type": "string",
"required": false
},
"metropolitan_borough": {
"label": "metropolitan borough",
"description": " ",
"type": "string",
"required": false
},
"metropolitan_borough1": {
"label": "metropolitan borough1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"metropolitan_county": {
"label": "metropolitan county",
"description": " Use a link. e.g. [[Tyne and Wear]]",
"type": "string",
"required": false
},
"metropolitan_county1": {
"label": "metropolitan county1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"shire_district": {
"label": "shire district",
"description": " ",
"type": "string",
"required": false
},
"shire_district1": {
"label": "shire district1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"shire_county": {
"label": "shire county",
"description": " Use a link. e.g. [[Devon]]",
"type": "string",
"required": false
},
"shire_county1": {
"label": "shire county1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"unitary_england": {
"label": "unitary england",
"description": " ",
"type": "string",
"required": false
},
"unitary_england1": {
"label": "unitary england1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"lieutenancy_england": {
"label": "lieutenancy england",
"description": " not required where shire or metropolitan is the same",
"type": "string",
"required": false
},
"lieutenancy_england1": {
"label": "lieutenancy england1",
"description": " for places in more than one",
"type": "string",
"required": false
},
"london_borough": {
"label": "london borough",
"description": " this should not be linked and simplified: e.g. Bromley NOT [[London Borough of Bromley]]",
"type": "string",
"required": false
},
"london_borough1": {
"label": "london borough1",
"description": " for places in more than one borough (also produces London Assembly constituency)",
"type": "string",
"required": false
},
"london_borough2": {
"label": "london borough2",
"description": " for places in more than one borough (also produces London Assembly constituency)",
"type": "string",
"required": false
},
"london_borough3": {
"label": "london borough3",
"description": " special cases, does not produce London Assembly constituency)",
"type": "string",
"required": false
},
"london_borough4": {
"label": "london borough4",
"description": " special cases, does not produce London Assembly constituency)",
"type": "string",
"required": false
},
"cornish_name": {
"label": "cornish name",
"description": " ",
"type": "string",
"required": false
},
"other_language_name": {
"label": "other language name",
"description": " any other alternative language name",
"type": "string",
"required": false
},
"other_language": {
"label": "other language",
"description": " any other alternative language name",
"type": "string",
"required": false
},
"language": {
"label": "language",
"description": " any locally spoken languages",
"type": "string",
"required": false
},
"language1": {
"label": "language1",
"description": " any locally spoken languages",
"type": "string",
"required": false
},
"language2": {
"label": "language2",
"description": " any locally spoken languages",
"type": "string",
"required": false
},
"website": {
"label": "website",
"description": " Council website for place (specifically)",
"type": "string",
"required": false
},
"hide_services": {
"label": "hide services",
"description": " Set to Yes to turn off Police/Fire/Ambulance",
"type": "string",
"required": false
}
},
"format": "block"
}
</templatedata>
== Microformat ==
{{UF-hcard-geo}}
== Tracking category ==
* {{Category link with count|Pages using infobox UK place with unknown parameters}}
* {{Category link with count|Pages using infobox UK place with non-numeric population}}
<includeonly>{{Sandbox other||
[[Category:United Kingdom place infobox templates|Uk Place]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
6faac511cdd255aac862a8b83fe369116d956897
Template:Short description
10
98
243
2022-12-23T23:04:16Z
wikipedia>Fayenatic london
0
remove categories for several more namespaces, see [[Wikipedia:Categories for discussion/Log/2022 December 15#Pages with short description]]
wikitext
text/x-wiki
{{#ifeq:{{lc:{{{1|}}}}}|none|<nowiki /><!--Prevents whitespace issues when used with adjacent newlines-->|<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">{{{1|}}}{{SHORTDESC:{{{1|}}}|{{{2|}}}}}</div>}}<includeonly>{{#ifeq:{{{pagetype}}}|Disambiguation pages||{{#ifeq:{{pagetype |defaultns = all |user=exclude}}|exclude||{{#ifeq:{{#switch: {{NAMESPACENUMBER}} | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 100 | 101 | 118 | 119 | 828 | 829 | = exclude|#default=}}|exclude||[[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with short description]]}}}}}}</includeonly><!-- Start tracking
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using short description with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Short description]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | pagetype | bot |plural }}<!--
-->{{#ifexpr: {{#invoke:String|len|{{{1|}}}}}>100 | [[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with long short description]]}}<!--
--><includeonly>{{#if:{{{1|}}}||[[Category:Pages with empty short description]]}}</includeonly><!--
-->{{Short description/lowercasecheck|{{{1|}}}}}<!--
-->{{Main other |{{SDcat |sd={{{1|}}} }} }}<noinclude>
{{Documentation}}
</noinclude>
f175a6d61b40a87adb43e2dd4f73c7979759b34c
Template:Politics series sidebar
10
883
1956
2022-12-24T06:01:56Z
wikipedia>Izno
0
my salt is unimaginable
wikitext
text/x-wiki
{{Sidebar with collapsible lists
| name = {{{name|{{PAGENAME}}}}}
| class = {{{class|}}} {{{bodyclass|}}}
| pretitle = Part of the [[:Category:Politics|Politics series]]
| title = {{{title<includeonly>|</includeonly>}}}
| titleclass = {{{titleclass|}}}
| titlestyle = border-top:1px #fafafa solid; border-bottom:1px #fafafa solid; background:#efefef;padding:0.2em;
| headingclass = {{{headingclass|}}}
| headingstyle = background:#efefef;{{{headingstyle|}}}
| listtitlestyle = background:#efefef; border-top:1px solid; {{{listtitlestyle|}}}
| centered list titles = {{{centered list titles|}}}
| contentclass = {{{contentclass|}}}
| contentstyle = text-align:left;{{{contentstyle|}}}
| image = {{{image|}}}
| caption = {{{caption|}}}
| expanded = {{{expanded|}}}
| abovestyle = display:block; margin-bottom:0.5em; background:transparent;
| above = {{{above|}}}
| list1name = {{{list1name|}}}
| list1title = {{{list1title|}}}
| list1 = {{{list1<includeonly>|</includeonly>}}}
| list1class = {{{list1class|}}}
| list2name = {{{list2name|}}}
| list2title = {{{list2title|}}}
| list2 = {{{list2<includeonly>|</includeonly>}}}
| list2class = {{{list2class|}}}
| list3name = {{{list3name|}}}
| list3title = {{{list3title|}}}
| list3 = {{{list3<includeonly>|</includeonly>}}}
| list3class = {{{list3class|}}}
| list4name = {{{list4name|}}}
| list4title = {{{list4title|}}}
| list4 = {{{list4<includeonly>|</includeonly>}}}
| list4class = {{{list4class|}}}
| list5name = {{{list5name|}}}
| list5title = {{{list5title|}}}
| list5 = {{{list5<includeonly>|</includeonly>}}}
| list5class = {{{list5class|}}}
| list6name = {{{list6name|}}}
| list6title = {{{list6title|}}}
| list6 = {{{list6<includeonly>|</includeonly>}}}
| list6class = {{{list6class|}}}
| list7name = {{{list7name|}}}
| list7title = {{{list7title|}}}
| list7 = {{{list7<includeonly>|</includeonly>}}}
| list7class = {{{list7class|}}}
| list8name = {{{list8name|}}}
| list8title = {{{list8title|}}}
| list8 = {{{list8<includeonly>|</includeonly>}}}
| list8class = {{{list8class|}}}
| list9name = {{{list9name|}}}
| list9title = {{{list9title|}}}
| list9 = {{{list9<includeonly>|</includeonly>}}}
| list9class = {{{list9class|}}}
| list10name = {{{list10name|}}}
| list10title = {{{list10title|}}}
| list10 = {{{list10<includeonly>|</includeonly>}}}
| list10class = {{{list10class|}}}
| belowstyle = background:#efefef;
| below = {{portal-inline|Politics|size=tiny}}
}}<noinclude>
{{documentation}}
[[Category:Politics series sidebar templates| ]]
</noinclude>
616b256f4c1c4adf99b4cd0aebb986edc4817116
Template:Floor
10
1558
2893
2022-12-25T15:11:57Z
w>GKFX
0
Move documentation to subpage
wikitext
text/x-wiki
<span style="font-size:{{{2|1em}}}">⌊</span>{{{1}}}<span style="font-size:{{{2|1em}}}">⌋</span><noinclude>{{Documentation}}</noinclude>
94e2a96ad5aeae00bb901ff2f15c4631330766df
Template:Ceil
10
1563
2898
2022-12-25T15:15:13Z
w>GKFX
0
Move documentation to subpage
wikitext
text/x-wiki
⌈{{{1}}}⌉<noinclude>{{Documentation}}</noinclude>
7f563210cf3ca1f130f25e13cad599557d619882
Template:Hlist/styles.css
10
74
143
2022-12-26T18:00:17Z
wikipedia>Izno
0
actually remove that block, someone can dig for authorship
text
text/plain
/* {{pp-protected|reason=match parent|small=yes}} */
/*
* hlist styles are defined in core and Minerva and differ in Minerva. The
* current definitions here (2023-01-01) are sufficient to override Minerva
* without use of the hlist-separated class. The most problematic styles were
* related to margin, padding, and the bullet. Check files listed at
* [[MediaWiki talk:Common.css/to do#hlist-separated]]
*/
/*
* TODO: When the majority of readership supports it (or some beautiful world
* in which grade C support is above the minimum threshold), use :is()
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
/*
* don't trust the note that says margin doesn't work with inline
* removing margin: 0 makes dds have margins again
* We also want to reset margin-right in Minerva
*/
margin: 0;
display: inline;
}
/* Display requested top-level lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
/* Display nested lists inline */
.hlist dl dl,
.hlist dl ol,
.hlist dl ul,
.hlist ol dl,
.hlist ol ol,
.hlist ol ul,
.hlist ul dl,
.hlist ul ol,
.hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* TODO: :not() can maybe be used here to remove the later rule. naive test
* seems to work. more testing needed. like so:
*.hlist dt:not(:last-child)::after {
* content: ": ";
*}
*.hlist dd:not(:last-child)::after,
*.hlist li:not(:last-child)::after {
* content: " · ";
* font-weight: bold;
*}
*/
/* Generate interpuncts */
.hlist dt::after {
content: ": ";
}
.hlist dd::after,
.hlist li::after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child::after,
.hlist dt:last-child::after,
.hlist li:last-child::after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child::before,
.hlist dd dt:first-child::before,
.hlist dd li:first-child::before,
.hlist dt dd:first-child::before,
.hlist dt dt:first-child::before,
.hlist dt li:first-child::before,
.hlist li dd:first-child::before,
.hlist li dt:first-child::before,
.hlist li li:first-child::before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child::after,
.hlist dd dt:last-child::after,
.hlist dd li:last-child::after,
.hlist dt dd:last-child::after,
.hlist dt dt:last-child::after,
.hlist dt li:last-child::after,
.hlist li dd:last-child::after,
.hlist li dt:last-child::after,
.hlist li li:last-child::after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li::before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child::before,
.hlist dt ol > li:first-child::before,
.hlist li ol > li:first-child::before {
content: " (" counter(listitem) "\a0";
}
8c9dd9c9c00f30eead17fe10f51d183333e81f33
Template:Infobox3cols
10
1160
2486
2022-12-27T20:24:32Z
w>GKFX
0
Tracking categories moved to module
wikitext
text/x-wiki
{{#invoke:Infobox3cols|infobox}}<noinclude>
{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
64b9ddf32a5d7204cf7044710a2c81df75858a6f
Module:Infobox
828
18
31
2022-12-27T21:29:12Z
wikipedia>Izno
0
merge hlist here
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Template:Country data Romania
10
1203
2532
2022-12-28T14:46:12Z
w>Paine Ellsworth
0
per edit request on talk page - update naval ensign
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Romania
| flag alias = Flag of Romania.svg
| flag alias-1859 = Flag of the United Principalities of Wallachia and Moldavia (1859 - 1862).svg
| flag alias-1862 = Flag of the United Principalities of Romania (1862–1866).svg
| flag alias-1866 = Flag of Romania.svg
| flag alias-1948 = Flag of Romania (1948-1952).svg
| flag alias-1952 = Flag of Romania (1952-1965).svg
| flag alias-1965 = Flag of Romania (1965-1989).svg
| link alias-naval = Romanian Naval Forces
| flag alias-naval = Flag of Romania.svg
| flag alias-air force = Flag of the Romanian Air Force (obverse).svg
| link alias-air force = Romanian Air Force
| flag alias-army = Flag of the Romanian Land Forces (Obverse).svg
| link alias-army = Romanian Land Forces
| flag alias-navy = Flag of the Romanian Naval Forces (Obverse).svg
| link alias-navy = Romanian Naval Forces
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1859
| var2 = 1862
| var3 = 1866
| var4 = 1948
| var5 = 1952
| var6 = 1965
| redir1 = ROU
| redir2 = ROM
| related1 = Kingdom of Romania
</noinclude>
}}
b8f3670e159bf57644dc35ad076a061de391bac7
Template:Flatlist
10
157
367
2022-12-29T17:46:45Z
wikipedia>Izno
0
templatestyles obviates the need for hlist-separated
wikitext
text/x-wiki
<templatestyles src="Hlist/styles.css"/><div class="hlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
cf60aa4aef920d48fa394e786f72fe5f6dcd3169
Module:List
828
20
35
2022-12-29T17:57:56Z
wikipedia>Izno
0
add templatestyles for hlist
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
Module:Navbox/configuration
828
107
261
2022-12-29T18:14:27Z
wikipedia>Izno
0
get these in
Scribunto
text/plain
return {
aria_label = 'Navbox',
nowrap_item = '%s<span class="nowrap">%s</span>',
templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' }
},
hlist_templatestyles = 'Hlist/styles.css',
plainlist_templatestyles = 'Plainlist/styles.css',
-- do not localize marker table
marker = {
oddeven = '\127_ODDEVEN_\127',
restart = '\127_ODDEVEN0_\127',
regex = '\127_ODDEVEN(%d?)_\127'
},
category = {
orphan = '[[Category:Navbox orphans]]',
horizontal_lists = 'Navigational boxes without horizontal lists',
background_colors = 'Navboxes using background colours',
illegible = 'Potentially illegible navboxes',
borders = 'Navboxes using borders',
},
keyword = {
border_subgroup = 'subgroup',
border_child = 'child',
border_none = 'none',
evenodd_swap = 'swap',
navbar_off = 'off',
navbar_plain = 'plain',
nocat_false = 'false',
nowrapitems_yes = 'yes',
orphan_yes = 'yes',
state_collapsed = 'collapsed',
state_off = 'off',
state_plain = 'plain',
subpage_doc = 'doc',
subpage_sandbox = 'sandbox',
subpage_testcases = 'testcases',
tracking_no = 'no'
},
class = {
autocollapse = 'autocollapse',
collapsible = 'mw-collapsible',
collapsed = 'mw-collapsed',
-- Warning
navbox = 'navbox', -- WMF currently hides 'navbox' from mobile,
-- so you probably shouldn't change the navbox class.
navbox_abovebelow = 'navbox-abovebelow',
navbox_group = 'navbox-group',
navbox_image = 'navbox-image',
navbox_inner = 'navbox-inner',
navbox_list = 'navbox-list',
navbox_list_with_group = 'navbox-list-with-group',
navbox_part = 'navbox-', -- do not l10n
navbox_styles = 'navbox-styles',
navbox_subgroup = 'navbox-subgroup',
navbox_title = 'navbox-title', -- l10n only if you change pattern.navbox_title below
navbox_odd_part = 'odd', -- do not l10n
navbox_even_part = 'even', -- do not l10n
nomobile = 'nomobile',
nowraplinks = 'nowraplinks',
noviewer = 'noviewer' -- used to remove images from MediaViewer
},
pattern = {
listnum = '^list(%d+)$',
class = 'class',
sandbox = '/sandbox$',
navbox = 'Template:Navbox',
nowrap = '^<span class="nowrap">',
style = 'style$',
navbox_title = '<th[^>]*"navbox%-title"',
hlist = 'hlist',
plainlist = 'plainlist',
},
arg = {
above = 'above',
aboveclass = 'aboveclass',
abovestyle = 'abovestyle',
basestyle = 'basestyle',
bodyclass = 'bodyclass',
bodystyle = 'bodystyle',
border = 'border',
below = 'below',
belowclass = 'belowclass',
belowstyle = 'belowstyle',
evenodd = 'evenodd',
evenstyle = 'evenstyle',
group1 = 'group1',
group2 = 'group2',
group_and_num = 'group%d',
groupstyle_and_num = 'group%dstyle',
groupclass = 'groupclass',
groupstyle = 'groupstyle',
groupwidth = 'groupwidth',
innerstyle = 'innerstyle',
image = 'image',
imageclass = 'imageclass',
imageleft = 'imageleft',
imageleftstyle = 'imageleftstyle',
imagesetyle = 'imagestyle',
list_and_num = 'list%d',
listclass_and_num = 'list%dclass',
liststyle_and_num = 'list%dstyle',
list1padding = 'list1padding',
listclass = 'listclass',
listpadding = 'listpadding',
liststyle = 'liststyle',
name = 'name',
navbar = 'navbar',
navboxclass = 'navboxclass',
nocat = 'nocat',
nowrapitems = 'nowrapitems',
oddstyle = 'oddstyle',
orphan = 'orphan',
state = 'state',
style = 'style',
templatestyles = 'templatestyles',
child_templatestyles = 'child templatestyles',
title = 'title',
titleclass = 'titleclass',
titlestyle = 'titlestyle',
tracking = 'tracking'
},
-- names of navbar arguments
navbar = {
name = 1,
fontstyle = 'fontstyle',
mini = 'mini'
}
}
4148736fd32a93636c0413e73ed38afaef065ec9
Module:Navbar/configuration
828
38
71
2022-12-29T18:18:21Z
wikipedia>Izno
0
add hlist/styles.css
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['hlist_templatestyles'] = 'Hlist/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
b007c336b17ec4bcd4d5a9dca9f8cba301662b55
Module:Navbar
828
37
69
2022-12-29T18:20:02Z
wikipedia>Izno
0
add templatestyles for hlist
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17
Template:Advert
10
1303
2638
2022-12-29T21:29:07Z
w>Mathglot
0
Add hatnote; [[Template:AD]] redirects here; it is not a [[calendar era]] template.
wikitext
text/x-wiki
<noinclude>{{redirect|Template:AD|the [[calendar era]] template|Template:CE}}</noinclude>{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = Advert
| type = content
| class= ambox-Advert
| issue= This {{{1|article}}} '''contains content that is written like [[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|an advertisement}}]]'''.
| fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing [[WP:Spam|promotional content]] and inappropriate [[Wikipedia:External_links#Advertising_and_conflicts_of_interest|external links]], and by adding encyclopedic content written from a [[Wikipedia:Neutral point of view|neutral point of view]].
| removalnotice = yes
| cat = Articles with a promotional tone
| date = {{{date|}}}
| all = All articles with a promotional tone
}}
}}<noinclude>
{{documentation}}
</noinclude>
503795cf9361b12bcaed584d6fafb2cc04c11b57
Template:Navbar-header
10
1664
3077
2022-12-30T22:49:41Z
wikipedia>GKFX
0
Use [[Module:Navbar]] directly for [[WP:PEIS]] reasons.
wikitext
text/x-wiki
<templatestyles src="Navbar-header/styles.css"/><div class="navbar-header" {{#if:{{{fontcolor|}}}|style="color:{{{fontcolor}}};"}}>{{{1}}}<!--
-->{{#invoke:navbar|navbar
| 1 = {{{2<noinclude>|Navbar-header</noinclude>}}}
| {{#ifeq: {{{plain|}}}
|<!--equals:-->1
|<!--then:-->plain
|<!--else:-->mini
}} = 1
| {{#if: {{{fontcolor|}}}
| fontstyle | NULL }} = color:{{{fontcolor}}};
}}<!--
--></div><noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
f24c880cdd077ccfcd14829309531bb17c5bb430
Module:Detect singular
828
175
403
2023-01-02T22:05:13Z
wikipedia>Hike395
0
decode HTML entities
Scribunto
text/plain
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesNo = require('Module:Yesno')
local getPlain = require('Module:Text').Text().getPlain
-- function to determine whether "sub" occurs in "s"
local function plainFind(s, sub)
return mw.ustring.find(s, sub, 1, true)
end
-- function to count the number of times "pattern" (a regex) occurs in "s"
local function countMatches(s, pattern)
local _, count = mw.ustring.gsub(s, pattern, '')
return count
end
local singular = 1
local likelyPlural = 2
local plural = 3
-- Determine whether a string is singular or plural (i.e., it represents one
-- item or many)
-- Arguments:
-- origArgs[1]: string to process
-- origArgs.no_comma: if false, use commas to detect plural (default false)
-- origArgs.parse_links: if false, treat wikilinks as opaque singular objects (default false)
-- Returns:
-- singular, likelyPlural, or plural (see constants above), or nil for completely unknown
function p._main(origArgs)
origArgs = type(origArgs) == 'table' and origArgs or {}
local args = {}
-- canonicalize boolean arguments
for key, default in pairs({no_comma=false,parse_links=false,any_comma=false,no_and=false}) do
if origArgs[key] == nil then
args[key] = default
else
args[key] = yesNo(origArgs[key],default)
end
end
local checkComma = not args.no_comma
local checkAnd = not args.no_and
local rewriteLinks = not args.parse_links
local anyComma = args.any_comma
local s = origArgs[1] -- the input string
if not s then
return nil -- empty input returns nil
end
s = tostring(s)
s = mw.text.decode(s,true) --- replace HTML entities (to avoid spurious semicolons)
if plainFind(s,'data-plural="0"') then -- magic data string to return true
return singular
end
if plainFind(s,'data-plural="1"') then -- magic data string to return false
return plural
end
-- count number of list items
local numListItems = countMatches(s,'<%s*li')
-- if exactly one, then singular, if more than one, then plural
if numListItems == 1 then
return singular
end
if numListItems > 1 then
return plural
end
-- if "list of" occurs inside of wlink, then it's plural
if mw.ustring.find(s:lower(), '%[%[[^%]]*list of[^%]]+%]%]') then
return plural
end
-- fix for trailing br tags passed through [[template:marriage]]
s = mw.ustring.gsub(s, '<%s*br[^>]*>%s*(</div>)', '%1')
-- replace all wikilinks with fixed string
if rewriteLinks then
s = mw.ustring.gsub(s,'%b[]','WIKILINK')
end
-- Five conditions: any one of them can make the string a likely plural or plural
local hasBreak = mw.ustring.find(s,'<%s*br')
-- For the last 4, evaluate on string stripped of wikimarkup
s = getPlain(s)
local hasBullets = countMatches(s,'%*+') > 1
local multipleQids = mw.ustring.find(s,'Q%d+[%p%s]+Q%d+') -- has multiple QIDs in a row
if hasBullets or multipleQids then
return plural
end
local commaPattern = anyComma and '[,;]' or '%D[,;]%D' -- semi-colon similar to comma
local hasComma = checkComma and mw.ustring.find(s, commaPattern)
local hasAnd = checkAnd and mw.ustring.find(s,'[,%s]and%s')
if hasBreak or hasComma or hasAnd then
return likelyPlural
end
return singular
end
function p._pluralize(args)
args = type(args) == 'table' and args or {}
local singularForm = args[3] or args.singular or ""
local pluralForm = args[4] or args.plural or ""
local likelyForm = args.likely or pluralForm
local link = args[5] or args.link
if link then
link = tostring(link)
singularForm = '[['..link..'|'..singularForm..']]'
pluralForm = '[['..link..'|'..pluralForm..']]'
likelyForm = '[['..link..'|'..likelyForm..']]'
end
if args[2] then
return pluralForm
end
local detect = p._main(args)
if detect == nil then
return "" -- return blank on complete failure
end
if detect == singular then
return singularForm
elseif detect == likelyPlural then
return likelyForm
else
return pluralForm
end
end
function p.main(frame)
local args = getArgs(frame)
-- For template, return 1 if singular, blank if plural or empty
local result = p._main(args)
if result == nil then
return 1
end
return result == singular and 1 or ""
end
function p.pluralize(frame)
local args = getArgs(frame)
return p._pluralize(args)
end
return p
6afb2e8c0bd8ddff094e2861b836521ee4a5a779
Template:Megali Idea
10
1112
2423
2023-01-07T22:16:47Z
wikipedia>DuncanHill
0
Use direct links in templates [[WP:NAVNOREDIRECT]] - Have not checked all
wikitext
text/x-wiki
{{Navbox
|name = Megali Idea
|title = [[Megali Idea]]
|state = {{{state|autocollapse}}}
|listclass = hlist
|titlestyle = background:;
|groupstyle = text-align:center; background:;
|image= [[File:ParisPeace-Venizelos-Map.png|120px]]
|group1 = Background
|list1 =
* [[Fall of Constantinople]]
* [[Ottoman Greece]]
* [[Greek Plan]]
* [[Greek War of Independence]]
* [[First Hellenic Republic]]
* [[Kingdom of Greece]]
|group2 = Annexations
|list2 =
* [[Ionian Islands]] (1864)
* [[Thessaly]] (1881)
* [[Crete]] (1912)
* [[Epirus (region)|Epirus]] (1912)
* [[Macedonia (Greece)|Macedonia]] (1912)
* [[North Aegean islands]] (1912)
* [[Western Thrace]] (1919)
* [[Dodecanese]] (1947)
|group3 = Temporary<br/>acquisitions
|list3 =
* [[Eastern Thrace]] (1920–23)
* [[Imbros]] and [[Tenedos]] (1912–13, 1920–23)
* [[Northern Epirus]] (1914–17, 1919–21, 1940–41)
* [[Smyrna Zone]] (1919–22 as dependency)
* [[Occupation of Istanbul|Constantinople, Zone of the Straits]] (1918–23 with France, Italy and United Kingdom)
|group4 = Other areas
|list4 =
* [[Asia Minor]] which included: [[Ionia]]
*[[Aeolis]]
*[[Doris (Asia Minor)|Doris]]
*[[Cappadocia]] ([[Cappadocian Greeks]])
*[[Lydia]]
*[[Caria]]
*[[Mysia]]
*[[Troad|Troas]]
*[[Phrygia]]
*[[Galatia]]
*[[Bithynia]]
*[[Lycia]]
*[[Cilicia]]
*[[Cataonia]]
*[[Lycaonia]]
*[[Pamphylia]]
*[[Isauria]]
*[[Pisidia]]
*[[Paphlagonia]]
*[[Chamanene]]
*[[Armenia Minor]]
*Part of [[Commagene]]
* [[Cyprus]]
* [[Eastern Rumelia]]
* [[Pelagonia]] ([[Bitola|Monastiri]] region)
* [[Gevgelija|Gevgeli]]
* [[Sazan|Sazan island]]
* [[Pontus (region)|Pontus]]
|group5 = Ideas
|list5 =
* [[Greek nationalism]]
* [[Hellenization]]
* [[Enosis]]
|group6 = People/Organizations
|list6 =
* [[Ioannis Kolettis]]
* [[Aristotelis Valaoritis]]
* [[Ethniki Etaireia]]
* [[Macedonian Committee]]
* [[Alexandros Koumoundouros]]
* [[Dimitrios Kalapothakis]]
* [[Stephanos Dragoumis]]
* [[Pavlos Melas]]
* [[Kostis Palamas]]
* [[Goudi coup|Military League]]
* [[Eleftherios Venizelos]]
* [[Penelope Delta]]
* [[Themistoklis Sofoulis]]
* [[Nikolaos Plastiras]]
* [[Georgios Christakis-Zografos]]
* [[Theodoros Pangalos (general)|Theodoros Pangalos]]
* [[Northern Epirus Liberation Front]]
* [[EOKA]]
* [[Georgios Grivas]]
* [[Dimitrios Ioannidis]]
|group7 = Events
|list7 =
* [[Party of Radicals (Ionian Islands)]]
* [[Epirus Revolt of 1854]]
* [[1854 Macedonian rebellion]]
* [[1867 Macedonian rebellion]]
* [[Cretan revolt (1866–1869)]]
* [[Cretan revolt (1878)]]
* [[Epirus Revolt of 1878]]
* [[1878 Macedonian rebellion]]
* [[Macedonian Struggle]]
* [[Greco-Turkish War (1897)]]
* [[Theriso revolt]]
* [[Balkan League]]
* [[Greece in the Balkan Wars|Balkan Wars]]
* [[Himara revolt of 1912]]
* [[Autonomous Republic of Northern Epirus]]
* [[Provisional Government of National Defence]]
* [[National Defence Army Corps]]
* [[Greece during World War I|Greece in WWI]]
* [[Occupation of Constantinople]]
* [[Greek landing at Smyrna]]
* [[Republic of Pontus]]
* [[Greco-Turkish War (1919–1922)]]
* [[Great Fire of Smyrna]]
* [[1931 Cyprus Revolt]]
* [[Military history of Greece during World War II|Greece in WWII]]
* [[Greco-Italian War]]
* [[Cyprus Emergency]]
* [[1974 Cypriot coup d'état]]
|group8 = Treaties
|list8 =
* [[Treaty of London (1864)]]
* [[Greek-Serbian Alliance of 1867]]
* [[Treaty of Berlin (1878)]]
* [[Convention of Constantinople (1881)]]
* [[Treaty of Constantinople (1897)]]
* [[Greek-Serbian Alliance of 1913]]
* [[Treaty of London (1913)]]
* [[Treaty of Bucharest (1913)]]
* [[Treaty of Athens]] (1913)
* [[Protocol of Corfu]] (1914)
* [[Venizelos–Tittoni agreement]] (1919)
* [[Treaty of Neuilly-sur-Seine]] (1919)
* [[Treaty of Sèvres]] (1920)
* [[Treaty of Lausanne|Treaty of Lausanne (1923)]]
* [[Treaty of Peace with Italy, 1947|Treaty of Paris (1947)]]
* [[Treaty of Guarantee (1960)]]
|below =
|belowstyle = background:;
}}<noinclude>
{{collapsible option}}
[[Category:Megali Idea|τ]]
[[Category:Greek nationalism|τ]]
[[Category:Pan-nationalism|*]]
</noinclude>
16782fa2ee56cebd2c36eca2c8f7b99db0bdd539
Template:Infobox UK place/local
10
1408
2743
2023-01-08T00:08:53Z
w>Jonesey95
0
fix broken ambulance service at e.g. [[Eversley Cross]]
wikitext
text/x-wiki
{{#switch: {{{level1}}}
| England = {{#switch: {{{level2}}}
| East Midlands = {{#ifeq: {{{retrieve}}}|region|[[East Midlands]]|{{#switch: {{{level3}}}
| Derbyshire | [[Derbyshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Derbyshire
| maptitle = [[Derbyshire]]
| fire = [[Derbyshire Fire and Rescue Service|Derbyshire]]
| police = [[Derbyshire Constabulary|Derbyshire]]
| footer = [[List of places in Derbyshire|Derbyshire]]
| ambulance = {{#switch: {{{postcode}}}
| SK13 = [[North West Ambulance Service|North West]]
| #default = [[East Midlands Ambulance Service|East Midlands]]
}}}}
| Leicestershire | [[Leicestershire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Leicestershire
| maptitle = [[Leicestershire]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Leicestershire and Rutland Fire and Rescue Service|Leicestershire]]
| police = [[Leicestershire Police|Leicestershire]]
| footer = [[List of places in Leicestershire|Leicestershire]]
}}
| Lincolnshire | [[Lincolnshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Lincolnshire
| maptitle = [[Lincolnshire]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Lincolnshire Fire and Rescue Service|Lincolnshire]]
| police = [[Lincolnshire Police|Lincolnshire]]
| footer = [[List of places in Lincolnshire|Lincolnshire]]
}}
| Northamptonshire | [[Northamptonshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Northamptonshire
| maptitle = [[Northamptonshire]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Northamptonshire Fire and Rescue Service|Northamptonshire]]
| police = [[Northamptonshire Police|Northamptonshire]]
| footer = [[List of places in Northamptonshire|Northamptonshire]]
}}
| Nottinghamshire | [[Nottinghamshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Nottinghamshire
| maptitle = [[Nottinghamshire]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Nottinghamshire Fire and Rescue Service|Nottinghamshire]]
| police = [[Nottinghamshire Police|Nottinghamshire]]
| footer = [[List of places in Nottinghamshire|Nottinghamshire]]
}}
| Rutland | [[Rutland]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Rutland
| maptitle = [[Rutland]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Leicestershire and Rutland Fire and Rescue Service|Leicestershire]]
| police = [[Leicestershire Police|Leicestershire]]
| footer = [[List of places in Rutland|Rutland]]
}}}}}}
| East of England = {{#switch: {{{retrieve}}}
| ambulance = [[East of England Ambulance Service|East of England]]
| region = [[East of England|East]]
| #default = {{#switch: {{{level3}}}
| Bedfordshire | [[Bedfordshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Bedfordshire
| maptitle = [[Bedfordshire]]
| fire = [[Bedfordshire and Luton Fire and Rescue Service|Bedfordshire and Luton]]
| police = [[Bedfordshire Police|Bedfordshire]]
| footer = [[List of places in Bedfordshire|Bedfordshire]]
}}
| Cambridgeshire | [[Cambridgeshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Cambridgeshire
| maptitle = [[Cambridgeshire]]
| fire = [[Cambridgeshire Fire and Rescue Service|Cambridgeshire]]
| police = [[Cambridgeshire Constabulary|Cambridgeshire]]
| footer = [[List of places in Cambridgeshire|Cambridgeshire]]
}}
| Essex | [[Essex]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Essex
| maptitle = [[Essex]]
| fire = [[Essex County Fire and Rescue Service|Essex]]
| police = [[Essex Police|Essex]]
| footer = [[List of places in Essex|Essex]]
}}
| Hertfordshire | [[Hertfordshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Hertfordshire
| maptitle = [[Hertfordshire]]
| fire = [[Hertfordshire Fire and Rescue Service|Hertfordshire]]
| police = [[Hertfordshire Constabulary|Hertfordshire]]
| footer = [[List of places in Hertfordshire|Hertfordshire]]
}}
| Norfolk | [[Norfolk]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Norfolk
| maptitle = [[Norfolk]]
| fire = [[Norfolk Fire and Rescue Service|Norfolk]]
| police = [[Norfolk Constabulary|Norfolk]]
| footer = [[List of places in Norfolk|Norfolk]]
}}
| Suffolk | [[Suffolk]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Suffolk
| maptitle = [[Suffolk]]
| fire = [[Suffolk Fire and Rescue Service|Suffolk]]
| police = [[Suffolk Constabulary|Suffolk]]
| footer = [[List of places in Suffolk|Suffolk]]
}}}}}}
| London
| Greater London = {{#switch: {{{retrieve}}}
| map = United Kingdom Greater London
| maptitle = [[Greater London]]
| ambulance = [[London Ambulance Service|London]]
| fire = [[London Fire Brigade|London]]
| region = [[Greater London|London]]
| footer = [[List of places in London|London]]
| #default = {{#switch: {{{level3}}}
| City of London = {{#switch: {{{retrieve}}}
| assembly = [[City and East (London Assembly constituency)|City and East]]
| borough = [[City of London]]
| boroughhead = Sui generis
| countyhead = Administrative area
| police = [[City of London Police|City of London]]
}}
| #default = {{#switch: {{{retrieve}}}
| boroughhead = [[Districts of England|London borough]]
| countyhead = [[Ceremonial counties of England|Ceremonial county]]
| police = [[Metropolitan Police|Metropolitan]]
| #default = {{#switch: {{{level4}}}
| Barking and Dagenham
| Barking & Dagenham = {{#switch: {{{retrieve}}}
| assembly = [[City and East (London Assembly constituency)|City and East]]
| borough = [[London Borough of Barking and Dagenham|Barking & Dagenham]]
}}
| Barnet = {{#switch: {{{retrieve}}}
| assembly = [[Barnet and Camden (London Assembly constituency)|Barnet and Camden]]
| borough = [[London Borough of Barnet|Barnet]]
}}
| Bexley = {{#switch: {{{retrieve}}}
| assembly = [[Bexley and Bromley (London Assembly constituency)|Bexley and Bromley]]
| borough = [[London Borough of Bexley|Bexley]]
}}
| Brent = {{#switch: {{{retrieve}}}
| assembly = [[Brent and Harrow (London Assembly constituency)|Brent and Harrow]]
| borough = [[London Borough of Brent|Brent]]
}}
| Bromley = {{#switch: {{{retrieve}}}
| assembly = [[Bexley and Bromley (London Assembly constituency)|Bexley and Bromley]]
| borough = [[London Borough of Bromley|Bromley]]
}}
| Camden = {{#switch: {{{retrieve}}}
| assembly = [[Barnet and Camden (London Assembly constituency)|Barnet and Camden]]
| borough = [[London Borough of Camden|Camden]]
}}
| Croydon = {{#switch: {{{retrieve}}}
| assembly = [[Croydon and Sutton (London Assembly constituency)|Croydon and Sutton]]
| borough = [[London Borough of Croydon|Croydon]]
}}
| Ealing = {{#switch: {{{retrieve}}}
| assembly = [[Ealing and Hillingdon (London Assembly constituency)|Ealing and Hillingdon]]
| borough = [[London Borough of Ealing|Ealing]]
}}
| Enfield = {{#switch: {{{retrieve}}}
| assembly = [[Enfield and Haringey (London Assembly constituency)|Enfield and Haringey]]
| borough = [[London Borough of Enfield|Enfield]]
}}
| Greenwich = {{#switch: {{{retrieve}}}
| assembly = [[Greenwich and Lewisham (London Assembly constituency)|Greenwich and Lewisham]]
| borough = [[Royal Borough of Greenwich|Greenwich]]
}}
| Hackney = {{#switch: {{{retrieve}}}
| assembly = [[North East (London Assembly constituency)|North East]]
| borough = [[London Borough of Hackney|Hackney]]
}}
| Hammersmith and Fulham
| Hammersmith & Fulham = {{#switch: {{{retrieve}}}
| assembly = [[West Central (London Assembly constituency)|West Central]]
| borough = [[London Borough of Hammersmith and Fulham|Hammersmith & Fulham]]
}}
| Haringey = {{#switch: {{{retrieve}}}
| assembly = [[Enfield and Haringey (London Assembly constituency)|Enfield and Haringey]]
| borough = [[London Borough of Haringey|Haringey]]
}}
| Harrow = {{#switch: {{{retrieve}}}
| assembly = [[Brent and Harrow (London Assembly constituency)|Brent and Harrow]]
| borough = [[London Borough of Harrow|Harrow]]
}}
| Havering = {{#switch: {{{retrieve}}}
| assembly = [[Havering and Redbridge (London Assembly constituency)|Havering and Redbridge]]
| borough = [[London Borough of Havering|Havering]]
}}
| Hillingdon = {{#switch: {{{retrieve}}}
| assembly = [[Ealing and Hillingdon (London Assembly constituency)|Ealing and Hillingdon]]
| borough = [[London Borough of Hillingdon|Hillingdon]]
}}
| Hounslow = {{#switch: {{{retrieve}}}
| assembly = [[South West (London Assembly constituency)|South West]]
| borough = [[London Borough of Hounslow|Hounslow]]
}}
| Islington = {{#switch: {{{retrieve}}}
| assembly = [[North East (London Assembly constituency)|North East]]
| borough = [[London Borough of Islington|Islington]]
}}
| Kensington and Chelsea
| Kensington & Chelsea = {{#switch: {{{retrieve}}}
| assembly = [[West Central (London Assembly constituency)|West Central]]
| borough = [[Royal Borough of Kensington and Chelsea|Kensington & Chelsea]]
}}
| Kingston upon Thames
| Kingston = {{#switch: {{{retrieve}}}
| assembly = [[South West (London Assembly constituency)|South West]]
| borough = [[Royal Borough of Kingston upon Thames|Kingston]]
}}
| Lambeth = {{#switch: {{{retrieve}}}
| assembly = [[Lambeth and Southwark (London Assembly constituency)|Lambeth and Southwark]]
| borough = [[London Borough of Lambeth|Lambeth]]
}}
| Lewisham = {{#switch: {{{retrieve}}}
| assembly = [[Greenwich and Lewisham (London Assembly constituency)|Greenwich and Lewisham]]
| borough = [[London Borough of Lewisham|Lewisham]]
}}
| Merton = {{#switch: {{{retrieve}}}
| assembly = [[Merton and Wandsworth (London Assembly constituency)|Merton and Wandsworth]]
| borough = [[London Borough of Merton|Merton]]
}}
| Newham = {{#switch: {{{retrieve}}}
| assembly = [[City and East (London Assembly constituency)|City and East]]
| borough = [[London Borough of Newham|Newham]]
}}
| Redbridge = {{#switch: {{{retrieve}}}
| assembly = [[Havering and Redbridge (London Assembly constituency)|Havering and Redbridge]]
| borough = [[London Borough of Redbridge|Redbridge]]
}}
| Richmond upon Thames
| Richmond = {{#switch: {{{retrieve}}}
| assembly = [[South West (London Assembly constituency)|South West]]
| borough = [[London Borough of Richmond upon Thames|Richmond]]
}}
| Southwark = {{#switch: {{{retrieve}}}
| assembly = [[Lambeth and Southwark (London Assembly constituency)|Lambeth and Southwark]]
| borough = [[London Borough of Southwark|Southwark]]
}}
| Sutton = {{#switch: {{{retrieve}}}
| assembly = [[Croydon and Sutton (London Assembly constituency)|Croydon and Sutton]]
| borough = [[London Borough of Sutton|Sutton]]
}}
| Tower Hamlets = {{#switch: {{{retrieve}}}
| assembly = [[City and East (London Assembly constituency)|City and East]]
| borough = [[London Borough of Tower Hamlets|Tower Hamlets]]
}}
| Waltham Forest = {{#switch: {{{retrieve}}}
| assembly = [[North East (London Assembly constituency)|North East]]
| borough = [[London Borough of Waltham Forest|Waltham Forest]]
}}
| Wandsworth = {{#switch: {{{retrieve}}}
| assembly = [[Merton and Wandsworth (London Assembly constituency)|Merton and Wandsworth]]
| borough = [[London Borough of Wandsworth|Wandsworth]]
}}
| Westminster = {{#switch: {{{retrieve}}}
| assembly = [[West Central (London Assembly constituency)|West Central]]
| borough = [[City of Westminster|Westminster]]
}}}}}}}}}}
| North East England = {{#switch: {{{retrieve}}}
| ambulance = [[North East Ambulance Service|North East]]
| region = [[North East England|North East]]
| #default = {{#switch: {{{level3}}}
| [[County Durham]]
| [[County Durham|Durham]] = {{#switch: {{{level4}}}
| [[Borough of Stockton-on-Tees]]
| [[Borough of Stockton-on-Tees|Stockton-on-Tees]]
| [[Stockton-on-Tees (borough)|Stockton-on-Tees]]
| [[Stockton-on-Tees (borough)]]
| [[Redcar and Cleveland]]
| [[Borough of Hartlepool]]
| [[Borough of Hartlepool|Hartlepool]]
| [[Hartlepool (borough)]]
| [[Hartlepool (borough)|Hartlepool]]
| [[Middlesbrough]]
| [[Middlesbrough (borough)]]
| [[Middlesbrough (borough)|Middlesbrough]] = {{#switch: {{{retrieve}}}
| map = United Kingdom County Durham
| maptitle = [[County Durham]]
| fire = [[Cleveland Fire Brigade|Cleveland]]
| police = [[Cleveland Police|Cleveland]]
| footer = [[List of places in County Durham|County Durham]]
}}
| #default = {{#switch: {{{retrieve}}}
| map = United Kingdom County Durham
| maptitle = [[County Durham]]
| fire = [[County Durham and Darlington Fire and Rescue Service|County Durham and Darlington]]
| police = [[Durham Constabulary|Durham]]
| footer = [[List of places in County Durham|County Durham]]
}}}}
| Northumberland | [[Northumberland]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Northumberland
| maptitle = [[Northumberland]]
| fire = [[Northumberland Fire and Rescue Service|Northumberland]]
| police = [[Northumbria Police|Northumbria]]
| footer = [[List of places in Northumberland|Northumberland]]
}}
| North Yorkshire | [[North Yorkshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom North Yorkshire
| maptitle = [[North Yorkshire]]
| fire = [[Cleveland Fire Brigade|Cleveland]]
| police = [[Cleveland Police|Cleveland]]
| footer = [[List of places in Yorkshire|Yorkshire]]
}}
| [[Tyne and Wear]]
| [[Tyne & Wear]]
| [[Tyne and Wear|Tyne & Wear]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Tyne and Wear
| maptitle = [[Tyne and Wear]]
| fire = [[Tyne and Wear Fire and Rescue Service|Tyne and Wear]]
| police = [[Northumbria Police|Northumbria]]
| footer = [[List of places in Tyne and Wear|Tyne and Wear]]
}}}}}}
| North West England = {{#switch: {{{retrieve}}}
| ambulance = [[North West Ambulance Service|North West]]
| region = [[North West England|North West]]
| #default = {{#switch: {{{level3}}}
| Cheshire | [[Cheshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Cheshire
| maptitle = [[Cheshire]]
| fire = [[Cheshire Fire and Rescue Service|Cheshire]]
| police = [[Cheshire Constabulary|Cheshire]]
| footer = [[List of places in Cheshire|Cheshire]]
}}
| Cumbria | [[Cumbria]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Cumbria
| maptitle = [[Cumbria]]
| fire = [[Cumbria Fire and Rescue Service|Cumbria]]
| police = [[Cumbria Constabulary|Cumbria]]
| footer = [[List of places in Cumbria|Cumbria]]
}}
| Greater Manchester | [[Greater Manchester]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Greater Manchester
| maptitle = [[Greater Manchester]]
| fire = [[Greater Manchester Fire and Rescue Service|Greater Manchester]]
| police = [[Greater Manchester Police|Greater Manchester]]
| footer = [[List of places in Greater Manchester|Greater Manchester]]
}}
| Lancashire | [[Lancashire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Lancashire
| maptitle = [[Lancashire]]
| fire = [[Lancashire Fire and Rescue Service|Lancashire]]
| police = [[Lancashire Constabulary|Lancashire]]
| footer = [[List of places in Lancashire|Lancashire]]
}}
| Merseyside | [[Merseyside]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Merseyside
| maptitle = [[Merseyside]]
| fire = [[Merseyside Fire and Rescue Service|Merseyside]]
| police = [[Merseyside Police|Merseyside]]
| footer = [[List of places in Merseyside|Merseyside]]
}}}}}}
| South East England = {{#ifeq: {{{retrieve}}}|region|[[South East England|South East]]|{{#switch: {{{level3}}}
| Berkshire | [[Berkshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Berkshire
| maptitle = [[Berkshire]]
| ambulance = [[South Central Ambulance Service|South Central]]
| fire = [[Royal Berkshire Fire and Rescue Service|Royal Berkshire]]
| police = [[Thames Valley Police|Thames Valley]]
| footer = [[List of places in Berkshire|Berkshire]]
}}
| Buckinghamshire | [[Buckinghamshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Buckinghamshire
| maptitle = [[Buckinghamshire]]
| ambulance = [[South Central Ambulance Service|South Central]]
| fire = [[Buckinghamshire Fire and Rescue Service|Buckinghamshire]]
| police = [[Thames Valley Police|Thames Valley]]
| footer = [[List of places in Buckinghamshire|Buckinghamshire]]
}}
| East Sussex | [[East Sussex]] = {{#switch: {{{retrieve}}}
| map = United Kingdom East Sussex
| maptitle = [[East Sussex]]
| ambulance = [[South East Coast Ambulance Service|South East Coast]]
| fire = [[East Sussex Fire & Rescue Service|East Sussex]]
| police = [[Sussex Police|Sussex]]
| footer = [[List of places in East Sussex|East Sussex]]
}}
| Hampshire | [[Hampshire]] = {{#switch: {{{retrieve}}}
| fire = [[Hampshire and Isle of Wight Fire and Rescue Service|Hampshire and Isle of Wight]]
| police = [[Hampshire and Isle of Wight Constabulary|Hampshire and Isle of Wight]]
| footer = [[List of places in Hampshire|Hampshire]]
| #default = {{#switch: {{{level4}}}
| Southampton | [[Southampton]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Southampton
| maptitle = [[Southampton]]
| ambulance = [[South Central Ambulance Service|South Central]]
}}
| Rushmoor | [[Rushmoor]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Hampshire
| maptitle = [[Hampshire]]
| ambulance = [[South East Coast Ambulance Service|South East Coast]]
}}
| [[Hart (district)|Hart]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Hampshire
| maptitle = [[Hampshire]]
| ambulance = [[South Central Ambulance Service|South Central]]
}}
| #default = {{#switch: {{{retrieve}}}
| map = United Kingdom Hampshire
| maptitle = [[Hampshire]]
| ambulance = [[South Central Ambulance Service|South Central]]
}}}}}}
| Isle of Wight | [[Isle of Wight]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Isle of Wight
| maptitle = the [[Isle of Wight]]
| ambulance = [[Isle of Wight NHS Trust|Isle of Wight]]
| fire = [[Hampshire and Isle of Wight Fire and Rescue Service|Hampshire and Isle of Wight]]
| police = [[Hampshire and Isle of Wight Constabulary|Hampshire and Isle of Wight]]
| footer = [[List of places on the Isle of Wight|Isle of Wight]]
}}
| Kent | [[Kent]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Kent
| maptitle = [[Kent]]
| ambulance = [[South East Coast Ambulance Service|South East Coast]]
| fire = [[Kent Fire and Rescue Service|Kent]]
| police = [[Kent Police|Kent]]
| footer = [[List of places in Kent|Kent]]
}}
| Oxfordshire | [[Oxfordshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Oxfordshire
| maptitle = [[Oxfordshire]]
| ambulance = {{#ifeq: {{{official_name}}}|Shrivenham|[[South Western Ambulance Service|South Western]]|[[South Central Ambulance Service|South Central]]}}
| fire = [[Oxfordshire Fire and Rescue Service|Oxfordshire]]
| police = [[Thames Valley Police|Thames Valley]]
| footer = [[List of places in Oxfordshire|Oxfordshire]]
}}
| Surrey | [[Surrey]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Surrey
| maptitle = [[Surrey]]
| ambulance = [[South East Coast Ambulance Service|South East Coast]]
| fire = [[Surrey Fire and Rescue Service|Surrey]]
| police = [[Surrey Police|Surrey]]
| footer = [[List of places in Surrey|Surrey]]
}}
| West Sussex | [[West Sussex]] = {{#switch: {{{retrieve}}}
| map = United Kingdom West Sussex
| maptitle = [[West Sussex]]
| ambulance = [[South East Coast Ambulance Service|South East Coast]]
| fire = [[West Sussex Fire and Rescue Service|West Sussex]]
| police = [[Sussex Police|Sussex]]
| footer = [[List of places in West Sussex|West Sussex]]
}}}}}}
| South West England = {{#ifeq: {{{retrieve}}}|region|[[South West England|South West]]|{{#switch: {{{level3}}}
| Bristol | [[Bristol]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Bristol
| maptitle = [[Bristol]]
| ambulance = [[South Western Ambulance Service|South Western]]
| fire = [[Avon Fire and Rescue Service|Avon]]
| police = [[Avon and Somerset Constabulary|Avon and Somerset]]
| footer = [[List of places in Bristol|Bristol]]
}}
| Cornwall | [[Cornwall]] = {{#switch: {{{retrieve}}}
| map = {{#ifeq:{{{level4}}}|[[Isles of Scilly]]|United Kingdom Isles of Scilly|United Kingdom Cornwall (mainland)}}
| maptitle = {{#ifeq:{{{level4}}}|[[Isles of Scilly]]|[[Isles of Scilly]]|[[Cornwall]]}}
| ambulance = [[South Western Ambulance Service|South Western]]
| police = [[Devon and Cornwall Police|Devon and Cornwall]]
| footer = [[List of places in Cornwall|Cornwall]]
| fire = {{#switch: {{{level4}}}
| Isles of Scilly | [[Isles of Scilly]] = [[Isles of Scilly Fire and Rescue Service|Isles of Scilly]]
| #default = [[Cornwall Fire and Rescue Service|Cornwall]]
}}}}
| Devon | [[Devon]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Devon
| maptitle = [[Devon]]
| ambulance = [[South Western Ambulance Service|South Western]]
| fire = [[Devon and Somerset Fire and Rescue Service|Devon and Somerset]]
| police = [[Devon and Cornwall Police|Devon and Cornwall]]
| footer = [[List of places in Devon|Devon]]
}}
| Dorset | [[Dorset]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Dorset
| maptitle = [[Dorset]]
| ambulance = [[South Western Ambulance Service|South Western]]
| fire = [[Dorset & Wiltshire Fire and Rescue Service|Dorset and Wiltshire]]
| police = [[Dorset Police|Dorset]]
| footer = [[List of places in Dorset|Dorset]]
}}
| Gloucestershire | [[Gloucestershire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Gloucestershire
| maptitle = [[Gloucestershire]]
| ambulance = [[South Western Ambulance Service|South Western]]
| footer = [[List of places in Gloucestershire|Gloucestershire]]
| #default = {{#switch: {{{level4}}}
| South Gloucestershire | [[South Gloucestershire]] = {{#ifeq: {{{retrieve}}}|fire|[[Avon Fire and Rescue Service|Avon]]}}{{#ifeq: {{{retrieve}}}|police|[[Avon and Somerset Constabulary|Avon and Somerset]]}}
| #default = {{#ifeq: {{{retrieve}}}|fire|[[Gloucestershire Fire and Rescue Service|Gloucestershire]]}}{{#ifeq: {{{retrieve}}}|police|[[Gloucestershire Constabulary|Gloucestershire]]}}
}}}}
| Somerset | [[Somerset]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Somerset
| maptitle = [[Somerset]]
| police = [[Avon and Somerset Constabulary|Avon and Somerset]]
| footer = [[List of places in Somerset|Somerset]]
| #default = {{#switch: {{{level4}}}
| [[Bath and North East Somerset]]
| North Somerset | [[North Somerset]] = {{#ifeq: {{{retrieve}}}|ambulance|[[South Western Ambulance Service|South Western]]}}{{#ifeq: {{{retrieve}}}|fire|[[Avon Fire and Rescue Service|Avon]]}}
| #default = {{#ifeq: {{{retrieve}}}|ambulance|[[South Western Ambulance Service|South Western]]}}{{#ifeq: {{{retrieve}}}|fire|[[Devon and Somerset Fire and Rescue Service|Devon and Somerset]]}}
}}}}
| Wiltshire | [[Wiltshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Wiltshire
| maptitle = [[Wiltshire]]
| ambulance = [[South Western Ambulance Service|South Western]]
| fire = [[Dorset & Wiltshire Fire and Rescue Service|Dorset and Wiltshire]]
| police = [[Wiltshire Police|Wiltshire]]
| footer = [[List of places in Wiltshire|Wiltshire]]
}}}}}}
| West Midlands = {{#switch: {{{retrieve}}}
| ambulance = [[West Midlands Ambulance Service|West Midlands]]
| region = [[West Midlands (region)|West Midlands]]
| #default = {{#switch: {{{level3}}}
| Herefordshire | [[Herefordshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Herefordshire
| maptitle = [[Herefordshire]]
| fire = [[Hereford and Worcester Fire and Rescue Service|Hereford and Worcester]]
| police = [[West Mercia Police|West Mercia]]
| footer = [[List of places in Herefordshire|Herefordshire]]
}}
| Shropshire | [[Shropshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Shropshire
| maptitle = [[Shropshire]]
| fire = [[Shropshire Fire and Rescue Service|Shropshire]]
| police = [[West Mercia Police|West Mercia]]
| footer = [[List of places in Shropshire|Shropshire]]
}}
| Staffordshire | [[Staffordshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Staffordshire
| maptitle = [[Staffordshire]]
| fire = [[Staffordshire Fire and Rescue Service|Staffordshire]]
| police = [[Staffordshire Police|Staffordshire]]
| footer = [[List of places in Staffordshire|Staffordshire]]
}}
| Warwickshire | [[Warwickshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Warwickshire
| maptitle = [[Warwickshire]]
| fire = [[Warwickshire Fire and Rescue Service|Warwickshire]]
| police = [[Warwickshire Police|Warwickshire]]
| footer = [[List of places in Warwickshire|Warwickshire]]
}}
| [[West Midlands (county)|West Midlands]]
| West Midlands | [[West Midlands]] = {{#switch: {{{retrieve}}}
| map = United Kingdom West Midlands
| maptitle = the [[West Midlands (county)|West Midlands]]
| fire = [[West Midlands Fire Service|West Midlands]]
| police = [[West Midlands Police|West Midlands]]
| footer = [[List of places in West Midlands (county)|West Midlands]]
}}
| Worcestershire | [[Worcestershire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Worcestershire
| maptitle = [[Worcestershire]]
| fire = [[Hereford and Worcester Fire and Rescue Service|Hereford and Worcester]]
| police = [[West Mercia Police|West Mercia]]
| footer = [[List of places in Worcestershire|Worcestershire]]
}}}}}}
| Yorkshire and the Humber = {{#ifeq: {{{retrieve}}}|region|[[Yorkshire and the Humber]]|{{#switch: {{{level3}}}
| East Riding of Yorkshire | [[East Riding of Yorkshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom East Riding of Yorkshire
| maptitle = the [[East Riding of Yorkshire]]
| ambulance = [[Yorkshire Ambulance Service|Yorkshire]]
| fire = [[Humberside Fire and Rescue Service|Humberside]]
| police = [[Humberside Police|Humberside]]
| footer = [[List of places in Yorkshire|Yorkshire]]
}}
| Lincolnshire | [[Lincolnshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Lincolnshire
| maptitle = [[Lincolnshire]]
| ambulance = [[East Midlands Ambulance Service|East Midlands]]
| fire = [[Humberside Fire and Rescue Service|Humberside]]
| police = [[Humberside Police|Humberside]]
| footer = [[List of places in Lincolnshire|Lincolnshire]]
}}
| North Yorkshire | [[North Yorkshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom North Yorkshire
| maptitle = [[North Yorkshire]]
| ambulance = [[Yorkshire Ambulance Service|Yorkshire]]
| fire = [[North Yorkshire Fire and Rescue Service|North Yorkshire]]
| police = [[North Yorkshire Police|North Yorkshire]]
| footer = [[List of places in Yorkshire|Yorkshire]]
}}
| South Yorkshire | [[South Yorkshire]] = {{#switch: {{{retrieve}}}
| ambulance = [[Yorkshire Ambulance Service|Yorkshire]]
| fire = [[South Yorkshire Fire and Rescue Service|South Yorkshire]]
| police = [[South Yorkshire Police|South Yorkshire]]
| footer = [[List of places in Yorkshire|Yorkshire]]
| #default = {{#switch: {{{level4}}}
| [[City of Sheffield]]
| Sheffield | [[Sheffield]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Sheffield
| maptitle = [[Sheffield]]
}}
| #default = {{#switch: {{{retrieve}}}
| map = United Kingdom South Yorkshire
| maptitle = [[South Yorkshire]]
}}}}}}
| West Yorkshire | [[West Yorkshire]] = {{#switch: {{{retrieve}}}
| map = United Kingdom West Yorkshire
| maptitle = [[West Yorkshire]]
| ambulance = [[Yorkshire Ambulance Service|Yorkshire]]
| fire = [[West Yorkshire Fire and Rescue Service|West Yorkshire]]
| police = [[West Yorkshire Police|West Yorkshire]]
| footer = [[List of places in Yorkshire|Yorkshire]]
}}}}}}
| #default = {{#ifeq: {{{retrieve}}}|map|United Kingdom}}{{#ifeq: {{{retrieve}}}|maptitle|the [[United Kingdom]]{{Infobox UK place/NoLocalMap}}}}
}}
| Isle of Man = {{#switch: {{{retrieve}}}
| map = Isle of Man
| maptitle = the [[Isle of Man]]
| ambulance = [[Isle of Man Ambulance Service|Isle of Man]]
| fire = [[Isle of Man Fire and Rescue Service|Isle of Man]]
| police = [[Isle of Man Constabulary|Isle of Man]]
| footer = [[List of places in the Isle of Man|Isle of Man]]
}}
| Northern Ireland = {{#switch: {{{retrieve}}}
| map = {{#switch: {{{level2}}}
| County Antrim | [[County Antrim]] = Northern Ireland
| County Armagh | [[County Armagh]] = Northern Ireland
| County Londonderry | [[County Londonderry]] = Northern Ireland
| County Down | [[County Down]] = County Down
| County Fermanagh | [[County Fermanagh]] = Northern Ireland
| County Tyrone | [[County Tyrone]] = Northern Ireland
| #default = Northern Ireland
}}
| maptitle = {{#switch: {{{level2}}}
| County Antrim | [[County Antrim]] = [[Northern Ireland]]
| County Armagh | [[County Armagh]] = [[Northern Ireland]]
| County Londonderry | [[County Londonderry]] = [[Northern Ireland]]
| County Down | [[County Down]] = [[County Down]]
| County Fermanagh | [[County Fermanagh]] = [[Northern Ireland]]
| County Tyrone | [[County Tyrone]] = [[Northern Ireland]]
| #default = [[Northern Ireland]]
}}
| ambulance = [[Northern Ireland Ambulance Service|Northern Ireland]]
| fire = [[Northern Ireland Fire and Rescue Service|Northern Ireland]]
| police = [[Police Service of Northern Ireland|Northern Ireland]]
| footer = {{#switch: {{{level2}}}
| County Antrim | [[County Antrim]] = [[List of places in County Antrim|Antrim]]
| County Armagh | [[County Armagh]] = [[List of places in County Armagh|Armagh]]
| County Londonderry | [[County Londonderry]] = [[List of places in County Londonderry|County Londonderry]]
| County Down | [[County Down]] = [[List of places in County Down|Down]]
| County Fermanagh | [[County Fermanagh]] = [[List of places in County Fermanagh|Fermanagh]]
| County Tyrone | [[County Tyrone]] = [[List of places in County Tyrone|Tyrone]]
}}}}
| Scotland = {{#switch: {{{retrieve}}}
| ambulance = [[Scottish Ambulance Service|Scottish]]
| fire = [[Scottish Fire and Rescue Service|Scottish]]
| police = [[Police Scotland|Scotland]]
| #default = {{#switch: {{{level2}}}
| Clackmannanshire | [[Clackmannanshire]] = {{#switch: {{{retrieve}}}
| map = Scotland Clackmannanshire
| maptitle = [[Clackmannanshire]]
}}
| [[Falkirk (council area)|Falkirk]] = {{#switch: {{{retrieve}}}
| map = Scotland Falkirk
| maptitle = the [[Falkirk (council area)|Falkirk]] council area
}}
| [[Stirling Council|Stirling]]
| [[Stirling Council]]
| [[Stirling (district)|Stirling]]
| [[Stirling (council area)|Stirling]] = {{#switch: {{{retrieve}}}
| map = Scotland Stirling
| maptitle = the [[Stirling (council area)|Stirling]] council area
}}
| Dumfries and Galloway | [[Dumfries and Galloway]] = {{#switch: {{{retrieve}}}
| map = Scotland Dumfries and Galloway
| maptitle = [[Dumfries and Galloway]]
}}
| Fife | [[Fife]] = {{#switch: {{{retrieve}}}
| map = Scotland Fife
| maptitle = [[Fife]]
}}
| [[Aberdeen]]
| [[City of Aberdeen]]
| [[Politics of Aberdeen|City of Aberdeen]]
| [[Politics of Aberdeen|Aberdeen]]
| [[City of Aberdeen|Aberdeen]] = {{#switch: {{{retrieve}}}
| map = {{#ifeq:{{PAGENAME}}|Aberdeen|Scotland|Scotland Aberdeen}}
| maptitle = {{#ifeq:{{PAGENAME}}|Aberdeen|[[Scotland]]|the [[Aberdeen|City of Aberdeen]]}}
| footer = [[Areas of Aberdeen|Aberdeen]]
}}
| Aberdeenshire | [[Aberdeenshire]] = {{#switch: {{{retrieve}}}
| map = Scotland Aberdeenshire
| maptitle = [[Aberdeenshire]]
}}
| Moray | [[Moray]] = {{#switch: {{{retrieve}}}
| map = Scotland Moray
| maptitle = [[Moray]]
}}
| [[Highland]]
| [[Highland (council area)|Highland]] = {{#switch: {{{retrieve}}}
| map = {{#switch: {{{level3}}}
|Skye
|Isle of Skye
|[[Skye|Isle of Skye]] = Scotland Isle of Skye
|Caithness
| Caithness |[[Caithness]] = Scotland Caithness
|Lochaber
| Lochaber |[[Lochaber]] = Scotland Lochaber
|Nairn
|[[Nairn (lieutenancy)|Nairn]]
|[[Lord Lieutenant of Nairn|Nairn]]
| Nairn |[[Nairn]] = Scotland Nairn
|Inverness
| Inverness |[[Inverness]] = Scotland Inverness
|Badenoch and Strathspey
| Badenoch and Strathspey |[[Badenoch and Strathspey]] = Scotland Badenoch and Strathspey
|Sutherland
| Sutherland |[[Sutherland]] = Scotland Sutherland
|Ross and Cromarty
| Ross and Cromarty |[[Ross and Cromarty]] = Scotland Ross and Cromarty
|#default = Scotland Highland
}}
| maptitle = {{#switch: {{{level3}}}
|Skye
|Isle of Skye
|[[Skye|Isle of Skye]] = the [[Skye|Isle of Skye]]
|Caithness
| Caithness |[[Caithness]] = the [[Caithness]] area
|Lochaber
| Lochaber |[[Lochaber]] = the [[Lochaber]] area
|Nairn
|[[Nairn (lieutenancy)|Nairn]]
|[[Lord Lieutenant of Nairn|Nairn]]
| Nairn |[[Nairn]] = the [[Lord Lieutenant of Nairn|Nairn]] area
|Inverness
| Inverness |[[Inverness]] = the [[Inverness-shire|Inverness]] area
|Badenoch and Strathspey
| Badenoch and Strathspey |[[Badenoch and Strathspey]] = the [[Badenoch and Strathspey]] area
|Sutherland
| Sutherland |[[Sutherland]] = the [[Sutherland]] area
|Ross and Cromarty
| Ross and Cromarty |[[Ross and Cromarty]] = the [[Ross and Cromarty]] area
|#default = the [[Highland (council area)|Highland]] council area
}}
}}
| [[Orkney Islands]]
| [[Orkney Isles]]
| Orkney | [[Orkney]] = {{#switch: {{{retrieve}}}
| map = Scotland Orkney
| maptitle = [[Orkney]]
}}
| [[Shetland Islands]]
| [[Shetland Isles]]
| Shetland | [[Shetland]] = {{#switch: {{{retrieve}}}
| map = Scotland Shetland
| maptitle = [[Shetland]]
}}
| [[Na h-Eileanan Siar]]
| [[Outer Hebrides]]
| [[Outer Hebrides|Na h-Eileanan Siar]]
| Western Isles | [[Western Isles]] = {{#switch: {{{retrieve}}}
| map = Scotland Outer Hebrides
| maptitle = the [[Outer Hebrides]]
}}
| East Lothian | [[East Lothian]] = {{#switch: {{{retrieve}}}
| map = Scotland East Lothian
| maptitle = [[East Lothian]]
}}
| Midlothian | [[Midlothian]] = {{#switch: {{{retrieve}}}
| map = Scotland Midlothian
| maptitle = [[Midlothian]]
}}
| Scottish Borders | [[Scottish Borders]] = {{#switch: {{{retrieve}}}
| map = Scotland Scottish Borders
| maptitle = the [[Scottish Borders]]
}}
| West Lothian | [[West Lothian]] = {{#switch: {{{retrieve}}}
| map = Scotland West Lothian
| maptitle = [[West Lothian]]
}}
| [[Edinburgh]]
| [[City of Edinburgh]]
| [[Politics of Edinburgh|Edinburgh]]
| [[Politics of Edinburgh|City of Edinburgh]]
| [[City of Edinburgh|Edinburgh]] = {{#switch: {{{retrieve}}}
| map = United Kingdom Edinburgh
| maptitle = [[Edinburgh]]
| footer = [[Areas of Edinburgh|Edinburgh]]
}}
| Argyll and Bute | [[Argyll and Bute]] = {{#switch: {{{retrieve}}}
| map = Scotland Argyll and Bute
| maptitle = [[Argyll and Bute]]
}}
| East Ayrshire | [[East Ayrshire]] = {{#switch: {{{retrieve}}}
| map = Scotland East Ayrshire
| maptitle = [[East Ayrshire]]
}}
| East Dunbartonshire | [[East Dunbartonshire]] = {{#switch: {{{retrieve}}}
| map = Scotland East Dunbartonshire
| maptitle = [[East Dunbartonshire]]
}}
| East Renfrewshire | [[East Renfrewshire]] = {{#switch: {{{retrieve}}}
| map = Scotland East Renfrewshire
| maptitle = [[East Renfrewshire]]
}}
| Inverclyde | [[Inverclyde]] = {{#switch: {{{retrieve}}}
| map = Scotland Inverclyde
| maptitle = [[Inverclyde]]
}}
| North Ayrshire | [[North Ayrshire]] = {{#switch: {{{retrieve}}}
| map = Scotland North Ayrshire
| maptitle = [[North Ayrshire]]
}}
| North Lanarkshire | [[North Lanarkshire]] = {{#switch: {{{retrieve}}}
| map = Scotland North Lanarkshire
| maptitle = [[North Lanarkshire]]
}}
| Renfrewshire | [[Renfrewshire]] = {{#switch: {{{retrieve}}}
| map = Scotland Renfrewshire
| maptitle = [[Renfrewshire]]
}}
| South Ayrshire | [[South Ayrshire]] = {{#switch: {{{retrieve}}}
| map = Scotland South Ayrshire
| maptitle = [[South Ayrshire]]
}}
| South Lanarkshire | [[South Lanarkshire]] = {{#switch: {{{retrieve}}}
| map = Scotland South Lanarkshire
| maptitle = [[South Lanarkshire]]
}}
| West Dunbartonshire | [[West Dunbartonshire]] = {{#switch: {{{retrieve}}}
| map = Scotland West Dunbartonshire
| maptitle = [[West Dunbartonshire]]
}}
| [[Glasgow]]
| [[Politics of Glasgow|Glasgow City Council]]
| [[Politics of Glasgow|Glasgow City]]
| [[Politics of Glasgow|Glasgow]]
| [[Glasgow City Council|City of Glasgow]]
| [[City of Glasgow]]
| [[City of Glasgow|Glasgow]] = {{#switch: {{{retrieve}}}
| map = Scotland Glasgow
| maptitle = [[Glasgow]]
| footer = [[List of places in Glasgow|Glasgow]]
}}
| Angus | [[Angus]] | [[Angus, Scotland|Angus]] = {{#switch: {{{retrieve}}}
| map = Scotland Angus
| maptitle = [[Angus, Scotland|Angus]]
}}
| [[Dundee]]
| [[City of Dundee]]
| [[City of Dundee|Dundee]]
| [[Politics of Dundee|Dundee City]]
| [[Politics of Dundee|Dundee]]
| Dundee City Council | [[Dundee City Council]] = {{#switch: {{{retrieve}}}
| map = {{#ifeq:{{PAGENAME}}|Dundee|Scotland|Scotland Dundee}}
| maptitle = {{#ifeq:{{PAGENAME}}|Dundee|[[Scotland]]|the [[City of Dundee]]}}
}}
| Perth and Kinross | [[Perth and Kinross]] = {{#switch: {{{retrieve}}}
| map = Scotland Perth and Kinross
| maptitle = [[Perth and Kinross]]
}}
| #default = {{#ifeq: {{{retrieve}}}|map|UK Scotland}}{{#ifeq: {{{retrieve}}}|maptitle|[[Scotland]]{{Infobox UK place/NoLocalMap}}}}
}}}}
| Wales = {{#switch: {{{retrieve}}}
| ambulance = [[Welsh Ambulance Service|Welsh]]
| #default = {{#switch: {{{level2}}}
| Carmarthenshire | [[Carmarthenshire]] = {{#switch: {{{retrieve}}}
| map = Wales Carmarthenshire
| maptitle = [[Carmarthenshire]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[Dyfed–Powys Police|Dyfed-Powys]]
| footer = [[List of places in Carmarthenshire|Carmarthenshire]]
}}
| Ceredigion | [[Ceredigion]] = {{#switch: {{{retrieve}}}
| map = Wales Ceredigion
| maptitle = [[Ceredigion]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[Dyfed–Powys Police|Dyfed-Powys]]
| footer = [[List of places in Ceredigion|Ceredigion]]
}}
| Pembrokeshire | [[Pembrokeshire]] = {{#switch: {{{retrieve}}}
| map = Wales Pembrokeshire
| maptitle = [[Pembrokeshire]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[Dyfed–Powys Police|Dyfed-Powys]]
| footer = [[List of places in Pembrokeshire|Pembrokeshire]]
}}
| Powys | [[Powys]] = {{#switch: {{{retrieve}}}
| map = Wales Powys
| maptitle = [[Powys]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[Dyfed–Powys Police|Dyfed-Powys]]
| footer = [[List of places in Powys|Powys]]
}}
| Neath Port Talbot | [[Neath Port Talbot]] = {{#switch: {{{retrieve}}}
| map = Wales Neath Port Talbot
| maptitle = [[Neath Port Talbot]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Neath Port Talbot|Neath Port Talbot]]
}}
| Swansea | [[Swansea]] = {{#switch: {{{retrieve}}}
| map = Wales Swansea
| maptitle = [[Swansea]]
| fire = [[Mid and West Wales Fire and Rescue Service|Mid and West Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Swansea|Swansea]]
}}
| [[Anglesey]]
| Isle of Anglesey | [[Isle of Anglesey]] = {{#switch: {{{retrieve}}}
| map = Wales Anglesey
| maptitle = [[Isle of Anglesey|Anglesey]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Anglesey|Anglesey]]
}}
| [[Conwy]]
| [[Conwy (county borough)|Conwy]]
| [[Conwy County Borough|Conwy]] = {{#switch: {{{retrieve}}}
| map = Wales Conwy
| maptitle = [[Conwy County Borough|Conwy]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Conwy County Borough|Conwy]]
}}
| Denbighshire | [[Denbighshire]] = {{#switch: {{{retrieve}}}
| map = Wales Denbighshire
| maptitle = [[Denbighshire]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Denbighshire|Denbighshire]]
}}
| Flintshire | [[Flintshire]] = {{#switch: {{{retrieve}}}
| map = Wales Flintshire
| maptitle = [[Flintshire]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Flintshire|Flintshire]]
}}
| Gwynedd | [[Gwynedd]] = {{#switch: {{{retrieve}}}
| map = Wales Gwynedd
| maptitle = [[Gwynedd]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Gwynedd|Gwynedd]]
}}
| [[Wrexham]]
| [[Wrexham (county borough)|Wrexham]]
| [[Wrexham County Borough|Wrexham]] = {{#switch: {{{retrieve}}}
| map = Wales Wrexham
| maptitle = [[Wrexham County Borough|Wrexham]]
| fire = [[North Wales Fire and Rescue Service|North Wales]]
| police = [[North Wales Police|North Wales]]
| footer = [[List of places in Wrexham County Borough|Wrexham]]
}}
| Blaenau Gwent | [[Blaenau Gwent]] = {{#switch: {{{retrieve}}}
| map = Wales Blaenau Gwent
| maptitle = [[Blaenau Gwent]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[Gwent Police|Gwent]]
| footer = [[List of places in Blaenau Gwent|Blaenau Gwent]]
}}
| [[Caerphilly]]
| [[Caerphilly (county borough)|Caerphilly]]
| [[Caerphilly County Borough|Caerphilly]] = {{#switch: {{{retrieve}}}
| map = Wales Caerphilly
| maptitle = [[Caerphilly County Borough|Caerphilly]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[Gwent Police|Gwent]]
| footer = [[List of places in Caerphilly County Borough|Caerphilly]]
}}
| Monmouthshire | [[Monmouthshire]] = {{#switch: {{{retrieve}}}
| map = Wales Monmouthshire
| maptitle = [[Monmouthshire]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[Gwent Police|Gwent]]
| footer = [[List of places in Monmouthshire|Monmouthshire]]
}}
| [[Newport, Wales|Newport]] = {{#switch: {{{retrieve}}}
| map = Wales Newport
| maptitle = [[Newport, Wales|Newport]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[Gwent Police|Gwent]]
| footer = [[List of places in Newport|Newport]]
}}
| Torfaen | [[Torfaen]] = {{#switch: {{{retrieve}}}
| map = Wales Torfaen
| maptitle = [[Torfaen]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[Gwent Police|Gwent]]
| footer = [[List of places in Torfaen|Torfaen]]
}}
| [[Bridgend]]
| [[Bridgend (county borough)|Bridgend]]
| [[Bridgend County Borough|Bridgend]] = {{#switch: {{{retrieve}}}
| map = Wales Bridgend
| maptitle = [[Bridgend County Borough|Bridgend]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Bridgend county borough|Bridgend]]
}}
| Cardiff | [[Cardiff]] = {{#switch: {{{retrieve}}}
| map = Wales Cardiff
| maptitle = [[Cardiff]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Cardiff|Cardiff]]
}}
| Merthyr Tydfil
| [[Merthyr Tydfil]]
| [[Merthyr Tydfil County Borough|Merthyr Tydfil]] = {{#switch: {{{retrieve}}}
| map = Wales Merthyr Tydfil
| maptitle = [[Merthyr Tydfil]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Merthyr Tydfil|Merthyr Tydfil]]
}}
| [[Rhondda Cynon Taf]]
| Rhondda Cynon Taff | [[Rhondda Cynon Taff]] = {{#switch: {{{retrieve}}}
| map = Wales Rhondda Cynon Taf
| maptitle = {{{level2}}}
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[South Wales Police|South Wales]]
| footer = {{#switch: {{{level2}}}
| Rhondda Cynon Taf | [[Rhondda Cynon Taf]] = [[List of places in Rhondda Cynon Taf|Rhondda Cynon Taf]]
| Rhondda Cynon Taff | [[Rhondda Cynon Taff]] = [[List of places in Rhondda Cynon Taff|Rhondda Cynon Taff]]
}}}}
| Vale of Glamorgan | [[Vale of Glamorgan]] = {{#switch: {{{retrieve}}}
| map = Wales Vale of Glamorgan
| maptitle = the [[Vale of Glamorgan]]
| fire = [[South Wales Fire and Rescue Service|South Wales]]
| police = [[South Wales Police|South Wales]]
| footer = [[List of places in Vale of Glamorgan|Vale of Glamorgan]]
}}
| #default = {{#ifeq: {{{retrieve}}}|map|Wales}}{{#ifeq: {{{retrieve}}}|maptitle|[[Wales]]{{Infobox UK place/NoLocalMap}}}}
}}}}
| #default = {{#ifeq: {{{retrieve}}}|map|United Kingdom}}{{#ifeq: {{{retrieve}}}|maptitle|the [[United Kingdom]]{{Infobox UK place/NoLocalMap}}}}
}}<noinclude>{{doc|content=
This is a subtemplate of {{tl|Infobox UK place}} and should not be used directly in articles.
[[Category:United Kingdom place infobox templates|Local]]
}}</noinclude>
3c657c0031758beaf390f97cbd87f7faa5cb891e
Template:Fix-span
10
1659
3057
2023-01-09T21:40:54Z
wikipedia>GKFX
0
Use [[Module:DecodeEncode]] rather than manual escaping.
wikitext
text/x-wiki
{{#if:{{{content|}}}|<span class="{{{span-class|cleanup-needed-content}}}" style="padding-left:0.1em; padding-right:0.1em; color:#595959; border:1px solid #DDD;">{{{content|}}}</span>}}{{#switch:{{{subst|¬}}}
|¬={{category handler
|template=[[Category:Templates needing substitution checking]]
|nocat={{{nocat|<noinclude>true</noinclude>}}}
}}
|SUBST=[[Category:Pages with incorrectly substituted templates]]
}}{{Category handler
|main={{Fix/category
|cat-date={{{cat-date|}}}
|cat={{{cat|}}}
|cat-date2={{{cat-date2|}}}
|cat2={{{cat2|}}}
|cat-date3={{{cat-date3|}}}
|cat3={{{cat3|}}}
|date={{{date|}}}
}}
|template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}}
|subpage=no
}}{{#if:{{{special|}}}
|{{{special|}}}
|<sup class="noprint Inline-Template {{{class|}}}" style="margin-left:0.1em; white-space:nowrap;">[<i>{{#if:{{{pre-text|}}}
|{{{pre-text}}} 
}}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:decodeEncode|encode|s={{{title|{{{link|Wikipedia:Cleanup}}}}}} {{#if:{{{date|}}}|({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}}
| {{{post-text}}}
}}</i>]</sup>
}}<noinclude>
{{Documentation}}
</noinclude>
317c176dc9f5cfc1624f68935fdea73d852d3991
Module:Portal/styles.css
828
869
1926
2023-01-11T11:46:43Z
wikipedia>Hike395
0
set min height of row to avoid bunching
sanitized-css
text/css
/* {{pp-template}} */
.portalbox {
padding: 0; /* Timeless adds padding */
margin: 0.5em 0;
display: table;
box-sizing: border-box;
max-width: 175px;
list-style: none;
}
.portalborder {
border: solid #aaa 1px;
padding: 0.1em;
background: #f9f9f9;
}
.portalbox-entry {
display: table-row;
font-size: 85%;
line-height: 110%;
height: 1.9em; /* sets min height */
font-style: italic;
font-weight: bold;
}
.portalbox-image {
display: table-cell;
padding: 0.2em;
vertical-align: middle;
text-align: center;
}
.portalbox-link {
display: table-cell;
padding: 0.2em 0.2em 0.2em 0.3em;
vertical-align: middle;
}
@media (min-width: 720px) {
.portalleft {
clear: left;
float: left;
margin: 0.5em 1em 0.5em 0
}
.portalright {
clear: right;
float: right;
margin: 0.5em 0 0.5em 1em
}
}
067e70fa96d875eaf837d6db94c6d16281c088b6
Template:Authority control
10
1044
2286
2023-01-12T10:48:45Z
wikipedia>MSGJ
0
unknown parameter checking now done by module
wikitext
text/x-wiki
{{#invoke:Authority control|authorityControl}}<noinclude>
{{documentation}}
</noinclude>
e826e6e9609d825b483c2678d80f78742d321d92
Module:Citation/CS1/styles.css
828
832
1846
2023-01-14T14:43:34Z
wikipedia>Trappist the monk
0
sync from sandbox;
sanitized-css
text/css
/* Protection icon
the following line controls the page-protection icon in the upper right corner
it must remain within this comment
{{sandbox other||{{pp-template}}}}
*/
/* Overrides
Some wikis do not override user agent default styles for HTML <cite> and <q>,
unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]].
The word-wrap and :target styles were moved here from Common.css.
On en.wp, keep these the same as [[Template:Citation/styles.css]].
*/
cite.citation {
font-style: inherit; /* Remove italics for <cite> */
/* Break long urls, etc., rather than overflowing box */
word-wrap: break-word;
}
.citation q {
quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */
}
/* Highlight linked elements (such as clicked references) in blue */
.citation:target {
/* ignore the linter - all browsers of interest implement this */
background-color: rgba(0, 127, 255, 0.133);
}
/* ID and URL access
Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external
for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need
to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon.
That's essentially 2 classes and 1 element.
the .id-lock-... selectors are for use by non-citation templates like
{{Catalog lookup link}} which do not have to handle PDF links
*/
.id-lock-free a,
.citation .cs1-lock-free a {
background: url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-limited a,
.id-lock-registration a,
.citation .cs1-lock-limited a,
.citation .cs1-lock-registration a {
background: url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-subscription a,
.citation .cs1-lock-subscription a {
background: url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg)
right 0.1em center/9px no-repeat;
}
/* Wikisource
Wikisource icon when |chapter= or |title= is wikilinked to Wikisource
as in cite wikisource
*/
.cs1-ws-icon a {
background: url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg)
right 0.1em center/12px no-repeat;
}
/* Errors and maintenance */
.cs1-code {
/* <code>...</code> style override: mediawiki's css definition is specified here:
https://git.wikimedia.org/blob/mediawiki%2Fcore.git/
69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
*/
color: inherit;
background: inherit;
border: none;
padding: inherit;
}
.cs1-hidden-error {
display: none;
color: #d33;
}
.cs1-visible-error {
color: #d33;
}
.cs1-maint {
display: none;
color: #3a3;
margin-left: 0.3em;
}
/* Small text size
Set small text size in one place. 0.95 (here) * 0.9 (from references list) is
~0.85, which is the lower bound for size for accessibility. Old styling for this
was just 0.85. We could write the rule so that when this template is inside
references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */
.cs1-format {
font-size: 95%;
}
/* kerning */
.cs1-kern-left {
padding-left: 0.2em;
}
.cs1-kern-right {
padding-right: 0.2em;
}
/* selflinks – avoid bold font style when cs1|2 template links to the current page */
.citation .mw-selflink {
font-weight: inherit;
}
7c96feb084b1883e7b6522660da6a14bdcc94752
Template:Large
10
1247
2581
2023-01-16T01:12:34Z
w>Jonesey95
0
use this template's own documentation
wikitext
text/x-wiki
<span style="font-size:120%">{{{1}}}</span><noinclude>
{{Documentation}}
</noinclude>
8ba6ec8c3178e22dc1f05aa239df8a2b052be668
Template:Documentation subpage
10
55
181
2023-01-17T03:06:00Z
meta>BrandonWM
0
and this
wikitext
text/x-wiki
<includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]]
|text='''This is a documentation [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> It contains usage information, categories, and other content that is not part of the original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} template page
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
2fcb7e4e2d233f798b114d37652fc333213f5ea7
Module:Side box/styles.css
828
152
353
2023-01-19T20:36:50Z
wikipedia>TheDJ
0
use display flow-root to force a new Block formatting context
sanitized-css
text/css
/* {{pp|small=y}} */
.side-box {
margin: 4px 0;
box-sizing: border-box;
border: 1px solid #aaa;
font-size: 88%;
line-height: 1.25em;
background-color: #f9f9f9;
display: flow-root;
}
.side-box-abovebelow,
.side-box-text {
padding: 0.25em 0.9em;
}
.side-box-image {
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.side-box-imageright {
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* roughly the skin's sidebar + size of side box */
@media (min-width: 500px) {
.side-box-flex {
display: flex;
align-items: center;
}
.side-box-text {
flex: 1;
}
}
@media (min-width: 720px) {
.side-box {
width: 238px;
}
.side-box-right {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin-left: 1em;
}
/* derives from mbox classes, which do not float left in mbox-small-left
* so far as I can tell, that was a deliberate decision, since only .ambox
* supports mbox-left
*/
.side-box-left {
/* @noflip */
margin-right: 1em;
}
}
5be55dbc33007e62deac23036c134ed064dbe603
Template:Caution
10
851
1884
2023-01-20T10:02:42Z
wikipedia>Matma Rex
0
Remove unnecessary inline styles when |style= parameter is used – mbox already has styles setting it to 80% width
wikitext
text/x-wiki
{{Mbox
| name = Caution
| demospace = {{{demospace|}}}
| style = {{{style|}}}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>{{Documentation}}</noinclude>
0bd33bad5503b4d0395069f422d3a4af8f5253b9
Template:Infobox command structure
10
1515
2850
2023-01-22T22:30:11Z
w>Zackmann08
0
Adding unknown parameter tracking through [[:Category:Pages using infobox command structure with unknown parameters]] using [[Module:check for unknown parameters]]
wikitext
text/x-wiki
<includeonly>{{military navigation
|raw_name = {{{raw_name|}}}
|title = {{{name|{{PAGENAMEBASE}}}}} {{#if:{{{date|}}}|({{{date}}})}}
|bodyclass= {{{bodyclass|}}}
|group1 = {{#if:{{{parent|}}}|Parent unit}}
|list1 = {{#if:{{{parent|}}}|{{{parent}}}}}
|group2 = {{#if:{{{subordinate|}}}|Components}}
|list2 = {{#if:{{{subordinate|}}}|{{{subordinate}}}}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox command structure with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox command structure]] with unknown parameter "_VALUE_"|ignoreblank=y| bodyclass | date | name | parent | raw_name | subordinate }}<noinclude>
{{documentation}}
</noinclude>
0222856a8bdc4a20c67c6fd07070c8fda0e927a2
Module:Userbox
828
142
2459
333
2023-01-23T19:38:09Z
w>GKFX
0
Remove check for alt text in colour contrast checker. Categorizes too many userboxes which have no actual issue.
Scribunto
text/plain
-- This module implements {{userbox}}.
local categoryHandler = require('Module:Category handler').main
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function checkNum(val, default)
-- Checks whether a value is a number greater than or equal to zero. If so,
-- returns it as a number. If not, returns a default value.
val = tonumber(val)
if val and val >= 0 then
return val
else
return default
end
end
local function addSuffix(num, suffix)
-- Turns a number into a string and adds a suffix.
if num then
return tostring(num) .. suffix
else
return nil
end
end
local function checkNumAndAddSuffix(num, default, suffix)
-- Checks a value with checkNum and adds a suffix.
num = checkNum(num, default)
return addSuffix(num, suffix)
end
local function makeCat(cat, sort)
-- Makes a category link.
if sort then
return mw.ustring.format('[[Category:%s|%s]]', cat, sort)
else
return mw.ustring.format('[[Category:%s]]', cat)
end
end
--------------------------------------------------------------------------------
-- Argument processing
--------------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local origArgs = require('Module:Arguments').getArgs(frame)
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.main(funcName, args)
end
end
p.userbox = makeInvokeFunc('_userbox')
p['userbox-2'] = makeInvokeFunc('_userbox-2')
p['userbox-r'] = makeInvokeFunc('_userbox-r')
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.main(funcName, args)
local userboxData = p[funcName](args)
local userbox = p.render(userboxData)
local cats = p.categories(args)
return userbox .. (cats or '')
end
function p._userbox(args)
-- Does argument processing for {{userbox}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
data.infoClass = args['info-class']
-- Get id values.
local id = args.logo or args[3] or args.id
data.id = id
data.showId = id and true or false
data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.idTextAlign = args['id-a'] or 'center'
data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14)
data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor
data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0'
data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.idOtherParams = args['logo-other-param'] or args['id-op']
data.idClass = args['id-class']
return data
end
p['_userbox-2'] = function (args)
-- Does argument processing for {{userbox-2}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-c'] or args[2] or '#eeeeee'
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt')
data.infoColor = args['info-fc'] or args[8] or 'black'
data.infoPadding = args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-lh'] or '1.25em'
data.infoOtherParams = args['info-op']
-- Get id values.
data.showId = true
data.id = args.logo or args[3] or args.id1 or 'id1'
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px')
data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd'
data.idTextAlign = 'center'
data.idFontSize = checkNum(args['id1-s'], 14)
data.idLineHeight = args['id1-lh'] or '1.25em'
data.idColor = args['id1-fc'] or data.infoColor
data.idPadding = args['id1-p'] or '0 1px 0 0'
data.idOtherParams = args['id1-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[5] or args.id2 or 'id2'
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px')
data.id2Height = data.idHeight
data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd'
data.id2TextAlign = 'center'
data.id2FontSize = checkNum(args['id2-s'], 14)
data.id2LineHeight = args['id2-lh'] or '1.25em'
data.id2Color = args['id2-fc'] or data.infoColor
data.id2Padding = args['id2-p'] or '0 0 0 1px'
data.id2OtherParams = args['id2-op']
return data
end
p['_userbox-r'] = function (args)
-- Does argument processing for {{userbox-r}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get id values.
data.showId = false -- We only show id2 in userbox-r.
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-align'] or args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[3] or args.id or 'id'
data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.id2TextAlign = args['id-a'] or 'center'
data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14)
data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px'
data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.id2OtherParams = args['logo-other-param'] or args['id-op']
return data
end
function p.render(data)
-- Renders the userbox html using the content of the data table.
-- Render the div tag html.
local root = mw.html.create('div')
root
:css('float', data.float)
:css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or ''))
:css('margin', '1px')
:css('width', data.width)
:addClass('wikipediauserbox')
:addClass(data.bodyClass)
-- Render the table tag html.
local tableroot = root:tag('table')
tableroot
:attr('role', 'presentation')
:css('border-collapse', 'collapse')
:css('width', data.width)
:css('margin-bottom', '0')
:css('margin-top', '0')
:css('background', data.backgroundColor)
-- Render the id html.
local tablerow = tableroot:tag('tr')
if data.showId then
tablerow:tag('td')
:css('border', '0')
:css('width', data.idWidth)
:css('height', data.idHeight)
:css('background', data.idBackgroundColor)
:css('text-align', data.idTextAlign)
:css('font-size', data.idFontSize .. 'pt')
:css('font-weight', 'bold')
:css('color', data.idColor)
:css('padding', data.idPadding)
:css('line-height', data.idLineHeight)
:css('vertical-align', 'middle')
:cssText(data.idOtherParams)
:addClass(data.idClass)
:wikitext(data.id)
end
-- Render the info html.
tablerow:tag('td')
:css('border', '0')
:css('text-align', data.infoTextAlign)
:css('font-size', data.infoFontSize)
:css('padding', data.infoPadding)
:css('height', data.infoHeight)
:css('line-height', data.infoLineHeight)
:css('color', data.infoColor)
:css('vertical-align', 'middle')
:cssText(data.infoOtherParams)
:addClass(data.infoClass)
:wikitext(data.info)
-- Render the second id html.
if data.showId2 then
tablerow:tag('td')
:css('border', '0')
:css('width', data.id2Width)
:css('height', data.id2Height)
:css('background', data.id2BackgroundColor)
:css('text-align', data.id2TextAlign)
:css('font-size', data.id2FontSize .. 'pt')
:css('font-weight', 'bold')
:css('color', data.id2Color)
:css('padding', data.id2Padding)
:css('line-height', data.id2LineHeight)
:css('vertical-align', 'middle')
:cssText(data.id2OtherParams)
:wikitext(data.id2)
end
local title = mw.title.getCurrentTitle()
if (title.namespace == 2) and not title.text:match("/") then
return tostring(root) -- regular user page
elseif title.namespace == 14 then
return tostring(root) -- category
elseif title.isTalkPage then
return tostring(root) -- talk page
end
local legible = true
local contrast = require('Module:Color contrast')._ratio
local function has_text(wikitext)
wikitext = wikitext:gsub("]]", "|]]")
wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", "")
wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", "")
wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", "")
return mw.text.trim(wikitext) ~= ""
end
if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then
legible = false
end
-- For bold text >= 14pt, requirement is only 3.
local idContrastThreshold = 4.5
local id2ContrastThreshold = 4.5
if (data.idFontSize or 0) >= 14 then
idContrastThreshold = 3
end
if (data.id2FontSize or 0) >= 14 then
id2ContrastThreshold = 3
end
if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < idContrastThreshold then
if has_text(data.id or "") then
legible = false
end
end
if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < id2ContrastThreshold then
if has_text(data.id2 or "") then
legible = false
end
end
if not legible then
root:wikitext('[[Category:Userboxes with insufficient color contrast]]')
end
return tostring(root)
end
function p.categories(args, page)
-- Gets categories from [[Module:Category handler]].
-- The page parameter makes the function act as though the module was being called from that page.
-- It is included for testing purposes.
local cats = {}
cats[#cats + 1] = args.usercategory
cats[#cats + 1] = args.usercategory2
cats[#cats + 1] = args.usercategory3
cats[#cats + 1] = args.usercategory4
cats[#cats + 1] = args.usercategory5
-- Get the title object
local title
if page then
title = mw.title.new(page)
else
title = mw.title.getCurrentTitle()
end
-- Build category handler arguments.
local chargs = {}
chargs.page = page
chargs.nocat = args.nocat
chargs.main = '[[Category:Pages with templates in the wrong namespace]]'
if args.notcatsubpages then
chargs.subpage = 'no'
end
-- User namespace.
local user = ''
for i, cat in ipairs(cats) do
user = user .. makeCat(cat)
end
chargs.user = user
-- Template namespace.
local basepage = title.baseText
local template = ''
for i, cat in ipairs(cats) do
template = template .. makeCat(cat, ' ' .. basepage)
end
chargs.template = template
return categoryHandler(chargs)
end
return p
3afddd38f65cb302185911fa9957526a85855673
Template:Infobox government agency
10
1159
2485
2023-01-25T06:49:58Z
w>Imzadi1979
0
shouldn't be embedding another infobox in a header
wikitext
text/x-wiki
{{ infobox
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| titlestyle = font-size: 125%;
| title = {{{name|{{{agency_name|{{PAGENAMEBASE}}}}}}}}
| subheader = {{Br separated entries
| 1 = {{{native_name|{{{nativename|}}}}}}
| 2 = {{{native_name_a|{{{nativename_a|}}}}}}
| 3 = {{{native_name_r|{{{nativename_r|}}}}}}
}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{seal|}}}|size={{{seal_size|{{{seal_width|}}}}}}| alt={{{seal_alt|}}}|sizedefault=frameless}}
| caption = {{{seal_caption|}}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|{{{logo_width|}}}}}}| alt={{{logo_alt|}}}|sizedefault=frameless}}
| caption2 = {{{logo_caption|}}}
| headerstyle = background-color: #efefef
| data1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{picture|}}}}}}|size={{{image_size|{{{picture_width|}}}}}}|alt={{{image_alt|}}}|sizedefault=frameless}}{{#if: {{{image_caption|{{{picture_caption|}}}}}} | {{break}}{{{image_caption|{{{picture_caption}}}}}} }}
| header2 = {{#if: {{{formed|}}}{{{preceding1|}}}{{{dissolved|}}}{{{superseding|}}}{{{jurisdiction|}}}{{{headquarters|}}}{{{motto|}}}{{{employees|}}}{{{budget|}}}{{{minister1_name|}}}{{{chief1_name|}}}{{{parent_agency|}}}{{{child1_agency|}}}{{{keydocument1|}}}{{{website|}}}{{{footnotes|}}}{{{map|}}}{{{map_caption|}}} | {{ucfirst: {{#if:{{{type|}}}|{{{type}}}|Agency }} }} overview }}
| label3 = Formed
| data3 = {{{formed|}}}
| label4 = {{#if:{{{preceding1|}}} | {{#if:{{{preceding2|}}}|Preceding agencies|Preceding {{{type|agency}}} }} }}
| data4 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{{preceding1|}}}
| 2 = {{{preceding2|}}}
| 3 = {{{preceding3|}}}
| 4 = {{{preceding4|}}}
| 5 = {{{preceding5|}}}
| 6 = {{{preceding6|}}}
}}
| label5 = Dissolved
| data5 = {{{dissolved|}}}
| label6 = {{#if:{{{superseding|{{{superseding1|}}}}}} | {{#if:{{{superseding2|}}}|Superseding agencies|Superseding {{{service|agency}}} }} }}
| data6 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{{superseding|{{{superseding1|}}}}}}
| 2 = {{{superseding2|}}}
| 3 = {{{superseding3|}}}
| 4 = {{{superseding4|}}}
| 5 = {{{superseding5|}}}
| 6 = {{{superseding6|}}}
}}
| label7 = Type
| data7 = {{{agency_type|}}}
| class7 = category
| label8 = Jurisdiction
| data8 = {{{jurisdiction|}}}
| label9 = Status
| data9 = {{{status|}}}
| label10 = Headquarters
| data10 = {{{headquarters|}}}{{#if: {{{coordinates|}}}|{{break}}{{{coordinates|}}} }}
| label11 = Motto
| data11 = {{{motto|}}}
| label12 = Employees
| data12 = {{{employees|}}}
| label13 = Annual budget
| data13 = {{{budget|}}}
| label14 = {{#if:{{{minister2_name|}}}|{{#if:{{{minister_type|}}}|{{{minister_type}}}|Ministers}} responsible|{{#if:{{{minister_type|}}}|{{{minister_type}}}|Minister}} responsible}}
| data14 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{#if:{{{minister1_name|}}}|{{{minister1_name|}}}{{#if:{{{minister1_pfo|}}}|, {{{minister1_pfo}}}}}|{{#if:{{{minister1_pfo|}}}|{{{minister1_pfo}}}}}}}
| 2 = {{#if:{{{minister2_name|}}}|{{{minister2_name|}}}{{#if:{{{minister2_pfo|}}}|, {{{minister2_pfo}}}}}|{{#if:{{{minister2_pfo|}}}|{{{minister2_pfo}}}}}}}
| 3 = {{#if:{{{minister3_name|}}}|{{{minister3_name|}}}{{#if:{{{minister3_pfo|}}}|, {{{minister3_pfo}}}}}|{{#if:{{{minister3_pfo|}}}|{{{minister3_pfo}}}}}}}
| 4 = {{#if:{{{minister4_name|}}}|{{{minister4_name|}}}{{#if:{{{minister4_pfo|}}}|, {{{minister4_pfo}}}}}|{{#if:{{{minister4_pfo|}}}|{{{minister4_pfo}}}}}}}
| 5 = {{#if:{{{minister5_name|}}}|{{{minister5_name|}}}{{#if:{{{minister5_pfo|}}}|, {{{minister5_pfo}}}}}|{{#if:{{{minister5_pfo|}}}|{{{minister5_pfo}}}}}}}
| 6 = {{#if:{{{minister6_name|}}}|{{{minister6_name|}}}{{#if:{{{minister6_pfo|}}}|, {{{minister6_pfo}}}}}|{{#if:{{{minister6_pfo|}}}|{{{minister6_pfo}}}}}}}
| 7 = {{#if:{{{minister7_name|}}}|{{{minister7_name|}}}{{#if:{{{minister7_pfo|}}}|, {{{minister7_pfo}}}}}|{{#if:{{{minister7_pfo|}}}|{{{minister7_pfo}}}}}}}
| 8 = {{#if:{{{minister8_name|}}}|{{{minister8_name|}}}{{#if:{{{minister8_pfo|}}}|, {{{minister8_pfo}}}}}|{{#if:{{{minister8_pfo|}}}|{{{minister8_pfo}}}}}}}
}}
| label15 = {{#if:{{{deputyminister2_name|}}}|{{#if:{{{deputyminister_type|}}}|{{{deputyminister_type}}}|Deputy Ministers}} responsible|{{#if:{{{deputyminister_type|}}}|{{{deputyminister_type}}}|Deputy Minister}} responsible}}
| data15 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{#if:{{{deputyminister1_name|}}}|{{{deputyminister1_name|}}}{{#if:{{{deputyminister1_pfo|}}}|, {{{deputyminister1_pfo}}}}}|{{#if:{{{deputyminister1_pfo|}}}|{{{deputyminister1_pfo}}}}}}}
| 2 = {{#if:{{{deputyminister2_name|}}}|{{{deputyminister2_name|}}}{{#if:{{{deputyminister2_pfo|}}}|, {{{deputyminister2_pfo}}}}}|{{#if:{{{deputyminister2_pfo|}}}|{{{deputyminister2_pfo}}}}}}}
| 3 = {{#if:{{{deputyminister3_name|}}}|{{{deputyminister3_name|}}}{{#if:{{{deputyminister3_pfo|}}}|, {{{deputyminister3_pfo}}}}}|{{#if:{{{deputyminister3_pfo|}}}|{{{deputyminister3_pfo}}}}}}}
| 4 = {{#if:{{{deputyminister4_name|}}}|{{{deputyminister4_name|}}}{{#if:{{{deputyminister4_pfo|}}}|, {{{deputyminister4_pfo}}}}}|{{#if:{{{deputyminister4_pfo|}}}|{{{deputyminister4_pfo}}}}}}}
| 5 = {{#if:{{{deputyminister5_name|}}}|{{{deputyminister5_name|}}}{{#if:{{{deputyminister5_pfo|}}}|, {{{deputyminister5_pfo}}}}}|{{#if:{{{deputyminister5_pfo|}}}|{{{deputyminister5_pfo}}}}}}}
| 6 = {{#if:{{{deputyminister6_name|}}}|{{{deputyminister6_name|}}}{{#if:{{{deputyminister6_pfo|}}}|, {{{deputyminister6_pfo}}}}}|{{#if:{{{deputyminister6_pfo|}}}|{{{deputyminister6_pfo}}}}}}}
| 7 = {{#if:{{{deputyminister7_name|}}}|{{{deputyminister7_name|}}}{{#if:{{{deputyminister7_pfo|}}}|, {{{deputyminister7_pfo}}}}}|{{#if:{{{deputyminister7_pfo|}}}|{{{deputyminister7_pfo}}}}}}}
| 8 = {{#if:{{{deputyminister8_name|}}}|{{{deputyminister8_name|}}}{{#if:{{{deputyminister8_pfo|}}}|, {{{deputyminister8_pfo}}}}}|{{#if:{{{deputyminister8_pfo|}}}|{{{deputyminister8_pfo}}}}}}}
}}
| label16 = {{ucfirst: {{#if:{{{type|}}}|{{{type}}}|Agency}}}} executive{{#if:{{{chief2_name|}}}|s}}
| data16 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{#if:{{{chief1_name|}}}|{{{chief1_name|}}}{{#if:{{{chief1_position|}}}|, {{{chief1_position}}}}}|{{#if:{{{chief1_position|}}}|{{{chief1_position}}}}}}}
| 2 = {{#if:{{{chief2_name|}}}|{{{chief2_name|}}}{{#if:{{{chief2_position|}}}|, {{{chief2_position}}}}}|{{#if:{{{chief2_position|}}}|{{{chief2_position}}}}}}}
| 3 = {{#if:{{{chief3_name|}}}|{{{chief3_name|}}}{{#if:{{{chief3_position|}}}|, {{{chief3_position}}}}}|{{#if:{{{chief3_position|}}}|{{{chief3_position}}}}}}}
| 4 = {{#if:{{{chief4_name|}}}|{{{chief4_name|}}}{{#if:{{{chief4_position|}}}|, {{{chief4_position}}}}}|{{#if:{{{chief4_position|}}}|{{{chief4_position}}}}}}}
| 5 = {{#if:{{{chief5_name|}}}|{{{chief5_name|}}}{{#if:{{{chief5_position|}}}|, {{{chief5_position}}}}}|{{#if:{{{chief5_position|}}}|{{{chief5_position}}}}}}}
| 6 = {{#if:{{{chief6_name|}}}|{{{chief6_name|}}}{{#if:{{{chief6_position|}}}|, {{{chief6_position}}}}}|{{#if:{{{chief6_position|}}}|{{{chief6_position}}}}}}}
| 7 = {{#if:{{{chief7_name|}}}|{{{chief7_name|}}}{{#if:{{{chief7_position|}}}|, {{{chief7_position}}}}}|{{#if:{{{chief7_position|}}}|{{{chief7_position}}}}}}}
| 8 = {{#if:{{{chief8_name|}}}|{{{chief8_name|}}}{{#if:{{{chief8_position|}}}|, {{{chief8_position}}}}}|{{#if:{{{chief8_position|}}}|{{{chief8_position}}}}}}}
| 9 = {{#if:{{{chief9_name|}}}|{{{chief9_name|}}}{{#if:{{{chief9_position|}}}|, {{{chief9_position}}}}}|{{#if:{{{chief9_position|}}}|{{{chief9_position}}}}}}}
}}
| label17 = Parent department
| data17 = {{{parent_department|}}}
| label18 = Parent {{#if:{{{parent_agency_type|}}}|{{{parent_agency_type}}}|{{#if:{{{type|}}}|{{{type}}}|agency}}}}
| data18 = {{{parent_agency|}}}
| label19 = {{#if:{{{child2_agency|}}}|Child agencies|Child {{#if:{{{type|}}}|{{{type}}}|agency}}}}
| data19 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{{child1_agency|}}}
| 2 = {{{child2_agency|}}}
| 3 = {{{child3_agency|}}}
| 4 = {{{child4_agency|}}}
| 5 = {{{child5_agency|}}}
| 6 = {{{child6_agency|}}}
| 7 = {{{child7_agency|}}}
| 8 = {{{child8_agency|}}}
| 9 = {{{child9_agency|}}}
| 10 = {{{child10_agency|}}}
| 11 = {{{child11_agency|}}}
| 12 = {{{child12_agency|}}}
| 13 = {{{child13_agency|}}}
| 14 = {{{child14_agency|}}}
| 15 = {{{child15_agency|}}}
| 16 = {{{child16_agency|}}}
| 17 = {{{child17_agency|}}}
| 18 = {{{child18_agency|}}}
| 19 = {{{child19_agency|}}}
| 20 = {{{child20_agency|}}}
| 21 = {{{child21_agency|}}}
| 22 = {{{child22_agency|}}}
| 23 = {{{child23_agency|}}}
| 24 = {{{child24_agency|}}}
| 25 = {{{child25_agency|}}}
}}
| label20 = {{#if:{{{keydocument2|}}}|Key documents|Key document}}
| data20 = {{Unbulleted list|item_style=text-indent: -1em; padding-left: 1em;
| 1 = {{{keydocument1|}}}
| 2 = {{{keydocument2|}}}
| 3 = {{{keydocument3|}}}
| 4 = {{{keydocument4|}}}
| 5 = {{{keydocument5|}}}
| 6 = {{{keydocument6|}}}
}}
| label21 = Website
| data21 = {{{website|}}}
| label22 = Agency ID
| data22 = {{{agency_id|}}}
| header23 = {{#if:{{{map|}}}|{{Infobox|child=yes|decat=yes
| title = Map
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{map|}}}|alt={{{map_alt}}}|size={{{map_size|{{{map_width|}}}}}}|sizedefault=frameless}}
| caption = {{{map_caption|}}}
}}}}
| image3 = {{#if:{{{pushpin_map|{{{map_type|}}}}}}|{{Location map|{{{pushpin_map|{{{map_type|}}}}}}
|alt = {{{pushpin_map_alt|{{{map_alt|}}}}}}
|coordinates = {{{coordinates|}}}
|float = center
|mark = {{{map_dot_mark|Red pog.svg}}}
|marksize= 7
|label = {{{pushpin_label|{{{map dot label|{{{map_dot_label|}}}}}}}}}
|relief = {{{pushpin_relief|{{{relief|}}}}}}
|border = none
|caption = <!--leave blank-->
|width = {{{pushpin_mapsize|{{{map_size|}}}}}}
}} |<!-- else if map_type is blank
-->{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_size|}}}|sizedefault=frameless|alt={{{map_alt|}}}}}<!-- end if map_type
-->}}
| caption3 = {{#if:{{{pushpin_map|{{{map_type|}}}}}} |{{{pushpin_map_caption|{{{map_caption|Location within {{#invoke:Location map|data|{{{pushpin_map|{{{map_type}}}}}}|name}}}}}}}} |{{#if:{{{image_map|}}} |{{{map_caption|}}} }}}}
| header24 = {{#if:{{{footnotes|}}}|Footnotes}}
| data25 = {{{footnotes|}}}
| data26 = {{{embed|}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox government agency with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox government agency]] with unknown parameter "_VALUE_"|ignoreblank=y| agency_id | agency_name | agency_type | budget | chief1_name | chief1_position | chief2_name | chief2_position | chief3_name | chief3_position | chief4_name | chief4_position | chief5_name | chief5_position | chief6_name | chief6_position | chief7_name | chief7_position | chief8_name | chief8_position | chief9_name | chief9_position | child | child1_agency | child10_agency | child11_agency | child12_agency | child13_agency | child14_agency | child15_agency | child16_agency | child17_agency | child18_agency | child19_agency | child2_agency | child20_agency | child21_agency | child22_agency | child23_agency | child24_agency | child25_agency | child3_agency | child4_agency | child5_agency | child6_agency | child7_agency | child8_agency | child9_agency | coordinates | deputyminister_type | deputyminister1_name | deputyminister1_pfo | deputyminister2_name | deputyminister2_pfo | deputyminister3_name | deputyminister3_pfo | deputyminister4_name | deputyminister4_pfo | deputyminister5_name | deputyminister5_pfo | deputyminister6_name | deputyminister6_pfo | deputyminister7_name | deputyminister7_pfo | deputyminister8_name | deputyminister8_pfo | dissolved | embed | employees | footnotes | formed | headquarters | image | image_caption |image_alt | image_map | image_size | italic title | jurisdiction | keydocument1 | keydocument2 | keydocument3 | keydocument4 | keydocument5 | keydocument6 | logo | logo_caption |logo_alt| logo_size | logo_width | map | map_alt | map_caption | map_dot_label | map_dot_mark | map_size | map_type | map_width | minister_type | minister1_name | minister1_pfo | minister2_name | minister2_pfo | minister3_name | minister3_pfo | minister4_name | minister4_pfo | minister5_name | minister5_pfo | minister6_name | minister6_pfo | minister7_name | minister7_pfo | minister8_name | minister8_pfo | motto | name | native_name | native_name_a | native_name_r | nativename | nativename_a | nativename_r | parent_agency | parent_agency_type | parent_department | picture | picture_caption | picture_width | preceding1 | preceding2 | preceding3 | preceding4 | preceding5 | preceding6 | region_code | seal |seal_alt | seal_caption | seal_size | seal_width | service | status | subbox | superseding | superseding1 | superseding2 | superseding3 | superseding4 | superseding5 | superseding6 | type | website }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
b398f4dc0f62154e2a0c836efe48b46083aca718
Template:Notice
10
190
434
2023-01-25T22:32:14Z
wikipedia>Izno
0
per tper
wikitext
text/x-wiki
{{Mbox
| name = Notice
| demospace = {{{demospace|}}}
| style = {{#if:{{{style|}}} |{{{style}}} }}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = notice
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice|alt={{{imagealt|}}}]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice|alt={{{imagealt|}}}]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
2cbdbb721ca517005f6827650eef5b0f17537a43
Template:Authority control (arts)
10
1061
2320
2023-01-26T12:56:02Z
wikipedia>MSGJ
0
module will now recognise country parameter as an alias for show
wikitext
text/x-wiki
{{#invoke:Authority control | authorityControl | show=arts }}<noinclude>
{{documentation}}
</noinclude>
9b8aaaf1725393b12ec20ed303eb6ff24f720e7f
Template:Flagicon image/doc
10
1712
3229
2023-01-26T17:37:36Z
wikipedia>CommonsDelinker
0
Replacing ICS_Alpha.svg with [[File:ICS_Alfa.svg]] (by [[commons:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: misspelled).
wikitext
text/x-wiki
{{Documentation subpage}}
Produces an icon for the supplied image parameter, of the same size, CSS class, etc. as images produced by [[Template:Flagicon]]. This template can be used for arbitrary images that are not included in any [[:Category:Country data templates|country data template]].
Caution is advised if this is used in infoboxes, as flags are [[MOS:INFOBOXFLAG|generally discouraged there]], and additional concerns (such as not using flags purely for decoration, and not using them in an anachronistic manner) may apply. Further guidance is given at [[MOS:FLAGS]].
''Please do not use this template to render [[Wikipedia:Non-free content|non-free images]], which would also not be acceptable within a country data template.''
;Usage
: <code><nowiki>{{flagicon image|image name|size=optional|border=optional|link=optional}}</nowiki></code>
;Examples
: <code><nowiki>{{flagicon image|Red flag.svg}}</nowiki></code> → {{flagicon image|Red flag.svg}}
: <code><nowiki>{{flagicon image|Red flag.svg|size=30x20px|link=Japan}}</nowiki></code> → {{flagicon image|Red flag.svg|size=30x20px|link=Japan}}
: <code><nowiki>{{flagicon image|ICS Alfa.svg|border=}}</nowiki></code> → {{flagicon image|ICS Alfa.svg|border=}}
== See also ==
{{tl|ListFlag}}
<includeonly>{{Sandbox other||
[[Category:Flag template system| ]]
}}</includeonly>
3dd2992a52b7ced3a23804de680b1806d5957e78
Module:If empty
828
426
2146
926
2023-01-26T18:33:28Z
wikipedia>MSGJ
0
lastk is not needed
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
for k,v in ipairs(args) do
if v ~= '' then
return v
end
end
end
return p
4790391408957dea3ff9f453834c05f6b379a45c
Clyde Barrow
0
1081
2360
2023-02-01T14:42:53Z
wikipedia>Qwerfjkl
0
Converting {{[[Template:Wikidata redirect|Wikidata redirect]]}} to {{[[Template:R with Wikidata item|R with Wikidata item]]}}. {{[[Template:Wikidata redirect|Wikidata redirect]]}} should only be used on [[WP:soft redirects|soft redirects]].
wikitext
text/x-wiki
#REDIRECT [[Bonnie and Clyde#Clyde Barrow]]
{{Redirect category shell|1=
{{R with Wikidata item|Q3320282}}
{{R to section}}
{{R to joint biography}}
}}
{{DEFAULTSORT:Barrow, Clyde}}
{{Authority control}}
[[Category:1909 births]]
[[Category:Barrow Gang]]
[[Category:People from Ellis County, Texas]]
[[Category:Male murderers]]
[[Category:American male criminals]]
[[Category:People from Dallas]]
261d36161d41327ced8a82681d5d9a5e12814e83
Template:Dated maintenance category (articles)
10
867
1922
2023-02-03T03:07:34Z
wikipedia>UtherSRG
0
UtherSRG moved page [[Template:DMCA]] to [[Template:Dated maintenance category (articles)]]: [[Special:Permalink/1137158761|Requested]] by Robertsky at [[WP:RM/TR]]: Per RM discussion. See [[Template_talk:DMCA#Requested_move_26_January_2023]]. Template protected at template editor/admin level
wikitext
text/x-wiki
{{Dated maintenance category
|onlyarticles=yes
|1={{{1|}}}
|2={{{2|}}}
|3={{{3|}}}
|4={{{4|}}}
|5={{{5|}}}
}}<noinclude>
{{documentation|Template:Dated maintenance category/doc}}
</noinclude>
6bbc57c75cc28708a0e71dd658224d5945d80d68
Template:DMCA
10
857
1898
2023-02-03T21:12:07Z
wikipedia>Paine Ellsworth
0
add [[WP:RCAT|rcat template]]
wikitext
text/x-wiki
#REDIRECT [[Template:Dated maintenance category (articles)]]
{{Redirect category shell|
{{R from move}}
{{R from modification}}
{{R from template shortcut}}
}}
711d3f1c53fa704297f675a8dcf1a56719c5b654
Template:Distinguish
10
27
49
2023-02-04T21:16:13Z
wikipedia>Hog Farm
0
[[Wikipedia:Templates for discussion/Log/2023 February 4#Template:Distinguish]] closed as keep ([[WP:XFDC#4.0.13|XFDcloser]])
wikitext
text/x-wiki
{{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
f949a4cbfd6eb0ab77b832e69059a40a964b1fd8
Bonnie Parker
0
1080
2358
2023-02-07T16:22:57Z
wikipedia>Lightiggy
0
wikitext
text/x-wiki
#REDIRECT [[Bonnie and Clyde#Bonnie Parker]]
{{Redirect category shell|1=
{{R with Wikidata item|Q2319886}}
{{R to section}}
{{R to joint biography}}
}}
{{Authority control}}
{{DEFAULTSORT:Parker, Bonnie}}
[[Category:1910 births]]
[[Category:1934 deaths]]
[[Category:American female murderers]]
[[Category:People from Runnels County, Texas]]
[[Category:Barrow Gang]]
[[Category:People from Dallas]]
e7a0b6232a498c351b7fb36411246efb85cbee9e
Template:Greece Old Style dating
10
1010
2216
2023-02-10T19:20:07Z
wikipedia>Cplakidas
0
Cplakidas moved page [[Template:Greece Old Style dating]] to [[Template:Greece Old Style dates]]
wikitext
text/x-wiki
#REDIRECT [[Template:Greece Old Style dates]]
{{Redirect category shell|
{{R from move}}
}}
072c262c3e4b7221bec65f6293cf294008cd349f
Template:Greece Old Style dates
10
1019
2234
2023-02-10T19:20:07Z
wikipedia>Cplakidas
0
Cplakidas moved page [[Template:Greece Old Style dating]] to [[Template:Greece Old Style dates]]
wikitext
text/x-wiki
<ref>Note: Greece officially [[Adoption of the Gregorian calendar#Adoption in Eastern Europe|adopted]] the [[Gregorian calendar]] on 16 February 1923 (which became 1 March). All dates prior to that, unless specifically denoted, are [[Old Style]].</ref><noinclude>
[[Category:Greece templates|Old Style dating]]
[[Category:Time, date and calendar templates]]
</noinclude>
e9074de84202392ef3087519a6a003437ebcbfe8
Module:Exponential search
828
476
1045
2023-02-10T20:10:53Z
Uzume
8
strict
Scribunto
text/plain
-- This module provides a generic exponential search algorithm.
require[[strict]]
local checkType = require('libraryUtil').checkType
local floor = math.floor
local function midPoint(lower, upper)
return floor(lower + (upper - lower) / 2)
end
local function search(testFunc, i, lower, upper)
if testFunc(i) then
if i + 1 == upper then
return i
end
lower = i
if upper then
i = midPoint(lower, upper)
else
i = i * 2
end
return search(testFunc, i, lower, upper)
else
upper = i
i = midPoint(lower, upper)
return search(testFunc, i, lower, upper)
end
end
return function (testFunc, init)
checkType('Exponential search', 1, testFunc, 'function')
checkType('Exponential search', 2, init, 'number', true)
if init and (init < 1 or init ~= floor(init) or init == math.huge) then
error(string.format(
"invalid init value '%s' detected in argument #2 to " ..
"'Exponential search' (init value must be a positive integer)",
tostring(init)
), 2)
end
init = init or 2
if not testFunc(1) then
return nil
end
return search(testFunc, init, 1, nil)
end
a9037be0c44536be79b2d7a26155bfb907368ae7
Template:Infobox name module
10
1136
2462
2023-02-12T17:30:29Z
w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ
0
Completed [[Wikipedia:Templates_for_discussion/Log/2017_April_7#Template:Infobox_name_module|merger]]. Removed support for East Asian languages with multiple scripts as discussed at [[WP:TFDH]] [[Special:PermanentLink/1138169755#Meta]]. Doc page updated with replacement templates
wikitext
text/x-wiki
{{Infobox
| child = yes
| decat = yes <!-- remove from template:infobox tracking categories -->
| title =
| label1 = {{#if: {{{language|{{{2|}}}}}} <!-- If there is more than one parameter -->
| {{#if: {{{nolink|}}} <!-- If the language is not to be wikilinked -->
| {{#if:{{#invoke:lang|is_ietf_tag|{{{language|{{{1|}}}}}}}} | <!-- Check if language has been entered as an iso code -->
{{#invoke:lang|name_from_tag|{{{language|{{{1|}}}}}}}} | <!-- Set language field accordingly -->
{{{language|{{{1|}}}}}}
}}
| {{#if:{{#invoke:lang|is_ietf_tag|{{{language|{{{1|}}}}}}}} | <!-- If the language is to be wikilinked -->
{{#invoke:lang|name_from_tag|{{{language|{{{1|}}}}}}|link=yes}} |
[[{{{language|{{{1|}}}}}} language|{{{language|{{{1|}}}}}}]]
}}
}}
| Original title <!-- Default field name if no language is entered -->
}}
| data1 = {{#if: {{{title|{{{2|{{{original|{{{1|}}}}}}}}}}}} | ''{{{title|{{{2|{{{original|{{{1|}}}}}}}}}}}}'' }} <!-- Order of parameter preference depending on data entry -->
| label2 = Literally
| data2 = {{#if: {{{translation|}}}|''{{{translation|}}}''}}
}}<noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage -->
</noinclude>
863ab641d870ebdf01562bde3f2c1dd2db748810
Template:Infobox university
10
1150
2476
2023-02-13T19:02:18Z
w>MSGJ
0
add visitor field, see discussion
wikitext
text/x-wiki
{{Infobox
| bodyclass = vcard
| titleclass = fn org
| titlestyle = font-size:125%;
| title = {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
| subheader = {{#if:{{{native_name|}}} |<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}
| image = {{#invoke:InfoboxImage|InfoboxImage |image={{if empty|{{{image|}}}|{{{image_name|}}}}}|size={{{image_size|}}} |upright={{if empty|{{{image_upright|}}}|1}} |alt={{{image_alt|}}}}}
| caption = {{{caption|}}}
| labelstyle = padding-right:0.65em;<!--(to ensure sufficient gap between (long/unwrapped) labels and subsequent data on same line)-->
<!--------------------- Names, motto ---------------------->
| class1 = nickname
| data1 = {{#if:{{{latin_name|}}} |{{lang-la|{{{latin_name}}}}} }}
| label2 = {{longitem|Other name{{#if:{{{other_names|}}}|s}}}}
| class2 = nickname
| data2 = {{if empty|{{{other_names|}}}|{{{other_name|}}}}}
| label3 = {{longitem|Former name{{#if:{{{former_names|}}}|s}}}}
| class3 = nickname
| data3 = {{if empty|{{{former_names|}}}|{{{former_name|}}}}}
| label4 = Motto
| data4 = {{#if:{{both|{{{motto|}}}|{{{motto_lang|}}}}}|<div lang="{{{motto_lang}}}">{{{motto}}}</div>|{{{motto|}}}}}
| label5 = {{longitem|Motto in English}}
| data5 = {{{mottoeng|}}}
| label6 = {{{top_free_label|}}}
| data6 = {{#if:{{{top_free_label|}}} |{{{top_free|}}} }}
| label7 = {{{top_free_label1|}}}
| data7 = {{#if:{{{top_free_label1|}}} |{{{top_free1}}} }}
| label8 = {{{top_free_label2|}}}
| data8 = {{#if:{{{top_free_label2|}}} |{{{top_free2}}} }}
<!---------- Date/s, type, affiliation, finance ----------->
| label9 = Type
| data9 = {{{type|}}}
| label10 = {{#if:{{{closed|}}} |Active |Established}}
| data10 = {{#if:{{{established|}}} |{{{established}}}{{#if:{{{closed|}}}|–{{{closed}}}}} }}
| label11 = {{#if:{{{founders|}}}|Founders|Founder}}
| data11 = {{if empty|{{{founders|}}}|{{{founder|}}}}}
| label12 = {{longitem|Parent institution}}
| data12 = {{{parent|}}}
| label13 = [[Higher education accreditation|Accreditation]]
| data13 = {{{accreditation|}}}
| label14 = Affiliation
| data14 = {{{affiliation|}}}
| label15 = {{longitem|Religious affiliation}}
| data15 = {{{religious_affiliation|}}}
| label16 = {{longitem|Academic {{#if:{{{academic_affiliations|}}}|affiliations|affiliation}}}}
| data16 = {{if empty|{{{academic_affiliations|}}}|{{{academic_affiliation|}}}}}
| label17 = [[Financial endowment|Endowment]]
| data17 = {{{endowment|}}}
| label18 = Budget
| data18 = {{{budget|}}}
<!--------------------- Personnel ------------------------->
| label19 = {{longitem|Officer in charge}}
| data19 = {{{officer_in_charge|}}}
| label20 = [[Chair (officer)|Chair]]
| data20 = {{{chair|}}}
| label21 = [[Chairperson|Chairman]]
| data21 = {{{chairman|}}}
| label22 = [[Chairperson]]
| data22 = {{{chairperson|}}}
| label23 = [[Visitor]]
| data23 = {{{visitor|}}}
| label24 = [[Chancellor (education)|Chancellor]]
| data24 = {{{chancellor|}}}
| label25 = [[University president|President]]
| data25 = {{{president|}}}
| label26 = {{nowrap|Vice-president}}
| data26 = {{{vice-president|{{{vice_president|}}}}}}
| label27 = [[Superintendent (education)|Superintendent]]
| data27 = {{#if:{{{superintendent|}}} |{{{superintendent}}} [[Category:Pages using infobox university with the superintendent parameter]] |}}
| label28 = {{nowrap|[[Vice-Chancellor]]}}
| data28 = {{{vice_chancellor|}}}
| label29 = [[Provost (education)|Provost]]
| data29 = {{{provost|}}}
| label30 = [[Rector (academia)|Rector]]
| data30 = {{{rector|}}}
| label31 = [[Principal (academia)|Principal]]
| data31 = {{{principal|}}}
| label32 = [[Dean (education)|Dean]]
| data32 = {{{dean|}}}
| label33 = Director
| data33 = {{{director|}}}
| label34 = {{{head_label}}}
| data34 = {{#if:{{{head_label|}}} |{{{head|}}} }}
| label35 = {{longitem|Academic staff}}
| data35 = {{{academic_staff|}}}<!--for backwards compatibility:-->{{{faculty|}}}
| label36 = {{longitem|Administrative staff}}
| data36 = {{{administrative_staff|}}}
| label37 = {{longitem|Total staff}}
| data37 = {{{total_staff|}}}
| label38 = Students
| data38 = {{br separated entries|{{{students|}}}|{{{enrollment|}}}}}
| label39 = [[Undergraduate education|Undergraduates]]
| data39 = {{{undergrad|}}}
| label40 = [[Postgraduate education|Postgraduates]]
| data40 = {{{postgrad|}}}
| label41 = {{longitem|[[Doctorate|Doctoral students]]}}
| data41 = {{{doctoral|}}}
| label42 = {{longitem|Other students}}
| data42 = {{if empty|{{{other_students|}}}|{{{other|}}}}}
<!------------ Location, language, {{{free}}} ------------->
| label43 = {{#if:{{{address|}}}|Address|Location}}
| class43 = adr
| data43 = {{Br separated entries
| 1 = {{#if:{{{location|}}}
| <div style="display:inline" class="extended-address">{{{location}}}</div>
| {{Comma separated entries
| 1 = {{#if:{{{address|}}}|<div style="display:inline" class="street-address">{{{address}}}</div>}}
| 2 = {{#if:{{{city|}}}|<div style="display:inline" class="locality">{{{city}}}</div>}}
| 3 = {{#if:{{{canton|}}}{{{prefecture|}}}{{{province|}}}{{{region|}}}{{{state|}}}|<div style="display:inline" class="state">{{Comma separated entries|{{{canton|}}}|{{{prefecture|}}}|{{{province|}}}|{{{region|}}}|{{{state|}}}}}</div>}}
| 4 = {{#if:{{{postalcode|}}}{{{postcode|}}}{{{zipcode|}}}|<div style="display:inline" class="postal-code">{{If empty|{{{postalcode|}}}|{{{postcode|}}}|{{{zipcode|}}}}}</div>}}
| 5 = {{#if:{{{country|}}}|<div style="display:inline" class="country-name">{{{country}}}</div>}}
}}
}}
| 2 = {{if empty|{{{coordinates|}}}|{{{coor|}}}}}
}}
| label44 = Campus
| data44 = {{#if:{{{campus_size|}}}|{{#if:{{{campus_type|{{{campus|}}}}}}|{{{campus_type|{{{campus|}}}}}}, {{{campus_size}}}|{{{campus_size}}}}}|{{{campus_type|{{{campus|}}}}}}}}
| label45 = Language
| data45 = {{{language|}}}
| label46 = {{if empty|{{{free_label|}}}|{{{free_label1|}}}}}
| data46 = {{#if:{{{free_label|}}}{{{free_label1|}}} |{{{free|}}} {{{free1|}}} }}
| label47 = {{{free_label2|}}}
| data47 = {{#if:{{{free_label2|}}} |{{{free2}}} }}
<!------------ Colo/urs, sports, website, etc ------------->
| label48 = [[School colors|Colo{{#if:{{{colours|}}}|u}}rs]]
| data48 = {{{colors|}}}{{{colours|}}}
| label49 = [[Athletic nickname|Nickname]]{{#if:{{{athletics_nicknames|}}}{{{sports_nicknames|}}}|s}}
| data49 = {{if empty|{{{athletics_nicknames|}}}|{{{sports_nicknames|}}}|{{{athletics_nickname|}}}|{{{sports_nickname|}}}|{{{nickname|}}}}}
| label50 = {{#if:{{{athletics_affiliations|{{{sporting_affiliations|}}}}}}|{{longitem|Sporting affiliations}}|Affiliations}}
| data50 = {{if empty|{{{athletics_affiliations|{{{sporting_affiliations|}}}}}}|{{{affiliations|}}}}}
| label52 = Mascot{{#if:{{{mascots|}}}|s}}
| data52 = {{if empty|{{{mascots|}}}|{{{mascot|}}}}}
| label53 = {{{sports_free_label|}}}
| data53 = {{{sports_free|}}}
| label54 = {{{sports_free_label1|}}}
| data54 = {{{sports_free1|}}}
| label55 = {{{sports_free_label2|}}}
| data55 = {{{sports_free2|}}}
| label56 = {{{sports_free_label3|}}}
| data56 = {{{sports_free3|}}}
| label57 = Website
| data57 = {{{website|}}}
| data58 = {{#invoke:InfoboxImage|InfoboxImage |image={{{logo|}}}|size={{{logo_size|}}}|upright={{{logo_upright|}}}|alt={{{logo_alt|}}}}}
| header59 = {{if empty|{{{nrhp|}}}|{{{embedded|}}}|{{{module|}}}}}
<!-------------------- Location map ----------------------->
| data60 = {{#if:{{{pushpin_map|}}}
| {{Location map|{{{pushpin_map}}}
| float = center
| caption = {{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|Location in {{#invoke:Location map|data|{{{pushpin_map}}}|name}}}}
| border = infobox
| width = {{if empty|{{{map_size|}}}|250}}
| coordinates = {{if empty|{{{coordinates|}}}|{{{coor|}}}}}
| position = {{{pushpin_label_position|}}}
}}
}}
| below = {{{footnotes|}}}
}}{{Main other|[[Category:Articles using infobox university]]
}}{{#if:{{{image_name|}}}|{{Main other|[[Category:Pages using infobox university with the image name parameter]]}}
}}{{#if:{{{affiliations|}}}|{{Main other|[[Category:Pages using infobox university with the affiliations parameter]]}}
}}{{#if:{{{nickname|}}}|{{Main other|[[Category:Pages using infobox university with the nickname alias]]}}
}}{{#invoke:check for unknown parameters|check
|unknown={{main other|[[Category:Pages using infobox university with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox university]] with unknown parameter "_VALUE_"|ignoreblank=y
| academic_affiliation | academic_affiliations | academic_staff | accreditation | address | administrative_staff | affiliation | affiliations | athletics_affiliations | athletics_nickname | athletics_nicknames | budget | campus | campus_type | campus_size | canton | caption | chair | chairman | chairperson | chancellor | city | closed | colors | colours | coor | coordinates | country | dean | director | doctoral | embedded | endowment | enrollment | established | faculty | footnotes | former_name | former_names | founder | founders | free | free1 | free2 | free_label | free_label1 | free_label2 | head | head_label | image | image_alt | image_name | image_size | image_upright | language | latin_name | location | logo | logo_alt | logo_size | logo_upright | map_size | mascot | mascots | module | motto | mottoeng | motto_lang | mottoeng | name | native_name | native_name_lang | nickname | nrhp | officer_in_charge | other | other_name | other_names | other_students | parent | postalcode | postcode | postgrad | prefecture | president | principal | province | provost | pushpin_label_position | pushpin_map | pushpin_map_caption | rector | region | religious_affiliation | sporting_affiliations | sports_free | sports_free1 | sports_free2 | sports_free3 | sports_free_label | sports_free_label1 | sports_free_label2 | sports_free_label3 | sports_nickname | sports_nicknames | state | students | superintendent | top_free | top_free1 | top_free2 | top_free_label | top_free_label1 | top_free_label2 | total_staff | type | undergrad | vice_chancellor | vice-president | vice_president | visitor | website | zipcode
}}<!--
tracking conflicting parameters
-->{{#invoke:Check for clobbered parameters|check
| template = Infobox university
| cat = {{main other|Category:Pages using infobox university with conflicting parameters}}
| image; image_name
| other_names; other_name
| former_names; former_name
| founders; founder
| academic_affiliations; academic_affiliation
| academic_staff; faculty
| campus_type; campus
| other_students; other
| location; address
| location; city
| location; address
| location; canton
| location; prefecture
| location; province
| location; region
| location; state
| location; country
| location; postalcode
| location; postcode
| location; zipcode
| postalcode; postcode; zipcode
| coordinates; coor
| colors; colours
| free_label; free_label1
| free; free1
| athletics_nicknames; sports_nicknames; athletics_nickname; sports_nickname; nickname
| athletics_affiliations; sporting_affiliations
| affiliation; affiliations
| mascots; mascot
| nrhp; embedded; module
}}<noinclude>
{{documentation}}
</noinclude>
b4d7b7d57f5ee81d673686ba6d8feeed88f51757
Template:Space
10
1371
2706
2023-02-14T01:26:39Z
Xaosflux
7
shell params
wikitext
text/x-wiki
#REDIRECT [[Template:Spaces]]
{{Rcat shell|
{{R from modification}}
{{R with history}}
{{R from template shortcut}}
}}
707e41107ad2ff68b4a6a9cb50692a660a667b89
Template:Sister project
10
590
1328
2023-02-14T12:14:20Z
wikipedia>Paine Ellsworth
0
"iw" for interwiki link (other-language WPs)
wikitext
text/x-wiki
{{Side box
| metadata=no
| position = {{{position|}}}
| image =
{{#switch: {{{image|}}}
| none = <!-- "image=none", do nothing -->
| = <!-- No image fed, select an image -->
[[File:{{#switch: {{lc: {{{project|}}} }}
| commons|c = Commons-logo.svg
| meta|metawiki|m = Wikimedia Community Logo.svg
| wikibooks|wbk|wb|b = Wikibooks-logo-en-noslogan.svg
| wikidata|data = Wikidata-logo.svg
| wikiquote|quote|wqt|q = Wikiquote-logo.svg
| wikipedia|wp|w|iw = Wikipedia-logo-v2.svg
| wikisource|source|ws|s = Wikisource-logo.svg
| wiktionary|wikt|wkt|wdy|d = Wiktionary-logo-en-v2.svg
| wikinews|news|wnw|n = Wikinews-logo.svg
| wikispecies|species = Wikispecies-logo.svg
| wikiversity|wvy|v = Wikiversity logo 2017.svg
| wikivoyage|voyage|voy = Wikivoyage-Logo-v3-icon.svg
| mediawiki|mw = MediaWiki-2020-icon.svg
| outreachwiki|outreach = Wikimedia Outreach.png
| incubator = Incubator-notext.svg
| #default = Wikimedia-logo.svg
}}|40x40px|class=noviewer|alt=|link=
]]
| #default = {{{image|}}}
}}
| textclass = {{{textclass|plainlist}}}
| textstyle = {{{textstyle|}}}
| text = {{{text}}}
| below = {{{below|}}}
| imageright = {{{imageright|}}}
| class = plainlinks sistersitebox
}}<noinclude>{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
0929197ea6267d9d63d80f9f8432fe1cfbe7ace8
Template:Infobox military operation
10
1503
2838
2023-02-15T15:43:09Z
w>Phuzion
0
Added subtitle to check for unknown parameters
wikitext
text/x-wiki
{{infobox
|bodyclass = vevent
|bodystyle = {{WPMILHIST Infobox style|main_box_raw}}
|abovestyle = {{WPMILHIST Infobox style|header_raw}}
|aboveclass = summary
| headerstyle = {{WPMILHIST Infobox style|header_raw}}
|above = {{if empty|{{{title|}}}|{{{name|}}}|{{PAGENAMEBASE}}}}
|subheaderstyle = {{WPMILHIST Infobox style|sub_header_raw}}
|subheader = {{br separated entries|{{{subtitle|}}}|{{#if:{{{partof|}}}{{{conflict|}}}|Part of {{if empty|{{{conflict|}}}|{{{partof|}}}}} }}}}
|labelstyle = padding-right: 1em;
|imagestyle = {{WPMILHIST Infobox style|image_box_raw}}
|image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|upright={{{image_upright|1}}}|alt={{{alt|}}}}}
|caption = {{{caption|}}}
| label1 = {{#if:{{{scope|}}}|Operational scope|Type}}
| data1 = {{if empty|{{{scope|}}}|{{{type|}}}}}
| label2 = Location{{#if:{{{location2|}}}|s}}
| data2 = {{br separated entries
|1 = {{#if:{{{location|{{{place|}}}}}}|<div style="display:inline;" class="location">{{{location|{{{place|}}}}}}</div>}}
|2 = {{{coordinates|}}}
|3 = {{#if:{{{location2|}}}|<div style="display:inline;" class="location">{{{location2|}}}</div>}}
|4 = {{#if:{{{location2|}}}|{{{coordinates2|}}}}}
|5 = {{#if:{{{location3|}}}|<div style="display:inline;" class="location">{{{location3|}}}</div>}}
|6 = {{#if:{{{location3|}}}|{{{coordinates3|}}}}}
|7 = {{#if:{{{location4|}}}|<div style="display:inline;" class="location">{{{location4|}}}</div>}}
|8 = {{#if:{{{location4|}}}|{{{coordinates4|}}}}}
|9 = {{#if:{{{location5|}}}|<div style="display:inline;" class="location">{{{location5|}}}</div>}}
|10= {{#if:{{{location5|}}}|{{{coordinates5|}}}}}
|11= {{#if:{{{location6|}}}|<div style="display:inline;" class="location">{{{location6|}}}</div>}}
|12= {{#if:{{{location6|}}}|{{{coordinates6|}}}}}
|13= {{#if:{{{location7|}}}|<div style="display:inline;" class="location">{{{location7|}}}</div>}}
|14= {{#if:{{{location7|}}}|{{{coordinates7|}}}}}
|15= {{#if:{{{location8|}}}|<div style="display:inline;" class="location">{{{location8|}}}</div>}}
|16= {{#if:{{{location8|}}}|{{{coordinates8|}}}}}
|17= {{#if:{{{location9|}}}|<div style="display:inline;" class="location">{{{location9|}}}</div>}}
|18= {{#if:{{{location9|}}}|{{{coordinates9|}}}}}
|19= {{#if:{{{location10|}}}|<div style="display:inline;" class="location">{{{location10|}}}</div>}}
|20= {{#if:{{{location10|}}}|{{{coordinates10|}}}}}
}}
| label3 = Planned
| data3 = {{{planned|}}}
| label4 = Planned by
| data4 = {{{planned_by|}}}
| label5 = Commanded by
| data5 = {{{commanded_by|}}}
| label6 = {{#if:{{{target|}}}|Target|Objective}}
| data6 = {{if empty|{{{target|}}}|{{{objective|}}}}}
| label7 = Date
| data7 = {{br separated entries
|1 = {{if empty|{{{executed|}}}|{{{date|}}}}}
|2 = {{{time|}}}
|3 = {{#if:{{{time-begin|}}}|{{{time-begin}}} – {{{time-end|}}}}}
}} {{#if:{{{timezone|}}}|({{{timezone}}})}}
| label8 = Executed by
| data8 = {{if empty|{{{instigator|}}}|{{{executed_by|}}}}}
| label9 = Outcome
| data9 = {{{outcome|}}}
| label10 = Casualties
| data10 = {{if empty|{{{casualties|}}}|{{br separated entries
|1 = {{#if:{{{fatalities|}}}|{{{fatalities|}}} killed}}
|2 = {{#if:{{{injuries|}}}|{{{injuries|}}} injured}}
}} }}
| header27 = {{#if:{{{map_type|}}}|<nowiki />}}
| data28 = {{#if:{{{map_type|}}}|
{{#if:{{{coordinates2|}}}|
{{Location map many|{{{map_type}}}|coordinates1={{if empty|{{{map_coord|}}} | {{{coordinates|}}} }}|width={{{map_size|220}}}|float=center|border=infobox|label1={{{map_label|}}}|caption={{{map_caption|Location within {{#invoke:Location map|data|{{{map_type}}}|name}} }}}
|coordinates2={{{coordinates2|}}}|label2={{{map_label2|}}}
{{#if:{{{coordinates3|}}}|{{!}}coordinates3={{{coordinates3|}}}{{!}}label3={{{map_label3|}}} }}
{{#if:{{{coordinates4|}}}|{{!}}coordinates4={{{coordinates4|}}}{{!}}label4={{{map_label4|}}} }}
{{#if:{{{coordinates5|}}}|{{!}}coordinates5={{{coordinates5|}}}{{!}}label5={{{map_label5|}}} }}
{{#if:{{{coordinates6|}}}|{{!}}coordinates6={{{coordinates6|}}}{{!}}label6={{{map_label6|}}} }}
{{#if:{{{coordinates7|}}}|{{!}}coordinates7={{{coordinates7|}}}{{!}}label7={{{map_label7|}}} }}
{{#if:{{{coordinates8|}}}|{{!}}coordinates8={{{coordinates8|}}}{{!}}label8={{{map_label8|}}} }}
{{#if:{{{coordinates9|}}}|{{!}}coordinates9={{{coordinates9|}}}{{!}}label9={{{map_label9|}}} }}
{{#if:{{{coordinates10|}}}|{{!}}coordinates10={{{coordinates10|}}}{{!}}label10={{{map_label10|}}} }}
}}
|{{Location map|{{{map_type}}}|coordinates={{if empty|{{{map_coord|}}} | {{{coordinates|}}} }}|width={{{map_size|220}}}|float=center|border=infobox|label={{{map_label|}}}|caption={{{map_caption|Location within {{#invoke:Location map|data|{{{map_type}}}|name}} }}} }}
}}
}}
}}{{{campaignbox|}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox military operation with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox military operation]] with unknown parameter "_VALUE_"|ignoreblank=y| alt | campaignbox | caption | casualties | commanded_by | conflict | coordinates | date | executed | executed_by | fatalities | image | image_size | image_upright | injuries | instigator | location | map_caption | map_coord | map_label | map_size | map_type | name | objective | outcome | partof | planned | planned_by | scope | subtitle | target | time | time-begin | time-end | timezone | title | type | coordinates2 | coordinates3 | coordinates4 | coordinates5 | coordinates6 | coordinates7 | coordinates8 | coordinates9 | coordinates10 | map_label2 | map_label3 | map_label4 | map_label5 | map_label6 | map_label7 | map_label8 | map_label9 | map_label10 | location2 | location3 | location4 | location5 | location6 | location7 | location8 | location9 | location10 }}<noinclude>
{{template doc}}
</noinclude>
829164a43ec689efc952b0722e2406cf1185cf66
Module:Lua banner
828
63
121
2023-02-16T14:39:53Z
Uzume
8
[[Module:Citation]] has been blanked since [[Wikipedia:Templates for discussion/Log/2018 May 13#Module:Citation]]; remove special handling
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
Template:Efn
10
563
1272
2023-02-17T03:04:27Z
wikipedia>RMCD bot
0
Removing notice of move discussion
wikitext
text/x-wiki
<includeonly>{{#if:{{{name|}}}
|{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|name={{{name|}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}
}}
|{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
6ed4e5c148014b92a23bd51d16f3180881bb876c
Module:Catalog lookup link
828
1093
2385
2023-02-21T10:27:42Z
wikipedia>Uzume
0
+templatestyles
Scribunto
text/plain
--[[
|1=, |2=, |3=, |4=, |5=, |6=, |7=, |8=, |9=: Optional unnamed parameters for 0 to 9 items to be listed.
Whitespace is trimmed off both ends and the strings are urlencoded as if they were query strings.
|article-link=: Optional Wikipedia article name to link to.
|article-name=: Optional alternative text to be displayed for |article-link= link in front of catalog link.
If not specified, |article-link= is used for display as well. If both parameters are not specified, the prefix is omitted completely.
|article-suffix=: Optional symbol to be displayed after article name or link (f.e. ":"; omitted, if not defined).
|link-prefix=: Optional prefix portion of url to external catalog item(s).
|link-suffix=: Optional suffix portion of url to external catalog item(s).
|item-prefix=: Optional text displayed in front of each external link (omitted, if not defined)
|item-suffix=: Optional text displayed immediately after each external link (omitted, if not defined)
|list-separator=: Optional alternative separator displayed between list items (default: ", ", if not specified). Whitespace must be encoded.
|list-leadout=: Optional alternative leadout text displayed between the last two list items (f.e. "and", "or", "as well as", etc., default is the |list-separator= or ", ".)
|leadout-suffix=: Optional alternative suffix text of the leadout (see |list-leadout=) displayed between the last two list items.
This gets added in front of the last list item instead of the default whitespace which is added without this parameter.
This may be necessary if |list-separator= is used not only to define the list separator but also parts of the item prefix
(except for the first one). (At present, this is used only to cope with format oddities of the {{MR}} template.)
new parameters that support access icons:
|allowed_icons= – comma-separated list of keywords: free, limited, registration, subscription, none, all (default; 'all' implied when this parameter empty or omitted)
the icons specified in the following parameters are checked agains the list in |allowed-icons=; not in the list? not displayed
|url-access-all= – applies specified icon to all items in the list; accepted keywords: free, limited, registration, subscription;
|url-accessn= – applies specified icon to item n of the list (the nth positional parameter); accepted keywords: free, limited, registration, subscription;
]]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local lock_icons = { --icon classes are defined in Module:Citation/CS1/styles.css
['free'] = {'id-lock-free', 'Freely accessible'},
['registration'] = {'id-lock-registration', 'Free registration required'},
['limited'] = {'id-lock-limited', 'Free access subject to limited trial, subscription normally required'},
['subscription'] = {'id-lock-subscription', 'Paid subscription required'},
}
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[=[-------------------------< M A K E _ L A B E L >----------------------------------------------------------
Makes a wikilinked or plain text label from arguments; when both link and display text is provided, makes a
wikilink in the form [[L|D]]; if only link is provided, makes a wikilinked label in the form [[L]]; if only display
is provided, makes a plain-text label; if neither are provided makes a label from suffix, returns an empty string else.
]=]
local function make_label (link, display, suffix)
local label = '';
if is_set (link) then
if is_set (display) then
label = table.concat ({'[[', link, '|', display, ']]'}); -- make [[L|D]] wikilinked label
else
label = table.concat ({'[[', link, ']]'}); -- make [[L]] wikilinked label
end
elseif is_set (display) then
label = display; -- plain-text label
end
if is_set (label) then
return table.concat ({label, suffix, ' '}); -- assemble the complete label
else
return suffix; -- no space after suffix if no label
end
end
--[[--------------------------< I C O N _ I N D E X _ G E T >--------------------------------------------------
returns index into lock_icons[] if value assigned to |url-access= or |url-access-all= is a valid icon selector
(free, limited, registration, subscription)
icon selection may be limited to a subset of the icons with:
|allow_icons=<comma-separated list of allowed icons>
<comma-separated list of allowed icons> may be any of the keywords: free, limited, registration, subscription, none, all
keyword 'all' is default condition; 'all' is implied when |allowed=icons= is empty or omitted
keyword 'none' for use with identifiers where icons are inappropriate (isbn, issn, oclc)
Templates using this module should set:
|allow_icons=free for most identifiers;
|allow_icons=none for isbn, issn, oclc, etc
|url-access= is alias of |url-access1=
]]
local function icon_index_get (args, k)
local icon;
local param_name = (1 == k and is_set (args['url-access']) and 'url-access') or table.concat ({'url-access', k}); -- make an enumerated parameter name
if is_set (args['url-access-all']) and lock_icons[args['url-access-all']] then -- if set and valid
icon = args['url-access-all']; -- tentatively
elseif is_set (args[param_name]) and lock_icons[args[param_name]] then -- if set and valid
icon = args[param_name]; -- tentatively
else
return nil; -- neither |url-access-all= nor |url-accessn= set so return nil
end
if args['allow_icons'] and args['allow_icons']:find ('none') then -- if 'none' keyword is present
return nil; -- icons display not allowed
end
if not is_set (args['allow_icons']) or args['allow_icons']:find ('all') or args['allow_icons']:find (icon) then --if all allowed or specified icon is allowed
return icon; -- return selected icon as index into icon table
end
end
--[[--------------------------< M A I N >----------------------------------------------------------------------
Template entrypoint to this module; arguments come primarily from the parent frame though in templates that use
this module, |allowed-icons= is typically set, if needed, in the {{#invoke:}}.
]]
local function main (frame)
local args = getArgs (frame);
local out_text = '';
if is_set(args[1]) then
local result = {};
local label;
local article_suffix = args['article-suffix'] or args['article-postfix'] or '';
local link_prefix = args['link-prefix'] or '';
local link_suffix = args['link-suffix'] or args['link-postfix'] or '';
local item_prefix = args['item-prefix'] or '';
local item_suffix = args['item-suffix'] or args['item-postfix'] or '';
local list_separator = args['list-separator'] or ', ';
local leadout_suffix = args['leadout-suffix'] or args['leadout-postfix'] or ' ';
local list_leadout;
local icon_index;
if is_set (args['list-leadout']) then
list_leadout = table.concat ({
mw.ustring.gsub (args['list-leadout'], '^(%a)', ' %1'), -- insert leading space if first character is a letter
leadout_suffix,
});
else
list_leadout = '';
end
label = make_label (args['article-link'], args['article-name'], article_suffix);
for k, item in ipairs (args) do -- for each of the positional parameters
item = mw.text.trim (item); -- remove extraneous whitespace
if is_set (link_prefix) then -- if there is link prefix...
item = table.concat ({ -- create an external link item
'[', -- open ext link markup
link_prefix, -- url prefix
mw.uri.encode (item), -- item is part of url
link_suffix, -- url suffix
' ', -- required space between url and label
item_prefix, -- label prefix
item, -- item as label
item_suffix, -- item suffix
']' -- close ext link markup
});
icon_index = icon_index_get (args, k); -- set if icon specified and allowed for this item; nil else
if icon_index then
item = table.concat ({ -- add access icon markup to this item
'<span class="', -- open the opening span tag; icon classes are defined in Module:Citation/CS1/styles.css
lock_icons[icon_index][1], -- add the appropriate lock icon class
'" title="', -- and the title attribute
lock_icons[icon_index][2], -- for an appropriate tool tip
'">', -- close the opening span tag
item,
'</span>', -- and close the span
});
end
else
item = table.concat ({ -- create an unlinked item
item_prefix, -- label prefix
item, -- item as label
item_suffix, -- item suffix
});
end
table.insert (result, item); -- add the item to the result list
end
out_text = frame:callParserFunction('#tag', {'templatestyles', '', src=table.concat({
'Module:Citation/CS1',
mw.ustring.match(frame:getTitle(), '/sandbox$') or '',
'/styles.css',
})});
if is_set (args['list-leadout']) then
out_text = table.concat ({out_text, label, mw.text.listToText (result, list_separator, list_leadout)});
else
out_text = table.concat ({out_text, label, table.concat (result, list_separator)});
end
end --is_set (args[1])
return out_text
end
return {main = main};
21695b34c26d41971bb011f905ec0f995ecc28b7
Template:Catalog lookup link
10
1092
2383
2023-02-21T10:29:15Z
wikipedia>Uzume
0
-templatestyles as they are now brought in by the Scribunto module
wikitext
text/x-wiki
{{#invoke:Catalog lookup link|main}}<noinclude>
{{documentation}}
</noinclude>
90f05b4ea15a4a853b2f27af3c21c60276189820
Template:Infobox political party
10
1158
2484
2023-02-23T04:32:29Z
w>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ
0
add support for chairwoman per tper
wikitext
text/x-wiki
<includeonly>{{#if:{{Has short description}} |<!--Do nothing--> |{{main other|{{Short description|Political party{{#if:{{{country|}}}| in {{Plain text|{{{country}}}}}}}|noreplace}}}} }}</includeonly>
{{Infobox
| bodyclass = vcard
| abovestyle = font-size: 125%;
| above = <div style="padding-top:0.3em; padding-bottom:0.3em; {{#if:{{{colorcode|}}}|border-top:2px solid {{{colorcode}}}; border-bottom:2px solid {{{colorcode}}};}} line-height: 1;"><div class="fn org">{{if empty|{{{name|}}}|{{PAGENAMEBASE}}}}</div> {{#if:{{{native_name|}}} |<div style="font-size: 0.8em; padding-top:0.3em;" class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}</div>
| subheader = {{{_subheader|}}}
| imageclass = logo
| imagestyle = padding-top:.4em;padding-bottom:.3em;
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|upright={{{logo_upright|0.8}}}|alt={{{logo_alt|}}}|size={{{logo_size|}}}}}
| caption = {{{caption|}}}
| headerstyle = line-height: 0.8em;
| labelstyle = line-height:1.3em;
| datastyle = line-height:1.3em;
| label1 = {{{lang1}}} name
| class1 = nickname
| data1 = {{{name_lang1|}}}
| label2 = {{{lang2}}} name
| class2 = nickname
| data2 = {{{name_lang2|}}}
| label3 = {{{lang3}}} name
| class3 = nickname
| data3 = {{{name_lang3|}}}
| label4 = {{{lang4}}} name
| class4 = nickname
| data4 = {{{name_lang4|}}}
| label5 = Abbreviation
| class5 = nickname
| data5 = {{if empty|{{{abbreviation|}}}|{{{abbr|}}}}}
| label6 = [[Party leader|Leader]]
| class6 = agent
| data6 = {{{leader|}}}
| label7 = President
| class7 = agent
| data7 = {{{president|}}}
| label8 = [[Party chair|Chair{{#if:{{{chairperson|}}}|person|{{#if:{{{chairman|}}}|man|woman}}}}]]
| class8 = agent
| data8 = {{if empty|{{{chairperson|}}}|{{{chairman|}}}|{{{chairwoman|}}}}}
| label9 = [[Party secretary|Secretary]]
| class9 = agent
| data9 = {{{secretary|}}}
| label10 = General Secretary
| class10 = agent
| data10 = {{{general_secretary|}}}
| label11 = First Secretary
| class11 = agent
| data11 = {{{first_secretary|}}}
| label12 = {{nowrap|Secretary-General}}
| class12 = agent
| data12 = {{{secretary_general|}}}
| label13 = [[Presidium]]
| class13 = agent
| data13 = {{{presidium|}}}
| label14 = Governing body
| class14 = agent
| data14 = {{{governing_body|}}}
| label15 = Standing Committee
| class15 = agent
| data15 = {{{standing_committee|}}}
| label16 = [[Party spokesperson|Spokes{{#if:{{{spokesperson|}}}|person|man}}]]
| class16 = agent
| data16 = {{if empty|{{{spokesperson|}}}|{{{spokesman|}}}}}
| label17 = {{{leader1_title|}}}
| class17 = agent
| data17 = {{{leader1_name|}}}
| label18 = {{{leader2_title|}}}
| class18 = agent
| data18 = {{{leader2_name|}}}
| label19 = {{{leader3_title|}}}
| class19 = agent
| data19 = {{{leader3_name|}}}
| label20 = {{{leader4_title|}}}
| class20 = agent
| data20 = {{{leader4_name|}}}
| label21 = {{{leader5_title|}}}
| class21 = agent
| data21 = {{{leader5_name|}}}
| label22 = {{#if:{{{founders|}}} |Founders |Founder}}
| class22 = agent
| data22 = {{if empty|{{{founders|}}}|{{{founder|}}}}}
| label23 = Founded
| data23 = {{if empty|{{{founded|}}}|{{{foundation|}}}}}
| label24 = Registered
| data24 = {{{registered|}}}
| label25 = Legali{{#if:{{{legalised|}}}|s|z}}ed
| data25 = {{if empty|{{{legalised|}}}|{{{legalized|}}}}}
| label26 = {{#if:{{{banned|}}} |Banned |Dissolved}}
| data26 = {{if empty|{{{banned|}}}|{{{dissolved|}}}|{{{dissolution|}}}}}
| label27 = Merger of
| data27 = {{{merger|}}}
| label28 = Split from
| data28 = {{{split|}}}
| label29 = Preceded by
| data29 = {{{predecessor|}}}
| label30 = Merged into
| data30 = {{{merged|}}}
| label31 = Succeeded by
| data31 = {{{successor|}}}
| label32 = Headquarters
| class32 = label
| data32 = {{{headquarters|}}}
| label33 = Newspaper
| data33 = {{{newspaper|}}}
| label34 = [[Think tank]]
| data34 = {{if empty|{{{think tank|}}}|{{{think_tank|}}}}}
| label35 = [[Student wing]]
| data35 = {{{student_wing|}}}
| label36 = [[Youth wing]]
| data36 = {{{youth_wing|}}}
| label37 = [[Women's wing]]
| data37 = {{{womens_wing|}}}
| label38 = {{{wing1_title}}}
| data38 = {{{wing1|}}}
| label39 = {{{wing2_title}}}
| data39 = {{{wing2|}}}
| label40 = {{{wing3_title}}}
| data40 = {{{wing3|}}}
| label41 = {{{wing4_title}}}
| data41 = {{{wing4|}}}
| label42 = Membership {{#if:{{{membership_year|}}} |{{nobold|({{{membership_year}}})}}}}
| data42 = {{{membership|}}}
| label43 = [[List of political ideologies|Ideology]]
| class43 = category
| data43 = {{{ideology|}}}
| label44 = [[Political spectrum|Political position]]
| class44 = category
| data44 = {{{position|}}}
| label45 = Religion
| class45 = category
| data45 = {{{religion|}}}
| label46 = National affiliation
| class46 = category
| data46 = {{{national|}}}
| label47 = Regional affiliation
| class47 = category
| data47 = {{if empty|{{{regional|}}}|{{{regional affiliation|}}}}}
| label48 = [[European political party|European affiliation]]
| class48 = category
| data48 = {{{european|}}}
| label49 = Continental affiliation
| class49 = category
| data49 = {{if empty|{{{continental|}}}|{{{continental affiliation|}}}}}
| label50 = International affiliation
| class50 = category
| data50 = {{{international|}}}
| label51 = [[Political groups of the European Parliament|European Parliament group]]
| class51 = category
| data51 = {{{europarl|}}}
| label52 = {{{affiliation1_title}}}
| class52 = category
| data52 = {{#if:{{{affiliation1_title|}}}|{{{affiliation1|}}}}}
| label53 = {{{affiliation2_title}}}
| class53 = category
| data53 = {{#if:{{{affiliation2_title|}}}|{{{affiliation2|}}}}}
| label54 = Colo{{#if:{{{colours|}}}|u|}}rs
| data54 = {{{colo{{#if:{{{colours|}}}|u|}}rs|}}}
| label55 = Slogan
| data55 = {{{slogan|}}}
| label56 = Anthem
| data56 = {{{anthem|}}}
| label57 = {{{blank1_title|}}}
| data57 = {{{blank1|}}}
| label58 = {{{blank2_title|}}}
| data58 = {{{blank2|}}}
| label59 = {{{blank3_title|}}}
| data59 = {{{blank3|}}}
| label60 = {{{blank4_title|}}}
| data60 = {{{blank4|}}}
| label61 = {{{seats1_title|}}}
| data61 = {{{seats1|}}}
| label62 = {{{seats2_title|}}}
| data62 = {{{seats2|}}}
| label63 = {{{seats3_title|}}}
| data63 = {{{seats3|}}}
| label64 = {{{seats4_title|}}}
| data64 = {{{seats4|}}}
| label65 = {{{seats5_title|}}}
| data65 = {{{seats5|}}}
| label66 = {{{seats6_title|}}}
| data66 = {{{seats6|}}}
| label67 = {{{seats7_title|}}}
| data67 = {{{seats7|}}}
| label68 = {{{seats8_title|}}}
| data68 = {{{seats8|}}}
| label69 = {{{seats9_title|}}}
| data69 = {{{seats9|}}}
| label70 = {{{seats10_title|}}}
| data70 = {{{seats10|}}}
| label71 = {{{seats11_title|}}}
| data71 = {{{seats11|}}}
| header72 = {{#if:{{{symbol|}}} |Election symbol}}
| data73 = {{{symbol|}}}
| header74 = {{#if:{{{flag|}}} |{{{flag_title|Party flag}}}}}
| data75 = {{#invoke:InfoboxImage|InfoboxImage|image={{{flag|}}}|upright=0.8|alt={{if empty|{{{flag_alt|}}}|{{{flag_title|}}}}}}}
| header76 = {{#if:{{{website|}}} |Website}}
| data77 = {{{website|}}}
| belowstyle = padding-top:0;
| below = {{#if:{{{state|}}}{{{country|}}}
| {{Hlist |style=line-height:1.3em; padding-top:0.3em; border-top:{{#if:{{{colorcode|}}}|2|1}}px solid {{{colorcode|#aaa}}};
| {{#if:{{{country_dab1|}}}
| {{#ifexist: {{{country_dab1|}}} | [[{{{country_dab1}}}|Politics of {{if empty|{{{state|}}}|{{{country}}}}}]] }}
| {{#ifexist: Politics of {{if empty|{{{state|}}}|{{{country}}}}} | [[Politics of {{if empty|{{{state|}}}|{{{country}}}}}]] }}
}}
| {{#if:{{{parties_dab1|}}}
| {{#ifexist: {{{parties_dab1|}}} | [[{{{parties_dab1}}}|Political parties]] }}
| {{#ifexist: List of political parties in {{if empty|{{{state|}}}|{{{country}}}}} | [[List of political parties in {{if empty|{{{state|}}}|{{{country}}}}}|Political parties]] }}
}}
| {{#if:{{{elections_dab1|}}}
| {{#ifexist: {{{elections_dab1}}} | [[{{{elections_dab1}}}|Elections]] }}
| {{#ifexist: Elections in {{if empty|{{{state|}}}|{{{country}}}}} | [[Elections in {{if empty|{{{state|}}}|{{{country}}}}}|Elections]]}}
}}
}}<!--
-->{{#if:{{{country2|}}}
| {{Hlist |style=line-height:1.3em; margin-top:0.2em; padding-top:0.2em; border-top: 1px solid #aaa;
| {{#if:{{{country_dab2|}}}
| {{#ifexist: {{{country_dab2|}}} | [[{{{country_dab2}}}|Politics of {{{country2}}}]] }}
| {{#ifexist: Politics of {{{country2}}} | [[Politics of {{{country2}}}]] }}
}}
| {{#if:{{{parties_dab1|}}}
| {{#ifexist: {{{parties_dab2|}}} | [[{{{parties_dab2}}}|Political parties]] }}
| {{#ifexist: List of political parties in {{{country2}}} | [[List of political parties in {{{country2}}}|Political parties]] }}
}}
| {{#if:{{{elections_dab1|}}}
| {{#ifexist: {{{elections_dab2}}} | [[{{{elections_dab2}}}|Elections]] }}
| {{#ifexist: Elections in {{{country2}}} | [[Elections in {{{country2}}}|Elections]]}}
}}
}} }} }}<!--
-->{{#if:{{{footnotes|}}} |<hr/>{{{footnotes}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox political party with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox political party]] with unknown parameter "_VALUE_"|ignoreblank=y| _subheader | abbr | abbreviation | affiliation1 | affiliation1_title | affiliation2 | affiliation2_title | anthem | banned | blank1 | blank1_title | blank2 | blank2_title | blank3 | blank3_title | blank4 | blank4_title | caption | categories | chairman | chairperson | chairwoman | colorcode | colors | colours | continental | continental affiliation | country | country_dab1 | country_dab2 | country2 | demo | dissolution | dissolved | elections_dab1 | elections_dab2 | europarl | european | first_secretary | flag | flag_alt | flag_title | footnotes | foundation | founded | founder | founders | general_secretary | governing_body | headquarters | ideology | international | lang1 | lang2 | lang3 | lang4 | leader | leader1_name | leader1_title | leader2_name | leader2_title | leader3_name | leader3_title | leader4_name | leader4_title | leader5_name | leader5_title | legalised | legalized | logo | logo_alt | logo_size | logo_upright | membership | membership_year | merged | merger | name | name_lang1 | name_lang2 | name_lang3 | name_lang4 | national | native_name | native_name_lang | newspaper | nocat | parties_dab1 | parties_dab2 | position | predecessor | president | presidium | regional | regional affiliation | registered | religion | seats1 | seats1_title | seats10 | seats10_title | seats11 | seats11_title | seats2 | seats2_title | seats3 | seats3_title | seats4 | seats4_title | seats5 | seats5_title | seats6 | seats6_title | seats7 | seats7_title | seats8 | seats8_title | seats9 | seats9_title | secretary | secretary_general | slogan | split | spokesman | spokesperson | standing_committee | state | student_wing | successor | symbol | think tank | think_tank | website | wing1 | wing1_title | wing2 | wing2_title | wing3 | wing3_title | wing4 | wing4_title | womens_wing | youth_wing
}}<noinclude>
{{Documentation}}
</noinclude>
8b587d5ac78b0131b82ed669ff04f80ed06765f8
Template:Coord/latitude
10
1679
3115
2023-02-23T17:30:43Z
wikipedia>Jonesey95
0
doc
wikitext
text/x-wiki
{{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|lat}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:Coordinates templates]]
[[Category:Wikidata templates]]
}}
</noinclude>
bf7d2fa824206215be0980b599e5f89862c58995
Template:Coord/longitude
10
1676
3107
2023-02-23T17:31:15Z
wikipedia>Jonesey95
0
doc
wikitext
text/x-wiki
{{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|long}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:Coordinates templates]]
[[Category:Wikidata templates]]
}}
</noinclude>
620a82b0a398fde71313e56c3ace7b5f84699cbd
Template:AWB standard installation
10
1042
2282
2023-02-25T10:37:51Z
wikipedia>Materialscientist
0
Reverted edits by [[Special:Contribs/2401:7000:DB7F:8400:0:0:0:1000|2401:7000:DB7F:8400:0:0:0:1000]] ([[User talk:2401:7000:DB7F:8400:0:0:0:1000|talk]]) to last version by Interstatefive
wikitext
text/x-wiki
{{ mbox
| image = [[File:AWB logo draft.svg|44x50px|alt=|link=]]
| text = This template is used by the standard installation of [[Wikipedia:AutoWikiBrowser|AutoWikiBrowser]] (AWB). If you are planning to make any major changes to this template, how it should be used, or nominate it for deletion, please notify AWB's user base and maintainers beforehand at [[Wikipedia talk:AutoWikiBrowser|Wikipedia talk:AWB]] as a courtesy.{{#if:{{{1|}}}|<p>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by AutoWikiBrowser|{{PAGENAME}}]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
5d0e869b7d352225e1fc0aa75cb27988220928aa
Template:Redacted
10
228
514
2023-02-25T12:33:19Z
Bbbtest
25
inline CSS fallback
wikitext
text/x-wiki
{{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; color: #565656; font-style: italic;" title="Content was removed{{#if:{{{1|}}}| for the following reason: {{{1}}} }}">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
2ef480268fdd5e2abc658ec6d80527fc6a624c8f
Template:Redacted2
10
237
534
2023-02-25T12:38:05Z
Bbbtest
25
+unsubst
wikitext
text/x-wiki
{{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; text-decoration-style: double; color: #000000; font-style: italic;" title="redacted">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
736f9e35456b9ccf7b7c7b423cb0d9c6b0342f55
Template:Template list
10
215
486
2023-02-26T18:27:36Z
Bbbtest
25
+1
wikitext
text/x-wiki
__NOTOC__
== Utility templates ==
: ''Category: [[:Category:Utility templates|Utility templates]]''
<section begin=user-utility-templates/>
* {{tl|URL}}
<section end=user-utility-templates/>
== Archive templates ==
: ''Category: [[:Category:Archive templates|Archive templates]]''
<section begin=user-archive-templates/>
* {{tl|Autoarchive/config}}
* {{tl|Archives}}
* {{tl|Archive list}}
* {{tl|Archive header}}
* {{tl|Archive box collapsible}}
* {{tl|Archive}}
* {{tl|Archive2}}
* {{tl|Yearly archive list}}
<section end=user-archive-templates/>
== Maintenance templates ==
: ''Category: [[:Category:Maintenance templates|Maintenance templates]]''
<section begin=user-maintenance-templates/>
* {{tl|Delete}}
* {{tl|Db-spam}}
* {{tl|Db-vandalism}}
* {{tl|Db-test}}
* {{tl|Db-copyvio}}
* {{tl|Db-attack}}
<section end=user-maintenance-templates/>
== User notice templates ==
: ''Category: [[:Category:User notice templates|User notice templates]]''
<section begin=user-notice-templates/>
* {{tl|You've got mail}}
* {{tl|Welcome}}
* {{tl|Blocked}}
* {{tl|Blocked talk-revoked-notice}}
* {{tl|Unblocked}}
* {{tl|Translationadmin granted}}
* {{tl|Patroller granted}}
<section end=user-notice-templates/>
== User warning templates ==
: ''Category: [[:Category:User warning templates|User warning templates]]''
<section begin=user-warning-templates/>
;Testing
* {{tl|Uw-test1}}
* {{tl|Uw-test2}}
* {{tl|Uw-test3}}
* {{tl|Uw-test4}}
;Promotion
* {{tl|Uw-advert1}}
* {{tl|Uw-advert2}}
* {{tl|Uw-advert3}}
* {{tl|Uw-advert4}}
;Creation of off-topic pages
* {{tl|Uw-create1}}
* {{tl|Uw-create2}}
* {{tl|Uw-create3}}
* {{tl|Uw-create4}}
* {{tl|Uw-create4im}}
;Vandalism
* {{tl|Uw-vandalism1}}
* {{tl|Uw-vandalism2}}
* {{tl|Uw-vandalism3}}
* {{tl|Uw-vandalism4}}
* {{tl|Uw-vandalism4im}}
* {{tl|Vandalism1}}
* {{tl|Vandalism2}}
* {{tl|Vandalism3}}
* {{tl|Uw-npa}}
* {{tl|Uw-harass}}
* {{tl|Uw-sock}}
*
<section end=user-warning-templates/>
== Character-substitution templates ==
: ''Category: [[:Category:Character-substitution templates|Character-substitution templates]]''
<section begin=character-substitution-templates/>
* {{tl|!((}} - {{!((}}
* {{tl|))!}} - {{))!}}
* {{tl|!-}} - <nowiki>|-</nowiki>
* {{tl|1==}} - <nowiki>=</nowiki>
* {{tl|@}} - {{@}}
* {{tl|void}}
* {{tl|\}} - {{\}}
* {{tl|Col-3}}
* {{tl|Col-begin}}
* {{tl|Col-break}}
* {{tl|Col-end}}
* {{tl|Center}}
* {{tl|Sp}}
<section end=character-substitution-templates/>
== Utility templates ==
: ''Category: [[:Category:Utility templates|Utility templates]]''
<section begin=utility-templates/>
* {{tl|Lorem ipsum}}
* {{tl|Error}}
* {{tl|Please leave this line alone (sandbox heading)}}
* {{tl|Lua}}
* {{tl|Yesno}}
* {{tl|Whatisit}}
* {{tl|Lua}}
* {{tl|Flatlist}}
* {{tl|Edit filter warning}}
* {{tl|Edit}}
* {{tl|Editlink}}
* {{tl|Editlinktalk}}
<section end=utility-templates/>
== Other templates ==
: ''Category: [[:Category:Other templates|Other templates]]''
<section begin=other-templates/>
* {{tl|Server}}
<section end=other-templates/>
== Userpage header templates ==
: ''Category: [[:Category:Userpage header templates|Userpage header templates]]''
<section begin=userpage-header-templates/>
* {{tl|Globally banned}}
* {{tl|Locked}}
* {{tl|Bot}}
<section end=userpage-header-templates/>
== Header templates ==
: ''Category: [[:Category:Header templates|Header templates]]''
<section begin=header-templates/>
* {{tl|Global policy}}
* {{tl|Header}}
* {{tl|Guideline}}
* {{tl|Meta policy}}
* {{tl|English notice}}
* {{tl|Historical}}
* {{tl|Policy draft}}
* {{tl|WMFGadgets}}
<section end=header-templates/>
== Link templates ==
: ''Category: [[:Category:Link templates|Link templates]]''
<section begin=link-templates/>
* {{tl|Libera}} - {{Libera|miraheze}}
* {{tl|@}} - {{@|no-reply|google.com}}
* {{tl|At}} - {{At}}
<section end=link-templates/>
== Inline talk templates ==
: ''Category: [[:Category:Inline talk templates|Inline talk templates]]''
<section begin=inline-talk-templates/>
* {{tl|ping}} - {{ping|Example}}
* {{tl|No ping}} - {{no ping|Example}}
* {{tl|Hidden ping}}
* {{tl|Edit conflict}} - {{edit conflict}}
* {{tl|Pinged}} - {{pinged}}
* {{tl|Talk page stalker}} - {{Talk page stalker}}
* {{tl|Talk page watcher}} - {{Talk page watcher}}
* {{tl|Responding to ping}} - {{Responding to ping}}
* {{tl|To}} - {{To|Example}}
* {{tl|Not watching}} - {{Not watching}}
* {{tl|Non-admin comment}} - {{NACC}}
* {{tl|Non-admin closure}} - {{NAC}}
* {{tl|redacted}} - {{redacted}}
* {{tl|redacted2}} - {{redacted2}}
* {{tl|Code}} - {{code|Example text}}
* {{tl|Strong}} - {{Strong|Example text}}
* {{tl|Serif}} - {{serif|Example text}}
* {{tl|Outdent}} - <span style="color:gray">┌───────┘</span>
* {{tl|Clear}}
* {{tl|Big}} - {{big|Example text}}
* {{tl|Small}} - {{small|Example text}}
* {{tl|Red}} - {{red|Example text}}
* {{tl|Green}} - {{green|Example text}}
* {{tl|Cyan}} - {{cyan|Example text}}
* {{tl|Dark cyan}} - {{Dark cyan|Example text}}
* {{tl|Maroon}} - {{Maroon|Example text}}
* {{tl|Color}} - {{color|red|C}}{{color|orange|o}}{{color|yellow|l}}{{color|lime|o}}{{color|green|r}} {{color|cyan|t}}{{color|blue|e}}{{color|purple|x}}{{color|pink|t}}
<section end=inline-talk-templates/>
== Resolution templates ==
: ''Category: [[:Category:Resolution templates|Resolution templates]]''
<section begin=resolution-templates/>
* {{tl|done}} - {{done}}
* {{tl|partly done}} - {{partly done}}
* {{tl|resolved}} - {{resolved}}
* {{tl|not done}} - {{not done}}
* {{tl|doing}} - {{doing}}
* {{tl|comment}} - {{comment}}
* {{tl|on hold}} - {{on hold}}
* {{tl|agree}} - {{agree}}
* {{tl|withdrawn}} - {{withdrawn}}
* {{tl|working}} - {{working}}
* {{tl|idea}} - {{idea}}
* {{tl|reviewing}} - {{reviewing}}
* {{tl|note}} - {{note}}
* {{tl|question}} - {{question}}
* {{tl|high priority}} - {{high priority}}
* {{tl|thank you}} - {{thank you}}
* {{tl|custom resolution}} - {{custom resolution|Earth Western Hemisphere transparent background.png|What on earth?}}
<section end=resolution-templates/>
== Voting templates ==
: ''Category: [[:Category:Voting templates|Voting templates]]''
<section begin=voting-templates/>
* {{tl|support}} - {{support}}
* {{tl|oppose}} - {{oppose}}
* {{tl|abstain}} - {{abstain}}
* {{tl|neutral}} - {{neutral}}
* {{tl|support if}} - {{Support if}}
<section end=voting-templates/>
== Userboxes ==
* {{tl|Userbox}}
* {{tl|Userbox-2}}
* {{tl|Userbox-level}}
* {{tl|Userboxtop}}
* {{tl|Userboxbreak}}
* {{tl|Userboxbottom}}
=== Global permissions ===
: ''Category: [[:Category:Global permissions userboxes|Global permissions userboxes]]''
<section begin=global-permissions-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User CVT}} || {{User CVT|nocat=yes}}
|-
| {{tl|User global IP block exemption}} || {{User global IP block exemption|nocat=yes}}
|-
| {{tl|User global sysop}} || {{User global sysop|nocat=yes}}
|-
| {{tl|User global rollbacker}} || {{User global rollbacker|nocat=yes}}
|-
| {{tl|User interwiki administrator}} || {{User interwiki administrator|nocat=yes}}
|-
| {{tl|User steward}} || {{User steward|nocat=yes}}
|-
| {{tl|User system administrator}} || {{User system administrator|nocat=yes}}
|}
<section end=global-permissions-userboxes/>
=== Meta permissions ===
: ''Category: [[:Category:Meta permissions userboxes|Meta permissions userboxes]]''
<section begin=meta-permissions-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User administrator}} || {{User administrator|nocat=yes}}
|-
| {{tl|User autopatrolled}} || {{User autopatrolled|nocat=yes}}
|-
| {{tl|User autoconfirmed}} || {{User autoconfirmed|nocat=yes}}
|-
| {{tl|User confirmed}} || {{User confirmed|nocat=yes}}
|-
| {{tl|User interface administrator}} || {{User interface administrator|nocat=yes}}
|-
| {{tl|User translation administrator}} || {{User translation administrator|nocat=yes}}
|-
| {{tl|User wiki creator}} || {{User wiki creator|nocat=yes}}
|-
| {{tl|User bureaucrat}} || {{User bureaucrat|nocat=yes}}
|-
| {{tl|User patroller}} || {{User patroller|nocat=yes}}
|-
| {{tl|User rollbacker}} || {{User rollbacker|nocat=yes}}
|-
| {{tl|User central notice}} || {{User central notice|nocat=yes}}
|}
<section end=meta-permissions-userboxes/>
=== Social media userboxes ===
: ''Category: [[:Category:Social media userboxes|Social media userboxes]]''
<section begin=social-media-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User discord}} || {{User discord|nocat=yes}}
|-
| {{tl|User github}} || {{User github|nocat=yes}}
|-
| {{tl|User instagram}} || {{User instagram|nocat=yes}}
|-
| {{tl|User IRC}} || {{User IRC|nocat=yes}}
|-
| {{tl|User phabricator}} || {{User phabricator|nocat=yes}}
|-
| {{tl|User twitter}} || {{User twitter|nocat=yes}}
|-
| {{tl|User wikimedia}} || {{User wikimedia|nocat=yes}}
|}
<section end=social-media-userboxes/>
=== Human life userboxes ===
: ''Category: [[:Category:Human life userboxes|Human life userboxes]]''
<section begin=human-life-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User adult}} || {{User adult|nocat=yes}}
|-
| {{tl|User age}} || {{User age|nocat=yes}}
|-
| {{tl|User male}} || {{User male|nocat=yes}}
|-
| {{tl|User female}} || {{User female|nocat=yes}}
|-
| {{tl|User from}} || {{User from|nocat=yes}}
|-
| {{tl|User in}} || {{User in|nocat=yes}}
|}
<section end=human-life-userboxes/>
=== Other userboxes ===
: ''Category: [[:Category:Other userboxes|Other userboxes]]''
<section begin=other-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User likes thank button}} || {{User likes thank button|nocat=yes}}
|-
|}
<section end=other-userboxes/>
== Infoboxes ==
<section start=infoboxes/>
* {{tl|infobox}}
* {{tl|infobox Miraheze user}}
* {{tl|simpleboxtop}}
* {{tl|simpleboxdata}}
* {{tl|simpleboxsection}}
<section end=infoboxes/>
fbd7fdcdeb179582d6030802ed6d68b02dfb4cde
Template:Map caption/doc
10
1732
3270
2023-03-06T14:04:43Z
wikipedia>ಮಲ್ನಾಡಾಚ್ ಕೊಂಕ್ಣೊ
0
Update table markup to [[WP:HTML5|HTML5]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
<p style="width:100%;">Template intended to simplify adding a standardized and formatted caption below a map indicating the location of something (e.g. a country), possibly referring to the map's main region and optionally also to a shown subregion. Original use within infoboxes (e.g. see articles on [[Template:Countries of Europe|European countries]]). For a complete set of elements of reasonable length, a width of (minimally) 250px (without extra padding or margins) should be available.</p>
===Parameters===
Required parameters shown in '''''bold italics'''''
{{Aligned table
|cols=3 |class=wikitable |style=font-size:95%; |colstyle=padding-left:0.5em;padding-right:0.5em;
|col1style=font-style:italic; |col3align=center
|row1header=on| Parameter | Description | Default
| countryprefix | {{plainlist|1=
* Neither linked nor styled prefix e.g. "the" (for articles named e.g. "United Kingdom", "Czech Republic", "Netherlands").
}}
| –
| country |{{plainlist|1=
* Only if the country name at the map should not be identical to the article name (e.g. "Metropolitan France").
* <nowiki>Template sets [[...]]</nowiki> (if article or redirect exists).
}}
| <{{tsp|''article name''}}>
| location |{{plainlist|1=
* Only if ''colour'' is not used and its default is not appropriate: Description identifying ''country''{{'}}s location (e.g. "circled in inset")
* This parameter must never be empty; "none" suppresses it. If passed, ''location_color'' cannot be shown.
}}
| –
| location_color |{{plainlist|1=
* Only if ''description'' is not used: Colour identifying ''country''{{'}}s location; "none" suppresses the default.
}}
| orange
| region |{{plainlist|1=
* Name (or equally extremely short description) for approximately the entire area depicted by the map.
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>Antarctica<nowiki>]]</nowiki>" shown as "on [[Antarctica]]",
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>Middle East<nowiki>]]</nowiki>", "<nowiki>[[</nowiki>Arctic Circle<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>Pacific Ocean<nowiki>]]</nowiki>" shown as "in the ...",
* <span style{{=}}"visibility:hidden;">special: </span>versus any other: shown as "in ...", e.g. "<nowiki>[[</nowiki>Africa<nowiki>]]</nowiki>" shown as "in Africa"
}}
| –
| region_color |{{plainlist|1=
* Colour identifying ''region''; "none" suppresses the default.
}}
| white
| subregion |{{plainlist|1=
* Subregion indicated within region <span style{{=}}"font-size:87%;">(only if used: aligning both region and subregion lines to the left, else single region line centered as top line)</span>
* Must not occur without parameter ''region''.
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>EU<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>European Union<nowiki>]]</nowiki>" shown as "in the [[European Union]]",
* <span style{{=}}"visibility:hidden;">special: </span>versus any other: shown as "in ...", e.g. "the <nowiki>[[</nowiki>Caucasus<nowiki>]]</nowiki>" shown as "in the [[Caucasus]]"
}}
| –
| subregion_color |{{plainlist|1=
* Colour identifying ''subregion''; "none" suppresses showing the default.
}}
| tan
| legend |{{plainlist|1=
* Filename of image providing a map legend.
}}
| –
}}<!--(end Aligned table)-->
; Note : <div style="font-size:95%;line-height:1.35em;font-weight:400;"> If ''country'', ''region'' or ''subregion'' is exactly the name of a page in article space, the template automatically creates a link to it. You can still put a link here manually, using the usual syntax.</div>
===Examples===
{| style="width:100%; border:1px solid #a0a0a0; background-color:#f8f8ff;"<!-- no class formatting other than article space: mustnot show result in any different style here -->
|- style="vertical-align:top;text-align:left;"
|style="width:50%; font-size:110%;font-weight:bold;"| Code || <span style="font-size:110%;font-weight:bold;">Raw result</span> (in unformatted box, compare to handling in Infobox)
|- style="vertical-align:top;"
|colspan="2" style="padding-top:.5em; font-size:87%;"|<code style="color:#705000;"><nowiki>{{map caption}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"|<code><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption |region=Europe |legend=European location legend en.png}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"| <code><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%;"| '' Typical sample for an article on a European Union member that needs no "the" before its name, for otherwise identical output:''<br /><code style="color:#705000;"><nowiki>{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;|{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}
|}
|}
{| xclass="toccolours" style="width:100%; margin-top:.5em;border:1px solid #a0a0a0;background-color:#f8f8ff;" <!-- no class formatting other than article space -->
|- style="text-align:left;"
|'''<span style="font-size:110%;">Infobox usage of code</span> (as intended)''' — in which the alignment, the padding/margins, and font are rendered differently (''this'' template adjusts for ''that'' infobox):
|- style="text-align:left;line-height:1.4em;font-size:87%;"
|style="white-space:normal;"|'''Sample for article named 'Armenia', about a non-European country'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = Armenia</nowiki><br />
<nowiki> |image_map = Europe location ARM.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>'''Sample for article named 'Belarus', about a non-member of the EU'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = Belarus</nowiki><br />
<nowiki> |image_map = Europe location BLR.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>
'''Sample for article named 'Netherlands', about a member of the EU'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = the Netherlands</nowiki><br />
<nowiki> |image_map = EU location NED.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code>
|-
|
{| style="background-color:#f8f8ff;"
|-
|colspan="3" |<span style="font-size:110%;">'''Net result'''</span> — The three simplified samples above, shown here side by side<br /><span style="font-size:110%;visibility:hidden;">'''Net result''' — </span><span style="font-size:87%;">(called here without country parameter, and with placeholder values for population to prevent error messages)</span>:
|- style="vertical-align:top;"
|{{Infobox country|
|common_name = Armenia
|image_map = Europe location ARM.png
|map_caption = {{map caption}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|{{Infobox country|
|common_name = Belarus
|image_map = Europe location BLR.png
|map_caption = {{map caption |region=Europe |legend=European location legend en.png}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|{{Infobox country|
|common_name = the Netherlands
|image_map = EU location NED.png
|map_caption = {{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|}
|}
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Map formatting and function templates]]
}}</includeonly>
a4d3dff2acaf90414f21b798752523e1efbb574e
Template:Infobox organization
10
1154
2480
2023-03-08T06:31:07Z
w>Paine Ellsworth
0
per edit request on talk page - include new parameter for [[Research Organization Registry]], ror_id=
wikitext
text/x-wiki
{{Infobox
| bodyclass = vcard
| bodystyle = {{{bodystyle|}}}
| titleclass = fn org
| title = {{{name|{{{organization_name|{{{Non-profit_name|{{PAGENAMEBASE}}}}}}}}}}}
| subheader = {{#if:{{{full_name|{{{full name|}}}}}}|<div {{#if:{{{full_name_lang|{{{full name lang|}}}}}}|lang="{{{full_name_lang|{{{full name lang|}}}}}}"}}>{{{full_name|{{{full name|}}}}}}</div>}}
| subheader2 = {{#if:{{{native_name|{{{native name|}}}}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name|{{{native name}}}}}}{{#if:{{{native_name_lang|}}}|</div>}}}}
| imageclass = logo
| imagestyle =
| image = {{#invoke:InfoboxImage|InfoboxImage |image={{{logo|{{{organization_logo|{{{Non-profit_logo|}}}}}}}}} |size={{{logo_size|}}} |sizedefault=frameless |alt={{{logo_alt|}}} |upright={{{upright|1}}} }}
| caption = {{{logo_caption|}}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{{image_size|{{{imagesize|{{{size|}}}}}}}}} |sizedefault=frameless |upright={{{image_upright|1}}} |alt={{{image_alt|{{{alt|}}}}}} }}
| caption2 = {{{caption|}}}
| image3 = {{#invoke:InfoboxImage|InfoboxImage |image={{{map|}}} |size={{{map_size|{{{msize|}}}}}} |sizedefault=250px |upright={{{map_upright|}}} |alt={{{map_alt|{{{malt|}}}}}} }}
| caption3 = {{{map_caption|{{{mcaption|}}}}}}
| image4 = {{#invoke:InfoboxImage|InfoboxImage |image={{{map2|}}} |size={{{map2_size|}}} |sizedefault=250px |upright={{{map2_upright|}}} |alt={{{map2_alt|}}} }}
| caption4 = {{{map2_caption|}}}
| image5 = {{#if:{{{pushpin_map|{{{map_type|}}}}}}|{{Location map|{{{pushpin_map|{{{map_type}}}}}}
| border = infobox
| caption = {{#switch:{{{map_caption|}}}|#default={{{map_caption}}}|none=|=Location within {{#invoke:Location map|data|{{{pushpin_map|{{{map_type}}}}}}|name}}}}
| float = center
| alt = {{{map_alt|}}}
| width = {{#if:{{{map_size|}}}|{{{map_size}}}|220}}
| relief = {{{pushpin_relief|{{{map_relief|}}}}}}
| label = {{{map_dot_label|}}}
| coordinates = {{{coordinates|}}}
}}}}
| labelstyle = padding-right:0.6em;<!--(to ensure some gap between any (long/unwrapped) labels and subsequent data on same line)-->
| label1 = Abbreviation
| class1 = nickname
| data1 = {{{abbreviation|}}}
| label2 = Nickname
| class2 = nickname
| data2 = {{{nickname|}}}
| label3 = Pronunciation
| data3 = {{#if:{{{pronounce|}}}{{{Pronounce|}}}{{{Pronunciation|}}}{{{pronunciation|}}}{{{pronounce comment|}}} |<!--
-->{{Unbulleted list|1={{{pronounce|}}}{{{Pronounce|}}}{{{Pronunciation|}}}{{{pronunciation|}}}{{{pronounce ref|}}} {{{pronounce comment|}}}<!--
-->|2={{{pronounce 2|}}} }}}}
| label4 = Named after
| data4 = {{{named_after|}}}
<!--
| label5 = Motto
| class5 = note
| data5 = {{{motto|{{{organization_motto|{{{pledge|}}}}}}}}}
-->
| label6 = Predecessor
| data6 = {{{predecessor|}}}
| label7 = {{#if:{{{merged_label|}}}|{{{merged_label}}}|Merged into}}
| data7 = {{{merged|{{{merged_into|}}}}}}
| label8 = Successor
| data8 = {{{successor|}}}
| label9 = {{#if:{{{formation|}}} |Formation |{{#if:{{{founded_date|{{{founded|}}}}}}|Founded|Established}} }}
| class9 = note
| data9 = {{if empty |{{{formation|}}} |{{{established|}}} |{{{founded_date|{{{founded|}}}}}} }}
| label10 = Founder{{#if:{{{founders|}}}|s}}
| data10 = {{#if:{{{founders|}}} |{{{founders}}} |{{{founder|}}} }}
| label11 = Founded at
| data11 = {{{founding_location|}}}
| label12 = {{#if:{{{defunct|}}}|Defunct|Dissolved}}
| data12 = {{{defunct|{{{dissolved|{{{dissolved_date|}}}}}}}}}
| label13 = Merger of
| data13 = {{{merger|}}}
| label14 = Type
| data14 = {{{type|{{{organization_type|{{{Non-profit_type|}}}}}}}}}
| label15 = {{longitem |{{#if:{{{vat_id|}}} |[[VAT identification number|VAT ID no.]] |[[Taxpayer Identification Number|Tax ID no.]]}} }}
| data15 = {{#if:{{{vat_id|}}} |{{{vat_id}}} |{{{tax_id|}}} }}
| label16 = Registration no.
| data16 = {{{registration_id|}}}
| label17 = Legal status
| data17 = {{{status|}}}
| label18 = {{#if:{{{focus|{{{foci|}}}}}} |Focus |Purpose}}
| data18 = {{#if:{{{focus|{{{foci|}}}}}} |{{{focus|{{{foci|}}}}}} |{{{purpose|}}} }}
| label19 = {{longitem|Professional title}}
| data19 = {{{professional_title|}}}
| label20 = Headquarters
| data20 = {{{headquarters|}}}
| label21 = Location
| class21 = label
| data21 = {{Unbulleted list
| 1 = {{comma separated entries
| 1 = {{#if:{{{location_city|}}} |<span class="locality">{{{location_city}}}</span>}}
| 2 = {{#if:{{{location_country|}}} |<span class="country-name">{{{location_country}}}</span>}}
}}
| 2 = {{{location|}}}
| 3 = {{comma separated entries
| 1 = {{#if:{{{location_city2|}}} |<span class="locality">{{{location_city2}}}</span>}}
| 2 = {{#if:{{{location_country2|}}} |<span class="country-name">{{{location_country2}}}</span>}}
}}
| 4 = {{{location2|}}}
}}
| label22 = Locations
| class22 = label
| data22 = {{Unbulleted list
| 1 = {{comma separated entries
| 1 = {{#if:{{{addnl_location_city|}}} |<span class="locality">{{{addnl_location_city}}}</span>}}
| 2 = {{#if:{{{addnl_location_country|}}} |<span class="country-name">{{{addnl_location_country}}}</span>}}
}}
| 2 = {{{addnl_location|{{{additional_location|}}}}}}
| 3 = {{comma separated entries
| 1 = {{#if:{{{addnl_location_city2|}}} |<span class="locality">{{{addnl_location_city2}}}</span>}}
| 2 = {{#if:{{{addnl_location_country2|}}} |<span class="country-name">{{{addnl_location_country2}}}</span>}}
}}
| 4 = {{{addnl_location2|{{{additional_location2|}}}}}}
}}
| label23 = Coordinates
| data23 = {{{coordinates|{{{coords|}}}}}}
| label24 = Origins
| data24 = {{{origins|}}}
| label25 = {{longitem |{{#if:{{{area_served|}}} |Area served |Region {{#if:{{{region_served|}}}|served}} }} }}
| data25 = {{if empty |{{{area_served|}}} |{{{region_served|}}} |{{{region|}}} }}
| label26 = Product{{#if:{{{products|}}}|s}}
| data26 = {{#if:{{{products|}}} |{{{products}}} |{{{product|}}} }}
| label27 = Services
| class27 = note
| data27 = {{{services|}}}
| label28 = Method{{#if:{{{methods|}}}|s}}
| data28 = {{#if:{{{methods|}}} |{{{methods}}} |{{{method|}}} }}
| label29 = Field{{#if:{{{fields|}}}|s}}
| data29 = {{#if:{{{fields|}}} |{{{fields}}} |{{{field|}}} }}
| label30 = {{longitem |Members{{#if:{{{num_members|{{{members|}}}}}}||hip}} {{#if:{{{num_members_year|{{{membership_year|}}}}}} |{{nobold|({{{num_members_year|{{{membership_year|}}}}}})}} }} }}
| data30 = {{#if:{{{num_members|{{{members|}}}}}} |{{{num_members|{{{members}}}}}} |{{{membership|}}} }}
| label31 = {{longitem |Official language{{#if:{{{languages|}}}|s}} }}
| data31 = {{#if:{{{languages|}}} |{{{languages}}} |{{{language|}}} }}
| label32 = Owner{{#if:{{{owners|}}}|s}}
| data32 = {{#if:{{{owners|}}} |{{{owners}}} |{{{owner|}}} }}
| label33 = {{longitem|{{#if:{{{gen_sec|}}}|General Secretary|Secretary General}}}}
| data33 = {{#if:{{{general|}}} |{{{general}}} |{{#if:{{{gen_sec|}}} |{{{gen_sec}}} |{{{sec_gen|}}} }}}}
| label34 = {{#if:{{{leader_title|}}} |{{longitem|{{{leader_title}}}}} |Leader}}
| data34 = {{{leader_name|}}}
| label35 = {{longitem|{{{leader_title2}}}}}
| data35 = {{#if:{{{leader_title2|}}} |{{{leader_name2|}}} }}
| label36 = {{longitem|{{{leader_title3}}}}}
| data36 = {{#if:{{{leader_title3|}}} |{{{leader_name3|}}} }}
| label37 = {{longitem|{{{leader_title4}}}}}
| data37 = {{#if:{{{leader_title4|}}} |{{{leader_name4|}}} }}
| label38 = {{longitem|[[Board of directors|{{allow wrap|Board of directors}}]]}}
| data38 = {{{board_of_directors|}}}
| label39 = {{longitem|Key people}}
| data39 = {{{key_people|}}}
| label40 = {{#if:{{{main_organ|}}} |{{longitem|Main organ}} |Publication}}
| data40 = {{#if:{{{main_organ|}}} |{{{main_organ}}} |{{{publication|{{{journal|}}}}}} }}
| label41 = {{longitem|Parent organi{{#if:{{{parent_organisation|}}}|s|z}}ation}}
| data41 = {{#if:{{{parent_organisation|}}} |{{{parent_organisation}}} |{{{parent_organization|}}} }}
| label42 = [[Subsidiary|Subsidiaries]]
| data42 = {{#if:{{{subsidiaries|}}} |{{{subsidiaries}}} |{{{subsid|}}} }}
| label43 = Secessions
| data43 = {{{secessions|}}}
| label44 = Affiliations
| data44 = {{{affiliations|{{{affiliation|}}}}}}
| label45 = [[Research Organization Registry|R.O.R.]] Id
| data45 = {{{ror_id|}}}
| label46 = {{longitem |Budget {{#if:{{{budget_year|}}} |{{nobold|({{{budget_year}}})}} }} }}
| data46 = {{{budget|}}}
| label47 = {{longitem |Revenue {{#if:{{{revenue_year|{{{income_year|}}}}}} |{{nobold|({{{revenue_year|{{{income_year|}}}}}})}} }} }}
| data47 = {{{revenue|{{{income|}}}}}}
| label48 = Disbursements
| data48 = {{{disbursed|{{{disbursements|{{{disbursement|}}}}}}}}}
| label49 = Expenses {{#if:{{{expenses_year|}}} | {{nobold|({{{expenses_year}}})}} }}
| data49 = {{{expenses|{{{spent|{{{expense|}}}}}}}}}
| label50 = {{#if:{{{funders|}}}|Funders|Funding}}
| data50 = {{{funders|{{{funding|}}}}}}
| label51 = [[Financial endowment|Endowment]] {{#if:{{{endowment_year|}}} | {{nobold|({{{endowment_year}}})}} }}
| data51 = {{{endowment|}}}
| label52 = {{longitem |{{#if:{{{num_staff|}}}{{{staff|}}} |Staff |Employees}} {{#if:{{{num_staff_year|{{{staff_year|{{{num_employees_year|{{{employees_year|}}}}}}}}}}}} |{{nobold|({{{num_staff_year|{{{staff_year|{{{num_employees_year|{{{employees_year|}}}}}}}}}}}})}} }} }}
| data52 = {{if empty |{{{num_staff|}}} |{{{staff|}}} |{{{num_employees|}}} |{{{employees|}}} }}
| label53 = {{longitem |Volunteers {{#if:{{{num_volunteers_year|{{{volunteers_year|}}}}}} |{{nobold|({{{num_volunteers_year|{{{volunteers_year|}}}}}})}} }} }}
| data53 = {{#if:{{{num_volunteers|}}} |{{{num_volunteers}}} |{{{volunteers|}}} }}
| label54 = {{longitem |Students {{#if:{{{students_year|}}} |{{nobold|({{{students_year|}}})}} }} }}
| data54 = {{{students|}}}
| label55 = Award(s)
| data55 = {{{awards|}}}
| label56 = Website
| data56 = {{{website|{{{homepage|}}}}}}
| label57 = Remarks
| data57 = {{{remarks|}}}
| label58 = {{longitem|Formerly called}}
| class58 = nickname
| data58 = {{if empty |{{{former name|}}} |{{{former_name|}}} |{{{former|}}} |{{{formerly|}}} }}
| data99 = {{{module|}}}
| belowstyle = border-top:#aaa 1px solid;
| below = {{{footnotes|}}}
}}<!-- Tracking categories:
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox organization with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox organization]] with unknown parameter "_VALUE_"|ignoreblank=y| abbreviation | additional_location | additional_location2 | addnl_location | addnl_location_city | addnl_location_city2 | addnl_location_country | addnl_location_country2 | addnl_location2 | affiliation | affiliations | alt | area_served | awards | board_of_directors | bodystyle | budget | budget_year | caption | coordinates | coords | defunct | disbursed | disbursement | disbursements | dissolved | dissolved_date | employees | employees_year | endowment | endowment_year | established | expense | expenses | expenses_year | field | fields | foci | focus | footnotes | formation | former | former name | former_name | formerly | founded | founded_date | founder | founders | founding_location | full name | full name lang | full_name | full_name_lang | funding | funders | gen_sec | general | headquarters | homepage | image | image_alt | image_size | imagesize | image_upright | income | income_year | journal | key_people | language | languages | leader_name | leader_name2 | leader_name3 | leader_name4 | leader_title | leader_title2 | leader_title3 | leader_title4 | location | location_city | location_city2 | location_country | location_country2 | location2 | logo | logo_alt | logo_caption | logo_size | main_organ | malt | map | map dot label | map_alt | map_caption | map_dot_label | map_relief | map_size | map_type | map2 | map2_alt | map2_caption | map2_size | mcaption | members | membership | membership_year | merged | merged_label | merged_into | merger | method | methods | module | motto | msize | name | named_after | native name | native_name | native_name_lang | nickname | Non-profit_logo | Non-profit_name | Non-profit_type | num_employees | num_employees_year | num_members | num_members_year | num_staff | num_staff_year | num_volunteers | num_volunteers_year | organization_logo | organization_motto | organization_name | organization_type | origins | owner | owners | parent_organisation | parent_organization | pledge | predecessor | product | products | professional_title | pronounce | Pronounce | pronounce 2 | pronounce comment | pronounce ref | Pronunciation | pronunciation | publication | purpose | pushpin_map | pushpin_relief | region | region_served | registration_id | remarks | revenue | revenue_year | ror_id | sec_gen | secessions | services | size | spent | staff | staff_year | status | students | students_year | subsid | subsidiaries | successor | tax_id | type | upright | vat_id | volunteers | volunteers_year | website }}<!--Tracking cat for native name lang parameter-->{{main other|{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}||[[Category:Infoboxes without native name language parameter]]}}}}|
}}{{#if:{{{motto|}}}{{{organization_motto|}}}{{{pledge|}}}|{{main other|[[Category:Pages using infobox organization with motto or pledge]]}}|
}}<noinclude>
{{documentation}}
</noinclude>
f7a1393fe75f13973ce3a773b65236ba2eb089b5
Template:A note
10
1534
2869
2023-03-09T00:52:55Z
w>Terasail
0
Use: [[Template:Respond]]
wikitext
text/x-wiki
{{Respond|info|{{ucfirst:{{{1|Note:}}}}}|alt=information}}<!--template:A note--><noinclude>
{{documentation}}</noinclude>
adff2fb4923ef39258d4e95e5cf3ccb2e80cd95b
Module:Lang/data
828
465
1033
2023-03-09T14:48:18Z
wikipedia>Trappist the monk
0
fix;
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage();
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table_t = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------
For internationalization; not used at en.wiki
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki
language list for the local language.
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens
add an appropriate entry to the override table below.
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply
spelling differences:
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym
dv: IANA: Dhivehi MW: Divehi
el: IANA: Modern Greek MW: Greek
ht: IANA: Haitian MW: Haitian Creole
ky: IANA: Kirghiz MW: Kyrgyz
li: IANA: Limburgan MW: Limburgish
or: IANA: Oriya MW: Odia
os: IANA: Ossetian MW: Ossetic
"pa: IANA: Panjabi MW: Punjabi
"ps: IANA: Pushto MW: Pashto
"to: IANA: Tonga MW: Tongan
"ug: IANA: Uighur MW: Uyghur
use the override table to override language names that are incorrect for your project
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))
(replacing <tag> with the language tag for your language)
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.
]]
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all
if true == media_wiki_override_enable then
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list
if lang_name_table_t.lang[tag] then -- if the tag is in the main list
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki
end
end
end
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------
["ab"] = "Abkhaz", -- to match en.wiki article name
["ca-valencia"] = "Valencian",
["cu"] = "Church Slavonic", -- 2nd IANA name;
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names
["de-ch"] = "Swiss Standard German",
["en-au"] = "Australian English",
["en-ca"] = "Canadian English",
["en-emodeng"] = "Early Modern English",
["en-gb"] = "British English",
["en-ie"] = "Irish English",
["en-in"] = "Indian English",
["en-nz"] = "New Zealand English",
["en-us"] = "American English",
["en-za"] = "South African English",
["fy"] = "West Frisian", -- Western Frisian
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title
["nl-be"] = "Flemish", -- match MediaWiki
["oc-provenc"] = "Provençal",
["ps"] = "Pashto", -- Pushto
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki
["tw-asante"] = "Asante Twi",
["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["av"] = "Avar", -- Avaric
["bo"] = "Standard Tibetan", -- Tibetan
["el"] = "Greek", -- Modern Greek
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa
["ff"] = "Fula", -- Fulah
["ht"] = "Haitian Creole", -- Haitian
["hz"] = "Otjiherero", -- Herero
["ii"] = "Yi", -- Sichuan Yi
["ki"] = "Gikuyu", -- Kikuyu
["kl"] = "Greenlandic", -- Kalaallisut
["ky"] = "Kyrgyz", -- Kirghiz
["lg"] = "Luganda", -- Ganda
["li"] = "Limburgish", -- Limburgan
["mi"] = "Māori", -- Maori
["na"] = "Nauruan", -- Nauru
["nb"] = "Bokmål", -- Norwegian Bokmål
["nd"] = "Northern Ndebele", -- North Ndebele
["nn"] = "Nynorsk", -- Norwegian Nynorsk
["nr"] = "Southern Ndebele", -- South Ndebele
["ny"] = "Chichewa", -- Nyanja
["oj"] = "Ojibwe", -- Ojibwa
["or"] = "Odia", -- Oriya
["pa"] = "Punjabi", -- Panjabi
["rn"] = "Kirundi", -- Rundi
["sl"] = "Slovene", -- Slovenian
["ss"] = "Swazi", -- Swati
["st"] = "Sotho", -- Southern Sotho
["to"] = "Tongan", -- Tonga
--<end do-not-edit except to comment out>--
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)
["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name
["art"] = "constructed", -- to match en.wiki article; lowercase for category name
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat
["bxr"] = "Russian Buryat", -- Russia Buriat;
["bxu"] = "Chinese Buryat", -- China Buriat;
["byr"] = "Yipma", -- Baruya, Yipma
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)
["frr"] = "North Frisian", -- Northern Frisian
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian
["gsw-fr"] = "Alsatian", -- match MediaWiki
["haa"] = "Hän", -- Han; to match en.wiki article title
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title
["jam"] = "Jamaican Patois", -- Jamaican Creole English
["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo
["mhr"] = "Meadow Mari", -- Eastern Mari
["mid"] = "Modern Mandaic", -- Mandaic
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)
["mla"] = "Tamambo", -- Malo
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text
["nrf-gg"] = "Guernésiais", -- match MediaWiki
["nrf-je"] = "Jèrriais", -- match MediaWiki
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)
["orv"] = "Old East Slavic", -- Old Russian
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title
["stq"] = "Saterland Frisian", -- Saterfriesisch
["und"] = "undetermined", -- capitalization to match existing category
["wrg"] = "Warrongo", -- Warungu
["xal-ru"] = "Kalmyk", -- to match en.wiki article title
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title
["zxx"] = "no linguistic content", -- capitalization
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["ace"] = "Acehnese", -- Achinese
["aec"] = "Sa'idi Arabic", -- Saidi Arabic
["akl"] = "Aklan", -- Aklanon
["alt"] = "Altay", -- Southern Altai
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache
["bal"] = "Balochi", -- Baluchi
-- ["bcl"] = "Central Bicolano", -- Central Bikol
["bin"] = "Edo", -- Bini
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya
["chg"] = "Chagatay", -- Chagatai
["ckb"] = "Sorani Kurdish", -- Central Kurdish
["cnu"] = "Shenwa", -- Chenoua
["coc"] = "Cocopah", -- Cocopa
["diq"] = "Zazaki", -- Dimli
["fit"] = "Meänkieli", -- Tornedalen Finnish
["fkv"] = "Kven", -- Kven Finnish
["frk"] = "Old Frankish", -- Frankish
["gez"] = "Ge'ez", -- Geez
["gju"] = "Gujari", -- Gujari
["gsw"] = "Alemannic German", -- Swiss German
["gul"] = "Gullah", -- Sea Island Creole English
["hak"] = "Hakka", -- Hakka Chinese
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew
["hnd"] = "Hindko", -- Southern Hindko
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun
["kaa"] = "Karakalpak", -- Kara-Kalpak
["khb"] = "Tai Lü", -- Lü
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish
["kpo"] = "Kposo", -- Ikposo
["krj"] = "Kinaray-a", -- Kinaray-A
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan
["lez"] = "Lezgian", -- Lezghian
["liv"] = "Livonian", -- Liv
["lng"] = "Lombardic", -- Langobardic
["mia"] = "Miami-Illinois", -- Miami
["miq"] = "Miskito", -- Mískito
["mix"] = "Mixtec", -- Mixtepec Mixtec
["mni"] = "Meitei", -- Manipuri
["mrj"] = "Hill Mari", -- Western Mari
["mww"] = "White Hmong", -- Hmong Daw
["nds-nl"] = "Dutch Low Saxon", -- Low German
-- ["new"] = "Nepal Bhasa", -- Newari
["nso"] = "Northern Sotho", -- Pedi
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari
["ood"] = "O'odham", -- Tohono O'odham
["otk"] = "Old Turkic", -- Old Turkish
["pal"] = "Middle Persian", -- Pahlavi
["pam"] = "Kapampangan", -- Pampanga
["phr"] = "Potwari", -- Pahari-Potwari
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit
-- ["pnb"] = "Punjabi", -- Western Panjabi
["psu"] = "Shauraseni", -- Sauraseni Prākrit
["rap"] = "Rapa Nui", -- Rapanui
["rar"] = "Cook Islands Māori", -- Rarotongan
["rmu"] = "Scandoromani", -- Tavringer Romani
["rom"] = "Romani", -- Romany
["rup"] = "Aromanian", -- Macedo-Romanian
["ryu"] = "Okinawan", -- Central Okinawan
["sdc"] = "Sassarese", -- Sassarese Sardinian
["sdn"] = "Gallurese", -- Gallurese Sardinian
["shp"] = "Shipibo", -- Shipibo-Conibo
["src"] = "Logudorese", -- Logudorese Sardinian
["sro"] = "Campidanese", -- Campidanese Sardinian
["tkl"] = "Tokelauan", -- Tokelau
["tvl"] = "Tuvaluan", -- Tuvalu
["tyv"] = "Tuvan", -- Tuvinian
["vls"] = "West Flemish", -- Vlaams
["wep"] = "Westphalian", -- Westphalien
["xal"] = "Oirat", -- Kalmyk
["xcl"] = "Old Armenian", -- Classical Armenian
["yua"] = "Yucatec Maya", -- Yucateco
--<end do-not-edit except to comment out>--
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------
["akk-x-latbabyl"] = "Late Babylonian",
["akk-x-midassyr"] = "Middle Assyrian Akkadian",
["akk-x-midbabyl"] = "Middle Babylonian Akkadian",
["akk-x-neoassyr"] = "Neo-Assyrian Akkadian",
["akk-x-neobabyl"] = "Neo-Babylonian Akkadian",
["akk-x-old"] = "Old Akkadian",
["akk-x-oldassyr"] = "Old Assyrian Akkadian",
["akk-x-oldbabyl"] = "Old Babylonian Akkadian",
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages
["ca-x-old"] = "Old Catalan",
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages
["egy-x-demotic"] = "Demotic Egyptian",
["egy-x-late"] = "Late Egyptian",
["egy-x-middle"] = "Middle Egyptian",
["egy-x-old"] = "Old Egyptian",
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages
["gmw-x-ecg"] = "East Central German",
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
["grc-x-attic"] = "Attic Greek",
["grc-x-biblical"] = "Biblical Greek",
["grc-x-byzant"] = "Byzantine Greek",
["grc-x-classic"] = "Classical Greek",
["grc-x-doric"] = "Doric Greek",
["grc-x-hellen"] = "Hellenistic Greek",
["grc-x-ionic"] = "Ionic Greek",
["grc-x-koine"] = "Koinē Greek",
["grc-x-medieval"] = "Medieval Greek",
["grc-x-patris"] = "Patristic Greek",
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages
["ine-x-proto"] = "Proto-Indo-European",
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there
["la-x-medieval"] = "Medieval Latin",
["la-x-new"] = "New Latin",
["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages
["prg-x-old"] = "Old Prussian",
["sem-x-ammonite"] = "Ammonite",
["sem-x-aramaic"] = "Aramaic",
["sem-x-canaan"] = "Canaanite languages",
["sem-x-dumaitic"] = "Dumaitic",
["sem-x-egurage"] = "Eastern Gurage",
["sem-x-hatran"] = "Hatran Aramaic",
["sem-x-oldsoara"] = "Old South Arabian",
["sem-x-palmyren"] = "Palmyrene Aramaic",
["sem-x-proto"] = "Proto-Semitic",
["sem-x-taymanit"] = "Taymanitic",
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai
["yuf-x-wal"] = "Walapai",
["yuf-x-yav"] = "Yavapai",
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon)
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page
["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon)
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo)
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['hno'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['pnb'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['skr'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
this_wiki_lang_tag = this_wiki_lang_tag,
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction
article_name = article_name,
lang_name_table = lang_name_table_t,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};
44981b3b66900e816590946e3e049c421ebecc80
Template:Respond
10
1537
2872
2023-03-10T02:10:00Z
w>Terasail
0
Add safesubst
wikitext
text/x-wiki
<includeonly>[[File:{{{{{|safesubst:}}}#switch:{{{1|{{{icon|}}}}}}
|blackcheck = Black check.svg
|bluebrokenplus = Symbol unsupport2 vote.svg
|bluecheck2 = Cornflower blue check.svg
|bluecheck = Artículo bueno-blue.svg
|blueclock = Pictogram voting wait blue.svg
|blueplus = Symbol support2 vote.svg
|deferred = Symbol deferred.svg
|greencheck2 = Yes check.svg
|greencheck = Symbol confirmed.svg
|greenclock = Pictogram voting wait green.svg
|greenplus = Symbol support vote.svg
|greybrokenplus = Symbol unsupport vote.svg
|greyexclamation = Pictogram voting comment.svg
|info=Symbol information vote.svg
|minus = Symbol declined.svg
|neutral = Symbol neutral vote.svg
|orangeclock = Pictogram voting wait orange.svg
|orangeexclamation = Ambox important.svg
|redexclamation = Ambox important red.svg
|pinkclock = Pictogram voting wait pink.svg
|question2 = Symbol question.svg
|question = Pictogram voting question.svg
|wait = Symbol_wait.svg
|xmark2 = X mark.svg
|xmark = Symbol unrelated.svg
|yellowcheck = Yellow check.svg
|yellowclock = Pictogram voting wait.svg
|{{{1|{{{icon|Pictogram voting question.svg}}}}}}}}|{{{size|18px}}}|alt={{{alt|}}}]] '''{{{2|{{{text|Response}}}}}}'''</includeonly><noinclude>
{{Documentation}}
</noinclude>
b11f14454f435e825639a46c4fe356254a552b63
Module:Authority control/doc
828
1082
2362
2023-03-13T18:21:48Z
wikipedia>MSGJ
0
update
wikitext
text/x-wiki
{{High-risk}}
{{Module rating|protected}}
{{Authority control/related}}
{{Lua|Module:Navbox|Module:ResolveEntityId}}
This module contains the code for the {{T|Authority control}} template.
Please see [[Template:Authority control/doc]].
<includeonly>{{sandbox other||
[[Category:Modules using data from Wikidata]]
[[Category:Wikipedia authority control]]
}}</includeonly>
7b92fcf75d5208e71e4bbc4dd06b8171884722e4
Module:Shortcut/styles.css
828
155
359
2023-03-14T15:53:59Z
wikipedia>Izno
0
Undid revision 1144571295 by [[Special:Contributions/TheDJ|TheDJ]] ([[User talk:TheDJ|talk]]) I'm sorry, that's not what we discussed or agreed to
sanitized-css
text/css
/* {{pp-template}} */
.module-shortcutboxplain {
float: right;
margin: 0 0 0 1em;
border: 1px solid #aaa;
background: #fff;
padding: 0.3em 0.6em 0.2em 0.6em;
text-align: center;
font-size: 85%;
}
.module-shortcutboxleft {
float: left;
margin: 0 1em 0 0;
}
.module-shortcutlist {
display: inline-block;
border-bottom: 1px solid #aaa;
margin-bottom: 0.2em;
}
.module-shortcutboxplain ul {
font-weight: bold;
}
.module-shortcutanchordiv {
position: relative;
top: -3em;
}
li .module-shortcutanchordiv {
float: right; /* IE/Edge in list items */
}
.mbox-imageright .module-shortcutboxplain {
padding: 0.4em 1em 0.4em 1em;
line-height: 1.3;
margin: 0;
}
ccf3877e4b14726147d3b1d8a297fbecacdb2cf8
Module:Sidebar/configuration
828
43
81
2023-03-14T22:32:24Z
wikipedia>Izno
0
add hlist and plainlist_templatestyles keys
Scribunto
text/plain
return {
i18n = {
child_yes = 'yes',
float_none = 'none',
float_left = 'left',
wrap_true = 'true',
navbar_none = 'none',
navbar_off = 'off',
default_list_title = 'List',
title_not_to_add_navbar = 'Template:Sidebar',
collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists',
templatestyles = 'Module:Sidebar/styles.css',
hlist_templatestyles = 'Hlist/styles.css',
plainlist_templatestyles = 'Plainlist/styles.css',
category = {
child = '[[Category:Pages using sidebar with the child parameter]]',
conversion = '[[Category:Sidebars with styles needing conversion]]'
},
pattern = {
collapse_sandbox = '/sandbox$',
sandbox = '/sandbox$',
subgroup = 'sidebar%-subgroup',
style_conversion = 'style$',
uncategorized_conversion_titles = {
'/[Ss]andbox',
'/[Tt]estcases',
'/[Dd]oc$'
}
},
class = {
sidebar = 'sidebar',
subgroup = 'sidebar-subgroup',
collapse = 'sidebar-collapse',
float_none = 'sidebar-none',
float_left = 'sidebar-left',
wraplinks = 'nowraplinks',
outer_title = 'sidebar-outer-title',
top_image = 'sidebar-top-image',
top_caption = 'sidebar-top-caption',
pretitle = 'sidebar-pretitle',
pretitle_with_top_image = 'sidebar-pretitle-with-top-image',
title = 'sidebar-title',
title_with_pretitle = 'sidebar-title-with-pretitle',
image = 'sidebar-image',
caption = 'sidebar-caption',
above = 'sidebar-above',
heading = 'sidebar-heading',
content = 'sidebar-content',
content_with_subgroup = 'sidebar-content-with-subgroup',
below = 'sidebar-below',
navbar = 'sidebar-navbar',
list = 'sidebar-list',
list_title = 'sidebar-list-title',
list_title_centered = 'sidebar-list-title-c',
list_content = 'sidebar-list-content'
}
}
}
dc2a980ac2162a898f7c21e6d6ba7e994dfeb315
Module:Sidebar
828
42
79
2023-03-14T22:35:53Z
wikipedia>Izno
0
move these items to config, discovered during work at meta
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles)
local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles}
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
71fe765846593e025ca2f94371315e9dbb5bb4d2
Module:Find sources/config
828
1030
2258
2023-03-16T03:37:43Z
wikipedia>Trialpears
0
Changed protection settings for "[[Module:Find sources/config]]": [[WP:High-risk templates|Highly visible template]] Lots more transclusions due to inclusion in Talk header a year ago. ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
-- Configuration data for [[Module:Find sources]].
return {
-- Define the error message and category to be used if the module is used in
-- the main namespace and the template config doesn't set the
-- isUsedInMainspace key to true. The category is optional; if it is not
-- wanted, it can be removed.
['namespace-error'] = 'Error: Please do not use this template in articles.',
['namespace-error-category'] = 'Pages with templates in the wrong namespace',
-- The separator to be used if no separator is specified in the template
-- config.
['default-separator'] = mw.message.new('Dot-separator'):plain()
}
412ea800b842be74cd74e8289e346e8b30b1df91
Module:Mapframe
828
1426
2761
2023-03-21T11:20:30Z
Uzume
8
strict
Scribunto
text/plain
-- Note: Originally written on English Wikipedia at https://en.wikipedia.org/wiki/Module:Mapframe
--[[----------------------------------------------------------------------------
##### Localisation (L10n) settings #####
Replace values in quotes ("") with localised values
----------------------------------------------------------------------------]]--
local L10n = {}
-- Modue dependencies
local transcluder -- local copy of https://www.mediawiki.org/wiki/Module:Transcluder loaded lazily
-- "strict" should not be used, at least until all other modules which require this module are not using globals.
-- Template parameter names (unnumbered versions only)
-- Specify each as either a single string, or a table of strings (aliases)
-- Aliases are checked left-to-right, i.e. `{ "one", "two" }` is equivalent to using `{{{one| {{{two|}}} }}}` in a template
L10n.para = {
display = "display",
type = "type",
id = { "id", "ids" },
from = "from",
raw = "raw",
title = "title",
description = "description",
strokeColor = { "stroke-color", "stroke-colour" },
strokeWidth = "stroke-width",
strokeOpacity = "stroke-opacity",
fill = "fill",
fillOpacity = "fill-opacity",
coord = "coord",
marker = "marker",
markerColor = { "marker-color", "marker-colour" },
markerSize = "marker-size",
radius = { "radius", "radius_m" },
radiusKm = "radius_km",
radiusFt = "radius_ft",
radiusMi = "radius_mi",
edges = "edges",
text = "text",
icon = "icon",
zoom = "zoom",
frame = "frame",
plain = "plain",
frameWidth = "frame-width",
frameHeight = "frame-height",
frameCoordinates = { "frame-coordinates", "frame-coord" },
frameLatitude = { "frame-lat", "frame-latitude" },
frameLongitude = { "frame-long", "frame-longitude" },
frameAlign = "frame-align",
switch = "switch",
overlay = "overlay",
overlayBorder = "overlay-border",
overlayHorizontalAlignment = "overlay-horizontal-alignment",
overlayVerticalAlignment = "overlay-vertical-alignment",
overlayHorizontalOffset = "overlay-horizontal-offset",
overlayVerticalOffset = "overlay-vertical-offset"
}
-- Names of other templates this module can extract coordinates from
L10n.template = {
coord = { -- The coord template, as well as templates with output that contains {{coord}}
"Coord", "Coord/sandbox",
"NRHP row", "NRHP row/sandbox",
"WikidataCoord", "WikidataCoord/sandbox", "Wikidatacoord", "Wikidata coord"
}
}
-- Error messages
L10n.error = {
badDisplayPara = "Invalid display parameter",
noCoords = "Coordinates must be specified on Wikidata or in |" .. ( type(L10n.para.coord)== 'table' and L10n.para.coord[1] or L10n.para.coord ) .. "=",
wikidataCoords = "Coordinates not found on Wikidata",
noCircleCoords = "Circle centre coordinates must be specified, or available via Wikidata",
negativeRadius = "Circle radius must be a positive number",
noRadius = "Circle radius must be specified",
negativeEdges = "Circle edges must be a positive number",
noSwitchPara = "Found only one switch value in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
oneSwitchLabel = "Found only one label in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
noSwitchLists = "At least one parameter must have a SWITCH: list",
switchMismatches = "All SWITCH: lists must have the same number of values",
-- "%s" and "%d" tokens will be replaced with strings and numbers when used
oneSwitchValue = "Found only one switch value in |%s=",
fewerSwitchLabels = "Found %d switch values but only %d labels in |" .. ( type(L10n.para.switch)== 'table' and L10n.para.switch[1] or L10n.para.switch ) .. "=",
noNamedCoords = "No named coordinates found in %s"
}
-- Other strings
L10n.str = {
-- valid values for display parameter, e.g. (|display=inline) or (|display=title) or (|display=inline,title) or (|display=title,inline)
inline = "inline",
title = "title",
dsep = ",", -- separator between inline and title (comma in the example above)
-- valid values for type paramter
line = "line", -- geoline feature (e.g. a road)
shape = "shape", -- geoshape feature (e.g. a state or province)
shapeInverse = "shape-inverse", -- geomask feature (the inverse of a geoshape)
data = "data", -- geoJSON data page on Commons
point = "point", -- single point feature (coordinates)
circle = "circle", -- circular area around a point
named = "named", -- all named coordinates in an article or section
-- Keyword to indicate a switch list. Must NOT use the special characters ^$()%.[]*+-?
switch = "SWITCH",
-- valid values for icon, frame, and plain parameters
affirmedWords = ' '..table.concat({
"add",
"added",
"affirm",
"affirmed",
"include",
"included",
"on",
"true",
"yes",
"y"
}, ' ')..' ',
declinedWords = ' '..table.concat({
"decline",
"declined",
"exclude",
"excluded",
"false",
"none",
"not",
"no",
"n",
"off",
"omit",
"omitted",
"remove",
"removed"
}, ' ')..' '
}
-- Default values for parameters
L10n.defaults = {
display = L10n.str.inline,
text = "Map",
frameWidth = "300",
frameHeight = "200",
frameAlign = "right",
markerColor = "5E74F3",
markerSize = nil,
strokeColor = "#ff0000",
strokeWidth = 6,
edges = 32, -- number of edges used to approximate a circle
overlayBorder = "1px solid white",
overlayHorizontalAlignment = "right",
overlayHorizontalOffset = "0",
overlayVerticalAlignment = "bottom",
overlayVerticalOffset = "0"
}
-- #### End of L10n settings ####
--[[----------------------------------------------------------------------------
Utility methods
----------------------------------------------------------------------------]]--
local util = {}
--[[
Looks up a parameter value based on the id (a key from the L10n.para table) and
optionally a suffix, for parameters that can be suffixed (e.g. type2 is type
with suffix 2).
@param {table} args key-value pairs of parameter names and their values
@param {string} param_id id for parameter name (key from the L10n.para table)
@param {string} [suffix] suffix for parameter name
@returns {string|nil} parameter value if found, or nil if not found
]]--
function util.getParameterValue(args, param_id, suffix)
suffix = suffix or ''
if type( L10n.para[param_id] ) ~= 'table' then
return args[L10n.para[param_id]..suffix]
end
for _i, paramAlias in ipairs(L10n.para[param_id]) do
if args[paramAlias..suffix] then
return args[paramAlias..suffix]
end
end
return nil
end
--[[
Trim whitespace from args, and remove empty args. Also fix control characters.
@param {table} argsTable
@returns {table} trimmed args table
]]--
function util.trimArgs(argsTable)
local cleanArgs = {}
for key, val in pairs(argsTable) do
if type(key) == 'string' and type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val ~= '' then
-- control characters inside json need to be escaped, but stripping them is simpler
-- See also T214984
-- However, *don't* strip control characters from wikitext (text or description parameters) or you'll break strip markers
-- Alternatively it might be better to only strip control char from raw parameter content
if util.matchesParam('text', key) or util.matchesParam('description', key, key:gsub('^%D+(%d+)$', '%1') ) then
cleanArgs[key] = val
else
cleanArgs[key] = val:gsub('%c',' ')
end
end
else
cleanArgs[key] = val
end
end
return cleanArgs
end
--[[
Check if a parameter name matches an unlocalized parameter key
@param {string} key - the unlocalized parameter name to search through
@param {string} name - the localized parameter name to check
@param {string|nil} - an optional suffix to apply to the value(s) from the localization key
@returns {boolean} true if the name matches the parameter, false otherwise
]]--
function util.matchesParam(key, name, suffix)
local param = L10n.para[key]
suffix = suffix or ''
if type(param) == 'table' then
for _, v in pairs(param) do
if (v .. suffix) == name then return true end
end
return false
end
return ((param .. suffix) == name)
end
--[[
Check if a value is affirmed (one of the values in L10n.str.affirmedWords)
@param {string} val Value to be checked
@returns {boolean} true if affirmed, false otherwise
]]--
function util.isAffirmed(val)
if not(val) then return false end
return string.find(L10n.str.affirmedWords, ' '..val..' ', 1, true ) and true or false
end
--[[
Check if a value is declined (one of the values in L10n.str.declinedWords)
@param {string} val Value to be checked
@returns {boolean} true if declined, false otherwise
]]--
function util.isDeclined(val)
if not(val) then return false end
return string.find(L10n.str.declinedWords , ' '..val..' ', 1, true ) and true or false
end
--[[
Check if the name of a template matches the known coord templates or wrappers
(in L10n.template.coord). The name is normalised when checked, so e.g. the names
"Coord", "coord", and " Coord" all return true.
@param {string} name
@returns {boolean} true if it is a coord template or wrapper, false otherwise
]]--
function util.isCoordTemplateOrWrapper(name)
name = mw.text.trim(name)
local inputTitle = mw.title.new(name, 'Template')
if not inputTitle then
return false
end
-- Create (or reuse) mw.title objects for each known coord template/wrapper.
-- Stored in L10n.template.title so that they don't need to be recreated
-- each time this function is called
if not L10n.template.titles then
L10n.template.titles = {}
for _, v in pairs(L10n.template.coord) do
table.insert(L10n.template.titles, mw.title.new(v, 'Template'))
end
end
for _, templateTitle in pairs(L10n.template.titles) do
if mw.title.equals(inputTitle, templateTitle) then
return true
end
end
return false
end
--[[
Recursively extract coord templates which have a name parameter.
@param {string} wikitext
@returns {table} table sequence of coord templates
]]--
function util.extractCoordTemplates(wikitext)
local output = {}
local templates = mw.ustring.gmatch(wikitext, '{%b{}}')
local subtemplates = {}
for template in templates do
local templateName = mw.ustring.match(template, '{{([^}|]+)')
local nameParam = mw.ustring.match(template, "|%s*name%s*=%s*[^}|]+")
if util.isCoordTemplateOrWrapper(templateName) then
if nameParam then table.insert(output, template) end
elseif mw.ustring.find(mw.ustring.sub(template, 2), "{{") then
local subOutput = util.extractCoordTemplates(mw.ustring.sub(template, 2))
for _, t in pairs(subOutput) do
table.insert(output, t)
end
end
end
-- ensure coords are not using title display
for k, v in pairs(output) do
output[k] = mw.ustring.gsub(v, "|%s*display%s*=[^|}]+", "|display=inline")
end
return output
end
--[[
Gets all named coordiates from a page or a section of a page.
@param {string|nil} page Page name, or name#section, to get named coordinates
from. If the name is omitted, i.e. #section or nil or empty string, then
the current page will be used.
@returns {table} sequence of {coord, name, description} tables where coord is
the coordinates in a format suitable for #util.parseCoords, name is a string,
and description is a string (coordinates in a format suitable for displaying
to the reader). If for some reason the name can't be found, the description
is nil and the name contains display-format coordinates.
@throws {L10n.error.noNamedCoords} if no named coordinates are found.
]]--
function util.getNamedCoords(page)
if transcluder == nil then
-- load [[Module:Transcluder]] lazily so it is only transcluded on pages that
-- actually use named coordinates
transcluder = require("Module:Transcluder")
end
local parts = mw.text.split(page or "", "#", true)
local name = parts[1] == "" and mw.title.getCurrentTitle().prefixedText or parts[1]
local section = parts[2]
local pageWikitext = transcluder.get(section and name.."#"..section or name)
local coordTemplates = util.extractCoordTemplates(pageWikitext)
if #coordTemplates == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end
local frame = mw.getCurrentFrame()
local sep = "________"
local expandedContent = frame:preprocess(table.concat(coordTemplates, sep))
local expandedTemplates = mw.text.split(expandedContent, sep)
local namedCoords = {}
for _, expandedTemplate in pairs(expandedTemplates) do
local coord = mw.ustring.match(expandedTemplate, "<span class=\"geo%-dec\".->(.-)</span>")
if coord then
local name = (
-- name specified by a wrapper template, e.g [[Article|Name]]
mw.ustring.match(expandedTemplate, "<span class=\"mapframe%-coord%-name\">(.-)</span>") or
-- name passed into coord template
mw.ustring.match(expandedTemplate, "<span class=\"fn org\">(.-)</span>") or
-- default to the coordinates if the name can't be retrieved
coord
)
local description = name ~= coord and coord
local coord = mw.ustring.gsub(coord, "[° ]", "_")
table.insert(namedCoords, {coord=coord, name=name, description=description})
end
end
if #namedCoords == 0 then error(string.format(L10n.error.noNamedCoords, page or name), 0) end
return namedCoords
end
--[[
Parse coordinate values from the params passed in a GeoHack url (such as
//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1_2_N_3_4_W_ or
//tools.wmflabs.org/geohack/geohack.php?pagename=Example¶ms=1.23_S_4.56_E_ )
or non-url string in the same format (such as `1_2_N_3_4_W_` or `1.23_S_4.56_E_`)
@param {string} coords string containing coordinates
@returns {number, number} latitude, longitude
]]--
function util.parseCoords(coords)
local coordsPatt
if mw.ustring.find(coords, "params=", 1, true) then
-- prevent false matches from page name, e.g. ?pagename=Lorem_S._Ipsum
coordsPatt = 'params=([_%.%d]+[NS][_%.%d]+[EW])'
else
-- not actually a geohack url, just the same format
coordsPatt = '[_%.%d]+[NS][_%.%d]+[EW]'
end
local parts = mw.text.split((mw.ustring.match(coords, coordsPatt) or ''), '_')
local lat_d = tonumber(parts[1])
local lat_m = tonumber(parts[2]) -- nil if coords are in decimal format
local lat_s = lat_m and tonumber(parts[3]) -- nil if coords are either in decimal format or degrees and minutes only
local lat = lat_d + (lat_m or 0)/60 + (lat_s or 0)/3600
if parts[#parts/2] == 'S' then
lat = lat * -1
end
local long_d = tonumber(parts[1+#parts/2])
local long_m = tonumber(parts[2+#parts/2]) -- nil if coords are in decimal format
local long_s = long_m and tonumber(parts[3+#parts/2]) -- nil if coords are either in decimal format or degrees and minutes only
local long = long_d + (long_m or 0)/60 + (long_s or 0)/3600
if parts[#parts] == 'W' then
long = long * -1
end
return lat, long
end
--[[
Get coordinates from a Wikidata item
@param {string} item_id Wikidata item id (Q number)
@returns {number, number} latitude, longitude
@throws {L10n.error.noCoords} if item_id is invalid or the item does not exist
@throws {L10n.error.wikidataCoords} if the the item does not have a P625
statement (coordinates), or it is set to "no value"
]]--
function util.wikidataCoords(item_id)
if not (item_id and mw.wikibase.isValidEntityId(item_id) and mw.wikibase.entityExists(item_id)) then
error(L10n.error.noCoords, 0)
end
local coordStatements = mw.wikibase.getBestStatements(item_id, 'P625')
if not coordStatements or #coordStatements == 0 then
error(L10n.error.wikidataCoords, 0)
end
local hasNoValue = ( coordStatements[1].mainsnak and (coordStatements[1].mainsnak.snaktype == 'novalue' or coordStatements[1].mainsnak.snaktype == 'somevalue') )
if hasNoValue then
error(L10n.error.wikidataCoords, 0)
end
local wdCoords = coordStatements[1]['mainsnak']['datavalue']['value']
return tonumber(wdCoords['latitude']), tonumber(wdCoords['longitude'])
end
--[[
Creates a polygon that approximates a circle
@param {number} lat Latitude
@param {number} long Longitude
@param {number} radius Radius in metres
@param {number} n Number of edges for the polygon
@returns {table} sequence of {latitude, longitude} table sequences, where
latitude and longitude are both numbers
]]--
function util.circleToPolygon(lat, long, radius, n) -- n is number of edges
-- Based on https://github.com/gabzim/circle-to-polygon, ISC licence
local function offset(cLat, cLon, distance, bearing)
local lat1 = math.rad(cLat)
local lon1 = math.rad(cLon)
local dByR = distance / 6378137 -- distance divided by 6378137 (radius of the earth) wgs84
local lat = math.asin(
math.sin(lat1) * math.cos(dByR) +
math.cos(lat1) * math.sin(dByR) * math.cos(bearing)
)
local lon = lon1 + math.atan2(
math.sin(bearing) * math.sin(dByR) * math.cos(lat1),
math.cos(dByR) - math.sin(lat1) * math.sin(lat)
)
return {math.deg(lon), math.deg(lat)}
end
local coordinates = {};
local i = 0;
while i < n do
table.insert(coordinates,
offset(lat, long, radius, (2*math.pi*i*-1)/n)
)
i = i + 1
end
table.insert(coordinates, offset(lat, long, radius, 0))
return coordinates
end
--[[
Get the number of key-value pairs in a table, which might not be a sequence.
@param {table} t
@returns {number} count of key-value pairs
]]--
function util.tableCount(t)
local count = 0
for k, v in pairs(t) do
count = count + 1
end
return count
end
--[[
For a table where the values are all tables, returns either the util.tableCount
of the subtables if they are all the same, or nil if they are not all the same.
@param {table} t
@returns {number|nil} count of key-value pairs of subtable, or nil if subtables
have different counts
]]--
function util.subTablesCount(t)
local count = nil
for k, v in pairs(t) do
if count == nil then
count = util.tableCount(v)
elseif count ~= util.tableCount(v) then
return nil
end
end
return count
end
--[[
Splits a list into a table sequence. The items in the list may be separated by
commas, or by semicolons (if items may contain commas), or by "###" (if items
may contain semicolons).
@param {string} listString
@returns {table} sequence of list items
]]--
function util.tableFromList(listString)
if type(listString) ~= "string" or listString == "" then return nil end
local separator = (mw.ustring.find(listString, "###", 0, true ) and "###") or
(mw.ustring.find(listString, ";", 0, true ) and ";") or ","
local pattern = "%s*"..separator.."%s*"
return mw.text.split(listString, pattern)
end
-- Boolean in outer scope indicating if Kartographer should be able to
-- automatically calculate coordinates (see phab:T227402)
local coordsDerivedFromFeatures = false;
--[[----------------------------------------------------------------------------
Make methods: These take in a table of arguments, and return either a string
or a table to be used in the eventual output.
----------------------------------------------------------------------------]]--
local make = {}
--[[
Makes content to go inside the maplink or mapframe tag.
@param {table} args
@returns {string} tag content
]]--
function make.content(args)
if util.getParameterValue(args, 'raw') then
coordsDerivedFromFeatures = true -- Kartographer should be able to automatically calculate coords from raw geoJSON
return util.getParameterValue(args, 'raw')
end
local content = {}
local argsExpanded = {}
for k, v in pairs(args) do
local index = string.match( k, '^[^0-9]+([0-9]*)$' )
if index ~= nil then
local indexNumber = ''
if index ~= '' then
indexNumber = tonumber(index)
else
indexNumber = 1
end
if argsExpanded[indexNumber] == nil then
argsExpanded[indexNumber] = {}
end
argsExpanded[indexNumber][ string.gsub(k, index, '') ] = v
end
end
for contentIndex, contentArgs in pairs(argsExpanded) do
local argType = util.getParameterValue(contentArgs, "type")
-- Kartographer automatically calculates coords if geolines/shapes are used (T227402)
if not coordsDerivedFromFeatures then
coordsDerivedFromFeatures = ( argType == L10n.str.line or argType == L10n.str.shape ) and true or false
end
if argType == L10n.str.named then
local namedCoords = util.getNamedCoords(util.getParameterValue(contentArgs, "from"))
local typeKey = type(L10n.para.type) == "table" and L10n.para.type[1] or L10n.para.type
local coordKey = type(L10n.para.coord) == "table" and L10n.para.coord[1] or L10n.para.coord
local titleKey = type(L10n.para.title) == "table" and L10n.para.title[1] or L10n.para.title
local descKey = type(L10n.para.description) == "table" and L10n.para.description[1] or L10n.para.description
for _, namedCoord in pairs(namedCoords) do
contentArgs[typeKey] = "point"
contentArgs[coordKey] = namedCoord.coord
contentArgs[titleKey] = namedCoord.name
contentArgs[descKey] = namedCoord.description
content[#content+1] = make.contentJson(contentArgs)
end
else
content[#content + 1] = make.contentJson(contentArgs)
end
end
--Single item, no array needed
if #content==1 then return content[1] end
--Multiple items get placed in a FeatureCollection
local contentArray = '[\n' .. table.concat( content, ',\n') .. '\n]'
return contentArray
end
--[[
Make coordinates from the coord arg, or the id arg, or the current page's
Wikidata item.
@param {table} args
@param {boolean} [plainOutput]
@returns {Mixed} Either:
{number, number} latitude, longitude if plainOutput is true; or
{table} table sequence of longitude, then latitude (gives the required format
for GeoJSON when encoded)
]]--
function make.coords(args, plainOutput)
local coords, lat, long
local frame = mw.getCurrentFrame()
if util.getParameterValue(args, 'coord') then
coords = frame:preprocess( util.getParameterValue(args, 'coord') )
lat, long = util.parseCoords(coords)
else
lat, long = util.wikidataCoords(util.getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage())
end
if plainOutput then
return lat, long
end
return {[0] = long, [1] = lat}
end
--[[
Makes a table of coordinates that approximate a circle.
@param {table} args
@returns {table} sequence of {latitude, longitude} table sequences, where
latitude and longitude are both numbers
@throws {L10n.error.noCircleCoords} if centre coordinates are not specified
@throws {L10n.error.noRadius} if radius is not specified
@throws {L10n.error.negativeRadius} if radius is negative or zero
@throws {L10n.error.negativeEdges} if edges is negative or zero
]]--
function make.circleCoords(args)
local lat, long = make.coords(args, true)
local radius = util.getParameterValue(args, 'radius')
if not radius then
radius = util.getParameterValue(args, 'radiusKm') and tonumber(util.getParameterValue(args, 'radiusKm'))*1000
if not radius then
radius = util.getParameterValue(args, 'radiusMi') and tonumber(util.getParameterValue(args, 'radiusMi'))*1609.344
if not radius then
radius = util.getParameterValue(args, 'radiusFt') and tonumber(util.getParameterValue(args, 'radiusFt'))*0.3048
end
end
end
local edges = util.getParameterValue(args, 'edges') or L10n.defaults.edges
if not lat or not long then
error(L10n.error.noCircleCoords, 0)
elseif not radius then
error(L10n.error.noRadius, 0)
elseif tonumber(radius) <= 0 then
error(L10n.error.negativeRadius, 0)
elseif tonumber(edges) <= 0 then
error(L10n.error.negativeEdges, 0)
end
return util.circleToPolygon(lat, long, radius, tonumber(edges))
end
--[[
Makes JSON data for a feature
@param contentArgs args for this feature. Keys must be the non-suffixed version
of the parameter names, i.e. use type, stroke, fill,... rather than type3,
stroke3, fill3,...
@returns {string} JSON encoded data
]]--
function make.contentJson(contentArgs)
local data = {}
if util.getParameterValue(contentArgs, 'type') == L10n.str.point or util.getParameterValue(contentArgs, 'type') == L10n.str.circle then
local isCircle = util.getParameterValue(contentArgs, 'type') == L10n.str.circle
data.type = "Feature"
data.geometry = {
type = isCircle and "LineString" or "Point",
coordinates = isCircle and make.circleCoords(contentArgs) or make.coords(contentArgs)
}
data.properties = {
title = util.getParameterValue(contentArgs, 'title') or mw.getCurrentFrame():getParent():getTitle()
}
if isCircle then
-- TODO: This is very similar to below, should be extracted into a function
data.properties.stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor
data.properties["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth
local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity')
if strokeOpacity then
data.properties['stroke-opacity'] = tonumber(strokeOpacity)
end
local fill = util.getParameterValue(contentArgs, 'fill')
if fill then
data.properties.fill = fill
local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity')
data.properties['fill-opacity'] = fillOpacity and tonumber(fillOpacity) or 0.6
end
else -- is a point
local markerSymbol = util.getParameterValue(contentArgs, 'marker') or L10n.defaults.marker
-- allow blank to be explicitly specified, for overriding infoboxes or other templates with a default value
if markerSymbol ~= "blank" then
data.properties["marker-symbol"] = markerSymbol
end
data.properties["marker-color"] = util.getParameterValue(contentArgs, 'markerColor') or L10n.defaults.markerColor
data.properties["marker-size"] = util.getParameterValue(contentArgs, 'markerSize') or L10n.defaults.markerSize
end
else
data.type = "ExternalData"
if util.getParameterValue(contentArgs, 'type') == L10n.str.data or util.getParameterValue(contentArgs, 'from') then
data.service = "page"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.line then
data.service = "geoline"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shape then
data.service = "geoshape"
elseif util.getParameterValue(contentArgs, 'type') == L10n.str.shapeInverse then
data.service = "geomask"
end
if util.getParameterValue(contentArgs, 'id') or (not (util.getParameterValue(contentArgs, 'from')) and mw.wikibase.getEntityIdForCurrentPage()) then
data.ids = util.getParameterValue(contentArgs, 'id') or mw.wikibase.getEntityIdForCurrentPage()
else
data.title = util.getParameterValue(contentArgs, 'from')
end
data.properties = {
stroke = util.getParameterValue(contentArgs, 'strokeColor') or L10n.defaults.strokeColor,
["stroke-width"] = tonumber(util.getParameterValue(contentArgs, 'strokeWidth')) or L10n.defaults.strokeWidth
}
local strokeOpacity = util.getParameterValue(contentArgs, 'strokeOpacity')
if strokeOpacity then
data.properties['stroke-opacity'] = tonumber(strokeOpacity)
end
local fill = util.getParameterValue(contentArgs, 'fill')
if fill and (data.service == "geoshape" or data.service == "geomask") then
data.properties.fill = fill
local fillOpacity = util.getParameterValue(contentArgs, 'fillOpacity')
if fillOpacity then
data.properties['fill-opacity'] = tonumber(fillOpacity)
end
end
end
data.properties.title = util.getParameterValue(contentArgs, 'title') or mw.title.getCurrentTitle().text
if util.getParameterValue(contentArgs, 'description') then
data.properties.description = util.getParameterValue(contentArgs, 'description')
end
return mw.text.jsonEncode(data)
end
--[[
Makes attributes for the maplink or mapframe tag.
@param {table} args
@param {boolean} [isTitle] Tag is to be displayed in the title of page rather
than inline
@returns {table<string,string>} key-value pairs of attribute names and values
]]--
function make.tagAttribs(args, isTitle)
local attribs = {}
if util.getParameterValue(args, 'zoom') then
attribs.zoom = util.getParameterValue(args, 'zoom')
end
if util.isDeclined(util.getParameterValue(args, 'icon')) then
attribs.class = "no-icon"
end
if util.getParameterValue(args, 'type') == L10n.str.point and not coordsDerivedFromFeatures then
local lat, long = make.coords(args, 'plainOutput')
attribs.latitude = tostring(lat)
attribs.longitude = tostring(long)
end
if util.isAffirmed(util.getParameterValue(args, 'frame')) and not(isTitle) then
attribs.width = util.getParameterValue(args, 'frameWidth') or L10n.defaults.frameWidth
attribs.height = util.getParameterValue(args, 'frameHeight') or L10n.defaults.frameHeight
if util.getParameterValue(args, 'frameCoordinates') then
local frameLat, frameLong = util.parseCoords(util.getParameterValue(args, 'frameCoordinates'))
attribs.latitude = frameLat
attribs.longitude = frameLong
else
if util.getParameterValue(args, 'frameLatitude') then
attribs.latitude = util.getParameterValue(args, 'frameLatitude')
end
if util.getParameterValue(args, 'frameLongitude') then
attribs.longitude = util.getParameterValue(args, 'frameLongitude')
end
end
if not attribs.latitude and not attribs.longitude and not coordsDerivedFromFeatures then
local success, lat, long = pcall(util.wikidataCoords, util.getParameterValue(args, 'id') or mw.wikibase.getEntityIdForCurrentPage())
if success then
attribs.latitude = tostring(lat)
attribs.longitude = tostring(long)
end
end
if util.getParameterValue(args, 'frameAlign') then
attribs.align = util.getParameterValue(args, 'frameAlign')
end
if util.isAffirmed(util.getParameterValue(args, 'plain')) then
attribs.frameless = "1"
else
attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text
end
else
attribs.text = util.getParameterValue(args, 'text') or L10n.defaults.text
end
return attribs
end
--[[
Makes maplink wikitext that will be located in the top-right of the title of the
page (the same place where coords with |display=title are positioned).
@param {table} args
@param {string} tagContent Content for the maplink tag
@returns {string}
]]--
function make.titleOutput(args, tagContent)
local titleTag = mw.text.tag('maplink', make.tagAttribs(args, true), tagContent)
local spanAttribs = {
style = "font-size: small;",
id = "coordinates"
}
return mw.text.tag('span', spanAttribs, titleTag)
end
--[[
Makes maplink or mapframe wikitext that will be located inline.
@param {table} args
@param {string} tagContent Content for the maplink tag
@returns {string}
]]--
function make.inlineOutput(args, tagContent)
local tagName = 'maplink'
if util.getParameterValue(args, 'frame') then
tagName = 'mapframe'
end
return mw.text.tag(tagName, make.tagAttribs(args), tagContent)
end
--[[
Makes the HTML required for the swicther to work, including the templatestyles
tag.
@param {table} params table sequence of {map, label} tables
@param {string} params{}.map Wikitext for mapframe map
@param {string} params{}.label Label text for swicther option
@param {table} options
@param {string} options.alignment "left" or "center" or "right"
@param {boolean} options.isThumbnail Display in a thumbnail
@param {string} options.width Width of frame, e.g. "200"
@param {string} [options.caption] Caption wikitext for thumnail
@retruns {string} swicther HTML
]]--
function make.switcherHtml(params, options)
options = options or {}
local frame = mw.getCurrentFrame()
local styles = frame:extensionTag{
name = "templatestyles",
args = {src = "Template:Maplink/styles-multi.css"}
}
local container = mw.html.create("div")
:addClass("switcher-container")
:addClass("mapframe-multi-container")
if options.alignment == "left" or options.alignment == "right" then
container:addClass("float"..options.alignment)
else -- alignment is "center"
container:addClass("center")
end
for i = 1, #params do
container
:tag("div")
:wikitext(params[i].map)
:tag("span")
:addClass("switcher-label")
:css("display", "none")
:wikitext(mw.text.trim(params[i].label))
end
if not options.isThumbnail then
return styles .. tostring(container)
end
local classlist = container:getAttr("class")
classlist = mw.ustring.gsub(classlist, "%a*"..options.alignment, "")
container:attr("class", classlist)
local outerCountainer = mw.html.create("div")
:addClass("mapframe-multi-outer-container")
:addClass("mw-kartographer-container")
:addClass("thumb")
if options.alignment == "left" or options.alignment == "right" then
outerCountainer:addClass("t"..options.alignment)
else -- alignment is "center"
outerCountainer
:addClass("tnone")
:addClass("center")
end
outerCountainer
:tag("div")
:addClass("thumbinner")
:css("width", options.width.."px")
:node(container)
:node(options.caption and mw.html.create("div")
:addClass("thumbcaption")
:wikitext(options.caption)
)
return styles .. tostring(outerCountainer)
end
--[[
Makes the HTML required for an overlay map to work
tag.
@param {string} overlayMap wikitext for the overlay map
@param {string} baseMap wikitext for the base map
@param {table} options various styling/display options
@param {string} options.align "left" or "center" or "right"
@param {string|number} options.width Width of the base map, e.g. "300"
@param {string|number} options.width Height of the base map, e.g. "200"
@param {string} options.border Border style for the overlayed map, e.g. "1px solid white"
@param {string} options.horizontalAlignment Horizontal alignment for overlay map, "left" or "right"
@param {string|number} options.horizontalOffset Horizontal offset in pixels from the alignment edge, e.g "10"
@param {string} options.verticalAlignment Vertical alignment for overlay map, "top" or "bottom"
@param {string|number} options.verticalOffset Vertical offset in pixels from the alignment edge, e.g. is "10"
@param {boolean} options.isThumbnail Display in a thumbnail
@param {string} [options.caption] Caption wikitext for thumnail
@retruns {string} HTML for basemap with overlay
]]--
function make.overlayHtml(overlayMap, baseMap, options)
options = options or {}
local containerFloatClass = "float"..(options.align or "none")
if options.align == "center" then
containerFloatClass = "center"
end
local containerStyle = {
position = "relative",
width = options.width .. "px",
height = options.height .. "px",
overflow = "hidden" -- mobile/minerva tends to add scrollbars for a couple of pixels
}
if options.align == "center" then
containerStyle["margin-left"] = "auto"
containerStyle["margin-right"] = "auto"
end
local container = mw.html.create("div")
:addClass("mapframe-withOverlay-container")
:addClass(containerFloatClass)
:addClass("noresize")
:css(containerStyle)
local overlayStyle = {
position = "absolute",
["z-index"] = "1",
border = options.border or "1px solid white"
}
if options.horizontalAlignment == "right" then
overlayStyle.right = options.horizontalOffset .. "px"
else
overlayStyle.left = options.horizontalOffset .. "px"
end
if options.verticalAlignment == "bottom" then
overlayStyle.bottom = options.verticalOffset .. "px"
else
overlayStyle.top = options.verticalOffset .. "px"
end
local overlayDiv = mw.html.create("div")
:css(overlayStyle)
:wikitext(overlayMap)
container
:node(overlayDiv)
:wikitext(baseMap)
if not options.isThumbnail then
return tostring(container)
end
local classlist = container:getAttr("class")
classlist = mw.ustring.gsub(classlist, "%a*"..options.align, "")
container:attr("class", classlist)
local outerCountainer = mw.html.create("div")
:addClass("mapframe-withOverlay-outerContainer")
:addClass("mw-kartographer-container")
:addClass("thumb")
if options.align == "left" or options.align == "right" then
outerCountainer:addClass("t"..options.align)
else -- alignment is "center"
outerCountainer
:addClass("tnone")
:addClass("center")
end
outerCountainer
:tag("div")
:addClass("thumbinner")
:css("width", options.width.."px")
:node(container)
:node(options.caption and mw.html.create("div")
:addClass("thumbcaption")
:wikitext(options.caption)
)
return tostring(outerCountainer)
end
--[[----------------------------------------------------------------------------
Package to be exported, i.e. methods which will available to templates and
other modules.
----------------------------------------------------------------------------]]--
local p = {}
-- Entry point for templates
function p.main(frame)
local parent = frame.getParent(frame)
-- Check for overlay option
local overlay = util.getParameterValue(parent.args, 'overlay')
local hasOverlay = overlay and mw.text.trim(overlay) ~= ""
-- Check for switch option
local switch = util.getParameterValue(parent.args, 'switch')
local isMulti = switch and mw.text.trim(switch) ~= ""
-- Create output by choosing method to suit options
local output
if hasOverlay then
output = p.withOverlay(parent.args)
elseif isMulti then
output = p.multi(parent.args)
else
output = p._main(parent.args)
end
-- Preprocess output before returning it
return frame:preprocess(output)
end
-- Entry points for modules
function p._main(_args)
local args = util.trimArgs(_args)
local tagContent = make.content(args)
local display = mw.text.split(util.getParameterValue(args, 'display') or L10n.defaults.display, '%s*' .. L10n.str.dsep .. '%s*')
local displayInTitle = display[1] == L10n.str.title or display[2] == L10n.str.title
local displayInline = display[1] == L10n.str.inline or display[2] == L10n.str.inline
local output
if displayInTitle and displayInline then
output = make.titleOutput(args, tagContent) .. make.inlineOutput(args, tagContent)
elseif displayInTitle then
output = make.titleOutput(args, tagContent)
elseif displayInline then
output = make.inlineOutput(args, tagContent)
else
error(L10n.error.badDisplayPara)
end
return output
end
function p.multi(_args)
local args = util.trimArgs(_args)
if not args[L10n.para.switch] then error(L10n.error.noSwitchPara, 0) end
local switchParamValue = util.getParameterValue(args, 'switch')
local switchLabels = util.tableFromList(switchParamValue)
if #switchLabels == 1 then error(L10n.error.oneSwitchLabel, 0) end
local mapframeArgs = {}
local switchParams = {}
for name, val in pairs(args) do
-- Copy to mapframeArgs, if not the switch labels or a switch parameter
if val ~= switchParamValue and not string.match(val, "^"..L10n.str.switch..":") then
mapframeArgs[name] = val
end
-- Check if this is a param to switch. If so, store the name and switch
-- values in switchParams table.
local switchList = string.match(val, "^"..L10n.str.switch..":(.+)")
if switchList ~= nil then
local values = util.tableFromList(switchList)
if #values == 1 then
error(string.format(L10n.error.oneSwitchValue, name), 0)
end
switchParams[name] = values
end
end
if util.tableCount(switchParams) == 0 then
error(L10n.error.noSwitchLists, 0)
end
local switchCount = util.subTablesCount(switchParams)
if not switchCount then
error(L10n.error.switchMismatches, 0)
elseif switchCount > #switchLabels then
error(string.format(L10n.error.fewerSwitchLabels, switchCount, #switchLabels), 0)
end
-- Ensure a plain frame will be used (thumbnail will be built by the
-- make.switcherHtml function if required, so that switcher options are
-- inside the thumnail)
mapframeArgs.plain = "yes"
local switcher = {}
for i = 1, switchCount do
local label = switchLabels[i]
for name, values in pairs(switchParams) do
mapframeArgs[name] = values[i]
end
table.insert(switcher, {
map = p._main(mapframeArgs),
label = "Show "..label
})
end
return make.switcherHtml(switcher, {
alignment = args["frame-align"] or "right",
isThumbnail = (args.frame and not args.plain) and true or false,
width = args["frame-width"] or L10n.defaults.frameWidth,
caption = args.text
})
end
function p.withOverlay(_args)
-- Get and trim wikitext for overlay map
local overlayMap = _args.overlay
if type(overlayMap) == 'string' then
overlayMap = overlayMap:match('^%s*(.-)%s*$')
end
local isThumbnail = (util.getParameterValue(_args, "frame") and not util.getParameterValue(_args, "plain")) and true or false
-- Get base map using the _main function, as a plain map
local args = util.trimArgs(_args)
args.plain = "yes"
local basemap = p._main(args)
-- Extract overlay options from args
local overlayOptions = {
width = util.getParameterValue(args, "frameWidth") or L10n.defaults.frameWidth,
height = util.getParameterValue(args, "frameHeight") or L10n.defaults.frameHeight,
align = util.getParameterValue(args, "frameAlign") or L10n.defaults.frameAlign,
border = util.getParameterValue(args, "overlayBorder") or L10n.defaults.overlayBorder,
horizontalAlignment = util.getParameterValue(args, "overlayHorizontalAlignment") or L10n.defaults.overlayHorizontalAlignment,
horizontalOffset = util.getParameterValue(args, "overlayHorizontalOffset") or L10n.defaults.overlayHorizontalOffset,
verticalAlignment = util.getParameterValue(args, "overlayVerticalAlignment") or L10n.defaults.overlayVerticalAlignment,
verticalOffset = util.getParameterValue(args, "overlayVerticalOffset") or L10n.defaults.overlayVerticalOffset,
isThumbnail = isThumbnail,
caption = util.getParameterValue(args, "text") or L10n.defaults.text
}
-- Make the HTML for the overlaying maps
return make.overlayHtml(overlayMap, basemap, overlayOptions)
end
return p
f05a265dfd758f11fbf3c621b1711e277c8df1f0
Template:Portal template list
10
878
1946
2023-03-24T21:45:51Z
wikipedia>Buaidh
0
'''Templates that configure links''' {{Div col|colwidth=20em}} * {{tl|Portal}} * {{tl|Portal bar}} * {{tl|Portal-inline}} * {{tl|Pbox}} * {{tl|Portals}} * {{tl|Portals browsebar}} * {{tl|Related portals}} * {{tl|Wikimedia for portals}} {{Div col end}}
wikitext
text/x-wiki
{{navbar|Portal template list|style=float:right}}
'''Portal content templates'''
* To display "selected content" on the portal main page
** {{tl|Transclude list item excerpts as random slideshow}}—transcludes excerpts from [[WP:RECOG|recognized content lists]], which are populated by a bot.
** {{tl|Transclude random subpage}}—transcludes random portal subpage.
** {{tl|Random portal component}}—transcludes random portal subpage.
** {{tl|Random subpage}}—transcludes random portal subpages.
** {{tl|Portal pictures}}—transcludes a slideshow of pictures, utilizing a single-page gallery.
* To organize "selected content" on subpages
** {{tl|Numbered subpages}}—outputs an automatic index, transcluding numbered subpages.
** {{tl|Portal subpage}}—outputs a box linking to and transcluding a single subpage.
** {{tl|Portal subpage inline}}—outputs an unordered list item linking to and transcluding a single subpage.
'''Main portal page formatting templates'''
{{Div col|colwidth=20em}}
* {{tl|Box-header}}
* {{tl|Box-header-plain}}
* {{tl|Box-header-round}}
* {{tl|Box-header-square}}
* {{tl|Box-header-watch}}
* {{tl|Box-footer}}
{{Div col end}}
'''Templates that configure links'''
{{Div col|colwidth=20em}}
* {{tl|Portal}}
* {{tl|Portal bar}}
* {{tl|Portal-inline}}
* {{tl|Pbox}}
* {{tl|Portals}}
* {{tl|Portals browsebar}}
* {{tl|Related portals}}
* {{tl|Wikimedia for portals}}
{{Div col end}}
'''Selected page templates, used on subpages of older portals'''
{{Div col|colwidth=20em}}
* {{tl|Selected article}}
* {{tl|Selected biography}}
* {{tl|Selected business}}
* {{tl|Selected DYK}}
* {{tl|Selected ingredient}}
* {{tl|Selected location}}
* {{tl|Selected picture}}
* {{tl|Selected product}}
* {{tl|Selected publication}}
* {{tl|Selected quote}}
* {{tl|Selected recipe}}
* {{tl|Selected X}}
{{Div col end}}
'''Related templates'''
* {{tl|Project template list}}
{{Portal templates navbox}}<noinclude>
[[Category:Wikipedia Portal templates| ]]
[[Category:Documentation see also templates]]
</noinclude>
fc2451e4103312ad0baf2194d4436a1ad71a7dbe
Template:Iem4ibx
10
1415
2750
2023-03-26T19:09:46Z
w>Hike395
0
invoke module directly
wikitext
text/x-wiki
{{#if:{{{1|}}}|{{#invoke:Ordnance Survey coordinates|oscoord|{{{1}}}_region:IE_scale:25000|{{{1}}}|name={{{name|}}}}}}}<noinclude>
<!--add categories and interwiki links to the /doc page-->
{{documentation}}
</noinclude>
3f5b1123b2bd476eca128339e3b30fb965eb8999
Template:Tlbare
10
1567
2902
2023-03-26T20:27:49Z
w>HouseBlaster
0
HouseBlaster moved page [[Template:Tlbare]] to [[Template:Template link bare]]: expand name per [[WP:TG]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link bare]]
{{Redirect category shell|
{{R from move}}
}}
b5bed213fb2ee7eaca44e09e0bb992a830ef6eb9
Template:Template link bare
10
1572
2907
2023-03-26T20:27:49Z
w>HouseBlaster
0
HouseBlaster moved page [[Template:Tlbare]] to [[Template:Template link bare]]: expand name per [[WP:TG]]
wikitext
text/x-wiki
{{#if:{{str endswith|{{{1}}}|%}} <!--(i.e. if {{{1}}} is a percentage)-->
| [[Template:{{{2}}}|<span style="font-size:{{{1}}};">{{{3|{{{2}}}}}}</span>]]
| [[Template:{{{1}}}|{{{2|{{{1}}}}}}]]
}}<noinclude>
{{Documentation}}
</noinclude>
5ca13cb038217d14c7c9fc35d39896f75bd26a71
Template:Efn-lr
10
574
1296
2023-03-27T17:59:55Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Efn-lr]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2501 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{efn|name={{{name|}}}|group=lower-roman|reference={{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
a84a2c4c65dd07813f0d83c1e99364ae256e13d3
Template:Div col/styles.css
10
46
87
2023-03-29T18:11:31Z
wikipedia>Jonesey95
0
Attempt to copy plainlist class from [[MediaWiki:Common.css]]. I don't know if this actually works.
text
text/plain
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
/* Unbulleted lists */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
76c2c0a042b9164cff638cd44af5ab129702c141
Template:Self-reference
10
1291
2626
2023-03-30T11:42:06Z
w>Mclay1
0
Mclay1 moved page [[Template:Self reference]] to [[Template:Self-reference]]: grammatically correct hyphen
wikitext
text/x-wiki
{{#switch:{{{2|NONE}}}
|NONE|hatnote|hat={{Hatnote|extraclasses=plainlinks selfreference noprint|1={{{1}}}}}
|inline=<div class="plainlinks selfreference" style="display:inline; font-style: italic;"><!--Same style as class hatnote.-->{{{1}}}</div>
|<!--Matching the empty string here for unprintworthy content is for backwards compatibility with the 2006-2008 version. Do not depend on it!-->=<div style="display:inline;" class="plainlinks selfreference noprint">{{{1}}}</div>
|#default={{error|Second parameter must be <code>hatnote</code>, <code>hat</code>, or <code>inline</code>}}
}}<noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES THE /doc SUBPAGE, AND INTERWIKIS TO WIKIDATA, THANKS -->
</noinclude>
0c4a08f880070e918c3edcaa50cc493f99841e98
Template:Selfref
10
1290
2625
2023-03-30T20:46:51Z
w>Xqbot
0
Bot: Fixing double redirect to [[Template:Self-reference]]
wikitext
text/x-wiki
#REDIRECT [[Template:Self-reference]]
{{Redirect category shell|
{{R from template shortcut}}
{{R from alternative spelling}}
{{R from move}}
}}
030c372ed4f83fa2e03a4c0ccdd4ad3cef8ec9e6
Template:Pad
10
849
1880
2023-04-01T12:47:58Z
wikipedia>Andrybak
0
add parameter "css"
wikitext
text/x-wiki
<includeonly><span style="padding-left:{{{1|1.0em}}};{{{css|}}}"> </span></includeonly><noinclude>{{Documentation}}</noinclude>
bdda233a3029c939fb85aee8b2e129f795d1a4e3
Module:Location map/doc
828
1643
3004
2023-04-01T15:49:10Z
wikipedia>Paine Ellsworth
0
High-use template + fmt
wikitext
text/x-wiki
{{Module rating|protected}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{High-use}}
{{Lua|Module:Arguments}}
{{Uses TemplateStyles|Module:Location map/styles.css}}
== Usage ==
This module implements the {{tl|Location map}} and {{tl|Location map~}} templates. Please see the template pages for usage instructions.
== Known issues ==
Since the introduction of support for different captions when multiple maps are utilized, an issue has been highlighted.<br />
Some infobox templates use their caption parameter directly instead of passing it to this module. This results in the display of a "##" between the two captions.<br />
If you are unable to edit the infobox template, contact {{u|Bellezzasolo}}.
== Tracking/maintenance categories ==
* [[:Category:Location maps with possible errors|Category:Location maps with possible errors]]
** {{clc|Location maps with different longitude and latitude precisions}}
** {{clc|Location maps with marks outside map and outside parameter not set}}
** {{clc|Location maps with a name containing a pipe}}
** {{clc|Location maps with removed parameters}}
** {{clc|Location maps with negative degrees and minutes or seconds}}
* Tracking for a change (see talk): {{clc|Pages using location map with a double number sign in the caption}}
== See also ==
* [https://en.wikipedia.org/wiki/Special:PrefixIndex?prefix=Location+map&namespace=828 All Module: pages beginning with "Location map"]
* [[Module:Location map/info]]
* [[Module:Location map/multi]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Location map modules]]
[[Category:Modules that add a tracking category]]
}}</includeonly>
6f1bdaf5bdd99aa938bc7aade80cdddc02494599
Template:Right
10
1349
2684
2023-04-02T11:15:20Z
w>Jonesey95
0
No need to track this legitimate, documented usage. This category was re-added without discussion, and it appears to not be useful or needed.
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#ifeq:{{{1|a}}}|{{{1|b}}}
|<div style="float:right;">{{{1|}}}</div>
|style="text-align:right"{{{{{|safesubst:}}}!}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
83b90586698a3aaca70d6c2d5f4a9fcdbdb2d946
Help:Infobox/user style
12
72
139
2023-04-03T14:00:08Z
wikipedia>Maddy from Celeste
0
blatant self-promotion
wikitext
text/x-wiki
{{{heading|
==Infoboxes and user style ==
}}}
Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers.
To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself:
<syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight>
Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]:
<syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight>
Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article. There is a userscript which removes infoboxes but moves the images contained to separate thumbnails: [[User:Maddy from Celeste/disinfobox.js]].<!--
Needs Special:Mypage/common.js options for:
* Making infoboxes collapsible
** Making them auto-collapsed
* Moving infoboxes to bottom of page
--><noinclude>
{{Documentation|content=
This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant.
As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code>
}}
</noinclude>
ba4dac68eb2bdc49a32f2a11b9afd52381bf06b5
Template:Stub/doc
10
760
1695
2023-04-03T21:12:54Z
wikipedia>Pols12
0
TemplateData: Undid issuing empty string param
wikitext
text/x-wiki
{{documentation subpage}}
<!-- Intentionally blank: interlanguage links for [[Template:Stub]] are now held at [[d:Special:ItemByTitle/enwiki/Template:Stub]]. -->
===TemplateData===
{{TemplateData header}}
<templatedata>
{
"description": "Standard template used for sorting articles into stubs.",
"params": {},
"format": "inline"
}
</templatedata>
4e08e86ecdef137b8a8a26bf6766217f8fc8e0ce
Module:LuaCall
828
631
1422
2023-04-04T19:01:48Z
Lemondoge
43
Modified code formatting
Scribunto
text/plain
local p={}
function p.main(frame)
local parent = frame.getParent(frame) or {}
local reserved_value = {}
local reserved_function, reserved_contents
for k, v in pairs(parent.args or {}) do
_G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table
end
for k, v in pairs(frame.args or {}) do
_G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table
end
--- Alas Scribunto does NOT implement coroutines, according to
--- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format
--- this will not stop us from trying to implement one single lousy function call
if _G[1] then
reserved_function, reserved_contents = mw.ustring.match(_G[1], "^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$")
end
if reserved_contents then
local reserved_counter = 0
repeat
reserved_counter = reserved_counter + 1
reserved_value[reserved_counter] = _G[mw.ustring.match(reserved_contents, "([^%,]+)")]
reserved_contents = mw.ustring.match(reserved_contents, "[^%,]+,(.*)$")
until not reserved_contents
end
local reserved_arraypart = _G
while mw.ustring.match(reserved_function, "%.") do
reserved_functionpart, reserved_function = mw.ustring.match(reserved_function, "^(%a[^%.]*)%.(.*)$")
reserved_arraypart = reserved_arraypart[reserved_functionpart]
end
local reserved_call = reserved_arraypart[reserved_function]
if type(reserved_call) ~= "function" then
return tostring(reserved_call)
else
reserved_output = {reserved_call(unpack(reserved_value))}
return reserved_output[reserved_return or 1]
end
end
local function tonumberOrString(v)
return tonumber(v) or v:gsub("^\\", "", 1)
end
local function callWithTonumberOrStringOnPairs(f, ...)
local args = {}
for _, v in ... do
table.insert(args, tonumberOrString(v))
end
return (f(unpack(args)))
end
--[[
------------------------------------------------------------------------------------
-- ipairsAtOffset
-- This is an iterator for arrays. It can be used like ipairs, but with
-- specified i as first index to iterate. i is an offset from 1
--
------------------------------------------------------------------------------------
--]]
local function ipairsAtOffset(t, i)
local f, s, i0 = ipairs(t)
return f, s, i0+i
end
local function get(s)
local G = _G; for _ in mw.text.gsplit(
mw.text.trim(s, '%s'), '%s*%.%s*'
) do
G = G[_]
end
return G
end
--[[
------------------------------------------------------------------------------------
-- call
--
-- This function is usually useful for debugging template parameters.
-- Prefix parameter with backslash (\) to force interpreting parameter as string.
-- The leading backslash will be removed before passed to Lua function.
--
-- Example:
-- {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log('a', 1, 2, 3)
-- {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject('a', 321, '321', ' \\321 ')
--
-- This example show the debugging to see which Unicode characters are allowed in template parameters,
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0
--
------------------------------------------------------------------------------------
--]]
function p.call(frame)
return callWithTonumberOrStringOnPairs(get(frame.args[1]),
ipairsAtOffset(frame.args, 1)
)
end
--local TableTools = require('Module:TableTools')
--[[
------------------------------------------------------------------------------------
-- get
--
-- Example:
-- {{#invoke:LuaCall|get| math.pi }} will return value of math.pi
-- {{#invoke:LuaCall|get|math|pi}} will return value of math.pi
-- {{#invoke:LuaCall|get| math |pi}} will return value of _G[' math '].pi
-- {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[' math.pi ']
-- {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a['5'].c
-- {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c
--
------------------------------------------------------------------------------------
--]]
function p.get(frame)
-- #frame.args always return 0, regardless of number of unnamed
-- template parameters, so check manually instead
if frame.args[2] == nil then
-- not do tonumber() for this args style,
-- always treat it as string,
-- so 'obj.1' will mean obj['1'] rather obj[1]
return get(frame.args[1])
else
local G = _G
for _, v in ipairs(frame.args) do
G = G[tonumberOrString(v)]
end
return G
end
end
--[[
------------------------------------------------------------------------------------
-- invoke
--
-- This function is used by Template:Invoke
--
------------------------------------------------------------------------------------
--]]
function p.invoke(frame)
local pframe, usedpargs = frame:getParent(), {}
-- get module and function names from parent args if not provided
local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table})
if not pfargs[1] then
pfargs[1], usedpargs[1] = pframe.args[1], true
if not pfargs[2] then
pfargs[2], usedpargs[2] = pframe.args[2], true
end
elseif not pfargs[2] then
pfargs[2], usedpargs[1] = pframe.args[1], true
end
-- repack sequential args
for i, v in ipairs(pframe.args) do
if not usedpargs[i] then
pfargs:insert(v)
usedpargs[i] = true
end
end
-- copy other args
for k, v in pairs(pframe.args) do
if not pfargs[k] and not usedpargs[k] then
pfargs[k], usedpargs[k] = v, true
end
end
-- #invoke off parent frame so the new frame has the same parent
return pframe:callParserFunction{name = '#invoke', args = pfargs}
end
return p
d6ec342627682bf90e61bbad921fcc6190f2e090
Module:Infobox mapframe/doc
828
1737
3287
2023-04-05T14:38:29Z
wikipedia>Paine Ellsworth
0
High-use template and update /doc
wikitext
text/x-wiki
{{Module rating|beta}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua sidebar}}
== Usage ==
Module that automatically makes a mapframe suitable for an infobox automatically, with minimal user input.
===Generic usage===
Just use the template {{tl|Infobox mapframe}}, following the documentation there. This module may also be imported to another Lua module.
===Automatic maps in infoboxes===
:''Example edits: [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison&type=revision&diff=962824818&oldid=782742135 Template:Infobox prison], [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison%2Fdoc&type=revision&diff=962825435&oldid=768262729 Template:Infobox prison/doc]''
Edit the infobox template (or its sandbox).
Add lines like the following examples to the infobox. Replace numbers ({{kbd|4}}, or {{kbd|97}} to {{kbd|99}}), with the appropriate number based on how many other image or data parameters are already present.
{|style=width:100%
|-
! If placing near the top of infobox !! If placing at/near the bottom of the infobox
|-
|<pre>
| image4 = {{#invoke:Infobox mapframe|auto}}
| caption4 = {{#invoke:Infobox mapframe|autocaption}}
</pre>
|<pre>
| header97 = {{#if:{{{mapframe|}}}|Location}}
| data98 = {{#invoke:Infobox mapframe|auto}}
| data99 = {{#invoke:Infobox mapframe|autocaption}}
</pre>
|}
If the template has a <code><nowiki>{{#invoke:</nowiki>[[Module:Check for unknown parameters|Check for unknown parameters]]<nowiki>}}</nowiki></code>, add the following parameters:
<pre>
| mapframe | mapframe-area_km2 | mapframe-area_mi2 | mapframe-caption | mapframe-coord | mapframe-coordinates | mapframe-custom | mapframe-frame-coord | mapframe-frame-coordinates | mapframe-frame-height | mapframe-frame-width | mapframe-geomask | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-height | mapframe-id | mapframe-length_km | mapframe-length_mi | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-point | mapframe-shape | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-switcher | mapframe-width | mapframe-wikidata | mapframe-zoom
</pre>
Once this is done, the above parameters will be available to users of the template.
* Defaults values for these parameters can also be specified in the {{kbd|#invoke}} calls above, e.g. <code><nowiki>{{#invoke:Infobox mapframe|auto|mapframe-marker=library}}</nowiki></code> means that the library marker will be used, unless a different value is passed in to the template.
* The maps are off by default, which means maps will not be displayed unless {{para|mapframe|yes}} is present in the template call. To turn maps on by default, in the {{kbd|#invoke}} calls above add {{para|onByDefault|yes}} – which means maps will be displayed unless {{para|mapframe|no}} is present in the template call. {{kbd|onByDefault}} can also be set to a conditional, such as if another parameters is present, e.g. {{para|onByDefault|2=<nowiki>{{#if:{{{pushpin_map|}}}|no|yes}}</nowiki>}}
* Add the new parameters to the document. You can use {{tlx|Infobox mapframe/doc/parameters}}. Specify default values (if any are used in the {{kbd|#invoke}} calls) using by adding parameters in the form {{tt|{{!}}}}''parameter-name''{{tt|{{=}}}}''value''. The default output is shown here collapsed:
{{cot}}
{{Infobox mapframe/doc/parameters}}
{{cob}}
*Parameters can also be added to the TemplateData can also be added by copy-pasting from {{edit|Template:Infobox mapframe/doc/templatedata|Template:Infobox mapframe/doc/templatedata}}
== See also ==
* [[Wikipedia:Mapframe maps in infoboxes]]
* [[Module:Mapframe]] & [[Template:Maplink]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
51cd0f5b193959f102c4be64250d13289a60a5fa
Template:Collapse
10
1064
2326
2023-04-07T02:01:58Z
wikipedia>Izno
0
per tech news
wikitext
text/x-wiki
{| <!-- Template:Collapse --> class="mw-collapsible mw-archivedtalk {{#switch:{{lc:{{{expand|no}}}}}|uncollapse|uncollapsed|expand|expanded|yes|y=mw-uncollapsed|#default=mw-collapsed}} {{{class|}}}" style="{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|display: none;}}background-color: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|silver}}}; {{{{{|safesubst:}}}#switch:{{{float|}}}
| left = margin:0.2em 0.5em 0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: left; clear: {{{clear|left}}}
| right = margin:0.2em 0 0.2em 0.5em; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: right; clear: {{{clear|right}}}
| none = margin:0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|none}}}
| center | centre = margin:0.2em auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|both}}}
| #default = margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}
}}; padding: 1px;"
|-
! style="background-color: {{{background|{{{bg|#F0F2F5}}}}}}; font-size:87%; padding:0.2em 0.3em; text-align: {{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{center|}}}|center|left}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display: inline; font-size: 115%;">{{{2|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div>
|-
| style="border: solid {{{border2|1px silver}}}; padding: {{{padding|8px}}}; background-color: {{{bg2|white}}};" |
<div>{{{content|{{{text|{{{1<noinclude>|{{lorem ipsum|3}}</noinclude>}}}}}}}}}</div>
|}{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|<span class="error noprint">[[Template:collapse]] is not available for use in articles (see [[MOS:COLLAPSE]]).</span>}}<noinclude>
{{Documentation}}
</noinclude>
0ab1d915780bc1110ec074c518c6f94b0bfbc597
Template:Collapse top
10
187
428
2023-04-07T02:02:13Z
wikipedia>Izno
0
per tech news
wikitext
text/x-wiki
<div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section -->
{| <!-- Template:Collapse top --> class="mw-collapsible mw-archivedtalk {{<includeonly>safesubst:</includeonly>#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{<includeonly>safesubst:</includeonly>#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;"
|-
! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}|left|{{<includeonly>safesubst:</includeonly>#if:{{{align|}}}|left|center}}}}; {{<includeonly>safesubst:</includeonly>#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="font-size:115%;{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}||margin:0 4em}}">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div>
{{<includeonly>safesubst:</includeonly>#if:{{{warning|{{{2|}}}}}}
|{{<includeonly>safesubst:</includeonly>!}}-
{{<includeonly>safesubst:</includeonly>!}} style="text-align:center; font-style:italic;" {{<includeonly>safesubst:</includeonly>!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }}
|-
| style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{<includeonly>safesubst:</includeonly>!}}<noinclude>
{{lorem ipsum|3}}
{{Collapse bottom}}
{{Documentation}}
</noinclude>
247cc43d5198baf8804d0926529cbbdd7be91113
Template:High-risk
10
596
1340
2023-04-09T16:46:44Z
wikipedia>Nagsb
0
wikitext
text/x-wiki
#REDIRECT [[Template:High-use]]
{{Rcat shell|
{{R with Wikidata item}}
{{R from merge}}
{{R from template shortcut}}
}}
52c9a8c75748fd2b20183ed6c60e1f3c3a435cc9
Template:Navbar/doc
10
1339
2674
2023-04-11T16:39:57Z
w>Thiemo Kreuz (WMDE)
0
Fix mistake in TemplateData documentation
wikitext
text/x-wiki
{{documentation subpage}}
{{#ifeq:{{BASEPAGENAME}}|Navbar|{{used in system}}}}
{{lua|Module:Navbar}}{{#ifeq:{{BASEPAGENAME}}|VTE|{{tsh|V}}}}
{{tlx|Navbar}} provides a small "view '''·''' talk '''·''' edit" navigation bar. It is primarily used for content-heavy templates and other transcluded content blocks, so that the content inside the template or block is more easily editable {{lang|la|in situ}} where it was found, without having track it down through examining transclusion code. {{tnull|Navbar}}'s extremely high use rate and consequent protection level are because it is integrated as a feature into numerous [[WP:NAVBOX|navigation box]] and [[WP:INFOBOX|infobox]] templates used in millions of articles. It is also a regular feature of many internal-use templates and tables of the Wikipedia, Help, and Template [[WP:NAMESPACE|namespaces]].
==Usage==
===General===
When one of the following examples is placed inside a given [[Wikipedia:Navigation templates|template]] (or block of content used for [[Wikipedia:Transclusion#Selective transclusion|selective transclusion]]), it adds basic navbar navigational functionality:
:<code><nowiki>{{navbar|{{subst:PAGENAME}}|mini=y}}</nowiki></code>
:<code><nowiki>{{navbar|{{subst:PAGENAME}}|plain=y}}</nowiki></code>
:<code><nowiki>{{navbar|{{subst:PAGENAME}}|fontstyle=color: green; font-style: italic;}}</nowiki></code>
The <code><nowiki>{{subst:PAGENAME}}</nowiki></code> will be [[WP:SUBST|substituted]] with the page name of the real location of the content when parsed by the servers. For example, <code><nowiki>{{navbar|Navbar/doc}}</nowiki></code> gives:<br />{{navbar|Navbar/doc}}
When used in content that is selectively transcluded but which is also used as-is in its original location, this template should be wrapped in {{xtag|includeonly|p}} markup, so that it only appears when transcluded.
===Font size and weight ===
Font-size is 88% when used in a topical navbar template or in plain text, and 100% when nested in a navbox or infobox (because those templates' text size is already reduced; the "100%" is relative to the surrounding template's own content, not that of the entire page). The {{para|fontstyle}} parameter can be used to adjust font size as needed (e.g. to reduce font size even more when the template is used inside a block element with a large font size). Do not abuse this to make excessively small text (i.e. less than 85% of the normal page text), since that causes [[MOS:SMALLTEXT|accessibility problems]] for many readers.
In a topical navbar, the weight is "normal"; when nested in a navbox or infobox, it inherits the style of the surrounding content. The middot bullets are bold for better visibility.
=== Block level element ===
The template generates block-level markup with {{tag|div}} tags, and therefore, any surrounding markup cannot include {{tag|span}} tags, which would cause a [[Special:LintErrors/misc-tidy-replacement-issues|div-span-flip]] lint error.
==Examples==
===Required parameters===
*<code><nowiki>{{navbar|Template Name}}</nowiki></code> – the template name is required.
===Optional parameters===
{| class="wikitable"
! Options !! Parameters !! Produces... !! "Shortcut" template
|-
| Basic || <code><nowiki>{{navbar|Template Name}}</nowiki></code> || {{navbar|Navbar/doc}} ||
|-
| Different text || <code><nowiki>{{navbar|Template Name|</nowiki>'''text'''<nowiki>=This template:}}</nowiki></code> || {{navbar|Navbar/doc|text=This template:}} ||
|-
| Without "This box:" text || <code><nowiki>{{navbar|Template Name|</nowiki>'''plain'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|plain=y}} || {{tl|view}}
|-
| Short version || <code><nowiki>{{navbar|Template Name|</nowiki>'''mini'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|mini=y}} || {{tl|v}}
|-
| With brackets || <code><nowiki>{{navbar|Template Name|</nowiki>'''brackets'''<nowiki>=y}}</nowiki></code> || {{navbar|Navbar/doc|brackets=y}} ||
|-
| With font styling examples ([[Span and div|span]]) || <code><nowiki>{{navbar|Template Name|</nowiki>'''fontstyle'''<nowiki>=color: green; font-style: italic;}}</nowiki></code> || {{navbar|Navbar/doc|fontstyle=color: green; font-style: italic;}} ||
|-
| With whole-template styling examples ([[Span and div|div]]) || <code><nowiki>{{navbar|Template Name|</nowiki>'''style'''<nowiki>=float:right; background: Beige; padding: 5px; border: 1px solid;}}</nowiki></code> || {{navbar|Navbar/doc|style=float:right; background: Beige; padding: 5px; border: 1px solid;}} ||
|-
| History, move, and watchlist links || <code><nowiki>{{navbar|template=Template Name|e|t|h|m|w}}</nowiki></code> || {{navbar|template=Navbar/doc|e|t|h|m|w}}
|}
Note that to show the history, move, and watchlist links, {{para|template}} needs to be set to the template value specifically. Individual values can be left out of this list, e.g. <code><nowiki>{{navbar|template=Template Name|h|m|w}}</nowiki></code> will only show the view, history, move, and watchlist links.
===Shortcut templates ===
The <code>mini=y</code> and <code>plain=y</code> parameters can be avoided by using the {{tlx|v}} or {{tlx|view}} templates, respectively, instead.
{{tl|view}} and {{tl|v}} also support changing the shown links, for example only view and edit, or only view and talk:
{| class="wikitable"
|-
! Code
! Result
|-
|{{demo|br=<td>|<nowiki>{{view|template=view/doc}}</nowiki>}}
|-
|{{demo|br=<td>|<nowiki>{{view|template=view/doc|talk}}</nowiki>}}
|-
|{{demo|br=<td>|<nowiki>{{view|template=view/doc|talk|edit}}</nowiki>}}
|-
|{{demo|br=<td>|<nowiki>{{v|template=v/doc}}</nowiki>}}
|-
|{{demo|br=<td>|<nowiki>{{v|template=v/doc|t}}</nowiki>}}
|-
|{{demo|br=<td>|<nowiki>{{v|template=v/doc|t|e}}</nowiki>}}
|}
==Notes==
Navbar is contained within a {{tag|div}} in order to accommodate a horizontal unnumbered list. This means it cannot be placed inside a {{tag|span}} or other inline element, because the [[HTML Tidy]] extension will 'fix' situations where it finds block elements inside inline elements.
==Prepackaged==
;{{tl|Navbar-header}}: Positions {{navbar|Navbar/doc|mini=1}} on the right edge of the line, often used in non-collapsible navbox heading.
;{{tl|Navbar-collapsible}}: For use in conjunction with [[Help:Collapsing|collapsible tables]], floats {{navbar|Navbar/doc|mini=1}} opposite of the [hide]/[show] feature.
==See also==
{{Edit templates}}
Other [[:Category:Internal link templates|internal link templates]], including:
*{{tl|Talk}} – plain talk link
*{{tl|Watch}} – plain link that adds the page to your [[Help:Watchlist|watchlist]]
*[[:Category:Internal template-link templates]]
{{Navigation templates}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "When placed inside a given template, it adds navbar navigational functionality",
"params": {
"1": {
"label": "Template Name",
"description": "The name of the template, so links work correctly",
"type": "string",
"default": "",
"required": true
},
"text": {
"label": "Different text",
"description": "Allows custom text to replace the default 'this box'",
"type": "string",
"default": "This box",
"required": false
},
"plain": {
"label": "Without 'This box:' text",
"description": "Removes 'This box'",
"type": "number",
"default": "0",
"required": false
},
"mini": {
"label": "Short Version",
"description": "Shortens text to V T E",
"type": "number",
"default": "0",
"required": false
},
"brackets": {
"label": "with brackets",
"description": "adds brackets before and after the links",
"type": "number",
"default": "0",
"required": false
},
"fontstyle": {
"label": "Font color",
"description": "Allows you to change the color of the font (in the format color:green)",
"type": "string",
"default": "",
"required": false
},
"style": {
"label": "To float to the side",
"description": "Allows the template to float to the side (format=float:right)",
"type": "string",
"default": "float:left",
"required": false
}
}
}
</templatedata><!---
PLEASE ADD METADATA TO THE <includeonly> SECTION HERE
---><includeonly>{{Sandbox other||
[[Category:Internal link templates]]
}}</includeonly>
46b87a7b308f8ad62d7b601910824a12ed424081
Template:Wikidata fallback link
10
1072
2342
2023-04-15T18:00:04Z
wikipedia>MusikBot II
0
Protected "[[Template:Wikidata fallback link]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 369 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
{{#if:{{#invoke:wd|label|raw|eid={{{1|}}}}}
|{{#ifexist:{{#invoke:wd|title|{{{1|}}}}}
|{{#invoke:wd|label|linked|{{{1|}}}}}
|{{#if:{{#invoke:wd|label|{{{1|}}}}}
|{{#ifexist:{{#invoke:wd|label|{{{1|}}}}}
|{{#invoke:wd|label|{{{1|}}}}}<!--Do not link to label if it targets the wrong article-->
|[[{{#invoke:wd|label|{{{1|}}}}}]]
}}
}}{{#switch:{{{wd|on}}}
|off=
|icon=<span class="noprint metadata ill">[[File:OOjs UI icon edit-ltr-progressive.svg|10px|link=:d:Special:EntityPage/{{{1}}}|Edit on Wikidata]]</span>
|on
|#default=<span class="noprint metadata ill"><small>[[[:d:Special:EntityPage/{{{1}}}|{{#switch:{{{short|{{{s|}}}}}}|yes|y|true|t|on|set|1=d|Wikidata}}]]]</small></span>
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
4ecc9c0b6a3ff7a4df16e1793dfc11b7c649aa45
Module:Portal
828
839
1860
2023-04-17T15:55:14Z
wikipedia>Hike395
0
alphabetize "default image" tracking category
Scribunto
text/plain
--[==[ This module is a Lua implementation of the old {{Portal}} template. As of February 2019 it is used on nearly 7,900,000 articles.
-- Please take care when updating it! It outputs two functions: p.portal, which generates a list of portals, and p.image, which
-- produces the image name for an individual portal.
-- The portal image data is kept in submodules of [[Module:Portal/images]], listed below:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
--
-- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed.
-- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all
-- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed.
]==]
local p = {}
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local function sandboxVersion(s)
return isSandbox and s..'-sand' or s
end
local templatestyles = 'Module:Portal'..sandbox..'/styles.css'
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
-- List of non-talk namespaces which should not be tracked (Talk pages are never tracked)
local badNamespaces = {'user','template','draft','wikipedia'}
-- Check whether to do tracking in this namespace
-- Returns true unless the page is one of the banned namespaces
local function checkTracking(title)
local thisPage = title or mw.title.getCurrentTitle()
if thisPage.isTalkPage then
return false
end
local ns = thisPage.nsText:lower()
for _, v in ipairs(badNamespaces) do
if ns == v then
return false
end
end
return true
end
local function matchImagePage(s)
-- Finds the appropriate image subpage given a lower-case
-- portal name plus the first letter of that portal name.
if type(s) ~= 'string' or #s < 1 then return end
local firstLetter = mw.ustring.sub(s, 1, 1)
local imagePage
if mw.ustring.find(firstLetter, '^[a-z]') then
imagePage = 'Module:Portal/images/' .. firstLetter .. sandbox
else
imagePage = 'Module:Portal/images/other' .. sandbox
end
return mw.loadData(imagePage)[s]
end
local function getAlias(s)
-- Gets an alias from the image alias data page.
local aliasData = mw.loadData('Module:Portal/images/aliases'..sandbox)
for portal, aliases in pairs(aliasData) do
for _, alias in ipairs(aliases) do
if alias == s then
return portal
end
end
end
end
local defaultImage = 'Portal-puzzle.svg|link=|alt='
local function getImageName(s)
-- Gets the image name for a given string.
if type(s) ~= 'string' or #s < 1 then
return defaultImage
end
s = mw.ustring.lower(s)
return matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage
end
-- Function to check argument portals for errors, generate tracking categories if needed
-- Function first checks for too few/many portals provided
-- Then checks the portal list to purge any portals that don't exist
-- Arguments:
-- portals: raw list of portals
-- args.tracking: is tracking requested? (will not track on bad titles or namespaces)
-- args.redlinks: should redlinks be displayed?
-- args.minPortals: minimum number of portal arguments
-- args.maxPortals: maximum number of portal arguments
-- Returns:
-- portals = list of portals, with redlinks purged (if args.redlinks=false)
-- trackingCat = possible tracking category
-- errorMsg = error message
function p._checkPortals(portals, args)
local trackingCat = ''
local errMsg = nil
-- Tracking is on by default.
-- It is disabled if any of the following is true
-- 1/ the parameter "tracking" is set to 'no, 'n', or 'false'
-- 2/ the current page fails the namespace or pagename tests
local trackingEnabled = args.tracking and checkTracking()
args.minPortals = args.minPortals or 1
args.maxPortals = args.maxPortals or -1
-- check for too few portals
if #portals < args.minPortals then
errMsg = 'please specify at least '..args.minPortals..' portal'..(args.minPortals > 1 and 's' or '')
trackingCat = (trackingEnabled and '[[Category:Portal templates with too few portals]]' or '')
return portals, trackingCat, errMsg
end
-- check for too many portals
if args.maxPortals >= 0 and #portals > args.maxPortals then
errMsg = 'too many portals (maximum = '..args.maxPortals..')'
trackingCat = (trackingEnabled and '[[Category:Portal templates with too many portals]]' or '')
return portals, trackingCat, errMsg
end
if not args.redlinks or trackingEnabled then
-- make new list of portals that exist
local existingPortals = {}
for _, portal in ipairs(portals) do
local portalTitle = mw.title.new(portal,"Portal")
-- if portal exists, put it into list
if portalTitle and portalTitle.exists then
table.insert(existingPortals,portal)
-- otherwise set tracking cat
elseif trackingEnabled then
trackingCat = "[[Category:Portal templates with redlinked portals]]"
end
end
-- If redlinks is off, use portal list purged of redlinks
portals = args.redlinks and portals or existingPortals
-- if nothing left after purge, set tracking cat
if #portals == 0 and trackingEnabled then
trackingCat = trackingCat.."[[Category:Pages with empty portal template]]"
end
end
return portals, trackingCat, errMsg
end
local function portalBox(args)
return mw.html.create('ul')
:attr('role', 'navigation')
:attr('aria-label', 'Portals')
:addClass('noprint')
:addClass(args.error and '' or sandboxVersion('portalbox'))
:addClass(args.border and sandboxVersion('portalborder') or '')
:addClass(sandboxVersion(args.left and 'portalleft' or 'portalright'))
:css('margin', args.margin or nil)
:newline()
end
local function fillBox(root, contents)
for _, item in ipairs(contents) do
local entry = root:tag('li')
entry:addClass(sandboxVersion('portalbox-entry'))
local image = entry:tag('span')
image:addClass(sandboxVersion('portalbox-image'))
image:wikitext(item[1])
local link = entry:tag('span')
link:addClass(sandboxVersion('portalbox-link'))
link:wikitext(item[2])
end
return root
end
function p._portal(portals, args)
-- This function builds the portal box used by the {{portal}} template.
-- Normalize all arguments
if args.redlinks == 'include' then args.redlinks = true end
args.addBreak = args['break']
for key, default in pairs({left=false,tracking=true,nominimum=false,
redlinks=false,addBreak=false,border=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local root = portalBox(args)
local trackingCat = ''
local errMsg = nil
args.minPortals = args.nominimum and 0 or 1
args.maxPortals = -1
portals, trackingCat, errMsg = p._checkPortals(portals, args)
root:wikitext(trackingCat)
-- if error message, put it in the box and return
if errMsg then
if args.border then -- suppress error message when border=no
args.error = true -- recreate box without fancy formatting
root = portalBox(args)
root:wikitext(trackingCat)
local errTag = root:tag('strong')
errTag:addClass('error')
errTag:css('padding','0.2em')
errTag:wikitext('Error: '..errMsg)
end
return tostring(root)
end
-- if no portals (and no error), just return tracking category
if #portals == 0 then
return trackingCat
end
local contents = {}
-- Display the portals specified in the positional arguments.
local defaultUsed = nil
for _, portal in ipairs(portals) do
local portalImage = getImageName(portal)
if portalImage == defaultImage then
defaultUsed = portal
end
local image = string.format('[[File:%s|32x28px|class=noviewer]]',
portalImage)
local link = string.format('[[Portal:%s|%s%sportal]]',
portal, portal, args.addBreak and '<br />' or ' ')
table.insert(contents, {image, link})
end
if defaultUsed and checkTracking() then
local cat = string.format('[[Category:Portal templates with default image|%s]]',
defaultUsed)
root:wikitext(cat)
end
return tostring(fillBox(root, contents))
end
function p._demo(imageList, args)
for key, default in pairs({left=false,border=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local root = portalBox(args)
local contents = {}
-- Display the portals specified in the positional arguments.
for _, fn in ipairs(imageList) do
local image = string.format('[[File:%s|32x28px|class=noviewer]]',fn)
local link = string.format('[[:File:%s|%s]]',fn,fn)
table.insert(contents,{image,link})
end
return tostring(fillBox(root,contents))
end
function p._image(portal,keep)
-- Wrapper function to allow getImageName() to be accessed through #invoke.
-- backward compatibility: if table passed, take first element
if type(portal) == 'table' then
portal = portal[1]
end
local name = getImageName(portal)
-- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned
local keepargs = yesno(keep)
local args = mw.text.split(name, "|", true)
local result = {args[1]} -- the filename always comes first
local category = ''
-- parse name, looking for category arguments
for i = 2,#args do
local m = mw.ustring.match(args[i], "^%s*category%s*=")
if keepargs or m then
table.insert(result, args[i])
end
end
-- reassemble arguments
return table.concat(result,"|")
end
local function getAllImageTable()
-- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData.
local images = {}
for i, subpage in ipairs{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'other'} do
local imageTable = mw.loadData('Module:Portal/images/' .. subpage .. sandbox)
for portal, image in pairs(imageTable) do
local args = mw.text.split(image,"|")
images[portal] = args[1] -- just use image filename
end
end
return images
end
function p._displayAll(portals, args)
-- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in
-- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn't record how the portal
-- names are capitalized, so the portal links may be broken.
local lang = mw.language.getContentLanguage()
portals = portals or {}
for portal in pairs(getAllImageTable()) do
table.insert(portals,lang:ucfirst(portal))
end
table.sort(portals)
args.redlinks = args.redlinks or "yes"
return p._portal(portals, args)
end
function p._imageDupes()
-- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing,
-- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that
-- should be moved to a portal alias for ease of maintenance.
local exists, dupes = {}, {}
for portal, image in pairs(getAllImageTable()) do
if not exists[image] then
exists[image] = portal
else
table.insert(dupes, string.format('The image "[[:File:%s|%s]]" is used for both portals "%s" and "%s".', image, image, exists[image], portal))
end
end
if #dupes < 1 then
return 'No duplicate images found.'
else
return 'The following duplicate images were found:\n* ' .. table.concat(dupes, '\n* ')
end
end
local function processPortalArgs(args)
-- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of
-- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order
-- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example
-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed.
args = type(args) == 'table' and args or {}
local portals = {}
local namedArgs = {}
for k, v in pairs(args) do
if type(k) == 'number' and type(v) == 'string' then -- Make sure we have no non-string portal names.
table.insert(portals, k)
elseif type(k) ~= 'number' then
namedArgs[k] = v
end
end
table.sort(portals)
for i, v in ipairs(portals) do
portals[i] = args[v]
end
return portals, namedArgs
end
-- Entry point for sorting portals from other named arguments
function p._processPortalArgs(args)
return processPortalArgs(args)
end
function p.image(frame)
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._image(portals[1],args.border)
end
function p.demo(frame)
local args = getArgs(frame)
local styles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
return styles..p._demo(args,args)
end
local function makeWrapper(funcName)
-- Processes external arguments and sends them to the other functions.
return function (frame)
-- If called via #invoke, use the args passed into the invoking
-- template, or the args passed to #invoke if any exist. Otherwise
-- assume args are being passed directly in from the debug console
-- or from another Lua module.
-- Also: trim whitespace and remove blank arguments
local origArgs = getArgs(frame)
-- create two tables to pass to func: an array of portal names, and a table of named arguments.
local portals, args = processPortalArgs(origArgs)
local results = ''
if funcName == '_portal' or funcName == '_displayAll' then
results = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
end
return results .. p[funcName](portals, args)
end
end
for _, funcName in ipairs{'portal', 'imageDupes', 'displayAll'} do
p[funcName] = makeWrapper('_' .. funcName)
end
return p
2c16356f0d15e035f16db3c400c43813fbecaced
Module:DecodeEncode
828
1660
3059
2023-04-17T20:18:54Z
Lemondoge
43
Fixed error (`a ~= (nil or '')` doesn't work; change to `a and a ~= ''`).
Scribunto
text/plain
require('strict')
local p = {}
local function _getBoolean( boolean_str )
-- from: module:String; adapted
-- requires an explicit true
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'true' or boolean_str == 'yes' or boolean_str == '1' then
boolean_value = true
else
boolean_value = false
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
boolean_value = false
end
return boolean_value
end
function p.decode( frame )
local s = frame.args['s'] or ''
local subset_only = _getBoolean(frame.args['subset_only'] or false)
return p._decode( s, subset_only )
end
function p._decode( s, subset_only )
-- U+2009 THIN SPACE: workaround for bug: HTML entity   is decoded incorrect. Entity   gets decoded properly
s = mw.ustring.gsub( s, ' ', ' ' )
-- U+03B5 ε GREEK SMALL LETTER EPSILON: workaround for bug (phab:T328840): HTML entity ε is decoded incorrect for gsub(). Entity ε gets decoded properly
s = mw.ustring.gsub( s, 'ε', 'ε' )
local ret = mw.text.decode( s, not subset_only )
return ret
end
function p.encode( frame )
local s = frame.args['s'] or ''
local charset = frame.args['charset']
return p._encode( s, charset )
end
function p._encode( s, charset )
-- example: charset = '_&©−°\\\"\'\=' -- do escape with backslash not %;
local ret
if charset and charset ~= '' then
ret = mw.text.encode( s, charset )
else
-- use default: chartset = '<>&"\' ' (outer quotes = lua required; space = NBSP)
ret = mw.text.encode( s )
end
return ret
end
return p
9bb0f28593a5597a72c90c6075ceef68f9298cf8
Module:Infobox3cols
828
1538
2873
2023-04-18T02:00:13Z
Lemondoge
43
Slight simplification to regex patterns ("%d%d*" to "%d+")
Scribunto
text/plain
local check_for_unknown_parameters = require("Module:Check for unknown parameters")._check
local p = {}
local args = {}
local origArgs = {}
local root
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix, suffix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([0-9]%d*)' .. suffix .. '$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header then
has_list_class({rowArgs.rowclass, rowArgs.class, args.headerclass})
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '4')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'h'])
:wikitext(rowArgs.header)
elseif rowArgs.label then
if rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCell = row:tag('td')
dataCell
:attr('colspan', '3')
:addClass('infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
elseif rowArgs.dataa or rowArgs.datab or rowArgs.datac then
has_list_class({rowArgs.rowclass, rowArgs.classa})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'l'])
:wikitext(rowArgs.label)
:done()
local dataCella = row:tag('td')
dataCella
:addClass('infobox-data infobox-data-a')
:addClass(rowArgs.classa)
-- @deprecated next; target .infobox-<name> .infobox-data-a
:cssText(rowArgs.dataastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'a'])
:newline()
:wikitext(rowArgs.dataa)
if rowArgs.renderb then
has_list_class({rowArgs.classb})
local dataCellb = row:tag('td')
dataCellb
:addClass('infobox-data infobox-data-b')
:addClass(rowArgs.classb)
-- @deprecated next; target .infobox-<name> .infobox-data-b
:cssText(rowArgs.databstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'b'])
:newline()
:wikitext(rowArgs.datab)
end
if rowArgs.renderc then
has_list_class({rowArgs.classc})
local dataCellc = row:tag('td')
dataCellc
:addClass('infobox-data infobox-data-c')
:addClass(rowArgs.classc)
-- @deprecated next; target .infobox-<name> .infobox-data-c
:cssText(rowArgs.datacstyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num .. 'c'])
:newline()
:wikitext(rowArgs.datac)
end
end
elseif rowArgs.data then
has_list_class({rowArgs.rowclass, rowArgs.class})
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-full-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox-full-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:cssText(args.extracellstyles[rowArgs.num])
:newline()
:wikitext(rowArgs.data)
end
end
local function renderTitle()
if not args.title then return end
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_list_class({args.aboveclass})
root
:tag('tr')
:tag('th')
:attr('colspan', '4')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(args.above)
end
local function renderBelowRow()
if not args.below then return end
has_list_class({args.belowclass})
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
local function addSubheaderRow(subheaderArgs)
if not subheaderArgs.data then return end
has_list_class({subheaderArgs.rowclass, subheaderArgs.class})
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:newline()
:wikitext(subheaderArgs.data)
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader','')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if not imageArgs.data then return end
has_list_class({imageArgs.rowclass, imageArgs.class})
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '4')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:newline()
:wikitext(imageArgs.data)
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image','')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header',''), getArgNums('data','[abc]?'))
local datab_count = #(getArgNums('data','b'))
local datac_count = #(getArgNums('data','c'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
num = tostring(num),
renderb = datab_count > 0,
renderc = datac_count > 0,
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
dataa = args['data' .. tostring(num) .. 'a'],
dataastyle = args.datastylea,
classa = args['class' .. tostring(num) .. 'a'],
datab = args['data' .. tostring(num) .. 'b'],
databstyle = args.datastyleb,
classb = args['class' .. tostring(num) .. 'b'],
datac = args['data' .. tostring(num) .. 'c'],
datacstyle = args.datastylec,
classc = args['class' .. tostring(num) .. 'c'],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)],
})
end
end
local function renderNavBar()
if not args.name then return end
root
:tag('tr')
:tag('td')
:attr('colspan', '4')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
local title = mw.title.getCurrentTitle()
if args.decat == 'yes' then return end
if #(getArgNums('data','[abc]?')) == 0 and title.namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
root:wikitext(check_for_unknown_parameters({
checkpositional = "y",
ignoreblank = "y",
regexp1 = "header[%d]+",
regexp2 = "label[%d]+",
regexp3 = "data[%d]+[abc]?",
regexp4 = "class[%d]+[abc]?",
regexp5 = "rowclass[%d]+",
regexp6 = "rowstyle[%d]+",
regexp7 = "rowcellstyle[%d]+",
unknown = "[[Category:Pages using infobox3cols with undocumented parameters|_VALUE_" .. title.text .. "]]",
"above", "aboveclass", "aboverowclass", "abovestyle", "below", "belowclass",
"belowrowclass", "belowstyle", "bodyclass", "bodystyle", "caption", "caption1",
"caption2", "captionstyle", "child", "datastyle", "datastylea", "datastyleb",
"datastylec", "extracellstyles", "headerstyle", "image", "image1", "image2",
"imageclass", "imagerowclass1", "imagerowclass2", "imagestyle", "labelstyle",
"name", "subbox", "subheader", "subheader2", "subheaderclass",
"subheaderrowclass1", "subheaderrowclass2", "subheaderstyle", "templatestyles",
"title", "titleclass", "titlestyle",
}, origArgs))
if origArgs.header0 or origArgs.label0 or origArgs.data0 or origArgs.data0a
or origArgs.data0b or origArgs.data0c or origArgs.class0 or origArgs.rowclass0 then
root:wikitext("[[Category:Pages using infobox3cols with header0 or label0 or data0]]")
end
if title.namespace == 10 and mw.ustring.sub(title.text, 1, 7) == "Infobox" then
root:wikitext("[[Category:Infobox templates|" .. mw.ustring.sub(title.text, 9) .. "]]")
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
-- preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
-- renderEmptyRowCategories()
renderTrackingCategories()
-- cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
root = mw.html.create('table')
has_list_class({args.bodyclass})
root
:addClass((args.child == 'yes' or args.subbox == 'yes') and 'infobox-subbox' or 'infobox')
:addClass(args.child == 'yes' and 'infobox-3cols-child' or nil)
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
renderTitle()
renderAboveRow()
structure_infobox_common()
return loadTemplateStyles() .. tostring(root)
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 0 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i) .. (v.suffix or '')
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i) .. (v.dependsuffix or '')
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessSingleArg('image')
preprocessSingleArg('caption')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'data', suffix = 'a', depend = {'label'}},
{prefix = 'data', suffix = 'a'},
{prefix = 'data', suffix = 'b', depend = {'label'}},
{prefix = 'data', suffix = 'b'},
{prefix = 'data', suffix = 'c', depend = {'label'}},
{prefix = 'data', suffix = 'c'},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('datastylea')
preprocessSingleArg('datastyleb')
preprocessSingleArg('datastylec')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
args['extracellstyles'] = {}
for line in mw.text.gsplit(origArgs['extracellstyles'] or '', '\n') do
local equals = line:find('=')
if equals then
for i in mw.text.gsplit(line:sub(1, equals - 1), '%s*,%s*') do
args.extracellstyles[i] = line:sub(equals + 1)
end
end
end
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame, extra_args)
origArgs = extra_args or {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
-- Shortcut for making child infoboxes via #invoke.
function p.child(frame)
return p.infoboxTemplate(frame, {child = "yes"})
end
return p
f2c09c84b4c1f1280a46abe2b1c1f74ffb797905
Template:Notice/doc
10
1330
2665
2023-04-18T18:34:02Z
w>Andrybak
0
hatnote for [[Template:Note]]
wikitext
text/x-wiki
<!--
********************************************************************
**** This documentation is shared between multiple templates, ****
**** using {{BASEPAGENAME}} and {{#switch:...}} to customize. ****
********************************************************************
-->
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE AND INTERWIKIS TO WIKIDATA -->
{{Used in system}}
{{Never substitute}}
{{Confused|Template:Note}}
This is the {{tl|{{BASEPAGENAME}}}} message box. It should be used '''sparingly''' and only for {{#switch:{{BASEPAGENAME}}
|Warning='''important''' warnings about an article or a user that cannot be shown using a more specific template. Please only use it when something is seriously wrong and other people might not otherwise know about it.
|<!--DEFAULT:-->'''significant''' information for which a more specific template doesn't exist.
}} Less important comments should be put as regular text on the page's talk page instead.
==Usage==
'''<code><nowiki>{{</nowiki>{{BASEPAGENAME}}|1=Place notice text here. |heading=Optional heading above the text<nowiki>}}</nowiki></code>'''
This box automatically changes its style depending on what kind of page it appears; see {{tl|Mbox}} for details, and view the examples below for demonstrations.
===Use in talk and userspace===
Outside "important" locations like mainspace, policy pages, and noticeboards, this message box can also be used on other pages in a more relaxed way, such as on the top of talk page alerts, wikiproject pages, userspace pages, etc. Talk and noticeboard cases should probably include your [[WP:Signature|signature]] at the end of the template's main content.
===Optional parameters ===
The box can be titled with an optional {{para|heading}} (or {{para|header}} or {{para|title}}). This is left-aligned by default. This:<br />
{{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |[[Lorem ipsum|Lorem ipsum]] dolor sit amet...<nowiki>}}</nowiki></code>
produces an all-left notice:
{{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
It can be hard to notice or read short heading and/or message on a wide monitor when they centered. For long content, it can be centered with {{para|align|center}}.<br />{{small|1=[While {{para|align|right}} is a valid value, it will only be useful when this template is ported to right-to-left language Wikipedias, and shouldn't be used on English Wikipedia or it will be difficult to read.]}}<br />
This:<br />
{{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |align=center |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code>
produces:
{{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |align=center |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
A shorthand parameter to center the heading and main text at the same time is {{para|center|y}}. This:<br />
{{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |center=y |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code>
produces:
{{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |center=y |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
The parameter {{para|textstyle}} can be used to pass arbitrary inline CSS to the main note content. For example, one could center small-caps text below a left-aligned heading; this:<br />
{{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |textstyle=text-align:center; font-variant:small-caps; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code>
produces:
{{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |textstyle=text-align:center; font-variant:small-caps;|Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
Similarly, the parameter {{para|headstyle}} can be used to pass arbitrary inline CSS to the heading content. For example, one could center a red heading above a left-aligned message; this:<br />
{{in5}}<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |heading=Heading |headstyle=text-align:center; color:red; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code>
produces:
{{{{BASEPAGENAME}}|demospace=main |heading=Heading |style=margin-bottom:2.0em; |headstyle=text-align:center; color:red;|Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
The message box can also take an {{para|image}} parameter (with a value of just the bare filename of the image, without <code>File:...</code>, <code>Image:...</code>, or markup), but this is discouraged in articles. For an example of its use, see below.
See [[#Talk pages]], below for the talkpage-only {{para|small|y}} parameter. See also [[#Adding an image, shortcuts, etc., on the righthand side]] for additional parameters that work in talk and project pages but not articles.
===Articles===
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<nowiki>}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|demospace=main|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
===Talk pages===
On talk pages, <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|demospace=talk|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
You may also set the talkpage-only parameter {{para|small|yes}}, which alters the template's appearance thus:
{{{{BASEPAGENAME}}|demospace=talk |small=yes |header=Header |style=text-align:center;<!--margin-bottom:2.0em;--> |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |small=yes |header=Header |style=text-align:center; |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces ......
{{clear}}
Setting the {{para|image}} parameter changes the image shown on the lefthand side of the template.
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |image=Stop hand nuvola.svg |heading=Heading |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|demospace=talk<!--|style=margin-bottom:2.0em;--> |image=Stop hand nuvola.svg |heading=Heading |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
(Note the effect of omitting {{para|style|text-align:center;}} here)
===File and category pages===
<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> on a File: page would produce... {{{{BASEPAGENAME}}|demospace=file|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}} ... and, on a Category: page, would produce: {{{{BASEPAGENAME}}|demospace=category|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
===Other pages===
On other pages, such as those in the [[Wikipedia:User pages|User:]], [[Wikipedia:Wikipedia namespace|Wikipedia:]] and [[Wikipedia:Help namespace|Help:]] [[Wikipedia:Namespaces|namespaces]], <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> would produce:
{{{{BASEPAGENAME}}|demospace=wikipedia|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
===External links and equals signs===
In most cases, external links can be used in the template without any complications. If a link – or any text – contains one or more equals signs (" = "), however, everything before the first sign will be interpreted as the name of a parameter. To prevent this, name the text carrying the link as the first numbered parameter:
: <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |1=Any text/links including "=" should now be interpreted correctly.<nowiki>}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |1=Any text/links including "=" should now be interpreted correctly.}}
===Adding an image, shortcuts, etc., on the righthand side===
To add shortcuts, images, other templates, etc. to the righthand side of the template, use {{para|imageright}}. This does not work in articles. For example,<br /><code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>[[File:Wiki letter w.svg|40px]] |Lorem ipsum dolor sit amet...}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. |imageright=[[File:Wiki letter w.svg|40px]]}}
<code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>{{Shortcuts|You|Me}} |Lorem ipsum dolor sit amet...}}</nowiki></code> includes the {{tl|Shortcut}}s template providing links to [[You]] and [[Me]]:
{{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |imageright={{Shortcut|You|Me}} |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
====Alternate shortcut option====
As an alternative to imageright, the {{para|shortcut}} (or {{para|shortcut1}}) and {{para|shortcut''N''}} parameters (where {{nowrap|''N'' {{=}} 2}} to 5) may be used to display shortcuts. For instance, <code><nowiki>{{</nowiki>{{BASEPAGENAME}} |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet...<nowiki>}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
''Note: If both imageright and any of the shorcut parameters are used, the contents of imageright will override the shortcut/s.'' For example,<br /><code><nowiki>{{</nowiki>{{BASEPAGENAME}} |imageright=<nowiki>[[File:Wiki letter w.svg|40px]] |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet...}}</nowiki></code> produces:
{{{{BASEPAGENAME}}|style=margin-bottom:2.0em; |imageright=[[File:Wiki letter w.svg|40px]] |shortcut1=Me |shortcut2=You |shortcut3=Them |shortcut4=Us |shortcut5=Everyone |Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.}}
{{{{BASEPAGENAME}} and warning templates}}
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE PLEASE; INTERWIKIS AT WIKIDATA -->
[[Category:Notice and warning templates]]
[[Category:Talk header templates]]
<!--[[labconsole:Template:Warning]]-->
}}</includeonly>
248296295ee59fe7d171a3281b2a8eab73be31e9
Template:Uses TemplateStyles
10
81
1079
197
2023-04-18T22:22:16Z
wikipedia>Grufo
0
Move the preview inside the documentation
wikitext
text/x-wiki
<includeonly>{{#invoke:Uses TemplateStyles|main}}</includeonly><noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
60f2fc73c4d69b292455879f9fcb3c68f6c63c2a
Module:Convert/text
828
1167
2496
2023-04-19T04:48:47Z
w>Johnuniq
0
update from sandbox per [[Template talk:Convert#Module version 28]]
Scribunto
text/plain
-- Text used by Module:Convert for enwiki.
-- This is a separate module to simplify translation for use on another wiki.
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
-- Some units accept an SI prefix before the unit code, such as "kg" for kilogram.
local SIprefixes = {
-- The prefix field is what the prefix should be, if different from the prefix used.
['Q'] = { exponent = 30, name = 'quetta', },
['R'] = { exponent = 27, name = 'ronna', },
['Y'] = { exponent = 24, name = 'yotta', },
['Z'] = { exponent = 21, name = 'zetta', },
['E'] = { exponent = 18, name = 'exa' , },
['P'] = { exponent = 15, name = 'peta' , },
['T'] = { exponent = 12, name = 'tera' , },
['G'] = { exponent = 9, name = 'giga' , },
['M'] = { exponent = 6, name = 'mega' , },
['k'] = { exponent = 3, name = 'kilo' , },
['h'] = { exponent = 2, name = 'hecto', },
['da']= { exponent = 1, name = 'deca' , name_us = 'deka' },
['d'] = { exponent = -1, name = 'deci' , },
['c'] = { exponent = -2, name = 'centi', },
['m'] = { exponent = -3, name = 'milli', },
['μ'] = { exponent = -6, name = 'micro', }, -- key = 'GREEK SMALL LETTER MU' (U+03BC) utf-8 CE BC
['µ'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- key = 'MICRO SIGN' (U+00B5) utf-8 C2 B5
['u'] = { exponent = -6, name = 'micro', prefix = 'μ' }, -- not an SI prefix, but allow for people typing this
['n'] = { exponent = -9, name = 'nano' , },
['p'] = { exponent =-12, name = 'pico' , },
['f'] = { exponent =-15, name = 'femto', },
['a'] = { exponent =-18, name = 'atto' , },
['z'] = { exponent =-21, name = 'zepto', },
['y'] = { exponent =-24, name = 'yocto', },
['r'] = { exponent =-27, name = 'ronto', },
['q'] = { exponent =-30, name = 'quecto', },
}
-- Some units can be qualified with one of the following prefixes, when linked.
local customary_units = {
{ "US", link = "United States customary units" },
{ "U.S.", link = "United States customary units" },
{ "imperial", link = "Imperial units" },
{ "imp", link = "Imperial units" },
}
-- Names when using engineering notation (a prefix of "eN" where N is a number; example "e6km").
-- key = { "name", link = "article title", exponent = numeric_key_value }
-- If lk=on and link is defined, the name of the number will appear as a link.
local eng_scales = {
["3"] = { "thousand", exponent = 3 },
["6"] = { "million", exponent = 6 },
["9"] = { "billion", link = "1000000000 (number)", exponent = 9 },
["12"] = { "trillion", link = "1000000000000 (number)", exponent = 12 },
["15"] = { "quadrillion", link = "1000000000000000 (number)", exponent = 15 },
}
local all_categories = {
unit = "[[Category:Convert errors]]",
option = "[[Category:Convert errors]]",
warning = '[[Category:Convert invalid options]]',
tracking = '[[Category:Convert tracking]]',
}
-- For some error messages, the following puts the wanted style around
-- each unit code marked like '...%{ft%}...'.
local unitcode_regex = '%%([{}])'
local unitcode_replace = { ['{'] = '"', ['}'] = '"' } -- no longer need the more elaborate substitute used before 2013-09-28
-- All messages that may be displayed if a problem occurs.
local all_messages = {
-- Message format string: $1=title, $2=text, $3=category, $4=anchor.
-- Each displayed message starts with "Convert:" so can easily locate by searching article.
cvt_format = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i>[[Help:Convert messages#$4|<span title="Convert: $1">convert: $2</span>]]</i>]</sup>$3<span class="error"></span>',
cvt_format2 = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[[Help:Convert messages#$4|<span title="Convert: $1">$2</span>]]</sup>$3<span class="error"></span>',
cvt_format_preview = '<strong class="error">Error in convert: $1 [[Help:Convert messages#$4|(help)]]</strong>$3',
-- Each of following messages is a table:
-- { [1] = 'title', -- mouseover title text
-- [2] = 'text', -- link text displayed in article
-- [3] = 'category key', -- key to lookup category in all_categories
-- [4] = 'anchor', -- anchor for link to relevant section on help page
-- regex = gsub_regex,
-- replace = gsub_table,
-- } Mouseover title text Link text CatKey Anchor
cvt_bad_input = { 'input "$1" must be a number and unit' , 'invalid input' , 'option', 'invalid_input' },
cvt_bad_num = { 'Value "$1" must be a number' , 'invalid number' , 'option', 'invalid_number' },
cvt_big_prec = { 'Precision "$1" is too large' , 'precision too large' , 'option', 'precision_too_large' },
cvt_invalid_num = { 'Number has overflowed' , 'number overflow' , 'option', 'number_overflow' },
cvt_no_num = { 'Needs the number to be converted' , 'needs a number' , 'option', 'needs_number' },
cvt_no_num2 = { 'Needs another number for a range' , 'needs another number', 'option', 'needs_another_number' },
cvt_bad_altitude = { '"$1" needs an integer' , 'invalid altitude' , 'option', 'invalid_altitude' },
cvt_bad_frac = { '"$1" needs an integer above 1' , 'invalid fraction' , 'option', 'invalid_fraction' },
cvt_bad_prec = { 'Precision "$1" must be an integer' , 'invalid precision' , 'option', 'invalid_precision' },
cvt_bad_sigfig = { '"$1" needs a positive integer' , 'invalid sigfig' , 'option', 'invalid_sigfig' },
cvt_empty_option = { 'Ignored empty option "$1"' , 'empty option' , 'option', 'empty_option' },
cvt_deprecated = { 'Option "$1" is deprecated' , '*' , 'option', 'deprecated_option', format = 'cvt_format2', nowarn = true },
cvt_no_spell = { 'Spelling is not available' , 'bug, ask for help' , 'option', 'ask_for_help' },
cvt_unknown_option = { 'Ignored invalid option "$1"' , 'invalid option' , 'option', 'invalid_option' },
cvt_wd_fail = { 'Unable to access Wikidata' , 'wikidata problem' , 'option', 'wikidata_problem' },
cvt_bad_default = { 'Unit "$1" has an invalid default' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_bad_unit = { 'Unit "$1" is invalid here' , 'unit invalid here' , 'unit' , 'unit_invalid_here' },
cvt_no_default = { 'Unit "$1" has no default output unit' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_no_unit = { 'Needs name of unit' , 'needs unit name' , 'unit' , 'needs_unit_name' },
cvt_unknown = { 'Unit name "$1" is not known' , 'unknown unit' , 'unit' , 'unknown_unit' },
cvt_should_be = { '$1' , 'ambiguous unit' , 'unit' , 'ambiguous_unit', regex = unitcode_regex, replace = unitcode_replace },
cvt_mismatch = { 'Cannot convert "$1" to "$2"' , 'unit mismatch' , 'unit' , 'unit_mismatch' },
cvt_bug_convert = { 'Bug: Cannot convert between specified units', 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_lookup = { 'Unit "$1" is incorrectly defined' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
}
-- Text to join input value/unit with output value/unit.
local disp_joins = {
-- [1]=before output, [2]=after output, [3]=between outputs in a combination; default "; "
-- [wantname] gives default abbr=off
["or"] = { " or " , "" , " or ", wantname = true },
["sqbr-sp"] = { " [" , "]" },
["sqbr-nbsp"] = { " [" , "]" },
["comma"] = { ", " , "" , ", " },
["semicolon"] = { "; " , "" },
["slash-sp"] = { " / " , "" , wantname = true },
["slash-nbsp"] = { " / ", "" , wantname = true },
["slash-nosp"] = { "/" , "" , wantname = true },
["b"] = { " (" , ")" },
["(or)"] = { " (" , ")", " or " },
["br"] = { "<br />" , "" , wantname = true },
["br()"] = { "<br />(" , ")", wantname = true },
}
-- Text to separate values in a range.
local range_types = {
-- Specifying a table requires either:
-- * "off" and "on" values (for "abbr=off" and "abbr=on"), or
-- * "input" and "output" values (for LHS and RHS);
-- other fields are optional.
-- When "adj=on|abbr=off" applies, spaces in range text are replaced with hyphens.
-- With "exception = true", that also occurs with "adj=on|abbr=on".
-- If "adj" is defined here, that text (unchanged) is used with "adj=on".
["+"] = " + ",
[","] = ", ",
[", and"] = ", and ",
[", or"] = ", or ",
["by"] = " by ",
["-"] = "–",
["to about"] = " to about ",
["and"] = { off = " and ", on = " and ", exception = true },
["and(-)"] = { input = " and ", output = "–" },
["or"] = { off = " or " , on = " or " , exception = true },
["to"] = { off = " to " , on = " to " , exception = true },
["to(-)"] = { input = " to ", output = "–" },
["+/-"] = { off = " ± ", on = " ± ", adj = " ± ", is_range_change = true },
["by(x)"] = { input = " by ", output = " × ", out_range_x = true },
["x"] = { off = " by ", on = " × ", abbr_range_x = true },
["xx"] = " × ",
["*"] = "×",
["/"] = " / ", -- for a table of high/low temperatures with {{convert|83|/|63|F|disp=br()|abbr=values}}
}
local range_aliases = {
-- ["alternative name for a range"] = "standard range name"
["–"] = "-",
["–"] = "-",
["×"] = "x",
["×"] = "x",
["±"] = "+/-",
["±"] = "+/-",
}
-- Convert accepts range text delimited with whitespace, for example, {{convert|1 to 2|ft}}.
-- In addition, the following "words" are accepted without spaces, for example, {{convert|1-2|ft}}.
-- Words must be in correct order for searching, for example, 'x' after 'xx'.
local range_words = { '-', '–', 'xx', 'x', '*' }
local ranges = {
types = range_types,
aliases = range_aliases,
words = range_words,
}
-- Valid option names.
local en_option_name = {
-- ["local text for option name"] = "en name used in this module"
["$"] = "$",
["abbr"] = "abbr",
["adj"] = "adj",
["altitude_ft"] = "altitude_ft",
["altitude_m"] = "altitude_m",
["comma"] = "comma",
["debug"] = "debug",
["disp"] = "disp",
["frac"] = "frac",
["input"] = "input",
["lang"] = "lang",
["lk"] = "lk",
["order"] = "order",
["qid"] = "qid",
["qual"] = "qual",
["qualifier"] = "qual",
["round"] = "round",
["sigfig"] = "sigfig",
["sing"] = "adj", -- "sing" is an old alias for "adj"
["sortable"] = "sortable",
["sp"] = "sp",
["spell"] = "spell",
["stylein"] = "stylein",
["styleout"] = "styleout",
["tracking"] = "tracking",
}
-- Valid option values.
-- Convention: parms.opt_xxx refers to an option that is set here
-- (not intended to be set by the template which invokes this module).
-- Example: At enwiki, "abbr" includes:
-- ["values"] = "opt_values"
-- As a result, if the template uses abbr=values, Module:Convert sets:
-- parms["opt_values"] = true
-- parms["abbr"] = nil
-- Therefore parms.abbr will be nil, or will have one of the listed values
-- that do not start with "opt_".
-- An option value of form "xxx?" is the same as "xxx" but shows the input as deprecated.
local en_option_value = {
["$"] = 'TEXT', -- TEXT should be a currency symbol that will be used instead of "$"
["abbr"] = {
-- ["local text for option value"] = "en value used in this module"
["def"] = "", -- ignored (some wrapper templates call convert with "abbr=def" to mean "default abbreviation")
["h"] = "on", -- abbr=on + use "h" for hand unit (default)
["hh"] = "opt_hand_hh", -- abbr=on + use "hh" for hand unit
["in"] = "in", -- use symbol for LHS unit
["none"] = "off", -- old name for "off"
["off"] = "off", -- use name for all units
["on"] = "on", -- use symbol for all units
["out"] = "out", -- use symbol for RHS unit (default)
["unit"] = "unit", -- abbr=on but abbreviate units only: e6km → million km (not ×10⁶ km)
["values"] = "opt_values", -- show only input and output numbers, not units
["~"] = "opt_also_symbol", -- show input unit symbol as well as name
},
["adj"] = {
["mid"] = "opt_adjectival, opt_adj_mid", -- adj=on with user-specified text after input unit (between input and output)
["off"] = "", -- ignored (off is the default)
["on"] = "opt_adjectival", -- unit name is singular and hyphenated
["pre"] = "opt_one_preunit", -- user-specified text before input unit
["ri0"] = "opt_ri=0", -- round input with precision = 0
["ri1"] = "opt_ri=1", -- round input with precision = 1
["ri2"] = "opt_ri=2", -- round input with precision = 2
["ri3"] = "opt_ri=3", -- round input with precision = 3
},
["altitude_ft"] = 'INTEGER',
["altitude_m"] = 'INTEGER',
["comma"] = {
["5"] = "opt_comma5", -- only use numsep grouping if 5 or more digits
["gaps"] = "opt_gaps", -- use gaps, not numsep, to separate groups of digits
["gaps3"] = "opt_gaps, opt_gaps3", -- group only in threes rather than default of no gap before a single digit after decimal mark
["off"] = "opt_nocomma", -- no numsep in input or output numbers
},
["debug"] = {
["yes"] = "opt_sortable_debug", -- make the normally hidden sort key visible
},
["disp"] = {
["5"] = "opt_round=5?", -- round output value to nearest 5
["b"] = "b", -- join: '(...)'
["(or)"] = "(or)", -- join: '(...)' with 'or' between outputs in a combination
["br"] = "br", -- join: '<br />'
["br()"] = "br()", -- join: '<br />(...)'
["comma"] = "comma", -- join: ','
["flip"] = "opt_flip", -- reverse order of input/output
["number"] = "opt_output_number_only", -- display output value (not input, and not output symbol/name)
["or"] = "or", -- join: 'or'
["out"] = "opt_output_only",
["output number only"] = "opt_output_number_only",
["output only"] = "opt_output_only",
["preunit"] = "opt_two_preunits", -- user-specified text before input and output units
["semicolon"] = "semicolon", -- join: ';'
["sqbr"] = "sqbr", -- join: '[...]'
["table"] = "opt_table", -- output is suitable for a table cell with align="right"
["tablecen"] = "opt_tablecen", -- output is suitable for a table cell with align="center"
["unit"] = "opt_input_unit_only", -- display input symbol/name (not output, and not input value)
["unit or text"] = "opt_input_unit_only, opt_ignore_error", -- display input symbol/name, or given unit code if not known
["unit2"] = "opt_output_unit_only",
["x"] = "x", -- join: <first>...<second> (user-specified text)
},
["frac"] = 'INTEGER',
["input"] = 'TEXT', -- TEXT should be value><space><unitcode> or <wikidata-property-id>
["lang"] = { -- language for output digits (both en and local digits are always accepted for input)
["en"] = "opt_lang_en", -- use en digits for numbers, regardless of local language
["local"] = "opt_lang_local", -- use local digits for numbers (default, although config can change default to en)
},
["lk"] = {
["in"] = "in", -- link LHS unit name or symbol
["off"] = "off", -- do not link: same as default except for hand unit
["on"] = "on", -- link all unit names or symbols (but not twice for the same unit)
["out"] = "out", -- link RHS unit name or symbol
},
["order"] = {
["flip"] = "opt_flip", -- reverse order of input/output
["out"] = "opt_order_out", -- do not show input; instead, use order in output combination, with the first output shown as the input
},
["qid"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier
["qual"] = 'TEXT', -- TEXT should be a Wikidata Q item identifier
["round"] = {
["0.5"] = "opt_round=0.5", -- round output value to nearest 0.5
["5"] = "opt_round=5", -- round output value to nearest 5
["10"] = "opt_round=10", -- round output value to nearest 10 (same as but clearer than "|-1")
["25"] = "opt_round=25", -- round output value to nearest 25
["50"] = "opt_round=50", -- round output value to nearest 50
["each"] = "opt_round_each", -- using default precision in a range, round each output separately (default uses highest precision of each item in range)
},
["sigfig"] = 'INTEGER',
["sortable"] = {
["off"] = "", -- ignored (off is the default)
["on"] = "opt_sortable_on", -- output sort key for use in a sortable table, based on value from converting to a standard base unit
["debug"] = "opt_sortable_on, opt_sortable_debug", -- |sortable=debug is the same as |sortable=on|debug=yes
},
["sp"] = {
["us"] = "opt_sp_us", -- use U.S. spelling (like "meter" instead of default "metre")
},
["spell"] = { -- only English spelling is supported; not scientific notation; only some fractions
["in"] = "opt_spell_in", -- spell input value in words
["In"] = "opt_spell_in, opt_spell_upper", -- spell input value in words with first letter uppercase
["on"] = "opt_spell_in, opt_spell_out", -- spell input and output values in words
["On"] = "opt_spell_in, opt_spell_out, opt_spell_upper", -- same, with first letter of first word in result uppercase
["us"] = "opt_sp_us", -- use U.S. spelling; same as sp=us so spell=us also works
},
["stylein"] = 'TEXT',
["styleout"] = 'TEXT',
["tracking"] = 'TEXT',
}
local titles = {
["frac"] = "Fraction/styles.css",
["sfrac"] = "Sfrac/styles.css",
}
return {
SIprefixes = SIprefixes,
all_categories = all_categories,
all_messages = all_messages,
currency = { ['$'] = true, ['£'] = true, ['€'] = true, ['₱'] = true, ['₽'] = true, ['¥'] = true },
customary_units = customary_units,
disp_joins = disp_joins,
en_option_name = en_option_name,
en_option_value = en_option_value,
eng_scales = eng_scales,
ranges = ranges,
titles = titles,
}
ff98cf24da87736f3469f82401084ca608335d55
Module:Portal/images/s
828
842
1866
2023-04-19T13:53:32Z
wikipedia>Hike395
0
rm deprecated images
Scribunto
text/plain
--[==[ This is the "S" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "S". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["saba"] = "Flag of Saba.svg|border|link=|alt=flag",
["saint barthelemy"] = "Flag of Saint Barthelemy (local).svg|border|link=|alt=flag",
["saint helena, ascension and tristan da cunha"] = "Flag of Saint Helena.svg|border|link=|alt=flag",
["saint kitts and nevis"] = "Flag of Saint Kitts and Nevis.svg|border|link=|alt=flag",
["saint lucia"] = "Flag of Saint Lucia.svg|border|link=|alt=flag",
["saint martin"] = "Flag of Saint Martin.png|border|link=|alt=flag",
["saint pierre and miquelon"] = "Flag of Saint-Pierre and Miquelon.svg|border|link=|alt=flag",
["saint vincent and the grenadines"] = "Flag of Saint Vincent and the Grenadines.svg|border|link=|alt=flag",
["saints"] = "Gloriole blur.svg|link=|alt=",
["samoa"] = "Flag of Samoa.svg|border|link=|alt=flag",
["san antonio"] = "Coat of arms of San Antonio.svg|link=|alt=arms",
["san diego"] = "San Diego,California,USA. - panoramio (139).jpg|link=|alt=photo",
["san francisco bay area"] = "SF From Marin Highlands3.jpg|border|link=|alt=",
["san marino"] = "Flag of San Marino.svg|border|link=|alt=flag",
["são tomé and príncipe"] = "Flag of São Tomé and Príncipe.svg|border|link=|alt=flag",
["saskatchewan"] = "Flag of Saskatchewan.svg|border|link=|alt=flag",
["saudi arabia"] = "Flag of Saudi Arabia.svg|border|link=|alt=flag",
["saxony"] = "Flag of Saxony.svg|border|link=|alt=flag",
["schleswig-holstein"] = "Flag of Schleswig-Holstein (state).svg|border|link=|alt=flag",
["schools"] = "School.svg|link=|alt=icon",
["science"] = "Nuvola apps kalzium.svg|alt=icon",
["science and academia"] = "Rachel Carson w (cropped).jpg|link=|alt=photo",
["science fiction"] = "Sf-userbox.png|alt=icon",
["scotland"] = "Flag of Scotland.svg|border|link=|alt=flag",
["scottish islands"] = "ScottishIsles.jpg|link=|alt=map",
["scouting"] = "WikiProject Scouting fleur-de-lis dark.svg|alt=icon",
["seamounts"] = "Seamount.svg|link=|alt=",
["seattle"] = "SpaceNeedleTopClose.jpg|alt=icon",
["senegal"] = "Flag of Senegal.svg|border|link=|alt=flag",
["september 11 attacks"] = "Y24-Wtc-september-5.jpg|alt=icon",
["serbia"] = "Flag of Serbia.svg|border|link=|alt=flag",
["seton hall university"] = "Shu logo.png|link=|alt=logo",
["severe weather"] = "Marquette, Kansas EF4 tornado on April 14, 2012.png|link=|alt=icon",
["sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon",
["sex work"] = "Umbrella-159361.svg|link=|alt=",
["seychelles"] = "Flag of Seychelles.svg|border|link=|alt=flag",
["sf"] = "Dragon-149393.svg|alt=icon",
["sharjah"] = "Flag of Sharjah.svg|border|link=|alt=flag",
["sharks"] = "Greyreefsharksmall2.jpg|alt=icon",
["shia islam"] = "Ghadir logo.png|alt=icon",
["siberia"] = "Kuznetsk Alatau 3.jpg|border|link=|alt=",
["sierra leone"] = "Flag of Sierra Leone.svg|border|link=|alt=flag",
["sikhism"] = "Khanda emblem.svg|link=|alt=",
["sikkim"] = "Seal of Sikkim color.png|link=|alt=seal",
["sindh"] = "Flag of Sindh.svg|border|link=|alt=flag",
["singapore"] = "Flag of Singapore.svg|border|link=|alt=flag",
["sint eustatius"] = "Flag of Sint Eustatius.svg|border|link=|alt=flag",
["sint maarten"] = "Flag of Sint Maarten.svg|border|link=|alt=flag",
["slovakia"] = "Flag of Slovakia.svg|border|link=|alt=flag",
["slovenia"] = "Flag of Slovenia.svg|border|link=|alt=flag",
["snakes"] = "Snake icon.svg|link=|alt=",
["snooker"] = "Snooker balls triangled.png|alt=icon",
["social movements"] = "Peace sign.svg|link=|alt=",
["social science"] = "P social sciences-lightblue.png|link=|alt=icon",
["social sciences"] = "DrustveneNauke.png|alt=icon",
["socialism"] = "Red flag II.svg|alt=icon",
["society"] = "Social sciences.svg|alt=icon",
["software"] = "Crystal Clear device cdrom unmount.png|alt=icon",
["solar system"] = "Solar system.jpg|link=|alt=",
["solomon islands"] = "Flag of Solomon Islands.svg|border|link=|alt=flag",
["somalia"] = "Flag of Somalia.svg|border|link=|alt=flag",
["somaliland"] = "Flag of Somaliland.svg|border|link=|alt=flag",
["somerset"] = "Somerset shield.png|alt=icon",
["south africa"] = "Flag of South Africa.svg|border|link=|alt=flag",
["south america"] = "South America (orthographic projection).svg|link=|alt=map",
["south asia"] = "India 78.40398E 20.74980N.jpg|link=|alt=",
["south australia"] = "Flag of South Australia.svg|border|link=|alt=flag",
["south carolina"] = "Flag of South Carolina.svg|border|link=|alt=flag",
["south dakota"] = "Flag of South Dakota.svg|border|link=|alt=flag",
["south east england"] = "EnglandSouthEast.png|alt=icon",
["south georgia and the south sandwich islands"] = "Flag of South Georgia and the South Sandwich Islands.svg|border|link=|alt=flag",
["south korea"] = "Flag of South Korea.svg|border|link=|alt=flag",
["south sudan"] = "Flag of South Sudan.svg|border|link=|alt=flag",
["southeast asia"] = "Location Southeast Asia.svg|link=|alt=",
["southern california"] = "USA California Southern location map.svg|link=|alt=map",
["soviet union"] = "Flag of the Soviet Union.svg|border|link=|alt=flag",
["space"] = "Earth-moon.jpg|link=|alt=",
["spaceflight"] = "RocketSunIcon.svg|link=|alt=",
["spain"] = "Flag of Spain.svg|border|link=|alt=flag",
["speculative fiction"] = "Dragon-149393.svg|alt=icon",
["speculative fiction/fantasy"] = "Masked man.svg|link=|alt=icon",
["speculative fiction/horror"] = "Vampire Smiley.png|alt=icon",
["sports"] = "Sports icon.png|link=|alt=",
["sports and games"] = "Sports and games.png|alt=icon",
["sport of athletics"] = "Roman bronze copy of Myron’s Discobolos, 2nd century CE (Glyptothek Munich).jpg|link=|alt=",
["sri lanka"] = "Flag of Sri Lanka.svg|border|link=|alt=flag",
["staffordshire"] = "Staffordshire Flag.svg|border|link=|alt=flag",
["stamford"] = "Stamford town crest.png|link=|alt=crest",
["stanford university"] = "Stanford logo.png|link=|alt=logo",
["star"] = "He1523a.jpg|alt=icon",
["stars"] = "He1523a.jpg|alt=icon",
["state of georgia"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag",
["statistics"] = "Fisher iris versicolor sepalwidth.svg|alt=icon",
["sudan"] = "Flag of Sudan.svg|border|link=|alt=flag",
["superfunds"] = "Superfund sites.svg|link=|alt=map",
["supermarket"] = "ShoppingCart.svg|link=|alt=",
["supermarkets"] = "ShoppingCart.svg|link=|alt=",
["suriname"] = "Flag of Suriname.svg|border|link=|alt=flag",
["surrey"] = "EnglandSurrey.png|alt=icon",
["sweden"] = "Flag of Sweden.svg|border|link=|alt=flag",
["switzerland"] = "Flag of Switzerland.svg|border|link=|alt=flag",
["sydney"] = "Sydney COA.gif|alt=icon",
["syria"] = "Flag of Syria.svg|border|link=|alt=flag",
["systems engineering initiative"] = "Systems Engineering Process II.gif|link=|alt=diagram",
["systems science"] = "Complex-adaptive-system.jpg|link=|alt=diagram"
}
6352d6d2cc43aecf731427b7234d275ddf514e29
Template:Country data Sweden
10
1190
2519
2023-04-19T15:46:04Z
w>Paine Ellsworth
0
per edit request on talk page - include flag variant
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Sweden
| flag alias = Flag of Sweden.svg
| flag alias-army = Naval Ensign of Sweden.svg
| flag alias-air force =Naval Ensign of Sweden.svg
| flag alias-1818 = Swedish and Norwegian merchant flag 1818-1844.svg
| flag alias-1844 = Swedish civil ensign (1844–1905).svg
| flag alias-1905 = Flag of Sweden (pre-1906).svg
| flag alias-naval = Naval Ensign of Sweden.svg
| flag alias-naval-1844 = Naval Ensign of Sweden (1844-1905).svg
| flag alias-naval-1815 = Swedish and Norwegian naval ensign (1815-1844).svg
| link alias-army = Swedish Army
| link alias-air force = Swedish Air Force
| link alias-naval = Swedish Navy
| flag alias-navy = Naval Ensign of Sweden.svg
| link alias-navy = Swedish Navy
| border-army =
| border-air force =
| border-naval =
| border-navy =
| border-naval-1815 =
| border-naval-1844 =
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1818
| var2 = 1844
| var3 = 1905
| var4 = naval-1844
| var5 = naval-1815
| redir1 = SWE
</noinclude>
}}
046def916df87772775106a1b2c5cc5e1590e529
Template:Country data Austria
10
1184
2513
2023-04-19T17:00:17Z
w>Paine Ellsworth
0
per edit request on talk page - include flag variants
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Austria
| flag alias = Flag of Austria.svg
| flag alias-empire = Flag of the Habsburg Monarchy.svg
| flag alias-state = Flag of Austria (state).svg
| flag alias-1230 = Flag of Austria (1230–1934).svg
| flag alias-war = Austria-Hungary-flag-1869-1914-naval-1786-1869-merchant.svg
| flag alias-1934 = State flag of Austria (1934–1938).svg
| flag alias-1938 = Flag of Germany (1935–1945).svg
| flag alias-army = Flag of Austria (state).svg
| flag alias-air force = Flag of Austria (state).svg
| link alias-army = Austrian Land Forces
| flag alias-naval = Flag of Austria (state).svg
| link alias-naval = Austrian Navy
| link alias-air force = Austrian Air Force
| flag alias-navy = Flag of Austria (state).svg
| link alias-navy = Austrian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = empire
| var2 = state
| var3 = 1230
| var4 = war
| var5 = 1934
| var6 = 1938
| redir1 = AUT
| redir2 = Archduchy of Austria
| related1 = Austria-Hungary
</noinclude>
}}
09169aeb2e7aab99900a74b755f38a6af79d73a8
Template:Country data United States
10
1462
2797
2023-04-21T11:12:39Z
w>Paine Ellsworth
0
per edit request on talk page - include official 1795 flag
wikitext
text/x-wiki
{{safesubst<noinclude />: {{{1<noinclude>|country showdata</noinclude>}}}
| alias = United States
| flag alias = Flag of the United States.svg
| flag alias-1776 = Flag of the United States (1776–1777).svg
| flag alias-1777 = Flag of the United States (1777–1795).svg
| flag alias-1777-Ross = Betsy Ross flag.svg
| flag alias-1795 = Flag of the United States (1795-1818).svg
| flag alias-1795FM = Flag of the United States (1795–1818).svg
| flag alias-1818 = Flag of the United States (1818-1819).svg
| flag alias-1819 = Flag of the United States (1819-1820).svg
| flag alias-1820 = Flag of the United States (1820-1822).svg
| flag alias-1822 = Flag of the United States (1822-1836).svg
| flag alias-1836 = Flag of the United States (1836-1837).svg
| flag alias-1837 = Flag of the United States (1837-1845).svg
| flag alias-1845 = Flag of the United States (1845-1846).svg
| flag alias-1846 = Flag of the United States (1846-1847).svg
| flag alias-1847 = Flag of the United States (1847-1848).svg
| flag alias-1848 = Flag of the United States (1848-1851).svg
| flag alias-1851 = Flag of the United States (1851-1858).svg
| flag alias-1858 = Flag of the United States (1858-1859).svg
| flag alias-1859 = Flag of the United States (1859-1861).svg
| flag alias-1861 = Flag of the United States (1861-1863).svg
| flag alias-1863 = Flag of the United States (1863-1865).svg
| flag alias-1865 = Flag of the United States (1865-1867).svg
| flag alias-1867 = Flag of the United States (1867-1877).svg
| flag alias-1877 = Flag of the United States (1877-1890).svg
| flag alias-1890 = Flag of the United States (1890-1891).svg
| flag alias-1891 = Flag of the United States (1891-1896).svg
| flag alias-1896 = Flag of the United States (1896-1908).svg
| flag alias-1908 = Flag of the United States (1908-1912).svg
| flag alias-1912 = Flag of the United States (1912-1959).svg
| flag alias-1959 = Flag of the United States (1959-1960).svg
| flag alias-1960 = Flag of the United States (Pantone).svg
| flag alias-yacht = United States yacht flag.svg
| flag alias-air force = Flag of the United States Air Force.svg
| flag alias-coast guard-1799 = Ensign of the United States Revenue-Marine (1799).png
| flag alias-coast guard-1815 = Ensign of the United States Revenue-Marine (1815).png
| flag alias-coast guard-1836 = Ensign of the United States Revenue-Marine (1836).png
| flag alias-coast guard-1841 = Ensign of the United States Revenue-Marine (1841).png
| flag alias-coast guard-1867 = Ensign of the United States Revenue-Marine (1867).png
| flag alias-coast guard-1868 = Ensign of the United States Revenue-Marine (1868).png
| flag alias-coast guard-1915 = Ensign of the United States Coast Guard (1915-1953).png
| flag alias-coast guard-1953 = Ensign of the United States Coast Guard.svg
| flag alias-coast guard = Flag of the United States Coast Guard.svg
| link alias-coast guard = {{#switch:{{{variant|}}}|coast guard|coast guard-1915=United States Coast Guard|coast guard-1894=United States Revenue Cutter Service|coast guard-1799|coast guard-1815|coast guard-1836|coast guard-1841|coast guard-1867|coast guard-1868=United States Revenue-Marine|United States Coast Guard}}
| flag alias-army = Flag of the United States Army.svg
| link alias-naval = {{#switch:{{{variant|}}}|navy|coast guard-1915=United States Coast Guard|United States Coast Guard|United States Navy}}
| flag alias-navy-1864 = Flag of the United States Navy (1864-1959).svg
| flag alias-navy = Flag of the United States Navy (official).svg
| link alias-navy = United States Navy
| link alias-marines = {{#switch:{{{variant|}}}|marines|marines-1914=United States Marine Corps|United States Marine Corps}}
| flag alias-marines-1914 = Flag of the United States Marine Corps (1914-1939).png
| flag alias-marines = Flag of the United States Marine Corps.svg
| link alias-merchant marine = United States Merchant Marine
| flag alias-merchant marine = Flag of the United States Merchant Marine Higher Resolution.jpg
| flag alias-space force = Flag of the United States Space Force.svg
| link alias-football = United States {{{mw|men's}}} national {{{age|}}} soccer team
| link alias-Australian rules football = United States {{{mw|men's}}} national Australian rules football team
| {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = USA Selects
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1776
| var2 = 1777
| var3 = 1777-Ross
| var4 = 1795
| var5 = 1795FM
| var6 = 1818
| var7 = 1819
| var8 = 1820
| var9 = 1822
| var10 = 1836
| var11 = 1837
| var12 = 1845
| var13 = 1846
| var14 = 1847
| var15 = 1848
| var16 = 1851
| var17 = 1858
| var18 = 1859
| var19 = 1861
| var20 = 1863
| var21 = 1865
| var22 = 1867
| var23 = 1877
| var24 = 1890
| var25 = 1891
| var26 = 1896
| var27 = 1908
| var28 = 1912
| var29 = 1959
| var30 = 1960
| var31 = yacht
| var32 = coast guard-1915
| var33 = coast guard-1953
| var34 = marines-1914
| redir1 = USA
| redir2 = US
| redir3 = United States of America
| redir4 = U.S.
</noinclude>
}}
0226bdffba98445e8ca1d0f53f0dc3dc669130cf
Module:Citation/CS1/Configuration/doc
828
881
1952
2023-04-23T09:57:31Z
wikipedia>Materialscientist
0
Reverted edits by [[Special:Contributions/72.190.246.114|72.190.246.114]] ([[User talk:72.190.246.114|talk]]) ([[WP:HG|HG]]) (3.4.12)
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This configuration file contains various data that controls the functioning of [[Module:Citation/CS1]] and hence the way that Lua-based citations are generated.
It has several sections among which are:
# translation tables that contain most of the literal strings that may be included in Lua-based citation. If editors are copying this Module to another wiki using a language other than English, then they should translate each of these values into that language.
# a list of error conditions specifying what text to display, what category to include (if any), and what help page section to refer to when errors are detected
# a list of ID handlers specifying the recognized document IDs, such as ISBN, DOI, etc., and how to format them.
{{#lst:Module:Citation/CS1/doc|module_components_table}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Modules that check for strip markers]]
}}</includeonly>
629c7396ecd08be19b2d8d920f688c1644f989b6
Template:Country data Poland
10
1201
2530
2023-04-23T23:42:12Z
w>Paine Ellsworth
0
per edit request on talk page - update flag of state
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Poland
| flag alias = Flag of Poland.svg
| flag alias-state = Flag of Poland (with coat of arms).svg
| flag alias-1815 = Flag of the Congress of Poland.svg
| flag alias-1919 = Flag of Poland (1919-1928).svg
| flag alias-1928 = Flag of Poland (1928–1980).svg
| flag alias-1955 = Flag of Poland (with coat of arms, 1955-1980).svg
| flag alias-1980 = Flag of Poland (with coat of arms, 1980-1990).svg
| flag alias-1990 = Flag of Poland (with coat of arms).svg
| flag alias-naval = PL navy flag IIIRP.svg
| border-naval =
| flag alias-naval-1919 = Naval Ensign of IIRP v1.svg
| border-naval-1919 =
| flag alias-naval-1946 = Naval Ensign of PRL v1.svg
| border-naval-1946 =
| flag alias-naval-auxiliary = Flaga pomocniczych jednostek pływających Polskiej Marynarki Wojennej.svg
| flag alias-naval-auxiliary-1955 = POL Bandera pjp PRL v1.svg
| link alias-naval = Polish Navy
| flag alias-navy = Naval Ensign of Poland.svg
| border-navy =
| link alias-navy = Polish Navy
| flag alias-marines = Flag of the Polish Land Forces.svg
| border-marines =
| link alias-marines = Polish 7th Coastal Defense Brigade
| flag alias-air force = PL air force flag IIIRP.svg
| border-air force =
| link alias-air force = Polish Air Force
| flag alias-army = Flag of the Polish Land Forces.svg
| border-army =
| link alias-army = Polish Land Forces
| size = {{{size|}}}
| size flag alias-naval = 25px
| size flag alias-naval-1919 = 25px
| size flag alias-naval-1946 = 25px
| size flag alias-air force = 25px
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = state
| var2 = 1815
| var3 = 1919
| var4 = 1928
| var5 = 1955
| var6 = 1980
| var7 = 1990
| var10 = naval-1919
| var11 = naval-1946
| var12 = naval-auxiliary
| var13 = naval-auxiliary-1955
| redir1 = POL
</noinclude>
}}
a5df6d9ca5a0da2e55a10a8eb85e931668b222a9
Template:Marriage/styles.css
10
1261
2595
2023-04-24T16:04:33Z
Pppery
6
sanitized-css
text/css
/* {{pp-template}} */
.marriage-line-margin2px {
line-height: 0;
margin-bottom: -2px;
}
.marriage-line-margin3px {
line-height: 0;
margin-bottom: -3px;
}
.marriage-display-ws {
display: inline;
white-space: nowrap;
}
c7f451088a54f39897051a4421a9d8c5a9a1b23d
Template:Microformat message
10
1486
2821
2023-04-24T21:58:07Z
w>GoldRingChip
0
large
wikitext
text/x-wiki
The [[Help:HTML in wikitext|HTML mark-up]] produced by this template includes {{#if:{{{type|}}} |{{{type}}} |an [[{{{format}}} microformat]]}} that makes {{{data}}} readily [[Parsing|parsable]] by computer programs. This aids tasks such as the cataloguing of articles and maintenance of databases. For more information about the use of microformats on Wikipedia, please visit [[Wikipedia:WikiProject Microformats|the Microformat WikiProject]].<!--
-->{{#if:{{{subtemplates<includeonly>|</includeonly>}}}
| <div style="margin-top:0.5em;margin-bottom:0.65em;">
; {{large|Subtemplates}}
{{{subtemplates}}}
'''''Please do not remove instances of these subtemplates.'''''
</div>}}<!--
-->{{#if:{{{subsection1|}}}
| <div style="margin-top:0.5em;margin-bottom:0.65em;"><!--(newline in case subsection begins with heading:)-->
{{{subsection1}}}
</div>}}<!--
-->{{#if:{{{1<includeonly>|</includeonly>}}} <!--(i.e. if at least one unnamed parameter supplied:)-->
| <div style="margin-top:0.5em;margin-bottom:0.65em;">
; {{large|Classes used}}
The [[HTML attribute|HTML class]]es of this microformat include:
: {{hlist
|item_style=font-size:110%;{{{itemstyle|}}}
|{{{1}}} |{{{2<includeonly>|</includeonly>}}} |{{{3|<noinclude>{{nobold|……}}</noinclude>}}}
|{{{4|}}} |{{{5|}}} |{{{6|}}} |{{{7|}}} |{{{8|}}} |{{{9|}}} |{{{10|}}} |{{{11|}}} |{{{12|}}} |{{{13|}}} |{{{14|}}} |{{{15|}}} |{{{16|}}} |{{{17|}}} |{{{18|}}} |{{{19|}}} |{{{20|}}}
}} </div>
{{longitem|style=line-height:1.3em|'''''Please do not rename or remove these classes{{#if:{{{nocollapse<includeonly>|</includeonly>}}} |<br/>nor collapse nested elements which use them}}.'''''}}<!--
-->}}<!--(end #if:[1])--><noinclude>
{{Documentation}}
</noinclude>
25d8c54d56c1c64f1b98e6c8b2a50054e6a9deb5
Template:Citation and verifiability article maintenance templates
10
1041
2280
2023-04-26T02:34:42Z
wikipedia>JoeNMLC
0
ce, add No significant coverage
wikitext
text/x-wiki
{{Navbox
| name = Citation and verifiability article maintenance templates
| title = [[Wikipedia:Template index/Cleanup/Verifiability and sources|Citation and verifiability article maintenance templates]]
| listclass = hlist
| state = {{{state|autocollapse}}}
| group1 = Sourcing
| list1 =
* {{Tlg|Circular}}
* {{Tlg|Dubious}}
* {{Tlg|Excessive citations}}
* {{Tlg|Further reading cleanup}}
* {{Tlg|More citations needed}}
** {{Tlg|More citations needed section}}
* {{Tlg|More footnotes needed}}
* {{Tlg|No footnotes}}
* {{Tlg|No significant coverage}}
* {{Tlg|One source}}
** {{Tlg|One source section}}
* {{Tlg|Only primary sources}}
** {{Tlg|NRIS only}}
* {{Tlg|Primary sources}}
** {{Tlg|Primary sources section}}
* {{Tlg|Religious text primary}}
* {{Tlg|Self-published}}
* {{Tlg|Self-reference cleanup}}
* {{Tlg|Self-sourcing examples}}
** {{Tlg|Refexample section}}
* {{Tlg|Sources exist}}
* {{Tlg|Text-source}}
* {{Tlg|Third-party}}
* {{Tlg|Unreferenced}}
** {{Tlg|Unreferenced section}}
* {{Tlg|Unreferenced category}}
* {{Tlg|Unreliable sources}}
** {{Tlg|Unreliable sources section}}
* {{tlg|User-generated}}
| group2 = [[Wikipedia:Biographies of living persons|BLP]]-specific
| list2 =
* {{Tlg|BLP unreferenced}}
** {{Tlg|BLP unreferenced section}}
* {{Tlg|BLP primary sources}}
* {{Tlg|BLP self-published}}
* {{Tlg|BLP sources}}
** {{Tlg|BLP sources section}}
* {{Tlg|BLP IMDb-only refimprove}}
* {{Tlg|BLP IMDb refimprove}}
* {{Tlg|BLP no footnotes}}
* {{Tlg|BLP more footnotes needed}}
* {{Tlg|BLP one source}}
| group3 = Topic specific
| list3 =
* {{Tlg|Localist}}
* {{Tlg|Media IMDb refimprove}}
* {{Tlg|More medical citations needed}}
* {{Tlg|More science citations needed}}
* {{Tlg|Neologism}}
* {{Tlg|Science review}}
* {{Tlg|Unreferenced law}}
** {{Tlg|Unreferenced-law section}}
* {{Tlg|Unreferenced medical section}}
| group4 = Dispute-related
| list4 =
* {{Tlg|Cite check}}
** {{Tlg|Cite check section}}
* {{Tlg|Content}}
* {{Tlg|Disputed}}
** {{Tlg|Dispute about}}
** {{Tlg|Disputed section}}
** {{Tlg|Disputed chem}}
** {{Tlg|Disputed list}}
** {{Tlg|Disputed map}}
* {{Tlg|Expert needed}}
* {{Tlg|Hoax}}
* {{Tlg|Original research}}
** {{Tlg|Original research section}}
* {{Tlg|Speculation}}
** {{Tlg|Speculation section}}
* {{Tlg|Synthesis}}
* {{Tlg|Verifiability}}
* {{Tlg|Verify sources}}
| group5 = Citation improvements
| list5 =
* {{Tlg|Citation style}}
* {{Tlg|Citations broken}}
* {{Tlg|Cleanup bare URLs}}
* {{Tlg|Format footnotes}}
* {{Tlg|Full citations needed}}
* {{Tlg|Ibid}}
* {{Tlg|Page numbers improve}}
* {{Tlg|Page numbers needed}}
* {{Tlg|Shallow references}}
| group6 = General advice
| list6 =
* [[Wikipedia:Citing sources|Citing sources]]
* [[Wikipedia:Reliable sources|Reliable sources]]
* [[Help:Maintenance template removal |Maintenance template removal]]
* [[Wikipedia:Citation needed|Citation needed]]
* [[Help:Find sources|Find sources]]
* [[Wikipedia:Combining sources|Combining sources]]
* [[Help:Overview of referencing styles|Referencing styles]]
}}<noinclude>{{Documentation}}</noinclude>
55a6785749a09717fef857138042ad0d8abef5ef
Module:Language
828
445
1029
2023-04-26T18:00:06Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Module:Language]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
Scribunto
text/plain
require('strict')
local m_data = mw.loadData("Module:Language/data")
local langData = m_data.languages or m_data
local p = {}
local function ifNotEmpty(value)
if value == "" then
return nil
else
return value
end
end
local function makeLinkedName(languageCode)
local data = langData[languageCode]
local article = data["article"]
local name = data["Wikipedia_name"] or data["name"]
return "[[" .. article .. "|" .. name .. "]]: "
end
local function makeEntryName(word, languageCode)
local data = langData[languageCode]
local ugsub = mw.ustring.gsub
word = tostring(word)
if word == nil then
error("The function makeEntryName requires a string argument")
elseif word == "" then
return ""
else
-- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping.
word = word:gsub("\'\'\'", "")
word = word:gsub("\'\'", "")
if data == nil then
return word
else
local replacements = data and data["replacements"]
if replacements == nil then
return word
else
-- Decompose so that the diacritics of characters such
-- as á can be removed in one go.
-- No need to compose at the end, because the MediaWiki software
-- will handle that.
if replacements.decompose then
word = mw.ustring.toNFD(word)
for i, from in ipairs(replacements.from) do
word = ugsub(
word,
from,
replacements.to and replacements.to[i] or "")
end
else
for regex, replacement in pairs(replacements) do
word = ugsub(word, regex, replacement)
end
end
return word
end
end
end
end
p.makeEntryName = makeEntryName
local function fixScriptCode(firstLetter, threeLetters)
return string.upper(firstLetter) .. string.lower(threeLetters)
end
local function getCodes(codes, text)
local languageCode, scriptCode, invalidCode
local errorText
if codes == nil or codes == "" then
errorText = 'no language or script code provided'
elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then
-- A three- or two-letter lowercase sequence at beginning of first parameter
languageCode =
codes:find("^%a%a%a?") and (
codes:match("^(%l%l%l?)")
or codes:match("^(%a%a%a?)")
:gsub("(%a%a%a?)", string.lower, 1)
)
-- One uppercase and three lowercase letters at the end of the first parameter
scriptCode =
codes:find("%a%a%a%a$") and (
codes:match("(%u%l%l%l)$")
or gsub(
codes:match("(%a%a%a%a)$"),
"(%a)(%a%a%a)",
fixScriptCode,
1
)
)
elseif codes:find("^%a%a%a?%-%a%a%a?$")
or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then
languageCode = codes
-- Private-use subtag: x followed by one or more sequences of 1-8 lowercase
-- letters separated by hyphens. This only allows for one sequence, as it is
-- needed for proto-languages such as ine-x-proto (Proto-Indo-European).
elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then
languageCode, scriptCode =
codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$")
if not languageCode then
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then
errorText = '<code>'..scriptCode..'</code> is not a valid script code.'
else
scriptCode = scriptCode:gsub(
"(%a)(%a%a%a)",
fixScriptCode,
1
)
end
elseif codes:find("^%a%a%a?") then
languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)")
languageCode = string.lower(languageCode)
errorText = '<code>'..invalidCode..'</code> is not a valid script code.'
elseif codes:find("%-?%a%a%a%a$") then
invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$")
scriptCode = gsub(
scriptCode,
"(%a)(%a%a%a)",
fixScriptCode
)
errorText = '<code>'..invalidCode..'</code> is not a valid language code.'
else
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
end
if not scriptCode or scriptCode == "" then
scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown"
end
if errorText then
errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>'
else
errorText = ""
end
languageCode = m_data.redirects[languageCode] or languageCode
return languageCode, scriptCode, errorText
end
local function tag(text, languageCode, script, italics)
local data = langData[languageCode]
-- Use Wikipedia code if it has been given: for instance,
-- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia
-- code "ine-x-proto".
languageCode = data and data.Wikipedia_code or languageCode
local italicize = script == "Latn" and italics
if not text then text = "[text?]" end
local textDirectionMarkers = { "", "", "" }
if data and data["direction"] == "rtl" then
textDirectionMarkers = { ' dir="rtl"', '‏', '‎' }
end
local out = { textDirectionMarkers[2] }
if italicize then
table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>")
else
table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>")
end
table.insert(out, textDirectionMarkers[3])
return table.concat(out)
end
function p.lang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local text = args[2] or error("Provide text in the second parameter")
local languageCode, scriptCode, errorText = getCodes(codes, text)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
return tag(text, languageCode, scriptCode, italics) .. errorText
end
local function linkToWiktionary(entry, linkText, languageCode)
local data = langData[languageCode]
local name
if languageCode then
if data and data.name then
name = data.name
else
-- On other languages' wikis, use mw.getContentLanguage():getCode(),
-- or replace 'en' with that wiki's language code.
name = mw.language.fetchLanguageName(languageCode, 'en')
if name == "" then
error("Name for the language code " .. ("%q"):format(languageCode or nil)
.. " could not be retrieved with mw.language.fetchLanguageName, "
.. "so it should be added to [[Module:Language/data]]")
end
end
if entry:sub(1, 1) == "*" then
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry:sub(2)
else
error("Language name is empty")
end
elseif data and data.type == "reconstructed" then
mw.log("Reconstructed language without asterisk:", languageCode, name, entry)
local frame = mw.getCurrentFrame()
-- Track reconstructed entries with no asterisk by transcluding
-- a nonexistent template. This technique is used in Wiktionary:
-- see [[wikt:Module:debug]].
-- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]]
pcall(frame.expandTemplate, frame,
{ title = 'tracking/wikt-lang/reconstructed with no asterisk' })
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry
else
error("Language name is empty")
end
elseif data and data.type == "appendix" then
if name ~= "" then
entry = "Appendix:" .. name .. "/" .. entry
else
error("Language name is empty")
end
end
if entry and linkText then
return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]"
else
error("linkToWiktionary needs a Wiktionary entry or link text, or both")
end
else
return "[[wikt:" .. entry .. "|" .. linkText .. "]]"
end
end
function p.wiktlang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not args[2] then
error("Parameter 2 is required")
end
local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out .. errorText
else
return errorText or error("The function wiktlang generated nothing")
end
end
function p.wikt(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not word1 then
error("Provide a word in parameter 2.")
end
local languageCode, scriptCode, errorText = getCodes(codes, word1)
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = linkToWiktionary(entry, linkText, languageCode)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out and out .. errorText
else
return errorText or error("The function wikt generated nothing")
end
end
return p
51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6
Template:Campaignbox Punic Wars
10
1504
2839
2023-04-27T18:46:41Z
w>Schminnte
0
Reverted edits by [[Special:Contributions/12.46.200.58|12.46.200.58]] ([[User talk:12.46.200.58|talk]]) ([[WP:HG|HG]]) (3.4.12)
wikitext
text/x-wiki
{{Campaignbox
| name = Campaignbox Punic Wars
| title = [[Punic Wars]]
| listclass = hlist
| battles =
* [[First Punic War|First]]
* [[Mercenary War|Mercenary]]
* [[Second Punic War|Second]]
* [[Third Punic War|Third]]
}}<noinclude>
[[Category:Punic Wars navigational boxes|Punic wars]]
</noinclude>
68f988c5de0f66decd657e0721bfd60f1b4c7798
Module:Authority control/auxiliary
828
1077
2352
2023-04-27T20:09:01Z
wikipedia>MSGJ
0
fix CCG code, and remove some unneeded functions
Scribunto
text/plain
require('strict')
local p = {}
--[[======================================================]]
--[[ Format validation functions ]]
--[[======================================================]]
p.botanistV = function(id)
return mw.ustring.match(id,"^[%u%l%d%. '-]+$")
end
p.validateIsni = function(id) --Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid. See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
id = id:gsub( '[ %-]', '' ):upper()
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
local total = 0
for i = 1, 15 do
local digit = id:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
local remainder = total % 11
local result = (12 - remainder) % 11
local checkdigit
if result == 10 then
checkdigit = 'X'
else
checkdigit=tostring( result )
end
if checkdigit ~= string.char( id:byte( 16 ) ) then
return false
end
return id
end
p.orcidV = function(id)
id = p.validateIsni(id)
if not id then
return false
end
return id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
end
p.tlsV = function(id)
id = id:gsub(' +', '_')
local idlen = mw.ustring.len(id)
if idlen < 4 or idlen > 90 then
return false
end
local regex = '^%u'..string.rep("[%w_',%.%-%(%)%*%/–&]", idlen - 1)..'$'
if not mw.ustring.match(id,regex ) then
return false
end
return id
end
--[[======================================================]]
--[[ Custom link functions ]]
--[[======================================================]]
p.ISILlink = function(id,label)
if not id:match('^%D%D?%D?%D?%-.+$') then
return false
end
for _,prefix in ipairs({'AT','AU','BE','CA','CH','DE','FI','FR','IT','KR','NZ','US','ZDB'}) do
if id:match('^'..prefix..'%-') then
return '<span class="uid">[https://w3id.org/isil/'..id..' ' .. (label or 'ISIL') .. ']</span>'
end
end
return '[[International Standard Identifier for Libraries and Related Organizations|ISIL]]\n**<span class="uid">' .. id .. '</span>'
end
p.uscgLink = function(id)
local id2 = id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) or id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' )
if id2 then
return '<span class="uid">[https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V'..mw.ustring.sub(id2,1,1)..'.pdf '..id2..']</span>'
else
return false
end
end
p.ccg = function(id)
id = id:match('^[NAIP]?[1-9]%d*$') or id:match('^[NAIP]?[1-9]%d*%.%d+$')
if not id then return false end
local link = 'https://www.notmar.gc.ca/'
local prefix = string.sub(id, 1, 1) -- get first character of id
local suffix = string.sub(id, 2) -- remove first character of id
local interval = require('Module:Interval')._main
local v
if prefix=='N' then
local int = interval({1,7.5,14.4,100,121,173,211,235,269.99,326,396,450.1,471.7,499,n=suffix})
if int=='1-2' then v = 1
elseif int=='2-3' then v = 75
elseif int=='3-4' then v = 144
elseif int=='4-5' then v = 100
elseif int=='5-6' then v = 121
elseif int=='6-7' then v = 173
elseif int=='7-8' then v = 211
elseif int=='8-9' then v = 235
elseif int=='9-10' then v = 26999
elseif int=='10-11' then v = 326
elseif int=='11-12' then v = 396
elseif int=='12-13' then v = 4501
elseif int=='13-14' then v = 4717
elseif int=='14-15' then v = 499
end
link = link .. 'publications/list-lights/newfoundland/n' .. v .. '-en'
elseif prefix=='A' then
local int = interval({5,114.5,145,163,268,271,301.5,327,686.5,704.85,883.2,942,1085,1169.1,1584.5,1773,1823.55,2190,2369,2389,n=suffix})
if int=='1-2' then v = 5
elseif int=='2-3' then v = 1145
elseif int=='3-4' then v = 145
elseif int=='4-5' then v = 162
elseif int=='5-6' then v = 268
elseif int=='6-7' then v = 271
elseif int=='7-8' then v = 3015
elseif int=='8-9' then v = 327
elseif int=='9-10' then v = 6865
elseif int=='10-11' then v = 7048
elseif int=='11-12' then v = 883
elseif int=='12-13' then v = 942
elseif int=='13-14' then v = 1085
elseif int=='14-15' then v = 11691
elseif int=='15-16' then v = 15845
elseif int=='16-17' then v = 1773
elseif int=='17-18' then v = 182355
elseif int=='18-19' then v = 2190
elseif int=='19-20' then v = 2369
elseif int=='20-21' then v = 2389
end
link = link .. 'publications/list-lights/atl/a' .. v .. '-en'
elseif prefix=='I' then
local int = interval({0.05,401.1,403.4,551.06,552,624,708,731.2,768,814,983,1046,1059.6,1082,1162,1204.7,1233.3,1328,1330,1346.2,1377.8,1408,1410,1420,1445,1470,1520,1534,1540.6,1554,1557.7,1558.8,1563.1,1625.5,1671.7,1716.96,2545,n=suffix})
if int=='1-2' then v = '01'
elseif int=='2-3' then v = 4011
elseif int=='3-4' then v = 4034
elseif int=='4-5' then v = 55106
elseif int=='5-6' then v = 552
elseif int=='6-7' then v = 624
elseif int=='7-8' then v = 708
elseif int=='8-9' then v = 7312
elseif int=='9-10' then v = 768
elseif int=='10-11' then v = 814
elseif int=='11-12' then v = 983
elseif int=='12-13' then v = 1046
elseif int=='13-14' then v = 10596
elseif int=='14-15' then v = 1082
elseif int=='15-16' then v = 1162
elseif int=='16-17' then v = 12047
elseif int=='17-18' then v = 12333
elseif int=='18-19' then v = 1328
elseif int=='19-20' then v = 1330
elseif int=='20-21' then v = 13462
elseif int=='21-22' then v = 13778
elseif int=='22-23' then v = 1408
elseif int=='23-24' then v = 1410
elseif int=='24-25' then v = 1420
elseif int=='25-26' then v = 1445
elseif int=='26-27' then v = 1470
elseif int=='27-28' then v = 1520
elseif int=='28-29' then v = 1534
elseif int=='29-30' then v = 15406
elseif int=='30-31' then v = 1554
elseif int=='31-32' then v = 15577
elseif int=='32-33' then v = 15588
elseif int=='33-34' then v = 1562
elseif int=='34-35' then v = 16255
elseif int=='35-36' then v = 16717
elseif int=='36-37' then v = 171696
elseif int=='37-38' then v = 2545
end
link = link .. 'publications/list-lights/inland-waters/i' .. v .. '-en'
elseif prefix=='P' then
link = link .. 'publications/list-lights/pac/p'
else
link = link .. 'list-lights'
end
return '[[CCG (identifier)|CCG]] <span class="uid">[' .. link .. ' ' .. id .. ']</span>'
end
return p
4fe1ede4f4598dd1edc3073b3d484dee8411e094
Module:Portal/images/l
828
1379
2714
2023-04-29T07:58:13Z
w>Hike395
0
remove deprecated images
Scribunto
text/plain
--[==[ This is the "L" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "L". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["lagomorpha"] = "Lapin01 flipped and colorized.svg|alt=icon",
["lagos"] = "Flag of Lagos.svg|alt=flag",
["lakes"] = "Walden Pond, Massachusetts on June 27, 2012.png|link=|alt=image",
["lakshadweep"] = "India Lakshadweep locator map.svg|border|link=|alt=map",
["lancashire"] = "Lancashire rose.svg|alt=icon",
["language"] = "Globe of letters.svg|alt=icon",
["languages"] = "Globe of letters.svg|alt=icon",
["laos"] = "Flag of Laos.svg|border|link=|alt=flag",
["latin america"] = "Latin America (orthographic projection).svg|link=|alt=map",
["latin america music"] = "Musical note nicu bucule 01.svg|link=|alt=",
["latin american music"] = "Musical note nicu bucule 01.svg|link=|alt=",
["latin music"] = "Conga.svg|link=|alt=",
["latter day saints"] = "Christus statue temple square salt lake city.jpg|link=|alt=";
["latter day saint movement"] = "Christus statue temple square salt lake city.jpg|link=|alt=";
["latvia"] = "Flag of Latvia.svg|border|link=|alt=flag",
["law"] = "Balance, by David.svg|alt=icon",
["law of england and wales"] = "Scale of justice 2 new.jpeg|alt=icon",
["lds church"] = "Christus statue temple square salt lake city.jpg|link=|alt=";
["lebanon"] = "Flag of Lebanon.svg|border|link=|alt=flag",
["led zeppelin"] = "Zoso Robert Plant feather symbol.svg|link=|alt=",
["leeds"] = "Arms of Leeds.svg|alt=icon",
["leibniz"] = "Gottfried Wilhelm Leibniz, Bernhard Christoph Francke.jpg|link=|alt=painting",
["lesotho"] = "Flag of Lesotho.svg|border|link=|alt=flag",
["lemony snicket"] = "Eyes lumen design.svg|alt=icon",
["lgbt"] = "Nuvola LGBT flag.svg|link=|alt=",
["liberalism"] = "Yellow flag waving.svg|alt=icon",
["liberia"] = "Flag of Liberia.svg|border|link=|alt=flag",
["libertarianism"] = "2006 AEGold Proof Obv.png|link=|alt=coin",
["libya"] = "Flag of Libya.svg|border|link=|alt=flag",
["liechtenstein"] = "Flag of Liechtenstein.svg|border|link=|alt=flag",
["linguistics"] = "Globe of letters.svg|alt=icon",
["linux"] = "NewTux.svg|alt=icon",
["liquor"] = "Flessen drank.jpg|alt=icon",
["lists"] = "Text-x-generic.svg|link=|alt=",
["literature"] = "Books-aj.svg aj ashton 01.svg|link=|alt=",
["lithuania"] = "Flag of Lithuania.svg|border|link=|alt=flag",
["livestock"] = "Sheep and cow in South Africa.jpg|link=|alt=photo",
["logic"] = "Logic portal.svg|alt=icon",
["london"] = "Clock Tower - Palace of Westminster, London - May 2007 icon.png|alt=icon",
["london transport"] = "Underground sign at Westminster.jpg|link=|alt=",
["los angeles"] = "LA Skyline Mountains2.jpg|link=|alt=photo",
["louisiana"] = "Flag of Louisiana.svg|border|link=|alt=flag",
["lower saxony"] = "Flag of Lower Saxony.svg|border|link=|alt=flag",
["luxembourg"] = "Flag of Luxembourg.svg|border|link=|alt=flag",
}
d812e722451c78f92926d59b0b8aa8242db171ec
Template:Documentation subpage
10
55
105
2023-04-29T17:27:17Z
wikipedia>Paine Ellsworth
0
m
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
41ca90af0945442788a2dbd08c8c54a61a23c057
Module:Tlm
828
1674
3103
2023-04-29T23:10:46Z
50.53.167.128
0
more WD Client MWs
Scribunto
text/plain
local export = {}
local variables_nullary = {
["CURRENTYEAR"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTH"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented
["CURRENTMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented
["CURRENTMONTHNAME"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTHABBREV"] = "mw:Help:Magic words#Date and time";
["CURRENTDAY"] = "mw:Help:Magic words#Date and time";
["CURRENTDAY2"] = "mw:Help:Magic words#Date and time";
["CURRENTDOW"] = "mw:Help:Magic words#Date and time";
["CURRENTDAYNAME"] = "mw:Help:Magic words#Date and time";
["CURRENTTIME"] = "mw:Help:Magic words#Date and time";
["CURRENTHOUR"] = "mw:Help:Magic words#Date and time";
["CURRENTWEEK"] = "mw:Help:Magic words#Date and time";
["CURRENTTIMESTAMP"] = "mw:Help:Magic words#Date and time";
["LOCALYEAR"] = "mw:Help:Magic words#Date and time";
["LOCALMONTH"] = "mw:Help:Magic words#Date and time";
["LOCALMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented
["LOCALMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented
["LOCALMONTHNAME"] = "mw:Help:Magic words#Date and time";
["LOCALMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time";
["LOCALMONTHABBREV"] = "mw:Help:Magic words#Date and time";
["LOCALDAY"] = "mw:Help:Magic words#Date and time";
["LOCALDAY2"] = "mw:Help:Magic words#Date and time";
["LOCALDOW"] = "mw:Help:Magic words#Date and time";
["LOCALDAYNAME"] = "mw:Help:Magic words#Date and time";
["LOCALTIME"] = "mw:Help:Magic words#Date and time";
["LOCALHOUR"] = "mw:Help:Magic words#Date and time";
["LOCALWEEK"] = "mw:Help:Magic words#Date and time";
["LOCALTIMESTAMP"] = "mw:Help:Magic words#Date and time";
["SITENAME"] = "mw:Help:Magic words#Technical metadata";
["SERVER"] = "mw:Help:Magic words#Technical metadata";
["SERVERNAME"] = "mw:Help:Magic words#Technical metadata";
["DIRMARK"] = "mw:Help:Magic words#Technical metadata";
["DIRECTIONMARK"] = "mw:Help:Magic words#Technical metadata";
["ARTICLEPATH"] = "mw:Help:Magic words#Technical metadata"; -- undocumented
["SCRIPTPATH"] = "mw:Help:Magic words#Technical metadata";
["STYLEPATH"] = "mw:Help:Magic words#Technical metadata";
["CURRENTVERSION"] = "mw:Help:Magic words#Technical metadata";
["CONTENTLANGUAGE"] = "mw:Help:Magic words#Technical metadata";
["CONTENTLANG"] = "mw:Help:Magic words#Technical metadata";
["PAGEID"] = "mw:Help:Magic words#Technical metadata";
["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata";
["REVISIONID"] = "mw:Help:Magic words#Technical metadata";
["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata";
["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata";
["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata";
["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata";
["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata";
["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata";
["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata";
["REVISIONSIZE"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFPAGES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFARTICLES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFFILES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFEDITS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFVIEWS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFUSERS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFADMINS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFACTIVEUSERS"] = "mw:Help:Magic words#Technical metadata";
["FULLPAGENAME"] = "mw:Help:Magic words#Page names";
["PAGENAME"] = "mw:Help:Magic words#Page names";
["BASEPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names";
["TALKPAGENAME"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented
["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names";
["PAGENAMEE"] = "mw:Help:Magic words#Page names";
["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented
["NAMESPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces";
["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACEE"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACEE"] = "mw:Help:Magic words#Namespaces";
["!"] = "mw:Help:Magic words#Other";
["="] = "mw:Help:Magic words#Other";
-- case-insensitive!
["noexternallanglinks"] = "mw:Extension:Wikibase Client";
["wbreponame"] = "mw:Extension:Wikibase Client";
["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet
["numberofwikis"] = "mw:Extension:SiteMatrix";
}
local variables_nonnullary = {
["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata";
["DISPLAYTITLE"] = "mw:Help:Magic words#Technical metadata";
["DEFAULTSORT"] = "mw:Help:Magic words#Technical metadata";
["PAGESINCATEGORY"] = "mw:Help:Magic words#Technical metadata";
["PAGESINCAT"] = "mw:Help:Magic words#Technical metadata";
["NUMBERINGROUP"] = "mw:Help:Magic words#Technical metadata";
["PAGESINNS"] = "mw:Help:Magic words#Technical metadata";
["PAGESINNAMESPACE"] = "mw:Help:Magic words#Technical metadata";
["FULLPAGENAME"] = "mw:Help:Magic words#Page names";
["PAGENAME"] = "mw:Help:Magic words#Page names";
["BASEPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names";
["TALKPAGENAME"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented
["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names";
["PAGENAMEE"] = "mw:Help:Magic words#Page names";
["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented
["NAMESPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces";
["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACEE"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACEE"] = "mw:Help:Magic words#Namespaces";
["PAGEID"] = "mw:Help:Magic words#Technical metadata of another page";
["PAGESIZE"] = "mw:Help:Magic words#Technical metadata of another page";
["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata of another page";
["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONID"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata of another page";
["SHORTDESC"] = "mw:Extension:Wikibase Client";
}
local parser_functions = {
-- built-ins
["localurl"] = "mw:Help:Magic words#URL data";
["localurle"] = "mw:Help:Magic words#URL data";
["fullurl"] = "mw:Help:Magic words#URL data";
["fullurle"] = "mw:Help:Magic words#URL data";
["canonicalurl"] = "mw:Help:Magic words#URL data";
["canonicalurle"] = "mw:Help:Magic words#URL data";
["filepath"] = "mw:Help:Magic words#URL data";
["urlencode"] = "mw:Help:Magic words#URL data";
["urldecode"] = "mw:Help:Magic words#URL data";
["anchorencode"] = "mw:Help:Magic words#URL data";
["ns"] = "mw:Help:Magic words#Namespaces";
["nse"] = "mw:Help:Magic words#Namespaces";
["formatnum"] = "mw:Help:Magic words#Formatting";
["#dateformat"] = "mw:Help:Magic words#Formatting";
["#formatdate"] = "mw:Help:Magic words#Formatting";
["lc"] = "mw:Help:Magic words#Formatting";
["lcfirst"] = "mw:Help:Magic words#Formatting";
["uc"] = "mw:Help:Magic words#Formatting";
["ucfirst"] = "mw:Help:Magic words#Formatting";
["padleft"] = "mw:Help:Magic words#Formatting";
["padright"] = "mw:Help:Magic words#Formatting";
["plural"] = "mw:Help:Magic words#Localization";
["grammar"] = "mw:Help:Magic words#Localization";
["gender"] = "mw:Help:Magic words#Localization";
["int"] = "mw:Help:Magic words#Localization";
["#language"] = "mw:Help:Magic words#Miscellaneous";
["#special"] = "mw:Help:Magic words#Miscellaneous";
["#speciale"] = "mw:Help:Magic words#Miscellaneous";
["#tag"] = "mw:Help:Magic words#Miscellaneous";
-- [[mw:Extension:ParserFunctions]]
["#expr"] = "mw:Help:Extension:ParserFunctions##expr";
["#if"] = "mw:Help:Extension:ParserFunctions##if";
["#ifeq"] = "mw:Help:Extension:ParserFunctions##ifeq";
["#iferror"] = "mw:Help:Extension:ParserFunctions##iferror";
["#ifexpr"] = "mw:Help:Extension:ParserFunctions##ifexpr";
["#ifexist"] = "mw:Help:Extension:ParserFunctions##ifexist";
["#rel2abs"] = "mw:Help:Extension:ParserFunctions##rel2abs";
["#switch"] = "mw:Help:Extension:ParserFunctions##switch";
["#time"] = "mw:Help:Extension:ParserFunctions##time";
["#timel"] = "mw:Help:Extension:ParserFunctions##timel";
["#titleparts"] = "mw:Help:Extension:ParserFunctions##titleparts";
-- other extensions
["#babel"] = "mw:Extension:Babel#Usage";
["#categorytree"] = "mw:Extension:CategoryTree#The {{#categorytree}} parser function";
["#commaseparatedlist"] = "mw:Extension:Wikibase Client";
["#coordinates"] = "mw:Extension:GeoData#Parser function";
["#invoke"] = "mw:Extension:Scribunto#Usage";
["#lst"] = "mw:Extension:Labeled Section Transclusion#How it works";
["#lsth"] = "mw:Extension:Labeled Section Transclusion#How it works"; -- not available, it seems
["#lstx"] = "mw:Extension:Labeled Section Transclusion#How it works";
["noexternallanglinks"] = "mw:Extension:Wikibase Client";
["noreplace"] = "mw:Extension:Wikibase Client";
["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet
["#property"] = "mw:Extension:Wikibase Client";
["#statements"] = "mw:Extension:Wikibase Client";
["#target"] = "mw:Extension:MassMessage"; -- not documented yet
}
-- rudimentary
local function is_valid_pagename(pagename)
if (pagename == "") or pagename:match("[%[%]%|%{%}#\127<>]") then
return false
end
return true
end
local function hook_special(page)
if is_valid_pagename(page) then
return "[[Special:" .. page .. "|" .. page .. "]]"
else
return page
end
end
local function hook_wdprop(name)
if mw.wikibase.resolvePropertyId(name) then
return ("[[:d:Special:EntityPage/%s|%s]]"):format(mw.wikibase.resolvePropertyId(name), name)
else
return name
end
end
local parser_function_hooks = {
["#special"] = hook_special;
["#speciale"] = hook_special;
["int"] = function (mesg)
if is_valid_pagename(mesg) then
return ("[[:MediaWiki:" .. mesg .. "|" .. mesg .. "]]")
else
return mesg
end
end;
["#categorytree"] = function (cat)
if is_valid_pagename(cat) and not (mw.title.getCurrentTitle().fullText == ("Category:" .. cat)) then
return ("[[:Category:" .. cat .. "|" .. cat .. "]]")
else
return cat
end
end;
["#invoke"] = function (mod)
if is_valid_pagename(mod) and not (mw.title.getCurrentTitle().fullText == ("Module:" .. mod)) then
return ("[[Module:%s|%s]]"):format(mod, mod)
else
return mod
end
end;
-- ["#tag"] = function (tag)
-- local doc_table = require('Module:wikitag link').doc_table
-- if doc_table[tag] then
-- return ("[[%s|%s]]"):format(doc_table[tag], tag)
-- else
-- return tag
-- end
-- end;
["#property"] = hook_wdprop;
["#statements"] = hook_wdprop;
}
function export.format_link(frame)
local args = frame:getParent().args
local output = { frame.args.nested and "{{" or "<code>{{" }
local templ = args[1]
local noargs = true
if not templ then
if mw.title.getCurrentTitle().fullText == frame:getParent():getTitle() then
-- demo mode
return "<code>{{<var>{{{1}}}</var>|<var>{{{2}}}</var>|...}}</code>"
else
error("The template name must be given.")
end
end
for key, value in pairs(args) do
if key ~= 1 then
noargs = false
break
end
end
local function render_title(templ)
local marker, rest
marker, rest = templ:match("^([Ss][Uu][Bb][Ss][Tt]):(.*)")
if not marker then
marker, rest = templ:match("^([Ss][Aa][Ff][Ee][Ss][Uu][Bb][Ss][Tt]):(.*)")
end
if marker then
templ = rest
table.insert(output, ("[[mw:Manual:Substitution|%s]]:"):format(marker))
end
if noargs and variables_nullary[templ] then
table.insert(output, ("[[%s|%s]]"):format(variables_nullary[templ], templ))
return
end
marker, rest = templ:match("^([Mm][Ss][Gg][Nn][Ww]):(.*)")
if marker then
templ = rest
-- not the most accurate documentation ever
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker))
else
marker, rest = templ:match("^([Mm][Ss][Gg]):(.*)")
if marker then
templ = rest
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- ditto
end
end
marker, rest = templ:match("^([Rr][Aa][Ww]):(.*)")
if marker then
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- missingno.
templ = rest
end
if templ:match("^%s*/") then
table.insert(output, ("[[%s]]"):format(templ))
return
end
marker, rest = templ:match("^(.-):(.*)")
if marker then
local lcmarker = marker:lower()
if parser_functions[lcmarker] then
if parser_function_hooks[lcmarker] then
rest = parser_function_hooks[lcmarker](rest)
end
table.insert(output, ("[[%s|%s]]:%s"):format(mw.uri.encode(parser_functions[lcmarker], "WIKI"), marker, rest))
return
elseif variables_nonnullary[marker] then
table.insert(output, ("[[%s|%s]]:%s"):format(variables_nonnullary[marker], marker, rest))
return
end
end
if templ:match("[%[%]%|%{%}#\127<>]") then
table.insert(output, templ)
return
end
if marker then
if mw.site.namespaces[marker] then
if (title == "") or (mw.title.getCurrentTitle().fullText == templ) then
table.insert(output, templ)
else
table.insert(output, ("[[:%s|%s]]"):format(templ, templ))
end
return
elseif mw.site.interwikiMap()[marker:lower()] then
-- XXX: not sure what to do now…
table.insert(output, ("[[:%s:|%s]]:%s"):format(marker, marker, rest))
return
end
end
if (templ == "") or (mw.title.getCurrentTitle().fullText == ("Template:" .. templ)) then
table.insert(output, templ)
else
table.insert(output, ("[[Template:%s|%s]]"):format(templ, templ))
end
end
render_title(templ)
local i = 2
while args[i] do
table.insert(output, "|" .. args[i])
i = i + 1
end
for key, value in pairs(args) do
if type(key) == "string" then
table.insert(output, "|" .. key .. "=" .. value)
end
end
table.insert(output, frame.args.nested and "}}" or "}}</code>")
return table.concat(output)
end
return export
526fb2fa1758bae142ff0b2b0cea935a7bf1d07f
Template:Coord
10
591
1330
2023-04-30T08:14:15Z
wikipedia>Galobtter
0
Changed protection settings for "[[Template:Coord]]": Only purpose is to call fully-protected module ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Coordinates|coord}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
05c1e2a95ff86fa91442c704f36a9f125b603492
Module:Portal/images/h
828
870
1928
2023-04-30T16:48:06Z
wikipedia>Hike395
0
rm deprecated images
Scribunto
text/plain
--[==[ This is the "H" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "H". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["haiti"] = "Flag of Haiti.svg|border|link=|alt=flag",
["hamburg"] = "Flag of Hamburg.svg|border|link=|alt=flag",
["hampshire"] = "EnglandHampshire.svg|link=|alt=",
["haryana"] = "YamunaRiver.jpg|alt=icon",
["harz"] = "DennertFirTree.svg|alt=icon",
["hawaii"] = "Flag of Hawaii.svg|border|link=|alt=flag",
["help"] = "Wikipedia help.png|alt=icon",
["heraldry"] = "Azure, a bend Or.svg|link=|alt=",
["heraldry and vexillology"] = "En-wikipedia arms 9.svg|alt=icon",
["hertfordshire"] = "Hertsflag.jpg|link=|alt=",
["himachal pradesh"] = "Kinnaur Kailash.jpg|link=|alt=",
["hillary clinton"] = "Hillary Rodham Clinton.jpg|link=|alt=",
["hindi cinema"] = "Indiafilm.svg|alt=icon",
["hinduism"] = "Aum Om red.svg|link=|alt=",
["hindustani"] = "Hindustani.svg|link=|alt=script",
["hip hop"] = "Loudspeaker-crystal-theme.svg|alt=icon",
["hisar"] = "Fort of Firoz Shah Tughlaq at Hisar.jpg|link=|alt=photo",
["hispanic and latino americans"] = "Flag of the Hispanicity.svg|link=|alt=icon",
["history"] = "P history.svg|link=|alt=",
["history of science"] = "Newton's reflecting telescope.jpg|link=|alt=image",
["history of the latter day saint movement"] = "Joseph Smith receiving golden plates.jpg|border|link=|alt=",
["hitchhiker's"] = "Answer to Life.png|link=|alt=icon",
["hitchhiker's guide to the galaxy"] = "Answer to Life.png|link=|alt=icon",
["holidays"] = "Calendar icon.svg|alt=icon",
["holy roman empire"] = "Reichskrone.jpg|link=|alt=image",
["honduras"] = "Flag of Honduras.svg|border|link=|alt=flag",
["hong kong"] = "Flag of Hong Kong.svg|border|link=|alt=flag",
["horror fiction"] = "Vampire Smiley.png|alt=icon",
["horses"] = "Finnhorse stallion.jpg|alt=icon",
["hotels"] = "Map Icon - Hotel.png|link=|alt=",
["housing"] = "Big single-family home 2.jpg|link=|alt=",
["hudson valley"] = "Hudson river from bear mountain bridge.jpg|alt=icon",
["human–computer interaction"] = "Mouse icon vector.png|link=|alt=icon",
["human rights"] = "HumanRightsLogo.svg|link=|alt=",
["human sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon",
["hungary"] = "Flag of Hungary.svg|border|link=|alt=flag",
["hyderabad"] = "Charminar Hyderabad 1.jpg|alt=icon",
}
78dcf7d45caaedc14a5dc36ef2370fa0e910f229
Template:Twinkle standard installation
10
1039
2276
2023-05-01T21:47:32Z
wikipedia>Mori Calliope fan
0
Moved apostrophe outside of the link
wikitext
text/x-wiki
{{Mbox
| image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]]
| text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as the standard installation of Twinkle adds and removes this template. Thank you!{{#if:{{{1|}}}|<br>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
e0d214332002dd4766de972883ae89580baeaa69
Template:Music infobox header
10
1375
2710
2023-05-02T05:19:54Z
w>DB1729
0
Category:Music infobox templates
wikitext
text/x-wiki
{{Ombox|type=content|text=The design and content of all music-related infoboxes should follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], [[Wikipedia:Manual of Style/Infoboxes|infobox style guideline]] and [[Wikipedia:Manual of Style/Music|music style guideline]]. While this document may clarify details of their specific application to the infobox, it is primarily concerned with explaining usage and not with matters of Wikipedia policy and style.}}<noinclude>
[[Category:Music infobox templates]]
</noinclude>
1fcb03dc3664ad5b57b0f62c2c30a8cdfc71f57a
Module:Portal/images/b
828
841
1864
2023-05-03T15:07:28Z
wikipedia>Hike395
0
rm deprecated images
Scribunto
text/plain
--[==[ This is the "B" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "B". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be
-- omitted.
]==]
return {
["babism"] = "Haykal2.gif|link=|alt=",
["baden-württemberg"] = "Flag of Baden-Württemberg.svg|border|link=|alt=flag", ["badminton"] = "Badminton racquet.svg|link=|alt=",
["bahrain"] = "Flag of Bahrain.svg|border|link=|alt=flag",
["bailiwick of guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag",
["bailiwick of jersey"] = "Flag of Jersey.svg|border|link=|alt=flag",
["balochistan, pakistan"] = "Flag of Balochistan.svg|border|link=|alt=",
["baltic states"] = "Subdivisions of baltic states.svg|link=|alt=map",
["baltimore"] = "Seal of Baltimore, Maryland.png|link=|alt=seal",
["bangalore"] = "Bangalore Palace.jpg|alt=icon",
["bangladesh"] = "Flag of Bangladesh.svg|border|link=|alt=flag",
["banks"] = "All-currency-symbol.svg|link=|alt=icon",
["barbados"] = "Flag of Barbados.svg|border|link=|alt=flag",
["baseball"] = "Baseball.svg|link=|alt=icon",
["basketball"] = "Basketball Clipart.svg|link=|alt=icon",
["battleships"] = "BS Bismarck.png|alt=icon",
["bavaria"] = "Flag of Bavaria (lozengy).svg|border|link=|alt=flag",
["bbc"] = "BBC Logo 2021.svg|link=|alt=",
["beer"] = "Projet bière logo v2.png|alt=icon",
["belarus"] = "Flag of Belarus.svg|border|link=|alt=flag",
["belgium"] = "Flag of Belgium.svg|border|link=|alt=flag",
["belize"] = "Flag of Belize.svg|border|link=|alt=flag",
["benin"] = "Flag of Benin.svg|border|link=|alt=flag",
["berkshire"] = "Flag of Berkshire.svg|link=|alt=flag",
["berlin"] = "Flag of Berlin (state).svg|border|link=|alt=flag",
["bermuda"] = "Flag of Bermuda.svg|border|link=|alt=flag",
["bhutan"] = "Flag of Bhutan.svg|border|link=|alt=flag",
["bible"] = "Bible.malmesbury.arp.jpg|link=|alt=",
["bihar"] = "Seal of Bihar.jpg|link=|alt=",
["biography"] = "P vip.svg|link=|alt=",
["biology"] = "Issoria lathonia.jpg|alt=icon",
["birds"] = "Eagle 01.svg|link=|alt=",
["blues"] = "Guit Blues.JPG|link=|alt=",
["bohemia"] = "Flag of Bohemia.svg|border|link=|alt=flag",
["bolivia"] = "Flag of Bolivia.svg|border|link=|alt=flag",
["bollywood"] = "Indiafilm.svg|alt=icon",
["bonaire"] = "Flag of Bonaire.svg|border|link=|alt=flag",
["books"] = "Nuvola apps bookcase.svg|alt=icon",
["bosnia and herzegovina"] = "Flag of Bosnia and Herzegovina.svg|border|link=|alt=flag",
["botany"] = "Rosa villosa.jpg|alt=icon",
["botswana"] = "Flag of Botswana.svg|border|link=|alt=flag",
["brandenburg"] = "Flag of Brandenburg.svg|border|link=|alt=flag",
["brazil"] = "Flag of Brazil.svg|border|link=|alt=flag",
["brigham young university"] = "Brigham Young University medallion.svg|link=|alt=seal",
["bristol"] = "Bristol arms cropped.jpg|alt=icon",
["british columbia"] = "Flag of British Columbia.svg|border|link=|alt=flag",
["british empire"] = "British Empire 1897.jpg|link=|alt=",
["british indian ocean territory"] = "Flag of the British Indian Ocean Territory.svg|border|link=|alt=flag",
["british virgin islands"] = "Flag of the British Virgin Islands.svg|border|link=|alt=flag",
["brunei"] = "Flag of Brunei.svg|border|link=|alt=flag",
["buddhism"] = "Dharma Wheel.svg|alt=icon",
["bulgaria"] = "Flag of Bulgaria.svg|border|link=|alt=flag",
["burkina faso"] = "Flag of Burkina Faso.svg|border|link=|alt=flag",
["burundi"] = "Flag of Burundi.svg|border|link=|alt=flag",
["buses"] = "BSicon BUS.svg|link=|alt=",
["business and economics"] = "Emblem-money.svg|alt=icon",
["byzantine empire"] = "Flag of Palaeologus Dynasty.svg|border|link=|alt=flag"
}
478b01f3f226cf941e2988888a0337f360ba173f
Template:ISO 15924 script codes and related Unicode data/header
10
1629
2964
2023-05-06T07:12:24Z
217.117.125.83
0
wikitext
text/x-wiki
{| class="wikitable sortable mw-collapsible {{#switch:{{{state|mw-uncollapsed}}} | mw-uncollapsed| uncollapsed = mw-uncollapsed||#default=mw-collapsed}}" style="font-size:85%; width:100%;"
|-
! colspan=9 | {{navbar-collapsible|Scripts in [[ISO 15924]]{{cref2|group=ISO_Unicode|a}}{{cref2|group=ISO_list|b}} and in [[Unicode]]{{cref2|group=ISO_changes|c}}{{cref2|group=Asof_Unicode_version|d}}|ISO 15924 script codes and related Unicode data}}
|-
! colspan=4 | ISO 15924
! colspan=5 | [[Script (Unicode)|Script in Unicode]]{{cref2|group=Unicode_charts|e}}
|- style="vertical-align:top"
! Code
! ISO number
! ISO formal name
! Directionality
! Unicode Alias{{cref2|group=Aliases_for_Unicode|f}}
! Version
! Characters
! Notes
! Description
<noinclude>|}
{{documentation|1=Template:ISO 15924 script codes and related Unicode data/doc}}</noinclude>
3fc998d5b9e54883e1bafd96c9e0c6a1da001e09
Module:Political party
828
1573
2908
2023-05-07T14:19:00Z
w>Primefac
0
Undid revision 1153505214 by [[Special:Contributions/R'n'B|R'n'B]] ([[User talk:R'n'B|talk]]) this is already in the /I module as an alternate name?
Scribunto
text/plain
local p = {}
local default_color = '#F8F9FA'
local categories = {
party_not_in_list = '[[Category:Pages using Political party with unknown party]]',
shortname_not_in_list = '[[Category:Pages using Political party with missing shortname]]',
color_not_in_list = '[[Category:Pages using Political party with missing color]]',
}
local function create_error(error_message)
return string.format('<strong class="error">%s</strong>', error_message)
end
local function getFirstLetter(party)
local index = mw.ustring.sub(party, 1, 1)
-- Set index for non-A-Z starts
if string.match(index, '%A') then
return '1'
end
return string.upper(index)
end
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
local delink = require('Module:Delink')._delink
text = delink({text, wikilinks = "target"})
end
return text
end
-- Example of having all the data - color and names - in one table. Requires one page to be edited instead of two when adding a new party.
function p._fetch(args)
if not args[1] then
return create_error("parameter 1 should be a party name.")
end
if not args[2] then
return create_error("parameter 2 should be the output type.")
end
local party = stripToNil(args[1])
local out_type = stripToNil(args[2])
if out_type == 'colour' then
out_type = 'color'
end
local index = getFirstLetter(party)
-- Load data from submodule
local data = mw.loadData('Module:Political party/' .. index)
local data_all = data.full
local party_alt = data.alternate[party]
local party_info
if party_alt then
if data_all[party_alt] then
party_info = data_all[party_alt]
else
index = getFirstLetter(party_alt)
data = mw.loadData('Module:Political party/' .. index)
party_info = data.full[party_alt]
end
else
party_info = data_all[party]
end
-- Check if database value exists
-- * Not even in database - return given error or input
-- * No color - return error
-- * No shortname/abbrev - return first non-blank of abbrev->shortname->input
if not party_info then
if out_type == 'color' then
return args.error or default_color
else
return args.error or party
end
end
local return_value = party_info[out_type]
if return_value == "" then
if out_type == 'color' then
return args.error or create_error("Value not in template. Please request that it be added.")
elseif out_type == 'abbrev' then
if party_info.shortname ~= "" then
return party_info.shortname
else
return party
end
elseif out_type == 'shortname' then
if party_info.abbrev ~= "" then
return party_info.abbrev
else
return party
end
else
return party
end
end
if out_type == 'color' and string.find(return_value, '#') then
return_value = string.gsub(return_value, '#', '#')
end
return return_value
end
function p.fetch(frame)
-- Initialise and populate variables
local getArgs = require("Module:Arguments").getArgs
local args = getArgs(frame)
return p._fetch(args)
end
return p
5619f7c33e00168878164325d0fcb8600faa2446
Template:Infobox UK place/dist
10
1410
2745
2023-05-07T17:59:58Z
w>MusikBot II
0
Changed protection settings for "[[Template:Infobox UK place/dist]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<!-- this template is for formatting a distance (using {{Convert}})
if type=mile then output is mm mi (kk km) otherwise kk km (mm mi)
rounding of output is based on input, unless less than 10 when one decimal place is used
--><includeonly>{{#ifeq: {{{type|}}}|mile|<!-- then -->{{convert|{{{distance|}}}|mi|km|abbr=on|{{#ifexpr: {{#invoke:convert/helper|cleanNumber|{{{distance|1}}}}}<10|1|}} }}|<!-- else -->{{convert|{{{distance|}}}|km|mi|abbr=on|{{#ifexpr: {{#invoke:convert/helper|cleanNumber|{{{distance|1}}}}}<10|1|}} }} }}</includeonly>
f1c736f32f2f8ef728071ab8b1c7cf16b9b5d51d
Module:Protection banner/config
828
41
77
2023-05-08T11:41:01Z
wikipedia>Fayenatic london
0
Update categories from "fully-protected" to "fully protected", removing hyphen, per valid request at [[WP:CFDS]]
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|'
.. 'protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',
},
move = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
.. ' from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move', catonly = 'yes'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
a20552ae38cb5253a4fa29aa126abc74215a589f
Template:Aka
10
578
1304
2023-05-08T20:30:03Z
Aaron Liu
40
MOS prohibits "aka"
wikitext
text/x-wiki
<abbr title="also known as">{{#if:{{{AKA|}}}{{{uc|}}}|AKA|a.k.a.}}</abbr><noinclude>
{{documentation}}
</noinclude>
78a22d82a9beabc017751e258efef369bd2bf13f
Template:Longitem
10
1340
2675
2023-05-09T01:38:28Z
w>Neveselbert
0
Undid revision 1153902556 by [[Special:Contributions/Neveselbert|Neveselbert]] ([[User talk:Neveselbert|talk]]) - backlinked
wikitext
text/x-wiki
<noinclude>{{#tag: code|
</noinclude>{{#ifeq: {{{1|+}}} | {{{1|-}}} | <div style="}}display: inline-block; line-height: 1.2em; padding: .1em 0; {{#ifeq: {{{1|+}}} | {{{1|-}}} | {{{style|}}}">{{{1|}}}</div> | <includeonly>width: 100%;</includeonly> }}<includeonly>{{#if:{{{2|}}}|[[Category:Pages using Template:Longitem with unnamed style parameter]]}}</includeonly><noinclude>
|lang=wikitext}}
{{documentation}}
</noinclude>
2919b818deb36b243e9f9517917cbcfaa2c8d4ec
Module:Convert/data
828
1166
2495
2023-05-10T03:20:18Z
w>Johnuniq
0
update from sandbox per [[Template talk:Convert#Module version 29]]
Scribunto
text/plain
-- Conversion data used by [[Module:Convert]] which uses mw.loadData() for
-- read-only access to this module so that it is loaded only once per page.
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
--
-- These data tables follow:
-- all_units all properties for a unit, including default output
-- default_exceptions exceptions for default output ('kg' and 'g' have different defaults)
-- link_exceptions exceptions for links ('kg' and 'g' have different links)
--
-- These tables are generated by a script which reads the wikitext of a page that
-- documents the required properties of each unit; see [[:en:Module:Convert/doc]].
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local all_units = {
["Gy"] = {
_name1 = "gray",
_symbol = "Gy",
utype = "absorbed radiation dose",
scale = 1,
prefixes = 1,
default = "rad",
link = "Gray (unit)",
},
["rad"] = {
_name1 = "rad",
_symbol = "rad",
utype = "absorbed radiation dose",
scale = 0.01,
prefixes = 1,
default = "Gy",
link = "Rad (unit)",
},
["cm/s2"] = {
name1 = "centimetre per second squared",
name1_us = "centimeter per second squared",
name2 = "centimetres per second squared",
name2_us = "centimeters per second squared",
symbol = "cm/s<sup>2</sup>",
utype = "acceleration",
scale = 0.01,
default = "ft/s2",
link = "Gal (unit)",
},
["ft/s2"] = {
name1 = "foot per second squared",
name2 = "feet per second squared",
symbol = "ft/s<sup>2</sup>",
utype = "acceleration",
scale = 0.3048,
default = "m/s2",
},
["g0"] = {
name1 = "standard gravity",
name2 = "standard gravities",
symbol = "''g''<sub>0</sub>",
utype = "acceleration",
scale = 9.80665,
default = "m/s2",
},
["g-force"] = {
name2 = "''g''",
symbol = "''g''",
utype = "acceleration",
scale = 9.80665,
default = "m/s2",
link = "g-force",
},
["km/hs"] = {
name1 = "kilometre per hour per second",
name1_us = "kilometer per hour per second",
name2 = "kilometres per hour per second",
name2_us = "kilometers per hour per second",
symbol = "km/(h⋅s)",
utype = "acceleration",
scale = 0.27777777777777779,
default = "mph/s",
link = "Acceleration",
},
["km/s2"] = {
name1 = "kilometre per second squared",
name1_us = "kilometer per second squared",
name2 = "kilometres per second squared",
name2_us = "kilometers per second squared",
symbol = "km/s<sup>2</sup>",
utype = "acceleration",
scale = 1000,
default = "mph/s",
link = "Acceleration",
},
["m/s2"] = {
name1 = "metre per second squared",
name1_us = "meter per second squared",
name2 = "metres per second squared",
name2_us = "meters per second squared",
symbol = "m/s<sup>2</sup>",
utype = "acceleration",
scale = 1,
default = "ft/s2",
},
["mph/s"] = {
name1 = "mile per hour per second",
name2 = "miles per hour per second",
symbol = "mph/s",
utype = "acceleration",
scale = 0.44704,
default = "km/hs",
link = "Acceleration",
},
["km/h/s"] = {
target = "km/hs",
},
["standard gravity"] = {
target = "g0",
},
["1000sqft"] = {
name1 = "thousand square feet",
name2 = "thousand square feet",
symbol = "1000 sq ft",
utype = "area",
scale = 92.90304,
default = "m2",
link = "Square foot",
},
["a"] = {
_name1 = "are",
_symbol = "a",
utype = "area",
scale = 100,
prefixes = 1,
default = "sqft",
link = "Hectare#Are",
},
["acre"] = {
symbol = "acre",
usename = 1,
utype = "area",
scale = 4046.8564224,
default = "ha",
subdivs = { ["rood"] = { 4, default = "ha" }, ["sqperch"] = { 160, default = "ha" } },
},
["acre-sing"] = {
target = "acre",
},
["arpent"] = {
symbol = "arpent",
usename = 1,
utype = "area",
scale = 3418.89,
default = "ha",
},
["cda"] = {
name1 = "cuerda",
symbol = "cda",
utype = "area",
scale = 3930.395625,
default = "ha acre",
},
["daa"] = {
name1 = "decare",
symbol = "daa",
utype = "area",
scale = 1000,
default = "km2 sqmi",
},
["dunam"] = {
symbol = "dunam",
usename = 1,
utype = "area",
scale = 1000,
default = "km2 sqmi",
},
["dunum"] = {
symbol = "dunum",
usename = 1,
utype = "area",
scale = 1000,
default = "km2 sqmi",
link = "Dunam",
},
["ha"] = {
name1 = "hectare",
symbol = "ha",
utype = "area",
scale = 10000,
default = "acre",
},
["hectare"] = {
name1 = "hectare",
symbol = "ha",
usename = 1,
utype = "area",
scale = 10000,
default = "acre",
},
["Irish acre"] = {
name1 = "Irish acre",
symbol = "Irish acres",
utype = "area",
scale = 6555.2385024,
default = "ha",
link = "Acre (Irish)",
},
["m2"] = {
_name1 = "square metre",
_name1_us= "square meter",
_symbol = "m<sup>2</sup>",
prefix_position= 8,
utype = "area",
scale = 1,
prefixes = 2,
default = "sqft",
link = "Square metre",
},
["pondemaat"] = {
name1 = "pondemaat",
name2 = "pondemaat",
symbol = "pond",
utype = "area",
scale = 3674.363358816,
default = "m2",
link = ":nl:pondemaat",
},
["pyeong"] = {
name2 = "pyeong",
symbol = "pyeong",
usename = 1,
utype = "area",
scale = 3.3057851239669422,
default = "m2",
},
["rai"] = {
name2 = "rai",
symbol = "rai",
utype = "area",
scale = 1600,
default = "m2",
link = "Rai (unit)",
},
["rood"] = {
symbol = "rood",
usename = 1,
utype = "area",
scale = 1011.7141056,
default = "sqft m2",
subdivs = { ["sqperch"] = { 40, default = "m2" } },
link = "Rood (unit)",
},
["sqfoot"] = {
name1 = "square foot",
name2 = "square foot",
symbol = "sq ft",
utype = "area",
scale = 0.09290304,
default = "m2",
},
["sqft"] = {
name1 = "square foot",
name2 = "square feet",
symbol = "sq ft",
utype = "area",
scale = 0.09290304,
default = "m2",
},
["sqin"] = {
name1 = "square inch",
name2 = "square inches",
symbol = "sq in",
utype = "area",
scale = 0.00064516,
default = "cm2",
},
["sqmi"] = {
name1 = "square mile",
symbol = "sq mi",
utype = "area",
scale = 2589988.110336,
default = "km2",
},
["sqnmi"] = {
name1 = "square nautical mile",
symbol = "sq nmi",
utype = "area",
scale = 3429904,
default = "km2 sqmi",
link = "Nautical mile",
},
["sqperch"] = {
name2 = "perches",
symbol = "perch",
usename = 1,
utype = "area",
scale = 25.29285264,
default = "m2",
link = "Rod (unit)#Area and volume",
},
["sqverst"] = {
symbol = "square verst",
usename = 1,
utype = "area",
scale = 1138062.24,
default = "km2 sqmi",
link = "Verst",
},
["sqyd"] = {
name1 = "square yard",
symbol = "sq yd",
utype = "area",
scale = 0.83612736,
default = "m2",
},
["tsubo"] = {
name2 = "tsubo",
symbol = "tsubo",
usename = 1,
utype = "area",
scale = 3.3057851239669422,
default = "m2",
link = "Japanese units of measurement#Area",
},
["acres"] = {
target = "acre",
},
["are"] = {
target = "a",
},
["decare"] = {
target = "daa",
},
["foot2"] = {
target = "sqfoot",
},
["ft2"] = {
target = "sqft",
},
["in2"] = {
target = "sqin",
symbol = "in<sup>2</sup>",
},
["km²"] = {
target = "km2",
},
["mi2"] = {
target = "sqmi",
},
["million acre"] = {
target = "e6acre",
},
["million acres"] = {
target = "e6acre",
},
["million hectares"] = {
target = "e6ha",
},
["m²"] = {
target = "m2",
},
["nmi2"] = {
target = "sqnmi",
},
["pond"] = {
target = "pondemaat",
},
["sq arp"] = {
target = "arpent",
},
["sqkm"] = {
target = "km2",
},
["sqm"] = {
target = "m2",
},
["square verst"] = {
target = "sqverst",
},
["verst2"] = {
target = "sqverst",
},
["yd2"] = {
target = "sqyd",
},
["m2/ha"] = {
name1 = "square metre per hectare",
name1_us = "square meter per hectare",
name2 = "square metres per hectare",
name2_us = "square meters per hectare",
symbol = "m<sup>2</sup>/ha",
utype = "area per unit area",
scale = 0.0001,
default = "sqft/acre",
link = "Basal area",
},
["sqft/acre"] = {
name1 = "square foot per acre",
name2 = "square feet per acre",
symbol = "sq ft/acre",
utype = "area per unit area",
scale = 2.295684113865932e-5,
default = "m2/ha",
link = "Basal area",
},
["cent"] = {
name1 = "cent",
symbol = "¢",
utype = "cent",
scale = 1,
default = "cent",
link = "Cent (currency)",
},
["¢"] = {
target = "cent",
},
["A.h"] = {
name1 = "ampere hour",
symbol = "A⋅h",
utype = "charge",
scale = 3600,
default = "coulomb",
},
["coulomb"] = {
_name1 = "coulomb",
_symbol = "C",
utype = "charge",
scale = 1,
prefixes = 1,
default = "e",
link = "Coulomb",
},
["e"] = {
name1 = "elementary charge",
symbol = "''e''",
utype = "charge",
scale = 1.602176487e-19,
default = "coulomb",
},
["g-mol"] = {
name1 = "gram-mole",
symbol = "g‑mol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["gmol"] = {
name1 = "gram-mole",
symbol = "gmol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["kmol"] = {
name1 = "kilomole",
symbol = "kmol",
utype = "chemical amount",
scale = 1000,
default = "lbmol",
link = "Mole (unit)",
},
["lb-mol"] = {
name1 = "pound-mole",
symbol = "lb‑mol",
utype = "chemical amount",
scale = 453.59237,
default = "mol",
},
["lbmol"] = {
name1 = "pound-mole",
symbol = "lbmol",
utype = "chemical amount",
scale = 453.59237,
default = "mol",
},
["mol"] = {
name1 = "mole",
symbol = "mol",
utype = "chemical amount",
scale = 1,
default = "lbmol",
link = "Mole (unit)",
},
["kgCO2/L"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg(CO<sub>2</sub>)/L",
utype = "co2 per unit volume",
scale = 1000,
default = "lbCO2/USgal",
link = "Exhaust gas",
},
["lbCO2/USgal"] = {
name1 = "pound per US gallon",
name2 = "pounds per US gallon",
symbol = "lbCO2/US gal",
utype = "co2 per unit volume",
scale = 119.82642731689663,
default = "kgCO2/L",
link = "Exhaust gas",
},
["oz/lb"] = {
per = { "oz", "lb" },
utype = "concentration",
default = "mg/kg",
},
["mg/kg"] = {
per = { "mg", "kg" },
utype = "concentration",
default = "oz/lb",
},
["g/dm3"] = {
name1 = "gram per cubic decimetre",
name1_us = "gram per cubic decimeter",
name2 = "grams per cubic decimetre",
name2_us = "grams per cubic decimeter",
symbol = "g/dm<sup>3</sup>",
utype = "density",
scale = 1,
default = "kg/m3",
link = "Density",
},
["g/L"] = {
name1 = "gram per litre",
name1_us = "gram per liter",
name2 = "grams per litre",
name2_us = "grams per liter",
symbol = "g/L",
utype = "density",
scale = 1,
default = "lb/cuin",
link = "Density",
},
["g/mL"] = {
name1 = "gram per millilitre",
name1_us = "gram per milliliter",
name2 = "grams per millilitre",
name2_us = "grams per milliliter",
symbol = "g/mL",
utype = "density",
scale = 1000,
default = "lb/cuin",
link = "Density",
},
["g/ml"] = {
name1 = "gram per millilitre",
name1_us = "gram per milliliter",
name2 = "grams per millilitre",
name2_us = "grams per milliliter",
symbol = "g/ml",
utype = "density",
scale = 1000,
default = "lb/cuin",
link = "Density",
},
["kg/dm3"] = {
name1 = "kilogram per cubic decimetre",
name1_us = "kilogram per cubic decimeter",
name2 = "kilograms per cubic decimetre",
name2_us = "kilograms per cubic decimeter",
symbol = "kg/dm<sup>3</sup>",
utype = "density",
scale = 1000,
default = "lb/cuft",
link = "Density",
},
["kg/L"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg/L",
utype = "density",
scale = 1000,
default = "lb/USgal",
link = "Density",
},
["kg/l"] = {
name1 = "kilogram per litre",
name1_us = "kilogram per liter",
name2 = "kilograms per litre",
name2_us = "kilograms per liter",
symbol = "kg/l",
utype = "density",
scale = 1000,
default = "lb/USgal",
link = "Density",
},
["kg/m3"] = {
name1 = "kilogram per cubic metre",
name1_us = "kilogram per cubic meter",
name2 = "kilograms per cubic metre",
name2_us = "kilograms per cubic meter",
symbol = "kg/m<sup>3</sup>",
utype = "density",
scale = 1,
default = "lb/cuyd",
link = "Density",
},
["lb/cuft"] = {
name1 = "pound per cubic foot",
name2 = "pounds per cubic foot",
symbol = "lb/cu ft",
utype = "density",
scale = 16.018463373960142,
default = "g/cm3",
link = "Density",
},
["lb/cuin"] = {
name1 = "pound per cubic inch",
name2 = "pounds per cubic inch",
symbol = "lb/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["lb/cuyd"] = {
name1 = "pound per cubic yard",
name2 = "pounds per cubic yard",
symbol = "lb/cu yd",
utype = "density",
scale = 0.5932764212577829,
default = "kg/m3",
link = "Density",
},
["lb/impgal"] = {
name1 = "pound per imperial gallon",
name2 = "pounds per imperial gallon",
symbol = "lb/imp gal",
utype = "density",
scale = 99.776372663101697,
default = "kg/L",
link = "Density",
},
["lb/in3"] = {
name1 = "pound per cubic inch",
name2 = "pounds per cubic inch",
symbol = "lb/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["lb/U.S.gal"] = {
name1 = "pound per U.S. gallon",
name2 = "pounds per U.S. gallon",
symbol = "lb/U.S. gal",
utype = "density",
scale = 119.82642731689663,
default = "kg/L",
link = "Density",
},
["lb/USbu"] = {
name1 = "pound per US bushel",
name2 = "pounds per US bushel",
symbol = "lb/US bu",
utype = "density",
scale = 12.871859780974471,
default = "kg/m3",
link = "Bushel",
},
["lb/USgal"] = {
name1 = "pound per US gallon",
name2 = "pounds per US gallon",
symbol = "lb/US gal",
utype = "density",
scale = 119.82642731689663,
default = "kg/L",
link = "Density",
},
["lbm/cuin"] = {
name1 = "pound mass per cubic inch",
name2 = "pounds mass per cubic inch",
symbol = "lbm/cu in",
utype = "density",
scale = 27679.904710203122,
default = "g/cm3",
link = "Density",
},
["mg/L"] = {
name1 = "milligram per litre",
name1_us = "milligram per liter",
name2 = "milligrams per litre",
name2_us = "milligrams per liter",
symbol = "mg/L",
utype = "density",
scale = 0.001,
default = "lb/cuin",
link = "Density",
},
["oz/cuin"] = {
name1 = "ounce per cubic inch",
name2 = "ounces per cubic inch",
symbol = "oz/cu in",
utype = "density",
scale = 1729.9940443876951,
default = "g/cm3",
link = "Density",
},
["g/cm3"] = {
per = { "g", "cm3" },
utype = "density",
default = "lb/cuin",
},
["g/m3"] = {
per = { "g", "m3" },
utype = "density",
default = "lb/cuyd",
link = "Density",
},
["Mg/m3"] = {
per = { "Mg", "m3" },
utype = "density",
default = "lb/cuft",
},
["mg/l"] = {
per = { "mg", "ll" },
utype = "density",
default = "oz/cuin",
},
["μg/dL"] = {
per = { "μg", "dL" },
utype = "density",
default = "lb/cuin",
},
["μg/l"] = {
per = { "μg", "ll" },
utype = "density",
default = "oz/cuin",
},
["lb/ft3"] = {
target = "lb/cuft",
},
["lb/yd3"] = {
target = "lb/cuyd",
},
["lbm/in3"] = {
target = "lbm/cuin",
},
["mcg/dL"] = {
target = "μg/dL",
},
["oz/in3"] = {
target = "oz/cuin",
},
["ug/dL"] = {
target = "μg/dL",
},
["ug/l"] = {
target = "μg/l",
},
["B.O.T.U."] = {
name1 = "Board of Trade Unit",
symbol = "B.O.T.U.",
utype = "energy",
scale = 3600000,
default = "MJ",
link = "Kilowatt-hour",
},
["bboe"] = {
name1 = "barrel of oil equivalent",
name2 = "barrels of oil equivalent",
symbol = "bboe",
utype = "energy",
scale = 6117863200,
default = "GJ",
},
["BOE"] = {
name1 = "barrel of oil equivalent",
name2 = "barrels of oil equivalent",
symbol = "BOE",
utype = "energy",
scale = 6117863200,
default = "GJ",
},
["BTU"] = {
name1 = "British thermal unit",
symbol = "BTU",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
},
["Btu"] = {
name1 = "British thermal unit",
symbol = "Btu",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
},
["BTU-39F"] = {
name1 = "British thermal unit (39°F)",
name2 = "British thermal units (39°F)",
symbol = "BTU<sub>39°F</sub>",
utype = "energy",
scale = 1059.67,
default = "kJ",
link = "British thermal unit",
},
["Btu-39F"] = {
name1 = "British thermal unit (39°F)",
name2 = "British thermal units (39°F)",
symbol = "Btu<sub>39°F</sub>",
utype = "energy",
scale = 1059.67,
default = "kJ",
link = "British thermal unit",
},
["BTU-59F"] = {
name1 = "British thermal unit (59°F)",
name2 = "British thermal units (59°F)",
symbol = "BTU<sub>59°F</sub>",
utype = "energy",
scale = 1054.804,
default = "kJ",
link = "British thermal unit",
},
["Btu-59F"] = {
name1 = "British thermal unit (59°F)",
name2 = "British thermal units (59°F)",
symbol = "Btu<sub>59°F</sub>",
utype = "energy",
scale = 1054.804,
default = "kJ",
link = "British thermal unit",
},
["BTU-60F"] = {
name1 = "British thermal unit (60°F)",
name2 = "British thermal units (60°F)",
symbol = "BTU<sub>60°F</sub>",
utype = "energy",
scale = 1054.68,
default = "kJ",
link = "British thermal unit",
},
["Btu-60F"] = {
name1 = "British thermal unit (60°F)",
name2 = "British thermal units (60°F)",
symbol = "Btu<sub>60°F</sub>",
utype = "energy",
scale = 1054.68,
default = "kJ",
link = "British thermal unit",
},
["BTU-63F"] = {
name1 = "British thermal unit (63°F)",
name2 = "British thermal units (63°F)",
symbol = "BTU<sub>63°F</sub>",
utype = "energy",
scale = 1054.6,
default = "kJ",
link = "British thermal unit",
},
["Btu-63F"] = {
name1 = "British thermal unit (63°F)",
name2 = "British thermal units (63°F)",
symbol = "Btu<sub>63°F</sub>",
utype = "energy",
scale = 1054.6,
default = "kJ",
link = "British thermal unit",
},
["BTU-ISO"] = {
name1 = "British thermal unit (ISO)",
name2 = "British thermal units (ISO)",
symbol = "BTU<sub>ISO</sub>",
utype = "energy",
scale = 1055.056,
default = "kJ",
link = "British thermal unit",
},
["Btu-ISO"] = {
target = "BTU-ISO",
},
["BTU-IT"] = {
name1 = "British thermal unit (IT)",
name2 = "British thermal units (IT)",
symbol = "BTU<sub>IT</sub>",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
link = "British thermal unit",
},
["Btu-IT"] = {
name1 = "British thermal unit (IT)",
name2 = "British thermal units (IT)",
symbol = "Btu<sub>IT</sub>",
utype = "energy",
scale = 1055.05585262,
default = "kJ",
link = "British thermal unit",
},
["BTU-mean"] = {
name1 = "British thermal unit (mean)",
name2 = "British thermal units (mean)",
symbol = "BTU<sub>mean</sub>",
utype = "energy",
scale = 1055.87,
default = "kJ",
link = "British thermal unit",
},
["Btu-mean"] = {
name1 = "British thermal unit (mean)",
name2 = "British thermal units (mean)",
symbol = "Btu<sub>mean</sub>",
utype = "energy",
scale = 1055.87,
default = "kJ",
link = "British thermal unit",
},
["BTU-th"] = {
name1 = "British thermal unit (thermochemical)",
name2 = "British thermal units (thermochemical)",
symbol = "BTU<sub>th</sub>",
utype = "energy",
scale = 1054.35026444,
default = "kJ",
link = "British thermal unit",
},
["Btu-th"] = {
name1 = "British thermal unit (thermochemical)",
name2 = "British thermal units (thermochemical)",
symbol = "Btu<sub>th</sub>",
utype = "energy",
scale = 1054.35026444,
default = "kJ",
link = "British thermal unit",
},
["Cal"] = {
name1 = "calorie",
symbol = "Cal",
utype = "energy",
scale = 4184,
default = "kJ",
},
["cal"] = {
name1 = "calorie",
symbol = "cal",
utype = "energy",
scale = 4.184,
default = "J",
},
["Cal-15"] = {
name1 = "Calorie (15°C)",
name2 = "Calories (15°C)",
symbol = "Cal<sub>15</sub>",
utype = "energy",
scale = 4185.8,
default = "kJ",
link = "Calorie",
},
["cal-15"] = {
name1 = "calorie (15°C)",
name2 = "calories (15°C)",
symbol = "cal<sub>15</sub>",
utype = "energy",
scale = 4.1858,
default = "J",
link = "Calorie",
},
["Cal-IT"] = {
name1 = "Calorie (International Steam Table)",
name2 = "Calories (International Steam Table)",
symbol = "Cal<sub>IT</sub>",
utype = "energy",
scale = 4186.8,
default = "kJ",
link = "Calorie",
},
["cal-IT"] = {
name1 = "calorie (International Steam Table)",
name2 = "calories (International Steam Table)",
symbol = "cal<sub>IT</sub>",
utype = "energy",
scale = 4.1868,
default = "J",
link = "Calorie",
},
["Cal-th"] = {
name1 = "Calorie (thermochemical)",
name2 = "Calories (thermochemical)",
symbol = "Cal<sub>th</sub>",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["cal-th"] = {
name1 = "calorie (thermochemical)",
name2 = "calories (thermochemical)",
symbol = "cal<sub>th</sub>",
utype = "energy",
scale = 4.184,
default = "J",
link = "Calorie",
},
["CHU-IT"] = {
name1 = "Celsius heat unit (International Table)",
name2 = "Celsius heat units (International Table)",
symbol = "CHU<sub>IT</sub>",
utype = "energy",
scale = 1899.100534716,
default = "kJ",
link = "Conversion of units#Energy",
},
["cufootnaturalgas"] = {
name1 = "cubic foot of natural gas",
name2 = "cubic foot of natural gas",
symbol = "cuftnaturalgas",
usename = 1,
utype = "energy",
scale = 1055055.85262,
default = "MJ",
link = "Conversion of units#Energy",
},
["cuftnaturalgas"] = {
name1 = "cubic foot of natural gas",
name2 = "cubic feet of natural gas",
symbol = "cuftnaturalgas",
usename = 1,
utype = "energy",
scale = 1055055.85262,
default = "MJ",
link = "Conversion of units#Energy",
},
["Eh"] = {
name1 = "Hartree",
symbol = "''E''<sub>h</sub>",
utype = "energy",
scale = 4.35974417e-18,
default = "eV",
},
["erg"] = {
symbol = "erg",
utype = "energy",
scale = 0.0000001,
default = "μJ",
},
["eV"] = {
name1 = "electronvolt",
symbol = "eV",
utype = "energy",
scale = 1.602176487e-19,
default = "aJ",
},
["feV"] = {
name1 = "femtoelectronvolt",
symbol = "feV",
utype = "energy",
scale = 1.602176487e-34,
default = "yJ",
link = "Electronvolt",
},
["foe"] = {
symbol = "foe",
utype = "energy",
scale = 1e44,
default = "YJ",
link = "Foe (unit)",
},
["ftlb"] = {
name1 = "foot-pound",
symbol = "ft⋅lb",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftlb-f"] = {
name1 = "foot-pound force",
name2 = "foot-pounds force",
symbol = "ft⋅lb<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftlbf"] = {
name1 = "foot-pound force",
name2 = "foot-pounds force",
symbol = "ft⋅lbf",
utype = "energy",
alttype = "torque",
scale = 1.3558179483314004,
default = "J",
link = "Foot-pound (energy)",
},
["ftpdl"] = {
name1 = "foot-poundal",
symbol = "ft⋅pdl",
utype = "energy",
scale = 0.0421401100938048,
default = "J",
},
["GeV"] = {
name1 = "gigaelectronvolt",
symbol = "GeV",
utype = "energy",
scale = 1.602176487e-10,
default = "nJ",
link = "Electronvolt",
},
["gTNT"] = {
name2 = "grams of TNT",
symbol = "gram of TNT",
usename = 1,
utype = "energy",
scale = 4184,
default = "kJ",
link = "TNT equivalent",
},
["Gtoe"] = {
name1 = "gigatonne of oil equivalent",
name2 = "gigatonnes of oil equivalent",
symbol = "Gtoe",
utype = "energy",
scale = 4.1868e19,
default = "EJ",
link = "Tonne of oil equivalent",
},
["GtonTNT"] = {
name2 = "gigatons of TNT",
symbol = "gigaton of TNT",
usename = 1,
utype = "energy",
scale = 4.184e18,
default = "EJ",
link = "TNT equivalent",
},
["GtTNT"] = {
name2 = "gigatonnes of TNT",
symbol = "gigatonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e18,
default = "EJ",
link = "TNT equivalent",
},
["GW.h"] = {
name1 = "gigawatt-hour",
symbol = "GW⋅h",
utype = "energy",
scale = 3.6e12,
default = "TJ",
link = "Kilowatt-hour",
},
["GWh"] = {
name1 = "gigawatt-hour",
symbol = "GWh",
utype = "energy",
scale = 3.6e12,
default = "TJ",
link = "Kilowatt-hour",
},
["hph"] = {
name1 = "horsepower-hour",
symbol = "hp⋅h",
utype = "energy",
scale = 2684519.537696172792,
default = "kWh",
link = "Horsepower",
},
["inlb"] = {
name1 = "inch-pound",
symbol = "in⋅lb",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inlb-f"] = {
name1 = "inch-pound force",
name2 = "inch-pounds force",
symbol = "in⋅lb<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inlbf"] = {
name1 = "inch-pound force",
name2 = "inch-pounds force",
symbol = "in⋅lbf",
utype = "energy",
alttype = "torque",
scale = 0.1129848290276167,
default = "mJ",
link = "Foot-pound (energy)",
},
["inoz-f"] = {
name1 = "inch-ounce force",
name2 = "inch-ounces force",
symbol = "in⋅oz<sub>f</sub>",
utype = "energy",
alttype = "torque",
scale = 0.00706155181422604375,
default = "mJ",
link = "Foot-pound (energy)",
},
["inozf"] = {
name1 = "inch-ounce force",
name2 = "inch-ounces force",
symbol = "in⋅ozf",
utype = "energy",
alttype = "torque",
scale = 0.00706155181422604375,
default = "mJ",
link = "Foot-pound (energy)",
},
["J"] = {
_name1 = "joule",
_symbol = "J",
utype = "energy",
scale = 1,
prefixes = 1,
default = "cal",
link = "Joule",
},
["kBOE"] = {
name1 = "kilo barrel of oil equivalent",
name2 = "kilo barrels of oil equivalent",
symbol = "kBOE",
utype = "energy",
scale = 6.1178632e12,
default = "TJ",
link = "Barrel of oil equivalent",
},
["kcal"] = {
name1 = "kilocalorie",
symbol = "kcal",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["kcal-15"] = {
name1 = "kilocalorie (15°C)",
name2 = "kilocalories (15°C)",
symbol = "kcal<sub>15</sub>",
utype = "energy",
scale = 4185.8,
default = "kJ",
link = "Calorie",
},
["kcal-IT"] = {
name1 = "kilocalorie (International Steam Table)",
name2 = "kilocalories (International Steam Table)",
symbol = "kcal<sub>IT</sub>",
utype = "energy",
scale = 4186.8,
default = "kJ",
link = "Calorie",
},
["kcal-th"] = {
name1 = "kilocalorie (thermochemical)",
name2 = "kilocalories (thermochemical)",
symbol = "kcal<sub>th</sub>",
utype = "energy",
scale = 4184,
default = "kJ",
link = "Calorie",
},
["kerg"] = {
name1 = "kiloerg",
symbol = "kerg",
utype = "energy",
scale = 0.0001,
default = "mJ",
link = "Erg",
},
["keV"] = {
name1 = "kiloelectronvolt",
symbol = "keV",
utype = "energy",
scale = 1.602176487e-16,
default = "fJ",
link = "Electronvolt",
},
["kgTNT"] = {
name2 = "kilograms of TNT",
symbol = "kilogram of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["kt(TNT)"] = {
name1 = "kilotonne",
name1_us = "kiloton",
symbol = "kt",
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["ktoe"] = {
name1 = "kilotonne of oil equivalent",
name2 = "kilotonnes of oil equivalent",
symbol = "ktoe",
utype = "energy",
scale = 4.1868e13,
default = "TJ",
link = "Tonne of oil equivalent",
},
["ktonTNT"] = {
name1 = "kiloton of TNT",
name2 = "kilotons of TNT",
symbol = "kt",
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["ktTNT"] = {
name2 = "kilotonnes of TNT",
symbol = "kilotonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e12,
default = "TJ",
link = "TNT equivalent",
},
["kW.h"] = {
name1 = "kilowatt-hour",
symbol = "kW⋅h",
utype = "energy",
scale = 3600000,
default = "MJ",
},
["kWh"] = {
name1 = "kilowatt-hour",
symbol = "kWh",
utype = "energy",
scale = 3600000,
default = "MJ",
},
["Mcal"] = {
name1 = "megacalorie",
symbol = "Mcal",
utype = "energy",
scale = 4184000,
default = "MJ",
link = "Calorie",
},
["mcal"] = {
name1 = "millicalorie",
symbol = "mcal",
utype = "energy",
scale = 0.004184,
default = "mJ",
link = "Calorie",
},
["Mcal-15"] = {
name1 = "megacalorie (15°C)",
name2 = "megacalories (15°C)",
symbol = "Mcal<sub>15</sub>",
utype = "energy",
scale = 4185800,
default = "MJ",
link = "Calorie",
},
["mcal-15"] = {
name1 = "millicalorie (15°C)",
name2 = "millicalories (15°C)",
symbol = "mcal<sub>15</sub>",
utype = "energy",
scale = 0.0041858,
default = "mJ",
link = "Calorie",
},
["Mcal-IT"] = {
name1 = "megacalorie (International Steam Table)",
name2 = "megacalories (International Steam Table)",
symbol = "Mcal<sub>IT</sub>",
utype = "energy",
scale = 4186800,
default = "MJ",
link = "Calorie",
},
["mcal-IT"] = {
name1 = "millicalorie (International Steam Table)",
name2 = "millicalories (International Steam Table)",
symbol = "mcal<sub>IT</sub>",
utype = "energy",
scale = 0.0041868,
default = "mJ",
link = "Calorie",
},
["Mcal-th"] = {
name1 = "megacalorie (thermochemical)",
name2 = "megacalories (thermochemical)",
symbol = "Mcal<sub>th</sub>",
utype = "energy",
scale = 4184000,
default = "MJ",
link = "Calorie",
},
["mcal-th"] = {
name1 = "millicalorie (thermochemical)",
name2 = "millicalories (thermochemical)",
symbol = "mcal<sub>th</sub>",
utype = "energy",
scale = 0.004184,
default = "mJ",
link = "Calorie",
},
["Merg"] = {
name1 = "megaerg",
symbol = "Merg",
utype = "energy",
scale = 0.1,
default = "J",
link = "Erg",
},
["merg"] = {
name1 = "millierg",
symbol = "merg",
utype = "energy",
scale = 0.0000000001,
default = "μJ",
link = "Erg",
},
["MeV"] = {
name1 = "megaelectronvolt",
symbol = "MeV",
utype = "energy",
scale = 1.602176487e-13,
default = "pJ",
link = "Electronvolt",
},
["meV"] = {
name1 = "millielectronvolt",
symbol = "meV",
utype = "energy",
scale = 1.602176487e-22,
default = "zJ",
link = "Electronvolt",
},
["MMBtu"] = {
name1 = "million British thermal units",
name2 = "million British thermal units",
symbol = "MMBtu",
utype = "energy",
scale = 1055055852.62,
default = "GJ",
link = "British thermal unit",
},
["Mt(TNT)"] = {
name1 = "megatonne",
name1_us = "megaton",
symbol = "Mt",
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["Mtoe"] = {
name1 = "megatonne of oil equivalent",
name2 = "megatonnes of oil equivalent",
symbol = "Mtoe",
utype = "energy",
scale = 4.1868e16,
default = "PJ",
link = "Tonne of oil equivalent",
},
["MtonTNT"] = {
name1 = "megaton of TNT",
name2 = "megatons of TNT",
symbol = "Mt",
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["mtonTNT"] = {
name2 = "millitons of TNT",
symbol = "milliton of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["MtTNT"] = {
name2 = "megatonnes of TNT",
symbol = "megatonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e15,
default = "PJ",
link = "TNT equivalent",
},
["mtTNT"] = {
name2 = "millitonnes of TNT",
symbol = "millitonne of TNT",
usename = 1,
utype = "energy",
scale = 4184000,
default = "MJ",
link = "TNT equivalent",
},
["MW.h"] = {
name1 = "megawatt-hour",
symbol = "MW⋅h",
utype = "energy",
scale = 3600000000,
default = "GJ",
link = "Kilowatt-hour",
},
["mW.h"] = {
name1 = "milliwatt-hour",
symbol = "mW⋅h",
utype = "energy",
scale = 3.6,
default = "J",
link = "Kilowatt-hour",
},
["MWh"] = {
name1 = "megawatt-hour",
symbol = "MWh",
utype = "energy",
scale = 3600000000,
default = "GJ",
link = "Kilowatt-hour",
},
["mWh"] = {
name1 = "milliwatt-hour",
symbol = "mWh",
utype = "energy",
scale = 3.6,
default = "J",
link = "Kilowatt-hour",
},
["neV"] = {
name1 = "nanoelectronvolt",
symbol = "neV",
utype = "energy",
scale = 1.602176487e-28,
default = "yJ",
link = "Electronvolt",
},
["PeV"] = {
name1 = "petaelectronvolt",
symbol = "PeV",
utype = "energy",
scale = 0.0001602176487,
default = "mJ",
link = "Electronvolt",
},
["peV"] = {
name1 = "picoelectronvolt",
symbol = "peV",
utype = "energy",
scale = 1.602176487e-31,
default = "yJ",
link = "Electronvolt",
},
["PSh"] = {
name1 = "Pferdestärkenstunde",
symbol = "PSh",
utype = "energy",
scale = 2647795.5,
default = "kWh",
},
["quad"] = {
name1 = "quadrillion British thermal units",
name2 = "quadrillion British thermal units",
symbol = "quad",
utype = "energy",
scale = 1.054804e18,
default = "EJ",
link = "Quad (unit)",
},
["Ry"] = {
name1 = "rydberg",
symbol = "Ry",
utype = "energy",
scale = 2.1798741e-18,
default = "eV",
link = "Rydberg constant",
},
["scf"] = {
name1 = "standard cubic foot",
name2 = "standard cubic feet",
symbol = "scf",
utype = "energy",
scale = 2869.2044809344,
default = "kJ",
},
["scfoot"] = {
name1 = "standard cubic foot",
name2 = "standard cubic foot",
symbol = "scf",
utype = "energy",
scale = 2869.2044809344,
default = "kJ",
},
["t(TNT)"] = {
name1 = "tonne",
name1_us = "ton",
symbol = "t",
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["TeV"] = {
name1 = "teraelectronvolt",
symbol = "TeV",
utype = "energy",
scale = 1.602176487e-7,
default = "μJ",
link = "Electronvolt",
},
["th"] = {
name1 = "thermie",
symbol = "th",
utype = "energy",
scale = 4186800,
default = "MJ",
link = "Conversion of units#Energy",
},
["thm-EC"] = {
name1 = "therm (EC)",
name2 = "therms (EC)",
symbol = "thm (EC)",
utype = "energy",
scale = 105506000,
default = "MJ",
link = "Therm",
},
["thm-UK"] = {
name1 = "therm (UK)",
name2 = "therms (UK)",
symbol = "thm (UK)",
utype = "energy",
scale = 105505585.257348,
default = "MJ",
link = "Therm",
},
["thm-US"] = {
name1 = "therm (US)",
name1_us = "therm (U.S.)",
name2 = "therms (US)",
name2_us = "therms (U.S.)",
symbol = "thm (US)",
sym_us = "thm (U.S.)",
utype = "energy",
scale = 105480400,
default = "MJ",
link = "Therm",
},
["toe"] = {
name1 = "tonne of oil equivalent",
name2 = "tonnes of oil equivalent",
symbol = "toe",
utype = "energy",
scale = 41868000000,
default = "GJ",
},
["tonTNT"] = {
name2 = "tons of TNT",
symbol = "ton of TNT",
usename = 1,
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["tTNT"] = {
name2 = "tonnes of TNT",
symbol = "tonne of TNT",
usename = 1,
utype = "energy",
scale = 4184000000,
default = "GJ",
link = "TNT equivalent",
},
["TtonTNT"] = {
name2 = "teratons of TNT",
symbol = "teraton of TNT",
usename = 1,
utype = "energy",
scale = 4.184e21,
default = "ZJ",
link = "TNT equivalent",
},
["TtTNT"] = {
name2 = "teratonnes of TNT",
symbol = "teratonne of TNT",
usename = 1,
utype = "energy",
scale = 4.184e21,
default = "ZJ",
link = "TNT equivalent",
},
["TW.h"] = {
name1 = "terawatt-hour",
symbol = "TW⋅h",
utype = "energy",
scale = 3.6e15,
default = "PJ",
link = "Kilowatt-hour",
},
["TWh"] = {
name1 = "terawatt-hour",
symbol = "TWh",
utype = "energy",
scale = 3.6e15,
default = "PJ",
link = "Kilowatt-hour",
},
["W.h"] = {
name1 = "watt-hour",
symbol = "W⋅h",
utype = "energy",
scale = 3600,
default = "kJ",
link = "Kilowatt-hour",
},
["Wh"] = {
name1 = "watt-hour",
symbol = "Wh",
utype = "energy",
scale = 3600,
default = "kJ",
link = "Kilowatt-hour",
},
["μerg"] = {
name1 = "microerg",
symbol = "μerg",
utype = "energy",
scale = 1e-13,
default = "nJ",
link = "Erg",
},
["μeV"] = {
name1 = "microelectronvolt",
symbol = "μeV",
utype = "energy",
scale = 1.602176487e-25,
default = "yJ",
link = "Electronvolt",
},
["μW.h"] = {
name1 = "microwatt-hour",
symbol = "μW⋅h",
utype = "energy",
scale = 0.0036,
default = "mJ",
link = "Kilowatt-hour",
},
["μWh"] = {
name1 = "microwatt-hour",
symbol = "μWh",
utype = "energy",
scale = 0.0036,
default = "mJ",
link = "Kilowatt-hour",
},
["-kW.h"] = {
target = "kW.h",
link = "Kilowatt hour",
},
["btu"] = {
target = "BTU",
},
["Calorie"] = {
target = "Cal",
},
["ft.lbf"] = {
target = "ftlbf",
},
["ft·lbf"] = {
target = "ftlbf",
},
["g-cal-15"] = {
target = "cal-15",
},
["g-cal-IT"] = {
target = "cal-IT",
},
["g-cal-th"] = {
target = "cal-th",
},
["g-kcal-15"] = {
target = "kcal-15",
},
["g-kcal-IT"] = {
target = "kcal-IT",
},
["g-kcal-th"] = {
target = "kcal-th",
},
["g-Mcal-15"] = {
target = "Mcal-15",
},
["g-mcal-15"] = {
target = "mcal-15",
},
["g-Mcal-IT"] = {
target = "Mcal-IT",
},
["g-mcal-IT"] = {
target = "mcal-IT",
},
["g-Mcal-th"] = {
target = "Mcal-th",
},
["g-mcal-th"] = {
target = "mcal-th",
},
["GW-h"] = {
target = "GW.h",
},
["GW·h"] = {
target = "GW.h",
},
["Hartree"] = {
target = "Eh",
},
["hp.h"] = {
target = "hph",
},
["in.lb-f"] = {
target = "inlb-f",
},
["in.lbf"] = {
target = "inlbf",
},
["in.oz-f"] = {
target = "inoz-f",
},
["in.ozf"] = {
target = "inozf",
},
["kbboe"] = {
target = "kBOE",
symbol = "kbboe",
},
["kg-cal-15"] = {
target = "Cal-15",
},
["kg-cal-IT"] = {
target = "Cal-IT",
},
["kg-cal-th"] = {
target = "Cal-th",
},
["kW-h"] = {
target = "kW.h",
},
["kW·h"] = {
target = "kW.h",
},
["MW-h"] = {
target = "MW.h",
},
["mW-h"] = {
target = "mW.h",
},
["MW·h"] = {
target = "MW.h",
},
["TW-h"] = {
target = "TW.h",
},
["uerg"] = {
target = "μerg",
},
["ueV"] = {
target = "μeV",
},
["uW-h"] = {
target = "μW.h",
},
["uW.h"] = {
target = "μW.h",
},
["uWh"] = {
target = "μWh",
},
["W-h"] = {
target = "W.h",
},
["eVpar"] = {
_name1 = "electronvolt",
_symbol = "eV",
utype = "energy per chemical amount",
scale = 96485.329522144166,
prefixes = 1,
default = "kcal/mol",
link = "Electronvolt",
},
["kcal/mol"] = {
per = { "kcal", "mol" },
utype = "energy per chemical amount",
default = "kJ/mol",
link = "Kilocalorie per mole",
},
["kJ/mol"] = {
per = { "kJ", "mol" },
utype = "energy per chemical amount",
default = "kcal/mol",
link = "Joule per mole",
},
["kWh/100 km"] = {
name1 = "kilowatt-hour per 100 kilometres",
name1_us = "kilowatt-hour per 100 kilometers",
name2 = "kilowatt-hours per 100 kilometres",
name2_us = "kilowatt-hours per 100 kilometers",
symbol = "kW⋅h/100 km",
utype = "energy per unit length",
scale = 36,
default = "MJ/km kWh/mi",
link = "Kilowatt-hour",
},
["kWh/100 mi"] = {
name1 = "kilowatt-hour per 100 miles",
name2 = "kilowatt-hours per 100 miles",
symbol = "kW⋅h/100 mi",
utype = "energy per unit length",
scale = 22.3694,
default = "mpge",
link = "Miles per gallon gasoline equivalent",
},
["MJ/100 km"] = {
name1 = "megajoule per 100 kilometres",
name1_us = "megajoule per 100 kilometers",
name2 = "megajoules per 100 kilometres",
name2_us = "megajoules per 100 kilometers",
symbol = "MJ/100 km",
utype = "energy per unit length",
scale = 10,
default = "BTU/mi",
link = "British thermal unit",
},
["mpge"] = {
name1 = "mile per gallon gasoline equivalent",
name2 = "miles per gallon gasoline equivalent",
symbol = "mpg‑e",
utype = "energy per unit length",
scale = 1.3263314048360777e-5,
invert = -1,
iscomplex= true,
default = "kWh/100 mi",
link = "Miles per gallon gasoline equivalent",
},
["BTU/mi"] = {
per = { "BTU", "mi" },
utype = "energy per unit length",
default = "v > 1525 ! M ! k ! J/km",
},
["kJ/km"] = {
per = { "kJ", "km" },
utype = "energy per unit length",
default = "BTU/mi",
},
["kWh/km"] = {
per = { "-kW.h", "km" },
utype = "energy per unit length",
default = "MJ/km kWh/mi",
},
["kWh/mi"] = {
per = { "-kW.h", "mi" },
utype = "energy per unit length",
default = "kWh/km MJ/km",
},
["MJ/km"] = {
per = { "MJ", "km" },
utype = "energy per unit length",
default = "BTU/mi",
},
["mpg-e"] = {
target = "mpge",
},
["BTU/lb"] = {
name1 = "British thermal unit per pound",
name2 = "British thermal units per pound",
symbol = "BTU/lb",
utype = "energy per unit mass",
scale = 2326,
default = "kJ/kg",
link = "British thermal unit",
},
["cal/g"] = {
name1 = "calorie per gram",
name2 = "calories per gram",
symbol = "cal/g",
utype = "energy per unit mass",
scale = 4184,
default = "J/g",
},
["GJ/kg"] = {
name1 = "gigajoule per kilogram",
name2 = "gigajoules per kilogram",
symbol = "GJ/kg",
utype = "energy per unit mass",
scale = 1e9,
default = "ktTNT/t",
link = "Specific energy",
},
["J/g"] = {
name1 = "joule per gram",
name2 = "joules per gram",
symbol = "J/g",
utype = "energy per unit mass",
scale = 1000,
default = "kcal/g",
link = "Specific energy",
},
["kcal/g"] = {
name1 = "kilocalorie per gram",
name2 = "kilocalories per gram",
symbol = "kcal/g",
utype = "energy per unit mass",
scale = 4184000,
default = "kJ/g",
},
["kJ/g"] = {
name1 = "kilojoule per gram",
name2 = "kilojoules per gram",
symbol = "kJ/g",
utype = "energy per unit mass",
scale = 1000000,
default = "kcal/g",
link = "Specific energy",
},
["kJ/kg"] = {
name1 = "kilojoule per kilogram",
name2 = "kilojoules per kilogram",
symbol = "kJ/kg",
utype = "energy per unit mass",
scale = 1000,
default = "BTU/lb",
link = "Specific energy",
},
["ktonTNT/MT"] = {
name2 = "kilotons of TNT per metric ton",
symbol = "kiloton of TNT per metric ton",
usename = 1,
utype = "energy per unit mass",
scale = 4184000000,
default = "GJ/kg",
link = "TNT equivalent",
},
["ktTNT/t"] = {
name2 = "kilotonnes of TNT per tonne",
symbol = "kilotonne of TNT per tonne",
usename = 1,
utype = "energy per unit mass",
scale = 4184000000,
default = "GJ/kg",
link = "TNT equivalent",
},
["MtonTNT/MT"] = {
name2 = "megatons of TNT per metric ton",
symbol = "megaton of TNT per metric ton",
usename = 1,
utype = "energy per unit mass",
scale = 4.184e12,
default = "TJ/kg",
link = "TNT equivalent",
},
["MtTNT/MT"] = {
name2 = "megatonnes of TNT per tonne",
symbol = "megatonne of TNT per tonne",
usename = 1,
utype = "energy per unit mass",
scale = 4.184e12,
default = "TJ/kg",
link = "TNT equivalent",
},
["TJ/kg"] = {
name1 = "terajoule per kilogram",
name2 = "terajoules per kilogram",
symbol = "TJ/kg",
utype = "energy per unit mass",
scale = 1e12,
default = "MtTNT/MT",
link = "Specific energy",
},
["Cal/g"] = {
per = { "Cal", "g" },
utype = "energy per unit mass",
default = "kJ/g",
},
["BTU/cuft"] = {
per = { "BTU", "cuft" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/12USoz(mL)serve"] = {
per = { "Cal", "-12USoz(mL)serve" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/12USoz(ml)serve"] = {
per = { "Cal", "-12USoz(ml)serve" },
utype = "energy per unit volume",
default = "kJ/l",
},
["Cal/12USozserve"] = {
per = { "Cal", "-12USozserve" },
utype = "energy per unit volume",
default = "kJ/L",
},
["Cal/USoz"] = {
per = { "Cal", "USoz" },
utype = "energy per unit volume",
default = "kJ/ml",
},
["kJ/L"] = {
per = { "kJ", "L" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["kJ/l"] = {
per = { "kJ", "ll" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["kJ/ml"] = {
per = { "kJ", "ml" },
utype = "energy per unit volume",
default = "Cal/USoz",
},
["MJ/m3"] = {
per = { "MJ", "m3" },
utype = "energy per unit volume",
default = "BTU/cuft",
},
["Sv"] = {
_name1 = "sievert",
_symbol = "Sv",
utype = "equivalent radiation dose",
scale = 1,
prefixes = 1,
default = "rem",
link = "Sievert",
},
["rem"] = {
_name1 = "rem",
_symbol = "rem",
utype = "equivalent radiation dose",
scale = 0.01,
prefixes = 1,
default = "Sv",
link = "Roentgen equivalent man",
},
["g/km"] = {
name1 = "gram per kilometre",
name1_us = "gram per kilometer",
name2 = "grams per kilometre",
name2_us = "grams per kilometer",
symbol = "g/km",
utype = "exhaust emission",
scale = 1e-6,
default = "oz/mi",
link = "Exhaust gas",
},
["g/mi"] = {
name1 = "gram per mile",
name2 = "grams per mile",
symbol = "g/mi",
utype = "exhaust emission",
scale = 6.2137119223733397e-7,
default = "g/km",
link = "Exhaust gas",
},
["gCO2/km"] = {
name1 = "gram of CO<sub>2</sub> per kilometre",
name1_us = "gram of CO<sub>2</sub> per kilometer",
name2 = "grams of CO<sub>2</sub> per kilometre",
name2_us = "grams of CO<sub>2</sub> per kilometer",
symbol = "g(CO<sub>2</sub>)/km",
utype = "exhaust emission",
scale = 1e-6,
default = "ozCO2/mi",
link = "Exhaust gas",
},
["gCO2/mi"] = {
name1 = "gram of CO<sub>2</sub> per mile",
name2 = "grams of CO<sub>2</sub> per mile",
symbol = "g(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 6.2137119223733397e-7,
default = "gCO2/km",
link = "Exhaust gas",
},
["kg/km"] = {
name1 = "kilogram per kilometre",
name1_us = "kilogram per kilometer",
name2 = "kilograms per kilometre",
name2_us = "kilograms per kilometer",
symbol = "kg/km",
utype = "exhaust emission",
scale = 0.001,
default = "lb/mi",
link = "Exhaust gas",
},
["kgCO2/km"] = {
name1 = "kilogram of CO<sub>2</sub> per kilometre",
name1_us = "kilogram of CO<sub>2</sub> per kilometer",
name2 = "kilograms of CO<sub>2</sub> per kilometre",
name2_us = "kilograms of CO<sub>2</sub> per kilometer",
symbol = "kg(CO<sub>2</sub>)/km",
utype = "exhaust emission",
scale = 0.001,
default = "lbCO2/mi",
link = "Exhaust gas",
},
["lb/mi"] = {
name1 = "pound per mile",
name2 = "pounds per mile",
symbol = "lb/mi",
utype = "exhaust emission",
scale = 0.00028184923173665794,
default = "kg/km",
link = "Exhaust gas",
},
["lbCO2/mi"] = {
name1 = "pound of CO<sub>2</sub> per mile",
name2 = "pounds of CO<sub>2</sub> per mile",
symbol = "lb(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 0.00028184923173665794,
default = "kgCO2/km",
link = "Exhaust gas",
},
["oz/mi"] = {
name1 = "ounce per mile",
name2 = "ounces per mile",
symbol = "oz/mi",
utype = "exhaust emission",
scale = 1.7615576983541121e-5,
default = "g/km",
link = "Exhaust gas",
},
["ozCO2/mi"] = {
name1 = "ounce of CO<sub>2</sub> per mile",
name2 = "ounces of CO<sub>2</sub> per mile",
symbol = "oz(CO<sub>2</sub>)/mi",
utype = "exhaust emission",
scale = 1.7615576983541121e-5,
default = "gCO2/km",
link = "Exhaust gas",
},
["cuft/a"] = {
name1 = "cubic foot per annum",
name2 = "cubic feet per annum",
symbol = "cu ft/a",
utype = "flow",
scale = 8.9730672142368242e-10,
default = "m3/a",
link = "Cubic foot per second",
},
["cuft/d"] = {
name1 = "cubic foot per day",
name2 = "cubic feet per day",
symbol = "cu ft/d",
utype = "flow",
scale = 3.2774128000000003e-7,
default = "m3/d",
link = "Cubic foot per second",
},
["cuft/h"] = {
name1 = "cubic foot per hour",
name2 = "cubic feet per hour",
symbol = "cu ft/h",
utype = "flow",
scale = 7.8657907200000004e-6,
default = "m3/h",
link = "Cubic foot per second",
},
["cuft/min"] = {
name1 = "cubic foot per minute",
name2 = "cubic feet per minute",
symbol = "cu ft/min",
utype = "flow",
scale = 0.00047194744319999999,
default = "m3/min",
},
["cuft/s"] = {
name1 = "cubic foot per second",
name2 = "cubic feet per second",
symbol = "cu ft/s",
utype = "flow",
scale = 28316846592e-12,
default = "m3/s",
},
["cumi/a"] = {
name1 = "cubic mile per annum",
name2 = "cubic miles per annum",
symbol = "cu mi/a",
utype = "flow",
scale = 132.08171170940057,
default = "km3/a",
link = "Cubic foot per second",
},
["cuyd/h"] = {
name1 = "cubic yard per hour",
name2 = "cubic yards per hour",
symbol = "cuyd/h",
utype = "flow",
scale = 0.00021237634944000001,
default = "m3/h",
link = "Cubic foot per second",
},
["cuyd/s"] = {
name1 = "cubic yard per second",
name2 = "cubic yards per second",
symbol = "cu yd/s",
utype = "flow",
scale = 0.76455485798400002,
default = "m3/s",
},
["Goilbbl/a"] = {
name1 = "billion barrels per year",
name2 = "billion barrels per year",
symbol = "Gbbl/a",
utype = "flow",
scale = 5.0380033629933836,
default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3/a",
link = "Barrel per day",
},
["impgal/h"] = {
name1 = "imperial gallon per hour",
name2 = "imperial gallons per hour",
symbol = "imp gal/h",
utype = "flow",
scale = 1.2628027777777779e-6,
default = "m3/h",
link = "Gallon",
},
["impgal/min"] = {
name1 = "imperial gallon per minute",
name2 = "imperial gallons per minute",
symbol = "imp gal/min",
utype = "flow",
scale = 7.5768166666666671e-5,
default = "m3/s",
link = "Gallon",
},
["impgal/s"] = {
name1 = "imperial gallon per second",
name2 = "imperial gallons per second",
symbol = "impgal/s",
utype = "flow",
scale = 0.00454609,
default = "m3/s",
link = "Imperial gallons per second",
},
["km3/a"] = {
name1 = "cubic kilometre per annum",
name1_us = "cubic kilometer per annum",
name2 = "cubic kilometres per annum",
name2_us = "cubic kilometers per annum",
symbol = "km<sup>3</sup>/a",
utype = "flow",
scale = 31.68808781402895,
default = "cumi/a",
link = "Cubic metre per second",
},
["km3/d"] = {
name1 = "cubic kilometre per day",
name1_us = "cubic kilometer per day",
name2 = "cubic kilometres per day",
name2_us = "cubic kilometers per day",
symbol = "km<sup>3</sup>/d",
utype = "flow",
scale = 11574.074074074075,
default = "cuft/d",
link = "Cubic metre per second",
},
["koilbbl/a"] = {
name1 = "thousand barrels per year",
name2 = "thousand barrels per year",
symbol = "kbbl/a",
utype = "flow",
scale = 5.0380033629933841e-6,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3/a",
link = "Barrel per day",
},
["koilbbl/d"] = {
name1 = "thousand barrels per day",
name2 = "thousand barrels per day",
symbol = "kbbl/d",
utype = "flow",
scale = 0.0018401307283333335,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3/d",
link = "Barrel per day",
},
["L/h"] = {
name1 = "litre per hour",
name1_us = "liter per hour",
name2 = "litres per hour",
name2_us = "liters per hour",
symbol = "L/h",
utype = "flow",
scale = 2.7777777777777776e-7,
default = "impgal/h USgal/h",
link = "Cubic metre per second",
},
["L/min"] = {
name1 = "litre per minute",
name1_us = "liter per minute",
name2 = "litres per minute",
name2_us = "liters per minute",
symbol = "L/min",
utype = "flow",
scale = 1.6666666666666667e-5,
default = "impgal/min USgal/min",
link = "Cubic metre per second",
},
["L/s"] = {
name1 = "litre per second",
name1_us = "liter per second",
name2 = "litres per second",
name2_us = "liters per second",
symbol = "L/s",
utype = "flow",
scale = 0.001,
default = "cuft/s",
link = "Cubic metre per second",
},
["m3/a"] = {
name1 = "cubic metre per annum",
name1_us = "cubic meter per annum",
name2 = "cubic metres per annum",
name2_us = "cubic meters per annum",
symbol = "m<sup>3</sup>/a",
utype = "flow",
scale = 3.1688087814028947e-8,
default = "cuft/a",
link = "Cubic metre per second",
},
["m3/d"] = {
name1 = "cubic metre per day",
name1_us = "cubic meter per day",
name2 = "cubic metres per day",
name2_us = "cubic meters per day",
symbol = "m<sup>3</sup>/d",
utype = "flow",
scale = 1.1574074074074073e-5,
default = "cuft/d",
link = "Cubic metre per second",
},
["m3/h"] = {
name1 = "cubic metre per hour",
name1_us = "cubic meter per hour",
name2 = "cubic metres per hour",
name2_us = "cubic meters per hour",
symbol = "m<sup>3</sup>/h",
utype = "flow",
scale = 0.00027777777777777778,
default = "cuft/h",
link = "Cubic metre per second",
},
["m3/min"] = {
name1 = "cubic metre per minute",
name1_us = "cubic meter per minute",
name2 = "cubic metres per minute",
name2_us = "cubic meters per minute",
symbol = "m<sup>3</sup>/min",
utype = "flow",
scale = 0.016666666666666666,
default = "cuft/min",
link = "Cubic metre per second",
},
["m3/s"] = {
name1 = "cubic metre per second",
name1_us = "cubic meter per second",
name2 = "cubic metres per second",
name2_us = "cubic meters per second",
symbol = "m<sup>3</sup>/s",
utype = "flow",
scale = 1,
default = "cuft/s",
},
["Moilbbl/a"] = {
name1 = "million barrels per year",
name2 = "million barrels per year",
symbol = "Mbbl/a",
utype = "flow",
scale = 0.0050380033629933837,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/a",
link = "Barrel per day",
},
["Moilbbl/d"] = {
name1 = "million barrels per day",
name2 = "million barrels per day",
symbol = "Mbbl/d",
utype = "flow",
scale = 1.8401307283333335,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3/d",
link = "Barrel per day",
},
["oilbbl/a"] = {
name1 = "barrel per year",
name2 = "barrels per year",
symbol = "bbl/a",
utype = "flow",
scale = 5.0380033629933841e-9,
default = "m3/a",
link = "Barrel per day",
},
["oilbbl/d"] = {
name1 = "barrel per day",
name2 = "barrels per day",
symbol = "bbl/d",
utype = "flow",
scale = 1.8401307283333336e-6,
default = "m3/d",
},
["Toilbbl/a"] = {
name1 = "trillion barrels per year",
name2 = "trillion barrels per year",
symbol = "Tbbl/a",
utype = "flow",
scale = 5038.0033629933832,
default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3/a",
link = "Barrel per day",
},
["U.S.gal/d"] = {
name1 = "U.S. gallon per day",
name2 = "U.S. gallons per day",
symbol = "U.S. gal/d",
utype = "flow",
scale = 4.3812636388888893e-8,
default = "m3/s",
customary= 1,
},
["U.S.gal/h"] = {
name1 = "gallon per hour",
name2 = "gallons per hour",
symbol = "gal/h",
utype = "flow",
scale = 1.0515032733333334e-6,
default = "m3/h",
link = "Gallon",
customary= 2,
},
["U.S.gal/min"] = {
name1 = "U.S. gallon per minute",
name2 = "U.S. gallons per minute",
symbol = "U.S. gal/min",
utype = "flow",
scale = 6.3090196400000003e-5,
default = "m3/s",
link = "Gallon",
},
["USgal/a"] = {
name1 = "US gallon per year",
name2 = "US gallons per year",
symbol = "US gal/a",
utype = "flow",
scale = 1.1995246102365199e-10,
default = "m3/s",
},
["USgal/d"] = {
name1 = "US gallon per day",
name2 = "US gallons per day",
symbol = "US gal/d",
utype = "flow",
scale = 4.3812636388888893e-8,
default = "m3/s",
},
["USgal/h"] = {
name1 = "gallon per hour",
name2 = "gallons per hour",
symbol = "gal/h",
utype = "flow",
scale = 1.0515032733333334e-6,
default = "m3/h",
link = "Gallon",
customary= 1,
},
["USgal/min"] = {
name1 = "US gallon per minute",
name2 = "US gallons per minute",
symbol = "US gal/min",
utype = "flow",
scale = 6.3090196400000003e-5,
default = "m3/s",
link = "Gallon",
},
["USgal/s"] = {
name1 = "US gallon per second",
name1_us = "U.S. gallon per second",
name2 = "US gallons per second",
name2_us = "U.S. gallons per second",
symbol = "USgal/s",
utype = "flow",
scale = 0.003785411784,
default = "m3/s",
link = "US gallons per second",
},
["ft3/a"] = {
target = "cuft/a",
},
["ft3/d"] = {
target = "cuft/d",
},
["ft3/h"] = {
target = "cuft/h",
},
["ft3/s"] = {
target = "cuft/s",
},
["Gcuft/a"] = {
target = "e9cuft/a",
},
["Gcuft/d"] = {
target = "e9cuft/d",
},
["kcuft/a"] = {
target = "e3cuft/a",
},
["kcuft/d"] = {
target = "e3cuft/d",
},
["kcuft/s"] = {
target = "e3cuft/s",
},
["Mcuft/a"] = {
target = "e6cuft/a",
},
["Mcuft/d"] = {
target = "e6cuft/d",
},
["Mcuft/s"] = {
target = "e6cuft/s",
},
["m³/s"] = {
target = "m3/s",
},
["Tcuft/a"] = {
target = "e12cuft/a",
},
["Tcuft/d"] = {
target = "e12cuft/d",
},
["u.s.gal/min"] = {
target = "U.S.gal/min",
},
["usgal/min"] = {
target = "USgal/min",
},
["-LTf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LTf",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["-STf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "STf",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["dyn"] = {
name1 = "dyne",
symbol = "dyn",
utype = "force",
scale = 0.00001,
default = "gr-f",
},
["g-f"] = {
name1 = "gram-force",
name2 = "grams-force",
symbol = "g<sub>f</sub>",
utype = "force",
scale = 0.00980665,
default = "mN oz-f",
link = "Kilogram-force",
},
["gf"] = {
name1 = "gram-force",
name2 = "grams-force",
symbol = "gf",
utype = "force",
scale = 0.00980665,
default = "mN ozf",
link = "Kilogram-force",
},
["gr-f"] = {
name1 = "grain-force",
name2 = "grains-force",
symbol = "gr<sub>f</sub>",
utype = "force",
scale = 0.0006354602307515,
default = "μN",
link = "Pound (force)",
},
["grf"] = {
name1 = "grain-force",
name2 = "grains-force",
symbol = "grf",
utype = "force",
scale = 0.0006354602307515,
default = "μN",
link = "Pound (force)",
},
["kdyn"] = {
name1 = "kilodyne",
symbol = "kdyn",
utype = "force",
scale = 0.01,
default = "oz-f",
link = "Dyne",
},
["kg-f"] = {
name1 = "kilogram-force",
name2 = "kilograms-force",
symbol = "kg<sub>f</sub>",
utype = "force",
scale = 9.80665,
default = "N lb-f",
},
["kgf"] = {
name1 = "kilogram-force",
name2 = "kilograms-force",
symbol = "kgf",
utype = "force",
scale = 9.80665,
default = "N lbf",
},
["kp"] = {
name1 = "kilopond",
symbol = "kp",
utype = "force",
scale = 9.80665,
default = "N lb-f",
link = "Kilogram-force",
},
["L/T-f"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "L/T<sub>f</sub>",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["L/Tf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "L/Tf",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["lb-f"] = {
name1 = "pound-force",
name2 = "pounds-force",
symbol = "lb<sub>f</sub>",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["lbf"] = {
name1 = "pound-force",
name2 = "pounds-force",
symbol = "lbf",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["lb(f)"] = {
name1 = "pound",
symbol = "lb",
utype = "force",
scale = 4.4482216152605,
default = "N",
link = "Pound (force)",
},
["LT-f"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LT<sub>f</sub>",
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["LTf"] = {
name1 = "long ton-force",
name2 = "long tons-force",
symbol = "LTf",
usename = 1,
utype = "force",
scale = 9964.01641818352,
default = "kN",
},
["Mdyn"] = {
name1 = "megadyne",
symbol = "Mdyn",
utype = "force",
scale = 10,
default = "lb-f",
link = "Dyne",
},
["mdyn"] = {
name1 = "millidyne",
symbol = "mdyn",
utype = "force",
scale = 0.00000001,
default = "gr-f",
link = "Dyne",
},
["mg-f"] = {
name1 = "milligram-force",
name2 = "milligrams-force",
symbol = "mg<sub>f</sub>",
utype = "force",
scale = 0.00000980665,
default = "μN gr-f",
link = "Kilogram-force",
},
["mgf"] = {
name1 = "milligram-force",
name2 = "milligrams-force",
symbol = "mgf",
utype = "force",
scale = 0.00000980665,
default = "μN grf",
link = "Kilogram-force",
},
["Mp"] = {
name1 = "megapond",
symbol = "Mp",
utype = "force",
scale = 9806.65,
default = "kN LT-f ST-f",
link = "Kilogram-force",
},
["mp"] = {
name1 = "millipond",
symbol = "mp",
utype = "force",
scale = 0.00000980665,
default = "μN gr-f",
link = "Kilogram-force",
},
["N"] = {
_name1 = "newton",
_symbol = "N",
utype = "force",
scale = 1,
prefixes = 1,
default = "lb-f",
link = "Newton (unit)",
},
["oz-f"] = {
name1 = "ounce-force",
name2 = "ounces-force",
symbol = "oz<sub>f</sub>",
utype = "force",
scale = 0.2780138203095378125,
default = "mN",
link = "Pound (force)",
},
["ozf"] = {
name1 = "ounce-force",
name2 = "ounces-force",
symbol = "ozf",
utype = "force",
scale = 0.2780138203095378125,
default = "mN",
link = "Pound (force)",
},
["p"] = {
name1 = "pond",
symbol = "p",
utype = "force",
scale = 0.00980665,
default = "mN oz-f",
link = "Kilogram-force",
},
["pdl"] = {
name1 = "poundal",
symbol = "pdl",
utype = "force",
scale = 0.138254954376,
default = "N",
},
["S/T-f"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "S/T<sub>f</sub>",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["S/Tf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "S/Tf",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["ST-f"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "ST<sub>f</sub>",
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["STf"] = {
name1 = "short ton-force",
name2 = "short tons-force",
symbol = "STf",
usename = 1,
utype = "force",
scale = 8896.443230521,
default = "kN",
},
["t-f"] = {
name1 = "tonne-force",
name2 = "tonnes-force",
symbol = "t<sub>f</sub>",
utype = "force",
scale = 9806.65,
default = "kN LT-f ST-f",
link = "Ton-force#Tonne-force",
},
["tf"] = {
name1 = "tonne-force",
name2 = "tonnes-force",
symbol = "tf",
utype = "force",
scale = 9806.65,
default = "kN LTf STf",
link = "Ton-force#Tonne-force",
},
["dyne"] = {
target = "dyn",
},
["newtons"] = {
target = "N",
},
["poundal"] = {
target = "pdl",
},
["tonne-force"] = {
target = "tf",
},
["impgal/mi"] = {
per = { "@impgal", "mi" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km USgal/mi",
},
["km/L"] = {
per = { "km", "L" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "mpgimp mpgus",
},
["km/l"] = {
per = { "km", "ll" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "mpgimp mpgus",
},
["L/100 km"] = {
per = { "L", "100km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|L/100 km]]",
},
["l/100 km"] = {
per = { "ll", "100km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|l/100 km]]",
},
["L/km"] = {
per = { "L", "km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
},
["l/km"] = {
per = { "ll", "km" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "mpgimp mpgus",
},
["mi/impqt"] = {
per = { "mi", "impqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/U.S.qt"] = {
per = { "mi", "U.S.qt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/USqt"] = {
per = { "mi", "USqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mi/usqt"] = {
per = { "mi", "usqt" },
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "km/L",
},
["mpgimp"] = {
per = { "mi", "@impgal" },
symbol = "mpg<sub>‑imp</sub>",
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "L/100 km+mpgus",
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[Imperial units|imp]]</sub>",
},
["mpgus"] = {
per = { "mi", "+USgal" },
symbol = "mpg<sub>‑US</sub>",
utype = "fuel efficiency",
invert = -1,
iscomplex= true,
default = "L/100 km+mpgimp",
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|US]]</sub>",
},
["U.S.gal/mi"] = {
per = { "*U.S.gal", "mi" },
sp_us = true,
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km impgal/mi",
},
["usgal/mi"] = {
per = { "+USgal", "mi" },
utype = "fuel efficiency",
invert = 1,
iscomplex= true,
default = "L/km impgal/mi",
},
["L/100km"] = {
target = "L/100 km",
},
["l/100km"] = {
target = "l/100 km",
},
["mpg"] = {
shouldbe = "Use %{mpgus%} for miles per US gallon or %{mpgimp%} for miles per imperial gallon (not %{mpg%})",
},
["mpgU.S."] = {
target = "mpgus",
symbol = "mpg<sub>‑U.S.</sub>",
sp_us = true,
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|U.S.]]</sub>",
},
["mpgu.s."] = {
target = "mpgus",
symbol = "mpg<sub>‑U.S.</sub>",
sp_us = true,
symlink = "[[Fuel economy in automobiles#Units of measure|mpg]]<sub>‑[[United States customary units|U.S.]]</sub>",
},
["mpgUS"] = {
target = "mpgus",
},
["USgal/mi"] = {
target = "usgal/mi",
},
["kPa/m"] = {
per = { "kPa", "-m-frac" },
utype = "fracture gradient",
default = "psi/ft",
},
["psi/ft"] = {
per = { "psi", "-ft-frac" },
utype = "fracture gradient",
default = "kPa/m",
},
["cm/km"] = {
name1 = "centimetre per kilometre",
name1_us = "centimeter per kilometer",
name2 = "centimetres per kilometre",
name2_us = "centimeters per kilometer",
symbol = "cm/km",
utype = "gradient",
scale = 0.00001,
default = "ft/mi",
link = "Grade (slope)",
},
["ft/mi"] = {
name1 = "foot per mile",
name2 = "feet per mile",
symbol = "ft/mi",
utype = "gradient",
scale = 0.00018939393939393939,
default = "v < 5.28 ! c ! ! m/km",
link = "Grade (slope)",
},
["ft/nmi"] = {
name1 = "foot per nautical mile",
name2 = "feet per nautical mile",
symbol = "ft/nmi",
utype = "gradient",
scale = 0.00016457883369330455,
default = "v < 6.076 ! c ! ! m/km",
link = "Grade (slope)",
},
["in/ft"] = {
name1 = "inch per foot",
name2 = "inches per foot",
symbol = "in/ft",
utype = "gradient",
scale = 0.083333333333333329,
default = "mm/m",
link = "Grade (slope)",
},
["in/mi"] = {
name1 = "inch per mile",
name2 = "inches per mile",
symbol = "in/mi",
utype = "gradient",
scale = 1.5782828282828283e-5,
default = "v < 0.6336 ! m ! c ! m/km",
link = "Grade (slope)",
},
["m/km"] = {
name1 = "metre per kilometre",
name1_us = "meter per kilometer",
name2 = "metres per kilometre",
name2_us = "meters per kilometer",
symbol = "m/km",
utype = "gradient",
scale = 0.001,
default = "ft/mi",
link = "Grade (slope)",
},
["mm/km"] = {
name1 = "millimetre per kilometre",
name1_us = "millimeter per kilometer",
name2 = "millimetres per kilometre",
name2_us = "millimeters per kilometer",
symbol = "mm/km",
utype = "gradient",
scale = 0.000001,
default = "in/mi",
link = "Grade (slope)",
},
["mm/m"] = {
name1 = "millimetre per metre",
name1_us = "millimeter per meter",
name2 = "millimetres per metre",
name2_us = "millimeters per meter",
symbol = "mm/m",
utype = "gradient",
scale = 0.001,
default = "in/ft",
link = "Grade (slope)",
},
["admi"] = {
name1 = "admiralty mile",
symbol = "nmi (admiralty)",
utype = "length",
scale = 1853.184,
default = "km mi",
link = "Nautical mile",
},
["AU"] = {
name1 = "astronomical unit",
symbol = "AU",
utype = "length",
scale = 149597870700,
default = "km mi",
},
["Brnmi"] = {
name1 = "British nautical mile",
symbol = "(Brit) nmi",
utype = "length",
scale = 1853.184,
default = "km mi",
link = "Nautical mile",
},
["bu"] = {
name2 = "bu",
symbol = "bu",
usename = 1,
utype = "length",
scale = 0.0030303030303030303,
default = "mm",
link = "Japanese units of measurement#Length",
},
["ch"] = {
name1 = "chain",
symbol = "ch",
utype = "length",
scale = 20.1168,
default = "ft m",
subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } },
link = "Chain (unit)",
},
["chlk"] = {
name1 = "[[Chain (unit)|chain]]",
symbol = "[[Chain (unit)|ch]]",
utype = "length",
scale = 20.1168,
default = "ft m",
link = "",
},
["chain"] = {
symbol = "chain",
usename = 1,
utype = "length",
scale = 20.1168,
default = "ft m",
subdivs = { ["ft"] = { 66, default = "m" }, ["yd"] = { 22, default = "m" } },
link = "Chain (unit)",
},
["chainlk"] = {
symbol = "[[Chain (unit)|chain]]",
usename = 1,
utype = "length",
scale = 20.1168,
default = "ft m",
link = "",
},
["dpcm"] = {
name2 = "dot/cm",
symbol = "dot/cm",
utype = "length",
scale = 100,
invert = -1,
iscomplex= true,
default = "dpi",
link = "Dots per inch",
},
["dpi"] = {
name2 = "DPI",
symbol = "DPI",
utype = "length",
scale = 39.370078740157481,
invert = -1,
iscomplex= true,
default = "pitch",
link = "Dots per inch",
},
["fathom"] = {
symbol = "fathom",
usename = 1,
utype = "length",
scale = 1.8288,
default = "ft m",
},
["foot"] = {
name1 = "foot",
name2 = "foot",
symbol = "ft",
utype = "length",
scale = 0.3048,
default = "m",
subdivs = { ["in"] = { 12, default = "m" } },
link = "Foot (unit)",
},
["ft"] = {
name1 = "foot",
name2 = "feet",
symbol = "ft",
utype = "length",
scale = 0.3048,
exception= "integer_more_precision",
default = "m",
subdivs = { ["in"] = { 12, default = "m" } },
link = "Foot (unit)",
},
["furlong"] = {
symbol = "furlong",
usename = 1,
utype = "length",
scale = 201.168,
default = "ft m",
},
["Gly"] = {
name1 = "gigalight-year",
symbol = "Gly",
utype = "length",
scale = 9.4607304725808e24,
default = "Mpc",
link = "Light-year#Definitions",
},
["Gpc"] = {
name1 = "gigaparsec",
symbol = "Gpc",
utype = "length",
scale = 3.0856775814671916e25,
default = "Gly",
link = "Parsec#Megaparsecs and gigaparsecs",
},
["hand"] = {
name1 = "hand",
symbol = "h",
utype = "length",
builtin = "hand",
scale = 0.1016,
iscomplex= true,
default = "in cm",
link = "Hand (unit)",
},
["in"] = {
name1 = "inch",
name2 = "inches",
symbol = "in",
utype = "length",
scale = 0.0254,
exception= "subunit_more_precision",
default = "mm",
},
["inabbreviated"] = {
name2 = "in",
symbol = "in",
utype = "length",
scale = 0.0254,
default = "mm",
link = "Inch",
},
["kly"] = {
name1 = "kilolight-year",
symbol = "kly",
utype = "length",
scale = 9.4607304725808e18,
default = "pc",
link = "Light-year#Definitions",
},
["kpc"] = {
name1 = "kiloparsec",
symbol = "kpc",
utype = "length",
scale = 3.0856775814671916e19,
default = "kly",
link = "Parsec#Parsecs and kiloparsecs",
},
["LD"] = {
name1 = "lunar distance",
symbol = "LD",
utype = "length",
scale = 384403000,
default = "km mi",
link = "Lunar distance (astronomy)",
},
["league"] = {
symbol = "league",
usename = 1,
utype = "length",
scale = 4828.032,
default = "km",
link = "League (unit)",
},
["ly"] = {
name1 = "light-year",
symbol = "ly",
utype = "length",
scale = 9.4607304725808e15,
default = "AU",
},
["m"] = {
_name1 = "metre",
_name1_us= "meter",
_symbol = "m",
utype = "length",
scale = 1,
prefixes = 1,
default = "v > 0 and v < 3 ! ftin ! ft",
link = "Metre",
},
["mi"] = {
name1 = "mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
subdivs = { ["ch"] = { 80, default = "km" }, ["chlk"] = { 80, default = "km" }, ["chain"] = { 80, default = "km" }, ["chainlk"] = { 80, default = "km" }, ["ft"] = { 5280, default = "km" }, ["furlong"] = { 8, default = "km" }, ["yd"] = { 1760, default = "km" } },
},
["mil"] = {
symbol = "mil",
usename = 1,
utype = "length",
scale = 0.0000254,
default = "mm",
link = "Thousandth of an inch",
},
["Mly"] = {
name1 = "megalight-year",
symbol = "Mly",
utype = "length",
scale = 9.4607304725808e21,
default = "kpc",
link = "Light-year#Definitions",
},
["Mpc"] = {
name1 = "megaparsec",
symbol = "Mpc",
utype = "length",
scale = 3.0856775814671916e22,
default = "Mly",
link = "Parsec#Megaparsecs and gigaparsecs",
},
["NM"] = {
name1 = "nautical mile",
symbol = "NM",
utype = "length",
scale = 1852,
default = "km mi",
},
["nmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1852,
default = "km mi",
},
["oldUKnmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1853.184,
default = "km mi",
},
["oldUSnmi"] = {
name1 = "nautical mile",
symbol = "nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
},
["pc"] = {
name1 = "parsec",
symbol = "pc",
utype = "length",
scale = 3.0856775814671916e16,
default = "ly",
},
["perch"] = {
name2 = "perches",
symbol = "perch",
usename = 1,
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["pitch"] = {
name2 = "μm",
symbol = "μm",
utype = "length",
scale = 1e-6,
default = "dpi",
defkey = "pitch",
linkey = "pitch",
link = "Dots per inch",
},
["pole"] = {
symbol = "pole",
usename = 1,
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["pre1954U.S.nmi"] = {
name1 = "(pre-1954 U.S.) nautical mile",
symbol = "(pre‑1954 U.S.) nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
link = "Nautical mile",
},
["pre1954USnmi"] = {
name1 = "(pre-1954 US) nautical mile",
name1_us = "(pre-1954 U.S.) nautical mile",
symbol = "(pre‑1954 US) nmi",
sym_us = "(pre‑1954 U.S.) nmi",
utype = "length",
scale = 1853.24496,
default = "km mi",
link = "Nautical mile",
},
["rd"] = {
name1 = "rod",
symbol = "rd",
utype = "length",
scale = 5.0292,
default = "ft m",
link = "Rod (unit)",
},
["royal cubit"] = {
name1 = "royal cubit",
symbol = "cu",
utype = "length",
scale = 0.524,
default = "mm",
},
["rtkm"] = {
name1 = "route kilometre",
name1_us = "route kilometer",
symbol = "km",
utype = "length",
scale = 1000,
default = "mi",
link = "Kilometre",
},
["rtmi"] = {
name1 = "route mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
link = "Mile",
},
["shaku"] = {
name2 = "shaku",
symbol = "shaku",
usename = 1,
utype = "length",
scale = 0.30303030303030304,
default = "m",
link = "Shaku (unit)",
},
["sm"] = {
name1 = "smoot",
symbol = "sm",
utype = "length",
scale = 1.70180,
default = "m",
link = "Smoot (unit)",
},
["smi"] = {
name1 = "statute mile",
symbol = "mi",
utype = "length",
scale = 1609.344,
default = "km",
subdivs = { ["chain"] = { 80, default = "km" } },
},
["solar radius"] = {
name1 = "solar radius",
name2 = "solar radii",
symbol = "''R''<sub>☉</sub>",
utype = "length",
scale = 695700e3,
default = "km",
},
["sun"] = {
name2 = "sun",
symbol = "sun",
usename = 1,
utype = "length",
scale = 0.030303030303030304,
default = "mm",
link = "Japanese units of measurement#Length",
},
["thou"] = {
name2 = "thou",
symbol = "thou",
usename = 1,
utype = "length",
scale = 0.0000254,
default = "mm",
link = "Thousandth of an inch",
},
["verst"] = {
symbol = "verst",
usename = 1,
utype = "length",
scale = 1066.8,
default = "km mi",
},
["yd"] = {
name1 = "yard",
symbol = "yd",
utype = "length",
scale = 0.9144,
default = "m",
subdivs = { ["ft"] = { 3, default = "m" } },
},
["μin"] = {
name1 = "microinch",
name2 = "microinches",
symbol = "μin",
utype = "length",
scale = 0.0000000254,
default = "nm",
link = "SI prefix#Non-metric units",
},
["Å"] = {
name1 = "ångström",
symbol = "Å",
utype = "length",
scale = 0.0000000001,
default = "in",
},
["Hz"] = {
_name1 = "hertz",
_name2 = "hertz",
_symbol = "Hz",
utype = "length",
scale = 3.3356409519815204e-9,
invert = -1,
iscomplex= true,
prefixes = 1,
default = "m",
link = "Hertz",
},
["rpm"] = {
name1 = "revolution per minute",
name2 = "revolutions per minute",
symbol = "rpm",
utype = "length",
scale = 5.5594015866358675e-11,
invert = -1,
iscomplex= true,
default = "Hz",
link = "Revolutions per minute",
},
["-ft-frac"] = {
target = "ft",
link = "Fracture gradient",
},
["-in-stiff"] = {
target = "in",
link = "Stiffness",
},
["-m-frac"] = {
target = "m",
link = "Fracture gradient",
},
["-m-stiff"] = {
target = "m",
link = "Stiffness",
},
["100km"] = {
target = "km",
multiplier= 100,
},
["100mi"] = {
target = "mi",
multiplier= 100,
},
["100miles"] = {
target = "mi",
symbol = "miles",
multiplier= 100,
},
["admiralty nmi"] = {
target = "oldUKnmi",
},
["angstrom"] = {
target = "Å",
},
["au"] = {
target = "AU",
symbol = "au",
},
["feet"] = {
target = "ft",
},
["hands"] = {
target = "hand",
},
["inch"] = {
target = "in",
},
["inches"] = {
target = "in",
},
["light-year"] = {
target = "ly",
},
["meter"] = {
target = "m",
sp_us = true,
},
["meters"] = {
target = "m",
sp_us = true,
},
["metre"] = {
target = "m",
},
["metres"] = {
target = "m",
},
["micrometre"] = {
target = "μm",
},
["micron"] = {
target = "μm",
default = "μin",
},
["mile"] = {
target = "mi",
},
["miles"] = {
target = "mi",
},
["parsec"] = {
target = "pc",
},
["rod"] = {
target = "rd",
},
["smoot"] = {
target = "sm",
},
["uin"] = {
target = "μin",
},
["yard"] = {
target = "yd",
},
["yards"] = {
target = "yd",
},
["yds"] = {
target = "yd",
},
["dtex"] = {
name1 = "decitex",
name2 = "decitex",
symbol = "dtex",
utype = "linear density",
scale = 1e-7,
default = "lb/yd",
link = "Units of textile measurement#Units",
},
["kg/cm"] = {
name1 = "kilogram per centimetre",
name1_us = "kilogram per centimeter",
name2 = "kilograms per centimetre",
name2_us = "kilograms per centimeter",
symbol = "kg/cm",
utype = "linear density",
scale = 100,
default = "lb/yd",
link = "Linear density",
},
["kg/m"] = {
name1 = "kilogram per metre",
name1_us = "kilogram per meter",
name2 = "kilograms per metre",
name2_us = "kilograms per meter",
symbol = "kg/m",
utype = "linear density",
scale = 1,
default = "lb/yd",
link = "Linear density",
},
["lb/ft"] = {
name1 = "pound per foot",
name2 = "pounds per foot",
symbol = "lb/ft",
utype = "linear density",
scale = 1.4881639435695539,
default = "kg/m",
link = "Linear density",
},
["lb/yd"] = {
name1 = "pound per yard",
name2 = "pounds per yard",
symbol = "lb/yd",
utype = "linear density",
scale = 0.49605464785651798,
default = "kg/m",
link = "Linear density",
},
["G"] = {
_name1 = "gauss",
_name2 = "gauss",
_symbol = "G",
utype = "magnetic field strength",
scale = 0.0001,
prefixes = 1,
default = "T",
link = "Gauss (unit)",
},
["T"] = {
_name1 = "tesla",
_symbol = "T",
utype = "magnetic field strength",
scale = 1,
prefixes = 1,
default = "G",
link = "Tesla (unit)",
},
["A/m"] = {
name1 = "ampere per metre",
name1_us = "ampere per meter",
name2 = "amperes per metre",
name2_us = "amperes per meter",
symbol = "A/m",
utype = "magnetizing field",
scale = 1,
default = "Oe",
},
["kA/m"] = {
name1 = "kiloampere per metre",
name1_us = "kiloampere per meter",
name2 = "kiloamperes per metre",
name2_us = "kiloamperes per meter",
symbol = "kA/m",
utype = "magnetizing field",
scale = 1000,
default = "kOe",
link = "Ampere per metre",
},
["MA/m"] = {
name1 = "megaampere per metre",
name1_us = "megaampere per meter",
name2 = "megaamperes per metre",
name2_us = "megaamperes per meter",
symbol = "MA/m",
utype = "magnetizing field",
scale = 1e6,
default = "kOe",
link = "Ampere per metre",
},
["Oe"] = {
_name1 = "oersted",
_symbol = "Oe",
utype = "magnetizing field",
scale = 79.5774715,
prefixes = 1,
default = "kA/m",
link = "Oersted",
},
["-Lcwt"] = {
name1 = "hundredweight",
name2 = "hundredweight",
symbol = "cwt",
utype = "mass",
scale = 50.80234544,
default = "lb",
},
["-Scwt"] = {
name1 = "hundredweight",
name2 = "hundredweight",
symbol = "cwt",
utype = "mass",
scale = 45.359237,
default = "lb",
},
["-ST"] = {
name1 = "short ton",
symbol = "ST",
utype = "mass",
scale = 907.18474,
default = "t",
},
["carat"] = {
symbol = "carat",
usename = 1,
utype = "mass",
scale = 0.0002,
default = "g",
link = "Carat (mass)",
},
["drachm"] = {
name1_us = "dram",
symbol = "drachm",
usename = 1,
utype = "mass",
scale = 0.001771845195,
default = "g",
link = "Dram (unit)",
},
["dram"] = {
target = "drachm",
},
["dwt"] = {
name1 = "pennyweight",
symbol = "dwt",
utype = "mass",
scale = 0.00155517384,
default = "oz g",
},
["DWton"] = {
symbol = "deadweight ton",
usename = 1,
utype = "mass",
scale = 1016.0469088,
default = "DWtonne",
link = "Deadweight tonnage",
},
["DWtonne"] = {
name1_us = "deadweight metric ton",
symbol = "deadweight tonne",
sym_us = "~deadweight metric ton",
usename = 1,
utype = "mass",
scale = 1000,
default = "DWton",
link = "Deadweight tonnage",
},
["g"] = {
_name1 = "gram",
_symbol = "g",
utype = "mass",
scale = 0.001,
prefixes = 1,
default = "oz",
link = "Gram",
},
["gr"] = {
name1 = "grain",
symbol = "gr",
utype = "mass",
scale = 0.00006479891,
default = "g",
link = "Grain (unit)",
},
["Gt"] = {
name1 = "gigatonne",
symbol = "Gt",
utype = "mass",
scale = 1000000000000,
default = "LT ST",
link = "Tonne",
},
["impgalh2o"] = {
name1 = "imperial gallon of water",
name2 = "imperial gallons of water",
symbol = "imp gal H<sub>2</sub>O",
utype = "mass",
scale = 4.5359236999999499,
default = "lb kg",
link = "Imperial gallon",
},
["kt"] = {
name1 = "kilotonne",
symbol = "kt",
utype = "mass",
scale = 1000000,
default = "LT ST",
link = "Tonne",
},
["lb"] = {
name1 = "pound",
symbol = "lb",
utype = "mass",
scale = 0.45359237,
exception= "integer_more_precision",
default = "kg",
subdivs = { ["oz"] = { 16, default = "kg" } },
link = "Pound (mass)",
},
["Lcwt"] = {
name1 = "long hundredweight",
name2 = "long hundredweight",
symbol = "Lcwt",
usename = 1,
utype = "mass",
scale = 50.80234544,
default = "lb",
subdivs = { ["qtr"] = { 4, default = "kg" }, ["st"] = { 8, default = "kg" } },
link = "Hundredweight",
},
["long cwt"] = {
name1 = "long hundredweight",
name2 = "long hundredweight",
symbol = "long cwt",
utype = "mass",
scale = 50.80234544,
default = "lb kg",
subdivs = { ["qtr"] = { 4, default = "kg" } },
link = "Hundredweight",
},
["long qtr"] = {
name1 = "long quarter",
symbol = "long qtr",
utype = "mass",
scale = 12.70058636,
default = "lb kg",
},
["LT"] = {
symbol = "long ton",
usename = 1,
utype = "mass",
scale = 1016.0469088,
default = "t",
subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } },
},
["lt"] = {
name1 = "long ton",
symbol = "LT",
utype = "mass",
scale = 1016.0469088,
default = "t",
subdivs = { ["Lcwt"] = { 20, default = "t", unit = "-Lcwt" } },
},
["metric ton"] = {
symbol = "metric ton",
usename = 1,
utype = "mass",
scale = 1000,
default = "long ton",
link = "Tonne",
},
["MT"] = {
name1 = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "LT ST",
link = "Tonne",
},
["Mt"] = {
name1 = "megatonne",
symbol = "Mt",
utype = "mass",
scale = 1000000000,
default = "LT ST",
link = "Tonne",
},
["oz"] = {
name1 = "ounce",
symbol = "oz",
utype = "mass",
scale = 0.028349523125,
default = "g",
},
["ozt"] = {
name1 = "troy ounce",
symbol = "ozt",
utype = "mass",
scale = 0.0311034768,
default = "oz g",
},
["pdr"] = {
name1 = "pounder",
symbol = "pdr",
utype = "mass",
scale = 0.45359237,
default = "kg",
link = "Pound (mass)",
},
["qtr"] = {
name1 = "quarter",
symbol = "qtr",
utype = "mass",
scale = 12.70058636,
default = "lb kg",
subdivs = { ["lb"] = { 28, default = "kg" } },
link = "Long quarter",
},
["Scwt"] = {
name1 = "short hundredweight",
name2 = "short hundredweight",
symbol = "Scwt",
usename = 1,
utype = "mass",
scale = 45.359237,
default = "lb",
link = "Hundredweight",
},
["short cwt"] = {
name1 = "short hundredweight",
name2 = "short hundredweight",
symbol = "short cwt",
utype = "mass",
scale = 45.359237,
default = "lb kg",
link = "Hundredweight",
},
["short qtr"] = {
name1 = "short quarter",
symbol = "short qtr",
utype = "mass",
scale = 11.33980925,
default = "lb kg",
},
["ST"] = {
symbol = "short ton",
usename = 1,
utype = "mass",
scale = 907.18474,
default = "t",
subdivs = { ["Scwt"] = { 20, default = "t", unit = "-Scwt" } },
},
["shtn"] = {
name1 = "short ton",
symbol = "sh tn",
utype = "mass",
scale = 907.18474,
default = "t",
},
["shton"] = {
symbol = "ton",
usename = 1,
utype = "mass",
scale = 907.18474,
default = "t",
},
["solar mass"] = {
name1 = "solar mass",
name2 = "solar masses",
symbol = "''M''<sub>☉</sub>",
utype = "mass",
scale = 1.98855e30,
default = "kg",
},
["st"] = {
name1 = "stone",
name2 = "stone",
symbol = "st",
utype = "mass",
scale = 6.35029318,
default = "lb kg",
subdivs = { ["lb"] = { 14, default = "kg lb" } },
link = "Stone (unit)",
},
["t"] = {
name1 = "tonne",
name1_us = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "LT ST",
},
["tonne"] = {
name1 = "tonne",
name1_us = "metric ton",
symbol = "t",
utype = "mass",
scale = 1000,
default = "shton",
},
["troy pound"] = {
symbol = "troy pound",
usename = 1,
utype = "mass",
scale = 0.3732417216,
default = "lb kg",
link = "Troy weight",
},
["usgalh2o"] = {
name1 = "US gallon of water",
name1_us = "U.S. gallon of water",
name2 = "US gallons of water",
name2_us = "U.S. gallons of water",
symbol = "US gal H<sub>2</sub>O",
utype = "mass",
scale = 3.7776215836051126,
default = "lb kg",
link = "United States customary units#Fluid volume",
},
["viss"] = {
name2 = "viss",
symbol = "viss",
utype = "mass",
scale = 1.632932532,
default = "kg",
link = "Myanmar units of measurement#Mass",
},
["billion tonne"] = {
target = "e9t",
},
["kilogram"] = {
target = "kg",
},
["kilotonne"] = {
target = "kt",
},
["lbs"] = {
target = "lb",
},
["lbt"] = {
target = "troy pound",
},
["lcwt"] = {
target = "Lcwt",
},
["long ton"] = {
target = "LT",
},
["mcg"] = {
target = "μg",
},
["million tonne"] = {
target = "e6t",
},
["scwt"] = {
target = "Scwt",
},
["short ton"] = {
target = "ST",
},
["stone"] = {
target = "st",
},
["thousand tonne"] = {
target = "e3t",
},
["tonnes"] = {
target = "t",
},
["kg/kW"] = {
name1 = "kilogram per kilowatt",
name2 = "kilograms per kilowatt",
symbol = "kg/kW",
utype = "mass per unit power",
scale = 0.001,
default = "lb/hp",
link = "Kilowatt",
},
["lb/hp"] = {
name1 = "pound per horsepower",
name2 = "pounds per horsepower",
symbol = "lb/hp",
utype = "mass per unit power",
scale = 0.00060827738784176115,
default = "kg/kW",
link = "Horsepower",
},
["kg/h"] = {
per = { "kg", "h" },
utype = "mass per unit time",
default = "lb/h",
},
["lb/h"] = {
per = { "lb", "h" },
utype = "mass per unit time",
default = "kg/h",
},
["g-mol/d"] = {
name1 = "gram-mole per day",
name2 = "gram-moles per day",
symbol = "g‑mol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["g-mol/h"] = {
name1 = "gram-mole per hour",
name2 = "gram-moles per hour",
symbol = "g‑mol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["g-mol/min"] = {
name1 = "gram-mole per minute",
name2 = "gram-moles per minute",
symbol = "g‑mol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "g-mol/s",
link = "Mole (unit)",
},
["g-mol/s"] = {
name1 = "gram-mole per second",
name2 = "gram-moles per second",
symbol = "g‑mol/s",
utype = "molar rate",
scale = 1,
default = "lb-mol/min",
link = "Mole (unit)",
},
["gmol/d"] = {
name1 = "gram-mole per day",
name2 = "gram-moles per day",
symbol = "gmol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["gmol/h"] = {
name1 = "gram-mole per hour",
name2 = "gram-moles per hour",
symbol = "gmol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["gmol/min"] = {
name1 = "gram-mole per minute",
name2 = "gram-moles per minute",
symbol = "gmol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "gmol/s",
link = "Mole (unit)",
},
["gmol/s"] = {
name1 = "gram-mole per second",
name2 = "gram-moles per second",
symbol = "gmol/s",
utype = "molar rate",
scale = 1,
default = "lbmol/min",
link = "Mole (unit)",
},
["kmol/d"] = {
name1 = "kilomole per day",
name2 = "kilomoles per day",
symbol = "kmol/d",
utype = "molar rate",
scale = 0.011574074074074073,
default = "mmol/s",
link = "Mole (unit)",
},
["kmol/h"] = {
name1 = "kilomole per hour",
name2 = "kilomoles per hour",
symbol = "kmol/h",
utype = "molar rate",
scale = 0.27777777777777779,
default = "mol/s",
link = "Mole (unit)",
},
["kmol/min"] = {
name1 = "kilomole per minute",
name2 = "kilomoles per minute",
symbol = "kmol/min",
utype = "molar rate",
scale = 16.666666666666668,
default = "mol/s",
link = "Kilomole (unit)",
},
["kmol/s"] = {
name1 = "kilomole per second",
name2 = "kilomoles per second",
symbol = "kmol/s",
utype = "molar rate",
scale = 1000,
default = "lb-mol/s",
link = "Mole (unit)",
},
["lb-mol/d"] = {
name1 = "pound-mole per day",
name2 = "pound-moles per day",
symbol = "lb‑mol/d",
utype = "molar rate",
scale = 0.0052499116898148141,
default = "mmol/s",
link = "Pound-mole",
},
["lb-mol/h"] = {
name1 = "pound-mole per hour",
name2 = "pound-moles per hour",
symbol = "lb‑mol/h",
utype = "molar rate",
scale = 0.12599788055555555,
default = "mol/s",
link = "Pound-mole",
},
["lb-mol/min"] = {
name1 = "pound-mole per minute",
name2 = "pound-moles per minute",
symbol = "lb‑mol/min",
utype = "molar rate",
scale = 7.5598728333333334,
default = "mol/s",
link = "Pound-mole",
},
["lb-mol/s"] = {
name1 = "pound-mole per second",
name2 = "pound-moles per second",
symbol = "lb‑mol/s",
utype = "molar rate",
scale = 453.59237,
default = "kmol/s",
link = "Pound-mole",
},
["lbmol/d"] = {
name1 = "pound-mole per day",
name2 = "pound-moles per day",
symbol = "lbmol/d",
utype = "molar rate",
scale = 0.0052499116898148141,
default = "mmol/s",
link = "Pound-mole",
},
["lbmol/h"] = {
name1 = "pound-mole per hour",
name2 = "pound-moles per hour",
symbol = "lbmol/h",
utype = "molar rate",
scale = 0.12599788055555555,
default = "mol/s",
link = "Pound-mole",
},
["lbmol/min"] = {
name1 = "pound-mole per minute",
name2 = "pound-moles per minute",
symbol = "lbmol/min",
utype = "molar rate",
scale = 7.5598728333333334,
default = "mol/s",
link = "Pound-mole",
},
["lbmol/s"] = {
name1 = "pound-mole per second",
name2 = "pound-moles per second",
symbol = "lbmol/s",
utype = "molar rate",
scale = 453.59237,
default = "kmol/s",
link = "Pound-mole",
},
["mmol/s"] = {
name1 = "millimole per second",
name2 = "millimoles per second",
symbol = "mmol/s",
utype = "molar rate",
scale = 0.001,
default = "lb-mol/d",
link = "Mole (unit)",
},
["mol/d"] = {
name1 = "mole per day",
name2 = "moles per day",
symbol = "mol/d",
utype = "molar rate",
scale = 1.1574074074074073e-5,
default = "μmol/s",
link = "Mole (unit)",
},
["mol/h"] = {
name1 = "mole per hour",
name2 = "moles per hour",
symbol = "mol/h",
utype = "molar rate",
scale = 0.00027777777777777778,
default = "mmol/s",
link = "Mole (unit)",
},
["mol/min"] = {
name1 = "mole per minute",
name2 = "moles per minute",
symbol = "mol/min",
utype = "molar rate",
scale = 0.016666666666666666,
default = "mol/s",
link = "Mole (unit)",
},
["mol/s"] = {
name1 = "mole per second",
name2 = "moles per second",
symbol = "mol/s",
utype = "molar rate",
scale = 1,
default = "lb-mol/min",
link = "Mole (unit)",
},
["μmol/s"] = {
name1 = "micromole per second",
name2 = "micromoles per second",
symbol = "μmol/s",
utype = "molar rate",
scale = 0.000001,
default = "lb-mol/d",
link = "Mole (unit)",
},
["umol/s"] = {
target = "μmol/s",
},
["/acre"] = {
name1 = "per acre",
name2 = "per acre",
symbol = "/acre",
utype = "per unit area",
scale = 0.00024710538146716532,
default = "/ha",
link = "Acre",
},
["/ha"] = {
name1 = "per hectare",
name2 = "per hectare",
symbol = "/ha",
utype = "per unit area",
scale = 100e-6,
default = "/acre",
link = "Hectare",
},
["/sqcm"] = {
name1 = "per square centimetre",
name1_us = "per square centimeter",
name2 = "per square centimetre",
name2_us = "per square centimeter",
symbol = "/cm<sup>2</sup>",
utype = "per unit area",
scale = 1e4,
default = "/sqin",
link = "Square centimetre",
},
["/sqin"] = {
name1 = "per square inch",
name2 = "per square inch",
symbol = "/in<sup>2</sup>",
utype = "per unit area",
scale = 1550.0031000062002,
default = "/sqcm",
link = "Square inch",
},
["/sqkm"] = {
name1 = "per square kilometre",
name1_us = "per square kilometer",
name2 = "per square kilometre",
name2_us = "per square kilometer",
symbol = "/km<sup>2</sup>",
utype = "per unit area",
scale = 1e-6,
default = "/sqmi",
link = "Square kilometre",
},
["/sqmi"] = {
name1 = "per square mile",
name2 = "per square mile",
symbol = "/sq mi",
utype = "per unit area",
scale = 3.8610215854244582e-7,
default = "/sqkm",
link = "Square mile",
},
["PD/acre"] = {
name1 = "inhabitant per acre",
name2 = "inhabitants per acre",
symbol = "/acre",
utype = "per unit area",
scale = 0.00024710538146716532,
default = "PD/ha",
link = "Acre",
},
["PD/ha"] = {
name1 = "inhabitant per hectare",
name2 = "inhabitants per hectare",
symbol = "/ha",
utype = "per unit area",
scale = 100e-6,
default = "PD/acre",
link = "Hectare",
},
["PD/sqkm"] = {
name1 = "inhabitant per square kilometre",
name1_us = "inhabitant per square kilometer",
name2 = "inhabitants per square kilometre",
name2_us = "inhabitants per square kilometer",
symbol = "/km<sup>2</sup>",
utype = "per unit area",
scale = 1e-6,
default = "PD/sqmi",
link = "Square kilometre",
},
["PD/sqmi"] = {
name1 = "inhabitant per square mile",
name2 = "inhabitants per square mile",
symbol = "/sq mi",
utype = "per unit area",
scale = 3.8610215854244582e-7,
default = "PD/sqkm",
link = "Square mile",
},
["/cm2"] = {
target = "/sqcm",
},
["/in2"] = {
target = "/sqin",
},
["/km2"] = {
target = "/sqkm",
},
["pd/acre"] = {
target = "PD/acre",
},
["pd/ha"] = {
target = "PD/ha",
},
["PD/km2"] = {
target = "PD/sqkm",
},
["pd/km2"] = {
target = "PD/sqkm",
},
["PD/km²"] = {
target = "PD/sqkm",
},
["pd/sqkm"] = {
target = "PD/sqkm",
},
["pd/sqmi"] = {
target = "PD/sqmi",
},
["/l"] = {
name1 = "per litre",
name1_us = "per liter",
name2 = "per litre",
name2_us = "per liter",
symbol = "/l",
utype = "per unit volume",
scale = 1000,
default = "/usgal",
link = "Litre",
},
["/L"] = {
name1 = "per litre",
name1_us = "per liter",
name2 = "per litre",
name2_us = "per liter",
symbol = "/L",
utype = "per unit volume",
scale = 1000,
default = "/usgal",
link = "Litre",
},
["/USgal"] = {
name1 = "per gallon",
name2 = "per gallon",
symbol = "/gal",
utype = "per unit volume",
scale = 264.172052,
default = "/L",
link = "US gallon",
customary= 2,
},
["/usgal"] = {
target = "/USgal",
},
["bhp"] = {
name1 = "brake horsepower",
name2 = "brake horsepower",
symbol = "bhp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Brake horsepower",
},
["Cal/d"] = {
name1 = "large calorie per day",
name2 = "large calories per day",
symbol = "Cal/d",
utype = "power",
scale = 0.048425925925925928,
default = "kJ/d",
link = "Calorie",
},
["Cal/h"] = {
name1 = "large calorie per hour",
name2 = "large calories per hour",
symbol = "Cal/h",
utype = "power",
scale = 1.1622222222222223,
default = "kJ/h",
link = "Calorie",
},
["cal/h"] = {
name1 = "calorie per hour",
name2 = "calories per hour",
symbol = "cal/h",
utype = "power",
scale = 0.0011622222222222223,
default = "W",
link = "Calorie",
},
["CV"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "CV",
utype = "power",
scale = 735.49875,
default = "kW",
},
["hk"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "hk",
utype = "power",
scale = 735.49875,
default = "kW",
},
["hp"] = {
name1 = "horsepower",
name2 = "horsepower",
symbol = "hp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
},
["hp-electric"] = {
name1 = "electric horsepower",
name2 = "electric horsepower",
symbol = "hp",
utype = "power",
scale = 746,
default = "kW",
link = "Horsepower#Electrical horsepower",
},
["hp-electrical"] = {
name1 = "electrical horsepower",
name2 = "electrical horsepower",
symbol = "hp",
utype = "power",
scale = 746,
default = "kW",
link = "Horsepower#Electrical horsepower",
},
["hp-metric"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "hp",
utype = "power",
scale = 735.49875,
default = "kW",
},
["ihp"] = {
name1 = "indicated horsepower",
name2 = "indicated horsepower",
symbol = "ihp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Indicated horsepower",
},
["kcal/h"] = {
name1 = "kilocalorie per hour",
name2 = "kilocalories per hour",
symbol = "kcal/h",
utype = "power",
scale = 1.1622222222222223,
default = "kW",
link = "Calorie",
},
["kJ/d"] = {
name1 = "kilojoule per day",
name2 = "kilojoules per day",
symbol = "kJ/d",
utype = "power",
scale = 0.011574074074074073,
default = "Cal/d",
link = "Kilojoule",
},
["kJ/h"] = {
name1 = "kilojoule per hour",
name2 = "kilojoules per hour",
symbol = "kJ/h",
utype = "power",
scale = 0.27777777777777779,
default = "W",
link = "Kilojoule",
},
["PS"] = {
name1 = "metric horsepower",
name2 = "metric horsepower",
symbol = "PS",
utype = "power",
scale = 735.49875,
default = "kW",
},
["shp"] = {
name1 = "shaft horsepower",
name2 = "shaft horsepower",
symbol = "shp",
utype = "power",
scale = 745.69987158227022,
default = "kW",
link = "Horsepower#Shaft horsepower",
},
["W"] = {
_name1 = "watt",
_symbol = "W",
utype = "power",
scale = 1,
prefixes = 1,
default = "hp",
link = "Watt",
},
["BTU/h"] = {
per = { "BTU", "h" },
utype = "power",
default = "W",
},
["Btu/h"] = {
per = { "Btu", "h" },
utype = "power",
default = "W",
},
["BHP"] = {
target = "bhp",
},
["btu/h"] = {
target = "BTU/h",
},
["HP"] = {
target = "hp",
},
["Hp"] = {
target = "hp",
},
["hp-mechanical"] = {
target = "hp",
},
["IHP"] = {
target = "ihp",
},
["SHP"] = {
target = "shp",
},
["whp"] = {
target = "hp",
},
["hp/lb"] = {
name1 = "horsepower per pound",
name2 = "horsepower per pound",
symbol = "hp/lb",
utype = "power per unit mass",
scale = 1643.986806,
default = "kW/kg",
link = "Power-to-weight ratio",
},
["hp/LT"] = {
name1 = "horsepower per long ton",
name2 = "horsepower per long ton",
symbol = "hp/LT",
utype = "power per unit mass",
scale = 0.73392268125000004,
default = "kW/t",
link = "Power-to-weight ratio",
},
["hp/ST"] = {
name1 = "horsepower per short ton",
name2 = "horsepower per short ton",
symbol = "hp/ST",
utype = "power per unit mass",
scale = 0.821993403,
default = "kW/t",
link = "Power-to-weight ratio",
},
["hp/t"] = {
name1 = "horsepower per tonne",
name2 = "horsepower per tonne",
symbol = "hp/t",
utype = "power per unit mass",
scale = 0.74569987158227022,
default = "kW/t",
link = "Power-to-weight ratio",
},
["kW/kg"] = {
name1 = "kilowatt per kilogram",
name2 = "kilowatts per kilogram",
symbol = "kW/kg",
utype = "power per unit mass",
scale = 1000,
default = "hp/lb",
link = "Power-to-weight ratio",
},
["kW/t"] = {
name1 = "kilowatt per tonne",
name2 = "kilowatts per tonne",
symbol = "kW/t",
utype = "power per unit mass",
scale = 1,
default = "PS/t",
link = "Power-to-weight ratio",
},
["PS/t"] = {
name1 = "metric horsepower per tonne",
name2 = "metric horsepower per tonne",
symbol = "PS/t",
utype = "power per unit mass",
scale = 0.73549875,
default = "kW/t",
link = "Power-to-weight ratio",
},
["shp/lb"] = {
name1 = "shaft horsepower per pound",
name2 = "shaft horsepower per pound",
symbol = "shp/lb",
utype = "power per unit mass",
scale = 1643.986806,
default = "kW/kg",
link = "Power-to-weight ratio",
},
["hp/tonne"] = {
target = "hp/t",
symbol = "hp/tonne",
default = "kW/tonne",
},
["kW/tonne"] = {
target = "kW/t",
symbol = "kW/tonne",
},
["-lb/in2"] = {
name1 = "pound per square inch",
name2 = "pounds per square inch",
symbol = "lb/in<sup>2</sup>",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa kgf/cm2",
},
["atm"] = {
name1 = "standard atmosphere",
symbol = "atm",
utype = "pressure",
scale = 101325,
default = "kPa",
link = "Atmosphere (unit)",
},
["Ba"] = {
name1 = "barye",
symbol = "Ba",
utype = "pressure",
scale = 0.1,
default = "Pa",
},
["bar"] = {
symbol = "bar",
utype = "pressure",
scale = 100000,
default = "kPa",
link = "Bar (unit)",
},
["dbar"] = {
name1 = "decibar",
symbol = "dbar",
utype = "pressure",
scale = 10000,
default = "kPa",
link = "Bar (unit)",
},
["inHg"] = {
name1 = "inch of mercury",
name2 = "inches of mercury",
symbol = "inHg",
utype = "pressure",
scale = 3386.388640341,
default = "kPa",
},
["kBa"] = {
name1 = "kilobarye",
symbol = "kBa",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Barye",
},
["kg-f/cm2"] = {
name1 = "kilogram-force per square centimetre",
name1_us = "kilogram-force per square centimeter",
name2 = "kilograms-force per square centimetre",
name2_us = "kilograms-force per square centimeter",
symbol = "kg<sub>f</sub>/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["kg/cm2"] = {
name1 = "kilogram per square centimetre",
name1_us = "kilogram per square centimeter",
name2 = "kilograms per square centimetre",
name2_us = "kilograms per square centimeter",
symbol = "kg/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["kgf/cm2"] = {
name1 = "kilogram-force per square centimetre",
name1_us = "kilogram-force per square centimeter",
name2 = "kilograms-force per square centimetre",
name2_us = "kilograms-force per square centimeter",
symbol = "kgf/cm<sup>2</sup>",
utype = "pressure",
scale = 98066.5,
default = "psi",
link = "Kilogram-force",
},
["ksi"] = {
name1 = "kilopound per square inch",
name2 = "kilopounds per square inch",
symbol = "ksi",
utype = "pressure",
scale = 6894757.2931683613,
default = "MPa",
link = "Pound per square inch",
},
["lbf/in2"] = {
name1 = "pound-force per square inch",
name2 = "pounds-force per square inch",
symbol = "lbf/in<sup>2</sup>",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa kgf/cm2",
},
["mb"] = {
name1 = "millibar",
symbol = "mb",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Bar (unit)",
},
["mbar"] = {
name1 = "millibar",
symbol = "mbar",
utype = "pressure",
scale = 100,
default = "hPa",
link = "Bar (unit)",
},
["mmHg"] = {
name1 = "millimetre of mercury",
name1_us = "millimeter of mercury",
name2 = "millimetres of mercury",
name2_us = "millimeters of mercury",
symbol = "mmHg",
utype = "pressure",
scale = 133.322387415,
default = "kPa",
},
["Pa"] = {
_name1 = "pascal",
_symbol = "Pa",
utype = "pressure",
scale = 1,
prefixes = 1,
default = "psi",
link = "Pascal (unit)",
},
["psf"] = {
name1 = "pound per square foot",
name2 = "pounds per square foot",
symbol = "psf",
utype = "pressure",
scale = 47.880258980335839,
default = "kPa",
link = "Pound per square inch",
},
["psi"] = {
name1 = "pound per square inch",
name2 = "pounds per square inch",
symbol = "psi",
utype = "pressure",
scale = 6894.7572931683608,
default = "kPa",
},
["Torr"] = {
name1 = "torr",
symbol = "Torr",
utype = "pressure",
scale = 133.32236842105263,
default = "kPa",
},
["N/cm2"] = {
per = { "N", "cm2" },
utype = "pressure",
default = "psi",
},
["N/m2"] = {
per = { "N", "m2" },
utype = "pressure",
default = "psi",
},
["g/cm2"] = {
per = { "g", "cm2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["g/m2"] = {
per = { "g", "m2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["kg/ha"] = {
per = { "kg", "ha" },
utype = "pressure",
default = "lb/acre",
multiplier= 9.80665,
},
["kg/m2"] = {
per = { "kg", "m2" },
utype = "pressure",
default = "lb/sqft",
multiplier= 9.80665,
},
["lb/1000sqft"] = {
per = { "lb", "1000sqft" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["lb/acre"] = {
per = { "lb", "acre" },
utype = "pressure",
default = "kg/ha",
multiplier= 9.80665,
},
["lb/sqft"] = {
per = { "lb", "sqft" },
utype = "pressure",
default = "kg/m2",
multiplier= 9.80665,
},
["lb/sqyd"] = {
per = { "lb", "sqyd" },
utype = "pressure",
default = "kg/m2",
multiplier= 9.80665,
},
["LT/acre"] = {
per = { "LT", "acre" },
utype = "pressure",
default = "t/ha",
multiplier= 9.80665,
},
["MT/ha"] = {
per = { "MT", "ha" },
utype = "pressure",
default = "LT/acre ST/acre",
multiplier= 9.80665,
},
["oz/sqft"] = {
per = { "oz", "sqft" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["oz/sqyd"] = {
per = { "oz", "sqyd" },
utype = "pressure",
default = "g/m2",
multiplier= 9.80665,
},
["ST/acre"] = {
per = { "ST", "acre" },
utype = "pressure",
default = "t/ha",
multiplier= 9.80665,
},
["t/ha"] = {
per = { "t", "ha" },
utype = "pressure",
default = "LT/acre ST/acre",
multiplier= 9.80665,
},
["tonne/acre"] = {
per = { "tonne", "acre" },
utype = "pressure",
default = "tonne/ha",
multiplier= 9.80665,
},
["tonne/ha"] = {
per = { "tonne", "ha" },
utype = "pressure",
default = "tonne/acre",
multiplier= 9.80665,
},
["kgfpsqcm"] = {
target = "kgf/cm2",
},
["kgpsqcm"] = {
target = "kg/cm2",
},
["kN/m2"] = {
target = "kPa",
},
["lb/in2"] = {
target = "lbf/in2",
},
["torr"] = {
target = "Torr",
},
["Bq"] = {
_name1 = "becquerel",
_symbol = "Bq",
utype = "radioactivity",
scale = 1,
prefixes = 1,
default = "pCi",
link = "Becquerel",
},
["Ci"] = {
_name1 = "curie",
_symbol = "Ci",
utype = "radioactivity",
scale = 3.7e10,
prefixes = 1,
default = "GBq",
link = "Curie (unit)",
},
["Rd"] = {
_name1 = "rutherford",
_symbol = "Rd",
utype = "radioactivity",
scale = 1e6,
prefixes = 1,
default = "MBq",
link = "Rutherford (unit)",
},
["cm/h"] = {
name1 = "centimetre per hour",
name1_us = "centimeter per hour",
name2 = "centimetres per hour",
name2_us = "centimeters per hour",
symbol = "cm/h",
utype = "speed",
scale = 2.7777777777777775e-6,
default = "in/h",
link = "Metre per second",
},
["cm/s"] = {
name1 = "centimetre per second",
name1_us = "centimeter per second",
name2 = "centimetres per second",
name2_us = "centimeters per second",
symbol = "cm/s",
utype = "speed",
scale = 0.01,
default = "in/s",
link = "Metre per second",
},
["cm/year"] = {
name1 = "centimetre per year",
name1_us = "centimeter per year",
name2 = "centimetres per year",
name2_us = "centimeters per year",
symbol = "cm/year",
utype = "speed",
scale = 3.168873850681143e-10,
default = "in/year",
link = "Orders of magnitude (speed)",
},
["foot/s"] = {
name1 = "foot per second",
name2 = "foot per second",
symbol = "ft/s",
utype = "speed",
scale = 0.3048,
default = "m/s",
},
["ft/min"] = {
name1 = "foot per minute",
name2 = "feet per minute",
symbol = "ft/min",
utype = "speed",
scale = 0.00508,
default = "m/min",
link = "Feet per second",
},
["ft/s"] = {
name1 = "foot per second",
name2 = "feet per second",
symbol = "ft/s",
utype = "speed",
scale = 0.3048,
default = "m/s",
link = "Feet per second",
},
["furlong per fortnight"] = {
name2 = "furlongs per fortnight",
symbol = "furlong per fortnight",
usename = 1,
utype = "speed",
scale = 0.00016630952380952381,
default = "km/h mph",
link = "FFF system",
},
["in/h"] = {
name1 = "inch per hour",
name2 = "inches per hour",
symbol = "in/h",
utype = "speed",
scale = 7.0555555555555559e-6,
default = "cm/h",
link = "Inch",
},
["in/s"] = {
name1 = "inch per second",
name2 = "inches per second",
symbol = "in/s",
utype = "speed",
scale = 0.0254,
default = "cm/s",
link = "Inch",
},
["in/year"] = {
name1 = "inch per year",
name2 = "inches per year",
symbol = "in/year",
utype = "speed",
scale = 8.0489395807301024e-10,
default = "cm/year",
link = "Orders of magnitude (speed)",
},
["isp"] = {
name1 = "second",
symbol = "s",
utype = "speed",
scale = 9.80665,
default = "km/s",
link = "Specific impulse",
},
["km/d"] = {
name1 = "kilometre per day",
name1_us = "kilometer per day",
name2 = "kilometres per day",
name2_us = "kilometers per day",
symbol = "km/d",
utype = "speed",
scale = 1.1574074074074074e-2,
default = "mi/d",
link = "Orders of magnitude (speed)",
},
["km/h"] = {
name1 = "kilometre per hour",
name1_us = "kilometer per hour",
name2 = "kilometres per hour",
name2_us = "kilometers per hour",
symbol = "km/h",
utype = "speed",
scale = 0.27777777777777779,
default = "mph",
link = "Kilometres per hour",
},
["km/s"] = {
name1 = "kilometre per second",
name1_us = "kilometer per second",
name2 = "kilometres per second",
name2_us = "kilometers per second",
symbol = "km/s",
utype = "speed",
scale = 1000,
default = "mi/s",
link = "Metre per second",
},
["kn"] = {
name1 = "knot",
symbol = "kn",
utype = "speed",
scale = 0.51444444444444448,
default = "km/h mph",
link = "Knot (unit)",
},
["kNs/kg"] = {
name2 = "kN‑s/kg",
symbol = "kN‑s/kg",
utype = "speed",
scale = 1000,
default = "isp",
link = "Specific impulse",
},
["m/min"] = {
name1 = "metre per minute",
name1_us = "meter per minute",
name2 = "metres per minute",
name2_us = "meters per minute",
symbol = "m/min",
utype = "speed",
scale = 0.016666666666666666,
default = "ft/min",
link = "Metre per second",
},
["m/s"] = {
name1 = "metre per second",
name1_us = "meter per second",
name2 = "metres per second",
name2_us = "meters per second",
symbol = "m/s",
utype = "speed",
scale = 1,
default = "ft/s",
},
["Mach"] = {
name2 = "Mach",
symbol = "Mach",
utype = "speed",
builtin = "mach",
scale = 0,
iscomplex= true,
default = "km/h mph",
link = "Mach number",
},
["mi/d"] = {
name1 = "mile per day",
name2 = "miles per day",
symbol = "mi/d",
utype = "speed",
scale = 1.8626666666666667e-2,
default = "km/d",
link = "Orders of magnitude (speed)",
},
["mi/s"] = {
name1 = "mile per second",
name2 = "miles per second",
symbol = "mi/s",
utype = "speed",
scale = 1609.344,
default = "km/s",
link = "Mile",
},
["mm/h"] = {
name1 = "millimetre per hour",
name1_us = "millimeter per hour",
name2 = "millimetres per hour",
name2_us = "millimeters per hour",
symbol = "mm/h",
utype = "speed",
scale = 2.7777777777777781e-7,
default = "in/h",
link = "Metre per second",
},
["mph"] = {
name1 = "mile per hour",
name2 = "miles per hour",
symbol = "mph",
utype = "speed",
scale = 0.44704,
default = "km/h",
link = "Miles per hour",
},
["Ns/kg"] = {
name2 = "N‑s/kg",
symbol = "N‑s/kg",
utype = "speed",
scale = 1,
default = "isp",
link = "Specific impulse",
},
["si tsfc"] = {
name2 = "g/(kN⋅s)",
symbol = "g/(kN⋅s)",
utype = "speed",
scale = 9.9999628621379242e-7,
invert = -1,
iscomplex= true,
default = "tsfc",
link = "Thrust specific fuel consumption",
},
["tsfc"] = {
name2 = "lb/(lbf⋅h)",
symbol = "lb/(lbf⋅h)",
utype = "speed",
scale = 2.832545036049801e-5,
invert = -1,
iscomplex= true,
default = "si tsfc",
link = "Thrust specific fuel consumption",
},
["cm/y"] = {
target = "cm/year",
},
["cm/yr"] = {
target = "cm/year",
},
["in/y"] = {
target = "in/year",
},
["in/yr"] = {
target = "in/year",
},
["knot"] = {
target = "kn",
},
["knots"] = {
target = "kn",
},
["kph"] = {
target = "km/h",
},
["mi/h"] = {
target = "mph",
},
["mm/s"] = {
per = { "mm", "s" },
utype = "speed",
default = "in/s",
link = "Metre per second",
},
["C"] = {
name1 = "degree Celsius",
name2 = "degrees Celsius",
symbol = "°C",
usesymbol= 1,
utype = "temperature",
scale = 1,
offset = -273.15,
iscomplex= true,
istemperature= true,
default = "F",
link = "Celsius",
},
["F"] = {
name1 = "degree Fahrenheit",
name2 = "degrees Fahrenheit",
symbol = "°F",
usesymbol= 1,
utype = "temperature",
scale = 0.55555555555555558,
offset = 32-273.15*(9/5),
iscomplex= true,
istemperature= true,
default = "C",
link = "Fahrenheit",
},
["K"] = {
_name1 = "kelvin",
_symbol = "K",
usesymbol= 1,
utype = "temperature",
scale = 1,
offset = 0,
iscomplex= true,
istemperature= true,
prefixes = 1,
default = "C F",
link = "Kelvin",
},
["keVT"] = {
name1 = "kiloelectronvolt",
symbol = "keV",
utype = "temperature",
scale = 11.604505e6,
offset = 0,
iscomplex= true,
default = "MK",
link = "Electronvolt",
},
["R"] = {
name1 = "degree Rankine",
name2 = "degrees Rankine",
symbol = "°R",
usesymbol= 1,
utype = "temperature",
scale = 0.55555555555555558,
offset = 0,
iscomplex= true,
istemperature= true,
default = "K F C",
link = "Rankine scale",
},
["Celsius"] = {
target = "C",
},
["°C"] = {
target = "C",
},
["°F"] = {
target = "F",
},
["°R"] = {
target = "R",
},
["C-change"] = {
name1 = "degree Celsius change",
name2 = "degrees Celsius change",
symbol = "°C",
usesymbol= 1,
utype = "temperature change",
scale = 1,
default = "F-change",
link = "Celsius",
},
["F-change"] = {
name1 = "degree Fahrenheit change",
name2 = "degrees Fahrenheit change",
symbol = "°F",
usesymbol= 1,
utype = "temperature change",
scale = 0.55555555555555558,
default = "C-change",
link = "Fahrenheit",
},
["K-change"] = {
name1 = "kelvin change",
name2 = "kelvins change",
symbol = "K",
usesymbol= 1,
utype = "temperature change",
scale = 1,
default = "F-change",
link = "Kelvin",
},
["°C-change"] = {
target = "C-change",
},
["°F-change"] = {
target = "F-change",
},
["century"] = {
name1 = "century",
name2 = "centuries",
symbol = "ha",
utype = "time",
scale = 3155760000,
default = "Gs",
},
["d"] = {
name1 = "day",
symbol = "d",
utype = "time",
scale = 86400,
default = "ks",
},
["decade"] = {
name1 = "decade",
symbol = "daa",
utype = "time",
scale = 315576000,
default = "Ms",
},
["dog year"] = {
name1 = "dog year",
symbol = "dog yr",
utype = "time",
scale = 220903200,
default = "years",
link = "List of unusual units of measurement#Dog year",
},
["fortnight"] = {
symbol = "fortnight",
usename = 1,
utype = "time",
scale = 1209600,
default = "week",
},
["h"] = {
name1 = "hour",
symbol = "h",
utype = "time",
scale = 3600,
default = "ks",
},
["long billion year"] = {
name1 = "billion years",
name2 = "billion years",
symbol = "Ta",
utype = "time",
scale = 31557600000000000000,
default = "Es",
link = "Annum",
},
["millennium"] = {
name1 = "millennium",
name2 = "millennia",
symbol = "ka",
utype = "time",
scale = 31557600000,
default = "Gs",
},
["milliard year"] = {
name1 = "milliard years",
name2 = "milliard years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["million year"] = {
name1 = "million years",
name2 = "million years",
symbol = "Ma",
utype = "time",
scale = 31557600000000,
default = "Ts",
link = "Annum",
},
["min"] = {
name1 = "minute",
symbol = "min",
utype = "time",
scale = 60,
default = "s",
},
["month"] = {
symbol = "month",
usename = 1,
utype = "time",
scale = 2629800,
default = "Ms",
},
["months"] = {
name1 = "month",
symbol = "mo",
utype = "time",
scale = 2629800,
default = "year",
},
["s"] = {
_name1 = "second",
_symbol = "s",
utype = "time",
scale = 1,
prefixes = 1,
default = "v < 7200 ! min ! h",
link = "Second",
},
["short billion year"] = {
name1 = "billion years",
name2 = "billion years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["short trillion year"] = {
name1 = "trillion years",
name2 = "trillion years",
symbol = "Ta",
utype = "time",
scale = 31557600000000000000,
default = "Es",
link = "Annum",
},
["thousand million year"] = {
name1 = "thousand million years",
name2 = "thousand million years",
symbol = "Ga",
utype = "time",
scale = 31557600000000000,
default = "Ps",
link = "Annum",
},
["wk"] = {
symbol = "week",
usename = 1,
utype = "time",
scale = 604800,
default = "Ms",
},
["year"] = {
name1 = "year",
symbol = "a",
utype = "time",
scale = 31557600,
default = "Ms",
link = "Annum",
},
["years"] = {
name1 = "year",
symbol = "yr",
utype = "time",
scale = 31557600,
default = "Ms",
link = "Annum",
},
["byr"] = {
target = "short billion year",
},
["day"] = {
target = "d",
},
["days"] = {
target = "d",
},
["dog yr"] = {
target = "dog year",
},
["Gyr"] = {
target = "thousand million year",
},
["hour"] = {
target = "h",
},
["hours"] = {
target = "h",
},
["kMyr"] = {
target = "thousand million year",
},
["kmyr"] = {
target = "thousand million year",
},
["kyr"] = {
target = "millennium",
},
["long byr"] = {
target = "long billion year",
},
["minute"] = {
target = "min",
},
["minutes"] = {
target = "min",
},
["mth"] = {
target = "month",
},
["Myr"] = {
target = "million year",
},
["myr"] = {
target = "million year",
},
["sec"] = {
target = "s",
},
["second"] = {
target = "s",
},
["seconds"] = {
target = "s",
},
["tmyr"] = {
target = "thousand million year",
},
["tryr"] = {
target = "short trillion year",
},
["tyr"] = {
target = "millennium",
},
["week"] = {
target = "wk",
},
["weeks"] = {
target = "wk",
},
["yr"] = {
target = "year",
},
["kg.m"] = {
name1 = "kilogram metre",
name1_us = "kilogram meter",
symbol = "kg⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbft",
link = "Kilogram metre (torque)",
},
["kgf.m"] = {
name1 = "kilogram force-metre",
name1_us = "kilogram force-meter",
symbol = "kgf⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["kgm"] = {
name1 = "kilogram metre",
name1_us = "kilogram meter",
symbol = "kg⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["kpm"] = {
name1 = "kilopond metre",
name1_us = "kilopond meter",
symbol = "kp⋅m",
utype = "torque",
scale = 9.80665,
default = "Nm lbft",
link = "Kilogram metre (torque)",
},
["lb-fft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "ft⋅lb<sub>f</sub>",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lb.ft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "lb⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lb.in"] = {
name1 = "pound force-inch",
symbol = "lb⋅in",
utype = "torque",
scale = 0.1129848290276167,
default = "mN.m",
link = "Pound-foot (torque)",
},
["lbfft"] = {
name1 = "pound force-foot",
name2 = "pound force-feet",
symbol = "lbf⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["lbft"] = {
name1 = "pound-foot",
name2 = "pound-feet",
symbol = "lb⋅ft",
utype = "torque",
scale = 1.3558179483314004,
default = "Nm",
link = "Pound-foot (torque)",
},
["m.kg-f"] = {
name1 = "metre kilogram-force",
name1_us = "meter kilogram-force",
name2 = "metre kilograms-force",
name2_us = "meter kilograms-force",
symbol = "m⋅kg<sub>f</sub>",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["m.kgf"] = {
name1 = "metre kilogram-force",
name1_us = "meter kilogram-force",
name2 = "metre kilograms-force",
name2_us = "meter kilograms-force",
symbol = "m⋅kgf",
utype = "torque",
scale = 9.80665,
default = "Nm lbfft",
link = "Kilogram metre (torque)",
},
["mN.m"] = {
name1 = "millinewton-metre",
name1_us = "millinewton-meter",
symbol = "mN⋅m",
utype = "torque",
scale = 0.001,
default = "lb.in",
link = "Newton-metre",
},
["Nm"] = {
_name1 = "newton-metre",
_name1_us= "newton-meter",
_symbol = "N⋅m",
utype = "torque",
alttype = "energy",
scale = 1,
prefixes = 1,
default = "lbfft",
link = "Newton-metre",
},
["kN/m"] = {
per = { "kN", "-m-stiff" },
utype = "torque",
default = "lbf/in",
},
["lbf/in"] = {
per = { "lbf", "-in-stiff" },
utype = "torque",
default = "kN/m",
},
["lb-f.ft"] = {
target = "lb-fft",
},
["lbf.ft"] = {
target = "lbfft",
},
["lbf·ft"] = {
target = "lbfft",
},
["lb·ft"] = {
target = "lb.ft",
},
["mkg-f"] = {
target = "m.kg-f",
},
["mkgf"] = {
target = "m.kgf",
},
["N.m"] = {
target = "Nm",
},
["N·m"] = {
target = "Nm",
},
["ton-mile"] = {
symbol = "ton-mile",
usename = 1,
utype = "transportation",
scale = 1.4599723182105602,
default = "tkm",
},
["tkm"] = {
name1 = "tonne-kilometre",
name1_us = "tonne-kilometer",
symbol = "tkm",
utype = "transportation",
scale = 1,
default = "ton-mile",
},
["-12USoz(mL)serve"] = {
name1_us = "12 U.S. fl oz (355 mL) serving",
symbol = "12 US fl oz (355 mL) serving",
sym_us = "12 U.S. fl oz (355 mL) serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "mL",
link = "Beverage can#Standard sizes",
},
["-12USoz(ml)serve"] = {
name1_us = "12 U.S. fl oz (355 ml) serving",
symbol = "12 US fl oz (355 ml) serving",
sym_us = "12 U.S. fl oz (355 ml) serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "ml",
link = "Beverage can#Standard sizes",
},
["-12USozserve"] = {
name1_us = "12 U.S. fl oz serving",
symbol = "12 US fl oz serving",
sym_us = "12 U.S. fl oz serving",
utype = "volume",
scale = 0.00035488235475000004,
default = "mL",
link = "Beverage can#Standard sizes",
},
["acre-foot"] = {
name1 = "acre-foot",
name2 = "acre-foot",
symbol = "acre⋅ft",
utype = "volume",
scale = 1233.48183754752,
default = "m3",
},
["acre-ft"] = {
name1 = "acre-foot",
name2 = "acre-feet",
symbol = "acre⋅ft",
utype = "volume",
scale = 1233.48183754752,
default = "m3",
},
["AUtbsp"] = {
name1 = "Australian tablespoon",
symbol = "AU tbsp",
utype = "volume",
scale = 0.000020,
default = "ml",
},
["Bcuft"] = {
name1 = "billion cubic foot",
name2 = "billion cubic feet",
symbol = "billion cu ft",
utype = "volume",
scale = 28316846.592,
default = "Gl",
link = "Cubic foot",
},
["bdft"] = {
name1 = "board foot",
name2 = "board feet",
symbol = "bd ft",
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["board feet"] = {
name2 = "board feet",
symbol = "board foot",
usename = 1,
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["board foot"] = {
name2 = "board foot",
symbol = "board foot",
usename = 1,
utype = "volume",
scale = 0.0023597372167,
default = "m3",
},
["cc"] = {
name1 = "cubic centimetre",
name1_us = "cubic centimeter",
symbol = "cc",
utype = "volume",
scale = 0.000001,
default = "cuin",
},
["CID"] = {
name1 = "cubic inch",
name2 = "cubic inches",
symbol = "cu in",
utype = "volume",
scale = 0.000016387064,
default = "cc",
link = "Cubic inch#Engine displacement",
},
["cord"] = {
symbol = "cord",
utype = "volume",
scale = 3.624556363776,
default = "m3",
link = "Cord (unit)",
},
["cufoot"] = {
name1 = "cubic foot",
name2 = "cubic foot",
symbol = "cu ft",
utype = "volume",
scale = 0.028316846592,
default = "m3",
},
["cuft"] = {
name1 = "cubic foot",
name2 = "cubic feet",
symbol = "cu ft",
utype = "volume",
scale = 0.028316846592,
default = "m3",
},
["cuin"] = {
name1 = "cubic inch",
name2 = "cubic inches",
symbol = "cu in",
utype = "volume",
scale = 0.000016387064,
default = "cm3",
},
["cumi"] = {
name1 = "cubic mile",
symbol = "cu mi",
utype = "volume",
scale = 4168181825.440579584,
default = "km3",
},
["cuyd"] = {
name1 = "cubic yard",
symbol = "cu yd",
utype = "volume",
scale = 0.764554857984,
default = "m3",
},
["firkin"] = {
symbol = "firkin",
usename = 1,
utype = "volume",
scale = 0.04091481,
default = "L impgal USgal",
link = "Firkin (unit)",
},
["foot3"] = {
target = "cufoot",
},
["Goilbbl"] = {
name1 = "billion barrels",
name2 = "billion barrels",
symbol = "Gbbl",
utype = "volume",
scale = 158987294.928,
default = "v * 1.58987294928 < 10 ! e6 ! e9 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["gr water"] = {
name1 = "grains water",
name2 = "grains water",
symbol = "gr H<sub>2</sub>O",
utype = "volume",
scale = 0.00000006479891,
default = "cm3",
link = "Grain (unit)",
},
["grt"] = {
name1 = "gross register ton",
symbol = "grt",
utype = "volume",
scale = 2.8316846592,
default = "m3",
link = "Gross register tonnage",
},
["impbbl"] = {
name1 = "imperial barrel",
symbol = "imp bbl",
utype = "volume",
scale = 0.16365924,
default = "L impgal USgal",
link = "Barrel (unit)",
},
["impbsh"] = {
name1 = "imperial bushel",
symbol = "imp bsh",
utype = "volume",
scale = 0.03636872,
default = "L impgal USdrygal",
},
["impbu"] = {
name1 = "imperial bushel",
symbol = "imp bu",
utype = "volume",
scale = 0.03636872,
default = "m3",
},
["impgal"] = {
name1 = "imperial gallon",
symbol = "imp gal",
utype = "volume",
scale = 0.00454609,
default = "L USgal",
},
["impgi"] = {
name1 = "gill",
symbol = "gi",
utype = "volume",
scale = 0.0001420653125,
default = "ml USoz",
link = "Gill (unit)",
},
["impkenning"] = {
name1 = "imperial kenning",
symbol = "kenning",
utype = "volume",
scale = 0.01818436,
default = "L USdrygal",
link = "Kenning (unit)",
},
["impoz"] = {
name1 = "imperial fluid ounce",
symbol = "imp fl oz",
utype = "volume",
scale = 0.0000284130625,
default = "ml USoz",
},
["imppk"] = {
name1 = "imperial peck",
symbol = "pk",
utype = "volume",
scale = 0.00909218,
default = "L USdrygal",
link = "Peck",
},
["imppt"] = {
name1 = "imperial pint",
symbol = "imp pt",
utype = "volume",
scale = 0.00056826125,
default = "L",
},
["impqt"] = {
name1 = "imperial quart",
symbol = "imp qt",
utype = "volume",
scale = 0.0011365225,
default = "ml USoz",
customary= 3,
},
["kilderkin"] = {
symbol = "kilderkin",
usename = 1,
utype = "volume",
scale = 0.08182962,
default = "L impgal USgal",
},
["koilbbl"] = {
name1 = "thousand barrels",
name2 = "thousand barrels",
symbol = "kbbl",
utype = "volume",
scale = 158.987294928,
default = "v * 1.58987294928 < 10 ! ! e3 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["L"] = {
_name1 = "litre",
_name1_us= "liter",
_symbol = "L",
utype = "volume",
scale = 0.001,
prefixes = 1,
default = "impgal USgal",
link = "Litre",
},
["l"] = {
_name1 = "litre",
_name1_us= "liter",
_symbol = "l",
utype = "volume",
scale = 0.001,
prefixes = 1,
default = "impgal USgal",
link = "Litre",
},
["ll"] = {
name1 = "litre",
name1_us = "liter",
symbol = "l",
utype = "volume",
scale = 0.001,
default = "impgal USgal",
},
["m3"] = {
_name1 = "cubic metre",
_name1_us= "cubic meter",
_symbol = "m<sup>3</sup>",
prefix_position= 7,
utype = "volume",
scale = 1,
prefixes = 3,
default = "cuft",
link = "Cubic metre",
},
["Mbbl"] = {
name1 = "thousand barrels",
name2 = "thousand barrels",
symbol = "Mbbl",
utype = "volume",
scale = 158.987294928,
default = "v * 1.58987294928 < 10 ! e3 ! ! m3",
link = "Barrel (unit)#Oil barrel",
},
["MMoilbbl"] = {
name1 = "million barrels",
name2 = "million barrels",
symbol = "MMbbl",
utype = "volume",
scale = 158987.294928,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["Moilbbl"] = {
name1 = "million barrels",
name2 = "million barrels",
symbol = "Mbbl",
utype = "volume",
scale = 158987.294928,
default = "v * 1.58987294928 < 10 ! e3 ! e6 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["MTON"] = {
name1 = "measurement ton",
symbol = "MTON",
utype = "volume",
scale = 1.13267386368,
default = "m3",
},
["MUSgal"] = {
name1 = "million US gallons",
name1_us = "million U.S. gallons",
name2 = "million US gallons",
name2_us = "million U.S. gallons",
symbol = "million US gal",
sym_us = "million U.S. gal",
utype = "volume",
scale = 3785.411784,
default = "Ml",
link = "US gallon",
},
["oilbbl"] = {
name1 = "barrel",
symbol = "bbl",
utype = "volume",
scale = 0.158987294928,
default = "m3",
link = "Barrel (unit)#Oil barrel",
},
["stere"] = {
symbol = "stere",
usename = 1,
utype = "volume",
scale = 1,
default = "cuft",
},
["Toilbbl"] = {
name1 = "trillion barrels",
name2 = "trillion barrels",
symbol = "Tbbl",
utype = "volume",
scale = 158987294928,
default = "v * 1.58987294928 < 10 ! e9 ! e12 ! m3",
link = "Barrel (unit)#Oil barrel",
},
["USbbl"] = {
name1 = "US barrel",
name1_us = "U.S. barrel",
symbol = "US bbl",
sym_us = "U.S. bbl",
utype = "volume",
scale = 0.119240471196,
default = "L USgal impgal",
link = "Barrel (unit)",
},
["USbeerbbl"] = {
name1 = "US beer barrel",
name1_us = "U.S. beer barrel",
symbol = "US bbl",
sym_us = "U.S. bbl",
utype = "volume",
scale = 0.117347765304,
default = "L USgal impgal",
link = "Barrel (unit)",
},
["USbsh"] = {
name1 = "US bushel",
name1_us = "U.S. bushel",
symbol = "US bsh",
sym_us = "U.S. bsh",
utype = "volume",
scale = 0.03523907016688,
default = "L USdrygal impgal",
link = "Bushel",
},
["USbu"] = {
name1 = "US bushel",
name1_us = "U.S. bushel",
symbol = "US bu",
sym_us = "U.S. bu",
utype = "volume",
scale = 0.03523907016688,
default = "L USdrygal impgal",
link = "Bushel",
},
["USdrybbl"] = {
name1 = "US dry barrel",
name1_us = "U.S. dry barrel",
symbol = "US dry bbl",
sym_us = "U.S. dry bbl",
utype = "volume",
scale = 0.11562819898508,
default = "m3",
link = "Barrel (unit)",
},
["USdrygal"] = {
name1 = "US dry gallon",
name1_us = "U.S. dry gallon",
symbol = "US dry gal",
sym_us = "U.S. dry gal",
utype = "volume",
scale = 0.00440488377086,
default = "L",
link = "Gallon",
},
["USdrypt"] = {
name1 = "US dry pint",
name1_us = "U.S. dry pint",
symbol = "US dry pt",
sym_us = "U.S. dry pt",
utype = "volume",
scale = 0.0005506104713575,
default = "ml",
link = "Pint",
},
["USdryqt"] = {
name1 = "US dry quart",
name1_us = "U.S. dry quart",
symbol = "US dry qt",
sym_us = "U.S. dry qt",
utype = "volume",
scale = 0.001101220942715,
default = "ml",
link = "Quart",
},
["USflgal"] = {
name1 = "US gallon",
name1_us = "U.S. gallon",
symbol = "US fl gal",
sym_us = "U.S. fl gal",
utype = "volume",
scale = 0.003785411784,
default = "L impgal",
link = "Gallon",
},
["USgal"] = {
name1 = "US gallon",
name1_us = "U.S. gallon",
symbol = "US gal",
sym_us = "U.S. gal",
utype = "volume",
scale = 0.003785411784,
default = "L impgal",
},
["USgi"] = {
name1 = "gill",
symbol = "gi",
utype = "volume",
scale = 0.0001182941183,
default = "ml impoz",
link = "Gill (unit)",
},
["USkenning"] = {
name1 = "US kenning",
name1_us = "U.S. kenning",
symbol = "US kenning",
sym_us = "U.S. kenning",
utype = "volume",
scale = 0.01761953508344,
default = "L impgal",
link = "Kenning (unit)",
},
["USmin"] = {
name1 = "US minim",
name1_us = "U.S. minim",
symbol = "US min",
sym_us = "U.S. min",
utype = "volume",
scale = 0.000000061611519921875,
default = "ml",
link = "Minim (unit)",
},
["USoz"] = {
name1 = "US fluid ounce",
name1_us = "U.S. fluid ounce",
symbol = "US fl oz",
sym_us = "U.S. fl oz",
utype = "volume",
scale = 0.0000295735295625,
default = "ml",
},
["USpk"] = {
name1 = "US peck",
name1_us = "U.S. peck",
symbol = "US pk",
sym_us = "U.S. pk",
utype = "volume",
scale = 0.00880976754172,
default = "L impgal",
link = "Peck",
},
["USpt"] = {
name1 = "US pint",
name1_us = "U.S. pint",
symbol = "US pt",
sym_us = "U.S. pt",
utype = "volume",
scale = 0.000473176473,
default = "L imppt",
link = "Pint",
},
["USqt"] = {
name1 = "US quart",
name1_us = "U.S. quart",
symbol = "US qt",
sym_us = "U.S. qt",
utype = "volume",
scale = 0.000946352946,
default = "ml",
link = "Quart",
customary= 1,
},
["USquart"] = {
name1 = "US quart",
name1_us = "U.S. quart",
symbol = "US qt",
sym_us = "U.S. qt",
utype = "volume",
scale = 0.000946352946,
default = "ml impoz",
link = "Quart",
},
["UStbsp"] = {
name1 = "US tablespoon",
name1_us = "U.S. tablespoon",
symbol = "US tbsp",
sym_us = "U.S. tbsp",
utype = "volume",
scale = 1.4786764781250001e-5,
default = "ml",
},
["winecase"] = {
symbol = "case",
usename = 1,
utype = "volume",
scale = 0.009,
default = "L",
link = "Case (goods)",
},
["*U.S.drygal"] = {
target = "USdrygal",
sp_us = true,
customary= 2,
},
["*U.S.gal"] = {
target = "USgal",
sp_us = true,
customary= 2,
},
["+USdrygal"] = {
target = "USdrygal",
customary= 1,
},
["+usfloz"] = {
target = "USoz",
link = "Fluid ounce",
customary= 1,
},
["+USgal"] = {
target = "USgal",
customary= 1,
},
["+USoz"] = {
target = "USoz",
customary= 1,
},
["@impgal"] = {
target = "impgal",
link = "Gallon",
customary= 3,
},
["acre feet"] = {
target = "acre-ft",
},
["acre foot"] = {
target = "acre-foot",
},
["acre ft"] = {
target = "acre-ft",
},
["acre-feet"] = {
target = "acre-ft",
},
["acre.foot"] = {
target = "acre-foot",
},
["acre.ft"] = {
target = "acre-ft",
},
["acre·ft"] = {
target = "acre-ft",
},
["bushels"] = {
target = "USbsh",
},
["cid"] = {
target = "CID",
},
["ft3"] = {
target = "cuft",
},
["gal"] = {
target = "USgal",
},
["gallon"] = {
shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallon%})",
},
["gallons"] = {
shouldbe = "Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallons%})",
},
["Gcuft"] = {
target = "e9cuft",
},
["impfloz"] = {
target = "impoz",
},
["Impgal"] = {
target = "impgal",
},
["in3"] = {
target = "cuin",
symbol = "in<sup>3</sup>",
},
["hm³"] = {
target = "hm3",
},
["kcuft"] = {
target = "e3cuft",
},
["kcum"] = {
target = "e3m3",
},
["km³"] = {
target = "km3",
},
["liter"] = {
target = "L",
sp_us = true,
},
["liters"] = {
target = "L",
sp_us = true,
},
["litre"] = {
target = "L",
},
["litres"] = {
target = "L",
},
["Mcuft"] = {
target = "e6cuft",
},
["Mcum"] = {
target = "e6m3",
},
["Mft3"] = {
target = "e6cuft",
},
["mi3"] = {
target = "cumi",
},
["m³"] = {
target = "m3",
},
["Pcuft"] = {
target = "e15cuft",
},
["pt"] = {
shouldbe = "Use %{USpt%} for US pints or %{imppt%} for imperial pints (not %{pt%})",
},
["qt"] = {
shouldbe = "Use %{USqt%} for US quarts or %{impqt%} for imperial quarts (not %{qt%})",
},
["Tcuft"] = {
target = "e12cuft",
},
["Tft3"] = {
target = "e12cuft",
},
["U.S.bbl"] = {
target = "USbbl",
sp_us = true,
default = "L U.S.gal impgal",
},
["U.S.beerbbl"] = {
target = "USbeerbbl",
sp_us = true,
default = "L U.S.gal impgal",
},
["U.S.bsh"] = {
target = "USbsh",
sp_us = true,
default = "L U.S.drygal impgal",
},
["U.S.bu"] = {
target = "USbu",
sp_us = true,
default = "L U.S.drygal impgal",
},
["U.S.drybbl"] = {
target = "USdrybbl",
sp_us = true,
},
["U.S.drygal"] = {
target = "USdrygal",
sp_us = true,
},
["U.S.drypt"] = {
target = "USdrypt",
sp_us = true,
},
["U.S.dryqt"] = {
target = "USdryqt",
sp_us = true,
},
["U.S.flgal"] = {
target = "USflgal",
sp_us = true,
},
["U.S.floz"] = {
target = "USoz",
sp_us = true,
},
["U.S.gal"] = {
target = "USgal",
sp_us = true,
link = "U.S. gallon",
},
["u.s.gal"] = {
target = "USgal",
sp_us = true,
link = "U.S. gallon",
},
["U.S.gi"] = {
target = "USgi",
sp_us = true,
},
["U.S.kenning"] = {
target = "USkenning",
sp_us = true,
},
["U.S.oz"] = {
target = "USoz",
sp_us = true,
},
["U.S.pk"] = {
target = "USpk",
sp_us = true,
},
["U.S.pt"] = {
target = "USpt",
sp_us = true,
},
["U.S.qt"] = {
target = "USqt",
sp_us = true,
default = "L impqt",
customary= 2,
},
["usbbl"] = {
target = "USbbl",
},
["usbeerbbl"] = {
target = "USbeerbbl",
},
["usbsh"] = {
target = "USbsh",
},
["usbu"] = {
target = "USbu",
},
["usdrybbl"] = {
target = "USdrybbl",
},
["usdrygal"] = {
target = "USdrygal",
},
["usdrypt"] = {
target = "USdrypt",
},
["usdryqt"] = {
target = "USdryqt",
},
["USfloz"] = {
target = "USoz",
},
["usfloz"] = {
target = "USoz",
},
["USGAL"] = {
target = "USgal",
},
["usgal"] = {
target = "USgal",
},
["usgi"] = {
target = "USgi",
},
["uskenning"] = {
target = "USkenning",
},
["usoz"] = {
target = "USoz",
},
["uspk"] = {
target = "USpk",
},
["uspt"] = {
target = "USpt",
},
["usqt"] = {
target = "USqt",
},
["yd3"] = {
target = "cuyd",
},
["cuft/sqmi"] = {
per = { "cuft", "sqmi" },
utype = "volume per unit area",
default = "m3/km2",
},
["m3/ha"] = {
name1 = "cubic metre per hectare",
name1_us = "cubic meter per hectare",
name2 = "cubic metres per hectare",
name2_us = "cubic meters per hectare",
symbol = "m<sup>3</sup>/ha",
utype = "volume per unit area",
scale = 0.0001,
default = "USbu/acre",
link = "Hectare",
},
["m3/km2"] = {
per = { "m3", "km2" },
utype = "volume per unit area",
default = "cuft/sqmi",
},
["U.S.gal/acre"] = {
per = { "U.S.gal", "acre" },
utype = "volume per unit area",
default = "m3/km2",
},
["USbu/acre"] = {
name2 = "US bushels per acre",
symbol = "US bushel per acre",
usename = 1,
utype = "volume per unit area",
scale = 8.7077638761350888e-6,
default = "m3/ha",
link = "Bushel",
},
["USgal/acre"] = {
per = { "USgal", "acre" },
utype = "volume per unit area",
default = "m3/km2",
},
["cuyd/mi"] = {
per = { "cuyd", "mi" },
utype = "volume per unit length",
default = "m3/km",
},
["m3/km"] = {
per = { "m3", "km" },
utype = "volume per unit length",
default = "cuyd/mi",
},
["mich"] = {
combination= { "ch", "mi" },
multiple = { 80 },
utype = "length",
},
["michlk"] = {
combination= { "chlk", "mi" },
multiple = { 80 },
utype = "length",
},
["michainlk"] = {
combination= { "chainlk", "mi" },
multiple = { 80 },
utype = "length",
},
["miyd"] = {
combination= { "yd", "mi" },
multiple = { 1760 },
utype = "length",
},
["miydftin"] = {
combination= { "in", "ft", "yd", "mi" },
multiple = { 12, 3, 1760 },
utype = "length",
},
["mift"] = {
combination= { "ft", "mi" },
multiple = { 5280 },
utype = "length",
},
["ydftin"] = {
combination= { "in", "ft", "yd" },
multiple = { 12, 3 },
utype = "length",
},
["ydft"] = {
combination= { "ft", "yd" },
multiple = { 3 },
utype = "length",
},
["ftin"] = {
combination= { "in", "ft" },
multiple = { 12 },
utype = "length",
},
["footin"] = {
combination= { "in", "foot" },
multiple = { 12 },
utype = "length",
},
["handin"] = {
combination= { "in", "hand" },
multiple = { 4 },
utype = "length",
},
["lboz"] = {
combination= { "oz", "lb" },
multiple = { 16 },
utype = "mass",
},
["stlb"] = {
combination= { "lb", "st" },
multiple = { 14 },
utype = "mass",
},
["stlboz"] = {
combination= { "oz", "lb", "st" },
multiple = { 16, 14 },
utype = "mass",
},
["st and lb"] = {
combination= { "lb", "st" },
multiple = { 14 },
utype = "mass",
},
["GN LTf"] = {
combination= { "GN", "-LTf" },
utype = "force",
},
["GN LTf STf"] = {
combination= { "GN", "-LTf", "-STf" },
utype = "force",
},
["GN STf"] = {
combination= { "GN", "-STf" },
utype = "force",
},
["GN STf LTf"] = {
combination= { "GN", "-STf", "-LTf" },
utype = "force",
},
["kN LTf"] = {
combination= { "kN", "-LTf" },
utype = "force",
},
["kN LTf STf"] = {
combination= { "kN", "-LTf", "-STf" },
utype = "force",
},
["kN STf"] = {
combination= { "kN", "-STf" },
utype = "force",
},
["kN STf LTf"] = {
combination= { "kN", "-STf", "-LTf" },
utype = "force",
},
["LTf STf"] = {
combination= { "-LTf", "-STf" },
utype = "force",
},
["MN LTf"] = {
combination= { "MN", "-LTf" },
utype = "force",
},
["MN LTf STf"] = {
combination= { "MN", "-LTf", "-STf" },
utype = "force",
},
["MN STf"] = {
combination= { "MN", "-STf" },
utype = "force",
},
["MN STf LTf"] = {
combination= { "MN", "-STf", "-LTf" },
utype = "force",
},
["STf LTf"] = {
combination= { "-STf", "-LTf" },
utype = "force",
},
["L/100 km mpgimp"] = {
combination= { "L/100 km", "mpgimp" },
utype = "fuel efficiency",
},
["l/100 km mpgimp"] = {
combination= { "l/100 km", "mpgimp" },
utype = "fuel efficiency",
},
["L/100 km mpgUS"] = {
combination= { "L/100 km", "mpgus" },
utype = "fuel efficiency",
},
["L/100 km mpgus"] = {
combination= { "L/100 km", "mpgus" },
utype = "fuel efficiency",
},
["l/100 km mpgus"] = {
combination= { "l/100 km", "mpgus" },
utype = "fuel efficiency",
},
["mpgimp L/100 km"] = {
combination= { "mpgimp", "L/100 km" },
utype = "fuel efficiency",
},
["LT ST t"] = {
combination= { "lt", "-ST", "t" },
utype = "mass",
},
["LT t ST"] = {
combination= { "lt", "t", "-ST" },
utype = "mass",
},
["ST LT t"] = {
combination= { "-ST", "lt", "t" },
utype = "mass",
},
["ST t LT"] = {
combination= { "-ST", "t", "lt" },
utype = "mass",
},
["t LT ST"] = {
combination= { "t", "lt", "-ST" },
utype = "mass",
},
["ton"] = {
combination= { "LT", "ST" },
utype = "mass",
},
["kPa kg/cm2"] = {
combination= { "kPa", "kgf/cm2" },
utype = "pressure",
},
["kPa lb/in2"] = {
combination= { "kPa", "-lb/in2" },
utype = "pressure",
},
["floz"] = {
combination= { "impoz", "USoz" },
utype = "volume",
},
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local default_exceptions = {
-- Prefixed units with a default different from that of the base unit.
-- Each key item is a prefixed symbol (unitcode for engineering notation).
["cm<sup>2</sup>"] = "sqin",
["dm<sup>2</sup>"] = "sqin",
["e3acre"] = "km2",
["e3m2"] = "e6sqft",
["e6acre"] = "km2",
["e6ha"] = "e6acre",
["e6km2"] = "e6sqmi",
["e6m2"] = "e6sqft",
["e6sqft"] = "v * 9.290304 < 100 ! e3 ! e6 ! m2",
["e6sqmi"] = "e6km2",
["hm<sup>2</sup>"] = "acre",
["km<sup>2</sup>"] = "sqmi",
["mm<sup>2</sup>"] = "sqin",
["aJ"] = "eV",
["e3BTU"] = "MJ",
["e6BTU"] = "GJ",
["EJ"] = "kWh",
["fJ"] = "keV",
["GJ"] = "kWh",
["MJ"] = "kWh",
["PJ"] = "kWh",
["pJ"] = "MeV",
["TJ"] = "kWh",
["YJ"] = "kWh",
["yJ"] = "μeV",
["ZJ"] = "kWh",
["zJ"] = "meV",
["e12cuft/a"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/a",
["e12cuft/d"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3/d",
["e12m3/a"] = "Tcuft/a",
["e12m3/d"] = "Tcuft/d",
["e3cuft/a"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/a",
["e3cuft/d"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/d",
["e3cuft/s"] = "v * 2.8316846592 < 100 ! ! e3 ! m3/s",
["e3m3/a"] = "v < 28.316846592 ! k ! M ! cuft/a",
["e3m3/d"] = "v < 28.316846592 ! k ! M ! cuft/d",
["e3m3/s"] = "v < 28.316846592 ! k ! M ! cuft/s",
["e3USgal/a"] = "v * 3.785411784 < 1000 ! ! e3 ! m3/a",
["e6cuft/a"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/a",
["e6cuft/d"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/d",
["e6cuft/s"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3/s",
["e6m3/a"] = "v < 28.316846592 ! M ! G ! cuft/a",
["e6m3/d"] = "v < 28.316846592 ! M ! G ! cuft/d",
["e6m3/s"] = "v < 28.316846592 ! e6 ! e9 ! cuft/s",
["e6USgal/a"] = "v * 3.785411784 < 1000 ! e3 ! e6 ! m3/a",
["e9cuft/a"] = "m3/a",
["e9cuft/d"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3/d",
["e9m3/a"] = "v < 28.316846592 ! G ! T ! cuft/a",
["e9m3/d"] = "v < 28.316846592 ! G ! T ! cuft/d",
["e9m3/s"] = "v < 28.316846592 ! e9 ! e12 ! cuft/s",
["e9USgal/a"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/a",
["e9USgal/s"] = "v * 3.785411784 < 1000 ! e6 ! e9 ! m3/s",
["nN"] = "gr-f",
["μN"] = "gr-f",
["mN"] = "oz-f",
["am"] = "in",
["cm"] = "in",
["dam"] = "ft",
["dm"] = "in",
["e12km"] = "e12mi",
["e12mi"] = "e12km",
["e3AU"] = "ly",
["e3km"] = "e3mi",
["e3mi"] = "e3km",
["e6km"] = "e6mi",
["e6mi"] = "e6km",
["e9km"] = "AU",
["e9mi"] = "e9km",
["Em"] = "mi",
["fm"] = "in",
["Gm"] = "mi",
["hm"] = "ft",
["km"] = "mi",
["mm"] = "in",
["Mm"] = "mi",
["nm"] = "in",
["Pm"] = "mi",
["pm"] = "in",
["Tm"] = "mi",
["Ym"] = "mi",
["ym"] = "in",
["Zm"] = "mi",
["zm"] = "in",
["μm"] = "in",
["e12lb"] = "v * 4.5359237 < 10 ! Mt ! Gt",
["e3lb"] = "v * 4.5359237 < 10 ! kg ! t",
["e3ozt"] = "v * 0.311034768 < 10 ! kg ! t",
["e3t"] = "LT ST",
["e6carat"] = "t",
["e6lb"] = "v * 4.5359237 < 10 ! t ! kilotonne",
["e6ozt"] = "lb kg",
["e6ST"] = "Mt",
["e6t"] = "LT ST",
["e9lb"] = "v * 4.5359237 < 10 ! kilotonne ! Mt",
["e9t"] = "LT ST",
["Gg"] = "lb",
["kg"] = "lb",
["mg"] = "gr",
["Mg"] = "LT ST",
["ng"] = "gr",
["μg"] = "gr",
["mBq"] = "fCi",
["kBq"] = "nCi",
["MBq"] = "μCi",
["GBq"] = "mCi",
["TBq"] = "Ci",
["PBq"] = "kCi",
["EBq"] = "kCi",
["fCi"] = "mBq",
["pCi"] = "Bq",
["nCi"] = "Bq",
["μCi"] = "kBq",
["mCi"] = "MBq",
["kCi"] = "TBq",
["MCi"] = "PBq",
["ns"] = "μs",
["μs"] = "ms",
["ms"] = "s",
["ks"] = "h",
["Ms"] = "week",
["Gs"] = "decade",
["Ts"] = "millennium",
["Ps"] = "million year",
["Es"] = "thousand million year",
["MK"] = "keVT",
["cL"] = "impoz usoz",
["cl"] = "impoz usoz",
["cm<sup>3</sup>"] = "cuin",
["dL"] = "impoz usoz",
["dl"] = "impoz usoz",
["mm<sup>3</sup>"] = "cuin",
["dm<sup>3</sup>"] = "cuin",
["e12cuft"] = "v * 2.8316846592 < 100 ! e9 ! e12 ! m3",
["e12impgal"] = "v * 4.54609 < 1000 ! T ! P ! l",
["e12m3"] = "v < 28.316846592 ! T ! P ! cuft",
["e12U.S.gal"] = "v * 3.785411784 < 1000 ! T ! P ! l",
["e12USgal"] = "v * 3.785411784 < 1000 ! T ! P ! l",
["e15cuft"] = "v * 2.8316846592 < 100 ! e12 ! e15 ! m3",
["e15m3"] = "Pcuft",
["e3bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3",
["e3cuft"] = "v * 2.8316846592 < 100 ! ! e3 ! m3",
["e3impgal"] = "v * 4.54609 < 1000 ! k ! M ! l",
["e3m3"] = "v < 28.316846592 ! k ! M ! cuft",
["e3U.S.gal"] = "v * 3.785411784 < 1000 ! k ! M ! l",
["e3USgal"] = "v * 3.785411784 < 1000 ! k ! M ! l",
["e6bdft"] = "v * 0.23597372167 < 100 ! e3 ! e6 ! m3",
["e6cuft"] = "v * 2.8316846592 < 100 ! e3 ! e6 ! m3",
["e6cuyd"] = "v * 7.64554857984 < 10 ! e3 ! e6 ! m3",
["e6impgal"] = "v * 4.54609 < 1000 ! M ! G ! l",
["e6L"] = "USgal",
["e6m3"] = "v < 28.316846592 ! M ! G ! cuft",
["e6U.S.gal"] = "v * 3.785411784 < 1000 ! M ! G ! l",
["e6USgal"] = "v * 3.785411784 < 1000 ! M ! G ! l",
["e9bdft"] = "v * 0.23597372167 < 100 ! e6 ! e9 ! m3",
["e9cuft"] = "v * 2.8316846592 < 100 ! e6 ! e9 ! m3",
["e9impgal"] = "v * 4.54609 < 1000 ! G ! T ! l",
["e9m3"] = "v < 28.316846592 ! G ! T ! cuft",
["e9U.S.gal"] = "v * 3.785411784 < 1000 ! G ! T ! l",
["e9USgal"] = "v * 3.785411784 < 1000 ! G ! T ! l",
["GL"] = "cuft",
["Gl"] = "cuft",
["kL"] = "cuft",
["kl"] = "cuft",
["km<sup>3</sup>"] = "cumi",
["mL"] = "impoz usoz",
["ml"] = "impoz usoz",
["Ml"] = "v < 28.316846592 ! e3 ! e6 ! cuft",
["ML"] = "v < 28.316846592 ! e3 ! e6 ! cuft",
["TL"] = "cumi",
["Tl"] = "cumi",
["μL"] = "cuin",
["μl"] = "cuin",
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local link_exceptions = {
-- Prefixed units with a linked article different from that of the base unit.
-- Each key item is a prefixed symbol (not unitcode).
["mm<sup>2</sup>"] = "Square millimetre",
["cm<sup>2</sup>"] = "Square centimetre",
["dm<sup>2</sup>"] = "Square decimetre",
["km<sup>2</sup>"] = "Square kilometre",
["kJ"] = "Kilojoule",
["MJ"] = "Megajoule",
["GJ"] = "Gigajoule",
["TJ"] = "Terajoule",
["fm"] = "Femtometre",
["pm"] = "Picometre",
["nm"] = "Nanometre",
["μm"] = "Micrometre",
["mm"] = "Millimetre",
["cm"] = "Centimetre",
["dm"] = "Decimetre",
["dam"] = "Decametre",
["hm"] = "Hectometre",
["km"] = "Kilometre",
["Mm"] = "Megametre",
["Gm"] = "Gigametre",
["Tm"] = "Terametre",
["Pm"] = "Petametre",
["Em"] = "Exametre",
["Zm"] = "Zettametre",
["Ym"] = "Yottametre",
["μg"] = "Microgram",
["mg"] = "Milligram",
["kg"] = "Kilogram",
["Mg"] = "Tonne",
["yW"] = "Yoctowatt",
["zW"] = "Zeptowatt",
["aW"] = "Attowatt",
["fW"] = "Femtowatt",
["pW"] = "Picowatt",
["nW"] = "Nanowatt",
["μW"] = "Microwatt",
["mW"] = "Milliwatt",
["kW"] = "Kilowatt",
["MW"] = "Megawatt",
["GW"] = "Gigawatt",
["TW"] = "Terawatt",
["PW"] = "Petawatt",
["EW"] = "Exawatt",
["ZW"] = "Zettawatt",
["YW"] = "Yottawatt",
["as"] = "Attosecond",
["fs"] = "Femtosecond",
["ps"] = "Picosecond",
["ns"] = "Nanosecond",
["μs"] = "Microsecond",
["ms"] = "Millisecond",
["ks"] = "Kilosecond",
["Ms"] = "Megasecond",
["Gs"] = "Gigasecond",
["Ts"] = "Terasecond",
["Ps"] = "Petasecond",
["Es"] = "Exasecond",
["Zs"] = "Zettasecond",
["Ys"] = "Yottasecond",
["mm<sup>3</sup>"] = "Cubic millimetre",
["cm<sup>3</sup>"] = "Cubic centimetre",
["dm<sup>3</sup>"] = "Cubic decimetre",
["dam<sup>3</sup>"] = "Cubic decametre",
["km<sup>3</sup>"] = "Cubic kilometre",
["μL"] = "Microlitre",
["μl"] = "Microlitre",
["mL"] = "Millilitre",
["ml"] = "Millilitre",
["cL"] = "Centilitre",
["cl"] = "Centilitre",
["dL"] = "Decilitre",
["dl"] = "Decilitre",
["daL"] = "Decalitre",
["dal"] = "Decalitre",
["hL"] = "Hectolitre",
["hl"] = "Hectolitre",
["kL"] = "Kilolitre",
["kl"] = "Kilolitre",
["ML"] = "Megalitre",
["Ml"] = "Megalitre",
["GL"] = "Gigalitre",
["Gl"] = "Gigalitre",
["TL"] = "Teralitre",
["Tl"] = "Teralitre",
["PL"] = "Petalitre",
["Pl"] = "Petalitre",
}
---------------------------------------------------------------------------
-- Do not change the data in this table because it is created by running --
-- a script that reads the wikitext from a wiki page (see note above). --
---------------------------------------------------------------------------
local per_unit_fixups = {
-- Automatically created per units of form "x/y" may have their unit type
-- changed, for example, "length/time" is changed to "speed".
-- Other adjustments can also be specified.
["/area"] = "per unit area",
["/volume"] = "per unit volume",
["area/area"] = "area per unit area",
["energy/length"] = "energy per unit length",
["energy/mass"] = "energy per unit mass",
["energy/time"] = { utype = "power", link = "Power (physics)" },
["energy/volume"] = "energy per unit volume",
["force/area"] = { utype = "pressure", link = "Pressure" },
["length/length"] = { utype = "gradient", link = "Grade (slope)" },
["length/time"] = { utype = "speed", link = "Speed" },
["length/time/time"] = { utype = "acceleration", link = "Acceleration" },
["mass/area"] = { utype = "pressure", multiplier = 9.80665 },
["mass/length"] = "linear density",
["mass/mass"] = "concentration",
["mass/power"] = "mass per unit power",
["mass/time"] = "mass per unit time",
["mass/volume"] = { utype = "density", link = "Density" },
["power/mass"] = "power per unit mass",
["power/volume"] = { link = "Power density" },
["pressure/length"] = "fracture gradient",
["speed/time"] = { utype = "acceleration", link = "Acceleration" },
["volume/area"] = "volume per unit area",
["volume/length"] = "volume per unit length",
["volume/time"] = "flow",
}
return {
all_units = all_units,
default_exceptions = default_exceptions,
link_exceptions = link_exceptions,
per_unit_fixups = per_unit_fixups,
}
8d4f7e3d03f55a7683bae4e0b800b77ac91d44a2
Module:Convert
828
1165
2494
2023-05-10T03:20:21Z
w>Johnuniq
0
update from sandbox per [[Template talk:Convert#Module version 29]]
Scribunto
text/plain
-- Convert a value from one unit of measurement to another.
-- Example: {{convert|123|lb|kg}} --> 123 pounds (56 kg)
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.
local MINUS = '−' -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92)
local abs = math.abs
local floor = math.floor
local format = string.format
local log10 = math.log10
local ustring = mw.ustring
local ulen = ustring.len
local usub = ustring.sub
-- Configuration options to keep magic values in one location.
-- Conversion data and message text are defined in separate modules.
local config, maxsigfig
local numdot -- must be '.' or ',' or a character which works in a regex
local numsep, numsep_remove, numsep_remove2
local data_code, all_units
local text_code
local varname -- can be a code to use variable names that depend on value
local from_en_table -- to translate an output string of en digits to local language
local to_en_table -- to translate an input string of digits in local language to en
-- Use translation_table in convert/text to change the following.
local en_default -- true uses lang=en unless convert has lang=local or local digits
local group_method = 3 -- code for how many digits are in a group
local per_word = 'per' -- for units like "liters per kilometer"
local plural_suffix = 's' -- only other useful value is probably '' to disable plural unit names
local omitsep -- true to omit separator before local symbol/name
-- All units should be defined in the data module. However, to cater for quick changes
-- and experiments, any unknown unit is looked up in an extra data module, if it exists.
-- That module would be transcluded in only a small number of pages, so there should be
-- little server overhead from making changes, and changes should propagate quickly.
local extra_module -- name of module with extra units
local extra_units -- nil or table of extra units from extra_module
-- Some options in the invoking template can set variables used later in the module.
local currency_text -- for a user-defined currency symbol: {{convert|12|$/ha|$=€}} (euro replaces dollar)
local function from_en(text)
-- Input is a string representing a number in en digits with '.' decimal mark,
-- without digit grouping (which is done just after calling this).
-- Return the translation of the string with numdot and digits in local language.
if numdot ~= '.' then
text = text:gsub('%.', numdot)
end
if from_en_table then
text = text:gsub('%d', from_en_table)
end
return text
end
local function to_en(text)
-- Input is a string representing a number in the local language with
-- an optional numdot decimal mark and numsep digit grouping.
-- Return the translation of the string with '.' mark and en digits,
-- and no separators (they have to be removed here to handle cases like
-- numsep = '.' and numdot = ',' with input "1.234.567,8").
if to_en_table then
text = ustring.gsub(text, '%d', to_en_table)
end
if numsep_remove then
text = text:gsub(numsep_remove, '')
end
if numsep_remove2 then
text = text:gsub(numsep_remove2, '')
end
if numdot ~= '.' then
text = text:gsub(numdot, '.')
end
return text
end
local function decimal_mark(text)
-- Return ',' if text probably is using comma for decimal mark, or has no decimal mark.
-- Return '.' if text probably is using dot for decimal mark.
-- Otherwise return nothing (decimal mark not known).
if not text:find('[.,]') then return ',' end
text = text:gsub('^%-', ''):gsub('%+%d+/%d+$', ''):gsub('[Ee]%-?%d+$', '')
local decimal =
text:match('^0?([.,])%d+$') or
text:match('%d([.,])%d?%d?$') or
text:match('%d([.,])%d%d%d%d+$')
if decimal then return decimal end
if text:match('%.%d+%.') then return ',' end
if text:match('%,%d+,') then return '.' end
end
local add_warning, with_separator -- forward declarations
local function to_en_with_check(text, parms)
-- Version of to_en() for a wiki using numdot = ',' and numsep = '.' to check
-- text (an input number as a string) which might have been copied from enwiki.
-- For example, in '1.234' the '.' could be a decimal mark or a group separator.
-- From viwiki.
if to_en_table then
text = ustring.gsub(text, '%d', to_en_table)
end
if decimal_mark(text) == '.' then
local original = text
text = text:gsub(',', '') -- for example, interpret "1,234.5" as an enwiki value
if parms then
add_warning(parms, 0, 'cvt_enwiki_num', original, with_separator({}, text))
end
else
if numsep_remove then
text = text:gsub(numsep_remove, '')
end
if numsep_remove2 then
text = text:gsub(numsep_remove2, '')
end
if numdot ~= '.' then
text = text:gsub(numdot, '.')
end
end
return text
end
local function omit_separator(id)
-- Return true if there should be no separator before id (a unit symbol or name).
-- For zhwiki, there should be no separator if id uses local characters.
-- The following kludge should be a sufficient test.
if omitsep then
if id:sub(1, 2) == '-{' then -- for "-{...}-" content language variant
return true
end
if id:byte() > 127 then
local first = usub(id, 1, 1)
if first ~= 'Å' and first ~= '°' and first ~= 'µ' then
return true
end
end
end
return id:sub(1, 1) == '/' -- no separator before units like "/ha"
end
local spell_module -- name of module that can spell numbers
local speller -- function from that module to handle spelling (set if needed)
local wikidata_module, wikidata_data_module -- names of Wikidata modules
local wikidata_code, wikidata_data -- exported tables from those modules (set if needed)
local function set_config(args)
-- Set configuration options from template #invoke or defaults.
config = args
maxsigfig = config.maxsigfig or 14 -- maximum number of significant figures
local data_module, text_module
local sandbox = config.sandbox and ('/' .. config.sandbox) or ''
data_module = "Module:Convert/data" .. sandbox
text_module = "Module:Convert/text" .. sandbox
extra_module = "Module:Convert/extra" .. sandbox
wikidata_module = "Module:Convert/wikidata" .. sandbox
wikidata_data_module = "Module:Convert/wikidata/data" .. sandbox
spell_module = "Module:ConvertNumeric"
data_code = mw.loadData(data_module)
text_code = mw.loadData(text_module)
all_units = data_code.all_units
local translation = text_code.translation_table
if translation then
numdot = translation.numdot
numsep = translation.numsep
if numdot == ',' and numsep == '.' then
if text_code.all_messages.cvt_enwiki_num then
to_en = to_en_with_check
end
end
if translation.group then
group_method = translation.group
end
if translation.per_word then
per_word = translation.per_word
end
if translation.plural_suffix then
plural_suffix = translation.plural_suffix
end
varname = translation.varname
from_en_table = translation.from_en
local use_workaround = true
if use_workaround then
-- 2013-07-05 workaround bug by making a copy of the required table.
-- mw.ustring.gsub fails with a table (to_en_table) as the replacement,
-- if the table is accessed via mw.loadData.
local source = translation.to_en
if source then
to_en_table = {}
for k, v in pairs(source) do
to_en_table[k] = v
end
end
else
to_en_table = translation.to_en
end
if translation.lang == 'en default' then
en_default = true -- for hiwiki
end
omitsep = translation.omitsep -- for zhwiki
end
numdot = config.numdot or numdot or '.' -- decimal mark before fractional digits
numsep = config.numsep or numsep or ',' -- group separator for numbers
-- numsep should be ',' or '.' or '' or ' ' or a Unicode character.
-- numsep_remove must work in a regex to identify separators to be removed.
if numsep ~= '' then
numsep_remove = (numsep == '.') and '%.' or numsep
end
if numsep ~= ',' and numdot ~= ',' then
numsep_remove2 = ',' -- so numbers copied from enwiki will work
end
end
local function collection()
-- Return a table to hold items.
return {
n = 0,
add = function (self, item)
self.n = self.n + 1
self[self.n] = item
end,
}
end
local function divide(numerator, denominator)
-- Return integers quotient, remainder resulting from dividing the two
-- given numbers, which should be unsigned integers.
local quotient, remainder = floor(numerator / denominator), numerator % denominator
if not (0 <= remainder and remainder < denominator) then
-- Floating point limits may need this, as in {{convert|160.02|Ym|ydftin}}.
remainder = 0
end
return quotient, remainder
end
local function split(text, delimiter)
-- Return a numbered table with fields from splitting text.
-- The delimiter is used in a regex without escaping (for example, '.' would fail).
-- Each field has any leading/trailing whitespace removed.
local t = {}
text = text .. delimiter -- to get last item
for item in text:gmatch('%s*(.-)%s*' .. delimiter) do
table.insert(t, item)
end
return t
end
local function strip(text)
-- If text is a string, return its content with no leading/trailing
-- whitespace. Otherwise return nil (a nil argument gives a nil result).
if type(text) == 'string' then
return text:match("^%s*(.-)%s*$")
end
end
local function table_len(t)
-- Return length (<100) of a numbered table to replace #t which is
-- documented to not work if t is accessed via mw.loadData().
for i = 1, 100 do
if t[i] == nil then
return i - 1
end
end
end
local function wanted_category(catkey, catsort, want_warning)
-- Return message category if it is wanted in current namespace,
-- otherwise return ''.
local cat
local title = mw.title.getCurrentTitle()
if title then
local nsdefault = '0' -- default namespace: '0' = article; '0,10' = article and template
local namespace = title.namespace
for _, v in ipairs(split(config.nscat or nsdefault, ',')) do
if namespace == tonumber(v) then
cat = text_code.all_categories[want_warning and 'warning' or catkey]
if catsort and catsort ~= '' and cat:sub(-2) == ']]' then
cat = cat:sub(1, -3) .. '|' .. mw.text.nowiki(usub(catsort, 1, 20)) .. ']]'
end
break
end
end
end
return cat or ''
end
local function message(parms, mcode, is_warning)
-- Return wikitext for an error message, including category if specified
-- for the message type.
-- mcode = numbered table specifying the message:
-- mcode[1] = 'cvt_xxx' (string used as a key to get message info)
-- mcode[2] = 'parm1' (string to replace '$1' if any in message)
-- mcode[3] = 'parm2' (string to replace '$2' if any in message)
-- mcode[4] = 'parm3' (string to replace '$3' if any in message)
local msg
if type(mcode) == 'table' then
if mcode[1] == 'cvt_no_output' then
-- Some errors should cause convert to output an empty string,
-- for example, for an optional field in an infobox.
return ''
end
msg = text_code.all_messages[mcode[1]]
end
parms.have_problem = true
local function subparm(fmt, ...)
local rep = {}
for i, v in ipairs({...}) do
rep['$' .. i] = v
end
return (fmt:gsub('$%d+', rep))
end
if msg then
local parts = {}
local regex, replace = msg.regex, msg.replace
for i = 1, 3 do
local limit = 40
local s = mcode[i + 1]
if s then
if regex and replace then
s = s:gsub(regex, replace)
limit = nil -- allow long "should be" messages
end
-- Escape user input so it does not break the message.
-- To avoid tags (like {{convert|1<math>23</math>|m}}) breaking
-- the mouseover title, any strip marker starting with char(127) is
-- replaced with '...' (text not needing i18n).
local append
local pos = s:find(string.char(127), 1, true)
if pos then
append = '...'
s = s:sub(1, pos - 1)
end
if limit and ulen(s) > limit then
s = usub(s, 1, limit)
append = '...'
end
s = mw.text.nowiki(s) .. (append or '')
else
s = '?'
end
parts['$' .. i] = s
end
local function ispreview()
-- Return true if a prominent message should be shown.
if parms.test == 'preview' or parms.test == 'nopreview' then
-- For testing, can preview a real message or simulate a preview
-- when running automated tests.
return parms.test == 'preview'
end
local success, revid = pcall(function ()
return (parms.frame):preprocess('{{REVISIONID}}') end)
return success and (revid == '')
end
local want_warning = is_warning and
not config.warnings and -- show unobtrusive warnings if config.warnings not configured
not msg.nowarn -- but use msg settings, not standard warning, if specified
local title = string.gsub(msg[1] or 'Missing message', '$%d+', parts)
local text = want_warning and '*' or msg[2] or 'Missing message'
local cat = wanted_category(msg[3], mcode[2], want_warning)
local anchor = msg[4] or ''
local fmtkey = ispreview() and 'cvt_format_preview' or
(want_warning and 'cvt_format2' or msg.format or 'cvt_format')
local fmt = text_code.all_messages[fmtkey] or 'convert: bug'
return subparm(fmt, title:gsub('"', '"'), text, cat, anchor)
end
return 'Convert internal error: unknown message'
end
function add_warning(parms, level, key, text1, text2) -- for forward declaration above
-- If enabled, add a warning that will be displayed after the convert result.
-- A higher level is more verbose: more kinds of warnings are displayed.
-- To reduce output noise, only the first warning is displayed.
if level <= (tonumber(config.warnings) or 1) then
if parms.warnings == nil then
parms.warnings = message(parms, { key, text1, text2 }, true)
end
end
end
local function spell_number(parms, inout, number, numerator, denominator)
-- Return result of spelling (number, numerator, denominator), or
-- return nil if spelling is not available or not supported for given text.
-- Examples (each value must be a string or nil):
-- number numerator denominator output
-- ------ --------- ----------- -------------------
-- "1.23" nil nil one point two three
-- "1" "2" "3" one and two thirds
-- nil "2" "3" two thirds
if not speller then
local function get_speller(module)
return require(module).spell_number
end
local success
success, speller = pcall(get_speller, spell_module)
if not success or type(speller) ~= 'function' then
add_warning(parms, 1, 'cvt_no_spell', 'spell')
return nil
end
end
local case
if parms.spell_upper == inout then
case = true
parms.spell_upper = nil -- only uppercase first word in a multiple unit
end
local sp = not parms.opt_sp_us
local adj = parms.opt_adjectival
return speller(number, numerator, denominator, case, sp, adj)
end
------------------------------------------------------------------------
-- BEGIN: Code required only for built-in units.
-- LATER: If need much more code, move to another module to simplify this module.
local function speed_of_sound(altitude)
-- This is for the Mach built-in unit of speed.
-- Return speed of sound in metres per second at given altitude in feet.
-- If no altitude given, use default (zero altitude = sea level).
-- Table gives speed of sound in miles per hour at various altitudes:
-- altitude = -17,499 to 402,499 feet
-- mach_table[a + 4] = s where
-- a = (altitude / 5000) rounded to nearest integer (-3 to 80)
-- s = speed of sound (mph) at that altitude
-- LATER: Should calculate result from an interpolation between the next
-- lower and higher altitudes in table, rather than rounding to nearest.
-- From: http://www.aerospaceweb.org/question/atmosphere/q0112.shtml
local mach_table = { -- a =
799.5, 787.0, 774.2, 761.207051, -- -3 to 0
748.0, 734.6, 721.0, 707.0, 692.8, 678.3, 663.5, 660.1, 660.1, 660.1, -- 1 to 10
660.1, 660.1, 660.1, 662.0, 664.3, 666.5, 668.9, 671.1, 673.4, 675.6, -- 11 to 20
677.9, 683.7, 689.9, 696.0, 702.1, 708.1, 714.0, 719.9, 725.8, 731.6, -- 21 to 30
737.3, 737.7, 737.7, 736.2, 730.5, 724.6, 718.8, 712.9, 707.0, 701.0, -- 31 to 40
695.0, 688.9, 682.8, 676.6, 670.4, 664.1, 657.8, 652.9, 648.3, 643.7, -- 41 to 50
639.1, 634.4, 629.6, 624.8, 620.0, 615.2, 613.2, 613.2, 613.2, 613.5, -- 51 to 60
614.4, 615.3, 616.7, 619.8, 623.4, 629.7, 635.0, 641.1, 650.6, 660.0, -- 61 to 70
672.5, 674.3, 676.1, 677.9, 679.7, 681.5, 683.3, 685.1, 686.8, 688.6, -- 71 to 80
}
altitude = altitude or 0
local a = (altitude < 0) and -altitude or altitude
a = floor(a / 5000 + 0.5)
if altitude < 0 then
a = -a
end
if a < -3 then
a = -3
elseif a > 80 then
a = 80
end
return mach_table[a + 4] * 0.44704 -- mph converted to m/s
end
-- END: Code required only for built-in units.
------------------------------------------------------------------------
local function add_style(parms, class)
-- Add selected template style to parms if not already present.
parms.templatestyles = parms.templatestyles or {}
if not parms.templatestyles[class] then
parms.templatestyles[class] = parms.frame:extensionTag({
name = 'templatestyles', args = { src = text_code.titles[class] }
})
end
end
local function get_styles(parms)
-- Return string of required template styles, empty if none.
if parms.templatestyles then
local t = {}
for _, v in pairs(parms.templatestyles) do
table.insert(t, v)
end
return table.concat(t)
end
return ''
end
local function get_range(word)
-- Return a range (string or table) corresponding to word (like "to"),
-- or return nil if not a range word.
local ranges = text_code.ranges
return ranges.types[word] or ranges.types[ranges.aliases[word]]
end
local function check_mismatch(unit1, unit2)
-- If unit1 cannot be converted to unit2, return an error message table.
-- This allows conversion between units of the same type, and between
-- Nm (normally torque) and ftlb (energy), as in gun-related articles.
-- This works because Nm is the base unit (scale = 1) for both the
-- primary type (torque), and the alternate type (energy, where Nm = J).
-- A match occurs if the primary types are the same, or if unit1 matches
-- the alternate type of unit2, and vice versa. That provides a whitelist
-- of which conversions are permitted between normally incompatible types.
if unit1.utype == unit2.utype or
(unit1.utype == unit2.alttype and unit1.alttype == unit2.utype) then
return nil
end
return { 'cvt_mismatch', unit1.utype, unit2.utype }
end
local function override_from(out_table, in_table, fields)
-- Copy the specified fields from in_table to out_table, but do not
-- copy nil fields (keep any corresponding field in out_table).
for _, field in ipairs(fields) do
if in_table[field] then
out_table[field] = in_table[field]
end
end
end
local function shallow_copy(t)
-- Return a shallow copy of table t.
-- Do not need the features and overhead of the Scribunto mw.clone().
local result = {}
for k, v in pairs(t) do
result[k] = v
end
return result
end
local unit_mt = {
-- Metatable to get missing values for a unit that does not accept SI prefixes.
-- Warning: The boolean value 'false' is returned for any missing field
-- so __index is not called twice for the same field in a given unit.
__index = function (self, key)
local value
if key == 'name1' or key == 'sym_us' then
value = self.symbol
elseif key == 'name2' then
value = self.name1 .. plural_suffix
elseif key == 'name1_us' then
value = self.name1
if not rawget(self, 'name2_us') then
-- If name1_us is 'foot', do not make name2_us by appending plural_suffix.
self.name2_us = self.name2
end
elseif key == 'name2_us' then
local raw1_us = rawget(self, 'name1_us')
if raw1_us then
value = raw1_us .. plural_suffix
else
value = self.name2
end
elseif key == 'link' then
value = self.name1
else
value = false
end
rawset(self, key, value)
return value
end
}
local function prefixed_name(unit, name, index)
-- Return unit name with SI prefix inserted at correct position.
-- index = 1 (name1), 2 (name2), 3 (name1_us), 4 (name2_us).
-- The position is a byte (not character) index, so use Lua's sub().
local pos = rawget(unit, 'prefix_position')
if type(pos) == 'string' then
pos = tonumber(split(pos, ',')[index])
end
if pos then
return name:sub(1, pos - 1) .. unit.si_name .. name:sub(pos)
end
return unit.si_name .. name
end
local unit_prefixed_mt = {
-- Metatable to get missing values for a unit that accepts SI prefixes.
-- Before use, fields si_name, si_prefix must be defined.
-- The unit must define _symbol, _name1 and
-- may define _sym_us, _name1_us, _name2_us
-- (_sym_us, _name2_us may be defined for a language using sp=us
-- to refer to a variant unrelated to U.S. units).
__index = function (self, key)
local value
if key == 'symbol' then
value = self.si_prefix .. self._symbol
if value == 'l' then value = 'L' end
elseif key == 'sym_us' then
value = rawget(self, '_sym_us')
if value then
value = self.si_prefix .. value
else
value = self.symbol
end
elseif key == 'name1' then
value = prefixed_name(self, self._name1, 1)
elseif key == 'name2' then
value = rawget(self, '_name2')
if value then
value = prefixed_name(self, value, 2)
else
value = self.name1 .. plural_suffix
end
elseif key == 'name1_us' then
value = rawget(self, '_name1_us')
if value then
value = prefixed_name(self, value, 3)
else
value = self.name1
end
elseif key == 'name2_us' then
value = rawget(self, '_name2_us')
if value then
value = prefixed_name(self, value, 4)
elseif rawget(self, '_name1_us') then
value = self.name1_us .. plural_suffix
else
value = self.name2
end
elseif key == 'link' then
value = self.name1
else
value = false
end
rawset(self, key, value)
return value
end
}
local unit_per_mt = {
-- Metatable to get values for a per unit of form "x/y".
-- This is never called to determine a unit name or link because per units
-- are handled as a special case.
-- Similarly, the default output is handled elsewhere, and for a symbol
-- this is only called from get_default() for default_exceptions.
__index = function (self, key)
local value
if key == 'symbol' then
local per = self.per
local unit1, unit2 = per[1], per[2]
if unit1 then
value = unit1[key] .. '/' .. unit2[key]
else
value = '/' .. unit2[key]
end
elseif key == 'sym_us' then
value = self.symbol
elseif key == 'scale' then
local per = self.per
local unit1, unit2 = per[1], per[2]
value = (unit1 and unit1.scale or 1) * self.scalemultiplier / unit2.scale
else
value = false
end
rawset(self, key, value)
return value
end
}
local function make_per(unitcode, unit_table, ulookup)
-- Return true, t where t is a per unit with unit codes expanded to unit tables,
-- or return false, t where t is an error message table.
local result = {
unitcode = unitcode,
utype = unit_table.utype,
per = {}
}
override_from(result, unit_table, { 'invert', 'iscomplex', 'default', 'link', 'symbol', 'symlink' })
result.symbol_raw = (result.symbol or false) -- to distinguish between a defined exception and a metatable calculation
local prefix
for i, v in ipairs(unit_table.per) do
if i == 1 and v == '' then
-- First unit symbol can be empty; that gives a nil first unit table.
elseif i == 1 and text_code.currency[v] then
prefix = currency_text or v
else
local success, t = ulookup(v)
if not success then return false, t end
result.per[i] = t
end
end
local multiplier = unit_table.multiplier
if not result.utype then
-- Creating an automatic per unit.
local unit1 = result.per[1]
local utype = (unit1 and unit1.utype or prefix or '') .. '/' .. result.per[2].utype
local t = data_code.per_unit_fixups[utype]
if t then
if type(t) == 'table' then
utype = t.utype or utype
result.link = result.link or t.link
multiplier = multiplier or t.multiplier
else
utype = t
end
end
result.utype = utype
end
result.scalemultiplier = multiplier or 1
result.vprefix = prefix or false -- set to non-nil to avoid calling __index
return true, setmetatable(result, unit_per_mt)
end
local function lookup(parms, unitcode, what, utable, fails, depth)
-- Return true, t where t is a copy of the unit's converter table,
-- or return false, t where t is an error message table.
-- Parameter 'what' determines whether combination units are accepted:
-- 'no_combination' : single unit only
-- 'any_combination' : single unit or combination or output multiple
-- 'only_multiple' : single unit or output multiple only
-- Parameter unitcode is a symbol (like 'g'), with an optional SI prefix (like 'kg').
-- If, for example, 'kg' is in this table, that entry is used;
-- otherwise the prefix ('k') is applied to the base unit ('g').
-- If unitcode is a known combination code (and if allowed by what),
-- a table of output multiple unit tables is included in the result.
-- For compatibility with the old template, an underscore in a unitcode is
-- replaced with a space so usage like {{convert|350|board_feet}} works.
-- Wikignomes may also put two spaces or " " in combinations, so
-- replace underscore, " ", and multiple spaces with a single space.
utable = utable or parms.unittable or all_units
fails = fails or {}
depth = depth and depth + 1 or 1
if depth > 9 then
-- There are ways to mistakenly define units which result in infinite
-- recursion when lookup() is called. That gives a long delay and very
-- confusing error messages, so the depth parameter is used as a guard.
return false, { 'cvt_lookup', unitcode }
end
if unitcode == nil or unitcode == '' then
return false, { 'cvt_no_unit' }
end
unitcode = unitcode:gsub('_', ' '):gsub(' ', ' '):gsub(' +', ' ')
local function call_make_per(t)
return make_per(unitcode, t,
function (ucode) return lookup(parms, ucode, 'no_combination', utable, fails, depth) end
)
end
local t = utable[unitcode]
if t then
if t.shouldbe then
return false, { 'cvt_should_be', t.shouldbe }
end
if t.sp_us then
parms.opt_sp_us = true
end
local target = t.target -- nil, or unitcode is an alias for this target
if target then
local success, result = lookup(parms, target, what, utable, fails, depth)
if not success then return false, result end
override_from(result, t, { 'customary', 'default', 'link', 'symbol', 'symlink' })
local multiplier = t.multiplier
if multiplier then
result.multiplier = tostring(multiplier)
result.scale = result.scale * multiplier
end
return true, result
end
if t.per then
return call_make_per(t)
end
local combo = t.combination -- nil or a table of unitcodes
if combo then
local multiple = t.multiple
if what == 'no_combination' or (what == 'only_multiple' and not multiple) then
return false, { 'cvt_bad_unit', unitcode }
end
-- Recursively create a combination table containing the
-- converter table of each unitcode.
local result = { utype = t.utype, multiple = multiple, combination = {} }
local cvt = result.combination
for i, v in ipairs(combo) do
local success, t = lookup(parms, v, multiple and 'no_combination' or 'only_multiple', utable, fails, depth)
if not success then return false, t end
cvt[i] = t
end
return true, result
end
local result = shallow_copy(t)
result.unitcode = unitcode
if result.prefixes then
result.si_name = ''
result.si_prefix = ''
return true, setmetatable(result, unit_prefixed_mt)
end
return true, setmetatable(result, unit_mt)
end
local SIprefixes = text_code.SIprefixes
for plen = SIprefixes[1] or 2, 1, -1 do
-- Look for an SI prefix; should never occur with an alias.
-- Check for longer prefix first ('dam' is decametre).
-- SIprefixes[1] = prefix maximum #characters (as seen by mw.ustring.sub).
local prefix = usub(unitcode, 1, plen)
local si = SIprefixes[prefix]
if si then
local t = utable[usub(unitcode, plen+1)]
if t and t.prefixes then
local result = shallow_copy(t)
result.unitcode = unitcode
result.si_name = parms.opt_sp_us and si.name_us or si.name
result.si_prefix = si.prefix or prefix
result.scale = t.scale * 10 ^ (si.exponent * t.prefixes)
return true, setmetatable(result, unit_prefixed_mt)
end
end
end
-- Accept user-defined combinations like "acre+m2+ha" or "acre m2 ha" for output.
-- If '+' is used, each unit code can include a space, and any error is fatal.
-- If ' ' is used and if each space-separated word is a unit code, it is a combo,
-- but errors are not fatal so the unit code can be looked up as an extra unit.
local err_is_fatal
local combo = collection()
if unitcode:find('+', 1, true) then
err_is_fatal = true
for item in (unitcode .. '+'):gmatch('%s*(.-)%s*%+') do
if item ~= '' then
combo:add(item)
end
end
elseif unitcode:find('%s') then
for item in unitcode:gmatch('%S+') do
combo:add(item)
end
end
if combo.n > 1 then
local function lookup_combo()
if what == 'no_combination' or what == 'only_multiple' then
return false, { 'cvt_bad_unit', unitcode }
end
local result = { combination = {} }
local cvt = result.combination
for i, v in ipairs(combo) do
local success, t = lookup(parms, v, 'only_multiple', utable, fails, depth)
if not success then return false, t end
if i == 1 then
result.utype = t.utype
else
local mismatch = check_mismatch(result, t)
if mismatch then
return false, mismatch
end
end
cvt[i] = t
end
return true, result
end
local success, result = lookup_combo()
if success or err_is_fatal then
return success, result
end
end
-- Accept any unit with an engineering notation prefix like "e6cuft"
-- (million cubic feet), but not chained prefixes like "e3e6cuft",
-- and not if the unit is a combination or multiple,
-- and not if the unit has an offset or is a built-in.
-- Only en digits are accepted.
local exponent, baseunit = unitcode:match('^e(%d+)(.*)')
if exponent then
local engscale = text_code.eng_scales[exponent]
if engscale then
local success, result = lookup(parms, baseunit, 'no_combination', utable, fails, depth)
if success and not (result.offset or result.builtin or result.engscale) then
result.unitcode = unitcode -- 'e6cuft' not 'cuft'
result.defkey = unitcode -- key to lookup default exception
result.engscale = engscale
result.scale = result.scale * 10 ^ tonumber(exponent)
return true, result
end
end
end
-- Look for x/y; split on right-most slash to get scale correct (x/y/z is x/y per z).
local top, bottom = unitcode:match('^(.-)/([^/]+)$')
if top and not unitcode:find('e%d') then
-- If valid, create an automatic per unit for an "x/y" unit code.
-- The unitcode must not include extraneous spaces.
-- Engineering notation (apart from at start and which has been stripped before here),
-- is not supported so do not make a per unit if find text like 'e3' in unitcode.
local success, result = call_make_per({ per = {top, bottom} })
if success then
return true, result
end
end
if not parms.opt_ignore_error and not get_range(unitcode) then
-- Want the "what links here" list for the extra_module to show only cases
-- where an extra unit is used, so do not require it if invoked from {{val}}
-- or if looking up a range word which cannot be a unit.
if not extra_units then
local success, extra = pcall(function () return require(extra_module).extra_units end)
if success and type(extra) == 'table' then
extra_units = extra
end
end
if extra_units then
-- A unit in one data table might refer to a unit in the other table, so
-- switch between them, relying on fails or depth to terminate loops.
if not fails[unitcode] then
fails[unitcode] = true
local other = (utable == all_units) and extra_units or all_units
local success, result = lookup(parms, unitcode, what, other, fails, depth)
if success then
return true, result
end
end
end
end
if to_en_table then
-- At fawiki it is common to translate all digits so a unit like "km2" becomes "km۲".
local en_code = ustring.gsub(unitcode, '%d', to_en_table)
if en_code ~= unitcode then
return lookup(parms, en_code, what, utable, fails, depth)
end
end
return false, { 'cvt_unknown', unitcode }
end
local function valid_number(num)
-- Return true if num is a valid number.
-- In Scribunto (different from some standard Lua), when expressed as a string,
-- overflow or other problems are indicated with text like "inf" or "nan"
-- which are regarded as invalid here (each contains "n").
if type(num) == 'number' and tostring(num):find('n', 1, true) == nil then
return true
end
end
local function hyphenated(name, parts)
-- Return a hyphenated form of given name (for adjectival usage).
-- The name may be linked and the target of the link must not be changed.
-- Hypothetical examples:
-- [[long ton|ton]] → [[long ton|ton]] (no change)
-- [[tonne|long ton]] → [[tonne|long-ton]]
-- [[metric ton|long ton]] → [[metric ton|long-ton]]
-- [[long ton]] → [[long ton|long-ton]]
-- Input can also have multiple links in a single name like:
-- [[United States customary units|U.S.]] [[US gallon|gallon]]
-- [[mile]]s per [[United States customary units|U.S.]] [[quart]]
-- [[long ton]]s per [[short ton]]
-- Assume that links cannot be nested (never like "[[abc[[def]]ghi]]").
-- This uses a simple and efficient procedure that works for most cases.
-- Some units (if used) would require more, and can later think about
-- adding a method to handle exceptions.
-- The procedure is to replace each space with a hyphen, but
-- not a space after ')' [for "(pre-1954 US) nautical mile"], and
-- not spaces immediately before '(' or in '(...)' [for cases like
-- "British thermal unit (ISO)" and "Calorie (International Steam Table)"].
if name:find(' ', 1, true) then
if parts then
local pos
if name:sub(1, 1) == '(' then
pos = name:find(')', 1, true)
if pos then
return name:sub(1, pos+1) .. name:sub(pos+2):gsub(' ', '-')
end
elseif name:sub(-1) == ')' then
pos = name:find('(', 1, true)
if pos then
return name:sub(1, pos-2):gsub(' ', '-') .. name:sub(pos-1)
end
end
return name:gsub(' ', '-')
end
parts = collection()
for before, item, after in name:gmatch('([^[]*)(%[%[[^[]*%]%])([^[]*)') do
if item:find(' ', 1, true) then
local prefix
local plen = item:find('|', 1, true)
if plen then
prefix = item:sub(1, plen)
item = item:sub(plen + 1, -3)
else
prefix = item:sub(1, -3) .. '|'
item = item:sub(3, -3)
end
item = prefix .. hyphenated(item, parts) .. ']]'
end
parts:add(before:gsub(' ', '-') .. item .. after:gsub(' ', '-'))
end
if parts.n == 0 then
-- No link like "[[...]]" was found in the original name.
parts:add(hyphenated(name, parts))
end
return table.concat(parts)
end
return name
end
local function hyphenated_maybe(parms, want_name, sep, id, inout)
-- Return s, f where
-- s = id, possibly modified
-- f = true if hyphenated
-- Possible modifications: hyphenate; prepend '-'; append mid text.
if id == nil or id == '' then
return ''
end
local mid = (inout == (parms.opt_flip and 'out' or 'in')) and parms.mid or ''
if want_name then
if parms.opt_adjectival then
return '-' .. hyphenated(id) .. mid, true
end
if parms.opt_add_s and id:sub(-1) ~= 's' then
id = id .. 's' -- for nowiki
end
end
return sep .. id .. mid
end
local function use_minus(text)
-- Return text with Unicode minus instead of '-', if present.
if text:sub(1, 1) == '-' then
return MINUS .. text:sub(2)
end
return text
end
local function digit_groups(parms, text, method)
-- Return a numbered table of groups of digits (left-to-right, in local language).
-- Parameter method is a number or nil:
-- 3 for 3-digit grouping (default), or
-- 2 for 3-then-2 grouping (only for digits before decimal mark).
local len_right
local len_left = text:find('.', 1, true)
if len_left then
len_right = #text - len_left
len_left = len_left - 1
else
len_left = #text
end
local twos = method == 2 and len_left > 5
local groups = collection()
local run = len_left
local n
if run < 4 or (run == 4 and parms.opt_comma5) then
if parms.opt_gaps then
n = run
else
n = #text
end
elseif twos then
n = run % 2 == 0 and 1 or 2
else
n = run % 3 == 0 and 3 or run % 3
end
while run > 0 do
groups:add(n)
run = run - n
n = (twos and run > 3) and 2 or 3
end
if len_right then
if groups.n == 0 then
groups:add(0)
end
if parms.opt_gaps and len_right > 3 then
local want4 = not parms.opt_gaps3 -- true gives no gap before trailing single digit
local isfirst = true
run = len_right
while run > 0 do
n = (want4 and run == 4) and 4 or (run > 3 and 3 or run)
if isfirst then
isfirst = false
groups[groups.n] = groups[groups.n] + 1 + n
else
groups:add(n)
end
run = run - n
end
else
groups[groups.n] = groups[groups.n] + 1 + len_right
end
end
local pos = 1
for i, length in ipairs(groups) do
groups[i] = from_en(text:sub(pos, pos + length - 1))
pos = pos + length
end
return groups
end
function with_separator(parms, text) -- for forward declaration above
-- Input text is a number in en digits with optional '.' decimal mark.
-- Return an equivalent, formatted for display:
-- with a custom decimal mark instead of '.', if wanted
-- with thousand separators inserted, if wanted
-- digits in local language
-- The given text is like '123' or '123.' or '12345.6789'.
-- The text has no sign (caller inserts that later, if necessary).
-- When using gaps, they are inserted before and after the decimal mark.
-- Separators are inserted only before the decimal mark.
-- A trailing dot (as in '123.') is removed because their use appears to
-- be accidental, and such a number should be shown as '123' or '123.0'.
-- It is useful for convert to suppress the dot so, for example, '4000.'
-- is a simple way of indicating that all the digits are significant.
if text:sub(-1) == '.' then
text = text:sub(1, -2)
end
if #text < 4 or parms.opt_nocomma or numsep == '' then
return from_en(text)
end
local groups = digit_groups(parms, text, group_method)
if parms.opt_gaps then
if groups.n <= 1 then
return groups[1] or ''
end
local nowrap = '<span style="white-space: nowrap">'
local gap = '<span style="margin-left: 0.25em">'
local close = '</span>'
return nowrap .. groups[1] .. gap .. table.concat(groups, close .. gap, 2, groups.n) .. close .. close
end
return table.concat(groups, numsep)
end
-- An input value like 1.23e12 is displayed using scientific notation (1.23×10¹²).
-- That also makes the output use scientific notation, except for small values.
-- In addition, very small or very large output values use scientific notation.
-- Use format(fmtpower, significand, '10', exponent) where each argument is a string.
local fmtpower = '%s<span style="margin:0 .15em 0 .25em">×</span>%s<sup>%s</sup>'
local function with_exponent(parms, show, exponent)
-- Return wikitext to display the implied value in scientific notation.
-- Input uses en digits; output uses digits in local language.
return format(fmtpower, with_separator(parms, show), from_en('10'), use_minus(from_en(tostring(exponent))))
end
local function make_sigfig(value, sigfig)
-- Return show, exponent that are equivalent to the result of
-- converting the number 'value' (where value >= 0) to a string,
-- rounded to 'sigfig' significant figures.
-- The returned items are:
-- show: a string of digits; no sign and no dot;
-- there is an implied dot before show.
-- exponent: a number (an integer) to shift the implied dot.
-- Resulting value = tonumber('.' .. show) * 10^exponent.
-- Examples:
-- make_sigfig(23.456, 3) returns '235', 2 (.235 * 10^2).
-- make_sigfig(0.0023456, 3) returns '235', -2 (.235 * 10^-2).
-- make_sigfig(0, 3) returns '000', 1 (.000 * 10^1).
if sigfig <= 0 then
sigfig = 1
elseif sigfig > maxsigfig then
sigfig = maxsigfig
end
if value == 0 then
return string.rep('0', sigfig), 1
end
local exp, fracpart = math.modf(log10(value))
if fracpart >= 0 then
fracpart = fracpart - 1
exp = exp + 1
end
local digits = format('%.0f', 10^(fracpart + sigfig))
if #digits > sigfig then
-- Overflow (for sigfig=3: like 0.9999 rounding to "1000"; need "100").
digits = digits:sub(1, sigfig)
exp = exp + 1
end
assert(#digits == sigfig, 'Bug: rounded number has wrong length')
return digits, exp
end
-- Fraction output format.
local fracfmt = {
{ -- Like {{frac}} (fraction slash).
'<span class="frac" role="math">{SIGN}<span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1/2
'<span class="frac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="num">{NUM}</span>⁄<span class="den">{DEN}</span></span>', -- 1+2/3
style = 'frac',
},
{ -- Like {{sfrac}} (stacked fraction, that is, horizontal bar).
'<span class="sfrac tion" role="math">{SIGN}<span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span>', -- 1//2
'<span class="sfrac" role="math">{SIGN}{WHOLE}<span class="sr-only">+</span><span class="tion"><span class="num">{NUM}</span><span class="sr-only">/</span><span class="den">{DEN}</span></span></span>', -- 1+2//3
style = 'sfrac',
},
}
local function format_fraction(parms, inout, negative, wholestr, numstr, denstr, do_spell, style)
-- Return wikitext for a fraction, possibly spelled.
-- Inputs use en digits and have no sign; output uses digits in local language.
local wikitext
if not style then
style = parms.opt_fraction_horizontal and 2 or 1
end
if wholestr == '' then
wholestr = nil
end
local substitute = {
SIGN = negative and MINUS or '',
WHOLE = wholestr and with_separator(parms, wholestr),
NUM = from_en(numstr),
DEN = from_en(denstr),
}
wikitext = fracfmt[style][wholestr and 2 or 1]:gsub('{(%u+)}', substitute)
if do_spell then
if negative then
if wholestr then
wholestr = '-' .. wholestr
else
numstr = '-' .. numstr
end
end
local s = spell_number(parms, inout, wholestr, numstr, denstr)
if s then
return s
end
end
add_style(parms, fracfmt[style].style)
return wikitext
end
local function format_number(parms, show, exponent, isnegative)
-- Parameter show is a string or a table containing strings.
-- Each string is a formatted number in en digits and optional '.' decimal mark.
-- A table represents a fraction: integer, numerator, denominator;
-- if a table is given, exponent must be nil.
-- Return t where t is a table with fields:
-- show = wikitext formatted to display implied value
-- (digits in local language)
-- is_scientific = true if show uses scientific notation
-- clean = unformatted show (possibly adjusted and with inserted '.')
-- (en digits)
-- sign = '' or MINUS
-- exponent = exponent (possibly adjusted)
-- The clean and exponent fields can be used to calculate the
-- rounded absolute value, if needed.
--
-- The value implied by the arguments is found from:
-- exponent is nil; and
-- show is a string of digits (no sign), with an optional dot;
-- show = '123.4' is value 123.4, '1234' is value 1234.0;
-- or:
-- exponent is an integer indicating where dot should be;
-- show is a string of digits (no sign and no dot);
-- there is an implied dot before show;
-- show does not start with '0';
-- show = '1234', exponent = 3 is value 0.1234*10^3 = 123.4.
--
-- The formatted result:
-- * Is for an output value and is spelled if wanted and possible.
-- * Includes a Unicode minus if isnegative and not spelled.
-- * Uses a custom decimal mark, if wanted.
-- * Has digits grouped where necessary, if wanted.
-- * Uses scientific notation if requested, or for very small or large values
-- (which forces result to not be spelled).
-- * Has no more than maxsigfig significant digits
-- (same as old template and {{#expr}}).
local xhi, xlo -- these control when scientific notation (exponent) is used
if parms.opt_scientific then
xhi, xlo = 4, 2 -- default for output if input uses e-notation
elseif parms.opt_scientific_always then
xhi, xlo = 0, 0 -- always use scientific notation (experimental)
else
xhi, xlo = 10, 4 -- default
end
local sign = isnegative and MINUS or ''
local maxlen = maxsigfig
local tfrac
if type(show) == 'table' then
tfrac = show
show = tfrac.wholestr
assert(exponent == nil, 'Bug: exponent given with fraction')
end
if not tfrac and not exponent then
local integer, dot, decimals = show:match('^(%d*)(%.?)(.*)')
if integer == '0' or integer == '' then
local zeros, figs = decimals:match('^(0*)([^0]?.*)')
if #figs == 0 then
if #zeros > maxlen then
show = '0.' .. zeros:sub(1, maxlen)
end
elseif #zeros >= xlo then
show = figs
exponent = -#zeros
elseif #figs > maxlen then
show = '0.' .. zeros .. figs:sub(1, maxlen)
end
elseif #integer >= xhi then
show = integer .. decimals
exponent = #integer
else
maxlen = maxlen + #dot
if #show > maxlen then
show = show:sub(1, maxlen)
end
end
end
if exponent then
local function zeros(n)
return string.rep('0', n)
end
if #show > maxlen then
show = show:sub(1, maxlen)
end
if exponent > xhi or exponent <= -xlo or (exponent == xhi and show ~= '1' .. zeros(xhi - 1)) then
-- When xhi, xlo = 10, 4 (the default), scientific notation is used if the
-- rounded value satisfies: value >= 1e9 or value < 1e-4 (1e9 = 0.1e10),
-- except if show is '1000000000' (1e9), for example:
-- {{convert|1000000000|m|m|sigfig=10}} → 1,000,000,000 metres (1,000,000,000 m)
local significand
if #show > 1 then
significand = show:sub(1, 1) .. '.' .. show:sub(2)
else
significand = show
end
return {
clean = '.' .. show,
exponent = exponent,
sign = sign,
show = sign .. with_exponent(parms, significand, exponent-1),
is_scientific = true,
}
end
if exponent >= #show then
show = show .. zeros(exponent - #show) -- result has no dot
elseif exponent <= 0 then
show = '0.' .. zeros(-exponent) .. show
else
show = show:sub(1, exponent) .. '.' .. show:sub(exponent+1)
end
end
local formatted_show
if tfrac then
show = tostring(tfrac.value) -- to set clean in returned table
formatted_show = format_fraction(parms, 'out', isnegative, tfrac.wholestr, tfrac.numstr, tfrac.denstr, parms.opt_spell_out)
else
if isnegative and show:match('^0.?0*$') then
sign = '' -- don't show minus if result is negative but rounds to zero
end
formatted_show = sign .. with_separator(parms, show)
if parms.opt_spell_out then
formatted_show = spell_number(parms, 'out', sign .. show) or formatted_show
end
end
return {
clean = show,
sign = sign,
show = formatted_show,
is_scientific = false, -- to avoid calling __index
}
end
local function extract_fraction(parms, text, negative)
-- If text represents a fraction, return
-- value, altvalue, show, denominator
-- where
-- value is a number (value of the fraction in argument text)
-- altvalue is an alternate interpretation of any fraction for the hands
-- unit where "12.1+3/4" means 12 hands 1.75 inches
-- show is a string (formatted text for display of an input value,
-- and is spelled if wanted and possible)
-- denominator is value of the denominator in the fraction
-- Otherwise, return nil.
-- Input uses en digits and '.' decimal mark (input has been translated).
-- Output uses digits in local language and local decimal mark, if any.
------------------------------------------------------------------------
-- Originally this function accepted x+y/z where x, y, z were any valid
-- numbers, possibly with a sign. For example '1.23e+2+1.2/2.4' = 123.5,
-- and '2-3/8' = 1.625. However, such usages were found to be errors or
-- misunderstandings, so since August 2014 the following restrictions apply:
-- x (if present) is an integer or has a single digit after decimal mark
-- y and z are unsigned integers
-- e-notation is not accepted
-- The overall number can start with '+' or '-' (so '12+3/4' and '+12+3/4'
-- and '-12-3/4' are valid).
-- Any leading negative sign is removed by the caller, so only inputs
-- like the following are accepted here (may have whitespace):
-- negative = false false true (there was a leading '-')
-- text = '2/3' '+2/3' '2/3'
-- text = '1+2/3' '+1+2/3' '1-2/3'
-- text = '12.3+1/2' '+12.3+1/2' '12.3-1/2'
-- Values like '12.3+1/2' are accepted, but are intended only for use
-- with the hands unit (not worth adding code to enforce that).
------------------------------------------------------------------------
local leading_plus, prefix, numstr, slashes, denstr =
text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*(/+)%s*(%d+)%s*$')
if not leading_plus then
-- Accept a single U+2044 fraction slash because that may be pasted.
leading_plus, prefix, numstr, denstr =
text:match('^%s*(%+?)%s*(.-)%s*(%d+)%s*⁄%s*(%d+)%s*$')
slashes = '/'
end
local numerator = tonumber(numstr)
local denominator = tonumber(denstr)
if numerator == nil or denominator == nil or (negative and leading_plus ~= '') then
return nil
end
local whole, wholestr
if prefix == '' then
wholestr = ''
whole = 0
else
-- Any prefix must be like '12+' or '12-' (whole number and fraction sign);
-- '12.3+' and '12.3-' are also accepted (single digit after decimal point)
-- because '12.3+1/2 hands' is valid (12 hands 3½ inches).
local num1, num2, frac_sign = prefix:match('^(%d+)(%.?%d?)%s*([+%-])$')
if num1 == nil then return nil end
if num2 == '' then -- num2 must be '' or like '.1' but not '.' or '.12'
wholestr = num1
else
if #num2 ~= 2 then return nil end
wholestr = num1 .. num2
end
if frac_sign ~= (negative and '-' or '+') then return nil end
whole = tonumber(wholestr)
if whole == nil then return nil end
end
local value = whole + numerator / denominator
if not valid_number(value) then return nil end
local altvalue = whole + numerator / (denominator * 10)
local style = #slashes -- kludge: 1 or 2 slashes can be used to select style
if style > 2 then style = 2 end
local wikitext = format_fraction(parms, 'in', negative, leading_plus .. wholestr, numstr, denstr, parms.opt_spell_in, style)
return value, altvalue, wikitext, denominator
end
local function extract_number(parms, text, another, no_fraction)
-- Return true, info if can extract a number from text,
-- where info is a table with the result,
-- or return false, t where t is an error message table.
-- Input can use en digits or digits in local language and can
-- have references at the end. Accepting references is intended
-- for use in infoboxes with a field for a value passed to convert.
-- Parameter another = true if the expected value is not the first.
-- Before processing, the input text is cleaned:
-- * Any thousand separators (valid or not) are removed.
-- * Any sign is replaced with '-' (if negative) or '' (otherwise).
-- That replaces Unicode minus with '-'.
-- If successful, the returned info table contains named fields:
-- value = a valid number
-- altvalue = a valid number, usually same as value but different
-- if fraction used (for hands unit)
-- singular = true if value is 1 or -1 (to use singular form of units)
-- clean = cleaned text with any separators and sign removed
-- (en digits and '.' decimal mark)
-- show = text formatted for output, possibly with ref strip markers
-- (digits in local language and custom decimal mark)
-- The resulting show:
-- * Is for an input value and is spelled if wanted and possible.
-- * Has a rounded value, if wanted.
-- * Has digits grouped where necessary, if wanted.
-- * If negative, a Unicode minus is used; otherwise the sign is
-- '+' (if the input text used '+'), or is '' (if no sign in input).
text = strip(text or '')
local reference
local pos = text:find('\127', 1, true)
if pos then
local before = text:sub(1, pos - 1)
local remainder = text:sub(pos)
local refs = {}
while #remainder > 0 do
local ref, spaces
ref, spaces, remainder = remainder:match('^(\127[^\127]*UNIQ[^\127]*%-ref[^\127]*\127)(%s*)(.*)')
if ref then
table.insert(refs, ref)
else
refs = {}
break
end
end
if #refs > 0 then
text = strip(before)
reference = table.concat(refs)
end
end
local clean = to_en(text, parms)
if clean == '' then
return false, { another and 'cvt_no_num2' or 'cvt_no_num' }
end
local isnegative, propersign = false, '' -- most common case
local singular, show, denominator
local value = tonumber(clean)
local altvalue
if value then
local sign = clean:sub(1, 1)
if sign == '+' or sign == '-' then
propersign = (sign == '+') and '+' or MINUS
clean = clean:sub(2)
end
if value < 0 then
isnegative = true
value = -value
end
else
local valstr
for _, prefix in ipairs({ '-', MINUS, '−' }) do
-- Including '-' sets isnegative in case input is a fraction like '-2-3/4'.
local plen = #prefix
if clean:sub(1, plen) == prefix then
valstr = clean:sub(plen + 1)
if valstr:match('^%s') then -- "- 1" is invalid but "-1 - 1/2" is ok
return false, { 'cvt_bad_num', text }
end
break
end
end
if valstr then
isnegative = true
propersign = MINUS
clean = valstr
value = tonumber(clean)
end
if value == nil then
if not no_fraction then
value, altvalue, show, denominator = extract_fraction(parms, clean, isnegative)
end
if value == nil then
return false, { 'cvt_bad_num', text }
end
if value <= 1 then
singular = true -- for example, "½ mile" or "one half mile" (singular unit)
end
end
end
if not valid_number(value) then -- for example, "1e310" may overflow
return false, { 'cvt_invalid_num' }
end
if show == nil then
-- clean is a non-empty string with no spaces, and does not represent a fraction,
-- and value = tonumber(clean) is a number >= 0.
-- If the input uses e-notation, show will be displayed using a power of ten, but
-- we use the number as given so it might not be normalized scientific notation.
-- The input value is spelled if specified so any e-notation is ignored;
-- that allows input like 2e6 to be spelled as "two million" which works
-- because the spell module converts '2e6' to '2000000' before spelling.
local function rounded(value, default, exponent)
local precision = parms.opt_ri
if precision then
local fmt = '%.' .. format('%d', precision) .. 'f'
local result = fmt:format(tonumber(value) + 2e-14) -- fudge for some common cases of bad rounding
if not exponent then
singular = (tonumber(result) == 1)
end
return result
end
return default
end
singular = (value == 1)
local scientific
local significand, exponent = clean:match('^([%d.]+)[Ee]([+%-]?%d+)')
if significand then
show = with_exponent(parms, rounded(significand, significand, exponent), exponent)
scientific = true
else
show = with_separator(parms, rounded(value, clean))
end
show = propersign .. show
if parms.opt_spell_in then
show = spell_number(parms, 'in', propersign .. rounded(value, clean)) or show
scientific = false
end
if scientific then
parms.opt_scientific = true
end
end
if isnegative and (value ~= 0) then
value = -value
altvalue = -(altvalue or value)
end
return true, {
value = value,
altvalue = altvalue or value,
singular = singular,
clean = clean,
show = show .. (reference or ''),
denominator = denominator,
}
end
local function get_number(text)
-- Return v, f where:
-- v = nil (text is not a number)
-- or
-- v = value of text (text is a number)
-- f = true if value is an integer
-- Input can use en digits or digits in local language or separators,
-- but no Unicode minus, and no fraction.
if text then
local number = tonumber(to_en(text))
if number then
local _, fracpart = math.modf(number)
return number, (fracpart == 0)
end
end
end
local function gcd(a, b)
-- Return the greatest common denominator for the given values,
-- which are known to be positive integers.
if a > b then
a, b = b, a
end
if a <= 0 then
return b
end
local r = b % a
if r <= 0 then
return a
end
if r == 1 then
return 1
end
return gcd(r, a)
end
local function fraction_table(value, denominator)
-- Return value as a string or a table:
-- * If result is a string, there is no fraction, and the result
-- is value formatted as a string of en digits.
-- * If result is a table, it represents a fraction with named fields:
-- wholestr, numstr, denstr (strings of en digits for integer, numerator, denominator).
-- The result is rounded to the nearest multiple of (1/denominator).
-- If the multiple is zero, no fraction is included.
-- No fraction is included if value is very large as the fraction would
-- be unhelpful, particularly if scientific notation is required.
-- Input value is a non-negative number.
-- Input denominator is a positive integer for the desired fraction.
if value <= 0 then
return '0'
end
if denominator <= 0 or value > 1e8 then
return format('%.2f', value)
end
local integer, decimals = math.modf(value)
local numerator = floor((decimals * denominator) +
0.5 + 2e-14) -- add fudge for some common cases of bad rounding
if numerator >= denominator then
integer = integer + 1
numerator = 0
end
local wholestr = tostring(integer)
if numerator > 0 then
local div = gcd(numerator, denominator)
if div > 1 then
numerator = numerator / div
denominator = denominator / div
end
return {
wholestr = (integer > 0) and wholestr or '',
numstr = tostring(numerator),
denstr = tostring(denominator),
value = value,
}
end
return wholestr
end
local function preunits(count, preunit1, preunit2)
-- If count is 1:
-- ignore preunit2
-- return p1
-- else:
-- preunit1 is used for preunit2 if the latter is empty
-- return p1, p2
-- where:
-- p1 is text to insert before the input unit
-- p2 is text to insert before the output unit
-- p1 or p2 may be nil to mean "no preunit"
-- Using '+' gives output like "5+ feet" (no space before, but space after).
local function withspace(text, wantboth)
-- Return text with space before and, if wantboth, after.
-- However, no space is added if there is a space or ' ' or '-'
-- at that position ('-' is for adjectival text).
-- There is also no space if text starts with '&'
-- (e.g. '°' would display a degree symbol with no preceding space).
local char = text:sub(1, 1)
if char == '&' then
return text -- an html entity can be used to specify the exact display
end
if not (char == ' ' or char == '-' or char == '+') then
text = ' ' .. text
end
if wantboth then
char = text:sub(-1, -1)
if not (char == ' ' or char == '-' or text:sub(-6, -1) == ' ') then
text = text .. ' '
end
end
return text
end
local PLUS = '+ '
preunit1 = preunit1 or ''
local trim1 = strip(preunit1)
if count == 1 then
if trim1 == '' then
return nil
end
if trim1 == '+' then
return PLUS
end
return withspace(preunit1, true)
end
preunit1 = withspace(preunit1)
preunit2 = preunit2 or ''
local trim2 = strip(preunit2)
if trim1 == '+' then
if trim2 == '' or trim2 == '+' then
return PLUS, PLUS
end
preunit1 = PLUS
end
if trim2 == '' then
if trim1 == '' then
return nil, nil
end
preunit2 = preunit1
elseif trim2 == '+' then
preunit2 = PLUS
elseif trim2 == ' ' then -- trick to make preunit2 empty
preunit2 = nil
else
preunit2 = withspace(preunit2)
end
return preunit1, preunit2
end
local function range_text(range, want_name, parms, before, after, inout, options)
-- Return before .. rtext .. after
-- where rtext is the text that separates two values in a range.
local rtext, adj_text, exception
options = options or {}
if type(range) == 'table' then
-- Table must specify range text for ('off' and 'on') or ('input' and 'output'),
-- and may specify range text for 'adj=on',
-- and may specify exception = true.
rtext = range[want_name and 'off' or 'on'] or
range[((inout == 'in') == (parms.opt_flip == true)) and 'output' or 'input']
adj_text = range['adj']
exception = range['exception']
else
rtext = range
end
if parms.opt_adjectival then
if want_name or (exception and parms.abbr_org == 'on') then
rtext = adj_text or rtext:gsub(' ', '-'):gsub(' ', '-')
end
end
if rtext == '–' and (options.spaced or after:sub(1, #MINUS) == MINUS) then
rtext = ' – '
end
return before .. rtext .. after
end
local function get_composite(parms, iparm, in_unit_table)
-- Look for a composite input unit. For example, {{convert|1|yd|2|ft|3|in}}
-- would result in a call to this function with
-- iparm = 3 (parms[iparm] = "2", just after the first unit)
-- in_unit_table = (unit table for "yd"; contains value 1 for number of yards)
-- Return true, iparm, unit where
-- iparm = index just after the composite units (7 in above example)
-- unit = composite unit table holding all input units,
-- or return true if no composite unit is present in parms,
-- or return false, t where t is an error message table.
local default, subinfo
local composite_units, count = { in_unit_table }, 1
local fixups = {}
local total = in_unit_table.valinfo[1].value
local subunit = in_unit_table
while subunit.subdivs do -- subdivs is nil or a table of allowed subdivisions
local subcode = strip(parms[iparm+1])
local subdiv = subunit.subdivs[subcode] or subunit.subdivs[(all_units[subcode] or {}).target]
if not subdiv then
break
end
local success
success, subunit = lookup(parms, subcode, 'no_combination')
if not success then return false, subunit end -- should never occur
success, subinfo = extract_number(parms, parms[iparm])
if not success then return false, subinfo end
iparm = iparm + 2
subunit.inout = 'in'
subunit.valinfo = { subinfo }
-- Recalculate total as a number of subdivisions.
-- subdiv[1] = number of subdivisions per previous unit (integer > 1).
total = total * subdiv[1] + subinfo.value
if not default then -- set by the first subdiv with a default defined
default = subdiv.default
end
count = count + 1
composite_units[count] = subunit
if subdiv.unit or subdiv.name then
fixups[count] = { unit = subdiv.unit, name = subdiv.name, valinfo = subunit.valinfo }
end
end
if count == 1 then
return true -- no error and no composite unit
end
for i, fixup in pairs(fixups) do
local unit = fixup.unit
local name = fixup.name
if not unit or (count > 2 and name) then
composite_units[i].fixed_name = name
else
local success, alternate = lookup(parms, unit, 'no_combination')
if not success then return false, alternate end -- should never occur
alternate.inout = 'in'
alternate.valinfo = fixup.valinfo
composite_units[i] = alternate
end
end
return true, iparm, {
utype = in_unit_table.utype,
scale = subunit.scale, -- scale of last (least significant) unit
valinfo = { { value = total, clean = subinfo.clean, denominator = subinfo.denominator } },
composite = composite_units,
default = default or in_unit_table.default
}
end
local function translate_parms(parms, kv_pairs)
-- Update fields in parms by translating each key:value in kv_pairs to terms
-- used by this module (may involve translating from local language to English).
-- Also, checks are performed which may display warnings, if enabled.
-- Return true if successful or return false, t where t is an error message table.
currency_text = nil -- local testing can hold module in memory; must clear globals
if kv_pairs.adj and kv_pairs.sing then
-- For enwiki (before translation), warn if attempt to use adj and sing
-- as the latter is a deprecated alias for the former.
if kv_pairs.adj ~= kv_pairs.sing and kv_pairs.sing ~= '' then
add_warning(parms, 1, 'cvt_unknown_option', 'sing=' .. kv_pairs.sing)
end
kv_pairs.sing = nil
end
kv_pairs.comma = kv_pairs.comma or config.comma -- for plwiki who want default comma=5
for loc_name, loc_value in pairs(kv_pairs) do
local en_name = text_code.en_option_name[loc_name]
if en_name then
local en_value = text_code.en_option_value[en_name]
if en_value == 'INTEGER' then -- altitude_ft, altitude_m, frac, sigfig
en_value = nil
if loc_value == '' then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
else
local minimum
local number, is_integer = get_number(loc_value)
if en_name == 'sigfig' then
minimum = 1
elseif en_name == 'frac' then
minimum = 2
if number and number < 0 then
parms.opt_fraction_horizontal = true
number = -number
end
else
minimum = -1e6
end
if number and is_integer and number >= minimum then
en_value = number
else
local m
if en_name == 'frac' then
m = 'cvt_bad_frac'
elseif en_name == 'sigfig' then
m = 'cvt_bad_sigfig'
else
m = 'cvt_bad_altitude'
end
add_warning(parms, 1, m, loc_name .. '=' .. loc_value)
end
end
elseif en_value == 'TEXT' then -- $, input, qid, qual, stylein, styleout, tracking
en_value = loc_value ~= '' and loc_value or nil -- accept non-empty user text with no validation
if not en_value and (en_name == '$' or en_name == 'qid' or en_name == 'qual') then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
elseif en_name == '$' then
-- Value should be a single character like "€" for the euro currency symbol, but anything is accepted.
currency_text = (loc_value == 'euro') and '€' or loc_value
elseif en_name == 'input' then
-- May have something like {{convert|input=}} (empty input) if source is an infobox
-- with optional fields. In that case, want to output nothing rather than an error.
parms.input_text = loc_value -- keep input because parms.input is nil if loc_value == ''
end
else
en_value = en_value[loc_value]
if en_value and en_value:sub(-1) == '?' then
en_value = en_value:sub(1, -2)
add_warning(parms, -1, 'cvt_deprecated', loc_name .. '=' .. loc_value)
end
if en_value == nil then
if loc_value == '' then
add_warning(parms, 2, 'cvt_empty_option', loc_name)
else
add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value)
end
elseif en_value == '' then
en_value = nil -- an ignored option like adj=off
elseif type(en_value) == 'string' and en_value:sub(1, 4) == 'opt_' then
for _, v in ipairs(split(en_value, ',')) do
local lhs, rhs = v:match('^(.-)=(.+)$')
if rhs then
parms[lhs] = tonumber(rhs) or rhs
else
parms[v] = true
end
end
en_value = nil
end
end
parms[en_name] = en_value
else
add_warning(parms, 1, 'cvt_unknown_option', loc_name .. '=' .. loc_value)
end
end
local abbr_entered = parms.abbr
local cfg_abbr = config.abbr
if cfg_abbr then
-- Don't warn if invalid because every convert would show that warning.
if cfg_abbr == 'on always' then
parms.abbr = 'on'
elseif cfg_abbr == 'off always' then
parms.abbr = 'off'
elseif parms.abbr == nil then
if cfg_abbr == 'on default' then
parms.abbr = 'on'
elseif cfg_abbr == 'off default' then
parms.abbr = 'off'
end
end
end
if parms.abbr then
if parms.abbr == 'unit' then
parms.abbr = 'on'
parms.number_word = true
end
parms.abbr_org = parms.abbr -- original abbr, before any flip
elseif parms.opt_hand_hh then
parms.abbr_org = 'on'
parms.abbr = 'on'
else
parms.abbr = 'out' -- default is to abbreviate output only (use symbol, not name)
end
if parms.opt_order_out then
-- Disable options that do not work in a useful way with order=out.
parms.opt_flip = nil -- override adj=flip
parms.opt_spell_in = nil
parms.opt_spell_out = nil
parms.opt_spell_upper = nil
end
if parms.opt_spell_out and not abbr_entered then
parms.abbr = 'off' -- should show unit name when spelling the output value
end
if parms.opt_flip then
local function swap_in_out(option)
local value = parms[option]
if value == 'in' then
parms[option] = 'out'
elseif value == 'out' then
parms[option] = 'in'
end
end
swap_in_out('abbr')
swap_in_out('lk')
if parms.opt_spell_in and not parms.opt_spell_out then
-- For simplicity, and because it does not appear to be needed,
-- user cannot set an option to spell the output only.
parms.opt_spell_in = nil
parms.opt_spell_out = true
end
end
if parms.opt_spell_upper then
parms.spell_upper = parms.opt_flip and 'out' or 'in'
end
if parms.opt_table or parms.opt_tablecen then
if abbr_entered == nil and parms.lk == nil then
parms.opt_values = true
end
parms.table_align = parms.opt_table and 'right' or 'center'
end
if parms.table_align or parms.opt_sortable_on then
parms.need_table_or_sort = true
end
local disp_joins = text_code.disp_joins
local default_joins = disp_joins['b']
parms.join_between = default_joins[3] or '; '
local disp = parms.disp
if disp == nil then -- special case for the most common setting
parms.joins = default_joins
elseif disp == 'x' then
-- Later, parms.joins is set from the input parameters.
else
-- Old template does this.
local abbr = parms.abbr
if disp == 'slash' then
if abbr_entered == nil then
disp = 'slash-nbsp'
elseif abbr == 'in' or abbr == 'out' then
disp = 'slash-sp'
else
disp = 'slash-nosp'
end
elseif disp == 'sqbr' then
if abbr == 'on' then
disp = 'sqbr-nbsp'
else
disp = 'sqbr-sp'
end
end
parms.joins = disp_joins[disp] or default_joins
parms.join_between = parms.joins[3] or parms.join_between
parms.wantname = parms.joins.wantname
end
if (en_default and not parms.opt_lang_local and (parms[1] or ''):find('%d')) or parms.opt_lang_en then
from_en_table = nil
end
if en_default and from_en_table then
-- For hiwiki: localized symbol/name is defined with the US symbol/name field,
-- and is used if output uses localized numbers.
parms.opt_sp_us = true
end
return true
end
local function get_values(parms)
-- If successful, update parms and return true, v, i where
-- v = table of input values
-- i = index to next entry in parms after those processed here
-- or return false, t where t is an error message table.
local valinfo = collection() -- numbered table of input values
local range = collection() -- numbered table of range items (having, for example, 2 range items requires 3 input values)
local had_nocomma -- true if removed "nocomma" kludge from second parameter (like "tonocomma")
local parm2 = strip(parms[2])
if parm2 and parm2:sub(-7, -1) == 'nocomma' then
parms[2] = strip(parm2:sub(1, -8))
parms.opt_nocomma = true
had_nocomma = true
end
local function extractor(i)
-- If the parameter is not a value, try unpacking it as a range ("1-23" for "1 to 23").
-- However, "-1-2/3" is a negative fraction (-1⅔), so it must be extracted first.
-- Do not unpack a parameter if it is like "3-1/2" which is sometimes incorrectly
-- used instead of "3+1/2" (and which should not be interpreted as "3 to ½").
-- Unpacked items are inserted into the parms table.
-- The tail recursion allows combinations like "1x2 to 3x4".
local valstr = strip(parms[i]) -- trim so any '-' as a negative sign will be at start
local success, result = extract_number(parms, valstr, i > 1)
if not success and valstr and i < 20 then -- check i to limit abuse
local lhs, sep, rhs = valstr:match('^(%S+)%s+(%S+)%s+(%S.*)')
if lhs and not (sep == '-' and rhs:match('/')) then
if sep:find('%d') then
return success, result -- to reject {{convert|1 234 567|m}} with a decent message (en only)
end
parms[i] = rhs
table.insert(parms, i, sep)
table.insert(parms, i, lhs)
return extractor(i)
end
if not valstr:match('%-.*/') then
for _, sep in ipairs(text_code.ranges.words) do
local start, stop = valstr:find(sep, 2, true) -- start at 2 to skip any negative sign for range '-'
if start then
parms[i] = valstr:sub(stop + 1)
table.insert(parms, i, sep)
table.insert(parms, i, valstr:sub(1, start - 1))
return extractor(i)
end
end
end
end
return success, result
end
local i = 1
local is_change
while true do
local success, info = extractor(i) -- need to set parms.opt_nocomma before calling this
if not success then return false, info end
i = i + 1
if is_change then
info.is_change = true -- value is after "±" and so is a change (significant for range like {{convert|5|±|5|°C}})
is_change = nil
end
valinfo:add(info)
local range_item = get_range(strip(parms[i]))
if not range_item then
break
end
i = i + 1
range:add(range_item)
if type(range_item) == 'table' then
-- For range "x", if append unit to some values, append it to all.
parms.in_range_x = parms.in_range_x or range_item.in_range_x
parms.out_range_x = parms.out_range_x or range_item.out_range_x
parms.abbr_range_x = parms.abbr_range_x or range_item.abbr_range_x
is_change = range_item.is_range_change
end
end
if range.n > 0 then
if range.n > 30 then -- limit abuse, although 4 is a more likely upper limit
return false, { 'cvt_invalid_num' } -- misleading message but it will do
end
parms.range = range
elseif had_nocomma then
return false, { 'cvt_unknown', parm2 }
end
return true, valinfo, i
end
local function simple_get_values(parms)
-- If input is like "{{convert|valid_value|valid_unit|...}}",
-- return true, i, in_unit, in_unit_table
-- i = index in parms of what follows valid_unit, if anything.
-- The valid_value is not negative and does not use a fraction, and
-- no options requiring further processing of the input are used.
-- Otherwise, return nothing or return false, parm1 for caller to interpret.
-- Testing shows this function is successful for 96% of converts in articles,
-- and that on average it speeds up converts by 8%.
local clean = to_en(strip(parms[1] or ''), parms)
if parms.opt_ri or parms.opt_spell_in or #clean > 10 or not clean:match('^[0-9.]+$') then
return false, clean
end
local value = tonumber(clean)
if not value then return end
local info = {
value = value,
altvalue = value,
singular = (value == 1),
clean = clean,
show = with_separator(parms, clean),
}
local in_unit = strip(parms[2])
local success, in_unit_table = lookup(parms, in_unit, 'no_combination')
if not success then return end
in_unit_table.valinfo = { info }
return true, 3, in_unit, in_unit_table
end
local function wikidata_call(parms, operation, ...)
-- Return true, s where s is the result of a Wikidata operation,
-- or return false, t where t is an error message table.
local function worker(...)
wikidata_code = wikidata_code or require(wikidata_module)
wikidata_data = wikidata_data or mw.loadData(wikidata_data_module)
return wikidata_code[operation](wikidata_data, ...)
end
local success, status, result = pcall(worker, ...)
if success then
return status, result
end
if parms.opt_sortable_debug then
-- Use debug=yes to crash if an error while accessing Wikidata.
error('Error accessing Wikidata: ' .. status, 0)
end
return false, { 'cvt_wd_fail' }
end
local function get_parms(parms, args)
-- If successful, update parms and return true, unit where
-- parms is a table of all arguments passed to the template
-- converted to named arguments, and
-- unit is the input unit table;
-- or return false, t where t is an error message table.
-- For special processing (not a convert), can also return
-- true, wikitext where wikitext is the final result.
-- The returned input unit table may be for a fake unit using the specified
-- unit code as the symbol and name, and with bad_mcode = message code table.
-- MediaWiki removes leading and trailing whitespace from the values of
-- named arguments. However, the values of numbered arguments include any
-- whitespace entered in the template, and whitespace is used by some
-- parameters (example: the numbered parameters associated with "disp=x").
local kv_pairs = {} -- table of input key:value pairs where key is a name; needed because cannot iterate parms and add new fields to it
for k, v in pairs(args) do
if type(k) == 'number' or k == 'test' then -- parameter "test" is reserved for testing and is not translated
parms[k] = v
else
kv_pairs[k] = v
end
end
if parms.test == 'wikidata' then
local ulookup = function (ucode)
-- Use empty table for parms so it does not accumulate results when used repeatedly.
return lookup({}, ucode, 'no_combination')
end
return wikidata_call(parms, '_listunits', ulookup)
end
local success, msg = translate_parms(parms, kv_pairs)
if not success then return false, msg end
if parms.input then
success, msg = wikidata_call(parms, '_adjustparameters', parms, 1)
if not success then return false, msg end
end
local success, i, in_unit, in_unit_table = simple_get_values(parms)
if not success then
if type(i) == 'string' and i:match('^NNN+$') then
-- Some infoboxes have examples like {{convert|NNN|m}} (3 or more "N").
-- Output an empty string for these.
return false, { 'cvt_no_output' }
end
local valinfo
success, valinfo, i = get_values(parms)
if not success then return false, valinfo end
in_unit = strip(parms[i])
i = i + 1
success, in_unit_table = lookup(parms, in_unit, 'no_combination')
if not success then
in_unit = in_unit or ''
if parms.opt_ignore_error then -- display given unit code with no error (for use with {{val}})
in_unit_table = '' -- suppress error message and prevent processing of output unit
end
in_unit_table = setmetatable({
symbol = in_unit, name2 = in_unit, utype = in_unit,
scale = 1, default = '', defkey = '', linkey = '',
bad_mcode = in_unit_table }, unit_mt)
end
in_unit_table.valinfo = valinfo
end
if parms.test == 'msg' then
-- Am testing the messages produced when no output unit is specified, and
-- the input unit has a missing or invalid default.
-- Set two units for testing that.
-- LATER: Remove this code.
if in_unit == 'chain' then
in_unit_table.default = nil -- no default
elseif in_unit == 'rd' then
in_unit_table.default = "ft!X!m" -- an invalid expression
end
end
in_unit_table.inout = 'in' -- this is an input unit
if not parms.range then
local success, inext, composite_unit = get_composite(parms, i, in_unit_table)
if not success then return false, inext end
if composite_unit then
in_unit_table = composite_unit
i = inext
end
end
if in_unit_table.builtin == 'mach' then
-- As with old template, a number following Mach as the input unit is the altitude.
-- That is deprecated: should use altitude_ft=NUMBER or altitude_m=NUMBER.
local success, info
success = tonumber(parms[i]) -- this will often work and will give correct result for values like 2e4 without forcing output scientific notation
if success then
info = { value = success }
else
success, info = extract_number(parms, parms[i], false, true)
end
if success then
i = i + 1
in_unit_table.altitude = info.value
end
end
local word = strip(parms[i])
i = i + 1
local precision, is_bad_precision
local function set_precision(text)
local number, is_integer = get_number(text)
if number then
if is_integer then
precision = number
else
precision = text
is_bad_precision = true
end
return true -- text was used for precision, good or bad
end
end
if word and not set_precision(word) then
parms.out_unit = parms.out_unit or word
if set_precision(strip(parms[i])) then
i = i + 1
end
end
if parms.opt_adj_mid then
word = parms[i]
i = i + 1
if word then -- mid-text words
if word:sub(1, 1) == '-' then
parms.mid = word
else
parms.mid = ' ' .. word
end
end
end
if parms.opt_one_preunit then
parms[parms.opt_flip and 'preunit2' or 'preunit1'] = preunits(1, parms[i])
i = i + 1
end
if parms.disp == 'x' then
-- Following is reasonably compatible with the old template.
local first = parms[i] or ''
local second = parms[i+1] or ''
i = i + 2
if strip(first) == '' then -- user can enter ' ' rather than ' ' to avoid the default
first = ' [ ' .. first
second = ' ]' .. second
end
parms.joins = { first, second }
elseif parms.opt_two_preunits then
local p1, p2 = preunits(2, parms[i], parms[i+1])
i = i + 2
if parms.preunit1 then
-- To simplify documentation, allow unlikely use of adj=pre with disp=preunit
-- (however, an output unit must be specified with adj=pre and with disp=preunit).
parms.preunit1 = parms.preunit1 .. p1
parms.preunit2 = p2
else
parms.preunit1, parms.preunit2 = p1, p2
end
end
if precision == nil then
if set_precision(strip(parms[i])) then
i = i + 1
end
end
if is_bad_precision then
add_warning(parms, 1, 'cvt_bad_prec', precision)
else
parms.precision = precision
end
for j = i, i + 3 do
local parm = parms[j] -- warn if find a non-empty extraneous parameter
if parm and parm:match('%S') then
add_warning(parms, 1, 'cvt_unknown_option', parm)
break
end
end
return true, in_unit_table
end
local function record_default_precision(parms, out_current, precision)
-- If necessary, adjust parameters and return a possibly adjusted precision.
-- When converting a range of values where a default precision is required,
-- that default is calculated for each value because the result sometimes
-- depends on the precise input and output values. This function may cause
-- the entire convert process to be repeated in order to ensure that the
-- same default precision is used for each individual convert.
-- If that were not done, a range like 1000 to 1000.4 may give poor results
-- because the first output could be heavily rounded, while the second is not.
-- For range 1000.4 to 1000, this function can give the second convert the
-- same default precision that was used for the first.
if not parms.opt_round_each then
local maxdef = out_current.max_default_precision
if maxdef then
if maxdef < precision then
parms.do_convert_again = true
out_current.max_default_precision = precision
else
precision = out_current.max_default_precision
end
else
out_current.max_default_precision = precision
end
end
return precision
end
local function default_precision(parms, invalue, inclean, denominator, outvalue, in_current, out_current, extra)
-- Return a default value for precision (an integer like 2, 0, -2).
-- If denominator is not nil, it is the value of the denominator in inclean.
-- Code follows procedures used in old template.
local fudge = 1e-14 -- {{Order of magnitude}} adds this, so we do too
local prec, minprec, adjust
local subunit_ignore_trailing_zero
local subunit_more_precision -- kludge for "in" used in input like "|2|ft|6|in"
local composite = in_current.composite
if composite then
subunit_ignore_trailing_zero = true -- input "|2|st|10|lb" has precision 0, not -1
if composite[#composite].exception == 'subunit_more_precision' then
subunit_more_precision = true -- do not use standard precision with input like "|2|ft|6|in"
end
end
if denominator and denominator > 0 then
prec = math.max(log10(denominator), 1)
else
-- Count digits after decimal mark, handling cases like '12.345e6'.
local exponent
local integer, dot, decimals, expstr = inclean:match('^(%d*)(%.?)(%d*)(.*)')
local e = expstr:sub(1, 1)
if e == 'e' or e == 'E' then
exponent = tonumber(expstr:sub(2))
end
if dot == '' then
prec = subunit_ignore_trailing_zero and 0 or -integer:match('0*$'):len()
else
prec = #decimals
end
if exponent then
-- So '1230' and '1.23e3' both give prec = -1, and '0.00123' and '1.23e-3' give 5.
prec = prec - exponent
end
end
if in_current.istemperature and out_current.istemperature then
-- Converting between common temperatures (°C, °F, °R, K); not keVT.
-- Kelvin value can be almost zero, or small but negative due to precision problems.
-- Also, an input value like -300 C (below absolute zero) gives negative kelvins.
-- Calculate minimum precision from absolute value.
adjust = 0
local kelvin = abs((invalue - in_current.offset) * in_current.scale)
if kelvin < 1e-8 then -- assume nonzero due to input or calculation precision problem
minprec = 2
else
minprec = 2 - floor(log10(kelvin) + fudge) -- 3 sigfigs in kelvin
end
else
if invalue == 0 or outvalue <= 0 then
-- We are never called with a negative outvalue, but it might be zero.
-- This is special-cased to avoid calculation exceptions.
return record_default_precision(parms, out_current, 0)
end
if out_current.exception == 'integer_more_precision' and floor(invalue) == invalue then
-- With certain output units that sometimes give poor results
-- with default rounding, use more precision when the input
-- value is equal to an integer. An example of a poor result
-- is when input 50 gives a smaller output than input 49.5.
-- Experiment shows this helps, but it does not eliminate all
-- surprises because it is not clear whether "50" should be
-- interpreted as "from 45 to 55" or "from 49.5 to 50.5".
adjust = -log10(in_current.scale)
elseif subunit_more_precision then
-- Conversion like "{{convert|6|ft|1|in|cm}}" (where subunit is "in")
-- has a non-standard adjust value, to give more output precision.
adjust = log10(out_current.scale) + 2
else
adjust = log10(abs(invalue / outvalue))
end
adjust = adjust + log10(2)
-- Ensure that the output has at least two significant figures.
minprec = 1 - floor(log10(outvalue) + fudge)
end
if extra then
adjust = extra.adjust or adjust
minprec = extra.minprec or minprec
end
return record_default_precision(parms, out_current, math.max(floor(prec + adjust), minprec))
end
local function convert(parms, invalue, info, in_current, out_current)
-- Convert given input value from one unit to another.
-- Return output_value (a number) if a simple convert, or
-- return f, t where
-- f = true, t = table of information with results, or
-- f = false, t = error message table.
local inscale = in_current.scale
local outscale = out_current.scale
if not in_current.iscomplex and not out_current.iscomplex then
return invalue * (inscale / outscale) -- minimize overhead for most common case
end
if in_current.invert or out_current.invert then
-- Inverted units, such as inverse length, inverse time, or
-- fuel efficiency. Built-in units do not have invert set.
if (in_current.invert or 1) * (out_current.invert or 1) < 0 then
return 1 / (invalue * inscale * outscale)
end
return invalue * (inscale / outscale)
elseif in_current.offset then
-- Temperature (there are no built-ins for this type of unit).
if info.is_change then
return invalue * (inscale / outscale)
end
return (invalue - in_current.offset) * (inscale / outscale) + out_current.offset
else
-- Built-in unit.
local in_builtin = in_current.builtin
local out_builtin = out_current.builtin
if in_builtin and out_builtin then
if in_builtin == out_builtin then
return invalue
end
-- There are no cases (yet) where need to convert from one
-- built-in unit to another, so this should never occur.
return false, { 'cvt_bug_convert' }
end
if in_builtin == 'mach' or out_builtin == 'mach' then
-- Should check that only one altitude is given but am planning to remove
-- in_current.altitude (which can only occur when Mach is the input unit),
-- and out_current.altitude cannot occur.
local alt = parms.altitude_ft or in_current.altitude
if not alt and parms.altitude_m then
alt = parms.altitude_m / 0.3048 -- 1 ft = 0.3048 m
end
local spd = speed_of_sound(alt)
if in_builtin == 'mach' then
inscale = spd
return invalue * (inscale / outscale)
end
outscale = spd
local adjust = 0.1 / inscale
return true, {
outvalue = invalue * (inscale / outscale),
adjust = log10(adjust) + log10(2),
}
elseif in_builtin == 'hand' then
-- 1 hand = 4 inches; 1.2 hands = 6 inches.
-- Decimals of a hand are only defined for the first digit, and
-- the first fractional digit should be a number of inches (1, 2 or 3).
-- However, this code interprets the entire fractional part as the number
-- of inches / 10 (so 1.75 inches would be 0.175 hands).
-- A value like 12.3 hands is exactly 12*4 + 3 inches; base default precision on that.
local integer, fracpart = math.modf(invalue)
local inch_value = 4 * integer + 10 * fracpart -- equivalent number of inches
local factor = inscale / outscale
if factor == 4 then
-- Am converting to inches: show exact result, and use "inches" not "in" by default.
if parms.abbr_org == nil then
out_current.usename = true
end
local show = format('%g', abs(inch_value)) -- show and clean are unsigned
if not show:find('e', 1, true) then
return true, {
invalue = inch_value,
outvalue = inch_value,
clean = show,
show = show,
}
end
end
local outvalue = (integer + 2.5 * fracpart) * factor
local fracstr = info.clean:match('%.(.*)') or ''
local fmt
if fracstr == '' then
fmt = '%.0f'
else
fmt = '%.' .. format('%d', #fracstr - 1) .. 'f'
end
return true, {
invalue = inch_value,
clean = format(fmt, inch_value),
outvalue = outvalue,
minprec = 0,
}
end
end
return false, { 'cvt_bug_convert' } -- should never occur
end
local function user_style(parms, i)
-- Return text for a user-specified style for a table cell, or '' if none,
-- given i = 1 (input style) or 2 (output style).
local style = parms[(i == 1) and 'stylein' or 'styleout']
if style then
style = style:gsub('"', '')
if style ~= '' then
if style:sub(-1) ~= ';' then
style = style .. ';'
end
return style
end
end
return ''
end
local function make_table_or_sort(parms, invalue, info, in_current, scaled_top)
-- Set options to handle output for a table or a sort key, or both.
-- The text sort key is based on the value resulting from converting
-- the input to a fake base unit with scale = 1, and other properties
-- required for a conversion derived from the input unit.
-- For other modules, return the sort key in a hidden span element, and
-- the scaled value used to generate the sort key.
-- If scaled_top is set, it is the scaled value of the numerator of a per unit
-- to be combined with this unit (the denominator) to make the sort key.
-- Scaling only works with units that convert with a factor (not temperature).
local sortkey, scaled_value
if parms.opt_sortable_on then
local base = { -- a fake unit with enough fields for a valid convert
scale = 1,
invert = in_current.invert and 1,
iscomplex = in_current.iscomplex,
offset = in_current.offset and 0,
}
local outvalue, extra = convert(parms, invalue, info, in_current, base)
if extra then
outvalue = extra.outvalue
end
if in_current.istemperature then
-- Have converted to kelvin; assume numbers close to zero have a
-- rounding error and should be zero.
if abs(outvalue) < 1e-12 then
outvalue = 0
end
end
if scaled_top and outvalue ~= 0 then
outvalue = scaled_top / outvalue
end
scaled_value = outvalue
if not valid_number(outvalue) then
if outvalue < 0 then
sortkey = '1000000000000000000'
else
sortkey = '9000000000000000000'
end
elseif outvalue == 0 then
sortkey = '5000000000000000000'
else
local mag = floor(log10(abs(outvalue)) + 1e-14)
local prefix
if outvalue > 0 then
prefix = 7000 + mag
else
prefix = 2999 - mag
outvalue = outvalue + 10^(mag+1)
end
sortkey = format('%d', prefix) .. format('%015.0f', floor(outvalue * 10^(14-mag)))
end
end
local sortspan
if sortkey and not parms.table_align then
sortspan = parms.opt_sortable_debug and
'<span data-sort-value="' .. sortkey .. '♠"><span style="border:1px solid">' .. sortkey .. '♠</span></span>' or
'<span data-sort-value="' .. sortkey .. '♠"></span>'
parms.join_before = sortspan
end
if parms.table_align then
local sort
if sortkey then
sort = ' data-sort-value="' .. sortkey .. '"'
if parms.opt_sortable_debug then
parms.join_before = '<span style="border:1px solid">' .. sortkey .. '</span>'
end
else
sort = ''
end
local style = 'style="text-align:' .. parms.table_align .. ';'
local joins = {}
for i = 1, 2 do
joins[i] = (i == 1 and '' or '\n|') .. style .. user_style(parms, i) .. '"' .. sort .. '|'
end
parms.table_joins = joins
end
return sortspan, scaled_value
end
local cvt_to_hand
local function cvtround(parms, info, in_current, out_current)
-- Return true, t where t is a table with the conversion results; fields:
-- show = rounded, formatted string with the result of converting value in info,
-- using the rounding specified in parms.
-- singular = true if result (after rounding and ignoring any negative sign)
-- is "1", or like "1.00", or is a fraction with value < 1;
-- (and more fields shown below, and a calculated 'absvalue' field).
-- or return false, t where t is an error message table.
-- Input info.clean uses en digits (it has been translated, if necessary).
-- Output show uses en or non-en digits as appropriate, or can be spelled.
if out_current.builtin == 'hand' then
return cvt_to_hand(parms, info, in_current, out_current)
end
local invalue = in_current.builtin == 'hand' and info.altvalue or info.value
local outvalue, extra = convert(parms, invalue, info, in_current, out_current)
if parms.need_table_or_sort then
parms.need_table_or_sort = nil -- process using first input value only
make_table_or_sort(parms, invalue, info, in_current)
end
if extra then
if not outvalue then return false, extra end
invalue = extra.invalue or invalue
outvalue = extra.outvalue
end
if not valid_number(outvalue) then
return false, { 'cvt_invalid_num' }
end
local isnegative
if outvalue < 0 then
isnegative = true
outvalue = -outvalue
end
local precision, show, exponent
local denominator = out_current.frac
if denominator then
show = fraction_table(outvalue, denominator)
else
precision = parms.precision
if not precision then
if parms.sigfig then
show, exponent = make_sigfig(outvalue, parms.sigfig)
elseif parms.opt_round then
local n = parms.opt_round
if n == 0.5 then
local integer, fracpart = math.modf(floor(2 * outvalue + 0.5) / 2)
if fracpart == 0 then
show = format('%.0f', integer)
else
show = format('%.1f', integer + fracpart)
end
else
show = format('%.0f', floor((outvalue / n) + 0.5) * n)
end
elseif in_current.builtin == 'mach' then
local sigfig = info.clean:gsub('^[0.]+', ''):gsub('%.', ''):len() + 1
show, exponent = make_sigfig(outvalue, sigfig)
else
local inclean = info.clean
if extra then
inclean = extra.clean or inclean
show = extra.show
end
if not show then
precision = default_precision(parms, invalue, inclean, info.denominator, outvalue, in_current, out_current, extra)
end
end
end
end
if precision then
if precision >= 0 then
local fudge
if precision <= 8 then
-- Add a fudge to handle common cases of bad rounding due to inability
-- to precisely represent some values. This makes the following work:
-- {{convert|-100.1|C|K}} and {{convert|5555000|um|m|2}}.
-- Old template uses #expr round, which invokes PHP round().
-- LATER: Investigate how PHP round() works.
fudge = 2e-14
else
fudge = 0
end
local fmt = '%.' .. format('%d', precision) .. 'f'
local success
success, show = pcall(format, fmt, outvalue + fudge)
if not success then
return false, { 'cvt_big_prec', tostring(precision) }
end
else
precision = -precision -- #digits to zero (in addition to any digits after dot)
local shift = 10 ^ precision
show = format('%.0f', outvalue/shift)
if show ~= '0' then
exponent = #show + precision
end
end
end
local t = format_number(parms, show, exponent, isnegative)
if type(show) == 'string' then
-- Set singular using match because on some systems 0.99999999999999999 is 1.0.
if exponent then
t.singular = (exponent == 1 and show:match('^10*$'))
else
t.singular = (show == '1' or show:match('^1%.0*$'))
end
else
t.fraction_table = show
t.singular = (outvalue <= 1) -- cannot have 'fraction == 1', but if it were possible it would be singular
end
t.raw_absvalue = outvalue -- absolute value before rounding
return true, setmetatable(t, {
__index = function (self, key)
if key == 'absvalue' then
-- Calculate absolute value after rounding, if needed.
local clean, exponent = rawget(self, 'clean'), rawget(self, 'exponent')
local value = tonumber(clean) -- absolute value (any negative sign has been ignored)
if exponent then
value = value * 10^exponent
end
rawset(self, key, value)
return value
end
end })
end
function cvt_to_hand(parms, info, in_current, out_current)
-- Convert input to hands, inches.
-- Return true, t where t is a table with the conversion results;
-- or return false, t where t is an error message table.
if parms.abbr_org == nil then
out_current.usename = true -- default is to show name not symbol
end
local precision = parms.precision
local frac = out_current.frac
if not frac and precision and precision > 1 then
frac = (precision == 2) and 2 or 4
end
local out_next = out_current.out_next
if out_next then
-- Use magic knowledge to determine whether the next unit is inches without requiring i18n.
-- The following ensures that when the output combination "hand in" is used, the inches
-- value is rounded to match the hands value. Also, displaying say "61½" instead of 61.5
-- is better as 61.5 implies the value is not 61.4.
if out_next.exception == 'subunit_more_precision' then
out_next.frac = frac
end
end
-- Convert to inches; calculate hands from that.
local dummy_unit_table = { scale = out_current.scale / 4, frac = frac }
local success, outinfo = cvtround(parms, info, in_current, dummy_unit_table)
if not success then return false, outinfo end
local tfrac = outinfo.fraction_table
local inches = outinfo.raw_absvalue
if tfrac then
inches = floor(inches) -- integer part only; fraction added later
else
inches = floor(inches + 0.5) -- a hands measurement never shows decimals of an inch
end
local hands, inches = divide(inches, 4)
outinfo.absvalue = hands + inches/4 -- supposed to be the absolute rounded value, but this is close enough
local inchstr = tostring(inches) -- '0', '1', '2' or '3'
if precision and precision <= 0 then -- using negative or 0 for precision rounds to nearest hand
hands = floor(outinfo.raw_absvalue/4 + 0.5)
inchstr = ''
elseif tfrac then
-- Always show an integer before fraction (like "15.0½") because "15½" means 15-and-a-half hands.
inchstr = numdot .. format_fraction(parms, 'out', false, inchstr, tfrac.numstr, tfrac.denstr)
else
inchstr = numdot .. from_en(inchstr)
end
outinfo.show = outinfo.sign .. with_separator(parms, format('%.0f', hands)) .. inchstr
return true, outinfo
end
local function evaluate_condition(value, condition)
-- Return true or false from applying a conditional expression to value,
-- or throw an error if invalid.
-- A very limited set of expressions is supported:
-- v < 9
-- v * 9 < 9
-- where
-- 'v' is replaced with value
-- 9 is any number (as defined by Lua tonumber)
-- only en digits are accepted
-- '<' can also be '<=' or '>' or '>='
-- In addition, the following form is supported:
-- LHS and RHS
-- where
-- LHS, RHS = any of above expressions.
local function compare(value, text)
local arithop, factor, compop, limit = text:match('^%s*v%s*([*]?)(.-)([<>]=?)(.*)$')
if arithop == nil then
error('Invalid default expression', 0)
elseif arithop == '*' then
factor = tonumber(factor)
if factor == nil then
error('Invalid default expression', 0)
end
value = value * factor
end
limit = tonumber(limit)
if limit == nil then
error('Invalid default expression', 0)
end
if compop == '<' then
return value < limit
elseif compop == '<=' then
return value <= limit
elseif compop == '>' then
return value > limit
elseif compop == '>=' then
return value >= limit
end
error('Invalid default expression', 0) -- should not occur
end
local lhs, rhs = condition:match('^(.-%W)and(%W.*)')
if lhs == nil then
return compare(value, condition)
end
return compare(value, lhs) and compare(value, rhs)
end
local function get_default(value, unit_table)
-- Return true, s where s = name of unit's default output unit,
-- or return false, t where t is an error message table.
-- Some units have a default that depends on the input value
-- (the first value if a range of values is used).
-- If '!' is in the default, the first bang-delimited field is an
-- expression that uses 'v' to represent the input value.
-- Example: 'v < 120 ! small ! big ! suffix' (suffix is optional)
-- evaluates 'v < 120' as a boolean with result
-- 'smallsuffix' if (value < 120), or 'bigsuffix' otherwise.
-- Input must use en digits and '.' decimal mark.
local default = data_code.default_exceptions[unit_table.defkey or unit_table.symbol] or unit_table.default
if not default then
local per = unit_table.per
if per then
local function a_default(v, u)
local success, ucode = get_default(v, u)
if not success then
return '?' -- an unlikely error has occurred; will cause lookup of default to fail
end
-- Attempt to use only the first unit if a combination or output multiple.
-- This is not bulletproof but should work for most cases.
-- Where it does not work, the convert will need to specify the wanted output unit.
local t = all_units[ucode]
if t then
local combo = t.combination
if combo then
-- For a multiple like ftin, the "first" unit (ft) is last in the combination.
local i = t.multiple and table_len(combo) or 1
ucode = combo[i]
end
else
-- Try for an automatically generated combination.
local item = ucode:match('^(.-)%+') or ucode:match('^(%S+)%s')
if all_units[item] then
return item
end
end
return ucode
end
local unit1, unit2 = per[1], per[2]
local def1 = (unit1 and a_default(value, unit1) or unit_table.vprefix or '')
local def2 = a_default(1, unit2) -- 1 because per unit of denominator
return true, def1 .. '/' .. def2
end
return false, { 'cvt_no_default', unit_table.symbol }
end
if default:find('!', 1, true) == nil then
return true, default
end
local t = split(default, '!')
if #t == 3 or #t == 4 then
local success, result = pcall(evaluate_condition, value, t[1])
if success then
default = result and t[2] or t[3]
if #t == 4 then
default = default .. t[4]
end
return true, default
end
end
return false, { 'cvt_bad_default', unit_table.symbol }
end
local linked_pages -- to record linked pages so will not link to the same page more than once
local function unlink(unit_table)
-- Forget that the given unit has previously been linked (if it has).
-- That is needed when processing a range of inputs or outputs when an id
-- for the first range value may have been evaluated, but only an id for
-- the last value is displayed, and that id may need to be linked.
linked_pages[unit_table.unitcode or unit_table] = nil
end
local function make_link(link, id, unit_table)
-- Return wikilink "[[link|id]]", possibly abbreviated as in examples:
-- [[Mile|mile]] --> [[mile]]
-- [[Mile|miles]] --> [[mile]]s
-- However, just id is returned if:
-- * no link given (so caller does not need to check if a link was defined); or
-- * link has previously been used during the current convert (to avoid overlinking).
local link_key
if unit_table then
link_key = unit_table.unitcode or unit_table
else
link_key = link
end
if not link or link == '' or linked_pages[link_key] then
return id
end
linked_pages[link_key] = true
-- Following only works for language en, but it should be safe on other wikis,
-- and overhead of doing it generally does not seem worthwhile.
local l = link:sub(1, 1):lower() .. link:sub(2)
if link == id or l == id then
return '[[' .. id .. ']]'
elseif link .. 's' == id or l .. 's' == id then
return '[[' .. id:sub(1, -2) .. ']]s'
else
return '[[' .. link .. '|' .. id .. ']]'
end
end
local function variable_name(clean, unit_table)
-- For slwiki, a unit name depends on the value.
-- Parameter clean is the unsigned rounded value in en digits, as a string.
-- Value Source Example for "m"
-- integer 1: name1 meter (also is the name of the unit)
-- integer 2: var{1} metra
-- integer 3 and 4: var{2} metri
-- integer else: var{3} metrov (0 and 5 or more)
-- real/fraction: var{4} metra
-- var{i} means the i'th field in unit_table.varname if it exists and has
-- an i'th field, otherwise name2.
-- Fields are separated with "!" and are not empty.
-- A field for a unit using an SI prefix has the prefix name inserted,
-- replacing '#' if found, or before the field otherwise.
local vname
if clean == '1' then
vname = unit_table.name1
elseif unit_table.varname then
local i
if clean == '2' then
i = 1
elseif clean == '3' or clean == '4' then
i = 2
elseif clean:find('.', 1, true) then
i = 4
else
i = 3
end
if i > 1 and varname == 'pl' then
i = i - 1
end
vname = split(unit_table.varname, '!')[i]
end
if vname then
local si_name = rawget(unit_table, 'si_name') or ''
local pos = vname:find('#', 1, true)
if pos then
vname = vname:sub(1, pos - 1) .. si_name .. vname:sub(pos + 1)
else
vname = si_name .. vname
end
return vname
end
return unit_table.name2
end
local function linked_id(parms, unit_table, key_id, want_link, clean)
-- Return final unit id (symbol or name), optionally with a wikilink,
-- and update unit_table.sep if required.
-- key_id is one of: 'symbol', 'sym_us', 'name1', 'name1_us', 'name2', 'name2_us'.
local abbr_on = (key_id == 'symbol' or key_id == 'sym_us')
if abbr_on and want_link then
local symlink = rawget(unit_table, 'symlink')
if symlink then
return symlink -- for exceptions that have the linked symbol built-in
end
end
local multiplier = rawget(unit_table, 'multiplier')
local per = unit_table.per
if per then
local paren1, paren2 = '', '' -- possible parentheses around bottom unit
local unit1 = per[1] -- top unit_table, or nil
local unit2 = per[2] -- bottom unit_table
if abbr_on then
if not unit1 then
unit_table.sep = '' -- no separator in "$2/acre"
end
if not want_link then
local symbol = unit_table.symbol_raw
if symbol then
return symbol -- for exceptions that have the symbol built-in
end
end
if (unit2.symbol):find('⋅', 1, true) then
paren1, paren2 = '(', ')'
end
end
local key_id2 -- unit2 is always singular
if key_id == 'name2' then
key_id2 = 'name1'
elseif key_id == 'name2_us' then
key_id2 = 'name1_us'
else
key_id2 = key_id
end
local result
if abbr_on then
result = '/'
elseif omitsep then
result = per_word
elseif unit1 then
result = ' ' .. per_word .. ' '
else
result = per_word .. ' '
end
if want_link and unit_table.link then
if abbr_on or not varname then
result = (unit1 and linked_id(parms, unit1, key_id, false, clean) or '') .. result .. linked_id(parms, unit2, key_id2, false, '1')
else
result = (unit1 and variable_name(clean, unit1) or '') .. result .. variable_name('1', unit2)
end
if omit_separator(result) then
unit_table.sep = ''
end
return make_link(unit_table.link, result, unit_table)
end
if unit1 then
result = linked_id(parms, unit1, key_id, want_link, clean) .. result
if unit1.sep then
unit_table.sep = unit1.sep
end
elseif omitsep then
unit_table.sep = ''
end
return result .. paren1 .. linked_id(parms, unit2, key_id2, want_link, '1') .. paren2
end
if multiplier then
-- A multiplier (like "100" in "100km") forces the unit to be plural.
multiplier = from_en(multiplier)
if not omitsep then
multiplier = multiplier .. (abbr_on and ' ' or ' ')
end
if not abbr_on then
if key_id == 'name1' then
key_id = 'name2'
elseif key_id == 'name1_us' then
key_id = 'name2_us'
end
end
else
multiplier = ''
end
local id = unit_table.fixed_name or ((varname and not abbr_on) and variable_name(clean, unit_table) or unit_table[key_id])
if omit_separator(id) then
unit_table.sep = ''
end
if want_link then
local link = data_code.link_exceptions[unit_table.linkey or unit_table.symbol] or unit_table.link
if link then
local before = ''
local i = unit_table.customary
if i == 1 and parms.opt_sp_us then
i = 2 -- show "U.S." not "US"
end
if i == 3 and abbr_on then
i = 4 -- abbreviate "imperial" to "imp"
end
local customary = text_code.customary_units[i]
if customary then
-- LATER: This works for language en only, but it's esoteric so ignore for now.
local pertext
if id:sub(1, 1) == '/' then
-- Want unit "/USgal" to display as "/U.S. gal", not "U.S. /gal".
pertext = '/'
id = id:sub(2)
elseif id:sub(1, 4) == 'per ' then
-- Similarly want "per U.S. gallon", not "U.S. per gallon" (but in practice this is unlikely to be used).
pertext = 'per '
id = id:sub(5)
else
pertext = ''
end
-- Omit any "US"/"U.S."/"imp"/"imperial" from start of id since that will be inserted.
local removes = (i < 3) and { 'US ', 'US ', 'U.S. ', 'U.S. ' } or { 'imp ', 'imp ', 'imperial ' }
for _, prefix in ipairs(removes) do
local plen = #prefix
if id:sub(1, plen) == prefix then
id = id:sub(plen + 1)
break
end
end
before = pertext .. make_link(customary.link, customary[1]) .. ' '
end
id = before .. make_link(link, id, unit_table)
end
end
return multiplier .. id
end
local function make_id(parms, which, unit_table)
-- Return id, f where
-- id = unit name or symbol, possibly modified
-- f = true if id is a name, or false if id is a symbol
-- using the value for index 'which', and for 'in' or 'out' (unit_table.inout).
-- Result is '' if no symbol/name is to be used.
-- In addition, set unit_table.sep = ' ' or ' ' or ''
-- (the separator that caller will normally insert before the id).
if parms.opt_values then
unit_table.sep = ''
return ''
end
local inout = unit_table.inout
local info = unit_table.valinfo[which]
local abbr_org = parms.abbr_org
local adjectival = parms.opt_adjectival
local lk = parms.lk
local want_link = (lk == 'on' or lk == inout)
local usename = unit_table.usename
local singular = info.singular
local want_name
if usename then
want_name = true
else
if abbr_org == nil then
if parms.wantname then
want_name = true
end
if unit_table.usesymbol then
want_name = false
end
end
if want_name == nil then
local abbr = parms.abbr
if abbr == 'on' or abbr == inout or (abbr == 'mos' and inout == 'out') then
want_name = false
else
want_name = true
end
end
end
local key
if want_name then
if lk == nil and unit_table.builtin == 'hand' then
want_link = true
end
if parms.opt_use_nbsp then
unit_table.sep = ' '
else
unit_table.sep = ' '
end
if parms.opt_singular then
local value
if inout == 'in' then
value = info.value
else
value = info.absvalue
end
if value then -- some unusual units do not always set value field
value = abs(value)
singular = (0 < value and value < 1.0001)
end
end
if unit_table.engscale then
-- engscale: so "|1|e3kg" gives "1 thousand kilograms" (plural)
singular = false
end
key = (adjectival or singular) and 'name1' or 'name2'
if parms.opt_sp_us then
key = key .. '_us'
end
else
if unit_table.builtin == 'hand' then
if parms.opt_hand_hh then
unit_table.symbol = 'hh' -- LATER: might want i18n applied to this
end
end
unit_table.sep = ' '
key = parms.opt_sp_us and 'sym_us' or 'symbol'
end
return linked_id(parms, unit_table, key, want_link, info.clean), want_name
end
local function decorate_value(parms, unit_table, which, number_word)
-- If needed, update unit_table so values will be shown with extra information.
-- For consistency with the old template (but different from fmtpower),
-- the style to display powers of 10 includes "display:none" to allow some
-- browsers to copy, for example, "10³" as "10^3", rather than as "103".
local info
local engscale = unit_table.engscale
local prefix = unit_table.vprefix
if engscale or prefix then
info = unit_table.valinfo[which]
if info.decorated then
return -- do not redecorate if repeating convert
end
info.decorated = true
if engscale then
local inout = unit_table.inout
local abbr = parms.abbr
if (abbr == 'on' or abbr == inout) and not parms.number_word then
info.show = info.show ..
'<span style="margin-left:0.2em">×<span style="margin-left:0.1em">' ..
from_en('10') ..
'</span></span><s style="display:none">^</s><sup>' ..
from_en(tostring(engscale.exponent)) .. '</sup>'
elseif number_word then
local number_id
local lk = parms.lk
if lk == 'on' or lk == inout then
number_id = make_link(engscale.link, engscale[1])
else
number_id = engscale[1]
end
-- WP:NUMERAL recommends " " in values like "12 million".
info.show = info.show .. (parms.opt_adjectival and '-' or ' ') .. number_id
end
end
if prefix then
info.show = prefix .. info.show
end
end
end
local function process_input(parms, in_current)
-- Processing required once per conversion.
-- Return block of text to represent input (value/unit).
if parms.opt_output_only or parms.opt_output_number_only or parms.opt_output_unit_only then
parms.joins = { '', '' }
return ''
end
local first_unit
local composite = in_current.composite -- nil or table of units
if composite then
first_unit = composite[1]
else
first_unit = in_current
end
local id1, want_name = make_id(parms, 1, first_unit)
local sep = first_unit.sep -- separator between value and unit, set by make_id
local preunit = parms.preunit1
if preunit then
sep = '' -- any separator is included in preunit
else
preunit = ''
end
if parms.opt_input_unit_only then
parms.joins = { '', '' }
if composite then
local parts = { id1 }
for i, unit in ipairs(composite) do
if i > 1 then
table.insert(parts, (make_id(parms, 1, unit)))
end
end
id1 = table.concat(parts, ' ')
end
if want_name and parms.opt_adjectival then
return preunit .. hyphenated(id1)
end
return preunit .. id1
end
if parms.opt_also_symbol and not composite and not parms.opt_flip then
local join1 = parms.joins[1]
if join1 == ' (' or join1 == ' [' then
parms.joins = { ' [' .. first_unit[parms.opt_sp_us and 'sym_us' or 'symbol'] .. ']' .. join1 , parms.joins[2] }
end
end
if in_current.builtin == 'mach' and first_unit.sep ~= '' then -- '' means omitsep with non-enwiki name
local prefix = id1 .. ' '
local range = parms.range
local valinfo = first_unit.valinfo
local result = prefix .. valinfo[1].show
if range then
-- For simplicity and because more not needed, handle one range item only.
local prefix2 = make_id(parms, 2, first_unit) .. ' '
result = range_text(range[1], want_name, parms, result, prefix2 .. valinfo[2].show, 'in', {spaced=true})
end
return preunit .. result
end
if composite then
-- Simplify: assume there is no range, and no decoration.
local mid = (not parms.opt_flip) and parms.mid or ''
local sep1 = ' '
local sep2 = ' '
if parms.opt_adjectival and want_name then
sep1 = '-'
sep2 = '-'
end
if omitsep and sep == '' then
-- Testing the id of the most significant unit should be sufficient.
sep1 = ''
sep2 = ''
end
local parts = { first_unit.valinfo[1].show .. sep1 .. id1 }
for i, unit in ipairs(composite) do
if i > 1 then
table.insert(parts, unit.valinfo[1].show .. sep1 .. (make_id(parms, 1, unit)))
end
end
return table.concat(parts, sep2) .. mid
end
local add_unit = (parms.abbr == 'mos') or
parms[parms.opt_flip and 'out_range_x' or 'in_range_x'] or
(not want_name and parms.abbr_range_x)
local range = parms.range
if range and not add_unit then
unlink(first_unit)
end
local id = range and make_id(parms, range.n + 1, first_unit) or id1
local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, 'in')
if was_hyphenated then
add_unit = false
end
local result
local valinfo = first_unit.valinfo
if range then
for i = 0, range.n do
local number_word
if i == range.n then
add_unit = false
number_word = true
end
decorate_value(parms, first_unit, i+1, number_word)
local show = valinfo[i+1].show
if add_unit then
show = show .. first_unit.sep .. (i == 0 and id1 or make_id(parms, i+1, first_unit))
end
if i == 0 then
result = show
else
result = range_text(range[i], want_name, parms, result, show, 'in')
end
end
else
decorate_value(parms, first_unit, 1, true)
result = valinfo[1].show
end
return result .. preunit .. extra
end
local function process_one_output(parms, out_current)
-- Processing required for each output unit.
-- Return block of text to represent output (value/unit).
local inout = out_current.inout -- normally 'out' but can be 'in' for order=out
local id1, want_name = make_id(parms, 1, out_current)
local sep = out_current.sep -- set by make_id
local preunit = parms.preunit2
if preunit then
sep = '' -- any separator is included in preunit
else
preunit = ''
end
if parms.opt_output_unit_only then
if want_name and parms.opt_adjectival then
return preunit .. hyphenated(id1)
end
return preunit .. id1
end
if out_current.builtin == 'mach' and out_current.sep ~= '' then -- '' means omitsep with non-enwiki name
local prefix = id1 .. ' '
local range = parms.range
local valinfo = out_current.valinfo
local result = prefix .. valinfo[1].show
if range then
-- For simplicity and because more not needed, handle one range item only.
result = range_text(range[1], want_name, parms, result, prefix .. valinfo[2].show, inout, {spaced=true})
end
return preunit .. result
end
local add_unit = (parms[parms.opt_flip and 'in_range_x' or 'out_range_x'] or
(not want_name and parms.abbr_range_x)) and
not parms.opt_output_number_only
local range = parms.range
if range and not add_unit then
unlink(out_current)
end
local id = range and make_id(parms, range.n + 1, out_current) or id1
local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, inout)
if was_hyphenated then
add_unit = false
end
local result
local valinfo = out_current.valinfo
if range then
for i = 0, range.n do
local number_word
if i == range.n then
add_unit = false
number_word = true
end
decorate_value(parms, out_current, i+1, number_word)
local show = valinfo[i+1].show
if add_unit then
show = show .. out_current.sep .. (i == 0 and id1 or make_id(parms, i+1, out_current))
end
if i == 0 then
result = show
else
result = range_text(range[i], want_name, parms, result, show, inout)
end
end
else
decorate_value(parms, out_current, 1, true)
result = valinfo[1].show
end
if parms.opt_output_number_only then
return result
end
return result .. preunit .. extra
end
local function make_output_single(parms, in_unit_table, out_unit_table)
-- Return true, item where item = wikitext of the conversion result
-- for a single output (which is not a combination or a multiple);
-- or return false, t where t is an error message table.
if parms.opt_order_out and in_unit_table.unitcode == out_unit_table.unitcode then
out_unit_table.valinfo = in_unit_table.valinfo
else
out_unit_table.valinfo = collection()
for _, v in ipairs(in_unit_table.valinfo) do
local success, info = cvtround(parms, v, in_unit_table, out_unit_table)
if not success then return false, info end
out_unit_table.valinfo:add(info)
end
end
return true, process_one_output(parms, out_unit_table)
end
local function make_output_multiple(parms, in_unit_table, out_unit_table)
-- Return true, item where item = wikitext of the conversion result
-- for an output which is a multiple (like 'ftin');
-- or return false, t where t is an error message table.
local inout = out_unit_table.inout -- normally 'out' but can be 'in' for order=out
local multiple = out_unit_table.multiple -- table of scaling factors (will not be nil)
local combos = out_unit_table.combination -- table of unit tables (will not be nil)
local abbr = parms.abbr
local abbr_org = parms.abbr_org
local disp = parms.disp
local want_name = (abbr_org == nil and (disp == 'or' or disp == 'slash')) or
not (abbr == 'on' or abbr == inout or abbr == 'mos')
local want_link = (parms.lk == 'on' or parms.lk == inout)
local mid = parms.opt_flip and parms.mid or ''
local sep1 = ' '
local sep2 = ' '
if parms.opt_adjectival and want_name then
sep1 = '-'
sep2 = '-'
end
local do_spell = parms.opt_spell_out
parms.opt_spell_out = nil -- so the call to cvtround does not spell the value
local function make_result(info, isfirst)
local fmt, outvalue, sign
local results = {}
for i = 1, #combos do
local tfrac, thisvalue, strforce
local out_current = combos[i]
out_current.inout = inout
local scale = multiple[i]
if i == 1 then -- least significant unit ('in' from 'ftin')
local decimals
out_current.frac = out_unit_table.frac
local success, outinfo = cvtround(parms, info, in_unit_table, out_current)
if not success then return false, outinfo end
if isfirst then
out_unit_table.valinfo = { outinfo } -- in case output value of first least significant unit is needed
end
sign = outinfo.sign
tfrac = outinfo.fraction_table
if outinfo.is_scientific then
strforce = outinfo.show
decimals = ''
elseif tfrac then
decimals = ''
else
local show = outinfo.show -- number as a string in local language
local p1, p2 = show:find(numdot, 1, true)
decimals = p1 and show:sub(p2 + 1) or '' -- text after numdot, if any
end
fmt = '%.' .. ulen(decimals) .. 'f' -- to reproduce precision
if decimals == '' then
if tfrac then
outvalue = floor(outinfo.raw_absvalue) -- integer part only; fraction added later
else
outvalue = floor(outinfo.raw_absvalue + 0.5) -- keep all integer digits of least significant unit
end
else
outvalue = outinfo.absvalue
end
end
if scale then
outvalue, thisvalue = divide(outvalue, scale)
else
thisvalue = outvalue
end
local id
if want_name then
if varname then
local clean
if strforce or tfrac then
clean = '.1' -- dummy value to force name for floating point
else
clean = format(fmt, thisvalue)
end
id = variable_name(clean, out_current)
else
local key = 'name2'
if parms.opt_adjectival then
key = 'name1'
elseif tfrac then
if thisvalue == 0 then
key = 'name1'
end
elseif parms.opt_singular then
if 0 < thisvalue and thisvalue < 1.0001 then
key = 'name1'
end
else
if thisvalue == 1 then
key = 'name1'
end
end
id = out_current[key]
end
else
id = out_current['symbol']
end
if i == 1 and omit_separator(id) then
-- Testing the id of the least significant unit should be sufficient.
sep1 = ''
sep2 = ''
end
if want_link then
local link = out_current.link
if link then
id = make_link(link, id, out_current)
end
end
local strval
local spell_inout = (i == #combos or outvalue == 0) and inout or '' -- trick so the last value processed (first displayed) has uppercase, if requested
if strforce and outvalue == 0 then
sign = '' -- any sign is in strforce
strval = strforce -- show small values in scientific notation; will only use least significant unit
elseif tfrac then
local wholestr = (thisvalue > 0) and tostring(thisvalue) or nil
strval = format_fraction(parms, spell_inout, false, wholestr, tfrac.numstr, tfrac.denstr, do_spell)
else
strval = (thisvalue == 0) and from_en('0') or with_separator(parms, format(fmt, thisvalue))
if do_spell then
strval = spell_number(parms, spell_inout, strval) or strval
end
end
table.insert(results, strval .. sep1 .. id)
if outvalue == 0 then
break
end
fmt = '%.0f' -- only least significant unit can have a non-integral value
end
local reversed, count = {}, #results
for i = 1, count do
reversed[i] = results[count + 1 - i]
end
return true, sign .. table.concat(reversed, sep2)
end
local valinfo = in_unit_table.valinfo
local success, result = make_result(valinfo[1], true)
if not success then return false, result end
local range = parms.range
if range then
for i = 1, range.n do
local success, result2 = make_result(valinfo[i+1])
if not success then return false, result2 end
result = range_text(range[i], want_name, parms, result, result2, inout, {spaced=true})
end
end
return true, result .. mid
end
local function process(parms, in_unit_table, out_unit_table)
-- Return true, s, outunit where s = final wikitext result,
-- or return false, t where t is an error message table.
linked_pages = {}
local success, bad_output
local bad_input_mcode = in_unit_table.bad_mcode -- nil if input unit is a valid convert unit
local out_unit = parms.out_unit
if out_unit == nil or out_unit == '' or type(out_unit) == 'function' then
if bad_input_mcode or parms.opt_input_unit_only then
bad_output = ''
else
local getdef = type(out_unit) == 'function' and out_unit or get_default
success, out_unit = getdef(in_unit_table.valinfo[1].value, in_unit_table)
parms.out_unit = out_unit
if not success then
bad_output = out_unit
end
end
end
if not bad_output and not out_unit_table then
success, out_unit_table = lookup(parms, out_unit, 'any_combination')
if success then
local mismatch = check_mismatch(in_unit_table, out_unit_table)
if mismatch then
bad_output = mismatch
end
else
bad_output = out_unit_table
end
end
local lhs, rhs
local flipped = parms.opt_flip and not bad_input_mcode
if bad_output then
rhs = (bad_output == '') and '' or message(parms, bad_output)
elseif parms.opt_input_unit_only then
rhs = ''
else
local combos -- nil (for 'ft' or 'ftin'), or table of unit tables (for 'm ft')
if not out_unit_table.multiple then -- nil/false ('ft' or 'm ft'), or table of factors ('ftin')
combos = out_unit_table.combination
end
local frac = parms.frac -- nil or denominator of fraction for output values
if frac then
-- Apply fraction to the unit (if only one), or to non-SI units (if a combination),
-- except that if a precision is also specified, the fraction only applies to
-- the hand unit; that allows the following result:
-- {{convert|156|cm|in hand|1|frac=2}} → 156 centimetres (61.4 in; 15.1½ hands)
-- However, the following is handled elsewhere as a special case:
-- {{convert|156|cm|hand in|1|frac=2}} → 156 centimetres (15.1½ hands; 61½ in)
if combos then
local precision = parms.precision
for _, unit in ipairs(combos) do
if unit.builtin == 'hand' or (not precision and not unit.prefixes) then
unit.frac = frac
end
end
else
out_unit_table.frac = frac
end
end
local outputs = {}
local imax = combos and #combos or 1 -- 1 (single unit) or number of unit tables
if imax == 1 then
parms.opt_order_out = nil -- only useful with an output combination
end
if not flipped and not parms.opt_order_out then
-- Process left side first so any duplicate links (from lk=on) are suppressed
-- on right. Example: {{convert|28|e9pc|e9ly|abbr=off|lk=on}}
lhs = process_input(parms, in_unit_table)
end
for i = 1, imax do
local success, item
local out_current = combos and combos[i] or out_unit_table
out_current.inout = 'out'
if i == 1 then
if imax > 1 and out_current.builtin == 'hand' then
out_current.out_next = combos[2] -- built-in hand can influence next unit in a combination
end
if parms.opt_order_out then
out_current.inout = 'in'
end
end
if out_current.multiple then
success, item = make_output_multiple(parms, in_unit_table, out_current)
else
success, item = make_output_single(parms, in_unit_table, out_current)
end
if not success then return false, item end
outputs[i] = item
end
if parms.opt_order_out then
lhs = outputs[1]
table.remove(outputs, 1)
end
local sep = parms.table_joins and parms.table_joins[2] or parms.join_between
rhs = table.concat(outputs, sep)
end
if flipped or not lhs then
local input = process_input(parms, in_unit_table)
if flipped then
lhs = rhs
rhs = input
else
lhs = input
end
end
if parms.join_before then
lhs = parms.join_before .. lhs
end
local wikitext
if bad_input_mcode then
if bad_input_mcode == '' then
wikitext = lhs
else
wikitext = lhs .. message(parms, bad_input_mcode)
end
elseif parms.table_joins then
wikitext = parms.table_joins[1] .. lhs .. parms.table_joins[2] .. rhs
else
wikitext = lhs .. parms.joins[1] .. rhs .. parms.joins[2]
end
if parms.warnings and not bad_input_mcode then
wikitext = wikitext .. parms.warnings
end
return true, get_styles(parms) .. wikitext, out_unit_table
end
local function main_convert(frame)
-- Do convert, and if needed, do it again with higher default precision.
local parms = { frame = frame } -- will hold template arguments, after translation
set_config(frame.args)
local success, result = get_parms(parms, frame:getParent().args)
if success then
if type(result) ~= 'table' then
return tostring(result)
end
local in_unit_table = result
local out_unit_table
for _ = 1, 2 do -- use counter so cannot get stuck repeating convert
success, result, out_unit_table = process(parms, in_unit_table, out_unit_table)
if success and parms.do_convert_again then
parms.do_convert_again = false
else
break
end
end
end
-- If input=x gives a problem, the result should be just the user input
-- (if x is a property like P123 it has been replaced with '').
-- An unknown input unit would display the input and an error message
-- with success == true at this point.
-- Also, can have success == false with a message that outputs an empty string.
if parms.input_text then
if success and not parms.have_problem then
return result
end
local cat
if parms.tracking then
-- Add a tracking category using the given text as the category sort key.
-- There is currently only one type of tracking, but in principle multiple
-- items could be tracked, using different sort keys for convenience.
cat = wanted_category('tracking', parms.tracking)
end
return parms.input_text .. (cat or '')
end
return success and result or message(parms, result)
end
local function _unit(unitcode, options)
-- Helper function for Module:Val to look up a unit.
-- Parameter unitcode must be a string to identify the wanted unit.
-- Parameter options must be nil or a table with optional fields:
-- value = number (for sort key; default value is 1)
-- scaled_top = nil for a normal unit, or a number for a unit which is
-- the denominator of a per unit (for sort key)
-- si = { 'symbol', 'link' }
-- (a table with two strings) to make an SI unit
-- that will be used for the look up
-- link = true if result should be [[linked]]
-- sort = 'on' or 'debug' if result should include a sort key in a
-- span element ('debug' makes the key visible)
-- name = true for the name of the unit instead of the symbol
-- us = true for the US spelling of the unit, if any
-- Return nil if unitcode is not a non-empty string.
-- Otherwise return a table with fields:
-- text = requested symbol or name of unit, optionally linked
-- scaled_value = input value adjusted by unit scale; used for sort key
-- sortspan = span element with sort key like that provided by {{ntsh}},
-- calculated from the result of converting value
-- to a base unit with scale 1.
-- unknown = true if the unitcode was not known
unitcode = strip(unitcode)
if unitcode == nil or unitcode == '' then
return nil
end
set_config({})
linked_pages = {}
options = options or {}
local parms = {
abbr = options.name and 'off' or 'on',
lk = options.link and 'on' or nil,
opt_sp_us = options.us and true or nil,
opt_ignore_error = true, -- do not add pages using this function to 'what links here' for Module:Convert/extra
opt_sortable_on = options.sort == 'on' or options.sort == 'debug',
opt_sortable_debug = options.sort == 'debug',
}
if options.si then
-- Make a dummy table of units (just one unit) for lookup to use.
-- This makes lookup recognize any SI prefix in the unitcode.
local symbol = options.si[1] or '?'
parms.unittable = { [symbol] = {
_name1 = symbol,
_name2 = symbol,
_symbol = symbol,
utype = symbol,
scale = symbol == 'g' and 0.001 or 1,
prefixes = 1,
default = symbol,
link = options.si[2],
}}
end
local success, unit_table = lookup(parms, unitcode, 'no_combination')
if not success then
unit_table = setmetatable({
symbol = unitcode, name2 = unitcode, utype = unitcode,
scale = 1, default = '', defkey = '', linkey = '' }, unit_mt)
end
local value = tonumber(options.value) or 1
local clean = tostring(abs(value))
local info = {
value = value,
altvalue = value,
singular = (clean == '1'),
clean = clean,
show = clean,
}
unit_table.inout = 'in'
unit_table.valinfo = { info }
local sortspan, scaled_value
if options.sort then
sortspan, scaled_value = make_table_or_sort(parms, value, info, unit_table, options.scaled_top)
end
return {
text = make_id(parms, 1, unit_table),
sortspan = sortspan,
scaled_value = scaled_value,
unknown = not success and true or nil,
}
end
return { convert = main_convert, _unit = _unit }
cac541bea61c5fbbcb0a2768343935e97587b60a
Template:Infobox political party/doc
10
1531
2866
2023-05-10T17:03:29Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!--Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]])-->
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Auto short description}}
{{lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
==Usage==
===Basic===
{{Parameter names example
|name
|logo
|logo_alt
|colorcode=red
|leader
|president
|chairperson
|secretary
|general_secretary
|first_secretary
|secretary_general
|presidium
|governing_body
|standing_committee
|spokesperson
|founder
|founded
|headquarters
|ideology
|international
|website
|country
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox political party
| name =
| logo =
| logo_alt =
| colorcode = <!-- HTML color code (e.g. "red", "#FF0000" or Party metadata color template) otherwise "transparent" -->
| leader =
| president =
| chairperson =
| secretary =
| general_secretary =
| first_secretary =
| secretary_general =
| presidium =
| governing_body =
| standing_committee =
| spokesperson =
| founder =
| founded = <!-- {{start date|YYYY|MM|DD}} -->
| headquarters =
| ideology =
| international =
| website =
| country =
}}
</syntaxhighlight>
{{clear right}}
===Full===
{{Parameter names example
|name |native_name
|native_name_lang |lang1 |name_lang1 |lang2 |name_lang2 |lang3 |name_lang3 |lang4 |name_lang4 |logo |logo_size |logo_upright |logo_alt |caption |colorcode=red |abbreviation={{{abbreviation}}} or {{{abbr}}} |leader |president |chairperson={{{chairperson}}} or {{{chairman}}} |general_secretary |first_secretary |secretary_general |presidium |governing_body |standing_committee |secretary |spokesperson={{{spokesperson}}} or {{{spokesman}}}
|leader1_title |leader1_name |leader2_title |leader2_name |leader3_title |leader3_name |leader4_title |leader4_name |leader5_title |leader5_name
|founder={{{founder}}} or {{{founders}}} |founded={{{founded}}} or {{{foundation}}} |registered |legalised={{{legalised}}} or {{{legalized}}} |dissolved={{{dissolved}}} or {{{banned}}} or {{{dissolution}}} |merger |split |predecessor |merged |successor |headquarters |newspaper |think_tank |student_wing |youth_wing |womens_wing |lgbt_wing |wing1_title |wing1 |wing2_title |wing2 |wing3_title |wing3 |wing4_title |wing4
|membership_year=[''year''] |membership |ideology |position |religion |national |regional |european |continental |international |europarl |affiliation1_title |affiliation1 |affiliation2_title |affiliation2 |colors={{{colors}}} or {{{colours}}} |slogan |anthem
|blank1_title |blank1 |blank2_title |blank2 |blank3_title |blank3 |blank4_title |blank4
|seats1_title |seats1 |seats2_title |seats2 |seats3_title |seats3 |seats4_title |seats4
|symbol |flag |flag_title |flag_alt |website |country |country2 |footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox political party
| name =
| native_name =
| native_name_lang =
| lang1 =
| name_lang1 =
| lang2 =
| name_lang2 =
| lang3 =
| name_lang3 =
| lang4 =
| name_lang4 =
| logo =
| logo_size =
| logo_upright =
| logo_alt =
| caption =
| colorcode = <!-- HTML color code (e.g. "red", "#FF0000" or Party metadata color template) otherwise "transparent" -->
| abbreviation = <!-- official abbreviation or | abbr = -->
| leader =
| president =
| chairperson = <!-- or | chairman = -->
| secretary =
| general_secretary =
| first_secretary =
| secretary_general =
| presidium =
| governing_body =
| standing_committee =
| spokesperson = <!-- or | spokesman = -->
| leader1_title =
| leader1_name =
| leader2_title =
| leader2_name =
| leader3_title =
| leader3_name =
| leader4_title =
| leader4_name =
| leader5_title =
| leader5_name =
| founder = <!-- or | founders = -->
| founded = <!-- or | foundation = use {{start date|YYYY|MM|DD}} -->
| registered =
| legalised = <!-- or | legalized = -->
| dissolved = <!-- or | banned = or | dissolution = use {{end date|YYYY|MM|DD}} -->
| merger =
| split =
| predecessor =
| merged =
| successor =
| headquarters =
| newspaper =
| think_tank =
| student_wing =
| youth_wing =
| womens_wing =
| wing1_title =
| wing1 =
| wing2_title =
| wing2 =
| wing3_title =
| wing3 =
| wing4_title =
| wing4 =
| membership_year =
| membership =
| ideology =
| position =
| religion =
| national =
| regional = <!-- or | regional affiliation = -->
| european =
| continental = <!-- or | continental affiliation = -->
| international =
| europarl =
| affiliation1_title =
| affiliation1 =
| affiliation2_title =
| affiliation2 =
| colors = <!-- or | colours = ; use based on [[WP:ENGVAR]]-->
| slogan =
| anthem =
| blank1_title =
| blank1 =
| blank2_title =
| blank2 =
| blank3_title =
| blank3 =
| blank4_title =
| blank4 =
| seats1_title =
| seats1 = <!-- {{Infobox political party/seats|50|100|hex=#ff0000}} -->
| seats2_title =
| seats2 =
| seats3_title =
| seats3 =
| seats4_title = <!-- up to | seats11_title = -->
| seats4 = <!-- up to | seats11 = -->
| symbol =
| flag =
| flag_title =
| flag_alt =
| website =
| state = <!-- or | country = -->
| country = <!-- or | state = -->
| country_dab1 =
| parties_dab1 =
| elections_dab1 =
| country2 =
| country_dab2 =
| parties_dab2 =
| elections_dab2 =
| footnotes =
}}
</syntaxhighlight>
{{clear right}}
==Microformat==
{{UF-hcard-org}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "An infobox for a political party. Used to briefly summarize information about a party at the top of the article. ",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"name": {
"label": "Name",
"description": "The name of the party",
"type": "string"
},
"logo": {
"label": "Logo",
"description": "The logo of the party",
"type": "string"
},
"logo_size": {
"label": "Logo size",
"description": "Size of logo image",
"type": "string"
},
"colorcode": {
"label": "Color code",
"description": "The color to be used for infobox accents. HTML color code (e.g. red, #FF0000 or Party metadata color template) or transparent for no coloring.",
"type": "string"
},
"leader": {
"label": "Leader",
"description": "The leader of the party",
"type": "string"
},
"president": {
"label": "President",
"description": "The president of the party",
"type": "string"
},
"chairperson": {
"label": "Chairperson",
"description": "The chairperson of the party",
"type": "string",
"aliases": [
"chairman"
]
},
"secretary": {
"label": "Secretary",
"description": "The secretary of the party",
"type": "string"
},
"general_secretary": {
"label": "General secretary",
"description": "The general secretary of the party",
"type": "string"
},
"first_secretary": {
"label": "First secretary",
"description": "The first secretary of the party",
"type": "string"
},
"secretary_general": {
"label": "Secretary-general",
"description": "The secretary-general of the party",
"type": "string"
},
"presidium": {
"label": "Presidium",
"description": "The presidium of the party",
"type": "string"
},
"spokesperson": {
"label": "Spokesperson",
"description": "The spokesperson of the party",
"type": "string",
"aliases": [
"spokesman"
]
},
"foundation": {
"label": "Foundation",
"description": "The foundation date of the party. Insert as {{Start date|YYYY|MM|DD}}.",
"type": "string",
"aliases": [
"founded"
]
},
"ideology": {
"label": "Ideology",
"description": "The ideology of the party",
"type": "string"
},
"headquarters": {
"label": "Headquarters",
"description": "The headquarters of the party",
"type": "string"
},
"international": {
"label": "International",
"description": "The party’s international affiliation(s)",
"type": "string"
},
"website": {
"label": "Website",
"description": "The website of the party",
"type": "string"
},
"registered": {
"label": "Registered",
"description": "The registration number of party; if unregistered, then write NO.",
"type": "string"
},
"country": {
"label": "Country",
"description": "The country of the party",
"type": "string",
"aliases": [
"state"
]
},
"abbreviation": {
"aliases": [
"abbr"
]
},
"founder": {
"aliases": [
"founders"
]
},
"legalised": {
"aliases": [
"legalized"
]
},
"dissolved": {
"aliases": [
"banned",
"dissolution"
]
},
"colors": {
"description": "The official colors of the party, independent of infobox usage",
"aliases": [
"colours"
]
},
"native_name": {
"label": "Native name",
"description": "The native name of the party",
"type": "string"
},
"native_name_lang": {
"label": "Native name language code",
"description": "The ISO-639 language code of the native name of the party",
"example": "fr",
"type": "string"
},
"governing_body": {},
"standing_committee": {},
"merger": {},
"split": {
"label": "Split from",
"description": "Party or organisation the party was split from",
"type": "string"
},
"predecessor": {},
"merged": {},
"successor": {},
"newspaper": {},
"think_tank": {
"aliases": [
"think tank"
]
},
"student_wing": {},
"youth_wing": {},
"womens_wing": {},
"membership": {},
"membership_year": {},
"position": {},
"religion": {},
"national": {},
"regional": {
"aliases": [
"regional affiliation"
]
},
"european": {},
"continental": {
"aliases": [
"continental affiliation"
]
},
"europarl": {},
"slogan": {},
"anthem": {},
"symbol": {},
"flag": {
"aliases": [
"flag_title"
]
},
"flag_alt": {},
"country2": {},
"footnotes": {},
"logo_upright": {},
"logo_alt": {}
},
"paramOrder": [
"name",
"native_name",
"logo",
"logo_size",
"colorcode",
"leader",
"president",
"chairperson",
"secretary",
"general_secretary",
"first_secretary",
"secretary_general",
"presidium",
"spokesperson",
"foundation",
"ideology",
"headquarters",
"international",
"website",
"registered",
"country",
"abbreviation",
"founder",
"legalised",
"dissolved",
"colors",
"native_name_lang",
"governing_body",
"standing_committee",
"merger",
"split",
"predecessor",
"merged",
"successor",
"newspaper",
"think_tank",
"student_wing",
"youth_wing",
"womens_wing",
"membership",
"membership_year",
"position",
"religion",
"national",
"regional",
"european",
"continental",
"europarl",
"slogan",
"anthem",
"symbol",
"flag",
"flag_alt",
"country2",
"footnotes",
"logo_upright",
"logo_alt"
]
}
</templatedata>
== Tracking categories ==
* {{clc|Pages using infobox political party with unknown parameters}}
== See also ==
* {{tl|Composition bar}}, used to display a statistic, such as the number of seats held by a political party.
{{Organization infoboxes}}
<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Organization infobox templates|Political Party]]
[[Category:Political party infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
b246a618822a8e4debea143592790494f2f156b3
Template:Infobox Australian place
10
1143
2469
2023-05-11T07:59:46Z
w>Fayenatic london
0
Update another link after [[wikipedia:Categories_for_discussion/Log/2023_April_26%23Category:Victoria_(Australia)]]
wikitext
text/x-wiki
{{main other|{{#if:{{Has short description}} |<!--Do nothing--> |{{short description|{{{short description|{{ #switch: {{lc:{{{type|}}}}}
|city = City in
|town = Town in
|suburb = {{#invoke:Plain text|main|Suburb {{#if:{{{city|}}}|of {{{city|}}},|{{#if:{{{lga|}}}|of {{{lga|}}},|in}}}}}}
|lga = Local government area in
|region = Region in
|cadastral = Cadastral in
|protected = Protected area in
|Place in
}} {{ #switch: {{lc:{{{state|}}} }}
|sa = South Australia
|vic = Victoria, Australia
|nsw = New South Wales, Australia
|qld = Queensland, Australia
|nt = the Northern Territory, Australia
|wa = Western Australia
|tas = Tasmania, Australia
|act = Australian Capital Territory
|jbt = the Jervis Bay Territory, Australia
|ni = Norfolk Island, Australia
|au = Australia
|Australia
}}}}}|noreplace}}}}}}{{#invoke:infobox|infoboxTemplate
| bodyclass = vcard
| abovestyle = font-size: 125%; line-height: 1.3em; {{ #switch: {{lc:{{{type|}}} }}
|city = background-color:#f9f6d2;
|town = background-color:#e9f9d2;
|suburb = background-color:#f9e2d2;
|lga = background-color:#d2d5f9;
|region = background-color:#e6c4fb;
|cadastral = background-color:#ffffe0;
|protected = background-color:transparent;
|other = background-color:transparent;
| background-color: #ccc;
}}
| above = {{#if:{{{name|}}}|<span class="fn org locality">{{{name}}}</span><br />{{#if:{{{native_name|}}}|
<div style="font-weight:normal;font-size:88%" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}<span style="font-weight:normal; font-size:88%" class="region">{{#if: {{{city|}}}|{{auto link|{{{city|}}}}}, }}{{ #switch: {{lc:{{{state|error}}} }}
|sa = [[South Australia]]
|vic = [[Victoria (state)|Victoria]]
|nsw = [[New South Wales]]
|qld = [[Queensland]]
|nt = [[Northern Territory]]
|wa = [[Western Australia]]
|tas = [[Tasmania]]
|act = [[Australian Capital Territory]]
|jbt = [[Jervis Bay Territory]]
|ni = [[Norfolk Island]]
|au = Australia
|error = {{error|Error: <code>{{!}}state{{=}}</code> not defined ([[Template:Infobox Australian place#state|help]])}}
|{{error|Error: unknown <code>{{!}}state{{=}}</code> value ([[Template:Infobox Australian place#state|help]])}} <!--Tracking category: --> {{main other|[[Category:Australian place articles using missing parameters|S]]}}
}}</span>}}
| aboveclass = adr
| subheaderstyle = font-size: 100%;
| subheader1 = {{#ifeq:{{{type|}}}|protected|{{IUCN banner|{{{iucn_category|}}}|{{{iucn_ref|}}} }} }}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|{{{imagesize|}}}}}}|sizedefault=frameless|upright={{{image_upright|1.23}}}|alt={{{image_alt|{{{alt|}}}}}}}}
| imagestyle =
| caption = {{{caption|}}}
| captionstyle =
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|size={{{image2_size|{{{image2size|}}}}}}|sizedefault=frameless|upright={{{image2_upright|1.23}}}|alt={{{image2_alt|{{{alt2|}}}}}}}}
| caption2 = {{{caption2|}}}
| headerstyle = background-color:#ddf;
| labelstyle = width:40%; {{ #switch: {{lc:{{{type|}}} }}
|city = background-color:#f9f6d2;
|town = background-color:#e9f9d2;
|suburb = background-color:#f9e2d2;
|lga = background-color:#d2d5f9;
|region = background-color:#e6c4fb;
|cadastral = background-color:#ffffe0;
|protected = background-color:transparent;
|other = background-color:transparent;
|background-color:#ccc;
}}
| datastyle =
| data1 = {{#invoke:Australian place map|main}}
| data2 = {{#if:{{{local_map|}}}|{{Infobox mapframe|zoom={{{zoom|}}}|id={{{local_map_id|}}}}}}}
| label3 = <span style="white-space: nowrap">Nearest town or city</span>
| data3 = {{#ifeq:{{{type|}}}|protected|{{auto link|{{{nearest_town_or_city|}}}}} }}
| label4 = [[Geographic coordinate system|Coordinates]]
| data4 = {{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:{{#ifeq:{{{type|}}}|protected|landmark|city}}|region:{{ #switch: {{lc:{{{state|}}} }}
|sa = AU-SA
|vic = AU-VIC
|nsw = AU-NSW
|qld = AU-QLD
|nt = AU-NT
|wa = AU-WA
|tas = AU-TAS
|act = AU-ACT
|jbt = AU-JBT
|ni = NF
|#default = AU
}}}}{{{coord_ref|}}} }}
| label6 = Population
| data6 = {{#if:{{{pop|}}}
|{{#if: {{{pop2|}}}
|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>
}} {{#iferror:{{#expr:{{{pop}}}}}
|{{{pop}}}
|{{formatnum:{{replace|{{{pop}}}|,|}}}}
}}{{#if: {{{pop_year|}}}
| ({{{pop_year}}})
}}{{{pop_footnotes|}}}{{#if: {{{poprank|}}}
| ([[List of cities in Australia by population|{{{poprank}}}]])
}}{{#if: {{{pop2|}}}
|<li> {{formatnum:{{replace|{{{pop2}}}|,|}}}}{{#if: {{{pop2_year|}}}
| ({{{pop2_year}}})
}}{{{pop2_footnotes|}}}</ul>
}}
|{{#invoke:PopulationFromWikidata | ListForInfobox | type={{{type|}}} | wikidata={{{wikidata|}}} }}
}}
| label7 = • Density
| data7 = {{#if:{{{density|}}}
|{{formatnum:{{{density}}}}}/km<sup>2</sup> ({{convert|{{{density}}}|/km2|/sqmi|disp=number}}/sq mi) {{{density_footnotes|}}}
|{{#if:{{{pop|}}}|{{#if:{{{area|}}}|{{Pop density|{{formatnum:{{{pop|}}}|R}}|{{formatnum:{{{area|}}}|R}}|km2|sqmi}}}}}} {{{density_footnotes|}}}
}}
| label8 = Established
| data8 = {{{established|{{{est|}}}}}}{{#if:{{{established|{{{est|}}}}}}|{{{established_footnotes|}}}|}}
| label9 = Abolished
| data9 = {{{abolished|}}}
| label10 = [[Gazetteer of Australia|Gazetted]]
| data10 = {{{gazetted|}}}
| label11 = [[Postcodes in Australia|Postcode(s)]]
| data11 = {{{postcode|}}}
| label12 = Elevation
| data12 = {{#if:{{{elevation|}}}|{{convert|{{{elevation}}}|m|ft|0|abbr=on}}{{{elevation_footnotes|}}} }}
| label13 = Area
| data13 = {{#if:{{{area|}}}|{{#iferror:{{#expr:{{{area}}}}}|{{{area|}}}|{{formatnum:{{{area}}}}} km<sup>2</sup> ({{rnd|{{{area}}}/2.589988110336|1}} sq mi)}}{{{area_footnotes|}}} }}
| label14 = [[Time in Australia|Time zone]]
| data14 = {{#if:{{{timezone|}}}|{{{timezone}}} ([[UTC{{{utc|}}}]]) }}
| label15 = • Summer ([[Daylight saving time|DST]])
| data15 = {{#if:{{{timezone-dst|}}}|{{{timezone-dst}}} ([[UTC{{{utc-dst|}}}]]) }}
| label16 = {{#if:{{{mayortitle|}}}|{{{mayortitle|}}}|Mayor}}
| data16 = {{#ifeq:{{{type|}}}|lga|{{{mayor|}}} }}
| label17 = Location
| data17 = {{#if:{{{dist1|}}}|{{#if:{{{dist2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{formatnum:{{{dist1}}}}} km ({{rnd|{{{dist1}}}/1.609344|0}} mi) {{#if: {{{dir1|}}}|{{{dir1}}} of|from}} {{auto link|{{{location1}}}}} {{#if: {{{dist2|}}}|<li> {{formatnum:{{{dist2}}}}} km ({{rnd|{{{dist2}}}/1.609344|0}} mi) {{#if: {{{dir2|}}}|{{{dir2}}} of|from}} {{auto link|{{{location2}}}}}}} {{#if: {{{dist3|}}}|<li> {{formatnum:{{{dist3}}}}} km ({{rnd|{{{dist3}}}/1.609344|0}} mi) {{#if: {{{dir3|}}}|{{{dir3}}} of|from}} {{auto link|{{{location3}}}}}}} {{#if: {{{dist4|}}}|<li> {{formatnum:{{{dist4}}}}} km ({{rnd|{{{dist4}}}/1.609344|0}} mi) {{#if: {{{dir4|}}}|{{{dir4}}} of|from}} {{auto link|{{{location4}}}}}}} {{#if: {{{dist5|}}}|<li> {{formatnum:{{{dist5}}}}} km ({{rnd|{{{dist5}}}/1.609344|0}} mi) {{#if: {{{dir5|}}}|{{{dir5}}} of|from}} {{auto link|{{{location5}}}}}}} {{#if: {{{dist2|}}}|</ul> }}}}
| label18 = {{ #switch: {{lc:{{{state|}}}}}
|sa = [[Local government areas of South Australia|LGA(s)]]
|vic = [[Local government in Victoria|LGA(s)]]
|nsw = [[Local government areas of New South Wales|LGA(s)]]
|qld = [[local government areas of Queensland|LGA(s)]]
|nt = [[Local government areas of the Northern Territory|LGA(s)]]
|wa = [[Local government areas of Western Australia|LGA(s)]]
|tas = [[Local government areas of Tasmania|LGA(s)]]
|act = District
|[[Local government in Australia|LGA(s)]]
}}
| data18 = {{#if:{{{lga|}}}|{{#if: {{{lga2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{auto link|{{{lga}}}}}{{#if: {{{lga2|}}}|<li> {{auto link|{{{lga2}}}}}}}{{#if: {{{lga3|}}}|<li> {{auto link|{{{lga3}}}}}}}{{#if: {{{lga4|}}}|<li> {{auto link|{{{lga4}}}}}}}{{#if: {{{lga5|}}}|<li> {{auto link|{{{lga5}}}}}}}{{#if: {{{lga2|}}}|</ul> }}}}
| label19 = Council seat
| data19 = {{{seat|}}}
| label20 = [[List of regions of Australia|Region]]
| data20 = {{#if:{{{region|}}}|{{auto link|{{{region}}}}} }}
| label21 = [[Lands administrative divisions of Australia|County]]
| data21 = {{#if:{{{county|}}}|{{auto link|{{{county}}}}} }}
| label22 = [[Parish (administrative division)|Parish]]
| data22 = {{{parish|}}}
| label23 = {{#ifeq:{{{type|}}}|cadastral|[[Hundred (county division)|Hundred]]}}
| data23 = {{#ifeq:{{{type|}}}|cadastral|{{{hundred|}}} }}
| label24 = {{#ifeq:{{{type|}}}|cadastral|[[Hundred (county division)|Hundred (former)]]}}
| data24 = {{#ifeq:{{{type|}}}|cadastral|{{{former_hundred|}}} }}
| label25 = {{#ifeq:{{{type|}}}|cadastral|[[Lands administrative divisions of New South Wales|Division]]}}
| data25 = {{#ifeq:{{{type|}}}|cadastral|{{{division|}}} }}
| label26 = [[Electorates of the Australian states and territories|{{#switch:{{lc:{{{state}}}}}|act|nt|jbt= Territory|State}} electorate(s)]]
| data26 = {{#if:{{{stategov|}}}|{{#if: {{{stategov2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{{stategov}}}{{#if: {{{stategov2|}}}|<li> {{{stategov2}}}}}{{#if: {{{stategov3|}}}|<li> {{{stategov3}}}}}{{#if: {{{stategov4|}}}|<li> {{{stategov4}}}}}{{#if: {{{stategov5|}}}|<li> {{{stategov5}}}}}{{#if: {{{stategov2|}}}|</ul> }}}}
| label27 = [[Divisions of the Australian House of Representatives|Federal division(s)]]
| data27 = {{#if:{{{fedgov|}}}|{{#if: {{{fedgov2|}}}|<ul style="margin-top: 0px; margin-bottom: 0px;"><li>}} {{{fedgov}}}{{#if: {{{fedgov2|}}}|<li> {{{fedgov2}}}}}{{#if: {{{fedgov3|}}}|<li> {{{fedgov3}}}}}{{#if: {{{fedgov4|}}}|<li> {{{fedgov4}}}}}{{#if: {{{fedgov2|}}}|</ul> }}}}
| data28 = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logosize|}}}|sizedefault=frameless|upright={{{logo_upright|0.8}}}|alt={{{logo_alt|{{{alt|}}}}}}}}
| label29 = Visitation
| data29 = {{#ifeq:{{{type|}}}|protected|{{formatnum:{{{visitation_num|}}}}}{{#if: {{{visitation_year|}}}| (in {{{visitation_year|}}}){{#if: {{{visitation_footnotes|}}}|{{{visitation_footnotes|}}}}}}} }}
| label30 = <span style="white-space: nowrap">Managing authorities</span>
| data30 = {{#ifeq:{{{type|}}}|protected|{{auto link|{{{managing_authorities|}}}}} }}
| label31 = Website
| data31 = {{#if:{{{url|}}}|{{#invoke:URL|url|1={{{url|}}}|2={{{name|}}}}} }}
| data32 = {{#if:{{{maxtemp|}}}{{{mintemp|}}}{{{rainfall|}}}|<table cellpadding=4 cellspacing=0 style="width:100%; border: 1px #ddd solid;">
<tr class=mergedrow>
<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">'''Mean max temp'''{{{maxtemp_footnotes|}}}</td>
<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:34%;">'''Mean min temp'''{{{mintemp_footnotes|}}}</td>
<td style="background-color:#f0f0ff;border: 1px #FFF solid; text-align:center; width:33%;">'''Annual rainfall'''{{{rainfall_footnotes|}}}</td>
</tr>
<tr style="border: 1px #FFF solid" class=mergedrow>
<td style="padding: 2px 0px; text-align:center; width:33%;"> {{#if: {{{maxtemp|}}}|
{{{maxtemp}}} °C <br />{{ #expr: {{{maxtemp}}} * 1.8 + 32 round 0}} °F | ? }}</td>
<td style="padding: 2px 0px; text-align:center; width:34%;">{{#if: {{{mintemp|}}}|
{{{mintemp}}} °C <br />{{ #expr: {{{mintemp}}} * 1.8 + 32 round 0}} °F | ?}}</td>
<td style="padding: 2px 0px; text-align:center; width:33%;">{{#if: {{{rainfall|}}}|
{{formatnum:{{{rainfall}}}}} mm <br />{{ #expr: {{{rainfall}}} * 0.03937 round 1}} in | ? }}</td>
</tr></td></table> }}
| data33 = {{#if:{{{near|}}}{{{near-nw|}}}{{{near-n|}}}{{{near-ne|}}}{{{near-w|}}}{{{near-e|}}}{{{near-sw|}}}{{{near-se|}}}{{{near-s|}}}|<table cellpadding=4 cellspacing=3 style="width:100%; border: 1px #ddd solid;">
<tr class=mergedrow><td colspan=3 style="background-color:#f0f0ff;padding: 2px 0px; text-align:center;">'''{{ #switch: {{lc:{{{type|}}}}}
| cadastral = [[Lands administrative divisions of Australia|Lands administrative divisions]]
| lga = [[Local government in Australia|LGAs]]
| suburb = {{#if:{{{city|}}}|{{#ifexist:List of {{{city}}} suburbs| [[List of {{{city}}} suburbs|Suburbs]] | {{ #ifexist:Category:Suburbs of the City of {{{city}}}| [[:Category:Suburbs of the City of {{{city}}}|Suburbs]] |{{ #ifexist:Category:Suburbs of {{{city}}}| [[:Category:Suburbs of {{{city}}}|Suburbs]]| Suburbs }}}}}}|Suburbs}}
| Localities}} around {{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}:'''</td></tr>
<tr class=mergedrow>
<td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-nw|}}}</td>
<td style="text-align:center; padding: 3px 0px; width:34%;">{{{near-n|}}}</td>
<td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-ne|}}}</td>
</tr><tr class=mergedrow>
<td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:33%;">{{{near-w|}}}</td>
<td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:34%;font-weight:bold;">{{#if:{{{near|}}}|{{{near}}}|{{{name|}}}}}</td>
<td style="text-align:center; vertical-align: middle; padding: 3px 0px; width:33%;">{{{near-e|}}}</td>
</tr><tr class=mergedrow>
<td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-sw|}}}</td>
<td style="text-align:center; padding: 3px 0px; width:34%;">{{{near-s|}}}</td>
<td style="text-align:center; padding: 3px 0px; width:33%;">{{{near-se|}}}</td>
</tr></td></table> }}
| label34 = Footnotes
| data34 = {{{footnotes|}}}
| label35 = See also
| data35 = {{#ifeq:{{{type|}}}|protected|{{#if:{{both|{{{iucn_category|}}}|{{{state|}}}}}|{{ #switch: {{lc:{{{state|}}} }}
|sa = [[Protected areas of South Australia]]
|vic = [[Protected areas of Victoria]]
|nsw = [[Protected areas of New South Wales|Protected areas of<br />New South Wales]]
|qld = [[Protected areas of Queensland]]
|nt = [[Protected areas of the Northern Territory]]
|wa = [[List of protected areas of Western Australia|List of protected areas of<br />Western Australia]]
|tas = [[Protected areas of Tasmania]]
|act = [[List of Australian Capital Territory protected areas|Australian Capital Territory<br />protected areas]]
}} }} }}
| data36 = {{ #switch: {{lc:{{{type|error}}} }}
|city =
|town =
|suburb =
|lga =
|region =
|cadastral =
|protected =
|other =
|error = {{error|<includeonly>Error: <code>{{!}}type{{=}}</code> not defined ([[Template:Infobox Australian place#type|help]])</includeonly>}}|{{error|Error: unknown <code>{{!}}type{{=}}</code> value ([[Template:Infobox Australian place#type|help]])}}
}}
}}<!--
-->{{#if:{{{_noautocat|}}}|<!-- [[Category:Australian place articles using missing parameters|N]] -->|{{main other|{{#ifeq:{{{type|}}} | town | {{ #switch: {{lc:{{{state|}}}}}
|sa = [[Category:Towns in South Australia|{{{name}}}]]
|vic = [[Category:Towns in Victoria (state)|{{{name}}}]]
|nsw = [[Category:Towns in New South Wales|{{{name}}}]]
|qld = [[Category:Towns in Queensland|{{{name}}}]]
|nt = [[Category:Towns in the Northern Territory|{{{name}}}]]
|wa = [[Category:Towns in Western Australia|{{{name}}}]]
|tas = [[Category:Towns in Tasmania|{{{name}}}]]
|act = [[Category:Towns in the Australian Capital Territory|{{{name}}}]]
|ni = [[Category:Populated places in Norfolk Island|{{{name}}}]]
}} }}{{#ifeq:{{{type|}}} | suburb | {{#ifexist:Category:Suburbs of the City of {{{city}}}|[[Category:Suburbs of the City of {{{city}}}|{{{name}}}]]|{{#ifexist:Category:Suburbs of {{{city}}}|[[Category:Suburbs of {{{city}}}|{{{name}}}]]|{{ #switch: {{lc:{{{state|}}}}}
|sa = {{#ifexist:Category:Suburbs of {{{city}}}, South Australia|[[Category:Suburbs of {{{city}}}, South Australia|{{{name}}}]]}}
|vic = {{#ifexist:Category:Suburbs of {{{city}}}, Victoria|[[Category:Suburbs of {{{city}}}, Victoria|{{{name}}}]]}}
|nsw = {{#ifexist:Category:Suburbs of {{{city}}}, New South Wales|[[Category:Suburbs of {{{city}}}, New South Wales|{{{name}}}]]}}
|qld = {{#ifexist:Category:Suburbs of {{{city}}}, Queensland|[[Category:Suburbs of {{{city}}}, Queensland|{{{name}}}]]}}
|nt = {{#ifexist:Category:Suburbs of {{{city}}}, Northern Territory|[[Category:Suburbs of {{{city}}}, Northern Territory|{{{name}}}]]}}
|wa = {{#ifexist:Category:Suburbs of {{{city}}}, Western Australia|[[Category:Suburbs of {{{city}}}, Western Australia|{{{name}}}]]}}
|tas = {{#ifexist:Category:Suburbs of {{{city}}}, Tasmania|[[Category:Suburbs of {{{city}}}, Tasmania|{{{name}}}]]}}
|act = {{#ifexist:Category:Suburbs of {{{city}}}, ACT|[[Category:Suburbs of {{{city}}}, ACT|{{{name}}}]]}}
}} }} }} }} {{#if:{{{est|}}}|
{{#ifeq:{{{type|}}}|lga|{{#ifexist:Category:Populated places established in {{{est}}}|[[Category:Populated places established in {{{est}}} |{{{name}}}]]}}{{#ifexist:Category:Populated places established in the {{{est}}}|[[Category:Populated places established in the {{{est}}} |{{{name}}}]]}} {{#ifexist:Category:{{{est}}} establishments in Australia|[[Category:{{{est}}} establishments in Australia|{{{name}}}]]}}}}
}} }} }}<!-- Start tracking
-->{{main other|{{#ifeq:{{{1|♠}}}|♠||[[Category:Australian place articles using missing parameters|{{#ifeq:{{{1|♠}}}|♠||1}}]]}}<!--
-->{{main other|{{#if:{{{type|}}}||[[Category:Australian place articles using missing parameters|U]]}}}}<!--
-->{{main other|{{#if:{{{state|}}}||[[Category:Australian place articles using missing parameters|S]]}}}}<!--
-->{{#if:{{{pop|}}}|{{#if:{{{pop_year|}}}||[[Category:Australian place articles with no population year]]}}}}<!--
-->{{#if:{{{pop2|}}}|{{#if:{{{pop2_year|}}}||[[Category:Australian place articles with no population year]]}}}}<!--
-->{{#if:{{{pop|}}}|{{#if:{{{pop_footnotes|}}}||[[Category:Australian place articles with no population footnotes]]}}}}<!--
-->{{#if:{{{pop2|}}}|{{#if:{{{pop2_footnotes|}}}||[[Category:Australian place articles with no population footnotes]]}}}}<!--
-->{{#if:{{{density|}}}||{{#if:{{{pop|}}}|{{#if:{{{area|}}}|{{#iferror:{{#expr:{{formatnum:{{{pop|}}}|R}}/{{formatnum:{{{area|}}}|R}}}}|[[Category:Australian place articles with density errors]]|}} }} }} }}
}}<!--
-->{{main other|{{#ifeq:{{{imagesize|♠}}}{{{image2size|♠}}}{{{imagesize2|♠}}}{{{image_alt2|♠}}}{{{logosize|♠}}}{{{official_site|♠}}}|♠♠♠♠♠♠||[[Category:Australian place articles using missing parameters|{{#ifeq:{{{imagesize|♠}}}{{{image2size|♠}}}{{{imagesize2|♠}}}{{{image_alt2|♠}}}|♠♠♠♠||I}}{{#ifeq:{{{logosize|♠}}}|♠||L}}{{#ifeq:{{{official_site|♠}}}|♠||O}}]]}}}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox Australian place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox Australian place]] with unknown parameter "_VALUE_"|ignoreblank=y| _noautocat
| abolished | alternative_location_map | area | area_footnotes
| caption | caption2 | city | coord_ref | coordinates | county
| density | density_footnotes | dir1 | dir2 | dir3 | dir4 | dir5 | dist1 | dist2 | dist3 | dist4 | dist5 | division
| elevation | elevation_footnotes | est | established | established_footnotes
| fedgov | fedgov2 | fedgov3 | fedgov4 | footnotes | force_national_map | former_hundred| gazetted | hundred
| image | image_alt | image_upright | image2 | image2_alt | image2_upright | iucn_category | iucn_ref
| lga | lga2 | lga3 | lga4 | lga5 | local_map | local_map_id | location1 | location2 | location3 | location4 | location5 | logo | logo_upright
| managing_authorities | map_alt | map_type | maxtemp | maxtemp_footnotes | mayor | mayortitle | mintemp | mintemp_footnotes
| name | native_name_lang | native_name | near | near-e | nearest_town_or_city | near-n | near-ne | near-nw | near-s | near-se | near-sw | near-w
| parish | pop | pop_footnotes | pop_year | pop2 | pop2_footnotes | pop2_year | poprank | postcode | pushpin_label_position | pushpin_map_caption
| rainfall | rainfall_footnotes | region | relief | seat | state | stategov | stategov2 | stategov3 | stategov4 | stategov5
| timezone | timezone-dst | type | url | use_lga_map | utc | utc-dst
| visitation_footnotes | visitation_num | visitation_year | wikidata | zoom }}{{main other|
{{#if:{{{coordinates|}}}
|{{#ifeq:{{lc:{{{type|}}} }}|lga
|{{#switch:{{lc:{{{map_type|}}} }}
|auto|={{#if:{{{alternative_location_map|}}}{{{force_national_map|}}}{{{use_lga_map|}}}|[[Category:Pages using infobox Australian place with lga type and location map]]|[[Category:Pages using infobox Australian place with an implicitly suppressed location map]]}}
|#default=[[Category:Pages using infobox Australian place with lga type and location map]]
}}
|{{#switch:{{lc:{{{map_type|}}} }}
|nomap = [[Category:Pages using infobox Australian place with an explicitly suppressed location map]]
}}
}}
}}
}}<!-- End tracking
--><noinclude>
{{Documentation}}
</noinclude>
8d8b284165488ee5193918a0c3e000cf55f1da14
Template:HTML lists
10
628
1416
2023-05-14T11:58:14Z
wikipedia>GhostInTheMachine
0
Change "other"
wikitext
text/x-wiki
{{navbox top
|name= HTML lists
|title=HTML lists
|state=<includeonly>collapsed</includeonly>
|above = More information: {{hlist
| [[Help:List]]
| [[WP:List dos and don'ts]]
| [[WP:Manual of Style/Embedded lists]]
| {{section link|WP:Manual of Style/Accessibility#Lists}}
| [[WP:WikiProject Lists]]
}}
}}
{|style="width:100%"
| style="vertical-align:top; width:32%" |
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|hlist}}}}
|-
| {{tlx|hlist |item1 |item2 |...}}
|-
|
{{hlist |item1 |item2 |...}}
|}
| rowspan=4 style="width:2%"|
| style="vertical-align:top; width:32%"|
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|flatlist}}}}
|-
| {{tlx|flatlist|<br />* item1<br />* item2<br />* ...}}
|-
|
{{flatlist|
* item1
* item2
* ...
}}
|}
| rowspan=4 style="width:2%" |
| style="vertical-align:top; width:32%"|
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|cslist}}}}
|-
| {{tlx|cslist |item1 |item2 |...}}
|-
|
{{cslist |item1 |item2 |...}}
|-
!style="font-weight: normal; text-align:center;" | {{mono|{{tl|bold list}}}}
|-
| {{tlx|bold list |item1 |item2 |...}}
|-
|
{{bold list |item1 |item2 |...}}
|}
|-
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Bulleted list
|-
| {{mono|{{tl|bulleted list}}}}
|-
| {{tlx|bulleted list |item1 |item2 |...}}
|-
|
{{bulleted list |item1 |item2 |...}}
|}
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Numeric ordered list
|-
| {{mono|{{tl|ordered list}}}}
|-
| {{tlx|Ordered list |first |second |...}}
|-
|
{{Ordered list |first |second |...}}
|}
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Alphabetic ordered list
|-
| {{mono|{{tl|ordered list}}}}
|-
| {{tlx|Ordered list |list_style_type{{=}}lower-alpha |first |second |...}}
|-
|
{{Ordered list |list_style_type=lower-alpha |first |second |...}}
|}
|-
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Unbulleted list
|-
| {{mono|{{tl|unbulleted list}}}}
|-
| {{tlx|unbulleted list |item1 |item2 |...}}
|-
|
{{unbulleted list|item1|item2|...}}
|}
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Unbulleted list
|-
| {{mono|{{tl|plainlist}}}}
|-
| {{tlx|plainlist|<br />* item1<br />* item2<br />* ...}}
|-
|
{{plainlist|
* item1
* item2
* ...
}}
|}
| style="vertical-align:top" rowspan=2|
{| class="wikitable" style="width:100%"
|-
! Glossary or definition list
|-
| {{mono|{{tl|glossary}}}}<br />([[Wikipedia:Manual of Style/Glossaries|glossary]], description, definition, association)
|-
| {{tlx|glossary}}<br />
{{tlx|term|first term}}{{tlx|defn|first description}}<br />
{{tnull|term|second term}}{{tnull|defn|second description}}<br />
{{tnull|term|...}}{{tnull|defn|....}}<br />
{{mono|{{tl|glossary end}}}}
|-
|
{{glossary}}
{{term|first term}}{{defn|first description}}
{{term|second term}}{{defn|second description}}
{{term|...}}{{defn|....}}
{{glossary end}}
|}
|-
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Bulleted list to flow around an image
|-
| {{mono|{{tl|flowlist}}}}
|-
| <code><nowiki>[[File:Bad Title Example.png|left|thumb|100px]]</nowiki></code><br />
{{tlx|flowlist|<br />*item1<br />*item2<br />*...}}
|-
|
[[File:Bad Title Example.png|left|thumb|100px]]
{{flowlist|
*item1
*item2
*...
}}
|}
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Ordered list in columns
|-
| {{mono|{{tl|columns-list}}}}
|-
| {{tlx|columns-list|colwidth{{=}}5em|<br /># first<br /># second<br /># third<br /># ...}}
|-
|
{{columns-list|colwidth=5em|
# first
# second
# third
# ...
}}
|}
| style="vertical-align:top"|
|}
{{navbox bottom
|below = {{cl|List formatting and function templates}}
}}<noinclude>
{{documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata -->
</noinclude>
bc8771283bcdc7d736cca9716beebac6300dd812
Template:Fraction/styles.css
10
1545
2880
2023-05-15T17:30:42Z
w>Izno
0
clip-path now supported
sanitized-css
text/css
/* {{pp|small=y}} */
.frac {
white-space: nowrap;
}
.frac .num,
.frac .den {
font-size: 80%;
line-height: 0; /* we want this inline */
vertical-align: super;
}
.frac .den {
vertical-align: sub;
}
/* [[Template:Screen reader-only]] is canonical implementation onwiki */
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
clip-path: polygon(0px 0px, 0px 0px, 0px 0px);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
/* white-space: nowrap; /* already have nowrap above */
}
b28507c69a3866957f0cad2cbdb76d24154ba271
Template:Infobox military unit/doc
10
1518
2853
2023-05-16T22:40:07Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
{{auto short description}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
=== Military unit infobox ===
A military unit infobox may be used to summarize information about an individual military unit or formation, such as a regiment or division.
The infobox should be added using the {{tlx|Infobox military unit}} template, as shown below:
{{Parameter names example
| unit_name
| native_name
| image
| image_size
| alt
| caption
| dates = {{unbulleted list|{{{dates}}}|''or:'' {{{start_date}}}–{{{end_date}}}}}
| <!-- start_date -->
| <!-- end_date -->
| disbanded
| country = {{unbulleted list|{{{country}}}|''or:'' {{{countries}}}}}
| <!-- countries -->
| allegiance
| branch
| type
| role
| specialization
| size
| command_structure
| garrison
| <!-- garrison_label -->
| nickname
| patron
| motto
| colors
| <!-- colors_label -->
| march
| mascot
| anniversaries
| equipment
| <!-- equipment_label -->
| battles
| <!-- battles_label -->
| decorations
| battle_honours
| <!-- battle_honours_label -->
| flying_hours
| website
|
| current_commander
| commander1 = {{unbulleted list|{{{current_commander}}}|''or:'' {{{commander1}}}}}
| <!-- commander1_label -->
| <!-- current_commander_label -->
|
| ceremonial_chief
| commander2 = {{unbulleted list|{{{ceremonial_chief}}}|''or:'' {{{commander2}}}}}
| <!-- commander2_label -->
| <!-- ceremonial_chief_label -->
|
| commander3 = {{unbulleted list|{{{colonel_of_the_regiment}}}|''or:'' {{{commander3}}}}}
| <!-- commander3_label -->
| <!-- colonel_of_the_regiment_label -->
|
| commander4 = {{unbulleted list|{{{command_sergeant_major}}}|''or:'' {{{commander4}}}}}
| command_sergeant_major
| <!-- commander4_label -->
| <!-- command_sergeant_major_label -->
|
| commander5
| <!-- commander5_label -->
| commander6
| <!-- commander6_label -->
| commander7
| <!-- commander7_label -->
| commander8
| <!-- commander8_label -->
| commander9
| <!-- commander9_label -->
| notable_commanders
|
| identification_symbol
| <!-- identification_symbol_label -->
| identification_symbol_2
| <!-- identification_symbol_2_label -->
| identification_symbol_3
| <!-- identification_symbol_3_label -->
| identification_symbol_4
| <!-- identification_symbol_4_label -->
| identification_symbol_5
| <!-- identification_symbol_5_label -->
| identification_symbol_6
| <!-- identification_symbol_6_label -->
|
| aircraft_attack
| aircraft_bomber
| aircraft_electronic
| aircraft_fighter
| aircraft_helicopter
| aircraft_helicopter_attack
| aircraft_helicopter_cargo
| aircraft_helicopter_multirole
| aircraft_helicopter_observation
| aircraft_helicopter_trainer
| aircraft_helicopter_utility
| aircraft_interceptor
| aircraft_patrol
| aircraft_recon
| aircraft_trainer
| aircraft_transport
| aircraft_tanker
| aircraft_general
}}
<div style="width:400px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em">
{{Infobox military unit
| unit_name =
| native_name =
| image =
| image_size =
| alt =
| caption =
| dates = <!-- or | start_date = | end_date = -->
| disbanded =
| country = <!-- or | countries = -->
| allegiance =
| branch =
| type =
| role = <!-- or | specialization = -->
| size =
| command_structure =
| garrison =
| garrison_label =
| nickname =
| patron =
| motto =
| colors = <!-- or | colours = -->
| colors_label = <!-- or | colours_label = -->
| march =
| mascot =
| anniversaries =
| equipment =
| equipment_label =
| battles =
| battles_label =
| decorations =
| battle_honours =
| battle_honours_label =
| flying_hours =
| website =
<!-- Commanders -->
| current_commander =
| commander1 =
| commander1_label =
| commander2 =
| commander2_label =
| commander3 =
| commander3_label =
| commander4 =
| commander4_label =
| commander5 =
| commander5_label =
| commander6 =
| commander6_label =
| commander7 =
| commander7_label =
| commander8 =
| commander8_label =
| commander9 =
| commander9_label =
| notable_commanders =
<!-- Insignia -->
| identification_symbol =
| identification_symbol_label =
| identification_symbol_2 =
| identification_symbol_2_label =
| identification_symbol_3 =
| identification_symbol_3_label =
| identification_symbol_4 =
| identification_symbol_4_label =
| identification_symbol_5 =
| identification_symbol_5_label =
| identification_symbol_6 =
| identification_symbol_6_label =
<!-- Aircraft -->
| aircraft_attack =
| aircraft_bomber =
| aircraft_electronic =
| aircraft_fighter =
| aircraft_helicopter =
| aircraft_helicopter_attack =
| aircraft_helicopter_cargo =
| aircraft_helicopter_multirole =
| aircraft_helicopter_observation =
| aircraft_helicopter_trainer =
| aircraft_helicopter_utility =
| aircraft_interceptor =
| aircraft_patrol =
| aircraft_recon =
| aircraft_trainer =
| aircraft_transport =
| aircraft_tanker =
| aircraft_general =
}}
</syntaxhighlight></div>
{{clear}}
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]).
* '''unit_name''' – The formal name of the unit in English.
* '''native_name''' – ''optional'' – The formal name of the unit in the local language, if different from '''unit_name''', and if not English. This will display under the unit_name.
* '''image''' – ''optional'' – An image of the unit insignia ([[cap badge]]s, [[tartan]] or [[Colours, standards and guidons|colours]]), if available; other images may be used if this cannot be obtained. The image should be given in the form <code>Example.jpg</code>.
* '''image_size''' – ''optional'' – Used to override the default image width of 200 pixels. It should be written as <code>200px</code>.
* '''alt''' – ''optional'' – Alternative text for visually impaired users, see [[WP:ALT]].
* '''caption''' – ''optional'' – The text to be placed below the image.
* '''dates''' – The period (usually in years) when the unit was active; alternately, the dates may be indicated by using one—or both—of the separate '''start_date''' and '''end_date''' parameters.
* '''country''' – ''optional'' – If the unit is part of the armed forces of a sovereign state, the name of that state.
* '''allegiance''' – ''optional'' – Used to indicate the allegiance of units which are not part of the regular armed forces of a sovereign state; can usually be omitted otherwise. In the case of National Guard or Naval Militia units, the State of origin should be indicated.
* '''branch''' – ''optional'' – The service branch, in militaries that have them; typically army, navy, air force, etc.
* '''type''' – ''optional'' – The general type of unit, e.g., cavalry, infantry, artillery, etc. More specific types (airborne infantry, light cavalry, etc.) may be given as appropriate.
* '''role''' – ''optional'' – Typical strategic or tactical use of unit, e.g., shock troop, special operations, mechanized infantry, ceremonial guard, etc.
* '''size''' – ''optional'' – The size of the unit; this may include both average and lifetime figures, and should indicate equipment (planes, tanks, cannon, etc.) where applicable. For U.S. units, this should only include Organic elements, not Assigned or Attached elements.
* '''command_structure''' – ''optional'' – The larger unit(s) of which the unit is a part. This should not be used to provide an exhaustive history of the unit, which is more appropriate in the article itself, for units existing over a long period. For complicated cases, using the [[#Command structure box|auxiliary command structure box]] may be appropriate.
* '''garrison''' – ''optional'' – Location of the unit's home base; this is generally applicable only to units in existence.
* '''garrison_label''' – ''optional'' – The label to use for the garrison field (above).
* '''nickname''' – ''optional'' – Any commonly-used nicknames for the unit.
* '''patron''' – ''optional'' – The patron the unit was named after; this is only applicable in armed forces where units are named after individuals.
* '''motto''' – ''optional'' – The official unit motto (with translation, if necessary).
* '''colors''' – ''optional'' – The unit colors; this may refer to either the actual colors used on the uniform, or to the [[Colours, standards and guidons|colours]] of the unit.
* '''colors_label''' – ''optional'' – the label to use for the colors field (above).
* '''march''' – ''optional'' – The tune(s) commonly or officially played when the unit ceremonially marches; there may be several.
* '''mascot''' – ''optional'' – Any official or unofficial animal or character maintained by the unit.
* '''equipment''' – ''optional'' – For units strongly associated with specific equipment or vehicles, such as tanks, artillery, or aircraft, a ''brief'' list of the notable types used by the unit; if the number of entries is large, it is recommended that this field not be used, and that the full list be given in the article text instead.
* '''equipment_label''' – ''optional'' – The label to use for the equipment field (above).
* '''battles''' – ''optional'' – Any notable engagements in which the unit participated. The decision of what constitutes a notable engagement is left to the editors of the specific article.
* '''battles_label''' – ''optional'' – The label to use for the battles field (above); this defaults to "Engagements" if left blank.
* '''anniversaries''' – ''optional'' – Any anniversaries that a unit celebrates.
* '''decorations''' – ''optional'' – Any decorations (such as the [[Presidential Unit Citation (United States)|Presidential Unit Citation]]) that the unit as a whole has received.
* '''battle_honours''' – ''optional'' – For units in countries that award some type of formal [[battle honour]]s, the battle honours that the unit has received; while this may have some overlap with the ''battles'' field above, the two are not necessarily equivalent.
* '''battle_honours_label''' – ''optional'' – The label to use for the battle_honours field (above); this defaults to "[[Battle honour]]s" if left blank.
* '''disbanded''' – ''optional'' – For units that have been disbanded, the dates and any other relevant notes regarding the disbanding.
* '''flying_hours''' – ''optional'' – If the formation is an aerial one, the total hours flown.
* '''website''' – ''optional'' – The official website of the formation, if any.
Commander parameters:
The infobox allows for up to three current commanders to be specified; the exact roles or titles of these individuals should be specified via the corresponding label parameters.
* '''commander1''' – ''optional'' – A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander1_label''' – ''optional'' – The label to use for the field above; for historical reasons, this defaults to "Current commander" if left blank.
* '''commander2''' – ''optional'' – A second current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander2_label''' – ''optional'' – The label to use for the field above; for historical reasons, this defaults to "Ceremonial chief" if left blank.
* '''commander3''' – ''optional'' – A third current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander3_label''' – ''optional'' – The label to use for the field above; for historical reasons, this defaults to "Colonel of the Regiment" if left blank.
* '''commander4''' – ''optional'' – A fourth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander4_label''' – ''optional'' – The label to use for the field above; for historical reasons, this defaults to "Command Sergeant Major" if left blank.
* '''commander5''' – ''optional'' – A fifth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander5_label''' – ''optional'' – The label to use for the field above; defaults to "Commander".
* '''commander6''' – ''optional'' – A sixth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander6_label''' – ''optional'' – The label to use for the field above; defaults to "Commander".
* '''commander7''' – ''optional'' – A seventh current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander7_label''' – ''optional'' – The label to use for the field above; defaults to "Commander".
* '''commander8''' – ''optional'' – An eighth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander8_label''' – ''optional'' – The label to use for the field above; defaults to "Commander".
* '''commander9''' – ''optional'' – A ninth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.
* '''commander9_label''' – ''optional'' – The label to use for the field above; defaults to "Commander".
* '''notable_commanders''' – ''optional'' – Any notable former commanders of the unit; judgement of notability is left to individual article editors.
Insignia parameters:
* '''identification_symbol''' – ''optional'' – The unit's identification symbol (such as a [[tartan]], tactical identification patch or [[morale patch]]).
* '''identification_symbol_label''' – ''optional'' – The label to use for the identification symbol field (above).
* '''identification_symbol_2''' – ''optional'' – Another identification symbol.
* '''identification_symbol_2_label''' – ''optional'' – The label to use for the second identification symbol field (above).
* '''identification_symbol_3''' – ''optional'' – Another identification symbol.
* '''identification_symbol_3_label''' – ''optional'' – The label to use for the third identification symbol field (above).
* '''identification_symbol_4''' – ''optional'' – Another identification symbol.
* '''identification_symbol_4_label''' – ''optional'' – The label to use for the fourth identification symbol field (above).
* '''identification_symbol_5''' – ''optional'' – Another identification symbol.
* '''identification_symbol_5_label''' – ''optional'' – The label to use for the fifth identification symbol field (above).
* '''identification_symbol_6''' – ''optional'' – Another identification symbol.
* '''identification_symbol_6_label''' – ''optional'' – The label to use for the sixth identification symbol field (above).
Aircraft parameters:
* '''aircraft_attack''' – ''optional'' – For aviation units, the attack aircraft flown by the unit.
* '''aircraft_bomber''' – ''optional'' – For aviation units, the bomber aircraft flown by the unit.
* '''aircraft_electronic''' – ''optional'' – For aviation units, the electronic warfare aircraft flown by the unit.
* '''aircraft_fighter''' – ''optional'' – For aviation units, the fighter aircraft flown by the unit.
* '''aircraft_helicopter''' – ''optional'' – For aviation units, the helicopter aircraft flown by the unit.
* '''aircraft_helicopter_attack''' – ''optional'' – For aviation units, the attack helicopter aircraft flown by the unit.
* '''aircraft_helicopter_cargo''' – ''optional'' – For aviation units, the cargo helicopter aircraft flown by the unit.
* '''aircraft_helicopter_multirole''' – ''optional'' – For aviation units, the multirole helicopter aircraft flown by the unit.
* '''aircraft_helicopter_observation''' – ''optional'' – For aviation units, the observation helicopter aircraft flown by the unit.
* '''aircraft_helicopter_trainer''' – ''optional'' – For aviation units, the trainer helicopter aircraft flown by the unit.
* '''aircraft_helicopter_utility''' – ''optional'' – For aviation units, the utility helicopter aircraft flown by the unit.
* '''aircraft_interceptor''' – ''optional'' – For aviation units, the interceptor aircraft flown by the unit.
* '''aircraft_patrol''' – ''optional'' – For aviation units, the patrol aircraft flown by the unit.
* '''aircraft_recon''' – ''optional'' – For aviation units, the reconnaissance aircraft flown by the unit.
* '''aircraft_trainer''' – ''optional'' – For aviation units, the trainer aircraft flown by the unit.
* '''aircraft_transport''' – ''optional'' – For aviation units, the transport aircraft flown by the unit.
* '''aircraft_tanker''' – ''optional'' – For aviation units, the aerial refueling aircraft flown by the unit.
* '''aircraft_general''' – ''optional'' – For aviation units, where aircraft used do not fit well into the above categories.
Note that the various <code>xyz_label</code> fields above are intended for overriding the default labels on these fields as needed for particular countries or services; in most cases, however, the default value is sufficient, and the fields need not be included.
{{Command structure/doc|noheader=yes}}
{{Service record/doc|noheader=yes}}
== Example ==
{{Infobox military unit
| unit_name = 502nd Parachute Infantry Regiment
| image = 502 Parachute Infantry Regiment COA.PNG
| caption = 502d PIR Coat of Arms
| nickname = "Five-Oh-Deuce" or "The Deuce"
| motto = ''Strike''
| colors =
| march =
| ceremonial_chief =
| type = [[Parachute infantry]]
| branch = [[United States Army|Army]]
| dates = 1942–present
| country = United States
| allegiance =
| command_structure = [[101st Airborne Division]]
| size =
| specialization =
| current_commander =
| garrison = [[Fort Campbell]]
| garrison_label =
| battles = World War II
*[[Western Front (World War II)|European War]]
*[[Invasion of Normandy|Battle of Normandy]]
*[[Operation Market Garden]]
*[[Battle of the Bulge]]
[[War on Terrorism]]
*[[Iraq War]]
**[[Operation Iraqi Freedom]]
| notable_commanders = {{unbulleted list|[[George V. H. Moseley, Jr.]]|[[John H. Michaelis]]}}
| anniversaries =
| decorations = {{unbulleted list|[[Presidential Unit Citation (United States)|Presidential Unit Citation]] (5)|[[Valorous Unit Award]] (5)|[[Croix de Guerre]]}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox military unit
| unit_name = 502nd Parachute Infantry Regiment
| image = 502 Parachute Infantry Regiment COA.PNG
| caption = 502d PIR Coat of Arms
| nickname = "Five-Oh-Deuce" or "The Deuce"
| motto = ''Strike''
| colors =
| march =
| ceremonial_chief =
| type = [[Parachute infantry]]
| branch = [[United States Army|Army]]
| dates = 1942–present
| country = United States
| allegiance =
| command_structure = [[101st Airborne Division]]
| size =
| specialization =
| current_commander =
| garrison = [[Fort Campbell]]
| garrison_label =
| battles = World War II
*[[Western Front (World War II)|European War]]
*[[Invasion of Normandy|Battle of Normandy]]
*[[Operation Market Garden]]
*[[Battle of the Bulge]]
[[War on Terrorism]]
*[[Iraq War]]
**[[Operation Iraqi Freedom]]
| notable_commanders = {{unbulleted list|[[George V. H. Moseley, Jr.]]|[[John H. Michaelis]]}}
| anniversaries =
| decorations = {{unbulleted list|[[Presidential Unit Citation (United States)|Presidential Unit Citation]] (5)|[[Valorous Unit Award]] (5)|[[Croix de Guerre]]}}
}}
</syntaxhighlight>
{{clear}}
== Microformat ==
{{UF-hcard-org}}
== TemplateData ==
{{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "A military unit infobox may be used to summarize information about an individual military unit or formation, such as a regiment or division.",
"format": "{{_\n| _____________________________ = _\n}}\n",
"params": {
"unit_name": {
"type": "line",
"required": true,
"label": "Unit Name",
"description": "The formal name of the unit."
},
"image": {
"type": "wiki-file-name",
"label": "Unit Insignia Image",
"description": "An image of the unit insignia (cap badges, tartan or colours), if available; other images may be used if this cannot be obtained. The image must be given in the form Example.jpg."
},
"image_size": {
"type": "string",
"label": "Image size",
"description": "Used to override the default image width of 200 pixels. It should be written as 200px."
},
"alt": {
"type": "string",
"label": "Alternative text for image",
"description": "Alternative text for visually impaired users, see WP:ALT."
},
"caption": {
"type": "string",
"label": "Caption",
"description": "The text to be placed below the image."
},
"dates": {
"type": "string",
"required": true,
"label": "Time Period Active",
"description": "The period (usually in years) when the unit was active; alternately, the dates may be indicated by using one—or both—of the separate Start Date and End Date parameters.",
"aliases": [
"start_date",
"end_date"
]
},
"country": {
"type": "string/line",
"label": "Country",
"description": "If the unit is part of the armed forces of a sovereign state, the name of that state."
},
"allegiance": {
"type": "string/line",
"label": "Allegiance",
"description": "Used to indicate the allegiance of units which are not part of the regular armed forces of a sovereign state; can usually be omitted otherwise. In the case of National Guard or Naval Militia units, the State of origin should be indicated."
},
"branch": {
"type": "string/line",
"label": "Branch",
"description": "The service branch, in militaries that have them; typically army, navy, air force, etc."
},
"type": {
"type": "string",
"label": "Type",
"description": "The general type of unit, e.g., cavalry, infantry, artillery, etc. More specific types (airborne infantry, light cavalry, etc.) may be given as appropriate."
},
"role": {
"type": "string",
"label": "Role",
"description": "Typical strategic or tactical use of unit, e.g., shock troop, special operations, mechanized infantry, ceremonial guard, etc.",
"aliases": [
"specialization"
]
},
"size": {
"type": "string",
"label": "Size",
"description": "The size of the unit; this may include both average and lifetime figures, and should indicate equipment (planes, tanks, cannon, etc.) where applicable. For U.S. units, this should only include Organic elements, not Assigned or Attached elements."
},
"command_structure": {
"type": "string",
"label": "Command Structure",
"description": "The larger unit(s) of which the unit is a part. This should not be used to provide an exhaustive history of the unit, which is more appropriate in the article itself, for units existing over a long period. For complicated cases, using the auxiliary command structure box may be appropriate."
},
"garrison": {
"type": "string/line",
"label": "Garrison",
"description": "Location of the unit's home base; this is generally applicable only to units in existence."
},
"garrison_label": {
"type": "line",
"label": "Garrison Label",
"description": "The label to use for the Garrison field."
},
"nickname": {
"type": "string",
"label": "Nickname(s)",
"description": "Any commonly-used nicknames for the unit."
},
"patron": {
"type": "line",
"label": "Patron",
"description": "The patron the unit was named after; this is only applicable in armed forces where units are named after individuals."
},
"motto": {
"type": "content",
"label": "Motto",
"description": "The official unit motto (with translation, if necessary)."
},
"colors": {
"type": "string",
"label": "Colors",
"description": "The unit colors; this may refer to either the actual colors used on the uniform, or to the colours of the unit.",
"aliases": [
"colours"
]
},
"colors_label": {
"type": "line",
"label": "Colors Label",
"description": "The label to use for the Colors field.",
"aliases": [
"colours_label"
]
},
"march": {
"type": "string",
"label": "March(es)",
"description": "The tune(s) commonly or officially played when the unit ceremonially marches; there may be several."
},
"mascot": {
"type": "string",
"label": "Mascot",
"description": "Any official or unofficial animal or character maintained by the unit."
},
"equipment": {
"type": "string",
"label": "Equipment",
"description": "For units strongly associated with specific equipment or vehicles, such as tanks, artillery, or aircraft, a brief list of the notable types used by the unit; if the number of entries is large, it is recommended that this field not be used, and that the full list be given in the article text instead."
},
"equipment_label": {
"type": "line",
"label": "Equipment Label",
"description": "The label to use for the Equipment field."
},
"battles": {
"type": "string",
"label": "Battles",
"description": "Any notable engagements in which the unit participated. The decision of what constitutes a notable engagement is left to the editors of the specific article."
},
"battles_label": {
"type": "line",
"label": "Battles Label",
"description": "The label to use for the Battles field; this defaults to \"Engagements\" if left blank."
},
"anniversaries": {
"type": "string",
"label": "Anniversaries",
"description": "Any anniversaries that a unit celebrates."
},
"decorations": {
"type": "string",
"label": "Decorations",
"description": "Any decorations (such as the Presidential Unit Citation) that the unit as a whole has received."
},
"battle_honours": {
"type": "string",
"label": "Battle Honours",
"description": "For units in countries that award some type of formal battle honours, the battle honours that the unit has received; while this may have some overlap with the battles field above, the two are not necessarily equivalent."
},
"battle_honours_label": {
"type": "line",
"label": "Battle Honours Label",
"description": "The label to use for the Battle Honours field; this defaults to \"Battle honours\" if left blank.",
"example": "Accolades"
},
"disbanded": {
"type": "date",
"label": "Disbanded Date",
"description": "For units that have been disbanded, the dates and any other relevant notes regarding the disbanding."
},
"flying_hours": {
"type": "line",
"label": "Flying Hours",
"description": "If the formation is an aerial one, the total hours flown."
},
"website": {
"type": "url",
"label": "Website",
"description": "The official website of the formation, if any."
},
"commander1": {
"type": "string",
"label": "Commander 1",
"description": "A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.",
"aliases": [
"current_commander"
]
},
"commander1_label": {
"type": "line",
"label": "Commander 1 Label",
"description": "The label to use for the Commander 1 field; for historical reasons, this defaults to \"Current commander\" if left blank.",
"default": "Current commander",
"aliases": [
"current_commander_label"
]
},
"commander2": {
"type": "string",
"label": "Commander 2",
"description": "A current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.",
"aliases": [
"ceremonial_chief"
]
},
"commander2_label": {
"type": "line",
"label": "Commander 2 Label",
"description": "The label to use for the Commander 2 field; for historical reasons, this defaults to \"Ceremonial chief\" if left blank.",
"default": "Ceremonial chief",
"aliases": [
"ceremonial_chief_label"
]
},
"commander3": {
"type": "string",
"label": "Commander 3",
"description": "A third current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.",
"aliases": [
"colonel_of_the_regiment"
]
},
"commander3_label": {
"type": "line",
"label": "Commander 3 Label",
"description": "The label to use for the Commander 3 field; for historical reasons, this defaults to \"Colonel of the Regiment\" if left blank.",
"default": "Colonel of the Regiment",
"aliases": [
"colonel_of_the_regiment_label"
]
},
"commander4": {
"type": "string",
"label": "Commander 4",
"description": "A fourth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader.",
"aliases": [
"command_sergeant_major"
]
},
"commander4_label": {
"type": "line",
"label": "Commander 4 Label",
"description": "The label to use for the Commander 4 field; for historical reasons, this defaults to \"Command Sergeant Major\" if left blank.",
"default": "Command Sergeant Major",
"aliases": [
"command_sergeant_major_label"
]
},
"commander5": {
"type": "string",
"label": "Commander 5",
"description": "A fifth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader."
},
"commander5_label": {
"type": "line",
"label": "Commander 5 Label",
"description": "The label to use for the Commander 5 field",
"default": "Commander"
},
"commander6": {
"type": "string",
"label": "Commander 6",
"description": "A sixth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader."
},
"commander6_label": {
"type": "line",
"label": "Commander 6 Label",
"description": "The label to use for the Commander 6 field",
"default": "Commander"
},
"commander7": {
"type": "string",
"label": "Commander 7",
"description": "A seventh current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader."
},
"commander7_label": {
"type": "line",
"label": "Commander 7 Label",
"description": "The label to use for the Commander 7 field",
"default": "Commander"
},
"commander8": {
"type": "string",
"label": "Commander 8",
"description": "A eighth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader."
},
"commander8_label": {
"type": "line",
"label": "Commander 8 Label",
"description": "The label to use for the Commander 8 field",
"default": "Commander"
},
"commander9": {
"type": "string",
"label": "Commander 9",
"description": "A ninth current commander of the unit; this can be the acting commander, the ceremonial commander, the chief of staff, or any other leader."
},
"commander9_label": {
"type": "line",
"label": "Commander 9 Label",
"description": "The label to use for the Commander 9 field",
"default": "Commander"
},
"notable_commanders": {
"type": "string",
"label": "Notable Commanders",
"description": "Any notable former commanders of the unit; judgement of notability is left to individual article editors."
},
"identification_symbol": {
"type": "string",
"label": "Identification Symbol",
"description": "The unit's identification symbol (such as a patch, tartan, or tactical identification flash). Use [[File:Example.jpg|200px]] format."
},
"identification_symbol_label": {
"type": "line",
"label": "Identification Symbol Label",
"description": "The label to use for the Identification Symbol field."
},
"identification_symbol_2": {
"type": "string",
"label": "Identification Symbol 2",
"description": "Another identification symbol. Use [[File:Example.jpg|200px]] format."
},
"identification_symbol_3": {
"type": "string",
"label": "Identification Symbol 3",
"description": "Another identification symbol. Use [[File:Example.jpg|200px]] format."
},
"identification_symbol_4": {
"type": "string",
"label": "Identification Symbol 4",
"description": "Another identification symbol. Use [[File:Example.jpg|200px]] format."
},
"identification_symbol_2_label": {
"type": "line",
"label": "Identification Symbol 2 Label",
"description": "The label to use for the Identification Symbol 2 field."
},
"identification_symbol_3_label": {
"type": "line",
"label": "Identification Symbol 3 Label",
"description": "The label to use for the Identification Symbol 3 field."
},
"identification_symbol_4_label": {
"type": "line",
"label": "Identification Symbol 4 Label",
"description": "The label to use for the Identification Symbol 4 field."
},
"aircraft_attack": {
"type": "string",
"label": "Attack Aircraft",
"description": "For aviation units, the attack aircraft flown by the unit."
},
"aircraft_bomber": {
"type": "string",
"label": "Bomber Aircraft",
"description": "For aviation units, the bomber aircraft flown by the unit."
},
"aircraft_electronic": {
"type": "string",
"label": "Electronic Warfare Aircraft",
"description": "For aviation units, the electronic warfare aircraft flown by the unit."
},
"aircraft_fighter": {
"type": "string",
"label": "Fighter Aircraft",
"description": "For aviation units, the fighter aircraft flown by the unit."
},
"aircraft_helicopter": {
"type": "string",
"label": "Helicopter Aircraft",
"description": "For aviation units, the helicopter aircraft flown by the unit."
},
"aircraft_helicopter_attack": {
"type": "string",
"label": "Attack Helicopter Aircraft",
"description": "For aviation units, the attack helicopter aircraft flown by the unit."
},
"aircraft_helicopter_cargo": {
"type": "string",
"label": "Cargo Helicopter Aircraft",
"description": "For aviation units, the cargo helicopter aircraft flown by the unit."
},
"aircraft_helicopter_multirole": {
"type": "string",
"label": "Multirole Helicopter Aircraft",
"description": "For aviation units, the multirole helicopter aircraft flown by the unit."
},
"aircraft_helicopter_observation": {
"type": "string",
"label": "Observation Helicopter Aircraft",
"description": "For aviation units, the observation helicopter aircraft flown by the unit."
},
"aircraft_helicopter_trainer": {
"type": "string",
"label": "Trainer Helicopter Aircraft",
"description": "For aviation units, the trainer helicopter aircraft flown by the unit."
},
"aircraft_helicopter_utility": {
"type": "string",
"label": "Utility Helicopter Aircraft",
"description": "For aviation units, the utility helicopter aircraft flown by the unit."
},
"aircraft_interceptor": {
"type": "string",
"label": "Interceptor Aircraft",
"description": "For aviation units, the interceptor aircraft flown by the unit."
},
"aircraft_patrol": {
"type": "string",
"label": "Patrol Aircraft",
"description": "For aviation units, the patrol aircraft flown by the unit."
},
"aircraft_recon": {
"type": "string",
"label": "Recon Aircraft",
"description": "For aviation units, the reconnaissance aircraft flown by the unit."
},
"aircraft_trainer": {
"type": "string",
"label": "Trainer Aircraft",
"description": "For aviation units, the trainer aircraft flown by the unit."
},
"aircraft_transport": {
"type": "string",
"label": "Transport Aircraft",
"description": "For aviation units, the transport aircraft flown by the unit."
},
"aircraft_tanker": {
"type": "string",
"label": "Tanker Aircraft",
"description": "For aviation units, the aerial refueling aircraft flown by the unit."
},
"aircraft_general": {
"type": "string",
"description": "For aviation units, where aircraft used do not fit well into the above categories.",
"label": "Other aircraft"
},
"countries": {
"label": "Countries drawn from",
"description": "For multinational forces, the countries the unit is drawn from. {{Flag|<country>}} format is preferred.",
"type": "string"
},
"native_name": {},
"identification_symbol_5": {},
"identification_symbol_5_label": {},
"identification_symbol_6": {},
"identification_symbol_6_label": {}
},
"paramOrder": [
"unit_name",
"native_name",
"image",
"image_size",
"alt",
"caption",
"dates",
"disbanded",
"country",
"countries",
"allegiance",
"branch",
"type",
"role",
"size",
"command_structure",
"garrison",
"garrison_label",
"nickname",
"patron",
"motto",
"colors",
"colors_label",
"march",
"mascot",
"anniversaries",
"equipment",
"equipment_label",
"battles",
"battles_label",
"decorations",
"battle_honours",
"battle_honours_label",
"flying_hours",
"website",
"commander1",
"commander1_label",
"commander2",
"commander2_label",
"commander3",
"commander3_label",
"commander4",
"commander4_label",
"commander5",
"commander5_label",
"commander6",
"commander6_label",
"commander7",
"commander7_label",
"commander8",
"commander8_label",
"commander9",
"commander9_label",
"notable_commanders",
"identification_symbol",
"identification_symbol_label",
"identification_symbol_2",
"identification_symbol_3",
"identification_symbol_4",
"identification_symbol_2_label",
"identification_symbol_3_label",
"identification_symbol_4_label",
"identification_symbol_5",
"identification_symbol_5_label",
"identification_symbol_6",
"identification_symbol_6_label",
"aircraft_attack",
"aircraft_bomber",
"aircraft_electronic",
"aircraft_fighter",
"aircraft_helicopter",
"aircraft_helicopter_attack",
"aircraft_helicopter_cargo",
"aircraft_helicopter_multirole",
"aircraft_helicopter_observation",
"aircraft_helicopter_trainer",
"aircraft_helicopter_utility",
"aircraft_interceptor",
"aircraft_patrol",
"aircraft_recon",
"aircraft_trainer",
"aircraft_transport",
"aircraft_tanker",
"aircraft_general"
]
}
</templatedata>
{{collapse bottom}}
==Tracking cats==
*{{Category link with count|Pages using infobox military unit with unknown parameters}}
<noinclude>
[[Category:WikiProject Military history template instructions|Military unit infobox]]
</noinclude><includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Military infobox templates|Unit]]
}}</includeonly>
a72f9a1b9c9842d227186818b1b61cf295a8f490
Template:Infobox command structure/doc
10
1517
2852
2023-05-16T22:43:07Z
w>WOSlinker
0
/* Command structure box */ syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}}
==Usage==
}}
==== Command structure box ====
{{Infobox command structure
| bodyclass = plainlist
| name = 12th Infantry Division
| date = 1941–1943
| parent = [[XVII Corps (United Kingdom)|XVII Corps]]
| subordinate =
* 17th Mechanized Regiment
* 51st Light Infantry Regiment
* 53rd Infantry Regiment
* 107th Artillery Brigade
}}
A command structure box may be used to summarize information about an individual military unit's parent and subordinate units; it should generally be used in conjunction with {{tlx|Infobox military unit}}. If needed, multiple boxes may be used to show the unit's command structure during different periods.
The box should be added using the {{tlx|Infobox command structure}} template, as shown below:
<div style="width:350px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em">
{{Infobox command structure
| name =
| date =
| parent =
| subordinate =
}}
</syntaxhighlight></div>
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]).
* '''name''' – the name of the unit or formation.
* '''date''' – ''optional'' – the dates during which the given structure was in place.
* '''parent''' – ''optional'' – the unit's parent unit.
* '''subordinate''' – ''optional'' – the unit's subordinate units. <noinclude>[[Category:WikiProject Military history template instructions|Command structure box]]</noinclude>
<includeonly>{{Sandbox other||
{{#ifeq:{{{noheader|}}}|yes||
[[Category:Military auxiliary infobox templates|Command structure]]
}}}}</includeonly>
2651b99c1bdf7a14acb98cc60f6372038868fa29
Template:Infobox service record/doc
10
1519
2854
2023-05-17T08:51:50Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}}
==Usage==
}}
==== Infobox service record ====
{{Infobox service record
| label = Combat service
| partof = [[7. Unterseebootsflottille]] (1938–41)
| codes = M 18 837 (''feldpost'')
| commanders = [[Günther Prien]] (1938–41)
| operations = 10 patrols
| victories = 30 ships (162,769 [[Tonnage|GRT]]) sunk,<br>1 warship (29,150 tons) sunk,<br>8 ships (62,751 GRT) damaged
| awards =
}}
A service record box may be used to summarize information about an individual military unit's or ship's service history; it should generally be used in conjunction with the appropriate [[WP:MILMOS#Primary infoboxes|primary infobox]]. If needed, multiple boxes may be used to separate the service record for different periods; for example, a unit that fought in several wars may have separate boxes for each.
The box should be added using the {{tlx|Infobox service record}} template, as shown below:
<div style="width:350px;background:#dddddd;border: 1px solid black;"><syntaxhighlight lang="wikitext" style="overflow:auto; margin:0.5em">
{{Infobox service record
| is_ship =
| is_multi =
| label =
| partof =
| codes =
| commanders =
| operations =
| victories =
| awards =
}}
</syntaxhighlight></div>
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]).
* '''is_ship''' – ''optional'' – "''yes''" if the box is being used inside a compound ship infobox.
* '''is_multi''' – ''optional'' – "''yes''" if multiple instances of the box are being used inside a single compound ship infobox.
* '''label''' – ''optional'' – the label to use for the box; this defaults to "Service record" if left blank.
* '''partof''' – ''optional'' – the unit or formation of which the subject unit or ship was a part; multiple units may be listed with the corresponding dates.
* '''codes''' – ''optional'' – the identification codes carried by the unit or ship; these should generally be labeled according to what the code indicates.
* '''commanders''' – ''optional'' – the notable commanding officers for the period covered.
* '''operations''' – ''optional'' – the operations (such as battles, wars, campaigns, patrols, cruises, etc.) in which the subject unit or ship participated; these may be given as a list, or described in a more condensed form.
* '''victories''' – ''optional'' – the victories or successes in the subject's service history. For units, this may be battles won; for submarines or merchant raiders, the ships and tonnage sunk; and so forth.
* '''awards''' – ''optional'' – the awards, decorations, or other honors received by the subject unit or ship. <noinclude>[[Category:WikiProject Military history template instructions|Service record box]]</noinclude>
<includeonly>{{Sandbox other||
{{#ifeq:{{{noheader|}}}|yes||
[[Category:Military auxiliary infobox templates|Service Record]]
}}}}</includeonly>
fdc36320486e459c82f51dca7ed4b2e8d13fe441
Template:Infobox consort styles/doc
10
1277
2611
2023-05-18T12:43:24Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{Wraps infobox|Infobox manner of address}}
== Usage ==
{{Parameter names example|_template=Infobox consort styles|royal name|image|dipstyle|offstyle|altstyle}} <syntaxhighlight lang="wikitext" style="overflow: auto;">{{Infobox consort styles
| royal name =
| image =
| dipstyle =
| offstyle =
| altstyle =
}}</syntaxhighlight>
<includeonly>{{Sandbox other||
<!-- Categories go here, and interwikis go in Wikidata -->
{{DEFAULTSORT:Consort styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates calling Infobox manner of address]]
}}</includeonly>
2de76592ae93469bbc778aae5828d281bfc669f2
Template:Infobox tea/doc
10
1489
2824
2023-05-18T14:55:15Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Infobox|Module:InfoboxImage}}
{{Parameter names example|Tea_name|Tea_image|Tea_type|Tea_color|Tea_names|Tea_origin|Tea_quick|Tea_infusion|Tea_temperature|Tea_time|Tea_infusion_number|Tea_quantity|Tea_hour}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
== Usage ==
<syntaxhighlight lang="wikitext" style="overflow: auto;">{{Infobox tea
| Tea_name =
| Tea_type =
| Tea_color =
| Tea_image =
| Tea_origin =
| Tea_names =
| Tea_quick =
| Tea_temperature =
| Tea_time =
| module =
}}</syntaxhighlight>
== Parameters ==
''Parameters '''cannot''' be left blank with the exception of '''Tea_image''' and '''module'''''.
;Tea_name: Name of the Tea
;Tea_type: Type of tea (black, white, green)
;Tea_color: Physical colour of the tea
;Tea_image: File name of the image. Use only the file name such as: <code><nowiki>Placeholder.png</nowiki></code>
;Tea_origin: Origin of the tea, preferably linked
;Tea_names: Other name(s)
;Tea_quick: A quick description of the tea (smell, taste, colour)
;module: Used for embedding other infoboxes into this one
<includeonly>{{Sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
[[Category:Coffee and tea templates]]
[[Category:Drink infobox templates|Tea]]
[[Category:Coffee and Tea Taskforce templates]]
[[Category:Infobox templates with module parameter|Tea]]
}}</includeonly>
a95e74ed2d3ae6e0be4066262a6824d00a4f8587
Template:Infobox Belgian royalty styles/doc
10
1273
2607
2023-05-18T15:02:49Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{Wraps infobox|Infobox manner of address}}
{{clear}}
== Usage ==
{{Parameter names example | name | reference | spoken | alternative }}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|type
| name =
| image =
| image_size =
| reference =
| spoken =
| alternative =
}}
</syntaxhighlight>
where <code>''type''</code> = <code>1830</code>, <code>1837</code>, <code>1921</code>, <code>own</code> or <code>none</code>
{{clear}}
{{Infobox Belgian royalty styles|1830|name={{{name}}}}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|1830}}
</syntaxhighlight>
{{clear}}
{{Infobox Belgian royalty styles|1837|name={{{name}}}}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|1837}}
</syntaxhighlight>
{{clear}}
{{Infobox Belgian royalty styles|1921|name={{{name}}}}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|1921}}
</syntaxhighlight>
{{clear}}
{{Infobox Belgian royalty styles|own|name={{{name}}}|image={{{image}}}||image_size={{{image_size}}}}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|own}}
</syntaxhighlight>
{{clear}}
{{Infobox Belgian royalty styles|none|name={{{name}}}}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Belgian royalty styles|none}}
</syntaxhighlight>
{{clear}}
== Images ==
{{See also|Coat of arms of Belgium}}
<gallery widths=200 heights=200>
File:Coat of Arms of the King of the Belgians.svg | default: [[:File:Coat of Arms of the King of the Belgians.svg]]
File:Coat of Arms of King Leopold I of Belgium.svg | 1830: [[:File:Coat of Arms of King Leopold I of Belgium.svg]]
File:Coat of Arms of the King of the Belgians (1837-1921).svg | 1837: [[:File:Coat of Arms of the King of the Belgians (1837-1921).svg]]
File:Coat of Arms of the King of the Belgians (1921-2019).svg | 1921: [[:File:Coat of Arms of the King of the Belgians (1921-2019).svg]]
</gallery>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Belgian Royalty Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
6316bbc67f313c40a2f034b0a273b6e01979524a
Template:As of
10
1288
2623
2023-05-18T21:22:11Z
w>Sdkb
0
Adding {{yesno}} to make {{{since}}} and {{{lc}}} variables case-insensitive, per [[WP:SILENTCONSENSUS|silent]] consensus [[Template_talk:As_of/Archive_1#Yesno?|at talk]]
wikitext
text/x-wiki
<!--{{As of}} begin--><includeonly><!--
## param 1 is the year
## optional param 2 is the month
## optional param 3 is the day of the month
## optional named parameter alt=[text] is alternative display text (may include wiki markup)
## optional named parameter df=US produces American date format in displayed text
## optional named parameter lc=on gives lower-case-first output
## optional named parameter url=[URL] gives statement reference
## displayed text ([A/a]s of [Start date] by default)
-->{{#if: {{{alt|}}} | {{{alt}}} | {{#if:{{{bare|}}}||{{#if:{{yesno|{{{since|}}}}}|{{#if: {{yesno|{{{lc|}}}}} | s | S }}ince | {{#if: {{yesno|{{{lc|}}}}} | a | A }}s of}}}} {{#if:{{{pre|}}}|{{{pre}}} }}{{#if: {{{3|}}} | {{#ifeq:{{lc:{{{df|}}}}}|us|{{MONTHNAME|{{{2}}}}} {{#expr:{{{3}}}}}, |{{#expr:{{{3}}}}} {{MONTHNAME|{{{2}}}}} }}{{{1}}}|{{#if: {{{2|}}} |{{MONTHNAME|{{{2}}}}} }}{{{1}}}}}}}{{#if:{{{post|}}}|<nowiki />{{{post}}}}}<!--
#### That nowiki is required or, various characters (:, ;, #, and *} will be parsed as wikisyntax for list items.
## ref/update inline banner (hidden by default)
--><sup class="plainlinks noexcerpt noprint asof-tag {{#if:{{{url|}}}|ref|update}}" style="display:none;">[{{#if:{{{url|}}}|{{{url}}} [ref]|{{fullurl:{{PAGENAME}}|action=edit}} [update]}}]</sup><!--
## categorisation disabled outside main namespace
-->{{DMCA|Articles containing potentially dated statements|from|<!--
## temporal category for template (word method)
-->{{#if: {{#ifexpr: {{{1}}} = 1 }} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 2004 | {{{1}}} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 1989 | {{#time:Y|{{{1}}}}} | before 1990 }}}} | <!--
## temporal category for template (parameter method)
-->{{#ifexpr: {{{1}}} > 2004 | {{#if:{{{2|}}} | {{MONTHNAME|{{{2}}}}} }} {{{1}}} | {{#ifexpr:{{{1}}} > 1989 | {{{1}}} | before 1990 }}}}}}|<!--
## global category for template
-->All articles containing potentially dated statements}}</includeonly><!--{{As of}} end--><noinclude><!--
## dynamic example (as of today, self ref)
-->{{As of|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}}}<sup class="plainlinks">[https://en.wikipedia.org/wiki/Template:As_of [ref]]</sup>
{{documentation}}
<!-- Add categories and inter-wikis to the /doc subpage, not here! -->
</noinclude>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using as of template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:As of]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | alt | bare | df | lc | post | pre | since | url }}
dd0794e75a86855d0ccc649adeaa8be5d3c3c704
Module:Infobox/doc
828
84
1095
207
2023-05-19T18:05:05Z
wikipedia>Andrybak
0
add [[Module:Italic title]] to Lua
wikitext
text/x-wiki
{{High-use|3308957|all-pages = yes}}
{{module rating|protected}}
{{Lua|Module:Navbar|Module:Italic title}}
{{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}}
'''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions.
== Tracking categories ==
* {{clc|Pages using infobox templates with ignored data cells}}
* {{clc|Articles using infobox templates with no data rows}}
* {{clc|Pages using embedded infobox templates with the title parameter}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Modules that add a tracking category]]
[[Category:Wikipedia infoboxes]]
[[Category:Infobox modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
936ad219eb263a6f3293d62f667bd7b5db1059c1
Module:TNT
828
77
175
2023-05-20T18:33:54Z
meta>Dmehus
0
Undid revision 335077 by [[Special:Contributions/Dmehus|Dmehus]] ([[User talk:Dmehus|talk]]) Revert. Did not fix it
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
params[k - 2] = mw.text.trim(v)
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in ipairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in ipairs(data.data) do
local newVal = {}
local name = nil
for pos, columnName in ipairs(names) do
if columnName == 'name' then
name = row[pos]
else
newVal[columnName] = row[pos]
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
2c570369c78089aef29c72768918373f61b7075d
Template:Infobox Greece place/doc
10
1459
2794
2023-05-20T22:41:25Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
{{Uses Infobox settlement}}
This infobox is to be used for [[List of municipalities and communities in Greece (1997–2010)|Greek towns, cities, municipalities, and villages]]. See [[Template talk:Infobox Greek place|Talk page]] for instructions and discussions.
==Parameters==
{{Parameter names example | name | name_local | image_skyline | imagesize | caption_skyline | city_flag | city_seal | coordinates = {{coord|40|21}} | image_map | map_caption | georegion | periph | periphunit | municipality | municunit | community | seat | established_c | established_m | established_v | districts | mayor | party | since | area = 10 | area_urban = 10 | area_village = 10 | area_metro = 10 | area_municipality = 10 | area_municunit = 10 | elevation = 10 | elevation_max = 10 | elevation_min = 10 | population_as_of | population = 10 | population_urban = 10 | population_village = 10 | population_metro = 10 | pop_municipality = 10 | pop_municunit = 10 | demonym | pop_community = 10 | area_community = 10 | postal_code | area_code | licence | website | footnotes }}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Greek place
| name =
| name_local =
| image_skyline =
| caption_skyline =
| city_flag =
| city_seal =
| image_map =
| map_caption =
| coordinates = <!-- {{Coord}} -->
| georegion =
| demonym =
| periph =
| periphunit =
| municipality =
| municunit =
| community =
| seat =
| established_c =
| established_m =
| established_v =
| districts =
| party =
| since =
| mayor =
| area =
| area_urban =
| area_village =
| area_metro =
| area_municipality =
| area_municunit =
| elevation =
| elevation_max =
| elevation_min =
| population_as_of =
| population =
| population_urban =
| population_village =
| population_metro =
| pop_municipality =
| pop_municunit =
| pop_community =
| area_community =
| postal_code =
| area_code =
| licence =
| website =
}}
</syntaxhighlight>
==Parameters deliberately left out==
* All the size fields, such as ''flag_size'', ''seal_size'', ''imagesize'' and ''pushpin_mapsize''. They are all formatted by the infobox itself, so there is no need to adjust them.
==Microformat==
{{UF-hcard-geo}}
==Tracking category==
* {{clc|Pages using infobox Greece place with unknown parameters}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Greece place infobox templates|Greece place]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
[[Category:Templates that generate named references]]
}}</includeonly>
d79215489ddf26df03ff8eba90cfcc9cf497406b
Template:Infobox French commune/doc
10
1455
2790
2023-05-20T22:47:35Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{High-use| 37304 }}
{{Uses Infobox settlement}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
This infobox is meant for communes (the lowest level of administrative division) in France. This is an empty infobox with all available fields. The contents of the parameter fields, and which are optional, are explained below. This infobox now also supports settlements that are part of a commune, for instance former communes that were merged into a ''commune nouvelle''. See the parameter {{para|commune}} for a manual.
{{TOC limit|2}}
==Usage==
Delete any unneeded fields when using the full template syntax.
{{Parameter names example
| name
| native name
| commune status
| total type
| image
| image size
| caption
| image flag
| image flag size
| flag_link
| image coat of arms
| image coat of arms size
| shield_link
| city motto
| map
| adjustable map
| map size
| map caption
| INSEE
| arrondissement
| canton
| intercommunality
| type
| commune
| subdivisions entry
| subdivisions
| party
| mayor
| term
| area km2 = 1
| area footnotes
| urban area date
| metro area date
| population date
| population ranking
| urban pop date
| urban pop
| metro area pop date
| metro area pop
| population
| population footnotes
| population demonym
| ethnic
| ethnic date
| utc offset
| postal code
| dialling code
| elevation m = 1
| elevation min m = 0
| elevation max m = 2
| elevation footnotes
| website
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox French commune
| name =
| native name =
| commune status =
| total type =
| image =
| image size =
| caption =
| image flag =
| image flag size =
| flag_link =
| image coat of arms =
| image coat of arms size =
| shield_link =
| city motto =
| map =
| adjustable map =
| map size =
| map caption =
| coordinates = <!-- use {{Coord}} -->
| INSEE =
| province = <!-- New Caledonia only -->
| administrative subdivision = <!-- French Polynesia only -->
| arrondissement =
| canton =
| intercommunality =
| commune = <!-- for settlements that are part of a commune -->
| type = <!-- for settlements that are part of a commune -->
| subdivisions entry =
| subdivisions =
| party =
| mayor =
| term =
| area km2 =
| area footnotes =
| urban area date =
| urban area km2 =
| metro area date =
| metro area km2 =
| population date =
| population ranking =
| urban pop date =
| urban pop =
| metro area pop date =
| metro area pop =
| population =
| population demonym =
| ethnic =
| ethnic date =
| utc offset = <!-- French Polynesia only -->
| postal code =
| dialling code =
| elevation m =
| elevation min m =
| elevation max m =
| elevation footnotes =
| website =
}}
</syntaxhighlight>
==Parameters==
Note that the field name is case-sensitive; it should be lower case (apart from INSEE). Some lesser used fields are not discussed (yet) in this overview.
Delete any unneeded fields when using the full template syntax.
=== Required parameters ===
* coordinates
* arrondissement
* canton
* population
* INSEE
===name===
English name of location. If this field is not specified, the article name is used.
===native name===
French name of location. Use only if French name is different from English name (e.g. Dunkirk–Dunkerque). Sometimes used for regional languages, such as Breton and Catalan.
===commune status===
If you want a sub-banner to appear. Defaults to empty. Can be anything—for example, [[Paris]] can use it to describe its status as both a commune and department.
===total type===
If this is left empty, area and population totals will appear on the same line as the respective title. If you indicate something different (for example, 'commune'), that title will appear as a sub-title for both area and population sections.
===image===
A representative picture of the location: skyline, notable landmark, etc. The image used should preferably be wider than it is tall, to keep the infobox as compact as possible. The plain image file name should be given, e.g. <nowiki>Vieux port de Marseille 2.jpg</nowiki>.
===caption===
The caption for this picture (optional).
===image flag, image coat of arms, etc.===
The official flag and coat of arms of the commune. See the infoboxes of [[Paris]] and [[Marseille]] for examples.
===city motto===
The official city motto (probably only applicable for the largest cities).
===map, adjustable map===
'''Avoid, except for overseas departments and territories.''' For locations in metropolitan (=European) France, an automatic map is generated if the coordinates are given in {{para|coordinates}} (see below). For locations in the overseas departments and territories (e.g. French Guiana, New Caledonia, Réunion), this automatic map will give strange results. In these cases, manual location maps ("map", "adjustable map").
* "map": Specify only the file name of the map image, e.g. "Cayenne.PNG".
* "adjustable map": Specify the file name of the map image, e.g. "adjustable map=Cayenne.PNG", and the width in the field "map size", e.g. "map size=200px".
===coordinates===
'''Required.''' Geographical coordinates of location. Give location in decimals. Northern hemisphere and eastern hemisphere have positive numbers. The coordinates are used for map calculation. If the coordinates are not available in French or Dutch ("Nederlands") Wikipedia, you can look them up at for instance https://www.annuaire-mairie.fr (you can search by the name of the commune, results under "Géographie". Elevations and area are also given).
===INSEE===
The INSEE (French national statistics institute) code of the commune. The region and the department to which the location belongs are retrieved using this code and a subtemplate. The INSEE code is also used to provide a link to the census results for the commune. For settlements that are part of a commune, use any number that starts with the department number, for instance the INSEE code of the commune, the former commune, or just the department number (e.g. 77 for a place in Seine-et-Marne). It does not show, but it is used to display the correct region, department and detailed map.
===region and department===
DEPRECATED: The region and the department to which the location belongs are retrieved using the (required!) INSEE code. The fields "region" and "department" are no longer used.
===province===
For New Caledonia.
===administrative subdivision===
For French Polynesia.
===arrondissement===
'''Required.''' The arrondissement to which the location belongs. No wikilinks required. Some overseas locations are not part of an arrondissement. The largest cities (e.g. Paris, Lyon, Marseille) are subdivided into arrondissements themselves. In those cases, use the "subdivisions" field instead.
===canton===
'''Required.''' The canton to which the location belongs. No wikilinks required. Some overseas locations are not part of a canton. Some locations, usually the larger cities, are subdivided into cantons themselves. In those cases, use the "subdivisions" field instead.
===intercommunality===
Many communes cooperate in an intercommunality.
===commune, type===
For settlements that are part of a commune. "commune" is the commune the settlement is part of, "type" is the type of settlement, for instance ''commune déléguée'' or ''commune associée''. Default type is ''part''.
===subdivisions===
Some locations, usually the larger cities, are subdivided into arrondissements or cantons. In those cases, fill in something like "subdivisions=9 arrondissements". A link to an article about these subdivisions can also go here.
===mayor===
The mayor of the commune. The governing period of the mayor (currently 2020–2026) should be given in the field "term". Optionally, the political affiliation of the mayor can be given in the field "party".
===area km2===
The area of the commune in square kilometres. Don't use a comma for decimal separator, but use a point (12.34 instead of 12,34): commas give bad results in the population density calculation. The template will also calculate the area in square miles.
===population===
The population of the commune. Don't use thousands separators like points or spaces (e.g. 5.678 or 34 567): they give bad results in the population density calculation. The census year should be given in the field "population date". You can add references and footnotes in the field "population footnotes" (not in "population"). '''Note:''' Adding references to commune, urban and metro population numbers 'breaks' the settlement template population density calculations for each respective area. For existing communes (i.e. not former communes) the template {{tl|France metadata Wikidata}} should be used, which retrieves the most recent population data from Wikidata. For example:
<syntaxhighlight lang="wikitext">|population = {{France metadata Wikidata|population_total}}
|population date = {{France metadata Wikidata|population_as_of}}
|population footnotes = {{France metadata Wikidata|population_footnotes}}</syntaxhighlight>
===population_demonym===
The adjective describing the people and places of the region. Use the ''English'' demonym by default (e.g., <code>Parisian</code>, not "Parisien").
If the French demonym is included, specify the respective languages in full or via [[:wikt:Wiktionary:List of languages|language code]]. Use the correct capitalization common to each respective language. For example: {{nowrap|<code><nowiki>Parisian (English)<br>parisien (French)</nowiki></code>}} or {{nowrap|<code><nowiki>Parisian (en)<br>parisien (fr)</nowiki></code>}}. Use [[non-breaking space]]s (&nbsp;) or {{tl|nowrap}} to prevent unhelpful text-wrapping in these lines. Do not include the [[feminine gender|feminine form]] as a separate demonym, but do include it as an alternative style of the French demonym if possible: <code>parisien(ne)</code>.
Do not include other languages' demonyms unless they are [[WP:NOTABILITY|notable]] (e.g., Breton names only for Breton places).
===time zone===
Only use this parameter for places in French Polynesia. For other places the time zone is derived from the INSEE code.
===postal code===
The postal code(s) of the commune.
===elevation min m, elevation max m, elevation m===
The minimum, maximum, and average elevation of the commune above sea level in metres. The metres will be converted to feet, and both are displayed.
===website===
The official website of the commune. Please follow the guidelines at [[WP:LINKS]].
== Example: [[Paris]] ==
<!-- Displayed as an infobox -->
{{Infobox French commune
| name = Paris
| population_demonym = Parisian ([[English language|en]])<br />parisien(ne) ([[French language|fr]])
| commune status = [[Communes of France|Commune]] / [[Departments of France|Department]]
| total type =
| image = Panorama Paris December 2007.jpg
| caption = The [[Eiffel Tower]] (foreground) and the skyscrapers of the<br />[[La Défense]] business district (background).
| image flag = Flag of Paris with coat of arms.svg
| image flag size = 85px
| image coat of arms = Grandes Armes de Paris.svg
| image coat of arms size = 120px
| flag_link = Flag of Paris
| shield_link = Coat of arms of Paris
| city motto = ''[[Fluctuat nec mergitur]]''<br />{{nowrap|([[Latin]]: She is tossed by the waves but is not sunk)}}
| coordinates = {{coord|48.856667|2.350833|format=dms}}
| mayor = [[Bertrand Delanoë]]
| party = [[Socialist Party (France)|PS]]
| term = 2008–2014
| subdivisions entry = [[Administrative division|Subdivisions]]
| subdivisions = [[Arrondissements of Paris|20 arrondissements]]
| area km2 = 105.4
| area footnotes = <ref name="area">[https://www.insee.fr/fr/statistiques/1405599?geo=COM-75056 INSEE local statistics], including [[Bois de Boulogne]] and [[Bois de Vincennes]].</ref>
| population date = January 1, 2009 estimate<ref name="pop">{{cite web
| url=http://www.paris.fr/portail/accueil/Portal.lut?page_id=5427&document_type_id=5&document_id=8717&portlet_id=11661
| title=La population par arrondissement de 1990 à 2009
| date=2009-01-01
| publisher=Mairie de Paris
| language=French
| accessdate=2009-07-09}}</ref>
| INSEE = 75056
| postal code = 75001-75020, 75116
| population = 2203817
| population ranking = [[List of communes in France with over 20,000 inhabitants (1999 census)|1st in France]]
| urban area km2 = 2,723
| urban area date = 1999
| urban pop = 10,142,983
| urban pop date = 2006
| metro area km2 = 14518.3
| metro area date = 1999
| metro area pop = 11,769,433
| metro area pop date = 2006
| website = {{URL|http://www.paris.fr/}}
}}
<!-- Displayed as infobox code -->
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox French commune
| name = Paris
| population_demonym = Parisian ([[English language|en]])<br />parisien(ne) ([[French language|fr]])
| commune status = [[Communes of France|Commune]] / [[Departments of France|Department]]
| total type =
| image = Panorama Paris December 2007.jpg
| caption = The [[Eiffel Tower]] (foreground) and the skyscrapers of the<br />[[La Défense]] business district (background).
| image flag = Flag of Paris with coat of arms.svg
| image flag size = 85px
| image coat of arms = Grandes Armes de Paris.svg
| image coat of arms size = 120px
| flag_link = Flag of Paris
| shield_link = Coat of arms of Paris
| city motto = ''[[Fluctuat nec mergitur]]''<br />{{nowrap|([[Latin]]: She is tossed by the waves but is not sunk)}}
| coordinates = {{coord|48.856667|2.350833|format=dms}}
| mayor = [[Bertrand Delanoë]]
| party = [[Socialist Party (France)|PS]]
| term = 2008–2014
| subdivisions entry = [[Administrative division|Subdivisions]]
| subdivisions = [[Arrondissements of Paris|20 arrondissements]]
| area km2 = 105.4
| area footnotes = <ref name="area">[http://www.statistiques-locales.insee.fr/Fiches%5CRS%5CDEP%5C75%5CCOM%5CRS_COM75056.pdf INSEE local statistics], including [[Bois de Boulogne]] and [[Bois de Vincennes]].</ref>
| population date = January 1, 2009 estimate<ref name="pop">{{cite web
| url=http://www.paris.fr/portail/accueil/Portal.lut?page_id=5427&document_type_id=5&document_id=8717&portlet_id=11661
| title=La population par arrondissement de 1990 à 2009
| date=2009-01-01
| publisher=Mairie de Paris
| language=French
| accessdate=2009-07-09}}</ref>
| INSEE = 75056
| postal code = 75001-75020, 75116
| population = 2203817
| population ranking = [[List of communes in France with over 20,000 inhabitants (1999 census)|1st in France]]
| urban area km2 = 2,723
| urban area date = 1999
| urban pop = 10,142,983
| urban pop date = 2006
| metro area km2 = 14518.3
| metro area date = 1999
| metro area pop = 11,769,433
| metro area pop date = 2006
| website = {{URL|http://www.paris.fr/}}
}}
</syntaxhighlight>
;Footnotes
{{reflist}}
{{Clear}}
==TemplateData==
{{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"params": {
"name": {
"required": false,
"label": "Name",
"type": "string",
"description": "English name of location",
"default": "Article Name"
},
"native name": {
"required": false,
"label": "Native Name",
"type": "string",
"description": "Native name of the location"
},
"commune status": {
"required": false,
"label": "Commune Status",
"type": "string",
"description": "Fill to show sub-banner: eg. Type of settlement (City, Commune, Municipality) "
},
"total type": {
"required": false,
"label": "Total Type",
"type": "string",
"description": "Fill to show Area/Population totals next to 'total type' value ''below'' Area/Population in each section line (normally on same line)"
},
"image flag": {
"required": false,
"label": "Image Flag",
"type": "wiki-page-name",
"description": "Image of the flag of commune"
},
"image flag size": {
"required": false,
"label": "Image flag size",
"type": "line",
"description": "Size of image of the flag of commune"
},
"city motto": {
"required": false,
"label": "City Motto",
"type": "string",
"description": "Motto of the city"
},
"image": {
"required": false,
"label": "Image",
"type": "wiki-file-name",
"description": "Image of the place or any notable landmark"
},
"caption": {
"required": false,
"label": "Caption",
"type": "string",
"description": "Caption for the image"
},
"map": {
"required": false,
"label": "Map",
"type": "wiki-page-name",
"description": "For overseas locations, provide an image for the map"
},
"timezone": {
"required": false,
"label": "Timezone",
"type": "string",
"description": "Timezone of the commune"
},
"coordinates": {
"required": true,
"label": "Coordinates",
"type": "string",
"description": "Coordinates of the location using {{coord}}"
},
"arrondissement": {
"required": true,
"label": "Arrondissement",
"type": "string",
"description": "The Arrondissement to which the location belongs"
},
"intercommunality": {
"required": true,
"label": "Intercommunality",
"type": "string",
"description": "Intercommunality of the commune"
},
"mayor": {
"required": false,
"label": "Mayor",
"type": "string",
"description": "Mayor of the commune"
},
"term": {
"required": false,
"label": "Term",
"type": "line",
"description": "The governing period of the mayor. Do not add references here, you can add these in the \"mayor\" parameter."
},
"elevation m": {
"required": false,
"label": "Elevation(meters)",
"type": "number",
"description": "Average elevation of commune above sea level in meters"
},
"elevation min m": {
"required": false,
"label": "Minimum Elevation(meters)",
"type": "number",
"description": "Minimum elevation of the commune in meters"
},
"elevation max m": {
"required": false,
"label": "Maximum Elevation(meters)",
"type": "number",
"description": "Maximum elevation of the commune in meters"
},
"area km2": {
"required": false,
"label": "Area (square km)",
"type": "number",
"description": "Area of the commune in square kilometers"
},
"population": {
"required": true,
"label": "Population",
"type": "number",
"description": "Population of the commune. For existing communes (i.e. not former communes) the template France metadata Wikidata should be used, which retrieves the most recent population data from Wikidata"
},
"population date": {
"required": false,
"label": "Population Date",
"type": "line",
"description": "Date (year) on which population was counted"
},
"INSEE": {
"required": true,
"label": "INSEE",
"type": "number",
"description": "INSEE code for the commune",
"aliases": [
"insee"
]
},
"postal code": {
"required": false,
"label": "Postal code",
"type": "number",
"description": "Postal Code of the commune"
},
"website": {
"required": false,
"label": "Website",
"type": "string",
"description": "Official website of the commune"
},
"canton": {
"label": "Canton",
"type": "string"
},
"image size": {},
"flag link": {
"aliases": [
"flag_link"
]
},
"image coat of arms": {
"description": "Image of coat of arms of commune."
},
"image coat of arms size": {
"description": "Size of image of coat of arms of commune "
},
"shield_link": {},
"adjustable map": {},
"map size": {},
"map caption": {},
"province": {
"description": "Used for places in New Caledonia",
"type": "string"
},
"subdivisions entry": {},
"subdivisions": {},
"party": {},
"area footnotes": {},
"urban pop": {
"description": "Population of the (inner) urban area (''unité urbaine''). To be added to the central commune only"
},
"urban pop date": {},
"urban area date": {},
"urban area km2": {},
"metro area pop": {
"description": "Population of the wider functional urban area (''aire d'attraction d'une ville''). To be added to the central commune only"
},
"metro area pop date": {},
"metro area date": {},
"metro area km2": {},
"population footnotes": {},
"population ranking": {},
"population demonym": {
"aliases": [
"demonym",
"population_demonym"
],
"type": "string"
},
"demonym": {},
"ethnic": {},
"ethnic date": {},
"time zone": {
"aliases": [
"timezone"
],
"description": "Name of the time zone",
"deprecated": "Time zones are derived from the INSEE code"
},
"utc offset": {
"aliases": [
"utc_offset"
],
"description": "Only for French Polynesia, for other places the time zone is derived from the INSEE code"
},
"time zone DST": {
"aliases": [
"time_zone_DST",
"timezone_DST"
],
"type": "string",
"deprecated": "Time zones are derived from the INSEE code"
},
"utc offset DST": {
"aliases": [
"utc_offset_DST"
],
"deprecated": "Time zones are derived from the INSEE code"
},
"dialling code": {},
"elevation footnotes": {},
"footnotes": {},
"map dot label": {},
"department": {
"label": "Department",
"type": "string",
"deprecated": "Unused, remove. Department is derived from INSEE"
},
"commune": {
"description": "Used for places that are part of a commune",
"type": "string"
},
"type": {
"description": "Used for places that are part of a commune.",
"type": "string",
"default": "Part"
},
"region": {
"deprecated": "The region and the department to which the location belongs are retrieved using the (required!) INSEE code."
},
"administrative subdivision": {
"description": "Used for places in French Polynesia"
}
}
}
</templatedata>
{{collapse bottom}}
== Microformat ==
{{UF-hcard-place}}
== Tracking category ==
* {{clc|Pages using infobox French commune with unknown parameters}}
== See also ==
{{About French nav boxes}}
<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:French subdivision infobox templates|Communes]]
[[Category:Templates with coordinates fields]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
b8ebbe16e2918bd7a1711d18b59dec038466165a
Template:Infobox cabinet members/doc
10
1526
2861
2023-05-21T06:45:56Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories where indicated at the bottom of this page, please -->
{{Lua|Module:Infobox cabinet members}}
{{notice|This template is a [[Help:Metatemplating|meta-template]], like {{tl|infobox}}, used for generating other templates. It is not intended to be directly transcluded in articles.}}
{{Generic template demo
|above |topimage |topcaption |image |caption |party_column=true |name_style=font-weight:bold;
|office1 |name1a |party1a |term1a |name1b |party1b |term1b |name1c |party1c |term1c |name1d |party1d |term1d |name1e |party1e |term1e
|office2 |name2a |party2a |term2a |name2b |party2b |term2b |name2c |party2c |term2c |name2d |party2d |term2d |name2e |party2e |term2e
|office3 |name3a |party3a |term3a |name3b |party3b |term3b |name3c |party3c |term3c |name3d |party3d |term3d |name3e |party3e |term3e
|office4 |name4a |party4a |term4a |name4b |party4b |term4b |name4c |party4c |term4c |name4d |party4d |term4d |name4e |party4e |term4e
|office5 |name5a |party5a |term5a |name5b |party5b |term5b |name5c |party5c |term5c |name5d |party5d |term5d |name5e |party5e |term5e
|office6 |name6a |party6a |term6a |name6b |party6b |term6b |name6c |party6c |term6c |name6d |party6d |term6d |name6e |party6e |term6e
|office7 |name7a |party7a |term7a |name7b |party7b |term7b |name7c |party7c |term7c |name7d |party7d |term7d |name7e |party7e |term7e
|office8 |name8a |party8a |term8a |name8b |party8b |term8b |name8c |party8c |term8c |name8d |party8d |term8d |name8e |party8e |term8e
|office9 |name9a |party9a |term9a |name9b |party9b |term9b |name9c |party9c |term9c |name9d |party9d |term9d |name9e |party9e |term9e
|office10 |name10a |party10a |term10a |name10b |party10b |term10b |name10c |party10c |term10c |name10d |party10d |term10d |name10e |party10e |term10e
|office11 |name11a |party11a |term11a |name11b |party11b |term11b |name11c |party11c |term11c |name11d |party11d |term11d |name11e |party11e |term11e
|office12 |name12a |party12a |term12a |name12b |party12b |term12b |name12c |party12c |term12c |name12d |party12d |term12d |name12e |party12e |term12e
|office13 |name13a |party13a |term13a |name13b |party13b |term13b |name13c |party13c |term13c |name13d |party13d |term13d |name13e |party13e |term13e
|office14 |name14a |party14a |term14a |name14b |party14b |term14b |name14c |party14c |term14c |name14d |party14d |term14d |name14e |party14e |term14e
|office15 |name15a |party15a |term15a |name15b |party15b |term15b |name15c |party15c |term15c |name15d |party15d |term15d |name15e |party15e |term15e
|office16 |name16a |party16a |term16a |name16b |party16b |term16b |name16c |party16c |term16c |name16d |party16d |term16d |name16e |party16e |term16e
|office17 |name17a |party17a |term17a |name17b |party17b |term17b |name17c |party17c |term17c |name17d |party17d |term17d |name17e |party17e |term17e
|office18 |name18a |party18a |term18a |name18b |party18b |term18b |name18c |party18c |term18c |name18d |party18d |term18d |name18e |party18e |term18e
|office19 |name19a |party19a |term19a |name19b |party19b |term19b |name19c |party19c |term19c |name19d |party19d |term19d |name19e |party19e |term19e
|office20 |name20a |party20a |term20a |name20b |party20b |term20b |name20c |party20c |term20c |name20d |party20d |term20d |name20e |party20e |term20e
|office21 |name21a |party21a |term21a |name21b |party21b |term21b |name21c |party21c |term21c |name21d |party21d |term21d |name21e |party21e |term21e
|office22 |name22a |party22a |term22a |name22b |party22b |term22b |name22c |party22c |term22c |name22d |party22d |term22d |name22e |party22e |term22e
|office23 |name23a |party23a |term23a |name23b |party23b |term23b |name23c |party23c |term23c |name23d |party23d |term23d |name23e |party23e |term23e
|office24 |name24a |party24a |term24a |name24b |party24b |term24b |name24c |party24c |term24c |name24d |party24d |term24d |name24e |party24e |term24e
|office25=...... |name25a=...... |name25b=...... |name25c=...... |name25d=...... |name25e=......
|office33 |name33a |party33a |term33a |name33b |party33b |term33b |name33c |party33c |term33c |name33d |party33d |term33d |name33e |party33e |term33e
|below
}}
=== Basic ===
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox cabinet members
| above =
| office1 =
| name1a =
| term1a =
| office2 =
| name2a =
| term2a =
| office3 =
| name3a =
| term3a =
...
| office33 =
| name33a =
| term33a =
| below =
}}</syntaxhighlight>
=== Basic with party ===
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox cabinet members
| above =
| party_column = true
| office1 =
| name1a =
| party1a =
| term1a =
| office2 =
| name2a =
| party2a =
| term2a =
| office3 =
| name3a =
| party3a =
| term3a =
...
| office33 =
| name33a =
| party33a =
| term33a =
| below =
}}</syntaxhighlight>
=== Multiple names per office ===
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox cabinet members
| above =
| office1 =
| name1a =
| term1a =
| name1b =
| term1b =
| name1c =
| term1c =
| name1d =
| term1d =
| name1e =
| term1e =
| office2 =
| name2a =
| term2a =
| name2b =
| term2b =
| name2c =
| term2c =
| name2d =
| term2d =
| name2e =
| term2e =
...
| office33 =
| name33a =
| term33a =
| name33b =
| term33b =
| name33c =
| term33c =
| name33d =
| term33d =
| name33e =
| term33e =
| below =
}}</syntaxhighlight>
=== Multiple names per office with party ===
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox cabinet members
| above =
| party_column = true
| office1 =
| name1a =
| party1a =
| term1a =
| name1b =
| party1b =
| term1b =
| name1c =
| party1c =
| term1c =
| name1d =
| party1d =
| term1d =
| name1e =
| party1e =
| term1e =
| office2 =
| name2a =
| party2a =
| term2a =
| name2b =
| party2b =
| term2b =
| name2c =
| party2c =
| term2c =
| name2d =
| party2d =
| term2d =
| name2e =
| party2e =
| term2e =
...
| office33 =
| name33a =
| party33a =
| term33a =
| name33b =
| party33b =
| term33b =
| name33c =
| party33c =
| term33c =
| name33d =
| party33d =
| term33d =
| name33e =
| party33e =
| term33e =
| below =
}}</syntaxhighlight>
=== Float behavior ===
The default is for the infobox to float to the right of the page. To float the infobox to the left, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| float = left
</syntaxhighlight>
To float to the center, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| float = center
</syntaxhighlight>
To disable floating, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| float = none
</syntaxhighlight>
=== Images ===
The template supports the placement of images in two different locations. For an image above the above line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| topimage =
| topcaption =
</syntaxhighlight>
For an image below the above line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| image =
| caption =
</syntaxhighlight>
=== Color and styling ===
To use a normal font for the officeholder names, add
<syntaxhighlight lang="wikitext" style="overflow:auto">
| name_style = font-weight:normal
</syntaxhighlight>
To change the border color for the first line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| border_color1 = #000000
</syntaxhighlight>
To remove the border for the second line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| border_color2 = none
</syntaxhighlight>
To remove the border color for the 33rd line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| border_color33 = transparent
</syntaxhighlight>
To change the styling of the above line, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| abovestyle =
</syntaxhighlight>
=== Heading labels ===
To override the default heading labels, use
<syntaxhighlight lang="wikitext" style="overflow:auto">
| office_label =
| name_label =
| party_label =
| term_label =
</syntaxhighlight>
== See also ==
* {{tl|Infobox government cabinet}}
* {{tl|Cabinet table start}}
* {{tl|Cabinet table minister}}
* {{tl|Cabinet table ministry}}
<includeonly>{{Sandbox other|
| <!-- Categories below this line, please: -->
[[Category:Politics and government infobox templates|Cabinet]]
[[Category:Wikipedia metatemplates]]
}}</includeonly>
1730f7fe4ed2b7413f798a24e681c127a39fb10b
Template:Infobox government cabinet/doc
10
1529
2864
2023-05-21T06:45:58Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
{{Parameter names example
| kabineto_pavadinimas
| cabinet_number
| cabinet_type
| jurisdiction
| flag
| flag_border
| flag_width
| incumbent
| image
| image_size
| alt
| caption
| date_formed
| date_dissolved
| government_head_title
| government_head
| government_head_history
| deputy_government_head_title
| deputy_government_head
| other_government_minister_title
| other_government_minister
| state_head
| governor
| governor_general
| represented_by
| members_number= {{{members_number}}} or {{{current_number}}}
| former_members_number
| total_number
| political_party= {{{political_party}}} or {{{political_parties}}}
| legislature_status
| opposition_cabinet
| opposition_party= {{{opposition_party}}} or {{{opposition_parties}}}
| opposition_leader= {{{opposition_leader}}} or {{{opposition_leaders}}}
| election
| last_election
| legislature_term
| budget
| advice_and_consent1
| advice_and_consent2
| advice_and_consent3
| advice_and_consent4
| advice_and_consent5
| incoming_formation
| outgoing_formation
| predecessor= {{{predecessor}}} or {{{previous}}}
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox government cabinet
| cabinet_name =
| cabinet_number =
| cabinet_type = <!-- an alternative name for "cabinet"; defaults to "cabinet" -->
| jurisdiction =
| flag =
| flag_border = true
| flag_width =
| incumbent =
| image =
| image_size =
| alt =
| caption =
| date_formed = <!-- {{Start date|YYYY|MM|DD|df=y}} -->
| date_dissolved = <!-- {{End date|YYYY|MM|DD|df=y}} -->
| state_head_title = <!-- e.g., Monarch, President; defaults to "Head of state" -->
| state_head =
| government_head_title = <!-- e.g., Prime Minister -->
| government_head =
| government_head_history =
| deputy_government_head_title =
| deputy_government_head =
| other_government_minister_title =
| other_government_minister =
| governor_title =
| governor =
| governor_general_title =
| governor_general =
| represented_by_title =
| represented_by =
| members_number = <!-- or | current_number = -->
| former_members_number =
| total_number =
| political_party = <!-- or | political_parties = -->
| legislature_status = <!-- e.g., coalition government -->
| opposition_cabinet =
| opposition_party = <!-- or | opposition_parties = -->
| opposition_leader = <!-- or | opposition_leaders = -->
| election =
| last_election =
| legislature_term =
| budget =
| advice_and_consent1 =
| advice_and_consent2 = <!-- up to | advice_and_consent5 = -->
| incoming_formation = <!-- events leading to formation of govt.: e.g., [[Norway debate]] -->
| outgoing_formation = <!-- events or debate leading to dissolution -->
| predecessor = <!-- or | previous = -->
| successor =
}}
</syntaxhighlight>
Separate multiple values using {{Tl|plainlist}}.
=== Multiple images ===
For an array of up to four images, use:
<syntaxhighlight lang="wikitext" style="overflow: auto;">
| image =
| image_size = x85px
| alt =
| image2 =
| image_size2 = x85px
| alt2 =
| image3 =
| image_size3 = x85px
| alt3 =
| image4 =
| image_size4 = x85px
| alt4 =
| caption =
</syntaxhighlight>
== Tracking categories ==
* {{clc|Pages using infobox government cabinet with number and without jurisdiction}}
* {{clc|Pages using infobox government cabinet with government_head_history}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Politics and government infobox templates|Government Cabinet]]
[[Category:National cabinets|τ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
47e0296cd647916d07437e565c8bece63f7e7699
Template:Infobox cardinal styles/doc
10
1276
2610
2023-05-21T06:46:00Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at bottom of page and interwikis at Wikidata -->
{{Wraps infobox|Infobox manner of address}}
== Usage ==
{{generic template demo| name | cardinal name | image | image_size | dipstyle | offstyle | See | posthumous }}
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields.
<syntaxhighlight lang="wikitext" style="overflow:auto">{{Infobox cardinal styles
| name =
| dipstyle =
| offstyle =
| relstyle =
| See =
| image =
}}</syntaxhighlight>
To override the default image, add
<syntaxhighlight lang="wikitext">
| image = CardinalCoA_PioM.svg
</syntaxhighlight>
where "CardinalCoA_PioM.svg" is the name of the image.
==Microformat==
{{UF-hcard-person}}
<includeonly>{{sandbox other||
<!-- Categories below this line and interwikis at Wikidata -->
{{DEFAULTSORT:Cardinal styles}}
[[Category:Catholic infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Embeddable templates|{{PAGENAME}}]]
}}</includeonly>
c8651da3f986626060cf71fd5cd9f41761284c6e
Template:Infobox pope styles/doc
10
1280
2614
2023-05-21T06:55:22Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox Pope styles
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| relstyle =
| deathstyle =
}}
</syntaxhighlight>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Pope styles}}
[[Category:Styles infobox templates]]
[[Category:Catholic infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
2322bc87f258783d0c4ddd716987eee41a124732
Template:Infobox manner of address/doc
10
1268
2602
2023-05-21T06:56:14Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
__TOC__
{{clear}}
== Usage ==
{{Parameter names example <!--| child | embed | background | color | colour -->| type | name = {{{name}}} or {{{royal name}}}<!-- | consort -->| image | image_alt | image_size | size | image2 | image2_alt | image2_size | size2 | caption | reference = {{{reference}}} or {{{dipstyle}}} | spoken = {{{spoken}}} or {{{offstyle}}} | religious = {{{religious}}} or {{{relstyle}}} | posthumous = {{{posthumous}}} or {{{deathstyle}}} | alternative = {{{alternative}}} or {{{altstyle}}} | informal | see
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox manner of address
| type = <!-- default is "Styles of" -->
| name =
| consort =
| image =
| image_size =
| image_alt =
| image2 =
| image2_size =
| image2_alt =
| caption =
| reference =
| spoken =
| religious =
| posthumous =
| alternative =
| informal =
| see =
}}
</syntaxhighlight>
{{clear}}
===Parameters===
; child {{nobold|or}} embed
: Allows this template to be embedded in another template; see [[Wikipedia:WikiProject Infoboxes/embed]]
; background
: An alternative color for overriding the default grey background color
; color {{nobold|or}} colour
: An alternative text color for overriding the default black text color
; type
: Can be set to "Monarchial" for "Monarchial styles" or "Papal" for "Papal styles", default is "Styles of".
; name {{nobold|or}} royal name
: Name which appears at top of infobox
; consort
: if defined, adds "as consort" after name
; image
: (optional) [[Coat of arms]] image
; image_size
: (optional) size of the image
; image_alt
: (optional, but recommended) alt text for accessibility
; image2
: (optional) second image
; image2_size
: (optional) size of second image
; image2_alt
: (optional, but recommended) alt text for accessibility
; caption
: (optional) caption text displayed below image(s)
; reference {{nobold|or}} dipstyle
: [[Style (manner of address)|Reference style]] (originally labeled: Diplomatic style)
; spoken {{nobold|or}} offstyle
: Spoken style (originally labeled: Official spoken style)
; religious {{nobold|or}} relstyle
: Religious style
; posthumous {{nobold|or}} deathstyle
: Posthumous style
; alternative {{nobold|or}} altstyle
: Alternative style (originally labeled: Alternative spoken style)
; informal
: Informal style
; see
: [[Episcopal see|See]]
== Examples ==
===Belgium===
{{Infobox manner of address
| name = Queen Fabiola of Belgium
| image = State Coat of Arms of Belgium.svg
| image_size = 50px
| image_alt = State Coat of Arms of Belgium
| reference = [[Majesty|Her Majesty]]
| spoken = Your Majesty
}}
[[Queen Fabiola of Belgium]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox manner of address
| name = Queen Fabiola of Belgium
| image = State Coat of Arms of Belgium.svg
| image_size = 50px
| image_alt = State Coat of Arms of Belgium
| reference = [[Majesty|Her Majesty]]
| spoken = Your Majesty
}}
</syntaxhighlight>
{{clear}}
===Brazil===
{{Infobox manner of address
| name = Pedro II, Emperor of Brazil
| image = CoA Empire of Brazil (1870-1889).svg
| image_size = 60px
| image_alt = CoA Empire of Brazil (1870-1889)
| reference = [[Imperial Majesty (style)|His Imperial Majesty]]
| spoken = Your Imperial Majesty
| alternative = Sire
}}
[[Pedro II of Brazil]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox manner of address
| name = Pedro II, Emperor of Brazil
| image = CoA Empire of Brazil (1870-1889).svg
| image_size = 60px
| image_alt = CoA Empire of Brazil (1870-1889)
| reference = [[Imperial Majesty (style)|His Imperial Majesty]]
| spoken = Your Imperial Majesty
| alternative = Sire
}}
</syntaxhighlight>
{{clear}}
===Greece===
{{Infobox manner of address
| name = King Alexander of the Hellenes
| image = Royal Arms of Greece (1863-1936).svg
| image_size = 40px
| image_alt = Royal Arms of Greece (1863-1936)
| reference = [[Majesty|His Majesty]]
| spoken = Your Majesty
}}
[[Alexander of Greece (king)]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox manner of address
| name = King Alexander of the Hellenes
| image = Royal Arms of Greece (1863-1936).svg
| image_size = 40px
| image_alt = Royal Arms of Greece (1863-1936)
| reference = [[Majesty|His Majesty]]
| spoken = Your Majesty
}}
</syntaxhighlight>
{{clear}}
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
== See also ==
* [{{fullurl:index.php|title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0}} List of articles] this template
'''Additional information on styles'''
* [[Royal Highness|HRH]]
* [[Royal and noble styles]]
* [[Style (form of address)]]
'''Templates which use this one'''
* [[Template:Infobox royal styles]]
** [[Template:Infobox Austrian royalty styles]]
** [[Template:Infobox Belgian royalty styles]]
** [[Template:Infobox British royalty styles]]
** [[Template:Infobox Dutch royalty styles]]
** [[Template:Infobox French royalty styles]]
** [[Template:Infobox Portuguese royalty styles]]
** [[Template:Infobox Spanish royalty styles]]
* Religious
** [[Template:Infobox archbishop styles]]
** [[Template:Infobox bishop styles]]
** [[Template:Infobox cardinal styles]]
** [[Template:Infobox pope styles]]
* [[Template:Infobox consort styles]]
* [[Template:Infobox president styles]]
* [[Template:Infobox viceroy styles]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Manner Of Address}}
[[Category:Styles infobox templates| ]]
[[Category:Embeddable templates|{{PAGENAME}}]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
4f5f116de85d9b8a76b78dc7da7522cfa11aa5d6
Template:Infobox British royalty styles/doc
10
1275
2609
2023-05-21T06:56:15Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox British royalty styles|type
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| altstyle =
}}
</syntaxhighlight>
where <code>''type''</code> = <code>england</code>, <code>greatbritain</code>, <code>republic</code>, <code>scotland</code>, <code>own</code> or <code>none</code>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:British Royalty Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
2799b8bdbb7f0d5676ae4c2ca1012ec97a44f806
Template:Infobox UK country/doc
10
1424
2759
2023-05-21T06:57:16Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{#ifeq:{{{nested|no}}}|no|<!-- then-show-doc-header-at-top--
-->{{documentation subpage}}
}}
{{Ombox| type = style| image = [[File:Ambox warning yellow.svg|40x40px|alt=|link=]]| text = '''This template is a customized wrapper for {{tl|Infobox country}}'''. Any field from {{tld|Infobox country}} can work so long as it is added to this template first. }}
This infobox template is used to generate an infobox for the righthand side of a [[Countries of the United Kingdom|UK country]] article.
{{Infobox UK country
| conventional_long_name = ''PAGENAME''
| common_name = <nowiki/>''PAGENAME''<wbr/>
| image_map =
| map_caption =
| legal_jurisdiction = ''legal_jurisdiction''
| government_type = ''government_type''
| monarch = ''monarch''
| first_minister = ''first_minister''
| deputy_first_minister = ''deputy_first_minister''
| secretary_of_state = ''secretary_of_state''
| number_of_mps = <wbr/>''number_of_mps''
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox UK country
| conventional_long_name = <!-- defaults to page name -->
| common_name = <!-- defaults to page name -->
| native_name =
| image_flag =
| flag_caption =
| image_coat =
| symbol_width =
| symbol_type =
| national_motto =
| englishmotto =
| national_anthem =
| image_map = <!-- defaults to "common_name in the UK and Europe.svg" -->
| map_caption = <!-- defaults to "Location of common_name (dark green) – in Europe (green & dark grey) – in the United Kingdom (green)" -->
| image_map2 = <!-- Another map -->
| status =
| capital =
| coordinates =
| largest_city =
| languages_type =
| languages =
| languages2_type =
| languages2 =
| languages2_sub =
| ethnic_groups =
| ethnic_groups_year =
| religion =
| religion_year =
| demonym =
| type =
| membership_type = <!-- defaults to "Sovereign state" -->
| membership = <!-- defaults to "United Kingdom" -->
| legal_jurisdiction =
| government_type =
| monarch =
| first_minister =
| deputy_first_minister =
| secretary_of_state =
| number_of_mps =
| legislature =
| sovereignty_type =
| sovereignty_note =
| established_event1 =
| established_date1 =
| established_event2 =
| established_date2 =
| established_event3 =
| established_date3 =
| established_event4 =
| established_date4 =
| established_event5 =
| established_date5 =
| area_rank =
| area_magnitude =
| area_km2 =
| area_sq_mi =
| percent_water =
| population_estimate =
| population_estimate_rank =
| population_estimate_year =
| population_census =
| population_census_year =
| population_density_km2 =
| population_density_sq_mi =
| population_density_rank =
| pop_den_footnote =
| GVA =
| GVA_rank =
| GVA_year =
| GVA_per_capita =
| GVA_per_capita_rank =
| GDP_PPP =
| GDP_PPP_rank =
| GDP_PPP_year =
| GDP_PPP_per_capita =
| GDP_PPP_per_capita_rank =
| GDP_nominal =
| GDP_nominal_rank =
| GDP_nominal_year =
| GDP_nominal_per_capita =
| GDP_nominal_per_capita_rank =
| Gini_year =
| Gini_change =
| Gini =
| Gini_ref =
| Gini_rank =
| HDI_year =
| HDI_change =
| HDI =
| HDI_ref =
| HDI_rank =
| currency = <!-- defaults to "Pound sterling" -->
| currency_code = <!-- defaults to "GBP" -->
| time_zone = <!-- defaults to "GMT" -->
| utc_offset =
| time_zone_DST = <!-- defaults to "BST" -->
| utc_offset_DST = <!-- defaults to "+1" -->
| date_format = <!-- defaults to "dd/mm/yyyy (AD)" -->
| drives_on = <!-- defaults to "left" -->
| calling_code = <!-- defaults to "+44" -->
| patron_saint =
| cctld =
| official_website =
| footnote_a =
| footnote_b =
| footnote_c =
| footnote_d =
| footnote_e =
| footnote_f =
}}
</syntaxhighlight>
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:United Kingdom subdivision infobox templates]]
}}</includeonly>
fb4e65bf5e2ac4122b444ede138230d1c8a6d0f4
Template:Infobox Dutch royalty styles/doc
10
1278
2612
2023-05-21T06:57:17Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{Wraps infobox|Infobox manner of address}}
== Usage ==
<syntaxhighlight lang="wikitext">{{Infobox Dutch royalty styles|type
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| altstyle =
}}</syntaxhighlight>
where <code>''type''</code> = <code>1581</code>, <code>1665</code>, <code>1806</code>, <code>1808</code>, <code>1815</code>, <code>own</code> or <code>none</code>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Dutch Royalty Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
c3dcb299d9bb6c2cd5da881ea571b85c911778eb
Template:Infobox Spanish royalty styles/doc
10
1284
2618
2023-05-21T06:57:17Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox Spanish royalty styles|type
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| altstyle =
}}
</syntaxhighlight>
where <code>''type''</code> = <code>aragon</code>, <code>asturias</code>, <code>castile</code>, <code>granada</code>, <code>leon</code>, <code>navarre</code>, <code>1475-1516</code>, <code>1516-1556</code>, <code>1556-1700</code>, <code>1700-1868</code>, <code>1808-1812</code>, <code>1870-1873</code>, <code>1873-1931</code>, <code>own</code> or <code>none</code>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Spanish Royalty Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
24c86fe6b4fe448111a3552dc697144a0f5b0551
Template:Infobox French royalty styles/doc
10
1279
2613
2023-05-21T06:57:18Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{Wraps infobox|Infobox manner of address}}
== Usage ==
<syntaxhighlight lang="wikitext">{{Infobox French royalty styles|type
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| altstyle =
}}</syntaxhighlight>
where <code>type</code> = <code>kingdom</code>, <code>old</code>, <code>own</code>, or <code>none</code>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:French Royalty Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
ff8e82f49b02deda6d37150cf5211766432efe97
Template:Infobox Portuguese royalty styles/doc
10
1281
2615
2023-05-21T06:58:15Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox Portuguese royalty styles|type
| name =
| image =
| image_size =
| dipstyle =
| offstyle =
| altstyle =
}}
</syntaxhighlight>
where <code>''type''</code> = <code>Aviz</code>, <code>UK</code>, <code>Constitution</code>, <code>own</code> or <code>none</code>
== Tracking category ==
* {{clc|Pages using infobox manner of address with unknown parameters}}
<includeonly>{{basepage subpage|
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Portuguese Royalty Styles}}
[[Category:Portugal royalty and nobility navigational boxes]]
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
b2bfb64c1824818758f933053b9556925cfb05a1
Template:Infobox Archbishop styles/doc
10
1271
2605
2023-05-21T07:56:39Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{Wraps infobox|Infobox manner of address}}
== Usage ==
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields.
<div style="width:300px; background:#dddddd; border:1px solid black; padding:0.5em 1em 0.5em 1em;">
<syntaxhighlight lang="wikitext">{{Infobox archbishop styles
| embed = <!-- embed in another infobox -->
| archbishop name =
| dipstyle =
| offstyle =
| relstyle =
| deathstyle = <!--if applicable-->
| image =
}}</syntaxhighlight>
</div>
==Microformat==
{{UF-hcard-person}}
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
{{DEFAULTSORT:Archbishop styles}}
[[Category:Christian infobox templates]]
[[Category:Styles infobox templates]]
}}</includeonly>
54ddff337899e26d5bf4e7afe4c5cdbbd6ea8bcc
Template:Infobox country languages/doc
10
1350
2685
2023-05-21T07:56:40Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
This template is an infobox intended to be used on articles named "Languages of X country"
==Usage==
All parameters are optional, except <kbd>country</kbd>.
{{Parameter names example| country | image | image size | caption | official | semi-official | national | unofficial | main | indigenous | regional | vernacular | minority | immigrant | foreign | sign | keyboard | keyboard image | source
}}
<syntaxhighlight lang="wikitext" style=overflow:auto; white-space:pre;>
{{Infobox country languages
|country =
|image =
|image size =
|caption =
|official =
|semi-official =
|national =
|unofficial =
|main =
|indigenous =
|regional =
|vernacular =
|minority =
|immigrant =
|foreign =
|sign =
|keyboard =
|keyboard image =
|source =
}}
</syntaxhighlight>{{-}}
==Example==
{{Infobox country languages
|country = France
|official = French
|regional = Alsatian, Basque, Breton, Catalan, Corsican, Flemish, Franco-Provençal, Occitan, Oïl languages
|minority = Maghrebi Arabic, Portuguese, Italian, Spanish
|foreign = {{ubl|English{{right|36%}}|Spanish{{right|13%}}|German{{right|8%}}}}
|sign = French Sign Language
}}
<syntaxhighlight lang="wikitext" style=overflow:auto; white-space:pre;>
{{Infobox country languages
|country = France
|official = French
|regional = Alsatian, Basque, Breton, Catalan, Corsican, Flemish, Franco-Provençal, Occitan, Oïl languages
|minority = Maghrebi Arabic, Portuguese, Italian, Spanish
|foreign = {{ubl|English{{right|36%}}|Spanish{{right|13%}}|German{{right|8%}}}}
|sign = French Sign Language
}}
</syntaxhighlight>{{-}}
== Tracking category ==
* {{clc|Pages using Infobox country languages with unknown parameters}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates|Languages]]
[[Category:Language infobox templates|Country languages]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
be5adc473e8cd2e683d9309e81d727b878c1ad95
Template:Infobox bishop styles/doc
10
1274
2608
2023-05-21T08:02:12Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
== Usage ==
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields.
<div style="width:300px; background:#dddddd; border:1px solid black; padding:0.5em 1em 0.5em 1em;">
<syntaxhighlight lang="wikitext">{{Infobox bishop styles
| embed = <!-- embed in another infobox -->
| bishop name =
| dipstyle =
| offstyle =
| relstyle =
| deathstyle = <!--if applicable-->
| image =
}}</syntaxhighlight>
</div>
==Microformat==
{{UF-hcard-person}}
<includeonly>{{sandbox other||
<!-- Categories below this line and interwikis at Wikidata -->
{{DEFAULTSORT:Bishop styles}}
[[Category:Christian infobox templates]]
[[Category:Styles infobox templates]]
}}</includeonly>
56c8038b9efb231043401d3c15e89a65372539ca
Template:Infobox name module/doc
10
1347
2682
2023-05-21T19:07:48Z
w>Gonnym
0
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{high-use}}
{{Tl|Infobox name module}} is used to add a film's original native title (along with the romanized equivalent if necessary) to the infobox on film articles in cases where the [[WP:COMMONNAME]] title of the film is different. It is NOT for adding general purpose translations to the infobox, even in cases where the film was a co-production between several different countries. Any title besides the original native copyrighted title should be removed. In cases where there is a dispute over which title is the native title, discuss the matter at the article talk page and arrive at a consensus before adding the title to the infobox.
== Usage ==
The template takes the various film titles and is assigned to the {{para|native_name}} parameter at {{tl|Infobox film}}. The native language and original title of a film can be assigned to the <code>language</code> and <code>title</code> parameters.
This template is not compatible with use in the {{para|native_name}} parameter in infoboxes that wrap that parameter in {{tag|span}} or {{tag|div}} tags; its use in such situations causes misnested span or div tags. In those infoboxes, put this template in {{para|module}} or {{para|embedded}}, if present.
This template used to support parameters for languages with multiple writing systems. They have been removed following a [[Wikipedia:Templates for discussion/Log/2017 April 7#Template:Infobox name module|successful merger proposal]] and are replaced with other templates which have more options, which are listed in the [[#Former parameters]] section. The parameters supported by this template are {{para|1}}, {{para|2}}, {{para|language}}, {{para|nolink}}, {{para|title}}, {{para|original}} and {{para|translation}}.
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox name module
| language =
| title =
| nolink =
| translation =
}}
</syntaxhighlight>
== Parameters ==
All parameters are optional.
The first two parameters do not need to be named. For example, <code><nowiki>{{Infobox name module|Japanese|千と千尋の神隠し}}</nowiki></code> and <code><nowiki>{{Infobox name module|ja|千と千尋の神隠し}}</nowiki></code> will render the same as <code><nowiki>{{Infobox name module|language=Japanese|title=千と千尋の神隠し}}</nowiki></code>. An example of this type of usage can be viewed at [https://en.wikipedia.org/w/index.php?title=Godless_(film)&diff=745870294&oldid=745865104 Godless (film)] where the Bulgarian title is rendered in the infobox.
{| class="wikitable" style="width:100%;"
! style="width:5em;" | Parameter
! Explanation
|-
| language || The name of the language either in full (e.g. English) or using an {{tl|ISO 639 name}} (e.g. "en"). If the language parameter is not set then the template will automatically set the name of the field to "Original title".
|-
| title || The film's title as represented in the language
|-
| original || The same parameter as "title". They can be used interchangeably. "Title" was introduced as a more intuitive parameter name when the template was updated, but "original" is retained to ensure older versions of the template continue to work correctly.
|-
| nolink || Set to "1" to deactivate the automatic linking of the language
|-
| translation || Translation of native name
|-
|}
== Examples ==
{{Infobox film
| name = The Year of the Discovery
| native_name = {{Infobox name module
| language = Spanish
| title = El año del descubrimiento
}}
| director = Luis López Carrasco
| producer = Pedro Palacios<br />Daniel M. Caneiro<br />Ricard Sales<br />Marta Lacima<br />Luis Ferrón<br />Luis López Carrasco<br />Javier Fernández
| writer = Raúl Liarte<br />Luis López Carrasco
| starring =
| music =
| cinematography = Sara Gallego Grau
| editing = Sergio Jiménez Barranquero
| studio =
| distributor =
| released = {{Film date|df=y|2020|01|25|[[International Film Festival Rotterdam|IFFR]]|2020|11|13|Spain}}
| runtime = 200 minutes
| country = Spain<br />Switzerland
| language = Spanish
| budget =
| gross =
}}
Add this code:
<syntaxhighlight lang="wikitext" style="overflow: auto;">
| native_name = {{Infobox name module
| language = Spanish
| title = El año del descubrimiento
}}
</syntaxhighlight>
or
<syntaxhighlight lang="wikitext" style="overflow: auto;">
| native_name = {{Infobox name module|es|El año del descubrimiento}}
</syntaxhighlight>
To the infobox:
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox film
| name = The Year of the Discovery
| native_name = {{Infobox name module
| language = Spanish
| title = El año del descubrimiento
}}
| director = Luis López Carrasco
| producer = Pedro Palacios<br />Daniel M. Caneiro<br />Ricard Sales<br />Marta Lacima<br />Luis Ferrón<br />Luis López Carrasco<br />Javier Fernández
| writer = Raúl Liarte<br />Luis López Carrasco
| starring =
| music =
| cinematography = Sara Gallego Grau
| editing = Sergio Jiménez Barranquero
| studio =
| distributor =
| released = {{Film date|df=y|2020|01|25|[[International Film Festival Rotterdam|IFFR]]|2020|11|13|Spain}}
| runtime = 200 minutes
| country = Spain<br />Switzerland
| language = Spanish
| budget =
| gross =
}}
</syntaxhighlight>
== Former parameters ==
This template formely used to support parameters for languages with multiple writing systems. The usage of these parameters is deprecated and is slated for removal soon. They are replaced from other templates which give more options for customization in addition to what this template used to support.
===Chinese===
* Replaced by {{tl|Infobox Chinese}} or {{tl|Infobox Chinese/Chinese}}
{| class="wikitable" style="width:100%;"
! style="width:5em;" | Parameter
! Explanation
|-
| traditional || The film's name in [[Traditional Chinese characters]] as used in [[Taiwan]], [[Hong Kong]], and [[Macau]]
|-
| simplified || The film's name in [[Simplified Chinese characters]] as used in [[China]], [[Malaysia]], and [[Singapore]]
|-
| chinese || The film's name in [[Chinese characters]], use only when Simplified Chinese and Traditional Chinese are identical
|-
| pinyin || The film's [[Standard Chinese|Mandarin Chinese]] name in the [[Pinyin]] romanization system
|-
| jyutping || The film's [[Cantonese]] name in the [[Jyutping]] romanization system
|-
| poj || The film's [[Taiwanese Hokkien]] name in the [[Pe̍h-ōe-jī]] romanization system
|-
| lbl8 || Chinese dialect spoken in film if it's not Mandarin, Cantonese or Hokkien, e.g. [[Shanghainese]], [[Suzhou dialect]], [[Hakka]], [[Hokkien]], [[Taishanese]]
|-
| data8 || The film's romanized name in the dialect of lbl8
|-
| translation || The film's unofficially translated title (if very different from the official English title)
|}
===Japanese===
* Replaced by {{tl|Infobox Japanese}}
{| class="wikitable" style="width:100%;"
! style="width:5em;" | Parameter
! Explanation
|-
| kanji || Film's name as it appears in Japanese language sources, whether or not it includes Japanese [[kanji]], [[hiragana]], [[katakana]], or a mix of the three with Latin text.
|-
| romaji || The [[Hepburn romanization]] of the Japanese language title.
|-
| translation || The film's unofficially translated title (if very different from the official English title)
|}
===Korean===
* Replaced by {{tl|Infobox Korean}} or {{tl|Infobox Chinese/Korean}}
{| class="wikitable" style="width:100%;"
! style="width:5em;" | Parameter
! Explanation
|-
| <code>hangul</code>
| The Korean title of the film in [[hangul]]. Leaving this field empty will add the page to [[:Category:Articles needing Korean script or text]].
|-
| <code>hanja</code>
| The Korean title of the film in [[hanja]]. If hanja is required for the article but unknown, use <code>!</code> to add the page to [[:Category:Wikipedia articles needing hanja]].
|-
| <code>rr</code>
| The [[Revised Romanization of Korean|Revised Romanization]] of the Korean title. Do '''not''' use italics, as the infobox will automatically italicize any text in this parameter. Leaving this field empty will add the page to [[:Category:Wikipedia articles needing romanized Korean]].
|-
| <code>mr</code>
| The [[McCune–Reischauer]] of the Korean title. Do '''not''' use italics, as the infobox will automatically italicize any text in this parameter. Leaving this field empty will add the page to [[:Category:Wikipedia articles needing romanized Korean]].
|-
| <code>context</code>
| Context specification. Use <code>context = north</code> for North Korean films '''only'''.
|-
| <code>translation</code>
| The film's unofficially translated title (if very different from the official English title)
|}
===Vietnamese===
* Replaced by {{tl|Infobox Chinese/Vietnamese}}
{| class="wikitable" style="width:100%;"
! style="width:5em;" | Parameter
! Explanation
|-
| <code>chuquocngu</code>
| The [[Vietnamese alphabet]] of the Vietnamese language title.
|-
| <code>han-nom</code>
| The [[Hán-Nôm]] of the Vietnamese language title.
|-
| <code>translation</code>
| The film's unofficially translated title (if very different from the official English title)
|}
==Templatedata==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {},
"2": {},
"language": {},
"nolink": {},
"title": {
"aliases": [
"original"
]
},
"translation": {}
},
"paramOrder": [
"1",
"2",
"language",
"nolink",
"title",
"translation"
],
"format": "block"
}
</templatedata>
{{Film- and television-related infobox templates}}
<includeonly>{{Sandbox other||
<!-- EDIT CATEGORIES BELOW THIS LINE-->
[[Category:Film infobox templates|Infobox]]
}}</includeonly>
fcbf19a6f3724d17fef3930a1e320cec8ece7ac1
Template:Infobox royalty
10
1139
2465
2023-05-23T14:10:09Z
w>Neveselbert
0
see talk
wikitext
text/x-wiki
{{#if:{{Has short description}} |<!--Do nothing--> |{{Infobox royalty/short description|{{{title|{{{succession|}}}}}}}}}}
{{infobox
| child = {{#ifeq:{{lc:{{{embed|}}}}}|yes|yes}}
| bodyclass = vcard
| aboveclass = fn
| abovestyle = background-color: #cbe; font-size: 125%
| above = {{#ifeq:{{lc:{{{embed|}}}}}|yes|| {{{name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}} }}
| subheader1 = {{#if: {{{title|}}} |<!-- TITLETEXT SWITCH: EMBEDDED BY REALM (ALPHABETICALLY) -->
''{{{title|}}}'' {{{titletext|{{#switch:{{lc:{{{more}}}}}
| no =
| austria = ''[[Emperor of Austria#Full titles|(more...)]]''
| belgium = ''[[Monarchy of Belgium#Title|(more...)]]''
| britain = ''[[Style of the British sovereign#Styles of British sovereigns|(more...)]]''
| china = ''[[Chinese sovereign|(more...)]]''
| cyprus = ''[[Style of the Greek Sovereign#List of changes to the royal style|(more...)]]''
| denmark = ''[[Style of the Danish sovereign|(more...)]]''
| en-sco = ''[[Style of the British sovereign#Styles of English and Scottish sovereigns|(more...)]]''
| england = ''[[Style of the British sovereign#Styles of English sovereigns|(more...)]]''
| ethiopia = ''[[Emperor of Ethiopia#Style|(more...)]]''
| france = ''[[Style of the French sovereign#List of changes to the royal style|(more...)]]''
| hre = ''[[Holy Roman Emperor#Coronation|(more...)]]''
| hungary = ''[[Styles of Hungarian sovereigns|(more...)]]''
| italy = ''[[Style of the Italian sovereign|(more...)]]''
| jerusalem = ''[[Kings of Jerusalem#Kings of Jerusalem (1099–1291)|(more...)]]''
| luxembourg = ''[[Grand Duke of Luxembourg#Full titles|(more...)]]''
| malaysia = ''[[Malay titles#Malay_royalty|(more...)]]''
| monaco = ''[[Style of the Monegasque sovereign|(more...)]]''
| netherlands = ''[[Monarchy of the Netherlands#Full title|(more...)]]''
| norway = ''[[Style of the Norwegian sovereign|(more...)]]''
| parma = ''[[List of Dukes of Parma|(more...)]]''
| portugal = ''[[Style of the Portuguese sovereign|(more...)]]''
| russia = ''[[Tsar#Full style of Russian Sovereigns|(more...)]]''
| scotland = ''[[Style of the monarchs of Scotland#From the late Middle Ages to the Acts of Union|(more...)]]''
| sicilies = ''[[Kingdom of the Two Sicilies#Titles of King of the Two Sicilies|(more...)]]''
| spain-crown = ''[[List of titles and honours of the Spanish Crown|(more...)]]''
| spain-heir = ''[[Titles held by the heir apparent to the Spanish Throne|(more...)]]''
| sweden = ''[[Style of the Swedish sovereign|(more...)]]''
}}}}}
}}
| imageclass = photo
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright=1.0|alt={{{alt|}}}|suppressplaceholder=yes}}
| captionstyle = line-height:normal;padding-bottom:0.2em;padding-top:0.2em;
| caption = {{{caption|}}}
| headerstyle = background-color: #e4dcf6;line-height:normal;padding:0.2em 0.2em
| header1 = {{#if:{{{succession|}}}|{{{succession}}} {{#if:{{{moretext|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext}}} </div>}}}}
| label2 = {{if empty| {{{reign-type|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data2 = {{{reign|}}}
| label3 = {{#switch:{{lc:{{{cor-type}}}}}
| britain = [[Coronation of the British monarch|Coronation]]
| france = [[Coronation of the French monarch|Coronation]]
| hre = [[Coronation of the Holy Roman Emperor|Coronation]]
| hungary = [[Coronation of the Hungarian monarch|Coronation]]
| japan = [[Enthronement of the Japanese emperor|Enthronement]]
| malaysia = [[Installation of the Yang di-Pertuan Agong|Installation]]
| norway = [[Coronations in Norway|Coronation]]
| ottoman = [[Sword of Osman|Sword girding]]
| poland = [[Coronations in Poland|Coronation]]
| russia = [[Coronation of the Russian monarch|Coronation]]
| #default = {{if empty|{{{cor-type|}}}|[[Coronation]]}}
}}
| data3 = {{{coronation|}}}
| label4 = Investiture
| data4 = {{{investiture|}}}
| label5 = {{#if:{{{pre-type|}}}|{{{pre-type}}}|Predecessor}}
| data5 = {{{predecessor|}}}
| label6 = {{#if:{{{suc-type|}}}|{{{suc-type}}}|Successor}}
| data6 = {{{successor|}}}
| label7 = {{#if:{{{reg-type|}}}|{{{reg-type}}}|Regent}}
| data7 = {{{regent|}}}
| header8 = {{#if:{{{succession1|}}}|{{{succession1}}} {{#if:{{{moretext1|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext1}}} </div>}}}}
| label9 = {{if empty| {{{reign-type1|}}} | {{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data9 = {{{reign1|}}}
| label10 = {{#if:{{{cor-type1|}}}|{{{cor-type1}}}|Coronation}}
| data10 = {{{coronation1|}}}
| label11 = {{#if:{{{pre-type1|}}}|{{{pre-type1}}}|Predecessor}}
| data11 = {{{predecessor1|}}}
| label12 = {{#if:{{{suc-type1|}}}|{{{suc-type1}}}|Successor}}
| data12 = {{{successor1|}}}
| label13 = {{#if:{{{reg-type1|}}}|{{{reg-type1}}}|Regent}}
| data13 = {{{regent1|}}}
| header14 = {{#if:{{{succession2|}}}|{{{succession2}}} {{#if:{{{moretext2|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext2}}} </div>}}}}
| label15 = {{if empty| {{{reign-type2|}}} | {{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data15 = {{{reign2|}}}
| label16 = {{#if:{{{cor-type2|}}}|{{{cor-type2}}}|Coronation}}
| data16 = {{{coronation2|}}}
| label17 = {{#if:{{{pre-type2|}}}|{{{pre-type2}}}|Predecessor}}
| data17 = {{{predecessor2|}}}
| label18 = {{#if:{{{suc-type2|}}}|{{{suc-type2}}}|Successor}}
| data18 = {{{successor2|}}}
| label19 = {{#if:{{{reg-type2|}}}|{{{reg-type2}}}|Regent}}
| data19 = {{{regent2|}}}
| header20 = {{#if:{{{succession3|}}}|{{{succession3}}} {{#if:{{{moretext3|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext3}}} </div>}}}}
| label21 = {{if empty| {{{reign-type3|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data21 = {{{reign3|}}}
| label22 = {{#if:{{{cor-type3|}}}|{{{cor-type3}}}|Coronation}}
| data22 = {{{coronation3|}}}
| label23 = {{#if:{{{pre-type3|}}}|{{{pre-type3}}}|Predecessor}}
| data23 = {{{predecessor3|}}}
| label24 = {{#if:{{{suc-type3|}}}|{{{suc-type3}}}|Successor}}
| data24 = {{{successor3|}}}
| label25 = {{#if:{{{reg-type3|}}}|{{{reg-type3}}}|Regent}}
| data25 = {{{regent3|}}}
| header26 = {{#if:{{{succession4|}}}|{{{succession4}}} {{#if:{{{moretext4|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext4}}} </div>}}}}
| label27 = {{if empty| {{{reign-type4|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data27 = {{{reign4|}}}
| label28 = {{#if:{{{cor-type4|}}}|{{{cor-type4}}}|Coronation}}
| data28 = {{{coronation4|}}}
| label29 = {{#if:{{{pre-type4|}}}|{{{pre-type4}}}|Predecessor}}
| data29 = {{{predecessor4|}}}
| label30 = {{#if:{{{suc-type4|}}}|{{{suc-type4}}}|Successor}}
| data30 = {{{successor4|}}}
| label31 = {{#if:{{{reg-type4|}}}|{{{reg-type4}}}|Regent}}
| data31 = {{{regent4|}}}
| header32 = {{#if:{{{succession5|}}}|{{{succession5}}} {{#if:{{{moretext5|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext5}}} </div>}}}}
| label33 = {{if empty| {{{reign-type5|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data33 = {{{reign5|}}}
| label34 = {{#if:{{{cor-type5|}}}|{{{cor-type5}}}|Coronation}}
| data34 = {{{coronation5|}}}
| label35 = {{#if:{{{pre-type5|}}}|{{{pre-type5}}}|Predecessor}}
| data35 = {{{predecessor5|}}}
| label36 = {{#if:{{{suc-type5|}}}|{{{suc-type5}}}|Successor}}
| data36 = {{{successor5|}}}
| label37 = {{#if:{{{reg-type5|}}}|{{{reg-type5}}}|Regent}}
| data37 = {{{regent5|}}}
| header38 = {{#if:{{{succession6|}}}|{{{succession6}}} {{#if:{{{moretext6|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext6}}} </div>}}}}
| label39 = {{if empty| {{{reign-type6|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data39 = {{{reign6|}}}
| label40 = {{#if:{{{cor-type6|}}}|{{{cor-type6}}}|Coronation}}
| data40 = {{{coronation6|}}}
| label41 = {{#if:{{{pre-type6|}}}|{{{pre-type6}}}|Predecessor}}
| data41 = {{{predecessor6|}}}
| label42 = {{#if:{{{suc-type6|}}}|{{{suc-type6}}}|Successor}}
| data42 = {{{successor6|}}}
| label43 = {{#if:{{{reg-type6|}}}|{{{reg-type6}}}|Regent}}
| data43 = {{{regent6|}}}
| header44 = {{#if:{{{succession7|}}}|{{{succession7}}} {{#if:{{{moretext7|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext7}}} </div>}}}}
| label45 = {{if empty| {{{reign-type7|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data45 = {{{reign7|}}}
| label46 = {{#if:{{{cor-type7|}}}|{{{cor-type7}}}|Coronation}}
| data46 = {{{coronation7|}}}
| label47 = {{#if:{{{pre-type7|}}}|{{{pre-type7}}}|Predecessor}}
| data47 = {{{predecessor7|}}}
| label48 = {{#if:{{{suc-type7|}}}|{{{suc-type7}}}|Successor}}
| data48 = {{{successor7|}}}
| label49 = {{#if:{{{reg-type7|}}}|{{{reg-type7}}}|Regent}}
| data49 = {{{regent7|}}}
| header50 = {{#if:{{{succession8|}}}|{{{succession8}}} {{#if:{{{moretext8|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext8}}} </div>}}}}
| label51 = {{if empty| {{{reign-type8|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data51 = {{{reign8|}}}
| label52 = {{#if:{{{cor-type8|}}}|{{{cor-type8}}}|Coronation}}
| data52 = {{{coronation8|}}}
| label53 = {{#if:{{{pre-type8|}}}|{{{pre-type8}}}|Predecessor}}
| data53 = {{{predecessor8|}}}
| label54 = {{#if:{{{suc-type8|}}}|{{{suc-type8}}}|Successor}}
| data54 = {{{successor8|}}}
| label55 = {{#if:{{{reg-type8|}}}|{{{reg-type8}}}|Regent}}
| data55 = {{{regent8|}}}
| header56 = {{#if:{{{succession9|}}}|{{{succession9}}} {{#if:{{{moretext9|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext9}}} </div>}}}}
| label57 = {{if empty| {{{reign-type9|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data57 = {{{reign9|}}}
| label58 = {{#if:{{{cor-type9|}}}|{{{cor-type9}}}|Coronation}}
| data58 = {{{coronation9|}}}
| label59 = {{#if:{{{pre-type9|}}}|{{{pre-type9}}}|Predecessor}}
| data59 = {{{predecessor9|}}}
| label60 = {{#if:{{{suc-type9|}}}|{{{suc-type9}}}|Successor}}
| data60 = {{{successor9|}}}
| label61 = {{#if:{{{reg-type9|}}}|{{{reg-type9}}}|Regent}}
| data61 = {{{regent9|}}}
| header62 = {{#if:{{{succession10|}}}|{{{succession10}}} {{#if:{{{moretext10|}}}|<div style="display:inline;font-weight:normal" class="noprint">{{{moretext10}}} </div>}}}}
| label63 = {{if empty| {{{reign-type10|}}} |{{#switch:{{{consort|}}}|yes=Tenure|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Tenure|Reign}}<!--BACKWARD COMPAT FROM IBR-->}} }}
| data63 = {{{reign10|}}}
| label64 = {{#if:{{{cor-type10|}}}|{{{cor-type10}}}|Coronation}}
| data64 = {{{coronation10|}}}
| label65 = {{#if:{{{pre-type10|}}}|{{{pre-type10}}}|Predecessor}}
| data65 = {{{predecessor10|}}}
| label66 = {{#if:{{{suc-type10|}}}|{{{suc-type10}}}|Successor}}
| data66 = {{{successor10|}}}
| label67 = {{#if:{{{reg-type10|}}}|{{{reg-type10}}}|Regent}}
| data67 = {{{regent10|}}}
| header68 = {{#if: {{{succession|}}} | <div style="height: 4px; width:100%;"></div>}}
| label69 = Born
| data69 = {{br separated entries| {{{birth_name|}}} | {{{birth_date|}}} | {{{birth_place|}}} }}
| label70 = Died
| data70 = {{br separated entries| {{{death_date|}}} | {{{death_place|}}} }}
| label71 = Burial
| data71 = {{br separated entries |1= {{{burial_date|{{{date of burial|}}}}}} |2= {{#if:{{{burial_place|{{{place of burial|}}}}}}|<div style="display:inline" class="label">{{{burial_place|{{{place of burial|}}}}}}</div>}} }}
| label72 = Consort
| data72 = {{{queen|}}}
| label73 = {{{spouse-type|{{#switch:{{{type}}}|monarch={{#switch:{{{consort}}}|yes=Spouse|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Spouse|Consort}}<!--BACKWARD COMPAT FROM IBR-->}}|majesty={{#switch:{{{consort}}}|yes=Spouse|<!--BACKWARD COMPAT FROM IBR-->{{#switch:{{{2}}}|consort=Spouse|Consort}}<!--BACKWARD COMPAT FROM IBR-->}}|Spouse}}}}}
| data73 = {{{spouse|}}}
| label74 = {{#if:{{{spouses-type|}}}|{{{spouses-type}}}|Spouses}}
| data74 = {{{spouses|}}}
| label75 = {{#if:{{{spouse 2|}}} | Wives | Wife }}<!-- alternative to using 'spouses' and 'spouses-type' -->
| data75 = {{#if: {{{spouse 1|}}}|
{{unbulleted list
| {{{spouse 1}}}
| {{{spouse 2|}}}
| {{{spouse 3|}}}
| {{{spouse 4|}}}
| {{{spouse 5|}}}
| {{{spouse 6|}}}
| {{{spouse 7|}}}
| {{{spouse 8|}}}
| {{{spouse 9|}}}
}}}}
| label76 = {{#if:{{{issue-type|}}}|{{{issue-type}}}|[[Issue (genealogy)|Issue]]}}{{#if:{{{issue-link|}}}|<br><span style="font-weight:normal">''[[{{{issue-link}}}|{{#if:{{{issue-pipe|}}}|{{{issue-pipe}}}|Detail}}]]''</span>}}
| data76 = {{{issue|}}}
| data77 = {{#if:{{{full name|}}}{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}{{{era dates|}}}{{{regnal name|}}}{{{posthumous name|}}}{{{temple name|}}}|
{{Infobox|bodystyle=border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none
| headerstyle = text-align:left
| datastyle = text-align:left; padding-left:0.7em;
| header1 = {{#if:{{{full name|}}}|Names}}
| class2 = nickname <!-- "nickname" is the correct parameter value for hCard -->
| data2 = {{{full name|}}}
| header3 = {{#if:{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}|Full name}}
| data4 = {{#if:{{{family_name|}}}{{{clan_name|}}}{{{given_name|}}}|
{{unbulleted list
| 1 = {{#if: {{{family_name|}}} | [[Chinese surname|Family name]]: <div style="display:inline" class="nickname">{{{family_name}}}</div> }}
| 2 = {{#if: {{{clan_name|}}} | [[Chinese surname|Clan name]]: <div style="display:inline" class="nickname">{{{clan_name}}}</div> }}
| 3 = {{#if: {{{given_name|}}} | [[Chinese given name|Given name]]: <div style="display:inline" class="nickname">{{{given_name}}}</div> }}
}}}}
| header5 = {{#if: {{{era dates|}}} |Era {{#if:{{{era name|}}}|name and }}dates}}
| data6 = {{#if: {{{era dates|}}} | {{#if:{{{era name|}}}|{{{era name}}}: }}{{{era dates}}} }}
| header7 = {{#if: {{{regnal name|}}} |[[Regnal name]]}}
| data8 = {{{regnal name|}}}
| header9 = {{#if: {{{posthumous name|}}} | [[Posthumous name]]}}
| data10 = {{{posthumous name|}}}
| header11 = {{#if: {{{temple name|}}} | [[Temple name]] }}
| data12 = {{{temple name|}}}
}}
}}
| label78 = {{{native_lang1}}}
| data78 = {{#if: {{{native_lang1|}}}|{{{native_lang1_name1|}}}}}
| label79 = {{{native_lang2}}}
| data79 = {{#if: {{{native_lang2|}}}|{{{native_lang2_name1|}}}}}
| label80 = {{{native_lang3}}}
| data80 = {{#if: {{{native_lang3|}}}|{{{native_lang3_name1|}}}}}
| label81 = {{{native_lang4}}}
| data81 = {{#if: {{{native_lang4|}}}|{{{native_lang4_name1|}}}}}
| label82 = {{{native_lang5}}}
| data82 = {{#if: {{{native_lang5|}}}|{{{native_lang5_name1|}}}}}
| label83 = [[Dynasty|{{#if:{{{house-type|}}}|{{{house-type}}}|House}}]]
| data83 = {{{house|}}}
| label84 = [[Dynasty|{{#if:{{{house-type|}}}|{{{house-type}}}|House}}]]
| data84 = {{{royal house|}}}
| label85 = [[Dynasty]]
| data85 = {{{dynasty|}}}
| label86 = Father
| data86 = {{{father|}}}
| label87 = Mother
| data87 = {{{mother|}}}
| label88 = Religion
| data88 = {{{religion|}}}
| label89 = Occupation
| data89 = {{{occupation|}}}
| label90 = {{#if:{{{signature_type|}}}| {{{signature_type}}} | Signature }}
| data90 = {{#if:{{{signature|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size=125px|class=notpageimage|alt={{{signature_alt|}}}|title={{{name<includeonly>|{{PAGENAMEBASE}}</includeonly>}}}'s signature}}}}
| data91 = {{{module|}}}
}}{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox royalty with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox royalty]] with unknown parameter "_VALUE_"|ignoreblank=y| 2 | alt | birth_date | birth_name | birth_place | burial_date | burial_place | caption | clan_name | consort | cor-type | cor-type1 | cor-type2 | cor-type3 | cor-type4 | cor-type5 | cor-type6 | cor-type7 | cor-type8 | cor-type9 | coronation | coronation1 | coronation2 | coronation3 | coronation4 | coronation5 | coronation6 | coronation7 | coronation8 | coronation9 | date of burial | death_date | death_place | dynasty | embed | era dates | era name | family_name | father | full name | given_name | house | house-type | image | image_size | investiture | issue | issue-link | issue-pipe | issue-type | module | more | moretext | moretext1 | moretext2 | moretext3 | moretext4 | moretext5 | moretext6 | moretext7 | moretext8 | moretext9 | mother | name | native_lang1 | native_lang1_name1 | native_lang2 | native_lang2_name1 | native_lang3 | native_lang3_name1 | native_lang4 | native_lang4_name1 | native_lang5 | native_lang5_name1 | occupation | place of burial | posthumous name | pre-type | pre-type1 | pre-type2 | pre-type3 | pre-type4 | pre-type5 | pre-type6 | pre-type7 | pre-type8 | pre-type9 | predecessor | predecessor1 | predecessor2 | predecessor3 | predecessor4 | predecessor5 | predecessor6 | predecessor7 | predecessor8 | predecessor9 | queen | reg-type | reg-type1 | reg-type2 | reg-type3 | reg-type4 | reg-type5 | reg-type6 | reg-type7 | reg-type8 | reg-type9 | regent | regent1 | regent2 | regent3 | regent4 | regent5 | regent6 | regent7 | regent8 | regent9 | regnal name | reign | reign-type | reign-type1 | reign-type2 | reign-type3 | reign-type4 | reign-type5 | reign-type6 | reign-type7 | reign-type8 | reign-type9 | reign1 | reign2 | reign3 | reign4 | reign5 | reign6 | reign7 | reign8 | reign9 | religion | royal house | signature | signature_alt | signature_type | spouse | spouse 1 | spouse 2 | spouse 3 | spouse 4 | spouse 5 | spouse 6 | spouse 7 | spouse 8 | spouse 9 | spouse-type | spouses | spouses-type | suc-type | suc-type1 | suc-type2 | suc-type3 | suc-type4 | suc-type5 | suc-type6 | suc-type7 | suc-type8 | suc-type9 | succession | succession1 | succession2 | succession3 | succession4 | succession5 | succession6 | succession7 | succession8 | succession9 | successor | successor1 | successor2 | successor3 | successor4 | successor5 | successor6 | successor7 | successor8 | successor9 | temple name | title | titletext | type | succession10 | moretext10 | reign-type10 | reign10 | coronation10 | cor-type10 | predecessor10 | pre-type10 | successor10 | suc-type10 | regent10 | reg-type10}}<noinclude>
{{documentation}}
</noinclude>
8fdd5f83a49f2ff2d7072a498aa5ab695cb385df
Template:Infobox UK place/generic demo
10
1420
2755
2023-05-23T14:54:11Z
w>Jonesey95
0
rm unsupported parameters
wikitext
text/x-wiki
{{Parameter names example
|_template={{BASEPAGENAME}}{{\sandbox}}
|official_name
|gaelic_name |scots_name |welsh_name |irish_name |manx_name |cornish_name |other_language|other_language_name |local_name
|type
|static_image_name |static_image_width={{{static_image_width}}}<br/> |static_image_alt |static_image_caption
|static_image_2 |static_image_2_name |static_image_2_width={{{static_image_2_width}}}<br/> |static_image_2_alt |static_image_2_caption
|map_type |coordinates = {{coord|53.75|-5|display=inline}} |map_relief |map_alt |label_position
|country <!--|country1--> <!--|crown_dependency-->
|area_total_sq_mi=1 |area_footnotes={{smaller|{{{area footnotes}}}}}
|population=0 |population_ref
|statistic_title|statistic |statistic_title1|statistic1 |statistic_title2|statistic2
|population_demonym
|language |language1 |language2
|os_grid_reference |irish_grid_reference
|london_distance_mi=0 |london_direction={{smaller|{{{london_direction}}}}}
|belfast_distance_mi=0 |belfast_direction={{smaller|{{{belfast_direction}}}}}
|cardiff_distance_mi=0 |cardiff_direction={{smaller|{{{cardiff_direction}}}}}
|dublin_distance_mi=0 |dublin_direction={{smaller|{{{dublin_direction}}}}}
|edinburgh_distance_mi=0 |edinburgh_direction={{smaller|{{{edinburgh_direction}}}}}
|douglas_distance_mi=0 |douglas_direction={{smaller|{{{douglas_direction}}}}}
|charingX_distance_mi=0 |charingX_direction={{smaller|{{{charingX_direction}}}}}
<!--(England by level)-->
<!--5--> |civil_parish |civil_parish1 |civil_parish2
<!--4--> |london_borough |london_borough1 |london_borough2 |london_borough3 |london_borough4
|metropolitan_borough |metropolitan_borough1 |metropolitan_borough2 |metropolitan_borough3
|shire_district |shire_district1 |shire_district2 |shire_district3
|unitary_england |unitary_england1
|unitary_england2={{{unitary_england2}}}<br/>{{{unitary_england3}}}<!--(combined for sake of Police/Fire/Ambulance)-->
<!--3--> |shire_county |shire_county1 |shire_county2={{{shire_county2}}}<br/>{{{shire_county3}}}<!--(ditto)-->
|metropolitan_county |metropolitan_county1 |metropolitan_county2={{{metropolitan_county2}}}<br/>{{{metropolitan_county3}}}<!--(ditto)-->
|lieutenancy_england |lieutenancy_england1 |lieutenancy_england2 |lieutenancy_england3
<!--2--> |region <!--|region1-->
<!--(IoM by level)-->
<!--4--> |manx_parish
<!--3--> |manx_sheading
<!--(NI by level)-->
<!--4--> |unitary_northern_ireland |unitary_northern_ireland1 |unitary_northern_ireland2
<!--3--> |lieutenancy_northern_ireland |lieutenancy_northern_ireland1 |lieutenancy_northern_ireland2
<!--(Scotland by level)-->
<!--4--> |unitary_scotland |unitary_scotland1 |unitary_scotland2={{{unitary_scotland2}}}<br/>{{{unitary_scotland3}}}<!--(as above)-->
<!--3--> |lieutenancy_scotland |lieutenancy_scotland1 |lieutenancy_scotland2 |lieutenancy_scotland3
<!--(Wales by level)-->
<!--5--> |community_wales |community_wales1 |community_wales2={{{community_wales2}}}<br />{{{community_wales3}}}<!--(ditto)-->
<!--4--> |unitary_wales |unitary_wales1 |unitary_wales2={{{unitary_wales2}}}<br/>{{{unitary_wales3}}}<!--(ditto)-->
<!--3--> |lieutenancy_wales |lieutenancy_wales1 |lieutenancy_wales2 |lieutenancy_wales3
<!--Parts-->
|parts_type |parts |p1
|postcode_area |postcode_district |post_town
|postcode_area1 |postcode_district1 |post_town1
|postcode_area2 |postcode_district2 |post_town2
|dial_code |dial_code1 |dial_code2
|constituency_westminster={{smaller|{{{constituency_westminster}}}}} |constituency_westminster1={{smaller|{{{constituency_westminster1}}}}} |constituency_westminster2={{smaller|{{{constituency_westminster2}}}}} |constituency_westminster3=…… |constituency_westminster8={{smaller|{{{constituency_westminster8}}}}}
|constituency_manx_parliament={{smaller|{{{constituency_manx_parliament}}}}}
|constituency_ni_assembly={{smaller|{{{constituency_ni_assembly}}}}} |constituency_ni_assembly1={{smaller|{{{constituency_ni_assembly1}}}}} |constituency_ni_assembly2={{smaller|{{{constituency_ni_assembly2}}}}} |constituency_ni_assembly3={{smaller|{{{constituency_ni_assembly3}}}}}
|constituency_scottish_parliament={{smaller|{{{constituency_scottish_parliament}}}}} |constituency_scottish_parliament1={{smaller|{{{constituency_scottish_parliament1}}}}} |constituency_scottish_parliament2={{smaller|{{{constituency_scottish_parliament2}}}}} |constituency_scottish_parliament3=…… |constituency_scottish_parliament10={{smaller|{{{constituency_scottish_parliament10}}}}}
|constituency_welsh_assembly={{smaller|{{{constituency_welsh_assembly}}}}} |constituency_welsh_assembly1={{smaller|{{{constituency_welsh_assembly1}}}}} |constituency_welsh_assembly2={{smaller|{{{constituency_welsh_assembly2}}}}}
|councillors
|councillor1
|party1
|councillor2
|party2
|councillor3
|party3
|councillor4
|party4
|councillor5
|party5
|website
}}
6befc5ffbd629106e24b6b5e3398e636e409bc63
Template:Infobox person module documentation
10
1359
2694
2023-05-23T17:04:39Z
w>Gonnym
0
wikitext
text/x-wiki
This infobox may be used to create a genre-specific section within {{tl|Infobox person}} (or similar [[:Category:People and person infobox templates|biographical infobox templates]]) for cases where a person may be notable in more than one field; a generic example is shown below. For guidance on usage, see [[Wikipedia:Infobox modules]]. Also see the [[Template:Infobox]] documentation which explains [[Template:Infobox/doc#Embedding|embedding]] and [[Template:Infobox/doc#Subboxes|subboxes]].
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox person
| name =
| image =
| caption =
| birth_date =
| birth_place =
| <nowiki><!--</nowiki> ''[[et cetera|etc.]]'' <nowiki>--></nowiki>
| module =
<nowiki>{{</nowiki>{{{1|{{{template|<includeonly>{{BASEPAGENAME}}</includeonly><noinclude>EMBEDDED TEMPLATE NAME</noinclude>}}}}}} | {{#if:{{{parameter|}}} | {{{parameter}}}=yes | child=yes <nowiki><!--</nowiki> ''or'' embed=yes ''or'' subbox=yes <nowiki>--></nowiki>}}
| {{{2|{{{example_parameter1|parameter-1}}}}}} =
| {{{3|{{{example_parameter2|parameter-2}}}}}} =
| {{{4|{{{example_parameter3|parameter-3}}}}}} =
| {{{5|{{{example_parameter4|parameter-4}}}}}} =
| <nowiki><!--</nowiki> ''etc.'' <nowiki>--></nowiki>
}}
}}
</syntaxhighlight><noinclude>
[[Category:Template namespace templates]]
[[Category:Documentation shared content templates]]
</noinclude>
ba21d82aaf3f82d9307e5b28f6ea7d7f0a3bfac1
Module:Coordinates/styles.css
828
592
1332
2023-05-24T21:17:17Z
wikipedia>Izno
0
per tper
sanitized-css
text/css
/* {{pp-template}} */
/* Geographical coordinates defaults. The classes "geo", "longitude", and
"latitude" are used by the [[Geo microformat]]. */
.geo-default,
.geo-dms,
.geo-dec {
display: inline;
}
.geo-nondefault,
.geo-multi-punct,
.geo-inline-hidden {
display: none;
}
.longitude,
.latitude {
white-space: nowrap;
}
1b5d036501a9f6bc9dcf3c9117e8d6bc97507290
Template:Infobox UK place
10
1144
2470
2023-05-25T07:04:33Z
w>WOSlinker
0
remove London caps from posttown
wikitext
text/x-wiki
<includeonly>{{main other|{{Short description|2=noreplace|{{#if:{{{type|}}}|{{ucfirst:{{delink|{{{type}}}}}}}|Human settlement}} in {{#if:{{{country|}}}|{{delink|{{{country}}}}}|the United Kingdom}}}}}}{{Infobox
| bodyclass = ib-uk-place vcard
| templatestyles = Infobox UK place/styles.css
| aboveclass = fn org nowrap
| above = {{{official_name|{{PAGENAMEBASE}}}}}{{Unbulleted list|class=ib-uk-place-other-names
|{{#if:{{{gaelic_name|}}} |{{lang-gd|{{{gaelic_name}}}}}}}
|{{#if:{{{irish_name|}}} |{{lang-ga|{{{irish_name}}}}}}}
|{{#if:{{{scots_name|}}} |{{lang-sco|{{{scots_name}}}}}}}
|{{#if:{{{cornish_name|}}} |{{lang-kw|{{{cornish_name}}}}}}}
|{{#if:{{{welsh_name|}}} |{{lang-cy|{{{welsh_name}}}}}}}
|{{#if:{{{manx_name|}}} |{{lang-gv|{{{manx_name}}}}}}}
|{{#if:{{{other_language_name|}}} |''[[{{{other_language}}}|{{{other_language_name}}}]]''}}
|{{#if:{{{local_name|}}} |{{{local_name}}}}}
}}<!--
***** Type *****-->
| subheader ={{#if:{{{type|}}}|<span class="category">{{#switch:{{lc:{{{type|}}}}} |civil parish=Civil parish |#default={{{type|}}}}}</span>}}<!--
***** Static image/s *****-->
| rowclass1 = mergedtoprow
| data1 = {{#invoke:InfoboxImage|InfoboxImage|image={{#if:{{{static_image|}}}|{{{static_image}}}|{{{static_image_name|}}}}} |size={{{static_image_width|}}}|sizedefault=240px|alt={{{static_image_alt|}}}}}{{#if:{{{static_image|}}}{{{static_image_name|}}}|{{#if:{{{static_image_caption|}}} |<div>{{{static_image_caption|}}}</div> }} }}
| rowclass2 = mergedbottomrow
| data2 = {{#invoke:InfoboxImage|InfoboxImage|image={{#if:{{{static_image_2|}}}|{{{static_image_2}}}|{{{static_image_2_name|}}}}} |size={{{static_image_2_width|}}}|sizedefault=240px|alt={{{static_image_2_alt|}}}}}{{#if:{{{static_image_2|}}}{{{static_image_2_name|}}}|{{#if:{{{static_image_2_caption|}}} |<div>{{{static_image_2_caption|}}}</div> }} }}<!--
***** Map *****-->
| data3 = {{#switch:{{{map_type}}}
| nomap =
| UK = {{Location map
|{{#if:{{{pushpin_map|}}}|{{{pushpin_map}}}#}}United Kingdom
|width=240 |float=center|marksize=6 | coordinates = {{{coordinates|}}}
|relief={{{map_relief|}}} |alt={{{map_alt|}}}
|label={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |position={{{label_position|}}}
|border=infobox
|caption={{#if:{{{pushpin_map|}}}||{{#if:{{{coordinates|}}}|Location within {{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=maptitle}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=maptitle}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=maptitle}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=maptitle}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=maptitle}} |the [[United Kingdom]] {{Infobox UK place/NoLocalMap}} }}
}}}}}}
}}
| #default = {{#if:{{{coordinates|}}}
|{{Location map
|{{#if:{{{pushpin_map|}}}|{{{pushpin_map}}}#}}{{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=map}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=map}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=map}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=map}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=map}} |United Kingdom}}
}}<!-- switch -->
|width=240 |float=center|marksize=6 | coordinates = {{{coordinates|}}}
|relief={{{map_relief|}}} |alt={{{map_alt|}}}
|label={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |position={{{label_position|}}}
|border=infobox
|caption={{#if:{{{pushpin_map|}}}|{{{pushpin_map_caption|}}}##}}{{#if:{{{coordinates|}}}|Location within {{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=maptitle}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=maptitle}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |level3={{#if:{{{map_type|}}}|{{{map_type|}}} |{{#if:{{{shire_district|}}}|{{{shire_district|}}} |{{{lieutenancy_scotland|}}} }} }} |retrieve=maptitle}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=maptitle}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=maptitle}} |the [[United Kingdom]] {{Infobox UK place/NoLocalMap}} }}
}}}}
}}
}}
}}
<!--
***** Area *****-->
| rowclass5 = mergedtoprow
| label5 = {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{area_footnotes|}}}|Area }}
| data5 = {{#if:{{{area_total_sq_mi|}}} |{{Infobox UK place/area|type=mile|top={{{area_total_sq_mi|}}}}}
| {{#if:{{{area_total_km2|}}} |{{Infobox UK place/area|type=km|top={{{area_total_km2|}}}}} }}
}}{{#if:{{{area_footnotes|}}} | {{{area_footnotes}}} }} <!--
***** Population/Density *****-->
| label6 = Population
| data6 = {{#if:{{{population|}}} | {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}}}}
| <strong class="error">Expression error: "{{{population}}}" must be numeric</strong>[[Category:Pages using infobox UK place with non-numeric population]]
| {{formatnum: {{formatnum:{{{population}}}|R}} }} <!--([space to avoid leading-space if only population_ref supplied?])-->
}} }}{{#if:{{{population_ref|}}} |{{{population_ref|}}} }}
| rowclass7 = mergedrow
| label7 = {{#if:{{{population|}}}
| {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}} }} |
| {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{population_density|}}}|
• [[Population density|Density]] }}}}}}
| data7 = {{#if:{{{population|}}}
| {{#iferror: {{#expr:{{formatnum:{{{population}}}|R}} }} |
| {{#if:{{{area_total_sq_mi|}}}{{{area_total_km2|}}}{{{population_density|}}}|
{{#if:{{{population_density|}}} |{{{population_density|}}}
| {{#if:{{{area_total_sq_mi|}}} |{{Infobox UK place/dens|type=mile|top={{{population}}}|bottom={{{area_total_sq_mi}}}}}
| {{Infobox UK place/dens|type=km|top={{{population}}}|bottom={{{area_total_km2}}}}}
}} }} }}}}}}
| rowclass8 = mergedrow
| label8 = {{{statistic_title|}}}
| data8 = {{{statistic|}}}
| rowclass9 = mergedrow
| label9 = {{{statistic_title1|}}}
| data9 = {{{statistic1|}}}
| rowclass10 = mergedrow
| label10 = {{{statistic_title2|}}}
| data10 = {{{statistic2|}}}<!--
***** Population demonym *****-->
| rowclass11 = mergedtoprow
| label11 = [[Demonym]]
| data11 = {{{population_demonym|}}}<!--
***** Language/s *****-->
| label12 = [[Language]]
| data12 = {{{language|}}}{{#if:{{{language1|}}}|<br/>{{{language1|}}}}}{{#if:{{{language2|}}}|<br/>{{{language2|}}}}}<!--
***** OS / Irish grid ref *****-->
| rowclass13 = mergedtoprow
| label13 = [[Ordnance Survey National Grid|OS grid reference]]
| data13 = {{#if:{{{os_grid_reference|}}}|<span class="plainlinks nourlexpansion">{{Gbm4ibx|{{{os_grid_reference}}}|name={{{official_name|{{PAGENAMEBASE}}}}}}}{{{os_grid_reference_note|}}}</span>}}
| rowclass14 = mergedtoprow
| label14 = [[Irish grid reference system|Irish grid reference]]
| data14 = {{#if:{{{irish_grid_reference|}}}|<span class="plainlinks nourlexpansion">{{iem4ibx|{{{irish_grid_reference}}}|name={{{official_name|{{PAGENAMEBASE}}}}}}}{{{irish_grid_reference_note|}}}</span>}}<!--
***** City distances *****-->
| rowclass15 = mergedrow
| label15 = {{#if:{{{belfast_distance|}}}{{{belfast_distance_mi|}}}{{{belfast_distance_km|}}}|• [[Belfast]]}}
| data15 ={{#if:{{{belfast_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{belfast_distance_mi}}}}}
| {{#if:{{{belfast_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{belfast_distance_km}}}}} }}
}}{{{belfast_distance|}}}{{#if:{{{belfast_direction|}}}| [[Points of the compass{{!}}{{{belfast_direction}}}]]}}
| rowclass16 = mergedrow
| label16 ={{#if:{{{cardiff_distance|}}}{{{cardiff_distance_mi|}}}{{{cardiff_distance_km|}}}|• [[Cardiff]]}}
| data16 ={{#if:{{{cardiff_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{cardiff_distance_mi}}}}}
| {{#if:{{{cardiff_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{cardiff_distance_km}}}}} }}
}}{{{cardiff_distance|}}}{{#if:{{{cardiff_direction|}}}| [[Points of the compass{{!}}{{{cardiff_direction}}}]]}}
| rowclass17 = mergedrow
| label17 ={{#if:{{{douglas_distance|}}}{{{douglas_distance_mi|}}}{{{douglas_distance_km|}}}|• [[Douglas, Isle of Man|Douglas]]}}
| data17 ={{#if:{{{douglas_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{douglas_distance_mi}}}}}
| {{#if:{{{douglas_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{douglas_distance_km}}}}} }}
}}{{{douglas_distance|}}}{{#if:{{{douglas_direction|}}}| [[Points of the compass{{!}}{{{douglas_direction}}}]]}}
| rowclass18 = mergedrow
| label18 = {{#if:{{{dublin_distance|}}}{{{dublin_distance_mi|}}}{{{dublin_distance_km|}}}|• [[Dublin]]}}
| data18 ={{#if:{{{dublin_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{dublin_distance_mi}}}}}
| {{#if:{{{dublin_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{dublin_distance_km}}}}} }}
}}{{{dublin_distance|}}}{{#if:{{{dublin_direction|}}}| [[Points of the compass{{!}}{{{dublin_direction}}}]]}}
| rowclass19 = mergedrow
| label19 ={{#if:{{{edinburgh_distance|}}}{{{edinburgh_distance_mi|}}}{{{edinburgh_distance_km|}}}| • [[Edinburgh]] }}
| data19 ={{#if:{{{edinburgh_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{edinburgh_distance_mi}}}}}
| {{#if:{{{edinburgh_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{edinburgh_distance_km}}}}} }}
}}{{{edinburgh_distance|}}}{{#if:{{{edinburgh_direction|}}}| [[Points of the compass{{!}}{{{edinburgh_direction}}}]]}}
| rowclass20 = mergedbottomrow
| label20 = {{#if:{{{london_distance|}}}{{{london_distance_mi|}}}{{{london_distance_km|}}}|• [[London]]}}
| data20 ={{#if:{{{london_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{london_distance_mi}}}}}
| {{#if:{{{london_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{london_distance_km}}}}} }}
}}{{{london_distance|}}}{{#if:{{{london_direction|}}}| [[Points of the compass{{!}}{{{london_direction}}}]]}}
| rowclass21 = mergedbottomrow
| label21 = {{#if:{{{charingX_distance|}}}{{{charingX_distance_mi|}}}{{{charingX_distance_km|}}}|• [[Charing Cross]]}}
| data21 ={{#if:{{{charingX_distance_mi|}}}|{{Infobox UK place/dist|type=mile|distance={{{charingX_distance_mi}}}}}
| {{#if:{{{charingX_distance_km|}}} |{{Infobox UK place/dist|type=km|distance={{{charingX_distance_km}}}}} }}
}}{{{charingX_distance|}}}{{#if:{{{charingX_direction|}}}| [[Points of the compass{{!}}{{{charingX_direction}}}]]}}<!--
***** Administrative divisions (except constituencies) *****
***** Parish (level 5) *****-->
| label22 = [[Civil parish]]
| data22 ={{Unbulleted list|{{{civil_parish|}}}|{{{civil_parish1|}}}|{{{civil_parish2|}}}}}
| rowclass23 = mergedtoprow
| label23 = [[Local government in Wales#Communities|Community]]
| data23 = {{Unbulleted list|{{{community_wales|}}}|{{{community_wales1|}}}|{{{community_wales2|}}}|{{{community_wales3|}}}}}
| rowclass24 = mergedtoprow
| label24 = [[Community council]]
| data24 = {{Unbulleted list|{{{community_scotland|}}}|{{{community_scotland1|}}}|{{{community_scotland2|}}}|{{{community_scotland3|}}}}}<!--
***** District (level 4) *****-->
| rowclass25 = mergedrow
| label25 = [[Local government in Wales|Principal area]]
| data25 = {{Unbulleted list|{{{unitary_wales|}}}|{{{unitary_wales1|}}}|{{{unitary_wales2|}}}|{{{unitary_wales3|}}}}}
| rowclass26 = mergedrow
| label26 ={{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=boroughhead}} }}
| data26 ={{Unbulleted list| {{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=borough}}}}|{{#if:{{{london_borough1|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough1}}} |retrieve=borough}}}}|{{#if:{{{london_borough2|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough2}}} |retrieve=borough}}}}|{{#if:{{{london_borough3|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough3}}} |retrieve=borough}}}}|{{#if:{{{london_borough4|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough4}}} |retrieve=borough}}}}}}
| rowclass27 = mergedrow
| label27 = [[Districts of England|Metropolitan borough]]
| data27 = {{Unbulleted list|{{{metropolitan_borough|}}}|{{{metropolitan_borough1|}}}|{{{metropolitan_borough2|}}}|{{{metropolitan_borough3|}}}}}
| rowclass28 = mergedrow
| label28 = [[Districts of England|District]]
| data28 = {{Unbulleted list|{{{shire_district|}}}|{{{shire_district1|}}}|{{{shire_district2|}}}|{{{shire_district3|}}}}}
| rowclass29 = mergedrow
| label29 = [[Districts of England|Unitary authority]]
| data29 = {{Unbulleted list|{{{unitary_england|}}}|{{{unitary_england1|}}}|{{{unitary_england2|}}}|{{{unitary_england3|}}}}}
| rowclass30 = mergedrow
| label30 = [[Subdivisions of Scotland|Council area]]
| data30 = {{Unbulleted list|{{{unitary_scotland|}}}|{{{unitary_scotland1|}}}|{{{unitary_scotland2|}}}|{{{unitary_scotland3|}}}}}
| rowclass31 = mergedrow
| label31 = [[Local government in Northern Ireland|District]]
| data31 = {{Unbulleted list|{{{unitary_northern_ireland|}}}|{{{unitary_northern_ireland1|}}}|{{{unitary_northern_ireland2|}}}|{{{unitary_northern_ireland3|}}}}}
| rowclass32 = mergedrow
| label32 = [[Captain of the Parish|Parish]]
| data32 = {{{manx_parish|}}}<!--
***** County (level 3) *****-->
| rowclass33 = mergedrow
| label33 = [[Preserved counties of Wales|Preserved county]]
| data33 = {{Unbulleted list|{{{lieutenancy_wales|}}}|{{{lieutenancy_wales1|}}}|{{{lieutenancy_wales2|}}}|{{{lieutenancy_wales3|}}}}}
| rowclass34 = mergedrow
| label34 = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough1}}} |retrieve=countyhead}}
| data34 ={{#if:{{{london_borough|}}}| [[Greater London]] }}
| rowclass35 = mergedrow
| label35 = [[Metropolitan and non-metropolitan counties of England|Shire county]]
| data35 = {{Unbulleted list|{{{shire_county|}}}|{{{shire_county1|}}}|{{{shire_county2|}}}|{{{shire_county3|}}}}}
| rowclass36 = mergedrow
| label36 =[[Metropolitan and non-metropolitan counties of England|Metropolitan county]]
| data36 = {{Unbulleted list|{{{metropolitan_county|}}}|{{{metropolitan_county1|}}}|{{{metropolitan_county2|}}}|{{{metropolitan_county3|}}}}}
| rowclass37 = mergedrow
| label37 = [[Ceremonial counties of England|Ceremonial county]]
| data37 = {{Unbulleted list|{{{lieutenancy_england|}}}|{{{lieutenancy_england1|}}}|{{{lieutenancy_england2|}}}|{{{lieutenancy_england3|}}}}}
| rowclass38 = mergedrow
| label38 =[[Lieutenancy areas of Scotland|Lieutenancy area]]
| data38 = {{Unbulleted list|{{{lieutenancy_scotland|}}}|{{{lieutenancy_scotland1|}}}|{{{lieutenancy_scotland2|}}}|{{{lieutenancy_scotland3|}}}}}
| rowclass39 = mergedrow
| label39 = [[Counties of Northern Ireland|County]]
| data39 = {{Unbulleted list|{{{lieutenancy_northern_ireland|}}}|{{{lieutenancy_northern_ireland1|}}}|{{{lieutenancy_northern_ireland2|}}}}}
| rowclass40 = mergedrow
| label40 = [[Local government in the Isle of Man|Sheading]]
| data40 = {{{manx_sheading|{{{manx_shedding|}}}}}}<!--
***** Regional (level 2) *****-->
| rowclass41 = mergedrow
| label41 = [[Regions of England|Region]]
| data41 = {{Unbulleted list|{{Infobox UK place/local |level1=England |level2={{{region}}} |retrieve=region}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |retrieve=region}}}}<!--
***** Country (level 1) *****-->
| rowclass42 = mergedrow adr
| label42 = [[Countries of the United Kingdom|Country]]
| data42 = {{#if:{{{country|}}}|<span class="country-name">{{Auto link|{{{country}}}}}</span>}}{{#if:{{{country1|}}}|<br/>{{Auto link|{{{country1|}}}}}}}
| rowclass43 = mergedrow adr
| label43 = [[Crown dependency|Crown dependency]]
| data43 = {{Auto link|{{{crown_dependency|}}}}}
| rowclass44 = mergedrow
| label44 = [[List of sovereign states|Sovereign state]]
| data44 = {{#if:{{{country|}}}|United Kingdom}}<!--
***** Places in location *****-->
| rowclass46 = mergedtoprow
| label46 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Places}}
| data46 = {{#if:{{{parts|}}}{{{p1|}}}
|{{#ifeq:{{{parts_style|}}}|para
|<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|: |}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}}
|{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}}
|{{{parts}}}
}}
}} }}<!--
***** Post town/s *****-->
| rowclass47 = mergedtoprow
| label47 = [[Post town]]
| data47 = {{#if:{{{post_town|}}}|{{#ifeq:{{lc:{{{post_town}}}}}|london|[[London postal district|London]]|{{{post_town}}}}}|{{Infobox UK place/NoPostCode}}}}
| rowclass48 = mergedrow
| label48 = [[Postcodes in the United Kingdom|Postcode district]]
| data48 = {{#if:{{{postcode_area|}}}|[[{{{postcode_area}}} postcode area|{{#if:{{{postcode_district|}}}|{{{postcode_district}}}|{{{postcode_area}}}}}]]|{{Infobox UK place/NoPostCode}}}}<!--
***** Post town 1 ***** -->
| rowclass49 = mergedrow
| label49 = Post town
| data49 = {{#ifeq:{{lc:{{{post_town1}}}}}|london|[[London postal district|London]]|{{{post_town1|}}}}}
| rowclass50 = mergedrow
| label50 = Postcode district
| data50 = {{#if:{{{postcode_area1|}}}|[[{{{postcode_area1}}} postcode area|{{{postcode_district1}}}]]}}<!--
***** Post town 2 ***** -->
| rowclass51 = mergedrow
| label51 = Post town
| data51 = {{#ifeq:{{lc:{{{post_town2}}}}}|london|[[London postal district|London]]|{{{post_town2|}}}}}
| rowclass52 = mergedrow
| label52 = Postcode district
| data52 = {{#if:{{{postcode_area2|}}}|[[{{{postcode_area2}}} postcode area|{{{postcode_district2}}}]]}}<!--
***** Dialling code/s ***** -->
| rowclass53 = mergedrow
| label53 = [[Telephone numbers in the United Kingdom|Dialling code]]
| data53 = {{#if:{{{dial_code|}}}|{{#switch:{{{dial_code}}}|0203|0207|0208|020 3|020 7|020 8|020=[[020]] |02380|02392|023 80|023 92|023=023 |02476|024 76=024 |{{{dial_code}}}={{{dial_code}}}}} | {{Infobox UK place/NoDialCode}}}}{{#if:{{{dial_code1|}}}|<br/>{{{dial_code1}}}}}{{#if:{{{dial_code2|}}}|<br/>{{{dial_code2}}}}}<!--
***** ISO code *****-->
| rowclass54 = mergedrow
| label54 = [[ISO 3166|ISO 3166]] code
| data54 = {{#if:{{{iso_code|}}}|{{{iso_code}}}|<!--{{Infobox UK place/NoISOCode}}-->}}<!--
***** Emergency services ***** -->
| rowclass55 = mergedtoprow
| data55 = {{#if:{{{hide_services|}}}|<!--(then omit the following)
-->|{{Infobox| child=yes | <!--
***** Police *****-->
| rowclass1 = mergedrow
| label1 = [[List of law enforcement agencies in the United Kingdom, Crown Dependencies and British Overseas Territories|Police]]
| data1 = {{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=police}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=police}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=police}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=police}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=police}} | }}
}}
| rowclass2 = mergedrow
| label2 =
| data2 ={{Unbulleted list|{{#if:{{{shire_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{shire_county3}}} |retrieve=police}}}}|{{#if:{{{metropolitan_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{metropolitan_county3}}} |retrieve=police}}}}|{{#if:{{{unitary_england3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{unitary_england3}}} |retrieve=police}}}}|{{#if:{{{unitary_scotland3|}}}|{{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland3}}} |retrieve=police}}}}|{{#if:{{{unitary_wales3|}}}|{{Infobox UK place/local |level1=Wales |level2={{{unitary_wales3}}} |retrieve=police}}}}}} <!--
***** Fire *****-->
| rowclass3 = mergedrow
| label3 = [[Fire services in the United Kingdom|Fire]]
| data3 = {{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=fire}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=fire}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=fire}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=fire}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=fire}} | }}
}}
| rowclass4 = mergedrow
| label4 =
| data4 = {{Unbulleted list|{{#if:{{{shire_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{shire_county3}}} |retrieve=fire}}}}|{{#if:{{{metropolitan_county3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{metropolitan_county3}}} |retrieve=fire}}}}|{{#if:{{{unitary_england3|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{{unitary_england3}}} |retrieve=fire}}}}|{{#if:{{{unitary_scotland3|}}}|{{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland3}}} |retrieve=fire}}}}|{{#if:{{{unitary_wales3|}}}|{{Infobox UK place/local |level1=Wales |level2={{{unitary_wales3}}} |retrieve=fire}}}}}}
| rowclass5 = mergedrow
| label5 = {{#if:{{{country|}}} |[[Emergency medical services in the United Kingdom|Ambulance]] |Ambulance}}
| data5 = {{#switch:{{{country}}}
| England = {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |ambulance={{{ambulance_service}}} |official_name={{#if:{{{official_name|}}}|{{{official_name}}}|{{PAGENAMEBASE}}}} |postcode={{{postcode_district}}} |retrieve=ambulance}}
| Northern Ireland = {{Infobox UK place/local |level1=Northern Ireland |retrieve=ambulance}}
| Scotland = {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=ambulance}}
| Wales = {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=ambulance}}
| #default = {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=ambulance}} | }}
}}
| rowclass6 = mergedrow
| label6 =
| data6 = {{#if:{{{region1|}}}|{{Infobox UK place/local |level1=England |level2={{{region1}}} |level3={{#if:{{{london_borough3|}}}|Greater London |{{#if:{{{metropolitan_county3|}}}|{{{metropolitan_county3}}} |{{#if:{{{shire_county3|}}}|{{{shire_county3}}} |{{#if:{{{lieutenancy_england3|}}}|{{{lieutenancy_england3}}} |{{{unitary_england3}}} }} }} }} }} |level4={{#if:{{{london_borough3|}}}|{{{london_borough3}}} |{{#if:{{{metropolitan_county3|}}}|{{{metropolitan_borough3}}} |{{#if:{{{shire_county3|}}}|{{{shire_district3}}} |{{{unitary_england3}}} }} }} }} |ambulance={{{ambulance_service1}}} |postcode={{{postcode_district}}} |retrieve=ambulance}}}}
}}
}}<!--
***** Constituencies *****
***** UK Parliament *****-->
| rowclass56 = mergedtoprow
| label56 = [[Constituencies of the Parliament of the United Kingdom|UK Parliament]]
| data56 = {{Unbulleted list|{{{constituency_westminster|}}}|{{{constituency_westminster1|}}}|{{{constituency_westminster2|}}}|{{{constituency_westminster3|}}}|{{{constituency_westminster4|}}}|{{{constituency_westminster5|}}}|{{{constituency_westminster6|}}}|{{{constituency_westminster7|}}}|{{{constituency_westminster8|}}}}}<!--
***** Scottish Parliament *****-->
| rowclass57 = mergedrow
| label57 = [[Scottish Parliament constituencies and electoral regions|Scottish Parliament]]
| data57 = {{Unbulleted list|{{{constituency_scottish_parliament|}}}|{{{constituency_scottish_parliament1|}}}|{{{constituency_scottish_parliament2|}}}|{{{constituency_scottish_parliament3|}}}|{{{constituency_scottish_parliament4|}}}|{{{constituency_scottish_parliament5|}}}|{{{constituency_scottish_parliament6|}}}|{{{constituency_scottish_parliament7|}}}|{{{constituency_scottish_parliament8|}}}|{{{constituency_scottish_parliament9|}}}|{{{constituency_scottish_parliament10|}}}}}<!--
***** London Assembly ***** -->
| rowclass58 = mergedrow
| label58 = [[List of London Assembly constituencies|London Assembly]]
| data58 = {{Unbulleted list|{{#if:{{{london_borough|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough}}} |level4={{{london_borough}}} |retrieve=assembly}}}}|{{#if:{{{london_borough1|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough1}}} |level4={{{london_borough1}}} |retrieve=assembly}}}}|{{#if:{{{london_borough2|}}}|{{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{{london_borough2}}} |level4={{{london_borough2}}} |retrieve=assembly}}}}}}<!--
***** Welsh Assembly *****-->
| rowclass59 = mergedrow
| label59 = [[Senedd constituencies and electoral regions|Senedd Cymru – Welsh Parliament]]
| data59 = {{Unbulleted list|{{{constituency_welsh_assembly|}}}|{{{constituency_welsh_assembly1|}}}|{{{constituency_welsh_assembly2|}}}}}<!--
***** Isle of Man (House of Keys) *****-->
| rowclass60 = mergedrow
| label60 = [[House of Keys constituencies|House of Keys]]
| data60 = {{{constituency_manx_parliament|}}}<!--
***** Northern Ireland Assembly ***** -->
| rowclass61 = mergedrow
| label61 = [[List of parliamentary constituencies in Northern Ireland|NI Assembly]]
| data61 = {{Unbulleted list|{{{constituency_ni_assembly|}}}|{{{constituency_ni_assembly1|}}}|{{{constituency_ni_assembly2|}}}|{{{constituency_ni_assembly3|}}}}}<!--
******Councillors (merged from {{infobox UK ward}}****** -->
| rowclass62 = mergedrow
| label62 = Councillors
| data62 = {{{councillors|}}}
| rowclass63 = mergedrow
| label63 = Councillors
| data63 = {{Unbulleted list|{{{councillor1|}}}{{#if:{{{party1|}}}| ({{{party1|}}})}}|{{{councillor2|}}}{{#if:{{{party2|}}}| ({{{party2|}}})}}|{{{councillor3|}}}{{#if:{{{party3|}}}| ({{{party3|}}})}}|{{{councillor4|}}}{{#if:{{{party4|}}}| ({{{party4|}}})}}|{{{councillor5|}}}{{#if:{{{party5|}}}| ({{{party5|}}})}}}}<!--
***** Website *****-->
| rowclass64 = mergedtoprow
| label64 = Website
| data64 = {{{website|}}}
| data70 = {{{embedded|}}}<!--
***** Footer *****-->
| belowclass = noprint nowrap
| below = {{startflatlist}}
; {{nobold|List of places}} {{#switch:{{{country}}}
| England =
: [[List of United Kingdom locations|UK]]
: [[List of places in England|England]]
: {{Infobox UK place/local |level1=England |level2={{{region}}} |level3={{#if:{{{london_borough|}}}|Greater London |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_county}}} |{{#if:{{{shire_county|}}}|{{{shire_county}}} |{{#if:{{{lieutenancy_england|}}}|{{{lieutenancy_england}}} |{{{unitary_england}}} }} }} }} }} |level4={{#if:{{{london_borough|}}}|{{{london_borough}}} |{{#if:{{{metropolitan_county|}}}|{{{metropolitan_borough}}} |{{#if:{{{shire_county|}}}|{{{shire_district}}} |{{{unitary_england}}} }} }} }} |retrieve=footer}}
| Scotland =
: [[List of United Kingdom locations|UK]]
: [[List of places in Scotland|Scotland]]
: {{Infobox UK place/local |level1=Scotland |level2={{{unitary_scotland}}} |retrieve=footer}}
| Wales =
: [[List of United Kingdom locations|UK]]
: [[List of places in Wales|Wales]]
: {{Infobox UK place/local |level1=Wales |level2={{{unitary_wales}}} |retrieve=footer}}
| Northern Ireland =
: [[List of United Kingdom locations|UK]]
: [[List of places in Northern Ireland|Northern Ireland]]
: {{Infobox UK place/local |level1=Northern Ireland |level2={{{lieutenancy_northern_ireland}}} |retrieve=footer}}
| #default =
: {{#ifeq:{{{crown_dependency}}}|Isle of Man |{{Infobox UK place/local|level1=Isle of Man|retrieve=footer}} |[[List of United Kingdom locations|United Kingdom]]}}
}}{{endflatlist}}<!--
***** Co-ordinates for top of page ***** -->
{{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|region:{{#ifeq:{{{crown_dependency|}}}|Isle of Man|IM|GB}}|type:city{{#iferror:{{#expr:{{formatnum:{{{population}}}|R}}*1}}||({{formatnum:{{{population}}}|R}})}}}}
|}}
}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox UK place with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox UK place]] with unknown parameter "_VALUE_"|ignoreblank=y| ambulance_service | ambulance_service1 | area_footnotes | area_total_km2 | area_total_sq_mi | belfast_direction | belfast_distance | belfast_distance_km | belfast_distance_mi | cardiff_direction | cardiff_distance | cardiff_distance_km | cardiff_distance_mi | charingX_direction | charingX_distance | charingX_distance_km | charingX_distance_mi | civil_parish | civil_parish1 | civil_parish2 | community_scotland | community_scotland1 | community_scotland2 | community_scotland3 | community_wales | community_wales1 | community_wales2 | community_wales3 | constituency_manx_parliament | constituency_ni_assembly | constituency_ni_assembly1 | constituency_ni_assembly2 | constituency_ni_assembly3 | constituency_scottish_parliament | constituency_scottish_parliament1 | constituency_scottish_parliament10 | constituency_scottish_parliament2 | constituency_scottish_parliament3 | constituency_scottish_parliament4 | constituency_scottish_parliament5 | constituency_scottish_parliament6 | constituency_scottish_parliament7 | constituency_scottish_parliament8 | constituency_scottish_parliament9 | constituency_welsh_assembly | constituency_welsh_assembly1 | constituency_welsh_assembly2 | constituency_westminster | constituency_westminster1 | constituency_westminster2 | constituency_westminster3 | constituency_westminster4 | constituency_westminster5 | constituency_westminster6 | constituency_westminster7 | constituency_westminster8 | coordinates | cornish_name | councillor1 | councillor2 | councillor3 | councillor4 | councillor5 | councillors | country | country1 | crown_dependency | dial_code | dial_code1 | dial_code2 | douglas_direction | douglas_distance | douglas_distance_km | douglas_distance_mi | dublin_direction | dublin_distance | dublin_distance_km | dublin_distance_mi | edinburgh_direction | edinburgh_distance | edinburgh_distance_km | edinburgh_distance_mi | embedded | gaelic_name | hide_services | irish_grid_reference | irish_grid_reference_note | irish_name | iso_code | label_position | language | language1 | language2 | lieutenancy_england | lieutenancy_england1 | lieutenancy_england2 | lieutenancy_england3 | lieutenancy_northern_ireland | lieutenancy_northern_ireland1 | lieutenancy_northern_ireland2 | lieutenancy_scotland | lieutenancy_scotland1 | lieutenancy_scotland2 | lieutenancy_scotland3 | lieutenancy_wales | lieutenancy_wales1 | lieutenancy_wales2 | lieutenancy_wales3 | local_name | london_borough | london_borough1 | london_borough2 | london_borough3 | london_borough4 | london_direction | london_distance | london_distance_km | london_distance_mi | manx_name | manx_parish | manx_sheading | manx_shedding | map_alt | map_relief | map_type | metropolitan_borough | metropolitan_borough1 | metropolitan_borough2 | metropolitan_borough3 | metropolitan_county | metropolitan_county1 | metropolitan_county2 | metropolitan_county3 | official_name | os_grid_reference | os_grid_reference_note | other_language | other_language_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | party1 | party2 | party3 | party4 | party5 | population | population_demonym | population_density | population_ref | post_town | post_town1 | post_town2 | postcode_area | postcode_area1 | postcode_area2 | postcode_district | postcode_district1 | postcode_district2 | pushpin_map | region | region1 | scale | scots_name | shire_county | shire_county1 | shire_county2 | shire_county3 | shire_district | shire_district1 | shire_district2 | shire_district3 | static_image | static_image_2 | static_image_2_alt | static_image_2_caption | static_image_2_name | static_image_2_width | static_image_alt | static_image_caption | static_image_name | static_image_width | statistic | statistic_title | statistic_title1 | statistic_title2 | statistic1 | statistic2 | type | unitary_england | unitary_england1 | unitary_england2 | unitary_england3 | unitary_northern_ireland | unitary_northern_ireland1 | unitary_northern_ireland2 | unitary_northern_ireland3 | unitary_scotland | unitary_scotland1 | unitary_scotland2 | unitary_scotland3 | unitary_wales | unitary_wales1 | unitary_wales2 | unitary_wales3 | website | welsh_name |pushpin_map_caption }}<noinclude>
{{Documentation}}
</noinclude>
035645493d54c93d57151831d79c27725c9b6d21
Module:Navbox
828
106
259
2023-05-28T13:26:56Z
Uzume
8
strict
Scribunto
text/plain
require('strict')
local p = {}
local navbar = require('Module:Navbar')._navbar
local cfg = mw.loadData('Module:Navbox/configuration')
local getArgs -- lazily initialized
local args
local format = string.format
local function striped(wikitext, border)
-- Return wikitext with markers replaced for odd/even striping.
-- Child (subgroup) navboxes are flagged with a category that is removed
-- by parent navboxes. The result is that the category shows all pages
-- where a child navbox is not contained in a parent navbox.
local orphanCat = cfg.category.orphan
if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then
-- No change; striping occurs in outermost navbox.
return wikitext .. orphanCat
end
local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part
if args[cfg.arg.evenodd] then
if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then
first, second = second, first
else
first = args[cfg.arg.evenodd]
second = first
end
end
local changer
if first == second then
changer = first
else
local index = 0
changer = function (code)
if code == '0' then
-- Current occurrence is for a group before a nested table.
-- Set it to first as a valid although pointless class.
-- The next occurrence will be the first row after a title
-- in a subgroup and will also be first.
index = 0
return first
end
index = index + 1
return index % 2 == 1 and first or second
end
end
local regex = orphanCat:gsub('([%[%]])', '%%%1')
return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count
end
local function processItem(item, nowrapitems)
if item:sub(1, 2) == '{|' then
-- Applying nowrap to lines in a table does not make sense.
-- Add newlines to compensate for trim of x in |parm=x in a template.
return '\n' .. item ..'\n'
end
if nowrapitems == cfg.keyword.nowrapitems_yes then
local lines = {}
for line in (item .. '\n'):gmatch('([^\n]*)\n') do
local prefix, content = line:match('^([*:;#]+)%s*(.*)')
if prefix and not content:match(cfg.pattern.nowrap) then
line = format(cfg.nowrap_item, prefix, content)
end
table.insert(lines, line)
end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
end
return item
end
local function has_navbar()
return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off
and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain
and (
args[cfg.arg.name]
or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')
~= cfg.pattern.navbox
)
end
local function renderNavBar(titleCell)
if has_navbar() then
titleCell:wikitext(navbar{
[cfg.navbar.name] = args[cfg.arg.name],
[cfg.navbar.mini] = 1,
[cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' ..
(args[cfg.arg.titlestyle] or '') ..
';background:none transparent;border:none;box-shadow:none;padding:0;'
})
end
end
local function renderTitleRow(tbl)
if not args[cfg.arg.title] then return end
local titleRow = tbl:tag('tr')
local titleCell = titleRow:tag('th'):attr('scope', 'col')
local titleColspan = 2
if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end
if args[cfg.arg.image] then titleColspan = titleColspan + 1 end
titleCell
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.titlestyle])
:addClass(cfg.class.navbox_title)
:attr('colspan', titleColspan)
renderNavBar(titleCell)
titleCell
:tag('div')
-- id for aria-labelledby attribute
:attr('id', mw.uri.anchorEncode(args[cfg.arg.title]))
:addClass(args[cfg.arg.titleclass])
:css('font-size', '114%')
:css('margin', '0 4em')
:wikitext(processItem(args[cfg.arg.title]))
end
local function getAboveBelowColspan()
local ret = 2
if args[cfg.arg.imageleft] then ret = ret + 1 end
if args[cfg.arg.image] then ret = ret + 1 end
return ret
end
local function renderAboveRow(tbl)
if not args[cfg.arg.above] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.aboveclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.abovestyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
-- id for aria-labelledby attribute, if no title
:attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil)
:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))
end
local function renderBelowRow(tbl)
if not args[cfg.arg.below] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.belowclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.belowstyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))
end
local function renderListRow(tbl, index, listnum, listnums_size)
local row = tbl:tag('tr')
if index == 1 and args[cfg.arg.imageleft] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 2px 0 0')
:cssText(args[cfg.arg.imageleftstyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.imageleft]))
end
local group_and_num = format(cfg.arg.group_and_num, listnum)
local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)
if args[group_and_num] then
local groupCell = row:tag('th')
-- id for aria-labelledby attribute, if lone group with no title or above
if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then
groupCell
:attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]))
end
groupCell
:attr('scope', 'row')
:addClass(cfg.class.navbox_group)
:addClass(args[cfg.arg.groupclass])
:cssText(args[cfg.arg.basestyle])
-- If groupwidth not specified, minimize width
:css('width', args[cfg.arg.groupwidth] or '1%')
groupCell
:cssText(args[cfg.arg.groupstyle])
:cssText(args[groupstyle_and_num])
:wikitext(args[group_and_num])
end
local listCell = row:tag('td')
if args[group_and_num] then
listCell
:addClass(cfg.class.navbox_list_with_group)
else
listCell:attr('colspan', 2)
end
if not args[cfg.arg.groupwidth] then
listCell:css('width', '100%')
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing
if index % 2 == 1 then
rowstyle = args[cfg.arg.oddstyle]
else
rowstyle = args[cfg.arg.evenstyle]
end
local list_and_num = format(cfg.arg.list_and_num, listnum)
local listText = args[list_and_num]
local oddEven = cfg.marker.oddeven
if listText:sub(1, 12) == '</div><table' then
-- Assume list text is for a subgroup navbox so no automatic striping for this row.
oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part
end
local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)
local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)
listCell
:css('padding', '0')
:cssText(args[cfg.arg.liststyle])
:cssText(rowstyle)
:cssText(args[liststyle_and_num])
:addClass(cfg.class.navbox_list)
:addClass(cfg.class.navbox_part .. oddEven)
:addClass(args[cfg.arg.listclass])
:addClass(args[listclass_and_num])
:tag('div')
:css('padding',
(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em'
)
:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))
if index == 1 and args[cfg.arg.image] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 0 0 2px')
:cssText(args[cfg.arg.imagestyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.image]))
end
end
local function has_list_class(htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, _ in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles()
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles)
local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar() and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because most navboxes will emit only
-- one of these classes [hlist_note]
return hlist_styles .. plainlist_styles
end
local function needsHorizontalLists(border)
if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then
return false
end
return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)
end
local function hasBackgroundColors()
for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,
cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('background', 1, true) then
return true
end
end
return false
end
local function hasBorders()
for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,
cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('border', 1, true) then
return true
end
end
return false
end
local function isIllegible()
local styleratio = require('Module:Color contrast')._styleratio
for key, style in pairs(args) do
if tostring(key):match(cfg.pattern.style) then
if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
return true
end
end
end
return false
end
local function getTrackingCategories(border)
local cats = {}
if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end
if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end
if isIllegible() then table.insert(cats, cfg.category.illegible) end
if hasBorders() then table.insert(cats, cfg.category.borders) end
return cats
end
local function renderTrackingCategories(builder, border)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 then return end -- not in template space
local subpage = title.subpageText
if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox
or subpage == cfg.keyword.subpage_testcases then return end
for _, cat in ipairs(getTrackingCategories(border)) do
builder:wikitext('[[Category:' .. cat .. ']]')
end
end
local function renderMainTable(border, listnums)
local tbl = mw.html.create('table')
:addClass(cfg.class.nowraplinks)
:addClass(args[cfg.arg.bodyclass])
local state = args[cfg.arg.state]
if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then
if state == cfg.keyword.state_collapsed then
state = cfg.class.collapsed
end
tbl
:addClass(cfg.class.collapsible)
:addClass(state or cfg.class.autocollapse)
end
tbl:css('border-spacing', 0)
if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then
tbl
:addClass(cfg.class.navbox_subgroup)
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
else -- regular navbox - bodystyle and style will be applied to the wrapper table
tbl
:addClass(cfg.class.navbox_inner)
:css('background', 'transparent')
:css('color', 'inherit')
end
tbl:cssText(args[cfg.arg.innerstyle])
renderTitleRow(tbl)
renderAboveRow(tbl)
local listnums_size = #listnums
for i, listnum in ipairs(listnums) do
renderListRow(tbl, i, listnum, listnums_size)
end
renderBelowRow(tbl)
return tbl
end
local function add_navbox_styles(hiding_templatestyles)
local frame = mw.getCurrentFrame()
-- This is a lambda so that it doesn't need the frame as a parameter
local function add_user_styles(templatestyles)
if templatestyles and templatestyles ~= '' then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
end
return ''
end
-- get templatestyles. load base from config so that Lua only needs to do
-- the work once of parser tag expansion
local base_templatestyles = cfg.templatestyles
local templatestyles = add_user_styles(args[cfg.arg.templatestyles])
local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])
-- The 'navbox-styles' div exists to wrap the styles to work around T200206
-- more elegantly. Instead of combinatorial rules, this ends up being linear
-- number of CSS rules.
return mw.html.create('div')
:addClass(cfg.class.navbox_styles)
:wikitext(
add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles'
base_templatestyles ..
templatestyles ..
child_templatestyles ..
table.concat(hiding_templatestyles)
)
:done()
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
function p._navbox(navboxArgs)
args = navboxArgs
local hiding_templatestyles = move_hiding_templatestyles(args)
local listnums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local listnum = k:match(cfg.pattern.listnum)
if listnum then table.insert(listnums, tonumber(listnum)) end
end
end
table.sort(listnums)
local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')
if border == cfg.keyword.border_child then
border = cfg.keyword.border_subgroup
end
-- render the main body of the navbox
local tbl = renderMainTable(border, listnums)
local res = mw.html.create()
-- render the appropriate wrapper for the navbox, based on the border param
if border == cfg.keyword.border_none then
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]
and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(
args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]
)
)
else
nav:attr('aria-label', cfg.aria_label)
end
elseif border == cfg.keyword.border_subgroup then
-- We assume that this navbox is being rendered in a list cell of a
-- parent navbox, and is therefore inside a div with padding:0em 0.25em.
-- We start with a </div> to avoid the padding being applied, and at the
-- end add a <div> to balance out the parent's </div>
res
:wikitext('</div>')
:node(tbl)
:wikitext('<div>')
else
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:addClass(cfg.class.navbox)
:addClass(args[cfg.arg.navboxclass])
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
:css('padding', '3px')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above]
or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])
)
else
nav:attr('aria-label', cfg.aria_label)
end
end
if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then
renderTrackingCategories(res, border)
end
return striped(tostring(res), border)
end
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})
-- Read the arguments in the order they'll be output in, to make references
-- number in the right order.
local _
_ = args[cfg.arg.title]
_ = args[cfg.arg.above]
-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because
-- iterator approach won't work here
for i = 1, 20 do
_ = args[format(cfg.arg.group_and_num, i)]
_ = args[format(cfg.arg.list_and_num, i)]
end
_ = args[cfg.arg.below]
return p._navbox(args)
end
return p
05be9a97c035ab3f0fac69423779e261949d473c
Template:Infobox U.S. Cabinet/doc
10
1530
2865
2023-05-28T18:13:47Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Infobox cabinet members}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) -->
== Usage ==
Blank template with full parameters:
<syntaxhighlight lang="wikitext" style="overflow:auto; max-width:40em">{{Infobox U.S. Cabinet
|align = <!-- left, right, center, or none -->
|Name =
|image =
|alt =
|caption =
|President =
|President start =
|President end =
|Vice President =
|Vice President start =
|Vice President end =
|Vice President 2 =
|Vice President start 2 =
|Vice President end 2 =
|Vice President 3 =
|Vice President start 3 =
|Vice President end 3 =
|Vice President 4 =
|Vice President start 4 =
|Vice President end 4 =
|State =
|State start =
|State end =
|State 2 =
|State start 2 =
|State end 2 =
|State 3 =
|State start 3 =
|State end 3 =
|State 4 =
|State start 4 =
|State end 4 =
|Treasury =
|Treasury start =
|Treasury end =
|Treasury 2 =
|Treasury start 2 =
|Treasury end 2 =
|Treasury 3 =
|Treasury start 3 =
|Treasury end 3 =
|Treasury 4 =
|Treasury start 4 =
|Treasury end 4 =
|Treasury 5 =
|Treasury start 5 =
|Treasury end 5 =
|War =
|War start =
|War end =
|War 2 =
|War start 2 =
|War end 2 =
|War 3 =
|War start 3 =
|War end 3 =
|War 4 =
|War start 4 =
|War end 4 =
|War 5 =
|War start 5 =
|War end 5 =
|Defense =
|Defense start =
|Defense end =
|Defense 2 =
|Defense start 2 =
|Defense end 2 =
|Defense 3 =
|Defense start 3 =
|Defense end 3 =
|Defense 4 =
|Defense start 4 =
|Defense end 4 =
|Army =
|Army start =
|Army end =
|Army 2 =
|Army start 2 =
|Army end 2 =
|Air Force =
|Air Force start =
|Air Force end =
|Justice =
|Justice start =
|Justice end =
|Justice 2 =
|Justice start 2 =
|Justice end 2 =
|Justice 3 =
|Justice start 3 =
|Justice end 3 =
|Justice 4 =
|Justice start 4 =
|Justice end 4 =
|Justice 5 =
|Justice start 5 =
|Justice end 5 =
|Post =
|Post start =
|Post end =
|Post 2 =
|Post start 2 =
|Post end 2 =
|Post 3 =
|Post start 3 =
|Post end 3 =
|Post 4 =
|Post start 4 =
|Post end 4 =
|Post 5 =
|Post 5 start =
|Post 5 end =
|Navy =
|Navy start =
|Navy end =
|Navy 2 =
|Navy start 2 =
|Navy end 2 =
|Navy 3 =
|Navy start 3 =
|Navy end 3 =
|Navy 4 =
|Navy start 4 =
|Navy end 4 =
|Navy 5 =
|Navy start 5 =
|Navy end 5 =
|Navy 6 =
|Navy start 6 =
|Navy end 6 =
|Interior =
|Interior start =
|Interior end =
|Interior 2 =
|Interior start 2 =
|Interior end 2 =
|Interior 3 =
|Interior start 3 =
|Interior end 3 =
|Interior 4 =
|Interior start 4 =
|Interior end 4 =
|Agriculture =
|Agriculture start =
|Agriculture end =
|Agriculture 2 =
|Agriculture start 2 =
|Agriculture end 2 =
|Agriculture 3 =
|Agriculture start 3 =
|Agriculture end 3 =
|Agriculture 4 =
|Agriculture start 4 =
|Agriculture end 4 =
|CommerceLabor =
|CommerceLabor start =
|CommerceLabor end =
|CommerceLabor 2 =
|CommerceLabor start 2 =
|CommerceLabor end 2 =
|CommerceLabor 3 =
|CommerceLabor 3 start =
|CommerceLabor 3 end =
|CommerceLabor 4 =
|CommerceLabor 4 start =
|CommerceLabor 4 end =
|Commerce =
|Commerce start =
|Commerce end =
|Commerce 2 =
|Commerce start 2 =
|Commerce end 2 =
|Commerce 3 =
|Commerce start 3 =
|Commerce end 3 =
|Commerce 4 =
|Commerce start 4 =
|Commerce end 4 =
|Labor =
|Labor start =
|Labor end =
|Labor 2 =
|Labor start 2 =
|Labor end 2 =
|Labor 3 =
|Labor start 3 =
|Labor end 3 =
|Labor 4 =
|Labor start 4 =
|Labor end 4 =
|Health, Education, and Welfare =
|Health, Education, and Welfare start =
|Health, Education, and Welfare end =
|Health, Education, and Welfare 2 =
|Health, Education, and Welfare start 2 =
|Health, Education, and Welfare end 2 =
|Health, Education, and Welfare 3 =
|Health, Education, and Welfare start 3 =
|Health, Education, and Welfare end 3 =
|Health, Education, and Welfare 4 =
|Health, Education, and Welfare start 4 =
|Health, Education, and Welfare end 4 =
|Health and Human Services =
|Health and Human Services start =
|Health and Human Services end =
|Health and Human Services 2 =
|Health and Human Services start 2 =
|Health and Human Services end 2 =
|Health and Human Services 3 =
|Health and Human Services start 3 =
|Health and Human Services end 3 =
|Health and Human Services 4 =
|Health and Human Services start 4 =
|Health and Human Services end 4 =
|Housing and Urban Development =
|Housing and Urban Development start =
|Housing and Urban Development end =
|Housing and Urban Development 2 =
|Housing and Urban Development start 2 =
|Housing and Urban Development end 2 =
|Housing and Urban Development 3 =
|Housing and Urban Development start 3 =
|Housing and Urban Development end 3 =
|Housing and Urban Development 4 =
|Housing and Urban Development start 4 =
|Housing and Urban Development end 4 =
|Transportation =
|Transportation start =
|Transportation end =
|Transportation 2 =
|Transportation start 2 =
|Transportation end 2 =
|Transportation 3 =
|Transportation start 3 =
|Transportation end 3 =
|Transportation 4 =
|Transportation start 4 =
|Energy =
|Energy start =
|Energy end =
|Energy 2 =
|Energy start 2 =
|Energy end 2 =
|Energy 3 =
|Energy start 3 =
|Energy end 3 =
|Energy 4 =
|Energy start 4 =
|Energy end 4 =
|Education =
|Education start =
|Education end =
|Education 2 =
|Education start 2 =
|Education end 2 =
|Education 3 =
|Education start 3 =
|Education end 3 =
|Education 4 =
|Education start 4 =
|Education end 4 =
|Veterans Affairs =
|Veterans Affairs start =
|Veterans Affairs end =
|Veterans Affairs 2 =
|Veterans Affairs start 2 =
|Veterans Affairs end 2 =
|Veterans Affairs 3 =
|Veterans Affairs start 3 =
|Veterans Affairs end 3 =
|Veterans Affairs 4 =
|Veterans Affairs start 4 =
|Veterans Affairs end 4 =
|Homeland Security =
|Homeland Security start =
|Homeland Security end =
|Homeland Security 2 =
|Homeland Security start 2 =
|Homeland Security end 2 =
|Homeland Security 3 =
|Homeland Security start 3 =
|Homeland Security end 3 =
|Homeland Security 4 =
|Homeland Security start 4 =
|Homeland Security end 4 =
|Environmental Protection =
|Environmental Protection start =
|Environmental Protection end =
|Environmental Protection 2 =
|Environmental Protection start 2 =
|Environmental Protection end 2 =
|Environmental Protection 3 =
|Environmental Protection start 3 =
|Environmental Protection end 3 =
|Environmental Protection 4 =
|Environmental Protection start 4 =
|Environmental Protection end 4 =
|Bureau of the Budget =
|Bureau of the Budget start =
|Bureau of the Budget end =
|Bureau of the Budget 2 =
|Bureau of the Budget start 2 =
|Bureau of the Budget end 2 =
|Bureau of the Budget 3 =
|Bureau of the Budget start 3 =
|Bureau of the Budget end 3 =
|Bureau of the Budget 4 =
|Bureau of the Budget start 4 =
|Bureau of the Budget end 4 =
|Management and Budget =
|Management and Budget start =
|Management and Budget end =
|Management and Budget 2 =
|Management and Budget start 2 =
|Management and Budget end 2 =
|Management and Budget 3 =
|Management and Budget start 3 =
|Management and Budget end 3 =
|Management and Budget 4 =
|Management and Budget start 4 =
|Management and Budget end 4 =
|DCI =
|DCI start =
|DCI end =
|DCI 2 =
|DCI start 2 =
|DCI end 2 =
|DCI 3 =
|DCI start 3 =
|DCI end 3 =
|DNI =
|DNI start =
|DNI end =
|DNI 2 =
|DNI start 2 =
|DNI end 2 =
|DNI 3 =
|DNI start 3 =
|DNI end 3 =
|DNI 4 =
|DNI start 4 =
|DNI end 4 =
|CIA =
|CIA start =
|CIA end =
|CIA 2 =
|CIA start 2 =
|CIA end 2 =
|CIA 3 =
|CIA start 3 =
|CIA end 3 =
|CIA 4 =
|CIA start 4 =
|CIA end 4 =
|Trade =
|Trade start =
|Trade end =
|Trade 2 =
|Trade start 2 =
|Trade end 2 =
|Trade 3 =
|Trade start 3 =
|Trade end 3 =
|Trade 4 =
|Trade start 4 =
|Trade end 4 =
|Ambassador to the United Nations =
|Ambassador to the United Nations start =
|Ambassador to the United Nations end =
|Ambassador to the United Nations 2 =
|Ambassador to the United Nations start 2 =
|Ambassador to the United Nations end 2 =
|Ambassador to the United Nations 3 =
|Ambassador to the United Nations start 3 =
|Ambassador to the United Nations end 3 =
|Ambassador to the United Nations 4 =
|Ambassador to the United Nations start 4 =
|Ambassador to the United Nations end 4 =
|Mutual Security Agency =
|Mutual Security Agency start =
|Mutual Security Agency end =
|National Security =
|National Security start =
|National Security end =
|National Security 2 =
|National Security start 2 =
|National Security end 2 =
|National Security 3 =
|National Security start 3 =
|National Security end 3 =
|National Security 4 =
|National Security start 4 =
|National Security end 4 =
|Economic Advisers =
|Economic Advisers start =
|Economic Advisers end =
|Economic Advisers 2 =
|Economic Advisers start 2 =
|Economic Advisers end 2 =
|Economic Advisers 3 =
|Economic Advisers start 3 =
|Economic Advisers end 3 =
|Economic Advisers 4 =
|Economic Advisers start 4 =
|Economic Advisers end 4 =
|Administrator of the Small Business Administration =
|Administrator of the Small Business Administration start =
|Administrator of the Small Business Administration end =
|Administrator of the Small Business Administration 2 =
|Administrator of the Small Business Administration start 2 =
|Administrator of the Small Business Administration end 2 =
|Administrator of the Small Business Administration 3 =
|Administrator of the Small Business Administration start 3 =
|Administrator of the Small Business Administration end 3 =
|Administrator of the Small Business Administration 4 =
|Administrator of the Small Business Administration start 4 =
|Administrator of the Small Business Administration end 4 =
|Office of Defense Mobilization =
|Office of Defense Mobilization start =
|Office of Defense Mobilization end =
|Office of Defense Mobilization 2 =
|Office of Defense Mobilization start 2 =
|Office of Defense Mobilization end 2 =
|Federal Civil Defense Administration =
|Federal Civil Defense Administration start =
|Federal Civil Defense Administration end =
|Federal Civil Defense Administration 2 =
|Federal Civil Defense Administration start 2 =
|Federal Civil Defense Administration end 2 =
|Office of Civil and Defense Mobilization =
|Office of Civil and Defense Mobilization start =
|Office of Civil and Defense Mobilization end =
|FEMA =
|FEMA start =
|FEMA end =
|Atomic Energy Commission =
|Atomic Energy Commission start =
|Atomic Energy Commission end =
|Atomic Energy Commission 2 =
|Atomic Energy Commission start 2 =
|Atomic Energy Commission end 2 =
|Atomic Energy Commission 3 =
|Atomic Energy Commission start 3 =
|Atomic Energy Commission end 3 =
|National Drug Control =
|National Drug Control start =
|National Drug Control end =
|National Drug Control 2 =
|National Drug Control start 2 =
|National Drug Control end 2 =
|National Drug Control 3 =
|National Drug Control start 3 =
|National Drug Control end 3 =
|National Drug Control 4 =
|National Drug Control start 4 =
|National Drug Control end 4 =
|Science and Technology Policy =
|Science and Technology Policy start =
|Science and Technology Policy end =
|Science and Technology Policy 2 =
|Science and Technology Policy start 2 =
|Science and Technology Policy end 2 =
|Science and Technology Policy 3 =
|Science and Technology Policy start 3 =
|Science and Technology Policy end 3 =
|Science and Technology Policy 4 =
|Science and Technology Policy start 4 =
|Science and Technology Policy end 4 =
|Chief of Staff =
|Chief of Staff start =
|Chief of Staff end =
|Chief of Staff 2 =
|Chief of Staff start 2 =
|Chief of Staff end 2 =
|Chief of Staff 3 =
|Chief of Staff start 3 =
|Chief of Staff end 3 =
|Chief of Staff 4 =
|Chief of Staff start 4 =
|Chief of Staff end 4 =
|Deputy Chief of Staff =
|Deputy Chief of Staff start =
|Deputy Chief of Staff end =
|Deputy Chief of Staff 2 =
|Deputy Chief of Staff start 2 =
|Deputy Chief of Staff end 2 =
|Cabinet Secretary =
|Cabinet Secretary start =
|Cabinet Secretary end =
|Cabinet Secretary 2 =
|Cabinet Secretary start 2 =
|Cabinet Secretary end 2 =
|Counselor to the President =
|Counselor to the President start =
|Counselor to the President end =
|Counselor to the President 2 =
|Counselor to the President start 2 =
|Counselor to the President end 2 =
|Counselor to the President 3 =
|Counselor to the President start 3 =
|Counselor to the President end 3 =
|Counselor to the President 4 =
|Counselor to the President start 4 =
|Counselor to the President end 4 =
|Counselor to the President 5 =
|Counselor to the President start 5 =
|Counselor to the President end 5 =
|Counselor to the President 6 =
|Counselor to the President start 6 =
|Counselor to the President end 6 =
|Counselor to the President 7 =
|Counselor to the President start 7 =
|Counselor to the President end 7 =
|Counselor to the President 8 =
|Counselor to the President start 8 =
|Counselor to the President end 8 =
|White House Counsel =
|White House Counsel start =
|White House Counsel end =
|White House Counsel 2 =
|White House Counsel start 2 =
|White House Counsel end 2 =
|White House Counsel 3 =
|White House Counsel start 3 =
|White House Counsel end 3 =
|White House Counsel 4 =
|White House Counsel start 4 =
|White House Counsel end 4 =
|Source =
|Footnotes =
}}</syntaxhighlight>
==See also==
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:United States government infobox templates|Cabinet]]
}}</includeonly>
6eb21b838ea7bed6ddb18ea55b0d639a10c766e5
Template:Infobox royal styles/doc
10
1283
2617
2023-05-28T18:18:46Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{Wraps infobox|Infobox manner of address}}
== Usage ==
===Blank template===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royal styles
| name =
| image =
| image_size =
| reference =
| spoken =
| alternative =
}}
</syntaxhighlight>
===Parameters===
* '''name''' or '''royal name'''
: Name which appears at top of infobox
* '''image'''
: (optional) [[Coat of arms]] image, should be in format <code><nowiki>Imagefilename.png</nowiki></code>
* '''image_size'''
: (optional) Image size, generally between 50-100px
* '''reference''' or '''dipstyle'''
: [[Style (manner of address)|Reference style]] (originally labeled: Diplomatic style)
* '''spoken''' or '''offstyle'''
: Spoken style (originally labeled: Official spoken style)
* '''alternative''' or '''altstyle'''
: Alternative style (originally labeled: Alternative spoken style)
== Examples ==
===Commonwealth Realms===
{{Infobox royal styles
| name = Queen Elizabeth II
| image = Personal flag of Queen Elizabeth II.svg
| image_size = 75px
| reference = [[Majesty|Her Majesty]]
| spoken = Your Majesty
}}
[[Elizabeth II]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royal styles
| name = Queen Elizabeth II
| image = Personal flag of Queen Elizabeth II.svg
| image_size = 75px
| reference = [[Majesty|Her Majesty]]
| spoken = Your Majesty
}}
</syntaxhighlight>
{{clear}}
===Brazil===
{{Infobox royal styles
| name = Pedro II, Emperor of Brazil
| image = CoA Empire of Brazil (1870-1889).svg
| image_size = 60px
| reference = [[Imperial Majesty (style)|His Imperial Majesty]]
| spoken = Your Imperial Majesty
}}
[[Pedro II of Brazil]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royal styles
| name = Pedro II, Emperor of Brazil
| image = CoA Empire of Brazil (1870-1889).svg
| image_size = 60px
| reference = [[Imperial Majesty (style)|His Imperial Majesty]]
| spoken = Your Imperial Majesty
}}
</syntaxhighlight>
{{clear}}
===Greece===
{{Infobox royal styles
| name = King Alexander I of the Hellenes
| image = Royal Arms of Greece (1863-1936).svg
| image_size = 60px
| reference = [[Majesty|His Majesty]]
| spoken = Your Majesty
}}
[[Alexander of Greece (king)]]
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royal styles
| name = King Alexander I of the Hellenes
| image = Royal Arms of Greece (1863-1936).svg
| image_size = 60px
| reference = [[Majesty|His Majesty]]
| spoken = Your Majesty
}}
</syntaxhighlight>
{{clear}}
== See also ==
* [{{fullurl:index.php|title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0}} List of articles] this template
;Additional information on styles
* [[Royal Highness|HRH]]
* [[Royal and noble styles]]
* [[Style (manner of address)]]
;Core template
* [[Template:Infobox manner of address]]
;Similar templates
* [[Template:Infobox British Royalty styles]]
* [[Template:Infobox Dutch Royalty styles]]
* [[Template:Infobox French Royalty styles]]
* [[Template:Infobox Portuguese Royalty styles]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Royal Styles}}
[[Category:Royalty and nobility infobox templates]]
[[Category:Styles infobox templates]]
[[Category:Templates calling Infobox manner of address]]
}}</includeonly>
3807666d73ff2ebfe201e50d7b05273ba6131df3
Template:Infobox UK place/full syntax
10
1419
2754
2023-05-28T18:25:11Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox UK place
<!---------------BASICS---------------->
| official_name = <!-- defaults to {{PAGENAME}} -->
| local_name =
| type = <!-- e.g. City, Town, Village. -->
| country = <!-- England, Northern Ireland, Wales, Scotland; do not link. Also produces EU constituency. -->
| crown_dependency = <!-- Isle of Man; do not link. Removes formal mentions of the UK. -->
| region = <!-- England only; do not link. Also produces EU constituency. -->
| region1 = <!-- (if place extends to more than one region of England) -->
<!---------------PARTS----------------->
| parts_type = <!-- defaults to: Places -->
| parts_style = <!-- list, coll (collapsed list), para (paragraph format) -->
| parts = <!-- parts text, or header for parts list -->
| p1 =
| p2 = <!-- etc., up to p50: for separate parts to be listed-->
<!---------------IMAGE/S--------------->
| static_image_name = <!-- For a static image of the place, e.g. a skyline or defining local landmark. Use filename only (e.g. name.jpg). -->
| static_image_width = <!-- allows control of the image width. Should be omitted in most cases (will default to 240) -->
| static_image_alt = <!-- for a description of the image per [[WP:ALT]] -->
| static_image_caption = <!-- optional caption for static image -->
| static_image_2_name = <!-- for a second static image, such as a town crest. Use filename only (e.g. name.jpg). -->
| static_image_2_width = <!-- allows control of the image width. Should not exceed 240 -->
| static_image_2_alt = <!-- for a description of the image per [[WP:ALT]] -->
| static_image_2_caption = <!-- optional caption for static image -->
<!-------------STATISTICS-------------->
| area_total_sq_mi = <!-- Total area in square miles (number only). If area_total_km2 (below) left blank, a conversion -->
<!-- to sq-km will also be calculated and included. -->
| area_total_km2 = <!-- Total area in square km (number only). If area_total_sq_mi (above) left blank, a conversion -->
<!-- to sq-mi will also be calculated and included. -->
| area_footnotes = <!-- Reference/s for the value/s used in the area fields. Use <ref>...</ref> tags. -->
| population = <!-- Number only. If area_total_sq_mi or area_total_km2 have also been supplied, -->
<!-- population_density (below) is calculated automatically. -->
| population_ref = <!-- To include a reference or references (e.g."<ref>Census, 2001</ref>") and/or use for any -->
<!-- non-numeric population values (e.g. "c. 500", "< 500"). (A good place to check these -->
<!-- figures is http://neighbourhood.statistics.gov.uk/ )-->
| population_density = <!-- To convert /sq-mi to /sq-km, use {{pop density mi2 to km2|(/sq-mi value here)|precision=1|abbr=yes}}; -->
<!-- to convert /sq-km to /sq-mi, use {{pop density km2 to mi2|(/sq-km value here)|precision=1|abbr=yes}}. -->
| population_demonym =
<!---(for further optional population stats:)--->
| statistic_title =
| statistic =
| statistic_title1 =
| statistic1 =
| statistic_title2 =
| statistic2 =
<!-----------MAP / LOCATION------------>
| os_grid_reference =
| map_type = <!-- type of map (leave blank for default map, or set to nomap, UK or Greater Belfast to force a particular map) -->
| map_alt = <!-- alt text for map, for visually impaired and other readers who cannot see the image; see [[WP:ALT]] -->
| coordinates = <!-- location of the place (use {{Coord}}); puts a dot on the map -->
| label_position = <!-- adjust position of label by dot – defaults to right -->
<!-------------POSTAL INFO------------->
| post_town = <!-- e.g. "UXBRIDGE" (without quotemarks). Will be displayed as upper-case. -->
| post_town1 = <!-- (if place extends to more than one post town)-->
| post_town2 =
| postcode_area = <!-- e.g. "UB" -->
| postcode_area1 = <!-- (if place extends to more than one postcode area) -->
| postcode_area2 =
| postcode_district = <!-- e.g. "UB1", "UB2", etc -->
| postcode_district1 = <!-- (if place extends to more than one postcode district) -->
| postcode_district2 =
<!------------TELEPHONE INFO----------->
| dial_code = <!-- e.g. 020, 0161 or 01332. Do not include international prefixes/codes (such as +44) -->
| dial_code1 = <!-- (if place has more than one dialling code) -->
| dial_code2 =
<!-------------GOVERNANCE-------------->
| constituency_westminster = <!-- (use link, e.g. [[Chiltern Hundreds]]) -->
| constituency_westminster1 = <!-- (if place extends to more than one constituency; use link) -->
| constituency_westminster2 =
| constituency_westminster3 =
| civil_parish = <!-- If place within a parish. Use link (e.g. [[Odd Rode]]). -->
| civil_parish1 = <!-- (if place extends to another parish; use link) -->
| civil_parish2 = <!-- (if place extends to another parish; use link) -->
<!--------------DISTANCES-------------->
<!-- As crow flies, i.e. straight-line. Miles may be converted to km via {{convert|(distance)|mi|0}}. -->
| london_distance_mi = <!-- (for places outside but nearer to Greater London than any of the other settlements below) -->
| london_distance_km =
| london_distance =
| london_direction =
| belfast_distance_mi = <!-- (for places in Northern Ireland) -->
| belfast_distance_km =
| belfast_distance =
| belfast_direction =
| cardiff_distance_mi = <!-- (for places in Wales) -->
| cardiff_distance_km =
| cardiff_distance =
| cardiff_direction =
| dublin_distance_mi = <!-- (in addition to Belfast data for places in Northern Ireland if they are also relatively near Dublin) -->
| dublin_distance_km =
| dublin_distance =
| dublin_direction =
| edinburgh_distance_mi = <!-- (for places in Scotland) -->
| edinburgh_distance_km =
| edinburgh_distance =
| edinburgh_direction =
| douglas_distance_mi = <!-- (for places on the Isle of Man) -->
| douglas_distance_km =
| douglas_distance =
| douglas_direction =
| charingX_distance_mi = <!-- (for places within Greater London) -->
| charingX_distance_km =
| charingX_distance =
| charingX_direction =
<!-------SCOTLAND-SPECIFIC INFO-------->
| gaelic_name =
| scots_name =
| community_scotland = <!-- (use link, e.g. [[Old Aberdeen]]) -->
| community_scotland1 = <!-- (if place assigned more than one community) -->
| unitary_scotland =
| unitary_scotland1 = <!-- (if place assigned more than one unitary area) -->
| lieutenancy_scotland =
| lieutenancy_scotland1 = <!-- (if place part of more than one lieutenancy)-->
| constituency_scottish_parliament =
| constituency_scottish_parliament1 = <!-- (if place extends to more than one constituency) -->
| constituency_scottish_parliament2 =
<!---------WALES-SPECIFIC INFO--------->
| welsh_name =
| community_wales = <!-- (use link, e.g. [[Eglwyscummin]]) -->
| community_wales1 = <!-- (if place assigned more than one community) -->
| unitary_wales =
| unitary_wales1 = <!-- (as Scotland above) -->
| lieutenancy_wales =
| lieutenancy_wales1 = <!-- (ditto) -->
| constituency_welsh_assembly =
| constituency_welsh_assembly1 = <!-- (ditto) -->
| constituency_welsh_assembly2 =
<!-------N.IRELAND-SPECIFIC INFO------->
| irish_name =
| irish_grid_reference =
| unitary_northern_ireland =
| unitary_northern_ireland1 = <!-- (ditto) -->
| unitary_northern_ireland2 =
| lieutenancy_northern_ireland =
| lieutenancy_northern_ireland1 = <!-- (ditto) -->
| lieutenancy_northern_ireland2 =
| constituency_ni_assembly =
| constituency_ni_assembly1 = <!-- (ditto) -->
<!------ISLE OF MAN-SPECIFIC INFO------>
| manx_name =
| manx_parish =
| manx_sheading =
| constituency_manx_parliament =
<!--------ENGLAND-SPECIFIC INFO-------->
| metropolitan_borough =
| metropolitan_borough1 = <!-- (ditto) -->
| metropolitan_county = <!-- (use link, e.g. [[Tyne and Wear]]) -->
| metropolitan_county1 = <!-- (if place part of more than one metropolitan country) -->
| shire_district =
| shire_district1 = <!-- (if place extends to more than one shire district) -->
| shire_county = <!-- (use link, e.g. [[Devon]]) -->
| shire_county1 = <!-- (if place extends to more than one shire county) -->
| unitary_england =
| unitary_england1 = <!-- (if place assigned more than one unitary area) -->
| lieutenancy_england = <!-- (not required where shire or metropolitan is the same) -->
| lieutenancy_england1 = <!-- (if place extends to more than one lieutenancy) -->
| london_borough = <!-- Simplify but do not link (e.g. "Bromley" rather than "[[London Borough of Bromley]]") otherwise -->
<!-- place's London Assembly constituency cannot be identified. -->
| london_borough1 = <!-- (For places extending to more than one borough. As above, simplify but do not link.) -->
| london_borough2 =
| london_borough3 = <!-- (as above, but not used to identify London Assembly constituency) -->
| london_borough4 = <!-- (ditto) -->
<!--------OTHER LANGUAGES, ETC--------->
| cornish_name =
| other_language_name = <!-- Place's name in another relevant language -->
| other_language = <!-- Other relevant language's name -->
| language = <!-- Locally-spoken language -->
| language1 = <!-- (ditto) -->
| language2 =
| website = <!-- Place's council or equivalent local-government website -->
| hide_services = <!-- Set as "yes" (without quotemarks) to suppress inclusion of Police/Fire/Ambulance details, otherwise omit. -->
}}
</syntaxhighlight>
a4c8a80110a0b60944f16206f6a249a4b514a4f7
Template:Greek nationalism
10
1114
2427
2023-05-29T09:10:17Z
159.146.57.42
0
gg
wikitext
text/x-wiki
{{Navbox
|name = Greek nationalism
|state = {{{state<includeonly>|collapsed</includeonly>}}}
|title = [[Greek nationalism]]
|listclass = hlist
|group1 = Ideology
|list1 =
* [[Modern Greek Enlightenment]]
* [[Megali Idea]]
* [[Hellenization]]
** [[Grecoman]]
* [[Venizelism]]
* [[Metaxism]]
* [[Enosis]]
|group2 = Organizations
|list2 =
* [[Filiki Eteria]]
* [[Ethniki Etaireia]]
* [[Macedonian Committee]]
* [[Goudi coup|Military League]]
* [[National Youth Organisation (Greece)|National Youth Organisation]]
* [[EDES]]
* [[Northern Epirus Liberation Front]]
* [[EOKA]]
* [[EOKA B]]
|group3 = Political parties
|list3 =
*[[Russian Party|Napist Party]]
*[[Nationalist Party (Greece)|Nationalist Party]]
*[[New Party (Greece, 1873)|New Party (1873)]]
*[[New Party (Greece, 1947)|New Party (1947)]]
*[[Liberal Party (Greece)|Liberal Party]]
*[[Freethinkers' Party]]
*[[Politically Independent Alignment]]
*[[Greek Rally]]
*[[National Party of Greece]]
*[[4th of August Party]]
*[[National Democratic Union (Greece)|National Democratic Union]]
*[[National Alignment]]
* [[United Nationalist Movement]]
*[[Party of Hellenism]]
*[[National Political Union (1984)|National Political Union]]
*[[Hellenic Front]]
*[[Front Line (political party)|Front Line]]
*[[Patriotic Alliance (Greece)|Patriotic Alliance]]
*[[Political Spring]]
*[[National Front (Greece)]]
*[[Popular Orthodox Rally]]
*[[Golden Dawn (Greece)|Golden Dawn]]
*[[ELAM (Cyprus)]]
*[[National Unity Association]]
*[[Greek Solution]]
*[[LEPEN (political party)|LEPEN]]
*[[Greeks for the Fatherland]]
|group4 = People
|list4 =
* [[Adamantios Korais]]
* [[Rigas Feraios]]
* [[Alexander Ypsilantis]]
* [[Ioannis Kapodistrias]]
* [[Athanasios Diakos]]
* [[Theodoros Kolokotronis]]
* [[Dionysios Solomos]]
* [[Constantine Paparrigopoulos]]
* [[Aristotelis Valaoritis]]
* [[Alexandros Koumoundouros]]
* [[Theodoros Diligiannis]]
* [[Kostis Palamas]]
* [[Pavlos Melas]]
* [[Ion Dragoumis]]
* [[Eleftherios Venizelos]]
* [[Nikolaos Plastiras]]
* [[Ioannis Metaxas]]
* [[Angelos Sikelianos]]
* [[Alexandros Papagos]]
* [[Napoleon Zervas]]
* [[Georgios Grivas]]
* [[Georgios Papadopoulos]]
* [[Dimitrios Ioannidis]]
* [[Antonis Samaras]]
|group5 = Historical events
|list5 =
* [[Greco-Persian Wars]]
* [[Byzantine Empire under the Palaiologos dynasty]]
* [[Greek War of Independence]]
* [[Epirus Revolt of 1854]]
* [[1854 Macedonian rebellion]]
* [[1867 Macedonian rebellion]]
* [[Cretan revolt (1866–1869)]]
* [[Cretan revolt (1878)]]
* [[Epirus Revolt of 1878]]
* [[1878 Macedonian rebellion]]
* [[1896–1897 Macedonian rebellion]]
* [[Greco-Turkish War (1897)]]
* [[Macedonian Struggle]]
* [[Maratha, Santalaris and Aloda massacre]]
* [[Theriso revolt]]
* [[Greece in the Balkan Wars]]
* [[Autonomous Republic of Northern Epirus]]
* [[Greece during World War I]]
* [[Greco-Turkish War (1919–1922)]]
* [[1931 Cyprus revolt]]
* [[4th of August Regime]]
* [[Greek resistance]]
* [[Cyprus Emergency]] (1955–59)
* [[Cypriot intercommunal violence#Crisis of 1963–1964|Cyprus crisis of 1963–64]]
* [[Bloody Christmas (1963)]]
* [[Greek junta]] (1967–74)
* [[1974 Cypriot coup d'état]]
* [[1990 Komotini events]]
|group6 = Policies
|list6 =
* [[Aromanian question]]
* [[Geographical name changes in Greece|Geographical name changes]]
* [[Greek language question]]
}}<noinclude>
{{collapsible option}}
[[Category:Greek nationalism|τ]]
[[Category:Greece politics and government templates|Nationalism]]
</noinclude>
3ac46bed7a0ab70e714050fa2c139f6db2f06842
Template:Information/doc
10
1318
2653
2023-05-29T23:02:18Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{Distinguish|Template:Information page}}
{{High-risk| 140946 }}
{{Uses TemplateStyles|Template:Information/styles.css}}
== Purpose ==
This template records and displays metadata for media files, such as photographs and diagrams. It includes a description of the file, its source, and its copyright status.
== Usage ==
{| style="background-color: transparent;"
! Full
! Without optional fields
|- style="vertical-align: top;"
|
<syntaxhighlight lang="wikitext">
{{Information
| description =
| source =
| date =
| author =
| permission =
| other_versions =
| additional_information =
}}
</syntaxhighlight>
|
<syntaxhighlight lang="wikitext">
{{Information
| description =
| source =
| date =
| author =
}}
</syntaxhighlight>
|}
== Syntax description ==
=== Mandatory parameters ===
;description: Describe of the content, (historical) background, and in the case of scientific data, a brief scientific analysis of the media file.
;author: Author(s) of the image. If no individual person is known, use the name of the institution that owns, published or released the file.
=== Other parameters ===
;source: Explain where the image is acquired from. Please specify accurately. For instance:
#''Work of the uploader themself:'' Specify {{tl|Own}}.
#''Acquired from a website:'' Specify the URL of the web page from which it is acquired. Optionally, include a direct link to the image. (Never include a direct link alone.)
#''Scanned from a book or magazine:'' Specify the title, author, publisher, publication year, ISBN and page of the book or title, issue, volume, publication month and year, ISSN (if available) and page of the journal. You can use {{tl|cite book}} and {{tl|cite journal}}.
;date: Date of creation, or date of publication. Although not compulsory, it is advised to stick to the recommendations of {{Section link|Wikipedia:Manual of Style/Dates and numbers|Dates}}. Specifically, please avoid ambiguous dates like 02/03/04 which can refer to 2 March 2004, 3 February 2004, 4 March 2002 or 3 April 2002, depending on the geographical origin of the person who sees it.
;permission: '''Optional'''. Not to be mistaken with license. Description of the permissions granted by the copyright holder. Use only when the accompanying license tag is not enough. Note that the media file must still be tagged with the appropriate license template. Select a copyright tag from [[Wikipedia:Image copyright tags/All]].
;other versions: '''Optional'''. Links to other versions of this image. The links may be in form of a list of links or thumbnails of the other versions of the image. Please only link to images that can be used instead of the image at hand; do not use this field as a mean of grouping related files. Instead, use [[Help:Categories|categories]].
;additional information: '''Optional'''. Contains other information about this image that doesn't fit somewhere else. For example, information that might be relevant to determining a file's proper copyright status (e.g. weblinks) might be provided this way.
== Example ==
Example for [[:File:Anders-Celsius-Head.jpg]]:
{{Information{{\sandbox}}
| description = Part of an oil painting of Anders Celsius. Painting by Olof Arenius (1701 - 1766). The original painting is placed in the astronomical observatory of Uppsala University.
| source = Astronomical observatory of Uppsala University
* Source site: http://www.astro.uu.se/history/Celsius_eng.html
* Source URL: http://www.astro.uu.se/history/images/celsius3.jpg
| date = between 1701 - 1766
| author = Olof Arenius
| permission = Copyright expired as artist died more than 70 years ago
| other_versions = [[:File:Anders-Celsius.jpeg]] (full image)
}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"description": {
"required": true,
"label": "Description",
"aliases": [
"Description"
],
"type": "string",
"description": "Describe of the content, (historical) background, and in the case of scientific data, a brief scientific analysis of the media file."
},
"source": {
"required": true,
"label": "Source",
"aliases": [
"Source"
],
"type": "string",
"description": "Explain where the image is acquired from. Please specify accurately. (If it is the work of the uploader themself, use {{Own}}. If it was acquired from a website, specify the URL of the web page from which it is acquired. Optionally, include a direct link to the image. (Never include a direct link alone.) If it was scanned from a book or magazine, specify the title, author, publisher, publication year, ISBN and page of the book or title, issue, volume, publication month and year, ISSN (if available) and page of the journal. You can use {{cite book}} and {{cite journal}}.)\n"
},
"date": {
"required": false,
"label": "Date",
"aliases": [
"Date"
],
"type": "string",
"description": "Date of creation or date of publication. Although not compulsory, it is advised to stick to the Manual of Style recommendations. Specifically, please avoid ambiguous dates like 02/03/04 which can refer to 2 March 2004, 3 February 2004, 4 March 2002 or 3 April 2002, depending on the geographical origin of the person who sees it."
},
"author": {
"required": true,
"label": "Author",
"aliases": [
"Author"
],
"type": "string",
"description": "Author(s) of the image. If no individual person is known, use the name of the institution that owns, published or released the file."
},
"permission": {
"required": false,
"label": "Permission (extra information)",
"aliases": [
"Permission"
],
"type": "string",
"description": "Not to be mistaken with license. Description of the permissions granted by the copyright holder. Use only when the accompanying license tag is not enough. Note that the media file must still be tagged with the appropriate license template."
},
"other_versions": {
"required": false,
"label": "Other versions",
"aliases": [
"Other_versions",
"other versions"
],
"type": "string",
"description": "Links to other versions of this image. The links may be in form of a list of links or thumbnails of the other versions of the image. Please only link to images that can be used instead of the image at hand; do not use this field as a mean of grouping related files. Instead, use categories."
},
"additional_information": {
"required": false,
"label": "Additional information",
"type": "string",
"aliases": [
"Additional_information",
"Additional information",
"additional information"
],
"description": "Contains other information about this image that doesn't fit somewhere else. For example, information that might be relevant to determining a file's proper copyright status (e.g. weblinks) might be provided this way."
}
},
"description": "This template is used to make a standardized table providing information about files, including a description, its copyright status, and its source.",
"format": "block"
}
</templatedata>
== See also ==
* {{tl|Information TV series screenshot}}, a similar template for a TV screenshot.
* {{tl|Non-free use rationale}}, for use with on non-free images that must comply with [[WP:NFC|Wikipedia's non-free content policy]] and that each appear in no more than one article.
* {{tl|Non-free media data}} and {{tl|Non-free media rationale}}, for use with non-free images that must comply with Wikipedia's non-free content policy and that may appear in more than one article.
* {{tl|Notice}} <!--(same as Template:Info)-->
<includeonly>{{Sandbox other|
| <!-- ADD CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:File namespace templates]]
}}</includeonly>
3e95fd78daef0ba07017a938b3e6400f3005b8e7
Template:High-use
10
58
111
2023-05-30T09:39:48Z
wikipedia>Lectonar
0
Changed protection settings for "[[Template:High-use]]": [[WP:High-risk templates|High-risk template or module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
{{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! -->
</noinclude>
a3322d1bd47ac03df14fa2090855cff4fede9bc7
Module:High-use
828
61
117
2023-05-30T11:20:32Z
wikipedia>Lectonar
0
Changed protection settings for "[[Module:High-use]]": [[WP:High-risk templates|High-risk template or module]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
function p.num(frame, count)
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
-- is actually editing the page and maybe trying to update the count.
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("''', and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
(count and count >= 100000 and ' and server load' or '') ..
', any changes should be tested in the ' .. sandbox_text ..
'The tested changes can be added to this page in a single edit. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local epilogue = ''
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p
134551888e066954a89c109d2faa8af71a4454a4
Module:Transclusion count
828
62
119
2023-05-30T20:51:38Z
wikipedia>Isabelle Belato
0
Changed protection settings for "[[Module:Transclusion count]]": [[WP:High-risk templates|Highly visible template]]; requested at [[WP:RfPP]] ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","")
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local status, data = pcall(function ()
return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
end)
if status then
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
local list = {}
for i = 65, 91 do
local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
for name, count in pairs(data) do
table.insert(list, {mw.title.new(name, "Template").fullText, count})
end
end
table.sort(list, function(a, b)
return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
end)
local lang = mw.getContentLanguage();
for i = 1, #list do
list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
end
return table.concat(list)
end
return p
000ef6bcbf7b66e727870b0c300c4009da300513
Template:Shortcut compact/doc
10
1320
2655
2023-05-30T20:54:20Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
{{tl|Shortcut compact}} is a compact version of the {{Tl|shortcut}} template, for use in vertically-constrained locations, such as alongside [[Help:List|list]] items.
It flows to the right of the page, displaying all the shortcuts in a single line of text.
== Usage ==
Usage is similar to the {{tl|shortcut}} template, see full documentation there. This template accepts up to five shortcuts as parameters. However, in most cases you will only want to display one or two shortcuts with this template, otherwise it may get too wide. Use {{Tl|shortcut}} if you need to display more than two shortcuts in the same box.
Originally this template is for use on the [[WP:EIW|Editor's index]], which needs to display shortcuts alongside list items and subitems which are vertically close together. The goal is to make the Editor's index more useful as a tool for answering questions, for example on the [[WP:HD|Help desk]]. A user can look up entries on the Editor's index, copy the relevant shortcuts, and paste them into [[Help:Link|links]] in replies to Help desk questions.
The template may be useful on other pages where multiple shortcut boxes would crowd together vertically.
=== Examples ===
{| class="wikitable"
! Code
! Result
|-
| style="vertical-align:top;" | {{tlc|{{BASEPAGENAME}}|WP:V}}
| {{{{BASEPAGENAME}}|WP:V}}
|-
| style="vertical-align:top;" | {{tlc|{{BASEPAGENAME}}|WP:V|WP:VERIFY|WP:SOURCE}}
| {{{{BASEPAGENAME}}|WP:V|WP:VERIFY|WP:SOURCE}}
|}
An example showing how to use the template in a list:
{| class="wikitable"
! Code
! Result
|-
|
<syntaxhighlight lang="wikitext">* A list item
* Another list item
** A subitem
** Learning: {{Shortcut compact|WP:EIW#Learn}}
*** A subsubitem about learning
*** Another subsubitem
</syntaxhighlight>
|
* A list item
* Another list item
** A subitem
** Learning: {{Shortcut compact|WP:EIW#Learn}}
*** A subsubitem about learning
*** Another subsubitem
|}
== Anchors ==
Unlike {{Tl|Shortcut}}, this template does not place anchors automatically at its location. To enable displayed shortcuts to link to positions other than section heading names, use the {{Tl|Anchor}} template alongside this template.
Adding an anchor automatically tends not to work correctly when the displayed shortcut itself contains a [[fragment identifier]] (an anchor name after a [[number sign]] character), since the anchor should only consist of the fragment identifier, but the template cannot parse out the fragment from the rest of the displayed shortcut string. Automatic anchor insertion works best for top-of-page shortcuts which do not normally display fragment identifiers, the kind that {{Tl|Shortcut}} is intended to display.
Displaying shortcuts with fragment identifiers saves a lot of work for a long page with many section-specific or list-item-specific shortcuts, since one shortcut page provides a [[Help:Redirect|redirect]] that can then link to any anchor on the target page via a fragment identifier.
== Portability notes ==
This template uses HTML table code, which may create problems on non-Wikimedia Foundation wikis that are not running [[HTML Tidy]]. The template itself generally works when a page transcludes it, but may cause problems if you use it inside another template that uses parser functions. See:
* [[Wikipedia:WikiProject Transwiki#Special templates]] - an explanation of the problem.
* [[Wikipedia:WikiProject Transwiki/Template:Shortcut compact]] - a portable version of this template that uses wikitext table code. (Unfortunately, the portable version is not compatible with nested list sub-items.)
== See also ==
* [[Wikipedia:Editor's index to Wikipedia]] - a page that uses this template extensively.
* [[Wikipedia:Shortcuts]] - notes about how they work.
* {{tl|shortcut}} – The normal shortcut.
* {{tl|policy shortcut}} – For shortcuts to sections of policy pages.
* {{tl|template shortcut}} – Use this one to show the names of shortcuts/redirects to a template.
<includeonly>{{Sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
[[Category:Shortcut templates]]
}}</includeonly>
4bf0ef6e222b575d2509c77c4ad089d0802d47e1
Template:Party color/doc
10
1577
2912
2023-05-30T21:08:40Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{High use}}
{{Lua|Module:Political party}}
'''Template:Party color''' produces the [[Web_colors#Hex_triplet|hexadecimal color]] of the provided political party.
== Usage ==
* {{Tlx|Party color|<party name>}}
== Parameters ==
<section begin="Parameters"/>
{| class="wikitable"
! scope="col" | Parameter
! scope="col" | Description
|-
! scope="row" | 1
| The political party's name. If a party is not found, place a request at the [[Module talk:Political party|talk page]].
|-
! scope="row" | error
| Optional, this parameter will return the provided {{para|error}} value if the module does not contain the requested party or color.
|}<section end="Parameters"/>
==Examples==
Here are some examples using the [[Labour Party (UK)|Labour Party]] (note that there are multiple potential input names):
<syntaxhighlight lang="wikitext">
["Labour and Co-operative"] = "Labour Party (UK)",
["Labour Co-operative"] = "Labour Party (UK)",
...
["Labour Party (Thailand)"] = {abbrev = "", color = "#000000", shortname = "",},
["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
</syntaxhighlight>
* {{tlx|Party color|Labour Party (UK)}} → {{Party color|Labour Party (UK)}}
* {{tlx|Party color|Labour and Co-operative}} → {{Party color|Labour and Co-operative}}
* {{tlx|Party color|Labour Co-operative}} → {{Party color|Labour Co-operative}}
===Error messages===
If the party is not supplied, or the color is not stored for the party, an error will be returned. Note that if the party is not in the module at all (third example below) the default color #F8F9FA will be returned.
* {{tlx|Party color}} → {{Party color}}
* {{tlx|Party color|A test no values}} → {{Party color|A test no values}}
* {{tlx|Party color|Not-a-party}} → {{Party color|Not-a-party}}
To avoid generating a script error, use {{para|error|value}}. Note that this error value will also be passed if the party is not stored in the module.
* {{tlx|Party color|A test no values|error{{=}}ERROR}} → {{Party color|A test no values|error=ERROR}}
* {{tlx|Party color|Not-a-party|error{{=}}ERROR}} → {{Party color|Not-a-party|error=ERROR}}
==See also==
* [[Template:Party abbr]]
* [[Template:Party shortname]]
* [[Module:Political party]] (Data pages)
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Political party color templates]]
}}</includeonly>
e39c0c2e1d80283cb97935d43f34a9e322e3065f
Template:Campaignbox/doc
10
1508
2843
2023-05-30T21:33:28Z
w>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{#ifeq:{{{noheader|}}}|yes |
| {{Documentation subpage}}
{{Template display|nomobile}}
{{Template redirect|Campaign}}
{{Navbox visibility}}
== Usage ==
}}
{{#switch:{{ARTICLESPACE}}
| Wikipedia =
====Campaignboxes====
| #default =
===Campaignboxes===
}}
One common type of navigational template in articles concerning conflicts, wars and related topics is the '''campaignbox''' template, intended to provide context and convenient navigation among articles on the [[battles]] in a [[Military campaign|campaign]], [[Front (military)|front]], [[Theater (warfare)|theater]] or [[war]] (or, more rarely, among several campaigns or wars).
<div style="float:right;width:26.7em;margin-bottom:1.0em;">
{{Campaignbox Second Punic War}}
{{Campaignbox Punic Wars}}
</div>
If the article includes an [[Help:Infobox|infobox]], the campaignbox/es are usually placed immediately after it (i.e. just below it). If available, as with infoboxes such as {{tl|Infobox military conflict}}, use the infobox's {{para|campaignbox}} parameter:
<div style="width:25.0em;border:1px solid black;background:#ddd;padding:0.5em 1.0em;">
<syntaxhighlight lang="wikitext">
{{Infobox military conflict
...
}}
{{Campaignbox XXXX}}
</syntaxhighlight>or<syntaxhighlight lang="wikitext">
{{Infobox military conflict
...
| campaignbox = {{campaignbox XXXX}}
}}
</syntaxhighlight></div>
Articles may include multiple campaignboxes; typically, these are stacked under the infobox. The most common scenario occurs when two levels of campaignboxes are present – for example, an article about a battle can include both a campaignbox listing the battle itself and an "enclosing" campaignbox listing the campaign, theater or war during which the battle took place. Similarly, an article about a war can include both a campaignbox listing the war (among a series of wars) and a campaignbox for the war itself, listing the battles that took place during it.
=== Creating campaignboxes ===
Existing campaignboxes may be viewed through the [[:Category:Campaignbox templates|Campaignbox template category]] to which campaignboxes are added automatically. If a new campaignbox becomes necessary, it should be named ''Template:Campaignbox XXXX'' (where XXXX is the (shortened) name of the campaign) and should use {{tlf|Campaignbox}} thus:
<div style="width:16.7em;border:1px solid black;background:#ddd;padding:0.5em 1.0em;">
<syntaxhighlight lang="wikitext">
{{Campaignbox
| name =
| title =
| battles =
| notes =
}}
</syntaxhighlight>
</div>
==== Parameters ====
; ''name'' : The name by which Wikipedia refers to the template, i.e. "Template:Campaignbox XXXX". This can be produced by using <code><nowiki>{{subst:PAGENAME}}</nowiki></code>.
; ''title'' : The name of the campaign or war, which, if an article about the campaign or war exists, should link to it. Dates should not be indicated unless needed for clarity. Note that long links may cause alignment problems; see [[WP:MILMOS#NAVPROBLEMS|the troubleshooting guide]] for more information.
; ''battles'' : A chronological list of battles and operations in the campaign, linked as <code><nowiki>[[Battle of YYYY|YYYY]]</nowiki></code>. A convenient and accessible way to separate the items in the list is to add <code>| listclass = hlist</code> and then use the standard <kbd>*</kbd> (asterisk)-based [[Help:List|listing format]].
; ''notes'' : (optional) Any explanatory notes needed to clarify the list. This option should be used sparingly.
; (''raw_name'') : (optional; deprecated) This parameter overrides the use of the title in determining the template name and exists for the sake of backward compatibility. When creating a new campaignbox, both title and name should be specified as above and this parameter omitted.
The following optional parameters are passed on to the templates {{tl|Military navigation}} or {{tl|Navbox}} used to create campaignboxes and so can affect their styling. See these two templates' documentation pages for further details.
; ''state'' : To set whether the campaignbox appears fully visible or collapsed (to titlebar only) when it is first presented by a page.
; ''bodyclass'' : CSS styling to affect the whole template.
; ''listclass'' : CSS styling to affect the list of battles, operations, etc. (e.g. to affect {{para|battles}}).
The use of special formatting (such as bolding or changes in font size) in the list of battles{{spaced ndash}}particularly to mark battles as "important"{{spaced ndash}}is generally discouraged; while there are a ''few'' cases where such approaches may be both helpful to the reader and sufficiently well-sourced that they do not constitute original research, they are usually both unnecessary and potentially confusing. Similarly, dividing the list of battles into multiple blocks by inserting heading-like separations should be exceptional; if such a division is felt to be needed, a better solution may be to split the one campaignbox into two or more.<noinclude>
[[Category:WikiProject Military history template instructions|Campaignbox]]
</noinclude><includeonly>{{Sandbox other||
[[Category:Campaignbox templates| ]]
{{#ifeq:{{{noheader|}}}|yes | |
[[Category:Navigational box wrapper templates]]
[[Category:Military navigational boxes|Campaignbox]]
[[Category:Templates that add a category]]
}}}}</includeonly>
05cb24dd8b2b1a78bab960db82b26ce0d68c3063
Template:Infobox person
10
1115
2440
2023-06-01T17:01:07Z
w>Hike395
0
link to template in warning
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate|child={{{child|{{{embed|}}}}}}
| bodyclass = biography vcard
| above = {{Br separated entries
| 1 = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|{{{pre-nominals|}}}}}}}}}}}}|<div class="honorific-prefix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|{{{pre-nominals|}}}}}}}}}}}}</div>}}
| 2 = <div class="fn" style="display:inline">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div>
| 3 = {{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|{{{post-nominals|}}}}}}}}}}}}|<div class="honorific-suffix" style="font-size: 77%; font-weight: normal; display:inline;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|{{{post-nominals|}}}}}}}}}}}}</div>}}
}}
| abovestyle = font-size:125%; {{{abovestyle|}}}
| subheaderstyle = font-size:125%; font-weight:bold;
| subheader = {{#switch:{{{child|{{{embed|}}}}}}|yes=<!--empty when this infobox is embedded-->|#default={{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}} }} }}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|300|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}}}x200px|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
| caption = {{{image caption|{{{caption|{{{image_caption|}}}}}}}}}
| label2 = Pronunciation
| data2 = {{{pronunciation|}}}
| label10 = Born
| data10 = {{Br separated entries|1={{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname|}}}}}}</div>}}|2={{{birth_date|}}}|3={{#if:{{{birth_place|}}}|<div style="display:inline" class="birthplace">{{{birth_place|}}}</div>}}}}
| label11 = Bapti{{#if:{{{baptized|}}}|z|s}}ed
| data11 = {{#if:{{{birth_date|}}}||{{{baptized|{{{baptised|}}}}}}}}
| label12 = Disappeared
| data12 = {{Br separated entries|1={{{disappeared_date|}}}|2={{{disappeared_place|}}}}}
| label13 = Status
| data13 = {{{status|{{{disappeared_status|}}}}}}
| label14 = Died
| data14 = {{Br separated entries|1={{{death_date|}}}|2={{#if:{{{death_place|}}}|<div style="display:inline" class="deathplace">{{{death_place|}}}</div>}}}}
| label15 = Cause of death
| data15 = {{{death cause|{{{death_cause|}}}}}}
| label16 = Body discovered
| data16 = {{{body discovered|{{{body_discovered|}}}}}}
| label17 = {{#if:{{{burial_place|}}}|Burial place|Resting place}}
| data17 = {{#if:{{{burial_place|}}}|{{Br separated entries|1={{{burial_place|}}}|2={{{burial_coordinates|}}}}}|{{Br separated entries|1={{{resting place|{{{resting_place|{{{restingplace|}}}}}}}}}|2={{{resting place coordinates|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}}}}}}}
| class17 = label
| label18 = Monuments
| data18 = {{{monuments|}}}
<!-- removed per discussion at https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_person&oldid=932429196#Residence_parameter
| label19 = Residence
| data19 = {{{residence|}}}
| class19 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}}
-->
| label20 = Nationality
| data20 = {{{nationality|}}}
| class20 = category
| label21 = Other names
| data21 = {{{other names|{{{other_names|{{{othername|{{{nickname|{{{alias|}}}}}}}}}}}}}}}
| class21 = nickname
| label22 = Siglum
| data22 = {{{siglum|}}}
| label23 = Citizenship
| data23 = {{{citizenship|}}}
| class23 = category
| label24 = Education
| data24 = {{{education|}}}
| label25 = Alma mater
| data25 = {{{alma mater|{{{alma_mater|}}}}}}
| label26 = Occupation{{Pluralize from text|{{{occupation|}}}|likely=(s)|plural=s}}
| data26 = {{{occupation|}}}
| class26 = role
| label27 = Years active
| data27 = {{{years active|{{{years_active|{{{yearsactive|}}}}}}}}}
| label28 = Era
| data28 = {{{era|}}}
| class28 = category
| label29 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}}
| data29 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=[[Category:Pages using infobox person with multiple employers]]}}}}
| class29 = org
| label30 = {{#if:{{{organisation|}}}|Organisation|Organization}}{{#if:{{{organizations|}}}|s|{{pluralize from text|{{{organization|{{{organisation|}}}}}}|likely=(s)|plural=s}}}}
| data30 = {{{organisation|{{{organization|{{{organizations|}}}}}}}}}{{main other|{{Pluralize from text|{{{organization|{{{organisation|}}}}}}|likely=[[Category:Pages using infobox person with multiple organizations]]}}}}
| class30 = org
| label31 = Agent{{Pluralize from text|{{{agent|}}}|likely=(s)|plural=s}}
| data31 = {{{agent|}}}{{main other|{{Pluralize from text|{{{agent|}}}|likely=[[Category:Pages using infobox person with multiple agents]]}}}}
| class31 = agent
| label32 = Known for
| data32 = {{{known for|{{{known_for|{{{known|}}}}}}}}}
| label33 = Works
| data33 = {{{works|}}}
| label34 = <span style="white-space:nowrap;">Notable credit{{Pluralize from text|{{{credits|}}}|likely=(s)|plural=s}}</span>
| data34 = {{#if:{{{works|}}}||<!--
-->{{{credits|}}}{{main other|{{Pluralize from text|{{{credits|}}}|likely=[[Category:Pages using infobox person with multiple credits]]}}}}}}
| label35 = Label{{Pluralize from text|{{{label_name|}}}|likely=(s)|plural=s}}
| data35 = {{#if:{{{works|}}}{{{credits|}}}||<!--
-->{{{label_name|}}}{{main other|{{Pluralize from text|{{{label_name|}}}|likely=[[Category:Pages using infobox person with multiple labels]]}}}}}}
| label36 = <span style="white-space:nowrap;">Notable work</span>
| data36 = {{#if:{{{works|}}}{{{credits|}}}{{{label_name|}}}||{{{notable works|{{{notable_works|}}}}}}}}
| label37 = Style
| data37 = {{{style|}}}
| class37 = category
| label40 = Television
| data40 = {{{television|}}}
| label41 = Height
| data41 = {{#if:{{{height_m|{{{height_cm|}}}}}}{{{height_ft|}}}{{{height_in|}}} | {{convinfobox|{{{height_m|{{{height_cm|}}}}}}|{{#if:{{{height_m|}}}|m|cm}}|{{{height_ft|}}}|ft|{{{height_in|}}}|in}}}}{{#if:{{{height|}}} | {{infobox person/height|{{{height|}}}}}}}
| label42 = {{#if:{{{office|}}}|Office|Title}}
| data42 = {{{office|{{{title|}}}}}}
| class42 = title
| label43 = Term
| data43 = {{{term|}}}
| label44 = Predecessor
| data44 = {{{predecessor|}}}
| label45 = Successor
| data45 = {{{successor|}}}
| label46 = Political party
| data46 = {{{party|}}}
| class46 = org
| label47 = Other political<br />affiliations
| data47 = {{{otherparty|}}}
| class47 = org
| label48 = Movement
| data48 = {{{movement|}}}
| class48 = category
| label49 = Opponent{{Pluralize from text|{{{opponents|}}}|likely=(s)|plural=s}}
| data49 = {{{opponents|}}}{{main other|{{Pluralize from text|{{{opponents|}}}|likely=[[Category:Pages using infobox person with multiple opponents]]}}}}
| label50 = Board member of
| data50 = {{{boards|}}}
| label51 = {{#if:{{{criminal_charges|}}}|Criminal charges|Criminal charge{{pluralize from text|{{{criminal charge|{{{criminal_charge|}}}}}}|likely=(s)|plural=s}}}}
| data51 = {{{criminal_charges|{{{criminal charge|{{{criminal_charge|}}}}}}}}}{{main other|{{Pluralize from text|{{{criminal charge|{{{criminal_charge|}}}}}}|likely=[[Category:Pages using infobox person with multiple criminal charges]]}}}}
| label52 = Criminal penalty
| data52 = {{{criminal penalty|{{{criminal_penalty|}}}}}}
| label53 = {{#if:{{{judicial status|{{{judicial_status|}}}}}}|Judicial status|Criminal status}}
| data53 = {{#if:{{{judicial status|{{{judicial_status|}}}}}} | {{{judicial status|{{{judicial_status}}}}}} | {{{criminal status|{{{criminal_status|}}}}}}}}
| class53 = category
| label54 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}}
| data54 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}}{{main other|{{Pluralize from text| {{{spouse|{{{spouse(s)|}}}}}} |likely=[[Category:Pages using infobox person with multiple spouses]]}}}}
| label55 = Partner{{#if:{{{partners|}}}|s|{{Pluralize from text|{{{partner|{{{domesticpartner|{{{domestic_partner|{{{partner(s)|}}}}}}}}}}}} |likely=(s)|plural=s}}}}
| data55 = {{{partner|{{{domesticpartner|{{{domestic_partner|{{{partners|{{{partner(s)|}}}}}}}}}}}}}}}{{main other|{{Pluralize from text| {{{partner|{{{domesticpartner|{{{domestic_partner|{{{partner(s)|}}}}}}}}}}}} |likely=[[Category:Pages using infobox person with multiple partners]]}}}}
| label56 = Children
| data56 = {{{children|}}}
| label57 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}}
| data57 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}}<!--
-->{{main other|{{Pluralize from text|{{{parents|}}}|likely=[[Category:Pages using infobox person with multiple parents]]}}}}
| label58 = Relatives
| data58 = {{{relations|{{{relatives|}}}}}}
| label59 = Family
| data59 = {{{family|}}}
| label60 = Call sign
| data60 = {{{callsign|}}}
| label61 = Awards
| data61 = {{{awards|}}}
| label62 = {{#if:{{{honours|}}}|Honours|Honors}}
| data62 = {{{honours|{{{honors|}}}}}}
| data64 = {{{misc|{{{module|}}}}}}
| data65 = {{{misc2|{{{module2|}}}}}}
| data66 = {{{misc3|{{{module3|}}}}}}
| data67 = {{{misc4|{{{module4|}}}}}}
| data68 = {{{misc5|{{{module5|}}}}}}
| data69 = {{{misc6|{{{module6|}}}}}}
| label70 = Website
| data70 = {{{website|{{{homepage|{{{URL|{{{url|}}}}}}}}}}}}
| header71 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}}
| data72 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=150px|alt={{{signature alt|{{{signature_alt|}}}}}}}}
| header73 = {{#if:{{{footnotes|}}}|Notes}}
| data74 = {{#if:{{{footnotes|}}}|<div style="text-align: left;">{{{footnotes}}}</div>}}
}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview = Page using [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]] with unknown parameter "_VALUE_"|ignoreblank=n<!--this check deliberately flags empty unknown parameters; see talk, December 2022-->
| abovestyle | agent | alias | alma mater | alma_mater | alt | awards | baptised | baptized | birth_date | birth_name | birth_place | birthname | boards | body discovered | body_discovered | burial_coordinates | burial_place | callsign | caption | child | children | citizenship | credits | criminal charge | criminal penalty | criminal status | criminal_charge | criminal_charges | criminal_penalty | criminal_status | death cause | death_cause | death_date | death_place | disappeared_date | disappeared_place | disappeared_status | domestic_partner | domesticpartner | education | embed | employer | era | family | father | footnotes | height | height_cm | height_ft | height_in | height_m | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | honorific-prefix | honorific-suffix | honors | honours | image | image caption | image size | image_caption | image_size | image_upright | imagesize | judicial status | judicial_status | known | known for | known_for | label_name | landscape | misc | misc2 | misc3 | misc4 | misc5 | misc6 | module | module2 | module3 | module4 | module5 | module6 | monuments | mother | movement | name | nationality | native_name | native_name_lang | nickname | nocat_wdimage | notable works | notable_works | occupation | office | opponents | organisation | organization | organizations | other names | other_names | othername | otherparty | parents | partner | partners | partner(s) | party | predecessor | pre-nominals | post-nominals | pronunciation | relations | relatives | resting place | resting place coordinates | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | siglum | signature | signature alt | signature_alt | signature_size | signature_type | spouse | spouses | spouse(s) | status | style | successor | template_name | television | term | title | URL | url | website | works | years active | years_active | yearsactive }}<!--
-->{{Main other|{{#if:{{{pronunciation|}}}|[[Category:Biography template using pronunciation]]}}<!--
-->{{#if:{{{signature|}}}|[[Category:Biography with signature]]}}<!--
-->[[Category:Articles with hCards]]
}}<!--
-->{{#invoke:Check for clobbered parameters|check
| nested = 1
| template = [[Template:{{#if:{{{template_name|}}}|{{ucfirst:{{{template_name|}}}}}|Infobox person}}]]
| cat = {{main other|Category:Pages using {{if empty|{{{template_name|}}}|infobox person}} with conflicting parameters}}
| child; embed
| honorific prefix; honorific_prefix; honorific-prefix; pre-nominals
| honorific suffix; honorific_suffix; honorific-suffix; post-nominals
| image size; image_size; imagesize
| image caption; caption; image_caption
| birth_name; birthname
| baptized; baptised
| status; disappeared_status
| death cause; death_cause
| body discovered; body_discovered
| resting place; resting_place; restingplace
| resting place coordinates; resting_place_coordinates; restingplacecoordinates
| other names; other_names; othername; nickname; alias
| alma mater; alma_mater
| years active; years_active; yearsactive
| organisation; organization; organizations
| known for= known_for; known
| {{#if:{{{works|}}}|works;}} {{#if:{{{credits|}}}|credits;}} {{#if:{{{label_name|}}}|label_name;}} notable works; notable_works
| height_m; height_cm
| office; title
| criminal_charges; criminal charge; criminal_charge
| criminal penalty; criminal_penalty
| judicial status; judicial_status
| criminal status; criminal_status
| spouse; spouses; spouse(s)
| partner; domesticpartner; domestic_partner; partners; partner(s)
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{father|}}}||NULL_}}father
| {{#if:{{{parents|}}}||NULL_}}parents; {{#if:{{{mother|}}}||NULL_}}mother
| relations; relatives
| honours; honors
| misc; module
| misc2; module2
| misc3; module3
| misc4; module4
| misc5; module5
| misc6; module6
| website; homepage; URL; url
}}<includeonly>{{#ifeq:{{{child|{{{embed|}}}}}}|yes||{{Wikidata image|1={{{image|}}}|2={{{nocat_wdimage|}}}}}}}</includeonly><noinclude>
{{documentation}}</noinclude>
1df2af7008865508f130b52479b6e8e951d9ca44
Template:Switcher/doc
10
1729
3262
2023-06-02T12:15:11Z
wikipedia>WOSlinker
0
syntaxhighlight lang="wikitext"
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
This template is used to create a switchable image with caption, for use in infoboxes. Note that this template does not work in the editing preview.
== Parameters ==
Odd numbered parameters provide the image in wikitext; even numbered parameters provide the captions. Up to 20 images are supported.
== Example ==
<syntaxhighlight lang="wikitext">
{{Switcher
| [[File:Example.png|300px]]
| An example
| [[File:Example image not to be used in article namespace.jpg|300px]]
| A different example
}}
</syntaxhighlight>
Output:
{{Switcher
| [[File:Example.png|300px]]
| An example
| [[File:Example image not to be used in article namespace.jpg|300px]]
| A different example
}}
==TemplateData==
<templatedata>
{
"params": {
"1": {
"description": "Image 1 wikitext",
"example": "[[File:Example.png|300px]]",
"type": "unbalanced-wikitext"
},
"2": {
"description": "Image 1 caption",
"example": "This is just an example.",
"type": "string"
},
"3": {
"description": "See {{{1}}} (recursive)",
"type": "unbalanced-wikitext"
},
"4": {
"description": "See {{{2}}} (recursive)",
"type": "string"
}
},
"description": "Creates a switchable image with caption for use in infoboxes"
}
</templatedata>
330b78009be757eea7e8649ba816537c6af1f65d
Template:Navbox visibility
10
1294
2629
2023-06-03T15:34:42Z
w>WhatamIdoing
0
Update
wikitext
text/x-wiki
Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude>
{{documentation}}
</noinclude>
3b1f65df829fd9f96b9c4f002fba38a0fd987a6b
Module:Mapframe/doc
828
1739
3293
2023-06-09T09:40:33Z
wikipedia>Paine Ellsworth
0
High-use template
wikitext
text/x-wiki
{{Module rating |beta}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua|Module:Transcluder}}
On English Wikipedia, this module is called by {{tlx|Maplink}}, see that template's documentation for usage instructions.
== Usage ==
;Standard usage:
:Just use {{tl|Maplink}}, which passes its parameters to this module's {{mono|main}} function.
;From another module:
:# Import this module, e.g. <code><nowiki>local mf = require('Module:Mapframe')</nowiki></code>
:# Pass a table of parameter names/values to the {{mono|_main}} function. See {{tl|Maplink}} documentation for parameter names and descriptions. E.g. <code><nowiki>local mapframe = mf._main(parameters)</nowiki></code>
:# Preprocess {{mono|_main}}'s output before returning it, e.g. <code><nowiki>return frame:preprocess(mapframe)</nowiki></code>
== Set up on another wiki ==
# '''Create template and module:'''
#* Import this module and its template to that wiki (or copy the code over, giving attribution in the edit summary). Optionally, give them a name that makes sense in that wiki's language
#* On Wikidata, add them to the items {{wde|Q52554979}} and {{wde|Q27882107}}
# '''Localise the module'''
#* Edit the top bits of the module, between the comments <code>-- ##### Localisation (L10n) settings #####</code> and <code>-- #### End of L10n settings ####</code>, replacing values between <code>"</code> <code>"</code> symbols with local values (when necessary)
# '''Add documentation'''
#* to the template (e.g. by translating [[Template:Maplink/doc]], adjusting as necessary per any localisations made in the previous step)
#* to the module (please transfer/translate these instructions so that wikimedians who read your wiki but not the English Wikipedia can also set up the module and template on another wiki).
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
47c4c6915b49b24acb2d97871354c5d87de5b5a7
Template:CountryPrefixThe
10
195
444
2023-06-10T22:25:23Z
wikipedia>Aidan721
0
add Dutch Caribbean
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#switch: {{{1|}}}
| Austrian Empire | Bahamas | Batavian Republic | Belgian Congo | British Antarctic Territory | British Empire | British Virgin Islands | Bukharan People's Soviet Republic | Cape Colony | Captaincy General of Chile | Caribbean | Cayman Islands | Central African Republic | Channel Islands | Collectivity of Saint Martin | Colony of Natal | Colony of Santiago | Comoros | Congo Free State | Cook Islands | Cossack Hetmanate | Crown Dependencies | Czech Republic | Danish colonial empire | Democratic Republic of the Congo | Dominican Republic | Dominion of Newfoundland | Donetsk People's Republic | Duchy of Nassau | Dutch Caribbean | Dutch East Indies | Dutch Empire | Dutch Republic | Empire of Brazil | Falkland Islands | Falkland Islands Dependencies | Faroe Islands | Federal Republic of Central America | Federated States of Micronesia | Federation of Rhodesia and Nyasaland | French Union | French colonial empire | Gambia | German Empire | German colonial empire | Greater Republic of Central America | Gilbert and Ellice Islands | Grand Duchy of Hesse | Grand Duchy of Tuscany | Habsburg monarchy | Habsburg Netherlands | Hawaiian Kingdom | Holy Roman Empire | Holy See | Inca civilization | Irish Free State | Isle of Man | Italian Empire | Japanese colonial empire | Kazakh Autonomous Socialist Soviet Republic | Kazakh Soviet Socialist Republic | Kingdom of Hanover | Kingdom of Hawaii | Kingdom of Jerusalem | Kingdom of Naples | Kingdom of Sardinia | Kingdom of Sicily | Kingdom of the Two Sicilies | Kirghiz Soviet Socialist Republic | Luhansk People's Republic | Maldives | Mamluk Sultanate | Maratha Empire | Marshall Islands | Moldavian Autonomous Soviet Socialist Republic | Moldavian Soviet Socialist Republic | Mongol Empire | Mughal Empire | Nagorno-Karabakh Republic | Netherlands | Netherlands Antilles | New Hebrides | Northern Mariana Islands | Orange Free State | Ottoman Empire | Palestinian territories | Papal States | Philippines | Pitcairn Islands | Polish–Lithuanian Commonwealth | Portuguese Empire | Province of Quebec (1763–1791) | Republic of Artsakh | Republic of Florence | Republic of Genoa | Republic of Ireland | Republic of Macedonia | Republic of New Granada | Republic of Texas | Republic of the Congo | Republic of Venice | Russian Empire | Sahrawi Arab Democratic Republic | Socialist Republic of Macedonia | Solomon Islands | South African Republic | Southern Nigeria Protectorate | Soviet Union | Spanish East Indies | Spanish Empire | Spanish West Indies | State of Palestine | Straits Settlements | Swedish colonial empire | Territory of Papua | Thirteen Colonies | Trucial States | Trust Territory of the Pacific Islands | Turkmen Soviet Socialist Republic | Turks and Caicos Islands | United Arab Emirates | United Kingdom | United States | United States Virgin Islands | Viceroyalty of New Granada | Viceroyalty of Peru | Viceroyalty of the Río de la Plata | Zulu Kingdom =<!--
-->{{#ifeq: {{Yesno-no|{{{capitalised|{{{capitalized|}}}}}}}}|yes|The|the}} {{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!--
-->|#default={{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!--
-->}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fed009e885630af9150708cf0df3d0f2e3938c43
Template:Party politics
10
882
1954
2023-06-11T07:04:29Z
wikipedia>HudecEmil
0
parliamentary group, faction distinguish
wikitext
text/x-wiki
{{Politics series sidebar
| name = Party politics
| bodystyle =
| pretitle = Part of the [[:Category:Politics|Politics series]]
| title = [[Political party|Party politics]]
| titlestyle = padding-bottom:3; background:;
| expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}}
| list1name = political spectrum
| contentstyle = text-align:center;
| list1title = [[Political spectrum]]
| list1 =
{{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off
|contentstyle=padding-top:0;padding-bottom:0.1em;
| heading1 = [[Left-wing politics|Left-wing]]
| content1 =
{{hlist | [[Far-left politics|Far-left]] | [[Centre-left politics|Centre-left]]}}
| heading2 = [[Centrism|Centre]]
| content2 =
{{hlist | [[Centre-left politics|Centre-left]] | [[Radical centrism|Radical centre]] | [[Centre-right politics|Centre-right]]}}
| heading3 = [[Right-wing politics|Right-wing]]
| content3 =
{{hlist | [[Centre-right politics|Centre-right]]| [[Far-right politics|Far-right]]}}
}}
| list2name = platform
| list2title = [[Party platform|Platform]]s/[[Ideological politics|Ideologies]]
| list2 =
{{flatlist|
* [[Anarchism|Anarchist]]
* [[Christian democracy|Christian democratic]]
* [[Communism|Communist]]
* [[Conservatism|Conservative]]
* [[Democracy|Democratic]]
* [[Environmentalism|Environmentalist]]
* [[Fascism|Fascist]]
* [[Fundamentalism|Fundamentalist]]
* [[Globalism|Globalist]]
* [[Green politics|Green]]
* [[Internationalism (politics)|Internationalist]]
* [[Liberalism|Liberal]]
* [[Libertarianism|Libertarian]]
* [[Nationalism|Nationalist]]
* [[Pirate Party|Pirate Party]]
* [[Populism|Populist]]
* [[Progressivism|Progressive]]
* [[Classical radicalism|Radical]]
* [[Regionalism (politics)|Regionalist]]
* [[Republicanism|Republican]]
* [[Social democracy|Social democratic]]
* [[Socialism|Socialist]]
* [[Syncretic politics|Syncretic]]}}
| list3name = types
| list3title = Types
| list3 =
{{flatlist|
* [[Elite party]]
* [[Cartel party theory|Cartel party]]
* [[Big tent|Catch-all party]]
* [[Business-firm party|Entrepreneurial party]]
* [[Mass politics|Mass party]]
* [[Ruling party]]
* [[Opposition (politics)|Opposition party]]
* [[Parliamentary opposition]]
* [[Official party status]]
* [[Single-issue politics#Single-issue parties|Single-issue party]]}}
| list4name = organization
| list4title = Leaders and organization
| list4 =
{{flatlist|
* [[Backbencher]]
* [[Caucus]]
* [[Caucus chair]]
* [[Floor leader]]
* [[Frontbencher]]
* [[Lead candidate]]
* [[Leader of the Opposition]]
* [[Majority leader]]
* [[Minority leader]]
* [[Political faction]]
* [[Parliamentary leader]]
* [[Party chair]]
* [[Party leader]]
* [[Party spokesperson]]
* [[Secretary (title)|Secretary]]
* [[Shadow cabinet]]
* [[Whip (politics)|Whip]]}}
| list5name = Internal elections
| list5title = Internal elections
| list5 =
{{flatlist|
* [[Primary election]]
* [[Leadership election]]
* [[Open list]]
* [[Party conference|Party convention/conference]]
* [[Leadership convention]]
}}
| list6name = party discipline
| list6title = [[Party discipline]]
| list6 =
{{flatlist|
* [[Conscience vote]]
* [[Crossing the floor]]
* [[Party discipline]]
* [[Party line (politics)|Party line]]
* [[Party-line vote]]
* [[Party switching]]
}}
| list7name = party systems
| list7title = [[Party system]]s
| list7 =
{{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off
|contentstyle=padding-top:0;padding-bottom:0em;
| heading1 =
| content1 =
{{hlist |[[One-party state|One-party]]}}
{{hlist |[[Dominant-party system|Dominant-party]] |[[Two-party system|Two-party]] |[[Multi-party system|Multi-party]]}}
{{hlist |[[Non-partisan democracy|Non-partisan]]}}
}}
| list8name = coalition
| list8title= [[Coalition]]s between parties
| list8 =
{{flatlist|
* [[Parliamentary group]]
* [[Divided government]]
* [[Coalition government]]
* [[Confidence and supply]]
* [[Consensus government]]
* [[Grand coalition]]
* [[Hung parliament]]
* [[Majority government]]
* [[Minority government]]
* [[National unity government]]
* [[Rotation government]]}}
| list9name = lists
| list9title = [[Lists of political parties]]
| list9 =
{{flatlist|
* [[List of ruling political parties by country|Ruling parties by country]]
* [[List of political parties by region|Political parties by region]]
* [[List of political ideologies|Political ideologies]]
* [[List of banned political parties|Banned political parties]]}}
| belowclass = plainlist
| belowstyle = text-align:center; font-weight:normal; border-top:1px solid; border-bottom:1px solid;
| below =
* {{portal-inline|Politics|size=tiny}}
}}<noinclude>
{{collapsible lists option|listnames="Political spectrum", "Platform", "Types", "Organization", "Internal democracy", "Party system", "Coalition", "Lists"|example=platform}}
[[Category:Political party sidebar templates| ]]
[[Category:Politics series sidebar templates]]
</noinclude>
c2ac6c0fa425d9c83eb53a72a2822ff1a654352a
Module:Age
828
1227
2560
2023-06-11T07:27:55Z
w>Johnuniq
0
change default for {{age}} from range=no to range=dash per [[Template talk:Age#Inaccurate age shown]]
Scribunto
text/plain
-- Implement various "age of" and other date-related templates.
local mtext = {
-- Message and other text that should be localized.
-- Also need to localize text in table names in function dateDifference.
['mt-bad-param1'] = 'Invalid parameter $1',
['mt-bad-param2'] = 'Parameter $1=$2 is invalid',
['mt-bad-show'] = 'Parameter show=$1 is not supported here',
['mt-cannot-add'] = 'Cannot add "$1"',
['mt-conflicting-show'] = 'Parameter show=$1 conflicts with round=$2',
['mt-date-wrong-order'] = 'The second date must be later in time than the first date',
['mt-dd-future'] = 'Death date (first date) must not be in the future',
['mt-dd-wrong-order'] = 'Death date (first date) must be later in time than the birth date (second date)',
['mt-invalid-bd-age'] = 'Invalid birth date for calculating age',
['mt-invalid-dates-age'] = 'Invalid dates for calculating age',
['mt-invalid-end'] = 'Invalid end date in second parameter',
['mt-invalid-start'] = 'Invalid start date in first parameter',
['mt-need-jdn'] = 'Need valid Julian date number',
['mt-need-valid-bd'] = 'Need valid birth date: year, month, day',
['mt-need-valid-bd2'] = 'Need valid birth date (second date): year, month, day',
['mt-need-valid-date'] = 'Need valid date',
['mt-need-valid-dd'] = 'Need valid death date (first date): year, month, day',
['mt-need-valid-ymd'] = 'Need valid year, month, day',
['mt-need-valid-ymd-current'] = 'Need valid year|month|day or "currentdate"',
['mt-need-valid-ymd2'] = 'Second date should be year, month, day',
['mt-template-bad-name'] = 'The specified template name is not valid',
['mt-template-x'] = 'The template invoking this must have "|template=x" where x is the wanted operation',
['txt-and'] = ' and ',
['txt-or'] = ' or ',
['txt-category'] = 'Category:Age error',
['txt-comma-and'] = ', and ',
['txt-error'] = 'Error: ',
['txt-format-default'] = 'mf', -- 'df' (day first = dmy) or 'mf' (month first = mdy)
['txt-module-convertnumeric'] = 'Module:ConvertNumeric',
['txt-module-date'] = 'Module:Date',
['txt-sandbox'] = 'sandbox',
['txt-bda'] = '<span style="display:none"> (<span class="bday">$1</span>) </span>$2<span class="noprint ForceAgeToShow"> (age $3)</span>',
['txt-dda'] = '$2<span style="display:none">($1)</span> (aged $3)',
['txt-bda-disp'] = 'disp_raw', -- disp_raw → age is a number only; disp_age → age is a number and unit (normally years but months or days if very young)
['txt-dda-disp'] = 'disp_raw',
['txt-dmy'] = '%-d %B %-Y',
['txt-mdy'] = '%B %-d, %-Y',
}
local isWarning = {
['mt-bad-param1'] = true,
}
local translate, from_en, to_en, isZero
if translate then
-- Functions to translate from en to local language and reverse go here.
-- See example at [[:bn:Module:বয়স]].
else
from_en = function (text)
return text
end
isZero = function (text)
return tonumber(text) == 0
end
end
local _Date, _currentDate
local function getExports(frame)
-- Return objects exported from the date module or its sandbox.
if not _Date then
local sandbox = frame:getTitle():find(mtext['txt-sandbox'], 1, true) and ('/' .. mtext['txt-sandbox']) or ''
local datemod = require(mtext['txt-module-date'] .. sandbox)
local realDate = datemod._Date
_currentDate = datemod._current
if to_en then
_Date = function (...)
local args = {}
for i, v in ipairs({...}) do
args[i] = to_en(v)
end
return realDate(unpack(args))
end
else
_Date = realDate
end
end
return _Date, _currentDate
end
local Collection -- a table to hold items
Collection = {
add = function (self, item)
if item ~= nil then
self.n = self.n + 1
self[self.n] = item
end
end,
join = function (self, sep)
return table.concat(self, sep)
end,
remove = function (self, pos)
if self.n > 0 and (pos == nil or (0 < pos and pos <= self.n)) then
self.n = self.n - 1
return table.remove(self, pos)
end
end,
sort = function (self, comp)
table.sort(self, comp)
end,
new = function ()
return setmetatable({n = 0}, Collection)
end
}
Collection.__index = Collection
local function stripToNil(text)
-- If text is a string, return its trimmed content, or nil if empty.
-- Otherwise return text (which may, for example, be nil).
if type(text) == 'string' then
text = text:match('(%S.-)%s*$')
end
return text
end
local function dateFormat(args)
-- Return string for wanted date format.
local default = mtext['txt-format-default']
local other = default == 'df' and 'mf' or 'df'
local wanted = stripToNil(args[other]) and other or default
return wanted == 'df' and mtext['txt-dmy'] or mtext['txt-mdy']
end
local function substituteParameters(text, ...)
-- Return text after substituting any given parameters for $1, $2, etc.
return mw.message.newRawMessage(text, ...):plain()
end
local function yes(parameter)
-- Return true if parameter should be interpreted as "yes".
-- Do not want to accept mixed upper/lowercase unless done by current templates.
-- Need to accept "on" because "round=on" is wanted.
return ({ y = true, yes = true, on = true })[parameter]
end
local function message(msg, ...)
-- Return formatted message text for an error or warning.
local function getText(msg)
return mtext[msg] or error('Bug: message "' .. tostring(msg) .. '" not defined')
end
local categories = {
error = mtext['txt-category'],
warning = mtext['txt-category'],
}
local a, b, k, category
local text = substituteParameters(getText(msg), ...)
if isWarning[msg] then
a = '<sup>[<i>'
b = '</i>]</sup>'
k = 'warning'
else
a = '<strong class="error">' .. getText('txt-error')
b = '</strong>'
k = 'error'
end
if mw.title.getCurrentTitle():inNamespaces(0) then
-- Category only in namespaces: 0=article.
category = '[[' .. categories[k] .. ']]'
end
return
a ..
mw.text.nowiki(text) ..
b ..
(category or '')
end
local function formatNumber(number)
-- Return the given number formatted with commas as group separators,
-- given that the number is an integer.
local numstr = tostring(number)
local length = #numstr
local places = Collection.new()
local pos = 0
repeat
places:add(pos)
pos = pos + 3
until pos >= length
places:add(length)
local groups = Collection.new()
for i = places.n, 2, -1 do
local p1 = length - places[i] + 1
local p2 = length - places[i - 1]
groups:add(numstr:sub(p1, p2))
end
return groups:join(',')
end
local function spellNumber(number, options, i)
-- Return result of spelling number, or
-- return number (as a string) if cannot spell it.
-- i == 1 for the first number which can optionally start with an uppercase letter.
number = tostring(number)
return require(mtext['txt-module-convertnumeric']).spell_number(
number,
nil, -- fraction numerator
nil, -- fraction denominator
i == 1 and options.upper, -- true: 'One' instead of 'one'
not options.us, -- true: use 'and' between tens/ones etc
options.adj, -- true: hyphenated
options.ordinal -- true: 'first' instead of 'one'
) or number
end
local function makeExtra(args, flagCurrent)
-- Return extra text that will be inserted before the visible result
-- but after any sort key.
local extra = args.prefix or ''
if mw.ustring.len(extra) > 1 then
-- Parameter "~" gives "~3" whereas "over" gives "over 3".
if extra:sub(-6, -1) ~= ' ' then
extra = extra .. ' '
end
end
if flagCurrent then
extra = '<span class="currentage"></span>' .. extra
end
return extra
end
local function makeSort(value, sortable)
-- Return a sort key if requested.
-- Assume value is a valid number which has not overflowed.
if sortable == 'sortable_table' or sortable == 'sortable_on' or sortable == 'sortable_debug' then
local sortKey
if value == 0 then
sortKey = '5000000000000000000'
else
local mag = math.floor(math.log10(math.abs(value)) + 1e-14)
if value > 0 then
sortKey = 7000 + mag
else
sortKey = 2999 - mag
value = value + 10^(mag+1)
end
sortKey = string.format('%d', sortKey) .. string.format('%015.0f', math.floor(value * 10^(14-mag)))
end
local result
if sortable == 'sortable_table' then
result = 'data-sort-value="_SORTKEY_"|'
elseif sortable == 'sortable_debug' then
result = '<span data-sort-value="_SORTKEY_♠"><span style="border:1px solid">_SORTKEY_♠</span></span>'
else
result = '<span data-sort-value="_SORTKEY_♠"></span>'
end
return (result:gsub('_SORTKEY_', sortKey))
end
end
local translateParameters = {
abbr = {
off = 'abbr_off',
on = 'abbr_on',
},
disp = {
age = 'disp_age',
raw = 'disp_raw',
},
format = {
raw = 'format_raw',
commas = 'format_commas',
},
round = {
on = 'on',
yes = 'on',
months = 'ym',
weeks = 'ymw',
days = 'ymd',
hours = 'ymdh',
},
sep = {
comma = 'sep_comma',
[','] = 'sep_comma',
serialcomma = 'sep_serialcomma',
space = 'sep_space',
},
show = {
hide = { id = 'hide' },
y = { 'y', id = 'y' },
ym = { 'y', 'm', id = 'ym' },
ymd = { 'y', 'm', 'd', id = 'ymd' },
ymw = { 'y', 'm', 'w', id = 'ymw' },
ymwd = { 'y', 'm', 'w', 'd', id = 'ymwd' },
yd = { 'y', 'd', id = 'yd', keepZero = true },
m = { 'm', id = 'm' },
md = { 'm', 'd', id = 'md' },
w = { 'w', id = 'w' },
wd = { 'w', 'd', id = 'wd' },
h = { 'H', id = 'h' },
hm = { 'H', 'M', id = 'hm' },
hms = { 'H', 'M', 'S', id = 'hms' },
M = { 'M', id = 'M' },
s = { 'S', id = 's' },
d = { 'd', id = 'd' },
dh = { 'd', 'H', id = 'dh' },
dhm = { 'd', 'H', 'M', id = 'dhm' },
dhms = { 'd', 'H', 'M', 'S', id = 'dhms' },
ymdh = { 'y', 'm', 'd', 'H', id = 'ymdh' },
ymdhm = { 'y', 'm', 'd', 'H', 'M', id = 'ymdhm' },
ymwdh = { 'y', 'm', 'w', 'd', 'H', id = 'ymwdh' },
ymwdhm = { 'y', 'm', 'w', 'd', 'H', 'M', id = 'ymwdhm' },
},
sortable = {
off = false,
on = 'sortable_on',
table = 'sortable_table',
debug = 'sortable_debug',
},
}
local spellOptions = {
cardinal = {},
Cardinal = { upper = true },
cardinal_us = { us = true },
Cardinal_us = { us = true, upper = true },
ordinal = { ordinal = true },
Ordinal = { ordinal = true, upper = true },
ordinal_us = { ordinal = true, us = true },
Ordinal_us = { ordinal = true, us = true, upper = true },
}
local function dateExtract(frame)
-- Return part of a date after performing an optional operation.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {}
for i, v in ipairs(args) do
parms[i] = v
end
if yes(args.fix) then
table.insert(parms, 'fix')
end
if yes(args.partial) then
table.insert(parms, 'partial')
end
local show = stripToNil(args.show) or 'dmy'
local date = Date(unpack(parms))
if not date then
if show == 'format' then
return 'error'
end
return message('mt-need-valid-date')
end
local add = stripToNil(args.add)
if add then
for item in add:gmatch('%S+') do
date = date + item
if not date then
return message('mt-cannot-add', item)
end
end
end
local sortKey, result
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date.partial and date.partial.first or date).jdz
sortKey = makeSort(value, sortable)
end
if show ~= 'hide' then
result = date[show]
if result == nil then
result = from_en(date:text(show))
elseif type(result) == 'boolean' then
result = result and '1' or '0'
else
result = from_en(tostring(result))
end
end
return (sortKey or '') .. makeExtra(args) .. (result or '')
end
local function rangeJoin(range)
-- Return text to be used between a range of ages.
return range == 'dash' and '–' or mtext['txt-or']
end
local function makeText(values, components, names, options, noUpper)
-- Return wikitext representing an age or duration.
local text = Collection.new()
local count = #values
local sep = names.sep or ''
for i, v in ipairs(values) do
-- v is a number (say 4 for 4 years), or a table ({4,5} for 4 or 5 years).
local islist = type(v) == 'table'
if (islist or v > 0) or (text.n == 0 and i == count) or (text.n > 0 and components.keepZero) then
local fmt, vstr
if options.spell then
fmt = function(number)
return spellNumber(number, options.spell, noUpper or i)
end
elseif i == 1 and options.format == 'format_commas' then
-- Numbers after the first should be small and not need formatting.
fmt = formatNumber
else
fmt = tostring
end
if islist then
vstr = fmt(v[1]) .. rangeJoin(options.range)
noUpper = true
vstr = vstr .. fmt(v[2])
else
vstr = fmt(v)
end
local name = names[components[i]]
if name then
if type(name) == 'table' then
name = mw.getContentLanguage():plural(islist and v[2] or v, name)
end
text:add(vstr .. sep .. name)
else
text:add(vstr)
end
end
end
local first, last
if options.join == 'sep_space' then
first = ' '
last = ' '
elseif options.join == 'sep_comma' then
first = ', '
last = ', '
elseif options.join == 'sep_serialcomma' and text.n > 2 then
first = ', '
last = mtext['txt-comma-and']
else
first = ', '
last = mtext['txt-and']
end
for i, v in ipairs(text) do
if i < text.n then
text[i] = v .. (i + 1 < text.n and first or last)
end
end
local sign = ''
if options.isnegative then
-- Do not display negative zero.
if text.n > 1 or (text.n == 1 and text[1]:sub(1, 1) ~= '0' ) then
if options.format == 'format_raw' then
sign = '-' -- plain hyphen so result can be used in a calculation
else
sign = '−' -- Unicode U+2212 MINUS SIGN
end
end
end
return
(options.sortKey or '') ..
(options.extra or '') ..
sign ..
text:join() ..
(options.suffix or '')
end
local function dateDifference(parms)
-- Return a formatted date difference using the given parameters
-- which have been validated.
local names = {
-- Each name is:
-- * a string if no plural form of the name is used; or
-- * a table of strings, one of which is selected using the rules at
-- https://translatewiki.net/wiki/Plural/Mediawiki_plural_rules
abbr_off = {
sep = ' ',
y = {'year', 'years'},
m = {'month', 'months'},
w = {'week', 'weeks'},
d = {'day', 'days'},
H = {'hour', 'hours'},
M = {'minute', 'minutes'},
S = {'second', 'seconds'},
},
abbr_on = {
y = 'y',
m = 'm',
w = 'w',
d = 'd',
H = 'h',
M = 'm',
S = 's',
},
abbr_infant = { -- for {{age for infant}}
sep = ' ',
y = {'yr', 'yrs'},
m = {'mo', 'mos'},
w = {'wk', 'wks'},
d = {'day', 'days'},
H = {'hr', 'hrs'},
M = {'min', 'mins'},
S = {'sec', 'secs'},
},
abbr_raw = {},
}
local diff = parms.diff -- must be a valid date difference
local show = parms.show -- may be nil; default is set below
local abbr = parms.abbr or 'abbr_off'
local defaultJoin
if abbr ~= 'abbr_off' then
defaultJoin = 'sep_space'
end
if not show then
show = 'ymd'
if parms.disp == 'disp_age' then
if diff.years < 3 then
defaultJoin = 'sep_space'
if diff.years >= 1 then
show = 'ym'
else
show = 'md'
end
else
show = 'y'
end
end
end
if type(show) ~= 'table' then
show = translateParameters.show[show]
end
if parms.disp == 'disp_raw' then
defaultJoin = 'sep_space'
abbr = 'abbr_raw'
elseif parms.wantSc then
defaultJoin = 'sep_serialcomma'
end
local diffOptions = {
round = parms.round,
duration = parms.wantDuration,
range = parms.range and true or nil,
}
local sortKey
if parms.sortable then
local value = diff.age_days + (parms.wantDuration and 1 or 0) -- days and fraction of a day
if diff.isnegative then
value = -value
end
sortKey = makeSort(value, parms.sortable)
end
local textOptions = {
extra = parms.extra,
format = parms.format,
join = parms.sep or defaultJoin,
isnegative = diff.isnegative,
range = parms.range,
sortKey = sortKey,
spell = parms.spell,
suffix = parms.suffix, -- not currently used
}
if show.id == 'hide' then
return sortKey or ''
end
local values = { diff:age(show.id, diffOptions) }
if values[1] then
return makeText(values, show, names[abbr], textOptions)
end
if diff.partial then
-- Handle a more complex range such as
-- {{age_yd|20 Dec 2001|2003|range=yes}} → 1 year, 12 days or 2 years, 11 days
local opt = {
format = textOptions.format,
join = textOptions.join,
isnegative = textOptions.isnegative,
spell = textOptions.spell,
}
return
(textOptions.sortKey or '') ..
makeText({ diff.partial.mindiff:age(show.id, diffOptions) }, show, names[abbr], opt) ..
rangeJoin(textOptions.range) ..
makeText({ diff.partial.maxdiff:age(show.id, diffOptions) }, show, names[abbr], opt, true) ..
(textOptions.suffix or '')
end
return message('mt-bad-show', show.id)
end
local function getDates(frame, getopt)
-- Parse template parameters and return one of:
-- * date (a date table, if single)
-- * date1, date2 (two date tables, if not single)
-- * text (a string error message)
-- A missing date is optionally replaced with the current date.
-- If wantMixture is true, a missing date component is replaced
-- from the current date, so can get a bizarre mixture of
-- specified/current y/m/d as has been done by some "age" templates.
-- Some results may be placed in table getopt.
local Date, currentDate = getExports(frame)
getopt = getopt or {}
local function flagCurrent(text)
-- This allows the calling template to detect if the current date has been used,
-- that is, whether both dates have been entered in a template expecting two.
-- For example, an infobox may want the age when an event occurred, not the current age.
-- Don't bother detecting if wantMixture is used because not needed and it is a poor option.
if not text then
if getopt.noMissing then
return nil -- this gives a nil date which gives an error
end
text = 'currentdate'
if getopt.flag == 'usesCurrent' then
getopt.usesCurrent = true
end
end
return text
end
local args = frame:getParent().args
local fields = {}
local isNamed = args.year or args.year1 or args.year2 or
args.month or args.month1 or args.month2 or
args.day or args.day1 or args.day2
if isNamed then
fields[1] = args.year1 or args.year
fields[2] = args.month1 or args.month
fields[3] = args.day1 or args.day
fields[4] = args.year2
fields[5] = args.month2
fields[6] = args.day2
else
for i = 1, 6 do
fields[i] = args[i]
end
end
local imax = 0
for i = 1, 6 do
fields[i] = stripToNil(fields[i])
if fields[i] then
imax = i
end
if getopt.omitZero and i % 3 ~= 1 then -- omit zero months and days as unknown values but keep year 0 which is 1 BCE
if isZero(fields[i]) then
fields[i] = nil
getopt.partial = true
end
end
end
local fix = getopt.fix and 'fix' or ''
local partialText = getopt.partial and 'partial' or ''
local dates = {}
if isNamed or imax >= 3 then
local nrDates = getopt.single and 1 or 2
if getopt.wantMixture then
-- Cannot be partial since empty fields are set from current.
local components = { 'year', 'month', 'day' }
for i = 1, nrDates * 3 do
fields[i] = fields[i] or currentDate[components[i > 3 and i - 3 or i]]
end
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (m == 2 or m == '2') and (d == 29 or d == '29') then
-- Workaround error with following which attempt to use invalid date 2001-02-29.
-- {{age_ymwd|year1=2001|year2=2004|month2=2|day2=29}}
-- {{age_ymwd|year1=2001|month1=2|year2=2004|month2=1|day2=29}}
-- TODO Get rid of wantMixture because even this ugly code does not handle
-- 'Feb' or 'February' or 'feb' or 'february'.
if not ((y % 4 == 0 and y % 100 ~= 0) or y % 400 == 0) then
d = 28
end
end
dates[i] = Date(y, m, d)
end
else
-- If partial dates are allowed, accept
-- year only, or
-- year and month only
-- Do not accept year and day without a month because that makes no sense
-- (and because, for example, Date('partial', 2001, nil, 12) sets day = nil, not 12).
for i = 1, nrDates do
local index = i == 1 and 1 or 4
local y, m, d = fields[index], fields[index+1], fields[index+2]
if (getopt.partial and y and (m or not d)) or (y and m and d) then
dates[i] = Date(fix, partialText, y, m, d)
elseif not y and not m and not d then
dates[i] = Date(flagCurrent())
end
end
end
else
getopt.textdates = true -- have parsed each date from a single text field
dates[1] = Date(fix, partialText, flagCurrent(fields[1]))
if not getopt.single then
dates[2] = Date(fix, partialText, flagCurrent(fields[2]))
end
end
if not dates[1] then
return message(getopt.missing1 or 'mt-need-valid-ymd')
end
if getopt.single then
return dates[1]
end
if not dates[2] then
return message(getopt.missing2 or 'mt-need-valid-ymd2')
end
return dates[1], dates[2]
end
local function ageGeneric(frame)
-- Return the result required by the specified template.
-- Can use sortable=x where x = on/table/off/debug in any supported template.
-- Some templates default to sortable=on but can be overridden.
local name = frame.args.template
if not name then
return message('mt-template-x')
end
local args = frame:getParent().args
local specs = {
age_days = { -- {{age in days}}
show = 'd',
disp = 'disp_raw',
},
age_days_nts = { -- {{age in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
},
duration_days = { -- {{duration in days}}
show = 'd',
disp = 'disp_raw',
duration = true,
},
duration_days_nts = { -- {{duration in days nts}}
show = 'd',
disp = 'disp_raw',
format = 'format_commas',
sortable = 'on',
duration = true,
},
age_full_years = { -- {{age}}
show = 'y',
abbr = 'abbr_raw',
flag = 'usesCurrent',
omitZero = true,
range = 'dash',
},
age_full_years_nts = { -- {{age nts}}
show = 'y',
abbr = 'abbr_raw',
format = 'format_commas',
sortable = 'on',
},
age_in_years = { -- {{age in years}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
},
age_in_years_nts = { -- {{age in years nts}}
show = 'y',
abbr = 'abbr_raw',
negative = 'error',
range = 'dash',
format = 'format_commas',
sortable = 'on',
},
age_infant = { -- {{age for infant}}
-- Do not set show because special processing is done later.
abbr = yes(args.abbr) and 'abbr_infant' or 'abbr_off',
disp = 'disp_age',
sep = 'sep_space',
sortable = 'on',
},
age_m = { -- {{age in months}}
show = 'm',
disp = 'disp_raw',
},
age_w = { -- {{age in weeks}}
show = 'w',
disp = 'disp_raw',
},
age_wd = { -- {{age in weeks and days}}
show = 'wd',
},
age_yd = { -- {{age in years and days}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
},
age_yd_nts = { -- {{age in years and days nts}}
show = 'yd',
format = 'format_commas',
sep = args.sep ~= 'and' and 'sep_comma' or nil,
sortable = 'on',
},
age_ym = { -- {{age in years and months}}
show = 'ym',
sep = 'sep_comma',
},
age_ymd = { -- {{age in years, months and days}}
show = 'ymd',
range = true,
},
age_ymwd = { -- {{age in years, months, weeks and days}}
show = 'ymwd',
wantMixture = true,
},
}
local spec = specs[name]
if not spec then
return message('mt-template-bad-name')
end
if name == 'age_days' then
local su = stripToNil(args['show unit'])
if su then
if su == 'abbr' or su == 'full' then
spec.disp = nil
spec.abbr = su == 'abbr' and 'abbr_on' or nil
end
end
end
local partial, autofill
local range = stripToNil(args.range) or spec.range
if range then
-- Suppose partial dates are used and age could be 11 or 12 years.
-- "|range=" (empty value) has no effect (spec is used).
-- "|range=yes" or spec.range == true sets range = true (gives "11 or 12")
-- "|range=dash" or spec.range == 'dash' sets range = 'dash' (gives "11–12").
-- "|range=no" or spec.range == 'no' sets range = nil and fills each date in the diff (gives "12").
-- ("on" is equivalent to "yes", and "off" is equivalent to "no").
-- "|range=OTHER" sets range = nil and rejects partial dates.
range = ({ dash = 'dash', off = 'no', no = 'no', [true] = true })[range] or yes(range)
if range then
partial = true -- accept partial dates with a possible age range for the result
if range == 'no' then
autofill = true -- missing month/day in first or second date are filled from other date or 1
range = nil
end
end
end
local getopt = {
fix = yes(args.fix),
flag = stripToNil(args.flag) or spec.flag,
omitZero = spec.omitZero,
partial = partial,
wantMixture = spec.wantMixture,
}
local date1, date2 = getDates(frame, getopt)
if type(date1) == 'string' then
return date1
end
local format = stripToNil(args.format)
local spell = spellOptions[format]
if format then
format = 'format_' .. format
elseif name == 'age_days' and getopt.textdates then
format = 'format_commas'
end
local parms = {
diff = date2:subtract(date1, { fill = autofill }),
wantDuration = spec.duration or yes(args.duration),
range = range,
wantSc = yes(args.sc),
show = args.show == 'hide' and 'hide' or spec.show,
abbr = spec.abbr,
disp = spec.disp,
extra = makeExtra(args, getopt.usesCurrent and format ~= 'format_raw'),
format = format or spec.format,
round = yes(args.round),
sep = spec.sep,
sortable = translateParameters.sortable[args.sortable or spec.sortable],
spell = spell,
}
if (spec.negative or frame.args.negative) == 'error' and parms.diff.isnegative then
return message('mt-date-wrong-order')
end
return from_en(dateDifference(parms))
end
local function bda(frame)
-- Implement [[Template:Birth date and age]].
local args = frame:getParent().args
local options = {
missing1 = 'mt-need-valid-bd',
noMissing = true,
single = true,
}
local date = getDates(frame, options)
if type(date) == 'string' then
return date -- error text
end
local Date = getExports(frame)
local diff = Date('currentdate') - date
if diff.isnegative or diff.years > 150 then
return message('mt-invalid-bd-age')
end
local disp = mtext['txt-bda-disp']
local show = 'y'
if diff.years < 2 then
disp = 'disp_age'
if diff.years == 0 and diff.months == 0 then
show = 'd'
else
show = 'm'
end
end
local result = substituteParameters(
mtext['txt-bda'],
date:text('%-Y-%m-%d'),
from_en(date:text(dateFormat(args))),
from_en(dateDifference({
diff = diff,
show = show,
abbr = 'abbr_off',
disp = disp,
sep = 'sep_space',
}))
)
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
day = true,
day1 = true,
month = true,
month1 = true,
year = true,
year1 = true,
}
local invalid
local imax = options.textdates and 1 or 3
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-bad-param1', invalid)
end
end
return result
end
local function dda(frame)
-- Implement [[Template:Death date and age]].
local args = frame:getParent().args
local options = {
missing1 = 'mt-need-valid-dd',
missing2 = 'mt-need-valid-bd2',
noMissing = true,
partial = true,
}
local date1, date2 = getDates(frame, options)
if type(date1) == 'string' then
return date1
end
local diff = date1 - date2
if diff.isnegative then
return message('mt-dd-wrong-order')
end
local Date = getExports(frame)
local today = Date('currentdate') + 1 -- one day in future allows for timezones
if date1 > today then
return message('mt-dd-future')
end
local years
if diff.partial then
years = diff.partial.years
years = type(years) == 'table' and years[2] or years
else
years = diff.years
end
if years > 150 then
return message('mt-invalid-dates-age')
end
local fmt_date, fmt_ymd
if date1.day then -- y, m, d known
fmt_date = dateFormat(args)
fmt_ymd = '%-Y-%m-%d'
elseif date1.month then -- y, m known; d unknown
fmt_date = '%B %-Y'
fmt_ymd = '%-Y-%m-00'
else -- y known; m, d unknown
fmt_date = '%-Y'
fmt_ymd = '%-Y-00-00'
end
local sortKey
local sortable = translateParameters.sortable[args.sortable]
if sortable then
local value = (date1.partial and date1.partial.first or date1).jdz
sortKey = makeSort(value, sortable)
end
local result = (sortKey or '') .. substituteParameters(
mtext['txt-dda'],
date1:text(fmt_ymd),
from_en(date1:text(fmt_date)),
from_en(dateDifference({
diff = diff,
show = 'y',
abbr = 'abbr_off',
disp = mtext['txt-dda-disp'],
range = 'dash',
sep = 'sep_space',
}))
)
local warnings = tonumber(frame.args.warnings)
if warnings and warnings > 0 then
local good = {
df = true,
mf = true,
}
local invalid
local imax = options.textdates and 2 or 6
for k, _ in pairs(args) do
if type(k) == 'number' then
if k > imax then
invalid = tostring(k)
break
end
else
if not good[k] then
invalid = k
break
end
end
end
if invalid then
result = result .. message('mt-bad-param1', invalid)
end
end
return result
end
local function dateToGsd(frame)
-- Implement [[Template:Gregorian serial date]].
-- Return Gregorian serial date of the given date, or the current date.
-- The returned value is negative for dates before 1 January 1 AD
-- despite the fact that GSD is not defined for such dates.
local date = getDates(frame, { wantMixture=true, single=true })
if type(date) == 'string' then
return date
end
return tostring(date.gsd)
end
local function jdToDate(frame)
-- Return formatted date from a Julian date.
-- The result includes a time if the input includes a fraction.
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date('juliandate', args[1], args[2])
if date then
return from_en(date:text())
end
return message('mt-need-jdn')
end
local function dateToJd(frame)
-- Return Julian date (a number) from a date which may include a time,
-- or the current date ('currentdate') or current date and time ('currentdatetime').
-- The word 'Julian' is accepted for the Julian calendar.
local Date = getExports(frame)
local args = frame:getParent().args
local date = Date(args[1], args[2], args[3], args[4], args[5], args[6], args[7])
if date then
return tostring(date.jd)
end
return message('mt-need-valid-ymd-current')
end
local function timeInterval(frame)
-- Implement [[Template:Time interval]].
-- There are two positional arguments: date1, date2.
-- The default for each is the current date and time.
-- Result is date2 - date1 formatted.
local Date = getExports(frame)
local args = frame:getParent().args
local parms = {
extra = makeExtra(args),
wantDuration = yes(args.duration),
range = yes(args.range) or (args.range == 'dash' and 'dash' or nil),
wantSc = yes(args.sc),
}
local fix = yes(args.fix) and 'fix' or ''
local date1 = Date(fix, 'partial', stripToNil(args[1]) or 'currentdatetime')
if not date1 then
return message('mt-invalid-start')
end
local date2 = Date(fix, 'partial', stripToNil(args[2]) or 'currentdatetime')
if not date2 then
return message('mt-invalid-end')
end
parms.diff = date2 - date1
for argname, translate in pairs(translateParameters) do
local parm = stripToNil(args[argname])
if parm then
parm = translate[parm]
if parm == nil then -- test for nil because false is a valid setting
return message('mt-bad-param2', argname, args[argname])
end
parms[argname] = parm
end
end
if parms.round then
local round = parms.round
local show = parms.show
if round ~= 'on' then
if show then
if show.id ~= round then
return message('mt-conflicting-show', args.show, args.round)
end
else
parms.show = translateParameters.show[round]
end
end
parms.round = true
end
return from_en(dateDifference(parms))
end
return {
age_generic = ageGeneric, -- can emulate several age templates
birth_date_and_age = bda, -- Template:Birth_date_and_age
death_date_and_age = dda, -- Template:Death_date_and_age
gsd = dateToGsd, -- Template:Gregorian_serial_date
extract = dateExtract, -- Template:Extract
jd_to_date = jdToDate, -- Template:?
JULIANDAY = dateToJd, -- Template:JULIANDAY
time_interval = timeInterval, -- Template:Time_interval
}
094ef43a81ac2366c838b6ad889ed0ffe5a1eec4
Help:Infobox
12
88
223
2023-06-11T10:42:34Z
wikipedia>IceWelder
0
/* Editing the target article */ Emulate VE style as defined by the infobox TemplateData
wikitext
text/x-wiki
{{short description|Wikipedia help article}}
{{about||a list of infoboxes|Wikipedia:List of infoboxes|and|Category:Infobox templates|the style guide|Wikipedia:Manual of Style/Infoboxes|the project|Wikipedia:WikiProject Infoboxes}}
{{Wikipedia how to|H:IB}}
[[File:Lundehund.png|thumb|Example of an infobox]]
{{WikiProject Infoboxes sidebar}}
An [[infobox]] is a fixed-format table usually added to the top right-hand corner of articles to consistently present a summary of some unifying aspect that the articles share and sometimes to improve navigation to other interrelated articles. Many infoboxes also emit structured [[metadata]] which is sourced by [[DBpedia]] and other third party re-users. The generalized infobox feature grew out of the original [[Wikipedia:How to read a taxobox|taxoboxes]] (taxonomy infoboxes) that editors developed to visually express the scientific classification of organisms.
The use of infoboxes is neither required nor prohibited for any article. Whether to include an infobox, which infobox to include, and which parts of the infobox to use, is determined through [[Wikipedia:Consensus|discussion and consensus among the editors]] at each individual article.
==What infoboxes do==
Infobox templates contain important facts and statistics of a type which are common to related articles. For instance, all animals have a scientific classification (species, family and so on), as well as a conservation status. Adding a {{tlx|taxobox}} to articles on animals therefore makes it easier to quickly find such information and to compare it with that of other articles.
Infobox templates are like fact sheets, or sidebars, in magazine articles. They quickly summarize important points in an easy-to-read format. However, they are {{em|not}} "statistics" tables in that they (generally) only summarize material from an article<!--taxoboxes are an obvious exception, and so are element infoboxes -->—the information should still be present in the main text, partly because it may not be possible for some readers to access the contents of the infobox. In particular, if infobox templates hide long columns of data inside collapsing tables, then readers using [[screen reader|assistive technology]] may miss their presence entirely.
Many infoboxes also emit metadata such as [[microformat]]s {{crossref|printworthy=y|(see [[WP:WikiProject Microformats]])}}.
==What should an infobox contain?==
In general, data in infobox templates should be:
* '''Comparable.''' If a lot of different subjects all share a common attribute (for instance, all people have a name and a date of birth), then it is useful to be able to compare these across different pages. This also implies that where possible, material should be presented in a standard format.
* '''Concise.''' Infobox templates are "at-a-glance", and used for quickly checking facts.
* '''Materially relevant to the subject.'''
* '''Already cited elsewhere in the article.''' Infoboxes, like the [[Wikipedia:Manual of Style (lead section)|introduction to the article]], should primarily contain material that is expanded on and supported by citations to reliable sources elsewhere in the article. However, if necessary (e.g., because the article is currently incomplete), it is possible to include [[Wikipedia:Footnotes|footnotes]] in infoboxes.
==What should an infobox not contain?==
In general, data in infobox templates should not have:
* '''Excessive length.''' Long bodies of text, or very detailed statistics, belong in the article body.
* '''Trivial details.''' A common problem is including material in the infobox which is trivial and would not otherwise be included in the article body: for example, a fictional character's [[blood type]] may be referenced in passing in a work, but it is not especially useful to understanding the subject. Infobox templates should not be used for details that are too trivial to include in the article body (there are some exceptions, such as chemical properties).
* '''Flags.''' Flag icons should generally [[Wikipedia:Manual of Style/Icons#Avoid flag icons in infoboxes|not be used]] in infoboxes, even when there is a "country", "nationality" or equivalent field: they are unnecessarily distracting and give undue prominence to one field among many.
==Adding an infobox to an article==
There are two steps required to add an infobox to an article:
#Finding the infobox
#Editing the article
===Finding the infobox===
In order to use an infobox in an article, an editor must know its name, parameters, and how those parameters are intended to be used. Because infoboxes are kept in a [[Wikipedia:Namespace|namespace]] separate from articles, it takes some effort to identify an infobox by name. Once the editor has the name, however, it is straightforward to look up the infobox's documentation.
There are two ways in which an editor typically locates which infobox they want to use:
*By browsing the set of all infoboxes via [[Wikipedia:List of infoboxes]].
*By determining the name of a particular infobox used in a similar article.
For example, the article [[D-Terminal]] contains an infobox. To determine which one, simply edit the article:
<syntaxhighlight lang="wikitext">
{{Infobox connector
...
}}
</syntaxhighlight>
The "<CODE>{{Infobox connector</CODE>" identifies the markup between the enclosing braces as a use of the "<code>connector</code>" infobox. The editor can look up the documentation for the template, including a list of parameters, in the Template namespace under [[Template:Infobox connector]].
===Editing the target article===
In accordance with [[WP:LAYOUT|Wikipedia's Manual of Style]], infoboxes should be placed at the top of an article after any [[MOS:DABINT|disambiguation links]] and [[WP:TM/MAIN|maintenance tags]].
The infobox documentation page usually contains a convenient "blank" template that can be copied directly into the target article. The template consists of opening (<CODE>{{</CODE>) and closing (<CODE>}}</CODE>) double braces that contain the name of the infobox and a list of parameters without values. An editor then fills in the value for each of the parameters to the right of the corresponding equals sign.
For example:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name =
| image =
| caption =
...
| website =
}}
</syntaxhighlight>
might be filled out like this:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name = Casanova
| image = Casanova self portrait.jpg
| caption = A self-portrait of Casanova
...
| website =
}}
</syntaxhighlight>
In this example, the names of the parameters ("<CODE>name</CODE>", "<CODE>image</CODE>", "<CODE>caption</CODE>", "<CODE>website</CODE>") are fixed in the design of the infobox and described in its documentation. A parameter that is misspelled, falsely capitalized, or is not supported by the infobox implementation does not display at all. To find out exactly which parameters are functional, look at the infobox's template page. Anything not listed there will be ignored, even if it works in some other infobox. If you believe that another parameter needs to be added to a given infobox template, then suggest that on the infobox's talk page.
The infobox documentation describes which parameters are required and which are optional. Required parameters display between triple braces (for example, <CODE>{{{requiredparametername}}}</CODE>) when previewed or published. Optional parameters may be left empty or omitted entirely.
===Troubleshooting===
If you added an infobox and it didn't display correctly, here are the common errors:
* You used a made-up or invalid parameter. You can only use parameters that have been pre-programmed into ''this'' infobox template.
* You misspelled the parameter name or omitted necessary punctuation (e.g., leaving out the [[underscore]] in <code>birth_place</code>).
* You capitalized the parameter name. Parameters are [[case sensitive]]. Nearly all infoboxes use lowercase parameter labels.
* You included the prefix <code>File:</code> before the image name (or you didn't, and it's one of the templates that requires it).
* You used the parameter name more than once: only the final instance displays.
==Adding an image to an infobox==
{{Main|Help:Infobox picture}}
Images are generally specified using the <CODE>image</CODE> and <CODE>caption</CODE> parameters. However, the template may use a different name for this parameter. For example, {{tp|Infobox album}} uses "Cover" instead of "image" and "Caption" instead of "caption".
The <CODE>image</CODE> parameter sometimes requires the [[Wikipedia:Extended image syntax]]; other times it requires only the image file name depending on the tastes of the editor who created the infobox. An editor can determine this either by experimenting (using the "preview" function) or by consulting the infobox template documentation.
Many images in infoboxes should have a [[WP:ALT|special text alternative]] for people who cannot see the image.
==Combining multiple infoboxes==
{{For|detailed guidance on how combine multiple infoboxes|Wikipedia:WikiProject Infoboxes/embed}}
If an article requires two or more infoboxes it is often possible to combine them into one,
by including the others as a module (or child-, or sub-template) of the first. Alternately, it can be useful to use {{tl|stack}} as a container for them to prevent layout problems with other images and floating elements in the article.
==Designing an infobox==
{{for|detailed guidance on how to design infoboxes|Help:Designing infoboxes}}
It is a good idea to seek the opinions of other editors before embarking on a design of a new infobox or redesign of an existing one. Most requirements are already met by an existing infobox and most of the remainder can be met with a tweak. Unnecessary duplication leads to clutter and article divergence. Prototype your new design in your own [[WP:USERPAGE|user space]]. Once prototyped, propose the infobox changes to the appropriate [[Wikipedia:WikiProject|WikiProject]] and gain [[Wikipedia:Consensus|consensus]] before deploying your new design in the [[WP:TMP|template namespace]].
==Deleting an infobox==
Requests to delete an infobox should be brought to the attention of [[Wikipedia:Templates for discussion]] and any [[Wikipedia:WikiProject|WikiProject]]s associated with the infobox. The WikiProject associated with the subject can usually be found at the top of the talk page of the article. A template may be merged with another rather than deleted outright.
{{Help:Infobox/user style}}
==See also==
{{Wikipedia glossary}}
*[[Wikipedia:How to read a color infobox]]
*[[Wikipedia:How to read a taxobox]]
*[[Wikipedia:Help desk]] – to ask questions about using infoboxes in articles if you weren't able to find the information you need on this help page.
*[[Wikipedia:Disinfoboxes]] – an essay expressing a particular viewpoint
*{{sectionlink|Infobox|Wikipedia}}
----
{{Offer help}}
{{Help navigation}}
[[Category:Wikipedia editor help]]
[[Category:Wikipedia infoboxes| ]]
[[Category:Wikipedia template help]]
746ed7695c517ae9f68decf92a18e8f37695ed5e
Template:Main/doc
10
451
2182
1001
2023-06-13T04:02:20Z
wikipedia>Vitaium
0
/* Template data */
wikitext
text/x-wiki
<noinclude>{{pp-vandalism|small=yes}}</noinclude>{{Documentation subpage}}
{{High-use}}
{{Never substitute}}
{{Lua|icononly=on|Module:Labelled list hatnote}}
{{hatnote|This template is for linking to main content. For the mainspace detection template, see [[:template:main other]].}}
When a [[Wikipedia:What is an article?|Wikipedia article]] is large, it is often written in [[Wikipedia:Summary style|summary style]]. This [[Wikipedia:Template messages|template]] is used after the heading of the summary, to link to the subtopic article that has been summarized. For [[Help:Category|Category namespace]], please use '''{{tl|Cat main}}''' instead.
Use of this template should be restricted to the purposes described above. It is '''not''' to be used as a substitute for inline links or {{tl|Further}} template. The latter is used when the section expounds a specific aspect of the topic instead of summarizing its article. For example, in [[phthalate]], the template under the "Endocrine disruptor" section should '''not''' be {{tlf|Main|Endocrine disruptor}}, because the section specifically deals with phthalate as an endocrine disruptor and not endocrine disruptors in general.
This template should also not be used in lead sections. A lead section is always a summary of its own article, not any other; as such, the only appropriate target for a {{tl|Main}} link in the lead section would be the article itself, which is not useful. {{tl|Broader}} may be appropriate in this case.
{{TOC limit}}
==Usage==
{{see|WP:SUMMARYHATNOTE}}
{{startplainlist}}
* {{vad|Basic usage:|7.5em|left}} <code>{{((}}{{BASEPAGENAME}}{{!}}{{var|page}}{{))}}</code>
* {{vad|All parameters:|7.5em|left}} <code>{{((}}{{BASEPAGENAME}}{{!}}{{var|page1}}{{!}}{{var|page2}}{{!}}{{var|page3}}{{!}} ... {{!}}l1 {{=}} {{var|label1}}{{!}}l2 {{=}} {{var|label2}}{{!}}l3 {{=}} {{var|label3}}{{!}} ... {{!}}selfref {{=}} {{var|yes}}{{))}}</code>
{{endplainlist}}
==Parameters==
*<code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. If no page names are specified, the current page name is used instead (without the [[Wikipedia:Namespace|namespace]] prefix). Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''.
*<code>l1</code>, <code>l2</code>, <code>l3</code>, ... ''or''<code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ... – optional labels for each of the pages to link to (this is for articles where a piped link would be used). Note that the extra parameters use a lower case 'L', for example, <code>l1</code>, <u>not</u> <code>L1</code>.
*<code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information. This is only necessary in articles and other content (e.g. templates) that will appear in articles, and need not be added for uses of this template on <code>Wikipedia:</code> namespace pages.
==Template data==
{{TemplateData header}}
<templatedata>
{
"description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display, in italics, \"Main article: Article 1, Article 2 and Article 3\"",
"params": {
"1": {
"label": "Page 1",
"description": "The name of the first page that you want to link to. If this is not specified, the current page name (with no namespace prefix) is used instead. ",
"type": "wiki-page-name",
"required": true,
"suggested": true
},
"2": {
"label": "Page 2",
"description": "The name of the second page that you want to link to.",
"type": "wiki-page-name",
"required": false
},
"3": {
"label": "Page 3",
"description": "The name of the third page that you want to link to. More pages can be added using the parameters \"4\", \"5\", etc.",
"type": "wiki-page-name",
"required": false
},
"l1": {
"type": "string",
"label": "Label 1",
"description": "What the first linked page is to be displayed as.",
"aliases": [
"label 1"
]
},
"l2": {
"label": "Label 2",
"description": "What the second linked page is to be displayed as.",
"type": "string",
"aliases": [
"label 2"
]
},
"l3": {
"label": "Label 3",
"description": "What the third linked page is to be displayed as. Other labels can be added by using increasing numbers (starting with \"l4\" for page 4) as parameter names.",
"type": "string",
"aliases": [
"label 3"
]
},
"selfref": {
"type": "boolean",
"label": "Self reference",
"description": "Set to \"yes\" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site."
}
},
"paramOrder": [
"1",
"2",
"3",
"l1",
"l2",
"l3",
"selfref"
],
"format": "{{_|_ = _}}\n"
}
</templatedata>
==Examples==
{{hatnote|Underscores (_) between words are not necessary}}
*<code><nowiki>{{Main}}</nowiki></code> → {{main|category=no}}
*<code><nowiki>{{Main|Article}}</nowiki></code> → {{main|Article}}
*<code><nowiki>{{Main|Article#Section title}}</nowiki></code> → {{main|Article#Section title}}
*<code><nowiki>{{Main|Article#Section|l1=Custom section label}}</nowiki></code> → {{main|Article#Section|l1=Custom section label}}
*<code><nowiki>{{Main|Article1|Article2|Article3}}</nowiki></code> → {{main|Article1|Article2|Article3}}
*<code><nowiki>{{Main|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}</nowiki></code> → {{main|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}
*<code><nowiki>{{Main|(15760) 1992 QB1|l1={{mp|(15760) 1992 QB|1}}}}</nowiki></code> → {{main|(15760) 1992 QB1|l1={{mp|(15760) 1992 QB|1}}}}
==Errors==
If the name of the first page that you want to link to is not specified, the current page name (with no namespace prefix) is used instead:
*{{Main|category=no}}
No errors can be displayed due to the illegal usage of parameters or other usages (i.e. the first parameter can be omitted, other parameters can be used even if the first one is empty (and automatically filled with the current page name (with no namespace prefix)), equals sign can be used as one of the parameters, and template can be used by direct call to the module (using "#invoke")). This is not the case for {{tl|see also}}, for example.
==See also==
*{{tl|Main list}}: For a more comprehensive list, see {{color|blue|Article}}.
*{{tl|Broader}}: For broader coverage of this topic, see {{color|blue|Article}}.
*{{tl|Excerpt}}, which allows transclusion of text (such as an intro section) from one article into another
*{{tl|Further}}: Further information: {{color|blue|Article}}.
*{{tl|Official website}}
{{Hatnote templates}}
<includeonly>{{sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Hatnote templates]]
[[Category:Wikipedia page-section templates]]
}}</includeonly>
e915b79b0e71109dc84f21a3455a1b8b4bfcb784
Template:Samp
10
1251
2585
2023-06-14T15:35:10Z
w>Taravyvan Adijene
0
абнаўленьне зьвестак
wikitext
text/x-wiki
<samp {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-left:0.4em; padding-right:0.4em; color:{{{color|#666666}}}; {{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</samp><noinclude>
<!--Categories go near the bottom of the /doc page.-->
{{Documentation}}
</noinclude>
f6ab5d4006d47b4412736ea88bf42847cfb57a40
Template:Kbd
10
1063
2324
2023-06-14T16:12:25Z
wikipedia>Taravyvan Adijene
0
абнаўленьне зьвестак
wikitext
text/x-wiki
<kbd {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="background:#EEEEEE; {{#if:{{{spacing|}}}| padding-left:{{{padding|0.2em}}}; padding-right:{{{padding|0.2em}}};| letter-spacing:0.05em; padding-left:0.25em; padding-right:0.2em;}}{{#if:{{{style|}}}|{{{style}}}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|user input}}}</kbd><noinclude>
<!--Categories go near the bottom of the /doc page.-->
{{Documentation}}
</noinclude>
4717d3a6d1c5c1b826066ac2a794cc6c92b43ac3
Template:Post-nominals/GBR
10
1378
2713
2023-06-15T15:51:36Z
w>DrKay
0
per edit request
wikitext
text/x-wiki
{{#switch: {{{1}}}
| AC = [[Honorary Companion of the Order of Australia|AC]]
| ACs = [[Companion of the Order of Australia|AC]]
| AcSS = [[Academician of the Social Sciences|AcSS]]
| ADC = [[Aide de Camp#United Kingdom|ADC]]
| ADC Gen= [[Aide-de-camp general|ADC Gen]]
| ADCh = [[Honorary Aide de Camp|Hon ADC]]
| ADC(P) = [[Personal aide-de-camp|ADC]]
| AE = [[Air Efficiency Award|AE]]
| AFC = [[Air Force Cross (United Kingdom)|AFC]]
| AFC* = [[Air Force Cross and Bar (United Kingdom)|AFC*]]
| AFC** = [[Air Force Cross and two Bars (United Kingdom)|AFC**]]
| AFC1 = [[Air Force Cross (United Kingdom)|AFC]] & [[Medal bar|Bar]]
| AFC2 = [[Air Force Cross (United Kingdom)|AFC]] & [[Medal bar|Two Bars]]
| AFM = [[Air Force Medal|AFM]]
| AK = [[Knight of the Order of Australia|AK]]
| AKC = [[Associate of King's College|AKC]]
| AM = [[Albert Medal for Lifesaving|AM]]
| AMh = [[Honorary Member of the Order of Australia|AM]]
| AMICE = [[Associate Member of the Institution of Civil Engineers|AMICE]]
| AMInstCE = [[Associate Member of the Institution of Civil Engineers|AMInstCE]]
| AMIMechE = [[Associate Member of the Institution of Mechanical Engineers|AMIMechE]]
| AMIStructE = [[Associate Member of the Institution of Structural Engineers|AMIStructE]]
| AMl = [[London Assembly|AM]]
| AMRSB = [[Associate Member of the Royal Society of Biology|AMRSB]]
| AMw = [[National Assembly for Wales|AM]]
| AO = [[Honorary Officer of the Order of Australia|AO]]
| ARA = [[Associate Member of the Royal Academy|ARA]]
| ARBSA = [[Associate of the Royal Birmingham Society of Artists|ARBSA]]
| ARCS = [[Associate of the Royal College of Science|ARCS]]
| ARE = [[Royal Society of Painter-Etchers and Engravers|ARE]]
| ARIBA = [[Royal Institute of British Architects|ARIBA]]
| ARRC = [[Royal Red Cross|ARRC]]
| ARSA = [[Associate Royal Scottish Academician|ARSA]]
| ARWA = [[Royal West of England Academy|ARWA]]
| AS = [[Member of the Senedd|AS]]
| AsstChStJ = [[Assistant Chaplain of the Order of St John|AsstChStJ]]
| AsstChStJf = [[Assistant Chaplain of the Order of St John|AsstChStJ]]
| Bart = [[Baronet|Bart]]
| Barte = [[Baronet|Bart]]
| Bartgb = [[Baronet|Bart]]
| Barti = [[Baronet|Bart]]
| Bartns = [[Baronet|Bart]]
| BEM = [[British Empire Medal|BEM]]
| Bt = [[Baronet|Bt]]
| Bte = [[Baronet|Bt]]
| Btgb = [[Baronet|Bt]]
| Bti = [[Baronet|Bt]]
| Btns = [[Baronet|Bt]]
| Btss = [[Baronetess|Btss]]
| Btsse = [[Baronetess|Btss]]
| Btssgb = [[Baronetess|Btss]]
| Btssi = [[Baronetess|Btss]]
| Btssns = [[Baronetess|Btss]]
| CB = [[Companion of the Order of the Bath|CB]]
| CBh = [[Honorary Companion of the Order of the Bath|CB]]
| CBE = [[Commander of the Order of the British Empire|CBE]]
| CBEh = [[Honorary Commander of the Order of the British Empire|CBE]]
| CC = [[Companion of the Order of Canada|CC]]
| CChem = [[Chartered Chemist|CChem]]
| CCMI = [[Companion of the Chartered Management Institute|CCMI]]
| CD = [[Canadian Forces' Decoration|CD]]
| C.D. = [[Canadian Forces' Decoration|C.D.]]
| CEng = [[Chartered Engineer (UK)|CEng]]
| CF = [[Churchill Fellow|CF]]
| CFA = [[Chartered Financial Analyst|CFA]]
| C.F.A. = [[Chartered Financial Analyst|C.F.A.]]
| CGA = [[Community of the Glorious Ascension|CGA]]
| CGC = [[Conspicuous Gallantry Cross|CGC]]
| CGM = [[Conspicuous Gallantry Medal|CGM]]
| CH = [[Companion of Honour|CH]]
| ChStJ = [[Chaplain of the Order of St John|ChStJ]]
| CI = [[Companion of the Order of the Crown of India|CI]]
| CIE = [[Companion of the Order of the Indian Empire|CIE]]
| CIEh = [[Honorary Companion of the Order of the Indian Empire|CIE]]
| CITP = [[Chartered IT Professional|CITP]]
| CM = [[Member of the Order of Canada|CM]]
| CMath = [[Chartered Mathematician|CMath]]
| CMG = [[Companion of the Order of St Michael and St George|CMG]]
| CMGh = [[Honorary Companion of the Order of St Michael and St George|CMG]]
| CMM = [[Commander of the Order of Military Merit|CMM]]
| CMP = [[Company of Mission Priests|CMP]]
| CPFA = [[Chartered Institute of Public Finance and Accountancy|CPFA]]
| CPM = [[Colonial Police Medal|CPM]]
| CPhys = [[Chartered Physicist|CPhys]]
| CPsychol = [[CPsychol]]
| CR = [[Community of the Resurrection|CR]]
| CSI = [[Companion of the Order of the Star of India|CSI]]
| CSIh = [[Honorary Companion of the Order of the Star of India|CSI]]
| CSM = [[Companion of the Order of the Star of Melanesia|CSM]]
| CStJ = [[Commander of the Order of St John|CStJ]]
| CVO = [[Commander of the Royal Victorian Order|CVO]]
| CVOh = [[Honorary Commander of the Royal Victorian Order|CVO]]
| DBE = [[Dame Commander of the Order of the British Empire|DBE]]
| DBEh = [[Honorary Dame Commander of the Order of the British Empire|DBE]]
| DCB = [[Dame Commander of the Order of the Bath|DCB]]
| DCBh = [[Honorary Dame Command of the Most Honorable Order of the Bath|DCB]]
| DCCT = [[Dame Commander of the Order of the Crown of Tonga|DCCT]]
| DCH = [[Diploma in Child Health|DCH]]
| DCL = [[Doctor of Civil Law|DCL]]
| DCM = [[Distinguished Conduct Medal|DCM]]
| DCM* = [[Distinguished Conduct Medal and Bar|DCM*]]
| DCM1 = [[Distinguished Conduct Medal|DCM]] & [[Medal bar|Bar]]
| DCMG = [[Dame Commander of the Order of St Michael and St George|DCMG]]
| DCMGh = [[Honorary Dame Commander of the Order of St Michael and St George|DCMG]]
| DCVO = [[Dame Commander of the Royal Victorian Order|DCVO]]
| DCVOh = [[Honorary Dame Commander of the Royal Victorian Order|DCVO]]
| DFC = [[Distinguished Flying Cross (United Kingdom)|DFC]]
| DFC* = [[Distinguished Flying Cross and Bar (United Kingdom)|DFC*]]
| DFC** = [[Distinguished Flying Cross and two Bars (United Kingdom)|DFC**]]
| DFC1 = [[Distinguished Flying Cross (United Kingdom)|DFC]] & [[Medal bar|Bar]]
| DFC2 = [[Distinguished Flying Cross (United Kingdom)|DFC]] & [[Medal bar|Two Bars]]
| DFM = [[Distinguished Flying Medal|DFM]]
| DFM* = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Bar]]
| DFM1 = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Bar]]
| DFM** = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Two Bars]]
| DFM2 = [[Distinguished Flying Medal|DFM]] & [[Medal bar|Two Bars]]
| DGCCT = [[Dame Grand Cross of the Order of the Crown of Tonga|DGCCT]]
| DL = [[Deputy Lieutenant|DL]]
| DLi = [[Deputy Lieutenant|DL]]
| DLni = [[Deputy Lieutenant|DL]]
| DLs = [[Deputy Lieutenant|DL]]
| DLw = [[Deputy Lieutenant|DL]]
| DSC = [[Distinguished Service Cross (United Kingdom)|DSC]]
| DSC* = [[Distinguished Service Cross and Bar (United Kingdom)|DSC*]]
| DSC** = [[Distinguished Service Cross and two Bars (United Kingdom)|DSC**]]
| DSC1 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Bar]]
| DSC2 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Two Bars]]
| DSC3 = [[Distinguished Service Cross (United Kingdom)|DSC]] & [[Medal bar|Three Bars]]
| DSG = [[Order of St. Gregory the Great|DSG]]
| DSM = [[Distinguished Service Medal (United Kingdom)|DSM]]
| DSM* = [[Distinguished Service Medal and Bar (United Kingdom)|DSM*]]
| DSO = [[Distinguished Service Order|DSO]]
| DSO* = [[Distinguished Service Order and Bar|DSO*]]
| DSO** = [[Distinguished Service Order and two Bars|DSO**]]
| DSO*** = [[Distinguished Service Order and three Bars|DSO***]]
| DSO1 = [[Distinguished Service Order|DSO]] & [[Medal bar|Bar]]
| DSO2 = [[Distinguished Service Order|DSO]] & [[Medal bar|Two Bars]]
| DSO3 = [[Distinguished Service Order|DSO]] & [[Medal bar|Three Bars]]
| DStJ = [[Dame of Justice of the Order of St John|DStJ]]
| DStJg = [[Dame of Grace of the Order of St John|DStJ]]
| DUniv = [[Honorary degree|DUniv]]
| ED = [[Efficiency Decoration|ED]]
| ERD = [[Emergency Reserve Decoration|ERD]]
| EsqStJ = [[Esquire of the Order of St John|EsqStJ]]
| FAA = [[Fellow of the Australian Academy of Science|FAA]]
| FACC = [[Fellow of the American College of Cardiology|FACC]]
| FACS = [[Fellow of the American College of Surgeons|FACS]]
| FAcSS = [[Fellow of the Academy of Social Sciences|FAcSS]]
| FAfN = [[Fellow of the Association for Nutrition|FAfN]]
| FAHA = [[Fellow of the Australian Academy of the Humanities|FAHA]]
| FASM = [[Fellow of the American Society for Microbiology|FASM]]
| FBA = [[Fellow of the British Academy|FBA]]
| HonFBA = [[Honorary Fellow of the British Academy|HonFBA]]
| FBAM = [[Fellow of the British Academy of Management|FBAM]]
| FBCS = [[Fellow of the British Computer Society|FBCS]]
| DFBCS = [[Distinguished Fellow of the British Computer Society|DFBCS]]
| FBIM = [[Fellow of the British Institute of Management|FBIM]]
| FBPhS = [[Fellow of the British Pharmacological Society|FBPhS]]
| HonFBPhS = [[Honorary Fellow of the British Pharmacological Society|HonFBPhS]]
| FFFP = [[Fellow of the Faculty of Family Planning|FFFP]]
| FRCOG = [[Fellow of the Royal College of Obstetricians and Gynaecologists|FRCOG]]
| FRPS = [[Fellow of the Royal Photographic Society|FRPS]]
| FRPSL = [[Fellow of the Royal Philatelic Society London|FRPSL]]
| FBPsS = [[Fellow of the British Psychological Society|FBPsS]]
| FCA = [[Fellow of the Institute of Chartered Accountants in England and Wales|FCA]]
| FCGI = [[Fellow of The City and Guilds of London Institute|FCGI]]
| FCIBSE = [[Fellow of the Chartered Institution of Building Services Engineers|FCIBSE]]
| FCIBS = [[Fellow of the Chartered Institute of Bankers in Scotland|FCIBS]]
| FCIL = [[Fellow of the Chartered Institute of Linguists|FCIL]]
| FCILT = [[Fellow of the Chartered Institute of Logistics and Transport|FCILT]]
| FCIS = [[Institute of Chartered Secretaries and Administrators|FCIS]]
| FCIOB = [[Fellow of the Chartered Institute of Building|FCIOB]]
| FCMA = [[Fellow of the Chartered Institute of Management Accountants|FCMA]]
| FCMI = [[Fellow of the Chartered Management Institute|FCMI]]
| FCCA = [[Chartered Certified Accountant|FCCA]]
| FCSD = [[Fellow of the Chartered Society of Designers|FCSD]]
| FCS = [[Fellow of the Chemical Society|FCS]]
| FEIS = [[Fellow of the Educational Institute of Scotland|FEIS]]
| FGS = [[Fellow of the Geological Society|FGS]]
| FFA = [[Fellow of the Faculty of Actuaries|FFA]]
| FFARCS = [[Fellow of the Faculty of Anaesthetists of the Royal College of Surgeons|FFARCS]]
| FFNRCSI= [[Fellow of the Faculty of Nursing and Midwifery of the Royal College of Surgeons in Ireland|FFNRCSI]]
| FFPH = [[Fellow of the Faculty of Public Health|FFPH]]
| FFPM = [[Fellow of the Faculty of Pharmaceutical Medicine|FFPM]]
| FFPHMI = [[Fellow of the Faculty of Public Health Medicine of Ireland|FFPHMI]]
| FFPS = [[Fellow of the Faculty of Physicians and Surgeons Glasgow|FFPS]]
| HonFFPM= [[Honorary Fellow of the Faculty of Pharmaceutical Medicine|HonFFPM]]
| FFSEM = [[Fellow of the Faculty of Sport and Exercise Medicine|FFSEM]]
| FHAS = [[Fellow of the Royal Highland and Agricultural Society of Scotland|FHAS]]
| FHEA = [[Fellow of the Higher Education Academy|FHEA]]
| FHS = [[Fellow of the Heraldry Society|FHS]]
| FIA = [[Fellow of the Institute of Actuaries|FIA]]
| FIBiol = [[Fellow of the Institute of Biology|FIBiol]]
| FIC = [[Fellow of the Institute of Chemistry|FIC]]
| FICE = [[Fellow of the Institution of Civil Engineers|FICE]]
| FIChemE= [[Fellow of the Institution of Chemical Engineers|FIChemE]]
| FIEE = [[Fellow of the Institution of Electrical Engineers|FIEE]]
| FIET = [[Fellow of the Institution of Engineering and Technology|FIET]]
| FIMA = [[Fellow of the Institute of Mathematics and its Applications|FIMA]]
| FIMechE= [[Fellow of the Institution of Mechanical Engineers|FIMechE]]
| FIMMM = [[Fellow of the Institute of Materials, Minerals and Mining|FIMMM]]
| FIStructE = [[Fellow of the Institution of Structural Engineers|FIStructE]]
| FInstP = [[Fellow of the Institute of Physics|FInstP]]
| FIPEM = [[Fellow of the Institute of Physics and Engineering in Medicine|FIPEM]]
| FKC = [[Fellow of King's College|FKC]]
| FLA = [[Fellow of the Library Association|FLA]]
| FLS = [[Fellow of the Linnean Society of London|FLS]]
| FLSW = [[Fellow of the Learned Society of Wales|FLSW]]
| FMA = [[Fellow of the Museums Association|FMA]]
| ForMemRS = [[Foreign Member of the Royal Society|ForMemRS]]
| FMedSci= [[Fellow of the Academy of Medical Sciences|FMedSci]]
| HonFMedSci = [[Honorary Fellow of the Academy of Medical Sciences|HonFMedSci]]
| FMRS = [[Fellow of the Materials Research Society|FMRS]]
| FNI = [[Fellow of the Nautical Institute|FNI]]
| FRACS = [[Fellow of the Royal Australasian College of Surgeons|FRACS]]
| FRAI = [[Fellow of the Royal Anthropological Institute|FRAI]]
| FRAS = [[Fellow of the Royal Astronomical Society|FRAS]]
| FRAeS = [[Fellow of the Royal Aeronautical Society|FRAeS]]
| FRAeSh = [[Honorary Fellow of the Royal Aeronautical Society|Hon FRAeS]]
| FRAM = [[Fellow of the Royal Academy of Music|FRAM]]
| FRCA = [[Fellow of the Royal College of Anaesthetists|FRCA]]
| FRCGP = [[Fellow of the Royal College of General Practitioners|FRCGP]]
| FRCGS = [[Fellow of the Royal Canadian Geographical Society|FRCGS]]
| FRCM = [[Fellow of the Royal College of Music|FRCM]]
| FRCN = [[Fellow of the Royal College of Nursing|FRCN]]
| FRCO = [[Fellow of the Royal College of Organists|FRCO]]
| FRCOG = [[Fellow of the Royal College of Obstetricians and Gynaecologists|FRCOG]]
| FRCP = [[Fellow of the Royal College of Physicians|FRCP]]
| FRCPCH = [[Fellow of the Royal College of Paediatrics and Child Health|FRCPCH]]
| HonFRCP= [[Honorary Fellow of the Royal College of Physicians|HonFRCP]]
| FRCPath= [[Fellow of the Royal College of Pathologists|FRCPath]]
| FRCPE = [[Fellow of the Royal College of Physicians of Edinburgh|FRCPE]]
| FRCPGlas = [[Fellow of the Royal College of Physicians and Surgeons of Glasgow|FRCPGlas]]
| FRCPI = [[Fellow of the Royal College of Physicians of Ireland|FRCPI]]
| FRCPsych = [[Fellow of the Royal College of Psychiatrists|FRCPsych]]
| FRCR = [[Fellow of the Royal College of Radiologists|FRCR]]
| FRCS = [[Fellow of the Royal College of Surgeons|FRCS]]
| FRCSE = [[Fellow of the Royal College of Surgeons of Edinburgh|FRCSE]]
| FRCSI = [[Fellow of the Royal College of Surgeons of Ireland|FRCSI]]
| FRCVS = [[Fellow of the Royal College of Veterinary Surgeons|FRCVS]]
| FREng = [[Fellow of the Royal Academy of Engineering|FREng]]
| HonFREng = [[Honorary Fellow of the Royal Academy of Engineering|HonFREng]]
| FRES = [[Fellow of the Royal Entomological Society|FRES]]
| FRFPSGlas = [[Fellow of the Royal Faculty of Physicians and Surgeons of Glasgow|FRFPSGlas]]
| FRGS = [[Fellow of the Royal Geographical Society|FRGS]]
| FRHistS= [[Fellow of the Royal Historical Society|FRHistS]]
| FRHortS= [[Fellow of the Royal Horticultural Society|FRHortS]]
| FRHS = [[Fellow of the Royal Horticultural Society|FRHS]]
| FRIAI = [[Fellow of the Royal Institute of the Architects of Ireland|FRIAI]]
| FRIAS = [[Fellow of the Royal Incorporation of Architects in Scotland|FRIAS]]
| FRIBA = [[Fellow of the Royal Institute of British Architects|FRIBA]]
| FRIBAh = [[Honorary Fellow of the Royal Institute of British Architects|Hon FRIBA]]
| HonFRIBA = [[Honorary Fellow of the Royal Institute of British Architects|Hon FRIBA]]
| FRIC = [[Fellow of the Royal Institute of Chemistry|FRIC]]
| HonFRIC= [[Honorary Fellow of the Royal Institute of Chemistry|HonFRIC]]
| FRICS = [[Fellow of the Royal Institution of Chartered Surveyors|FRICS]]
| FRIN = [[Fellow of the Royal Institute of Navigation|FRIN]]
| FRMetS = [[Fellow of the Royal Meteorological Society|FRMetS]]
| FRMS = [[Fellow of the Royal Microscopical Society|FRMS]]
| FRPharmS = [[Fellow of the Royal Pharmaceutical Society|FRPharmS]]
| FRS = [[Fellow of the Royal Society|FRS]]
| FRSA = [[Fellow of the Royal Society of Arts|FRSA]]
| FRSB = [[Fellow of the Royal Society of Biology|FRSB]]
| FRSC = [[Fellow of the Royal Society of Chemistry|FRSC]]
| HonFRSC= [[Honorary Fellows of the Royal Society of Chemistry|HonFRSC]]
| FRSCa = [[Fellow of the Royal Society of Canada|FRSC]]
| FRSCM = [[Fellow of the Royal School of Church Music|FRSCM]]
| FRSE = [[Fellow of the Royal Society of Edinburgh|FRSE]]
| HFRSE = [[Honorary Fellow of the Royal Society of Edinburgh|HonFRSE]]
| HonFRSE= [[Honorary Fellow of the Royal Society of Edinburgh|HonFRSE]]
| FRSf = [[Fellow of the Royal Society|FRS]]
| FRSfh = [[Honorary Fellow of the Royal Society|FRS]]
| FRSGS = [[Fellow of the Royal Scottish Geographical Society|FRSGS]]
| FRSh = [[Honorary Fellow of the Royal Society|FRS]]
| FRSL = [[Fellow of the Royal Society of Literature|FRSL]]
| FRSM = [[Fellow of the Royal Society of Medicine|FRSM]]
| FRSr = [[Royal Fellow of the Royal Society|FRS]]
| FRSPH = [[Fellow of the Royal Society of Public Health|FRSPH]]
| FRSS = [[Fellow of the Royal Statistical Society|FRSS]]
| FRSSA = [[Fellow of the Royal Scottish Society of Arts|FRSSA]]
| FRSTMH = [[Fellow of the Royal Society of Tropical Medicine and Hygiene|FRSTMH]]
| FRTPI = [[Fellow of the Royal Town Planning Institute|FRTPI]]
| FSA = [[Fellow of the Society of Antiquaries of London|FSA]]
| FSAs = [[Fellow of the Society of Antiquaries of Scotland|FSA Scot]]
| FSAS = [[Fellow of the Society of Antiquaries of Scotland|FSAS]]
| FSDC = [[Fellow of the Society of Dyers and Colourists|FSDC]]
| FSB = [[Fellow of The Society of Biology|FSB]]
| FSIA = [[Fellow of the Society of Industrial Artists|FSIA]]
| FSNR = [[Fellow of the Society for Nautical Research|FSNR]]
| FSSc = [[Fellow of the Society of Science, Letters and Art|FSSc]]
| FSS = [[Fellow of the Royal Statistical Society|FSS]]
| FSTS = [[Fellow of the Scottish Tartans Society|FSTS]]
| FWES = [[Women's Engineering Society|FWES]]
| FZS = [[Fellow of the London Zoological Society|FZS]]
| GBE = [[Knight Grand Cross of the Order of the British Empire|GBE]]
| GBEf = [[Dame Grand Cross of the Order of the British Empire|GBE]]
| GBEfh = [[Honorary Dame Grand Cross of the Order of the British Empire|GBE]]
| GBEh = [[Honorary Knight Grand Cross of the Order of the British Empire|GBE]]
| GBEm = [[Knight Grand Cross of the Order of the British Empire|GBE]]
| GBEmh = [[Honorary Knight Grand Cross of the Order of the British Empire|GBE]]
| GC = [[George Cross|GC]]
| GCB = [[Knight Grand Cross of the Order of the Bath|GCB]]
| GCBf = [[Dame Grand Cross of the Order of the Bath|GCB]]
| GCBfh = [[Honorary Dame Grand Cross of the Order of the Bath|GCB]]
| GCBh = [[Honorary Knight Grand Cross of the Order of the Bath|GCB]]
| GCBm = [[Knight Grand Cross of the Order of the Bath|GCB]]
| GCBmh = [[Honorary Knight Grand Cross of the Order of the Bath|GCB]]
| GCH = [[Knight Grand Cross of the Royal Guelphic Order|GCH]]
| GCIE = [[Knight Grand Commander of the Order of the Indian Empire|GCIE]]
| GCIEh = [[Honorary Knight Grand Commander of the Order of the Indian Empire|GCIE]]
| GCL = [[Grand Companion of the Order of Logohu|GCL]]
| GCMG = [[Knight Grand Cross of the Order of St Michael and St George|GCMG]]
| GCMGf = [[Dame Grand Cross of the Order of St Michael and St George|GCMG]]
| GCMGfh = [[Honorary Dames Grand Cross of the Order of St Michael and St George|GCMG]]
| GCMGh = [[Honorary Knight Grand Cross of the Order of St Michael and St George|GCMG]]
| GCMGm = [[Knight Grand Cross of the Order of St Michael and St George|GCMG]]
| GCMGmh = [[Honorary Knight Grand Cross of the Order of St Michael and St George|GCMG]]
| GCSI = [[Knight Grand Commander of the Order of the Star of India|GCSI]]
| GCSIh = [[Honorary Knight Grand Commander of the Order of the Star of India|GCSI]]
| GCStJ = [[Bailiff Grand Cross of the Order of St John|GCStJ]]
| GCStJf = [[Dame Grand Cross of the Order of St John|GCStJ]]
| GCVO = [[Knight Grand Cross of the Royal Victorian Order|GCVO]]
| GCVOf = [[Dame Grand Cross of the Royal Victorian Order|GCVO]]
| GCVOfh = [[Honorary Dame Grand Cross of the Royal Victorian Order|GCVO]]
| GCVOh = [[Honorary Knight Grand Cross of the Royal Victorian Order|GCVO]]
| GCVOm = [[Knight Grand Cross of the Royal Victorian Order|GCVO]]
| GCVOmh = [[Honorary Knight Grand Cross of the Royal Victorian Order|GCVO]]
| GM = [[George Medal|GM]]
| GM1 = [[George Medal|GM]] & [[Medal bar|Bar]]
| GMB = [[Great Master of the Order of the Bath|GMB]]
| GMMG = [[Grand Master of the Order of St Michael and St George|GMMG]]
| GMVO = [[Grand Master of the Royal Victorian Order|GMVO]]
| HonFRMS= [[Honorary Fellow of the Royal Microscopical Society|HonFRMS]]
| HonFRS = [[Honorary Fellow of the Royal Society|HonFRS]]
| HonFInstP = [[Honorary Fellows of the Institute of Physics|HonFInstP]]
| HonRWA = [[Royal West of England Academy|HonRWA]]
| HRHA = [[Royal Hibernian Academy|HRHA]]
| H.R.H.A. = [[Royal Hibernian Academy|H.R.H.A.]]
| HRSA = [[Honorary Royal Scottish Academician|HRSA]]
| IDSM = [[Indian Distinguished Service Medal|IDSM]]
| IOM = [[Indian Order of Merit|IOM]]
| ISO = [[Imperial Service Order|ISO]]
| JP = [[Justice of the Peace#United Kingdom|JP]]
| KB = [[Knight of the Bath (1399–1725)|KB]]
| KB2 = [[Knight Companion of the Order of the Bath (1725–1815)|KB]]
| KBE = [[Knight Commander of the Order of the British Empire|KBE]]
| KBEh = [[Honorary Knight Commander of the Order of the British Empire|KBE]]
| KC = [[King's Counsel|KC]]
| KC(Hon)= [[King's Counsel Honoris Causa|KC (Hon)]]
| KC (Hon.) = [[King's Counsel Honoris Causa|KC (Hon.)]]
| KCB = [[Knight Commander of the Order of the Bath|KCB]]
| KCBh = [[Honorary Knight Commander of the Order of the Bath|KCB]]
| KCCT = [[Knight Commander of the Order of the Crown of Tonga|KCCT]]
| KCH = [[Knight Commander of the Royal Guelphic Order|KCH]]
| KCIE = [[Knight Commander of the Order of the Indian Empire|KCIE]]
| KCIEh = [[Honorary Knight Commander of the Order of the Indian Empire|KCIE]]
| KCMG = [[Knight Commander of the Order of St Michael and St George|KCMG]]
| KCMGh = [[Honorary Knight Commander of the Order of St Michael and St George|KCMG]]
| KCSG = [[Knight Commander of the Order of St Gregory the Great|KCSG]]
| KC*SG = [[Knight Commander with Star of the Order of St Gregory the Great|KC*SG]]
| KCSI = [[Knight Commander of the Order of the Star of India|KCSI]]
| KCSIh = [[Honorary Knight Commander of the Order of the Star of India|KCSI]]
| KCVO = [[Knight Commander of the Royal Victorian Order|KCVO]]
| KCVOh = [[Honorary Knight Commander of the Royal Victorian Order|KCVO]]
| KG = [[Knight of the Order of the Garter|KG]]
| KGc = [[Knight Companion of the Order of the Garter|KG]]
| KGe = [[Extra Knight of the Order of the Garter|KG]]
| KGr = [[Royal Knight Companion of the Order of the Garter|KG]]
| KGCCT = [[Knight Grand Cross of the Order of the Crown of Tonga|KGCCT]]
| KH = [[Knight of the Royal Guelphic Order|KH]]
| KHC = [[Honorary Chaplain to the King|KHC]]
| KHS = [[Knight of the Holy Sepulchre|KHS]]
| KMCO = [[Sacred Military Constantinian Order of Saint George|KMCO]]
| KMT = [[Knight of the Military Order of Maria Theresa|KMT]]
| KPFSM = [[King's Police and Fire Service Medal|KPFSM]]
| KPM = [[King's Police Medal|KPM]]
| KP = [[Knight of the Order of St Patrick|KP]]
| KS = [[Serjeant-at-law#King's or Queen's Serjeants|KS]]
| KSG = [[Order of St. Gregory the Great|KSG]]
| KSI = [[Knight Commander of the Order of the Star of India|KSI]]
| KSIh = [[Honorary Knight Commander of the Order of the Star of India|KSI]]
| KSIp = [[Knight Companion of the Order of the Star of India|KSI]]
| KSIph = [[Honorary Knight Companion of the Order of the Star of India|KSI]]
| KStJ = [[Knight of Justice of the Order of St John|KStJ]]
| KStJg = [[Knight of Grace of the Order of St John|KStJ]]
| KT = [[Knight Companion of the Order of the Thistle|KT]]
| KTh = [[Honorary Knight Companion of the Order of the Thistle|KT]]
| Kt = [[Knight Bachelor|Kt]]
| LG = [[Lady of the Order of the Garter|LG]]
| LGc = [[Lady Companion of the Order of the Garter|LG]]
| LGe = [[Extra Lady of the Order of the Garter|LG]]
| LRCP = [[Licentiate of the Royal College of Physicians|LRCP]]
| LT = [[Lady Companion of the Order of the Thistle|LT]]
| LVO = [[Lieutenant of the Royal Victorian Order|LVO]]
| MAE = [[Member of the Academia Europaea|MAE]]
| MBE = [[Order of the British Empire|MBE]]
| MBEh = [[Honorary Member of the Order of the British Empire|MBE]]
| MC = [[Military Cross|MC]]
| MC* = [[Military Cross and Bar|MC*]]
| MC** = [[Military Cross and two Bars|MC**]]
| MC1 = [[Military Cross|MC]] & [[Medal bar|Bar]]
| MC2 = [[Military Cross|MC]] & [[Medal bar|Two Bars]]
| MCIfA = [[Member of the Chartered Institute for Archaeologists|MCIfA]]
| MCIOB = [[Member of the Chartered Institute of Building|MCIOB]]
| MCSD = [[Member of the Chartered Society of Designers|MCSD]]
| MCT = [[Member of the Order of the Crown of Tonga|MCT]]
| MEP = [[Member of the European Parliament|MEP]]
| MIEE = [[Member of the Institution of Electrical Engineers|MIEE]]
| MIET = [[Member of the Institution of Engineering and Technology|MIET]]
| MICE = [[Member of the Institution of Civil Engineers|MICE]]
| MIMechE= [[Member of the Institution of Mechanical Engineers|MIMechE]]
| MIMM = [[Member of the Institution of Mining and Metallurgy|MIMM]]
| MINA = [[Member of the Institution of Naval Architects|MINA]]
| MInstCE= [[Member of the Institution of Civil Engineers|MInstCE]]
| MInstME= [[Member of the Institution of Mechanical Engineers|MInstME]]
| MIStructE = [[Member of the Institution of Structural Engineers|MIStructE]]
| MLA = [[Member of the Northern Ireland Assembly|MLA]]
| MLC = [[Member of Legislative Council|MLC]]
| MM = [[Military Medal|MM]]
| MM* = [[Military Medal and Bar|MM*]]
| MM** = [[Military Medal and two Bars|MM**]]
| MM1 = [[Military Medal|MM]] & [[Medal bar|Bar]]
| MM2 = [[Military Medal|MM]] & [[Medal bar|Two Bars]]
| MMM = [[Member of the Order of Military Merit|MMM]]
| MMSA = [[Master of Midwifery of the Society of Apothecaries|MMSA]]
| MP = [[Member of Parliament (United Kingdom)|MP]]
| MPp = [[Member of the National Parliament of Papua New Guinea|MP]]
| MRCP = [[Membership of the Royal Colleges of Physicians of the United Kingdom|MRCP]]
| MRCS = [[Member of the Royal College of Surgeons|MRCS]]
| MRCVS = [[Member of the Royal College of Veterinary Surgeons|MRCVS]]
| MRIA = [[Member of the Royal Irish Academy|MRIA]]
| MRIAh = [[Honorary Member of the Royal Irish Academy|HonMRIA]]
| MRIC = [[Member of the Royal Institute of Chemistry|MRIC]]
| MRPSL = [[Member of the Royal Philatelic Society London|MRPSL]]
| MRSB = [[Member of the Royal Society of Biology|MRSB]]
| MRSL = [[Member of the Royal Society of Literature|MRSL]]
| MRTPI = [[Member of the Royal Town Planning Institute|MRTPI]]
| MS = [[Member of the Senedd|MS]]
| MSIA = [[Member of the Society of Industrial Artists|MSIA]]
| MSM = [[Meritorious Service Medal (United Kingdom)|MSM]]
| MSP = [[Member of the Scottish Parliament|MSP]]
| MStJ = [[Member of the Order of St John|MStJ]] <noinclude>In use since 2008</noinclude>
| MVO = [[Member of the Royal Victorian Order|MVO]]
| MVOh = [[Honorary Member of the Royal Victorian Order|MVO]]
| OBE = [[Officer of the Order of the British Empire|OBE]]
| OBEh = [[Honorary Officer of the Order of the British Empire|OBE]]
| OBI = [[Member of the Order of British India|OBI]]
| OBIb = [[Bahadur of the Order of British India|OBI]]
| OBIs = [[Sardar Bahadur of the Order of British India|OBI]]
| OC = [[Officer of the Order of Canada|OC]]
| OCC = [[Member of The Order of the Caribbean Community|OCC]]
| OE = [[Member of the Order of Excellence of Guyana|OE]]
| OF = [[Officer of the Order of Fiji|OF]]
| OGS = [[Oratory of the Good Shepherd|OGS]]
| OJ = [[Member of the Order of Jamaica|OJ]]
| OM = [[Member of the Order of Merit|OM]]
| OMM = [[Officer of the Order of Military Merit|OMM]]
| ONZ = [[Honorary Member of the Order of New Zealand|ONZ]]
| ONZs = [[Member of the Order of New Zealand|ONZ]]
| OStJ = [[Officer of the Order of St John|OStJ]]
| PC = [[Privy Council of the United Kingdom|PC]]
| PCc = [[Queen's Privy Council for Canada|PC (Can)]]
| PCe = [[Privy Counsellor (England)|PC]]
| PCgb = [[Privy Counsellor (GB)|PC]]
| PCi = [[Privy Council of Ireland|PC (Ire)]]
| PCni = [[Privy Counsellor (Northern Ireland)|PC (NI)]]
| PCs = [[Privy Counsellor (Scotland)|PC]]
| PPRSA = [[Past President of the Royal Scottish Academy|PPRSA]]
| PPRWA = [[Royal West of England Academy|PPRWA]]
| PRA = [[President of the Royal Academy|PRA]]
| PRHA = [[Royal Hibernian Academy|PRHA]]
| P.R.H.A. = [[Royal Hibernian Academy|P.R.H.A.]]
| PRS = [[President of the Royal Society|PRS]]
| PRSA = [[President of the Royal Scottish Academy|PRSA]]
| PRWA = [[Royal West of England Academy|PRWA]]
| QC = [[Queen's Counsel|QC]]
| QC(Hon)= [[Queen's Counsel Honoris Causa|QC (Hon)]]
| QC (Hon.) = [[Queen's Counsel Honoris Causa|QC (Hon.)]]
| QFSM = [[Queen's Fire Service Medal|QFSM]]
| QGM = [[Queen's Gallantry Medal|QGM]]
| QHC = [[Honorary Chaplain to The Queen|QHC]]
| QHDS = [[Honorary Dental Surgeon to The Queen|QHDS]]
| QHNS = [[Honorary Nursing Sister to The Queen|QHNS]]
| QHP = [[Honorary Physician to The Queen|QHP]]
| QHS = [[Honorary Surgeon to The Queen|QHS]]
| QPM = [[Queen's Police Medal|QPM]]
| QS = [[Serjeant-at-law#King's or Queen's Serjeants|QS]]
| QSO = [[Companion of the Queen's Service Order|QSO]]
| QSOe = [[Extra Companion of the Queen's Service Order|QSO]]
| QSOh = [[Honorary Companion of the Queen's Service Order|QSO]]
| QVRM = [[Queen's Volunteer Reserves Medal|QVRM]]
| RA = [[Royal Academician|RA]]
| RAF = [[Serving Officer of the Royal Air Force|RAF]]
| RAFr = [[Retired Officer of the Royal Air Force|RAF (rtd.)]]
| RBA = [[Royal Society of British Artists|RBA]]
| RBSA = [[Royal Birmingham Society of Artists|RBSA]]
| RD = [[Decoration for Officers of the Royal Naval Reserve|RD]]
| RDI = [[Royal Designer for Industry|RDI]]
| RDIh = [[Honorary Royal Designer for Industry|HonRDI]]
| RE = [[Royal Society of Painter-Etchers and Engravers|RE]]
| RFA = [[Royal Field Artillery|RFA]]
| RFAx = [[Royal Fleet Auxiliary|RFA]]
| RHA = [[Royal Hibernian Academy|RHA]]
| RI = [[Royal Institute of Painters in Water Colours|RI]]
| RIAS = [[Royal Incorporation of Architects in Scotland|RIAS]]
| RIBA = [[Royal Institute of British Architects|RIBA]]
| RIN = [[Royal Indian Navy|RIN]]
| RM = [[Serving Officer of the Royal Marines|RM]]
| RMS = [[Royal Miniature Society|RMS]]
| RN = [[Serving Officer of the Royal Navy|RN]]
| RNr = [[Retired Officer of the Royal Navy|RN]]
| RNR = [[Royal Naval Reserve|RNR]]
| RNVR = [[Royal Naval Volunteer Reserve|RNVR]]
| ROI = [[Royal Institute of Oil Painters|ROI]]
| RRC = [[Royal Red Cross|RRC]]
| RRC* = [[Royal Red Cross and Bar|RRC*]]
| RRC1 = [[Royal Red Cross|RRC]] & [[Medal bar|Bar]]
| RSA = [[Royal Scottish Academician|RSA]]
| RVM = [[Royal Victorian Medal|RVM]]
| RWA = [[Royal West of England Academy|RWA]]
| RWS = [[Royal Watercolour Society|RWS]]
| SBStJ = [[Serving Brother of the Order of St John|SBStJ]]
| SJ = [[Society of Jesus|SJ]]
| SSC = [[Society of the Holy Cross|SSC]]
| SSI = [[Star of the Solomon Islands|SSI]]
| SSStJ = [[Serving Sister of the Order of St John|SSStJ]]
| Sub-ChStJ = [[Sub-Chaplain of the Order of St John|Sub-ChStJ]]
| SGM = [[Sea Gallantry Medal|SGM]]
| SL = [[Serjeant-at-law|SL]]
| TD = [[Territorial Decoration|TD]]
| UD = [[Ulster Defence Regiment Decoration|UD]]
| VA = [[Lady of the Royal Order of Victoria and Albert|VA]]
| VC = [[Victoria Cross|VC]]
| VC1 = [[Victoria Cross|VC]] & [[Medal bar|Bar]]
| VD = [[Volunteer Officers' Decoration|VD]]
| VDc = [[Colonial Auxiliary Forces Officers' Decoration|VD]]
| VMH = [[Victoria Medal of Honour|VMH]]
| VPRWA = [[Royal West of England Academy|VPRWA]]
| VR = [[Volunteer Reserves Service Medal#.22VR.22 post-nominal letters|VR]]
| VRD = [[Decoration for Officers of the Royal Naval Volunteer Reserve|VRD]]
| WS = [[Writer to the Signet|WS]]
<!-- Portuguese letters after the name -->
| ComIH = [[Order of Prince Henry|ComIH]]
| Com.I.H. = [[Order of Prince Henry|Com.I.H.]]
| CvIH = [[Order of Prince Henry|CvIH]]
| Cv.I.H. = [[Order of Prince Henry|Cv.I.H.]]
| DmIH = [[Order of Prince Henry|DmIH]]
| Dm.I.H. = [[Order of Prince Henry|Dm.I.H.]]
| GCIH = [[Order of Prince Henry|GCIH]]
| G.C.I.H. = [[Order of Prince Henry|G.C.I.H.]]
| GColIH = [[Order of Prince Henry|GColIH]]
| G.Col.I.H. = [[Order of Prince Henry|G.Col.I.H.]]
| GOIH = [[Order of Prince Henry|GOIH]]
| G.O.I.H. = [[Order of Prince Henry|G.O.I.H.]]
| MedOIH = [[Order of Prince Henry|MedOIH]]
| Med.O.I.H. = [[Order of Prince Henry|Med.O.I.H.]]
| MedPIH = [[Order of Prince Henry|MedPIH]]
| Med.P.I.H. = [[Order of Prince Henry|Med.P.I.H.]]
| OIH = [[Order of Prince Henry|OIH]]
| O.I.H. = [[Order of Prince Henry|O.I.H.]]
}}<noinclude>See [[Template:Post-nominals/doc]] for more information about this template.
Order of Precedence for post-nominals is in [[List of post-nominal letters (United Kingdom)]]
{{documentation}}
</noinclude>
9faff8f962327fbf6be9ceb3490a847ab03ad5f7
Template:Social democracy sidebar
10
838
1858
2023-06-20T13:23:09Z
wikipedia>Courcelles
0
Changed protection settings for "[[Template:Social democracy sidebar]]": Not nearly enough transclusions for TE. RFPP request. ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{Sidebar with collapsible lists
| name = Social democracy sidebar
| pretitle = Part of [[:Category:Social democracy|a series]] on
| title = [[Social democracy]]
| imagestyle = padding:0.65em;
| image = [[File:Red rose 02.svg|75px|link=Rose (symbolism)#Socialism and social democracy]]
| listtitlestyle = border-top:1px solid #B60202;background:transparent;padding-left:0.3em;text-align:center;color:black;
| listclass = hlist
| liststyle = margin-top:0;padding:0 0.6em 0.6em;
| expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}}
| list1name = history
| list1title = [[History of social democracy|History]]
| list1 =
* [[Age of Enlightenment]]
* [[Frankfurt Declaration]]
* [[French Revolution]]
* [[Godesberg Program]]
* [[Humanism]]
* [[Internationalist–defencist schism]]
* [[Keynesian economics|Keynesianism]]
* [[Labour movement|Labor movement]]
* [[Marxism]]
** [[Orthodox Marxism|Orthodox]]
** [[Revisionism (Marxism)|Revisionist]]
* [[Nordic model]]
* [[Social democracy#Second International era and reform or revolution dispute (1889–1914)|Reformist–revolutionary dispute]]
* [[History of socialism|Socialism]]
* [[Revolutions of 1848]]
* [[Utopian socialism]]
* [[Welfare capitalism]]
| list2name = concepts
| list2title = Concepts
| list2 =
* [[Civil liberties]]
* [[Democracy]]
** [[Economic democracy|Economic]]
** [[Industrial democracy|Industrial]]
** [[Representative democracy|Representative]]
* [[Dirigisme]]
* [[Environmentalism]]
* [[Environmental protection]]
* [[Fair trade]]
* [[Gradualism]]
* [[Internationalism (politics)#Socialism|Internationalism]]
* [[Land reform]]
* [[Labor rights]]
* [[Left-wing nationalism]]
* [[Mixed economy]]
* [[Nationalization|Nationali{{#ifeq:{{{sp}}}|uk|s|z}}ation]]
* [[Negative and positive rights]]
* [[Progressivism]]
* [[Reformism]]
** [[Reformist Left|Left]]
** [[Reformism|Socialism]]
* [[Revolutionary socialism]]
* [[Secularism]]
* [[Social corporatism]]
* [[Social justice]]
* [[Social market economy]]
* [[Socialist state]]
** [[State capitalism|Capitalism]]
** [[State socialism|Socialism]]
* [[Trade union]]
* [[Tripartism]]
* [[Welfare]]
* [[Welfare state]]
| list3name = variants
| list3title = Variants
| list3 =
* [[Democratic socialism]]
* [[Ethical socialism]]
* [[Eduard Bernstein#Opinions|Evolutionary socialism]]
* [[Liberal socialism]]
* [[Socialism of the 21st century]]
* [[Third Way]]
| list4name = people
| list4title = [[List of social democrats|People]]
| list4 = <!-- Alphabetical by surname. -->
* [[B. R. Ambedkar|Ambedkar]]
* [[Salvador Allende|Allende]]
* [[Jacinda Ardern|Ardern]]
* [[Clement Attlee|Attlee]]
* [[Obafemi Awolowo|Awolowo]]
* [[José Batlle y Ordóñez|Batlle y Ordóñez]]
* [[August Bebel|Bebel]]
* [[David Ben-Gurion|Ben-Gurion]]
* [[Eduard Bernstein|Bernstein]]
* [[Rómulo Betancourt|Betancourt]]
* [[Zulfikar Ali Bhutto|Bhutto]]
* [[Tony Blair|Blair]]
* [[Louis Blanc|Blanc]]
* [[Willy Brandt|Brandt]]
* [[Hjalmar Branting|Branting]]
* [[Gordon Brown|Brown]]
* [[James Callaghan|Callaghan]]
* [[Lázaro Cárdenas|Cárdenas]]
* [[Helen Clark|Clark]]
* [[Bettino Craxi|Craxi]]
* [[Anthony Crosland|Crosland]]
* [[Jeremy Corbyn|Corbyn]]
* [[John Curtin|Curtin]]
* [[Ignacy Daszyński|Daszyński]]
* [[Eugene V. Debs|Debs]]
* [[Tommy Douglas|Douglas]]
* [[Willem Drees|Drees]]
* [[Friedrich Ebert|Ebert]]
* [[Bülent Ecevit|Ecevit]]
* [[Friedrich Engels|Engels]]
* [[Peter Fraser|Fraser]]
* [[Hugh Gaitskell|Gaitskell]]
* [[Indira Gandhi|Gandhi]]
* [[Felipe González|González]]
* [[João Goulart|Goulart]]
* [[Keir Hardie|Hardie]]
* [[Rudolf Hilferding|Hilferding]]
* [[Erdal İnönü|İnönü]]
* [[Jean Jaurès|Jaurès]]
* [[Roy Jenkins|Jenkins]]
* [[Kamal Jumblatt|Jumblatt]]
* [[Carsun Chang|Junmai]]
* [[Tetsu Katayama|Katayama]]
* [[Karl Kautsky|Kautsky]]
* [[Alexander Kerensky|Kerensky]]
* [[Anna Kéthly|Kéthly]]
* [[Norman Kirk|Kirk]]
* [[Ricardo Lagos|Lagos]]
* [[Ferdinand Lassalle|Lassalle]]
* [[Jack Layton|Layton]]
* [[Vladimir Lenin|Lenin]]
* [[René Lévesque|Lévesque]]
* [[Wilhelm Liebknecht|Liebknecht (father)]]
* [[Karl Liebknecht|Liebknecht (son)]]
* [[Rosa Luxemburg|Luxemburg]]
* [[Ramsay MacDonald|MacDonald]]
* [[Nelson Mandela|Mandela]]
* [[Karl Marx|Marx]]
* [[Alva Myrdal|Myrdal]]
* [[Jawaharlal Nehru|Nehru]]
* [[Olof Palme|Palme]]
* [[Georgi Plekhanov|Plekhanov]]
* [[Romano Prodi|Prodi]]
* [[Bertrand Russell|Russell]]
* [[Bernie Sanders|Sanders]]
* [[Michael Joseph Savage|Savage]]
* [[Thorvald Stauning|Stauning]]
* [[Norman Thomas|Thomas]]
* [[Joop den Uyl|Den Uyl]]
* [[Sidney Webb, 1st Baron Passfield|Webb]]
* [[Gough Whitlam|Whitlam]]
* [[Harold Wilson|Wilson]]
* [[Noe Zhordania|Zhordania]]
| list5name = orgs
| list5title = [[List of social democratic parties|Organi{{#ifeq:{{{sp}}}|uk|s|z}}ations]]
| list5 =
* [[International Trade Union Confederation]]
* [[International Union of Socialist Youth]]
* [[Party of European Socialists]]
* [[Progressive Alliance]]
* [[Socialist International]]
* [[Young European Socialists]]
| list6name = by region
| list6title = By region
| list6 =
* [[History of the Social Democratic Party of Austria|Austria]]
* [[History of the Social Democratic Party of Germany|Germany]]
* [[Social democracy in the United States|United States]]
| list7name = related
| list7title = Related
| list7 =
* [[Communism]]
* "[[The Internationale]]"
* [[Socialism]]
* [[Types of socialism]]
| navbarstyle = border-top:1px solid #B60202;
| belowstyle = font-weight:normal; border-top:1px solid #B60202; border-bottom:none;
| belowclass = plainlist
| below =
* '''{{portal-inline|Economics|size=tiny}}'''
* '''{{portal-inline|Politics|size=tiny}}'''
* '''{{portal-inline|Socialism|size=tiny}}'''
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
3b9093241143a86276aa4d5cef6bf1192d07fb7c
Module:Coordinates
828
589
1326
2023-06-21T17:33:40Z
wikipedia>Ladsgroup
0
Switch from proto-relative urls (//foo.bar.com) to HTTPS (https://foo.bar.com). Since we are only serving https in Wikimedia now, it always outputs https links. At the same time, proto-relative add two duplicate rows to externallinks table meaning this is adding tens of millions of extra and useless rows bloating the table
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
6162d7e98fcf6faab5809049e0a48bb3e67d88e3
Module:Find sources/links
828
1032
2262
2023-06-21T18:45:56Z
wikipedia>Izno
0
[[phab:T337149#8953569]]
Scribunto
text/plain
-- This is a list of links used by [[Module:Find sources]].
return {
["archive.org"] = {
url = 'https://archive.org/search.php?query=$1%20AND%20mediatype:texts',
display = 'Archive.org',
description = "The [[Internet Archive]], a digital library of public websites.",
},
["bing"] = {
url = 'https://www.bing.com/search?q=$1',
display = 'Bing',
description = "[[Bing (search engine)|Bing]], Microsoft's flagship search engine.",
},
["britannica"] = {
url = 'https://www.britannica.com/search?nop=1a15&cse=on&query=$1&cx=ccef96e8363da4b5f&tbm=3&fxx=3',
display = 'Encyclopedia Britannica',
description = "[[Encyclopedia Britannica]]",
},
["british library"] = {
url = 'https://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=local_tab&indx=1&dum=true&srt=rank&vid=BLVU1&frbg=&tb=t&vl%28freeText0%29=$1',
display = 'British Library',
description = "National library of the United Kingdom",
},
["ccsearch"] = {
url = "https://search.creativecommons.org/search?q=$1&license_type=commercial,modification",
display = "CC Search",
description = "CC Search: The official search engine of [[Creative Commons]]",
},
["cochrane"] = {
url = "https://www.cochranelibrary.com/en/advanced-search?searchBy=-1&isWordVariations=&resultPerPage=25&searchType=advanced&selectedType=review&displayText=&orderBy=relevancy&p_p_id=scolarissearchresultsportlet_WAR_scolarissearchresults&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&searchText=$1",
display = "Cochrane",
description = "[[Cochrane Library]]: Leading publisher of systematic reviews.",
},
["doaj"] = {
url = "https://www.doaj.org/search/articles?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A$1%2C%22default_operator%22%3A%22AND%22%7D%7D%7D",
display = "DOAJ",
description = "[[Directory of Open Access Journals|DOAJ]]: Directory of Open Access Journals",
},
["duckduckgo"] = {
url = 'https://duckduckgo.com/?q=$1',
display = 'DuckDuckGo',
description = "[[DuckDuckGo]], a search engine that emphasizes protecting searchers' privacy and avoiding the \"filter bubble\" of personalized search results.",
},
["eowb"] = {
url = 'https://search.lib.umich.edu/everything?query=$1',
display = 'Encyclopedia of World Biography',
tooltip = 'Encyclopedia of World Biography, by Gale Research; online results provided by University of Michigan.',
},
["free news sources"] = {
url = 'https://en.wikipedia.org/wiki/Wikipedia:Free_English_newspaper_sources',
display = 'free news sources',
},
["gale"] = {
url = "https://go.gale.com/ps/basicSearch.do?inputFieldNames%5B0%5D=OQE&nwf=y&searchType=BasicSearchForm&userGroupName=anon%7Ee3e4f4eb&prodId=AONE&spellCheck=true&method=doSearch&dblist=&stw.option=&ebook=&singleLimiterFieldValues%5BAC%5D=y&_singleLimiterFieldValues%5BAC%5D=on&_singleLimiterFieldValues%5BRE%5D=on&standAloneLimiters=LI&_singleLimiterFieldValues%5BLI%5D=on&inputFieldValues%5B0%5D=$1",
display = "Gale Academic OneFile",
description = " Gale Academic OneFile: Academic publisher portal from [[Gale (publisher)|Gale]]. Access via [[Wikipedia:The Wikipedia Library|Wikipedia Library]]",
},
["gin"] = {
url = "https://guidelines.ebmportal.com/guidelines-international-network?type=search&search=$1",
display = "GIN guidelines",
tooltip = "Content from the library and the registry of guidelines in development provided by the Guidelines International Network",
},
["globe and mail"] = {
url = 'https://www.theglobeandmail.com/search/?q=$1',
display = "''The Globe and Mail''",
description = "The website of ''[[The Globe and Mail]]'', a [[newspaper of record]] for Canada.",
},
["google"] = {
url = 'https://www.google.com/search?as_eq=wikipedia&q=$1',
display = 'Google',
description = "[[Google]], the flagship search engine from Google Inc.",
},
["google books"] = {
url = 'https://www.google.com/search?tbs=bks:1&q=$1+-wikipedia',
display = 'Google Books',
description = "[[Google Books]], Google's search engine for books."
},
["google free images"] = {
url = 'https://www.google.com/search?safe=off&tbs=sur:fmc&tbm=isch&q=$1+-site:wikipedia.org+-site:wikimedia.org',
display = 'Free Google Images',
description = "[[Google Images]], Google's search engine for images. Only images compatible with Wikipedia's licensing are included.",
},
["google news"] = {
url = 'https://www.google.com/search?tbm=nws&q=$1+-wikipedia&tbs=ar:1',
display = 'Google News',
description = "[[Google News]], Google's search engine for news sites.",
notes = "In the past this link searched news archives, but this functionality has been removed by Google. Currently, only recent news articles are searched.",
},
["google newspapers"] = {
url = 'https://www.google.com/search?&q=$1&tbs=bkt:s&tbm=bks',
display = 'Google Newspapers',
description = "Google Newspapers, a search of Google's digital archive of print newspapers.",
},
["google scholar"] = {
url = 'https://scholar.google.com/scholar?q=$1',
display = 'Google Scholar',
description = "[[Google Scholar]], Google's search engine for academic papers and other scholarly research.",
},
["haaretz"] = {
url = 'https://www.haaretz.com/search-results?q=$1',
display = "''Haaretz''",
description = "The website of ''[[Haaretz]]'', a [[newspaper of record]] for Israel.",
},
["internet archive scholar"] = {
url = 'https://scholar.archive.org/search?&sort_order=time_desc&q=$1',
display = 'IA scholar',
description = "The [[Internet Archive Scholar]], a digital library of open access academic journals.",
tooltip = "The [[Internet Archive Scholar]], a digital library of open access academic journals.",
},
["infoplease"] = {
url = 'https://www.infoplease.com/search/$1',
display = 'Infoplease',
tooltip = 'Infoplease encyclopedia, dictionary, and almanac',
},
["jstor"] = {
url = 'https://www.jstor.org/action/doBasicSearch?Query=$1&acc=on&wc=on',
display = 'JSTOR',
description = "[[JSTOR]], an online library containing digitised versions of academic journals. Requires a subscription."
},
["library of congress"] = {
url = 'https://www.loc.gov/search/?in=&q=$1',
display = "Library of Congress",
description = "U.S. [[Library of Congress]]",
},
["mail and guardian"] = {
url = 'https://mg.co.za/?s=$1',
display = "''Mail & Guardian''",
description = "The website of the ''[[Mail & Guardian]]'', a [[newspaper of record]] for South Africa.",
},
["medrs"] = {
url = "https://en.wikipedia.org/wiki/Wikipedia:Identifying_reliable_sources_(medicine)",
display = "find medical sources",
tooltip = "Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content at Wikipedia at WP:MEDRS.",
description = "[[WP:MEDRS|MEDRS]]: Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content.",
},
["muse"] = {
url = 'https://muse.jhu.edu/search?action=search&min=1&max=10&t=header&query=content:$1:and',
display = 'MUSE',
tooltip = 'Project MUSE: humanities and social science content from academic journals and societies.',
},
["new york times"] = {
url = 'https://www.nytimes.com/search/$1',
display = "''New York Times''",
description = "The website of ''[[The New York Times]]'', a [[newspaper of record]] for the United States.",
},
["new zealand herald"] = {
url = 'https://www.nzherald.co.nz/search/$1/',
display = "''The New Zealand Herald''",
description = "The website of ''[[The New Zealand Herald]]'', a [[newspaper of record]] for New Zealand.",
},
["openlibrary"] = {
url = 'https://openlibrary.org/search?q=$1&mode=everything',
display = 'OpenLibrary',
separator = '+',
},
["openmd"] = {
url = "https://openmd.com/search?q=$1",
display = "OpenMD",
description = "OpenMD: Search engine for medical literature.",
},
["pubmed"] = {
url = "https://pubmed.ncbi.nlm.nih.gov/?term=$1&filter=pubt.meta-analysis&filter=pubt.review&filter=pubt.systematicreview&filter=datesearch.y_10",
display = "PubMed",
description = "[[PubMed]]: Search engine for biomedical literature from [[United States National Library of Medicine|NLM]].",
},
["sciencedirect"] = {
url = "https://www.sciencedirect.com/search?qs=$1&articleTypes=REV%2CEN%2CCH%2CSSU%2CPGL&lastSelectedFacet=articleTypes",
display = "ScienceDirect",
description = "ScienceDirect: [[Elsevier]]'s scientific, technical, and medical research portal.",
},
["south china morning post"] = {
url = 'https://www.scmp.com/search/$1',
display = "''South China Morning Post''",
description = "The website of the ''[[South China Morning Post]]'', a [[newspaper of record]] for Hong Kong.",
},
["springer"] = {
url = "https://link.springer.com/search?query=$1",
display = "Springer",
description = "Springer Nature's portal for journals, books, and reference works.",
},
["statpearls"] = {
url = "https://www.ncbi.nlm.nih.gov/books/NBK430685/?term=$1",
display = "StatPearls",
description = "StatPearls: the largest provider of healthcare continuing education worldwide, providing peer-reviewed practice-guiding knowledge authored by clinical experts.",
},
["straits times"] = {
url = 'https://www.straitstimes.com/search?searchkey=$1',
display = "''The Straits Times''",
description = "The website of ''[[The Straits Times]]'', a [[newspaper of record]] for Singapore.",
},
["sydney morning herald"] = {
url = 'https://www.smh.com.au/search?text=$1',
display = "''The Sydney Morning Herald''",
description = "The website of ''[[The Sydney Morning Herald]]'', a [[newspaper of record]] for Australia.",
},
["the age"] = {
url = 'https://www.theage.com.au/search?text=$1',
display = "''The Age''",
description = "The website of ''[[The Age]]'', a [[newspaper of record]] for Australia.",
},
["the guardian"] = {
url = 'https://www.google.co.uk/search?as_sitesearch=www.theguardian.com&q=$1',
display = 'The Guardian',
description = "''[[The Guardian]]'' newspaper, U.K.",
},
["the hindu"] = {
url = 'https://www.thehindu.com/search/?q=$1',
display = "''The Hindu''",
description = "The website of ''[[The Hindu]]'', a [[newspaper of record]] for India.",
},
["the times"] = {
url = 'https://www.thetimes.co.uk/search?source=search-page&q=$1',
display = "''The Times''",
description = "The website of ''[[The Times]]'', a [[newspaper of record]] for the United Kingdom.",
},
["times of india"] = {
url = 'https://timesofindia.indiatimes.com/topic/$1',
display = "''The Times of India''",
description = "The website of ''[[The Times of India]]'', a [[newspaper of record]] for India.",
},
["trip"] = {
url = "https://www.tripdatabase.com/Searchresult?search_type=standard&criteria=$1&from_date=2012",
display = "Trip Database",
description = "Trip Database: Search engine for clinical research evidence.",
},
["uptodate"] = {
url = "https://www.uptodate.com/contents/search?sp=0&searchType=PLAIN_TEXT&source=USER_INPUT&searchControl=TOP_PULLDOWN&searchOffset=1&autoComplete=false&language=en&max=10&search=$1",
display = "UpToDate",
tooltip = "Evidence-based resource for clinical decision support written for and by physicians",
},
["vgrl"] = {
url = 'https://en.wikipedia.org/wiki/Special:Search?search=$1&prefix=Wikipedia%3AWikiProject+Video+games%2FReference+library&fulltext=Search+reference+library&fulltext=Search',
display = 'VGRL',
description = "[[Wikipedia:WikiProject Video games/Reference library]] internal archive search.",
},
["vgrs"] = {
url = 'https://www.google.com/cse?cx=009782238053898643791%3A8naerdbd-oy&q=$1',
display = 'VGRS',
description = "[http://www.google.com/cse/home?cx=003516479746865699832:leawcwkqifq Google RS], a [[custom Google search engine]] that limits the search to sites listed in [[Wikipedia:WikiProject Video games/Sources]].",
},
["vgtalk"] = {
url = 'https://en.wikipedia.org/w/index.php?search=$1+prefix%3AWikipedia+talk%3AWikiProject+Video+games&title=Special:Search&profile=default&fulltext=1',
display = 'WPVG Talk',
description = "A search in the WikiProject Video games talk page and its archives under [[Wikipedia talk:WikiProject Video games]].",
},
["wikipedia library"] = {
url = "https://wikipedialibrary.wmflabs.org/search/?q=$1",
display = "TWL",
tooltip = "The Wikipedia Library",
description = "Search results from dozens of services provided via EBSCOhost to Wikipedians via [[Wikipedia:The Wikipedia Library]].",
},
["wikipedia reference search"] = {
url = 'https://www.google.com/custom?hl=en&cx=007734830908295939403%3Agalkqgoksq0&cof=FORID%3A13%3BAH%3Aleft%3BCX%3AWikipedia%2520Reference%2520Search&q=$1',
display = 'Wikipedia Reference Search',
description = "[[WP:WRS|Wikipedia Reference Search]], a Google search that only searches sites vetted by Wikipedians.",
},
["wiley"] = {
url = "https://onlinelibrary.wiley.com/action/doSearch?AllField=$1",
display = "Wiley",
description = "Wiley Online Library: [[Wiley (publisher)|Wiley's]] portal for academic articles, books, and collections.",
},
}
4817c288e68e87936971b4b7bb22926dc62c114c
Template:Authority control/related
10
1079
2356
2023-06-23T12:34:22Z
wikipedia>MSGJ
0
tidy
wikitext
text/x-wiki
{{Sidebar
| templatestyles = Template:Lua sidebar/styles.css
| title = [[Wikipedia:Authority control]]
| content2 = '''[[Template:Authority control|Template]]''' {{flatlist}}
* [[Template talk:Authority control|talk]]
* [[Template:Authority control/sandbox|sandbox]]
* [[Template:Authority control/staging|staging]]
* [[Template:Authority control/testcases|testcases]]
* [[Template:Authority control/doc|doc]]
* [[Special:PrefixIndex/Template:Authority control/|subpages]]
{{endflatlist}}
| content3 = '''[[Module:Authority control|Module]]''' {{flatlist}}
* [[Module:Authority control/sandbox|sandbox]]
* [[Module talk:Authority control/testcases|testcases]]
* [[Module:Authority control/doc|doc]]
* [[Special:PrefixIndex/Module:Authority control/|subpages]]
{{endflatlist}}
| content4 = '''[[Module:Authority control/config|Config]]''' {{flatlist}}
* [[Module:Authority control/config/sandbox|sandbox]]
* [[Module:Authority control/config/staging|staging]]
{{endflatlist}}
| content5 = '''[[Module:Authority control/auxiliary|Auxiliary]]''' {{flatlist}}
* [[Module:Authority control/auxiliary/sandbox|sandbox]]
{{endflatlist}}
| content6 = '''[[Module:Authority control/documentation|Doc module]]''' {{flatlist}}
* [[Module:Authority control/documentation/sandbox|sandbox]]
{{endflatlist}}
| content7 = '''[[:Category:Wikipedia authority control|Category]]''' {{flatlist}}
* [[:Category:Pages with authority control identifiers needing attention|attention]]
* [[Wikipedia:Authority control/dashboard|dashboard]]
{{endflatlist}}
}}
9c16571badbcf205b4c1f96317d8abab39779051
Template:Navbox suite
10
1292
2627
2023-06-23T20:58:18Z
w>Andrybak
0
categorization
wikitext
text/x-wiki
{{#invoke:sidebar|sidebar
| width = auto
| bodystyle = border-spacing:0;background:#f7f7f7;padding:2px;
| title = Navbox suite
| titlestyle = padding: 0.2em 0.8em; font-size: 145%; line-height: 1.2em; background-color: #ccf;
| contentclass = plainlist
| contentstyle = padding:0.25em;background:#fdfdfd;
| content1 =
*{{tl|Navbox}}
*{{tl|Navbox with collapsible groups}}
*{{tl|Navbox with columns}}
*{{tl|Navboxes}}
| navbarstyle = background:#fdfdfd;padding:0 5px
}}<!--
NOTE: A template MUST support all of the parameters marked with a cross in Template:Navbox/doc in order to be Navbox suite compliant.
In particular, the name, state, border, and navbar parameters are especially important.
--><noinclude>
{{Documentation|content=
Helper template for linking between main navbox templates in their documentation.
[[Category:Wikipedia-internal sidebar templates]]
[[Category:Navbox meta-templates|Δ]]<!-- Δ for documentation ([[WP:SORTKEY]]) -->
[[Category:Documentation see also templates]]
}}
</noinclude>
1c4315eaad3857aa3fcc7a7bb9d24c989e20e19f
Module:Format TemplateData
828
625
1410
2023-06-26T23:07:36Z
Pppery
6
Remove [[Module:JSONutil]]
Scribunto
text/plain
local TemplateData = { suite = "TemplateData",
serial = "2022-03-10",
item = 46997995 }
--[==[
improve template:TemplateData
]==]
local Failsafe = TemplateData
local Config = {
-- multiple option names mapped into unique internal fields
basicCnf = { catProblem = "strange",
classMultiColumns = "selMultClm",
classNoNumTOC = "suppressTOCnum",
classTable = "classTable",
cssParWrap = "cssTabWrap",
cssParams = "cssTable",
docpageCreate = "suffix",
docpageDetect = "subpage",
helpBoolean = "support4boolean",
helpContent = "support4content",
helpDate = "support4date",
helpFile = "support4wiki-file-name",
helpFormat = "supportFormat",
helpLine = "support4line",
helpNumber = "support4number",
helpPage = "support4wiki-page-name",
helpString = "support4string",
helpTemplate = "support4wiki-template-name",
helpURL = "support4url",
helpUser = "support4wiki-user-name",
msgDescMiss = "solo",
tStylesTOCnum = "stylesTOCnum",
tStylesMultiColumns = "stylesMultClm" },
classTable = { "wikitable" }, -- classes for params table
debugmultilang = "C0C0C0",
loudly = false, -- show exported element, etc.
solo = false, -- complaint on missing description
strange = false, -- title of maintenance category
cssTable = false, -- styles for params table
cssTabWrap = false, -- styles for params table wrapper
debug = false,
subpage = false, -- pattern to identify subpage
suffix = false, -- subpage creation scheme
suppressTOCnum = false, -- class for TOC number suppression
jsonDebug = "json-code-lint" -- class for jsonDebug tool
}
local Data = {
div = false, -- <div class="mw-templatedata-doc-wrap">
got = false, -- table, initial templatedata object
heirs = false, -- table, params that are inherited
jump = false, -- source position at end of "params"
less = false, -- main description missing
lasting = false, -- old syntax encountered
lazy = false, -- doc mode; do not generate effective <templatedata>
leading = false, -- show TOC
-- low = false, -- 1= mode
order = false, -- parameter sequence
params = false, -- table, exported parameters
scream = false, -- error messages
sibling = false, -- TOC juxtaposed
slang = nil, -- project/user language code
slim = false, -- JSON reduced to plain
source = false, -- JSON input
strip = false, -- <templatedata> evaluation
tag = false, -- table, exported root element
title = false, -- page
tree = false -- table, rewritten templatedata object
}
local Permit = {
builder = { after = "block",
align = "block",
block = "block",
compressed = "block",
dense = "block",
grouped = "inline",
half = "inline",
indent = "block",
inline = "inline",
last = "block",
lead = "block",
newlines = "*",
spaced = "inline" },
colors = { bg = "FFFFFF",
fg = "000000",
tableheadbg = "B3B7FF",
required = "EAF3FF",
suggested = "FFFFFF",
optional = "EAECF0",
deprecated = "FFCBCB" },
params = { aliases = "table",
autovalue = "string",
default = "string table I18N nowiki",
deprecated = "boolean string I18N",
description = "string table I18N",
example = "string table I18N nowiki",
label = "string table I18N",
inherits = "string",
required = "boolean",
style = "string table",
suggested = "boolean",
suggestedvalues = "string table number boolean",
type = "string" },
root = { description = "string table I18N",
format = "string",
maps = "table",
params = "table",
paramOrder = "table",
sets = "table" },
search = "[{,]%%s*(['\"])%s%%1%%s*:%%s*%%{",
types = { boolean = true,
content = true,
date = true,
line = true,
number = true,
string = true,
unknown = true,
url = true,
["wiki-file-name"] = true,
["wiki-page-name"] = true,
["wiki-template-name"] = true,
["wiki-user-name"] = true,
["unbalanced-wikitext"] = true,
["string/line"] = "line",
["string/wiki-page-name"] = "wiki-page-name",
["string/wiki-user-name"] = "wiki-user-name" }
}
local function Fault( alert )
-- Memorize error message
-- Parameter:
-- alert -- string, error message
if Data.scream then
Data.scream = string.format( "%s *** %s", Data.scream, alert )
else
Data.scream = alert
end
end -- Fault()
local function Fetch( ask, allow )
-- Fetch module
-- Parameter:
-- ask -- string, with name
-- "/global"
-- "Multilingual"
-- "Text"
-- "WLink"
-- allow -- true: no error if unavailable
-- Returns table of module
-- error: Module not available
local sign = ask
local r, stem
if sign:sub( 1, 1 ) == "/" then
sign = TemplateData.frame:getTitle() .. sign
else
stem = sign
sign = "Module:" .. stem
end
if TemplateData.extern then
r = TemplateData.extern[ sign ]
else
TemplateData.extern = { }
end
if not r then
local lucky, g = pcall( require, sign )
if type( g ) == "table" then
if stem and type( g[ stem ] ) == "function" then
r = g[ stem ]()
else
r = g
end
TemplateData.extern[ sign ] = r
elseif not allow then
error( string.format( "Fetch(%s) %s", sign, g ), 0 )
end
end
return r
end -- Fetch()
local function Foreign()
-- Guess human language
-- Returns slang, or not
if type( Data.slang ) == "nil" then
local Multilingual = Fetch( "Multilingual", true )
if Multilingual and
type( Multilingual.userLangCode ) == "function" then
Data.slang = Multilingual.userLangCode()
else
Data.slang = mw.language.getContentLanguage():getCode()
:lower()
end
end
if Data.slang and
mw.ustring.codepoint( Data.slang, 1, 1 ) > 122 then
Data.slang = false
end
return Data.slang
end -- Foreign()
local function facet( ask, at )
-- Find physical position of parameter definition in JSON
-- Parameter:
-- ask -- string, parameter name
-- at -- number, physical position within definition
-- Returns number, or nil
local seek = string.format( Permit.search,
ask:gsub( "%%", "%%%%" )
:gsub( "([%-.()+*?^$%[%]])",
"%%%1" ) )
local i, k, r, slice, source
if not Data.jump then
Data.jump = Data.source:find( "params", 2 )
if Data.jump then
Data.jump = Data.jump + 7
else
Data.jump = 1
end
end
i, k = Data.source:find( seek, at + Data.jump )
while i and not r do
source = Data.source:sub( k + 1 )
slice = source:match( "^%s*\"([^\"]+)\"s*:" )
if not slice then
slice = source:match( "^%s*'([^']+)'%s*:" )
end
if ( slice and Permit.params[ slice ] ) or
source:match( "^%s*%}" ) then
r = k
else
i, k = Data.source:find( seek, k )
end
end -- while i
return r
end -- facet()
local function facilities( apply )
-- Retrieve details of suggestedvalues
-- Parameter:
-- apply -- table, with plain or enhanced values
-- .suggestedvalues -- table|string|number, or more
-- Returns
-- 1 -- table, with suggestedvalues
-- 2 -- table, with CSS map, or not
-- 3 -- string, with class, or not
-- 4 -- string, with templatestyles, or not
local elements = apply.suggestedvalues
local s = type( elements )
local r1, r2, r3, r4
if s == "table" then
local values = elements.values
if type( values ) == "table" then
r1 = values
if type( elements.scroll ) == "string" then
r2 = r2 or { }
r2.height = apply.scroll
r2.overflow = "auto"
end
if type( elements.minwidth ) == "string" then
local s = type( elements.maxcolumns )
r2 = r2 or { }
r2["column-width"] = elements.minwidth
if s == "string" or
s == "number" then
s = tostring( elements.maxcolumns )
r2["column-count"] = s
end
if type( Config.selMultClm ) == "string" then
r3 = Config.selMultClm
end
if type( Config.stylesMultClm ) == "string" then
local src = Config.stylesMultClm .. "/styles.css"
r4 = TemplateData.frame
:extensionTag( "templatestyles",
nil,
{ src = src } )
end
end
elseif elements and elements ~= "" then
r1 = elements
end
elseif s == "string" then
s = mw.text.trim( about )
if s ~= "" then
r1 = { }
table.insert( r1,
{ code = s } )
end
elseif s == "number" then
r1 = { }
table.insert( r1,
{ code = tostring( elements ) } )
end
return r1, r2, r3, r4
end -- facilities()
local function factory( adapt )
-- Retrieve localized text from system message
-- Parameter:
-- adapt -- string, message ID after "templatedata-"
-- Returns string, with localized text
local o = mw.message.new( "templatedata-" .. adapt )
if Foreign() then
o:inLanguage( Data.slang )
end
return o:plain()
end -- factory()
local function faculty( adjust )
-- Test template arg for boolean
-- adjust -- string or nil
-- Returns boolean
local s = type( adjust )
local r
if s == "string" then
r = mw.text.trim( adjust )
r = ( r ~= "" and r ~= "0" )
elseif s == "boolean" then
r = adjust
else
r = false
end
return r
end -- faculty()
local function failures()
-- Retrieve error collection and category
-- Returns string
local r
if Data.scream then
local e = mw.html.create( "span" )
:addClass( "error" )
:wikitext( Data.scream )
r = tostring( e )
mw.addWarning( "'''TemplateData'''<br />" .. Data.scream )
if Config.strange then
r = string.format( "%s[[category:%s]]",
r,
Config.strange )
end
else
r = ""
end
return r
end -- failures()
local function fair( adjust )
-- Reduce text to one line of plain text, or noexport wikitext blocks
-- adjust -- string
-- Returns string, with adjusted text
local f = function ( a )
return a:gsub( "%s*\n%s*", " " )
:gsub( "%s%s+", " " )
end
local tags = { { start = "<noexport>",
stop = "</noexport>" },
{ start = "<exportonly>",
stop = "</exportonly>",
l = false }
}
local r = adjust
local i, j, k, s, tag
for m = 1, 2 do
tag = tags[ m ]
if r:find( tag.start, 1, true ) then
s = r
r = ""
i = 1
tag.l = true
j, k = s:find( tag.start, i, true )
while j do
if j > 1 then
r = r .. f( s:sub( i, j - 1 ) )
end
i = k + 1
j, k = s:find( tag.stop, i, true )
if j then
if m == 1 then
r = r .. s:sub( i, j - 1 )
end
i = k + 1
j, k = s:find( tag.start, i, true )
else
Fault( "missing " .. tag.stop )
end
end -- while j
r = r .. s:sub( i )
elseif m == 1 then
r = f( r )
end
end -- for m
if tags[ 2 ].l then
r = r:gsub( "<exportonly>.*</exportonly>", "" )
end
return r
end -- fair()
local function fancy( advance, alert )
-- Present JSON source
-- Parameter:
-- advance -- true, for nice
-- alert -- true, for visible
-- Returns string
local r
if Data.source then
local support = Config.jsonDebug
local css
if advance then
css = { height = "6em",
resize = "vertical" }
r = { [ 1 ] = "syntaxhighlight",
[ 2 ] = Data.source,
lang = "json",
style = table.concat( css, ";" ) }
if alert then
r.class( support )
end
r = TemplateData.frame:callParserFunction( "#tag", r )
else
css = { [ "font-size" ] = "77%",
[ "line-height" ] = "1.35" }
if alert then
css.resize = "vertical"
else
css.display = "none"
end
r = mw.html.create( "pre" )
:addClass( support )
:css( css )
:wikitext( mw.text.encode( Data.source ) )
r = tostring( r )
end
r = "\n".. r
else
r = ""
end
return r
end -- fancy()
local function faraway( alternatives )
-- Retrieve best language version from multilingual text
-- Parameter:
-- alternatives -- table, to be evaluated
-- Returns
-- 1 -- string, with best match
-- 2 -- table of other versions, if any
local n = 0
local variants = { }
local r1, r2
for k, v in pairs( alternatives ) do
if type( v ) == "string" then
v = mw.text.trim( v )
if v ~= "" and type( k ) == "string" then
k = k:lower()
variants[ k ] = v
n = n + 1
end
end
end -- for k, v
if n > 0 then
local Multilingual = Fetch( "Multilingual", true )
if Multilingual and
type( Multilingual.i18n ) == "function" then
local show, slang = Multilingual.i18n( variants )
if show then
r1 = show
variants[ slang ] = nil
r2 = variants
end
end
if not r1 then
Foreign()
for k, v in pairs( variants ) do
if n == 1 then
r1 = v
elseif Data.slang == k then
variants[ k ] = nil
r1 = v
r2 = variants
end
end -- for k, v
end
if r2 and Multilingual then
for k, v in pairs( r2 ) do
if v and not Multilingual.isLang( k, true ) then
Fault( string.format( "%s <code>lang=%s</code>",
"Invalid",
k ) )
end
end -- for k, v
end
end
return r1, r2
end -- faraway()
local function fashioned( about, asked, assign )
-- Create description head
-- Parameter:
-- about -- table, supposed to contain description
-- asked -- true, if mandatory description
-- assign -- <block>, if to be equipped
-- Returns <block>, with head, or nil
local para = assign or mw.html.create( "div" )
local plus, r
if about and about.description then
if type( about.description ) == "string" then
para:wikitext( about.description )
else
para:wikitext( about.description[ 1 ] )
plus = mw.html.create( "ul" )
plus:css( "text-align", "left" )
for k, v in pairs( about.description[ 2 ] ) do
plus:node( mw.html.create( "li" )
:node( mw.html.create( "code" )
:wikitext( k ) )
:node( mw.html.create( "br" ) )
:wikitext( fair( v ) ) )
end -- for k, v
if Config.loudly then
plus = mw.html.create( "div" )
:css( "background-color",
"#" .. Config.debugmultilang )
:node( plus )
else
plus:addClass( "templatedata-maintain" )
:css( "display", "none" )
end
end
elseif Config.solo and asked then
para:addClass( "error" )
:wikitext( Config.solo )
Data.less = true
else
para = false
end
if para then
if plus then
r = mw.html.create( "div" )
:node( para )
:node( plus )
else
r = para
end
end
return r
end -- fashioned()
local function fatten( access )
-- Create table row for sub-headline
-- Parameter:
-- access -- string, with name
-- Returns <tr>
local param = Data.tree.params[ access ]
local sub, sort = access:match( "(=+)%s*(%S.*)$" )
local headline = mw.html.create( string.format( "h%d", #sub ) )
local r = mw.html.create( "tr" )
local td = mw.html.create( "td" )
:attr( "colspan", "5" )
:attr( "data-sort-value", "!" .. sort )
local s
if param.style then
s = type( param.style )
if s == "table" then
td:css( param.style )
elseif s == "string" then
td:cssText( param.style )
end
end
s = fashioned( param, false, headline )
if s then
headline = s
else
headline:wikitext( sort )
end
td:node( headline )
r:node( td )
return r
end -- fatten()
local function fathers()
-- Merge params with inherited values
local n = 0
local p = Data.params
local t = Data.tree.params
local p2, t2
for k, v in pairs( Data.heirs ) do
n = n + 1
end -- for k, v
for i = 1, n do
if Data.heirs then
for k, v in pairs( Data.heirs ) do
if v and not Data.heirs[ v ] then
n = n - 1
t[ k ].inherits = nil
Data.heirs[ k ] = nil
p2 = { }
t2 = { }
if p[ v ] then
for k2, v2 in pairs( p[ v ] ) do
p2[ k2 ] = v2
end -- for k2, v2
if p[ k ] then
for k2, v2 in pairs( p[ k ] ) do
if type( v2 ) ~= "nil" then
p2[ k2 ] = v2
end
end -- for k2, v2
end
p[ k ] = p2
for k2, v2 in pairs( t[ v ] ) do
t2[ k2 ] = v2
end -- for k2, v2
for k2, v2 in pairs( t[ k ] ) do
if type( v2 ) ~= "nil" then
t2[ k2 ] = v2
end
end -- for k2, v2
t[ k ] = t2
else
Fault( "No params[] inherits " .. v )
end
end
end -- for k, v
end
end -- i = 1, n
if n > 0 then
local s
for k, v in pairs( Data.heirs ) do
if v then
if s then
s = string.format( "%s | %s", s, k )
else
s = "Circular inherits: " .. k
end
end
end -- for k, v
Fault( s )
end
end -- fathers()
local function favorize()
-- Local customization issues
local boole = { ["font-size"] = "125%" }
local l, cx = pcall( mw.loadData,
TemplateData.frame:getTitle() .. "/config" )
local scripting, style
TemplateData.ltr = not mw.language.getContentLanguage():isRTL()
if TemplateData.ltr then
scripting = "left"
else
scripting = "right"
end
boole[ "margin-" .. scripting ] = "3em"
Permit.boole = { [false] = { css = boole,
lead = true,
show = "☐" },
[true] = { css = boole,
lead = true,
show = "☑" } }
Permit.css = { }
for k, v in pairs( Permit.colors ) do
if k == "tableheadbg" then
k = "tablehead"
end
if k == "fg" then
style = "color"
else
style = "background-color"
end
Permit.css[ k ] = { }
Permit.css[ k ][ style ] = "#" .. v
end -- for k, v
if type( cx ) == "table" then
local c, s
if type( cx.permit ) == "table" then
if type( cx.permit.boole ) == "table" then
if type( cx.permit.boole[ true ] ) == "table" then
Permit.boole[ false ] = cx.permit.boole[ false ]
end
if type( cx.permit.boole[ true ] ) == "table" then
Permit.boole[ true ] = cx.permit.boole[ true ]
end
end
if type( cx.permit.css ) == "table" then
for k, v in pairs( cx.permit.css ) do
if type( v ) == "table" then
Permit.css[ k ] = v
end
end -- for k, v
end
end
for k, v in pairs( Config.basicCnf ) do
s = type( cx[ k ] )
if s == "string" or s == "table" then
Config[ v ] = cx[ k ]
end
end -- for k, v
end
if type( Config.subpage ) ~= "string" or
type( Config.suffix ) ~= "string" then
local got = mw.message.new( "templatedata-doc-subpage" )
local suffix
if got:isDisabled() then
suffix = "doc"
else
suffix = got:plain()
end
if type( Config.subpage ) ~= "string" then
Config.subpage = string.format( "/%s$", suffix )
end
if type( Config.suffix ) ~= "string" then
Config.suffix = string.format( "%%s/%s", suffix )
end
end
end -- favorize()
local function feasible( all, at, about )
-- Deal with suggestedvalues within parameter
-- Parameter:
-- all -- parameter details
-- .default
-- .type
-- at -- string, with parameter name
-- about -- suggestedvalues -- table,
-- value and possibly description
-- table may have elements:
-- .code -- mandatory
-- .label -- table|string
-- .support -- table|string
-- .icon -- string
-- .class -- table|string
-- .css -- table
-- .style -- string
-- .less -- true: suppress code
-- Returns
-- 1: mw.html object <ul>
-- 2: sequence table with values, or nil
local h = { }
local e, r1, r2, s, v
if #about > 0 then
for i = 1, #about do
e = about[ i ]
s = type( e )
if s == "table" then
if type( e.code ) == "string" then
s = mw.text.trim( e.code )
if s == "" then
e = nil
else
e.code = s
end
else
e = nil
s = string.format( "params.%s.%s[%d] %s",
at,
"suggestedvalues",
i,
"MISSING 'code:'" )
end
elseif s == "string" then
s = mw.text.trim( e )
if s == "" then
e = nil
s = string.format( "params.%s.%s[%d] EMPTY",
at, "suggestedvalues", i )
Fault( s )
else
e = { code = s }
end
elseif s == "number" then
e = { code = tostring( e ) }
else
s = string.format( "params.%s.%s[%d] INVALID",
at, "suggestedvalues", i )
Fault( s )
e = false
end
if e then
v = v or { }
table.insert( v, e )
if h[ e.code ] then
s = string.format( "params.%s.%s REPEATED %s",
at,
"suggestedvalues",
e.code )
Fault( s )
else
h[ e.code ] = true
end
end
end -- for i
else
Fault( string.format( "params.%s.suggestedvalues %s",
at, "NOT AN ARRAY" ) )
end
if v then
local code, d, k, less, story, swift, t, u
r1 = mw.html.create( "ul" )
r2 = { }
for i = 1, #v do
u = mw.html.create( "li" )
e = v[ i ]
table.insert( r2, e.code )
story = false
less = ( e.less == true )
if not less then
swift = e.code
if e.support then
local scream, support
s = type( e.support )
if s == "string" then
support = e.support
elseif s == "table" then
support = faraway( e.support )
else
scream = "INVALID"
end
if support then
s = mw.text.trim( support )
if s == "" then
scream = "EMPTY"
elseif s:find( "[%[%]|%<%>]" ) then
scream = "BAD PAGE"
else
support = s
end
end
if scream then
s = string.format( "params.%s.%s[%d].support %s",
at,
"suggestedvalues",
i,
scream )
Fault( s )
else
swift = string.format( "[[:%s|%s]]",
support, swift )
end
end
if all.type:sub( 1, 5 ) == "wiki-" and
swift == e.code then
local rooms = { file = 6,
temp = 10,
user = 2 }
local ns = rooms[ all.type:sub( 6, 9 ) ] or 0
t = mw.title.makeTitle( ns, swift )
if t and t.exists then
swift = string.format( "[[:%s|%s]]",
t.prefixedText, swift )
end
end
if e.code == all.default then
k = 800
else
k = 300
end
code = mw.html.create( "code" )
:css( "font-weight", tostring( k ) )
:css( "white-space", "nowrap" )
:wikitext( swift )
u:node( code )
end
if e.class then
s = type( e.class )
if s == "string" then
u:addClass( e.class )
elseif s == "table" then
for k, s in pairs( e.class ) do
u:addClass( s )
end -- for k, s
else
s = string.format( "params.%s.%s[%d].class INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if e.css then
if type( e.css ) == "table" then
u:css( e.css )
else
s = string.format( "params.%s.%s[%d].css INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if e.style then
if type( e.style ) == "string" then
u:cssText( e.style )
else
s = string.format( "params.%s.%s[%d].style INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if all.type == "wiki-file-name" and not e.icon then
e.icon = e.code
end
if e.label then
s = type( e.label )
if s == "string" then
s = mw.text.trim( e.label )
if s == "" then
s = string.format( "params.%s.%s[%d].label %s",
at,
"suggestedvalues",
i,
"EMPTY" )
Fault( s )
else
story = s
end
elseif s == "table" then
story = faraway( e.label )
else
s = string.format( "params.%s.%s[%d].label INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
s = false
if type( e.icon ) == "string" then
t = mw.title.makeTitle( 6, e.icon )
if t and t.file.exists then
local g = mw.html.create( "span" )
s = string.format( "[[%s|16px]]", t.prefixedText )
g:attr( "role", "presentation" )
:wikitext( s )
s = tostring( g )
end
end
if not s and not less and e.label then
s = mw.ustring.char( 0x2013 )
end
if s then
d = mw.html.create( "span" )
:wikitext( s )
if TemplateData.ltr then
if not less then
d:css( "margin-left", "0.5em" )
end
if story then
d:css( "margin-right", "0.5em" )
end
else
if not less then
d:css( "margin-right", "0.5em" )
end
if story then
d:css( "margin-left", "0.5em" )
end
end
u:node( d )
end
if story then
u:wikitext( story )
end
r1:newline()
:node( u )
end -- for i
end
if not r1 and v ~= false then
Fault( string.format( "params.%s.suggestedvalues INVALID", at ) )
r1 = mw.html.create( "code" )
:addClass( "error" )
:wikitext( "INVALID" )
end
return r1, r2
end -- feasible()
local function feat()
-- Check and store parameter sequence
if Data.source then
local i = 0
local s
for k, v in pairs( Data.tree.params ) do
if i == 0 then
Data.order = { }
i = 1
s = k
else
i = 2
break -- for k, v
end
end -- for k, v
if i > 1 then
local pointers = { }
local points = { }
local given = { }
for k, v in pairs( Data.tree.params ) do
i = facet( k, 1 )
if type( v ) == "table" then
if type( v.label ) == "string" then
s = mw.text.trim( v.label )
if s == "" then
s = k
end
else
s = k
end
if given[ s ] then
if given[ s ] == 1 then
local scream = "Parameter label '%s' detected multiple times"
Fault( string.format( scream, s ) )
given[ s ] = 2
end
else
given[ s ] = 1
end
end
if i then
table.insert( points, i )
pointers[ i ] = k
i = facet( k, i )
if i then
s = "Parameter '%s' detected twice"
Fault( string.format( s, k ) )
end
else
s = "Parameter '%s' not detected"
Fault( string.format( s, k ) )
end
end -- for k, v
table.sort( points )
for i = 1, #points do
table.insert( Data.order, pointers[ points[ i ] ] )
end -- i = 1, #points
elseif s then
table.insert( Data.order, s )
end
end
end -- feat()
local function feature( access )
-- Create table row for parameter, check and display violations
-- Parameter:
-- access -- string, with name
-- Returns <tr>
local mode, s, status
local fine = function ( a )
s = mw.text.trim( a )
return a == s and
a ~= "" and
not a:find( "%|=\n" ) and
not a:find( "%s%s" )
end
local begin = mw.html.create( "td" )
local code = mw.html.create( "code" )
local desc = mw.html.create( "td" )
local eager = mw.html.create( "td" )
local legal = true
local param = Data.tree.params[ access ]
local ranking = { "required", "suggested", "optional", "deprecated" }
local r = mw.html.create( "tr" )
local styles = "mw-templatedata-doc-param-"
local sort, typed
for k, v in pairs( param ) do
if v == "" then
param[ k ] = false
end
end -- for k, v
-- label
sort = param.label or access
if sort:match( "^%d+$" ) then
begin:attr( "data-sort-value",
string.format( "%05d", tonumber( sort ) ) )
end
begin:css( "font-weight", "bold" )
:wikitext( sort )
-- name and aliases
code:css( "font-size", "92%" )
:css( "white-space", "nowrap" )
:wikitext( access )
if not fine( access ) then
code:addClass( "error" )
Fault( string.format( "Bad ID params.<code>%s</code>", access ) )
legal = false
begin:attr( "data-sort-value", " " .. sort )
end
code = mw.html.create( "td" )
:addClass( styles .. "name" )
:node( code )
if access:match( "^%d+$" ) then
code:attr( "data-sort-value",
string.format( "%05d", tonumber( access ) ) )
end
if type( param.aliases ) == "table" then
local lapsus, syn
for k, v in pairs( param.aliases ) do
code:tag( "br" )
if type( v ) == "string" then
if not fine( v ) then
lapsus = true
code:node( mw.html.create( "span" )
:addClass( "error" )
:css( "font-style", "italic" )
:wikitext( "string" ) )
:wikitext( s )
else
syn = mw.html.create( "span" )
:addClass( styles .. "alias" )
:css( "white-space", "nowrap" )
:wikitext( s )
code:node( syn )
end
else
lapsus = true
code:node( mw.html.create( "code" )
:addClass( "error" )
:wikitext( type( v ) ) )
end
end -- for k, v
if lapsus then
s = string.format( "params.<code>%s</code>.aliases", access )
Fault( factory( "invalid-value" ):gsub( "$1", s ) )
legal = false
end
end
-- description etc.
s = fashioned( param )
if s then
desc:node( s )
end
if param.style then
s = type( param.style )
if s == "table" then
desc:css( param.style )
elseif s == "string" then
desc:cssText( param.style )
end
end
if param.suggestedvalues or
param.default or
param.example or
param.autovalue then
local details = { "suggestedvalues",
"default",
"example",
"autovalue" }
local dl = mw.html.create( "dl" )
local dd, section, show
for i = 1, #details do
s = details[ i ]
show = param[ s ]
if show then
dd = mw.html.create( "dd" )
section = factory( "doc-param-" .. s )
if param.type == "boolean" and
( show == "0" or show == "1" ) then
local boole = Permit.boole[ ( show == "1" ) ]
if boole.lead == true then
dd:node( mw.html.create( "code" )
:wikitext( show ) )
:wikitext( " " )
end
if type( boole.show ) == "string" then
local v = mw.html.create( "span" )
:attr( "aria-hidden", "true" )
:wikitext( boole.show )
if boole.css then
v:css( boole.css )
end
dd:node( v )
end
if type( boole.suffix ) == "string" then
dd:wikitext( boole.suffix )
end
if boole.lead == false then
dd:wikitext( " " )
:node( mw.html.create( "code" )
:wikitext( show ) )
end
elseif s == "suggestedvalues" then
local v, css, class, ts = facilities( param )
if v then
local ul
ul, v = feasible( param, access, v )
if v then
dd:newline()
:node( ul )
if css then
dd:css( css )
if class then
dd:addClass( class )
end
if ts then
dd:newline()
dd:node( ts )
end
end
Data.params[ access ].suggestedvalues = v
end
end
else
dd:wikitext( show )
end
dl:node( mw.html.create( "dt" )
:wikitext( section ) )
:node( dd )
end
end -- i = 1, #details
desc:node( dl )
end
-- type
if type( param.type ) == "string" then
param.type = mw.text.trim( param.type )
if param.type == "" then
param.type = false
end
end
if param.type then
s = Permit.types[ param.type ]
typed = mw.html.create( "td" )
:addClass( styles .. "type" )
if s then
if s == "string" then
Data.params[ access ].type = s
typed:wikitext( factory( "doc-param-type-" .. s ) )
:tag( "br" )
typed:node( mw.html.create( "span" )
:addClass( "error" )
:wikitext( param.type ) )
Data.lasting = true
else
local support = Config[ "support4" .. param.type ]
s = factory( "doc-param-type-" .. param.type )
if support then
s = string.format( "[[%s|%s]]", support, s )
end
typed:wikitext( s )
end
else
Data.params[ access ].type = "unknown"
typed:addClass( "error" )
:wikitext( "INVALID" )
s = string.format( "params.<code>%s</code>.type", access )
Fault( factory( "invalid-value" ):gsub( "$1", s ) )
legal = false
end
else
typed = mw.html.create( "td" )
:wikitext( factory( "doc-param-type-unknown" ) )
Data.params[ access ].type = "unknown"
if param.default then
Data.params[ access ].default = nil
Fault( "Default value requires <code>type</code>" )
legal = false
end
end
typed:addClass( "navigation-not-searchable" )
-- status
if param.required then
mode = 1
if param.autovalue then
Fault( string.format( "autovalued <code>%s</code> required",
access ) )
legal = false
end
if param.default then
Fault( string.format( "Defaulted <code>%s</code> required",
access ) )
legal = false
end
if param.deprecated then
Fault( string.format( "Required deprecated <code>%s</code>",
access ) )
legal = false
end
elseif param.deprecated then
mode = 4
elseif param.suggested then
mode = 2
else
mode = 3
end
status = ranking[ mode ]
ranking = factory( "doc-param-status-" .. status )
if mode == 1 or mode == 4 then
ranking = mw.html.create( "span" )
:css( "font-weight", "bold" )
:wikitext( ranking )
if type( param.deprecated ) == "string" then
ranking:tag( "br" )
ranking:wikitext( param.deprecated )
end
if param.suggested and mode == 4 then
s = string.format( "Suggesting deprecated <code>%s</code>",
access )
Fault( s )
legal = false
end
end
eager:attr( "data-sort-value", tostring( mode ) )
:node( ranking )
:addClass( string.format( "%sstatus-%s %s",
styles, status,
"navigation-not-searchable" ) )
-- <tr>
r:attr( "id", "templatedata:" .. mw.uri.anchorEncode( access ) )
:css( Permit.css[ status ] )
:addClass( styles .. status )
:node( begin )
:node( code )
:node( desc )
:node( typed )
:node( eager )
:newline()
if not legal then
r:css( "border", "#FF0000 3px solid" )
end
return r
end -- feature()
local function features()
-- Create <table> for parameters
-- Returns <table>, or nil
local r
if Data.tree and Data.tree.params then
local tbl = mw.html.create( "table" )
local tr = mw.html.create( "tr" )
feat()
if Data.order and #Data.order > 1 then
tbl:addClass( "sortable" )
end
if type( Config.classTable ) == "table" then
for k, v in pairs( Config.classTable ) do
tbl:addClass( v )
end -- for k, v
end
if type( Config.cssTable ) == "table" then
tbl:css( Config.cssTable )
end
tr:addClass( "navigation-not-searchable" )
:node( mw.html.create( "th" )
:attr( "colspan", "2" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-name" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-desc" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-type" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-status" ) ) )
tbl:newline()
-- :node( mw.html.create( "thead" )
:node( tr )
-- )
:newline()
if Data.order then
local leave, s
for i = 1, #Data.order do
s = Data.order[ i ]
if s:sub( 1, 1 ) == "=" then
leave = true
tbl:node( fatten( s ) )
Data.order[ i ] = false
elseif s:match( "[=|]" ) then
Fault( string.format( "Bad param <code>%s</code>",
s ) )
else
tbl:node( feature( s ) )
end
end -- for i = 1, #Data.order
if leave then
for i = #Data.order, 1, -1 do
if not Data.order[ i ] then
table.remove( Data.order, i )
end
end -- for i = #Data.order, 1, -1
end
Data.tag.paramOrder = Data.order
end
if Config.cssTabWrap or Data.scroll then
r = mw.html.create( "div" )
if type( Config.cssTabWrap ) == "table" then
r:css( Config.cssTabWrap )
elseif type( Config.cssTabWrap ) == "string" then
-- deprecated
r:cssText( Config.cssTabWrap )
end
if Data.scroll then
r:css( "height", Data.scroll )
:css( "overflow", "auto" )
end
r:node( tbl )
else
r = tbl
end
end
return r
end -- features()
local function fellow( any, assigned, at )
-- Check sets[] parameter and issue error message, if necessary
-- Parameter:
-- any -- should be number
-- assigned -- parameter name
-- at -- number, of set
local s
if type( any ) ~= "number" then
s = "<code>sets[%d].params[%s]</code>??"
Fault( string.format( s,
at,
mw.text.nowiki( tostring( any ) ) ) )
elseif type( assigned ) == "string" then
if not Data.got.params[ assigned ] then
s = "<code>sets[%d].params %s</code> is undefined"
Fault( string.format( s, at, assigned ) )
end
else
s = "<code>sets[%d].params[%d] = %s</code>??"
Fault( string.format( s, k, type( assigned ) ) )
end
end -- fellow()
local function fellows()
-- Check sets[] and issue error message, if necessary
local s
if type( Data.got.sets ) == "table" then
if type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.sets ) do
if type( k ) == "number" then
if type( v ) == "table" then
for ek, ev in pairs( v ) do
if ek == "label" then
s = type( ev )
if s ~= "string" and
s ~= "table" then
s = "<code>sets[%d].label</code>??"
Fault( string.format( s, k ) )
end
elseif ek == "params" and
type( ev ) == "table" then
for pk, pv in pairs( ev ) do
fellow( pk, pv, k )
end -- for pk, pv
else
ek = mw.text.nowiki( tostring( ek ) )
s = "<code>sets[%d][%s]</code>??"
Fault( string.format( s, k, ek ) )
end
end -- for ek, ev
else
k = mw.text.nowiki( tostring( k ) )
v = mw.text.nowiki( tostring( v ) )
s = string.format( "<code>sets[%s][%s]</code>??",
k, v )
Fault( s )
end
else
k = mw.text.nowiki( tostring( k ) )
s = string.format( "<code>sets[%s]</code> ?????", k )
Fault( s )
end
end -- for k, v
else
s = "<code>params</code> required for <code>sets</code>"
Fault( s )
end
else
s = "<code>sets</code> needs to be of <code>object</code> type"
Fault( s )
end
end -- fellows()
local function finalize( advance )
-- Wrap presentation into frame
-- Parameter:
-- advance -- true, for nice
-- Returns string
local r, lapsus
if Data.div then
r = tostring( Data.div )
elseif Data.strip then
r = Data.strip
else
lapsus = true
r = ""
end
r = r .. failures()
if Data.source then
local live = ( advance or lapsus )
if not live then
live = TemplateData.frame:preprocess( "{{REVISIONID}}" )
live = ( live == "" )
end
if live then
r = r .. fancy( advance, lapsus )
end
end
return r
end -- finalize()
local function find()
-- Find JSON data within page source (title)
-- Returns string, or nil
local s = Data.title:getContent()
local i, j = s:find( "<templatedata>", 1, true )
local r
if i then
local k = s:find( "</templatedata>", j, true )
if k then
r = mw.text.trim( s:sub( j + 1, k - 1 ) )
end
end
return r
end -- find()
local function flat( adjust )
-- Remove formatting from text string for VE
-- Parameter:
-- arglist -- string, to be stripped, or nil
-- Returns string, or nil
local r
if adjust then
r = adjust:gsub( "\n", " " )
if r:find( "<noexport>", 1, true ) then
r = r:gsub( "<noexport>.*</noexport>", "" )
end
if r:find( "<exportonly>", 1, true ) then
r = r:gsub( "</?exportonly>", "" )
end
if r:find( "''", 1, true ) then
r = r:gsub( "'''", "" ):gsub( "''", "" )
end
if r:find( "<", 1, true ) then
local Text = Fetch( "Text" )
r = Text.getPlain( r:gsub( "<br */?>", "\r\n" ) )
end
if r:find( "[", 1, true ) then
local WLink = Fetch( "WLink" )
if WLink.isBracketedURL( r ) then
r = r:gsub( "%[([hf]tt?ps?://%S+) [^%]]+%]", "%1" )
end
r = WLink.getPlain( r )
end
if r:find( "&", 1, true ) then
r = mw.text.decode( r )
if r:find( "­", 1, true ) then
r = r:gsub( "­", "" )
end
end
end
return r
end -- flat()
local function flush()
-- JSON encode narrowed input; obey unnamed (numerical) parameters
-- Returns <templatedata> JSON string
local r
if Data.tag then
r = mw.text.jsonEncode( Data.tag ):gsub( "%}$", "," )
else
r = "{"
end
r = r .. "\n\"params\":{"
if Data.order then
local sep = ""
local s
for i = 1, #Data.order do
s = Data.order[ i ]
r = string.format( "%s%s\n%s:%s",
r,
sep,
mw.text.jsonEncode( s ),
mw.text.jsonEncode( Data.params[ s ] ) )
sep = ",\n"
end -- for i = 1, #Data.order
end
r = r .. "\n}\n}"
return r
end -- flush()
local function focus( access )
-- Check components; focus multilingual description, build trees
-- Parameter:
-- access -- string, name of parameter, nil for root
local f = function ( a, at )
local r
if at then
r = string.format( "<code>params.%s</code>", at )
else
r = "''root''"
end
if a then
r = string.format( "%s<code>.%s</code>", r, a )
end
return r
end
local parent
if access then
parent = Data.got.params[ access ]
else
parent = Data.got
end
if type( parent ) == "table" then
local elem, got, permit, s, scope, slot, tag, target
if access then
permit = Permit.params
if type( access ) == "number" then
slot = tostring( access )
else
slot = access
end
else
permit = Permit.root
end
for k, v in pairs( parent ) do
scope = permit[ k ]
if scope then
s = type( v )
if s == "string" and k ~= "format" then
v = mw.text.trim( v )
end
if scope:find( s, 1, true ) then
if scope:find( "I18N", 1, true ) then
if s == "string" then
elem = fair( v )
elseif s == "table" then
local translated
v, translated = faraway( v )
if v then
if translated and
k == "description" then
elem = { [ 1 ] = fair( v ),
[ 2 ] = translated }
else
elem = fair( v )
end
else
elem = false
end
end
if type( v ) == "string" then
if k == "deprecated" then
if v == "1" then
v = true
elseif v == "0" then
v = false
end
elem = v
elseif scope:find( "nowiki", 1, true ) then
elem = mw.text.nowiki( v )
elem = elem:gsub( " \n", "<br>" )
v = v:gsub( string.char( 13 ), "" )
else
v = flat( v )
end
elseif s == "boolean" then
if scope:find( "boolean", 1, true ) then
elem = v
else
s = "Type <code>boolean</code> bad for "
.. f( k, slot )
Fault( s )
end
end
else
if k == "params" and not access then
v = nil
elem = nil
elseif k == "format" and not access then
elem = mw.text.decode( v )
v = nil
elseif k == "inherits" then
elem = v
if not Data.heirs then
Data.heirs = { }
end
Data.heirs[ slot ] = v
v = nil
elseif k == "style" then
elem = v
v = nil
elseif s == "string" then
v = mw.text.nowiki( v )
elem = v
else
elem = v
end
end
if type( elem ) ~= "nil" then
if not target then
if access then
if not Data.tree.params then
Data.tree.params = { }
end
Data.tree.params[ slot ] = { }
target = Data.tree.params[ slot ]
else
Data.tree = { }
target = Data.tree
end
end
target[ k ] = elem
elem = false
end
if type( v ) ~= "nil" then
if not tag then
if access then
if type( v ) == "string" and
v.sub( 1, 1 ) == "=" then
v = nil
else
if not Data.params then
Data.params = { }
end
Data.params[ slot ] = { }
tag = Data.params[ slot ]
end
else
Data.tag = { }
tag = Data.tag
end
end
if type( v ) ~= "nil" and
k ~= "suggestedvalues" then
tag[ k ] = v
end
end
else
s = string.format( "Type <code>%s</code> bad for %s",
scope, f( k, slot ) )
Fault( s )
end
else
Fault( "Unknown component " .. f( k, slot ) )
end
end -- for k, v
if not access and Data.got.sets then
fellows()
end
else
Fault( f() .. " needs to be of <code>object</code> type" )
end
end -- focus()
local function format()
-- Build formatted element
-- Returns <inline>
local source = Data.tree.format:lower()
local r, s
if source == "inline" or source == "block" then
r = mw.html.create( "i" )
:wikitext( source )
else
local code
if source:find( "|", 1, true ) then
local scan = "^[\n ]*%{%{[\n _]*|[\n _]*=[\n _]*%}%}[\n ]*$"
if source:match( scan ) then
code = source:gsub( "\n", "N" )
else
s = mw.text.nowiki( source ):gsub( "\n", "\n" )
s = tostring( mw.html.create( "code" )
:wikitext( s ) )
Fault( "Invalid format " .. s )
source = false
end
else
local words = mw.text.split( source, "%s+" )
local show, start, support, unknown
for i = 1, #words do
s = words[ i ]
if i == 1 then
start = s
end
support = Permit.builder[ s ]
if support == start or
support == "*" then
Permit.builder[ s ] = true
elseif s:match( "^[1-9]%d?" ) and
Permit.builder.align then
Permit.builder.align = tonumber( s )
else
if unknown then
unknown = string.format( "%s %s", unknown, s )
else
unknown = s
end
end
end -- i = 1, #words
if unknown then
s = tostring( mw.html.create( "code" )
:css( "white-space", "nowrap" )
:wikitext( s ) )
Fault( "Unknown/misplaced format keyword " .. s )
source = false
start = false
end
if start == "inline" then
if Permit.builder.half == true then
show = "inline half"
code = "{{_ |_=_}}"
elseif Permit.builder.grouped == true then
show = "inline grouped"
code = "{{_ | _=_}}"
elseif Permit.builder.spaced == true then
show = "inline spaced"
code = "{{_ | _ = _ }}"
end
if Permit.builder.newlines == true then
show = show or "inline"
code = code or "{{_|_=_}}"
show = show .. " newlines"
code = string.format( "N%sN", code )
end
elseif start == "block" then
local space = "" -- amid "|" and name
local spaced = " " -- preceding "="
local spacer = " " -- following "="
local suffix = "N" -- closing "}}" on new line
show = "block"
if Permit.builder.indent == true then
start = " "
show = "block indent"
else
start = ""
end
if Permit.builder.compressed == true then
spaced = ""
spacer = ""
show = show .. " compressed"
if Permit.builder.last == true then
show = show .. " last"
else
suffix = ""
end
else
if Permit.builder.lead == true then
show = show .. " lead"
space = " "
end
if type( Permit.builder.align ) ~= "string" then
local n
s = " align"
if Permit.builder.align == true then
n = 0
if type( Data.got ) == "table" and
type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.params ) do
if type( v ) == "table" and
not v.deprecated and
type( k ) == "string" then
k = mw.ustring.len( k )
if k > n then
n = k
end
end
end -- for k, v
end
else
n = Permit.builder.align
if type( n ) == "number" and n > 1 then
s = string.format( "%s %d", s, n )
else
n = 0 -- How comes?
end
end
if n > 1 then
spaced = string.rep( "_", n - 1 ) .. " "
end
show = show .. s
elseif Permit.builder.after == true then
spaced = ""
show = show .. " after"
elseif Permit.builder.dense == true then
spaced = ""
spacer = ""
show = show .. " dense"
end
if Permit.builder.last == true then
suffix = spacer
show = show .. " last"
end
end
code = string.format( "N{{_N%s|%s_%s=%s_%s}}N",
start,
space,
spaced,
spacer,
suffix )
if show == "block" then
show = "block newlines"
end
end
if show then
r = mw.html.create( "span" )
:wikitext( show )
end
end
if code then
source = code:gsub( "N", "\n" )
code = mw.text.nowiki( code ):gsub( "N", "\n" )
code = mw.html.create( "code" )
:css( "margin-left", "1em" )
:css( "margin-right", "1em" )
:wikitext( code )
if r then
r = mw.html.create( "span" )
:node( r )
:node( code )
else
r = code
end
end
end
if source and Data.tag then
Data.tag.format = source
end
return r
end -- format()
local function formatter()
-- Build presented documentation
-- Returns <div>
local r = mw.html.create( "div" )
local x = fashioned( Data.tree, true, r )
local s
if x then
r = x
end
if Data.leading then
local toc = mw.html.create( "div" )
local shift
if Config.suppressTOCnum then
toc:addClass( Config.suppressTOCnum )
if type( Config.stylesTOCnum ) == "string" then
local src = Config.stylesTOCnum .. "/styles.css"
s = TemplateData.frame:extensionTag( "templatestyles",
nil,
{ src = src } )
r:newline()
:node( s )
end
end
toc:addClass( "navigation-not-searchable" )
:css( "margin-top", "0.5em" )
:wikitext( "__TOC__" )
if Data.sibling then
local block = mw.html.create( "div" )
if TemplateData.ltr then
shift = "right"
else
shift = "left"
end
block:css( "float", shift )
:wikitext( Data.sibling )
r:newline()
:node( block )
:newline()
end
r:newline()
:node( toc )
:newline()
if shift then
r:node( mw.html.create( "div" )
:css( "clear", shift ) )
:newline()
end
end
s = features()
if s then
if Data.leading then
r:node( mw.html.create( "h" .. Config.nested )
:wikitext( factory( "doc-params" ) ) )
:newline()
end
r:node( s )
end
if Data.shared then
local global = mw.html.create( "div" )
:attr( "id", "templatedata-global" )
local shift
if TemplateData.ltr then
shift = "right"
else
shift = "left"
end
global:css( "float", shift )
:wikitext( string.format( "[[%s|%s]]",
Data.shared, "Global" ) )
r:newline()
:node( global )
end
if Data.tree and Data.tree.format then
local e = format()
if e then
local show = "Format"
if Config.supportFormat then
show = string.format( "[[%s|%s]]",
Config.supportFormat, show )
end
r:node( mw.html.create( "p" )
:addClass( "navigation-not-searchable" )
:wikitext( show .. ": " )
:node( e ) )
end
end
return r
end -- formatter()
local function free()
-- Remove JSON comment lines
if Data.source:find( "//", 1, true ) then
Data.source:gsub( "([{,\"'])(%s*\n%s*//.*\n%s*)([{},\"'])",
"%1%3" )
end
end -- free()
local function full()
-- Build survey table from JSON data, append invisible <templatedata>
Data.div = mw.html.create( "div" )
:addClass( "mw-templatedata-doc-wrap" )
if Permit.css.bg then
Data.div:css( Permit.css.bg )
end
if Permit.css.fg then
Data.div:css( Permit.css.fg )
end
focus()
if Data.tag then
if type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.params ) do
focus( k )
end -- for k, v
if Data.heirs then
fathers()
end
end
end
Data.div:node( formatter() )
if not Data.lazy then
Data.slim = flush()
if TemplateData.frame then
local div = mw.html.create( "div" )
local tdata = { [ 1 ] = "templatedata",
[ 2 ] = Data.slim }
Data.strip = TemplateData.frame:callParserFunction( "#tag",
tdata )
div:wikitext( Data.strip )
if Config.loudly then
Data.div:node( mw.html.create( "hr" )
:css( { height = "7ex" } ) )
else
div:css( "display", "none" )
end
Data.div:node( div )
end
end
if Data.lasting then
Fault( "deprecated type syntax" )
end
if Data.less then
Fault( Config.solo )
end
end -- full()
local function furnish( adapt, arglist )
-- Analyze transclusion
-- Parameter:
-- adapt -- table, #invoke parameters
-- arglist -- table, template parameters
-- Returns string
local source
favorize()
-- deprecated:
for k, v in pairs( Config.basicCnf ) do
if adapt[ k ] and adapt[ k ] ~= "" then
Config[ v ] = adapt[ k ]
end
end -- for k, v
if arglist.heading and arglist.heading:match( "^[3-6]$" ) then
Config.nested = arglist.heading
else
Config.nested = "2"
end
Config.loudly = faculty( arglist.debug or adapt.debug )
Data.lazy = faculty( arglist.lazy ) and not Config.loudly
Data.leading = faculty( arglist.TOC )
if Data.leading and arglist.TOCsibling then
Data.sibling = mw.text.trim( arglist.TOCsibling )
end
if arglist.lang then
Data.slang = arglist.lang:lower()
elseif adapt.lang then
Data.slang = adapt.lang:lower()
end
if arglist.JSON then
source = arglist.JSON
elseif arglist.Global then
source = TemplateData.getGlobalJSON( arglist.Global,
arglist.Local )
elseif arglist[ 1 ] then
local s = mw.text.trim( arglist[ 1 ] )
local start = s:sub( 1, 1 )
if start == "<" then
Data.strip = s
elseif start == "{" then
source = s
elseif mw.ustring.sub( s, 1, 8 ) ==
mw.ustring.char( 127, 39, 34, 96, 85, 78, 73, 81 ) then
Data.strip = s
end
end
if type( arglist.vertical ) == "string" and
arglist.vertical:match( "^%d*%.?%d+[emprx]+$" ) then
Data.scroll = arglist.vertical
end
if not source then
Data.title = mw.title.getCurrentTitle()
source = find()
if not source and
not Data.title.text:match( Config.subpage ) then
local s = string.format( Config.suffix,
Data.title.prefixedText )
Data.title = mw.title.new( s )
if Data.title.exists then
source = find()
end
end
end
if not Data.lazy then
if not Data.title then
Data.title = mw.title.getCurrentTitle()
end
Data.lazy = Data.title.text:match( Config.subpage )
end
if type( source ) == "string" then
TemplateData.getPlainJSON( source )
end
return finalize( faculty( arglist.source ) )
end -- furnish()
Failsafe.failsafe = function ( atleast )
-- Retrieve versioning and check for compliance
-- Precondition:
-- atleast -- string, with required version
-- or wikidata|item|~|@ or false
-- Postcondition:
-- Returns string -- with queried version/item, also if problem
-- false -- if appropriate
-- 2020-08-17
local since = atleast
local last = ( since == "~" )
local linked = ( since == "@" )
local link = ( since == "item" )
local r
if last or link or linked or since == "wikidata" then
local item = Failsafe.item
since = false
if type( item ) == "number" and item > 0 then
local suited = string.format( "Q%d", item )
if link then
r = suited
else
local entity = mw.wikibase.getEntity( suited )
if type( entity ) == "table" then
local seek = Failsafe.serialProperty or "P348"
local vsn = entity:formatPropertyValues( seek )
if type( vsn ) == "table" and
type( vsn.value ) == "string" and
vsn.value ~= "" then
if last and vsn.value == Failsafe.serial then
r = false
elseif linked then
if mw.title.getCurrentTitle().prefixedText
== mw.wikibase.getSitelink( suited ) then
r = false
else
r = suited
end
else
r = vsn.value
end
end
end
end
end
end
if type( r ) == "nil" then
if not since or since <= Failsafe.serial then
r = Failsafe.serial
else
r = false
end
end
return r
end -- Failsafe.failsafe()
TemplateData.getGlobalJSON = function ( access, adapt )
-- Retrieve TemplateData from a global repository (JSON)
-- Parameter:
-- access -- string, with page specifier (on WikiMedia Commons)
-- adapt -- JSON string or table with local overrides
-- Returns true, if succeeded
local plugin = Fetch( "/global" )
local r
if type( plugin ) == "table" and
type( plugin.fetch ) == "function" then
local s, got = plugin.fetch( access, adapt )
if got then
Data.got = got
Data.order = got.paramOrder
Data.shared = s
r = true
full()
else
Fault( s )
end
end
return r
end -- TemplateData.getGlobalJSON()
TemplateData.getPlainJSON = function ( adapt )
-- Reduce enhanced JSON data to plain text localized JSON
-- Parameter:
-- adapt -- string, with enhanced JSON
-- Returns string, or not
if type( adapt ) == "string" then
Data.source = adapt
free()
local lucky
lucky, Data.got = pcall( mw.text.jsonDecode, Data.source )
if type( Data.got ) == "table" then
full()
elseif not Data.strip then
local scream = type( Data.got )
if scream == "string" then
scream = Data.got
else
scream = "Data.got: " .. scream
end
Fault( "fatal JSON error: " .. scream )
end
end
return Data.slim
end -- TemplateData.getPlainJSON()
TemplateData.test = function ( adapt, arglist )
TemplateData.frame = mw.getCurrentFrame()
return furnish( adapt, arglist )
end -- TemplateData.test()
-- Export
local p = { }
p.f = function ( frame )
-- Template call
local lucky, r
TemplateData.frame = frame
lucky, r = pcall( furnish, frame.args, frame:getParent().args )
if not lucky then
Fault( "INTERNAL: " .. r )
r = failures()
end
return r
end -- p.f
p.failsafe = function ( frame )
-- Versioning interface
local s = type( frame )
local since
if s == "table" then
since = frame.args[ 1 ]
elseif s == "string" then
since = frame
end
if since then
since = mw.text.trim( since )
if since == "" then
since = false
end
end
return Failsafe.failsafe( since ) or ""
end -- p.failsafe
p.TemplateData = function ()
-- Module interface
return TemplateData
end
return p
a0976bcf0e87d0e519ff239bd6aec0b63b6f40c6
Template:Campaignbox Second Punic War
10
1506
2841
2023-06-26T23:10:16Z
w>Nostalgia of Iran
0
Fixed redirect
wikitext
text/x-wiki
{{Campaignbox
| name = Campaignbox Second Punic War
| title = [[Second Punic War|{{Wrap|Second Punic War}}]]
| listclass = hlist
| battles =
; Prelude
* [[Siege of Saguntum|Saguntum]]
* [[Battle of Rhone Crossing|Rhone]]
* [[Hannibal's crossing of the Alps|Crossing of the Alps]]
; Italy
* [[Battle of Ticinus|Ticinus]]
* [[Battle of the Trebia|Trebia]]
* [[Siege of Mutina (218 BC)|Mutina]]
* [[Battle of Placentia (217 BC)|Placentia]]
* [[Battle of Victumulae|Victumulae]]
* [[Battle of Lake Trasimene|Lake Trasimene]]
* [[Battle of Umbrian Lake|Umbrian Lake]]
* [[Hannibal's crossing of the Apennines|Crossing of the Apennines]]
* [[Battle of Ager Falernus|Ager Falernus]]
* [[Battle of Geronium|Geronium]]
* [[Battle of Cannae|Cannae]]
* [[Battle of Silva Litana|Silva Litana]]
* [[Battle of Nola (216 BC)|1st Nola]]
* [[Siege of Nuceria Alfaterna|Nuceria Alfaterna]]
* [[Siege of Casilinum (216–215 BC)|1st Casilinum]]
* [[Battle of Hamae|Hamae]]
* [[Siege of Petelia|1st Petelia]]
* [[Battle of Cumae (215 BC)|Cumae]]
* [[Battle of Nola (215 BC)|2nd Nola]]
* [[Battle of Beneventum (214 BC)|1st Beneventum]]
* [[Battle of Nola (214 BC)|3rd Nola]]
* [[Siege of Casilinum (214 BC)|2nd Casilinum]]
* [[Battle of Lucania|Lucania]]
* [[Siege of Arpi|Arpi]]
* [[Battle of Tarentum (212 BC)|1st Tarentum]]
* [[Battle of Beneventum (212 BC)|2nd Beneventum]]
* [[Battle of Campi Veteres|Campi Veteres]]
* [[Battle of Capua|1st Capua]]
* [[Battle of the Silarus|Silarus]]
* [[Battle of Herdonia (212 BC)|1st Herdonia]]
* [[Siege of Capua (211 BC)|2nd Capua]]
* [[Hannibal's raid to Rome|Rome]]
* [[Battle of Sapriportis|Sapriportis]]
* [[Battle of Herdonia (210 BC)|2nd Herdonia]]
* [[Battle of Numistro|Numistro]]
* [[Battle of Canusium|Canusium]]
* [[Siege of Manduria|Manduria]]
* [[Siege of Caulonia|Caulonia]]
* [[Battle of Tarentum (209 BC)|2nd Tarentum]]
* [[Battle of Locri (208 BC)|Locri]]
* [[Battle of Petelia|2nd Petelia]]
* [[Battle of Venusia|Venusia]]
* [[Battle of Grumentum|Grumentum]]
* [[Battle of the Metaurus|Metaurus]]
* [[Battle of Crotona|Crotona]]
* [[Battle of Insubria|Insubria]]
; Iberia
* [[Battle of Cissa|Cissa]]
* [[Battle of Ebro River|Ebro River]]
* [[Battle of Ibera|Ibera]]
* [[Siege of Illiturgis|Illiturgis]]
* [[Battle of Munda (214 BC)|Munda]]
* [[Battle of Orongi|Orongi]]
* [[Battle of the Upper Baetis|Upper Baetis]]
* [[Battle of New Carthage|1st New Carthage]]
* [[Battle of Baria|Baria]]
* [[Battle of Baecula|Baecula]]
* [[Battle of Ilipa|Ilipa]]
* [[Mutiny at Sucro|Sucro]]
* [[Battle of Carteia|1st Carteia]]
* [[Battle of Carteia (naval)|2nd Carteia]]
* [[Battle of Cartagena (206 BC)|2nd New Carthage]]
; Sicily and Sardinia
* [[Battle of Lilybaeum|Lilybaeum]]
* [[Capture of Malta (218 BC)|Malta]]
* [[Battle of Decimomannu|Decimomannu]]
* [[Battle of Leontini|Leontini]]
* [[Siege of Syracuse (213–212 BC)|Syracuse]]
* [[Battle of Himera (211 BC)|Himera]]
* [[Siege of Agrigentum (210 BC)|Agrigentum]]
; North Africa
* [[Siege of Utica (204 BC)|1st Utica]]
* [[Battle of Utica (203 BC)|2nd Utica]]
* [[Battle of the Great Plains|Great Plains]]
* [[Battle of Cirta|Cirta]]
* [[Battle of Zama|Zama]]
}}<noinclude>
[[Category:Punic Wars navigational boxes|Second Punic War]]
[[Category:Ancient Rome campaignbox templates|Campaign]]
</noinclude>
f3015ca66e7919fa2b20c4ea9e8e7f8fb1283732
Template:Dagger
10
1000
2196
2023-06-29T07:57:39Z
wikipedia>Izno
0
per tper
wikitext
text/x-wiki
†<noinclude>{{Documentation}}
</noinclude>
c1cff92219225378143384ca5156377ca50dd713
Template:Polparty
10
1430
2765
2023-06-30T16:59:55Z
w>Paine Ellsworth
0
per edit request on talk page - remove duplicate "NL"
wikitext
text/x-wiki
{{#switch: {{ucfirst:{{{1}}}}}
| AT | Austria | [[Austria]] = {{#switch: {{uc:{{{2}}}}}
| SPÖ = [[Social Democratic Party of Austria|SPÖ]]
| ÖVP = [[Austrian People's Party|ÖVP]]
| FPÖ = [[Freedom Party of Austria|FPÖ]]
| BZÖ = [[Alliance for the Future of Austria|BZÖ]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Green | Greens | Grün | Grüne = [[The Greens – The Green Alternative|Green]]
| Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| AU | Australia | [[Australia]] = {{#switch: {{uc:{{{2}}}}}
| ALP = [[Australian Labor Party|ALP]]
| CLP = [[Country Liberal Party|CLP]]
| LP = [[Liberal Party of Australia|Lib.]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Democrats | Dem = [[Australian Democrats|Dem.]]
| Greens | Green = [[Australian Greens|Greens]]
| Labor | Lab = [[Australian Labor Party|ALP]]
| Liberal | Lib = [[Liberal Party of Australia|Lib.]]
| National | Nat = [[National Party of Australia|Nat.]]
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| CA | Canada | [[Canada]] = {{#switch: {{uc:{{{2}}}}}
| BQ = [[Bloc Québécois|BQ]]
| CPC = [[Conservative Party of Canada|CPC]]
| LPC = [[Liberal Party of Canada|LPC]]
| NDP = [[New Democratic Party|NDP]]
| GPC = [[Green Party of Canada|Green]]
| FPNP = [[First Peoples National Party of Canada|FPNP]]
| CHP = [[Christian Heritage Party of Canada|CHP]]
| WBP = [[Western Block Party|WBP]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| CZ | Czechia | [[Czechia]] | [[Czech Republic]] | Czech Republic = {{#switch: {{uc:{{{2}}}}}
| ODS = [[Civic Democratic Party (Czech Republic)|ODS]]
| CSSD = [[Czech Social Democratic Party|ČSSD]]
| KSCM = [[Communist Party of Bohemia and Moravia|KSČM]]
| KDU-CSL = [[Christian and Democratic Union – Czechoslovak People's Party|KDU-ČSL]]
| ANO = [[ANO 2011|ANO]]
| TOP09 = [[TOP 09]]
| STAN = [[Mayors and Independents|STAN]]
| Pirati = [[Czech Pirate Party|Piráti]]
| SPD = [[Freedom and Direct Democracy|SPD]]
| SZ = [[Green Party (Czech Republic)|Greens]]
| US-DEU = [[Freedom Union–Democratic Union|US-DEU]]
| LIRA = [[Liberal Reform Party|LIRA]]
| SNK = [[SNK European Democrats|SNK ED]]
| NEZDEM = [[Independent Democrats (Czech Republic)|Ind. Dem.]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| DE | Germany | [[Germany]] = {{#switch: {{uc:{{{2}}}}}
| CDU = [[Christian Democratic Union of Germany|CDU]]
| CSU = [[Christian Social Union in Bavaria|CSU]]
| SPD = [[Social Democratic Party of Germany|SPD]]
| FDP = [[Free Democratic Party (Germany)|FDP]]
| PDS = [[The Left (Germany)|Left]]
| FW |FWG = [[Free Voters|FW]]
| DDP = [[German Democratic Party|DDP]]
| NS | NSDAP = [[Nazi Party|NSDAP]]
| ODP | ÖDP = [[Ecological Democratic Party|ÖDP]]
| AfD | AFD = [[Alternative for Germany|AfD]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Left | Linke | The Left = [[The Left (Germany)|Left]]
| Green | Greens | Grün | Grüne | Bündnis 90/Die Grünen = [[Alliance 90/The Greens|Greens]]
| Freie Wähler | Freie wähler = [[Free Voters|FW]]
| Centre | Zentrum = [[Centre Party (Germany)|Centre]]
| Volt = [[Volt Germany|Volt]]
| PARTEI = [[die PARTEI|PARTEI]]
| Pirates | Piraten = [[Pirate Party Germany|Pirates]]
| Nazi = [[Nazi Party|NSDAP]]
| Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| NL | Netherlands | [[Netherlands]] | The Netherlands | [[The Netherlands]] | Holland = {{#switch: {{uc:{{{2}}}}}
| CDA = [[Christian Democratic Appeal|CDA]]
| CU = [[ChristianUnion|CU]]
| D66 = [[Democrats 66|D66]]
| GL = [[GreenLeft|GL]]
| PVV = [[Party for Freedom|PVV]]
| SGP = [[Reformed Political Party|SGP]]
| SP = [[Socialist Party (Netherlands)|SP]]
| VVD = [[People's Party for Freedom and Democracy|VVD]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Green | Groen = [[GreenLeft|GL]]
| PvdA | Pvda = [[Labour Party (Netherlands)|PvdA]]
| Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| CH | Switzerland | [[Switzerland]] = {{#switch: {{uc:{{{2}}}}}
| FDP | PRD | RAD | FDP/PRD = [[Free Democratic Party of Switzerland|FDP/PRD]]
| PLR = [[Free Democratic Party of Switzerland|FDP/PRD/PLR]]
| PLC = [[Free Democratic Party of Switzerland|FDP/PRD/PLC]]
| SPS | PSS | SP | PS | SP/PS | SPS/PSS | SOC = [[Social Democratic Party of Switzerland|SPS/PSS]]
| SVP | UDC | SVP/UDC = [[Swiss People's Party|SVP/UDC]]
| PPS = [[Swiss People's Party|SVP/UDC/PPS]]
| CVP | PDC | CVP/PDC = [[Christian Democratic People's Party of Switzerland|CVP/PDC]]
| PPD = [[Christian Democratic People's Party of Switzerland|CVP/PDC/PPD]]
| PCD = [[Christian Democratic People's Party of Switzerland|CVP/PDC/PCD]]
| GPS | PES = [[Green Party of Switzerland|GPS/PES]]
| GLP = [[Green Liberal Party of Switzerland|GLP]]
| PLS | LPS | LIB = [[Liberal Party of Switzerland|LPS/PLS]]
| EVP | PEV = [[Evangelical People's Party of Switzerland|EVP/PEV]]
| Ticino League | Lega = [[Ticino League]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Green = [[Green Party of Switzerland|GPS]]
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = [[List of political parties in Switzerland|{{{2}}}]] }}
}}
| RO | Romania | [[Romania]] = {{#switch: {{uc:{{{2}}}}}
| PSD = [[Social Democratic Party (Romania)|PSD]]
| PNL = [[National Liberal Party (Romania)|PNL]]
| UDMR | RMDSZ = [[Democratic Alliance of Hungarians in Romania|UDMR]]
| PNȚ-CD | PNT-CD = [[Christian Democratic National Peasants' Party|PNȚ-CD]]
| ALDE = [[Alliance of Liberals and Democrats (Romania)|ALDE]]
| PDL = [[Democratic Liberal Party (Romania)|PDL]]
| FDGR = [[Democratic Forum of Germans in Romania|FDGR]]
| PD = [[Democratic Party (Romania)|PD]]
| PCM | MPP | HCP = [[Hungarian Civic Party (Romania)|PCM]]
| PND = [[National Democratic Party (Romania)|PND]]
| PRM = [[Greater Romania Party|PRM]]
| USL = [[Social Liberal Union|USL]]
| PMP = [[People's Movement Party|PMP]]
| UNPR = [[National Union for the Progress of Romania|UNPR]]
| PPMT | EMNP = [[Hungarian People's Party of Transylvania|PPMT]]
| PC = [[Conservative Party (Romania)|PC]]
| PER = [[Ecologist Party of Romania|PER]]
| PSRO = [[Romanian Social Party|PSRO]]
| PRO = [[PRO Romania|PRO]]
| PLUS = [[Freedom, Unity and Solidarity Party|PLUS]]
| USR = [[Save Romania Union|USR]]
| USR PLUS = [[USR PLUS]]
| AD = [[The Right Alternative|AD]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| TR | Turkey | [[Turkey]] = {{#switch: {{uc:{{{2}}}}}
| AKP = [[Justice and Development Party (Turkey)|AKP]]
| CHP = [[Republican People's Party|CHP]]
| HDP = [[Peoples' Democratic Party (Turkey)|HDP]]
| MHP = [[Nationalist Movement Party|MHP]]
| İYİ | IYI = [[Good Party|İYİ]]
| SP = [[Felicity Party|SP]]
| TKP = [[Communist Party of Turkey (modern)|TKP]]
| BBP = [[Great Unity Party|BBP]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| US | United States | [[United States]] | USA | [[USA]] = {{#switch: {{uc:{{{2}}}}}
| D = [[Democratic Party (United States)|D]]
| R = [[Republican Party (United States)|R]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Democrat = [[Democratic Party (United States)|D]]
| Republican = [[Republican Party (United States)|R]]
| Independent | Ind | Neutral = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| ZA | South Africa | [[South Africa]] = {{#switch: {{uc:{{{2}}}}}
| ANC | African National Congress = [[African National Congress|ANC]]
| DA | Democratic Alliance = [[Democratic Alliance (South Africa)|DA]]
| IFP | Inkatha Freedom Party = [[Inkatha Freedom Party|IFP]]
| NFP | National Freedom Party = [[National Freedom Party|NFP]]
| COPE | Congress of the People = [[Congress of the People (South African political party)|COPE]]
| FF+ | Freedom Front Plus = [[Freedom Front Plus]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Green | Greens | Grün | Grüne = [[The Greens – The Green Alternative|Green]]
| Independent | Ind | Neutral | Parteilos | [[Parteilos]] | [[parteilos]] = [[Independent politician|Ind.]]
| #default = {{{2}}} }}
}}
| Independent | [[Independent]] | Ind | Ind. | Neutral = [[Independent politician|Ind.]]
| #default = {{#switch: {{ucfirst: {{{2}}} }}
| Independent | Ind | Neutral = [[Independent (politician)|Ind.]]
| #default = {{{2|{{{1|}}}}}} }}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
24a6705d4a914d795e49dc847104481597d47019
Template:Never substitute
10
990
2176
2023-07-02T14:23:57Z
wikipedia>Primefac
0
convert to wrapper
wikitext
text/x-wiki
{{Always substitute|yesnomaybe=never}}<noinclude>
{{Documentation}}
</noinclude>
fda3e0330f5da78bbcd49a4f97ec81a6a3c78cd5
Template:Always substitute
10
989
2174
2023-07-02T18:35:53Z
wikipedia>Primefac
0
missing word
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst|main|$B=
{{Ombox
| name = Subst only
| type = notice
| text = '''This template {{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]'''|never=should ''not'' be [[Help:Substitution|substituted]]'''||#default=should always be [[Help:Substitution|substituted]]''' (i.e., use <!--
-->{{{actualtemplate|{{template other|{{Tlsp|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|{{FULLPAGENAME}}}}}}}}})}}. <!--
-->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}} <!--
-->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}}
}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia substituted templates]]}}}}<noinclude>{{Documentation}}</noinclude>
8e567c153f4f9a6a329e76bf6a71e8a216e87919
Template:Infobox Australian place/doc
10
1392
2727
2023-07-03T18:54:40Z
w>Poketama
0
There was an RFC and months of discussion on this in the Australian wikipedian space. - Reverted changes to native_name parameter.
wikitext
text/x-wiki
<includeonly>{{redirect|WP:IAP|text=For the essay, see [[Wikipedia:Ignore all precedent]] ([[WP:IAPD]])}}</includeonly>{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{High-use|1=14430 }}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:URL|Module:Check for unknown parameters|Module:Australian place map|Module:PopulationFromWikidata}}
{{Auto short description}}
__NOTOC__
<includeonly>{{Shortcut|WP:IAP}}</includeonly>
{{Infobox Australian place/pagelinks}}
== Purpose ==
{{tl|Infobox Australian place}} is used to add infoboxes to articles on places in Australian states and territories. It is not limited to populated places such as cities, towns and suburbs, but may be used on any place including regions, [[Local government in Australia|local government areas]], [[Lands administrative divisions of Australia|cadastral units]], [[protected area]]s and even some areas that do not fall into any of the preceding descriptions and for which no other infobox is appropriate. It is the standard infobox used in Australian articles. Australian articles using {{tl|Infobox settlement}} should be converted to use this infobox.
The infobox has been extensively customised for Australia and includes automation that results in some parameters being redundant to other parameters. For example, if population density (in the {{para|density}} parameter) is not specified, this will be automatically generated based on the {{para|pop}} and {{para|area}} parameters. It is therefore important to read parameter descriptions thoroughly, to avoid unnecessarily providing redundant or incorrect information.
For infoboxes that require reformatting, general cleanup or addition of missing parameters, [[Template:Infobox Australian place/cleanup]] can be [[Help:Substitution|substituted]]. This will reformat the infobox and remove invalid parameters.
== Usage ==
=== To use this template ===
#Copy the relevant blank template from the <u>'''[[Template:Infobox Australian place/Blank|Blank infobox page]]'''</u> into the beginning of your document, remembering to put the code on the line directly before the start of the article's lead.
#Enter values for the parameters as outlined under {{slink||Parameters}}, particularly {{para|type}} and {{para|state}}. Parameters left blank will automatically be hidden.
#Preview the page with your edits.
#Save the page with an appropriate edit summary (e.g., "<nowiki>Added {{[[Template:Infobox Australian place|Infobox Australian place]]}}</nowiki>", which will display as, "Added {{tl|Infobox Australian place}}" ).
=== Examples ===
* Examples of this template can be found on the [[Template:Infobox Australian place/Examples|examples page]].
== Parameters ==
Both <code>type</code> and <code>state</code> are required parameters. All other parameters used by this template are optional.
=== Required ===
These parameters must be set for every infobox as they affect the behaviour of many other parameters.
The {{para|type}} parameter sets up the template for a specific type of location. It regulates which parameters can be used and sets the colour of the top bar of the infobox. The entered values for this parameter should be plain, unlinked text.
{| class="wikitable plainrowheaders" style="background-color:white;"
|+ Use of the <code><nowiki>|</nowiki>{{visible anchor|type}}=</code> parameter
! scope="col" style="background-color: whitesmoke;" | Accepted value
! scope="col" style="background-color: whitesmoke;" | Description
! scope="col" style="background-color: whitesmoke;" width=20% | Colour of top bar<ref group=lower-alpha>Colour names per [http://www.color-blindness.com/color-name-hue the colour names given by colourblindness.com]</ref>
|-
! scope="row" | <code>city</code>
| A city. <!-- Description of the effects of "city" on the infobox needed -->
| style="background:#f9f6d2; color:#100;" | Light Goldenrod Yellow
|-
! scope="row" | <code>suburb</code>
| A suburb, a form of administrative region generally used in cities and towns.<!-- Description of "suburb" and its effects on the infobox needed -->
| style="background:#f9e2d2; color:#100;" | Antique White
|-
! scope="row" | <code>town</code>
| A town or other settlement. <!-- Description of the effects of "town" on the infobox needed -->
| style="background:#e9f9d2; color:#100;" | Snow Flurry
|-
! scope="row" | <code>lga</code>
| An [[Local government areas of Australia|Australian local government area]] (LGA) - a particular form of administrative region, used to create local governments. Many LGAs will use terms such as "Town of", "District Council of", "Shire of", "City of", etc., in their names.
Note that the ACT does not have any system of local government, and therefore does not have LGAs.<!-- Description of the effects of "lga" on the infobox needed -->
| style="background:#d2d5f9; color:#100;" | Lavender
|-
! scope="row" | <code>region</code>
| <!-- Description of "region" and its effects on the infobox needed -->
| style="background:#e6c4fb; color:#100;" | Mauve
|-
! scope="row" | <code>cadastral</code>
| <!-- Description of "cadastral" and its effects on the infobox needed -->
| style="background:#ffffe0; color:#100;" | Light Yellow
|-
! scope="row" | <code>protected</code>
| <!-- Description of "protected" and its effects on the infobox needed -->
| style="background:transparent; color:#100;" | No colour
<small>(An [[IUCN protected area categories|IUCN category]] can be used to display a coloured banner - see {{slink||IUCN categories for protected areas}}.)</small>
|-
! scope="row" | <code>other</code>
| <!-- Description of "other" and its effects on the infobox needed -->
| style="background:transparent; color:#100;" | No colour
|-
! scope="row" | ''undefined''
| Occurs when the parameter has been left blank.<!-- Description of the effects of an undefined type on the infobox needed -->
| style="background:#ccc; color:#100;" | Very Light Grey
|}
{{reflist|group=lower-alpha}}
The {{para|state}} parameter defines the state or territory of the infobox's location. It sets up the template to refer to and link to the correct state or territory throughout. The entered values for this parameter should be plain, unlinked text; for consistency, lower case is preferred. If the parameter is left blank, the infobox will default to <code>au</code> (i.e., Australia).
{| class="wikitable plainrowheaders" style="background-color:white;"
|+ Use of the <code><nowiki>|</nowiki>{{visible anchor|state}}=</code> parameter
! scope="col" style="background-color: whitesmoke;" | Accepted value
! scope="col" style="background-color: whitesmoke;" | State or territory
|-
! scope="row" | <code>act</code>
| [[Australian Capital Territory]] (ACT)
|-
! scope="row" | <code>nsw</code>
| [[New South Wales]] (NSW)
|-
! scope="row" | <code>nt</code>
| [[Northern Territory]] (NT)
|-
! scope="row" | <code>qld</code>
| [[Queensland]] (Qld or QLD)
|-
! scope="row" | <code>sa</code>
| [[South Australia]] (SA)
|-
! scope="row" | <code>tas</code>
| [[Tasmania]] (Tas or TAS)
|-
! scope="row" | <code>vic</code>
| [[Victoria (Australia)|Victoria]] (Vic or VIC)
|-
! scope="row" | <code>wa</code>
| [[Western Australia]] (WA)
|-
! scope="row" | <code>jbt</code>
| [[Jervis Bay Territory]] (JBT)
|-
! scope="row" | <code>ni</code>
| [[Norfolk Island]] (NI)
|-
! scope="row" | <code>au</code>
| [[Australia]] - use when no other value is applicable.
|}
=== Optional ===
{| class="wikitable plainrowheaders" style="background-color: white; width:100%;"
|+ Optional parameters
! scope="col" style="background-color: whitesmoke;" | Parameter
! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}}
! scope="col" style="background-color: whitesmoke;" | Description
! scope="col" style="background-color: whitesmoke;" | Notes
! scope="col" style="background-color: whitesmoke;" | Potential sources
! scope="col" style="background-color: whitesmoke;" | Values
|-
! scope="row" | name
| all
| Name of infobox's place
| <!-- Notes -->
| <!-- Potential sources -->
| Plain text.
If this parameter is not present in the article, the template will use the name of the article. If the parameter exists, but the place name is not defined, the infobox title will be blank.
|-
! scope="row" | native_name
| all
| Placename in local Indigenous Australian language(s)
| Name of a place in the local Aboriginal or Torres Strait Islander language, if different from name.
''Native'' is a deprecated archaic term in the Australian context, but is used in this template for consistency with other templates. Please don't use the term in articles.
| <!-- Potential sources -->
| plain text
|-
! scope="row" | native_name_lang
| all
| [[ISO 639-1]] code, e.g. nys for [[Noongar language|Noongar]], for the Indigenous Australian language, if available
| If there are names in multiple Indigenous Australian languages, enter those names into the {{para|native_name}} parameter using <nowiki>{{lang}}</nowiki> instead.{{pb}}''Native'' is a deprecated archaic term in the Australian context, but is used in this template for consistency with other templates. Please don't use the term in articles.{{pb}}'''Prerequisite parameters:'''
*native_name
| <!-- Potential sources -->
| plain text
|-
! scope="row" | city
| ??{{pb}}(recommended for suburb)
| City name
| Name will be auto-linked if no wikilink is defined.{{pb}}In some cases it may be desirable to include the name of a non-city here.
| [[List of cities in Australia]]
| plain text, may be linked.
|-
! scope="row" | iucn_category
| protected
| The [[World Commission on Protected Areas#IUCN Categories of Protected Area|International Union for Conservation of Nature (IUCN) category]] applicable to the [[protected area]].
| For more information on how this parameter is displayed, see [[#IUCN categories for protected areas|IUCN categories]] below.
| <!-- Potential sources -->
| Plain text, do not wikilink. Accepted values are:
* Ia
* Ib
* II
* III
* IV
* V
* VI
|-
! scope="row" | iucn_ref
| protected
| A reference demonstrating the IUCN category
| '''Prerequisite parameters:'''
* <code>iucn_category</code>
| <!-- Potential sources -->
| Wikitext (can contain links).{{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and a citation template
|-
! scope="row" | image
| all
| Image of the locality
| For cadastral units, this is typically a map showing its location within the state or territory.
| <!-- Potential sources -->
| filename
|-
! scope="row" | image_upright
| all
| Width of image of the locality (in relation to default thumbnail size)
| The size should not be set to a value that would result in an image width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale.
| <!-- Potential sources -->
| Unformatted number. If not specified, the image width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]].
|-
! scope="row" | caption
| all
| Caption for the locality image
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links)
|-
! scope="row" | image_alt
| all
| [[MOS:ALT|Alt text]] for the image
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links)
|-
! scope="row" | image2
| all
| A second image of the locality
| In LGA articles this is typically used where a map of the LGA is required but the appropriate locator map template is not available in {{cl|Australia location map modules}}.
| <!-- Potential sources -->
| filename
|-
! scope="row" | image2_upright
| all
| Width of the second image of the locality (in relation to default thumbnail size)
| The size should not be set to a value that would result in an image width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale.
| <!-- Potential sources -->
| Unformatted number. If not specified, the image width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]].
|-
! scope="row" | caption2
| all
| caption for the second locality image
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links)
|-
! scope="row" | image2_alt
| all
| [[MOS:ALT|Alt text]] for the image
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links)
|-
! scope="row" | nearest_town_or_city
| protected
| nearest town or city to the area
| If the area is not within a town or city, the nearest town or city to the area can be listed here. If only one, wikilinking may be omitted as the article will be automatically linked. If there are more than one, use {{tl|Plainlist}}.
| <!-- Potential sources -->
| Wikitext (can contain links)
|-
! scope="row" | {{visible anchor|coordinates}}
| ??{{pb}}(recommended for all)
| Displays coordinates of the locality. Triggers a map to automatically generate (can be adjusted in various ways).
| {{UF-coord}}
The automatic map will be of the state, with a pushpin identifying the position specified in {{Tl|coord}}. Parameters to adjust or toggle the map are under {{slink||Locator map generated by coordinates}}. A second map can be generated using wikidata as well (see {{slink||Locator map generated by wikidata}}).
| <!-- Potential sources -->
| Example:<br /><nowiki>{{Coord|32|45|41.3|S|151|44|38.6|E|type:city_region:AU-NSW|display=inline,title}}</nowiki>
|-
! scope="row" | pop
| ??{{pb}}(recommended for all except protected)
| Population statistic (use approximate if {{para|type|region}})
| If left empty, population data will be displayed from Wikidata (for appropriate geography). See [[#PopulationFromWikidata|''Notes'' below]] for more information.
| [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| Number. should be plain, either with or without a comma. i.e. 12345 or 12,345
Do not add anything else, including years or references.
|-
! scope="row" | pop_year
| ??{{pb}}(recommended for all except protected)
| Year applicable to the population figure
| '''Prerequisite parameters:'''
* pop
|[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| Number. When the population is for a census year, use {{tl|CensusAU}}
|-
! scope="row" | pop_footnotes
| ??{{pb}}(recommended for all except protected)
| Footnote demonstrating the population statistic
| '''Prerequisite parameters:'''
* pop
|[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and {{tl|Census 2016 AUS}}
|-
! scope="row" | pop2
| ??{{pb}}(recommended for all except protected)
| Second population statistic (use approximate if {{para|type|region}})
| See [[Clarence Town, New South Wales]] for an example of when a second population figure is useful.{{pb}}'''Prerequisite parameters:'''
* pop
|[http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| Number. Should be unformatted, and can be with or without a comma. i.e. 12345 or 12,345
Do not add anything else, including years or references.
|-
! scope="row" | pop2_year
| ??{{pb}}(recommended for all except protected)
| Year applicable to the second population figure
| '''Prerequisite parameters:'''
* pop2
| [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| Number. When the population is for a census year, use {{tl|CensusAU}}
|-
! scope="row" | pop2_footnotes
| ??{{pb}}(recommended for all except protected)
| Footnote demonstrating the second population statistic
| '''Prerequisite parameters:'''
* pop2
| [http://www.abs.gov.au/ ABS] (generic)<br />[http://www.censusdata.abs.gov.au/census_services/getproduct/census/2016/quickstat/0?opendocument&navpos=220 2016 Census QuickStats]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and {{tl|Census 2016 AUS}}
|-
! scope="row" | poprank
| ??{{pb}}(recommended for city)
| population rank
| '''Prerequisite parameters:'''
* pop
| [[List of cities in Australia by population]]
| number
|-
! scope="row" | density
| all{{pb}}(recommended for city, region)
| population density
| Will auto-calculate if both pop and area are defined
|[http://www.abs.gov.au/ ABS]
| unformatted number, in people/km²
|-
! scope="row" | density_footnotes
| all{{pb}}(recommended for city, region)
| population density footnote for references
|
|[http://www.abs.gov.au/ ABS]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref></ref></nowiki> tags and a citation template
|-
! scope="row" | established
| all
| Date the location was established
| If the exact date is unknown, a year will suffice
| <!-- Potential sources -->
| date
|-
! scope="row" | established_footnotes
| all
| Reference demonstrating the establishment date
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | abolished
| all
| Date the location was abolished
| If the exact date is unknown, a year will suffice
| <!-- Potential sources -->
| date
|-
! scope="row" | gazetted
| all
| Date the place name was [[Gazetteer of Australia|gazetted]]
| <!-- Notes -->
| <!-- Potential sources -->
| date
|-
! scope="row" | postcode
| all{{pb}}(recommended for suburb, town)
| Postcode(s) for the place
| <!-- Potential sources -->
|[http://auspost.com.au/apps/postcode.html Australia Post postcode search tool]
| number
|-
! scope="row" | elevation
| all{{pb}}(recommended for suburb, town)
| The elevation, measured from sea level in metres
| <!-- Notes -->
| <!-- Potential sources -->
| unformatted number in metres
|-
! scope="row" | elevation_footnotes
| all{{pb}}(recommended for suburb, town)
| Footnote demonstrating the elevation
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | area
| all
| The area of the location
| <!-- Notes -->
| [http://www.abs.gov.au/ ABS]
| unformatted number in km<sup>2</sup>
|-
! scope="row" | area_footnotes
| all
| Footnote demonstrating the area
| <!-- Notes -->
| [http://www.abs.gov.au/ ABS]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | timezone
| all{{pb}}(recommended for city, suburb, town, lga, region)
| Timezone of the location
| See [[Time in Australia#Time zones and legislation|Time in Australia]]
| <!-- Potential sources -->
| Plain text, linked. Either the full name or the abbreviation can be used (e.g., either <code><nowiki>[[Australian Western Standard Time]]</nowiki></code> or <code><nowiki>[[Australian Western Standard Time|AWST]]</nowiki></code> can be used).
|-
! scope="row" | utc
| all{{pb}}(recommended for city, suburb, town, lga, region)
| UTC offset of the timezone
| <!-- Notes -->
| <!-- Potential sources -->
| "+" followed by number, e.g., <code>+8:00</code> (for AWST)
|-
! scope="row" | timezone-dst
| all{{pb}}(recommended for city, suburb, town, lga, region)
| Daylight saving timezone
| NT, Qld and WA are the only [[States and territories of Australia#States and territories|internal states and territories]] which do not have any daylight saving timezone.
| [[Daylight saving time in Australia]]
| Plain text, linked. Either the full name or the abbreviation can be used (e.g., either <code><nowiki>[[Australian Eastern Daylight Time]]</nowiki></code> or <code><nowiki>[[Australian Eastern Daylight Time|AEDT]]</nowiki></code> can be used).
|-
! scope="row" | utc-dst
| all{{pb}}(recommended for city, suburb, town, lga, region)
| UTC offset of the daylight saving timezone
| NT, Qld and WA are the only [[States and territories of Australia#States and territories|internal states and territories]] which do not have any daylight saving timezone.
| <!-- Potential sources -->
| "+" followed by number, e.g., <code>+11:00</code> (for AEDT)
|-
! scope="row" | mayor
| lga
| Mayor of the LGA
| Name of the mayor only. Do not include titles, postnominals or political party information.
| <!-- Potential sources -->
| Plain text
|-
! scope="row" | mayortitle
| lga
| Title of the mayor
|
| <!-- Potential sources -->
| Wikitext (can be wikilinked), or blank.
If left blank, will default to "[[Mayor]]".
|-
! scope="row" | location# (up to location5)
| all{{pb}}(recommended for city, suburb, town)
| Specified location(s) to display the distance and direction to
| Normally other cities or population centres.{{pb}}''See {{slink||Notes}} below''
| Maps such as Google Earth
| Plain text, may be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | dist# (up to dist5)
| all{{pb}}(recommended for city, suburb, town)
| The distance by road (not direct) to the specified location(s)
| Distance by road, not direct.{{pb}}''See {{slink||Notes}} below''
|Maps such as Google earth, [http://www.whereis.com.au whereis], [http://www3.visitvictoria.com/displayObject.cfm/ObjectID.0000B41D-D36D-1A88-8B4680C476A9047C/lk.Left2_3/pg.VVHomepage/vvt.vhtml Visit Victoria route planner]
| unformatted number in km
|-
! scope="row" | dir# (up to dir5)
| all{{pb}}(recommended for city, suburb, town)
| The direction (preferably cardinal) of the specified location(s), normally other cities or population centres
| ''See {{slink||Notes}} below''
| <!-- Potential sources -->
| Plain text. Normally a cardinal direction, either as an initialism (e.g. <code>N</code>, <code>SE</code>, <code>NWW</code>) or the word in lower case (per [[MOS:COMPASS]]; e.g., <code>north</code>, <code>south-east</code>, <code>north-west-west</code>).
|-
! scope="row" | lga
| all{{pb}}(recommended for city, suburb, town)
| Name of the local government area
| This parameter will display in a way that makes little sense when {{para|type|lga}}, but it can be used if necessary.
|[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board]
| Plain text, may be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | lga2{{pb}}lga3{{pb}}lga4{{pb}}lga5
| all{{pb}}(recommended for city, suburb, town)
| Names of additional LGAs
| This parameter displays in a way that makes no sense when {{para|type|lga}}, but it can be used if necessary.
If more than 5 LGAs are required, use {{tl|plainlist}} as necessary. See [https://en.wikipedia.org/w/index.php?title=Hunter_Region&oldid=615428967 Hunter Region] for an example.
| <!-- Potential sources -->
| Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | seat
| all{{pb}}(recommended for lga)
| Council seat of the LGA
| <!-- Notes -->
| <!-- Potential sources -->
| Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | region
| all{{pb}}(recommended for city, suburb, town, lga, cadastral, protected)
| Name of region location is in
| <!-- Notes -->
| <!-- Potential sources -->
| Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | county
| all{{pb}}(recommended for city, suburb, town, lga)
| Name of the county (a type of [[Lands administrative divisions of Australia|lands administrative division]])
| Not used in all areas.
|[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board]
| Plain text, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | parish
| all{{pb}}(recommended for city, suburb, town)
| Name of the parish (a type of [[Lands administrative divisions of Australia|lands administrative division]])
| Only used in NSW, Qld and Vic.
|[http://www.gnb.nsw.gov.au/place_naming/placename_search NSW Geographical Names Board]
| Plain text, can be wikilinked.
|-
! scope="row" | hundred
| cadastral
| Name of the hundred (a type of [[Lands administrative divisions of Australia|lands administrative division]])
| Not used in all areas.
| <!-- Potential sources -->
| Plain text, can be wikilinked.
|-
! scope="row" | former_hundred
| cadastral
| Former name of the hundred (a type of [[Lands administrative divisions of Australia|lands administrative division]])
| Not used in all areas.
| <!-- Potential sources -->
| Plain text, can be wikilinked.
|-
! scope="row" | division
| cadastral
| Name of the division (a type of [[Lands administrative divisions of Australia|lands administrative division]])
| Only used in NSW - [[lands administrative divisions of New South Wales]]
| <!-- Potential sources -->
| Plain text, can be wikilinked.
|-
! scope="row" | stategov{{pb}}stategov2{{pb}}stategov3{{pb}}stategov4{{pb}}stategov5{{pb}}
| all{{pb}}(recommended for city, suburb, town, lga, region)
| The place's state government electorate(s)
| <!-- Notes-->
| <!-- Potential sources -->
| Plain text, can be wikilinked.
|-
! scope="row" | fedgov{{pb}}fedgov2{{pb}}fedgov3{{pb}}fedgov4{{pb}}
| all{{pb}}(recommended for city, suburb, town, lga, region)
| The place's federal government electorate(s)
| <!-- Notes-->
| <!-- Potential sources -->
| Plain text, can be wikilinked.
|-
! scope="row" | logo
| all{{pb}}(recommended for lga)
| Logo of place
| <!-- Notes -->
| For LGAs, these can be sourced from individual LGA websites.
| Image link (do not include "File:" or "Image:")
|-
! scope="row" | logo_upright
| all{{pb}}(recommended for lga)
| Width of logo (in relation to default thumbnail size)
| The size should not be set to a value that would result in an logo width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used, and [[WP:IMGSIZE]] for rationale.
| <!-- Potential sources -->
| Unformatted number. If not specified, the logo width defaults to <code>1.23</code>, which is approximately 270px for readers that haven't changed their default thumbnail size at [[Special:Preferences]].
|-
! scope="row" | logo_alt
| all{{pb}}(recommended for lga)
| [[MOS:ALT|Alt text]] for the logo
| <!-- Notes-->
| <!-- Potential sources -->
| Wikitext, can be wikilinked.
|-
! scope="row" | visitation_num
| protected
| The number of visitors in a recent year
| <!-- Notes-->
| <!-- Potential sources -->
| Unformatted number
|-
! scope="row" | visitation_year
| protected
| The year when <code>visitation_num</code> was counted
| '''Prerequisite parameters:'''
* visitation_num
| <!-- Potential sources -->
| Unformatted year
|-
! scope="row" | visitation_footnotes
| protected
| Footnote demonstrating the number of visitors
| '''Prerequisite parameters:'''
* visitation_num
| <!-- Potential sources -->
| Wikitext, can be wikilinked.{{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | managing_authorities
| protected
| authority that manages the area
| Name of the authority or organisation that manages the area.
| <!-- Potential sources -->
| Wikitext, can be wikilinked. If no wikilink is given, the text will be automatically wikilinked.
|-
! scope="row" | url
| all{{pb}}(recommended for lga, protected)
| URL for the location's individual website
| Do not use for former LGAs
| <!-- Potential sources -->
| Bare url, e.g., http://www.example.com
|-
! scope="row" | maxtemp
| all{{pb}}(recommended for suburb, town)
| Maximum average annual temperature
| <!-- Notes -->
| [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| unformatted number, in °C
|-
! scope="row" | maxtemp_footnotes
| all{{pb}}(recommended for suburb, town)
| Footnote demonstrating the maximum temperature
| <!-- Potential sources -->
| [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| Wikitext, can contain templates, html, wikilinks, external links, etc.{{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | mintemp
| all{{pb}}(recommended for suburb, town)
| Minimum average annual temperature
| <!-- Notes -->
|[http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| unformatted number, in °C
|-
! scope="row" | mintemp_footnotes
| all{{pb}}(recommended for suburb, town)
| Footnote demonstrating the minimum temperature
| <!-- Notes -->
|[http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | rainfall
| all{{pb}}(recommended for suburb, town)
| Average annual rainfall
| <!-- Notes -->
| [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| unformatted number, in mm
|-
! scope="row" | rainfall_footnotes
| all{{pb}}(recommended for suburb, town)
| Footnote demonstrating the annual rainfall
| <!-- Notes -->
| [http://www.bom.gov.au/climate/data/ Bureau of Meteorology's climate data]
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags and a citation template
|-
! scope="row" | near-n{{pb}}near-ne{{pb}}near-e{{pb}}near-se{{pb}}near-s{{pb}}near-sw{{pb}}near-w{{pb}}near-nw
| all{{pb}}(recommended for suburb, lga)
| Neighbours which share borders with the infobox's location
| It is best when all listed neighbours are of the same type (e.g., suburbs around a suburb). When the place of a neighbour is instead taken by something like an ocean or another state/territory, include it in italics.
| <!-- Potential sources -->
| Plain text, linked. Can be formatted.
For example, the LGA of the [[City of Melville]] has a neighbour to its east, the [[City of Canning]]. Canning would be entered as <code><nowiki>|near-e=[[City of Canning]]</nowiki></code> (or <code><nowiki>[[City of Canning|Canning]]</nowiki></code>, to save space). The City of Melville is also neighboured at its north by the [[Swan River (Western Australia)]]. This would be entered as <code><nowiki>|near-n=''[[Swan River (Western Australia)|Swan River]]''</nowiki></code> (in italics as it is not another LGA)
|-
! scope="row" | near
| all{{pb}}(recommended for suburb, lga)
| Central to neighbours
| Replaces name (best used without any near-* e.g. to specify a section link to the main text for further info)
| <!-- Potential sources -->
| plain text, link (ideally to a section of the article with further information)
|-
! scope="row" | footnotes
| all
| General footnotes, used to provide footnotes supporting information in parameters without a dedicated parameter for footnotes.
| <!-- Notes -->
| <!-- Potential sources -->
| wikitext (can contain links){{pb}}Best when used with <nowiki><ref> </ref></nowiki> tags.
|-
! scope="row" | _noautocat
| all
| Prevents automatic categorisation
| This should only be used when absolutely necessary, when the automatic categorisation built into this template causes errors. A hidden note should be included to explain why the parameter is being used in the article.
| <!-- Potential sources -->
| "yes" to not categorise
leave blank to categorise
|}
==== Locator map generated by coordinates ====
The recommended and most common locator map is auto-generated by {{para|coordinates}}, but can be toggled off using {{para|map_type|nomap}} (see in table). All of the following parameters require {{para|coordinates}} to be properly set using {{tl|coord}}.
{| class="wikitable plainrowheaders" style="background-color: white; width:100%;"
|+ {{tl|coord}}-generated map
! scope="col" style="background-color: whitesmoke;" | Parameter
! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}}
! scope="col" style="background-color: whitesmoke;" | Description
! scope="col" style="background-color: whitesmoke;" | Notes
! scope="col" style="background-color: whitesmoke;" | Values
|-
! scope="row" | coordinates
! colspan="5" | See {{slink||coordinates}} for details
|-
! scope="row" | map_alt
| all
| [[MOS:ALT|Alt text]] for the location map
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| wikitext (can contain links)
|-
! scope="row" | map_type
| all
| Toggles whether a location map is automatically generated
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| Available options are:
* <code>nomap</code> to suppress automatically generated location map
* <code>auto</code> or leave it blank, to allow the automatically generated location map
|-
! scope="row" | map_scale
| all
| Changes scale of map from the default
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| Unformatted number. See {{tl|coord}} for examples.
|-
! scope="row" | force_national_map
| all{{pb}}(recommended for city, region, protected)
| Forces locator map to use a map of Australia as a whole
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| <code>yes</code> to force map of Australia, or leave blank. Plain text, do not link<!-- Anything in this parameter will force the Australian map to be used. For consistency though, let's force people to use something simple and obvious. -->
|-
! scope="row" | use_lga_map
| all{{pb}}(recommended for suburb, lga, protected)
| Forces locator map to use the LGA's map which is available to [[Module:Location map]]
| First confirm whether there is a map for that LGA - see [[:Category:Australia location map modules]].{{pb}}'''Prerequisite parameters:'''
* <code>coordinates</code>
* <code>state</code>
* <code>lga</code>
| <code>yes</code> to force map of the LGA, or leave blank<!-- Anything in this parameter will force the LGA map to be used. For consistency though, let's force people to use something simple and obvious. -->
|-
! scope="row" | alternative_location_map
| all
| Forces the locator map to use an alternative map available to [[Module:Location map]]
| It can be used to display an LGA map in infoboxes where {{para|lga}} cannot be set.{{pb}}'''Prerequisite parameters:'''
* <code>coordinates</code>
| Name of the alternative map ([[:Category:Australia location map modules]] includes all available maps)
|-
! scope="row" | relief
| all
| Forces relief-style map, if available
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| <code>yes</code> to force relief-style map, or leave blank<!-- Anything in this parameter will force the relief map to be used. For consistency though, let's force people to use something simple and obvious. -->
|-
! scope="row" | pushpin_map_caption
| all
| The caption on the pushpin (the location of the coordinates)
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| Plain text or wikitext
|-
! scope="row" | pushpin_label_position
| all
| Position of the pushpin's caption, in relation to the pushpin
| '''Prerequisite parameters:'''
* <code>coordinates</code>
| <code>left</code>, <code>right</code>, <code>top</code>, <code>bottom</code>{{pb}}If this is not set, the default is <code>left</code>
|}
==== Locator map generated by wikidata ====
A second map can be generated using pre-defined [[wikidata]]. This can either replace, or be in addition to, the map generated by the <code>|coordinates=</code> parameter. It will display below the {{slink||Locator map generated by coordinates}} map.
{| class="wikitable plainrowheaders" style="background-color: white; width:100%;"
|+ [[Wikidata]]-generated map
! scope="col" style="background-color: whitesmoke;" | Parameter
! scope="col" style="background-color: whitesmoke;" | Available for {{para|type}}
! scope="col" style="background-color: whitesmoke;" | Description
! scope="col" style="background-color: whitesmoke;" | Notes
! scope="col" style="background-color: whitesmoke;" | Values
|-
! scope="row" | local_map
| all
| Enable map of local area, as defined by wikidata
| This map will display below the map generated by <code><nowiki>|</nowiki>coordinates=</code> if that map is also present. For the map to display properly, the current location must be connected to a [[wikidata]] entry and a map border must have been created on [[OpenStreetMap]].
| <code>yes</code> will display the map
|-
! scope="row" | zoom
| all
| Change zoom size of local_map
| For more information, see {{tl|Infobox mapframe}} instructions.{{pb}}'''Prerequisite parameters:'''
* <code>local_map</code>
| Numeric value between <code>1</code> and <code>18</code>. If left blank, zoom size defaults to <code>10</code>.
|-
! scope="row" | local_map_id
| all{{pb}}(recommended for other)
| Wikidata ID for the location, if the infobox is on an article that does not connect to the location's wikidata entry
| Search [https://www.wikidata.org Wikidata] for an ID{{pb}}'''Prerequisite parameters:'''
* <code>local_map</code>
| An unlinked wikidata ID, e.g. <code>Q595259</code> for [[Raymond Terrace]]. The ID will begin with "Q".
|}
== Notes ==
===IUCN categories for protected areas===
Depending on the value given for {{para|iucn_category}}, one of the following banners will be displayed below the name. Valid values are Ia, Ib, II, III, IV, V and VI. For more information read the [[IUCN protected area categories]] article.
{| style="border:1px solid gray; width:300px; font-size: 90%; text-align: center; line-height: 1.5;"
|-
| {{IUCN banner|Ia}}
|-
| {{IUCN banner|Ib}}
|-
| {{IUCN banner|II}}
|-
| {{IUCN banner|III}}
|-
| {{IUCN banner|IV}}
|-
| {{IUCN banner|V}}
|-
| {{IUCN banner|VI}}
|}
<section begin=image_upright />
=== Calculating "image_upright" ===
The <code>image_upright</code> parameter, and <code>image2_upright</code> and <code>logo_upright</code> where applicable, is/are provided so as to facilitate the use of scalable images in this infobox, in accordance with the instructions at [[WP:IMAGESIZE]], which advises against the use of "px" (for example: <code>thumb|300px</code>), as this forces a fixed image width.
Scalable images respect the user's base preference, which may have been selected for that user's particular devices. [[Module:InfoboxImage]], which is used in this infobox, accommodates the use of scaling. However, setting the appropriate scale is slightly more complex than setting a raw "px" value. This guide provides a quick conversion table to make the process of setting a scale easier. It is based on a default thumbnail setting of 220px. <!-- This is not a real sentence in any way: (size is default multiplied by upright value then rounded to nearest 10) -->
{{div col|colwidth=20em}}
{{startplainlist}}
* <code><nowiki>170px</nowiki></code> → <code><nowiki>upright=0.75</nowiki></code>
* <code><nowiki>180px</nowiki></code> → <code><nowiki>upright=0.8</nowiki></code>
* <code><nowiki>190px</nowiki></code> → <code><nowiki>upright=0.85</nowiki></code>
* <code><nowiki>200px</nowiki></code> → <code><nowiki>upright=0.9</nowiki></code>
* <code><nowiki>210px</nowiki></code> → <code><nowiki>upright=0.95</nowiki></code>
* <code><nowiki>220px</nowiki></code> → <code><nowiki>upright=1</nowiki></code>
* <code><nowiki>230px</nowiki></code> → <code><nowiki>upright=1.05</nowiki></code>
* <code><nowiki>240px</nowiki></code> → <code><nowiki>upright=1.1</nowiki></code>
* <code><nowiki>250px</nowiki></code> → <code><nowiki>upright=1.15</nowiki></code>
* <code><nowiki>260px</nowiki></code> → <code><nowiki>upright=1.2</nowiki></code>
* <code><nowiki>270px</nowiki></code> → <code><nowiki>upright=1.23</nowiki></code>
* <code><nowiki>280px</nowiki></code> → <code><nowiki>upright=1.25</nowiki></code>
* <code><nowiki>290px</nowiki></code> → <code><nowiki>upright=1.3</nowiki></code>
* <code><nowiki>300px</nowiki></code> → <code><nowiki>upright=1.35</nowiki></code>
{{endplainlist}}
{{div col end}}<section end=image_upright />
=== Footnote and reference parameters ===
Any references to support a parameter reserved solely for a numeric value should be placed within the respective {{para|..._footnotes}} or {{para|..._ref}} parameters. For example, place the reference used for the area of City X in the {{para|area_footnotes}} parameters and not in the {{para|area}} parameter. Otherwise, an error may result.
=== Unformatted numbers and expression errors ===
Certain parameters require numeric values to be entered in an unformatted/raw fashion—i.e. 1000.0 ''not'' 1,000.0. If an expression error is present, simply remove any commas or spaces from the number.
<!-- === Maps ===
For some locations this infobox supports the display of links to the popular web mapping services Google and Bing. However, in order for this to function a valid map page containing a [[Keyhole Markup Language|KML]] format map must exist. As KML files cannot currently be uploaded, the text of those files must be copied into a Wikipedia page. By default, the infobox uses a file name with the same title as the article at the location <code>Template:Infobox Australian place/mapdata/<place name></code> e.g. [[Raymond Terrace, New South Wales]] uses [[Template:Infobox Australian place/mapdata/Raymond Terrace, New South Wales]]. A list of currently available maps may be found [[Template:Infobox Australian place/mapdata|here]]. -->
=== Dist#, Dir# and Location# ===
This is the distance and approximate direction to another location. The '#' is replaced with a number between 1 and 5. Therefore, five locations can be listed, using {{para|location1}} through {{para|location5}}. The distances can be listed using {{para|dist1}} through {{para|dist5}}. Direction from the locations is optional, and can be specified using {{para|dir1}} through {{para|dir5}}.
=== Population from Wikidata {{anchor|PopulationFromWikidata}} ===
If the {{para|pop}} parameter is left empty or not supplied, the template will attempt to retrieve population data from Wikidata. For more information, see the documentation of [[Module:PopulationFromWikidata]]. This is a new feature as of June 2022 (to coincide with the release of the 2021 Australian Census data). Please report any feedback to [[Template talk:Infobox Australian place]].
== Where to find information ==
* [[Wikipedia:WikiProject Australian places#Useful Resources]]
* [http://www.abs.gov.au/ Australian Bureau of Statistics]
* [http://alga.asn.au/?ID=7030&Menu=56,199,415 LGA links for each state]
* [http://www.bom.gov.au/climate/data/ Climate Data Online at the Bureau of Meteorology]
== Tracking categories ==
* {{Category link with count|Australian place articles using Wikidata population values}} – articles that display population values from Wikidata, rather than directly via the {{para|pop}} parameter.
=== Deprecated parameters ===
* {{Category link with count|Australian place articles using missing parameters}} – articles that include deprecated parameters are automatically added. As of 5 April 2016, the tracked parameters are {{para|imagesize}}, {{para|image2size}}, {{para|imagesize2}}, {{para|image_alt2}}, {{para|logosize}} and {{para|official_site}}.
=== Errors ===
* {{Category link with count|Australian place articles using missing parameters}} – articles that contain general errors are automatically added.
* {{Category link with count|Australian place articles with no population year}} – articles missing {{para|pop_year}} or {{para|pop2_year}} parameters are automatically added.
* {{Category link with count|Australian place articles with no population footnotes}} – articles missing {{para|pop_footnotes}} or {{para|pop2_footnotes}} parameters are automatically added.
* {{Category link with count|Australian place articles with density errors}}
* {{Category link with count|Pages using infobox Australian place with unknown parameters}} – articles using parameters that are not included in the infobox. This category may include articles with incorrectly spelled parameters.
=== Temporary ===
* {{Category link with count|Pages using infobox Australian place with non-lga type and suppressed location map}}
* {{Category link with count|Pages using infobox Australian place with lga type and location map}}
* {{Category link with count|Pages using infobox Australian place with an implicitly suppressed location map}}
* {{Category link with count|Pages using infobox Australian place with an explicitly suppressed location map}}
== Subpages ==
: [[Template:Infobox Australian place]]
: [[Template:Infobox Australian place/Blank]]
: [[Template:Infobox Australian place/Examples]]
: [[Template:Infobox Australian place/doc]]<!--
: [[Template:Infobox Australian place/KML]] -->
: [[Template:Infobox Australian place/sandbox]]
: [[Template:Infobox Australian place/sandbox/doc]]
: [[Template:Infobox Australian place/testcases]]
<!-- All subpages
{{Special:PrefixIndex/Template:Infobox Australian place}} -->
== Microformat ==
{{UF-hcard-geo}}
== TemplateData ==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "Display information about a place in Australia in a standard infobox format.",
"params": {
"type": {
"label": "Type",
"description": "The type of place, which determines the look of the infobox. Can be empty or one of the following: 'city', 'suburb', 'town', 'lga', 'region', or 'cadastral'.",
"type": "string",
"required": false,
"suggestedvalues": [
"city",
"suburb",
"town",
"lga",
"region",
"cadastral",
"protected",
"other"
]
},
"name": {
"label": "Name",
"description": "The name of the place. If this parameter is left empty, the infobox title will be blank, while if this parameter is not called at all, it defaults to the name of the article.",
"type": "string",
"required": false
},
"city": {
"label": "City",
"description": "The name of the city the place is located in, which is automatically wikilinked.",
"type": "string",
"required": false
},
"state": {
"label": "State Abbreviation",
"description": "The abbreviation for the state the place in located in, which can be uppercase or lowercase.",
"type": "string",
"required": false,
"suggestedvalues": [
"sa",
"vic",
"nsw",
"qld",
"nt",
"wa",
"tas",
"act",
"jbt",
"ni",
"au"
]
},
"image": {
"label": "Image",
"description": "A filename for a generic image of the locality.",
"type": "string",
"required": false
},
"image_upright": {
"label": "Image Width",
"description": "Override the default width of the image, scalable.",
"type": "number",
"required": false
},
"caption": {
"label": "Caption",
"description": "A caption for the image.",
"type": "string",
"required": false
},
"image_alt": {
"label": "Image Alt Text",
"description": "Alt text for the image.",
"type": "string",
"required": false
},
"image2": {
"label": "Image 2",
"description": "A filename for a second image of the locality. Usually used for maps, especially in LGA articles.",
"type": "string",
"required": false
},
"image2_upright": {
"label": "Image 2 Width",
"description": "Override the default width of the second image, scalable.",
"type": "number",
"required": false
},
"caption2": {
"label": "Image 2 Caption",
"description": "A caption for the second image.",
"type": "string",
"required": false
},
"image2_alt": {
"label": "Image 2 Alt Text",
"description": "Alt text for the second image.",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"description": "Coordinates of the locality. Use {{coord}} with 'display=inlines,title'. Please don't be overly precise.",
"type": "string",
"required": false
},
"alternative_location_map": {
"label": "Locator Map Alternative Map File",
"description": "Forces the locator map to use this alternative map instead of the default state map.",
"type": "wiki-file-name",
"required": false
},
"force_national_map": {
"label": "Locator Map Set to National Map",
"description": "Set to 'yes' to force the locator map to use the Australian map instead of the default state map.",
"type": "string",
"required": false,
"example": "yes",
"default": "no",
"suggestedvalues": [
"yes",
"no"
]
},
"use_lga_map": {
"label": "Locator Map Set to LGA Map",
"description": "Set to 'yes' to force the locator map to use the LGA map instead of the default state one.",
"type": "string",
"required": false,
"example": "yes",
"default": "no",
"suggestedvalues": [
"yes",
"no"
]
},
"relief": {
"label": "Locator Map Set to Relief Map",
"description": "Set to 'yes' to make the locator map use a relief map.",
"type": "string",
"required": false,
"example": "yes",
"default": "no",
"suggestedvalues": [
"yes",
"no"
]
},
"pushpin_map_caption": {
"label": "Locator Map Pushpin Caption",
"description": "The caption for the locator map's pushpin.",
"type": "string",
"required": false,
"example": "Testville Testplace",
"default": "value of the 'name' parameter"
},
"pushpin_label_position": {
"label": "Locator Map Pushpin Label Position",
"description": "Where the caption should appear relative to the locator map's pushpin.",
"type": "string",
"default": "right",
"required": false,
"example": "top",
"suggestedvalues": [
"left",
"right",
"top",
"bottom"
]
},
"map_alt": {
"label": "Locator Map Alternative Text",
"description": "Alternative text for the locator map.",
"type": "string",
"required": false
},
"pop": {
"label": "Population",
"description": "The total population of the place. If left empty, population data will be displayed from Wikidata (for appropriate geography).",
"type": "number",
"required": false
},
"pop_year": {
"label": "Population Year",
"description": "The year in which the population measurement was taken. {{CensusAU}} may be used.",
"type": "number",
"required": false
},
"pop_footnotes": {
"label": "Population Footnotes",
"description": "Footnotes for the population figure. Please use references here.",
"type": "string",
"required": false
},
"pop2": {
"label": "Population 2",
"description": "A second total population measurement.",
"type": "number",
"required": false
},
"pop2_year": {
"label": "Population 2 Year",
"description": "The year in which the second population measurement was taken. {{CensusAU}} may be used.",
"type": "number",
"required": false
},
"pop2_footnotes": {
"label": "Population 2 Footnotes",
"description": "Footnotes for the second population figure. Please use references here.",
"type": "string",
"required": false
},
"poprank": {
"label": "Population Rank",
"description": "Only for cities. The total population rank of the city.",
"type": "number",
"required": false
},
"density": {
"label": "Population Density",
"description": "The population density of the place.",
"type": "number",
"required": false
},
"density_footnotes": {
"label": "Population Density Footnotes",
"description": "Footnotes for the population density figure. Please use references here.",
"type": "string",
"required": false
},
"established": {
"aliases": [
"est"
],
"label": "Established",
"description": "The date the place was established.",
"type": "string",
"required": false
},
"abolished": {
"label": "Abolished",
"description": "The date the place was abolished.",
"type": "string",
"required": false
},
"gazetted": {
"label": "Gazetted",
"description": "The date the place was gazetted.",
"type": "string",
"required": false
},
"postcode": {
"label": "Postcode",
"description": "The postcode of the place.",
"type": "number",
"required": false
},
"elevation": {
"label": "Elevation",
"description": "Elevation of the place above sea level in metres.",
"type": "number",
"required": false
},
"elevation_footnotes": {
"label": "Elevation Footnotes",
"description": "Footnotes for the elevation figure.",
"type": "string",
"required": false
},
"area": {
"label": "Area",
"description": "Area of the place in square kilometres.",
"type": "number",
"required": false
},
"area_footnotes": {
"label": "Area Footnotes",
"description": "Footnotes for the area figure.",
"type": "string",
"required": false
},
"timezone": {
"label": "Time Zone",
"description": "The time zone the place is located in.",
"type": "string",
"required": false
},
"utc": {
"label": "UTC Time",
"description": "The difference between UTC time and the time zone the place resides in, in the format '+' followed by a number.",
"type": "string",
"required": false
},
"timezone-dst": {
"label": "Summer Time Zone (DST)",
"description": "The summer time zone the place is located in.",
"type": "string",
"required": false
},
"utc-dst": {
"label": "Summer UTC Time (DST)",
"description": "The difference between UTC time and the time zone the place resides in in the summer, in the format '+' followed by a number.",
"type": "string",
"required": false
},
"mayor": {
"label": "Mayor",
"description": "LGA only. The name of the mayor of the LGA.",
"type": "string",
"required": false
},
"mayortitle": {
"label": "Mayor Title",
"description": "LGA only. The title of the mayor of the LGA. Defaults to 'Mayor'.",
"type": "string",
"required": false
},
"dist1": {
"label": "Distance 1",
"description": "The distance by road in kilometres from location 1 to the place.",
"type": "number",
"required": false
},
"dir1": {
"label": "Direction 1",
"description": "The compass direction from location 1 to the place. Examples are 'NW', 'E', and 'SSE'.",
"type": "string",
"required": false
},
"location1": {
"label": "Location 1",
"description": "Another location to compare with this one.",
"type": "string",
"required": false
},
"dist2": {
"label": "Distance 2",
"description": "The distance by road in kilometres from location 2 to the place.",
"type": "number",
"required": false
},
"dir2": {
"label": "Direction 2",
"description": "The compass direction from location 2 to the place. Examples are 'NW', 'E', and 'SSE'.",
"type": "string",
"required": false
},
"location2": {
"label": "Location 2",
"description": "Another location to compare with this one.",
"type": "string",
"required": false
},
"dist3": {
"label": "Distance 3",
"description": "The distance by road in kilometres from location 3 to the place.",
"type": "number",
"required": false
},
"dir3": {
"label": "Direction 3",
"description": "The compass direction from location 3 to the place. Examples are 'NW', 'E', and 'SSE'.",
"type": "string",
"required": false
},
"location3": {
"label": "Location 3",
"description": "Another location to compare with this one.",
"type": "string",
"required": false
},
"dist4": {
"label": "Distance 4",
"description": "The distance by road in kilometres from location 4 to the place.",
"type": "number",
"required": false
},
"dir4": {
"label": "Direction 4",
"description": "The compass direction from location 4 to the place. Examples are 'NW', 'E', and 'SSE'.",
"type": "string",
"required": false
},
"location4": {
"label": "Location 4",
"description": "Another location to compare with this one.",
"type": "string",
"required": false
},
"dist5": {
"label": "Distance 5",
"description": "The distance by road in kilometres from location 5 to the place.",
"type": "number",
"required": false
},
"dir5": {
"label": "Direction 5",
"description": "The compass direction from location 5 to the place. Examples are 'NW', 'E', and 'SSE'.",
"type": "string",
"required": false
},
"location5": {
"label": "Location 5",
"description": "Another location to compare with this one.",
"type": "string",
"required": false
},
"lga": {
"label": "Local Government Area (LGA)",
"description": "The name of the local government area of the place.",
"type": "string",
"required": false
},
"lga2": {
"label": "Local Government Area (LGA) 2",
"description": "Another local government area of the place.",
"type": "string",
"required": false
},
"lga3": {
"label": "Local Government Area (LGA) 3",
"description": "Another local government area of the place.",
"type": "string",
"required": false
},
"lga4": {
"label": "Local Government Area (LGA) 4",
"description": "Another local government area of the place.",
"type": "string",
"required": false
},
"lga5": {
"label": "Local Government Area (LGA) 5",
"description": "Another local government area of the place.",
"type": "string",
"required": false
},
"seat": {
"label": "Local Government Area (LGA) Seat",
"description": "The local government area's seat of government.",
"type": "string",
"required": false
},
"region": {
"label": "Region",
"description": "The region the LGA is in.",
"type": "string",
"required": false
},
"county": {
"label": "County",
"description": "The county the place is in.",
"type": "string",
"required": false
},
"parish": {
"label": "Parish",
"description": "The parish the place is in.",
"type": "string",
"required": false
},
"hundred": {
"label": "Hundred",
"description": "The hundred the place is in.",
"type": "string",
"required": false
},
"former_hundred": {
"label": "Former Hundred",
"description": "The former hundred the place is in.",
"type": "string",
"required": false
},
"division": {
"label": "Division",
"description": "The division the place is in.",
"type": "string",
"required": false
},
"localgov": {
"label": "Local Government",
"description": "The local government electorate of the place.",
"type": "string",
"required": false
},
"stategov": {
"label": "State Government",
"description": "The state government electorate of the place.",
"type": "string",
"required": false
},
"stategov2": {
"label": "State Government 2",
"description": "Another state government electorate of the place.",
"type": "string",
"required": false
},
"stategov3": {
"label": "State Government 3",
"description": "Another state government electorate of the place.",
"type": "string",
"required": false
},
"stategov4": {
"label": "State Government 4",
"description": "Another state government electorate of the place.",
"type": "string",
"required": false
},
"stategov5": {
"label": "State Government 5",
"description": "Another state government electorate of the place.",
"type": "string",
"required": false
},
"fedgov": {
"label": "Federal Government",
"description": "The federal government electorate of the place.",
"type": "string",
"required": false
},
"fedgov2": {
"label": "Federal Government 2",
"description": "Another federal government electorate of the place.",
"type": "string",
"required": false
},
"fedgov3": {
"label": "Federal Government 3",
"description": "Another federal government electorate of the place.",
"type": "string",
"required": false
},
"fedgov4": {
"label": "Federal Government 4",
"description": "Another federal government electorate of the place.",
"type": "string",
"required": false
},
"logo": {
"label": "LGA Logo",
"description": "A filename for the logo, if any, of the place's LGA.",
"type": "string",
"required": false
},
"logosize": {
"label": "LGA Logo Size",
"description": "Override the default width of the LGA logo, which is 175px.",
"type": "number",
"required": false
},
"url": {
"label": "LGA URL",
"description": "The bare URL for the place's LGA's website.",
"type": "string",
"required": false
},
"maxtemp": {
"label": "Maximum Temperature",
"description": "The maximum average annual temperature of the place in degrees Celsius.",
"type": "number",
"required": false
},
"maxtemp_footnotes": {
"label": "Maximum Temperature Footnotes",
"description": "Footnotes for the maximum temperature figure. Please use references here.",
"type": "string",
"required": false
},
"mintemp": {
"label": "Minimum Temperature",
"description": "The minimum average annual temperature of the place in degrees Celsius.",
"type": "number",
"required": false
},
"mintemp_footnotes": {
"label": "Minimum Temperature Footnotes",
"description": "Footnotes for the minimum temperature figure. Please use references here.",
"type": "string",
"required": false
},
"rainfall": {
"label": "Rainfall",
"description": "The average annual rainfall of the place in millimetres.",
"type": "number",
"required": false
},
"rainfall_footnotes": {
"label": "Rainfall Footnotes",
"description": "Footnotes for the rainfall figure.",
"type": "string",
"required": false
},
"near": {
"label": "Central Near Grid",
"description": "Replace the default text in the center of the 'Near' grid (the name of the place).",
"type": "string",
"required": false
},
"near-n": {
"label": "North Near Grid",
"description": "The nearest neighbour of the place to the north.",
"type": "string",
"required": false
},
"near-ne": {
"label": "Northeast Near Grid",
"description": "The nearest neighbour of the place to the northeast.",
"type": "string",
"required": false
},
"near-e": {
"label": "East Near Grid",
"description": "The nearest neighbour of the place to the east.",
"type": "string",
"required": false
},
"near-se": {
"label": "Southeast Near Grid",
"description": "The nearest neighbour of the place to the southeast.",
"type": "string",
"required": false
},
"near-s": {
"label": "South Near Grid",
"description": "The nearest neighbour of the place to the south.",
"type": "string",
"required": false
},
"near-sw": {
"label": "Southwest Near Grid",
"description": "The nearest neighbour of the place to the southwest.",
"type": "string",
"required": false
},
"near-w": {
"label": "West Near Grid",
"description": "The nearest neighbour of the place to the west.",
"type": "string",
"required": false
},
"near-nw": {
"label": "Northwest Near Grid",
"description": "The nearest neighbour of the place to the northwest.",
"type": "string",
"required": false
},
"native_name": {
"label": "Native name",
"description": "Name in the local language if different to 'name'.",
"type": "line"
},
"native_name_lang": {
"label": "Native name language",
"description": "ISO 639-1 code for the native language, e.g. \"fr\" for French.",
"type": "string"
},
"local_map": {
"label": "Local Map Enabled",
"description": "Set to 'yes' to display an additional map showing the OpenStreetMap relation from the related Wikidata item. If no OpenStreetMap relation is specified, a point is shown from the coordinates of the related Wikidata item instead. This additional map is typically useful for showing the boundaries of area features such as administrative regions and national parks, or showing the extent of linear features such as roads and railways.",
"example": "yes",
"type": "string",
"default": "no",
"suggested": true,
"suggestedvalues": [
"yes",
"no"
]
},
"zoom": {
"label": "Local Map Zoom Level",
"description": "Defines a zoom level for the local map between level 1 (whole world) to 18 (smallest area). Most common zoom levels are between 7 (a large national park) and 13 (a school campus). If this field is not specified, the local map guesses a zoom level however the guess is typically not suitable.",
"example": "10",
"type": "number",
"suggestedvalues": [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18"
],
"default": "10",
"suggested": true
},
"local_map_id": {
"label": "Local Map Wikidata Item ID",
"description": "A manually selected Wikidata Item (QID) from which an OpenStreetMap Relation will be extracted for display on the local map. If this value is blank (default), the Wikidata Item associated with the page using this template will be used.",
"example": "Q402",
"type": "string"
}
},
"paramOrder": [
"type",
"name",
"city",
"state",
"image",
"image_upright",
"caption",
"image_alt",
"image2",
"image2_upright",
"caption2",
"image2_alt",
"coordinates",
"alternative_location_map",
"force_national_map",
"use_lga_map",
"relief",
"pushpin_map_caption",
"pushpin_label_position",
"map_alt",
"local_map",
"zoom",
"local_map_id",
"pop",
"pop_year",
"pop_footnotes",
"pop2",
"pop2_year",
"pop2_footnotes",
"poprank",
"density",
"density_footnotes",
"established",
"abolished",
"gazetted",
"postcode",
"elevation",
"elevation_footnotes",
"area",
"area_footnotes",
"timezone",
"utc",
"timezone-dst",
"utc-dst",
"mayor",
"mayortitle",
"dist1",
"dir1",
"location1",
"dist2",
"dir2",
"location2",
"dist3",
"dir3",
"location3",
"dist4",
"dir4",
"location4",
"dist5",
"dir5",
"location5",
"lga",
"lga2",
"lga3",
"lga4",
"lga5",
"seat",
"region",
"county",
"parish",
"hundred",
"former_hundred",
"division",
"localgov",
"stategov",
"stategov2",
"stategov3",
"stategov4",
"stategov5",
"fedgov",
"fedgov2",
"fedgov3",
"fedgov4",
"logo",
"logosize",
"url",
"maxtemp",
"maxtemp_footnotes",
"mintemp",
"mintemp_footnotes",
"rainfall",
"rainfall_footnotes",
"near",
"near-n",
"near-ne",
"near-e",
"near-se",
"near-s",
"near-sw",
"near-w",
"near-nw",
"native_name",
"native_name_lang"
]
}
</templatedata>
{{Collapse bottom}}
<includeonly>{{Sandbox other|
| <!-- Categories below this line, please; interwikis at Wikidata -->
{{DEFAULTSORT:Australian Place}}
[[Category:Australia place infobox templates|Place]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
d32b4fce289c979249afae747ae78d34bcffb3b5
Module:Person height
828
181
415
2023-07-03T19:22:01Z
wikipedia>Frietjes
0
fix for leading zero
Scribunto
text/plain
-- This module implements [[Template:Infobox person/height]]
local p = {}
local function splitsuffix(s)
local suffix = ''
if mw.ustring.match(s,'^(.-)(<sup.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2')
s = a
suffix = b .. suffix
end
if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2')
s = a
suffix = b .. suffix
end
return s, suffix
end
local function clean(s)
s = mw.ustring.gsub(s, '[Mm]etre', 'm')
s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param"
s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm"
s = mw.ustring.gsub(s, 'ms', 'm')
s = mw.ustring.gsub(s, 'm[%.,]', 'm')
s = mw.ustring.gsub(s, '[Ff]eet', 'ft')
s = mw.ustring.gsub(s, 'foot', 'ft')
s = mw.ustring.gsub(s, 'ft[%.,]', 'ft')
s = mw.ustring.gsub(s, '[Ii]nches', 'in')
s = mw.ustring.gsub(s, '[Ii]nch', 'in')
s = mw.ustring.gsub(s, 'ins', 'in')
s = mw.ustring.gsub(s, 'in[%.,]', 'in')
s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]')
s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1 cm')
s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1 m')
s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1 ft')
s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1 in')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in')
s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in')
return s
end
local function isnumber(s)
if s then
s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '')
s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5')
return tonumber(s)
end
return nil
end
local function trimspace(s)
if s then
s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')
end
return s
end
local function force_unit(s, t)
s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★')
if (t == 'cm') then
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1')
else
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
end
s = mw.ustring.gsub(s, '★', ' ')
return s
end
local function get_convert_args(s, prefer, enforce, ri)
local prefer_m = (prefer or '') == 'm'
local force_m = (enforce or '') == 'm'
local prefer_cm = (prefer or '') == 'cm'
local force_cm = (enforce or '') == 'cm'
ri = (ri or '') == 'cmin' and 'cmin' or ''
unconverted = clean(s or '') -- basic unit cleaning
s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ')
local m = mw.ustring.find(s, 'm')
local c = mw.ustring.find(s, 'cm')
local f = mw.ustring.find(s, 'ft')
local i = mw.ustring.find(s, 'in')
if m == nil and f == nil and i == nil then
return '', unconverted
end
local adj = nil
if c ~= nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, c - 1)
if isnumber(n) then
if force_m then
local prec = require("Module:Math")._precision(trimspace(n))
adj = (prec == 1) and 'ri3' or 'ri2'
end
if ri ~= '' then
adj = force_m and 'ri2' or 'ri0'
end
return force_m
and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj}
or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2)
end
return '', unconverted
end
if m ~= nil and c == nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, m - 1)
if ri ~= '' then
adj = force_cm and 'ri0' or 'ri2'
end
if isnumber(n) then
return force_cm
and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj}
or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1)
end
return '', unconverted
end
if f ~= nil and i ~=nil and m == nil then
local n1 = mw.ustring.sub(s, 1, f - 1)
local n2 = mw.ustring.sub(s, f+2, i - 1)
if isnumber(n1) and isnumber(n2) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj}
or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if f ~= nil and i == nil and m == nil then
local n = mw.ustring.sub(s, 1, f - 1)
if isnumber(n) then
if ri ~= '' then
local n2 = 12*(n - math.floor(n))
adj = 'ri0'
return (force_m or prefer_m)
and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj}
or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2)
end
return (force_m or prefer_m)
and {n,'ft','m',2,['abbr']='on'}
or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2)
end
return '', unconverted
end
if i ~= nil and f == nil and m == nil then
local n = mw.ustring.sub(s, 1, i - 1)
if isnumber(n) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n,'in','m',2,['abbr']='on'}
or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if force_cm and c == nil then
return '', force_unit(unconverted, 'cm')
end
if force_m and c ~= nil then
return '', force_unit(unconverted, 'm')
end
return '', unconverted
end
function convert(frame, args)
local str, suffix = splitsuffix(args[1] or '')
local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '')
str = str .. suffix
if type(targs) == 'table' then
return frame:expandTemplate{ title = 'convert', args = targs} .. str
else
return str
end
end
function p.main(frame)
return convert(frame, frame.args[1] and frame.args or frame:getParent().args)
end
return p
eae45d697c1881086eab11f622b4400e5c177c63
Template:Blockquote
10
872
1934
2023-07-04T03:35:03Z
wikipedia>SMcCandlish
0
Changing thin-space to hair space per talk page request and MoS
wikitext
text/x-wiki
<templatestyles src="Template:Blockquote/styles.css" /><!--
--><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}|{{#if:{{{multiline|}}}|<nowiki />}}
<div class="templatequotecite">— <cite>{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in }}{{Comma separated entries
| {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}}
| {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}}
| {{if empty|{{{source|}}}|{{{4|}}}}}
}}</cite></div>
}}</blockquote>{{#if:{{{id|}}}{{{diff|}}}{{{4|}}}{{{5|}}}|{{main other|[[Category:Pages incorrectly using the Blockquote template]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | diff | id | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude>
{{documentation}}<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
c632821e7bef1789e3468f7b0c68e29a93f72a62
Module:Location map
828
1395
2730
2023-07-04T08:09:33Z
w>TheDJ
0
Avoid resizing on mobile skin and make scrollable instead
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief and map('image1') ~= '' then
return map('image1')
else
return map('image')
end
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noviewer noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:addClass('od')
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
7291f35931f7e18eb3de0e5668f94abf73d34135
Template:Infobox officeholder
10
238
2439
2023-07-05T19:38:25Z
w>SWinxy
0
[[Template:DPP]] and [[Template:KMT]] are being transcluded onto ~100k pages, when that isn't necessary (transclusions in articles have been replaced)
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| bodyclass = vcard {{{bodyclass|}}}
| bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}}
| child = {{lc:{{{embed}}}}}
| abovestyle = font-size: 100%;
| above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!--
--><div class="fn" style="font-size:125%;">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div><!--
-->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}}|<div class="honorific-suffix" style="font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}}
| subheaderstyle = font-size:125%; font-weight:bold;
| subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes||{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}}}}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image name|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_name_alt|}}}|suppressplaceholder=yes}}
| image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{smallimage|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{smallimage_alt|}}}|suppressplaceholder=yes}}
| captionstyle = line-height:normal;padding-top:0.2em;
| caption{{#if:{{{smallimage|}}}|3|{{#if:{{{image name|}}}|2}}}} = {{{caption|}}}
| headerstyle = {{#ifeq:{{lc:{{{embed}}}}}|yes|background:#eee|background:lavender}}
| data1 =
{{#if:{{{speaker|}}}|
{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname2|}}}
| 1namedata = {{{1namedata2|}}}
| 2blankname = {{{2blankname2|}}}
| 2namedata = {{{2namedata2|}}}
| 3blankname = {{{3blankname2|}}}
| 3namedata = {{{3namedata2|}}}
| 4blankname = {{{4blankname2|}}}
| 4namedata = {{{4namedata2|}}}
| 5blankname = {{{5blankname2|}}}
| 5namedata = {{{5namedata2|}}}
| alongside = {{{alongside2|}}}
| ambassador_from = {{{ambassador_from2|}}}
| appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }}
| assembly = {{{assembly2|}}}
| assuming = {{{assuming2|}}}
| chancellor = {{{chancellor2|}}}
| co-leader = {{{co-leader2|}}}
| constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }}
| constituency = {{{constituency2|}}}
| convocation = {{{convocation2|}}}
| country = {{{country2|}}}
| deputy = {{{deputy2|}}}
| district = {{{district2|}}}
| firstminister = {{{firstminister2|}}}
| governor-general = {{{governor-general2|}}}
| governor_general = {{{governor_general2|}}}
| governor = {{{governor2|}}}
| jr/sr = {{{jr/sr2|}}}
| jr/sr and state = {{{jr/sr and state2|}}}
| leader = {{{leader2|}}}
| legislature = {{{legislature2|}}}
| lieutenant_governor = {{{lieutenant_governor2|}}}
| lieutenant = {{{lieutenant2|}}}
| majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }}
| minister_from = {{{minister_from2|}}}
| minority_floor_leader = {{{minority_floor_leader2|}}}
| majority_floor_leader = {{{majority_floor_leader2|}}}
| majority = {{{majority2|}}}
| minister = {{{minister2|}}}
| minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }}
| monarch = {{{monarch2|}}}
| nominator = {{{nominator2|}}}
| office = {{{office2|}}}
| order = {{{order2|}}}
| parliament = {{{parliament2|}}}
| parliamentarygroup = {{{parliamentarygroup2|}}}
| predecessor = {{{predecessor2|}}}
| preceding = {{{preceding2|}}}
| preceded = {{{preceded2|}}}
| premier = {{{premier2|}}}
| president = {{{president2|}}}
| primeminister = {{{primeminister2|}}}
| riding = {{{riding2|}}}
| speaker = {{{speaker|}}}
| speaker_office = {{{speaker_office|}}}
| state_assembly = {{{state_assembly|}}}
| state_delegate = {{{state_delegate|}}}
| state_house = {{{state_house|}}}
| state_legislature = {{{state_legislature|}}}
| state_senate = {{{state_senate|}}}
| state = {{{state|}}}
| subterm = {{nobold|{{{subterm|}}}}}
| suboffice = {{{suboffice|}}}
| succeeded = {{{succeeded2|}}}
| succeeding = {{{succeeding2|}}}
| successor = {{{successor2|}}}
| taoiseach = {{{taoiseach2|}}}
| termlabel = {{{term_label2|{{{termlabel2|In office}}}}}}
| termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}}
| termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}}
| term = {{{term2|}}}
| title = {{{title2|}}}
| vicegovernor = {{{vicegovernor2|}}}
| vicepresident = {{{vicepresident2|}}}
| vicepremier = {{{vicepremier2|}}}
| viceprimeminister = {{{viceprimeminister2|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term|}}}
}}}}}}<!--
-->{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname|}}}
| 1namedata = {{{1namedata|}}}
| 2blankname = {{{2blankname|}}}
| 2namedata = {{{2namedata|}}}
| 3blankname = {{{3blankname|}}}
| 3namedata = {{{3namedata|}}}
| 4blankname = {{{4blankname|}}}
| 4namedata = {{{4namedata|}}}
| 5blankname = {{{5blankname|}}}
| 5namedata = {{{5namedata|}}}
| alongside = {{{alongside|}}}
| ambassador_from = {{{ambassador_from|}}}
| appointer = {{#if: {{{appointer|}}} | {{{appointer}}} | {{{appointed|}}} }}
| assembly = {{{assembly|}}}
| assuming = {{{assuming|}}}
| candidate = {{{candidate|}}}
| chancellor = {{{chancellor|}}}
| co-leader = {{{co-leader|}}}
| constituency_{{#if:{{{constituency_AM|}}}|AM|MP}} = {{#if: {{{constituency_AM|}}} | {{{constituency_AM}}} | {{{constituency_MP|}}} }}
| constituency = {{{constituency|}}}
| convocation = {{{convocation|}}}
| country = {{{country|}}}
| deputy = {{{deputy|}}}
| district = {{{district|}}}
| election_date = {{{election_date|}}}
| firstminister = {{{firstminister|}}}
| governor-general = {{{governor-general|}}}
| governor_general = {{{governor_general|}}}
| governor = {{{governor|}}}
| incumbent = {{{incumbent|}}}
| jr/sr = {{{jr/sr|}}}
| jr/sr and state = {{{jr/sr and state|}}}
| leader = {{{leader|}}}
| legislature = {{{legislature|}}}
| lieutenant_governor = {{{lieutenant_governor|}}}
| lieutenant = {{{lieutenant|}}}
| majority_leader = {{#if: {{{majorityleader|}}} | {{{majorityleader}}} | {{{majority_leader|}}} }}
| majority = {{{majority|}}}
| minister = {{{minister|}}}
| minister_from = {{{minister_from|}}}
| minority_floor_leader = {{{minority_floor_leader|}}}
| majority_floor_leader = {{{majority_floor_leader|}}}
| minority_leader = {{#if: {{{minorityleader|}}} | {{{minorityleader}}} | {{{minority_leader|}}} }}
| monarch = {{{monarch|}}}
| nominator = {{{nominator|}}}
| nominee = {{{nominee|}}}
| office = {{{office|}}}
| opponent = {{{opponent|}}}
| order = {{{order|}}}
| parliament = {{{parliament|}}}
| parliamentarygroup = {{{parliamentarygroup|}}}
| party_election = {{{party_election|}}}
| predecessor = {{{predecessor|}}}
| preceding = {{{preceding|}}}
| preceded = {{{preceded|}}}
| premier = {{{premier|}}}
| president = {{{president|}}}
| primeminister = {{{primeminister|}}}
| riding = {{{riding|}}}
| runningmate = {{{runningmate|}}}
| state_assembly = {{{state_assembly|}}}
| state_delegate = {{{state_delegate|}}}
| state_house = {{{state_house|}}}
| state_legislature = {{{state_legislature|}}}
| state_senate = {{{state_senate|}}}
| state = {{{state|}}}
| status = {{{status|}}}
| suboffice = {{{suboffice|}}}
| subterm = {{nobold|{{{subterm|}}}}}
| succeeded = {{{succeeded|}}}
| succeeding = {{{succeeding|}}}
| successor = {{{successor|}}}
| taoiseach = {{{taoiseach|}}}
| termlabel = {{{term_label|{{{termlabel|In office}}}}}}
| termend = {{#if: {{{termend|}}} | {{{termend}}} | {{{term_end|}}} }}
| termstart = {{#if: {{{termstart|}}} | {{{termstart}}} | {{{term_start|}}} }}
| term = {{{term|}}}
| title = {{{title|}}}
| vicegovernor = {{{vicegovernor|}}}
| vicepresident = {{{vicepresident|}}}
| vicepremier = {{{vicepremier|}}}
| viceprimeminister = {{{viceprimeminister|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term|}}}
}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname1|}}}
| 1namedata = {{{1namedata1|}}}
| 2blankname = {{{2blankname1|}}}
| 2namedata = {{{2namedata1|}}}
| 3blankname = {{{3blankname1|}}}
| 3namedata = {{{3namedata1|}}}
| 4blankname = {{{4blankname1|}}}
| 4namedata = {{{4namedata1|}}}
| 5blankname = {{{5blankname1|}}}
| 5namedata = {{{5namedata1|}}}
| alongside = {{{alongside1|}}}
| ambassador_from = {{{ambassador_from1|}}}
| appointer = {{#if: {{{appointer1|}}} | {{{appointer1}}} | {{{appointed1|}}} }}
| assembly = {{{assembly1|}}}
| assuming = {{{assuming1|}}}
| chancellor = {{{chancellor1|}}}
| co-leader = {{{co-leader1|}}}
| constituency_{{#if:{{{constituency_AM1|}}}|AM|MP}} = {{#if: {{{constituency_AM1|}}} | {{{constituency_AM1}}} | {{{constituency_MP1|}}} }}
| constituency = {{{constituency1|}}}
| convocation = {{{convocation1|}}}
| country = {{{country1|}}}
| deputy = {{{deputy1|}}}
| district = {{{district1|}}}
| firstminister = {{{firstminister1|}}}
| governor-general = {{{governor-general1|}}}
| governor_general = {{{governor_general1|}}}
| governor = {{{governor1|}}}
| jr/sr = {{{jr/sr1|}}}
| jr/sr and state = {{{jr/sr and state1|}}}
| leader = {{{leader1|}}}
| legislature = {{{legislature1|}}}
| lieutenant_governor = {{{lieutenant_governor1|}}}
| lieutenant = {{{lieutenant1|}}}
| minority_floor_leader = {{{minority_floor_leader1|}}}
| minister_from = {{{minister_from1|}}}
| majority_floor_leader = {{{majority_floor_leader1|}}}
| majority_leader = {{#if: {{{majorityleader1|}}} | {{{majorityleader1}}} | {{{majority_leader1|}}} }}
| majority = {{{majority1|}}}
| minister = {{{minister1|}}}
| minority_leader = {{#if: {{{minorityleader1|}}} | {{{minorityleader1}}} | {{{minority_leader1|}}} }}
| monarch = {{{monarch1|}}}
| nominator = {{{nominator1|}}}
| office = {{{office1|}}}
| order = {{{order1|}}}
| parliament = {{{parliament1|}}}
| parliamentarygroup = {{{parliamentarygroup1|}}}
| predecessor = {{{predecessor1|}}}
| preceding = {{{preceding1|}}}
| preceded = {{{preceded1|}}}
| premier = {{{premier1|}}}
| president = {{{president1|}}}
| primeminister = {{{primeminister1|}}}
| riding = {{{riding1|}}}
| state_assembly = {{{state_assembly1|}}}
| state_delegate = {{{state_delegate1|}}}
| state_house = {{{state_house1|}}}
| state_legislature = {{{state_legislature1|}}}
| state_senate = {{{state_senate1|}}}
| state = {{{state1|}}}
| status = {{{status1|}}}
| subterm = {{nobold|{{{subterm1|}}}}}
| suboffice = {{{suboffice1|}}}
| succeeded = {{{succeeded1|}}}
| succeeding = {{{succeeding1|}}}
| successor = {{{successor1|}}}
| taoiseach = {{{taoiseach1|}}}
| termlabel = {{{term_label1|{{{termlabel1|In office}}}}}}
| termend = {{#if:{{{termend1|}}}|{{{termend1}}}|{{{term_end1|}}}}}
| termstart = {{#if:{{{termstart1|}}}|{{{termstart1}}}|{{{term_start1|}}}}}
| term = {{{term1|}}}
| title = {{{title1|}}}
| vicegovernor = {{{vicegovernor1|}}}
| vicepresident = {{{vicepresident1|}}}
| vicepremier = {{{vicepremier1|}}}
| viceprimeminister = {{{viceprimeminister1|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term1|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{speaker|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname2|}}}
| 1namedata = {{{1namedata2|}}}
| 2blankname = {{{2blankname2|}}}
| 2namedata = {{{2namedata2|}}}
| 3blankname = {{{3blankname2|}}}
| 3namedata = {{{3namedata2|}}}
| 4blankname = {{{4blankname2|}}}
| 4namedata = {{{4namedata2|}}}
| 5blankname = {{{5blankname2|}}}
| 5namedata = {{{5namedata2|}}}
| alongside = {{{alongside2|}}}
| ambassador_from = {{{ambassador_from2|}}}
| appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }}
| assembly = {{{assembly2|}}}
| assuming = {{{assuming2|}}}
| chancellor = {{{chancellor2|}}}
| co-leader = {{{co-leader2|}}}
| constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }}
| constituency = {{{constituency2|}}}
| convocation = {{{convocation2|}}}
| country = {{{country2|}}}
| deputy = {{{deputy2|}}}
| district = {{{district2|}}}
| firstminister = {{{firstminister2|}}}
| governor-general = {{{governor-general2|}}}
| governor_general = {{{governor_general2|}}}
| governor = {{{governor2|}}}
| jr/sr = {{{jr/sr2|}}}
| jr/sr and state = {{{jr/sr and state2|}}}
| leader = {{{leader2|}}}
| legislature = {{{legislature2|}}}
| lieutenant_governor = {{{lieutenant_governor2|}}}
| lieutenant = {{{lieutenant2|}}}
| majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }}
| minister_from = {{{minister_from2|}}}
| minority_floor_leader = {{{minority_floor_leader2|}}}
| majority_floor_leader = {{{majority_floor_leader2|}}}
| majority = {{{majority2|}}}
| minister = {{{minister2|}}}
| minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }}
| monarch = {{{monarch2|}}}
| nominator = {{{nominator2|}}}
| office = {{{office2|}}}
| order = {{{order2|}}}
| parliament = {{{parliament2|}}}
| parliamentarygroup = {{{parliamentarygroup2|}}}
| predecessor = {{{predecessor2|}}}
| preceding = {{{preceding2|}}}
| preceded = {{{preceded2|}}}
| premier = {{{premier2|}}}
| president = {{{president2|}}}
| primeminister = {{{primeminister2|}}}
| riding = {{{riding2|}}}
| state_assembly = {{{state_assembly2|}}}
| state_delegate = {{{state_delegate2|}}}
| state_house = {{{state_house2|}}}
| state_legislature = {{{state_legislature2|}}}
| state_senate = {{{state_senate2|}}}
| state = {{{state2|}}}
| status = {{{status2|}}}
| subterm = {{nobold|{{{subterm2|}}}}}
| suboffice = {{{suboffice2|}}}
| succeeded = {{{succeeded2|}}}
| succeeding = {{{succeeding2|}}}
| successor = {{{successor2|}}}
| taoiseach = {{{taoiseach2|}}}
| termlabel = {{{term_label2|{{{termlabel2|In office}}}}}}
| termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}}
| termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}}
| term = {{{term2|}}}
| title = {{{title2|}}}
| vicegovernor = {{{vicegovernor2|}}}
| vicepresident = {{{vicepresident2|}}}
| vicepremier = {{{vicepremier2|}}}
| viceprimeminister = {{{viceprimeminister2|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term2|}}}
}}}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname3|}}}
| 1namedata = {{{1namedata3|}}}
| 2blankname = {{{2blankname3|}}}
| 2namedata = {{{2namedata3|}}}
| 3blankname = {{{3blankname3|}}}
| 3namedata = {{{3namedata3|}}}
| 4blankname = {{{4blankname3|}}}
| 4namedata = {{{4namedata3|}}}
| 5blankname = {{{5blankname3|}}}
| 5namedata = {{{5namedata3|}}}
| alongside = {{{alongside3|}}}
| ambassador_from = {{{ambassador_from3|}}}
| appointer = {{#if: {{{appointer3|}}} | {{{appointer3}}} | {{{appointed3|}}} }}
| assembly = {{{assembly3|}}}
| assuming = {{{assuming3|}}}
| chancellor = {{{chancellor3|}}}
| co-leader = {{{co-leader3|}}}
| constituency_{{#if:{{{constituency_AM3|}}}|AM|MP}} = {{#if: {{{constituency_AM3|}}} | {{{constituency_AM3}}} | {{{constituency_MP3|}}} }}
| constituency = {{{constituency3|}}}
| convocation = {{{convocation3|}}}
| country = {{{country3|}}}
| deputy = {{{deputy3|}}}
| district = {{{district3|}}}
| firstminister = {{{firstminister3|}}}
| governor-general = {{{governor-general3|}}}
| governor_general = {{{governor_general3|}}}
| governor = {{{governor3|}}}
| jr/sr = {{{jr/sr3|}}}
| jr/sr and state = {{{jr/sr and state3|}}}
| leader = {{{leader3|}}}
| legislature = {{{legislature3|}}}
| lieutenant_governor = {{{lieutenant_governor3|}}}
| lieutenant = {{{lieutenant3|}}}
| minority_floor_leader = {{{minority_floor_leader3|}}}
| minister_from = {{{minister_from3|}}}
| majority_floor_leader = {{{majority_floor_leader3|}}}
| majority_leader = {{#if: {{{majorityleader3|}}} | {{{majorityleader3}}} | {{{majority_leader3|}}} }}
| majority = {{{majority3|}}}
| minister = {{{minister3|}}}
| minority_leader = {{#if: {{{minorityleader3|}}} | {{{minorityleader3}}} | {{{minority_leader3|}}} }}
| monarch = {{{monarch3|}}}
| nominator = {{{nominator3|}}}
| office = {{{office3|}}}
| order = {{{order3|}}}
| parliament = {{{parliament3|}}}
| parliamentarygroup = {{{parliamentarygroup3|}}}
| predecessor = {{{predecessor3|}}}
| preceding = {{{preceding3|}}}
| preceded = {{{preceded3|}}}
| premier = {{{premier3|}}}
| president = {{{president3|}}}
| primeminister = {{{primeminister3|}}}
| riding = {{{riding3|}}}
| state_assembly = {{{state_assembly3|}}}
| state_delegate = {{{state_delegate3|}}}
| state_house = {{{state_house3|}}}
| state_legislature = {{{state_legislature3|}}}
| state_senate = {{{state_senate3|}}}
| state = {{{state3|}}}
| status = {{{status3|}}}
| subterm = {{nobold|{{{subterm3|}}}}}
| suboffice = {{{suboffice3|}}}
| succeeded = {{{succeeded3|}}}
| succeeding = {{{succeeding3|}}}
| successor = {{{successor3|}}}
| taoiseach = {{{taoiseach3|}}}
| termlabel = {{{term_label3|{{{termlabel3|In office}}}}}}
| termend = {{#if:{{{termend3|}}}|{{{termend3}}}|{{{term_end3|}}}}}
| termstart = {{#if:{{{termstart3|}}}|{{{termstart3}}}|{{{term_start3|}}}}}
| term = {{{term3|}}}
| title = {{{title3|}}}
| vicegovernor = {{{vicegovernor3|}}}
| vicepresident = {{{vicepresident3|}}}
| vicepremier = {{{vicepremier3|}}}
| viceprimeminister = {{{viceprimeminister3|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term3|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname4|}}}
| 1namedata = {{{1namedata4|}}}
| 2blankname = {{{2blankname4|}}}
| 2namedata = {{{2namedata4|}}}
| 3blankname = {{{3blankname4|}}}
| 3namedata = {{{3namedata4|}}}
| 4blankname = {{{4blankname4|}}}
| 4namedata = {{{4namedata4|}}}
| 5blankname = {{{5blankname4|}}}
| 5namedata = {{{5namedata4|}}}
| alongside = {{{alongside4|}}}
| ambassador_from = {{{ambassador_from4|}}}
| appointer = {{#if: {{{appointer4|}}} | {{{appointer4}}} | {{{appointed4|}}} }}
| assembly = {{{assembly4|}}}
| assuming = {{{assuming4|}}}
| chancellor = {{{chancellor4|}}}
| co-leader = {{{co-leader4|}}}
| constituency_{{#if:{{{constituency_AM4|}}}|AM|MP}} = {{#if: {{{constituency_AM4|}}} | {{{constituency_AM4}}} | {{{constituency_MP4|}}} }}
| constituency = {{{constituency4|}}}
| convocation = {{{convocation4|}}}
| country = {{{country4|}}}
| deputy = {{{deputy4|}}}
| district = {{{district4|}}}
| firstminister = {{{firstminister4|}}}
| governor-general = {{{governor-general4|}}}
| governor_general = {{{governor_general4|}}}
| governor = {{{governor4|}}}
| jr/sr = {{{jr/sr4|}}}
| jr/sr and state = {{{jr/sr and state4|}}}
| leader = {{{leader4|}}}
| legislature = {{{legislature4|}}}
| lieutenant_governor = {{{lieutenant_governor4|}}}
| lieutenant = {{{lieutenant4|}}}
| minister_from = {{{minister_from4|}}}
| minority_floor_leader = {{{minority_floor_leader4|}}}
| majority_floor_leader = {{{majority_floor_leader4|}}}
| majority_leader = {{#if: {{{majorityleader4|}}} | {{{majorityleader4}}} | {{{majority_leader4|}}} }}
| majority = {{{majority4|}}}
| minister = {{{minister4|}}}
| minority_leader = {{#if: {{{minorityleader4|}}} | {{{minorityleader4}}} | {{{minority_leader4|}}} }}
| monarch = {{{monarch4|}}}
| nominator = {{{nominator4|}}}
| office = {{{office4|}}}
| order = {{{order4|}}}
| parliament = {{{parliament4|}}}
| parliamentarygroup = {{{parliamentarygroup4|}}}
| predecessor = {{{predecessor4|}}}
| preceding = {{{preceding4|}}}
| preceded = {{{preceded4|}}}
| premier = {{{premier4|}}}
| president = {{{president4|}}}
| primeminister = {{{primeminister4|}}}
| riding = {{{riding4|}}}
| state_assembly = {{{state_assembly4|}}}
| state_delegate = {{{state_delegate4|}}}
| state_house = {{{state_house4|}}}
| state_legislature = {{{state_legislature4|}}}
| state_senate = {{{state_senate4|}}}
| state = {{{state4|}}}
| status = {{{status4|}}}
| subterm = {{nobold|{{{subterm4|}}}}}
| suboffice = {{{suboffice4|}}}
| succeeded = {{{succeeded4|}}}
| succeeding = {{{succeeding4|}}}
| successor = {{{successor4|}}}
| taoiseach = {{{taoiseach4|}}}
| termlabel = {{{term_label4|{{{termlabel4|In office}}}}}}
| termend = {{#if:{{{termend4|}}}|{{{termend4}}}|{{{term_end4|}}}}}
| termstart = {{#if:{{{termstart4|}}}|{{{termstart4}}}|{{{term_start4|}}}}}
| term = {{{term4|}}}
| title = {{{title4|}}}
| vicegovernor = {{{vicegovernor4|}}}
| vicepresident = {{{vicepresident4|}}}
| vicepremier = {{{vicepremier4|}}}
| viceprimeminister = {{{viceprimeminister4|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term4|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname5|}}}
| 1namedata = {{{1namedata5|}}}
| 2blankname = {{{2blankname5|}}}
| 2namedata = {{{2namedata5|}}}
| 3blankname = {{{3blankname5|}}}
| 3namedata = {{{3namedata5|}}}
| 4blankname = {{{4blankname5|}}}
| 4namedata = {{{4namedata5|}}}
| 5blankname = {{{5blankname5|}}}
| 5namedata = {{{5namedata5|}}}
| alongside = {{{alongside5|}}}
| ambassador_from = {{{ambassador_from5|}}}
| appointer = {{#if: {{{appointer5|}}} | {{{appointer5}}} | {{{appointed5|}}} }}
| assembly = {{{assembly5|}}}
| assuming = {{{assuming5|}}}
| chancellor = {{{chancellor5|}}}
| co-leader = {{{co-leader5|}}}
| constituency_{{#if:{{{constituency_AM5|}}}|AM|MP}} = {{#if: {{{constituency_AM5|}}} | {{{constituency_AM5}}} | {{{constituency_MP5|}}} }}
| constituency = {{{constituency5|}}}
| convocation = {{{convocation5|}}}
| country = {{{country5|}}}
| deputy = {{{deputy5|}}}
| district = {{{district5|}}}
| firstminister = {{{firstminister5|}}}
| governor-general = {{{governor-general5|}}}
| governor_general = {{{governor_general5|}}}
| governor = {{{governor5|}}}
| jr/sr = {{{jr/sr5|}}}
| jr/sr and state = {{{jr/sr and state5|}}}
| leader = {{{leader5|}}}
| legislature = {{{legislature5|}}}
| lieutenant_governor = {{{lieutenant_governor5|}}}
| lieutenant = {{{lieutenant5|}}}
| minister_from = {{{minister_from5|}}}
| minority_floor_leader = {{{minority_floor_leader5|}}}
| majority_floor_leader = {{{majority_floor_leader5|}}}
| majority_leader = {{#if: {{{majorityleader5|}}} | {{{majorityleader5}}} | {{{majority_leader5|}}} }}
| majority = {{{majority5|}}}
| minister = {{{minister5|}}}
| minority_leader = {{#if: {{{minorityleader5|}}} | {{{minorityleader5}}} | {{{minority_leader5|}}} }}
| monarch = {{{monarch5|}}}
| nominator = {{{nominator5|}}}
| office = {{{office5|}}}
| order = {{{order5|}}}
| parliament = {{{parliament5|}}}
| parliamentarygroup = {{{parliamentarygroup5|}}}
| predecessor = {{{predecessor5|}}}
| preceding = {{{preceding5|}}}
| preceded = {{{preceded5|}}}
| premier = {{{premier5|}}}
| president = {{{president5|}}}
| primeminister = {{{primeminister5|}}}
| riding = {{{riding5|}}}
| state_assembly = {{{state_assembly5|}}}
| state_delegate = {{{state_delegate5|}}}
| state_house = {{{state_house5|}}}
| state_legislature = {{{state_legislature5|}}}
| state_senate = {{{state_senate5|}}}
| state = {{{state5|}}}
| status = {{{status5|}}}
| subterm = {{nobold|{{{subterm5|}}}}}
| suboffice = {{{suboffice5|}}}
| succeeded = {{{succeeded5|}}}
| succeeding = {{{succeeding5|}}}
| successor = {{{successor5|}}}
| taoiseach = {{{taoiseach5|}}}
| termlabel = {{{term_label5|{{{termlabel5|In office}}}}}}
| termend = {{#if:{{{termend5|}}}|{{{termend5}}}|{{{term_end5|}}}}}
| termstart = {{#if:{{{termstart5|}}}|{{{termstart5}}}|{{{term_start5|}}}}}
| term = {{{term5|}}}
| title = {{{title5|}}}
| vicegovernor = {{{vicegovernor5|}}}
| vicepresident = {{{vicepresident5|}}}
| vicepremier = {{{vicepremier5|}}}
| viceprimeminister = {{{viceprimeminister5|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term5|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname6|}}}
| 1namedata = {{{1namedata6|}}}
| 2blankname = {{{2blankname6|}}}
| 2namedata = {{{2namedata6|}}}
| 3blankname = {{{3blankname6|}}}
| 3namedata = {{{3namedata6|}}}
| 4blankname = {{{4blankname6|}}}
| 4namedata = {{{4namedata6|}}}
| 5blankname = {{{5blankname6|}}}
| 5namedata = {{{5namedata6|}}}
| alongside = {{{alongside6|}}}
| ambassador_from = {{{ambassador_from6|}}}
| appointer = {{#if: {{{appointer6|}}} | {{{appointer6}}} | {{{appointed6|}}} }}
| assembly = {{{assembly6|}}}
| assuming = {{{assuming6|}}}
| chancellor = {{{chancellor6|}}}
| co-leader = {{{co-leader6|}}}
| constituency_{{#if:{{{constituency_AM6|}}}|AM|MP}} = {{#if: {{{constituency_AM6|}}} | {{{constituency_AM6}}} | {{{constituency_MP6|}}} }}
| constituency = {{{constituency6|}}}
| convocation = {{{convocation6|}}}
| country = {{{country6|}}}
| deputy = {{{deputy6|}}}
| district = {{{district6|}}}
| firstminister = {{{firstminister6|}}}
| governor-general = {{{governor-general6|}}}
| governor_general = {{{governor_general6|}}}
| governor = {{{governor6|}}}
| jr/sr = {{{jr/sr6|}}}
| jr/sr and state = {{{jr/sr and state6|}}}
| leader = {{{leader6|}}}
| legislature = {{{legislature6|}}}
| lieutenant_governor = {{{lieutenant_governor6|}}}
| lieutenant = {{{lieutenant6|}}}
| minority_floor_leader = {{{minority_floor_leader6|}}}
| minister_from = {{{minister_from6|}}}
| majority_floor_leader = {{{majority_floor_leader6|}}}
| majority_leader = {{#if: {{{majorityleader6|}}} | {{{majorityleader6}}} | {{{majority_leader6|}}} }}
| majority = {{{majority6|}}}
| minister = {{{minister6|}}}
| minority_leader = {{#if: {{{minorityleader6|}}} | {{{minorityleader6}}} | {{{minority_leader6|}}} }}
| monarch = {{{monarch6|}}}
| nominator = {{{nominator6|}}}
| office = {{{office6|}}}
| order = {{{order6|}}}
| parliament = {{{parliament6|}}}
| parliamentarygroup = {{{parliamentarygroup6|}}}
| predecessor = {{{predecessor6|}}}
| preceding = {{{preceding6|}}}
| preceded = {{{preceded6|}}}
| premier = {{{premier6|}}}
| president = {{{president6|}}}
| primeminister = {{{primeminister6|}}}
| riding = {{{riding6|}}}
| state_assembly = {{{state_assembly6|}}}
| state_delegate = {{{state_delegate6|}}}
| state_house = {{{state_house6|}}}
| state_legislature = {{{state_legislature6|}}}
| state_senate = {{{state_senate6|}}}
| state = {{{state6|}}}
| status = {{{status6|}}}
| subterm = {{nobold|{{{subterm6|}}}}}
| suboffice = {{{suboffice6|}}}
| succeeded = {{{succeeded6|}}}
| succeeding = {{{succeeding6|}}}
| successor = {{{successor6|}}}
| taoiseach = {{{taoiseach6|}}}
| termlabel = {{{term_label6|{{{termlabel6|In office}}}}}}
| termend = {{#if:{{{termend6|}}}|{{{termend6}}}|{{{term_end6|}}}}}
| termstart = {{#if:{{{termstart6|}}}|{{{termstart6}}}|{{{term_start6|}}}}}
| term = {{{term6|}}}
| title = {{{title6|}}}
| vicegovernor = {{{vicegovernor6|}}}
| vicepresident = {{{vicepresident6|}}}
| vicepremier = {{{vicepremier6|}}}
| viceprimeminister = {{{viceprimeminister6|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term6|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname7|}}}
| 1namedata = {{{1namedata7|}}}
| 2blankname = {{{2blankname7|}}}
| 2namedata = {{{2namedata7|}}}
| 3blankname = {{{3blankname7|}}}
| 3namedata = {{{3namedata7|}}}
| 4blankname = {{{4blankname7|}}}
| 4namedata = {{{4namedata7|}}}
| 5blankname = {{{5blankname7|}}}
| 5namedata = {{{5namedata7|}}}
| alongside = {{{alongside7|}}}
| ambassador_from = {{{ambassador_from7|}}}
| appointer = {{#if: {{{appointer7|}}} | {{{appointer7}}} | {{{appointed7|}}} }}
| assembly = {{{assembly7|}}}
| assuming = {{{assuming7|}}}
| chancellor = {{{chancellor7|}}}
| co-leader = {{{co-leader7|}}}
| constituency_{{#if:{{{constituency_AM7|}}}|AM|MP}} = {{#if: {{{constituency_AM7|}}} | {{{constituency_AM7}}} | {{{constituency_MP7|}}} }}
| constituency = {{{constituency7|}}}
| convocation = {{{convocation7|}}}
| country = {{{country7|}}}
| deputy = {{{deputy7|}}}
| district = {{{district7|}}}
| firstminister = {{{firstminister7|}}}
| governor-general = {{{governor-general7|}}}
| governor_general = {{{governor_general7|}}}
| governor = {{{governor7|}}}
| jr/sr = {{{jr/sr7|}}}
| jr/sr and state = {{{jr/sr and state7|}}}
| leader = {{{leader7|}}}
| legislature = {{{legislature7|}}}
| lieutenant_governor = {{{lieutenant_governor7|}}}
| lieutenant = {{{lieutenant7|}}}
| minister_from = {{{minister_from7|}}}
| minority_floor_leader = {{{minority_floor_leader7|}}}
| majority_floor_leader = {{{majority_floor_leader7|}}}
| majority_leader = {{#if: {{{majorityleader7|}}} | {{{majorityleader7}}} | {{{majority_leader7|}}} }}
| majority = {{{majority7|}}}
| minister = {{{minister7|}}}
| minority_leader = {{#if: {{{minorityleader7|}}} | {{{minorityleader7}}} | {{{minority_leader7|}}} }}
| monarch = {{{monarch7|}}}
| nominator = {{{nominator7|}}}
| office = {{{office7|}}}
| order = {{{order7|}}}
| parliament = {{{parliament7|}}}
| parliamentarygroup = {{{parliamentarygroup7|}}}
| predecessor = {{{predecessor7|}}}
| preceding = {{{preceding7|}}}
| preceded = {{{preceded7|}}}
| premier = {{{premier7|}}}
| president = {{{president7|}}}
| primeminister = {{{primeminister7|}}}
| riding = {{{riding7|}}}
| state_assembly = {{{state_assembly7|}}}
| state_delegate = {{{state_delegate7|}}}
| state_house = {{{state_house7|}}}
| state_legislature = {{{state_legislature7|}}}
| state_senate = {{{state_senate7|}}}
| state = {{{state7|}}}
| status = {{{status7|}}}
| subterm = {{nobold|{{{subterm7|}}}}}
| suboffice = {{{suboffice7|}}}
| succeeded = {{{succeeded7|}}}
| succeeding = {{{succeeding7|}}}
| successor = {{{successor7|}}}
| taoiseach = {{{taoiseach7|}}}
| termlabel = {{{term_label7|{{{termlabel7|In office}}}}}}
| termend = {{#if:{{{termend7|}}}|{{{termend7}}}|{{{term_end7|}}}}}
| termstart = {{#if:{{{termstart7|}}}|{{{termstart7}}}|{{{term_start7|}}}}}
| term = {{{term7|}}}
| title = {{{title7|}}}
| vicegovernor = {{{vicegovernor7|}}}
| vicepresident = {{{vicepresident7|}}}
| vicepremier = {{{vicepremier7|}}}
| viceprimeminister = {{{viceprimeminister7|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term7|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname8|}}}
| 1namedata = {{{1namedata8|}}}
| 2blankname = {{{2blankname8|}}}
| 2namedata = {{{2namedata8|}}}
| 3blankname = {{{3blankname8|}}}
| 3namedata = {{{3namedata8|}}}
| 4blankname = {{{4blankname8|}}}
| 4namedata = {{{4namedata8|}}}
| 5blankname = {{{5blankname8|}}}
| 5namedata = {{{5namedata8|}}}
| alongside = {{{alongside8|}}}
| ambassador_from = {{{ambassador_from8|}}}
| appointer = {{#if: {{{appointer8|}}} | {{{appointer8}}} | {{{appointed8|}}} }}
| assembly = {{{assembly8|}}}
| assuming = {{{assuming8|}}}
| chancellor = {{{chancellor8|}}}
| co-leader = {{{co-leader8|}}}
| constituency_{{#if:{{{constituency_AM8|}}}|AM|MP}} = {{#if: {{{constituency_AM8|}}} | {{{constituency_AM8}}} | {{{constituency_MP8|}}} }}
| constituency = {{{constituency8|}}}
| convocation = {{{convocation8|}}}
| country = {{{country8|}}}
| deputy = {{{deputy8|}}}
| district = {{{district8|}}}
| firstminister = {{{firstminister8|}}}
| governor-general = {{{governor-general8|}}}
| governor_general = {{{governor_general8|}}}
| governor = {{{governor8|}}}
| jr/sr = {{{jr/sr8|}}}
| jr/sr and state = {{{jr/sr and state8|}}}
| leader = {{{leader8|}}}
| legislature = {{{legislature8|}}}
| lieutenant_governor = {{{lieutenant_governor8|}}}
| lieutenant = {{{lieutenant8|}}}
| minister_from = {{{minister_from8|}}}
| minority_floor_leader = {{{minority_floor_leader8|}}}
| majority_floor_leader = {{{majority_floor_leader8|}}}
| majority_leader = {{#if: {{{majorityleader8|}}} | {{{majorityleader8}}} | {{{majority_leader8|}}} }}
| majority = {{{majority8|}}}
| minister = {{{minister8|}}}
| minority_leader = {{#if: {{{minorityleader8|}}} | {{{minorityleader8}}} | {{{minority_leader8|}}} }}
| monarch = {{{monarch8|}}}
| nominator = {{{nominator8|}}}
| office = {{{office8|}}}
| order = {{{order8|}}}
| parliament = {{{parliament8|}}}
| parliamentarygroup = {{{parliamentarygroup8|}}}
| predecessor = {{{predecessor8|}}}
| preceding = {{{preceding8|}}}
| preceded = {{{preceded8|}}}
| premier = {{{premier8|}}}
| president = {{{president8|}}}
| primeminister = {{{primeminister8|}}}
| riding = {{{riding8|}}}
| state_assembly = {{{state_assembly8|}}}
| state_delegate = {{{state_delegate8|}}}
| state_house = {{{state_house8|}}}
| state_legislature = {{{state_legislature8|}}}
| state_senate = {{{state_senate8|}}}
| state = {{{state8|}}}
| status = {{{status8|}}}
| subterm = {{nobold|{{{subterm8|}}}}}
| suboffice = {{{suboffice8|}}}
| succeeded = {{{succeeded8|}}}
| succeeding = {{{succeeding8|}}}
| successor = {{{successor8|}}}
| taoiseach = {{{taoiseach8|}}}
| termlabel = {{{term_label8|{{{termlabel8|In office}}}}}}
| termend = {{#if:{{{termend8|}}}|{{{termend8}}}|{{{term_end8|}}}}}
| termstart = {{#if:{{{termstart8|}}}|{{{termstart8}}}|{{{term_start8|}}}}}
| term = {{{term8|}}}
| title = {{{title8|}}}
| vicegovernor = {{{vicegovernor8|}}}
| vicepresident = {{{vicepresident8|}}}
| vicepremier = {{{vicepremier8|}}}
| viceprimeminister = {{{viceprimeminister8|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term8|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname9|}}}
| 1namedata = {{{1namedata9|}}}
| 2blankname = {{{2blankname9|}}}
| 2namedata = {{{2namedata9|}}}
| 3blankname = {{{3blankname9|}}}
| 3namedata = {{{3namedata9|}}}
| 4blankname = {{{4blankname9|}}}
| 4namedata = {{{4namedata9|}}}
| 5blankname = {{{5blankname9|}}}
| 5namedata = {{{5namedata9|}}}
| alongside = {{{alongside9|}}}
| ambassador_from = {{{ambassador_from9|}}}
| appointer = {{#if: {{{appointer9|}}} | {{{appointer9}}} | {{{appointed9|}}} }}
| assembly = {{{assembly9|}}}
| assuming = {{{assuming9|}}}
| chancellor = {{{chancellor9|}}}
| co-leader = {{{co-leader9|}}}
| constituency_{{#if:{{{constituency_AM9|}}}|AM|MP}} = {{#if: {{{constituency_AM9|}}} | {{{constituency_AM9}}} | {{{constituency_MP9|}}} }}
| constituency = {{{constituency9|}}}
| convocation = {{{convocation9|}}}
| country = {{{country9|}}}
| deputy = {{{deputy9|}}}
| district = {{{district9|}}}
| firstminister = {{{firstminister9|}}}
| governor-general = {{{governor-general9|}}}
| governor_general = {{{governor_general9|}}}
| governor = {{{governor9|}}}
| jr/sr = {{{jr/sr9|}}}
| jr/sr and state = {{{jr/sr and state9|}}}
| leader = {{{leader9|}}}
| legislature = {{{legislature9|}}}
| lieutenant_governor = {{{lieutenant_governor9|}}}
| lieutenant = {{{lieutenant9|}}}
| minister_from = {{{minister_from9|}}}
| minority_floor_leader = {{{minority_floor_leader9|}}}
| majority_floor_leader = {{{majority_floor_leader9|}}}
| majority_leader = {{#if: {{{majorityleader9|}}} | {{{majorityleader9}}} | {{{majority_leader9|}}} }}
| majority = {{{majority9|}}}
| minister = {{{minister9|}}}
| minority_leader = {{#if: {{{minorityleader9|}}} | {{{minorityleader9}}} | {{{minority_leader9|}}} }}
| monarch = {{{monarch9|}}}
| nominator = {{{nominator9|}}}
| office = {{{office9|}}}
| order = {{{order9|}}}
| parliament = {{{parliament9|}}}
| parliamentarygroup = {{{parliamentarygroup9|}}}
| predecessor = {{{predecessor9|}}}
| preceding = {{{preceding9|}}}
| preceded = {{{preceded9|}}}
| premier = {{{premier9|}}}
| president = {{{president9|}}}
| primeminister = {{{primeminister9|}}}
| riding = {{{riding9|}}}
| state_assembly = {{{state_assembly9|}}}
| state_delegate = {{{state_delegate9|}}}
| state_house = {{{state_house9|}}}
| state_legislature = {{{state_legislature9|}}}
| state_senate = {{{state_senate9|}}}
| state = {{{state9|}}}
| status = {{{status9|}}}
| subterm = {{nobold|{{{subterm9|}}}}}
| suboffice = {{{suboffice9|}}}
| succeeded = {{{succeeded9|}}}
| succeeding = {{{succeeding9|}}}
| successor = {{{successor9|}}}
| taoiseach = {{{taoiseach9|}}}
| termlabel = {{{term_label9|{{{termlabel9|In office}}}}}}
| termend = {{#if:{{{termend9|}}}|{{{termend9}}}|{{{term_end9|}}}}}
| termstart = {{#if:{{{termstart9|}}}|{{{termstart9}}}|{{{term_start9|}}}}}
| term = {{{term9|}}}
| title = {{{title9|}}}
| vicegovernor = {{{vicegovernor9|}}}
| vicepresident = {{{vicepresident9|}}}
| vicepremier = {{{vicepremier9|}}}
| viceprimeminister = {{{viceprimeminister9|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term9|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname10|}}}
| 1namedata = {{{1namedata10|}}}
| 2blankname = {{{2blankname10|}}}
| 2namedata = {{{2namedata10|}}}
| 3blankname = {{{3blankname10|}}}
| 3namedata = {{{3namedata10|}}}
| 4blankname = {{{4blankname10|}}}
| 4namedata = {{{4namedata10|}}}
| 5blankname = {{{5blankname10|}}}
| 5namedata = {{{5namedata10|}}}
| alongside = {{{alongside10|}}}
| ambassador_from = {{{ambassador_from10|}}}
| appointer = {{#if: {{{appointer10|}}} | {{{appointer10}}} | {{{appointed10|}}} }}
| assembly = {{{assembly10|}}}
| assuming = {{{assuming10|}}}
| chancellor = {{{chancellor10|}}}
| co-leader = {{{co-leader10|}}}
| constituency_{{#if:{{{constituency_AM10|}}}|AM|MP}} = {{#if: {{{constituency_AM10|}}} | {{{constituency_AM10}}} | {{{constituency_MP10|}}} }}
| constituency = {{{constituency10|}}}
| convocation = {{{convocation10|}}}
| country = {{{country10|}}}
| deputy = {{{deputy10|}}}
| district = {{{district10|}}}
| firstminister = {{{firstminister10|}}}
| governor-general = {{{governor-general10|}}}
| governor_general = {{{governor_general10|}}}
| governor = {{{governor10|}}}
| jr/sr = {{{jr/sr10|}}}
| jr/sr and state = {{{jr/sr and state10|}}}
| leader = {{{leader10|}}}
| legislature = {{{legislature10|}}}
| lieutenant_governor = {{{lieutenant_governor10|}}}
| lieutenant = {{{lieutenant10|}}}
| minister_from = {{{minister_from10|}}}
| minority_floor_leader = {{{minority_floor_leader10|}}}
| majority_floor_leader = {{{majority_floor_leader10|}}}
| majority_leader = {{#if: {{{majorityleader10|}}} | {{{majorityleader10}}} | {{{majority_leader10|}}} }}
| majority = {{{majority10|}}}
| minister = {{{minister10|}}}
| minority_leader = {{#if: {{{minorityleader10|}}} | {{{minorityleader10}}} | {{{minority_leader10|}}} }}
| monarch = {{{monarch10|}}}
| nominator = {{{nominator10|}}}
| office = {{{office10|}}}
| order = {{{order10|}}}
| parliament = {{{parliament10|}}}
| parliamentarygroup = {{{parliamentarygroup10|}}}
| predecessor = {{{predecessor10|}}}
| preceding = {{{preceding10|}}}
| preceded = {{{preceded10|}}}
| premier = {{{premier10|}}}
| president = {{{president10|}}}
| primeminister = {{{primeminister10|}}}
| riding = {{{riding10|}}}
| state_assembly = {{{state_assembly10|}}}
| state_delegate = {{{state_delegate10|}}}
| state_house = {{{state_house10|}}}
| state_legislature = {{{state_legislature10|}}}
| state_senate = {{{state_senate10|}}}
| state = {{{state10|}}}
| status = {{{status10|}}}
| subterm = {{nobold|{{{subterm10|}}}}}
| suboffice = {{{suboffice10|}}}
| succeeded = {{{succeeded10|}}}
| succeeding = {{{succeeding10|}}}
| successor = {{{successor10|}}}
| taoiseach = {{{taoiseach10|}}}
| termlabel = {{{term_label10|{{{termlabel10|In office}}}}}}
| termend = {{#if:{{{termend10|}}}|{{{termend10}}}|{{{term_end10|}}}}}
| termstart = {{#if:{{{termstart10|}}}|{{{termstart10}}}|{{{term_start10|}}}}}
| term = {{{term10|}}}
| title = {{{title10|}}}
| vicegovernor = {{{vicegovernor10|}}}
| vicepresident = {{{vicepresident10|}}}
| vicepremier = {{{vicepremier10|}}}
| viceprimeminister = {{{viceprimeminister10|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term10|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname11|}}}
| 1namedata = {{{1namedata11|}}}
| 2blankname = {{{2blankname11|}}}
| 2namedata = {{{2namedata11|}}}
| 3blankname = {{{3blankname11|}}}
| 3namedata = {{{3namedata11|}}}
| 4blankname = {{{4blankname11|}}}
| 4namedata = {{{4namedata11|}}}
| 5blankname = {{{5blankname11|}}}
| 5namedata = {{{5namedata11|}}}
| alongside = {{{alongside11|}}}
| ambassador_from = {{{ambassador_from11|}}}
| appointer = {{#if: {{{appointer11|}}} | {{{appointer11}}} | {{{appointed11|}}} }}
| assembly = {{{assembly11|}}}
| assuming = {{{assuming11|}}}
| chancellor = {{{chancellor11|}}}
| co-leader = {{{co-leader11|}}}
| constituency_{{#if:{{{constituency_AM11|}}}|AM|MP}} = {{#if: {{{constituency_AM11|}}} | {{{constituency_AM11}}} | {{{constituency_MP11|}}} }}
| constituency = {{{constituency11|}}}
| convocation = {{{convocation11|}}}
| country = {{{country11|}}}
| deputy = {{{deputy11|}}}
| district = {{{district11|}}}
| firstminister = {{{firstminister11|}}}
| governor-general = {{{governor-general11|}}}
| governor_general = {{{governor_general11|}}}
| governor = {{{governor11|}}}
| jr/sr = {{{jr/sr11|}}}
| jr/sr and state = {{{jr/sr and state11|}}}
| leader = {{{leader11|}}}
| legislature = {{{legislature11|}}}
| lieutenant_governor = {{{lieutenant_governor11|}}}
| lieutenant = {{{lieutenant11|}}}
| minister_from = {{{minister_from11|}}}
| minority_floor_leader = {{{minority_floor_leader11|}}}
| majority_floor_leader = {{{majority_floor_leader11|}}}
| majority_leader = {{#if: {{{majorityleader11|}}} | {{{majorityleader11}}} | {{{majority_leader11|}}} }}
| majority = {{{majority11|}}}
| minister = {{{minister11|}}}
| minority_leader = {{#if: {{{minorityleader11|}}} | {{{minorityleader11}}} | {{{minority_leader11|}}} }}
| monarch = {{{monarch11|}}}
| nominator = {{{nominator11|}}}
| office = {{{office11|}}}
| order = {{{order11|}}}
| parliament = {{{parliament11|}}}
| parliamentarygroup = {{{parliamentarygroup11|}}}
| predecessor = {{{predecessor11|}}}
| preceding = {{{preceding11|}}}
| preceded = {{{preceded11|}}}
| premier = {{{premier11|}}}
| president = {{{president11|}}}
| primeminister = {{{primeminister11|}}}
| riding = {{{riding11|}}}
| state_assembly = {{{state_assembly11|}}}
| state_delegate = {{{state_delegate11|}}}
| state_house = {{{state_house11|}}}
| state_legislature = {{{state_legislature11|}}}
| state_senate = {{{state_senate11|}}}
| state = {{{state11|}}}
| status = {{{status11|}}}
| subterm = {{nobold|{{{subterm11|}}}}}
| suboffice = {{{suboffice11|}}}
| succeeded = {{{succeeded11|}}}
| succeeding = {{{succeeding11|}}}
| successor = {{{successor11|}}}
| taoiseach = {{{taoiseach11|}}}
| termlabel = {{{term_label11|{{{termlabel11|In office}}}}}}
| termend = {{#if:{{{termend11|}}}|{{{termend11}}}|{{{term_end11|}}}}}
| termstart = {{#if:{{{termstart11|}}}|{{{termstart11}}}|{{{term_start11|}}}}}
| term = {{{term11|}}}
| title = {{{title11|}}}
| vicegovernor = {{{vicegovernor11|}}}
| vicepresident = {{{vicepresident11|}}}
| vicepremier = {{{vicepremier11|}}}
| viceprimeminister = {{{viceprimeminister11|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term11|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname12|}}}
| 1namedata = {{{1namedata12|}}}
| 2blankname = {{{2blankname12|}}}
| 2namedata = {{{2namedata12|}}}
| 3blankname = {{{3blankname12|}}}
| 3namedata = {{{3namedata12|}}}
| 4blankname = {{{4blankname12|}}}
| 4namedata = {{{4namedata12|}}}
| 5blankname = {{{5blankname12|}}}
| 5namedata = {{{5namedata12|}}}
| alongside = {{{alongside12|}}}
| ambassador_from = {{{ambassador_from12|}}}
| appointer = {{#if: {{{appointer12|}}} | {{{appointer12}}} | {{{appointed12|}}} }}
| assembly = {{{assembly12|}}}
| assuming = {{{assuming12|}}}
| chancellor = {{{chancellor12|}}}
| co-leader = {{{co-leader12|}}}
| constituency_{{#if:{{{constituency_AM12|}}}|AM|MP}} = {{#if: {{{constituency_AM12|}}} | {{{constituency_AM12}}} | {{{constituency_MP12|}}} }}
| constituency = {{{constituency12|}}}
| convocation = {{{convocation12|}}}
| country = {{{country12|}}}
| deputy = {{{deputy12|}}}
| district = {{{district12|}}}
| firstminister = {{{firstminister12|}}}
| governor-general = {{{governor-general12|}}}
| governor_general = {{{governor_general12|}}}
| governor = {{{governor12|}}}
| jr/sr = {{{jr/sr12|}}}
| jr/sr and state = {{{jr/sr and state12|}}}
| leader = {{{leader12|}}}
| legislature = {{{legislature12|}}}
| lieutenant_governor = {{{lieutenant_governor12|}}}
| lieutenant = {{{lieutenant12|}}}
| minister_from = {{{minister_from12|}}}
| minority_floor_leader = {{{minority_floor_leader12|}}}
| majority_floor_leader = {{{majority_floor_leader12|}}}
| majority_leader = {{#if: {{{majorityleader12|}}} | {{{majorityleader12}}} | {{{majority_leader12|}}} }}
| majority = {{{majority12|}}}
| minister = {{{minister12|}}}
| minority_leader = {{#if: {{{minorityleader12|}}} | {{{minorityleader12}}} | {{{minority_leader12|}}} }}
| monarch = {{{monarch12|}}}
| nominator = {{{nominator12|}}}
| office = {{{office12|}}}
| order = {{{order12|}}}
| parliament = {{{parliament12|}}}
| parliamentarygroup = {{{parliamentarygroup12|}}}
| predecessor = {{{predecessor12|}}}
| preceding = {{{preceding12|}}}
| preceded = {{{preceded12|}}}
| premier = {{{premier12|}}}
| president = {{{president12|}}}
| primeminister = {{{primeminister12|}}}
| riding = {{{riding12|}}}
| state_assembly = {{{state_assembly12|}}}
| state_delegate = {{{state_delegate12|}}}
| state_house = {{{state_house12|}}}
| state_legislature = {{{state_legislature12|}}}
| state_senate = {{{state_senate12|}}}
| state = {{{state12|}}}
| status = {{{status12|}}}
| subterm = {{nobold|{{{subterm12|}}}}}
| suboffice = {{{suboffice12|}}}
| succeeded = {{{succeeded12|}}}
| succeeding = {{{succeeding12|}}}
| successor = {{{successor12|}}}
| taoiseach = {{{taoiseach12|}}}
| termlabel = {{{term_label12|{{{termlabel12|In office}}}}}}
| termend = {{#if:{{{termend12|}}}|{{{termend12}}}|{{{term_end12|}}}}}
| termstart = {{#if:{{{termstart12|}}}|{{{termstart12}}}|{{{term_start12|}}}}}
| term = {{{term12|}}}
| title = {{{title12|}}}
| vicegovernor = {{{vicegovernor12|}}}
| vicepresident = {{{vicepresident12|}}}
| vicepremier = {{{vicepremier12|}}}
| viceprimeminister = {{{viceprimeminister12|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term12|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname13|}}}
| 1namedata = {{{1namedata13|}}}
| 2blankname = {{{2blankname13|}}}
| 2namedata = {{{2namedata13|}}}
| 3blankname = {{{3blankname13|}}}
| 3namedata = {{{3namedata13|}}}
| 4blankname = {{{4blankname13|}}}
| 4namedata = {{{4namedata13|}}}
| 5blankname = {{{5blankname13|}}}
| 5namedata = {{{5namedata13|}}}
| alongside = {{{alongside13|}}}
| ambassador_from = {{{ambassador_from13|}}}
| appointer = {{#if: {{{appointer13|}}} | {{{appointer13}}} | {{{appointed13|}}} }}
| assembly = {{{assembly13|}}}
| assuming = {{{assuming13|}}}
| chancellor = {{{chancellor13|}}}
| co-leader = {{{co-leader13|}}}
| constituency_{{#if:{{{constituency_AM13|}}}|AM|MP}} = {{#if: {{{constituency_AM13|}}} | {{{constituency_AM13}}} | {{{constituency_MP13|}}} }}
| constituency = {{{constituency13|}}}
| convocation = {{{convocation13|}}}
| country = {{{country13|}}}
| deputy = {{{deputy13|}}}
| district = {{{district13|}}}
| firstminister = {{{firstminister13|}}}
| governor-general = {{{governor-general13|}}}
| governor_general = {{{governor_general13|}}}
| governor = {{{governor13|}}}
| jr/sr = {{{jr/sr13|}}}
| jr/sr and state = {{{jr/sr and state13|}}}
| leader = {{{leader13|}}}
| legislature = {{{legislature13|}}}
| lieutenant_governor = {{{lieutenant_governor13|}}}
| lieutenant = {{{lieutenant13|}}}
| minister_from = {{{minister_from13|}}}
| minority_floor_leader = {{{minority_floor_leader13|}}}
| majority_floor_leader = {{{majority_floor_leader13|}}}
| majority_leader = {{#if: {{{majorityleader13|}}} | {{{majorityleader13}}} | {{{majority_leader13|}}} }}
| majority = {{{majority13|}}}
| minister = {{{minister13|}}}
| minority_leader = {{#if: {{{minorityleader13|}}} | {{{minorityleader13}}} | {{{minority_leader13|}}} }}
| monarch = {{{monarch13|}}}
| nominator = {{{nominator13|}}}
| office = {{{office13|}}}
| order = {{{order13|}}}
| parliament = {{{parliament13|}}}
| parliamentarygroup = {{{parliamentarygroup13|}}}
| predecessor = {{{predecessor13|}}}
| preceding = {{{preceding13|}}}
| preceded = {{{preceded13|}}}
| premier = {{{premier13|}}}
| president = {{{president13|}}}
| primeminister = {{{primeminister13|}}}
| riding = {{{riding13|}}}
| state_assembly = {{{state_assembly13|}}}
| state_delegate = {{{state_delegate13|}}}
| state_house = {{{state_house13|}}}
| state_legislature = {{{state_legislature13|}}}
| state_senate = {{{state_senate13|}}}
| state = {{{state13|}}}
| status = {{{status13|}}}
| subterm = {{nobold|{{{subterm13|}}}}}
| suboffice = {{{suboffice13|}}}
| succeeded = {{{succeeded13|}}}
| succeeding = {{{succeeding13|}}}
| successor = {{{successor13|}}}
| taoiseach = {{{taoiseach13|}}}
| termlabel = {{{term_label13|{{{termlabel13|In office}}}}}}
| termend = {{#if:{{{termend13|}}}|{{{termend13}}}|{{{term_end13|}}}}}
| termstart = {{#if:{{{termstart13|}}}|{{{termstart13}}}|{{{term_start13|}}}}}
| term = {{{term13|}}}
| title = {{{title13|}}}
| vicegovernor = {{{vicegovernor13|}}}
| vicepresident = {{{vicepresident13|}}}
| vicepremier = {{{vicepremier13|}}}
| viceprimeminister = {{{viceprimeminister13|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term13|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname14|}}}
| 1namedata = {{{1namedata14|}}}
| 2blankname = {{{2blankname14|}}}
| 2namedata = {{{2namedata14|}}}
| 3blankname = {{{3blankname14|}}}
| 3namedata = {{{3namedata14|}}}
| 4blankname = {{{4blankname14|}}}
| 4namedata = {{{4namedata14|}}}
| 5blankname = {{{5blankname14|}}}
| 5namedata = {{{5namedata14|}}}
| alongside = {{{alongside14|}}}
| ambassador_from = {{{ambassador_from14|}}}
| appointer = {{#if: {{{appointer14|}}} | {{{appointer14}}} | {{{appointed14|}}} }}
| assembly = {{{assembly14|}}}
| assuming = {{{assuming14|}}}
| chancellor = {{{chancellor14|}}}
| co-leader = {{{co-leader14|}}}
| constituency_{{#if:{{{constituency_AM14|}}}|AM|MP}} = {{#if: {{{constituency_AM14|}}} | {{{constituency_AM14}}} | {{{constituency_MP14|}}} }}
| constituency = {{{constituency14|}}}
| convocation = {{{convocation14|}}}
| country = {{{country14|}}}
| deputy = {{{deputy14|}}}
| district = {{{district14|}}}
| firstminister = {{{firstminister14|}}}
| governor-general = {{{governor-general14|}}}
| governor_general = {{{governor_general14|}}}
| governor = {{{governor14|}}}
| jr/sr = {{{jr/sr14|}}}
| jr/sr and state = {{{jr/sr and state14|}}}
| leader = {{{leader14|}}}
| legislature = {{{legislature14|}}}
| lieutenant_governor = {{{lieutenant_governor14|}}}
| lieutenant = {{{lieutenant14|}}}
| minister_from = {{{minister_from14|}}}
| minority_floor_leader = {{{minority_floor_leader14|}}}
| majority_floor_leader = {{{majority_floor_leader14|}}}
| majority_leader = {{#if: {{{majorityleader14|}}} | {{{majorityleader14}}} | {{{majority_leader14|}}} }}
| majority = {{{majority14|}}}
| minister = {{{minister14|}}}
| minority_leader = {{#if: {{{minorityleader14|}}} | {{{minorityleader14}}} | {{{minority_leader14|}}} }}
| monarch = {{{monarch14|}}}
| nominator = {{{nominator14|}}}
| office = {{{office14|}}}
| order = {{{order14|}}}
| parliament = {{{parliament14|}}}
| parliamentarygroup = {{{parliamentarygroup14|}}}
| predecessor = {{{predecessor14|}}}
| preceding = {{{preceding14|}}}
| preceded = {{{preceded14|}}}
| premier = {{{premier14|}}}
| president = {{{president14|}}}
| primeminister = {{{primeminister14|}}}
| riding = {{{riding14|}}}
| state_assembly = {{{state_assembly14|}}}
| state_delegate = {{{state_delegate14|}}}
| state_house = {{{state_house14|}}}
| state_legislature = {{{state_legislature14|}}}
| state_senate = {{{state_senate14|}}}
| state = {{{state14|}}}
| status = {{{status14|}}}
| subterm = {{nobold|{{{subterm14|}}}}}
| suboffice = {{{suboffice14|}}}
| succeeded = {{{succeeded14|}}}
| succeeding = {{{succeeding14|}}}
| successor = {{{successor14|}}}
| taoiseach = {{{taoiseach14|}}}
| termlabel = {{{term_label14|{{{termlabel14|In office}}}}}}
| termend = {{#if:{{{termend14|}}}|{{{termend14}}}|{{{term_end14|}}}}}
| termstart = {{#if:{{{termstart14|}}}|{{{termstart14}}}|{{{term_start14|}}}}}
| term = {{{term14|}}}
| title = {{{title14|}}}
| vicegovernor = {{{vicegovernor14|}}}
| vicepresident = {{{vicepresident14|}}}
| vicepremier = {{{vicepremier14|}}}
| viceprimeminister = {{{viceprimeminister14|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term14|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname15|}}}
| 1namedata = {{{1namedata15|}}}
| 2blankname = {{{2blankname15|}}}
| 2namedata = {{{2namedata15|}}}
| 3blankname = {{{3blankname15|}}}
| 3namedata = {{{3namedata15|}}}
| 4blankname = {{{4blankname15|}}}
| 4namedata = {{{4namedata15|}}}
| 5blankname = {{{5blankname15|}}}
| 5namedata = {{{5namedata15|}}}
| alongside = {{{alongside15|}}}
| ambassador_from = {{{ambassador_from15|}}}
| appointer = {{#if: {{{appointer15|}}} | {{{appointer15}}} | {{{appointed15|}}} }}
| assembly = {{{assembly15|}}}
| assuming = {{{assuming15|}}}
| chancellor = {{{chancellor15|}}}
| co-leader = {{{co-leader15|}}}
| constituency_{{#if:{{{constituency_AM15|}}}|AM|MP}} = {{#if: {{{constituency_AM15|}}} | {{{constituency_AM15}}} | {{{constituency_MP15|}}} }}
| constituency = {{{constituency15|}}}
| convocation = {{{convocation15|}}}
| country = {{{country15|}}}
| deputy = {{{deputy15|}}}
| district = {{{district15|}}}
| firstminister = {{{firstminister15|}}}
| governor-general = {{{governor-general15|}}}
| governor_general = {{{governor_general15|}}}
| governor = {{{governor15|}}}
| jr/sr = {{{jr/sr15|}}}
| jr/sr and state = {{{jr/sr and state15|}}}
| leader = {{{leader15|}}}
| legislature = {{{legislature15|}}}
| lieutenant_governor = {{{lieutenant_governor15|}}}
| lieutenant = {{{lieutenant15|}}}
| minister_from = {{{minister_from15|}}}
| minority_floor_leader = {{{minority_floor_leader15|}}}
| majority_floor_leader = {{{majority_floor_leader15|}}}
| majority_leader = {{#if: {{{majorityleader15|}}} | {{{majorityleader15}}} | {{{majority_leader15|}}} }}
| majority = {{{majority15|}}}
| minister = {{{minister15|}}}
| minority_leader = {{#if: {{{minorityleader15|}}} | {{{minorityleader15}}} | {{{minority_leader15|}}} }}
| monarch = {{{monarch15|}}}
| nominator = {{{nominator15|}}}
| office = {{{office15|}}}
| order = {{{order15|}}}
| parliament = {{{parliament15|}}}
| parliamentarygroup = {{{parliamentarygroup15|}}}
| predecessor = {{{predecessor15|}}}
| preceding = {{{preceding15|}}}
| preceded = {{{preceded15|}}}
| premier = {{{premier15|}}}
| president = {{{president15|}}}
| primeminister = {{{primeminister15|}}}
| riding = {{{riding15|}}}
| state_assembly = {{{state_assembly15|}}}
| state_delegate = {{{state_delegate15|}}}
| state_house = {{{state_house15|}}}
| state_legislature = {{{state_legislature15|}}}
| state_senate = {{{state_senate15|}}}
| state = {{{state15|}}}
| status = {{{status15|}}}
| subterm = {{nobold|{{{subterm15|}}}}}
| suboffice = {{{suboffice15|}}}
| succeeded = {{{succeeded15|}}}
| succeeding = {{{succeeding15|}}}
| successor = {{{successor15|}}}
| taoiseach = {{{taoiseach15|}}}
| termlabel = {{{term_label15|{{{termlabel15|In office}}}}}}
| termend = {{#if:{{{termend15|}}}|{{{termend15}}}|{{{term_end15|}}}}}
| termstart = {{#if:{{{termstart15|}}}|{{{termstart15}}}|{{{term_start15|}}}}}
| term = {{{term15|}}}
| title = {{{title15|}}}
| vicegovernor = {{{vicegovernor15|}}}
| vicepresident = {{{vicepresident15|}}}
| vicepremier = {{{vicepremier15|}}}
| viceprimeminister = {{{viceprimeminister15|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term15|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname16|}}}
| 1namedata = {{{1namedata16|}}}
| 2blankname = {{{2blankname16|}}}
| 2namedata = {{{2namedata16|}}}
| 3blankname = {{{3blankname16|}}}
| 3namedata = {{{3namedata16|}}}
| 4blankname = {{{4blankname16|}}}
| 4namedata = {{{4namedata16|}}}
| 5blankname = {{{5blankname16|}}}
| 5namedata = {{{5namedata16|}}}
| alongside = {{{alongside16|}}}
| ambassador_from = {{{ambassador_from16|}}}
| appointer = {{#if: {{{appointer16|}}} | {{{appointer16}}} | {{{appointed16|}}} }}
| assembly = {{{assembly16|}}}
| assuming = {{{assuming16|}}}
| chancellor = {{{chancellor16|}}}
| co-leader = {{{co-leader16|}}}
| constituency_{{#if:{{{constituency_AM16|}}}|AM|MP}} = {{#if: {{{constituency_AM16|}}} | {{{constituency_AM16}}} | {{{constituency_MP16|}}} }}
| constituency = {{{constituency16|}}}
| convocation = {{{convocation16|}}}
| country = {{{country16|}}}
| deputy = {{{deputy16|}}}
| district = {{{district16|}}}
| firstminister = {{{firstminister16|}}}
| governor-general = {{{governor-general16|}}}
| governor_general = {{{governor_general16|}}}
| governor = {{{governor16|}}}
| jr/sr = {{{jr/sr16|}}}
| jr/sr and state = {{{jr/sr and state16|}}}
| leader = {{{leader16|}}}
| legislature = {{{legislature16|}}}
| lieutenant_governor = {{{lieutenant_governor16|}}}
| lieutenant = {{{lieutenant16|}}}
| minister_from = {{{minister_from16|}}}
| minority_floor_leader = {{{minority_floor_leader16|}}}
| majority_floor_leader = {{{majority_floor_leader16|}}}
| majority_leader = {{#if: {{{majorityleader16|}}} | {{{majorityleader16}}} | {{{majority_leader16|}}} }}
| majority = {{{majority16|}}}
| minister = {{{minister16|}}}
| minority_leader = {{#if: {{{minorityleader16|}}} | {{{minorityleader16}}} | {{{minority_leader16|}}} }}
| monarch = {{{monarch16|}}}
| nominator = {{{nominator16|}}}
| office = {{{office16|}}}
| order = {{{order16|}}}
| parliament = {{{parliament16|}}}
| parliamentarygroup = {{{parliamentarygroup16|}}}
| predecessor = {{{predecessor16|}}}
| preceding = {{{preceding16|}}}
| preceded = {{{preceded16|}}}
| premier = {{{premier16|}}}
| president = {{{president16|}}}
| primeminister = {{{primeminister16|}}}
| riding = {{{riding16|}}}
| state_assembly = {{{state_assembly16|}}}
| state_delegate = {{{state_delegate16|}}}
| state_house = {{{state_house16|}}}
| state_legislature = {{{state_legislature16|}}}
| state_senate = {{{state_senate16|}}}
| state = {{{state16|}}}
| status = {{{status16|}}}
| subterm = {{nobold|{{{subterm16|}}}}}
| suboffice = {{{suboffice16|}}}
| succeeded = {{{succeeded16|}}}
| succeeding = {{{succeeding16|}}}
| successor = {{{successor16|}}}
| taoiseach = {{{taoiseach16|}}}
| termlabel = {{{term_label16|{{{termlabel16|In office}}}}}}
| termend = {{#if:{{{termend16|}}}|{{{termend16}}}|{{{term_end16|}}}}}
| termstart = {{#if:{{{termstart16|}}}|{{{termstart16}}}|{{{term_start16|}}}}}
| term = {{{term16|}}}
| title = {{{title16|}}}
| vicegovernor = {{{vicegovernor16|}}}
| vicepresident = {{{vicepresident16|}}}
| vicepremier = {{{vicepremier16|}}}
| viceprimeminister = {{{viceprimeminister16|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term16|}}}
}}}}
| data2 = {{{module0|}}}
<!----------Personal data---------->
| header3 = {{#if:{{{pronunciation|}}}{{{birth_name|{{{birthname|}}}}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{resting_place|{{{restingplace|}}}}}}{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}{{{citizenship|}}}{{{nationality|}}}{{{party|}}}{{{otherparty|}}}{{{spouse|}}}{{{spouses|}}}{{{partner|}}}{{{relations|}}}{{{children|}}}{{{parents|}}}{{{mother|}}}{{{father|}}}{{{relatives|}}}{{{residence|}}}{{{education|}}}{{{alma_mater|}}}{{{occupation|}}}{{{profession|}}}{{{known_for|}}}{{{salary|}}}{{{cabinet|}}}{{{committees|}}}{{{portfolio|}}}{{{awards|}}}{{{data1|}}}{{{data2|}}}{{{data3|}}}{{{data4|}}}{{{data5|}}}|Personal details}}
| label4 = Pronunciation
| data4 = {{{pronunciation|}}}
| label5 = Born
| data5 = {{br separated entries
|1 = {{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname}}}}}}</div>}}
|2 = {{{birth_date|}}}
|3 = {{{birth_place|}}}
}}
| label6 = Died
| data6 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}}
| label7 = {{#ifexpr: {{strfind short|
{{{death_cause|}}}|Assassination}}
| Manner |{{#if:{{{death_manner|}}}|Manner|Cause}} }} of death
| data7 = {{#if:{{{death_manner|}}}|{{{death_manner|}}}|{{{death_cause|}}}}}
| label8 = Resting place
| class8 = label
| data8 = {{br separated entries|{{{resting_place|{{{restingplace|}}}}}}|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}}
| label9 = Citizenship
| data9 = {{{citizenship|}}}
| label10 = Nationality
| data10 = {{#switch:{{Delink|{{{nationality|}}}}}
| {{#ifeq:{{Country2nationality|{{Find country|{{Delink|{{{birth_place|}}}}}}}}}|{{Delink|{{{nationality|}}}}}|{{Delink|{{{nationality|}}}}}}} =
| {{#ifeq:{{Find country|{{{birth_place|}}}}}|England|British}} =
| #default = {{{nationality|}}} }}
| label11 = Political party
| data11 = {{#switch:{{{party|}}}
| =
| [[United States Democratic Party|Democrat]]
| [[Democratic Party (United States)|Democratic]]
| [[Democratic Party (United States)|Democrat]] = [[Democratic Party (United States)|Democratic]]
| [[Republican Party (United States)|Republican]]
| [[United States Republican Party]]
| [[United States Republican Party|Republican]]
| [[Republican Party (United States)|Republican Party]] = [[Republican Party (United States)|Republican]]
| [[Conservative Party (UK)|Conservative Party]]
| [[Conservative Party (UK)|Conservative]] = [[Conservative Party (UK)|Conservative]]
| [[Labour Party (UK)|Labour Party]]
| [[Labour Party (UK)|Labour]] = [[Labour Party (UK)|Labour]]
| [[Conservative Party of Canada|Conservative Party]]
| [[Conservative Party of Canada|Conservative]] = [[Conservative Party of Canada|Conservative]]
| [[Liberal Party of Canada|Liberal Party]]
| [[Liberal Party of Canada|Liberal]] = [[Liberal Party of Canada|Liberal]]
| KMT
| Kuomintang
| [[KMT]]
| [[Kuomintang|KMT]]
| [[Kuomintang]]
| Kuomintang (KMT)
| [[Kuomintang]] (KMT) = [[Kuomintang]]
| DPP
| [[Democratic Progressive Party|DPP]]
| [[Democratic Progressive Party]] = [[Democratic Progressive Party]]
| #default = {{{party|}}} }}
| label12 = Other political<br />affiliations
| data12 = {{{otherparty|}}}
| label13 = Height
| data13 = {{#if:{{{height|}}}|{{infobox person/height|{{{height|}}}}}}}
| label14 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}}
| data14 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}}
| label15 = Domestic partner{{Pluralize from text|{{{partner|}}}|likely=(s)|plural=s}}
| data15 = {{{partner|}}}
| label16 = Relations
| data16 = {{{relations|}}}
| label17 = Children
| data17 = {{{children|}}}
| label18 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}}
| data18 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}}
| label19 = Relatives
| data19 = {{{relatives|}}}
| label20 = Residence{{Pluralize from text|{{{residence|}}}|likely=(s)|plural=s}}
| class20 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}}
| data20 = {{{residence|}}}
| label21 = Education
| data21 = {{{education|}}}
| label22 = [[Alma mater]]
| data22 = {{{alma_mater|}}}
| label23 = Occupation
| data23 = {{{occupation|}}}
| label24 = Profession
| data24 = {{{profession|}}}
| label25 = Known for
| data25 = {{{known_for|}}}
| label26 = Salary
| data26 = {{{salary|}}}
| label27 = Cabinet
| data27 = {{{cabinet|}}}
| label28 = Committees
| data28 = {{{committees|}}}
| label29 = Portfolio
| data29 = {{{portfolio|}}}
| label30 = {{#if:{{{mawards|}}}|Civilian awards|Awards}}
| data30 = {{{awards|}}}
| label31 = {{{blank1}}}
| data31 = {{{data1|}}}
| label32 = {{{blank2}}}
| data32 = {{{data2|}}}
| label33 = {{{blank3}}}
| data33 = {{{data3|}}}
| label34 = {{{blank4}}}
| data34 = {{{data4|}}}
| label35 = {{{blank5}}}
| data35 = {{{data5|}}}
| label36 = Signature
| data36 = {{#if:{{{signature|}}}|[[File:{{{signature}}}|{{#if:{{{signature_size|}}}|{{{signature_size}}}|128x80px}}|alt={{{signature_alt|}}}|{{PAGENAME}}'s signature]]}}
| label37 = Website
| data37 = {{{website|}}}
| label38 = Nickname{{Pluralize from text|{{{nickname|}}}|likely=(s)|plural=s}}
| data38 = {{{nickname|}}}
| header39 = {{#if:{{{allegiance|}}}{{{branch|}}}{{{serviceyears|}}}{{{rank|}}}{{{unit|}}}{{{commands|}}}{{{battles|}}}{{{military_blank1|}}}|Military service}}
| label40 = Allegiance
| data40 = {{{allegiance|}}}
| label41 = {{#if:{{{branch_label|}}}|{{{branch_label|}}}|Branch/service}}
| data41 = {{{branch|}}}
| label42 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years of service}}
| data42 = {{{serviceyears|}}}
| label43 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}}
| data43 = {{{rank|}}}
| label44 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}}
| data44 = {{{unit|}}}
| label45 = Commands
| data45 = {{{commands|}}}
| label46 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}}
| data46 = {{{battles|}}}
| label47 = {{#if:{{{awards|}}}|Military awards|Awards}}
| data47 = {{{mawards|}}}
| label48 = {{{military_blank1}}}
| data48 = {{{military_data1|}}}
| label49 = {{{military_blank2}}}
| data49 = {{{military_data2|}}}
| label50 = {{{military_blank3}}}
| data50 = {{{military_data3|}}}
| label51 = {{{military_blank4}}}
| data51 = {{{military_data4|}}}
| label52 = {{{military_blank5}}}
| data52 = {{{military_data5|}}}
| data53 = {{{module|}}}
| data54 = {{{module2|}}}
| data55 = {{{module3|}}}
| data56 = {{{module4|}}}
| data57 = {{{module5|}}}
| data58 = {{{footnotes|}}}
| belowstyle = border-top: 1px solid right; font-size: 95%
| below = <div>{{#if:{{{date|}}}| As of {{{date}}}{{#if:{{{year|}}}|, {{{year}}}}}}}</div>{{#if:{{{source|}}}|Source: [{{{source}}}]}}
}}{{#if:{{{pronunciation|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Biography template using pronunciation]]}}
}}{{#if:{{{1blankname0|}}}{{{1namedata0|}}}{{{2blankname0|}}}{{{2namedata0|}}}{{{3blankname0|}}}{{{3namedata0|}}}{{{4blankname0|}}}{{{4namedata0|}}}{{{5blankname0|}}}{{{5namedata0|}}}{{{alongside0|}}}{{{ambassador_from0|}}}{{{appointer0|}}}{{{assembly0|}}}{{{assuming0|}}}{{{chancellor0|}}}{{{co-leader0|}}}{{{constituency_AM0|}}}{{{constituency0|}}}{{{country0|}}}{{{deputy0|}}}{{{district0|}}}{{{firstminister0|}}}{{{governor-general0|}}}{{{governor0|}}}{{{jr/sr0|}}}{{{jr/sr and state0|}}}{{{leader0|}}}{{{legislature0|}}}{{{lieutenant_governor0|}}}{{{lieutenant0|}}}{{{minister_from0|}}}{{{minority_floor_leader0|}}}{{{majority_floor_leader0|}}}{{{majorityleader0|}}}{{{majority0|}}}{{{minister0|}}}{{{minorityleader0|}}}{{{monarch0|}}}{{{nominator0|}}}{{{office0|}}}{{{order0|}}}{{{parliament0|}}}{{{predecessor0|}}}{{{preceding0|}}}{{{preceded0|}}}{{{premier0|}}}{{{president0|}}}{{{primeminister0|}}}{{{riding0|}}}{{{state_assembly0|}}}{{{state_delegate0|}}}{{{state_house0|}}}{{{state_legislature0|}}}{{{state_senate0|}}}{{{state0|}}}{{{suboffice0|}}}{{{subterm0|}}}{{{succeeded0|}}}{{{succeeding0|}}}{{{successor0|}}}{{{taoiseach0|}}}{{{termend0|}}}{{{termstart0|}}}{{{term0|}}}{{{title0|}}}{{{vicegovernor0|}}}{{{vicepresident0|}}}{{{vicepremier0|}}}{{{viceprimeminister0|}}}{{{prior_term0|}}}{{{appointe0|}}}{{{constituency_0|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with office0]]}}
}}{{#if:{{{speaker|}}}|{{#if:{{{nominee|}}}{{{candidate|}}}||{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with speaker]]}}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with unknown parameters|_VALUE_{{PAGENAME}}]]}}}}|preview=Page using [[Template:Infobox officeholder]] with unknown parameter "_VALUE_"|ignoreblank=y| regexp1 = 1blankname[%d]* | regexp2 = 1namedata[%d]* | regexp3 = 2blankname[%d]* | regexp4 = 2namedata[%d]* | regexp5 = 3blankname[%d]* | regexp6 = 3namedata[%d]* | regexp7 = 4blankname[%d]* | regexp8 = 4namedata[%d]* | regexp9 = 5blankname[%d]* | regexp10 = 5namedata[%d]* | allegiance | alma_mater | regexp11 = alongside[%d]* | alt | regexp12 = ambassador_from[%d]* | regexp13 = appointed[%d]* | regexp14 = appointer[%d]* | regexp15 = assembly[%d]* | awards | battles | battles_label | birth_date | birth_name | birth_place | birthname | regexp16 = blank[%d]* | bodyclass | branch | branch_label | cabinet | candidate | caption | categories | regexp17 = chancellor[%d]* | children | citizenship | regexp18 = co%-leader[%d]* | commands | committees | regexp19 = constituency[%d]* | regexp20 = constituency_AM[%d]* | regexp21 = constituency_MP[%d]* | regexp22 = convocation[%d]* | regexp23 = country[%d]* | regexp24 = data[%d]* | date | death_cause | death_date | death_manner | death_place | demo | regexp25 = deputy[%d]* | regexp26 = district[%d]* | education | election_date | embed | father | regexp28 = firstminister[%d]* | footnotes | regexp29 = governor[%d]* | regexp30 = governor_general[%d]* | regexp31 = governor%-general[%d]* | height | honorific_prefix | honorific-prefix | honorific_suffix | honorific-suffix | image | image name | image_name_alt | image_size | imagesize | image_upright | incumbent | regexp32 = jr/sr[%d]* | regexp33 = jr/sr and state[%d]* | known_for | regexp34 = leader[%d]* | regexp35 = legislature[%d]* | regexp36 = lieutenant[%d]* | regexp37 = lieutenant_governor[%d]* | mainwidth | regexp38 = majority[%d]* | regexp39 = majority_floor_leader[%d]* | regexp40 = majority_leader[%d]* | regexp41 = majorityleader[%d]* | mawards | regexp42 = military_blank[%d]* | regexp43 = military_data[%d]* | regexp44 = minister[%d]* | regexp45 = minister_from[%d]* | regexp46 = minority_floor_leader[%d]* | regexp47 = minority_leader[%d]* | regexp48 = minorityleader[%d]* | regexp49 = module[%d]* | regexp50 = monarch[%d]* | mother | name | nationality | native_name | native_name_lang | nickname | nocat | regexp51 = nominator[%d]* | nominee | occupation | regexp52 = office[%d]* | opponent | regexp53 = order[%d]* | otherparty | parents | regexp54 = parliament[%d]* | regexp55 = parliamentarygroup[%d]* | partner | party | party_election | portfolio | regexp56 = preceded[%d]* | regexp57 = preceding[%d]* | regexp58 = predecessor[%d]* | regexp59 = premier[%d]* | regexp60 = president[%d]* | regexp61 = primeminister[%d]* | regexp62 = prior_term[%d]* | profession | pronunciation | rank | rank_label | relations | relatives | residence | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | regexp63 = riding[%d]* | runningmate | salary | serviceyears | serviceyears_label | signature | signature_alt | signature_size | smallimage | smallimage_alt | source | speaker | speaker_office | spouse | spouses | regexp64 = state[%d]* | regexp65 = state_assembly[%d]* | regexp66 = state_delegate[%d]* | regexp67 = state_house[%d]* | regexp68 = state_legislature[%d]* | regexp69 = state_senate[%d]* | regexp70 = status[%d]* | regexp71 = suboffice[%d]* | regexp72 = subterm[%d]* | regexp73 = succeeded[%d]* | regexp74 = succeeding[%d]* | regexp75 = successor[%d]* | regexp76 = taoiseach[%d]* | regexp77 = term[%d]* | regexp78 = term_end[%d]* | regexp79 = term_label[%d]* | regexp80 = term_start[%d]* | regexp81 = termend[%d]* | regexp82 = termlabel[%d]* | regexp83 = termstart[%d]* | regexp84 = title[%d]* | unit | unit_label | regexp85 = vicegovernor[%d]* | regexp86 = vicepremier[%d]* | regexp87 = vicepresident[%d]* | regexp88 = viceprimeminister[%d]* | regexp89 = assuming[%d]* | website | width | year }}<noinclude>
{{Documentation}}
</noinclude>
a019277287dbb30717151685a827a955fb3d1c80
Template:Plainlist/doc
10
635
1430
2023-07-06T04:37:49Z
wikipedia>SWinxy
0
{{Template shortcut}}
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{High-use}}
{{Template shortcut|PL}}
{{Uses TemplateStyles|Template:Plainlist/styles.css}}
This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]
== Usage ==
{{tl|plainlist}} starts a plain (i.e. unbulleted) list, such as:
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with {{tag|br|s}}. Detailed reasons for using this template can be found at [[WP:UBLIST]].
This template can be used with or without {{tl|endplainlist}}. It is an alternative to {{tl|unbulleted list}}, which performs the same function in a more concise but less wiki-style manner. Note that {{tl|unbulleted list}} will work inside image captions, whereas {{tl|plainlist}} does not.
== Examples ==
{{Markup
|<nowiki>
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
</nowiki>
|
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
}}
=== Alternative syntax ===
{{Markup
|<nowiki>
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
</nowiki>
|
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
}}
== Parameters ==
{{Format TemplateData|JSON= {
"params": {
"1": {
"label": "List content",
"description": "If supplied, the list, as a normal bulleted list. (Every line should start with an asterisk. No blank lines between lines.) See template page for how this works otherwise.",
"type": "content",
"suggested": true
},
"class": {
"label": "CSS classes",
"description": "Adds a CSS class to the containing div.",
"type": "string",
"default": "The class \"plainlist\" is always applied."
},
"style": {
"label": "Custom CSS",
"description": "Adds CSS style options. Complex styles should not be used in articles (per [[WP:Deviations]]) but may be acceptable on user, project, and talk pages.",
"type": "string",
"example": "border:solid 1px silver; background:lightyellow"
},
"indent": {
"label": "Indent level",
"description": "Indents the list by a number of standard indents (one indent being 1.6em), particularly handy for inclusion in an indented discussion thread.",
"type": "number",
"example": "2"
}
},
"description": "This template provides a WCAG/ISO-standards-compliant accessible alternative to <br /> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]. It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with <br />. Detailed reasons for using this template can be found at WP:UBLIST."
} }}
=== Controlling line-breaking ===
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists, to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Technical details ==
{{tl|Plainlist}} works by constructing a [[span and div|div]] with the [[Cascading Style Sheets|CSS]] class "plainlist" which has the styles listed in [[Template:Plainlist/styles.css]].
{| class="wikitable"
! Wikitext
! Expanded template
! HTML
|- style="vertical-align:top;"
| class="nowrap" | <pre>
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
</pre>
| class="nowrap" | {{nowiki2|tag=pre|
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
}}
| <syntaxhighlight lang="html">
<div class="plainlist">
<ul>
<li>Example 1</li>
<li>Example 2</li>
<li>Example 3</li>
</ul>
</div>
</syntaxhighlight>
|}
== Redirects ==
* {{tl|Startplainlist}}
== See also ==
* {{tl|unbulleted list}} – essentially the same but uses <code><nowiki>| ... | ... | ...</nowiki></code> instead of <code><nowiki>|* ... * ... * ...</nowiki></code>
* {{tl|flatlist}} and {{tl|hlist}} (replacements for comma- or dash-separated lists)
* {{tl|bulleted list}}
* {{tl|indented plainlist}}
* {{tl|ordered list}}
* {{section link|Template:Infobox person#Inline lists}} for more information on creating lists within the Infobox family of templates, with examples in the following {{section link|Template:Infobox person#Examples|nopage=y}}
{{navbox lists}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:List formatting and function templates|Plainlist]]
[[Category:Semantic markup templates]]
[[Category:Typing-aid templates|Plainlist]]
}}</includeonly>
3e643450c27b6fb02ce218d36c67d391a6e20482
Template:Switcher
10
1728
3260
2023-07-06T17:59:58Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Switcher]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2505 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
<includeonly><div class="switcher-container">{{
safesubst:#if:{{{2|}}}|<div>{{{1|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|1|data-switcher-default=""}}>{{safesubst:#if:trim|{{{2|}}}}}</span></div>}}{{
safesubst:#if:{{{4|}}}|<div>{{{3|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|2|data-switcher-default=""}}>{{safesubst:#if:trim|{{{4|}}}}}</span></div>}}{{
safesubst:#if:{{{6|}}}|<div>{{{5|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|3|data-switcher-default=""}}>{{safesubst:#if:trim|{{{6|}}}}}</span></div>}}{{
safesubst:#if:{{{8|}}}|<div>{{{7|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|4|data-switcher-default=""}}>{{safesubst:#if:trim|{{{8|}}}}}</span></div>}}{{
safesubst:#if:{{{10|}}}|<div>{{{9|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|5|data-switcher-default=""}}>{{safesubst:#if:trim|{{{10|}}}}}</span></div>}}{{
safesubst:#if:{{{12|}}}|<div>{{{11|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|6|data-switcher-default=""}}>{{safesubst:#if:trim|{{{12|}}}}}</span></div>}}{{
safesubst:#if:{{{14|}}}|<div>{{{13|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|7|data-switcher-default=""}}>{{safesubst:#if:trim|{{{14|}}}}}</span></div>}}{{
safesubst:#if:{{{16|}}}|<div>{{{15|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|8|data-switcher-default=""}}>{{safesubst:#if:trim|{{{16|}}}}}</span></div>}}{{
safesubst:#if:{{{18|}}}|<div>{{{17|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|9|data-switcher-default=""}}>{{safesubst:#if:trim|{{{18|}}}}}</span></div>}}{{
safesubst:#if:{{{20|}}}|<div>{{{19|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|10|data-switcher-default=""}}>{{safesubst:#if:trim|{{{20|}}}}}</span></div>}}{{
safesubst:#if:{{{22|}}}|<div>{{{21|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|11|data-switcher-default=""}}>{{safesubst:#if:trim|{{{22|}}}}}</span></div>}}{{
safesubst:#if:{{{24|}}}|<div>{{{23|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|12|data-switcher-default=""}}>{{safesubst:#if:trim|{{{24|}}}}}</span></div>}}{{
safesubst:#if:{{{26|}}}|<div>{{{25|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|13|data-switcher-default=""}}>{{safesubst:#if:trim|{{{26|}}}}}</span></div>}}{{
safesubst:#if:{{{28|}}}|<div>{{{27|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|14|data-switcher-default=""}}>{{safesubst:#if:trim|{{{28|}}}}}</span></div>}}{{
safesubst:#if:{{{30|}}}|<div>{{{29|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|15|data-switcher-default=""}}>{{safesubst:#if:trim|{{{30|}}}}}</span></div>}}{{
safesubst:#if:{{{32|}}}|<div>{{{31|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|16|data-switcher-default=""}}>{{safesubst:#if:trim|{{{32|}}}}}</span></div>}}{{
safesubst:#if:{{{34|}}}|<div>{{{33|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|17|data-switcher-default=""}}>{{safesubst:#if:trim|{{{34|}}}}}</span></div>}}{{
safesubst:#if:{{{36|}}}|<div>{{{35|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|18|data-switcher-default=""}}>{{safesubst:#if:trim|{{{36|}}}}}</span></div>}}{{
safesubst:#if:{{{38|}}}|<div>{{{37|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|19|data-switcher-default=""}}>{{safesubst:#if:trim|{{{38|}}}}}</span></div>}}{{
safesubst:#if:{{{40|}}}|<div>{{{39|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|20|data-switcher-default=""}}>{{safesubst:#if:trim|{{{40|}}}}}</span></div>}}</div></includeonly><noinclude><!--
NOTES
The includeonly tags prevent the safesubst from substituting.
#if:trim is the same as trim but lowers the post-expand include size.
-->{{Documentation}}</noinclude>
27599f049d0a8b8213aed569de1293a6910d6e40
Module:Location map/data/USA/doc
828
1684
3126
2023-07-10T05:47:18Z
wikipedia>JJMC89 bot III
0
Moving [[:Category:United States location map templates]] to [[:Category:United States location map modules]] per [[Wikipedia:Categories for discussion/Speedy]]
wikitext
text/x-wiki
<!-- Categories go at the bottom of this page. -->
{{Module:Location map/data/doc|name=the [[United States]]|projection=an [[equidistant conic projection]]|examples=
=== Location map, using default map (image) ===
{{Location map | USA
| width = 250
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
<pre style="width:30em">
{{Location map | USA
| width = 250
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
</pre>
{{clear}}
=== Location map many, using relief map (image1) ===
{{Location map many | USA
| relief = yes
| width = 250
| caption = Two locations in the United States
| label1 = Washington, D.C.
| lat1_deg = 38.89
| lon1_deg = -77.04
| label2 = Seattle
| lat2_deg = 47.61
| lon2_deg = -122.33
}}
<pre style="width:30em">
{{Location map many | USA
| relief = yes
| width = 250
| caption = Two locations in the United States
| label1 = Washington, D.C.
| lat1_deg = 38.89
| lon1_deg = -77.04
| label2 = Seattle
| lat2_deg = 47.61
| lon2_deg = -122.33
}}
</pre>
{{clear}}
=== Location map+, using AlternativeMap ===
{{Location map+ | USA
| AlternativeMap = Usa edcp relief location map.png
| caption = Two locations in the United States
| width = 250
| places =
{{Location map~ | USA
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
{{Location map~ | USA
| label = Seattle
| lat_deg = 47.61
| lon_deg = -122.33
}}
}}
<pre style="width:35em">
{{Location map+ | USA
| AlternativeMap = Usa edcp relief location map.png
| caption = Two locations in the United States
| width = 250
| places =
{{Location map~ | USA
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
{{Location map~ | USA
| label = Seattle
| lat_deg = 47.61
| lon_deg = -122.33
}}
}}
</pre>
=== Location map, one location on three maps ===
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
}}
<pre style="width:30em">
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
}}
</pre>
{{clear}}
=== Location map, three maps and three captions ===
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
| caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]]
}}
<pre style="width:30em">
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
| caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]]
}}
</pre>
{{clear}}
}}<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:United States location map modules| ]]
}}</includeonly>
9dd62ef3a72e4f7861f16e83e8a8696e68358a0c
Module:Parameter names example
828
64
123
2023-07-10T09:41:44Z
wikipedia>Gonnym
0
if these are wanted, they should be handled differently (by passing a parameter to this module) as these cause pages to appear as unknown parameters for templates that don't use them
Scribunto
text/plain
-- This module implements {{parameter names example}}.
local p = {}
local function makeParam(s)
local lb = '{'
local rb = '}'
return lb:rep(3) .. s .. rb:rep(3)
end
local function italicize(s)
return "''" .. s .. "''"
end
local function plain(s)
return s
end
function p._main(args, frame)
-- Find how we want to format the arguments to the template.
local formatFunc
if args._display == 'italics' or args._display == 'italic' then
formatFunc = italicize
elseif args._display == 'plain' then
formatFunc = plain
else
formatFunc = makeParam
end
-- Build the table of template arguments.
local targs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
targs[v] = formatFunc(v)
elseif not k:find('^_') then
targs[k] = v
end
end
--targs['nocat'] = 'yes';
--targs['categories'] = 'no';
--targs['demo'] = 'yes';
-- Find the template name.
local template
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end
-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
frame.expandTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Parameter names example'
})
return p._main(args, frame)
end
return p
fdf94fb7a5dc1fabf118d60488a02f1e65b0df24
Module:Wd
828
1048
2294
2023-07-10T18:06:15Z
wikipedia>Pppery
0
Per edit request
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local arg = ...
local i18n
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = arg
end
if not i18n then
i18n = require(title .. "/i18n").init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, param)
local text = i18n["errors"][code]
if param then text = mw.ustring.gsub(text, "$1", param) end
return text
end
local function throwError(errorMessage, param)
error(errorText(errorMessage, param))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels?
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local key, citeWeb, citeQ, label
local params = {}
local citeParams = {['web'] = {}, ['q'] = {}}
local citeMismatch = {}
local useCite = nil
local useParams = nil
local value = ""
local ref = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local numAuthorParameters = 0
local numAuthorNameStringParameters = 0
local tempLink
local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID
local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any
local version = 4 -- increment this each time the below logic is changed to avoid conflict errors
if statement.snaks then
-- don't include "imported from", which is added by a bot
if statement.snaks[aliasesP.importedFrom] then
statement.snaks[aliasesP.importedFrom] = nil
end
-- don't include "Wikimedia import URL"
if statement.snaks[aliasesP.wikimediaImportURL] then
statement.snaks[aliasesP.wikimediaImportURL] = nil
-- don't include "retrieved" if no "referenceURL" is present,
-- as "retrieved" probably belongs to "Wikimedia import URL"
if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then
statement.snaks[aliasesP.retrieved] = nil
end
end
-- don't include "inferred from", which is added by a bot
if statement.snaks[aliasesP.inferredFrom] then
statement.snaks[aliasesP.inferredFrom] = nil
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference
-- find the "Wikidata property" properties in the item from "stated in"
wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL.
additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- don't include "subject named as", but use it as the title when "title" is not present but a URL is
if statement.snaks[aliasesP.subjectNamedAs] then
if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then
additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value
end
statement.snaks[aliasesP.subjectNamedAs] = nil
end
-- retrieve all the parameters
for i in pairs(statement.snaks) do
label = ""
-- multiple authors may be given
if i == aliasesP.author or i == aliasesP.authorNameString then
params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true
else
params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #params[i] == 0 then
params[i] = nil
else
referenceEmpty = false
if statement.snaks[i][1].datatype == 'external-id' then
key = "external-id"
label = self.conf:getLabel(i)
if label ~= "" then
label = label .. " "
end
else
key = i
end
-- add the parameter to each matching type of citation
for j in pairs(citeParams) do
-- do so if there was no mismatch with a previous parameter
if not citeMismatch[j] then
-- check if this parameter is not mismatching itself
if i18n['cite'][j][key] then
-- continue if an option is available in the corresponding cite template
if i18n['cite'][j][key] ~= "" then
-- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter)
if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then
citeParams[j][i18n['cite'][j][key]] = label .. params[i][1]
-- to avoid problems with non-author multiple parameters (if existent), the following old code is retained
for k=2, #params[i] do
citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k]
end
-- handle "author" and "author name string" specially if they use the same template parameter
elseif i == aliasesP.author or i == aliasesP.authorNameString then
if params[aliasesP.author] ~= nil then
numAuthorParameters = #params[aliasesP.author]
else
numAuthorParameters = 0
end
if params[aliasesP.authorNameString] ~= nil then
numAuthorNameStringParameters = #params[aliasesP.authorNameString]
else
numAuthorNameStringParameters = 0
end
-- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks
-- reason: parameters are added to params each iteration of the loop, not before the loop
if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then
for k=1, numAuthorParameters + numAuthorNameStringParameters do
if k <= numAuthorParameters then -- now handling the authors from the "author" property
citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k]
else -- now handling the authors from "author name string"
citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters]
end
end
end
end
end
else
citeMismatch[j] = true
end
end
end
end
end
-- use additional properties
for i in pairs(additionalRefProperties) do
for j in pairs(citeParams) do
if not citeMismatch[j] and i18n["cite"][j][i] then
citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i]
else
citeMismatch[j] = true
end
end
end
-- get title of general template for citing web references
citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front
-- get title of template that expands stated-in references into citations
citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front
-- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present
if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then
useCite = citeWeb
useParams = citeParams['web']
-- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present
elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then
-- we need the raw "stated in" Q-identifier for the this template
citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true
useCite = citeQ
useParams = citeParams['q']
end
if useCite and useParams then
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(useParams) do
value = value .. "|" .. i .. "=" .. v
end
value = "{{" .. useCite .. value .. "}}"
else
value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams}
end
-- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error
elseif not referenceEmpty then
value = "<span style=\"color: crimson\">" .. errorText("malformed-reference") .. "</span>"
end
if value ~= "" then
value = {value} -- create one value object
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version)
end
ref = {value} -- wrap the value object in an array
end
end
return ref
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
local valuesArray, refHash
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true)
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
a84f46cf7d14594003fea6e756cf41b723dd67cd
Module:Wd/i18n
828
1049
2296
2023-07-10T18:07:36Z
wikipedia>Pppery
0
per edit request
Scribunto
text/plain
-- The values and functions in this submodule should be localized per wiki.
local p = {}
function p.init(aliasesP)
p = {
["errors"] = {
["unknown-data-type"] = "Unknown or unsupported datatype '$1'.",
["missing-required-parameter"] = "No required parameters defined, needing at least one",
["extra-required-parameter"] = "Parameter '$1' must be defined as optional",
["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message
["main-called-twice"] = 'The function "main" cannot be called twice',
["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message
["malformed-reference"] = "Error: Unable to display the reference properly. See [[Module:wd/doc#References|the documentation]] for details.[[Category:Module:Wd reference errors]]"
},
["info"] = {
["edit-on-wikidata"] = "Edit this on Wikidata"
},
["numeric"] = {
["decimal-mark"] = ".",
["delimiter"] = ","
},
["datetime"] = {
["prefixes"] = {
["decade-period"] = ""
},
["suffixes"] = {
["decade-period"] = "s",
["millennium"] = " millennium",
["century"] = " century",
["million-years"] = " million years",
["billion-years"] = " billion years",
["year"] = " year",
["years"] = " years"
},
["julian-calendar"] = "Julian calendar", -- linked page title
["julian"] = "Julian",
["BCE"] = "BCE",
["CE"] = "CE",
["common-era"] = "Common Era" -- linked page title
},
["coord"] = {
["latitude-north"] = "N",
["latitude-south"] = "S",
["longitude-east"] = "E",
["longitude-west"] = "W",
["degrees"] = "°",
["minutes"] = "'",
["seconds"] = '"',
["separator"] = ", "
},
["values"] = {
["unknown"] = "unknown",
["none"] = "none"
},
["cite"] = {
["version"] = "4", -- increment this each time the below parameters are changed to avoid conflict errors
["web"] = {
-- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "website",
[aliasesP.referenceURL] = "url",
[aliasesP.publicationDate] = "date",
[aliasesP.retrieved] = "access-date",
[aliasesP.title] = "title",
[aliasesP.archiveURL] = "archive-url",
[aliasesP.archiveDate] = "archive-date",
[aliasesP.language] = "language",
[aliasesP.author] = "author", -- existence of author1, author2, author3, etc. is assumed
[aliasesP.authorNameString] = "author",
[aliasesP.publisher] = "publisher",
[aliasesP.quote] = "quote",
[aliasesP.pages] = "pages", -- extra option
[aliasesP.publishedIn] = "website"
},
["q"] = {
-- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "1",
[aliasesP.pages] = "pages",
[aliasesP.column] = "at",
[aliasesP.chapter] = "chapter",
[aliasesP.sectionVerseOrParagraph] = "section",
["external-id"] = "id", -- used for any type of database property ID
[aliasesP.title] = "title",
[aliasesP.publicationDate] = "date",
[aliasesP.retrieved] = "access-date"
}
}
}
p.getOrdinalSuffix = function(num)
if tostring(num):sub(-2,-2) == '1' then
return "th" -- 10th, 11th, 12th, 13th, ... 19th
end
num = tostring(num):sub(-1)
if num == '1' then
return "st"
elseif num == '2' then
return "nd"
elseif num == '3' then
return "rd"
else
return "th"
end
end
p.addDelimiters = function(n)
local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$")
if left and num and right then
return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right
else
return n
end
end
return p
end
return p
a860785cf3b9ad3ba0c8096d5627eae877d4e9ab
Module:WikidataIB
828
1231
2564
2023-07-10T18:09:04Z
Pppery
6
Per edit request
Scribunto
text/plain
-- Version: 2023-07-10
-- Module to implement use of a blacklist and whitelist for infobox fields
-- Can take a named parameter |qid which is the Wikidata ID for the article
-- if not supplied, it will use the Wikidata ID associated with the current page.
-- Fields in blacklist are never to be displayed, i.e. module must return nil in all circumstances
-- Fields in whitelist return local value if it exists or the Wikidata value otherwise
-- The name of the field that this function is called from is passed in named parameter |name
-- The name is compulsory when blacklist or whitelist is used,
-- so the module returns nil if it is not supplied.
-- blacklist is passed in named parameter |suppressfields (or |spf)
-- whitelist is passed in named parameter |fetchwikidata (or |fwd)
require("strict")
local p = {}
local cdate -- initialise as nil and only load _complex_date function if needed
-- Module:Complex date is loaded lazily and has the following dependencies:
-- Module:Calendar
-- Module:ISOdate
-- Module:DateI18n
-- Module:I18n/complex date
-- Module:Ordinal
-- Module:I18n/ordinal
-- Module:Yesno
-- Module:Formatnum
-- Module:Linguistic
--
-- The following, taken from https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times,
-- is needed to use Module:Complex date which seemingly requires date precision as a string.
-- It would work better if only the authors of the mediawiki page could spell 'millennium'.
local dp = {
[6] = "millennium",
[7] = "century",
[8] = "decade",
[9] = "year",
[10] = "month",
[11] = "day",
}
local i18n =
{
["errors"] =
{
["property-not-found"] = "Property not found.",
["No property supplied"] = "No property supplied",
["entity-not-found"] = "Wikidata entity not found.",
["unknown-claim-type"] = "Unknown claim type.",
["unknown-entity-type"] = "Unknown entity type.",
["qualifier-not-found"] = "Qualifier not found.",
["site-not-found"] = "Wikimedia project not found.",
["labels-not-found"] = "No labels found.",
["descriptions-not-found"] = "No descriptions found.",
["aliases-not-found"] = "No aliases found.",
["unknown-datetime-format"] = "Unknown datetime format.",
["local-article-not-found"] = "Article is available on Wikidata, but not on Wikipedia",
["dab-page"] = " (dab)",
},
["months"] =
{
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
},
["century"] = "century",
["BC"] = "BC",
["BCE"] = "BCE",
["ordinal"] =
{
[1] = "st",
[2] = "nd",
[3] = "rd",
["default"] = "th"
},
["filespace"] = "File",
["Unknown"] = "Unknown",
["NaN"] = "Not a number",
-- set the following to the name of a tracking category,
-- e.g. "[[Category:Articles with missing Wikidata information]]", or "" to disable:
["missinginfocat"] = "[[Category:Articles with missing Wikidata information]]",
["editonwikidata"] = "Edit this on Wikidata",
["latestdatequalifier"] = function (date) return "before " .. date end,
-- some languages, e.g. Bosnian use a period as a suffix after each number in a date
["datenumbersuffix"] = "",
["list separator"] = ", ",
["multipliers"] = {
[0] = "",
[3] = " thousand",
[6] = " million",
[9] = " billion",
[12] = " trillion",
}
}
-- This allows an internationisation module to override the above table
if 'en' ~= mw.getContentLanguage():getCode() then
require("Module:i18n").loadI18n("Module:WikidataIB/i18n", i18n)
end
-- This piece of html implements a collapsible container. Check the classes exist on your wiki.
local collapsediv = '<div class="mw-collapsible mw-collapsed" style="width:100%; overflow:auto;" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}">'
-- Some items should not be linked.
-- Each wiki can create a list of those in Module:WikidataIB/nolinks
-- It should return a table called itemsindex, containing true for each item not to be linked
local donotlink = {}
local nolinks_exists, nolinks = pcall(mw.loadData, "Module:WikidataIB/nolinks")
if nolinks_exists then
donotlink = nolinks.itemsindex
end
-- To satisfy Wikipedia:Manual of Style/Titles, certain types of items are italicised, and others are quoted.
-- The submodule [[Module:WikidataIB/titleformats]] lists the entity-ids used in 'instance of' (P31),
-- which allows this module to identify the values that should be formatted.
-- WikidataIB/titleformats exports a table p.formats, which is indexed by entity-id, and contains the value " or ''
local formats = {}
local titleformats_exists, titleformats = pcall(mw.loadData, "Module:WikidataIB/titleformats")
if titleformats_exists then
formats = titleformats.formats
end
-------------------------------------------------------------------------------
-- Private functions
-------------------------------------------------------------------------------
--
-------------------------------------------------------------------------------
-- makeOrdinal needs to be internationalised along with the above:
-- takes cardinal number as a numeric and returns the ordinal as a string
-- we need three exceptions in English for 1st, 2nd, 3rd, 21st, .. 31st, etc.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local makeOrdinal = function(cardinal)
local ordsuffix = i18n.ordinal.default
if cardinal % 10 == 1 then
ordsuffix = i18n.ordinal[1]
elseif cardinal % 10 == 2 then
ordsuffix = i18n.ordinal[2]
elseif cardinal % 10 == 3 then
ordsuffix = i18n.ordinal[3]
end
-- In English, 1, 21, 31, etc. use 'st', but 11, 111, etc. use 'th'
-- similarly for 12 and 13, etc.
if (cardinal % 100 == 11) or (cardinal % 100 == 12) or (cardinal % 100 == 13) then
ordsuffix = i18n.ordinal.default
end
return tostring(cardinal) .. ordsuffix
end
-------------------------------------------------------------------------------
-- findLang takes a "langcode" parameter if supplied and valid
-- otherwise it tries to create it from the user's set language ({{int:lang}})
-- failing that it uses the wiki's content language.
-- It returns a language object
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local findLang = function(langcode)
local langobj
langcode = mw.text.trim(langcode or "")
if mw.language.isKnownLanguageTag(langcode) then
langobj = mw.language.new( langcode )
else
langcode = mw.getCurrentFrame():callParserFunction('int', {'lang'})
if mw.language.isKnownLanguageTag(langcode) then
langobj = mw.language.new( langcode )
else
langobj = mw.language.getContentLanguage()
end
end
return langobj
end
-------------------------------------------------------------------------------
-- _getItemLangCode takes a qid parameter (using the current page's qid if blank)
-- If the item for that qid has property country (P17) it looks at the first preferred value
-- If the country has an official language (P37), it looks at the first preferred value
-- If that official language has a language code (P424), it returns the first preferred value
-- Otherwise it returns nothing.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local _getItemLangCode = function(qid)
qid = mw.text.trim(qid or ""):upper()
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return end
local prop17 = mw.wikibase.getBestStatements(qid, "P17")[1]
if not prop17 or prop17.mainsnak.snaktype ~= "value" then return end
local qid17 = prop17.mainsnak.datavalue.value.id
local prop37 = mw.wikibase.getBestStatements(qid17, "P37")[1]
if not prop37 or prop37.mainsnak.snaktype ~= "value" then return end
local qid37 = prop37.mainsnak.datavalue.value.id
local prop424 = mw.wikibase.getBestStatements(qid37, "P424")[1]
if not prop424 or prop424.mainsnak.snaktype ~= "value" then return end
return prop424.mainsnak.datavalue.value
end
-------------------------------------------------------------------------------
-- roundto takes a number (x)
-- and returns it rounded to (sf) significant figures
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local roundto = function(x, sf)
if x == 0 then return 0 end
local s = 1
if x < 0 then
x = -x
s = -1
end
if sf < 1 then sf = 1 end
local p = 10 ^ (math.floor(math.log10(x)) - sf + 1)
x = math.floor(x / p + 0.5) * p * s
-- if it's integral, cast to an integer:
if x == math.floor(x) then x = math.floor(x) end
return x
end
-------------------------------------------------------------------------------
-- decimalToDMS takes a decimal degrees (x) with precision (p)
-- and returns degrees/minutes/seconds according to the precision
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local decimalToDMS = function(x, p)
-- if p is not supplied, use a precision around 0.1 seconds
if not tonumber(p) then p = 1e-4 end
local d = math.floor(x)
local ms = (x - d) * 60
if p > 0.5 then -- precision is > 1/2 a degree
if ms > 30 then d = d + 1 end
ms = 0
end
local m = math.floor(ms)
local s = (ms - m) * 60
if p > 0.008 then -- precision is > 1/2 a minute
if s > 30 then m = m +1 end
s = 0
elseif p > 0.00014 then -- precision is > 1/2 a second
s = math.floor(s + 0.5)
elseif p > 0.000014 then -- precision is > 1/20 second
s = math.floor(10 * s + 0.5) / 10
elseif p > 0.0000014 then -- precision is > 1/200 second
s = math.floor(100 * s + 0.5) / 100
else -- cap it at 3 dec places for now
s = math.floor(1000 * s + 0.5) / 1000
end
return d, m, s
end
-------------------------------------------------------------------------------
-- decimalPrecision takes a decimal (x) with precision (p)
-- and returns x rounded approximately to the given precision
-- precision should be between 1 and 1e-6, preferably a power of 10.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local decimalPrecision = function(x, p)
local s = 1
if x < 0 then
x = -x
s = -1
end
-- if p is not supplied, pick an arbitrary precision
if not tonumber(p) then p = 1e-4
elseif p > 1 then p = 1
elseif p < 1e-6 then p = 1e-6
else p = 10 ^ math.floor(math.log10(p))
end
x = math.floor(x / p + 0.5) * p * s
-- if it's integral, cast to an integer:
if x == math.floor(x) then x = math.floor(x) end
-- if it's less than 1e-4, it will be in exponent form, so return a string with 6dp
-- 9e-5 becomes 0.000090
if math.abs(x) < 1e-4 then x = string.format("%f", x) end
return x
end
-------------------------------------------------------------------------------
-- formatDate takes a datetime of the usual format from mw.wikibase.entity:formatPropertyValues
-- like "1 August 30 BCE" as parameter 1
-- and formats it according to the df (date format) and bc parameters
-- df = ["dmy" / "mdy" / "y"] default will be "dmy"
-- bc = ["BC" / "BCE"] default will be "BCE"
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local format_Date = function(datetime, dateformat, bc)
local datetime = datetime or "1 August 30 BCE" -- in case of nil value
-- chop off multiple vales and/or any hours, mins, etc.
-- keep anything before punctuation - we just want a single date:
local dateval = string.match( datetime, "[%w ]+")
local dateformat = string.lower(dateformat or "dmy") -- default to dmy
local bc = string.upper(bc or "") -- can't use nil for bc
-- we only want to accept two possibilities: BC or default to BCE
if bc == "BC" then
bc = " " .. i18n["BC"] -- prepend a non-breaking space.
else
bc = " " .. i18n["BCE"]
end
local postchrist = true -- start by assuming no BCE
local dateparts = {}
for word in string.gmatch(dateval, "%w+") do
if word == "BCE" or word == "BC" then -- *** internationalise later ***
postchrist = false
else
-- we'll keep the parts that are not 'BCE' in a table
dateparts[#dateparts + 1] = word
end
end
if postchrist then bc = "" end -- set AD dates to no suffix *** internationalise later ***
local sep = " " -- separator is nbsp
local fdate = table.concat(dateparts, sep) -- set formatted date to same order as input
-- if we have day month year, check dateformat
if #dateparts == 3 then
if dateformat == "y" then
fdate = dateparts[3]
elseif dateformat == "mdy" then
fdate = dateparts[2] .. sep .. dateparts[1] .. "," .. sep .. dateparts[3]
end
elseif #dateparts == 2 and dateformat == "y" then
fdate = dateparts[2]
end
return fdate .. bc
end
-------------------------------------------------------------------------------
-- dateFormat is the handler for properties that are of type "time"
-- It takes timestamp, precision (6 to 11 per mediawiki), dateformat (y/dmy/mdy), BC format (BC/BCE),
-- a plaindate switch (yes/no/adj) to en/disable "sourcing circumstances"/use adjectival form,
-- any qualifiers for the property, the language, and any adjective to use like 'before'.
-- It passes the date through the "complex date" function
-- and returns a string with the internatonalised date formatted according to preferences.
-------------------------------------------------------------------------------
-- Dependencies: findLang(); cdate(); dp[]
-------------------------------------------------------------------------------
local dateFormat = function(timestamp, dprec, df, bcf, pd, qualifiers, lang, adj, model)
-- output formatting according to preferences (y/dmy/mdy/ymd)
df = (df or ""):lower()
-- if ymd is required, return the part of the timestamp in YYYY-MM-DD form
-- but apply Year zero#Astronomers fix: 1 BC = 0000; 2 BC = -0001; etc.
if df == "ymd" then
if timestamp:sub(1,1) == "+" then
return timestamp:sub(2,11)
else
local yr = tonumber(timestamp:sub(2,5)) - 1
yr = ("000" .. yr):sub(-4)
if yr ~= "0000" then yr = "-" .. yr end
return yr .. timestamp:sub(6,11)
end
end
-- A year can be stored like this: "+1872-00-00T00:00:00Z",
-- which is processed here as if it were the day before "+1872-01-01T00:00:00Z",
-- and that's the last day of 1871, so the year is wrong.
-- So fix the month 0, day 0 timestamp to become 1 January instead:
timestamp = timestamp:gsub("%-00%-00T", "-01-01T")
-- just in case date precision is missing
dprec = dprec or 11
-- override more precise dates if required dateformat is year alone:
if df == "y" and dprec > 9 then dprec = 9 end
-- complex date only deals with precisions from 6 to 11, so clip range
dprec = dprec>11 and 11 or dprec
dprec = dprec<6 and 6 or dprec
-- BC format is "BC" or "BCE"
bcf = (bcf or ""):upper()
-- plaindate only needs the first letter (y/n/a)
pd = (pd or ""):sub(1,1):lower()
if pd == "" or pd == "n" or pd == "f" or pd == "0" then pd = false end
-- in case language isn't passed
lang = lang or findLang().code
-- set adj as empty if nil
adj = adj or ""
-- extract the day, month, year from the timestamp
local bc = timestamp:sub(1, 1)=="-" and "BC" or ""
local year, month, day = timestamp:match("[+-](%d*)-(%d*)-(%d*)T")
local iso = tonumber(year) -- if year is missing, let it throw an error
-- this will adjust the date format to be compatible with cdate
-- possible formats are Y, YY, YYY0, YYYY, YYYY-MM, YYYY-MM-DD
if dprec == 6 then iso = math.floor( (iso - 1) / 1000 ) + 1 end
if dprec == 7 then iso = math.floor( (iso - 1) / 100 ) + 1 end
if dprec == 8 then iso = math.floor( iso / 10 ) .. "0" end
if dprec == 10 then iso = year .. "-" .. month end
if dprec == 11 then iso = year .. "-" .. month .. "-" .. day end
-- add "circa" (Q5727902) from "sourcing circumstances" (P1480)
local sc = not pd and qualifiers and qualifiers.P1480
if sc then
for k1, v1 in pairs(sc) do
if v1.datavalue and v1.datavalue.value.id == "Q5727902" then
adj = "circa"
break
end
end
end
-- deal with Julian dates:
-- no point in saying that dates before 1582 are Julian - they are by default
-- doesn't make sense for dates less precise than year
-- we can suppress it by setting |plaindate, e.g. for use in constructing categories.
local calendarmodel = ""
if tonumber(year) > 1582
and dprec > 8
and not pd
and model == "http://www.wikidata.org/entity/Q1985786" then
calendarmodel = "julian"
end
if not cdate then
cdate = require("Module:Complex date")._complex_date
end
local fdate = cdate(calendarmodel, adj, tostring(iso), dp[dprec], bc, "", "", "", "", lang, 1)
-- this may have QuickStatements info appended to it in a div, so remove that
fdate = fdate:gsub(' <div style="display: none;">[^<]*</div>', '')
-- it may also be returned wrapped in a microformat, so remove that
fdate = fdate:gsub("<[^>]*>", "")
-- there may be leading zeros that we should remove
fdate = fdate:gsub("^0*", "")
-- if a plain date is required, then remove any links (like BC linked)
if pd then
fdate = fdate:gsub("%[%[.*|", ""):gsub("]]", "")
end
-- if 'circa', use the abbreviated form *** internationalise later ***
fdate = fdate:gsub('circa ', '<abbr title="circa">c.</abbr> ')
-- deal with BC/BCE
if bcf == "BCE" then
fdate = fdate:gsub('BC', 'BCE')
end
-- deal with mdy format
if df == "mdy" then
fdate = fdate:gsub("(%d+) (%w+) (%d+)", "%2 %1, %3")
end
-- deal with adjectival form *** internationalise later ***
if pd == "a" then
fdate = fdate:gsub(' century', '-century')
end
return fdate
end
-------------------------------------------------------------------------------
-- parseParam takes a (string) parameter, e.g. from the list of frame arguments,
-- and makes "false", "no", and "0" into the (boolean) false
-- it makes the empty string and nil into the (boolean) value passed as default
-- allowing the parameter to be true or false by default.
-- It returns a boolean.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local parseParam = function(param, default)
if type(param) == "boolean" then param = tostring(param) end
if param and param ~= "" then
param = param:lower()
if (param == "false") or (param:sub(1,1) == "n") or (param == "0") then
return false
else
return true
end
else
return default
end
end
-------------------------------------------------------------------------------
-- _getSitelink takes the qid of a Wikidata entity passed as |qid=
-- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink
-- If the parameter is blank, then it uses the local wiki.
-- If there is a sitelink to an article available, it returns the plain text link to the article
-- If there is no sitelink, it returns nil.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local _getSitelink = function(qid, wiki)
qid = (qid or ""):upper()
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return nil end
wiki = wiki or ""
local sitelink
if wiki == "" then
sitelink = mw.wikibase.getSitelink(qid)
else
sitelink = mw.wikibase.getSitelink(qid, wiki)
end
return sitelink
end
-------------------------------------------------------------------------------
-- _getCommonslink takes an optional qid of a Wikidata entity passed as |qid=
-- It returns one of the following in order of preference:
-- the Commons sitelink of the Wikidata entity - but not if onlycat=true and it's not a category;
-- the Commons sitelink of the topic's main category of the Wikidata entity;
-- the Commons category of the Wikidata entity - unless fallback=false.
-------------------------------------------------------------------------------
-- Dependencies: _getSitelink(); parseParam()
-------------------------------------------------------------------------------
local _getCommonslink = function(qid, onlycat, fallback)
qid = (qid or ""):upper()
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return nil end
onlycat = parseParam(onlycat, false)
if fallback == "" then fallback = nil end
local sitelink = _getSitelink(qid, "commonswiki")
if onlycat and sitelink and sitelink:sub(1,9) ~= "Category:" then sitelink = nil end
if not sitelink then
-- check for topic's main category
local prop910 = mw.wikibase.getBestStatements(qid, "P910")[1]
if prop910 then
local tmcid = prop910.mainsnak.datavalue and prop910.mainsnak.datavalue.value.id
sitelink = _getSitelink(tmcid, "commonswiki")
end
if not sitelink then
-- check for list's main category
local prop1754 = mw.wikibase.getBestStatements(qid, "P1754")[1]
if prop1754 then
local tmcid = prop1754.mainsnak.datavalue and prop1754.mainsnak.datavalue.value.id
sitelink = _getSitelink(tmcid, "commonswiki")
end
end
end
if not sitelink and fallback then
-- check for Commons category (string value)
local prop373 = mw.wikibase.getBestStatements(qid, "P373")[1]
if prop373 then
sitelink = prop373.mainsnak.datavalue and prop373.mainsnak.datavalue.value
if sitelink then sitelink = "Category:" .. sitelink end
end
end
return sitelink
end
-------------------------------------------------------------------------------
-- The label in a Wikidata item is subject to vulnerabilities
-- that an attacker might try to exploit.
-- It needs to be 'sanitised' by removing any wikitext before use.
-- If it doesn't exist, return the id for the item
-- a second (boolean) value is also returned, value is true when the label exists
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local labelOrId = function(id, lang)
if lang == "default" then lang = findLang().code end
local label
if lang then
label = mw.wikibase.getLabelByLang(id, lang)
else
label = mw.wikibase.getLabel(id)
end
if label then
return mw.text.nowiki(label), true
else
return id, false
end
end
-------------------------------------------------------------------------------
-- linkedItem takes an entity-id and returns a string, linked if possible.
-- This is the handler for "wikibase-item". Preferences:
-- 1. Display linked disambiguated sitelink if it exists
-- 2. Display linked label if it is a redirect
-- 3. TBA: Display an inter-language link for the label if it exists other than in default language
-- 4. Display unlinked label if it exists
-- 5. Display entity-id for now to indicate a label could be provided
-- dtxt is text to be used instead of label, or nil.
-- shortname is boolean switch to use P1813 (short name) instead of label if true.
-- lang is the current language code.
-- uselbl is boolean switch to force display of the label instead of the sitelink (default: false)
-- linkredir is boolean switch to allow linking to a redirect (default: false)
-- formatvalue is boolean switch to allow formatting as italics or quoted (default: false)
-------------------------------------------------------------------------------
-- Dependencies: labelOrId(); donotlink[]
-------------------------------------------------------------------------------
local linkedItem = function(id, args)
local lprefix = (args.lp or args.lprefix or args.linkprefix or ""):gsub('"', '') -- toughen against nil values passed
local lpostfix = (args.lpostfix or ""):gsub('"', '')
local prefix = (args.prefix or ""):gsub('"', '')
local postfix = (args.postfix or ""):gsub('"', '')
local dtxt = args.dtxt
local shortname = args.shortname or args.sn
local lang = args.lang or "en" -- fallback to default if missing
local uselbl = args.uselabel or args.uselbl
uselbl = parseParam(uselbl, false)
local linkredir = args.linkredir
linkredir = parseParam(linkredir, false)
local formatvalue = args.formatvalue or args.fv
formatvalue = parseParam(formatvalue, false)
-- see if item might need italics or quotes
local fmt = ""
if next(formats) and formatvalue then
for k, v in ipairs( mw.wikibase.getBestStatements(id, "P31") ) do
if v.mainsnak.datavalue and formats[v.mainsnak.datavalue.value.id] then
fmt = formats[v.mainsnak.datavalue.value.id]
break -- pick the first match
end
end
end
local disp
local sitelink = mw.wikibase.getSitelink(id)
local label, islabel
if dtxt then
label, islabel = dtxt, true
elseif shortname then
-- see if there is a shortname in our language, and set label to it
for k, v in ipairs( mw.wikibase.getBestStatements(id, "P1813") ) do
if v.mainsnak.datavalue.value.language == lang then
label, islabel = v.mainsnak.datavalue.value.text, true
break
end -- test for language match
end -- loop through values of short name
-- if we have no label set, then there was no shortname available
if not islabel then
label, islabel = labelOrId(id)
shortname = false
end
else
label, islabel = labelOrId(id)
end
if mw.site.siteName ~= "Wikimedia Commons" then
if sitelink then
if not (dtxt or shortname) then
-- if sitelink and label are the same except for case, no need to process further
if sitelink:lower() ~= label:lower() then
-- strip any namespace or dab from the sitelink
local pos = sitelink:find(":") or 0
local slink = sitelink
if pos > 0 then
local pfx = sitelink:sub(1,pos-1)
if mw.site.namespaces[pfx] then -- that prefix is a valid namespace, so remove it
slink = sitelink:sub(pos+1)
end
end
-- remove stuff after commas or inside parentheses - ie. dabs
slink = slink:gsub("%s%(.+%)$", ""):gsub(",.+$", "")
-- if uselbl is false, use sitelink instead of label
if not uselbl then
-- use slink as display, preserving label case - find("^%u") is true for 1st char uppercase
if label:find("^%u") then
label = slink:gsub("^(%l)", string.upper)
else
label = slink:gsub("^(%u)", string.lower)
end
end
end
end
if donotlink[label] then
disp = prefix .. fmt .. label .. fmt .. postfix
else
disp = "[[" .. lprefix .. sitelink .. lpostfix .. "|" .. prefix .. fmt .. label .. fmt .. postfix .. "]]"
end
elseif islabel then
-- no sitelink, label exists, so check if a redirect with that title exists, if linkredir is true
-- display plain label by default
disp = prefix .. fmt .. label .. fmt .. postfix
if linkredir then
local artitle = mw.title.new(label, 0) -- only nil if label has invalid chars
if not donotlink[label] and artitle and artitle.redirectTarget then
-- there's a redirect with the same title as the label, so let's link to that
disp = "[[".. lprefix .. label .. lpostfix .. "|" .. prefix .. fmt .. label .. fmt .. postfix .. "]]"
end
end -- test if article title exists as redirect on current Wiki
else
-- no sitelink and no label, so return whatever was returned from labelOrId for now
-- add tracking category [[Category:Articles with missing Wikidata information]]
-- for enwiki, just return the tracking category
if mw.wikibase.getGlobalSiteId() == "enwiki" then
disp = i18n.missinginfocat
else
disp = prefix .. label .. postfix .. i18n.missinginfocat
end
end
else
local ccat = mw.wikibase.getBestStatements(id, "P373")[1]
if ccat and ccat.mainsnak.datavalue then
ccat = ccat.mainsnak.datavalue.value
disp = "[[" .. lprefix .. "Category:" .. ccat .. lpostfix .. "|" .. prefix .. label .. postfix .. "]]"
elseif sitelink then
-- this asumes that if a sitelink exists, then a label also exists
disp = "[[" .. lprefix .. sitelink .. lpostfix .. "|" .. prefix .. label .. postfix .. "]]"
else
-- no sitelink and no Commons cat, so return label from labelOrId for now
disp = prefix .. label .. postfix
end
end
return disp
end
-------------------------------------------------------------------------------
-- sourced takes a table representing a statement that may or may not have references
-- it looks for a reference sourced to something not containing the word "wikipedia"
-- it returns a boolean = true if it finds a sourced reference.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local sourced = function(claim)
if claim.references then
for kr, vr in pairs(claim.references) do
local ref = mw.wikibase.renderSnaks(vr.snaks)
if not ref:find("Wiki") then
return true
end
end
end
end
-------------------------------------------------------------------------------
-- setRanks takes a flag (parameter passed) that requests the values to return
-- "b[est]" returns preferred if available, otherwise normal
-- "p[referred]" returns preferred
-- "n[ormal]" returns normal
-- "d[eprecated]" returns deprecated
-- multiple values are allowed, e.g. "preferred normal" (which is the default)
-- "best" will override the other flags, and set p and n
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local setRanks = function(rank)
rank = (rank or ""):lower()
-- if nothing passed, return preferred and normal
-- if rank == "" then rank = "p n" end
local ranks = {}
for w in string.gmatch(rank, "%a+") do
w = w:sub(1,1)
if w == "b" or w == "p" or w == "n" or w == "d" then
ranks[w] = true
end
end
-- check if "best" is requested or no ranks requested; and if so, set preferred and normal
if ranks.b or not next(ranks) then
ranks.p = true
ranks.n = true
end
return ranks
end
-------------------------------------------------------------------------------
-- parseInput processes the Q-id , the blacklist and the whitelist
-- if an input parameter is supplied, it returns that and ends the call.
-- it returns (1) either the qid or nil indicating whether or not the call should continue
-- and (2) a table containing all of the statements for the propertyID and relevant Qid
-- if "best" ranks are requested, it returns those instead of all non-deprecated ranks
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
local parseInput = function(frame, input_parm, property_id)
-- There may be a local parameter supplied, if it's blank, set it to nil
input_parm = mw.text.trim(input_parm or "")
if input_parm == "" then input_parm = nil end
-- return nil if Wikidata is not available
if not mw.wikibase then return false, input_parm end
local args = frame.args
-- can take a named parameter |qid which is the Wikidata ID for the article.
-- if it's not supplied, use the id for the current page
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
-- if there's no Wikidata item for the current page return nil
if not qid then return false, input_parm end
-- The blacklist is passed in named parameter |suppressfields
local blacklist = args.suppressfields or args.spf or ""
-- The whitelist is passed in named parameter |fetchwikidata
local whitelist = args.fetchwikidata or args.fwd or ""
if whitelist == "" then whitelist = "NONE" end
-- The name of the field that this function is called from is passed in named parameter |name
local fieldname = args.name or ""
if blacklist ~= "" then
-- The name is compulsory when blacklist is used, so return nil if it is not supplied
if fieldname == "" then return false, nil end
-- If this field is on the blacklist, then return nil
if blacklist:find(fieldname) then return false, nil end
end
-- If we got this far then we're not on the blacklist
-- The blacklist overrides any locally supplied parameter as well
-- If a non-blank input parameter was supplied return it
if input_parm then return false, input_parm end
-- We can filter out non-valid properties
if property_id:sub(1,1):upper() ~="P" or property_id == "P0" then return false, nil end
-- Otherwise see if this field is on the whitelist:
-- needs a bit more logic because find will return its second value = 0 if fieldname is ""
-- but nil if fieldname not found on whitelist
local _, found = whitelist:find(fieldname)
found = ((found or 0) > 0)
if whitelist ~= 'ALL' and (whitelist:upper() == "NONE" or not found) then
return false, nil
end
-- See what's on Wikidata (the call always returns a table, but it may be empty):
local props = {}
if args.reqranks.b then
props = mw.wikibase.getBestStatements(qid, property_id)
else
props = mw.wikibase.getAllStatements(qid, property_id)
end
if props[1] then
return qid, props
end
-- no property on Wikidata
return false, nil
end
-------------------------------------------------------------------------------
-- createicon assembles the "Edit at Wikidata" pen icon.
-- It returns a wikitext string inside a span class="penicon"
-- if entityID is nil or empty, the ID associated with current page is used
-- langcode and propertyID may be nil or empty
-------------------------------------------------------------------------------
-- Dependencies: i18n[];
-------------------------------------------------------------------------------
local createicon = function(langcode, entityID, propertyID)
langcode = langcode or ""
if not entityID or entityID == "" then entityID= mw.wikibase.getEntityIdForCurrentPage() end
propertyID = propertyID or ""
local icon = " <span class='penicon autoconfirmed-show'>[["
-- " <span data-bridge-edit-flow='overwrite' class='penicon'>[[" -> enable Wikidata Bridge
.. i18n["filespace"]
.. ":OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt="
.. i18n["editonwikidata"]
.. "|link=https://www.wikidata.org/wiki/" .. entityID
if langcode ~= "" then icon = icon .. "?uselang=" .. langcode end
if propertyID ~= "" then icon = icon .. "#" .. propertyID end
icon = icon .. "|" .. i18n["editonwikidata"] .. "]]</span>"
return icon
end
-------------------------------------------------------------------------------
-- assembleoutput takes the sequence table containing the property values
-- and formats it according to switches given. It returns a string or nil.
-- It uses the entityID (and optionally propertyID) to create a link in the pen icon.
-------------------------------------------------------------------------------
-- Dependencies: parseParam();
-------------------------------------------------------------------------------
local assembleoutput = function(out, args, entityID, propertyID)
-- sorted is a boolean passed to enable sorting of the values returned
-- if nothing or an empty string is passed set it false
-- if "false" or "no" or "0" is passed set it false
local sorted = parseParam(args.sorted, false)
-- noicon is a boolean passed to suppress the trailing "edit at Wikidata" icon
-- for use when the value is processed further by the infobox
-- if nothing or an empty string is passed set it false
-- if "false" or "no" or "0" is passed set it false
local noic = parseParam(args.noicon, false)
-- list is the name of a template that a list of multiple values is passed through
-- examples include "hlist" and "ubl"
-- setting it to "prose" produces something like "1, 2, 3, and 4"
local list = args.list or ""
-- sep is a string that is used to separate multiple returned values
-- if nothing or an empty string is passed set it to the default
-- any double-quotes " are stripped out, so that spaces may be passed
-- e.g. |sep=" - "
local sepdefault = i18n["list separator"]
local separator = args.sep or ""
separator = string.gsub(separator, '"', '')
if separator == "" then
separator = sepdefault
end
-- collapse is a number that determines the maximum number of returned values
-- before the output is collapsed.
-- Zero or not a number result in no collapsing (default becomes 0).
local collapse = tonumber(args.collapse) or 0
-- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value
-- this is useful for tracking and debugging
local replacetext = mw.text.trim(args.rt or args.replacetext or "")
-- if there's anything to return, then return a list
-- comma-separated by default, but may be specified by the sep parameter
-- optionally specify a hlist or ubl or a prose list, etc.
local strout
if #out > 0 then
if sorted then table.sort(out) end
-- if there's something to display and a pen icon is wanted, add it the end of the last value
local hasdisplay = false
for i, v in ipairs(out) do
if v ~= i18n.missinginfocat then
hasdisplay = true
break
end
end
if not noic and hasdisplay then
out[#out] = out[#out] .. createicon(args.langobj.code, entityID, propertyID)
end
if list == "" then
strout = table.concat(out, separator)
elseif list:lower() == "prose" then
strout = mw.text.listToText( out )
else
strout = mw.getCurrentFrame():expandTemplate{title = list, args = out}
end
if collapse >0 and #out > collapse then
strout = collapsediv .. strout .. "</div>"
end
else
strout = nil -- no items had valid reference
end
if replacetext ~= "" and strout then strout = replacetext end
return strout
end
-------------------------------------------------------------------------------
-- rendersnak takes a table (propval) containing the information stored on one property value
-- and returns the value as a string and its language if monolingual text.
-- It handles data of type:
-- wikibase-item
-- time
-- string, url, commonsMedia, external-id
-- quantity
-- globe-coordinate
-- monolingualtext
-- It also requires linked, the link/pre/postfixes, uabbr, and the arguments passed from frame.
-- The optional filter parameter allows quantities to be be filtered by unit Qid.
-------------------------------------------------------------------------------
-- Dependencies: parseParam(); labelOrId(); i18n[]; dateFormat();
-- roundto(); decimalPrecision(); decimalToDMS(); linkedItem();
-------------------------------------------------------------------------------
local rendersnak = function(propval, args, linked, lpre, lpost, pre, post, uabbr, filter)
lpre = lpre or ""
lpost = lpost or ""
pre = pre or ""
post = post or ""
args.lang = args.lang or findLang().code
-- allow values to display a fixed text instead of label
local dtxt = args.displaytext or args.dt
if dtxt == "" then dtxt = nil end
-- switch to use display of short name (P1813) instead of label
local shortname = args.shortname or args.sn
shortname = parseParam(shortname, false)
local snak = propval.mainsnak or propval
local dtype = snak.datatype
local dv = snak.datavalue
dv = dv and dv.value
-- value and monolingual text language code returned
local val, mlt
if propval.rank and not args.reqranks[propval.rank:sub(1, 1)] then
-- val is nil: value has a rank that isn't requested
------------------------------------
elseif snak.snaktype == "somevalue" then -- value is unknown
val = i18n["Unknown"]
------------------------------------
elseif snak.snaktype == "novalue" then -- value is none
-- val = "No value" -- don't return anything
------------------------------------
elseif dtype == "wikibase-item" then -- data type is a wikibase item:
-- it's wiki-linked value, so output as link if enabled and possible
local qnumber = dv.id
if linked then
val = linkedItem(qnumber, args)
else -- no link wanted so check for display-text, otherwise test for lang code
local label, islabel
if dtxt then
label = dtxt
else
label, islabel = labelOrId(qnumber)
local langlabel = mw.wikibase.getLabelByLang(qnumber, args.lang)
if langlabel then
label = mw.text.nowiki( langlabel )
end
end
val = pre .. label .. post
end -- test for link required
------------------------------------
elseif dtype == "time" then -- data type is time:
-- time is in timestamp format
-- date precision is integer per mediawiki
-- output formatting according to preferences (y/dmy/mdy)
-- BC format as BC or BCE
-- plaindate is passed to disable looking for "sourcing cirumstances"
-- or to set the adjectival form
-- qualifiers (if any) is a nested table or nil
-- lang is given, or user language, or site language
--
-- Here we can check whether args.df has a value
-- If not, use code from Module:Sandbox/RexxS/Getdateformat to set it from templates like {{Use mdy dates}}
val = dateFormat(dv.time, dv.precision, args.df, args.bc, args.pd, propval.qualifiers, args.lang, "", dv.calendarmodel)
------------------------------------
-- data types which are strings:
elseif dtype == "commonsMedia" or dtype == "external-id" or dtype == "string" or dtype == "url" then
-- commonsMedia or external-id or string or url
-- all have mainsnak.datavalue.value as string
if (lpre == "" or lpre == ":") and lpost == "" then
-- don't link if no linkpre/postfix or linkprefix is just ":"
val = pre .. dv .. post
elseif dtype == "external-id" then
val = "[" .. lpre .. dv .. lpost .. " " .. pre .. dv .. post .. "]"
else
val = "[[" .. lpre .. dv .. lpost .. "|" .. pre .. dv .. post .. "]]"
end -- check for link requested (i.e. either linkprefix or linkpostfix exists)
------------------------------------
-- data types which are quantities:
elseif dtype == "quantity" then
-- quantities have mainsnak.datavalue.value.amount and mainsnak.datavalue.value.unit
-- the unit is of the form http://www.wikidata.org/entity/Q829073
--
-- implement a switch to turn on/off numerical formatting later
local fnum = true
--
-- a switch to turn on/off conversions - only for en-wiki
local conv = parseParam(args.conv or args.convert, false)
-- if we have conversions, we won't have formatted numbers or scales
if conv then
uabbr = true
fnum = false
args.scale = "0"
end
--
-- a switch to turn on/off showing units, default is true
local showunits = parseParam(args.su or args.showunits, true)
--
-- convert amount to a number
local amount = tonumber(dv.amount) or i18n["NaN"]
--
-- scale factor for millions, billions, etc.
local sc = tostring(args.scale or ""):sub(1,1):lower()
local scale
if sc == "a" then
-- automatic scaling
if amount > 1e15 then
scale = 12
elseif amount > 1e12 then
scale = 9
elseif amount > 1e9 then
scale = 6
elseif amount > 1e6 then
scale = 3
else
scale = 0
end
else
scale = tonumber(args.scale) or 0
if scale < 0 or scale > 12 then scale = 0 end
scale = math.floor(scale/3) * 3
end
local factor = 10^scale
amount = amount / factor
-- ranges:
local range = ""
-- check if upper and/or lower bounds are given and significant
local upb = tonumber(dv.upperBound)
local lowb = tonumber(dv.lowerBound)
if upb and lowb then
-- differences rounded to 2 sig fig:
local posdif = roundto(upb - amount, 2) / factor
local negdif = roundto(amount - lowb, 2) / factor
upb, lowb = amount + posdif, amount - negdif
-- round scaled numbers to integers or 4 sig fig
if (scale > 0 or sc == "a") then
if amount < 1e4 then
amount = roundto(amount, 4)
else
amount = math.floor(amount + 0.5)
end
end
if fnum then amount = args.langobj:formatNum( amount ) end
if posdif ~= negdif then
-- non-symmetrical
range = " +" .. posdif .. " -" .. negdif
elseif posdif ~= 0 then
-- symmetrical and non-zero
range = " ±" .. posdif
else
-- otherwise range is zero, so leave it as ""
end
else
-- round scaled numbers to integers or 4 sig fig
if (scale > 0 or sc == "a") then
if amount < 1e4 then
amount = roundto(amount, 4)
else
amount = math.floor(amount + 0.5)
end
end
if fnum then amount = args.langobj:formatNum( amount ) end
end
-- unit names and symbols:
-- extract the qid in the form 'Qnnn' from the value.unit url
-- and then fetch the label from that - or symbol if unitabbr is true
local unit = ""
local usep = ""
local usym = ""
local unitqid = string.match( dv.unit, "(Q%d+)" )
if filter and unitqid ~= filter then return nil end
if unitqid and showunits then
local uname = mw.wikibase.getLabelByLang(unitqid, args.lang) or ""
if uname ~= "" then usep, unit = " ", uname end
if uabbr then
-- see if there's a unit symbol (P5061)
local unitsymbols = mw.wikibase.getBestStatements(unitqid, "P5061")
-- construct fallback table, add local lang and multiple languages
local fbtbl = mw.language.getFallbacksFor( args.lang )
table.insert( fbtbl, 1, args.lang )
table.insert( fbtbl, 1, "mul" )
local found = false
for idx1, us in ipairs(unitsymbols) do
for idx2, fblang in ipairs(fbtbl) do
if us.mainsnak.datavalue.value.language == fblang then
usym = us.mainsnak.datavalue.value.text
found = true
break
end
if found then break end
end -- loop through fallback table
end -- loop through values of P5061
if found then usep, unit = " ", usym end
end
end
-- format display:
if conv then
if range == "" then
val = mw.getCurrentFrame():expandTemplate{title = "cvt", args = {amount, unit}}
else
val = mw.getCurrentFrame():expandTemplate{title = "cvt", args = {lowb, "to", upb, unit}}
end
elseif unit == "$" or unit == "£" then
val = unit .. amount .. range .. i18n.multipliers[scale]
else
val = amount .. range .. i18n.multipliers[scale] .. usep .. unit
end
------------------------------------
-- datatypes which are global coordinates:
elseif dtype == "globe-coordinate" then
-- 'display' parameter defaults to "inline, title" *** unused for now ***
-- local disp = args.display or ""
-- if disp == "" then disp = "inline, title" end
--
-- format parameter switches from deg/min/sec to decimal degrees
-- default is deg/min/sec -- decimal degrees needs |format = dec
local form = (args.format or ""):lower():sub(1,3)
if form ~= "dec" then form = "dms" end -- not needed for now
--
-- show parameter allows just the latitude, or just the longitude, or both
-- to be returned as a signed decimal, ignoring the format parameter.
local show = (args.show or ""):lower()
if show ~= "longlat" then show = show:sub(1,3) end
--
local lat, long, prec = dv.latitude, dv.longitude, dv.precision
if show == "lat" then
val = decimalPrecision(lat, prec)
elseif show == "lon" then
val = decimalPrecision(long, prec)
elseif show == "longlat" then
val = decimalPrecision(long, prec) .. ", " .. decimalPrecision(lat, prec)
else
local ns = "N"
local ew = "E"
if lat < 0 then
ns = "S"
lat = - lat
end
if long < 0 then
ew = "W"
long = - long
end
if form == "dec" then
lat = decimalPrecision(lat, prec)
long = decimalPrecision(long, prec)
val = lat .. "°" .. ns .. " " .. long .. "°" .. ew
else
local latdeg, latmin, latsec = decimalToDMS(lat, prec)
local longdeg, longmin, longsec = decimalToDMS(long, prec)
if latsec == 0 and longsec == 0 then
if latmin == 0 and longmin == 0 then
val = latdeg .. "°" .. ns .. " " .. longdeg .. "°" .. ew
else
val = latdeg .. "°" .. latmin .. "′" .. ns .. " "
val = val .. longdeg .. "°".. longmin .. "′" .. ew
end
else
val = latdeg .. "°" .. latmin .. "′" .. latsec .. "″" .. ns .. " "
val = val .. longdeg .. "°" .. longmin .. "′" .. longsec .. "″" .. ew
end
end
end
------------------------------------
elseif dtype == "monolingualtext" then -- data type is Monolingual text:
-- has mainsnak.datavalue.value as a table containing language/text pairs
-- collect all the values in 'out' and languages in 'mlt' and process them later
val = pre .. dv.text .. post
mlt = dv.language
------------------------------------
else
-- some other data type so write a specific handler
val = "unknown data type: " .. dtype
end -- of datatype/unknown value/sourced check
return val, mlt
end
-------------------------------------------------------------------------------
-- propertyvalueandquals takes a property object, the arguments passed from frame,
-- and a qualifier propertyID.
-- It returns a sequence (table) of values representing the values of that property
-- and qualifiers that match the qualifierID if supplied.
-------------------------------------------------------------------------------
-- Dependencies: parseParam(); sourced(); labelOrId(); i18n.latestdatequalifier(); format_Date();
-- makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS(); assembleoutput();
-------------------------------------------------------------------------------
local function propertyvalueandquals(objproperty, args, qualID)
-- needs this style of declaration because it's re-entrant
-- onlysourced is a boolean passed to return only values sourced to other than Wikipedia
-- if nothing or an empty string is passed set it true
local onlysrc = parseParam(args.onlysourced or args.osd, true)
-- linked is a a boolean that enables the link to a local page via sitelink
-- if nothing or an empty string is passed set it true
local linked = parseParam(args.linked, true)
-- prefix is a string that may be nil, empty (""), or a string of characters
-- this is prefixed to each value
-- useful when when multiple values are returned
-- any double-quotes " are stripped out, so that spaces may be passed
local prefix = (args.prefix or ""):gsub('"', '')
-- postfix is a string that may be nil, empty (""), or a string of characters
-- this is postfixed to each value
-- useful when when multiple values are returned
-- any double-quotes " are stripped out, so that spaces may be passed
local postfix = (args.postfix or ""):gsub('"', '')
-- linkprefix is a string that may be nil, empty (""), or a string of characters
-- this creates a link and is then prefixed to each value
-- useful when when multiple values are returned and indirect links are needed
-- any double-quotes " are stripped out, so that spaces may be passed
local lprefix = (args.linkprefix or args.lp or ""):gsub('"', '')
-- linkpostfix is a string that may be nil, empty (""), or a string of characters
-- this is postfixed to each value when linking is enabled with lprefix
-- useful when when multiple values are returned
-- any double-quotes " are stripped out, so that spaces may be passed
local lpostfix = (args.linkpostfix or ""):gsub('"', '')
-- wdlinks is a boolean passed to enable links to Wikidata when no article exists
-- if nothing or an empty string is passed set it false
local wdl = parseParam(args.wdlinks or args.wdl, false)
-- unitabbr is a boolean passed to enable unit abbreviations for common units
-- if nothing or an empty string is passed set it false
local uabbr = parseParam(args.unitabbr or args.uabbr, false)
-- qualsonly is a boolean passed to return just the qualifiers
-- if nothing or an empty string is passed set it false
local qualsonly = parseParam(args.qualsonly or args.qo, false)
-- maxvals is a string that may be nil, empty (""), or a number
-- this determines how many items may be returned when multiple values are available
-- setting it = 1 is useful where the returned string is used within another call, e.g. image
local maxvals = tonumber(args.maxvals) or 0
-- pd (plain date) is a string: yes/true/1 | no/false/0 | adj
-- to disable/enable "sourcing cirumstances" or use adjectival form for the plain date
local pd = args.plaindate or args.pd or "no"
args.pd = pd
-- allow qualifiers to have a different date format; default to year unless qualsonly is set
args.qdf = args.qdf or args.qualifierdateformat or args.df or (not qualsonly and "y")
local lang = args.lang or findLang().code
-- qualID is a string list of wanted qualifiers or "ALL"
qualID = qualID or ""
-- capitalise list of wanted qualifiers and substitute "DATES"
qualID = qualID:upper():gsub("DATES", "P580, P582")
local allflag = (qualID == "ALL")
-- create table of wanted qualifiers as key
local qwanted = {}
-- create sequence of wanted qualifiers
local qorder = {}
for q in mw.text.gsplit(qualID, "%p") do -- split at punctuation and iterate
local qtrim = mw.text.trim(q)
if qtrim ~= "" then
qwanted[mw.text.trim(q)] = true
qorder[#qorder+1] = qtrim
end
end
-- qsep is the output separator for rendering qualifier list
local qsep = (args.qsep or ""):gsub('"', '')
-- qargs are the arguments to supply to assembleoutput()
local qargs = {
["osd"] = "false",
["linked"] = tostring(linked),
["prefix"] = args.qprefix,
["postfix"] = args.qpostfix,
["linkprefix"] = args.qlinkprefix or args.qlp,
["linkpostfix"] = args.qlinkpostfix,
["wdl"] = "false",
["unitabbr"] = tostring(uabbr),
["maxvals"] = 0,
["sorted"] = tostring(args.qsorted),
["noicon"] = "true",
["list"] = args.qlist,
["sep"] = qsep,
["langobj"] = args.langobj,
["lang"] = args.langobj.code,
["df"] = args.qdf,
["sn"] = parseParam(args.qsn or args.qshortname, false),
}
-- all proper values of a Wikidata property will be the same type as the first
-- qualifiers don't have a mainsnak, properties do
local datatype = objproperty[1].datatype or objproperty[1].mainsnak.datatype
-- out[] holds the a list of returned values for this property
-- mlt[] holds the language code if the datatype is monolingual text
local out = {}
local mlt = {}
for k, v in ipairs(objproperty) do
local hasvalue = true
if (onlysrc and not sourced(v)) then
-- no value: it isn't sourced when onlysourced=true
hasvalue = false
else
local val, lcode = rendersnak(v, args, linked, lprefix, lpostfix, prefix, postfix, uabbr)
if not val then
hasvalue = false -- rank doesn't match
elseif qualsonly and qualID then
-- suppress value returned: only qualifiers are requested
else
out[#out+1], mlt[#out+1] = val, lcode
end
end
-- See if qualifiers are to be returned:
local snak = v.mainsnak or v
if hasvalue and v.qualifiers and qualID ~= "" and snak.snaktype~="novalue" then
-- collect all wanted qualifier values returned in qlist, indexed by propertyID
local qlist = {}
local timestart, timeend = "", ""
-- loop through qualifiers
for k1, v1 in pairs(v.qualifiers) do
if allflag or qwanted[k1] then
if k1 == "P1326" then
local ts = v1[1].datavalue.value.time
local dp = v1[1].datavalue.value.precision
qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, "", lang, "before")
elseif k1 == "P1319" then
local ts = v1[1].datavalue.value.time
local dp = v1[1].datavalue.value.precision
qlist[k1] = dateFormat(ts, dp, args.qdf, args.bc, pd, "", lang, "after")
elseif k1 == "P580" then
timestart = propertyvalueandquals(v1, qargs)[1] or "" -- treat only one start time as valid
elseif k1 == "P582" then
timeend = propertyvalueandquals(v1, qargs)[1] or "" -- treat only one end time as valid
else
local q = assembleoutput(propertyvalueandquals(v1, qargs), qargs)
-- we already deal with circa via 'sourcing circumstances' if the datatype was time
-- circa may be either linked or unlinked *** internationalise later ***
if datatype ~= "time" or q ~= "circa" and not (type(q) == "string" and q:find("circa]]")) then
qlist[k1] = q
end
end
end -- of test for wanted
end -- of loop through qualifiers
-- set date separator
local t = timestart .. timeend
-- *** internationalise date separators later ***
local dsep = "–"
if t:find("%s") or t:find(" ") then dsep = " – " end
-- set the order for the list of qualifiers returned; start time and end time go last
if next(qlist) then
local qlistout = {}
if allflag then
for k2, v2 in pairs(qlist) do
qlistout[#qlistout+1] = v2
end
else
for i2, v2 in ipairs(qorder) do
qlistout[#qlistout+1] = qlist[v2]
end
end
if t ~= "" then
qlistout[#qlistout+1] = timestart .. dsep .. timeend
end
local qstr = assembleoutput(qlistout, qargs)
if qualsonly then
out[#out+1] = qstr
else
out[#out] = out[#out] .. " (" .. qstr .. ")"
end
elseif t ~= "" then
if qualsonly then
if timestart == "" then
out[#out+1] = timeend
elseif timeend == "" then
out[#out+1] = timestart
else
out[#out+1] = timestart .. dsep .. timeend
end
else
out[#out] = out[#out] .. " (" .. timestart .. dsep .. timeend .. ")"
end
end
end -- of test for qualifiers wanted
if maxvals > 0 and #out >= maxvals then break end
end -- of for each value loop
-- we need to pick one value to return if the datatype was "monolingualtext"
-- if there's only one value, use that
-- otherwise look through the fallback languages for a match
if datatype == "monolingualtext" and #out >1 then
lang = mw.text.split( lang, '-', true )[1]
local fbtbl = mw.language.getFallbacksFor( lang )
table.insert( fbtbl, 1, lang )
local bestval = ""
local found = false
for idx1, lang1 in ipairs(fbtbl) do
for idx2, lang2 in ipairs(mlt) do
if (lang1 == lang2) and not found then
bestval = out[idx2]
found = true
break
end
end -- loop through values of property
end -- loop through fallback languages
if found then
-- replace output table with a table containing the best value
out = { bestval }
else
-- more than one value and none of them on the list of fallback languages
-- sod it, just give them the first one
out = { out[1] }
end
end
return out
end
-------------------------------------------------------------------------------
-- Common code for p.getValueByQual and p.getValueByLang
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; assembleoutput;
-------------------------------------------------------------------------------
local _getvaluebyqual = function(frame, qualID, checkvalue)
-- The property ID that will have a qualifier is the first unnamed parameter
local propertyID = mw.text.trim(frame.args[1] or "")
if propertyID == "" then return "no property supplied" end
if qualID == "" then return "no qualifier supplied" end
-- onlysourced is a boolean passed to return property values
-- only when property values are sourced to something other than Wikipedia
-- if nothing or an empty string is passed set it true
-- if "false" or "no" or 0 is passed set it false
local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)
-- set the requested ranks flags
frame.args.reqranks = setRanks(frame.args.rank)
-- set a language object and code in the frame.args table
frame.args.langobj = findLang(frame.args.lang)
frame.args.lang = frame.args.langobj.code
local args = frame.args
-- check for locally supplied parameter in second unnamed parameter
-- success means no local parameter and the property exists
local qid, props = parseInput(frame, args[2], propertyID)
local linked = parseParam(args.linked, true)
local lpre = (args.linkprefix or args.lp or ""):gsub('"', '')
local lpost = (args.linkpostfix or ""):gsub('"', '')
local pre = (args.prefix or ""):gsub('"', '')
local post = (args.postfix or ""):gsub('"', '')
local uabbr = parseParam(args.unitabbr or args.uabbr, false)
local filter = (args.unit or ""):upper()
local maxvals = tonumber(args.maxvals) or 0
if filter == "" then filter = nil end
if qid then
local out = {}
-- Scan through the values of the property
-- we want something like property is "pronunciation audio (P443)" in propertyID
-- with a qualifier like "language of work or name (P407)" in qualID
-- whose value has the required ID, like "British English (Q7979)", in qval
for k1, v1 in ipairs(props) do
if v1.mainsnak.snaktype == "value" then
-- check if it has the right qualifier
local v1q = v1.qualifiers
if v1q and v1q[qualID] then
if onlysrc == false or sourced(v1) then
-- if we've got this far, we have a (sourced) claim with qualifiers
-- so see if matches the required value
-- We'll only deal with wikibase-items and strings for now
if v1q[qualID][1].datatype == "wikibase-item" then
if checkvalue(v1q[qualID][1].datavalue.value.id) then
out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter)
end
elseif v1q[qualID][1].datatype == "string" then
if checkvalue(v1q[qualID][1].datavalue.value) then
out[#out + 1] = rendersnak(v1, args, linked, lpre, lpost, pre, post, uabbr, filter)
end
end
end -- of check for sourced
end -- of check for matching required value and has qualifiers
else
return nil
end -- of check for string
if maxvals > 0 and #out >= maxvals then break end
end -- of loop through values of propertyID
return assembleoutput(out, frame.args, qid, propertyID)
else
return props -- either local parameter or nothing
end -- of test for success
return nil
end
-------------------------------------------------------------------------------
-- _location takes Q-id and follows P276 (location)
-- or P131 (located in the administrative territorial entity) or P706 (located on terrain feature)
-- from the initial item to higher level territories/locations until it reaches the highest.
-- An optional boolean, 'first', determines whether the first item is returned (default: false).
-- An optional boolean 'skip' toggles the display to skip to the last item (default: false).
-- It returns a table containing the locations - linked where possible, except for the highest.
-------------------------------------------------------------------------------
-- Dependencies: findLang(); labelOrId(); linkedItem
-------------------------------------------------------------------------------
local _location = function(qid, first, skip)
first = parseParam(first, false)
skip = parseParam(skip, false)
local locs = {"P276", "P131", "P706"}
local out = {}
local langcode = findLang():getCode()
local finished = false
local count = 0
local prevqid = "Q0"
repeat
local prop
for i1, v1 in ipairs(locs) do
local proptbl = mw.wikibase.getBestStatements(qid, v1)
if #proptbl > 1 then
-- there is more than one higher location
local prevP131, prevP131id
if prevqid ~= "Q0" then
prevP131 = mw.wikibase.getBestStatements(prevqid, "P131")[1]
prevP131id = prevP131
and prevP131.mainsnak.datavalue
and prevP131.mainsnak.datavalue.value.id
end
for i2, v2 in ipairs(proptbl) do
local parttbl = v2.qualifiers and v2.qualifiers.P518
if parttbl then
-- this higher location has qualifier 'applies to part' (P518)
for i3, v3 in ipairs(parttbl) do
if v3.snaktype == "value" and v3.datavalue.value.id == prevqid then
-- it has a value equal to the previous location
prop = proptbl[i2]
break
end -- of test for matching last location
end -- of loop through values of 'applies to part'
else
-- there's no qualifier 'applies to part' (P518)
-- so check if the previous location had a P131 that matches this alternate
if qid == prevP131id then
prop = proptbl[i2]
break
end -- of test for matching previous P131
end
end -- of loop through parent locations
-- fallback to second value if match not found
prop = prop or proptbl[2]
elseif #proptbl > 0 then
prop = proptbl[1]
end
if prop then break end
end
-- check if it's an instance of (P31) a country (Q6256) or sovereign state (Q3624078)
-- and terminate the chain if it is
local inst = mw.wikibase.getAllStatements(qid, "P31")
if #inst > 0 then
for k, v in ipairs(inst) do
local instid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id
-- stop if it's a country (or a country within the United Kingdom if skip is true)
if instid == "Q6256" or instid == "Q3624078" or (skip and instid == "Q3336843") then
prop = nil -- this will ensure this is treated as top-level location
break
end
end
end
-- get the name of this location and update qid to point to the parent location
if prop and prop.mainsnak.datavalue then
if not skip or count == 0 then
local args = { lprefix = ":" }
out[#out+1] = linkedItem(qid, args) -- get a linked value if we can
end
qid, prevqid = prop.mainsnak.datavalue.value.id, qid
else
-- This is top-level location, so get short name except when this is the first item
-- Use full label if there's no short name or this is the first item
local prop1813 = mw.wikibase.getAllStatements(qid, "P1813")
-- if there's a short name and this isn't the only item
if prop1813[1] and (#out > 0)then
local shortname
-- short name is monolingual text, so look for match to the local language
-- choose the shortest 'short name' in that language
for k, v in pairs(prop1813) do
if v.mainsnak.datavalue.value.language == langcode then
local name = v.mainsnak.datavalue.value.text
if (not shortname) or (#name < #shortname) then
shortname = name
end
end
end
-- add the shortname if one is found, fallback to the label
-- but skip it if it's "USA"
if shortname ~= "USA" then
out[#out+1] = shortname or labelOrId(qid)
else
if skip then out[#out+1] = "US" end
end
else
-- no shortname, so just add the label
local loc = labelOrId(qid)
-- exceptions go here:
if loc == "United States of America" then
out[#out+1] = "United States"
else
out[#out+1] = loc
end
end
finished = true
end
count = count + 1
until finished or count >= 10 -- limit to 10 levels to avoid infinite loops
-- remove the first location if not required
if not first then table.remove(out, 1) end
-- we might have duplicate text for consecutive locations, so remove them
if #out > 2 then
local plain = {}
for i, v in ipairs(out) do
-- strip any links
plain[i] = v:gsub("^%[%[[^|]*|", ""):gsub("]]$", "")
end
local idx = 2
repeat
if plain[idx] == plain[idx-1] then
-- duplicate found
local removeidx = 0
if (plain[idx] ~= out[idx]) and (plain[idx-1] == out[idx-1]) then
-- only second one is linked, so drop the first
removeidx = idx - 1
elseif (plain[idx] == out[idx]) and (plain[idx-1] ~= out[idx-1]) then
-- only first one is linked, so drop the second
removeidx = idx
else
-- pick one
removeidx = idx - (os.time()%2)
end
table.remove(out, removeidx)
table.remove(plain, removeidx)
else
idx = idx +1
end
until idx >= #out
end
return out
end
-------------------------------------------------------------------------------
-- _getsumofparts scans the property 'has part' (P527) for values matching a list.
-- The list (args.vlist) consists of a string of Qids separated by spaces or any usual punctuation.
-- If the matched values have a qualifer 'quantity' (P1114), those quantites are summed.
-- The sum is returned as a number (i.e. 0 if none)
-- a table of arguments is supplied implementing the usual parameters.
-------------------------------------------------------------------------------
-- Dependencies: setRanks; parseParam; parseInput; sourced; assembleoutput;
-------------------------------------------------------------------------------
local _getsumofparts = function(args)
local vallist = (args.vlist or ""):upper()
if vallist == "" then return end
args.reqranks = setRanks(args.rank)
local f = {}
f.args = args
local qid, props = parseInput(f, "", "P527")
if not qid then return 0 end
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local sum = 0
for k1, v1 in ipairs(props) do
if (onlysrc == false or sourced(v1))
and v1.mainsnak.snaktype == "value"
and v1.mainsnak.datavalue.type == "wikibase-entityid"
and vallist:match( v1.mainsnak.datavalue.value.id )
and v1.qualifiers
then
local quals = v1.qualifiers["P1114"]
if quals then
for k2, v2 in ipairs(quals) do
sum = sum + v2.datavalue.value.amount
end
end
end
end
return sum
end
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Public functions
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- _getValue makes the functionality of getValue available to other modules
-------------------------------------------------------------------------------
-- Dependencies: setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced;
-- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS;
-------------------------------------------------------------------------------
p._getValue = function(args)
-- parameter sets for commonly used groups of parameters
local paraset = tonumber(args.ps or args.parameterset or 0)
if paraset == 1 then
-- a common setting
args.rank = "best"
args.fetchwikidata = "ALL"
args.onlysourced = "no"
args.noicon = "true"
elseif paraset == 2 then
-- equivalent to raw
args.rank = "best"
args.fetchwikidata = "ALL"
args.onlysourced = "no"
args.noicon = "true"
args.linked = "no"
args.pd = "true"
elseif paraset == 3 then
-- third set goes here
end
-- implement eid parameter
local eid = args.eid
if eid == "" then
return nil
elseif eid then
args.qid = eid
end
local propertyID = mw.text.trim(args[1] or "")
args.reqranks = setRanks(args.rank)
-- replacetext (rt) is a string that is returned instead of any non-empty Wikidata value
-- this is useful for tracking and debugging, so we set fetchwikidata=ALL to fill the whitelist
local replacetext = mw.text.trim(args.rt or args.replacetext or "")
if replacetext ~= "" then
args.fetchwikidata = "ALL"
end
local f = {}
f.args = args
local entityid, props = parseInput(f, f.args[2], propertyID)
if not entityid then
return props -- either the input parameter or nothing
end
-- qual is a string containing the property ID of the qualifier(s) to be returned
-- if qual == "ALL" then all qualifiers returned
-- if qual == "DATES" then qualifiers P580 (start time) and P582 (end time) returned
-- if nothing or an empty string is passed set it nil -> no qualifiers returned
local qualID = mw.text.trim(args.qual or ""):upper()
if qualID == "" then qualID = nil end
-- set a language object and code in the args table
args.langobj = findLang(args.lang)
args.lang = args.langobj.code
-- table 'out' stores the return value(s):
local out = propertyvalueandquals(props, args, qualID)
-- format the table of values and return it as a string:
return assembleoutput(out, args, entityid, propertyID)
end
-------------------------------------------------------------------------------
-- getValue is used to get the value(s) of a property
-- The property ID is passed as the first unnamed parameter and is required.
-- A locally supplied parameter may optionaly be supplied as the second unnamed parameter.
-- The function will now also return qualifiers if parameter qual is supplied
-------------------------------------------------------------------------------
-- Dependencies: _getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput; parseParam; sourced;
-- labelOrId; i18n.latestdatequalifier; format_Date; makeOrdinal; roundto; decimalPrecision; decimalToDMS;
-------------------------------------------------------------------------------
p.getValue = function(frame)
local args= frame.args
if not args[1] then
args = frame:getParent().args
if not args[1] then return i18n.errors["No property supplied"] end
end
return p._getValue(args)
end
-------------------------------------------------------------------------------
-- getPreferredValue is used to get a value,
-- (or a comma separated list of them if multiple values exist).
-- If preferred ranks are set, it will return those values, otherwise values with normal ranks
-- now redundant to getValue with |rank=best
-------------------------------------------------------------------------------
-- Dependencies: p.getValue; setRanks; parseInput; propertyvalueandquals; assembleoutput;
-- parseParam; sourced; labelOrId; i18n.latestdatequalifier; format_Date;
-- makeOrdinal; roundto; decimalPrecision; decimalToDMS;
-------------------------------------------------------------------------------
p.getPreferredValue = function(frame)
frame.args.rank = "best"
return p.getValue(frame)
end
-------------------------------------------------------------------------------
-- getCoords is used to get coordinates for display in an infobox
-- whitelist and blacklist are implemented
-- optional 'display' parameter is allowed, defaults to nil - was "inline, title"
-------------------------------------------------------------------------------
-- Dependencies: setRanks(); parseInput(); decimalPrecision();
-------------------------------------------------------------------------------
p.getCoords = function(frame)
local propertyID = "P625"
-- if there is a 'display' parameter supplied, use it
-- otherwise default to nothing
local disp = frame.args.display or ""
if disp == "" then
disp = nil -- default to not supplying display parameter, was "inline, title"
end
-- there may be a format parameter to switch from deg/min/sec to decimal degrees
-- default is deg/min/sec
-- decimal degrees needs |format = dec
local form = (frame.args.format or ""):lower():sub(1,3)
if form ~= "dec" then
form = "dms"
end
-- just deal with best values
frame.args.reqranks = setRanks("best")
local qid, props = parseInput(frame, frame.args[1], propertyID)
if not qid then
return props -- either local parameter or nothing
else
local dv = props[1].mainsnak.datavalue.value
local lat, long, prec = dv.latitude, dv.longitude, dv.precision
lat = decimalPrecision(lat, prec)
long = decimalPrecision(long, prec)
local lat_long = { lat, long }
lat_long["display"] = disp
lat_long["format"] = form
-- invoke template Coord with the values stored in the table
return frame:expandTemplate{title = 'coord', args = lat_long}
end
end
-------------------------------------------------------------------------------
-- getQualifierValue is used to get a formatted value of a qualifier
--
-- The call needs: a property (the unnamed parameter or 1=)
-- a target value for that property (pval=)
-- a qualifier for that target value (qual=)
-- The usual whitelisting and blacklisting of the property is implemented
-- The boolean onlysourced= parameter can be set to return nothing
-- when the property is unsourced (or only sourced to Wikipedia)
-------------------------------------------------------------------------------
-- Dependencies: parseParam(); setRanks(); parseInput(); sourced();
-- propertyvalueandquals(); assembleoutput();
-- labelOrId(); i18n.latestdatequalifier(); format_Date();
-- findLang(); makeOrdinal(); roundto(); decimalPrecision(); decimalToDMS();
-------------------------------------------------------------------------------
p.getQualifierValue = function(frame)
-- The property ID that will have a qualifier is the first unnamed parameter
local propertyID = mw.text.trim(frame.args[1] or "")
-- The value of the property we want to match whose qualifier value is to be returned
-- is passed in named parameter |pval=
local propvalue = frame.args.pval
-- The property ID of the qualifier
-- whose value is to be returned is passed in named parameter |qual=
local qualifierID = frame.args.qual
-- A filter can be set like this: filter=P642==Q22674854
local filter, fprop, fval
local ftable = mw.text.split(frame.args.filter or "", "==")
if ftable[2] then
fprop = mw.text.trim(ftable[1])
fval = mw.text.trim(ftable[2])
filter = true
end
-- onlysourced is a boolean passed to return qualifiers
-- only when property values are sourced to something other than Wikipedia
-- if nothing or an empty string is passed set it true
-- if "false" or "no" or 0 is passed set it false
local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)
-- set a language object and language code in the frame.args table
frame.args.langobj = findLang(frame.args.lang)
frame.args.lang = frame.args.langobj.code
-- set the requested ranks flags
frame.args.reqranks = setRanks(frame.args.rank)
-- check for locally supplied parameter in second unnamed parameter
-- success means no local parameter and the property exists
local qid, props = parseInput(frame, frame.args[2], propertyID)
if qid then
local out = {}
-- Scan through the values of the property
-- we want something like property is P793, significant event (in propertyID)
-- whose value is something like Q385378, construction (in propvalue)
-- then we can return the value(s) of a qualifier such as P580, start time (in qualifierID)
for k1, v1 in pairs(props) do
if v1.mainsnak.snaktype == "value" and v1.mainsnak.datavalue.type == "wikibase-entityid" then
-- It's a wiki-linked value, so check if it's the target (in propvalue) and if it has qualifiers
if v1.mainsnak.datavalue.value.id == propvalue and v1.qualifiers then
if onlysrc == false or sourced(v1) then
-- if we've got this far, we have a (sourced) claim with qualifiers
-- which matches the target, so apply the filter and find the value(s) of the qualifier we want
if not filter or (v1.qualifiers[fprop] and v1.qualifiers[fprop][1].datavalue.value.id == fval) then
local quals = v1.qualifiers[qualifierID]
if quals then
-- can't reference qualifer, so set onlysourced = "no" (args are strings, not boolean)
local qargs = frame.args
qargs.onlysourced = "no"
local vals = propertyvalueandquals(quals, qargs, qid)
for k, v in ipairs(vals) do
out[#out + 1] = v
end
end
end
end -- of check for sourced
end -- of check for matching required value and has qualifiers
end -- of check for wikibase entity
end -- of loop through values of propertyID
return assembleoutput(out, frame.args, qid, propertyID)
else
return props -- either local parameter or nothing
end -- of test for success
return nil
end
-------------------------------------------------------------------------------
-- getSumOfParts scans the property 'has part' (P527) for values matching a list.
-- The list is passed in parameter vlist.
-- It consists of a string of Qids separated by spaces or any usual punctuation.
-- If the matched values have a qualifier 'quantity' (P1114), those quantities are summed.
-- The sum is returned as a number or nothing if zero.
-------------------------------------------------------------------------------
-- Dependencies: _getsumofparts;
-------------------------------------------------------------------------------
p.getSumOfParts = function(frame)
local sum = _getsumofparts(frame.args)
if sum == 0 then return end
return sum
end
-------------------------------------------------------------------------------
-- getValueByQual gets the value of a property which has a qualifier with a given entity value
-- The call needs:
-- a property ID (the unnamed parameter or 1=Pxxx)
-- the ID of a qualifier for that property (qualID=Pyyy)
-- either the Wikibase-entity ID of a value for that qualifier (qvalue=Qzzz)
-- or a string value for that qualifier (qvalue=abc123)
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-------------------------------------------------------------------------------
-- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced;
-- assembleoutput;
-------------------------------------------------------------------------------
p.getValueByQual = function(frame)
local qualID = frame.args.qualID
-- The Q-id of the value for the qualifier we want to match is in named parameter |qvalue=
local qval = frame.args.qvalue or ""
if qval == "" then return "no qualifier value supplied" end
local function checkQID(id)
return id == qval
end
return _getvaluebyqual(frame, qualID, checkQID)
end
-------------------------------------------------------------------------------
-- getValueByLang gets the value of a property which has a qualifier P407
-- ("language of work or name") whose value has the given language code
-- The call needs:
-- a property ID (the unnamed parameter or 1=Pxxx)
-- the MediaWiki language code to match the language (lang=xx[-yy])
-- (if no code is supplied, it uses the default language)
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-------------------------------------------------------------------------------
-- Dependencies: _getvaluebyqual; parseParam; setRanks; parseInput; sourced; assembleoutput;
-------------------------------------------------------------------------------
p.getValueByLang = function(frame)
-- The language code for the qualifier we want to match is in named parameter |lang=
local langcode = findLang(frame.args.lang).code
local function checkLanguage(id)
-- id should represent a language like "British English (Q7979)"
-- it should have string property "Wikimedia language code (P424)"
-- qlcode will be a table:
local qlcode = mw.wikibase.getBestStatements(id, "P424")
if (#qlcode > 0) and (qlcode[1].mainsnak.datavalue.value == langcode) then
return true
end
end
return _getvaluebyqual(frame, "P407", checkLanguage)
end
-------------------------------------------------------------------------------
-- getValueByRefSource gets the value of a property which has a reference "stated in" (P248)
-- whose value has the given entity-ID.
-- The call needs:
-- a property ID (the unnamed parameter or 1=Pxxx)
-- the entity ID of a value to match where the reference is stated in (match=Qzzz)
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p.getValueByRefSource = function(frame)
-- The property ID that we want to check is the first unnamed parameter
local propertyID = mw.text.trim(frame.args[1] or ""):upper()
if propertyID == "" then return "no property supplied" end
-- The Q-id of the value we want to match is in named parameter |qvalue=
local qval = (frame.args.match or ""):upper()
if qval == "" then qval = "Q21540096" end
local unit = (frame.args.unit or ""):upper()
if unit == "" then unit = "Q4917" end
local onlysrc = parseParam(frame.args.onlysourced or frame.args.osd, true)
-- set the requested ranks flags
frame.args.reqranks = setRanks(frame.args.rank)
-- set a language object and code in the frame.args table
frame.args.langobj = findLang(frame.args.lang)
frame.args.lang = frame.args.langobj.code
local linked = parseParam(frame.args.linked, true)
local uabbr = parseParam(frame.args.uabbr or frame.args.unitabbr, false)
-- qid not nil means no local parameter and the property exists
local qid, props = parseInput(frame, frame.args[2], propertyID)
if qid then
local out = {}
local mlt= {}
for k1, v1 in ipairs(props) do
if onlysrc == false or sourced(v1) then
if v1.references then
for k2, v2 in ipairs(v1.references) do
if v2.snaks.P248 then
for k3, v3 in ipairs(v2.snaks.P248) do
if v3.datavalue.value.id == qval then
out[#out+1], mlt[#out+1] = rendersnak(v1, frame.args, linked, "", "", "", "", uabbr, unit)
if not mlt[#out] then
-- we only need one match per property value
-- unless datatype was monolingual text
break
end
end -- of test for match
end -- of loop through values "stated in"
end -- of test that "stated in" exists
end -- of loop through references
end -- of test that references exist
end -- of test for sourced
end -- of loop through values of propertyID
if #mlt > 0 then
local langcode = frame.args.lang
langcode = mw.text.split( langcode, '-', true )[1]
local fbtbl = mw.language.getFallbacksFor( langcode )
table.insert( fbtbl, 1, langcode )
local bestval = ""
local found = false
for idx1, lang1 in ipairs(fbtbl) do
for idx2, lang2 in ipairs(mlt) do
if (lang1 == lang2) and not found then
bestval = out[idx2]
found = true
break
end
end -- loop through values of property
end -- loop through fallback languages
if found then
-- replace output table with a table containing the best value
out = { bestval }
else
-- more than one value and none of them on the list of fallback languages
-- sod it, just give them the first one
out = { out[1] }
end
end
return assembleoutput(out, frame.args, qid, propertyID)
else
return props -- no property or local parameter supplied
end -- of test for success
end
-------------------------------------------------------------------------------
-- getPropertyIDs takes most of the usual parameters.
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.
-- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity.
-- Otherwise it returns nothing.
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p._getPropertyIDs = function(args)
args.reqranks = setRanks(args.rank)
args.langobj = findLang(args.lang)
args.lang = args.langobj.code
-- change default for noicon to true
args.noicon = tostring(parseParam(args.noicon or "", true))
local f = {}
f.args = args
local pid = mw.text.trim(args[1] or ""):upper()
-- get the qid and table of claims for the property, or nothing and the local value passed
local qid, props = parseInput(f, args[2], pid)
if not qid then return props end
if not props[1] then return nil end
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local maxvals = tonumber(args.maxvals) or 0
local out = {}
for i, v in ipairs(props) do
local snak = v.mainsnak
if ( snak.datatype == "wikibase-item" )
and ( v.rank and args.reqranks[v.rank:sub(1, 1)] )
and ( snak.snaktype == "value" )
and ( sourced(v) or not onlysrc )
then
out[#out+1] = snak.datavalue.value.id
end
if maxvals > 0 and #out >= maxvals then break end
end
return assembleoutput(out, args, qid, pid)
end
p.getPropertyIDs = function(frame)
local args = frame.args
return p._getPropertyIDs(args)
end
-------------------------------------------------------------------------------
-- getQualifierIDs takes most of the usual parameters.
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.
-- It takes a property-id as the first unnamed parameter, and an optional parameter qlist
-- which is a list of qualifier property-ids to search for (default is "ALL")
-- It returns the Entity-IDs (Qids) of the values of a property if it is a Wikibase-Entity.
-- Otherwise it returns nothing.
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p.getQualifierIDs = function(frame)
local args = frame.args
args.reqranks = setRanks(args.rank)
args.langobj = findLang(args.lang)
args.lang = args.langobj.code
-- change default for noicon to true
args.noicon = tostring(parseParam(args.noicon or "", true))
local f = {}
f.args = args
local pid = mw.text.trim(args[1] or ""):upper()
-- get the qid and table of claims for the property, or nothing and the local value passed
local qid, props = parseInput(f, args[2], pid)
if not qid then return props end
if not props[1] then return nil end
-- get the other parameters
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local maxvals = tonumber(args.maxvals) or 0
local qlist = args.qlist or ""
if qlist == "" then qlist = "ALL" end
qlist = qlist:gsub("[%p%s]+", " ") .. " "
local out = {}
for i, v in ipairs(props) do
local snak = v.mainsnak
if ( v.rank and args.reqranks[v.rank:sub(1, 1)] )
and ( snak.snaktype == "value" )
and ( sourced(v) or not onlysrc )
then
if v.qualifiers then
for k1, v1 in pairs(v.qualifiers) do
if qlist == "ALL " or qlist:match(k1 .. " ") then
for i2, v2 in ipairs(v1) do
if v2.datatype == "wikibase-item" and v2.snaktype == "value" then
out[#out+1] = v2.datavalue.value.id
end -- of test that id exists
end -- of loop through qualifier values
end -- of test for kq in qlist
end -- of loop through qualifiers
end -- of test for qualifiers
end -- of test for rank value, sourced, and value exists
if maxvals > 0 and #out >= maxvals then break end
end -- of loop through property values
return assembleoutput(out, args, qid, pid)
end
-------------------------------------------------------------------------------
-- getPropOfProp takes two propertyIDs: prop1 and prop2 (as well as the usual parameters)
-- If the value(s) of prop1 are of type "wikibase-item" then it returns the value(s) of prop2
-- of each of those wikibase-items.
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p._getPropOfProp = function(args)
-- parameter sets for commonly used groups of parameters
local paraset = tonumber(args.ps or args.parameterset or 0)
if paraset == 1 then
-- a common setting
args.rank = "best"
args.fetchwikidata = "ALL"
args.onlysourced = "no"
args.noicon = "true"
elseif paraset == 2 then
-- equivalent to raw
args.rank = "best"
args.fetchwikidata = "ALL"
args.onlysourced = "no"
args.noicon = "true"
args.linked = "no"
args.pd = "true"
elseif paraset == 3 then
-- third set goes here
end
args.reqranks = setRanks(args.rank)
args.langobj = findLang(args.lang)
args.lang = args.langobj.code
local pid1 = args.prop1 or args.pid1 or ""
local pid2 = args.prop2 or args.pid2 or ""
if pid1 == "" or pid2 == "" then return nil end
local f = {}
f.args = args
local qid1, statements1 = parseInput(f, args[1], pid1)
-- parseInput nulls empty args[1] and returns args[1] if nothing on Wikidata
if not qid1 then return statements1 end
-- otherwise it returns the qid and a table for the statement
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local maxvals = tonumber(args.maxvals) or 0
local qualID = mw.text.trim(args.qual or ""):upper()
if qualID == "" then qualID = nil end
local out = {}
for k, v in ipairs(statements1) do
if not onlysrc or sourced(v) then
local snak = v.mainsnak
if snak.datatype == "wikibase-item" and snak.snaktype == "value" then
local qid2 = snak.datavalue.value.id
local statements2 = {}
if args.reqranks.b then
statements2 = mw.wikibase.getBestStatements(qid2, pid2)
else
statements2 = mw.wikibase.getAllStatements(qid2, pid2)
end
if statements2[1] then
local out2 = propertyvalueandquals(statements2, args, qualID)
out[#out+1] = assembleoutput(out2, args, qid2, pid2)
end
end -- of test for valid property1 value
end -- of test for sourced
if maxvals > 0 and #out >= maxvals then break end
end -- of loop through values of property1
return assembleoutput(out, args, qid1, pid1)
end
p.getPropOfProp = function(frame)
local args= frame.args
if not args.prop1 and not args.pid1 then
args = frame:getParent().args
if not args.prop1 and not args.pid1 then return i18n.errors["No property supplied"] end
end
return p._getPropOfProp(args)
end
-------------------------------------------------------------------------------
-- getAwardCat takes most of the usual parameters. If the item has values of P166 (award received),
-- then it examines each of those awards for P2517 (category for recipients of this award).
-- If it exists, it returns the corresponding category,
-- with the item's P734 (family name) as sort key, or no sort key if there is no family name.
-- The sort key may be overridden by the parameter |sortkey (alias |sk).
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p.getAwardCat = function(frame)
frame.args.reqranks = setRanks(frame.args.rank)
frame.args.langobj = findLang(frame.args.lang)
frame.args.lang = frame.args.langobj.code
local args = frame.args
args.sep = " "
local pid1 = args.prop1 or "P166"
local pid2 = args.prop2 or "P2517"
if pid1 == "" or pid2 == "" then return nil end
-- locally supplied value:
local localval = mw.text.trim(args[1] or "")
local qid1, statements1 = parseInput(frame, localval, pid1)
if not qid1 then return localval end
-- linkprefix (strip quotes)
local lp = (args.linkprefix or args.lp or ""):gsub('"', '')
-- sort key (strip quotes, hyphens and periods):
local sk = (args.sortkey or args.sk or ""):gsub('["-.]', '')
-- family name:
local famname = ""
if sk == "" then
local p734 = mw.wikibase.getBestStatements(qid1, "P734")[1]
local p734id = p734 and p734.mainsnak.snaktype == "value" and p734.mainsnak.datavalue.value.id or ""
famname = mw.wikibase.getSitelink(p734id) or ""
-- strip namespace and disambigation
local pos = famname:find(":") or 0
famname = famname:sub(pos+1):gsub("%s%(.+%)$", "")
if famname == "" then
local lbl = mw.wikibase.getLabel(p734id)
famname = lbl and mw.text.nowiki(lbl) or ""
end
end
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local maxvals = tonumber(args.maxvals) or 0
local qualID = mw.text.trim(args.qual or ""):upper()
if qualID == "" then qualID = nil end
local out = {}
for k, v in ipairs(statements1) do
if not onlysrc or sourced(v) then
local snak = v.mainsnak
if snak.datatype == "wikibase-item" and snak.snaktype == "value" then
local qid2 = snak.datavalue.value.id
local statements2 = {}
if args.reqranks.b then
statements2 = mw.wikibase.getBestStatements(qid2, pid2)
else
statements2 = mw.wikibase.getAllStatements(qid2, pid2)
end
if statements2[1] and statements2[1].mainsnak.snaktype == "value" then
local qid3 = statements2[1].mainsnak.datavalue.value.id
local sitelink = mw.wikibase.getSitelink(qid3)
-- if there's no local sitelink, create the sitelink from English label
if not sitelink then
local lbl = mw.wikibase.getLabelByLang(qid3, "en")
if lbl then
if lbl:sub(1,9) == "Category:" then
sitelink = mw.text.nowiki(lbl)
else
sitelink = "Category:" .. mw.text.nowiki(lbl)
end
end
end
if sitelink then
if sk ~= "" then
out[#out+1] = "[[" .. lp .. sitelink .. "|" .. sk .. "]]"
elseif famname ~= "" then
out[#out+1] = "[[" .. lp .. sitelink .. "|" .. famname .. "]]"
else
out[#out+1] = "[[" .. lp .. sitelink .. "]]"
end -- of check for sort keys
end -- of test for sitelink
end -- of test for category
end -- of test for wikibase item has a value
end -- of test for sourced
if maxvals > 0 and #out >= maxvals then break end
end -- of loop through values of property1
return assembleoutput(out, args, qid1, pid1)
end
-------------------------------------------------------------------------------
-- getIntersectCat takes most of the usual parameters.
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented
-- It takes two properties, |prop1 and |prop2 (e.g. occupation and country of citizenship)
-- Each property's value is a wiki-base entity
-- For each value of the first parameter (ranks implemented) it fetches the value's main category
-- and then each value of the second parameter (possibly substituting a simpler description)
-- then it returns all of the categories representing the intersection of those properties,
-- (e.g. Category:Actors from Canada). A joining term may be supplied (e.g. |join=from).
-- The item's P734 (family name) is the sort key, or no sort key if there is no family name.
-- The sort key may be overridden by the parameter |sortkey (alias |sk).
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced; propertyvalueandquals assembleoutput;
-------------------------------------------------------------------------------
p.getIntersectCat = function(frame)
frame.args.reqranks = setRanks(frame.args.rank)
frame.args.langobj = findLang(frame.args.lang)
frame.args.lang = frame.args.langobj.code
local args = frame.args
args.sep = " "
args.linked = "no"
local pid1 = args.prop1 or "P106"
local pid2 = args.prop2 or "P27"
if pid1 == "" or pid2 == "" then return nil end
local qid, statements1 = parseInput(frame, "", pid1)
if not qid then return nil end
local qid, statements2 = parseInput(frame, "", pid2)
if not qid then return nil end
-- topics like countries may have different names in categories from their label in Wikidata
local subs_exists, subs = pcall(mw.loadData, "Module:WikidataIB/subs")
local join = args.join or ""
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local maxvals = tonumber(args.maxvals) or 0
-- linkprefix (strip quotes)
local lp = (args.linkprefix or args.lp or ""):gsub('"', '')
-- sort key (strip quotes, hyphens and periods):
local sk = (args.sortkey or args.sk or ""):gsub('["-.]', '')
-- family name:
local famname = ""
if sk == "" then
local p734 = mw.wikibase.getBestStatements(qid, "P734")[1]
local p734id = p734 and p734.mainsnak.snaktype == "value" and p734.mainsnak.datavalue.value.id or ""
famname = mw.wikibase.getSitelink(p734id) or ""
-- strip namespace and disambigation
local pos = famname:find(":") or 0
famname = famname:sub(pos+1):gsub("%s%(.+%)$", "")
if famname == "" then
local lbl = mw.wikibase.getLabel(p734id)
famname = lbl and mw.text.nowiki(lbl) or ""
end
end
local cat1 = {}
for k, v in ipairs(statements1) do
if not onlysrc or sourced(v) then
-- get the ID representing the value of the property
local pvalID = (v.mainsnak.snaktype == "value") and v.mainsnak.datavalue.value.id
if pvalID then
-- get the topic's main category (P910) for that entity
local p910 = mw.wikibase.getBestStatements(pvalID, "P910")[1]
if p910 and p910.mainsnak.snaktype == "value" then
local tmcID = p910.mainsnak.datavalue.value.id
-- use sitelink or the English label for the cat
local cat = mw.wikibase.getSitelink(tmcID)
if not cat then
local lbl = mw.wikibase.getLabelByLang(tmcID, "en")
if lbl then
if lbl:sub(1,9) == "Category:" then
cat = mw.text.nowiki(lbl)
else
cat = "Category:" .. mw.text.nowiki(lbl)
end
end
end
cat1[#cat1+1] = cat
end -- of test for topic's main category exists
end -- of test for property has vaild value
end -- of test for sourced
if maxvals > 0 and #cat1 >= maxvals then break end
end
local cat2 = {}
for k, v in ipairs(statements2) do
if not onlysrc or sourced(v) then
local cat = rendersnak(v, args)
if subs[cat] then cat = subs[cat] end
cat2[#cat2+1] = cat
end
if maxvals > 0 and #cat2 >= maxvals then break end
end
local out = {}
for k1, v1 in ipairs(cat1) do
for k2, v2 in ipairs(cat2) do
if sk ~= "" then
out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "|" .. sk .. "]]"
elseif famname ~= "" then
out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "|" .. famname .. "]]"
else
out[#out+1] = "[[" .. lp .. v1 .. " " .. join .. " " .. v2 .. "]]"
end -- of check for sort keys
end
end
args.noicon = "true"
return assembleoutput(out, args, qid, pid1)
end
-------------------------------------------------------------------------------
-- qualsToTable takes most of the usual parameters.
-- The usual whitelisting, blacklisting, onlysourced, etc. are implemented.
-- A qid may be given, and the first unnamed parameter is the property ID, which is of type wikibase item.
-- It takes a list of qualifier property IDs as |quals=
-- For a given qid and property, it creates the rows of an html table,
-- each row being a value of the property (optionally only if the property matches the value in |pval= )
-- each cell being the first value of the qualifier corresponding to the list in |quals
-------------------------------------------------------------------------------
-- Dependencies: parseParam; setRanks; parseInput; sourced;
-------------------------------------------------------------------------------
p.qualsToTable = function(frame)
local args = frame.args
local quals = args.quals or ""
if quals == "" then return "" end
args.reqranks = setRanks(args.rank)
local propertyID = mw.text.trim(args[1] or "")
local f = {}
f.args = args
local entityid, props = parseInput(f, "", propertyID)
if not entityid then return "" end
args.langobj = findLang(args.lang)
args.lang = args.langobj.code
local pval = args.pval or ""
local qplist = mw.text.split(quals, "%p") -- split at punctuation and make a sequential table
for i, v in ipairs(qplist) do
qplist[i] = mw.text.trim(v):upper() -- remove whitespace and capitalise
end
local col1 = args.firstcol or ""
if col1 ~= "" then
col1 = col1 .. "</td><td>"
end
local emptycell = args.emptycell or " "
-- construct a 2-D array of qualifier values in qvals
local qvals = {}
for i, v in ipairs(props) do
local skip = false
if pval ~= "" then
local pid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id
if pid ~= pval then skip = true end
end
if not skip then
local qval = {}
local vqualifiers = v.qualifiers or {}
-- go through list of wanted qualifier properties
for i1, v1 in ipairs(qplist) do
-- check for that property ID in the statement's qualifiers
local qv, qtype
if vqualifiers[v1] then
qtype = vqualifiers[v1][1].datatype
if qtype == "time" then
if vqualifiers[v1][1].snaktype == "value" then
qv = mw.wikibase.renderSnak(vqualifiers[v1][1])
qv = frame:expandTemplate{title="dts", args={qv}}
else
qv = "?"
end
elseif qtype == "url" then
if vqualifiers[v1][1].snaktype == "value" then
qv = mw.wikibase.renderSnak(vqualifiers[v1][1])
local display = mw.ustring.match( mw.uri.decode(qv, "WIKI"), "([%w ]+)$" )
if display then
qv = "[" .. qv .. " " .. display .. "]"
end
end
else
qv = mw.wikibase.formatValue(vqualifiers[v1][1])
end
end
-- record either the value or a placeholder
qval[i1] = qv or emptycell
end -- of loop through list of qualifiers
-- add the list of qualifier values as a "row" in the main list
qvals[#qvals+1] = qval
end
end -- of for each value loop
local out = {}
for i, v in ipairs(qvals) do
out[i] = "<tr><td>" .. col1 .. table.concat(qvals[i], "</td><td>") .. "</td></tr>"
end
return table.concat(out, "\n")
end
-------------------------------------------------------------------------------
-- getGlobe takes an optional qid of a Wikidata entity passed as |qid=
-- otherwise it uses the linked item for the current page.
-- If returns the Qid of the globe used in P625 (coordinate location),
-- or nil if there isn't one.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getGlobe = function(frame)
local qid = frame.args.qid or frame.args[1] or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
local coords = mw.wikibase.getBestStatements(qid, "P625")[1]
local globeid
if coords and coords.mainsnak.snaktype == "value" then
globeid = coords.mainsnak.datavalue.value.globe:match("(Q%d+)")
end
return globeid
end
-------------------------------------------------------------------------------
-- getCommonsLink takes an optional qid of a Wikidata entity passed as |qid=
-- It returns one of the following in order of preference:
-- the Commons sitelink of the linked Wikidata item;
-- the Commons sitelink of the topic's main category of the linked Wikidata item;
-------------------------------------------------------------------------------
-- Dependencies: _getCommonslink(); _getSitelink(); parseParam()
-------------------------------------------------------------------------------
p.getCommonsLink = function(frame)
local oc = frame.args.onlycat or frame.args.onlycategories
local fb = parseParam(frame.args.fallback or frame.args.fb, true)
return _getCommonslink(frame.args.qid, oc, fb)
end
-------------------------------------------------------------------------------
-- getSitelink takes the qid of a Wikidata entity passed as |qid=
-- It takes an optional parameter |wiki= to determine which wiki is to be checked for a sitelink
-- If the parameter is blank, then it uses the local wiki.
-- If there is a sitelink to an article available, it returns the plain text link to the article
-- If there is no sitelink, it returns nil.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getSiteLink = function(frame)
return _getSitelink(frame.args.qid, frame.args.wiki or mw.text.trim(frame.args[1] or ""))
end
-------------------------------------------------------------------------------
-- getLink has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=
-- If there is a sitelink to an article on the local Wiki, it returns a link to the article
-- with the Wikidata label as the displayed text.
-- If there is no sitelink, it returns the label as plain text.
-- If there is no label in the local language, it displays the qid instead.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getLink = function(frame)
local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "")
if itemID == "" then return end
local sitelink = mw.wikibase.getSitelink(itemID)
local label = labelOrId(itemID)
if sitelink then
return "[[:" .. sitelink .. "|" .. label .. "]]"
else
return label
end
end
-------------------------------------------------------------------------------
-- getLabel has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=
-- It returns the Wikidata label for the local language as plain text.
-- If there is no label in the local language, it displays the qid instead.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getLabel = function(frame)
local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "")
if itemID == "" then return end
local lang = frame.args.lang or ""
if lang == "" then lang = nil end
local label = labelOrId(itemID, lang)
return label
end
-------------------------------------------------------------------------------
-- label has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=
-- if no qid is supplied, it uses the qid associated with the current page.
-- It returns the Wikidata label for the local language as plain text.
-- If there is no label in the local language, it returns nil.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.label = function(frame)
local qid = mw.text.trim(frame.args[1] or frame.args.qid or "")
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return end
local lang = frame.args.lang or ""
if lang == "" then lang = nil end
local label, success = labelOrId(qid, lang)
if success then return label end
end
-------------------------------------------------------------------------------
-- getAT (Article Title)
-- has the qid of a Wikidata entity passed as the first unnamed parameter or as |qid=
-- If there is a sitelink to an article on the local Wiki, it returns the sitelink as plain text.
-- If there is no sitelink or qid supplied, it returns nothing.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getAT = function(frame)
local itemID = mw.text.trim(frame.args[1] or frame.args.qid or "")
if itemID == "" then return end
return mw.wikibase.getSitelink(itemID)
end
-------------------------------------------------------------------------------
-- getDescription has the qid of a Wikidata entity passed as |qid=
-- (it defaults to the associated qid of the current article if omitted)
-- and a local parameter passed as the first unnamed parameter.
-- Any local parameter passed (other than "Wikidata" or "none") becomes the return value.
-- It returns the article description for the Wikidata entity if the local parameter is "Wikidata".
-- Nothing is returned if the description doesn't exist or "none" is passed as the local parameter.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getDescription = function(frame)
local desc = mw.text.trim(frame.args[1] or "")
local itemID = mw.text.trim(frame.args.qid or "")
if itemID == "" then itemID = nil end
if desc:lower() == 'wikidata' then
return mw.wikibase.getDescription(itemID)
elseif desc:lower() == 'none' then
return nil
else
return desc
end
end
-------------------------------------------------------------------------------
-- getAliases has the qid of a Wikidata entity passed as |qid=
-- (it defaults to the associated qid of the current article if omitted)
-- and a local parameter passed as the first unnamed parameter.
-- It implements blacklisting and whitelisting with a field name of "alias" by default.
-- Any local parameter passed becomes the return value.
-- Otherwise it returns the aliases for the Wikidata entity with the usual list options.
-- Nothing is returned if the aliases do not exist.
-------------------------------------------------------------------------------
-- Dependencies: findLang(); assembleoutput()
-------------------------------------------------------------------------------
p.getAliases = function(frame)
local args = frame.args
local fieldname = args.name or ""
if fieldname == "" then fieldname = "alias" end
local blacklist = args.suppressfields or args.spf or ""
if blacklist:find(fieldname) then return nil end
local localval = mw.text.trim(args[1] or "")
if localval ~= "" then return localval end
local whitelist = args.fetchwikidata or args.fwd or ""
if whitelist == "" then whitelist = "NONE" end
if not (whitelist == 'ALL' or whitelist:find(fieldname)) then return nil end
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid or not mw.wikibase.entityExists(qid) then return nil end
local aliases = mw.wikibase.getEntity(qid).aliases
if not aliases then return nil end
args.langobj = findLang(args.lang)
local langcode = args.langobj.code
args.lang = langcode
local out = {}
for k1, v1 in pairs(aliases) do
if v1[1].language == langcode then
for k1, v2 in ipairs(v1) do
out[#out+1] = v2.value
end
break
end
end
return assembleoutput(out, args, qid)
end
-------------------------------------------------------------------------------
-- pageId returns the page id (entity ID, Qnnn) of the current page
-- returns nothing if the page is not connected to Wikidata
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.pageId = function(frame)
return mw.wikibase.getEntityIdForCurrentPage()
end
-------------------------------------------------------------------------------
-- formatDate is a wrapper to export the private function format_Date
-------------------------------------------------------------------------------
-- Dependencies: format_Date();
-------------------------------------------------------------------------------
p.formatDate = function(frame)
return format_Date(frame.args[1], frame.args.df, frame.args.bc)
end
-------------------------------------------------------------------------------
-- location is a wrapper to export the private function _location
-- it takes the entity-id as qid or the first unnamed parameter
-- optional boolean parameter first toggles the display of the first item
-- optional boolean parameter skip toggles the display to skip to the last item
-- parameter debug=<y/n> (default 'n') adds error msg if not a location
-------------------------------------------------------------------------------
-- Dependencies: _location();
-------------------------------------------------------------------------------
p.location = function(frame)
local debug = (frame.args.debug or ""):sub(1, 1):lower()
if debug == "" then debug = "n" end
local qid = mw.text.trim(frame.args.qid or frame.args[1] or ""):upper()
if qid == "" then qid=mw.wikibase.getEntityIdForCurrentPage() end
if not qid then
if debug ~= "n" then
return i18n.errors["entity-not-found"]
else
return nil
end
end
local first = mw.text.trim(frame.args.first or "")
local skip = mw.text.trim(frame.args.skip or "")
return table.concat( _location(qid, first, skip), ", " )
end
-------------------------------------------------------------------------------
-- checkBlacklist implements a test to check whether a named field is allowed
-- returns true if the field is not blacklisted (i.e. allowed)
-- returns false if the field is blacklisted (i.e. disallowed)
-- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Joe |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}}
-- displays "blacklisted"
-- {{#if:{{#invoke:WikidataIB |checkBlacklist |name=Jim |suppressfields=Dave; Joe; Fred}} | not blacklisted | blacklisted}}
-- displays "not blacklisted"
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.checkBlacklist = function(frame)
local blacklist = frame.args.suppressfields or frame.args.spf or ""
local fieldname = frame.args.name or ""
if blacklist ~= "" and fieldname ~= "" then
if blacklist:find(fieldname) then
return false
else
return true
end
else
-- one of the fields is missing: let's call that "not on the list"
return true
end
end
-------------------------------------------------------------------------------
-- emptyor returns nil if its first unnamed argument is just punctuation, whitespace or html tags
-- otherwise it returns the argument unchanged (including leading/trailing space).
-- If the argument may contain "=", then it must be called explicitly:
-- |1=arg
-- (In that case, leading and trailing spaces are trimmed)
-- It finds use in infoboxes where it can replace tests like:
-- {{#if: {{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}} | <span class="xxx">{{#invoke:WikidatIB |getvalue |P99 |fwd=ALL}}</span> | }}
-- with a form that uses just a single call to Wikidata:
-- {{#invoke |WikidataIB |emptyor |1= <span class="xxx">{{#invoke:WikidataIB |getvalue |P99 |fwd=ALL}}</span> }}
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.emptyor = function(frame)
local s = frame.args[1] or ""
if s == "" then return nil end
local sx = s:gsub("%s", ""):gsub("<[^>]*>", ""):gsub("%p", "")
if sx == "" then
return nil
else
return s
end
end
-------------------------------------------------------------------------------
-- labelorid is a public function to expose the output of labelOrId()
-- Pass the Q-number as |qid= or as an unnamed parameter.
-- It returns the Wikidata label for that entity or the qid if no label exists.
-------------------------------------------------------------------------------
-- Dependencies: labelOrId
-------------------------------------------------------------------------------
p.labelorid = function(frame)
return (labelOrId(frame.args.qid or frame.args[1]))
end
-------------------------------------------------------------------------------
-- getLang returns the MediaWiki language code of the current content.
-- If optional parameter |style=full, it returns the language name.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getLang = function(frame)
local style = (frame.args.style or ""):lower()
local langcode = mw.language.getContentLanguage().code
if style == "full" then
return mw.language.fetchLanguageName( langcode )
end
return langcode
end
-------------------------------------------------------------------------------
-- getItemLangCode takes a qid parameter (using the current page's qid if blank)
-- If the item for that qid has property country (P17) it looks at the first preferred value
-- If the country has an official language (P37), it looks at the first preferred value
-- If that official language has a language code (P424), it returns the first preferred value
-- Otherwise it returns nothing.
-------------------------------------------------------------------------------
-- Dependencies: _getItemLangCode()
-------------------------------------------------------------------------------
p.getItemLangCode = function(frame)
return _getItemLangCode(frame.args.qid or frame.args[1])
end
-------------------------------------------------------------------------------
-- findLanguage exports the local findLang() function
-- It takes an optional language code and returns, in order of preference:
-- the code if a known language;
-- the user's language, if set;
-- the server's content language.
-------------------------------------------------------------------------------
-- Dependencies: findLang
-------------------------------------------------------------------------------
p.findLanguage = function(frame)
return findLang(frame.args.lang or frame.args[1]).code
end
-------------------------------------------------------------------------------
-- getQid returns the qid, if supplied
-- failing that, the Wikidata entity ID of the "category's main topic (P301)", if it exists
-- failing that, the Wikidata entity ID associated with the current page, if it exists
-- otherwise, nothing
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getQid = function(frame)
local qid = (frame.args.qid or ""):upper()
-- check if a qid was passed; if so, return it:
if qid ~= "" then return qid end
-- check if there's a "category's main topic (P301)":
qid = mw.wikibase.getEntityIdForCurrentPage()
if qid then
local prop301 = mw.wikibase.getBestStatements(qid, "P301")
if prop301[1] then
local mctid = prop301[1].mainsnak.datavalue.value.id
if mctid then return mctid end
end
end
-- otherwise return the page qid (if any)
return qid
end
-------------------------------------------------------------------------------
-- followQid takes four optional parameters: qid, props, list and all.
-- If qid is not given, it uses the qid for the connected page
-- or returns nil if there isn't one.
-- props is a list of properties, separated by punctuation.
-- If props is given, the Wikidata item for the qid is examined for each property in turn.
-- If that property contains a value that is another Wikibase-item, that item's qid is returned,
-- and the search terminates, unless |all=y when all of the qids are returned, separated by spaces.
-- If |list= is set to a template, the qids are passed as arguments to the template.
-- If props is not given, the qid is returned.
-------------------------------------------------------------------------------
-- Dependencies: parseParam()
-------------------------------------------------------------------------------
p._followQid = function(args)
local qid = (args.qid or ""):upper()
local all = parseParam(args.all, false)
local list = args.list or ""
if list == "" then list = nil end
if qid == "" then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if not qid then return nil end
local out = {}
local props = (args.props or ""):upper()
if props ~= "" then
for p in mw.text.gsplit(props, "%p") do -- split at punctuation and iterate
p = mw.text.trim(p)
for i, v in ipairs( mw.wikibase.getBestStatements(qid, p) ) do
local linkedid = v.mainsnak.datavalue and v.mainsnak.datavalue.value.id
if linkedid then
if all then
out[#out+1] = linkedid
else
return linkedid
end -- test for all or just the first one found
end -- test for value exists for that property
end -- loop through values of property to follow
end -- loop through list of properties to follow
end
if #out > 0 then
local ret = ""
if list then
ret = mw.getCurrentFrame():expandTemplate{title = list, args = out}
else
ret = table.concat(out, " ")
end
return ret
else
return qid
end
end
p.followQid = function(frame)
return p._followQid(frame.args)
end
-------------------------------------------------------------------------------
-- globalSiteID returns the globalSiteID for the current wiki
-- e.g. returns "enwiki" for the English Wikipedia, "enwikisource" for English Wikisource, etc.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.globalSiteID = function(frame)
return mw.wikibase.getGlobalSiteId()
end
-------------------------------------------------------------------------------
-- siteID returns the root of the globalSiteID
-- e.g. "en" for "enwiki", "enwikisource", etc.
-- treats "en-gb" as "en", etc.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.siteID = function(frame)
local txtlang = frame:callParserFunction('int', {'lang'}) or ""
-- This deals with specific exceptions: be-tarask -> be-x-old
if txtlang == "be-tarask" then
return "be_x_old"
end
local pos = txtlang:find("-")
local ret = ""
if pos then
ret = txtlang:sub(1, pos-1)
else
ret = txtlang
end
return ret
end
-------------------------------------------------------------------------------
-- projID returns the code used to link to the reader's language's project
-- e.g "en" for [[:en:WikidataIB]]
-- treats "en-gb" as "en", etc.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.projID = function(frame)
local txtlang = frame:callParserFunction('int', {'lang'}) or ""
-- This deals with specific exceptions: be-tarask -> be-x-old
if txtlang == "be-tarask" then
return "be-x-old"
end
local pos = txtlang:find("-")
local ret = ""
if pos then
ret = txtlang:sub(1, pos-1)
else
ret = txtlang
end
return ret
end
-------------------------------------------------------------------------------
-- formatNumber formats a number according to the the supplied language code ("|lang=")
-- or the default language if not supplied.
-- The number is the first unnamed parameter or "|num="
-------------------------------------------------------------------------------
-- Dependencies: findLang()
-------------------------------------------------------------------------------
p.formatNumber = function(frame)
local lang
local num = tonumber(frame.args[1] or frame.args.num) or 0
lang = findLang(frame.args.lang)
return lang:formatNum( num )
end
-------------------------------------------------------------------------------
-- examine dumps the property (the unnamed parameter or pid)
-- from the item given by the parameter 'qid' (or the other unnamed parameter)
-- or from the item corresponding to the current page if qid is not supplied.
-- e.g. {{#invoke:WikidataIB |examine |pid=P26 |qid=Q42}}
-- or {{#invoke:WikidataIB |examine |P26 |Q42}} or any combination of these
-- or {{#invoke:WikidataIB |examine |P26}} for the current page.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.examine = function( frame )
local args
if frame.args[1] or frame.args.pid or frame.args.qid then
args = frame.args
else
args = frame:getParent().args
end
local par = {}
local pid = (args.pid or ""):upper()
local qid = (args.qid or ""):upper()
par[1] = mw.text.trim( args[1] or "" ):upper()
par[2] = mw.text.trim( args[2] or "" ):upper()
table.sort(par)
if par[2]:sub(1,1) == "P" then par[1], par[2] = par[2], par[1] end
if pid == "" then pid = par[1] end
if qid == "" then qid = par[2] end
local q1 = qid:sub(1,1)
if pid:sub(1,1) ~= "P" then return "No property supplied" end
if q1 ~= "Q" and q1 ~= "M" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return "No item for this page" end
return "<pre>" .. mw.dumpObject( mw.wikibase.getAllStatements( qid, pid ) ) .. "</pre>"
end
-------------------------------------------------------------------------------
-- checkvalue looks for 'val' as a wikibase-item value of a property (the unnamed parameter or pid)
-- from the item given by the parameter 'qid'
-- or from the Wikidata item associated with the current page if qid is not supplied.
-- It only checks ranks that are requested (preferred and normal by default)
-- If property is not supplied, then P31 (instance of) is assumed.
-- It returns val if found or nothing if not found.
-- e.g. {{#invoke:WikidataIB |checkvalue |val=Q5 |pid=P31 |qid=Q42}}
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31 |qid=Q42}}
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |qid=Q42}}
-- or {{#invoke:WikidataIB |checkvalue |val=Q5 |P31}} for the current page.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.checkvalue = function( frame )
local args
if frame.args.val then
args = frame.args
else
args = frame:getParent().args
end
local val = args.val
if not val then return nil end
local pid = mw.text.trim(args.pid or args[1] or "P31"):upper()
local qid = (args.qid or ""):upper()
if pid:sub(1,1) ~= "P" then return nil end
if qid:sub(1,1) ~= "Q" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return nil end
local ranks = setRanks(args.rank)
local stats = {}
if ranks.b then
stats = mw.wikibase.getBestStatements(qid, pid)
else
stats = mw.wikibase.getAllStatements( qid, pid )
end
if not stats[1] then return nil end
if stats[1].mainsnak.datatype == "wikibase-item" then
for k, v in pairs( stats ) do
local ms = v.mainsnak
if ranks[v.rank:sub(1,1)] and ms.snaktype == "value" and ms.datavalue.value.id == val then
return val
end
end
end
return nil
end
-------------------------------------------------------------------------------
-- url2 takes a parameter url= that is a proper url and formats it for use in an infobox.
-- If no parameter is supplied, it returns nothing.
-- This is the equivalent of Template:URL
-- but it keeps the "edit at Wikidata" pen icon out of the microformat.
-- Usually it will take its url parameter directly from a Wikidata call:
-- e.g. {{#invoke:WikidataIB |url2 |url={{wdib |P856 |qid=Q23317 |fwd=ALL |osd=no}} }}
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.url2 = function(frame)
local txt = frame.args.url or ""
if txt == "" then return nil end
-- extract any icon
local url, icon = txt:match("(.+) (.+)")
-- make sure there's at least a space at the end
url = (url or txt) .. " "
icon = icon or ""
-- extract any protocol like https://
local prot = url:match("(https*://).+[ \"\']")
-- extract address
local addr = ""
if prot then
addr = url:match("https*://(.+)[ \"\']") or " "
else
prot = "//"
addr = url:match("[^%p%s]+%.(.+)[ \"\']") or " "
end
-- strip trailing / from end of domain-only url and add <wbr/> before . and /
local disp, n = addr:gsub( "^([^/]+)/$", "%1" ):gsub("%/", "<wbr/>/"):gsub("%.", "<wbr/>.")
return '<span class="url">[' .. prot .. addr .. " " .. disp .. "]</span> " .. icon
end
-------------------------------------------------------------------------------
-- getWebsite fetches the Official website (P856) and formats it for use in an infobox.
-- This is similar to Template:Official website but with a url displayed,
-- and it adds the "edit at Wikidata" pen icon beyond the microformat if enabled.
-- A local value will override the Wikidata value. "NONE" returns nothing.
-- e.g. {{#invoke:WikidataIB |getWebsite |qid= |noicon= |lang= |url= }}
-------------------------------------------------------------------------------
-- Dependencies: findLang(); parseParam();
-------------------------------------------------------------------------------
p.getWebsite = function(frame)
local url = frame.args.url or ""
if url:upper() == "NONE" then return nil end
local urls = {}
local quals = {}
local qid = frame.args.qid or ""
if url and url ~= "" then
urls[1] = url
else
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return nil end
local prop856 = mw.wikibase.getBestStatements(qid, "P856")
for k, v in pairs(prop856) do
if v.mainsnak.snaktype == "value" then
urls[#urls+1] = v.mainsnak.datavalue.value
if v.qualifiers and v.qualifiers["P1065"] then
-- just take the first archive url (P1065)
local au = v.qualifiers["P1065"][1]
if au.snaktype == "value" then
quals[#urls] = au.datavalue.value
end -- test for archive url having a value
end -- test for qualifers
end -- test for website having a value
end -- loop through website(s)
end
if #urls == 0 then return nil end
local out = {}
for i, u in ipairs(urls) do
local link = quals[i] or u
local prot, addr = u:match("(http[s]*://)(.+)")
addr = addr or u
local disp, n = addr:gsub("%.", "<wbr/>%.")
out[#out+1] = '<span class="url">[' .. link .. " " .. disp .. "]</span>"
end
local langcode = findLang(frame.args.lang).code
local noicon = parseParam(frame.args.noicon, false)
if url == "" and not noicon then
out[#out] = out[#out] .. createicon(langcode, qid, "P856")
end
local ret = ""
if #out > 1 then
ret = mw.getCurrentFrame():expandTemplate{title = "ubl", args = out}
else
ret = out[1]
end
return ret
end
-------------------------------------------------------------------------------
-- getAllLabels fetches the set of labels and formats it for display as wikitext.
-- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getAllLabels = function(frame)
local args = frame.args or frame:getParent().args or {}
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end
local labels = mw.wikibase.getEntity(qid).labels
if not labels then return i18n["labels-not-found"] end
local out = {}
for k, v in pairs(labels) do
out[#out+1] = v.value .. " (" .. v.language .. ")"
end
return table.concat(out, "; ")
end
-------------------------------------------------------------------------------
-- getAllDescriptions fetches the set of descriptions and formats it for display as wikitext.
-- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getAllDescriptions = function(frame)
local args = frame.args or frame:getParent().args or {}
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end
local descriptions = mw.wikibase.getEntity(qid).descriptions
if not descriptions then return i18n["descriptions-not-found"] end
local out = {}
for k, v in pairs(descriptions) do
out[#out+1] = v.value .. " (" .. v.language .. ")"
end
return table.concat(out, "; ")
end
-------------------------------------------------------------------------------
-- getAllAliases fetches the set of aliases and formats it for display as wikitext.
-- It takes a parameter 'qid' for arbitrary access, otherwise it uses the current page.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.getAllAliases = function(frame)
local args = frame.args or frame:getParent().args or {}
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid or not mw.wikibase.entityExists(qid) then return i18n["entity-not-found"] end
local aliases = mw.wikibase.getEntity(qid).aliases
if not aliases then return i18n["aliases-not-found"] end
local out = {}
for k1, v1 in pairs(aliases) do
local lang = v1[1].language
local val = {}
for k1, v2 in ipairs(v1) do
val[#val+1] = v2.value
end
out[#out+1] = table.concat(val, ", ") .. " (" .. lang .. ")"
end
return table.concat(out, "; ")
end
-------------------------------------------------------------------------------
-- showNoLinks displays the article titles that should not be linked.
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
p.showNoLinks = function(frame)
local out = {}
for k, v in pairs(donotlink) do
out[#out+1] = k
end
table.sort( out )
return table.concat(out, "; ")
end
-------------------------------------------------------------------------------
-- checkValidity checks whether the first unnamed parameter represents a valid entity-id,
-- that is, something like Q1235 or P123.
-- It returns the strings "true" or "false".
-- Change false to nil to return "true" or "" (easier to test with #if:).
-------------------------------------------------------------------------------
-- Dependencies: none
-------------------------------------------------------------------------------
function p.checkValidity(frame)
local id = mw.text.trim(frame.args[1] or "")
if mw.wikibase.isValidEntityId(id) then
return true
else
return false
end
end
-------------------------------------------------------------------------------
-- getEntityFromTitle returns the Entity-ID (Q-number) for a given title.
-- Modification of Module:ResolveEntityId
-- The title is the first unnamed parameter.
-- The site parameter determines the site/language for the title. Defaults to current wiki.
-- The showdab parameter determines whether dab pages should return the Q-number or nil. Defaults to true.
-- Returns the Q-number or nil if it does not exist.
-------------------------------------------------------------------------------
-- Dependencies: parseParam
-------------------------------------------------------------------------------
function p.getEntityFromTitle(frame)
local args=frame.args
if not args[1] then args=frame:getParent().args end
if not args[1] then return nil end
local title = mw.text.trim(args[1])
local site = args.site or ""
local showdab = parseParam(args.showdab, true)
local qid = mw.wikibase.getEntityIdForTitle(title, site)
if qid then
local prop31 = mw.wikibase.getBestStatements(qid, "P31")[1]
if not showdab and prop31 and prop31.mainsnak.datavalue.value.id == "Q4167410" then
return nil
else
return qid
end
end
end
-------------------------------------------------------------------------------
-- getDatePrecision returns the number representing the precision of the first best date value
-- for the given property.
-- It takes the qid and property ID
-- The meanings are given at https://www.mediawiki.org/wiki/Wikibase/DataModel#Dates_and_times
-- 0 = 1 billion years .. 6 = millennium, 7 = century, 8 = decade, 9 = year, 10 = month, 11 = day
-- Returns 0 (or the second unnamed parameter) if the Wikidata does not exist.
-------------------------------------------------------------------------------
-- Dependencies: parseParam; sourced;
-------------------------------------------------------------------------------
function p.getDatePrecision(frame)
local args=frame.args
if not args[1] then args=frame:getParent().args end
local default = tonumber(args[2] or args.default) or 0
local prop = mw.text.trim(args[1] or "")
if prop == "" then return default end
local qid = args.qid or ""
if qid == "" then qid = mw.wikibase.getEntityIdForCurrentPage() end
if not qid then return default end
local onlysrc = parseParam(args.onlysourced or args.osd, true)
local stat = mw.wikibase.getBestStatements(qid, prop)
for i, v in ipairs(stat) do
local prec = (onlysrc == false or sourced(v))
and v.mainsnak.datavalue
and v.mainsnak.datavalue.value
and v.mainsnak.datavalue.value.precision
if prec then return prec end
end
return default
end
return p
-------------------------------------------------------------------------------
-- List of exported functions
-------------------------------------------------------------------------------
--[[
_getValue
getValue
getPreferredValue
getCoords
getQualifierValue
getSumOfParts
getValueByQual
getValueByLang
getValueByRefSource
getPropertyIDs
getQualifierIDs
getPropOfProp
getAwardCat
getIntersectCat
getGlobe
getCommonsLink
getSiteLink
getLink
getLabel
label
getAT
getDescription
getAliases
pageId
formatDate
location
checkBlacklist
emptyor
labelorid
getLang
getItemLangCode
findLanguage
getQID
followQid
globalSiteID
siteID
projID
formatNumber
examine
checkvalue
url2
getWebsite
getAllLabels
getAllDescriptions
getAllAliases
showNoLinks
checkValidity
getEntityFromTitle
getDatePrecision
--]]
-------------------------------------------------------------------------------
cdfad4f2433151e512d5023478c35bceaf5c980a
Template:Tooltip
10
1050
2298
2023-07-11T17:54:26Z
wikipedia>Paine Ellsworth
0
Undid revision 1164881729 by [[Special:Contributions/Paine Ellsworth|Paine Ellsworth]] ([[User talk:Paine Ellsworth|talk]]) srv per my talk page
wikitext
text/x-wiki
<templatestyles src="Template:Tooltip/styles.css" />{{#ifeq:{{yesno-no|{{{link}}}}}|yes
|[[{{{1}}}|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</span>]]
|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</span>
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using tooltip with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Tooltip]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | class | dotted | id | link | style }}<noinclude>
{{Documentation|Template:Abbr/doc}}
</noinclude>
0bc4ac1b7ea7d4f2cdbb94b76559770a78cd10d9
Template:Use dmy dates/doc
10
866
1920
2023-07-11T21:11:48Z
wikipedia>Tropicalkitty
0
Undid edits by [[Special:Contributions/Emmanuel-Ossian Henry|Emmanuel-Ossian Henry]] ([[User talk:Emmanuel-Ossian Henry|talk]]) to last revision by DB1729: Do not include on this page
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{high use |no-percent=yes}}
{{Template shortcut|dmy|DMY}}
=== Usage ===
To promote consistent date formatting, place this template with other maintenance tags near the top of articles that use the <code>d mmmm yyyy</code> [[date format]] (below hatnotes, but above infoboxes, as per the [[Wikipedia:Manual of Style/Lead section#Elements|Manual of Style]]). Use the parameter <code>|date=</code> for the month and year that an editor or [[WP:bot|bot]] last checked the article for inconsistent date formatting and fixed any found.
Wikipedia articles that use <code>d mmmm yyyy</code> dates, either because of the [[MOS:DATERET|first main contributor]] rule or [[WP:TIES|close national ties]] (see [[Wikipedia:MOSNUM|MOSNUM]]), are systematically tagged with {{Tl|Use dmy dates}} over time. The template is invisible except in edit mode.
The template is useful to the editors to quickly know which date format is to be used when adding new dates into an article. It also facilitates article maintenance by enabling [[WP:bots|bots]] to recognise use of this format, and by adding the article to the [[WP:hidden category|hidden category]] [[:Category:Use dmy dates|Use dmy dates]].
'''Use of this template is part of a continuing effort to monitor the date formats used in articles, to assist in maintaining consistent formatting within an article. It is ''not'' a temporary "cleanup" template. Therefore, do not remove the template without valid reason, such as a determination the article uses or should use a different date format.'''
After being tagged, and bearing in mind article evolution, periodic script or bot runs clean up formats, correcting any new introductions since its last visit, and '''updating the visit date''' on the {{Tl|Use dmy dates}} template.
The dmy and mdy templates have almost always been used to indicate date styles in the body of the articles; although it ''may'' also indicate the flavour of dates in reference sections or parts thereof. Therefore, this template notice ought to be read in conjunction with the blurb at [[Wikipedia:Date formattings]]. [[User:Ohconfucius/script/MOSNUM dates|MOSNUM script documentation]] may also be relevant to those interested.
When a citation style does not expect differing date formats, it is permissible to normalize publication dates to the article body text date format, and access/archive dates to either, with date consistency being preferred (see [[MOS:DATEUNIFY]]).
This template is intended for use in articles. It can be used on a template page in order to format citation dates on the template page itself, but it must be enclosed in {{tag|noinclude}} tags so that it is not transcluded into articles or other pages.
===Auto-formatting citation template dates===
[[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] (collectively cs1|2) templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc) in the style specified by this template. Because it is allowed by [[WP:MOSDATES]], the cs1|2 templates can automatically format dates in a variety of styles. Editors may choose how cs1|2 templates render dates by the use of {{para|cs1-dates|<{{var|keyword}}>}}.
{{#lst:Help:Citation Style 1|auto_date_format_table}}
An example is given at {{section link|Help:Citation Style 1#Auto-formatting citation template dates}}. <!-- An example cannot be given here because [[Module:Citation/CS1/Configuration]] gets the template's page name when this documentation page is transcluded. That means that the module reads the template code but does not read the template documentation. -->
{{lang|la|Nota bene}}: cs1|2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. When editing with the visual editor, changes to this template do not take effect until the page is saved.
=== Syntax ===
{{Tlx|Use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=}}
'''Notes''':
* The template should be inserted in one of the first few lines of code of an article (to improve performance).
* Do not use redirects of this template, because otherwise its presence in an article may not be recognized by date formatting templates and bots. (There are a number of "legacy redirects" which are still supported at least by CS1/CS2 citation templates, but they should be changed to direct invocations of this template, also for performance reasons.)
=== TemplateData ===
{{TemplateData header}}
<templatedata>
{
"format": "inline",
"description": "This template should be placed near the top of articles that use the d mmmm yyyy date format.",
"params": {
"date": {
"label": "Month and year",
"description": "The month and year that the template was placed or the article was last checked or cleaned (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.",
"type": "string",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"example": "April 2022",
"suggested": true
},
"cs1-dates": {
"description": "How dates should be formatted in CS1 citations",
"suggestedvalues": [
"l",
"ll",
"ls",
"ly",
"s",
"ss",
"sy",
"y",
"yy"
]
}
}
}
</templatedata>
=== Wrongly tagged? ===
If, for example, you determine that an article has a template that is inappropriate for [[WP:TIES|its nationality]], you should replace it with the appropriate template to avoid scripts or bots reapplying the "wrong" format in the course of maintenance.
=== Maintenance category ===
* {{category link with count|Pages using Use dmy dates template with unknown parameters}}
=== See also ===
* {{Tl|Use mdy dates}}, for the <code>mmmm d, yyyy</code> format
* {{tl|Date}}, which can alter the format of an inputted date
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Templates with no visible output]]
[[Category:Time and date maintenance templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
485b538ed8b955718e17cb6b05ad2cec1af2a6a1
Template:Module link
10
1566
2901
2023-07-12T09:19:56Z
w>Grufo
0
Add includeonly
wikitext
text/x-wiki
<includeonly>{{{{{{{|safesubst:}}}#invoke:Separated entries|main|[[Module:{{{1}}}{{{section|}}}|#invoke:{{{1}}}]]|{{{2|''function''}}}|separator=|}}}}</includeonly><noinclude>{{documentation}}<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
5158390dc6818645cad4bc8083244e117d023fc4
Module:Collapsible list
828
1179
2508
2023-07-13T14:29:43Z
w>Frietjes
0
we don't need to track this anymore after it was all cleaned up back in [[Template_talk:Collapsible_list/Archive_1#titlestyle_again|2018 to 2019]]
Scribunto
text/plain
local p = {}
local function getListItem( data )
if not type( data ) == 'string' then
return ''
end
return mw.ustring.format( '<li style="line-height: inherit; margin: 0">%s</li>', data )
end
-- Returns an array containing the keys of all positional arguments
-- that contain data (i.e. non-whitespace values).
local function getArgNums( args )
local nums = {}
for k, v in pairs( args ) do
if type( k ) == 'number' and
k >= 1 and
math.floor( k ) == k and
type( v ) == 'string' and
mw.ustring.match( v, '%S' ) then
table.insert( nums, k )
end
end
table.sort( nums )
return nums
end
-- Formats a list of classes, styles or other attributes.
local function formatAttributes( attrType, ... )
local attributes = { ... }
local nums = getArgNums( attributes )
local t = {}
for i, num in ipairs( nums ) do
table.insert( t, attributes[ num ] )
end
if #t == 0 then
return '' -- Return the blank string so concatenation will work.
end
return mw.ustring.format( ' %s="%s"', attrType, table.concat( t, ' ' ) )
end
-- TODO: use Module:List. Since the update for this comment is routine,
-- this is blocked without a consensus discussion by
-- [[MediaWiki_talk:Common.css/Archive_15#plainlist_+_hlist_indentation]]
-- if we decide hlist in plainlist in this template isn't an issue, we can use
-- module:list directly
-- [https://en.wikipedia.org/w/index.php?title=Module:Collapsible_list/sandbox&oldid=1130172480]
-- is an implementation (that will code rot slightly I expect)
local function buildList( args )
-- Get the list items.
local listItems = {}
local argNums = getArgNums( args )
for i, num in ipairs( argNums ) do
table.insert( listItems, getListItem( args[ num ] ) )
end
if #listItems == 0 then
return ''
end
listItems = table.concat( listItems )
-- hack around mw-collapsible show/hide jumpiness by looking for text-alignment
-- by setting a margin if centered
local textAlignmentCentered = 'text%-align%s*:%s*center'
local centeredTitle = (args.title_style and args.title_style:lower():match(textAlignmentCentered)
or args.titlestyle and args.titlestyle:lower():match(textAlignmentCentered))
local centeredTitleSpacing
if centeredTitle then
centeredTitleSpacing = 'margin: 0 4em'
else
centeredTitleSpacing = ''
end
-- Get class, style and title data.
local collapsibleContainerClass = formatAttributes(
'class',
'collapsible-list',
'mw-collapsible',
not args.expand and 'mw-collapsed'
)
local collapsibleContainerStyle = formatAttributes(
'style',
-- mostly work around .infobox-full-data defaulting to centered
'text-align: left;',
args.frame_style,
args.framestyle
)
local collapsibleTitleStyle = formatAttributes(
'style',
'line-height: 1.6em; font-weight: bold;',
args.title_style,
args.titlestyle
)
local jumpyTitleStyle = formatAttributes(
'style',
centeredTitleSpacing
)
local title = args.title or 'List'
local ulclass = formatAttributes( 'class', 'mw-collapsible-content', args.hlist and 'hlist' )
local ulstyle = formatAttributes(
'style',
'margin-top: 0; margin-bottom: 0; line-height: inherit;',
not args.bullets and 'list-style: none; margin-left: 0;',
args.list_style,
args.liststyle
)
local hlist_templatestyles = ''
if args.hlist then
hlist_templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
end
-- Build the list.
return mw.ustring.format(
'%s<div%s%s>\n<div%s><div%s>%s</div></div>\n<ul%s%s>%s</ul>\n</div>',
hlist_templatestyles, collapsibleContainerClass, collapsibleContainerStyle,
collapsibleTitleStyle, jumpyTitleStyle, title, ulclass, ulstyle, listItems
)
end
function p.main( frame )
local origArgs
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
for k, v in pairs( frame.args ) do
origArgs = frame.args
break
end
else
origArgs = frame
end
local args = {}
for k, v in pairs( origArgs ) do
if type( k ) == 'number' or v ~= '' then
args[ k ] = v
end
end
return buildList( args )
end
return p
5b7e779e7529bcb12a219726ef6c948ea98874fd
Module:Location map/data/USA Minnesota/doc
828
1639
2995
2023-07-13T19:05:32Z
wikipedia>JJMC89 bot III
0
Moving [[:Category:Minnesota location map templates]] to [[:Category:Minnesota location map modules]] per [[Wikipedia:Categories for discussion/Speedy]]
wikitext
text/x-wiki
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{high-use| 3782 }}{{Module:Location map/data/doc
|image=[[File:Map of Minnesota NA.png|thumb|400px|Map of Minnesota (click on map to see larger image)]]
|examples=
=== Location map ===
{{Location map | USA Minnesota
| width = 250
| lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N
| lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W
| label = Saint Paul
}}
<pre style="width:40em">
{{Location map | USA Minnesota
| width = 250
| lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N
| lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W
| label = Saint Paul
}}
</pre>
{{clear}}
=== Location map many ===
{{Location map many | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet
| lat2 = 43.502 | long2 = -93.488 | label2 = Emmons
| lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks
| lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point
}}
<pre style="width:40em">
{{Location map many | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet
| lat2 = 43.502 | long2 = -93.488 | label2 = Emmons
| lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks
| lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point
}}
</pre>
{{clear}}
=== Location map+ ===
{{Location map+ | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| places =
{{Location map~ | USA Minnesota
| lat = 49.345 | long = -95.063 | label = Angle Inlet
}}
{{Location map~ | USA Minnesota
| lat = 43.502 | long = -93.488 | label = Emmons
}}
{{Location map~ | USA Minnesota
| lat = 47.930 | long = -97.024 | label = East Grand Forks
}}
{{Location map~ | USA Minnesota
| lat = 48.005 | long = -89.492 | label = Pigeon Point
}}
}}
<pre style="width:40em">
{{Location map+ | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| places =
{{Location map~ | USA Minnesota
| lat = 49.345 | long = -95.063 | label = Angle Inlet
}}
{{Location map~ | USA Minnesota
| lat = 43.502 | long = -93.488 | label = Emmons
}}
{{Location map~ | USA Minnesota
| lat = 47.930 | long = -97.024 | label = East Grand Forks
}}
{{Location map~ | USA Minnesota
| lat = 48.005 | long = -89.492 | label = Pigeon Point
}}
}}
</pre>
{{clear}}
|see also=
* [[Module:Location map/data/USA]]
}}
<includeonly>
<!-- Categories go here -->
{{DEFAULTSORT:Minnesota, Location map USA}}
[[Category:Minnesota location map modules| ]]
</includeonly>
832b31c167acdd324bb1673432ae8fcb8192fedd
Template:Infobox university/doc
10
1485
2820
2023-07-14T12:42:58Z
w>ElKevbo
0
please don't edit the documentation for the template unless the template has been changed
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --><!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Location map|Module:Check for unknown parameters}}
{{Parameter names example
|name |native_name <!--|native_name_lang--> |image |image_size |image_alt |image_upright |caption
|latin_name |other_name={{{other_name}}} ''or'' {{{other_names}}} |former_name={{{former_name}}} ''or'' {{{former_names}}}
|motto |motto_lang |mottoeng |top_free |top_free_label |type |established |closed |founder={{{founder}}} or {{{founders}}} |parent |accreditation |affiliation |religious_affiliation |academic_affiliation |endowment |budget |officer_in_charge |chair| |chairman |chairperson |visitor |chancellor |president |vice_president |superintendent |vice_chancellor |provost |rector |principal
|director |dean |head_label |head |academic_staff |total_staff |students |enrollment |undergrad |postgrad |doctoral |other_students
|location={{{location}}}<br/>{{nowrap|''or'' {{{address}}} ''(optional)''<br/>{{{city}}}, {{{state}}},<br/>{{{province}}},<br/>{{{postalcode}}} ''or''<br/> {{{zipcode}}} ''(optional)''<br/>{{{country}}}}} |coordinates |campus_type |campus_size |language |free_label|free
|colors={{{colors}}} ''or'' {{{colours}}} |sports_nickname |sporting_affiliations |mascot={{{mascot}}} ''or'' {{{mascots}}} |sports_free_label |sports_free |website |logo |logo_size |logo_upright |logo_alt |nrhp={{{nrhp}}} ''or'' {{{embedded}}}
<!--|pushpin_map |pushpin_label_position |map_size |pushpin_map_caption |latitude |latm |latd |latNS |longitude |longm |longd |longEW-->
|footnotes = {{{pushpin_map}}}<br/>{{{footnotes}}}
}}
{{Template link general|Infobox university}} is an [[Help:Infobox|infobox]] for articles about universities and colleges; see [[Wikipedia:College and university article guideline]].
== Parameters ==
All fields are optional. Remove hidden notes (including both the <code><nowiki><!--</nowiki></code> and <code><nowiki>--></nowiki></code> characters) that surround certain entries, in order for the data you enter to appear in the published article. All parameter names '''''must''''' be [[lowercase]].
=== Full syntax ===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox university
| name =
| native_name =
| native_name_lang =
| image =
| image_upright =
| image_alt =
| caption =
| latin_name =
| other_name = <!-- or |other_names= -->
| former_name = <!-- or |former_names= -->
| motto =
| motto_lang =
| mottoeng =
| top_free_label = <!-- up to |top_free_label2= -->
| top_free = <!-- up to |top_free2= -->
| type =
| established = <!-- {{Start date|YYYY|MM|DD}} -->
| closed = <!-- {{End date|YYYY|MM|DD}} -->
| founder = <!-- or |founders= -->
| parent =
| accreditation =
| affiliation =
| religious_affiliation =
| academic_affiliation = <!-- or |academic_affiliations= -->
| endowment =
| budget =
| officer_in_charge =
| chair =
| chairman =
| chairperson =
| visitor =
| chancellor =
| president =
| vice_president =
| superintendent =
| vice_chancellor =
| provost =
| rector =
| principal =
| director =
| dean =
| head_label =
| head =
| academic_staff =
| total_staff =
| students = <!-- or |enrollment= -->
| undergrad =
| postgrad =
| doctoral =
| other_students = <!-- or |other= -->
| address = <!-- Please discuss before using -->
| city =
| state =
| province =
| country =
| postalcode = <!-- or |zipcode= or |postcode= -->
| coordinates = <!-- {{Coord|LAT|LON|type:edu|display=inline,title}} -->
| campus_type =
| campus_size = <!-- use {{Convert}} -->
| language = <!-- Principal language(s) of instruction used in the institution -->
| free_label = <!-- up to |free_label2= -->
| free = <!-- up to |free2= -->
| colors = <!--or |colours= -->
| sports_nickname = <!--or |athletics_nickname= -->
| sporting_affiliations =
| mascot = <!--or |mascots= -->
| sports_free_label = <!-- up to |sports_free_label3= -->
| sports_free = <!-- up to |sports_free3= -->
| website = <!-- {{URL|example.com}} -->
| logo =
| logo_size =
| logo_upright =
| logo_alt =
| embedded = <!-- or |nrhp= or |module= -->
| pushpin_map =
| pushpin_label_position =
| map_size =
| pushpin_map_caption =
| footnotes =
}}
</syntaxhighlight>
=== Custom blank/free parameters ===
Note how the 10 customized free-data parameters (or blank label/data pairs) are shown in 3 parts of the infobox as upper/middle/bottom: upper (as "top_free_label=" with "top_free=" to "top_free2"), or middle (as "free_label=" with "free=" to "free2") or bottom (as "sports_free_label=" with "sports_free=" to "sports_free3"). Those 10 custom parameters allow speciality field labels and data values for 10 extra parameter label/data pairs. Also any of those 10 custom fields could be mere note labels, with text, to briefly explain nearby parameters, or link footnotes, without cluttering the other label/data pairs. A custom label can be set blank to hide as with "free_label=&nbsp;" to show only the data portion, with hidden label.
=== Microformat ===
{{UF-hcard-org|age=no}}
== Example ==
{{Infobox university
| name = University of Illyria
| native_name = Universiti von Illyria
| native_name_lang = de
| other_name = UI
| image = Dabney-minimalist-vector.svg
| image_upright = 0.7
| image_alt = scroll atop shield outline
| caption = Seal of University of Illyria
| latin_name = Universitas Illyriensis
| former_name = Utopian University
| motto = ''Melior a lepidus fossor quam a stultus lepor lepos''
| motto_lang = la
| mottoeng = "Better a witty fool than a foolish wit"
| established = {{Start date|1666}}
| closed = {{End date|1850}}
| type = [[Public university|Public]]
| accreditation = Southwest Illyrian Accreditation Commission
| religious_affiliation = Church of Illyria
| endowment = US$ 123,456,789
| visitor= [[John Doe]]
| chancellor = [[Jane Doe]]
| vice_chancellor = John Doe
| rector = John Doe
| head_label = [[Rector (academia)|Rectrix Magnifica]]
| head = Jane Doe
| academic_staff = 300
| total_staff = 900
| students = 10,000
| undergrad = 5,000
| postgrad = 1,000
| doctoral = 100
| other_students = 1,200{{Sup|a}}
| city = [[Illyria]]
| state = [[Illyria]]
| country = [[Utopia]]
| coordinates = {{Coord|12.34|-98.76|type:edu|display=inline}}
| campus_type = Rural
| campus_size = {{Convert|47|acre}}
| colours = {{Color box|red}}{{Color box|blue}} Red and blue
| sports_nickname = The Nematodes
| mascot = Nobby the Nematode
| sporting_affiliations = [[Utopian Athletic League]]
| website = {{URL|www.illyria.edu}}
| logo = EUSP logo lowres.jpg
| logo_size = 50px
| logo_alt = Spiral on stripes
| footnotes = <hr />
<div style="text-align: left;">
{{Sup|a}} [[Further education]].<br />
</div>
Note: This university is completely fictional.
}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox university
| name = University of Illyria
| native_name = Universiti von Illyria
| native_name_lang = de
| other_name = UI
| image = Dabney-minimalist-vector.svg
| image_upright = 0.7
| image_alt = scroll atop shield outline
| caption = Seal of University of Illyria
| latin_name = Universitas Illyriensis
| former_name = Utopian University
| motto = ''Melior a lepidus fossor quam a stultus lepor lepos''
| motto_lang = la
| mottoeng = "Better a witty fool than a foolish wit"
| established = {{Start date|1666}}
| closed = {{End date|1850}}
| type = [[Public university|Public]]
| religious_affiliation = Church of Illyria
| endowment = US$ 123,456,789
| chancellor = [[Jane Doe]]
| vice_chancellor = John Doe
| rector = Fr. Doe
| head_label = [[Visitor]]
| head = [[John Doe|Archbishop Doe]]
| academic_staff = 300
| total_staff = 900
| students = 10,000
| undergrad = 5,000
| postgrad = 1,000
| doctoral = 100
| other_students = 1,200{{Sup|a}}
| city = [[Illyria]]
| state = [[Illyria]]
| country = [[Utopia]]
| coordinates = {{Coord|12.34|-98.76|type:edu|display=inline}}
| campus_type = Rural
| campus_size = {{Convert|47|acre}}
| colours = {{Color box|red}}{{Color box|blue}} Red and blue
| sports_nickname = The Nematodes
| mascot = Nobby the Nematode
| sporting_affiliations = [[Utopian Athletic League]]
| website = {{URL|www.illyria.edu}}
| logo = EUSP logo lowres.jpg
| logo_size = 50px
| logo_alt = Spiral on stripes
| footnotes = <hr />
<div style="text-align: left;">
{{Sup|a}} [[Further education]].<br />
</div>
Note: This university is completely fictional.
}}
</syntaxhighlight>
== TemplateData ==
{{TemplateData header}}
{{Clear|right}}
<templatedata>{
"description": "An infobox for articles about universities and colleges.",
"format": "{{_\n | ______________________ = _\n}}",
"paramOrder": [
"name",
"native_name",
"native_name_lang",
"image",
"image_size",
"image_upright",
"image_alt",
"caption",
"latin_name",
"other_name",
"former_name",
"motto",
"motto_lang",
"mottoeng",
"top_free_label",
"top_free",
"top_free_label1",
"top_free1",
"top_free_label2",
"top_free2",
"type",
"established",
"closed",
"founder",
"parent",
"accreditation",
"affiliation",
"religious_affiliation",
"academic_affiliation",
"endowment",
"budget",
"officer_in_charge",
"chair",
"chairman",
"chairperson",
"visitor",
"chancellor",
"president",
"vice_president",
"superintendent",
"vice_chancellor",
"provost",
"rector",
"principal",
"director",
"dean",
"head_label",
"head",
"academic_staff",
"administrative_staff",
"total_staff",
"students",
"undergrad",
"postgrad",
"doctoral",
"alumni",
"other",
"address",
"city",
"state",
"province",
"postalcode",
"country",
"location",
"coordinates",
"campus_type",
"campus_size",
"language",
"free_label",
"free",
"free_label1",
"free1",
"free_label2",
"free2",
"colors",
"sports",
"sporting_affiliations",
"sports_nickname",
"mascot",
"sports_free_label",
"sports_free",
"sports_free_label1",
"sports_free1",
"sports_free_label2",
"sports_free2",
"sports_free_label3",
"sports_free3",
"logo",
"logo_upright",
"logo_alt",
"logo_size",
"website",
"footnotes",
"module",
"pushpin_map",
"pushpin_map_caption",
"map_size",
"pushpin_label_position"
],
"params": {
"name": {
"suggested": true,
"type": "string",
"label": "Name (in English)",
"description": "Official name in English."
},
"native_name": {
"type": "string",
"label": "Native name",
"description": "Name in institution's native language."
},
"native_name_lang": {
"type": "string",
"label": "Native name language",
"description": "[[List of ISO 639-2 codes|ISO 639-2 code]], e.g. 'fr' for French."
},
"other_name": {
"type": "line",
"aliases": [
"other_names"
],
"label": "Current alternative names",
"description": "For any alternative ''current'' names by which the university is known, such as acronyms and abbreviations."
},
"former_name": {
"type": "line",
"aliases": [
"former_names"
],
"label": "Former names",
"description": "Former name(s) of the institution."
},
"image": {
"type": "wiki-file-name",
"label": "Image name",
"description": "Institution-related graphic, preferably the official seal or logo. Use the image filename without File: namespace prefix. Sizes the image to the user's preference by default.",
"aliases": [
"image_name"
],
"suggested": true
},
"image_upright": {
"type": "line",
"label": "Image scaling (\"upright\")",
"description": "Scaling factor for the image, such as 0.7. The actual size is the scaling factor multiplied by the user's thumbnail size.",
"example": "0.7"
},
"image_size": {
"type": "line",
"label": "Image size",
"description": "Use in conjunction with Image. Allows editors to specify an image width rather than use the default.",
"example": "120px"
},
"image_alt": {
"type": "string",
"label": "Alternative text for image",
"description": "Alt text for image, for visually impaired readers. This should not contain wiki syntax, and should not duplicate the caption. See [[WP:ALT]]."
},
"caption": {
"type": "content",
"label": "Caption",
"description": "Caption text for the infobox image. May include wiki syntax."
},
"latin_name": {
"type": "line",
"label": "Latin name",
"description": "University name in Latin, if commonly referenced."
},
"motto": {
"type": "string",
"label": "Motto",
"description": "University's motto; usually in Latin."
},
"motto_lang": {
"type": "line",
"label": "Motto language",
"description": "If the motto is not in English, the [[List of ISO 639-2 codes|ISO 639-2 code]] for its language (e.g. \"la\" for Latin). If more than one, use Template:Lang instead."
},
"mottoeng": {
"type": "string",
"label": "Motto (in English)",
"description": "University's motto in English if another language is used above."
},
"top_free_label": {
"type": "line",
"label": "Top free label",
"description": "First custom special label of upper infobox. The data for this field goes in parameter top_free."
},
"top_free": {
"type": "string",
"label": "Top free",
"description": "First custom data field of upper infobox. The name of this field goes in parameter top_free_label."
},
"top_free_label1": {
"type": "line",
"label": "Top free label1",
"description": "Next custom special label1 of upper infobox. The data for this field goes in parameter top_free1."
},
"top_free1": {
"type": "string",
"label": "Top free1 data",
"description": "Next custom data1 field of upper infobox. The name of this field goes in parameter top_free_label1."
},
"top_free_label2": {
"type": "line",
"label": "Top free label2",
"description": "Next custom label2 of upper infobox. The data for this field goes in parameter top_free2."
},
"top_free2": {
"type": "string",
"label": "Top free2 data",
"description": "Next custom data2 field of upper infobox. The name of this field goes in parameter top_free_label2."
},
"established": {
"suggested": true,
"type": "content",
"label": "Date established",
"description": "Date of establishment/founding formatted as parameters to Template:Start date; give year if no exact date is available.",
"example": "{{Start date|1859|02|14}}"
},
"closed": {
"type": "line",
"description": "For former institutions, provide the date of closure. Give year if no exact date is available. Use the template {{tl|End date}}.",
"label": "Date closed"
},
"founder": {
"type": "line",
"label": "Founder",
"description": "Name of the person(s) who founded the institution, if commonly mentioned.",
"aliases": [
"founders"
]
},
"type": {
"type": "content",
"description": "General type of the institution. Include public vs. private, single-gender, for-profit status (assumed non-profit if omitted), undergraduate vs. graduate, vocational focus (e.g. business school), etc.",
"label": "Type",
"example": "[[Private university|Private]] [[women's college|women's]] [[liberal arts college]]; [[Public university|Public]] [[research university]]; [[Private university|Private]] [[Proprietary education|for-profit]] [[law school]]",
"suggested": true
},
"parent": {
"type": "line",
"label": "Parent institution",
"description": "Name of any parent institution (e.g. for some colleges, a university)."
},
"accreditation": {
"type": "line",
"label": "Accreditation",
"description": "Institution-wide [[Higher education accreditation|accreditor(s)]]. Can alternatively be placed in the external links section, but mandatory for infobox if unaccredited."
},
"affiliation": {
"type": "line",
"label": "Affiliation",
"description": "Organizations of which the institution is a member and provide [[Wikipedia:Defining|essential definition]] of the institution's core mission and values. Academic and religious affiliations should be placed in those parameters.",
"aliases": [
"affiliations"
]
},
"religious_affiliation": {
"type": "line",
"label": "Religious affiliation",
"description": "Use if the institution has an official or strong de facto religious affiliation."
},
"academic_affiliation": {
"type": "line",
"label": "Academic affiliation",
"description": "Academic organizations of which the institution is a member and provide [[Wikipedia:Defining|essential definition]] of the institution (mission, values, activities, etc.).",
"aliases": [
"academic_affiliations"
]
},
"endowment": {
"type": "line",
"label": "Endowment",
"description": "[[Financial endowment]] value."
},
"budget": {
"type": "line",
"label": "Budget",
"description": "Total annual budget / expenditures."
},
"rector": {
"type": "line",
"label": "Rector",
"description": "Rector of the institution."
},
"officer_in_charge": {
"type": "line",
"label": "Officer in Charge",
"description": "Officer in Charge of the institution."
},
"chair": {
"type": "line",
"label": "Chair",
"description": "Chair of the institution."
},
"chairman": {
"type": "line",
"label": "Chairman",
"description": "Chairman of the institution. Per [[MOS:GNL]], use only if the title is official; otherwise use chairperson or chair fields."
},
"chairperson": {
"type": "line",
"label": "Chairperson",
"description": "Chairperson of the institution."
},
"visitor": {
"type": "line",
"label": "Visitor",
"description": "Visitor of the institution. This refers to the position of [[visitor]] under charities law in common law countries. It should only be used if this is a position with actual authority."
},
"chancellor": {
"type": "line",
"label": "Chancellor",
"description": "Chancellor of the institution."
},
"president": {
"type": "line",
"label": "President",
"description": "President of the institution."
},
"vice_president": {
"type": "line",
"label": "Vice President",
"description": "Vice President of the institution. Should only be used where this is the chief executive officer of the institution (i.e. the president is a ceremonial role), not where the vice president is a deputy."
},
"superintendent": {
"type": "line",
"label": "Superintendent",
"description": "Superintendent of the institution."
},
"vice_chancellor": {
"type": "line",
"label": "Vice Chancellor",
"description": "Vice Chancellor of the institution. Should only be used where this is the chief executive officer of the institution (i.e. the chancellor is a ceremonial role), not where the vice chancellor is a deputy."
},
"provost": {
"type": "line",
"label": "Provost",
"description": "Provost of the institution. Should only be used where this is the chief executive officer of the institution, not where the provost is a deputy."
},
"principal": {
"type": "line",
"label": "Principal",
"description": "Principal of the institution."
},
"dean": {
"type": "line",
"label": "Dean",
"description": "Dean of the institution. Should only be used where this is the chief executive officer of the institution, not where the dean is a deputy."
},
"director": {
"type": "line",
"label": "Director",
"description": "Director of the institution."
},
"head_label": {
"type": "line",
"label": "Head label",
"description": "Another officer title of someone essential to understanding the institution. Use with the Head Name field. For compound titles (e.g. Vice Chancellor and President), use either this field or the field corresponding to whichever individual title in the compound is most appropriate."
},
"head": {
"type": "line",
"label": "Head name",
"description": "The name of the officer serving in the role defined by the Head label field."
},
"academic_staff": {
"type": "line",
"label": "# of academic staff",
"description": "Number of [[Faculty (academic staff)|faculty]] / academic staff members. (include number formatting e.g. 1,234,567,890) If giving [[Full-time equivalent|FTE]], label as such.",
"aliases": [
"faculty"
]
},
"administrative_staff": {
"type": "line",
"label": "# of administrative staff",
"description": "Number of administrative / support staff. (include number formatting e.g. 1,234,567,890) Discouraged unless it is precisely defined in the reference; use total_staff instead. If giving [[Full-time equivalent|FTE]], label as such."
},
"total_staff": {
"label": "# of total staff",
"description": "Total number of employees of the institution, including academic staff (faculty), administrative staff, and others. (include number formatting e.g. 1,234,567,890) If giving [[Full-time equivalent|FTE]], label as such.",
"type": "line"
},
"students": {
"type": "line",
"label": "# of students",
"description": "Total student count. Use undergrad, postgrad, doctoral and other for additional detail. (format amount, as 1,234,567,890 instead of 1234567890)",
"aliases": [
"enrollment"
]
},
"undergrad": {
"type": "line",
"label": "# of undergrads",
"description": "Total [[undergraduate]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)"
},
"postgrad": {
"type": "line",
"label": "# of postgrads",
"description": "Total [[postgraduate]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)"
},
"doctoral": {
"type": "line",
"label": "# of doctorals",
"description": "Total [[doctoral student]] enrollment. (include number formatting e.g. 1,234,567,890 instead of 1234567890)"
},
"other": {
"type": "string",
"label": "Other enrollment",
"description": "Number of students enrolled in another capacity. Specify a category if possible. (include number formatting e.g. 1,234,567,890 instead of 1234567890)",
"aliases": [
"other_students"
]
},
"address": {
"required": false,
"type": "line",
"label": "Address",
"description": "Street address at which the institution is located, if applicable. Use only for institutions with a single campus which has a discreet address; omit otherwise."
},
"city": {
"suggested": true,
"type": "line",
"label": "City",
"description": "City in which the institution is located. Provide wikilink if possible."
},
"state": {
"type": "line",
"label": "State",
"description": "U.S. state or similar administrative subdivision in which the institution is located. Use in conjunction with the Country field, and do not use with the Province field. Provide wikilink if possible.",
"aliases": [
"canton",
"prefecture",
"region"
]
},
"province": {
"type": "line",
"label": "Province",
"description": "For all other administrative subdivisions; use as an alternative to the State field in conjunction with the Country field."
},
"postalcode": {
"required": false,
"aliases": [
"postcode",
"zipcode"
],
"type": "line",
"label": "Postal code",
"description": "Postal code for the institution. Use is optional. May not be applicable for institutions with multiple campuses."
},
"country": {
"type": "line",
"label": "Country",
"description": "Country in which the institution is based. Use in conjunction with city and, optionally, state or province. [[MOS:OVERLINK|Do ''not'' wikilink]] for major countries.",
"suggested": true
},
"location": {
"label": "Location",
"type": "string",
"description": "Location of the institution. Overrides the more specific fields (Address, City, etc.); use only if not possible to give the location through those."
},
"coordinates": {
"type": "content",
"label": "Coordinates",
"description": "Displays coordinates, in parentheses, after the location fields. Use Template:Coord with |type:edu and |display=inline,title.",
"aliases": [
"coor"
],
"suggested": true
},
"campus_type": {
"aliases": [
"campus"
],
"label": "Campus type",
"description": "Type/nature of the institution's campus (e.g. urban, rural, multiple sites).",
"type": "line",
"suggested": true
},
"campus_size": {
"label": "Campus size",
"description": "Area owned by the institution, typically in acres. Use {{convert}}.",
"example": "{{Convert|47|acre}}",
"type": "content",
"suggested": true
},
"language": {
"type": "content",
"label": "Instruction language",
"description": "Language commonly used for instruction; use only if not obvious from location",
"example": "[[English language|English]]"
},
"free_label": {
"type": "line",
"label": "Free label",
"description": "A special field title; use with the Free data field."
},
"free": {
"type": "string",
"label": "Free data",
"description": "Related data that goes with the Free label field."
},
"free_label1": {
"type": "line",
"label": "Free label1",
"description": "Next middle custom specialty field label; labels the free data 1 field."
},
"free1": {
"type": "string",
"label": "Free data1",
"description": "Data by Free label 1 field."
},
"free_label2": {
"type": "line",
"label": "Free label2",
"description": "Next middle custom specialty field label."
},
"free2": {
"type": "string",
"label": "Free data2",
"description": "Data by Free Label2 field."
},
"sports": {
"type": "string",
"label": "Sports",
"description": "List of primary university sports",
"aliases": [
"athletics"
],
"deprecated": "Always replace with 'sporting_affiliations' or 'sports_nickname' parameters."
},
"mascot": {
"type": "line",
"aliases": [
"mascots"
],
"label": "Mascot",
"description": "Institution's athletic mascot."
},
"sporting_affiliations": {
"type": "content",
"label": "Sporting affiliations",
"description": "List of sporting affiliations and memberships. Provide wikilink if possible; (use the Plainlist or Ublist templates).",
"example": "[[National Collegiate Athletic Association|NCAA]] [[Division III (NCAA)|Division III]] – [[Southern California Intercollegiate Athletic Conference|SCIAC]]",
"aliases": [
"athletics_affiliations"
]
},
"sports_free_label": {
"type": "line",
"label": "Sports free label",
"description": "First custom field label title near bottom of infobox; use with Sports-Free field."
},
"sports_free": {
"type": "string",
"label": "Sports free data",
"description": "First bottom custom data field; use with Sports Free label field."
},
"sports_free_label1": {
"type": "line",
"label": "Sports free1 label",
"description": "Next bottom custom label; use with Sports-Free1 field."
},
"sports_free1": {
"type": "string",
"label": "Sports free1 data",
"description": "Next bottom custom data field; use with Sports Free1 label."
},
"sports_free_label2": {
"type": "line",
"label": "Sports free2 label",
"description": "Next bottom custom label; use with Sports-Free2 field."
},
"sports_free2": {
"type": "string",
"label": "Sports free2 data",
"description": "Next custom data field; use with Sports Free2 label."
},
"sports_free_label3": {
"type": "line",
"label": "Sports free3 label",
"description": "Next bottom custom label; use with Sports-Free3 field."
},
"sports_free3": {
"type": "string",
"label": "Sports free3 data",
"description": "Next custom data field; use with Sports Free3 label."
},
"website": {
"type": "content",
"label": "Website URL",
"description": "URL of the official website of the institution, formatted as the sole unnamed parameter to the URL template.",
"suggested": true,
"example": "{{URL|https://oregonstate.edu/}}"
},
"logo": {
"type": "wiki-file-name",
"label": "Logo",
"description": "Use for an athletics logo, corporate emblem, or similar graphic. Omit \"File:\""
},
"footnotes": {
"type": "content",
"label": "Footnotes",
"description": "Footnotes for the infobox. Useful for including references for data."
},
"pushpin_map": {
"description": "See Template:Location map documentation."
},
"logo_size": {
"label": "logo_size",
"type": "string"
},
"logo_upright": {
"label": "logo_upright",
"type": "line"
},
"logo_alt": {
"label": "logo_alt",
"type": "string"
},
"alumni": {
"label": "Alumni",
"type": "number",
"description": "Number of alumni of the institution.",
"deprecated": "Remove from infobox and note the number of alumni in the article body."
},
"pushpin_map_caption": {
"description": "Contextual information to display beneath the map, defaults to \"Location in <map name>\"",
"type": "string",
"label": "Map caption"
},
"map_size": {
"description": "Map width in pixels; do not include unit suffix (px).",
"label": "Map width",
"example": "285",
"type": "number"
},
"pushpin_label_position": {
"description": "Determines position of displayed name relative to map pushpin, defaults to left or right, whichever is opposite the half the pin is in.",
"label": "Map pin label position",
"example": "top",
"type": "line",
"suggestedvalues": [
"left",
"right",
"top",
"bottom",
"none"
]
},
"module": {
"aliases": [
"embedded",
"nrhp"
],
"label": "NRHP or module",
"description": "Module embedded in the infobox, such as [[Template:Infobox NRHP]]. Add only information not already covered elsewhere in the infobox, and consider placing NRHP infobox in campus section.",
"example": "{{Infobox NRHP\n | embed = yes\n | nrhp_type = hd\n | architect = [[Gordon B. Kaufman]]\n | architecture = [[Spanish Colonial Revival]], [[Mediterranean Revival]]\n | added = September 20, 1984\n | area = {{convert|17.5|acre}}\n | refnum = 84000887\n}}",
"type": "content"
},
"sports_nickname": {
"aliases": [
"athletics_nicknames",
"sports_nicknames",
"athletics_nickname",
"nickname"
],
"label": "Athletic nickname",
"description": "Institution's athletic nickname or moniker. The 'nickname' alias is deprecated and should be replaced.",
"type": "line"
},
"colors": {
"aliases": [
"colours"
],
"label": "Official colo(u)rs",
"description": "Official colors of the institution. Your choice of parameter name (color or colour) will appear in the table; use the one appropriate to the institution's location.",
"example": "{{Color box|#20438f}}{{Color box|#fff}} Blue and white",
"type": "content"
}
}
}</templatedata>
== Tracking categories ==
* {{Category link with count|Articles using infobox university}}
* {{Category link with count|Pages using infobox university with the affiliations parameter}}
* {{Category link with count|Pages using infobox university with the image name parameter}}
* {{Category link with count|Pages using infobox university with the superintendent parameter}}
<!-- * {{Category link with count|Pages using infobox university with the sports parameter}} -->
* {{Category link with count|Pages using infobox university with the nickname alias}}
* {{Category link with count|Pages using infobox university with unknown parameters}}
* {{Category link with count|Pages using infobox university with conflicting parameters}}
{{Organization infoboxes}}<includeonly>
{{Sandbox other||
<!--Eponymous categories:-->
[[Category:Universities and colleges infobox templates| ]]
<!--Other categories:-->
[[Category:Organization infobox templates|University]]
[[Category:Templates that add a tracking category]]
[[Category:Templates with coordinates fields]]
[[Category:WikiProject Higher education templates]]
}}</includeonly>
187a81d3fb282b737be8683a46eb12101230aeaf
Template:Infobox UK place/styles.css
10
1409
2744
2023-07-15T18:49:14Z
w>Keith D
0
Add .ib-uk-place .mergedrow .infobox-header, to fix problem of blank section when using embed
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-uk-place {
border-collapse: collapse;
}
.ib-uk-place .infobox-label {
width: 40%;
}
.ib-uk-place .infobox-header {
text-align: left;
}
.ib-uk-place .infobox-above {
font-size: 1.25em;
}
.ib-uk-place-other-names {
font-size: 78%;
}
.ib-uk-place .infobox-subheader {
background-color: #cddeff;
font-weight: bold;
}
.ib-uk-place .infobox-below {
border-top: 1px solid #aaa;
padding-top: 3px;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-uk-place td,
.ib-uk-place th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-uk-place .mergedtoprow .infobox-label,
.ib-uk-place .mergedtoprow .infobox-data,
.ib-uk-place .mergedtoprow .infobox-full-data {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-uk-place .mergedrow .infobox-data,
.ib-uk-place .mergedrow .infobox-header,
.ib-uk-place .mergedrow .infobox-label {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-uk-place .mergedbottomrow .infobox-data,
.ib-uk-place .mergedbottomrow .infobox-full-data,
.ib-uk-place .mergedbottomrow .infobox-label {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
caa4cf885fb52780f6945278c00d26c7be5f072c
Template:Country data United Kingdom
10
1468
2803
2023-07-15T21:20:28Z
w>Skjoldbro
0
navy link
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = United Kingdom
| flag alias = Flag of the United Kingdom.svg
| flag alias-1707 = Naval ensign of Great Britain (1707–1800).svg
| flag alias-air force = Ensign of the Royal Air Force.svg
| flag alias-army = Flag of the British Army.svg
| flag alias-civil = Civil Ensign of the United Kingdom.svg
| flag alias-civil-air = Civil Air Ensign of the United Kingdom.svg
| flag alias-coast guard = Flag of Her Majesty's Coastguard.svg
| flag alias-consulate = UK-Consular.svg
| flag alias-embassy = British Ambassador Ensign.svg
| flag alias-government = Government Ensign of the United Kingdom.svg
| flag alias-marines = Flag of the Royal Marines.svg
| flag alias-military = Flag of the United Kingdom (3-5).svg
| flag alias-naval = Naval Ensign of the United Kingdom.svg
| flag alias-GS = Government Service Ensign.svg
| flag alias-merchant = Civil Ensign of the United Kingdom.svg
| flag alias-RFA = British-Royal-Fleet-Auxiliary-Ensign.svg
| flag alias-RMAS = British Royal Maritime Auxiliary Ensign.svg
| flag alias-RNLI = Flag of the Royal National Lifeboat Institution.svg
| flag alias-naval-1707 = Naval ensign of Great Britain (1707–1800).svg
| flag alias-naval-GS = Government Service Ensign.svg
| flag alias-naval-merchant = Civil Ensign of the United Kingdom.svg
| flag alias-naval-RFA = British-Royal-Fleet-Auxiliary-Ensign.svg
| flag alias-naval-RMAS = British Royal Maritime Auxiliary Ensign.svg
| flag alias-naval-RNLI = Flag of the Royal National Lifeboat Institution.svg
| flag alias-navy = Naval Ensign of the United Kingdom.svg
| link alias-air force = Royal Air Force
| link alias-army = British Army
| link alias-coast guard = His Majesty's Coastguard
| link alias-marines = Royal Marines
| link alias-military = British Armed Forces
| link alias-navy = Royal Navy
| link alias-naval = {{#switch:{{{variant|}}}
| merchant = Merchant Navy (United Kingdom){{!}}Merchant Navy
| reserve = Royal Naval Reserve
| RFA = Royal Fleet Auxiliary
| RMAS = Royal Maritime Auxiliary Service
| RNLI = Royal National Lifeboat Institution
| naval-merchant = Merchant Navy (United Kingdom){{!}}Merchant Navy
| naval-reserve = Royal Naval Reserve
| naval-RFA = Royal Fleet Auxiliary
| naval-RMAS = Royal Maritime Auxiliary Service
| naval-RNLI = Royal National Lifeboat Institution
| #default = Royal Navy
}}
| size = {{{size|}}}
| name = {{#ifeq:{{{name|}}}|Britain|United Kingdom|{{{name|}}}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = civil
| var2 = government
| var3 = 1707
| var4 = civil-air
| var5 = embassy
| var6 = consulate
| var7 = GS
| var8 = merchant
| var9 = RFA
| var10 = RMAS
| var11 = RNLI
| var12 = naval-1707
| var13 = naval-GS
| var14 = naval-merchant
| var15 = naval-RFA
| var16 = naval-RMAS
| var17 = naval-RNLI
| redir1 = UK
| redir2 = U.K.
| redir3 = the United Kingdom
| related1 = Great Britain
| related2 = London
| related3 = Kingdom of Great Britain
| related4 = British Empire
| related5 = United Kingdom of Great Britain and Ireland
| related6 = Kingdom of England
| related7 = Kingdom of Scotland
</noinclude>
}}
f35f7e64c499db65b9894d7fb917c4c07d791aa4
Template:Navbox/doc
10
1298
2633
2023-07-16T13:47:36Z
w>Cedar101
0
/* Usage */ syntaxhighlight
wikitext
text/x-wiki
{{for|vertically-aligned navigation|Template:Sidebar}}
{{documentation subpage}}
{{high-use|all-pages=y}}
{{Template display|nomobile}}
{{Lua|Module:Navbox}}
{{Navbox suite}}
{{Lua sidebar}}
This template allows a [[Wikipedia:Navigation template|navigational template]] to be set up relatively quickly by supplying it with one or more lists of links. It comes equipped with default styles that should work for most navigational templates. Changing the default styles is possible, but not recommended. Using this template, or one of its "Navbox suite" sister templates, is highly recommended for standardization of navigational templates, and for ease of use.
{{Navbox visibility}}
== Usage ==
Please remove the parameters that are left blank.
<syntaxhighlight lang="wikitext" style="overflow: auto;">{{Navbox
| name = {{subst:PAGENAME}}{{subst:void|Don't change anything on this line. It will change itself when you save.}}
| title =
| listclass = hlist
| state = {{{state|}}}
| above =
| image =
| group1 =
| list1 =
| group2 =
| list2 =
| group3 =
| list3 =
<!-- ... -->
| below =
}}
</syntaxhighlight>
== Parameter list ==
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| title = {{{title}}}
| above = {{{above}}}
| image = {{{image}}}
| group1 = {{{group1}}}
| list1 = {{{list1}}}
| group2 = {{{group2}}}
| list2 = {{{list2}}}
| group3 = {{{group3}}}
| list3 = {{{list3}}}
| group4 = {{{group4}}}
| list4 = {{{list4}}}
| below = {{{below}}} <br /> See alternate navbox formats under: [[#Layout of table|''Layout of table'']]
}}
The navbox uses lowercase parameter names, as shown in the box (''above''). The required ''name'' and ''title'' will create a one-line box if other parameters are omitted.
Notice "group1" (etc.) is optional, as are sections named "above/below".
{{clear}}
The basic and most common parameters are as follows (see [[#Parameter descriptions|below]] for the full list):
: <code>name</code> – the name (Wikipedia location) of the template.
: <code>title</code> – text in the title bar, such as: <nowiki>[[Widget stuff]]</nowiki>.
: <code>listclass</code> – a CSS class for the list cells, usually <code>hlist</code> for horizontal lists. Alternatively, use bodyclass for the whole box.
: <code>state</code> – controls when a navbox is expanded or collapsed.
: <code>titlestyle</code> – a CSS style for the title-bar, such as: <code>background: gray;</code>
: <code>groupstyle</code> – a CSS style for the group-cells, such as: <code>background: #eee;</code>
: <code>above</code> – text to appear above the group/list section (could be a list of overall wikilinks).
: <code>image</code> – an optional right-side image, coded as the whole image, such as: <code><nowiki>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</nowiki></code>
:: Note that most of such images don't comply with [[MOS:DECOR]] and should be removed at sight.
: <code>imageleft</code> – an optional left-side image (code the same as the "image" parameter).
: <code>group<sub>n</sub></code> – the left-side text before list-n (if group-n omitted, list-n extends to the left edge of the box, and defaults to <code>text-align:center</code> styling).
: <code>list<sub>n</sub></code> – text listing wikilinks using a [[Help:List|wikilist]] format.
: <code>below</code> – optional text to appear below the group/list section.
== Parameter descriptions ==
The following is a complete list of parameters for using {{tl|Navbox}}. In most cases, the only required parameters are <code>name</code>, <code>title</code>, and <code>list1</code>, though [[Template:Navbox/doc#Child navboxes|child navboxes]] do not even require those to be set.
{{tl|Navbox}} shares numerous common parameter names with its sister templates, {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}, for consistency and ease of use. Parameters marked with an asterisk (*) are common to all three master templates.
=== Setup parameters ===
; ''name''*
: The name of the template, which is needed for the "V • T • E" ("View • Talk • Edit") links to work properly on all pages where the template is used. You can enter <code><nowiki>{{subst:PAGENAME}}</nowiki></code> for this value as a shortcut. The name parameter is only mandatory if a <code>title</code> is specified, and the <code>border</code> parameter is not set, and the <code>navbar</code> parameter is not used to disable the navbar.
; ''state''* <span style="font-weight:normal;">[<code>autocollapse, collapsed, expanded, plain, off</code>]</span>
:* Defaults to <code>autocollapse</code>. A navbox with <code>autocollapse</code> will start out collapsed if there are two or more collapsible elements on the same page. Otherwise, the navbox will be expanded. For the technically minded, see [[MediaWiki:Common.js]] (search for "autocollapse").
:* If set to <code>collapsed</code>, the navbox will always start out in a collapsed state.
:* If set to <code>expanded</code>, the navbox will always start out in an expanded state.
:* If set to <code>plain</code>, the navbox will always be expanded with no [hide] link on the right, and the title will remain centered (by using padding to offset the <small>V • T • E</small> links).
:* If set to <code>off</code>, the navbox will always be expanded with no [hide] link on the right, but no padding will be used to keep the title centered. This is for advanced use only; the "plain" option should suffice for most applications where the [show]/[hide] button needs to be hidden.
: To show the box when standalone (non-included) but then auto-hide contents when in an article, put "expanded" inside {{tag|noinclude|p}} tags. This setting will force the box to be visible when standalone (even when followed by other boxes), displaying "[hide]", but then it will auto-collapse the box when stacked inside an article:
:: <code><nowiki>| state = </nowiki></code>{{tag|noinclude|content=expanded}}
:Often times, editors will want a default initial state for a navbox, which may be overridden in an article. Here is the trick to do this:
:* In your intermediate template, create a parameter also named "state" as a pass-through like this: <pre><nowiki>| state = {{{state<includeonly>|your_desired_initial_state</includeonly>}}}</nowiki></pre>
:* The {{tag|includeonly|o}}<code>|</code> will make the template expanded when viewing the template page by itself.
:** Example 1: {{tl|Peso}} with ''autocollapse'' as the default initial state. [[Catalan peseta]] transcludes it and has only one navbox; thus, the peso navbox shows. [[Chilean peso]] has more than two navboxes; thus, the peso navbox collapses.
:** Example 2: {{tl|Historical currencies of Hungary}} with ''expanded'' as the default initial state, as such: <pre>| state = {{{state<includeonly>|expanded</includeonly>}}}</pre> All transcluding articles show the content by default, unless there is a hypothetical article that specifies <code><nowiki>{{templatename|state=collapsed}}</nowiki></code> when transcluding.
:** Example 3: {{tl|Tourism}} with ''collapsed'' as the default initial state, as such: <pre>| state = {{{state<includeonly>|collapsed</includeonly>}}}</pre> All transcluding articles will show the template as collapsed by default, but the template will still be uncollapsed when displayed on its own page.
:* The template {{tl|Collapsible option}} explains how to use the <code>state</code> parameter. It can be added to a {{tag|noinclude|p}} section after the template definition or to the instructions on the {{tl|documentation subpage}}.
; ''navbar''*
: If set to <code>plain</code>, the <span style="font-size: 88%;">V • T • E</span> links on the left side of the titlebar will not be displayed, and padding will be automatically used to keep the title centered. Use <code>off</code> to remove the <span style="font-size: 88%;">V • T • E</span> links, but not apply padding (this is for advanced use only; the "plain" option should suffice for most applications where a navbar is not desired). It is highly recommended that one not hide the navbar, in order to make it easier for users to edit the template, and to keep a standard style across pages.
; ''border''*
: ''See later section on [[#Child navboxes|using navboxes within one another]] for examples and a more complete description.'' If set to <code>child</code> or <code>subgroup</code>, then the navbox can be used as a borderless child that fits snugly in another navbox. The border is hidden and there is no padding on the sides of the table, so it fits into the ''list'' area of its parent navbox. If set to <code>none</code>, then the border is hidden and padding is removed, and the navbox may be used as a child of another container (do not use the <code>none</code> option inside of another navbox; similarly, only use the <code>child</code>/<code>subgroup</code> option inside of another navbox). If set to anything else (default), then a regular navbox is displayed with a 1px border. An alternate way to specify the border to be a subgroup style is like this (i.e. use the first unnamed parameter instead of the named ''border'' parameter):
:<pre>{{Navbox|child|...}}</pre>
=== Cells ===
; ''title''*
: Text that appears centered in the top row of the table. It is usually the template's topic, i.e. a succinct description of the body contents. This should be a single line, but if a second line is needed, use <code><nowiki>{{-}}</nowiki></code> to ensure proper centering. This parameter is technically not mandatory, but using {{tl|Navbox}} is rather pointless without a title.
; ''above''*
: A full-width cell displayed between the titlebar and first group/list, i.e. ''above'' the template's body (groups, lists and image). In a template without an image, ''above'' behaves in the same way as the ''list1'' parameter without the ''group1'' parameter.
; ''group<sub>n</sub>''*
: (i.e. ''group1'', ''group2'', etc.) If specified, text appears in a header cell displayed to the left of ''list<sub>n</sub>''. If omitted, ''list<sub>n</sub>'' uses the full width of the table.
; ''list<sub>n</sub>''*
: (i.e. ''list1'', ''list2'', etc.) The body of the template, usually a list of links. Format is inline, although the text can be entered on separate lines if the entire list is enclosed within <code><nowiki><div> </div></nowiki></code>. At least one ''list'' parameter is required; each additional ''list'' is displayed in a separate row of the table. Each ''list<sub>n</sub>'' may be preceded by a corresponding ''group<sub>n</sub>'' parameter, if provided (see below).
:Entries should be separated using a [[newline]] and an [[asterisk]] (*). If instead two asterisks are used, it provides [[Nesting (computing)|nesting]] within the previous entry by enclosing the entry with brackets. Increasing the number of asterisks used increases the number of brackets around entries.
; ''image''*
: An image to be displayed in a cell below the title and to the right of the body (the groups/lists). For the image to display properly, the ''list1'' parameter must be specified. The ''image'' parameter accepts standard wikicode for displaying an image, ''e.g.'': <pre>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</pre> nb: including "|right" will produce the usual left margin to provide separation from the list items and [[Zebra striping (computer graphics)|zebra striping]].
:Note that most of such images don't comply with [[MOS:DECOR]] and should be removed at sight. A rare example of a correct usage would be [[special:permalink/995622594|this one]]: a map shows (in green) the location of a region within the state of Kazakhstan, and this is consistently implemented for [[:category:Kazakhstan region templates|all state's regions]].
; ''imageleft''*
: An image to be displayed in a cell below the title and to the left of the body (lists). For the image to display properly, the ''list1'' parameter must be specified and no groups can be specified. It accepts the same sort of parameter that ''image'' accepts.
; ''below''*
: A full-width cell displayed ''below'' the template's body (groups, lists and image). In a template without an image, ''below'' behaves in the same way as the template's final ''list<sub>n</sub>'' parameter without a ''group<sub>n</sub>'' parameter. For an example of the ''below'' parameter in use, see {{oldid|Main Page|352612160|this}} version of {{tl|Lists of the provinces and territories of Canada}}. {{tl|icon}} is often used for non-article links, for example <code><nowiki>{{icon|category}} [[:Category:</nowiki>''name''<nowiki>|Category]]</nowiki></code>.
=== Style parameters ===
Styles are generally advised against, to maintain consistency among templates and pages in Wikipedia; but the option to modify styles is given.
; ''bodystyle''*
: Specifies [[Cascading Style Sheets|CSS]] styles to apply to the template body. This option should be used sparingly as it can lead to visual inconsistencies. Examples:
:* <code>bodystyle = background: #''nnnnnn'';</code>
:* <code>bodystyle = width: ''N'' [em/%/px or width: auto];</code>
:* <code>bodystyle = float: [''left/right/none''];</code>
:* <code>bodystyle = clear: [''right/left/both/none''];</code>
; ''basestyle''*
: CSS styles to apply to the ''title'', ''above'', ''below'', and ''group'' cells all at once. The styles are not applied to ''list'' cells. This is convenient for easily changing the basic color of the navbox without having to repeat the style specifications for the different parts of the navbox. Example: <code>basestyle = background: lightskyblue;</code>
; ''titlestyle''*
: [[Cascading Style Sheets|CSS]] styles to apply to ''title'', most often the titlebar's background color:
:* <code>titlestyle = background: ''#nnnnnn'';</code>
:* <code>titlestyle = background: ''name'';</code>
:* <code>titlestyle = background: none;</code> — for no background color
; ''groupstyle''*
: CSS styles to apply to the ''groupN'' cells. This option overrides any styles that are applied to the entire table. Examples:
:* <code>groupstyle = background: #''nnnnnn'';</code>
:* <code>groupstyle = text-align: [''left/center/right''];</code>
:* <code>groupstyle = vertical-align: [''top/middle/bottom''];</code>
; ''group<sub>n</sub>style''*
: CSS styles to apply to a specific group, in addition to any styles specified by the ''groupstyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Example: <code>group3style = background: red; color: white;</code>
; ''groupwidth''
: A number and unit specifying a uniform width for the group cells, in cases where little content in the list cells may cause group cells to be too wide. No default. However, may be overridden by the ''group(n)style'' parameter. Example: <code>groupwidth = 9em</code>
; ''liststyle''*
: CSS styles to apply to all lists. Overruled by the ''oddstyle'' and ''evenstyle'' parameters (if specified) hereafter. When using backgound colors in the navbox, see the [[#Intricacies|note hereafter]].
; ''list<sub>n</sub>style''*
: CSS styles to apply to a specific list, in addition to any styles specified by the ''liststyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Example: <code>list5style = background: #ddddff;</code>
; ''listpadding''*
: A number and unit specifying the padding in each ''list'' cell. The ''list'' cells come equipped with a default padding of 0.25em on the left and right, and 0 on the top and bottom. Due to complex technical reasons, simply setting "liststyle = padding: 0.5em;" (or any other padding setting) will not work. Examples:
:* <code>listpadding = 0.5em 0;</code> (sets 0.5em padding for the top/bottom, and 0 padding for the left/right.)
:* <code>listpadding = 0;</code> (removes all list padding.)
; ''oddstyle''
; ''evenstyle''
: Applies to odd/even list numbers. Overrules styles defined by ''liststyle''. The default behavior is to add striped colors (white and gray) to odd/even rows, respectively, in order to improve readability. These should not be changed except in extraordinary circumstances.
; ''evenodd'' <span style="font-weight: normal;"><code>[swap, even, odd, off]</code></span>
: If set to <code>swap</code>, then the automatic striping of even and odd rows is reversed. Normally, even rows get a light gray background for striping; when this parameter is used, the odd rows receive the gray striping instead of the even rows. Setting to <code>even</code> or <code>odd</code> sets all rows to have that striping color. Setting to <code>off</code> disables automatic row striping.
; ''abovestyle''*
; ''belowstyle''*
: CSS styles to apply to the top cell (specified via the ''above'' parameter) and bottom cell (specified via the ''below'' parameter). Typically used to set background color or text alignment:
:* <code>abovestyle = background: #''nnnnnn'';</code>
:* <code>abovestyle = text-align: [''left/center/right''];</code>
:* <code>belowstyle = background: #''nnnnnn'';</code>
:* <code>belowstyle = text-align: [''left/center/right''];</code>
; ''imagestyle''*
; ''imageleftstyle''*
: CSS styles to apply to the cells where the image/imageleft sits. These styles should only be used in exceptional circumstances, usually to fix width problems if the width of groups is set and the width of the image cell grows too large. Example: <code>imagestyle = width:5em;</code>
===== Default styles =====
The style settings listed here are those that editors using the navbox change most often. The other more complex style settings were left out of this list to keep it simple. Most styles are set in [[MediaWiki:Common.css]].
<syntaxhighlight lang="css">
bodystyle = background: #fdfdfd; width: 100%; vertical-align: middle;
titlestyle = background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center;
abovestyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center;
belowstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center;
groupstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: right;
liststyle = background: transparent; text-align: left/center;
oddstyle = background: transparent;
evenstyle = background: #f7f7f7;
</syntaxhighlight>
Since ''liststyle'' and ''oddstyle'' are transparent, odd lists have the color of the ''bodystyle'', which defaults to #fdfdfd (white with a hint of gray). A list defaults to <code>text-align: left;</code> if it has a group, if not it defaults to <code>text-align: center;</code>. Since only ''bodystyle'' has a vertical-align all the others inherit its <code>vertical-align: middle;</code>.
=== Advanced parameters ===
; ''bodyclass''
; ''aboveclass''
; ''groupclass''
; ''listclass''
; ''belowclass''
: This enables attaching a CSS class to group or list cells. The most common use for ''listclass'' is to give it the <code>hlist</code> class that will cause lists to render horizontally. All these parameters accept the <code>hlist</code> class, but if more than one parameter is used for <code>hlist</code>, use {{para|bodyclass|hlist}} instead.
:{{tl|navbox}} automatically adds the class <code>nowraplinks</code> which can be overridden, for example with <code>{{para|listclass|wraplinks}}</code>.
; ''innerstyle''
: A very advanced parameter to be used ''only'' for advanced meta-templates employing the navbox. Internally, the navbox uses an outer table to draw the border, and then an inner table for everything else (title/above/groups/lists/below/images, etc.). The ''style''/''bodystyle'' parameter sets the style for the outer table, which the inner table inherits, but in advanced cases (meta-templates) it may be necessary to directly set the style for the inner table. This parameter provides access to that inner table so styles can be applied. Use at your own risk.
; ''nowrapitems''
: Setting <code>|nowrapitems=yes</code> applies nowrap to each line in a list item, and to any <code>above</code> or <code>below</code> item.
; ''orphan''
: Setting <code>|orphan=yes</code> in a child navbox fixes odd/even striping and removes [[:Category:Navbox orphans]].
==== Microformats ====
; ''bodyclass''
: This parameter is inserted into the "class" attribute for the navbox as a whole.
; ''titleclass''
: This parameter is inserted into the "class" attribute for the navbox's title caption.
This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. To flag a navbox as containing [[hCard]] information about a person, for example, add the following parameter:
<pre>
| bodyclass = vcard
</pre>
''and''
<pre>
| titleclass = fn
</pre>
''or'' (for example):
<pre><nowiki>
| title = The books of <span class="fn">[[Iain Banks]]</span>
</nowiki></pre>
...and so forth.
See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general.
== Layout of table ==
===Without image, above and below===
Table generated by {{tl|Navbox}} '''without''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only):
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| liststyle = background: silver;
| title = {{{title}}}
| group1 = {{{group1}}}
| list1 = {{{list1}}}
| group2 = {{{group2}}}
| list2 = {{{list2}}}
| list3 = {{{list3}}} ''without {{{group3}}}''
| group4 = {{{group4}}}
| list4 = {{{list4}}}
}}
===With image, above and below===
Table generated by {{tl|Navbox}} '''with''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only):
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| liststyle = background: silver;
| image = {{{image}}}
| title = {{{title}}}
| above = {{{above}}}
| group1 = {{{group1}}}
| list1 = {{{list1}}}
| group2 = {{{group2}}}
| list2 = {{{list2}}}
| list3 = {{{list3}}} ''without {{{group3}}}''
| group4 = {{{group4}}}
| list4 = {{{list4}}}
| below = {{{below}}}
}}
===With image and without groups===
Table generated by {{tl|Navbox}} '''with''' ''image'', ''imageleft'', ''lists'', and '''without''' ''groups'', ''above'', ''below'' (gray list background color added for illustration only):
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| liststyle = background: silver;
| image = {{{image}}}
| imageleft = {{{imageleft}}}
| title = {{{title}}}
| list1 = {{{list1}}}
| list2 = {{{list2}}}
| list3 = {{{list3}}}
| list4 = {{{list4}}}
}}
== Examples ==
<!-- Please do not encourage folks to use <div> within Navboxes as (unless handled carefully) they can negate liststyles/groupstyles/etc. settings. -->
=== No image ===
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Navbox
| name = Navbox/doc
| title = [[MSC Malaysia]]
| listclass = hlist
| group1 = Centre
| list1 =
* [[Cyberjaya]]
| group2 = Area
| list2 =
* [[Klang Valley]]
| group3 = Major landmarks
| list3 =
* [[Petronas Twin Towers]]
* [[Kuala Lumpur Tower]]
* [[Kuala Lumpur Sentral]]
* [[Technology Park Malaysia]]
* [[Putrajaya]]
* [[Cyberjaya]]
* [[Kuala Lumpur International Airport]]
| group4 = Infrastructure
| list4 =
* [[Express Rail Link]]
* [[KL-KLIA Dedicated Expressway]]
| group5 = Prime applications
| list5 =
* [[E-Government]]
* [[MyKad]]
}}
</syntaxhighlight>
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| title = [[MSC Malaysia]]
| listclass = hlist
| group1 = Centre
| list1 =
* [[Cyberjaya]]
| group2 = Area
| list2 =
* [[Klang Valley]]
| group3 = Major landmarks
| list3 =
* [[Petronas Twin Towers]]
* [[Kuala Lumpur Tower]]
* [[Kuala Lumpur Sentral]]
* [[Technology Park Malaysia]]
* [[Putrajaya]]
* [[Cyberjaya]]
* [[Kuala Lumpur International Airport]]
| group4 = Infrastructure
| list4 =
* [[Express Rail Link]]
* [[KL-KLIA Dedicated Expressway]]
| group5 = Prime applications
| list5 =
* [[E-Government]]
* [[MyKad]]
}}
== Child navboxes ==
{{Selfref|For additional examples, see the [[Template:Navbox/testcases|Navbox testcases page]].}}
It is possible to place multiple navboxes within a single border by using "child" as the first parameter, or by setting the ''border'' parameter. The basic code for doing this is as follows (which adds a subgroup for the first group/list area):
<pre style="overflow: auto;">
{{Navbox
| name = {{subst:PAGENAME}}
| title = Title
| group1 = [optional]
| list1 = {{Navbox|child
...child navbox parameters...
}}
...
}}
</pre>
=== Subgroups example ===
This example shows two subgroups created using <code>child</code> as the first unnamed parameter. The striping is alternated automatically. To remove the striping altogether, you can set <code>liststyle = background:transparent;</code> in each of the navboxes.
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| state = uncollapsed
| title = Multiple subgroup example
| above = Above
| below = Below
| group1 = Group1
| list1 = List1
| group2 = Group2
| list2 =
{{{{PAGENAMETDOC}}|child
| group1 = Group2.1
| list1 = List1
| group2 = Group2.2
| list2 = List2
| group3 = Group2.3
| list3 = List3
}}
| group3 = Group3
| list3 = List3
| group4 = Group4
| list4 =
{{{{PAGENAMETDOC}}|child
| group1 = Group4.1
| list1 = List1
| group2 = Group4.2
| list2 = List2
| group3 = Group4.3
| list3 = List3
}}
}}
=== Multiple show/hides in a single container ===
{{main|Template:Navbox with collapsible groups}}
The example below is generated using a regular navbox for the main container, then its list1, list2, and list3 parameters each contain another navbox, with <code>1 = child</code> set. The view (v), talk (t), edit (e) navbar links are hidden using <code>navbar = plain</code> for each of them, or could be suppressed by just leaving out the ''name'' parameter (child navboxes do not require the name parameter to be set, unlike regular navboxes).
{{{{PAGENAMETDOC}}
| name = Navbox/doc
| title = [[French colonial empire|Former French overseas empire]]
| state = uncollapsed
| list1 = {{{{PAGENAMETDOC}}|child
| navbar = plain
| title = [[French colonial empire|Former French colonies]] in [[Africa]] and the [[Indian Ocean]]
| listclass = hlist
| group1 = [[Mahgreb]]
| list1 =
* [[French rule in Algeria|Algeria]]
* [[French Morocco|Morocco]] <small>([[Arguin|Arguin Island]])</small>
* [[History of Tunisia|Tunisia]]
| group2 = [[French West Africa]]
| list2 =
* [[History of Côte d'Ivoire#French Period|Côte d'Ivoire]]
* [[French Dahomey|Dahomey]]
* [[French Sudan]]
* [[French Guinea|Guinea]]
* [[History of Mauritania#French colonization and post-colonial history|Mauritania]]
* [[History of Niger#Colonization|Niger]]
* [[History of Senegal|Senegal]]
* [[French Upper Volta|Upper Volta]]
* [[French Togoland]]
* [[James Island (The Gambia)|James Island]]
| group3 = [[French Equatorial Africa]]
| list3 =
* [[Colonial Chad|Chad]]
* [[History of Gabon|Gabon]]
* [[History of the Republic of the Congo|Middle Congo]]
* [[Oubangui-Chari]]
| group4 = [[Comoros]]
| list4 =
* [[Anjouan]]
* [[Grande Comore]]
* [[Mohéli]]
* [[History of Djibouti#French Interest|French Somaliland (Djibouti)]]
* [[History of Madagascar#French control|Madagascar]]
* [[Mauritius|Ile de France]]
* [[Seychelles]]
}}
| list2 = {{{{PAGENAMETDOC}}|child
| navbar = plain
| title = [[French colonial empire|Former French colonies]] in the [[Americas]]
| listclass = hlist
| list1 =
* [[New France]]{{spaces|2}}<small>([[Acadia]], [[Louisiana (New France)|Louisiana]], [[Canada, New France|Canada]], [[Newfoundland (island)|Terre Neuve]]) 1655–1763 </small>
| list2 =
* [[Inini]]
* [[Berbice]]
* [[Saint-Domingue]]
* <small>[[Haiti]]</small>
* [[Tobago]]
* [[History of the British Virgin Islands|Virgin Islands]]
* [[France Antarctique]]
* [[France Équinoxiale]]
| below = [[French West India Company]]
}}
| list3 = {{{{PAGENAMETDOC}}|child
| navbar = plain
| title = [[French colonial empire|Former French colonies]] in [[Asia]] and [[Oceania]]
| listclass = hlist
| group1 = [[French India]]
| list1 =
* [[Chandernagor]]
* [[Coromandel Coast]]
* [[History of Chennai|Madras]]
* [[Mahé, India|Mahé]]
* [[History of Pondicherry|Pondichéry]]
* [[Karaikal]]
* [[Yanam (India)|Yanaon]]
| group2 = [[French Indochina]]
| list2 =
* [[Colonial Cambodia|Cambodia]]
* [[History of Laos to 1945#French Laos|Laos]]
* [[French Indochina|Vietnam]] <small>([[Annam (French colony)|Annam]], [[Cochinchina]], [[Tonkin]])</small>
| group3 = Other Asian
| list3 =
* [[Alawite State|Alaouites]]
* [[Republic of Hatay|Alexandretta-Hatay]]
* [[Sri Lanka|Ceylon]]
* [[Kwangchowan]]
| group4 = [[Oceania]]
| list4 =
* [[New Hebrides]]
** [[History of Vanuatu|Vanuatu]]
| below = [[French East India Company]]
}}
}}
== Relationship with other Navbox templates ==
This navbox template works in conjunction with two other templates: {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}. All three of these templates share common parameters for consistency and ease of use (such parameters are marked with an asterisk (*) in the [[#Parameter descriptions|parameter descriptions]] list hereinbefore). Most importantly, each template can be used as a child of one another (by using the {{para|border|child}} parameter, or by specifying the first unnamed parameter to be <code>child</code>. For example: <code><nowiki>{{Navbox|child ...}}</nowiki></code>, <code><nowiki>{{Navbox with columns|child ...}}</nowiki></code> or <code><nowiki>{{Navbox with collapsible groups|child ...}}</nowiki></code>.)
== Technical details ==
* The {{navbar|1=:{{FULLPAGENAME}}|mini=on}} links are produced by [[Template:Navbar]]. If you have a question about them, it is probably best to ask at [[Template talk:Navbar]].
* The 2px wide border between groups and lists is drawn using the border-left property of the list cell. Thus, if you wish to change the background color of the template (for example <code>bodystyle = background:purple;</code>), then you'll need to make the border-left-color match the background color (i.e. <code>liststyle = border-left-color: purple;</code>). If you wish to have a border around each list cell, then the 2px border between the list cells and group cells will disappear; you'll have to come up with your own solution.
* Adjacent navboxes have only a 1 pixel border between them. If you set the top or bottom margin of <code>style/bodystyle</code>, then this will not work.
* The default margin-left and margin-right of the outer navbox table are set to "auto;". If you wish to use navbox as a float, you need to manually set the margin-left and margin-right values, because the auto margins interfere with the float option. For example, add the following code to use the navbox as a float:
** <code>bodystyle = width: 22em; float: right; margin-left: 1em; margin-right: 0;</code>
=== Copying to other projects or wikis ===
If you are trying to copy {{tlf|Navbox}} to your local wiki, there are several other things that must be installed or copied over as well:
* The [[mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions must be installed.
* [[Module:Navbox]] and its module and TemplateStyles dependencies, listed in the above two links
* Optionally, the <code>Add support to mw-collapsible for autocollapse, innercollapse and outercollapse</code> script from [[MediaWiki:Common.js]] may be copied, if autocollapsing is desired.
== TemplateData ==
{{TemplateDataHeader}}
<templatedata>
{
"params": {
"state": {
"label": "State",
"description": "Controls when a navbox is expanded or collapsed",
"example": "autocollapse",
"suggestedvalues": [
"autocollapse",
"collapsed",
"expanded",
"plain",
"off"
],
"default": "autocollapse",
"suggested": true
},
"title": {
"label": "Title",
"description": "Text in the title bar; centered in the top row of the table. Usually the template's topic.",
"example": "[[Widget stuff]]",
"suggested": true
},
"above": {
"label": "Above",
"description": "Full-width cell displayed between the titlebar and first group/list, i.e. above the template's body (groups, lists and image)",
"type": "string",
"suggested": true
},
"image": {
"label": "Image",
"description": "Image to be displayed in a cell below the title and to the right of the body",
"example": "[[File:XX.jpg | 80px | link= | alt= ]]",
"type": "wiki-file-name",
"suggested": true
},
"group1": {
"label": "Group 1",
"description": "If specified, text appears in a header cell displayed to the left of list 1. If omitted, list 1 uses the full width of the table.",
"suggested": true
},
"list1": {
"label": "List 1",
"description": "Body of the template; usually a list of links. Format is inline. At least one list parameter is required; each additional list is displayed in a separate row of the table. Each listn may be preceded by a corresponding groupn parameter.\nEntries should be separated using a newline and an asterisk. If two asterisks are used, it provides nesting within the previous entry with brackets.",
"required": true,
"suggested": true
},
"group2": {
"suggested": true
},
"list2": {
"suggested": true
},
"list3": {
"suggested": true
},
"group3": {
"suggested": true
},
"group4": {},
"list4": {},
"below": {
"label": "Below",
"description": "Full-width cell displayed below the template's body.",
"suggested": true
},
"imageleft": {
"label": "Image left",
"description": "Image to be displayed in a cell below the title and to the left of the body. For the image to display properly, list1 parameter must be specified and no groups can be specified.",
"example": "[[File:XX.jpg | 80px | link= | alt= ]]",
"type": "wiki-file-name"
},
"name": {
"label": "Name",
"description": "The name of the template. Needed for \"View • Talk • Edit\" links to work properly.",
"type": "string",
"default": "{{subst:PAGENAME}}{{subst:void|Don't change anything on this line. It will change itself when you save.}}",
"suggested": true
},
"listclass": {
"label": "List class",
"description": "CSS class for the list cells, usually hlist for horizontal lists. Alternatively, use bodyclass for the whole box.",
"example": "hlist",
"type": "string"
},
"navbar": {
"label": "Navbar status",
"example": "plain, off",
"type": "string"
},
"border": {
"label": "Border status",
"example": "child, subgroup, none",
"type": "string"
},
"bodystyle": {},
"basestyle": {},
"titlestyle": {},
"groupstyle": {},
"group1style": {},
"groupwidth": {},
"liststyle": {},
"list1style": {},
"listpadding": {},
"oddstyle": {},
"evenstyle": {},
"evenodd": {
"suggestedvalues": [
"swap",
"even",
"odd",
"off"
]
},
"abovestyle": {},
"belowstyle": {},
"imagestyle": {},
"imageleftstyle": {}
},
"description": "Creates a navigational box for links to other pages. \nDoes not display in mobile.",
"paramOrder": [
"name",
"title",
"group1",
"list1",
"listclass",
"state",
"above",
"below",
"image",
"group2",
"list2",
"group3",
"list3",
"group4",
"list4",
"imageleft",
"navbar",
"border",
"bodystyle",
"basestyle",
"titlestyle",
"groupstyle",
"liststyle",
"group1style",
"list1style",
"groupwidth",
"listpadding",
"oddstyle",
"evenstyle",
"evenodd",
"abovestyle",
"belowstyle",
"imagestyle",
"imageleftstyle"
]
}
</templatedata>
== See also ==
* {{tl|Navboxes}} — groups several navigation boxes together.
* {{tl|Nobold}} — To display text at normal font-weight within a context where the default font-weight is bold, e.g. header cells in tables.
* {{tl|Sidebar}} — Vertically-aligned navigation templates.
* {{tl|Navbox documentation}} — Shows the standard documentation using {{tl|Documentation}}.
* [[Template:Navbox/testcases]] — For additional examples of template code.
* [[Wikipedia:Line-break handling]] — The how-to guide about how to handle word wraps (line breaks) on Wikipedia, such as the wrapping of the link lists used in navboxes.
* [[Wikipedia:Template documentation]] — Guideline to creating the accompanying documentation
* {{tl|Nowrap begin}}, {{tl|·}} and {{tl|•}} are '''deprecated''' in favor of the <code>hlist</code> class for formatting lists. See [[Template:Flatlist#Technical details|Flatlist]] for a technical explanation of how <code>hlist</code> works.
=== Tracking categories ===
* {{clc|Navbox orphans}}
* {{clc|Navigational boxes without horizontal lists}}
* {{clc|Navboxes using background colours}}
* {{clc|Potentially illegible navboxes}}
* {{clc|Navboxes using borders}}
{{Navigation templates}}
<includeonly>{{sandbox other||
<!-- Add categories below this line, and interwikis at Wikidata -->
[[Category:Navbox meta-templates| ]]
[[Category:Templates generating microformats]]
[[Category:Templates that are not mobile friendly]]
[[Category:Collapse templates]]
}}</includeonly>
6da379ed21bc2d008a457bdb77169f27daf58526
Module:Authority control/documentation
828
1078
2354
2023-07-18T09:54:01Z
wikipedia>MSGJ
0
use string.format to improve clarity of messages
Scribunto
text/plain
require('strict')
local p = {}
local configfile = 'Module:Authority control/config' -- default configuation module
local arg = mw.getCurrentFrame().args.config
if arg and arg~='' then
configfile = 'Module:Authority control/config/' .. arg
end
local config
if mw.title.new(configfile).exists then
config = mw.loadData(configfile)
else
return error('Invalid configuration file',0)
end
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = title.subpageText == config.i18n.testcases
local makelink = require(config.i18n.ACmodule).makelink
local lang = mw.getContentLanguage()
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
-- Creates a human-readable standalone wikitable version of conf, and tracking categories with page counts, for use in the documentation
function p.docConfTable(frame)
local function checkcat(category,label)
local ret='[[:Category:'..category..'|'..label..']]'
--if mw.title.new(category,14).exists == false then
--ret = ret..' <span class="plainlinks" style="font-size:85%;">[['..tostring(mw.uri.fullUrl('Category:'..category,'action=edit&preload=Template:Authority_control/preload'))..' create]]</span>'
--end
return ret
end
local doc = ''
local a, P, f = 0, 0, 0 --cumulative sums
local count = frame.args.count or false
local columns = 3 + (count and 1 or 0)
local row = function(conf)
local category = conf.category or conf[1]
local articleCat = string.format(config.i18n.cat,category)
local articleCount = mw.site.stats.pagesInCategory(articleCat,config.i18n.pages)
local errorCat = conf.errorcat or string.format(
config.i18n.cat,
config.i18n.faulty .. ' ' .. category
)
local errorCount = mw.site.stats.pagesInCategory(errorCat,config.i18n.pages)
P = P + 1 --property count
a = a + articleCount
f = f + errorCount
local getstatement = function(id,propid,qualid)
local statement = mw.wikibase.getBestStatements('P' .. id, 'P' .. propid)
local value
if statement and statement[1] and statement[1].mainsnak.datavalue.value.id then
value = statement[1].mainsnak.datavalue.value.id
local qual
if qualid and statement[1].qualifiers['P' .. qualid][1].datavalue.value then
qual = statement[1].qualifiers['P' .. qualid][1].datavalue.value
end
return value, qual
end
end
local _, example = getstatement(conf.property, 1855, conf.property)
if not example then example = '' end
example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink(conf,{id=example},1)}} .. '\n'
local getname = function(nameprop)
local name = getstatement(conf.property,nameprop)
if name then
return frame:expandTemplate{title='Wikidata fallback link',args={name}}
end
end
local name = getname(1629) or getname(10726) or ''
local out = ''
if conf.remark then
out = out .. '<tr><td rowspan=2>'
else
out = out .. '<tr><td>'
end
out = out .. name .. '</td>' ..
'<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' ..
'<td data-sort-value=' .. conf.property .. '>' .. frame:expandTemplate{title='Wikidata property link',args={id='f',conf.property}} .. '</td>' ..
'<td>' .. example .. '</td>'
if count then
out = out .. '<td style="text-align: right;">'..checkcat(articleCat,lang:formatNum(articleCount))..' ('..checkcat(errorCat,errorCount)..')</td>'
end
out = out .. '</tr>'
if conf.remark then
out = out .. "<tr class='expand-child'><td colspan=" .. columns .. ">'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>"
end
return out
end
local doc = '<table class="wikitable sortable">' ..
'<tr><th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' ..
'<th>' .. config.i18n.Section .. '</th>' ..
'<th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' ..
'<th>' .. config.i18n.Appears_as .. '</th>'
if count then
doc = doc .. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.maincat .. '|' .. config.i18n.Articles .. ']] '
.. '([[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Faults .. ']])</th>'
end
doc = doc .. '</tr>'
for _, conf in pairs(config.config) do
doc = doc .. row(conf)
end
if count then
doc = doc .. '<tr><th style="text-align: right;" colspan=' .. columns-1 .. '>' .. config.i18n.Totals .. '</th>' ..
'<th style="text-align: right;">' .. P .. '</th>' ..
'<th style="text-align: right;">' .. lang:formatNum(a) .. ' ([[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. f .. ']])</th></tr>'
end
doc = doc .. '</table>'
return doc
end
function p.errorTable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.WDproperty .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.faulty) .. ' ' .. config.i18n.identifiers .. '</th>'..
'<th>[[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Tracking_category .. ']]</th></tr>'
local f, P = 0, 0, 0 --cumulative sums
for _, conf in pairs(config.config) do
local category = conf.errorcat or string.format(
config.i18n.cat,
config.i18n.faulty .. ' ' .. (conf.category or conf[1])
)
local count = mw.site.stats.pagesInCategory(category,'pages')
if count > 0 then
P = P + 1
f = f + count
Table = Table..'<tr><td>'..frame:expandTemplate{ title = config.i18n.linktemplate, args = { id = 'f', conf.property } } .. '</td>'..
'<td style="text-align:center;">'..tostring(count)..'</td>'..
'<td>[[:' .. config.i18n.category .. ':'..category..']]</td></tr>'
end
end
Table = Table..'<tr><th>' .. config.i18n.Totals .. '</th>'..
'<th style="text-align:center;">' .. '[[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. tostring(f) .. ']]</th>'..
'<th style="text-align:center;">'..tostring(P)..'</th></tr></table>'
return Table
end
function p.whitelisttable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.Code .. '</th>'..
'<th>' .. config.i18n.Topic .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>'
for code, wlist in pairs(config.whitelists) do
Table = Table .. '<tr><th>' .. code .. '</th>'..
'<td>[[' .. mw.wikibase.getSitelink('Q' .. wlist.topic) .. ']]</td>'
local plist = {}
for _, property in pairs(wlist.properties) do
table.insert(plist,frame:expandTemplate{title='Wikidata property link', args={'P' .. property}})
end
Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>'
end
Table = Table .. '</table>'
return Table
end
function p.sectiontable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.Section .. '</th>' ..
'<th>' .. config.i18n.Description .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>'
for number,section in ipairs(config.sections) do
Table = Table .. '<tr><th>' .. number .. '</th>' .. '<td>' .. section.name .. '</td>'
local plist = {}
for _,id in pairs(config.config) do
if id.section == number then
table.insert(plist,frame:expandTemplate{title=config.i18n.linktemplate, args={'P' .. id.property}})
end
end
Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>'
end
Table = Table .. '</table>'
return Table
end
-- Main/External Call for Pages with authority control identifiers
function p.autoDetect(frame)
local function whichTOC(frame) -- standardize TOC behavior via {{CatAutoTOC}}
return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } }
end
local function wpa(frame,id,faulty)
for _,conf in pairs(config.config) do
if conf.category == id or conf[1] == id then
local getname = function(nameprop)
local name = mw.wikibase.getBestStatements('P'..conf.property,nameprop)
if name and name[1] and name[1].mainsnak.datavalue.value.id then
return frame:expandTemplate{title='Wikidata fallback link',args={name[1].mainsnak.datavalue.value.id}}
end
end
local name = getname('P1629') or getname('P10726') or ''
local outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..name..' identifiers.'..' Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].\nPages in this category should only be added by [[Module:Authority control]].'}}
.. frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', ':d:Property:P'..conf.property} }
.. frame:expandTemplate{ title = 'Possibly empty category' }
.. frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
.. frame:expandTemplate{ title = 'Polluted category' }
.. whichTOC( frame )
if faulty then
outString = outString .. addCat(config.i18n.faultcat,id) .. addCat(string.format(config.i18n.cat, id))
else
outString = outString .. addCat(config.i18n.maincat,id)
end
return outString
end
end
end
if namespace == 14 then --cat space
local wpfaultyID = mw.ustring.match(title.text, 'Articles with faulty (.+) identifiers')
local wpID = mw.ustring.match(title.text, 'Articles with (.+) identifiers')
if wpfaultyID then
return wpa(frame,wpfaultyID,true)-- must be before wpID check, in case they both match
elseif wpID then
return wpa(frame,wpID,false)
else
return needsAttention('U')
end
end
end
function p.idproposal(frame)
local property = frame.args.property or ''
local out = '<ul><li>Wikidata property: ' .. frame:expandTemplate{title='Wikidata property link', args={'P' .. property}} .. '</li>'
out = out .. '<li>Section: '
local section = frame.args.section or ''
if section~='' then
out = out .. config.sections[section].name .. ' (' .. section .. ')'
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Link: '
local link = frame.args.link or ''
if link=='' then
link = mw.wikibase.getBestStatements('P'..property,'P1630') or ''
link = link[1].mainsnak.datavalue.value
end
if link~='' then
out = out .. '<code>' .. link .. '</code>'
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Label: '
local label = frame.args.label or ''
if label~='' then
out = out .. label
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Example: '
local example = mw.wikibase.getBestStatements('P'..property,'P1855') or ''
if example then
example = example[1].qualifiers['P'..property][1].datavalue.value
example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink({[1]='',link=link,label=label},{id=example},1)}} .. '\n'
out = out .. example
else
out = out .. 'Not available'
end
out = out .. '</li></ul>'
return out
end
return p
0cc6ccce20ffd440b927baba266e176d5980bc71
Module:Authority control
828
1046
2290
2023-07-18T10:01:56Z
wikipedia>MSGJ
0
don't track empty state parameter as error, tweak to messages
Scribunto
text/plain
require('strict')
local p = {}
local configfile = 'Module:Authority control/config' -- default configuation module
local arg = mw.getCurrentFrame().args.config
if arg and arg~='' then
configfile = 'Module:Authority control/config/' .. arg
end
local config
if mw.title.new(configfile).exists then
config = mw.loadData(configfile)
else
return error('Invalid configuration file',0)
end
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = title.subpageText == config.i18n.testcases
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
local function getCatForId(id,faulty)
local cat = string.format(
config.i18n.cat,
(faulty and config.i18n.faulty..' ' or '') .. id
)
return addCat(cat)
end
local function getIdsFromWikidata(qid,property)
local function getquals(statement,qualid)
if statement.qualifiers and statement.qualifiers['P'..qualid] then
return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
else
return false
end
end
local ids = {}
if qid then
for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do
if statement.mainsnak.datavalue then
local val = statement.mainsnak.datavalue.value
if val then
local namedas = getquals(statement,1810) or getquals(statement,742) or ''
table.insert(ids,{id=val,name=namedas})
end
end
end
end
return ids
end
local _makelink = function(conf,val,nextid,qid) --validate values and create a link
local function tooltip(text,label)
if label and label~='' then
return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}}
else
return text
end
end
local link
if nextid==1 then
if conf.prefix then
link = '*' .. conf.prefix .. '\n**'
else
link = '*'
end
else
link = '\n**'
end
local valid_value = false
if conf.customlink then -- use function to validate and generate link
local label = nextid>1 and nextid
local newlink= require(config.auxiliary)[conf.customlink](val.id,label)
if newlink then
link = link .. newlink
valid_value = true
end
else
if conf.pattern then -- use pattern to determine validity if defined
valid_value = string.match(val.id,'^'..conf.pattern..'$')
elseif conf.patterns then
for _,pattern in ipairs(conf.patterns) do
valid_value = val.id:match('^'..pattern..'$')
if valid_value then break end
end
elseif conf.valid then -- otherwise use function to determine validity
valid_value = require(config.auxiliary)[conf.valid](val.id)
else -- no validation possible
valid_value = val.id
end
if valid_value then
local newlink
local label = conf.label
if not label or nextid>1 then
label = tostring(nextid)
end
if conf.link then
valid_value = valid_value:gsub('%%', '%%%%')
newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']'
else
newlink = valid_value
end
link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>'
end
end
if valid_value then
link = link .. getCatForId(conf.category or conf[1])
else
--local preview = require("Module:If preview")
local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or ''
local tooltip = string.format(
config.i18n.idnotvalid,
conf[1],
val.id
)
link = link .. '[[File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink .. '|' .. tooltip .. '.]]'
if conf.errorcat then
link = link .. addCat(conf.errorcat)
else
link = link .. getCatForId(conf.category or conf[1],true)
end
link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'})
end
return link
end
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControl(frame)
local function resolveQID(qid)
if qid then
qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')
if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
end
return mw.wikibase.getEntity(qid).id
end
end
end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid,topic
local wikilink = function(qid,hideifequal)
local label,sitelink = mw.wikibase.getLabel(qid),mw.wikibase.getSitelink(qid)
if label then
if sitelink then
local target = mw.title.new(sitelink)
if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link
return label
else -- make wikilink to article
return '[[' .. sitelink .. '|' .. label .. ']]'
end
else
return label
end
else
auxCats = auxCats .. needsAttention('L')
return qid
end
end
if namespace == 0 then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to Wikidata item
if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter
auxCats = auxCats .. needsAttention('D')
end
else -- page is not connected to any Wikidata item
qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
if qid then -- qid parameter is valid, set topic to display
topic = mw.wikibase.getLabel(qid)
if topic then
if mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change
topic = nil
end
if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]'
end
else
auxCats = auxCats .. needsAttention('L')
end
elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
auxCats = auxCats .. needsAttention('Q')
end
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional=='auto' and qid then -- check P527 for parts to add additional qids
local checkparts = function(property)
local parts = mw.wikibase.getBestStatements(qid,property)
if parts then
for _,part in ipairs(parts) do
if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then
local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id)
if resolvedqid then
table.insert(qids,resolvedqid)
end end end end end
for _,part in ipairs(config.auto_additional) do
checkparts('P'..tostring(part))
end
elseif parentArgs.additional and parentArgs.additional ~= '' then
for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do
v = resolveQID(v)
if v then
if v == qid then -- duplicate of qid parameter
auxCats = auxCats .. needsAttention('R')
end
table.insert(qids,v)
else -- invalid QID specified
auxCats = auxCats .. needsAttention('A')
end
end
end
local sections = {}
local localparams = false
local numsections = 0
for _,_ in ipairs(config.sections) do numsections = numsections + 1 end
for _ = 1,#qids+numsections do table.insert(sections,{}) end
local qslink = '' -- setup link to add using QuickStatements
-- check which identifiers to show/suppress in template
local show = {} -- setup list
local showall = true
local function stripP(pid)
if pid:match("^[Pp]%d+$") then
pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number
end
if pid:match("^%d+$") then
return tonumber(pid)
end
end
local function addshowlist(list)
if list and list ~= '' then
for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do
local vprop = stripP(v)
if vprop then -- e.g. show=P214 to show one particular property
show[vprop] = true
else -- e.g. show=arts to use whitelist
if config.whitelists[v] then
for _,w in ipairs(config.whitelists[v].properties) do
show[w] = true
end
end
end
end
showall = false
end
end
addshowlist(frame.args.show) -- check show= parameter on wrapper template
addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template
if parentArgs.suppress then
local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma
for _,v in ipairs(suppresslist) do
v = stripP(string.upper(v))
if v then
show[v] = false
auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]'
else
auxCats = auxCats .. needsAttention('P')
end
end
end
local function makeSections(qid,addit)
local tval = {}
local function parameter_is_used(property)
local used = false
if property then
if tval[property] then
if tval[property][1] then
used = true
end
elseif tval[property] == false then -- property has been manually suppressed
used = true
end
end
return used
end
for _, params in ipairs(conf) do
tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key
local showb = true
if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then
showb = showall -- if not specified then depends on showall
elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed
showb = false
end
if not showb then
tval[params.property] = false -- indicates the identifier is suppressed
elseif not addit then
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
if val and val~='' then -- add local parameter to list if not already in
localparams = true
local bnew = true
for _, w in pairs(tval[params.property]) do
if val == w.id then
bnew = false
end
end
if bnew then -- add new value to table
if qid then
qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328'
end
table.insert(tval[params.property],{id=val,name=''})
end
end
end
local suppress = false
if params.suppressedbyproperty then
for _,sc in ipairs(params.suppressedbyproperty) do
if parameter_is_used(sc) then
suppress = true
end
end
end
if tval[params.property] ~= false and not suppress then
local tlinks = {} -- setup table for links
local nextIdVal = 1
local row = ''
for _,val in ipairs(tval[params.property]) do
local link = _makelink(params,val,nextIdVal,qid)
row = row .. link
table.insert(tlinks,link)
nextIdVal = nextIdVal + 1
end
if nextIdVal>=2 then
row = row .. '\n'
table.insert(sections[addit or params.section],row)
rct = true
end
end
end
end
local function pencil(qid)
if not qid then
return ''
end
local args = { pid = 'identifiers' } -- #target the list of identifiers
args.qid = qid
return require('Module:EditAtWikidata')._showMessage(args)
end
makeSections(qid,false)
for c = 1,#qids do
makeSections(qids[c],numsections+c)
end
--configure Navbox
local outString = ''
if rct or localparams then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect,lastsect = 0,0
local navboxArgs = {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or config.i18n.autocollapse,
navbar = 'off'
}
for c=1,numsections+#qids do
if #sections[c] ~= 0 then -- section is non-empty
sect = sect + 1
lastsect = c
local sectname
if c <= numsections then -- regular section
sectname = config.sections[c].name
else -- section from additional qid
local qid = qids[c-numsections]
sectname = wikilink(qid) .. pencil(qid)
end
navboxArgs['group' .. c] = sectname
navboxArgs['list' .. c] = table.concat(sections[c])
end
end
if localparams then
lastsect = lastsect + 1
sect = sect + 1
navboxArgs['group' .. lastsect] = config.i18n.warning
local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}}
if qslink ~= '' then
warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show"> [[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>'
elseif not qid then
if namespace == 0 then
warning = warning .. ' ' .. config.i18n.connecttowd
elseif namespace==14 or namespace==2 or namespace==118 then
warning = warning .. ' ' .. config.i18n.qidcode
end
end
navboxArgs['list' .. lastsect] = warning
end
if topic then -- display in expanded form with topic
navboxArgs.title = config.i18n.aclink .. ' – ' .. topic .. pencil(qid)
elseif sect == 1 then -- special display when only one section
if lastsect <= numsections then
if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
else -- other regular section
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
end
else -- section from additional qid
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
end
else -- add title to navbox
navboxArgs.title = config.i18n.aclink .. pencil(qid)
end
outString = Navbox._navbox(navboxArgs)
end
if parentArgs.state
and parentArgs.state~=''
and parentArgs.state~=config.i18n.collapsed
and parentArgs.state~=config.i18n.expanded
and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter
auxCats = auxCats .. needsAttention('S')
end
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.Articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.All_articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters')._check
local sortkey
if namespace == 0 then
sortkey = '*' .. title.text
else
sortkey = title.fullText
end
outString = outString .. check({
['unknown'] = '[[' .. config.i18n.category .. ':' .. config.i18n.pageswithparams .. '|' .. sortkey .. ']]',
['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state'
}, parentArgs)
return outString
end
p.makelink = function(conf,val,nextid,qid)
return _makelink(conf,val,nextid,qid)
end
return p
53aaca83d7c22230cefa966b7911d2ab311588a9
Template:Country data Belgium
10
1197
2526
2023-07-18T17:32:14Z
w>Paine Ellsworth
0
srv pending possible RfC
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Belgium
| flag alias = Flag of Belgium (civil).svg <!-- Not the official flag of Belgium, but see talk page for objections to using the state flag as the default -->
| flag alias-government = Government Ensign of Belgium.svg
| flag alias-state = Flag of Belgium.svg<!-- The official flag of Belgium. See talk page for why it is not the default. -->
| flag alias-1830 = Flag of Belgium (1830).svg
| flag alias-1858 = Royal ensign of Belgium (1858).svg
| flag alias-army = Flag of the Belgian Land Component.svg
| link alias-army = Belgian Land Component
| flag alias-naval = Naval Ensign of Belgium.svg
| link alias-naval = Belgian Navy
| flag alias-air force = Air Force Ensign of Belgium.svg
| link alias-air force = Belgian Air Component
| flag alias-navy = Naval Ensign of Belgium.svg
| link alias-navy = Belgian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = state
| var2 = government
| var3 = 1830
| var4 = 1858
| redir1 = BEL
</noinclude>
}}
f0f17baf77dfb0ac61bc71743e2811ff99176a5e
Template:Marriage
10
1236
2570
2023-07-19T08:39:32Z
w>Paine Ellsworth
0
per edit request on talk page - remove the redundant invoking of "Check for unknown parameters"
wikitext
text/x-wiki
<templatestyles src="Template:Marriage/styles.css"/>
{{#if:{{{1|}}}||{{#if:{{{2|}}}{{{3|}}}{{{end|{{{reason|}}}}}}
|{{#ifeq:{{{1|+}}}|{{{1|-}}}|<div class="marriage-line-margin3px">​</div>|{{main other|[[Category:Marriage template anomalies|N{{PAGENAME}}]]}}}}}}}}
<div class="marriage-display-ws">{{#if:{{{1|}}}
|{{trim|{{#if:{{{end|{{{reason|}}}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{{2|}}}{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{delink|{{{1}}}}}|2=20|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|<div class="marriage-line-margin2px">​</div>}}
|{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{delink|{{{1}}}}}|2=20
|3=<div class="marriage-line-margin2px">​</div>}}
}}}}
|<div style="display:inline-block;line-height:normal;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-top:1px;white-space:normal;|{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-top:1px;white-space:normal;}}}}">{{{1|}}}</div>
{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}
|<div class="marriage-line-margin2px">​</div>
|{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}
|3=<div class="marriage-line-margin2px">​</div>}}}}
}}}}}} <div style="display:inline-block;{{#if:{{in string|source={{{1}}}|target=<br|plain=true|nomatch=}}|margin-bottom:1px;|{{str ≥ len|1={{delink|{{{1}}}}}|2={{if both|{{{2|}}}|{{{3|}}}|15|20}}|3=margin-bottom:1px;|4={{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}|margin-bottom:1px;}}}}}}}}">​</div>(<!--
-->{{#if:{{{2|}}}
|{{#ifeq:{{{end|{{{reason|+}}}}}}|
|{{#switch:{{{3|}}} | = after }}
|{{abbr|m.|married}} }}{{#ifeq:{{{2|}}}|{{YEAR|{{{2|}}}}}
|{{{2|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{2|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}|{{YEAR|{{{2|}}}}}}}|2={{{2|}}}}}
}}
|{{#if:{{{3|}}}{{{end|{{{reason|}}}}}}||{{#if:{{#property:P570}}||{{main other|[[Category:Marriage template errors|N{{PAGENAME}}]]}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}||{{#if:{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} | {{main other|[[Category:Marriage template anomalies|B{{PAGENAME}}]]}}before {{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} |{{error-small|date missing}}}}}}<!--
-->{{#if:{{{end|{{{reason|}}}}}}|{{#if:{{{2|}}}{{{3|}}}|, }}}}}}
}}{{#if:{{{3|}}}
|{{#ifeq:{{{end|{{{reason|}}}}}}|
|{{#if:{{{2|}}}|⁠–⁠|{{#ifeq:{{{end|+}}}|{{{end|-}}}
|{{#ifeq:{{{end|+}}}|{{{end|-}}} | until | before }}
|{{#ifeq:{{{reason|+}}}|{{{reason|-}}} | until | before }}}} }}
|{{#if:{{{2|}}}
|; 
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died <!-- this used to be {{abbr|d.|died}} but caused confusion with "divorced" -->
| div | div. | divorce | divorced = {{abbr|div.|divorced}}
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died |{{main other|[[Category:Marriage template deprecations]]}}{{dc|her death }}}}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died |{{main other|[[Category:Marriage template deprecations]]}}{{dc|his death }}}}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}}{{#ifeq:{{{3|}}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template anomalies|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}
|{{{3|}}}
|{{tooltip|dotted=no|1={{#iferror: {{YEAR|{{{3|}}}}} | {{main other|[[Category:Marriage template errors|I{{PAGENAME}}]]}}{{error-small|invalid year}}
|{{Str ≠ len|{{{3}}}|4
|{{#ifexpr:{{#iferror:{{#time:Ymd|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}} }}|{{#time:Ymd}} }} >= {{#time:Ymd|{{{3|}}}}}
|{{#ifexpr:{{#time:Ymd|{{if empty|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=ymd}}|{{tomorrow}} }}}} = {{#time:Ymd|{{{3|}}}}}
|{{#if:{{{end|{{{reason|}}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template anomalies|D{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{First word|{{PAGENAMEBASE}}|sep=,}}'s date of death}}</var>|{{YEAR|{{{3|}}}}} }}}}
|{{YEAR|{{{3|}}}}}
}}
|{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Ymd}} >= {{#time:Ymd|{{{3|}}}}}|posthumous|future}} date}}</var>|{{YEAR|{{{3|}}}}}
}}}}
|{{#ifexpr:{{#iferror:{{YEAR|{{Wdib |P570|fwd=ALL|maxvals=1|noicon=true|pd=yes|df=y}} }}|{{#time:Y}} }} >= {{YEAR|{{{3|}}}}}
|{{YEAR|{{{3|}}}}}
|{{main other|[[Category:Marriage template anomalies|P{{PAGENAME}}]]}}{{if preview|<var>{{colored link|red|Category:Marriage template anomalies|{{#ifexpr:{{#time:Y}} >= {{{3|}}}|posthumous|future}} year}}</var>|{{YEAR|{{{3|}}}}}
}}}}
}}}}|2={{{3|}}}}}
}}
|{{#if:{{{2|}}}
|{{#if:{{{end|{{{reason|}}}}}}|, |}}
}}{{#switch:{{lc:{{{end|{{{reason|}}}}}}}}
| d | d. | died = died
| div | div. | divorce | divorced = divorced
| she d. | her d. | she died | her death = {{#ifeq:{{#property:P21}}|male|died|{{main other|[[Category:Marriage template deprecations]]}}{{dc|her death}}}}
| he d. | his d. | he died | his death = {{#ifeq:{{#property:P21}}|female|died|{{main other|[[Category:Marriage template deprecations]]}}{{dc|his death}}}}
| w | w. | wid | wid. | widow | widowed = {{main other|[[Category:Marriage template errors|W{{PAGENAME}}]]}}{{error-small|invalid reason}}
| = <!--(reason marriage ended not supplied)-->
| #default = {{{end|{{{reason|}}}}}}
}}
}})<wbr />​</div><!--
-->{{#invoke:Parameter validation|validateparams|module_options = Module:Parameter validation/default config}}<noinclude>
{{documentation}}
</noinclude>
7452d847c3af0c74dec0ca6b50bf7ddb2a07da46
Template:Coord how-to
10
1666
3083
2023-07-19T16:10:34Z
wikipedia>Redrose64
0
Undid revision 1166032258 by [[Special:Contributions/Beyond My Ken|Beyond My Ken]] ([[User talk:Beyond My Ken|talk]]) see [[Wikipedia:Village pump (technical)#Issue with coordinate templates and article previews]]
wikitext
text/x-wiki
<div class="{{{class|}}}" style="display:table; background:#f5fffa; color: #222; margin: 1em 0; border: 1px solid #a2a9b1;{{{style|}}}">
<div style="background:#cef2e0; font-weight:bold; border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
{{{{{navbar|navbar-header}}}|1= {{{title|Quick how to}}} |2=Coord_how-to}}
</div><!--end header -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
To add {{Coord|57|18|22|N|4|27|32|W}} to the top of an article, use {{Tl|Coord}}, thus:
:'''<code><nowiki>{{Coord|57|18|22|N|4|27|32|W|display=title}}</nowiki></code>'''
These [[Geographic coordinate system|coordinates]] are in [[Degree (angle)|degrees]], [[Minute and second of arc|minutes, and seconds of arc]].
"title" means that the coordinates will be displayed next to the article's title at the top of the page (in desktop view only; title coordinates do not display in mobile view) and before any other text or images. It also records the coordinates as the primary location of the page's subject in Wikipedia's geosearch API.
</div><!-- end of section 1 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
To add {{Coord|44.1124|N|87.9130|W}} to the top of an article, use either
:'''<code><nowiki>{{Coord|44.1124|N|87.9130|W|display=title}}</nowiki></code>'''
(which does not require minutes or seconds but does require the user to specify north/ south and east/west) ''or''
:'''<code><nowiki>{{Coord|44.1124|-87.9130|display=title}}</nowiki></code>'''
(in which the north and east are presumed by positive values while the south and west are negative ones).
These coordinates are in [[decimal degrees]].
</div><!-- end of section 2 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
* Degrees, minutes and seconds, when used, must each be separated by a [[Vertical bar|pipe ("|")]].
* [[Geodetic datum|Map datum]] must be [[WGS84]] if possible (except for off-Earth bodies).
* Avoid [[Wikipedia:WikiProject Geographical coordinates#Precision guidelines|excessive precision]] (0.0001° is <11 m, 1″ is <31 m).
* Maintain [[MOS:UNCERTAINTY|consistency]] of decimal places or minutes/seconds between latitude and longitude.
* Latitude (N/S) must appear before longitude (E/W).
</div><!-- end of section 3 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
Optional coordinate parameters follow the longitude and are separated by [[Underscore|an underscore ("_")]]:<br />
*[[Template:Coord#dim:D|dim]]: <code>dim:</code>'''''N''''' (viewing <u>d</u>iameter <u>i</u>n <u>m</u>etres)
*[[Template:Coord#region:R|region]]: <code>region:</code>'''''R''''' ([[ISO 3166-1 alpha-2]] or [[ISO 3166-2]] code)
*[[Template:Coord#type:T|type]]: <code>type:</code>'''''T''''' (<code>landmark</code> or <code>city(30,000)</code>, for example)
Other optional parameters are separated by [[Vertical bar|a pipe ("|")]]:<br />
*[[Template:Coord#Display|display]]
*: {{Para|display|inline}} (the default) to display in the body of the article only,
*: {{Para|display|title}} to display at the top of the article only (in desktop view only; title coordinates do not display in mobile view), or
*: {{Para|display|inline,title}} to display in both places.
*[[Template:Coord#Name|name]]
*: <code>name=</code>'''''X''''' to label the place on maps (default is [[mw:Help:Magic words#Page names|PAGENAME]])
Thus: '''<code><nowiki>{{Coord|44.1172|-87.9135|dim:30_region:US-WI_type:event</nowiki></code>'''
::'''<code><nowiki>|display=inline,title|name=accident site}}</nowiki></code>'''
Use {{Para|display|title}} (or {{Para|display|inline,title}}) once per article, for the subject of the article, where appropriate.
</div><!-- end of section 4 -->
<div style="padding: 0.2em 0.4em;">
* Per [[WP:ORDER]], the template is placed at the bottom of the article in the 'end matter', after any [[Wikipedia:Navigation template|navigation templates]], but before all [[Wikipedia:Categorization|categories]], including the {{tl|DEFAULTSORT}} template. This template may also be placed within an [[Help:Infobox|infobox]], instead of at the bottom of the article.
* For full details, refer to {{tl|Coord/doc}}.
* Additional guidance is available at [[Wikipedia:Obtaining geographic coordinates|obtaining coordinates]] and [[Geographic coordinate conversion|converting coordinates]].
</div><!-- end of section 5 -->
</div><noinclude>
{{documentation|content=
==Usage==
This a sub-tempate for {{tl|Coord/doc}}.
[[Category:WikiProject Geographical coordinates]]
}}</noinclude>
35f82b649ae37b5b4c2a11e6a668f083bab05a26
Module:PopulationFromWikidata
828
1394
2729
2023-07-20T01:57:48Z
w>Johnuniq
0
update from [[Module:PopulationFromWikidata/sandbox]] mainly to fix irritating "Lua error in Module:PopulationFromWikidata at line 150: attempt to index field 'claims' (a nil value)." at [[Municipality of Scone]]
Scribunto
text/plain
---------------- Defining variables--------------------
local Pop_P = "P1082" -- population property
local Applies_P = "P518" -- applies to part property
local Pointin_P = "P585" -- point in time property
local DetMeth_P = "P459" -- determination method property
local RefURL_P = "P854" -- reference URL
local RefTitle_P = "P1476" -- reference title
local RefPubIn_P = "P1433" --reference published in property
local DatePub_P = "P577" -- date of publication property
local Publisher_P = "P123" -- publisher property
local Retrieved_P = "P813" -- retrieved property
local CensusAU_I = "Q5058971" -- Australian census item
local Instof_P = "P31" -- instance of property
local ShortN_P = "P1813" -- short name property
local SAL_I = "Q33112019" -- state suburb item (includes SSC and SAL)
--local GCCSA_I = "Q112762887" -- Greater Capital City Statistical Area item
local LGA_I = "Q33127844" -- Local Government Area item
local UCL_I = "Q33127891" -- Urban Centre or Locality
--local SA2_I = "Q33128776" -- SA2
local ILOC_I = "Q112729549" -- Indigenous Location
local item = nil
--------------- Function GetRefsForClaim to check, collate and format all the reference components----------------------
local function GetRefsForClaim(claim, defaulttitle)
local refs = ""
for b,x in pairs(claim.references) do -- Loop through all references in a claim and pull out the components
local refurl = "" -- initialise an empty URL, check if there is one then populate with the actual value (if not it stays as an empty string)
if claim.references[b].snaks[RefURL_P] ~= nil then
refurl = claim.references[b].snaks[RefURL_P][1].datavalue.value
end
local reftitle = defaulttitle -- Initialise the default title as the Wikidata item title. This is the fallback title if one isn't provided in the references
if claim.references[b].snaks[RefTitle_P] ~= nil then
reftitle = claim.references[b].snaks[RefTitle_P][1].datavalue.value.text
end
local detmet = mw.wikibase.getEntity(claim.qualifiers[DetMeth_P][1].datavalue.value.id) -- Get the dertermination method item
local pubinlabel = "" --Initalising an empty published in label. This is the last option for this value.
if claim.references[b].snaks[RefPubIn_P] ~= nil then --Checking if the published in part of reference exists (it should for all references)
local pubin = mw.wikibase.getEntity(claim.references[b].snaks[RefPubIn_P][1].datavalue.value.id) --If it does then grab the published item and the label of that item
pubinlabel = pubin.labels.en.value
end
local refwork = pubinlabel -- This value is used for non-census references, or as a fall-back value for census references with missing parts
local pubdate = "" -- This is the fallback option if published date is missing (no date)
if claim.references[b].snaks[DatePub_P] ~= nil then -- This is the second option for the published date (given with references - this is used for non-census references)
pubdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[DatePub_P][1].datavalue.value.time)
end
if detmet.claims[Instof_P] ~=nil and detmet.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then -- Checking for census references (which will have different refwork and published date sources)
refwork = detmet.labels.en.value.." "..pubinlabel -- Concatenating to get work - determination method + published in (this overwrites the refwork value for census references)
if detmet.claims[DatePub_P] ~=nil then
pubdate = mw.language.getContentLanguage():formatDate('j F Y', detmet.claims[DatePub_P][1].mainsnak.datavalue.value.time) -- Overwrite the published date value if the determination method item has a date published (for census references)
end
end
local refpublisher = "" -- The publisher is empty if missing
if detmet.claims[Publisher_P] ~= nil then
local publisheritem = mw.wikibase.getEntity(detmet.claims[Publisher_P][1].mainsnak.datavalue.value.id) -- Get the determination method item and the publisher item ID
refpublisher = publisheritem.labels.en.value -- Get the label of the publisher item
end
local refaccessdate = "" -- The retrieved date fallback is empty
if claim.references[b].snaks[Retrieved_P] ~= nil then
refaccessdate = mw.language.getContentLanguage():formatDate('j F Y', claim.references[b].snaks[Retrieved_P][1].datavalue.value.time) -- Populate the retrieved date if it's there
end
local appliespart = mw.wikibase.getEntity(claim.qualifiers[Applies_P][1].datavalue.value.id).labels.en.value -- The ABS geography type for the particular claim (to use in reference name)
local pointintime = mw.language.getContentLanguage():formatDate('Y', claim.qualifiers[Pointin_P][1].datavalue.value.time) -- Getting the point in time as a YYYY (to use in the reference name)
local citewebargs = { --Putting all the cite_web arguments into a list (for a single reference)
url = refurl,
title = reftitle.." ("..appliespart..")" ,
date = pubdate,
work = refwork,
author = "[["..refpublisher.."]]", -- Changed the publisher to author for now to match existing population references
accessdate = refaccessdate
}
local wdeditpencil = mw.getCurrentFrame():expandTemplate{title = 'EditAtWikidata', args = {qid = item.id, pid = claim.id, nbsp = 1}} --Call the Edit At Wikidata template (to add the edit pencil to end of references)
local reference = mw.getCurrentFrame():expandTemplate{ title = 'cite web', args = citewebargs } --expand template to feed arguments to cite_web
refs = refs..mw.getCurrentFrame():extensionTag{ name = 'ref', content = reference..wdeditpencil, { name = refwork.."_"..pointintime.."_"..appliespart.."_"..reftitle } } --Add the reference from this iteration to the list of references for this particular claim
end
return refs -- List of references to be given to reflist
end
---------------This is a function for getting the population geography abbreviation and the Wikipedia article link for the population year ---------------
local function GetAbbrLabelYearLink(returnclaim)
local appliespartitem = mw.wikibase.getEntity(returnclaim.qualifiers[Applies_P][1].datavalue.value.id) -- This gets the item ID for the current claim Applied to Part value
local abbrelabel = appliespartitem.labels.en.value -- This is the fall back value for the geography label if no abbreviation (short name) value exists in Wikidata item
if appliespartitem.claims[ShortN_P] ~= nil then -- If a short name value exists then use thi value instead of the full item label.
abbrelabel = mw.getCurrentFrame():expandTemplate{title = 'Abbr', args = {appliespartitem.claims[ShortN_P][1].mainsnak.datavalue.value.text , appliespartitem.labels.en.value }} -- Output the abbreviated name with tooltip showing the full label
end
local year = string.sub(returnclaim.qualifiers[Pointin_P][1].datavalue.value.time, 2, 5) -- Get the population point in time as a year string
local yearreturn = year -- If no links to Wikipedia articles describing population determination method exist then just output year
local detmetitem = mw.wikibase.getEntity(returnclaim.qualifiers[DetMeth_P][1].datavalue.value.id) -- Get the current claim determination method item
if detmetitem.sitelinks ~=nil and detmetitem.sitelinks.enwiki ~=nil then -- Check if the determination method item has an enwiki URL
yearreturn = "[["..detmetitem.sitelinks.enwiki.title.."|".. year.."]]" -- If it does, use this URL as the link with the year value
elseif detmetitem.claims[Instof_P] ~=nil and detmetitem.claims[Instof_P][1].mainsnak.datavalue.value.id == CensusAU_I then -- If there isn't a populated enwiki URL for determination method item AND it's a census determination method then...
yearreturn = "[[Census_in_Australia#"..year.."|".. year.."]]" -- ... return the population year linked to the corresponding section of the Census in Australia article
end
return abbrelabel.." "..yearreturn -- Join the geography abbreviation to the year (with link) ready for the final output
end
---------------- This ListForInfobox function is being used to grab the correct population value ---------------
local p = {}
function p.ListForInfobox( frame )
local luaplacetype = "" --Initialise the local place type
if frame.args.type == nil then
return ""
end
local articleplacetype = string.lower(frame.args.type) -- Bring in the place type entered into Infobox Australian place template, change to a lower case string
if articleplacetype == "town" then -- Check which place type and match to the equivalent ABS geographic area "city", "suburb", "town", "lga", "region"
luaplacetype = UCL_I
elseif articleplacetype == "suburb" then
luaplacetype = SAL_I
elseif articleplacetype == "city" then
luaplacetype = UCL_I
elseif articleplacetype == "lga" then
luaplacetype = LGA_I
elseif articleplacetype == "region" then -- for now saying region == LGA_I... but unclear what is most apprpriate ABS geography type.... can revise
luaplacetype = LGA_I
end
if frame.args.wikidata ~= nil and frame.args.wikidata ~= "" then -- checking if there's a linked Wikidata item for the article
item = mw.wikibase.getEntity(frame.args.wikidata) -- this is the default item specified by the wikidata parameter in the template
else
item = mw.wikibase.getEntity() -- If there's a Wikidata item connected to the article it will find it here.
end
-- mw.logObject(item)
--------------- CHECK: If item.claims[Pop_P] is nil. If it is return an empty string ----------------------
if not (item and item.claims and item.claims[Pop_P]) then
return ""
end
------------ PART 1: Find claims with (1) point in time is not nil, (2) applies to part is not nil, (3) determination method is not nil and (4) References table is not empty-------------
local validpopclaims = {} --initialise the blank claim table for storing all population claims that satisfy the four conditions
local z = 0 -- initialise the table row count
for j, s in pairs(item.claims[Pop_P]) do
if s.qualifiers ~= nil and
s.qualifiers[Pointin_P]~= nil and
s.qualifiers[Applies_P] ~= nil and
s.qualifiers[DetMeth_P] ~= nil and
s.references ~= nil then
z = z + 1
validpopclaims[z]=s -- give the claim a new key in the table
end
end
--------------- CHECK: If count of validpopclaims is less than one (eg 0) then return a html message. This checks we have something from which to get a population value and basic reference.--------------
if #validpopclaims <1 then
return ""
end
--------------- PART 2: Compare claim 'applies to part' values against template place type-------------------------
local templategeog = {} --initialise the blank claim table for if the template type matches to Wikidata claim applies to part
local othergeog = {} --initialise the blank claim table for when the template type doesn't match Wikidata claims applies to part
local c=0
local d=0
for i, q in pairs(validpopclaims) do
if q.qualifiers[Applies_P][1].datavalue.value.id == luaplacetype then --filter for claims where applies to part = Infobox template type
c=c+1 -- give the claim a new key in the table
templategeog[c]=q -- claims with Infobox template type geography
else
d=d+1
othergeog[d]=q -- claims with geography other than specified in the Infobox template type.
end
end
----------PART 3: Get claims with the maximum 'Point in time' values ------------------
----------PART 3A: Find the max date of claims with template geography-----------------
local maxclaimspertemplategeog = nil --initialise the blank claim corresponding to the max date
for k, v in pairs(templategeog) do --loop through all the claims with geography type = Infobox template type
local tclaimdate = v.qualifiers[Pointin_P][1].datavalue.value.time
if maxclaimspertemplategeog == nil
or (maxclaimspertemplategeog ~= nil
and tclaimdate >= maxclaimspertemplategeog.qualifiers[Pointin_P][1].datavalue.value.time)
then
maxclaimspertemplategeog=v
end
end
----------PART 3B: Find the max date of claims with non-Infobox template geography-----------------
local maxclaimsperothergeog = {}
for l, m in pairs(othergeog) do --loop through all the claims with geography type = non Infobox place type
local oclaimdate = m.qualifiers[Pointin_P][1].datavalue.value.time
local claimgeog = m.qualifiers[Applies_P][1].datavalue.value.id
if maxclaimsperothergeog[claimgeog] == nil -- using the applies to part value as the table key
or (maxclaimsperothergeog[claimgeog] ~= nil
and oclaimdate >= maxclaimsperothergeog[claimgeog].qualifiers[Pointin_P][1].datavalue.value.time) -- checking the max date for a particular geography value
then
maxclaimsperothergeog[claimgeog]=m -- overwrites with a geography-max date claim pair whenever the point in time is bigger than the last iteration.
end
end
------------------------------Compiling the module output--------------------------------
local returnlist = {} -- Initiate an empty table to store the output claims
if maxclaimspertemplategeog ~=nil then -- Situation 1: Getting population for max date claim where applies to part matches the Infobox place type
local templategeogrefs = GetRefsForClaim(maxclaimspertemplategeog, item.labels.en.value) -- Getting the references for max date claim where Wikidata applies to part matches the Infobox place type
table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimspertemplategeog.mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimspertemplategeog)..")"..templategeogrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference
elseif articleplacetype == "town" then -- Situation 2: Getting population for max date claims where Infobox place type = town. If no UCL populations (earlier default) then get ILOC and SAL populations.
if maxclaimsperothergeog[ILOC_I]~=nil then
local ILOCrefs = GetRefsForClaim(maxclaimsperothergeog[ILOC_I], item.labels.en.value) -- Getting the references for max date claim where applies to part = ILOC
table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[ILOC_I].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[ILOC_I])..")"..ILOCrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference
end
if maxclaimsperothergeog[SAL_I]~=nil then
local SALrefs = GetRefsForClaim(maxclaimsperothergeog[SAL_I], item.labels.en.value) -- Getting the references for max date claim where applies to part = SAL
table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[SAL_I].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[SAL_I])..")"..SALrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference
end
else
for a, w in pairs(maxclaimsperothergeog) do -- Situation 3: Getting population for max date claims where applies to part doesn't = Infobox place type, and Infobox place type doesn't = town.
local othergeogrefs = GetRefsForClaim(w, item.labels.en.value) -- Loop through the claims in maxclaimsperothergeog and output all of them
table.insert (returnlist, mw.language.getContentLanguage():formatNum(tonumber(maxclaimsperothergeog[a].mainsnak.datavalue.value.amount)).." ("..GetAbbrLabelYearLink(maxclaimsperothergeog[a])..")"..othergeogrefs) --Insert the return string to returnlist. With population value, applies to part, point in time, reference
end
end
local wikitext = "" -- Initialise an empty string output (this is the value that goes back to the Infobox Australian place)
if #returnlist == 1 then -- If there is only one formatted "population (geography year)" string (one row) in returnlist then return it without a bullet point
wikitext = returnlist[1]
else
wikitext = "\n*"..table.concat(returnlist,"\n*") -- If there are multiple formatted "population (geography year)" strings (multiple rows) in returnlist then return all the rows with new line and bullet points between them
end
return wikitext..'[[Category:Australian place articles using Wikidata population values]]' -- Append the category to the output so we can keep track of which articles are using this module to output a population value
end
return p
84b30dfcb2e625e2d71b5dd908d8905009dd3e38
Module:Language/data
828
447
1049
2023-07-21T16:52:28Z
wikipedia>AquitaneHungerForce
0
Added Abenaki and Mohegan-Pequot.
Scribunto
text/plain
local U = mw.ustring.char
-- Diacritics, from the [[Combining Diacritical Marks]] block.
local grave = U(0x300)
local acute = U(0x301)
local circumflex = U(0x302)
local tilde = U(0x303)
local macron = U(0x304)
local breve = U(0x306)
local dot = U(0x307)
local diaeresis = U(0x308)
local double_acute = U(0x30B)
local caron = U(0x30C)
local double_grave = U(0x30F)
local invbreve = U(0x311)
local dot_below = U(0x323)
local undertie = U(0x35C)
--[[
This is a table of Wiktionary language codes with data belonging to them.
Name is the "canonical name" used on Wiktionary.
Article is the Wikipedia article.
Script is the ISO 15924 code.
]]
local data = {
["languages"] = {
["aaq"] = {
["name"] = "Penobscot",
},
["ab"] = {
["name"] = "Abkhaz",
},
["abe"] = {
["name"] = "Abenaki",
},
["ang"] = {
["name"] = "Old English",
["article"] = {"Old English"},
-- Remove macrons, acutes, and overdots
["replacements"] = {
decompose = true,
from = { "[" .. macron .. acute .. dot .. "]" },
},
},
["ar"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ara"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arb"] = {
["name"] = "Modern Standard Arabic",
["article"] = "Modern Standard Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["apc"] = {
["name"] = "North Levantine Arabic",
["article"] = "North Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ajp"] = {
["name"] = "South Levantine Arabic",
["article"] = "South Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arz"] = {
["name"] = "Egyptian Arabic",
["article"] = "Egyptian Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["av"] = {
["name"] = "Avar"
},
["be"] = {
["article"] = "Belarusian language",
["replacements"] = { [acute] = "", },
},
["bn"] = {
["name"] = "Bengali",
["article"] = "Bengali language",
},
["bua"] = {
["name"] = "Buryat",
},
["cel-pro"] = { -- Incorrect tag
["name"] = "Proto-Celtic",
["Wikipedia_code"] = "cel-x-proto",
},
["cel-x-proto"] = {
["name"] = "Proto-Celtic",
},
["cel-bry-pro"] = { -- Incorrect tag
["name"] = "Proto-Brythonic",
["article"] = "Common Brittonic",
["type"] = "reconstructed",
},
["cu"] = {
["name"] = "Old Church Slavonic",
["article"] = "Old Church Slavonic",
},
["de"] = {
["name"] = "German",
["article"] = "German language",
},
["en"] = {
["name"] = "English",
["article"] = "English language",
},
["es"] = {
["name"] = "Spanish",
["article"] = "Spanish language",
},
["egy"] = {
["name"] = "Egyptian",
},
["evn"] = {
["name"] = "Evenki",
["article"] = "Evenki language",
},
["fr"] = {
["name"] = "French",
["article"] = "French language",
},
["frm"] = {
["name"] = "Middle French",
["article"] = "Middle French",
},
["frp"] = {
["name"] = "Franco-Provençal",
},
["ff"] = {
["name"] = "Fula",
},
["gem-pro"] = { -- Incorrect tag
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["gem-x-proto"] = {
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gml"] = {
["name"] = "Middle Low German",
},
["gmw-ecg"] = {
["name"] = "East Central German",
},
["gmw-x-proto"] = {
["name"] = "Proto-West Germanic",
["article"] = "Proto-West Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gmq-x-gut"] = {
["name"] = "Gutnish",
["article"] = "Gutnish",
},
["goh"] = {
["replacements"] = {
decompose = true,
from = {
"[" .. macron .. circumflex .. diaeresis .. "]",
},
},
},
["got"] = {
["name"] = "Gothic",
["article"] = "Gothic language",
["replacements"] = {
-- Latin to Gothic since people will not want to have to copy
-- and paste Gothic letters in
["[AÁaáĀā]"] = "𐌰",
["[Bb]"] = "𐌱",
["[Gg]"] = "𐌲",
["[Dd]"] = "𐌳",
["[EeĒē]"] = "𐌴",
["[Qq]"] = "𐌵",
["[Zz]"] = "𐌶",
["[Hh]"] = "𐌷",
["[Þþ]"] = "𐌸",
["[IiÍí]"] = "𐌹",
["[Kk]"] = "𐌺",
["[Ll]"] = "𐌻",
["[Mm]"] = "𐌼",
["[Nn]"] = "𐌽",
["[Jj]"] = "𐌾",
["[UuÚúŪū]"] = "𐌿",
["[Pp]"] = "𐍀",
["[Rr]"] = "𐍂",
["[Ss]"] = "𐍃",
["[Tt]"] = "𐍄",
["[WwYy]"] = "𐍅",
["[Ff]"] = "𐍆",
["[Xx]"] = "𐍇",
["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted
["[OoŌō]"] = "𐍉",
},
},
["gsw"] = {
["name"] = "Alemannic German",
},
["grc"] = {
["name"] = "Ancient Greek",
["article"] = "Ancient Greek",
["replacements"] = {
decompose = true,
from = {
-- Replace variant letterforms with standard ones.
"ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ",
-- Remove macrons and breves.
"[" .. macron .. breve .. undertie .. "]"
},
to = {
"β", "ε", "θ", "κ", "ρ", "σ", "φ",
}
},
},
["grk-pro"] = { -- Incorrect tag
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["grk-x-proto"] = {
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
},
["grt"] = {
["name"] = "Garo",
},
["ha"] = {
["name"] = "Hausa",
-- remove tilde, grave, acute, macron, circumflex
["replacements"] = {
decompose = true,
from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" },
},
},
["hi"] = {
["name"] = "Hindi",
["article"] = "Hindi",
},
["ine-bsl-pro"] = {
["name"] = "Proto-Balto-Slavic",
["article"] = "Proto-Balto-Slavic language",
["type"] = "reconstructed",
},
["ine-pro"] = { -- Incorrect tag
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "ine-x-proto",
},
["ine-x-proto"] = {
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
},
["ja"] = {
["name"] = "Japanese",
["article"] = "Japanese language",
},
["jbo"] = { -- Lojban
["type"] = "appendix",
},
["ksk"] = {
["name"] = "Kansa",
["article"] = "Kansa language",
},
["la"] = {
["name"] = "Latin",
["article"] = "Latin",
["replacements"] = {
decompose = true,
from = { "[" .. macron .. breve .. diaeresis .. "]" },
},
},
["lt"] = {
["name"] = "Lithuanian",
-- remove acute, tilde, grave
["replacements"] = {
decompose = true,
from = { "[" .. acute .. tilde .. grave .. "]" },
},
},
["moe"] = {
["name"] = "Cree",
},
["mul"] = {
["name"] = "Translingual",
["article"] = "",
},
["nci"] = {
["name"] = "Classical Nahuatl",
["article"] = "Classical Nahuatl",
-- Remove macrons, acutes, circumflexes and graves
["replacements"] = {
decompose = true,
-- Remove macrons, acutes, circumflexes, graves, and saltillo;
-- see [[Saltillo (linguistics)]].
from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" },
},
},
["nds-de"] = {
["name"] = "German Low German",
},
["odt"] = {
["name"] = "Old Dutch",
},
["oge"] = {
["name"] = "Old Georgian",
},
["oj"] = {
["name"] = "Ojibwe",
},
["orv"] = {
["name"] = "Old East Slavic",
["article"] = "Old East Slavic",
["replacements"] = {
[U(0x484)] = "",
},
},
["osx"] = {
["name"] = "Old Saxon",
},
["pt"] = {
["name"] = "Portuguese",
["article"] = "Portuguese language",
-- ["scripts"] = { "Latn" },
},
["pa"] = {
["name"] = "Punjabi",
["article"] = "Punjabi language",
},
["pis"] = {
["name"] = "Pijin",
["article"] = "Pijin language",
},
["poz-x-poly-proto"] = {
["name"] = "Proto-Nuclear Polynesian",
["article"] = "Proto-Polynesian language",
["type"] = "reconstructed",
},
["rap"] = {
["name"] = "Rapa Nui",
["article"] = "Rapa Nui language",
},
["ru"] = {
["name"] = "Russian",
["article"] = "Russian language",
["replacements"] = { [acute] = "", },
},
["rw"] = {
["name"] = "Rwanda-Rundi",
},
["se"] = {
["replacements"] = {
["([đflmnŋrsšŧv])'%1"] = "%1%1",
},
},
["sem-pro"] = {
["name"] = "Proto-Semitic",
["article"] = "Proto-Semitic",
["type"] = "reconstructed",
},
["sh"] = {
["article"] = "Serbo-Croatian language",
["replacements"] = {
decompose = true,
from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave
.. grave .. invbreve .. acute .. macron .. tilde .. "]" },
to = { "%1" },
},
},
["sl"] = {
["name"] = "Slovene",
["replacements"] = {
decompose = true,
-- remove tonal orthography
from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"},
to = {"l"},
},
},
["sla-pro"] = {
["name"] = "Proto-Slavic", -- also Common Slavic
["type"] = "reconstructed",
["replacements"] = {
["[ÀÁÃĀȀȂ]"] = "A",
["[àáãāȁȃ]"] = "a",
["[ÈÉẼĒȄȆ]"] = "E",
["[èéẽēȅȇ]"] = "e",
["[ÌÍĨĪȈȊ]"] = "I",
["[ìíĩīȉȋ]"] = "i",
["[ÒÓÕŌȌȎŐ]"] = "O",
["[òóõōȍȏő]"] = "o",
["[ÙÚŨŪȔȖŰ]"] = "U",
["[ùúũūȕȗű]"] = "u",
["[ỲÝỸȲ]"] = "Y",
["[ỳýỹȳ]"] = "y",
["Ǭ"] = "Ǫ",
["ǭ"] = "ǫ",
["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "",
["ĭ"] = "ь",
["ŭ"] = "ъ",
},
},
["tts"] = {
["name"] = "Isan", -- also "Northeastern Thai"
["article"] = "Isan language",
},
["ug"] = {
["name"] = "Uyghur", --also less commonly "Uighur"
["article"] = "Uyghur language",
},
["uk"] = {
["article"] = "Ukrainian language",
["replacements"] = { [acute] = "", }
},
["ur"] = {
["name"] = "Urdu",
["article"] = "Urdu",
},
["xcl"] = {
["name"] = "Old Armenian",
["article"] = "Classical Armenian",
["replacements"] = {
["[՞՜՛՟]"] = "",
["և"] = "եւ",
},
},
["xgf"] = {
["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño"
["article"] = "Tongva language",
["replacements"] = {
["['`ʔ]"] = "ʼ",
},
},
["xlu"] = {
["name"] = "Luwian", -- not ISO name "Cuneiform Luwian"
["article"] = "Cuneiform Luwian"
},
["xpq"] = {
["name"] = "Mohegan-Pequot",
},
["xxt"] = {
["name"] = "Tambora",
["article"] = "Tambora language",
},
["xvn"] = {
["name"] = "Vandalic",
["article"] = "Vandalic language",
},
["yua"] = {
["name"] = "Yucatec Maya",
["article"] = "Yucatec Maya language",
},
["zh"] = {
["name"] = "Chinese",
["article"] = "Chinese language",
-- ["scripts"] = { "Hani" },
},
},
-- Here, keys (for example, "gem") are Wikipedia language codes used in
-- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary
-- code.
-- Subtags are not currently supported.
["redirects"] = {
["aae"] = "sq",
["aiq"] = "fa",
["aln"] = "sq",
["als"] = "sq",
["azb"] = "az",
["azj"] = "az",
["bgn"] = "bal",
["bs"] = "sh",
["bxr"] = "bua",
["ciw"] = "oj",
["cnr"] = "sh",
["fil"] = "tl",
["fuf"] = "ff",
["gem"] = "gem-pro", -- Not correct, but is commonly used.
["hak"] = "zh",
["hbo"] = "he",
["hr"] = "sh",
["ine"] = "ine-pro", -- Not correct, but might be commonly used.
["kjv"] = "sh",
["nan"] = "zh",
["prs"] = "fa",
["rn"] = "rw",
["sli"] = "gmw-ecg",
["sr"] = "sh",
["src"] = "sc",
["sro"] = "sc",
["tw"] = "ak",
["wae"] = "gsw",
["wep"] = "nds-de",
["yue"] = "zh",
["xno"] = "fro",
},
}
return data
3e1cbaa2d45dde581a9e11f0ad142ed7dd116100
Module:Ordnance Survey coordinates
828
1405
2740
2023-07-22T11:02:03Z
w>Hike395
0
lazy load module
Scribunto
text/plain
-- Lat Long functions in Lua
-- Ported to Lua from PHP by Wikipedia User Hike395, 18 Aug 2019
-- found by RWH at http://www.megalithia.com/search/llfuncshighlight.php
-- With thanks to Andy, G4JNT for inspiration in GEOG, and to the OSGB for their white paper on coordinate transformation
-- describing the iterative method used
-- thanks to the Ordnance survey of Ireland for details of the true and false origins of the Irish grid
-- You may use and redistribute this code under the terms of the GPL see http://www.gnu.org/copyleft/gpl.html
-- Written by Richard
-- www.megalithia.com
-- v0.something 27/2/2000
-- v 1.01 28 June 2004
-- v 1.02 6 Aug 2004 line 89 add "0" to chars in ngr=stripcharsnotinbag Thx Andy
-- v 1.03 9 Mar 2005 Jan (Klingon) added conversion to WGS84 map datum and removed limitation of digits of the grid ref
-- v 1.04 10 Aug 2005 Richard correct error trapping (only manifest on malformed ngrs
-- This code is predicated on the assumption that your are ONLY feeding it Irish or UK Grid references.
-- It uses the single char prefix of Irish grid refs to tell the difference, UK grid refs have a two letter prefix.
-- We would like an even number of digits for the rest of the grid ref.
-- Anything in the NGR other than 0-9, A-Z, a-z is eliminated.
-- WARNING this assumes there are no decimal points in your NGR components.
-- The transformation from OSGB36/Ireland 1965 to WGS84 is more precise than 5 m.
-- The function is case insensitive
local oscoord = {}
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local namespace = mw.title.getCurrentTitle().namespace;
local pow = math.pow
local sqrt = math.sqrt
local abs = math.abs
local floor = math.floor
local sin = math.sin
local cos = math.cos
local tan = math.tan
local atan = math.atan
local dr = math.deg(1.0)
local function northeast(lett,num,shift)
-- split into northings and eastings
local le=mw.ustring.len(num)
if le%2 == 1 then
return {err="Malformed numerical part of NGR"}
end
local pr=le/2
local n = mw.ustring.sub(num,pr+1)
local e = mw.ustring.sub(num,1,pr)
-- Hack to move to center of square: append a 5 to northings and eastings
shift = yesno(shift)
if shift then
n = n.."5"
e = e.."5"
pr = pr+1
end
-- end hack
n = n == '' and 0 or n
e = e == '' and 0 or e
pr = pow(10.0,(5.0-pr))
local T1 = mw.ustring.byte(mw.ustring.sub(lett,1,1))-65
if T1>8 then
T1 = T1-1
end
local T2 = nil
if mw.ustring.len(lett)>1 then
T2 = mw.ustring.byte(mw.ustring.sub(lett,2))-65
if T2>8 then
T2 = T2-1
end
end
return {n=n,e=e,pr=pr,T1=T1,T2=T2}
end
local function GBEN2LL(e,n)
-- True Origin is 2 deg W
local phi0uk=-2.0
-- True Origin is 49 deg N
local lambda0uk=49.0
-- scale factor @ central meridian
local F0uk=0.9996012717
-- True origin in 400 km E of false origin
local E0uk=400000.0
--True origin is 100 km S of false origin
local N0uk=-100000.0
-- semi-major axis (in line to equator) 0.996012717 is yer scale @ central meridian
local auk=6377563.396*F0uk
--semi-minor axis (in line to poles)
local buk=6356256.91*F0uk
-- flatness=a1-b1/(a1+b1)
local n1uk=0.00167322025032508731869331280635710896296
-- first eccentricity squared=2*f-f^2where f=(a1-b1)/a1
local e2uk=0.006670539761597529073698869358812557054558
local k=(n-N0uk)/auk+lambda0uk/dr
local nextcounter=0
local j3, j4, j5, j6, m
repeat
nextcounter=nextcounter+1
local k3=k-lambda0uk/dr
local k4=k+lambda0uk/dr
j3=(1.0+n1uk+1.25*pow(n1uk,2.0)+1.25*pow(n1uk,3.0))*k3
j4=(3.0*n1uk+3.0*pow(n1uk,2.0)+2.625*pow(n1uk,3.0))*sin(k3)*cos(k4)
j5=(1.875*pow(n1uk,2.0)+1.875*pow(n1uk,3.0))*sin(2.0*k3)*cos(2.0*k4)
j6=35.0/24.0*pow(n1uk,3.0)*sin(3.0*k3)*cos(3.0*k4)
m=buk*(j3-j4+j5-j6)
k=k+(n-N0uk-m)/auk
until abs(n-N0uk-m)<=0.000000001 or nextcounter>=100
local v=auk/sqrt(1.0-e2uk*pow(sin(k),2.0))
local r=v*(1.0-e2uk)/(1.0-e2uk*pow(sin(k),2.0))
local h2=v/r-1.0
local y1=e-E0uk
j3=tan(k)/(2.0*r*v)
j4=tan(k)/(24.0*r*pow(v,3.0))*(5.0+3.0*pow(tan(k),2.0)+h2-9.0*pow(tan(k),2.0)*h2)
j5=tan(k)/(720.0*r*pow(v,5.0))*(61.0+90.0*pow(tan(k),2.0)+45.0*pow(tan(k),4.0))
local k9=k-y1*y1*j3+pow(y1,4.0)*j4-pow(y1,6.0)*j5
j6=1.0/(cos(k)*v)
local j7=1.0/(cos(k)*6.0*pow(v,3.0))*(v/r+2.0*pow(tan(k),2.0))
local j8=1.0/(cos(k)*120.0*pow(v,5.0))*(5.0+28.0*pow(tan(k),2.0)+24.0*pow(tan(k),4.0))
local j9=1.0/(cos(k)*5040.0*pow(v,7.0))
local j9=j9*(61.0+662.0*pow(tan(k),2.0)+1320.0*pow(tan(k),4.0)+720.0*pow(tan(k),6.0))
local long=phi0uk+dr*(y1*j6-y1*y1*y1*j7+pow(y1,5.0)*j8-pow(y1,7.0)*j9)
local lat=k9*dr
local v=6377563.396/sqrt(1.0-e2uk*pow(sin(k),2.0))
local cartxa=v*cos(k9)*cos(long/dr)
local cartya=v*cos(k9)*sin(long/dr)
local cartza=(1.0-e2uk)*v*sin(k9)
-- Helmert-Transformation from OSGB36 to WGS84 map date
local rotx=-0.1502/3600.0/dr
local roty=-0.2470/3600.0/dr
local rotz=-0.8421/3600.0/dr
local scale=-20.4894/1000000.0
local cartxb=446.448+(1.0+scale)*cartxa+rotz*cartya-roty*cartza
local cartyb=-125.157-rotz*cartxa+(1.0+scale)*cartya+rotx*cartza
local cartzb=542.06+roty*cartxa-rotx*cartya+(1.0+scale)*cartza
-- convert Cartesian to long/lat
local awgs84=6378137.0
local bwgs84=6356752.3141
local e2wgs84=0.00669438003551279089034150031998869922791
local lambdaradwgs84=atan(cartyb/cartxb)
long=lambdaradwgs84*dr
local pxy=sqrt(pow(cartxb,2.0)+pow(cartyb,2.0))
local phiradwgs84
local phinewwgs84=atan(cartzb/pxy/(1.0-e2wgs84))
nextcounter=0
repeat
phiradwgs84=phinewwgs84
nextcounter=nextcounter+1
v=awgs84/sqrt(1.0-e2wgs84*pow(sin(phiradwgs84),2.0))
phinewwgs84=atan((cartzb+e2wgs84*v*sin(phiradwgs84))/pxy)
until abs(phinewwgs84-phiradwgs84)<=0.000000000001 or nextcounter>=100
lat=phinewwgs84*dr
return {region="GB",lat=lat,long=long}
end
local function GB2LL(lett,num)
-- British OS to Lat+Long
-- first caclulate e,n
-- computing e and n exactly, to get SW corner of box
local ne = northeast(lett,num)
if ne.err then
return {region="GB",err=ne.err}
end
-- use British definition of e and n
local e=500000.0*(ne.T1%5)+100000.0*(ne.T2%5)-1000000.0+ne.e*ne.pr
local n=1900000.0-500000.0*floor(ne.T1/5)-100000.0*floor(ne.T2/5)+ne.n*ne.pr
local result = GBEN2LL(e,n)
result.prec = 0.8165*ne.pr
return result
end
local function IrishEN2LL(e,n)
-- True Origin is 8 deg W
local phi0ir=-8.0
-- True Origin is 53.5 deg N
local lambda0ir=53.5
-- scale factor @ central meridian
local F0ir=1.000035
-- True origin in 200 km E of false origin
local E0ir=200000.0
--True origin is 250km N of false origin
local N0ir=250000.0
-- semi-major axis (in line to equator) 1.000035 is yer scale @ central meridian
local air=6377340.189*F0ir
--semi-minor axis (in line to poles)
local bir=6356034.447*F0ir
-- flatness=a1-b1/(a1 + b1)
local n1ir=0.001673220384152058651484728058385228837777
-- first eccentricity squared=2*f-f^2 where f=(a1-b1)/a1
local e2ir=0.006670540293336110419293763349975612794125
local k=(n-N0ir)/air+lambda0ir/dr
local nextcounter=0
local j3,j4,j5,j6,m
repeat
nextcounter=nextcounter+1
local k3=k-lambda0ir/dr
local k4=k+lambda0ir/dr
j3=(1.0+n1ir+1.25*pow(n1ir,2.0)+1.25*pow(n1ir,3.0))*k3
j4=(3.0*n1ir+3.0*pow(n1ir,2.0)+2.625*pow(n1ir,3.0))*sin(k3)*cos(k4)
j5=(1.875*pow(n1ir,2.0)+1.875*pow(n1ir,3.0))*sin(2.0*k3)*cos(2.0*k4)
j6=35.0/24.0*pow(n1ir,3.0)*sin(3.0*k3)*cos(3.0*k4)
m=bir*(j3-j4+j5-j6)
k=k+(n-N0ir-m)/air
until abs(n-N0ir-m)<=0.000000000001 or nextcounter>=10000
local v=air/sqrt(1.0-e2ir*pow(sin(k),2.0))
local r=v*(1.0-e2ir)/(1.0-e2ir*pow(sin(k),2.0))
local h2=v/r-1.0
local y1=e-E0ir
j3=tan(k)/(2.0*r*v)
j4=tan(k)/(24.0*r*pow(v,3.0))*(5.0+3.0*pow(tan(k),2.0)+h2-9.0*pow(tan(k),2.0)*h2)
j5=tan(k)/(720.0*r*pow(v,5.0))*(61.0+90.0*pow(tan(k),2.0)+45.0*pow(tan(k),4.0))
local k9=k-y1*y1*j3+pow(y1,4.0)*j4-pow(y1,6.0)*j5
j6=1.0/(cos(k)*v)
local j7=1.0/(cos(k)*6.0*pow(v,3.0))*(v/r+2.0*pow(tan(k),2.0))
local j8=1.0/(cos(k)*120.0*pow(v,5.0))*(5.0+28.0*pow(tan(k),2.0)+24.0*pow(tan(k),4.0))
local j9=1.0/(cos(k)*5040.0*pow(v,7.0))
local j9=j9*(61.0+662.0*pow(tan(k),2.0)+1320.0*pow(tan(k),4.0)+720.0*pow(tan(k),6.0))
local long=phi0ir+dr*(y1*j6-y1*y1*y1*j7+pow(y1,5.0)*j8-pow(y1,7.0)*j9)
local lat=k9*dr
-- convert long/lat to Cartesian coordinates
v=6377340.189/sqrt(1.0-e2ir*pow(sin(k),2.0))
local cartxa=v*cos(k9)*cos(long/dr)
local cartya=v*cos(k9)*sin(long/dr)
local cartza=(1.0-e2ir)*v*sin(k9)
-- Helmert-Transformation from Ireland 1965 to WGS84 map date
local rotx=1.042/3600.0/dr
local roty=0.214/3600.0/dr
local rotz=0.631/3600.0/dr
local scale=8.15/1000000.0
local cartxb=482.53+(1.0+scale)*cartxa+rotz*cartya-roty*cartza
local cartyb=-130.596-rotz*cartxa+(1.0+scale)*cartya+rotx*cartza
local cartzb=564.557+roty*cartxa-rotx*cartya+(1.0+scale)*cartza
-- convert Cartesian to long/lat
local awgs84=6378137.0
local bwgs84=6356752.3141
local e2wgs84=0.00669438003551279089034150031998869922791
local lambdaradwgs84=atan(cartyb/cartxb)
long=lambdaradwgs84*dr
local pxy=sqrt(pow(cartxb,2.0)+pow(cartyb,2.0))
local phinewwgs84=atan(cartzb/pxy/(1.0-e2wgs84))
local phiradwgs84
nextcounter=0
repeat
phiradwgs84=phinewwgs84
nextcounter=nextcounter+1
v=awgs84/sqrt(1.0-e2wgs84*pow(sin(phiradwgs84),2.0))
phinewwgs84=atan((cartzb+e2wgs84*v*sin(phiradwgs84))/pxy)
until abs(phinewwgs84-phiradwgs84)<=0.000000000001 or nextcounter>=10000
lat=phinewwgs84*dr
return {region="IE",lat=lat,long=long}
end
local function Irish2LL(lett,num)
-- Irish OS to Lat+Long
-- first caclulate e,n
-- computing e and n exactly, to get SW corner of box
local ne = northeast(lett,num)
if ne.err then
return {region="IE", err=ne.err}
end
-- use Irish definition of northing and easting
local e=100000.0*(ne.T1%5.0)+ne.e*ne.pr
local n=ne.n*ne.pr+100000.0*(4.0-floor(ne.T1/5.0))
local result = IrishEN2LL(e,n)
result.prec = 0.8165*ne.pr -- useful @ Commons
return result
end
local function empty(s)
return not s or s == ''
end
local function NGR2LL(ngr)
local result = {}
ngr, _ = mw.ustring.gsub(mw.ustring.upper(ngr),"[%s%p]","")
local first, last, lett, num = mw.ustring.find(ngr,"^([A-Z]+)(%d+)$")
if not first or empty(lett) or empty(num) or mw.ustring.len(lett) > 2 then
return {err="Malformed NGR"}
end
if mw.ustring.len(lett) == 1 then
return Irish2LL(lett,num)
end
return GB2LL(lett, num)
end
local function split(s,sep)
-- split a string s into chunks, separated by sep
sep = sep or "%s"
local t = {}
for chunk in mw.ustring.gmatch(s,"([^"..sep.."]+)") do
table.insert(t,chunk)
end
return t
end
local function trim(s)
s, _ = mw.ustring.gsub(s,"^%s+","")
s, _ = mw.ustring.gsub(s,"%s+$","")
return s
end
local function alldigits(s)
return not mw.ustring.find(s,"%D")
end
local function warning(errmsg)
local preview = require('Module:If preview')
local msg = errmsg or 'Empty OS grid ref'
local html = preview._warning({ msg })
if namespace == 0 and errmsg then
html = html..'[[Category:Pages with malformed OS coordinates]]'
end
return html
end
function oscoord.main(frame)
local args = getArgs(frame)
local input = args[1]
if empty(input) then
return warning(nil)
end
local linktitle = args[2]
local namearg = args["name"]
local rawurl = yesno(args["rawurl"])
local args = split(input,'_')
local LL
local restargs = 1
local current_page = mw.title.getCurrentTitle()
local pagename = mw.uri.encode( current_page.prefixedText, 'WIKI' );
if #args >= 2 and alldigits(args[2]) then
if mw.ustring.sub(args[1],1,1) == 'i' then
local firstArg = mw.ustring.sub(args[1],2)
if alldigits(firstArg) then
LL = IrishEN2LL(firstArg,args[2])
restargs = 3
if empty(linktitle) then
linktitle=args[1]..'_'..args[2]
end
end
elseif alldigits(args[1]) then
LL = GBEN2LL(args[1],args[2])
restargs = 3
if empty(linktitle) then
linktitle=args[1]..'_'..args[2]
end
end
else
LL = NGR2LL(args[1])
restargs = 2
if empty(linktitle) then
linktitle=args[1]
end
end
linktitle = trim(linktitle)
if not empty(LL.err) then
return linktitle ..warning(LL.err)
end
-- https://geohack.toolforge.org/geohack.php?pagename=Mount_Whitney¶ms=36.578580925_N_118.29199495_W_type:mountain_region:US-CA_scale:100000_source:NGS
local url = ''
if not rawurl then
url = url..'['
end
url = url..'https://geohack.toolforge.org/geohack.php?'
if not empty(pagename) then
url = url..'pagename='..pagename..'&'
end
LL.lat = LL.lat or 0
LL.long = LL.long or 0
url = url..'params='..LL.lat..'_N_'
if LL.long < 0 then
url = url..(-LL.long)..'_W'
else
url = url..LL.long..'_E'
end
for i = restargs,#args do
url = url..'_'..args[i]
end
if not mw.ustring.find(input,"region") and LL.region then
url = url..'_region:'..LL.region
end
if not mw.ustring.find(input,"scale") and
not mw.ustring.find(input,"type") and
not mw.ustring.find(input,"dim") and LL.prec then
url = url..'_dim:'..floor(50*LL.prec+0.5)..'m'
end
if not empty(namearg) then
url = url .. "&title=" .. mw.uri.encode(namearg)
end
if not rawurl then
url = url..' '..linktitle..']'
end
return url
end
function oscoord.oscoord(frame)
local output = '<span class="plainlinks nourlexpansion" style="white-space: nowrap">' .. oscoord.main(frame) .. '</span>'
if namespace == 0 then
output = output .. '[[Category:Articles with OS grid coordinates]]'
end
return output
end
return oscoord
cfc17a53b8311d7bd2cec401a6dec6c7f6cbfb5d
Module:Plain text
828
169
391
2023-07-24T05:28:17Z
wikipedia>Jonesey95
0
keep contents of sub, sup, and underline (see talk)
Scribunto
text/plain
--converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar"
--removes anything enclosed in tags that isn't nested, mediawiki strip markers (references etc), files, italic and bold markup
require[[strict]]
local p = {}
function p.main(frame)
local text = frame.args[1]
local encode = require('Module:yesno')(frame.args.encode)
return p._main(text, encode)
end
function p._main(text, encode)
if not text then return end
text = mw.text.killMarkers(text)
:gsub(' ', ' ') --replace nbsp spaces with regular spaces
:gsub('<br ?/?>', ', ') --replace br with commas
:gsub('<span.->(.-)</span>', '%1') --remove spans while keeping text inside
:gsub('<i.->(.-)</i>', '%1') --remove italics while keeping text inside
:gsub('<b.->(.-)</b>', '%1') --remove bold while keeping text inside
:gsub('<em.->(.-)</em>', '%1') --remove emphasis while keeping text inside
:gsub('<strong.->(.-)</strong>', '%1') --remove strong while keeping text inside
:gsub('<sub.->(.-)</sub>', '%1') --remove subscript markup; retain contents
:gsub('<sup.->(.-)</sup>', '%1') --remove superscript markup; retain contents
:gsub('<u.->(.-)</u>', '%1') --remove underline markup; retain contents
:gsub('<.->.-<.->', '') --strip out remaining tags and the text inside
:gsub('<.->', '') --remove any other tag markup
:gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '') --strip out files
:gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '') --strip out use of image:
:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '') --strip out categories
:gsub('%[%[[^%]]-|', '') --strip out piped link text
:gsub('([^%[])%[[^%[%]][^%]]-%s', '%1') --strip out external link text
:gsub('^%[[^%[%]][^%]]-%s', '') --strip out external link text
:gsub('[%[%]]', '') --then strip out remaining [ and ]
:gsub("'''''", "") --strip out bold italic markup
:gsub("'''?", "") --not stripping out '''' gives correct output for bolded text in quotes
:gsub('----+', '') --remove ---- lines
:gsub("^%s+", "") --strip leading
:gsub("%s+$", "") --and trailing spaces
:gsub("%s+", " ") --strip redundant spaces
if encode then
return mw.text.encode(text)
else
return text
end
end
return p
8d406c43e8cf1dadf34be7d3b395f44ba4c48b75
Template:Cite book/doc
10
691
1550
2023-07-24T21:51:38Z
wikipedia>Rontrigger
0
wikitext
text/x-wiki
{{high-risk}}
<noinclude>{{pp-protected|reason=Persistent [[WP:Disruptive editing|disruptive editing]] Protecting high visibility template.|small=yes}}</noinclude>{{Documentation subpage}}
<!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). -->
{{csdoc|lua}}
{{csdoc|cs1}}
{{csdoc|lead|books}} When citing an article in a periodical, use {{tl|cite journal}} or {{tl|cite magazine}}. For conference papers, use {{tl|cite conference}}. For edited collections, use {{tl|cite encyclopedia}}. For theses, use {{tl|cite thesis}}.
==Usage==
{{csdoc|usage}}
{{csdoc|usage common}}
; To cite a book with a credited author
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |author-link= |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight>
; To cite a book with no credited author
: <syntaxhighlight lang="wikitext" inline>{{cite book |author=<!--Staff writer(s); no by-line.--> |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight>
; To cite an online book that has been archived
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |url= |url-status= |location= |publisher= |isbn= |archive-url= |archive-date=}}</syntaxhighlight>
; To cite a book written in a foreign language
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |trans-title= |url= |language= |location= |publisher= |isbn=}}</syntaxhighlight>
; To cite and quote an archived, two-author, foreign language book re-published as a PDF on an information aggregation service requiring a subscription
: <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |last2= |first2= |date= |title= |trans-title= |url= |url-status= |url-access= |format= |language= |location= |publisher= |isbn= |archive-url= |archive-date= |via= |quote=}}</syntaxhighlight>
{{end}}
{{csdoc|usage vertical common}}
<syntaxhighlight lang="wikitext">
{{cite book
| last =
| first =
| author-link =
| date =
| title =
| url =
| location =
| publisher =
| page = <!-- or pages: -->
| isbn =
}}
</syntaxhighlight>
{{end}}
{{csdoc|usage full}}
<syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |author-link1= |last2= |first2= |author-link2= |last3= |first3= |author-link3= |last4= |first4= |author-link4= |last5= |first5= |author-link5= |display-authors= |author-mask1= |author-mask2= |author-mask3= |author-mask4= |author-mask5= |editor-last1= |editor-first1= |editor-link1= |editor-last2= |editor-first2= |editor-link2= |editor-last3= |editor-first3= |editor-link3= |editor-last4= |editor-first4= |editor-link4= |editor-last5= |editor-first5= |editor-link5= |display-editors= |editor-mask1= |editor-mask2= |editor-mask3= |editor-mask4= |editor-mask5= |translator-last1= |translator-first1= |translator-link1= |translator-last2= |translator-first2= |translator-link2= |translator-last3= |translator-first3= |translator-link3= |translator-last4= |translator-first4= |translator-link4= |translator-last5= |translator-first5= |translator-link5= |display-translators= |translator-mask1= |translator-mask2= |translator-mask3= |translator-mask4= |translator-mask5= |others= |name-list-style= |date= |year= |orig-date= |chapter= |script-chapter= |trans-chapter= |chapter-url= |chapter-url-access= |chapter-format= |title= |script-title= |trans-title= |title-link= |url= |url-status= |url-access= |format= |type= |series= |language= |volume= |edition= |publication-place= |location= |publisher= |publication-date= |page= |pages= |at= |no-pp= |arxiv= |asin= |asin-tld= |bibcode= |bibcode-access= |biorxiv= |citeseerx= |doi= |doi-access= |doi-broken-date= |eissn= |hdl= |hdl-access= |isbn= |ismn= |issn= |jfm= |jstor= |jstor-access= |lccn= |mr= |oclc= |ol= |ol-access= |osti= |osti-access= |pmc= |pmc-embargo-date= |pmid= |rfc= |sbn= |ssrn= |s2cid= |s2cid-access= |zbl= |id= |archive-url= |archive-date= |access-date= |via= |quote= |script-quote= |trans-quote= |quote-page= |quote-pages= |mode= |postscript= |ref=}}</syntaxhighlight>
{{end}}
{| class="wikitable"
|+Full parameter set in vertical format
! Parameters !! Prerequisites !! Brief instructions / notes !! Vertical list
|-
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
|
| Author's last name or single name author. Don't link.
| rowspan="111" style="vertical-align:top;" | <pre style="margin:0px; border:none;">
{{cite book
|last1 =
|first1 =
|author-link1 =
|last2 =
|first2 =
|author-link2 =
|last3 =
|first3 =
|author-link3 =
|last4 =
|first4 =
|author-link4 =
|last5 =
|first5 =
|author-link5 =
|display-authors =
|author-mask1 =
|author-mask2 =
|author-mask3 =
|author-mask4 =
|author-mask5 =
|editor-last1 =
|editor-first1 =
|editor-link1 =
|editor-last2 =
|editor-first2 =
|editor-link2 =
|editor-last3 =
|editor-first3 =
|editor-link3 =
|editor-last4 =
|editor-first4 =
|editor-link4 =
|editor-last5 =
|editor-first5 =
|editor-link5 =
|display-editors =
|editor-mask1 =
|editor-mask2 =
|editor-mask3 =
|editor-mask4 =
|editor-mask5 =
|translator-last1 =
|translator-first1 =
|translator-link1 =
|translator-last2 =
|translator-first2 =
|translator-link2 =
|translator-last3 =
|translator-first3 =
|translator-link3 =
|translator-last4 =
|translator-first4 =
|translator-link4 =
|translator-last5 =
|translator-first5 =
|translator-link5 =
|display-translators =
|translator-mask1 =
|translator-mask2 =
|translator-mask3 =
|translator-mask4 =
|translator-mask5 =
|others =
|name-list-style =
|date =
|year =
|orig-date =
|chapter =
|script-chapter =
|trans-chapter =
|chapter-url =
|chapter-url-access =
|chapter-format =
|title =
|script-title =
|trans-title =
|title-link =
|url =
|url-status =
|url-access =
|format =
|type =
|series =
|language =
|volume =
|edition =
|publication-place =
|location =
|publisher =
|publication-date =
|page =
|pages =
|at =
|no-pp =
|arxiv =
|asin =
|asin-tld =
|bibcode =
|bibcode-access =
|biorxiv =
|citeseerx =
|doi =
|doi-access =
|doi-broken-date =
|eissn =
|hdl =
|hdl-access =
|isbn =
|ismn =
|issn =
|jfm =
|jstor =
|jstor-access =
|lccn =
|mr =
|oclc =
|ol =
|ol-access =
|osti =
|osti-access =
|pmc =
|pmc-embargo-date =
|pmid =
|rfc =
|sbn =
|ssrn =
|s2cid =
|s2cid-access =
|zbl =
|id =
|archive-url =
|archive-date =
|access-date =
|via =
|quote =
|script-quote =
|trans-quote =
|quote-page =
|quote-pages =
|mode =
|postscript =
|ref =
}}
</pre>
|-
| {{tooltip|2=or any of its aliases, including: first; given1; given; author-first1; author-first; (etc.)|first1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Author's first name. Don't link.
|-
| {{tooltip|2=or any of its aliases, including: author-link; author-link1; subject-link1; subject-link; (etc.)|author-link1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Title of Wikipedia article about the first author. Don't link.
|-
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Like <code>last1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: given2; author-first2; (etc.)|first2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>first1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link2; (etc.)|author-link2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>author-link1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>last1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: given3; author-first3; (etc.)|first3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>first1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link3; (etc.)|author-link3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>author-link1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>last1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: given4; author-first4; (etc.)|first4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>first1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link4; (etc.)|author-link4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>author-link1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>last1</code>, but for 5th author. Similar: last6, etc.
|-
| {{tooltip|2=or any of its aliases, including: given5; author-first5; (etc.)|first5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| Like <code>first1</code>, but for 5th author. Similar: first6, etc.
|-
| {{tooltip|2=or any of its aliases, including: subject-link5; (etc.)|author-link5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| Like <code>author-link1</code>, but for 5th author. Similar: author-link6, etc.
|-
| {{tooltip|2=or alias displayauthors|display-authors}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Number (number of authors displayed) or <code>etal</code> (more authors)
|-
| {{tooltip|2=or any of its aliases, including: author-mask; author1-mask; (etc.)|author-mask1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| rowspan="5" | See [[#Display options|Display options]] below; not for lists of cited works
|-
| {{tooltip|2=or any of its aliases, including: author2-mask; (etc.)|author-mask2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
|-
| {{tooltip|2=or any of its aliases, including: author3-mask; (etc.)|author-mask3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
|-
| {{tooltip|2=or any of its aliases, including: author4-mask; (etc.)|author-mask4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
|-
| {{tooltip|2=or any of its aliases, including: author5-mask; (etc.)|author-mask5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
|-
|| editor-last1 || || may also use "editor-last"
|-
|| editor-first1 || editor-last1 || may also use "editor-first"
|-
|| editor-link1 || editor-last1 || may also use "editor-link"
|-
|| editor-mask1 || editor-last1 ||
|-
|| display-editors || ||
|-
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
|
| Like <code>last1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator-first; translator-given1; translator-given; (etc.)|translator-first1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>first1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator-link; (etc.)|translator-link1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>author-link1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>last1</code>, but for 2nd translator. Similar: translator-last3, etc.
|-
| {{tooltip|2=or any of its aliases, including: translator2-first; translator-given2; (etc.)|translator-first2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| Like <code>first1</code>, but for 2nd translator. Similar: translator-first3, etc.
|-
| {{tooltip|2=or alias translator2-link|translator-link2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| Like <code>author-link1</code>, but for 2nd transl. Similar: translator-link3, ...
|-
| {{nowrap|display-translators}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>display-authors</code>, but for translators
|-
| {{tooltip|2=or any of its aliases, including: translator-mask; (etc.)|translator-mask1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| rowspan="2" | See [[#Display options|Display options]] below; not for lists of cited works
|-
| {{tooltip|2=or alias translator2-mask|translator-mask2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
|-
| name-list-style
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Set to <code>amp</code> or <code>ampersand</code> to separate the last author with {{nowrap|"<code> & </code>"}}; set to <code>and</code> to separate with {{nowrap|"<code> and </code>"}}
|-
|| others || ||
|-
|| date || ||
|-
|| year || ||
|-
|| orig-date || date or year ||
|-
|| chapter || || This should be the title of the chapter cited. Do not wikilink "chapter" if "chapter-url" is provided
|-
|| script-chapter || ||
|-
|| trans-chapter || chapter or script-chapter ||
|-
|| chapter-url || chapter or script-chapter ||
|-
|| chapter-format || chapter-url ||
|-
|| title || ||
|-
|| script-title || ||
|-
|| trans-title || title or script-title ||
|-
|| title-link || title or script-title || Name of a Wikipedia article about the work. Do not use if "url" is provided
|-
|| url || title or script-title || Do not use if "title-link" is provided
|-
|| url-status || archive-url ||
|-
|| url-access || url ||
|-
|| format || url ||
|-
|| type || ||
|-
|| series || ||
|-
|| language || ||
|-
|| volume || ||
|-
|| edition || ||
|-
|| publication-place || publisher ||
|-
|| location || publisher || can be used for written-at location when "publication-place" is used for publication place
|-
|| publisher || ||
|-
|| publication-date || ||
|-
|| page || || choose one: "page", "pages", or "at"
|-
|| pages || || choose one: "page", "pages", or "at". Use when content on multiple pages supports the article text.
|-
|| at || || choose one: "page", "pages", or "at"
|-
|| no-pp || page or pages || set no-pp to "yes" to suppress the "p." or "pp." before page numbers
|-
|| arxiv || ||
|-
|| asin || ||
|-
|| asin-tld || asin ||
|-
|| bibcode || ||
|-
|| biorxiv || ||
|-
|| citeseerx || ||
|-
|| doi || ||
|-
|| doi-broken-date || doi ||
|-
|| eissn || ||
|-
|| hdl || ||
|-
|| isbn || || '''always include ISBN''', if one has been assigned
|-
|| issn || ||
|-
|| ismn || ||
|-
|| jfm || ||
|-
|| jstor || ||
|-
|| lccn || ||
|-
|| mr || ||
|-
|| oclc || ||
|-
|| ol || ||
|-
|| osti || ||
|-
|| pmc || ||
|-
|| pmc-embargo-date || pmc ||
|-
|| pmid || ||
|-
|| rfc || ||
|-
|| sbn || ||
|-
|| ssrn || ||
|-
|| s2cid || ||
|-
|| zbl || ||
|-
|| id || ||
|-
|| archive-url || archive-date, url ||
|-
|| archive-date || archive-url ||
|-
|| access-date || url ||
|-
|| via || ||
|-
|| quote || ||
|-
|| script-quote || ||
|-
|| trans-quote || ||
|-
|| quote-page || || choose one: "quote-page", "quote-pages"
|-
|| quote-pages || || choose one: "quote-page", "quote-pages". Use when quote contains contents from multiple pages.
|-
|| mode || || <code>cs1</code> or <code>cs2</code>
|-
|| postscript || ||
|-
|| ref || ||
|-
| colspan="4" style="text-align: center" | If a field name is listed in the '''Prerequisites''' column, it is a prerequisite for the field to the left.
|}
==Examples==
{{markup2|t=Title
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book}}</syntaxhighlight>
|r={{cite book |title=Mysterious Book}}
}}
{{markup2|t=Title and year
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book |date=1901}}</syntaxhighlight>
|r={{cite book |title=Mysterious Book |date=1901}}
}}
{{markup2|t=Basic usage (single author)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}
}}
{{markup2|t=Basic usage (two authors)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}
}}
{{markup2|t=Basic usage with url (and access-date) and edition
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}
}}{{anchor|different authors}}
{{markup2|t=Citing a chapter in a book with different authors for different chapters and an editor
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}
}}
{{markup2|t=Citing a chapter in a book with two joint authors and an editor
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}
}}
{{markup2|t=Three authors, title with a differently-named title link, edition
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}
}}
{{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (without volume and lastauthoramp)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}
}}
{{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (with volume and lastauthoramp)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}
}}
{{markup2|t=Date without day, wikilinked title, publisher, pages, edition, location
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}</syntaxhighlight>
|r={{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}
}}
{{markup2|t=Other language
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}
}}
{{markup2|t=Using a [[Digital object identifier|DOI]]
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}</syntaxhighlight>
|r={{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}
}}
{{markup2|t=Using author-mask parameter
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight>
|m2=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}</syntaxhighlight>
|m3=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}
|r2={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}
|r3={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}
}}
{{markup2|t=Using display-authors parameter
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}
}}
==Parameters==
===Syntax===
{{csdoc|syntax}}
===COinS===
{{csdoc|coins}}
===What's new===
{{csdoc|whats new}}
===Deprecated===
{{csdoc|deprecated}}
===Description===
====Authors====
{{csdoc|author|contributor=yes|others=yes}}
====Date====
{{csdoc|date}}
====Title====
{{csdoc|title|title_format=italics}}
{{csdoc|type}}
{{csdoc|chapter}}
{{csdoc|language}}
====Publisher====
{{csdoc|publisher}}
====Edition, series, volume====
{{csdoc|edition}}
{{csdoc|series}}
{{csdoc|volume}}
====In-source locations====
{{csdoc|pages}}
===={{Anchor|url}}URL====
{{csdoc|url}}
====Chapter URL====
{{csdoc|chapterurl}}
====Anchor====
{{distinguish|#Identifiers}}
{{csdoc|ref}}
====Identifiers====
{{distinguish|#Anchor}}
{{csdoc|id1}}
{{csdoc|id2}}
====Quote====
{{csdoc|quote}}
====Editors====
{{csdoc|editor}}
====Lay summary====
{{csdoc|lay}}
====Display options====
{{csdoc|display}}
====Subscription or registration required====
{{csdoc|registration}}
==TemplateData==
See [[Template:Cite book/TemplateData]].
== Citation tools==
{{main|Help:Citation tools}}
*'''[https://citer.toolforge.org/ Citer]''': A web tool that converts a DOI, ISBN, PMID, PMCID, [[OCLC]], or [[Google Books]] URL into a citation and [[Help:Shortened footnotes|shortened footnote]].
* '''[https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ DOI and Google Books Citation Maker]''': A web tool for generating filled citation templates via DOIs and Google Books URLs.
{{Citation Style 1}}
{{Wikipedia referencing}}
{{UF-COinS}}
<includeonly>{{Sandbox other||
<!-- Categories go below this line, please; interwikis go to Wikidata, thank you! -->
[[Category:Citation Style 1 templates|B]]
[[Category:Book citation templates| ]]
[[Category:Book templates]]
}}</includeonly>
4035f77bf4e9982c578739e7272d6d3b11242c31
Template:Lua/doc
10
254
1267
563
2023-07-25T13:08:32Z
wikipedia>JWBTH
0
See also: * {{tl|Uses TemplateStyles}}
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|Lua talk}}
{{Lua|Module:Lua banner}}
<!-- Categories go at the bottom of this page, and interwikis go on Wikidata. -->
{{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}}
This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories.
== Usage ==
; Basic : {{tlx|Lua|''module name''}}
; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}}
The first module name is required.
== Examples ==
* {{tlx|Lua|Module:Example}}
{{Lua|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua|Module:Example|Module:Example}}
{{Lua|Module:Example|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua}}
{{Lua|nocat=true}}
{{clear}}
== Categorisation ==
===Template category===
This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}.
Some modules have a default category other than [[:Category:Lua-based templates]]:
* [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]].
* [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]].
* [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]].
* [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]].
===Error category===
If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]].
===Category suppression===
To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.)
== TemplateData ==
{{Format TemplateData|TNT=Lua banner}}
== See also ==
* [[Wikipedia:Lua]]
* {{tl|module rating}}
* {{tl|Uses TemplateStyles}}
<includeonly>{{Sandbox other|
| <!-- Categories go here, and interwikis go on Wikidata. -->
[[Category:Lua-based templates| ]]
[[Category:Template namespace templates]]
}}</includeonly>
a0a237a34ba98213650e4c11064bd4c8f944fcc6
Template:UF-coord-classes
10
1672
3099
2023-07-25T22:28:21Z
wikipedia>IznoRepeat
0
/* top */[[phab:T337149#8953569]], replaced: |url=// → |url=https://
wikitext
text/x-wiki
To always display coordinates as DMS values, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: none }
.geo-dms { display: inline }
</syntaxhighlight>
To always display coordinates as decimal values, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: inline }
.geo-dms { display: none }
</syntaxhighlight>
To display coordinates in both formats, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: inline }
.geo-dms { display: inline }
.geo-multi-punct { display: inline }
</syntaxhighlight>
If CSS is disabled, or you have an old copy of [[MediaWiki:Common.css]] cached, you will see both formats. (You can either clear your cache or manually refresh this URL: {{Plain link|url=https://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400}}.)
To disable display of the blue globe adjacent to coordinates, add this to [[Special:Mypage/common.js|your common.js]]:
<syntaxhighlight lang="javascript" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
var wma_settings = {enabled:false}
</syntaxhighlight>
Note that this will disable [[meta:WikiMiniAtlas|WikiMiniAtlas]].
See also: {{section link|Wikipedia:Manual of Style/Dates and numbers|Geographical coordinates}}.<noinclude>
[[Category:Coordinates templates]]
[[Category:Microformat (uF) message templates]]
[[Category:WikiProject Geographical coordinates|τ]]
</noinclude>
31012e4b57af9d700090a8426a0a905684be6518
Template:Portal/doc
10
879
1948
2023-07-26T02:06:04Z
wikipedia>IznoRepeat
0
/* Other mobile-friendly versions */[[phab:T337149#8953569]], replaced: |url=// → |url=https:// (2)
wikitext
text/x-wiki
{{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module -->
{{documentation subpage}}
{{high-use}}
{{lua|Module:Portal}}
<!---PLEASE ADD METADATA TO THE <includeonly> SECTION AT THE BOTTOM OF THIS PAGE.--->
This {{{type|template}}} produces a box with links to a [[Portal:Contents/Portals|portal]] or to multiple portals. It is most often used in the "See also" section of an article. '''If a portal does not exist, then it will not be displayed'''. As of December 11, 2021 (UTC), this portal template is now mobile-friendly, meaning that the portal links will appear on mobile devices.
}}<!-- end of section not transcluded if type = module -->
== Usage ==
{{Portal |Canada | Biography |History |Science}}
'''Basic usage'''
<div style="overflow:auto">
{{{{#ifeq: {{{type|}}} | module | #invoke:Portal|portal | Portal }} |''Portal 1'' |''Portal 2'' |''Portal 3'' |... }}
</div>
== Location ==
Within articles, {{#ifeq: {{{type|}}} | module | the output of the portal function | this template }} is meant to be placed at the top of the article's ''See also'' section. If there is no ''See also'' section, you may put it in the ''External links'' section instead; there is no need to create a new section just to house this template. If there is no ''External links'' section either, just put it below the article text in the place that seems most appropriate.
There are no particular rules about the placement of portals on other kinds of pages.
== Image ==
The portal image names are stored in subpages of [[Module:Portal/images]], organised by the first letter of the portal name. For example, the first letter of [[Portal:Feminism]] is "F", so the image name is stored at [[Module:Portal/images/f]]. If there is an entry for a portal on the correct page then the corresponding image will be shown next to the portal link. If no image is found then [[:File:Portal-puzzle.svg]] will be shown instead.
It is also possible to specify aliases for portal images. For example, the code {{tlx|Portal|Detroit}} produces the same image as the code {{tlx|Portal|Metro Detroit}}. The "Detroit" alias is found on the page [[Module:Portal/images/aliases]].
The image-detection algorithm is case-insensitive. For example, the code {{tlx|Portal|Detroit}} will produce the same image as the code {{tlx|Portal|detroit}} (although the portal links will be different). Portal names are stored in lower case in the image subpages, and input is converted to lower case before being checked.
To add new images to the list, please <span class="plainlinks">[https://en.wikipedia.org/w/index.php?title=Template_talk:Portal&action=edit&preload=Template:Edit_protected/preload&preloadparams%5b%5d=edit%20template-protected&preloadparams%5b%5d=&editintro=Template:Edit_protected/editintro&preloadtitle=Image+edit+request+on+{{CURRENTDAY}}+{{CURRENTMONTHNAME}}+{{CURRENTYEAR}}§ion=new make a protected edit request at Template talk:Portal]</span> to get an administrator to edit the correct subpage for you. Portal images must be either in the public domain or available under a [[WP:ICTIC|free license]] that allows commercial reuse and derivative works; [[Wikipedia:Non-free content|fair-use]] images are not acceptable. The template {{tl|Portal icon demonstration}} may be of use when deciding whether an image is suitable for use as a portal icon; it formats an image using the same size and style that the {{tl|Portal}} template uses by default.
A list of portals and aliases of portals without icons can be found at [[User:Dreamy Jazz Bot/Portals needing icons]]. It is updated infrequently, so ping the [[User:Dreamy Jazz|bot owner]] to update the list.
{{Collapse top|List of image subpages}}
{| class="wikitable"
|-
! Page !! Description
|-
| [[Module:Portal/images/a]] || For portal names starting with "A".
|-
| [[Module:Portal/images/b]] || For portal names starting with "B".
|-
| [[Module:Portal/images/c]] || For portal names starting with "C".
|-
| [[Module:Portal/images/d]] || For portal names starting with "D".
|-
| [[Module:Portal/images/e]] || For portal names starting with "E".
|-
| [[Module:Portal/images/f]] || For portal names starting with "F".
|-
| [[Module:Portal/images/g]] || For portal names starting with "G".
|-
| [[Module:Portal/images/h]] || For portal names starting with "H".
|-
| [[Module:Portal/images/i]] || For portal names starting with "I".
|-
| [[Module:Portal/images/j]] || For portal names starting with "J".
|-
| [[Module:Portal/images/k]] || For portal names starting with "K".
|-
| [[Module:Portal/images/l]] || For portal names starting with "L".
|-
| [[Module:Portal/images/m]] || For portal names starting with "M".
|-
| [[Module:Portal/images/n]] || For portal names starting with "N".
|-
| [[Module:Portal/images/o]] || For portal names starting with "O".
|-
| [[Module:Portal/images/p]] || For portal names starting with "P".
|-
| [[Module:Portal/images/q]] || For portal names starting with "Q".
|-
| [[Module:Portal/images/r]] || For portal names starting with "R".
|-
| [[Module:Portal/images/s]] || For portal names starting with "S".
|-
| [[Module:Portal/images/t]] || For portal names starting with "T".
|-
| [[Module:Portal/images/u]] || For portal names starting with "U".
|-
| [[Module:Portal/images/v]] || For portal names starting with "V".
|-
| [[Module:Portal/images/w]] || For portal names starting with "W".
|-
| [[Module:Portal/images/x]] || For portal names starting with "X".
|-
| [[Module:Portal/images/y]] || For portal names starting with "Y".
|-
| [[Module:Portal/images/z]] || For portal names starting with "Z".
|-
| [[Module:Portal/images/other]] || For portal names starting with any other letters. This includes numbers, letters with diacritics, and letters in non-Latin alphabets.
|-
| [[Module:Portal/images/aliases]] || For adding aliases for existing portal names. Use this page for variations in spelling and diacritics, etc., no matter what letter the portal begins with.
|}
{{Collapse bottom}}
== Example ==
{| style="background:transparent;"
|-
! Code !! Result
|-
|
<span style="font-size: 90%;">{{{{#ifeq: {{{type|}}} | module | #invoke:Portal|portal | Portal }}|Science}}</span>
| {{Portal|Science}}
|}
== Parameters ==
{| class="wikitable"
|-
! Name !! Value !! Description
|-
| <code>'''1'''</code>, <code>'''2'''</code>, <code>'''3'''</code> ... || The portal name, e.g. <code>Literature</code> || The positional parameters specify the portals to be displayed.
|-
| <code>'''left'''</code> || <code>yes</code> || If set to <code>yes</code>, the portal appears on the left side of the page instead of the right.
|-
| <code>'''margin'''</code> || CSS margin value, e.g. <code>1.2em 3em 0.5em 1em</code> || This allows you to set a custom margin. All valid CSS margin values are accepted.
|-
| <code>'''break'''</code> || <code>yes</code> || If set to <code>yes</code>, a line break is inserted after the portal name and before the word ''portal''.
|-
| <code>'''redlinks'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, <code>true</code>, or <code>include</code> || Redlinks will be displayed. The default is to suppress redlinks.
|-
| <code>'''nominimum'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, or <code>true</code> || Suppresses the warning if no parameters are supplied. This can be useful when Template:Portal is called by another template.
|-
| <code>'''border'''</code> || Any of the following values: <code>no</code>, <code>n</code>, or <code>false</code> || Turn off border and background
|-
| <code>'''tracking'''</code> || Any of the following values: <code>no</code>, <code>n</code>, <code>false</code> || Tracking categories will be suppressed. The default is to use tracking categories, except on certain namespaces and on pagenames which contain "/archive", "/doc" or "/test".
|}
== Error tracking ==
If the {{{type|template}}} is used incorrectly, the page will be added to a tracking category.
The tracking categories are not applied if any of the following is true:
# Tracking is specially disabled for that usage. This is done by setting the optional parameter {{para|tracking}} to any the following values: <code><nowiki>no</nowiki></code>, <code><nowiki>n</nowiki></code>, <code><nowiki>false</nowiki></code>
# the template is used on a page in any of these namespaces: Talk, User, User talk, Wikipedia talk, File talk, Template talk, Category talk, Portal talk, Draft, Draft talk, Module talk
# The title page on which the template is used includes any of the following case-insensitive strings: "/archive", "/doc", "/test"
* {{clc|Portal templates with too few portals}}
* {{clc|Portal templates with too many portals}}
* {{clc|Portal templates with redlinked portals}}
* {{clc|Pages with empty portal template}}
* {{clc|Portal templates with default image}}
:{{Purge page|''Purge page to update totals''}}
{{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module -->
== Other mobile-friendly versions==
For versions that are visible in print and mobile versions of Wikipedia pages see:
* {{tl|Portal-inline}}
* {{tl|Portal bar}}
{{Quotation |
*<small>Mobile version of '''{{Plain link|url=https://{{CONTENTLANG}}.m.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>
*<small>Desktop version of '''{{Plain link|url=https://{{CONTENTLANG}}.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>}}
== See also ==
* {{Tl|Subject bar}}
{{Portal template list}}
==TemplateData==
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<TemplateData>
{
"description": "A template to create a list of portals",
"params": {
"1": {
"label": "Portal (1)",
"description": "Inserts the portal image and text. Further portals can be added to the template by increasing the number",
"type": "string",
"required": true
},
"2": {
"label": "Portal (2)",
"description": "Inserts the portal image and text",
"type": "string"
},
"3": {
"label": "Portal (3)",
"inherits": "2"
},
"4": {
"label": "Portal (4)",
"inherits": "3"
},
"5": {
"label": "Portal (5)",
"inherits": "4"
},
"6": {
"label": "Portal (6)",
"inherits": "5"
},
"left": {
"label": "Side",
"description": "If set to yes, the portal appears on the left side of the page instead of the right.",
"type": "string",
"default": "no"
},
"margin": {
"label": "Margin size",
"description": "Alters the margin size. Any valid CSS margin is accepted",
"type": "number"
},
"break": {
"label": "Line break",
"description": "If set to yes, a line break is inserted after the portal name and before the word portal",
"type": "string"
},
"redlink": {
"description": "Allow links to non-existent portals",
"type": "string",
"default": "false"
},
"nominimum": {
"description": "Do not check for at least one portal",
"type": "string",
"default": "false"
},
"border": {
"description": "Put border around portal links",
"type": "string",
"default": "true"
},
"tracking": {
"description": "In case of warning, add to tracking category",
"type": "string",
"default": "true"
},
"type": {}
},
"format": "block"
}
</TemplateData>
{{Collapse bottom}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Internal link templates]]
[[Category:Wikipedia Portal navflags]]
}}</includeonly> <noinclude>
[[Category:Record production portal|Templates]]</noinclude>
}}<!-- end of section not transcluded if type = module -->
12237d8da876a83e3d771aeccf9b8f19101fdbe8
Help:Citation Style 1
12
865
1918
2023-07-26T02:41:40Z
wikipedia>IznoRepeat
0
[[phab:T337149#8953569]], replaced: [// → [https:// (2), |url=// → |url=https:// (2)
wikitext
text/x-wiki
{{Short description|Help page for citation templates}}
{{Wikipedia how to|WP:CS1|HELP:CS1}}
{{Nutshell|This is an introductory how-to for Wikipedia's most frequently used citation style. It does not cover every option of every citation template. See individual templates' documentation (e.g. at [[Template:Cite journal]]) for details beyond this basic cheatsheet.}}
{{notice|image=Gnome-applications-science.svg|This help page has {{subpages|testcases|Help:Citation Style 1}} demonstrating various uses.}}
'''Citation Style 1''' ('''CS1''') is a collection of [[Wikipedia:Citing sources|reference citation]] [[Help:Template|templates]] that can be modified to create different styles for different referenced materials. Its purpose is to provide a set of default formats for references on Wikipedia. It includes a series of templates that in turn use [[Module:Citation/CS1]].
The use of CS1 or of templates is not compulsory; per [[WP:CITESTYLE]]:
<blockquote>Wikipedia does not have a single [[style guide|house style]]. Editors may choose any option they want; one article need not match what is done in other articles or what is done in professional publications or recommended by academic [[style guide]]s. However, citations ''within a given article'' should follow a consistent style.</blockquote>
[[WP:CITEVAR]] additionally states:
{{quote|If the article you are editing is already using a particular citation style, you should follow it; if you believe it is inappropriate for the needs of the article, seek consensus for a change on the talk page.}}
CS1 uses (in addition to Wikipedia's own [[WP:Manual of Style|Manual of Style]]) elements of ''[[The Chicago Manual of Style]]'' and the ''[[Publication Manual of the American Psychological Association]]'', with significant adaptations.
==Style==
There are a number of templates that use a name starting with ''cite''; many were developed independently of CS1 and are not compliant with the CS1 style. There are also a number of templates that use one of the general use templates as a meta-template to cite a specific source.
To be compliant with CS1, a template must:
* Use [[Module:Citation/CS1]] or one of the templates listed below.
* Use a period as a punctuation mark to separate fields and end the citation.
* Use a semicolon as a punctuation mark to separate authors and editors.
* Format the title of longer works in italics.
* Format the title of short works such as chapters in quotes.
==Templates==
===General use===
The following is a list of templates that implement Citation Style 1 for one or more types of citations but are not restricted to any specific source.
{| class="wikitable" style="max-width:55em;"
!scope="row" {{Yes}}
| Indicates that the corresponding tool or gadget can generate the template anytime user wishes. However, this does not mean that the tool or gadget fully supports all parameters or provides an interface for them. In fact, none of the mentioned items do so.
|-
!scope="row" {{Partial|Sometimes}}
| Indicates that the corresponding tool or gadget may or may not generate the corresponding template. For more information, see associated footnote.
|}
{| class="wikitable" style="text-align:center;"
|+ General-use CS1 templates
!scope="col"| Template
!scope="col"| Use
!scope="col"| [[Wikipedia:The Wikipedia Library/Citoid|Citoid]]
!scope="col"| [[WP:Citation expander|Citation expander]]
!scope="col"| [[WP:RefToolbar/2.0|RefToolbar 2.0]]
!scope="col"| [[Wikipedia:ProveIt|ProveIt]]
!scope="col"| [[User:Odie5533/SnipManager|SnipManager]]
|-
!scope="row"| {{tl|Cite arXiv}}
| [[arXiv]] preprints || || || || ||
|-
!scope="row"| {{tl|Cite AV media}}
| audio and visual sources || || || || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite AV media notes}}
| liner notes from albums, DVDs, CDs and similar audio-visual media || || || || ||
|-
!scope="row"| {{tl|Cite book}}
| books || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite conference}}
| conference papers || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite encyclopedia}}
| edited collections || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite episode}}
| television or radio programs and episodes || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite interview}}
| interviews || || || || ||
|-
!scope="row"| {{tl|Cite journal}}
| academic and scientific papers published in journals || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite magazine}}
| magazines and newsletters || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite mailing list}}
| archived public mailing lists || || || || ||
|-
!scope="row"| {{tl|Cite map}}
| maps || || || || ||
|-
!scope="row"| {{tl|Cite news}}
| news articles in print, video, audio or web || {{Yes}} || {{Partial|Sometimes}}{{efn|Citation expander will only attempt to tidy up the citation and will not add new content}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite newsgroup}}
| online newsgroups || || || || ||
|-
!scope="row"| {{tl|Cite podcast}}
| audio or video [[podcast]] || || || || ||
|-
!scope="row"| {{tl|Cite press release}}
| press releases || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite report}}
| reports by government departments, instrumentalities, operated companies, etc. || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite serial}}
| audio or video serials || || || || ||
|-
!scope="row"| {{tl|Cite sign}}
| signs, plaques and other visual sources || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite speech}}
| speeches || || || || ||
|-
!scope="row"| {{tl|Cite tech report}}
| technical reports || || || || ||
|-
!scope="row"| {{tl|Cite thesis}}
| theses || {{Yes}} || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite web}}
| web sources not characterized by another template || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|}
{{notelist}}
===Specific source===
There are a number of templates that are CS1 compliant, because they use a CS1 template as a base, but are tied to a specific source; these are listed in [[:Category:Citation Style 1 specific-source templates]].
==How the templates work==
CS1 uses a series of templates that provide a consistent output. The main difference is in parameters optimized for the subject. For example, {{tl|cite book}} has fields for title and chapter, whereas {{tl|cite journal}} has fields for journal and title.
This help page uses the names most commonly used across the templates series; see each template's documentation for details.
CS1 templates present a citation generally as:
* With author:
:{{Cite journal |last=((Author)) |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}}
* Without author:
:{{Cite journal |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}}
(where "n.d." could also be any other valid date formatted per the MOS)
===Authors===
An author may be cited using separate parameters for the author's surname and given name by using {{para|last}} and {{para|first}} respectively. If a cited source has multiple authors, subsequent authors can be listed in the citation using {{para|last2}} and {{para|first2}}, {{para|last3}} and {{para|first3}}, etc.<ref group="Note" name="NB_Unlimited">The number of authors that can be listed in the citation and displayed when published is unlimited.</ref> For symmetry with the other numbered parameters, {{para|last1}} and {{para|first1}} are available as well, as shown in the following example:
:<code><nowiki>{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code>
:{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}
For symmetry with similar parameters for editors and other contributors (discussed further below), longer parameter forms are also available for authors: {{para|author-last}} and {{para|author-first}}, as well as numbered variants like {{para|author-last{{var|n}}}} and {{para|author-first{{var|n}}}} or {{para|author{{var|n}}-last}} and {{para|author{{var|n}}-first}} (with {{var|n}} referring to this author's number in the list). Because the shorthand parameters might erroneously have been used also for editors and other types of contributors by some Wikipedians in the past, please make sure that the parameters actually refer to authors when expanding {{para|last}} and {{para|first}} parameters to their longer equivalents (equivalent parameters for editors etc. exist as well, see [[#Editors|below]]).
If a cited source has a large number of authors, one can limit the number of authors displayed when the citation is published by using the {{para|display-authors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page.
If a cited author is notable and the author has a Wikipedia article, the author's name can be linked with {{para|author-link}}.<ref group="Note" name="NB_Prefix">If the English Wikipedia does not have an article about the author, but an article is available in another language entity of Wikipedia or if a [[Wikidata]] node for this author exists already, you can prefix the link using that Wikipedia's [[Help:Interlanguage links|language prefix]] (similar to <code>:en:</code> for the English Wikipedia) in order to create an [[Help:Interlanguage links|interwiki link]]. The [[Help:Interwiki linking#Prefix codes for linking to Wikimedia sister projects|prefix]] for Wikidata nodes is <code>:d:</code> (or <code>:wikidata:</code>) to be followed by the Q''<id>'' number of the corresponding entry. (<!-- Put in brackets because this seldomly applies to authors: -->Similar, [[Wikisource]] uses <code>:s:</code> (or <code>:wikisource:</code>), [[Wiktionary]] <code>:wikt:</code> (or <code>:wiktionary:</code>) and [[Wikimedia Commons|Commons]] <code>:c:</code> (or <code>:commons:</code>), followed by the corresponding article name.) Alternatively, if a suitable [[:m:Interwiki map|custom interwiki prefix]] is defined for another authority control repository, this can be used as well. For example, to link to an author's [[VIAF]] entry (with code <code>''<id>''</code>), <code>:VIAF:''<id>''</code> can be used, even if this would resolve to an independent external site. In the absence of a local article such links can help to at least establish a connection to a particular author and, if an article gets created in the English Wikipedia as well in the future, these links can be fixed up by bots to point to the local article instead.</ref> If a citation includes multiple notable authors, one may use {{para|author-link{{var|n}}}} or {{para|author{{var|n}}-link}}, etc. This method is used because the {{para|last}}- and {{para|first}}-type parameters do not allow wikilinking. However, {{para|author-link}} cannot be used to link to an external website; the external link will not render correctly.<ref group="Note" name="NB_Prefix"/> Below is an example of a wikilinked author credit:
:<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code>
:{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}
When an author is cited, the date of the cited work is displayed after the author's name, as shown in the example below:
:<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}</nowiki></code>
:{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}
If no author is cited, the date appears after the title, as shown in the example below:
:<code><nowiki>{{cite book |title=George's Secret Key to the Universe |date=2007}}</nowiki></code>
:{{cite book |title=George's Secret Key to the Universe |date=2007}}
If the cited source does not credit an author, as is common with newswire reports, press releases or company websites use:
:{{para|author|<nowiki><!--Not stated--></nowiki>}}
This HTML comment alerts fact-checking and citation-fixing editors, and potentially bots, that the cited source did not name an author—the author was not overlooked. Without this entry editors and bots would waste time researching cited sources for a non-existent author credit.
When using {{para|author}} avoid citations like <code><nowiki>{{cite news |work=Weekday Times |author=''Weekday Times'' editors |title=...}}</nowiki></code>, unless the article is on a field in which the majority of professional journals covering that field use such a citation style.
Editors should use an {{para|author}} organizational citation when the cited source, such as a committee report, specifically names an official body or a sub-unit of the publisher as the collective author of the work, e.g. {{para|author|Commission on Headphone Safety}} or {{para|author|Rules Sub-committee}}. Do not use {{para|author}} to assert what you think was probably the collective author when the source itself does not specifically specify a collective author; doing so is [[WP:NOR|original research]] and falsification of [[WP:V|source verifiability]] and [[WP:RS|reliability]].
{{para|author}} should never hold the name of more than one author. Separate individual authors into enumerated individual {{para|author{{var|n}}}} parameters.
===Editors===
An editor may be cited using separate parameters for the editor's last and first name. A single or first editor would use {{para|editor-last}} and {{para|editor-first}}; subsequent editors would use {{para|editor2-last}} and {{para|editor2-first}}, {{para|editor3-last}} and {{para|editor3-first}}, etc.
If an editor has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|editor-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple editors, you may use {{para|editor2-link}}, {{para|editor3-link}}, etc. to wikilink to each editor's Wikipedia article. This method is used because {{para|editor-last}} and {{para|editor-first}} do not allow wikilinking. {{para|editor-link}} cannot be used to link to an external website.
If a cited source has a large number of editors, one can limit the number of editors displayed when the citation is published using the {{para|display-editors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page.
=== Translators ===
A translator may be cited using separate parameters for the translator's last and first name. A single or first translator would use {{para|translator-last}} and {{para|translator-first}}; subsequent translators would use {{para|translator2-last}} and {{para|translator2-first}}, {{para|translator3-last}} and {{para|translator3-first}}, etc.
If a translator has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|translator-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple translators, you may use {{para|translator2-link}}, {{para|translator3-link}}, etc. to wikilink to each translator's Wikipedia article. This method is used because {{para|translator-last}} and {{para|translator-first}} do not allow wikilinking. {{para|translator-link}} cannot be used to link to an external website.
===Others===
* '''others''': This parameter is used to credit contributors other than an author or an editor, such as an illustrator. You should include both the type of contribution and the name of the contributor, for example {{para|others|Illustrated by John Smith}}.<ref group="Note" name="NB_Prefix"/>
===Dates===
Dates are indicated by these parameters:
* '''date''': Full date of publication edition being referenced, in the same format as other dates in citations in the same article. Must not be wikilinked.
** or: '''year''': Year of publication edition being referenced. Discouraged in favor of '''date''', except in the rare case that {{em|all}} of the following conditions are met:
**#the publication-date format in the template is YYYY-MM-DD
**#the citation requires a <code>[[Wikipedia:Citation templates and reference anchors|CITEREF]]</code> [[Template:Sfn#More than one work in a year|disambiguator]]
* '''orig-date''': Original publication date or year, for display (in square brackets) after the '''date''' (or '''year'''). For clarity, please supply specifics, for instance <code>|orig-date=first published 1859</code> or <code>|orig-date=composed 1904</code>. This parameter displays only if there is a value for '''date''' (or '''year'''). Alias: '''origyear'''.
When a source does not have a publication date, use {{para|date|n.d.}} or {{para|date|nd}}
Acceptable date formats are shown in the "Acceptable date formats" table of the {{section link|Manual of Style/Dates and numbers|Dates, months and years}}. Further points:
* Prescriptions about date formats only apply when the date is expressed in terms of Julian or Gregorian dates, or which use one of the seasons (spring, summer, autumn or fall, winter). Sources are at liberty to use other ways of expressing dates, such as "spring/summer" or a date in a religious calendar; editors should report the date as expressed by the source. [[WP:SEASON|Although the seasons are not normally capitalized]], they are capitalized when used as dates in CS1 templates, and the capitalization of the season stated by the source may be altered to follow this convention. In cases where the date as expressed in the source is not compatible with the template software, the citation should be created without using a template.
* Do not wikilink.
* Access and archive dates in references should be in either the format used for [[MOS:DATEUNIFY|publication dates]], or YYYY-MM-DD.
====Date format compliance with Wikipedia's Manual of Style====
CS1 uses {{section link|Wikipedia:Manual of Style/Dates and numbers|Dates, months, and years}} ([[MOS:DATEFORMAT]]) as the reference for all date format checking performed by [[Module:Citation/CS1]]. For various reasons, CS1 is not fully compliant with MOS:DATEFORMAT. This table indicates CS1 compliance with the listed sections of MOS:DATEFORMAT.
{|class="wikitable plainrowheaders" style="margin: 1em auto 1em auto;"
|+CS1 compliance with [[Wikipedia:Manual of Style/Dates and numbers]]
!scope="col"| Section
!scope="col"| Compliant
!scope="col"| Comment
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Acceptable date formats|Acceptable date formats table]]
| yes
| Exceptions: linked dates not supported;<br />sortable dates not supported ({{tlx|dts}} etc.);<br />proper name dates not supported with the exception of 'Easter YYYY' and 'Christmas YYYY';<br />shortened month names longer than three characters or with terminating periods not supported;<br />quarterly dates supported in the form 'First Quarter 2020'
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Unacceptable date formats|Unacceptable date formats table]]
| yes
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Consistency|Consistency]]
| yes<sup>{{dagger}}</sup>
|rowspan="3"| Article-level restrictions are beyond the scope of CS1<br /><sup>{{dagger}}</sup>CS1/CS2 templates follow the format specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} templates; see [[#Auto-formatting citation template dates|Auto-formatting citation template dates]]
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Strong national ties to a topic|Strong national ties to a topic]]
| no
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Retaining existing format|Retaining existing format]]
| no
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Era style|Era style]]
| no
|Dates earlier than 100 not supported. Wikipedia [[Wikipedia:Citing sources#Say where you read it|editors seldom read ancient manuscripts directly]]; the specific, modern, published edition read by the editor is what goes in the source citation. Thus, the date of the source actually consulted should be provided in {{para|date}}, and the date of the ancient source may be provided in {{para|orig-date}}; the format of the orig-date value is not checked for errors.
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Julian and Gregorian calendars|Julian and Gregorian calendars]]
| limited
| Julian prior to 1582; Gregorian from 1582; assumes Gregorian in the overlap period of 1582 – c. 1923
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Ranges]]
| yes
| Exceptions: does not support the use of <code>&ndash;</code> or <code>&nbsp;</code><br />does not support dates prior to 100;<br />does not support solidus separator (/)<br />does not support " to " as a date separator<br />does not support YYYY–YY where the two-digit year is less than 13 (change to YYYY–YYYY to eliminate the error message)
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Uncertain, incomplete, or approximate dates|Uncertain, incomplete, or approximate dates]]
| yes
| Exceptions: does not support {{tlx|circa}} or {{tlx|floruit}};<br />does not support dates prior to 100;<br />Supports <code>c. </code> only with a single year value (no ranges or day/month combinations).
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Days of the week|Days of the week]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Seasons|Seasons]]
| limited
| CS1 capitalizes seasons used as dates in citations, in line with external style guides
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Decades|Decades]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Centuries and millennia|Centuries and millennia]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Abbreviations for long periods of time|Abbreviations for long periods of time]]
| no
|
|}
====Date range, multiple sources in same year====
If dates are used, the year range is 100 to present without era indication (AD, BC, CE, BCE). In the case where the same author has written more than one work in the same year, a lower-case letter may be appended to the year in the date parameter ({{xt|{{!}}date=July 4, 1997b}}) or the year parameter ({{xt|{{!}}year=1997b}}).
====Auto-formatting citation template dates====
{{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}
[[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc.) in the style specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} template. Editors may also choose how CS1/CS2 templates render dates by the use of {{para|cs1-dates|<{{var|keyword}}>}} in the article's {{tld|use xxx dates}} template.<section begin="auto_date_format_table" />
{| class="wikitable"
|+Acceptable <code>{{pipe}}cs1-dates=</code> keywords
!scope="col"| Keyword
!scope="col"| Definition
|-
!scope="row"| <code>l</code>
|rowspan="2"| long-form publication and access- / archive-dates;<br />this is the default case when {{para|cs1-dates|plain=yes}} is omitted or empty
|-
!scope="row"| <code>ll</code>
|-
!scope="row"| <code>ls</code>
| long-form publication dates; abbreviated access- / archive-dates
|-
!scope="row"| <code>ly</code>
| long-form publication dates; year-initial numeric access- / archive-dates (ymd)
|-
!scope="row"| <code>s</code>
|rowspan="2"| abbreviated publication and access- / archive-dates
|-
!scope="row"| <code>ss</code>
|-
!scope="row"| <code>sy</code>
| abbreviated publication dates; year-initial numeric access- / archive-dates (ymd)
|-
!scope="row"| <code>y</code>
|rowspan="2"| year-initial numeric publication, access- and archive-dates (ymd);<br />cs1|2 cannot reformat Month YYYY, Season YYYY, date-ranges of any form, or [[Julian calendar]] dates into ymd format
|-
!scope="row"| <code>yy</code>
|}<section end="auto_date_format_table" />
Example: to have the CS1/CS2 templates in an article render their publication dates in the long form (fully spelled-out month names) with access-/archive-dates rendered in short form (abbreviated month names), write:
:{{tlx|use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates{{=}}ls}}
This documentation page has <code><nowiki>{</nowiki>{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}</code> at the top of this section so this cs1 template will render with ymd dates:
:<code><nowiki>{{</nowiki>cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}</code>
::{{cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}
This global setting may be overridden in individual CS1/CS2 templates by use of {{para|df}}; abbreviated date forms are not supported by {{para|df}}.
{{lang|la|Nota bene}}: CS1/CS2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template.
===Titles and chapters===
* '''title''': The title of the cited source. Titles are displayed in italics, except for short works such as a {{txl|cite press release}} and cited articles in {{tlx|cite news}}, {{tlx|cite journal}}, {{tlx|cite magazine}}, {{tlx|cite web}}, {{tlx|cite conference}}, and {{tlx|cite podcast}}, where the title is shown in quotation marks. For templates like these that show the title in quotation marks, any double quotation marks inside the title should be [[MOS:QINQ|converted]] to single quotation marks. Use [[MOS:CT|title case]] unless the cited source covers a scientific, legal or other technical topic and sentence case is the predominant style in journals on that topic. Use either title case or sentence case consistently throughout the article. Do not omit a leading "The" from the title. Subtitles are typically separated from titles with ": " though " – " is also used. [[MOS:TM|As with trademarks]], Wikipedia {{em|does not}} attempt to emulate any stylistic flourishes used by the cited source's publisher, such as ALL-CAPS, all-lower-case, {{sm|Small Caps}}, etc.; use either standard title case or sentence case consistently. If the cited source is itself notable and has a Wikipedia article, the title can be wikilinked. Wikilinking the title will make it impossible to use the "url" parameter to link to an external copy of the cited source, so only do this when citing works that do not need to be externally linked. A link to the actual source is preferred to a link to a Wikipedia article about the source.
* '''script-title''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., should not be italicized and may also read [[right-to-left]] (RTL). To include titles in these languages, use '''script-title'''. Titles in '''script-title''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#|script-<param>= language codes|supported language codes]] followed by a colon: {{para|script-title|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation.
* '''trans-title''': If the cited source is in a foreign language, an English translation of the title can be given here. This field will be displayed in square brackets after the title and will be linked to {{para|url}} if used.
* '''chapter''': The title of the cited chapter from the source, written in full. Displayed in quotes before the title. For websites arranged in sections the "at" parameter serves a similar function: {{para|at|Featured News}}
* '''script-chapter''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., may possibly read [[right-to-left]] (RTL). To include chapter titles in these languages, use '''script-chapter'''. Chapter titles in '''script-chapter''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#|script-<param>= language codes|supported language codes]] followed by a colon: {{para|script-chapter|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. This field will be displayed following the transliterated title.
* '''trans-chapter''': If the cited source is in a foreign language, an English translation of the cited chapter title can be given here. This field will be displayed in square brackets within the quotation marks which enclose the chapter field.
Titles containing certain characters will both display and link incorrectly unless those characters are replaced or encoded like this:
{| class="wikitable" style="text-align:center;"
|-
!scope="col"| Character
!scope="col"| Must be replaced with
|-
!scope="row"| newline
| space
|-
!scope="row"| [
| &#91;
|-
!scope="row"| ]
| &#93;
|-
!scope="row"| <nowiki>|</nowiki>
| &#124;
|}
====|script-<<var>param</var>>= language codes====
Language codes known to cs1|2 for languages that do not use a Latin script are:
{{#invoke:Cs1 documentation support|script_lang_lister}}<!-- makes a language code: name list from the master list in [[Module:Citation/CS1/Configuration]] -->
===Type===
* '''type''': Specifies the type of work cited. Appears in parentheses immediately after the title. Some templates use a default that can be overridden; example: {{tl|cite press release}} will show "(Press release)" by default. Other useful values are: Review, Systemic review, Report, Abstract, Meta-analysis, Original article, Oral history<!-- supported as "Oral History" by Dublin Core/Zotero -->, Email<!-- supported by Dublin Core/Zotero -->, Website<!-- supported by Dublin Core/Zotero -->, Text<!-- supported by Dublin Core/Zotero -->, Document<!-- supported by Dublin Core/Zotero -->. Alias: '''medium''', in {{tl|cite AV media}}, where typical values are: Motion picture, Moving image<!-- supported as "Moving Image" by Dublin Core/Zotero -->, Television production, Videotape, DVD, Blu-ray, Trailer, CD, Radio broadcast, Podcast, Sound<!-- supported by Dublin Core/Zotero -->.
===Language===
{{csdoc|language}}
===Work and publisher===
{{see|WP:CITEHOW}}
* '''work''': Used by some templates such as {{tl|cite web}} (where it is aliased to '''website'''), {{tl|cite news}} (aliased to '''newspaper'''), {{tl|cite magazine}} (aliased to '''magazine'''), {{tl|cite journal}} (aliased to '''journal'''), and others where the citation is usually to a specific item (given in the "title" parameter) found in a larger work (this "work" parameter), most commonly an article in a website or print periodical, or an episode in a TV series. {{em|Do not confuse this with the "publisher" parameter}}, which is for the publishing company. If the work is notable and has an article in Wikipedia, it should be wiki-linked at first appearance in citations in the article. If the "title" is already linked-to externally, do not externally link to the "work". If the work title as given by the site/publication would be exactly or substantially the same as the name of the publisher, do not use the "publisher" parameter (see below for more detail).
:On websites, in most cases "work" is the name of the website (as usually given in the logo/banner area of the site, and/or appearing in the {{tag|title|o}} of the homepage, which may appear as the page title in your browser tab, depending on browser). Do not append ".com" or the like if the site's actual title does not include it (thus {{para|work|<nowiki>[[Salon (magazine)|Salon]]</nowiki>}}, not <code>Salon.com</code>). If no clear title can be identified, or the title explicitly is the domain name, then use the site's domain name. Do not falsify the work's name by adding descriptive verbiage like "Website of [Publisher]" or "[Publisher]'s Homepage". Capitalize for reading clarity, and omit "www.", e.g. convert "www.veterinaryresourcesuk.com" to "VeterinaryResourcesUK.com".
:Many journals use highly abbreviated titles when citing other journals (e.g. ''J Am Vet Med'' for ''[[Journal of the American Veterinary Medical Association]]'') because specialists in the field the journal covers usually already know what these abbreviations mean. Our readers usually do not, so these abbreviations should always be expanded.
:If the titled item being cited is part of some other larger work, as in a book in a series, a special issue of a periodical, or a sub-site at a domain (e.g., you are citing the law school's section of a university's website system), it is usually better to use the name of that more specific work than just that of the entire larger work. Various citation templates provide separate fields for such information, e.g. {{para|chapter}}{{para|title}}{{para|volume}}{{para|series}} in {{tlx|Cite book}}. If the nature of the work and its relation to the site, book, or other context in which it is found is complicated or confusing, simply explain the situation after the citation template and before the {{xtag|ref|c}} that closes the citation.
* '''publisher''': the name of the organization that actually published the source. The field should not include the corporate designation such as "Ltd" or "Inc.", unless some ambiguity would result or the organization is usually known with that designation even in everyday use (e.g. [[Apple Inc.]], which otherwise might be confused with [[Apple Records]] and other publishers). "Publisher", "Publishing" and "Publications" can be abbreviated "Pubr.", "Pubg." and "Pubs." respectively, but some templates in this series include a period (full-stop) immediately after this parameter, so the period may have to be omitted; check the output if you abbreviate here. They are usually safe to omit, but are usefully included where the publisher's name might be confusing without it. This is most often the case when the publisher's name is something like "Joshua Martin Publications", which without the designation might be mistaken for a co-author/editor. A leading "The" can generally be omitted, again unless confusion might result (e.g., for [[The International Cat Association]], "The" is part of their official acronym, TICA). If the publisher is notable and has an article independent of the "work", the "publisher" parameter can include a wiki-link to that article, but should never externally link to the publisher's website. Whether the publisher needs to be included depends to an extent on the type of work and sometimes on its recognizability. [[WP:Citing sources]], and most off-Wikipedia citation guides, suggest that it should be used for books (even famous ones), but not necessarily other works. The "publisher" parameter should not be included for widely-known mainstream news sources, for major academic journals, or where it would be the same or mostly the same as the work. For example, the "publisher" parameter should be omitted in these examples:
*:{{para|work|<nowiki>[[Amazon.⁠com]]</nowiki>}}{{para|publisher|Amazon Inc.|!mxt=y}}
*:{{para|newspaper|The Aberdeen Times}}{{para|publisher|The Aberdeen Times|!mxt=y}}<!--A genuine Idaho newspaper: http://www.smalltownpapers.com/newspapers/newspaper.php?id=1 -->
*:{{para|newspaper|<nowiki>[[The New York Times]]</nowiki>}}{{para|publisher|The New York Times Company|!mxt=y}}
*:{{para|newspaper|<nowiki>[[USA Today]]</nowiki>}}{{para|publisher|<nowiki>[[Gannett Company]]</nowiki>|!mxt=y}}
*:{{para|journal|<nowiki>[[Nature (journal)|Nature]]</nowiki>}}{{para|publisher|<nowiki>[[Nature Research]]</nowiki>|!mxt=y}}
:If the work is self-published, [[WP:SELFPUB|this is a very important fact]] about [[WP:RS|potential reliability of the source]], and needs to be specified; no consensus exists for the exact value of {{para|publisher}} in such a case, but some printed style guides suggest "author", while many Wikipedia editors have used "self-published" for increased clarity. When an exhaustive attempt to discover the name of the publisher (try [[whois]] for websites, and [[WorldCat]] for books, etc.) fails, use {{para|publisher|<nowiki><!--Unspecified by source.--></nowiki>}} to explicitly indicate that this was checked, so other editors do not waste time duplicating your fruitless efforts. Do not guess at the publisher when this information is not clear. See next entry for co-published works and how to specify multiple publishers and their locations.
* '''location''' (alias {{para|publication-place}}): Geographical place of publication ({{em|not}} where you found your copy, nor location of material in the source). This is usually {{var|City, Country}}, or {{var|City, US State}}. The city name by itself can be used for world-recognized cities like New York, London (except in articles about [[London, Ontario|Canadian]] topics), Paris, Tokyo. Simply having a unique name does not mean it is globally recognizable; e.g., many people do not know where [[Mumbai]] is, especially if they are old enough that it was called [[Bombay]] for much of their lives. If in doubt, be more not less specific, since "Toronto, Canada" and "San Francisco, California" do not actually hurt anything. Be more specific when a {{var|City, Country}} would be ambiguous, e.g. {{para|location|Hanley, Staffordshire, UK}}, versus {{para|location|Hanley, Worcestershire, UK}}. Do not use sub-national postal abbreviations ("DE", "Wilts", etc.), per [[MOS:POSTABBR]].{{disputed inline|Postal abbreviations}} The location parameter should be omitted when it is implied by the name of the work, e.g. ''The Sydney Morning Herald''. The location parameter should be used when the location is part of a common appellation of but not the actual title of a periodical. For example, the newspaper sometimes called the ''New York Daily News'' is actually [[Daily News (New York)|''Daily News'']] and can be entered with {{para|newspaper|Daily News}} {{para|location|New York}}, which yields: ''Daily News''. New York. A similar example is ''[[The Times]]'' of London (contrast ''[[The New York Times]]''). Per [[WP:SAYWHEREYOUGOTIT]], provide the location of the edition you are using (e.g., if a publisher has operations in both New York and London and you have the London-published edition, use {{para|location|London}}, even if the publisher's corporate HQ is in New York). If your edition specifically gives multiple locations, this can be indicated with, e.g., {{para|location|New York / London}}. This same technique can be used for co-published works, e.g.: {{para|location|Oakbrook Terrace, Illinois / Los Angeles}}{{para|publisher|<nowiki>[[Council of Science Editors]]</nowiki> / <nowiki>[[Loyola Marymount University]]</nowiki> Press}}; just get them in corresponding order in both parameters. The templates do {{em|not}} have separate {{para|location1|!mxt=y}}, {{para|publisher1|!mxt=y}}, etc., parameters. For historical publications that are still worth citing and still findable (e.g. via book digitizers – see the "via" parameter below), do not confuse the {{em|printer}} (printing press owner-operator) with the {{em|publisher}} (organization or person that sponsored the work); an edition may have a printer's name in larger type than the publisher, but for citation purposes we care about the publisher. If the distinction cannot be determined for certain in a particular case, list both. While some off-site publishers lean toward omitting publishing locations, they can serve more than purely bibliographical purposes on Wikipedia (e.g. an overabundance of material published in one place in an article about another place may reveal an editorial bias).
* '''publication-date''': Date of publication when different from the date the work was written. Displays only if date or year are defined and only if different, else publication-date is used and displayed as date. Use the same format as other dates in the article; do not wikilink. Follows publisher; if work is not defined, then publication-date is preceded by "published" and enclosed in parenthesis.
* '''via''' (optional): Name of the content deliverer (when they are {{em|not}} the publisher). "via" is not a replacement for "publisher", but provides additional detail. It may be used when the content deliverer presents the source in a format other than the original, or when the URL provided does not make clear the identity of the deliverer, or as suggested in [[WP:The Wikipedia Library]], e.g. [[WP:Credo accounts/Citations]]. See also {{section link||Registration or subscription required}}. Typical uses of this parameter are identification of a book-scanning and -databasing project such as those provided by the [[Internet Archive]], [[Project Gutenberg]], and [[Google Books]]; journal indexing and search services through which we commonly find academic articles, e.g. [[PubMed Central]], [[Paperity]], and [[JSTOR]]; and other aggregators or indexers of previously-published content, such as [[Dictionary.com]]. Use via only when a standard identifier cannot be used (see {{section link||Identifiers}}). Example: <code><nowiki>{{Cite dictionary |entry=skeptic |entry-url=https://www.dictionary.com/browse/skeptic?s=t#collins-section |title=[[Collins English Dictionary]] |edition=Complete & Unabridged Digital |date=2012 |location=London |publisher=[[HarperCollins]] |via=[[Dictionary.com]] |access-date=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code>
===Pages===
{| class="wikitable plainrowheaders sortable" style="float:right; margin-left:1em;"
|+CS1/CS2 template support for<br /><code>{{pipe}}volume=</code>, <code>{{pipe}}issue=</code>, <code>{{pipe}}page(s)=</code>
|-
!scope="col"| Template
!scope="col"| {{pipe}}volume=
!scope="col"| {{pipe}}issue=
!scope="col"| {{pipe}}page(s)=
!scope="col"| {{pipe}}quote-page(s)=
|-
!scope="row"| {{tlx|citation}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite arXiv}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite AV media}}
| {{yes}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite AV media notes}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite bioRxiv}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite book}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite citeseerx}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite conference}}
*(as a book)}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite conference}}
*(as a journal)}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite encyclopedia}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite episode}}
| {{no}} || {{yes}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite interview}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite journal}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite magazine}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite mailing list}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite map}}
*(as book)}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite map}}
*(as journal or magazine)}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite news}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite newsgroup}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite podcast}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite press release}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite report}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite serial}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite sign}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite speech}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite ssrn}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite tech report}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite thesis}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite web}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|}
An editor may use any <u>one</u> of the following parameters in a given citation to refer to the specific page(s) or place in a cited source that contains the information that supports the article text. If more than one of the following parameters are used in the same citation, the error message <span style="color:red">Extra <code>|pages=</code> or <code>|at=</code> (</span>[[Help:CS1 errors#extra pages|help]]<span style="color:red">)</span> will display in the published citation. When more than one of the following parameters is used in error, {{para|page}} overrides both {{para|pages}} and {{para|at}}; {{para|pages}} overrides {{para|at}}. To resolve the error, remove extra parameters of this type until only one remains in the affected citation.
* '''page''': page in the cited source containing the information that supports the article text, for example {{para|page|52}}.
**{{anchor|pagehyphen}}'''Note:''' For a hyphenated page, use {{para|page|<nowiki>12{{hyphen}}34</nowiki>}}. This will not only properly display a hyphen, but also reduce the likelihood that an editor/bot will convert this to {{para|pages|<nowiki>12{{endash}}34</nowiki>}} by mistake.
* {{anchor|csdoc_pages<!-- for as long as we don't pull "pages" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_pages" -->}}'''pages''': pages in the cited source containing the information that supports the article text. Separate page ranges with an [[En dash#En dash|en dash]]: – , for example {{para|pages|236–239}}. Separate non-sequential pages either with commas or semicolons, for example {{para|pages|157, 159}}. The form {{para|pages|461, 466–467}} is used when you are citing both non-contiguous and sequential pages. For page numbers higher than 999, either do not use thousands separators or enclose the page number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators, e.g. {{para|pages|<nowiki>((1,234{{endash}}1,235))</nowiki>}}. For multiple hyphenated pages, use the [[Help:Citation Style 1#Accept-this-as-written markup|accept-this-as-written markup]] to avoid the hyphens being converted to dashes, e.g. {{para|pages|<nowiki>((1{{hyphen}}2)), ((3{{hyphen}}4))</nowiki>}}.
**'''Note:''' CS1 citations do not record the total number of pages in a cited source; do not use this parameter for that purpose.
* '''at''': place in the cited source containing the information that supports the article text when a page number is not given, is inappropriate or is insufficient. Common examples include column or col., paragraph or para. and section or sec. Depending on the source being cited, other indicators may be appropriate to use with the {{para|at}} parameter including, but not limited to, track, hours, minutes and seconds, act, scene, canto, book, part, folio, stanza, back cover, liner notes, indicia, colophon, dust jacket, etc. Examples include {{para|at|Column 2}} or {{para|at|Paragraph 5}} or {{para|at|Back cover}} or {{para|at|Act III, Scene 2}}.
* <b>quote-page</b>: The number of a single page quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the page(s) specified in {{para|page}}, {{para|pages}} or {{para|at}}. Displays preceded by {{code|p.}} unless {{para|no-pp|yes}}. If hyphenated, use {{tl|hyphen}} to indicate this is intentional (e.g. {{para|quote-page|<nowiki>3{{hyphen}}12</nowiki>}}). Alias: none.
* OR: <b>quote-pages</b>: A list or range of pages quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the pages specified in {{para|pages}} or {{para|at}}. Separate using an en dash (–); separate non-sequential pages with a comma (,). Displays preceded by {{code|pp.}} unless {{para|no-pp|yes}} is defined. Hyphens are automatically converted to en dashes; if hyphens are appropriate because individual page numbers contain hyphens, for example: pp. 3-1–3-15, use [[Help:Citation_Style_1#Accept-this-as-written_markup|double parentheses]] to tell the template to display the value of {{para|quote-pages}} without processing it, and use {{tl|hyphen}} to indicate to editors that a hyphen is really intended: {{para|quote-pages|<nowiki>((3{{hyphen}}1{{ndash}}3{{hyphen}}15))</nowiki>}}. Alias: none.
If the same source is reused with different pages, separate citations must be created. A way around this problem is to use a short citation {{tlx|sfn}}, or {{tlx|rp}} to provide linked page number citations.
===Edition identifiers===
* '''edition''': Identifies the particular edition of a cited source when the source has more than one edition, such as "2nd", "Revised", etc. Note that this parameter automatically displays " ed." after your entry. For example, {{para|edition|Revised third}} displays as: Revised third ed. The edition parameter can be omitted if there is no content difference between two editions of the same work; e.g. if a book was identically published in the UK and the US except, for example, ISBN number and cover art, it is not necessary to indicate either "UK" or "US" edition; or if citing minute:seconds of a film available in both a regular edition and a "Special Limited Collector's Edition", if the running time and cut are the same, it is not necessary to cite the particular edition.
* '''series''': When the source is part of a series, such as a book series or a journal where the issue numbering has restarted. For journal series, {{para|series}} should be limited to {{code|Original/New Series}}, {{code|First/Second/Third/... Series}}, or similar.{{refn|name="c17_14.126"|group="Note"|"Some numbered series have gone on so long that, as with certain long-lived journals, numbering has started over again, preceded by n.s. (new series), 2nd ser. (second series), or some similar notation, usually enclosed in commas. (A change of publisher may also be the occasion for a change in series designation.) Books in the old series may be identified by o.s., 1st ser., or whatever complements the notation for the new series."<ref>{{cite book |author=University of Chicago |title=The Chicago Manual of Style |edition=17th |year= 2017 |publisher=University of Chicago Press |page=14.126|location=Chicago |language= |isbn=978-0226104201}}</ref>
<p>For instance the journal ''[[Physical Review]]'', was numbered volumes 1–35 from 1893 to 1912 (the first series). From 1913 to 1969, the volume numbering restarted at 1 and went up to 188 (the second series). In 1970, ''Physical Review'' split into different parts, ''Physical Review A'', ''Physical Review B'', ''Physical Review C'', and ''Physical Review D'', where volumes again restarted at 1 (the third series). Since there are two publications identified as ''Physical Review, Volume 1'', there is a need to distinguish which is which by use of {{para|series|First Series}} or {{para|series|Second Series}}. While ''Physical Review A'' is in the third series of the ''Physical Review'' [[media franchise]], it is the first series of the publication known as ''Physical Review A''. Since there is no confusion about what ''Physical Review A, Volume 1'' could be referring to, there is no need to clarify to which numbering series the journal belong.</p>
<p>In particular, note that the {{para|series}} parameter is not to be used to distinguish the different parts of a [[media franchise]], like ''[[Physical Review A]]'', ''[[Acta Crystallographica Section A]]'', ''[[Journal of the Royal Statistical Society, Series B]]''.</p>}}
* {{anchor|csdoc_volume<!-- for as long as we don't pull "volume" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_volume" -->}}'''volume''': For a source published in several volumes. This field is displayed in bold after the title and series parameters. An alternative is to include the volume information in the title parameter after the main title. Separate volume ranges with an [[En dash#En dash|en dash]]: – , for example {{para|volume|I–IV}}. Separate non-sequential volumes either with commas or semicolons, for example {{para|volume|I, III}}. The form {{para|volume|I, III–V}} is used when you are citing both non-contiguous and sequential volumes. For volume numbers higher than 999, either do not use thousands separators or enclose the volume number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators.
* {{anchor|csdoc_issue<!-- for as long as we don't pull "journal" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_issue" -->}}'''issue''': When the source is part of a series that is published periodically. Alias: '''number'''. When the issue has a special title of its own, this may be given, in italics, along with the issue number, e.g. {{para|issue|2, <nowiki>''</nowiki>Modern Canadian Literature<nowiki>''</nowiki>}}. Please choose either {{para|issue}} or {{para|number}} depending on what nomenclature is actually used in a publication. If a publication carries both, issue and number designations (typically one being a year-relative and the other an absolute value), provide them both, for example {{para|issue|2 #143}}. Separate ranges with an [[En dash#En dash|en dash]]: – , and non-sequential numbers either with commas or semicolons. For numbers higher than 999, either do not use thousands separators or enclose the number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators.
===External links===
* '''url''': Adds a link to the title
* '''chapter-url''': Adds a link to the chapter.
* '''format''': Format of the document at its URL (e.g., PDF, XLS, etc.). Do not specify for HTML as it is implied as the default. Do not use this parameter for completely different purposes, with annotations such as "fee required" or "reprint"; its intent is to notify readers what the file format is (e.g. in case some browsers might have trouble with it, or some might prefer to save the link to disk rather than open it in the browser). Access restrictions can be shown using the appropriate {{para|url-access}} parameter, see [[#Registration or subscription required|Registration or subscription required]]. Other notes about reprintings, etc., should be placed after the template, and before {{tag|ref|c}}.
====Using |format= ====
When MediaWiki encounters an external link URL with a '.pdf' or '.PDF' [[filename extension|extension]], it renders the external link with a [https://example.com/document.pdf PDF icon] in place of the usual [https://example.com/document external-link icon]. To make rendered cs1|2 citations that link to PDF documents somewhat more accessible, cs1|2 automatically adds a parenthetical PDF annotation so that those readers using screen-reader technology can know the type of the linked file. This is imperfect because some on-line sources redirect .pdf URLs to .html landing pages (this is common for PDF documents behind paywalls or registration barriers). Because the parenthetical PDF annotation happens automatically, editors are not required to set {{para|format|PDF}}, though doing so causes no harm. The {{para|format|PDF}} parameter may be deleted as part of a more substantial edit but editors should consider that many cs1|2 templates are copied from en.Wikipedia to other-language Wikipedias when articles here are translated to that other language. Do not assume that other-language Wikipedias use up-to-date cs1|2 templates; many do not, so removing {{para|format|PDF}} here can affect readers/translators at other Wikipedias.
====Online sources====
{{main|Wikipedia:External links|Wikipedia:Citing sources}}
Links to sources are regarded as conveniences and are not required, except when citing Web-only sources. There are many digital libraries with works that may be used as sources.
* Links should be to full versions of the source.
* Online sources that require payment or subscription may be included per [[Wikipedia:Verifiability]].
Do not link to:
* Sites that do not have permission to republish the work or which otherwise violate copyright.
* Commercial sites such as Amazon, unless no alternative exists.
* Reviews of the work.
* Very short extracts such as Google Books snippet view where there is not enough context to verify the content, unless the entire work is also freely available there. (See [[WP:BOOKLINKS]])
====Link formats====
Links should be kept as simple as possible. For example, when performing a search for a Google Book, the link for ''Monty Python and Philosophy'' would look like:
: https://books.google.com/books?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false
But can be trimmed to:
: https://books.google.com/?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false
or:
: https://books.google.com/?id=NPDgD546-doC&printsec=frontcover
or:
: https://books.google.com/?id=NPDgD546-doC (if Google Books does not provide the cover page).
====Pages====
A direct link to a specific page may be used if supported by the host. For example, the link to page 172 of ''Monty Python and Philosophy'' on Google Books:
: https://books.google.com/?id=NPDgD546-doC&pg=PA172
like so:
: <code><nowiki>|page=[https://books.google.com/?id=wPQelKFNA5MC&pg=PA172 172]</nowiki></code>
====Special characters====
{{MediaWiki URL rules}}
====Access date====
* '''access-date''': The full date when the content pointed to by '''url''' was last verified to support the text in the article; do not wikilink; requires '''url'''; use the same format as other access and archive dates in the article's citations. It is ''not required for linked documents that do not change.'' For example, '''access-date''' is not required for links to copies of published research papers accessed via DOI or a published book, but should be used for links to news articles on commercial websites (these can change from time to time, even if they are also published in a physical medium). Note that '''access-date''' is the date that the URL was checked to not just be working, but to support the assertion being cited (which the current version of the page may not do). Can be [[Help:Citation Style 1/accessdate|hidden or styled]] by registered editors. Alias: '''accessdate'''.
===Web archives===
{{see|Wikipedia:Link rot}}
* '''archive-url'''. Alias: '''archiveurl'''.
* '''archive-date'''. Alias: '''archivedate'''.
The original link may become unavailable. When an archived version is located, the original URL is retained and {{para|archive-url}} is added with a link to an archived copy of a web page, usually from services like WebCite and the Internet Archive. {{para|archive-date}} must be added to show the date the page was archived, not the date the link was added. When {{para|archive-url}} is used, {{para|url}} and {{para|archive-date}} are required, else an error will show. When an archived link is used, the citation displays with the title linked to the archive and the original link at the end: {{cite book |title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013}}
* '''url-status''': To change the order with the title retaining the original link and the archive linked at the end, set {{para|url-status|live}}:
:{{cite book|title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013 |url-status=live}}
When the original URL has been usurped for the purposes of spam, advertising, or is otherwise unsuitable, setting {{para|url-status|unfit}} or {{para|url-status|usurped}} suppresses display of the original URL (but {{para|url}} and {{para|archive-url}} are still required).
===Identifiers===
{{csdoc|id2}}
A custom identifier can be specified through
{{csdoc|id1}}
===Registration or subscription required===
{{csdoc|registration}}
===Quote===
{{csdoc|quote|unpaginated=yes}}
===Anchors===
The module creates HTML IDs by default suitable for use with [[WP:CITESHORT|shortened footnotes]] using the [[Template:Harvard citation documentation|Harv- and sfn-family templates]]. These styles use in-text cites with a link that will jump to the ID created by the CS1 template. The ID is created from up to four author last names and the year, of the format <code>CITEREF''lastname(s)year''</code>.
'''{{para|ref|<var>ID</var>}}''': Creates a custom ID equivalent to the value <var>ID</var>. This is useful where the author and/or date is unknown. The {{tlx|harvid}} template may be used here to create an ID for the Harv- and sfn-family templates.
{| class="wikitable plainrowheaders"
|+ Examples of anchors
|-
!scope="col"| Kind
!scope="col"| Wikitext
!scope="col"| ID created
!scope="col"| Targetable by
|-
!scope="row"| Default, one name
| <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |title=Monty Python and Philosophy |date=2006}}</nowiki></code>
| <code>CITEREFHardcastle2006</code>
| {{tlx|harv|Hardcastle|2006|4=pp=12-34}}
|-
!scope="row"| Default, two names
| <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |first2=George A. |last2=Reisch |title=Monty Python and Philosophy |date=2006}}</nowiki></code>
| <code>CITEREFHardcastleReisch2006</code>
| {{tlx|harv|Hardcastle|Reisch|2006|5=pp=12-34}}
|-
!scope="row"| {{para|ref}} using {{tl|harvid}}
| <code><nowiki>|ref={{harvid|Monty Python and Philosophy|2006}}</nowiki></code>
| <code>{{harvid|Monty Python and Philosophy|2006}}</code>
| {{tlx|harv|Monty Python and Philosophy|2006|4=pp=12-34}}
|}
===Display options===
These features are not often used, but can customize the display for use with other styles.
{{csdoc|display|lua=yes}}
====et al.====
et al. is the abbreviation of the Latin {{lang|la|et alii}} ('and others'). It is used to complete a list of authors of a published work, where the complete list is considered overly long. The abbreviation is widely used in English, thus it is not italicized per [[MOS:FOREIGN]].
===Accept-this-as-written markup===
There are occasions where [[Module:Citation/CS1]] emits error or maintenance messages because of, or makes changes to, the values assigned to a select set of parameters. Special markup can be used to enforce that a value will nonetheless be accepted as written. The markup for this is <code>(({{var|value}}))</code>, i.e., wrap the entire parameter value in two sets of parentheses. Parameters that support this markup are:
{| class="wikitable plainrowheaders"
|+ Parameters that support accept-this-as-written markup
!scope="col"| Parameter
!scope="col"| Notes
|-
!scope="row"| {{para|author{{var|n}}}}
|rowspan="6"| The various {{var|name}} parameters (including their enumerated variants) are checked for extra comma and semicolon separator characters which may indicate that the parameter is holding more than one name. If so, the list of names should be split up over multiple {{var|n}}-enumerated parameters. Corporate names, however, are sometimes comma-separated lists of names as well and so are erroneously flagged as a multiple-name error; markup can be used to indicate this.<br /><br />Legitimate names may be caught by the [[Help:CS1_errors#generic_name|generic-name test]]. This markup can prevent legitimate names from being flagged as generic.
|-
!scope="row"| {{para|contributor{{var|n}}}}
|-
!scope="row"| {{para|editor{{var|n}}}}
|-
!scope="row"| {{para|interviewer{{var|n}}}}
|-
!scope="row"| {{para|subject{{var|n}}}}
|-
!scope="row"| {{para|translator{{var|n}}}}
|-
!scope="row"| [[#csdoc_doi|{{para|doi}}]]
|rowspan="5"| Identifiers are checked for validity to the extent possible. In rare cases, identifiers actually used in published works deviate from the checked standard format but are nonetheless valid. If the problem is down to a mere typographical error in a third-party source, correct the identifier instead of overriding the error message.
|-
!scope="row"| [[#csdoc issue|{{para|eissn}}]]
|-
!scope="row"| [[#csdoc issue|{{para|isbn}}]]
|-
!scope="row"| [[#csdoc_issn|{{para|issn}}]]
|-
!scope="row"| [[#csdoc_sbn|{{para|sbn}}]]
|-
!scope="row"| [[#csdoc_issue|{{para|issue}}]]
|rowspan="2"|Spaces are inserted between commas and succeeding characters in comma-separated lists of issues, a hyphen is converted to an ndash in issue ranges, etc. A hyphenated issue number and an issue range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more issues. Markup can be applied to the entry as a whole or to individual list entries.
|-
!scope="row"| [[#csdoc_issue|{{para|number}}]]
|-
!scope="row"| [[#csdoc_volume|{{para|volume}}]]
| Spaces are inserted between commas and succeeding characters in comma-separated lists of volumes, a hyphen is converted to an ndash in volume ranges, etc. A hyphenated volume and an volume range cannot be distinguished, nor can a four-or-more-digit volume with a thousands-separator from a comma-separated list of two or more volumes. Markup can be applied to the entry as a whole or to individual list entries.
|-
!scope="row"| [[#csdoc_pages|{{para|pages}}]]
|rowspan="3"| Spaces are inserted between commas and succeeding characters in comma-separated lists of pages, a hyphen is converted to an ndash in page ranges, etc. A hyphenated page number and a page range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more pages. Markup can be applied to the entry as a whole or to individual list entries; does not apply to {{para|page}}, {{para|p}}, or {{para|quote-page}}. (This special markup is also supported by the plural page parameters {{para|pages}}, {{para|pp}} and {{para|quote-pages}} (as well as other aliases) of the {{tl|r}}, {{tl|rp}} and {{tl|ran}} citation templates. The family of {{tl|sfn}}- and {{tl|harv}}-style templates supports it as well in conjunction with {{para|pages}} and {{para|pp}}.)
|-
!scope="row"| [[#csdoc_pages|{{para|pp}}]]
|-
!scope="row"| [[#Quote|{{para|quote-pages}}]]
|-
!scope="row"| {{para|title}}
| Trailing dots are normally removed from the value assigned to {{para|title}} as being redundant. There are cases where trailing dots are not redundant but are part of the title proper so should be retained. <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, etc.<!-- don't document "off" for now as it may change again with the next update -->) taking precedence over free text input to specify a title; if a value also matching a keyword is meant as actual title text, markup can be used to indicate this.
|-
!scope="row"| {{para|title-link}}
| <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, <code>doi</code>, <code>pmc</code>) taking precedence over free text input to specify a link target; if a value also matching a keyword is meant as actual link target, markup can be used to indicate this.
|-
!scope="row"| [[#Authors|{{para|vauthors}}]]
|rowspan="2"| Markup to suppress error messages and automatic Vancouver reformatting of allowed corporate names.
|-
!scope="row"| [[#Editors|{{para|veditors}}]]
|}
==Printing==
When viewing the page, CS1 templates render the URL to the title to create a link; when printing, the URL is printed. [[Help:External link icons|External link icons]] are not printed.
==Elements not included==
Not all factually accurate pieces of information about a source are used in a Citation Style 1 citation. Examples of information not included:
* The total number of pages in a cited source
* The name of the library that provided access to an electronic copy of a cited source
* The name of the library that owns a physical copy of a cited work
* The library record or shelf location of a physical copy of a cited work
==Tools==
{{main|Help:Citation tools}}
'''CS1 templates may be inserted manually or by use of tools:'''
* [[Wikipedia:TWL/Citoid|Citoid]], a tool built into [[WP:Visual Editor|Visual Editor]] that attempts to build a full citation based on a URL. See [[Wikipedia:VisualEditor/User guide#Using Citoid|user guide]].
* [[Wikipedia:RefToolbar|RefToolbar]] is part of the editing tool bar. Version 2.0 does not yet support all templates supported by version 1.0.
* [[User:ProveIt GT|ProveIt]] provides a graphical interface for editing, adding, and citing references. It may be enabled per the documentation.
* [https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ Wikipedia DOI and Google Books Citation Maker]
* [https://tools.wmflabs.org/dispenser/view/Reflinks Reflinks] Adds references to templates while updating/filling-in title/dates/publisher/accessdates etc.
* [https://tools.wmflabs.org/refill/ reFill] open source version of Reflinks
* [[Zotero]] can export citations in Wikipedia-ready format.
* [http://tools.wmflabs.org/citer/ Citer] – generates shortened footnote or named reference for a given Google Books URL, ISBN, or DOI. Also supports some major news websites.
'''{{anchor|Error checking}}Error checking [[Wikipedia:User scripts|scripts]]:'''
* [[User:Svick/HarvErrors]] is a script that may be enabled to display errors when using [[WP:CITESHORT|Shortened footnotes]] or [[WP:PAREN|parenthetical referencing]]. It does not warn when a long citation has been added but not a short one (using {{tl|sfn}} or {{tl|harvnb}}).
* [[User:Trappist the monk/HarvErrors]] is very similar, but also contains additional warnings for potential issues.
* [[User:BrandonXLF/CitationStyleMarker]] highlights inconsistent (CS1 vs CS2) citation styles used in the same article. Only works with templated citations.
'''{{anchor|Reliability}}Reliability scripts:'''
* [[User:Headbomb/unreliable]] color codes URLs and DOIs in gray/red/pink/yellow depending on their broad reliability
==TemplateData==
This section documents interactions between [[WP:TemplateData]] and tools which use that data to edit Wikipedia such as [[VisualEditor]] and bots. Before making changes to the TemplateData be aware of these interactions.
===[[User:InternetArchiveBot]]===
*If an argument is set to "required" the argument will be added to all templates edited by IABot. This including adding empty arguments. For example, when {{para|website}} is "required" IABot makes the following edit: [https://en.wikipedia.org/w/index.php?title=2017%E2%80%9318_British_and_Irish_Cup&diff=prev&oldid=914629379].
==Common issues==
{{shortcut|Help:CS1PROBS}}
; {{para|access-date}} does not show.
: If {{para|url}} is not supplied, then {{para|access-date}} does not show; by design.
; The bare URL shows before the title.
: If the {{para|title}} field includes a newline or an invalid character then the link will be malformed; see [[#Web links|Web links]].
; The title appears in red.
: If URL is supplied, then the title cannot be wikilinked.
; The URL is not linked and shows in brackets.
: The URL must include the [[URI scheme]] in order for MediaWiki to recognize it as a link. For example: <code>www.example.org</code> vs. <code>http://www.example.org</code>.
; A field is truncated.
: A pipe (<code>|</code>) in the value will truncate it. Use {{tlx|!}} instead.
; The template markup shows.
: Double open brackets [[ are used in a field without closing double brackets ]].
; The author shows in brackets with an external link icon.
: The use of an URL in {{para|author-link}} will break the link; this field is for the name of the Wikipedia article about the author, not a website.
; Multiple author or editor names are defined and one or more does not show
: The parameters must be used in sequence, i.e. if {{para|last}} or {{para|last1}} is not defined, then {{para|last2}} will not show. By design.
; {{para|page}}, {{para|pages}} or {{para|at}} do not show.
: These parameters are mutually exclusive, and only one will show; by design.
== See also ==
* [[Help:Citation Style 2]]
* [[Help:CS1 errors]]
==Notes==
{{reflist|group="Note"}}
==References==
{{reflist}}
{{Wikipedia referencing}}
{{Citation Style 1}}
{{Help navigation}}
[[Category:Citation Style 1 templates|*]]
[[Category:Wikipedia citation administration]]
163131d4cbdf81900cb0d4974c4b0d845e7b20b7
Module:Lang
828
434
1896
2023-07-28T21:46:18Z
wikipedia>Trappist the monk
0
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local content_lang = mw.language.getContentLanguage();
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transliteration' == template then
category = 'Transliteration';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------
makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in
html markup. This because the lang= attibute applies to the content of its enclosing tag.
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag
]]
local function title_wrapper_make (title_text, content_text, tag)
local wrapper_t = {};
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag
table.insert (wrapper_t, ' title=\"'); -- begin title attribute
table.insert (wrapper_t, title_text); -- add <title_text>
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag
table.insert (wrapper_t, content_text); -- add <content_text>
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag
return table.concat (wrapper_t); -- make a big string and done
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish
language text' is English:
<i lang="es" title="Spanish language text">casa</i>
should be:
<span title="Spanish language text"><i lang="es">casa</i></span>
or for <div>...</div>:
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div>
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html_t = {};
local style_added = '';
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div
if text:match ('^%*') then
table.insert (html_t, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages
end
if 'normal' == style then -- when |italic=no
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag
table.insert (html_t, text); -- insert the text
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div
local title_text;
if 'zxx' == code then -- special case for this tag 'no linguistic content'
title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text
elseif mw.ustring.find (language, 'languages', 1, true) then
title_text = table.concat ({language, ' collective text'}); -- for collective languages
else
title_text = table.concat ({language, '-language text'}); -- for individual languages
end
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);
else
return table.concat (html_t);
end
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if mw.ustring.find (language_name, 'languages', 1, true) then
return table.concat ({'[[Category:Articles with text in ', language_name, ']]'});
end
table.insert (cat, '[[Category:Articles containing ');
if this_wiki_lang_tag == code then
table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language
else
table.insert (cat, language_name);
end
table.insert (cat, '-language text]]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transliteration}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local out_t = {};
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local title_text = ''; -- tool tip text for title= attribute
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
title_text = language_name; -- write a generic tool tip
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_t[std] then -- and if standard is legitimate
if title_t[std][tscript] then -- and if script for that standard is legitimate
if script_table[tscript] then
title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_t[std] then return ''; end -- invalid standard, setup for error message
if title_t[std][code] then -- if language code is in the table (transl may not provide a language code)
title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip
else -- code doesn't match
title_text = title_text .. title_t[std]['default']; -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_t['no_std'][tscript] then
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set
elseif title_t['no_std'][code] then
title_text = title_text .. title_t['no_std'][code]; -- use language code
else
if is_set (tscript) then
title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip
elseif is_set (code) then
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' transliteration'; -- finish the tool tip
else
title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?)
end
end
end
local close_tag;
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}})
code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag
if not style then -- nil for the default italic style
table.insert (out_t, "<i lang=\""); -- so use <i> tag
close_tag = '</i>'; -- tag to be used when closing
else
table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
close_tag = '</span>'; -- tag to be used when closing
end
table.insert (out_t, code);
table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script
else
table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only)
close_tag = '</span>';
end
table.insert (out_t, translit); -- add the translit text
table.insert (out_t, close_tag); -- and add the appropriate </i> or </span>
if '' == title_text then -- when there is no need for a tool-tip
return table.concat (out_t); -- make a string and done
else
return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don
end
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div>
tags are used to wrap it, to prevent div/span inversion.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags
tag = 'div';
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf];
elseif override_table[code] then -- not there so try basic language tag
name = override_table[code];
elseif lang_table[code] then -- shift to iana active tag/name table
name = lang_table[code];
elseif lang_dep_table[code] then -- try the iana deprecated tag/name table
name = lang_dep_table[code];
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< T R A N S L A T I O N _ M A K E >----------------------------------------------
stand-alone function to create literal translation of main text
Also used by {{lang-x2}}
]]
local function translation_make (args_t)
local translation_t = {', '}; -- initialize output
if 'none' ~= args_t.label then -- if we want a label
table.insert (translation_t, '<small>'); -- open the <small> html tag
if 'no' == args_t.link then
table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form
else
table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form
end
table.insert (translation_t, " </small>"); -- close the <small> html tag
end
table.insert (translation_t, table.concat ({''', args_t.translation, '''})); -- use html entities to avoid wiki markup confusion
return table.concat (translation_t); -- make a big string and done
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if mw.ustring.find (language_name, 'languages', 1, true) then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink
end
end
table.insert (out, ': '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '<small>');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script']];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanized:'); -- else plain text
end
table.insert (out, ' </small>'); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, translation_make (args));
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame
end
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag>
is in the parent frame.
]]
local function is_ietf_tag_frame (frame)
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if mw.ustring.find (language_name, 'languages', 1, true) then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration');
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transliteration');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transliteration');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args_t)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args_t[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args_t.link; -- make a boolean
local label = args_t.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
if link then
return table.concat ({'[[:', category_name, ']]'});
else
return category_name;
end
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_ietf_tag_frame = is_ietf_tag_frame,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
_translation_make = translation_make,
};
b4bf37fa610695625e5f1ff5d33471dfaaf8af34
Template:Collapsible option
10
1062
2322
2023-07-28T22:20:39Z
wikipedia>Sdkb
0
Implement overhaul for readability, per [[WP:SILENTCONSENSUS|silent consensus]] at talk [[Special:Permalink/1166630468#Readability_overhaul|here]].
wikitext
text/x-wiki
This template's '''initial visibility currently defaults to {{param value|{{#switch:{{{default|}}}|collapsed=collapsed|expanded=expanded|autocollapse|#default=autocollapse}}}}''', meaning that {{#switch:{{{default|}}}|collapsed=it is hidden apart from its title bar.|expanded=it is fully visible.|autocollapse|#default=if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar; if not, it is fully visible.}}
To change this template's initial visibility, the {{para|{{{parameter_name|state}}}}} [[Help:Template#Parameters|parameter]] may be used:
<ul>
{{#ifeq:{{{default|}}}|collapsed|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}}| |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=collapsed}}</nowiki></code> will show the template collapsed, i.e. hidden apart from its title bar.</li>}}
{{#ifeq:{{{default|}}}|expanded|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=expanded}}</nowiki></code> will show the template expanded, i.e. fully visible.</li>}}
{{#ifeq:{{{default|autocollapse}}}|autocollapse|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=autocollapse}}</nowiki></code> will show the template autocollapsed, i.e. if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar, but if not, it is fully visible.</li>}}</ul><!--
-->{{#if:{{{align|}}}|{{para|align|{{var|value}}}} is also available; where {{var|value}} can be either <code>right</code> or <code>left</code>. The default is {{kbd|center}}.
}}{{#if:{{{title-background|}}}|{{para|title-background|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|navbox}} or a {{kbd|color}}. The default is {{kbd|none}}, and {{{kbd|navbox}}} defaults to the default navbox color.
}}{{#if:{{{width|}}}|
{{para|width|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|{{var|N}} [em/%/px]}} or {{kbd|auto}}. The default is {{kbd|100%}}.
}}<!--
Add {{pp-template}} if template page where this template is transcluded is protected:
-->{{template other
| {{#if:{{PROTECTIONLEVEL:edit}} |{{pp-template|docusage=yes}}
| {{#if:{{PROTECTIONLEVEL:move}} |{{pp-move|docusage=yes|small=yes}} }}
}} }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
fa727f26d272a237bc7017c83ebd236a8ebb743a
Template:Ping
10
209
474
2023-07-29T03:13:30Z
Zppix
23
Protected "[[Template:Ping]]": High-risk template ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite) [Delete=Allow only autoconfirmed users] (indefinite))
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Reply to|replyto|<noinclude>example=Example</noinclude>|max=50}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
2a5b1c2046f67d2edc3c7b2dc5258b61310c2f02
Module:Lang/doc
828
443
2492
2023-07-29T09:49:33Z
w>Fayenatic london
0
/* Tracking categories */ update category links
wikitext
text/x-wiki
{{High-use}}
{{Language templates}}
{{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}}
This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {{cl|Lang-x templates|{{tld|lang-??}}}} (most), and {{tlx|Transl}} templates into a single source and to use a clearly defined data set extracted from international standards. It provides error checking and reporting to ensure that the html rendered is correct for browsers and screen readers.
Other templates that get language name support from this module are:
* {{tlx|Native name}}
==Data set==
The data set is specified in [[Module:Lang/data]] and its included data modules:
* language tag-and-name data
** [[Module:Language/data/iana languages]] – from IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]
* language script data
** [[Module:Language/data/iana scripts]] – from IANA language-subtag-registry file
* language region data
** [[Module:Language/data/iana regions]] – from IANA language-subtag-registry file
* language variant data
** [[Module:Language/data/iana variants]] – from IANA language-subtag-registry file
* suppressed-script data
** [[Module:Language/data/iana suppressed scripts]] – from IANA language-subtag-registry file
The data set also includes supplementary data modules:
* override and other non-standard data
** [[Module:Lang/ISO 639 synonyms]] – maps three character ISO 639-2, -2T, -3 codes to two character ISO 639-1 codes – from [https://www.loc.gov/standards/iso639-2/php/English_list.php Codes for the Representation of Names of Languages]
** [[Module:Lang/tag from name]] – reversed language tag-and-name data so that the language name is the key and the language tag is the value
== Testcases ==
* [[Module:Lang/testcases]] ([[Module talk:Lang/testcases|run]])
* category_from_tag()
** [[Module:Lang/testcases/ISO 639-1 category from tag]] ([[Module talk:Lang/testcases/ISO 639-1 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-1 category from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-2 category from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-3 category from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 category from tag|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override category from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override category from tag|run]])
* name_from_tag()
** [[Module:Lang/testcases/ISO 639-1 name from tag]] ([[Module talk:Lang/testcases/ISO 639-1 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-1 name from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-2 name from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-3 name from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 name from tag|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override name from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override name from tag|run]])
* tag_from_name()
** [[Module:Lang/testcases/ISO 639-1 tag from name]] ([[Module talk:Lang/testcases/ISO 639-1 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-1 tag from name]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-2 tag from name]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-3 tag from name]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 tag from name|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override tag from name]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override tag from name|run]])
==Tracking categories==
* {{Category link with count|Lang and lang-xx template errors}}
* {{Category link with count|Transliteration template errors}}
* {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}}
* {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}}
==See also==
MoS on foreign words:
* {{Section link|Wikipedia:Manual of Style/Text formatting#Foreign terms}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
86fdcd32c33e0452c7598425e985cf3163a09016
Template:Dabnav
10
1583
2918
2023-07-29T15:31:48Z
w>Weeklyd3
0
Undid revision 1167680200 by [[Special:Contributions/2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113|2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113]] ([[User talk:2403:6200:8850:BA7B:C5CA:A12B:7B6F:9113|talk]]): looks like a test edit
wikitext
text/x-wiki
{{helpbox|width:150px
|templatename=Dabnav
|float={{{float|right}}}
|bodyclass=plainlist
|name=Disambiguation
|list1=
*[[Wikipedia:Disambiguation|Guideline]] ([[Wikipedia talk:Disambiguation|talk]])
*[[Wikipedia:Manual of Style/Disambiguation pages|Manual of Style]] ([[Wikipedia talk:Manual of Style/Disambiguation pages|talk]])
*[[Wikipedia:Manual of Style/Organizing disambiguation pages by subject area|Organizing long dabs]] ([[Wikipedia talk:Manual of Style/Organizing disambiguation pages by subject area|talk]])
*[[Wikipedia:Disambiguation dos and don'ts|Dos and don'ts]] ([[Wikipedia talk:Disambiguation dos and don'ts|talk]])
*[[Wikipedia:Long dab dos and don'ts|Organizing dos and don'ts]] ([[Wikipedia talk:Long dab dos and don'ts|talk]])
*[[Help:Disambiguation|Reader help]] ([[Help talk:Disambiguation|talk]])
----
*{{tl|Disambiguation}}
----
*[[Wikipedia:WikiProject Disambiguation|WikiProject]] ([[Wikipedia talk:WikiProject Disambiguation|talk]])
*[[Wikipedia:WikiProject Disambiguation/CJKV task force|CJKV task force]] ([[Wikipedia talk:WikiProject Disambiguation/CJKV task force|talk]])
----
*[[:Category:Wikipedia disambiguation|Disambig category]]
*[[:Category:Disambiguation pages in need of cleanup|Pages in need of cleanup]]
*[[Wikipedia:Disambiguation pages with links|Pages with links]]
----
}}<noinclude>
{{Documentation}}
[[Category:Wikipedia maintenance navigational templates]]
[[Category:Wikipedia administration templates]]
[[Category:Wikipedia help templates]]
[[Category:WikiProject Disambiguation|τ]]
</noinclude>
2d19d538e7fe34f655d33e83f958ab37657c0197
Template:Param value
10
1068
2334
2023-07-29T17:59:50Z
wikipedia>MusikBot II
0
Protected "[[Template:Param value]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 134494 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<code style="border:{{{border|{{{b|thin solid #caa}}}}}};background-color:{{{bg-color|{{{bg|white}}}}}};padding:1px 2px 0 1px;margin:0 2px 0 1px;white-space:nowrap;{{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{replace|<includeonly>⊗ϑ{{{1|}}}⊗ϑ</includeonly><noinclude>value</noinclude>| |{{{space|{{{sp| }}}}}}}}|#|#}}|*|*}}|:|:}}|⊗ϑ|}}</code><noinclude>
{{Documentation}}
</noinclude>
6298b021570fa18e8e9016184d0b7a3c00563553
Template:Disambiguation/doc
10
1587
2922
2023-07-31T06:31:31Z
w>Sdkb
0
Improve TemplateData, adding suggested values and labels
wikitext
text/x-wiki
<noinclude>{{pp-vandalism|small=yes}}
</noinclude>{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) -->
{{for|the inline tag|Template:Disambiguation needed}}
{{High-use}}
{{Nosubst}}
{{Dabnav}}
{{tsh|Dab|Disambig}}
This is the {{tl|Disambiguation}} template.
This is a general-purpose template, to be placed at the bottom of any article that exists to help readers find other articles with the same or similar names. This concept is called ''[[Wikipedia:Disambiguation|disambiguation]]'' and is used with many common words, such as ''[[Cross (disambiguation)|cross]]'', ''[[Life (disambiguation)|life]]'' and ''[[work]]''. This template automatically adds articles to the [[:Category:Disambiguation pages]].
== Page title fixes ==
This template will automatically detect incomplete disambiguation present in page titles. If the title includes anything other than (disambiguation) in parentheses, it is assumed to be the article type. For example, this template on the page [[1st Division (France)]] would produce the text "This disambiguation page lists France articles associated with the title '''1st Division'''". If the page title contains parentheses that are not used for disambiguation (such as [[Everything You Always Wanted to Know About Sex* (*But Were Afraid to Ask)]]), set {{para|ignore_parentheses|yes}}. If you wish to manually specify the article type, use the {{para|type}} parameter.
==Variant templates==
===Disambiguation===
{{Category see also|Disambiguation message boxes}}
For disambiguation pages requiring cleanup, use {{tl|Disambiguation cleanup}}.
More specific and alternative templates exist for disambiguation pages whose entries are limited exclusively to items of a particular type:
{|
|- style="text-align:left"
! Template !! Category !! Notes
|-
| {{tl|Airport disambiguation}} || [[:Category:Airport disambiguation pages]] || for airports
|-
| {{tl|Biology disambiguation}} || [[:Category:Biology disambiguation pages]]
|-
| {{tl|Call sign disambiguation}} || [[:Category:Broadcast call sign disambiguation pages]]
|-
| {{tl|Caselaw disambiguation}} || [[:Category:Case law disambiguation pages]]
|-
| {{tl|Chinese title disambiguation}} || [[:Category:Disambiguation pages with Chinese character titles]]
|-
| {{tl|Genus disambiguation}} || [[:Category:Genus disambiguation pages]]
|-
| {{tl|Human name disambiguation}}<br>{{pad}}{{tl|Human name disambiguation cleanup}} || [[:Category:Human name disambiguation pages]]
|-
|-
| {{tl|Hospital disambiguation}} || [[:Category:Hospital disambiguation pages]] || for hospitals or medical centers
|-
| {{tl|Letter–number combination disambiguation}} || [[:Category:Letter–number combination disambiguation pages]]
|-
| {{tl|Mathematical disambiguation}} || [[:Category:Mathematics disambiguation pages]] || for mathematics titles
|-
| {{tl|Military unit disambiguation}} || [[:Category:Military units and formations disambiguation pages]]
|-
| {{tl|Number disambiguation}} || [[:Category:Lists of ambiguous numbers]]
|-
| {{tl|Phonetics disambiguation}} || [[:Category:Linguistics disambiguation pages]]
|-
| {{tl|Place name disambiguation}} || [[:Category:Place name disambiguation pages]]
|-
| {{tl|Road disambiguation}} || [[:Category:Road disambiguation pages]]
|-
| {{tl|School disambiguation}} || [[:Category:Educational institution disambiguation pages]] || for educational institutions
|-
| {{tl|Species Latin name disambiguation}} || [[:Category:Latin name disambiguation pages]]
|-
| {{tl|Station disambiguation}} || [[:Category:Station disambiguation pages]] || for railway and public transport stations
|-
| {{tl|Synagogue disambiguation}} || [[:Category:Synagogue disambiguation pages]] || for synagogues
|}
'''Note:''' A set index article (SIA) is ''not'' a disambiguation page; it is a list article about a set of items ''of a specific type'' that ''also'' share the same (or similar) name. [[Wikipedia:Set index articles]] includes templates for SIAs.
== Parameters ==
Sometimes there isn't a specific disambiguation template (see list above) that fits for a page, or the page has items in more than one of the above classes. Then use {{tl|Disambiguation}} but with one or more parameters telling which categories to use. Up to ten parameters can be fed, and in any order. For example:
:{{tlc|Disambiguation|school|hospital}}
{|
|colspan=2| Only add a parameter from this list if the disambiguation page has '''several''' items of that type:
|-
|style="vertical-align:top"| {{tlx|Disambiguation|human name}}<br>{{pad}}{{tlx|Disambiguation|hn{{=}}''sortkey''}} || for [[:Category:Human name disambiguation pages]]<br>{{pad}}for [[:Category:Human name disambiguation pages]] with a specified [[WP:SORTKEY|sort key]] (e.g. {{tlx|Disambiguation|hn{{=}}Doe, John}})
|-
| {{tlx|Disambiguation|bird}} || for [[:Category:Bird common name disambiguation pages]]
|-
| {{tlx|Disambiguation|church}} || for [[:Category:Church building disambiguation pages]]
|-
|style="vertical-align:top"| {{tlx|Disambiguation|county}}<br>{{pad}}{{tlx|Disambiguation|uscounty}} || for [[:Category:County name disambiguation pages]]<br>{{pad}}for [[:Category:United States county name disambiguation pages]]
|-
| {{tlx|Disambiguation|fish}} || for [[:Category:Fish common name disambiguation pages]]
|-
| {{tlx|Disambiguation|genus}} || for [[:Category:Genus disambiguation pages]]
|-
| {{tlx|Disambiguation|geo}} || for [[:Category:Place name disambiguation pages]]
|-
| {{tlx|Disambiguation|hospital}} || for [[:Category:Hospital disambiguation pages]]
|-
| {{tlx|Disambiguation|latin}} || for [[:Category:Latin name disambiguation pages]]
|-
|style="white-space: nowrap;"| {{tlx|Disambiguation|letter number}} || for [[:Category:Letter–number combination disambiguation pages]]
|-
| {{tlx|Disambiguation|math}} || for [[:Category:Mathematics disambiguation pages]]
|-
| {{tlx|Disambiguation|number}} || for [[:Category:Lists of ambiguous numbers]]
|-
| {{tlx|Disambiguation|plant}} || for [[:Category:Plant common name disambiguation pages]]
|-
| {{tlx|Disambiguation|political}} || for [[:Category:Political party disambiguation pages]]
|-
| {{tlx|Disambiguation|road}} || for [[:Category:Road disambiguation pages]]
|-
| {{tlx|Disambiguation|school}} || for [[:Category:Educational institution disambiguation pages]]
|-
| {{tlx|Disambiguation|ship}} || for [[:Category:Ship disambiguation pages]]
|-
| {{tlx|Disambiguation|station}} || for [[:Category:Station disambiguation pages]]
|-
| {{tlx|Disambiguation|tndis}} || for [[:Category:Title and name disambiguation pages]]
|-
| {{tlx|Disambiguation|township}} || for [[:Category:Township name disambiguation pages]]
|-
|colspan=2| <br/>These can be added if there are '''one or more''' elements in the list (per their category descriptions):
|-
| {{tlx|Disambiguation|airport}} || for [[:Category:Airport disambiguation pages]]
|-
| {{tlx|Disambiguation|callsign}} || for [[:Category:Broadcast call sign disambiguation pages]]
|-
|colspan=2| <br/>These can be added even if there's '''only one''' element in the list, since these types are not actually ambiguous:
|-
| {{tlx|Disambiguation|given name}} || for [[:Category:Disambiguation pages with given-name-holder lists]]
|-
| {{tlx|Disambiguation|surname}} || for [[:Category:Disambiguation pages with surname-holder lists]]
|-
|colspan=2| <br/>This parameter reflects the '''title''', not the contents:
|-
| {{tlx|Disambiguation|chinese}} || for [[:Category:Disambiguation pages with Chinese character titles]]
|-
|colspan=2| <br/>And this parameter reflects a '''maintenance need''', not the contents:
|-
| {{tlx|Disambiguation|split}} || for [[:Category:Disambiguation pages in need of being split]]
{{!}}}
Note that {{tl|Disambiguation}} might not have parameters for all subcategories of [[:Category:Disambiguation pages]]; the category may have to be manually added to the disambiguation page.
=== Nocat ===
If categorization is not needed on pages that are not in [[WP:MAINSPACE|mainspace]], then the "nocat" parameter may be set equal to "true" or "yes" as follows:
* {{tlx|Disambiguation|nocat{{=}}true}}
* {{tlx|Disambiguation|nocat{{=}}yes}}
== Redirects ==
The following redirect to this template:
* {{tl|Disambig}}
* {{tl|Dab}}
* {{tl|Disamb}}
== Technical details ==
Internally, this template uses {{tl|Dmbox}}. That template categorises pages into [[:Category:All disambiguation pages]] and [[:Category:All article disambiguation pages]].
This template also uses {{tl|Disambiguation/cat}} to handle the categorisation parameters, such as "hospital" and "school".
Other templates and modules used:
* {{tl|Disambiguation page short description}}
* {{tl|Template other}}
* {{tl|Title disambig text}}
* {{tl|PAGENAMEBASE}}
* {{tl|Trim}}
* {{tl|Str rep}}
* {{module link|Redirect|isRedirect}}
== Template use ==
Place template at the foot of the disambiguation page after all of the disambiguation content but before any categories (see below) (interlanguage links to Wikidata), as per the [[WP:DCAT]] guideline.
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"description": "Place at the bottom of Disambiguation pages.",
"params": {
"1": {
"label": "First category key",
"description": "Used to put the page in a category. Can be one of 'split' (dab pages in need of being split); 'clean up','clean-up','cleanup' (dabs in need of cleanup); 'airports','airport' (airport dabs); 'call sign','call signs','broadcast call sign','broadcast call signs','callsign' (broadcast call sign dabs); 'chinese char','chinese-char','chinesechar','chinese character','chinese' (chinese character dabs); 'churches','church building','church buildings','church' (church building dabs), 'fish' (fish dabs); 'geodis','geography','geographical','place name','place names','place','places','geo' (Place names); 'county'; 'uscounty' (United States county dabs); 'township' (Township name dabs); 'name','names','human name','human names','hn','hndis' (Human name dabs); 'surnames','surname' (surname dabs); 'given names','given name' (given-name dabs), 'hospital name','hospital names','hospitals','hospital' (hospital dabs); 'latin name','latin names','latin' (Latin name dabs); 'letter-number','letter number' (Letter-number combination dabs); 'mathdab','maths','mathematics','mathematical','math' (mathematical dabs); 'numberdis','numbers','ambiguous number','ambiguous numbers','number' (Lists of ambiguous numbers), 'plants','plant' (Plant common name dabs); 'roaddis','roads','road' (road dabs), 'schooldis','schools','educational institution','educational institutions','college','colleges','university','universities','school' (Educational institution dabs); 'political','party' (political party dabs), 'genus' (Genus dabs)",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
],
"suggested": true
},
"2": {
"label": "Second category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"3": {
"label": "Third category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"4": {
"label": "Fourth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"5": {
"label": "Fifth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"6": {
"label": "Sixth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"7": {
"label": "Seventh category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"8": {
"label": "Eighth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"9": {
"label": "Ninth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"10": {
"label": "Tenth category key",
"description": "Further category keys, as parameter 1.",
"type": "string",
"required": false,
"suggestedvalues": [
"split",
"clean up",
"airports",
"call sign",
"chinese char",
"churches",
"fish",
"places",
"uscounty",
"township",
"name",
"surnames",
"given names",
"hospital names",
"latin name",
"letter-number",
"mathematics",
"ambiguous number",
"plants",
"roads",
"schools",
"political",
"genus"
]
},
"hn": {
"label": "Human name",
"description": "Human name disambiguation page with its own sort key.",
"type": "string",
"required": false
},
"page-title": {
"label": "page-title",
"description": "Page title to use, only useful for special cases when default does not work.",
"type": "string",
"default": "(FULLPAGENAME)",
"required": false
},
"nocat": {
"label": "nocat",
"description": "Set to 'yes' to prevent categorisation.",
"type": "string",
"required": false
},
"demospace": {
"label": "demospace",
"description": "Used for testing.",
"type": "string",
"required": false
},
"ignore_parentheses": {
"label": "ignore_parentheses",
"description": "Set to 'yes' to prevent parentheses in the article title from being parsed as incomplete disambiguation.",
"type": "string",
"required": false
},
"type": {
"label": "type",
"description": "Manually specify the article type in the descriptive text ('This disambiguation page lists {{{type}}} articles...')",
"type": "string",
"required": false
}
}
}
</templatedata>
== See also ==
* [[Wikipedia:Hatnote]]
* {{tl|Dablinks}}{{snd}}lists wikilinks on the page that link to disambiguation pages
* {{tl|dabsearch}}
* {{tl|Disambiguation needed}} – Adds an inline "disambiguation needed" tag to an ambiguous link within an article, see [[Wikipedia:OTHERUSES]] for more.
* {{tl|WikiProject Disambiguation}} – for disambig talkpages
* {{tl|Redirect}} – for linking to disambiguation pages in an article that is [[WP:PRIMARYREDIRECT|the primary topic of a redirect]]
* {{tl|Other uses}} – for linking to disambiguation pages in articles
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Disambiguation message boxes| ]]
}}</includeonly>
a042e98cd46caf4b65d6bb2996e5ba821d10ee65
Module:Documentation
828
51
97
2023-07-31T17:22:10Z
wikipedia>Izno
0
add a comment to make it obvious
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
local format = mw.ustring.format
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return format('[[%s|%s]]', page, display)
else
return format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return format(
'<span class="%s">(%s)</span>',
message('toolbar-class'),
table.concat(ret, ' | ')
)
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.canonicalUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
return {
title = title,
docTitle = docTitle,
-- View, display, edit, and purge links if /doc exists.
viewLinkDisplay = message('view-link-display'),
editLinkDisplay = message('edit-link-display'),
historyLinkDisplay = message('history-link-display'),
purgeLinkDisplay = message('purge-link-display'),
preload = preload,
createLinkDisplay = message('create-link-display')
}
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local docTitle = data.docTitle
-- yes, we do intend to purge the template page on which the documentation appears
local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay)
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay)
return "[" .. viewLink .. "] [" .. editLink .. "] [" .. historyLink .. "] [" .. purgeLink .. "]"
else
local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
return "[" .. createLink .. "] [" .. purgeLink .. "]"
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editDisplay = message('edit-link-display')
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay)
local historyDisplay = message('history-link-display')
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
268dc89480af10873bfbca5439ae8e61b404f770
Template:Infobox government cabinet
10
1156
2482
2023-07-31T17:59:57Z
w>MusikBot II
0
Changed protection settings for "[[Template:Infobox government cabinet]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2500 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{infobox
| bodystyle = width:auto; max-width:30em
| abovestyle = background-color: #ededed;
| above = <includeonly><div class="fn org">{{{cabinet_name|{{PAGENAMEBASE}}}}}</div></includeonly>
| subheaderstyle1 = font-weight:bold;
| subheader1 = {{br separated entries
| 1 = {{#invoke:InfoboxImage|InfoboxImage|image={{{flag|}}}|border={{#if:{{{flag_border|}}}|yes}}|size={{{flag_width|}}}|sizedefault=50px}}
| 2 = {{#if:{{{jurisdiction|}}}|{{{cabinet_number|}}} {{if empty|{{{cabinet_type|}}}|Cabinet}} of {{{jurisdiction}}}}}
}}
| subheaderstyle2 = background-color: #efefef; font-weight:bold;
| subheader2 = {{{incumbent|}}}
| headerstyle = background-color: #efefef
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=300x200px|alt={{{alt|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image2|}}}|size={{{image_size2|}}}|sizedefault=300x200px|alt={{{alt2|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image3|}}}|size={{{image_size3|}}}|sizedefault=100px|alt={{{alt3|}}}}} {{#invoke:InfoboxImage|InfoboxImage|image={{{image4|}}}|size={{{image_size4|}}}|sizedefault=100px|alt={{{alt4|}}}}}
| caption = {{{caption|}}}
| label1 = Date formed
| data1 = {{{date_formed|}}}
| label2 = Date dissolved
| data2 = {{{date_dissolved|}}}
| header3 = {{#if:{{{government_head|}}}{{{government_head_history|}}}{{{deputy_government_head|}}}{{{state_head|}}}{{{current_number|}}}{{{former_members_number|}}}{{{total_number|}}}{{{political_party|}}}{{{legislature_status|}}}{{{opposition_cabinet|}}}{{{opposition_party|}}}{{{opposition_leader|}}}|People and {{engvar |defaultWord=organisations |defaultLang=en-UK |en-US=organizations |engvar={{{engvar|{{{jurisdiction|}}}}}}}}}}
| label4 = {{#if:{{{state_head_title|}}}|{{{state_head_title}}}|Head of state}}
| data4 = {{{state_head|}}}
| label5 = {{#if:{{{governor_title|}}}|{{{governor_title}}}|Governor}}
| data5 = {{{governor|}}}
| label6 = {{#if:{{{governor_general_title|}}}|{{{governor_general_title}}}|Governor-General}}
| data6 = {{{governor_general|}}}
| label7 = {{#if:{{{represented_by_title|}}}|{{{represented_by_title}}}|Represented by}}
| data7 = {{{represented_by|}}}
| label8 = {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|Head of government}}
| data8 = {{{government_head|}}}
| label9 = {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|Head of government}}'s history
| data9 = {{{government_head_history|}}}
| label10 = {{#if:{{{deputy_government_head_title|}}}|{{{deputy_government_head_title}}}|Deputy {{#if:{{{government_head_title|}}}|{{{government_head_title}}}|head of government}}}}
| data10 = {{{deputy_government_head|}}}
| label11 = {{{other_government_minister_title|}}}
| data11 = {{{other_government_minister|}}}
| label12 = {{abbr|No.|Number}} of ministers
| data12 = {{{members_number|{{{current_number|}}}}}}
| label13 = Ministers removed
| data13 ={{br separated entries
| 1 = {{#if:{{{former_members_number|}}}|{{{former_members_number|}}}}}
| 2 = {{#if:{{{former_members_resigned|}}}|{{{former_members_resigned|}}} resigned }}
| 3 = {{#if:{{{former_members_dismissed|}}}|{{{former_members_dismissed|}}} dismissed }}
| 4 = {{#if:{{{former_members_died|}}}|{{{former_members_died|}}} died }}
| 5 = {{#if:{{{former_members_other|}}}|{{{former_members_other|}}} left for other reasons }}
}}
| label14 = Total {{abbr|no.|number}} of members
| data14 = {{{total_number|}}}
| label15 = {{#if:{{{political_party|}}}|Member party|Member parties}}
| data15 = {{#if:{{{political_party|}}}|{{{political_party}}}|{{{political_parties|}}}}}
| label16 = Status in legislature
| data16 = {{{legislature_status|}}}
| label17 = Opposition cabinet
| data17 = {{{opposition_cabinet|}}}
| label18 = {{#if:{{{opposition_party|}}}|Opposition party|Opposition parties}}
| data18 = {{#if:{{{opposition_party|}}}|{{{opposition_party}}}|{{{opposition_parties|}}}}}
| label19 = {{#if:{{{opposition_leader|}}}|Opposition leader|Opposition leaders}}
| data19 = {{#if:{{{opposition_leader|}}}|{{{opposition_leader}}}|{{{opposition_leaders|}}}}}
| header20 = {{#if:{{{election|}}}{{{last_election|}}}{{{legislature_term|}}}{{{budget|}}}{{{advice_and_consent1|}}}{{{advice_and_consent2|}}}{{{advice_and_consent3|}}}{{{advice_and_consent4|}}}{{{advice_and_consent5|}}}{{{incoming_formation|}}}{{{outgoing_formation|}}}{{{previous|{{{predecessor|}}}}}}{{{successor|}}}|History}}
| label21 = Election(s)
| data21 = {{{election|}}}
| label22 = Outgoing election
| data22 = {{{last_election|}}}
| label23 = Legislature term(s)
| data23 = {{{legislature_term|}}}
| label24 = Budget(s)
| data24 = {{{budget|}}}
| label25 = Advice and consent
| data25 = {{br separated entries
| 1 = {{{advice_and_consent1|}}}
| 2 = {{{advice_and_consent2|}}}
| 3 = {{{advice_and_consent3|}}}
| 4 = {{{advice_and_consent4|}}}
| 5 = {{{advice_and_consent5|}}}
}}
| label26 = Incoming formation
| data26 = {{{incoming_formation|}}}
| label27 = Outgoing formation
| data27 = {{{outgoing_formation|}}}
| label28 = Predecessor
| data28 = {{{previous|{{{predecessor|}}}}}}
| label29 = Successor
| data29 = {{{successor|}}}
}}{{#if:{{{cabinet_number|}}}|{{#if:{{{jurisdiction|}}}||{{main other|[[Category:Pages using infobox government cabinet with number and without jurisdiction]]}}}}}}{{#if:{{{government_head_history|}}}|{{main other|[[Category:Pages using infobox government cabinet with government_head_history]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox government cabinet with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox government cabinet]] with unknown parameter "_VALUE_"|ignoreblank=y| advice_and_consent1 | advice_and_consent2 | advice_and_consent3 | advice_and_consent4 | advice_and_consent5 | alt | alt2 | alt3 | alt4 | budget | cabinet_name | cabinet_number | cabinet_type | caption | current_number | date_dissolved | date_formed | deputy_government_head | deputy_government_head_title | election | engvar | flag | flag_border | flag_width | former_members_died | former_members_dismissed | former_members_number | former_members_other | former_members_resigned | government_head | government_head_history | government_head_title | governor | governor_general | governor_general_title | governor_title | image | image_size | image_size2 | image_size3 | image_size4 | image2 | image3 | image4 | incoming_formation | incumbent | jurisdiction | last_election | legislature_status | legislature_term | members_number | opposition_cabinet | opposition_leader | opposition_leaders | opposition_parties | opposition_party | other_government_minister | other_government_minister_title | outgoing_formation | political_parties | political_party | predecessor | previous | represented_by | represented_by_title | state_head | state_head_title | successor | total_number }}<noinclude>
{{documentation}}
</noinclude>
c72cf78002f07aab16e762bbb8a17d54d618fad1
Module:Portal/images/aliases
828
847
1876
2023-08-01T18:11:55Z
wikipedia>Buaidh
0
["native americans"] = {"american indians"},
Scribunto
text/plain
--[==[ This is the "aliases" list of portal image names. It contains a list of portal image aliases for use with [[Module:Portal]].
-- The aliases can be used to point to an existing portal image entry. For portals who do not yet have a portal image entry, please
-- use the appropriate page from the following list instead:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- When adding entries, please use alphabetical order. The format of the alias table entries is as follows:
-- ["portal name"] = {"alias 1", "alias 2", "alias 3"},
-- Both the portal name and the alias names should be in lower case, and the "Portal:" namespace prefix
-- should be omitted. For example, if you wanted "UK" to be an alias for "Portal:United Kingdom", then the
-- alias name would be "uk" and the portal name would be "united kingdom".
]==]
return {
["1990s"] = {"1990's"},
["2000s"] = {"2000's"},
["ac/dc"] = {"ac dc"},
["academy award"] = {"academy awards"},
["africa"] = {"african"},
["african american"] = {"african-american", "african-americans", "african americans"},
["african union"] = {"au"},
["agriculture"] = {"agriculture and agronomy", "farming"},
["american civil war"] = {"acw"},
["american revolutionary war"] = {"american revolution"},
["amphibians"] = {"amphibian"},
["aviation"] = {"airplanes"},
["åland"] = {"åland islands", "aland islands", "aland", "ax", "ala"},
["albania"] = {"albanian", "al", "alb"},
["alpine rhine"] = {"alpine rhine valley"},
["american football"] = {"college football", "arena football league"},
["ancient rome"] = {"roman empire"},
["android (operating system)"] = {"android", "android os"},
["animals"] = {"animal", "zoology"},
["anime and manga"] = {"anime", "manga"},
["apple inc."] = {"apple", "apple inc"},
["arabic language"] = {"arabic"},
["archaeology"] = {"archeology"},
["argentina"] = {"argentine"},
["arizona"] = {"phoenix, arizona"},
["asian americans"] = {"asian american"},
["association football"] = {"soccer", "football (soccer)"},
["assyrians"] = {"assyria"},
["atlas"] = {"cartography"},
["atmospheric science"] = {"atmosphere","atmospheric sciences"},
["australia"] = {"australian", "aus"},
["australian capital territory"] = {"canberra"},
["banks"] = {"bank", "banking"},
["baseball"] = {"college baseball", "little league"},
["basketball"] = {"national basketball league of canada", "wnba"},
["biography"] = {"people", "biographies"},
["birds"] = {"bird"},
["björk"] = {"bjork"},
["books"] = {"book"},
["brunei"] = {"brunei darussalam", "bn", "brn"},
["business and economics"] = {"advertising", "business", "economics", "economy", "marketing"},
["buses"] = {"bus"},
["california roads"] = {"roads in california"},
["california state polytechnic university, pomona"] = {"cal poly pomona"},
["canada"] = {"canadian", "ca", "can"},
["canadian armed forces"] = {"canadian forces", "military history of canada"},
["canary islands"] = {"spanish africa"},
["caribbean"] = {"caribbean sea", "the caribbean", "west indies"},
["cars"] = {"car", "automobile"},
["cartoon"] = {"cartoons"},
["catalan-speaking countries"] = {"catalan", "catalonia"},
["catholic church"] = {"catholic", "catholicism"},
["cats"] = {"cat"},
["celtic studies"] = {"celts"},
["cetaceans"] = {"cetacea"},
["chemistry"] = {"chemical"},
["children's literature"] = {"children's and young adult literature", "children and young adult literature"},
["china"] = {"chinese", "cn", "chn"},
["christiantiy"] = {"christ", "christian"},
["christianity in india"] = {"indian christianity"},
["classical civilisation"] = {"classical civilization", "classics"},
["cleveland"] = {"cleveland, ohio"},
["coconuts"] = {"coconut"},
["color"] = {"colour"},
["comedy"] = {"humour", "humor"},
["commonwealth realms"] = {"commonwealth"},
["communism"] = {"marxism"},
["compact disc"] = {"cd", "compact disk"},
["companies"] = {"company"},
["computer-generated imagery"] = {"computer generated imagery"},
["computer programming"] = {"programming"},
["countries"] = {"country"},
["county kilkenny"] = {"kilkenny"},
["criminal justice"] = {"crime"},
["current events"] = {"events", "news"},
["czech republic"] = {"czechia", "czech", "the czech republic"},
["dallas – fort worth metroplex"] = {"dallas", "dallas-fort worth", "dallas - fort worth metroplex"},
["democratic republic of the congo"] = {"zaire", "zaïre", "cod", "drc", "the democratic republic of the congo"},
["denmark"] = {"kingdom of denmark", "danish", "dk", "dnk"},
["disasters"] = {"disaster"},
["dravidian languages"] = {"dravidian", "dravidia", "dravidian peoples", "dravidian civilization"},
["drink"] = {"drinks"},
["dominican republic"] = {"the dominican republic"},
["durham, north carolina"] = {"durham nc"},
["dungeons & dragons"] = {"d&d"},
["earth sciences"] = {"earth science"},
["east timor"] = {"timor leste", "tl"},
["electromagnetism"] = {"em"},
["energy"] = {"electricity"},
["english football"] = {"football in england"},
["english language"] = {"english"},
["erotica and pornography"] = {"porn", "pornography"},
["european military history"] = {"military history of europe"},
["european union"] = {"eu"},
["evolutionary biology"] = {"evolution"},
["extinct and endangered species"] = {"extinction", "endangered species"},
["falkland islands"] = {"falkland", "malvinas", "fk", "flk"},
["faroe islands"] = {"the faroe islands"},
["federated states of micronesia"] = {"fm", "fsm"},
["film"] = {"cinema", "films", "movie"},
["fish"] = {"fishes"},
["food"] = {"eating", "nutrition"},
["football"] = {"association football", "soccer", "soccer ball"},
["formula one"] = {"f1", "formula 1"},
["france"] = {"overseas france"},
["free and open-source software"] = {"floss", "foss", "free and open source software", "free software", "freeware", "open source", "open source software", "open-source software", "oss"},
["freedom of speech"] = {"censorship", "free speech"},
["french and francophone literature"] = {"french literature"},
["french politics"] = {"politics of france"},
["fungi"] = {"mycology"},
["gardening"] = {"garden", "gardens", "gardening and horticulture"},
["gemology and jewelry"] = {"gemmology and jewellery", "gemmology and jewelry", "gemology and jewellery"},
["georgia (country)"] = {"georgia", "republic of georgia", "ge", "geo"},
["georgia (u.s. state)"] = {"georgia (state)"},
["globalization"] = {"globalisation"},
["greater manchester"] = {"manchester"},
["gullah"] = {"gullah people"},
["hawaii"] = {"hawaiian kingdom", "hawai'i", "hawaiʻi", "us-hi"},
["hazardous materials"] = {"dangerous goods"},
["health and fitness"] = {"health"},
["himalayas"] = {"himalaya region"},
["hindustani"] = {"hindustani language", "hindustani and allied languages"},
["hip hop"] = {"hip-hop"},
["hispanic and latino americans"] = {"hispanic and latino american", "latino and hispanic americans", "latino and hispanic american"},
["history"] = {"victorian era"},
["horror fiction"] = {"horror"},
["horticulture and gardening"] = {"horticulture"},
["housing"] = {"houses"},
["hunger relief"] = {"hunger"},
["ice hockey"] = {"hockey"},
["india"] = {"indian", "in", "ind", "republic of india"},
["indian women"] = {"women of india", "indian women and gender issues"},
["indiana"] = {"hoosier", "us-in"},
["indigenous peoples of north america"] = {"indigenous people of north america"},
["information technology"] = {"computing", "computer science", "it"},
["insects"] = {"insect"},
["internet"] = {"web"},
["ireland"] = {"irish"},
["islam"] = {"muslim history"},
["islamic state of iraq and the levant"] = {"daesh", "isil", "isis"},
["islands"] = {"island"},
["italy"] = {"italian", "ita", "papal states"},
["jacksonville, florida"] = {"jacksonville"},
["judaism"] = {"jewish"},
["kazi nazrul islam"] = {"nazrul"},
["kurdistan"] = {"iraqi kurdistan"},
["latter day saint movement"] = {"latter-day saints", "lds"},
["lemony snicket"] = {"a series of unfortunate events"},
["lists"] = {"list"},
["lgbt"] = {"lgbt studies", "lgbtq", "lgbtqa"},
["library and information science"] = {"information science"},
["linguistics"] = {"linguistic"},
["madonna (entertainer)"] = {"madonna"},
["mammals"] = {"mammal"},
["marine life"] = {"marine biology"},
["mathematics"] = {"math", "maths"},
["medicine"] = {"health care", "public health", "medical"},
["mediterranean"] = {"mediterranean sea"},
["metro detroit"] = {"detroit"},
["mexico"] = {"méxico", "mx", "mex"},
["middle tennessee state university"] = {"mtsu"},
["michigan highways"] = {"highways in michigan"},
["military history of australia"] = {"royal australian air force"},
["modern history"] = {"2020s"},
["molecular and cell biology"] = {"molecular and cellular biology"},
["moldova"] = {"republic of moldova"},
["mongolia"] = {"mongols"},
["mountains"] = {"mountain"},
["music of australia"] = {"australian music"},
["myanmar"] = {"burma", "burmese", "mm", "mmr"},
["national register of historic places"] = {"nrhp"},
["native americans"] = {"american indians"},
["nazism"] = {"nazi germany"},
["netherlands"] = {"kingdom of the netherlands", "nl", 'nld', 'caribbean netherlands', 'the netherlands', 'dutch empire', 'the dutch empire', 'dutch republic'},
["new guinea"] = {"western new guinea"},
["new south wales"] = {"nsw"},
["new york"] = {"new york state", "new york (state)", "us-ny"},
["new york city"] = {"nyc"},
["new zealand"] = {"nz", "nzl"},
["north korea"] = {"dprk", "democratic people's republic of korea"},
["north macedonia"] = {"republic of north macedonia", "mk", "mkd"},
["north rhine-westphalia"] = {"nrw"},
["north west england"] = {"liverpool"},
["novels"] = {"novel"},
["oceans"] = {"ocean", "world ocean"},
["odisha"] = {"orissa"},
["opera"] = {"operas"},
["organized labour"] = {"labor", "organised labour", "organized labor", "trade unionism"},
["pakistan"] = {"pakistani", "pk", "pak"},
["paleontology"] = {"palaeontology", "prehistoric life"},
["palestine"] = {"gaza strip", "the state of palestine","state of palestine"},
["paralympic games"] = {"paralympics"},
["pan-africanism"] = {"pan-african"},
["pandemics"] = {"pandemic"},
["people's republic of china"] = {"prc"},
["pharmacy and pharmacology"] = {"pharmacy"},
["philippines"] = {"the philippines"},
["pitcairn islands"] = {"pitcairn, henderson, ducie and oeno islands"},
["politics"] = {"government"},
["portugal"] = {"portuguese empire"},
["prince edward island"] = {"pei", "ca-pe"},
["protected areas of india"] = {"biodiversity, protected areas & environment of india", "biodiversity of india", "environment of india"},
["puducherry"] = {"pondicherry", "in-py"},
["punjab, india"] = {"punjab (india)", "in-pb"},
["punjab, pakistan"] = {"punjab (pakistan)", "western punjab", "pk-pb"},
["python programming"] = {"python"},
["quebec"] = {"québec", "ca-qc"},
["religion"] = {"religions", "religious", "theology"},
["republic of ireland"] = {"éire", "ie", "irl", "irish republicanism"},
["republic of north macedonia"] = {"north macedonia", "mk", "mkd", "the republic of macedonia", "republic of macedonia"},
["republic of the congo"] = {"the republic of the congo", "republic of congo", "french congo"},
["roads"] = {"road"},
["roads of canada"] = {"canada roads"},
["romani people"] = {"roma", "romani"},
["saint barthelemy"] = {"saint-barthélemy", "saint barthélemy"},
["saint helena, ascension and tristan da cunha"] = {"saint helena"},
["salad dressing"] = {"salad dressings"},
["san francisco bay area"] = {"bay area", "san francisco"},
["sandwich"] = {"sandwiches"},
["schools"] = {"school"},
["serer people"] = {"serer"},
["september 11 attacks"] = {"september 11, 2001"},
["sexuality"] = {"sex"},
["shia islam"] = {"shia"},
["spain"] = {"castile"},
["spaceflight"] = {"space flight"},
["sri lanka"] = {"sri lankan"},
["systems science"] = {"system science"},
["soap operas and telenovelas"] = {"soap operas", "telenovelas"},
["south africa"] = {"za", "zaf"},
["south georgia and the south sandwich islands"] = {"south georgia", "south sandwich islands", "gs", "sgs"},
["soviet union"] = {"ussr", "soviet", "the soviet union"},
["space"] = {"outer space"},
["spices"] = {"herbs and spices"},
["sports in canada"] = {"canadian sports", "canadian sport", "sports of canada", "sport in canada"},
["sports"] = {"sport"},
["st. john's, newfoundland and labrador"] = {"st. john's"},
["state of georgia"] = {"georgia (u.s. state)", "georgia usa", "us-ga"},
["state of mexico"] = {"mexico (state)", "mx-mex"},
["state university of new york"] = {"suny"},
["taiwan"] = {"republic of china", "roc", "tw", "twn"},
["tamils"] = {"tamil","tamil people"},
["tanks"] = {"tank"},
["telecommunication"] = {"telecommunications", "telecoms", "telecomms", "telecomm", "telecom"},
["telephones"] = {"telephone"},
["television"] = {"tv"},
["texas"] = {"republic of texas"},
["texas a&m university"] = {"texas a&m"},
["texas tech university"] = {"texas tech"},
["thailand"] = {"siam"},
["theatre"] = {"theater"},
["the bahamas"] = {"bahamas", "bs", "bhs"},
["the gambia"] = {"gambia", "gm", "gmb"},
["the legend of zelda"] = {"legend of zelda"},
["tiruchirappalli"] = {"trichy", "tiruchi"},
["trains"] = {"rail", "rail transport"},
["transportation"] = {"transport"},
["trauma and orthopaedics"] = {"trauma & orthopaedics"},
["trinidad and tobago"] = {"trinidad"},
["tropical cyclones"] = {"hurricanes", "tropical cyclone"},
["turkey"] = {"anatolia"},
["united arab emirates"] = {"emirates", "ae", "uae", "emirati", "the united arab emirates"},
["united kingdom"] = {"the united kingdom", "uk", "gb", "gbr", "britain", "british", "british overseas territories"},
["united nations"] = {"un"},
["united states"] = {"us", "usa", "u.s.", "united states armed forces", "american", "territories of the united states"},
["united states arms"] = {"united states armed forces", "united states military", "united states military history", "u.s. armed forces", "u.s. military"},
["united states congress"] = {"u.s. congress"},
["united states counties"] = {"u.s. counties"},
["united states presidents"] = {"u.s. presidents"},
["united states roads"] = {"u.s. roads"},
["united states state legislatures"] = {"u.s. state legislatures", "us state legislatures"},
["united states streets"] = {"u.s. streets"},
["united states supreme court"] = {"u.s. supreme court cases"},
["united states territories"] = {"territories of the united states"},
["university of missouri"] = {"mizzou"},
["university of notre dame"] = {"notre dame"},
["university of pittsburgh"] = {"pitt"},
["vatican city"] = {"vatican"},
["video games"] = {"vg", "video game"},
["vietnam"] = {"south vietnam"},
["war"] = {"military"},
["washington (state)"] = {"washington", "us-wa"},
["washington, d.c."] = {"district of columbia", "dc", "washington dc", "us-dc"},
["western asia"] = {"west asia"},
["western sahara"] = {"sahrawi arab democratic republic", "eh", "esh", "the sahrawi arab democratic republic"},
["wind power"] = {"windmills"},
["world war i"] = {"first world war", "wwi"},
["world war ii"] = {"second world war", "world war 2", "wwii"},
["zoos"] = {"zoo"}
}
fc71e0a63efd359c69c5660deabe9f1ca67e454d
Template:Transliteration/doc
10
436
2966
2023-08-01T18:57:08Z
w>Trappist the monk
0
Reverted edit by [[Special:Contribs/101.2.178.250|101.2.178.250]] ([[User talk:101.2.178.250|talk]]) to last version by Fayenatic london
wikitext
text/x-wiki
{{Documentation subpage}}
{{Redirect|Template:Transl|the template for translated text|Template:Translation}}
{{High use}}
{{COinS safe|n}}
{{Lua|Module:Lang}}
{{Language templates}}
This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script.
This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in its native script (such as Greek, Cyrillic and Arabic), {{tl|lang}} should be used, which tags non-transliterated text (written in original script). Transliteration is often used alongside that template, to allow non-readers of the script to interpret the text.
This template adds a [[tooltip]] label naming the transliteration scheme, and renders text in [[italics]] by default. This template is important for [[MOS:ACCESSIBILITY]], as it invisibly tags text with the correct language, allowing for screenreaders to use the correct style of pronunciation.
It also displays text in an appropriate font; romanisations marked up in {{tl|lang}} may display in fonts designed for that language's native text, whereas the transl template displays text in the same font as the rest of the article.
Some languages, such as [[Chinese language|Chinese]], have more than one style of transliteration (such as [[Wade–Giles]], [[pinyin]], etc). This template can be used for these different transliteration schemes, though Wikipedia has a number of [[:Category:Wikipedia multilingual support templates|language-specific templates]], some of which support more than one transliteration styles in their parameters, that may be better suited for marking up transliterations.
==Example==
The following code tags a Ukrainian name and its transliteration according to the Ukrainian National scheme.
{{markup |
<nowiki>{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})</nowiki>
|
{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})
}}
==Rationale==
This template is intended to unify all "transliteration" templates, such as {{tl|IAST}} and {{tl|ISOtranslit}}. These templates are still usable, but they just transclude or are redirected back to <nowiki>{{transl}}</nowiki>. For example, (e.g. <code><nowiki>{{IAST|saṃskṛtam}}</nowiki></code> is a shortcut for <code><nowiki>{{transliteration|sa|IAST|saṃskṛtam}}</nowiki></code>. Other transliteration templates that once existed, such as {{tl|ArabDIN}}, are now handled natively by this template: <code><nowiki>{{transliteration|ar|DIN|...}}</nowiki></code>).
This template is kept separate from {{tl|lang}} to address formatting issues (via CSS classes) and identification of transliteration schemes used. Ultimately, if these concerns are smartly addressed in the CSS file and/or in {{tl|lang}}, using <code><nowiki>{{transliteration|xx|...}}</nowiki></code> should be equivalent to using <code><nowiki>{{lang|xx-Latn|...}}</nowiki></code>.
==Usage==
There are two ways of using this template: with or without specifying the [[romanization|transliteration scheme]] used:
*two parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|al-Khwarizmi}}</nowiki></code> means that "al-Khwarizmi" is a transliteration from the Arabic in a loose or unspecified scheme.
*two parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Ogam|MAQI}}</nowiki></code> means that "MAQI" transliterates an [[Ogham]] inscription without specifying the language. Potentially useful when writing systems themselves are under discussion, e.g. <code><nowiki>{{transliteration|Cyrl|š}}</nowiki></code>, not <code><nowiki>{{transliteration|cu|š}}</nowiki></code> or <code><nowiki>{{transliteration|ru|š}}</nowiki></code> when discussing the letter {{script|Cyrl|[[Ш]]}}.
*three parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|DIN|al-Ḫawārizmī}} / {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> the second parameter specifies the scheme used (DIN vs. ALA).
*three parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Arab|DIN|Ḫ}} vs {{transliteration|Arab|ALA|Kh}}</nowiki></code> for {{script|Arab|[[ﺥ]]}}.
{{para|italic|no}} can be added to suppress the default italicization of Latin scripts; however, proper nouns – the names of people and places – are typically not italicized, and as such, generally do not require the use of a transliteration template. Note that there is no need to add italic markup (<code><nowiki>''</nowiki></code>) to transliteration templates.
'''Note''': the language code is ISO 639 or IETF private-use tag (see [[Template:Lang#Private-use language tags]]); other forms of [[IETF BCP 47 language tag]]s are {{em|not}} supported.
===Transliteration scheme codes===
Codes for supported transliteration schemes can be seen by viewing the source of [[:Module:Lang/data]] – the {{code|translit_title_table}} data-structure lists for each such code the corresponding transliteration schemes. These may vary by language – e.g. code "ISO" means scheme [[ISO 233]] for Arabic but [[ISO 11940]] for Thai.
===Examples===
Inputting:
*<code><nowiki>{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code>
*<code><nowiki>[[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>
*<code><nowiki>{{cuneiform|[[Sumerian language|𒅴𒂠]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}</nowiki></code>
Results in:
*{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}
* [[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}
*{{cuneiform|[[Sumerian language|𒅴𒂠]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}
'''ISO''':
*{{lang|ru|[[Russian language|русский]]}} <code><nowiki>{{transliteration|ru|ISO|russkij}}</nowiki></code>: {{transliteration|ru|ISO|russkij}}
*{{lang|ab|[[Abkhaz language|Аҧсуа]]}} <code><nowiki>{{transliteration|ab|ISO|aṗsua}}</nowiki></code>: {{transliteration|ab|ISO|aṗsua}}
*{{lang|ar|[[Arabic| عربي ]]}} <code><nowiki>{{transliteration|ar|ISO|ʿarabī}}</nowiki></code>: {{transliteration|ar|ISO|ʿarabī}}
*: ISO has huge issues transliterating {{transliteration|ar|alif}}, so it's better to use the Library of Congress transliteration, the [[DIN 31635|German Institute for Standardization]] or [[Hans Wehr transliteration]]; see [[Arabic transliteration]] and [[MOS:APOSTROPHE]]
*{{lang|ta|[[Tamil language|தமிழ் ]]}} <code><nowiki>{{transliteration|ta|ISO|tamiḻ}}</nowiki></code>: {{transliteration|ta|ISO|tamiḻ}}
*{{lang|bn|[[Bengali language|বাংলা ]]}} <code><nowiki>{{transliteration|bn|ISO|baṅla}}</nowiki></code>: {{transliteration|bn|ISO|baṅla}}
*{{lang|el|[[Greek language|ελληνικά ]]}} <code><nowiki>{{transliteration|el|ISO|ellēniká}}</nowiki></code>: {{transliteration|el|ISO|ellēniká}}
*{{lang|ka|[[Georgian language|ქართული]]}} <code><nowiki>{{transliteration|ka|ISO|k'art'uli}}</nowiki></code>: {{transliteration|ka|ISO|k'art'uli}}
*{{lang|zh|[[Pinyin|漢語拼音]]}} <code><nowiki>{{transliteration|zh|ISO|hànyǔ pīnyīn}}</nowiki></code>: {{transliteration|zh|ISO|hànyǔ pīnyīn}}
*{{lang|th|[[Thai language|ภาษาไทย]]}} <code><nowiki>{{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}
==CSS==
In order to apply a style to all text marked as transliteration, use a CSS selector that chooses all text with <code>transliteration</code> in the title attribute (tooltip). For instance, if you add the following to [[Special:MyPage/common.css|your common.css]], all transliterations will be colored {{color|teal}}:
<syntaxhighlight lang="CSS">
[title~=transliteration] { color: teal; }
</syntaxhighlight>
==Tracking category==
* {{clc|Transliteration template errors}}
==TemplateData==
{{templatedata header}}
<templatedata>
{
"description": "Marks a text span transliterated from a particular language or writing system, and, optionally, according to a specific transliteration system.",
"params": {
"1": {
"label": "Language or script code",
"description": "ISO 639 language code (e.g., uk) or ISO 15924 script code (e.g., Cyrl)",
"required": true,
"type": "line"
},
"2": {
"label": "Text or transliteration scheme",
"description": "Latin-alphabet transliterated text, or, optionally, transliteration scheme (e.g., bgn/pcgn)",
"required": true,
"type": "string"
},
"3": {
"label": "Text",
"description": "Latin-alphabet transliterated text (required if a transliteration scheme is entered above)",
"required": false,
"suggested": true,
"type": "string"
}
}
}
</templatedata>
==See also==
*{{tl|lang}}, {{tl|language}}
*{{tl|script}}
* {{tl|trans}}, {{tl|translation}}
*[[Romanization]]
*[[List of ISO transliterations]]
{{ISO 15924 script codes and related Unicode data|state=collapsed}}
<includeonly>{{Sandbox other||
[[Category:Wikipedia multilingual support templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9eff20202df9880064bd01460f3d5f316b52a868
Module:Portal/images/g
828
1105
2409
2023-08-01T19:04:21Z
wikipedia>Buaidh
0
["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon",
Scribunto
text/plain
--[==[ This is the "G" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "G". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["gabon"] = "Flag of Gabon.svg|border|link=|alt=flag",
["game theory"] = "Tictactoe-cgt-star.svg|link=|alt=icon",
["gaeilge"] = "Ireland smaller.svg|link=|alt=map",
["gaelic games"] = "GaelicGamesProjectLogo.png|link=|alt=icon",
["games"] = "Nuvola apps kbackgammon.png|alt=icon",
["gaming"] = "WPVG icon 2016.svg|link=|alt=",
["gardening"] = "France Loiret La Bussiere Potager 05.jpg|alt=icon",
["gastropods"] = "Grapevinesnail 01a.jpg|alt=icon",
["gene wiki"] = "Gene Wiki logo.png|link=|alt=",
["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon",
["geodesy"] = "Latitude and longitude graticule on an ellipsoid.svg|link=|alt=icon",
["geographical coordinates"] = "Earth clip art.svg|link=|alt=icon",
["geography"] = "Terra.png|link=|alt=icon",
["geography of india"] = "India physical map.svg|link=|alt=map",
["geology"] = "WikiProject Geology.svg|alt=icon",
["geophysics"] = "Geodynamo Between Reversals.gif|alt=icon",
["georgia (country)"] = "Flag of Georgia.svg|border|link=|alt=flag",
["georgia (u.s. state)"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag",
["german"] = "German dialectal map.PNG|border|link=German language|alt=map",
["german empire"] = "Flag of the German Empire.svg|border|link=|alt=flag",
["germany"] = "Flag of Germany.svg|border|link=|alt=flag",
["ghana"] = "Flag of Ghana.svg|border|link=|alt=flag",
["gibraltar"] = "Flag of Gibraltar.svg|border|link=|alt=flag",
["gilbert and sullivan"] = "Pinaforeplaybill.jpg|link=|alt=",
["gilgit-baltistan"] = "Flag of Pakistan.svg|border|link=|alt=flag",
["glaciers"] = "Baltoro Glacier, Pakistan 2012.png|link=|alt=icon",
["global warming"] = "Change in Average Temperature.svg|alt=icon",
---Please do not add the file "Flag of Goa.svg" for Portal:Goa. This is due to the flag not being the offical flag and discussions on [[Template_talk:Portal#Goa_(2)]
["go"] = "GO game.png|alt=",
["goa"] = "GOA Colva Beach - panoramio.jpg|link=|alt=",
["governments of canada"] = "Canada Parliament2.jpg|alt=icon",
["great britain"] = "Flag of the United Kingdom.svg|border|link=|alt=flag",
["greater los angeles"] = "Flag of Los Angeles County, California.svg|border|link=|alt=flag",
["greater manchester"] = "England Greater Manchester numbered.svg|alt=icon",
["greece"] = "Flag of Greece.svg|border|link=|alt=flag",
["greenland"] = "Flag of Greenland.svg|border|link=|alt=flag",
["grenada"] = "Flag of Grenada.svg|border|link=|alt=flag",
["guadeloupe"] = "Flag of Guadeloupe (local).svg|border|link=|alt=flag",
["guam"] = "Flag of Guam.svg|border|link=|alt=flag",
["guatemala"] = "Flag of Guatemala.svg|border|link=|alt=flag",
["guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag",
["guinea"] = "Flag of Guinea.svg|border|link=|alt=flag",
["guinea-bissau"] = "Flag of Guinea-Bissau.svg|border|link=|alt=flag",
["gujarat"] = "Seal of Gujarat.svg|link=|alt=",
["guyana"] = "Flag of Guyana.svg|border|link=|alt=flag",
}
68a8319ad516f2d3220b70d30b2ad1356bcba06f
Template:Multiple issues
10
1299
2634
2023-08-02T19:25:23Z
w>Paine Ellsworth
0
per edit request on talk page - ifeq function → if function
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||$B=
{{Ambox
|name = Multiple issues
|templatestyles = Multiple issues/styles.css
|doc = no
|subst = <includeonly>{{subst:substcheck}}</includeonly>
|class = ambox-multiple_issues compact-ambox
|type = content
|removalnotice = yes <!-- as of 2016-06, param does not work on this template -->
|cat=Articles with multiple maintenance issues
|text =
<div class="multiple-issues-text {{#if:{{{1|}}}|mw-collapsible {{#if:{{{collapsed|}}}|mw-collapsed}}}}"><!--
-->'''This {{#if:{{{section|}}}|section|article}} has multiple issues.''' Please help '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it]''' or discuss these issues on the '''[[{{TALKPAGENAME}}|talk page]]'''. <small>''([[Help:Maintenance template removal|Learn how and when to remove these template messages]])''</small>
{{#if:{{{1|}}}
| <div class="mw-collapsible-content">
{{#invoke:String|replace|source={{{1|}}}|pattern=style="display: none"|replace=|count=}}<!--remove style="display: none", to support display of {{orphan}} messages in {{multiple issues}}-->
</div>
| <includeonly>{{error|No issues specified. Please specify issues, or remove this template.}}</includeonly>
}}
</div>
{{#if:{{{2|}}}|[[Category:Pages using multiple issues with unknown parameters|§{{PAGENAME}}]]}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using multiple issues with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Multiple issues]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | collapsed | section }}
}}<noinclude>
{{Documentation}}
</noinclude>
3f964ca8d5ea8370050c8fa38db6df668160b77b
Template:Flagicon/doc
10
1726
3254
2023-08-03T21:44:50Z
wikipedia>Paine Ellsworth
0
High-use template + fmt
wikitext
text/x-wiki
{{documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{high-use}}
'''Template:Flagicon''' displays a flag of the named parameter in "icon" size, currently 23×15 pixels maximally (defined in [[Template:Flagicon/core]]), plus a one-pixel border. The image also has a clickable link to the associated article. For an unlinked flag icon, use [[Template:Flagdeco]] instead.
Please consider the [[Wikipedia:Manual of Style (icons)#Flags|Manual of Style section on flag]]s before using this template.
==Usage==
<code><nowiki>{{flagicon|name|variant=|size=|noredlink=}}</nowiki></code>
;name: The first parameter is mandatory, and identifies the name of the country, region, city, etc. A full list of available values can be found in [[:Category:Country data templates]]. For example, [[:Template:Country data Peru]] is used when the ''name'' parameter is specified as <code>Peru</code>. Many flags are also available via shortened "aliases", such as standard three-letter country codes as specified by [[ISO 3166-1 alpha-3]], [[List of IOC country codes|IOC]], or [[List of FIFA country codes|FIFA]]. The list of available "aliases" is found in [[:Category:Country data redirects]]. Many of these country codes could be considered obscure, so it is recommended to use the full country name.
;variant: The second parameter is optional, and identifies a flag variant to be used instead of the standard flag. This is most often used for historical flags but can also be used to specify naval flags, sport-use flags, etc. The list of available flag variants for each country is documented on the specific page for the country data template. For example, [[Template:Country data Peru]] includes a description of each of the available flag variations for Peru. This parameter can be a named parameter (e.g.. "<code>variant=1815</code>"), or a positional parameter, always after the country name.
;size: This parameter is optional, and is used to specify the maximum width and/or height of the flag image. This parameter is specified using standard [[Wikipedia:Extended image syntax|image syntax]].
==Template data==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays a wikilinked flag of the named parameter in 'icon' size, currently 23×15 pixels (defined in Template:Flagicon/core) plus a one-pixel border.",
"params": {
"1": {
"label": "Name",
"description": "Name of the country, region, city, etc.; full name is recommended for countries",
"type": "string",
"required": true
},
"variant": {
"label": "Variant",
"description": "Identifies a flag variant to be used instead of the standard flag, e.g. 1815",
"type": "string",
"required": false,
"aliases": [
"2"
]
},
"size": {
"label": "Maximum dimension",
"description": "The maximum width or height, specified via standard 'extended image syntax' (e.g. x30px)",
"type": "string",
"required": false
},
"noredlink": {
"label": "No redlink",
"description": "If set to any value which evaluates as true (i.e. '1', 'true', 'yes', or 'y'), it displays nothing if the country data file doesn't exist. (The default is to display a redlink)",
"type": "string",
"required": false
}
}
}
</templatedata>
==Examples==
{| class="wikitable"
! Wikicode !! Results !! Notes
|-
| <code><nowiki>{{flagicon|Peru}}</nowiki></code> || {{flagicon|Peru}} ||
|-
| <code><nowiki>{{flagicon|PER}}</nowiki></code> || {{flagicon|PER}} || Uses the ISO/IOC/FIFA country code
|-
| <code><nowiki>{{flagicon|Peru|1822}}</nowiki></code> || {{flagicon|Peru|1822}} || rowspan="2"| Specifies a historical flag
|-
| <code><nowiki>{{flagicon|Peru|variant=1822}}</nowiki></code> || {{flagicon|Peru|variant=1822}}
|-
| <code><nowiki>{{flagicon|PER|naval}}</nowiki></code> || {{flagicon|PER|naval}} || Specifies the naval ensign
|-
| <code><nowiki>{{flagicon|PER|air force}}</nowiki></code> || {{flagicon|PER|air force}} || Specifies the air force flag
|-
| <code><nowiki>{{flagicon|Peru|size=50px}}</nowiki></code> || {{flagicon|Peru|size=50px}} || Sets width to 50 pixels
|-
| <code><nowiki>{{flagicon|Xanadu}}</nowiki></code> || [[Template:Country data Xanadu]] || No flag for Xanadu, so displays redlink
|-
| <code><nowiki>{{flagicon|Xanadu|noredlink=yes}}</nowiki></code> || {{flagicon|Xanadu|noredlink=yes}} || No flag, so displays nothing
|}
==Implementation notes==
This template uses the data templates listed under [[:Category:Country data templates]], which contain the data specifying '''what''' to display and the formatter [[Template:Flagicon/core]], which contains the logic of '''how''' to display the flag.
* <code><nowiki>{{flagicon|Peru}}</nowiki></code> → {{flagicon|Peru}} — uses [[Template:Country data Peru]]
* <code><nowiki>{{flagicon|PER}}</nowiki></code> → {{flagicon|PER}} — uses [[Template:Country data PER]], which is a redirect to [[Template:Country data Peru]]
Inside each country data template, this template uses the following parameters:
* <code>flag alias</code> — name of the image file to display
* <code>flag alias-xxxx</code> — name of the image file of flag variant <code>xxxx</code>
* <code>alias</code> — used to display the [[alt attribute]] of the image (defaults to "Flag of ''alias''")
== Tracking categories ==
*{{clc|Pages using flagicon template with unknown parameters}}
Where <code><nowiki>{{Flagicon|Foo}}</nowiki></code> is used, but the <code><nowiki>Template:Country data Foo</nowiki></code> does not exist, then a [[WP:Red link|redlink]] is displayed, ''unless'' the {{para|noredlink|yes}} parameter has been set.
Where the redlink is displayed, the page is addded to a tracking category:
* [[:Category:Flagicons with missing country data templates]] (population: {{PAGESINCATEGORY:Flagicons with missing country data templates}})
==Related templates==
* [[Template:Flag]] is used to display a wikilinked name next to the flag. The displayed name will be the same as the parameter used with the template, but the link target will be the main article for the country (in these examples, [[Peru]]).
** <code><nowiki>{{flag|Peru}}</nowiki></code> → {{flag|Peru}}
** <code><nowiki>{{flag|PER}}</nowiki></code> → {{flag|Peru}}
* [[Template:Flagcountry]] is also used to display a wikilinked name next to the flag. The displayed name will always be the same, regardless of whether or not a country code alias is used as the template parameter.
** <code><nowiki>{{flagcountry|Peru}}</nowiki></code> → {{flagcountry|Peru}}
** <code><nowiki>{{flagcountry|PER}}</nowiki></code> → {{flagcountry|PER}}
* [[Template:Flagdeco]] displays an unlinked flag icon without country name.
** <code><nowiki>{{flagdeco|Peru}}</nowiki></code> → {{flagdeco|Peru}}
For a full list of flag templates, see [[:Category:Flag template system]].
==Alternatives to avoid Wikipedia's [[WP:PEIS|Post-expand include size]] limit==
Pages with many flag icons may come close to or exceed Wikipedia's [[WP:PEIS|Post-expand include size]] limit. In these cases consider using modules or module-wrapper templates instead:
* {{tl|flagg}} is a simple wrapper for [[Module:Flagg]]: For basic use, <code><nowiki>{{flagicon|</nowiki>''country''<nowiki>}}</nowiki></code> can be replaced with <code><nowiki>{{flagg|cxxlo|</nowiki>''country''<nowiki>}}</nowiki></code>
==See also==
* [[Template:Flagicon image]]
* [[Template:Coat of arms]]
* [[Wikipedia:WikiProject Flag Template]]
* [[Regional indicator symbol]]
<includeonly>{{Sandbox other||
[[Category:Flag template system]]
}}</includeonly>
879ee079273663abd7cfb598fedbf382231852c7
Module:Portal/images/c
828
871
1932
2023-08-04T04:12:44Z
wikipedia>Hike395
0
Restored revision 1152754403 by [[Special:Contributions/Hike395|Hike395]] ([[User talk:Hike395|talk]]): Rv: undiscussed change
Scribunto
text/plain
--[==[ This is the "C" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "C". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be
-- omitted.
]==]
local ambox_globe = "Ambox globe.svg"
local hour=tonumber(os.date("%k"))
if hour >= 22 or hour < 6 then
ambox_globe = "Ambox globe Asia Australia.svg"
else
if hour >= 14 and hour < 22 then
ambox_globe = "Ambox globe Americas.svg"
end
end
return {
["cabo verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag",
["california"] = "Flag of California.svg|border|link=|alt=flag",
["california delta"] = "California SD-03 (2011).svg|link=|alt=map",
["california roads"] = "California 1.svg|link=|alt=sign",
["california state university"] = "Flag of California.svg|border|link=|alt=flag",
["calvinism"] = "Kreuz-hugenotten.svg|alt=icon",
["cambodia"] = "Flag of Cambodia.svg|border|link=|alt=flag",
["cameroon"] = "Flag of Cameroon.svg|border|link=|alt=flag",
["canada"] = "Maple Leaf (from roundel).svg|link=|alt=flag",
["canadian communities"] = "Map Canada political-geo.png|link=|alt=",
["canadian football"] = "Canadian football.png|alt=icon",
["canadian law"] = "Supreme Court of Canada.jpg|link=|alt=",
["canadian territories"] = "Northern Canada.svg|alt=icon",
["canary islands"] = "Flag of the Canary Islands.svg|border|link=|alt=flag",
["cannabis"] = "Cannabis leaf.svg|alt=icon",
["cape cod and the islands"] = "Nobska Lighthouse 1.jpg|alt=icon",
["cape verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag",
["capital district"] = "Empire State Plaza symbol 2.svg|link=|alt=",
["capitalism"] = "Capitalismlogo.svg|alt=icon",
["caribbean"] = "Relief Map of Caribbean.png|link=|alt=map",
["caribbean community"] = "Flag of CARICOM.svg|border|link=|alt=flag",
["cars"] = "Sportcar sergio luiz ara 01.svg|link=|alt=",
["cartoon network"] = "Cartoon Network.svg|border|link=|alt=",
["cartoon"] = "Mad scientist.svg|alt=icon",
["catalan-speaking countries"] = "Siñal d'Aragón.svg|border|alt=icon",
["catholic church"] = "046CupolaSPietro.jpg|border|alt=icon",
["cats"] = "Cat03.jpg|alt=icon",
["cayman islands"] = "Flag of the Cayman Islands.svg|border|link=|alt=flag",
["central african republic"] = "Flag of the Central African Republic.svg|border|link=|alt=flag",
["central america"] = "Age of Consent - Central America.svg|alt=icon",
["central asia"] = "Central Asian Games participating countries.PNG|alt=icon",
["cetaceans"] = "Sperm whale fluke.jpg|link=|alt=",
["chad"] = "Flag of Chad.svg|border|link=|alt=flag",
["chandigarh"] = "Gandhi Bhawan at Punjab University.jpg|alt=icon",
["channel islands"] = "Flag of Sark.svg|border|link=|alt=flag",
["chemistry"] = "Papapishu-Lab-icon-6.svg|link=|alt=",
["chennai"] = "Chennai High Court 1200x800.jpg|alt=icon",
["cheshire"] = "Cheshire Flag.svg|border|alt=icon",
["chess"] = "Chess.svg|alt=icon",
["chhattisgarh"] = "India Chhattisgarh locator map.svg|border|link=|alt=map",
["chicago"] = "Seal of Chicago, Illinois.svg|link=|alt=",
["children's literature"] = "Tom Sawyer 1876 frontispiece.jpg|link=|alt=",
["chile"] = "Flag of Chile.svg|border|link=|alt=flag",
["china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag",
["christianity"] = "P christianity.svg|alt=icon",
["christianity in india"] = "India with cross.svg|alt=icon",
["christmas"] = "Xmas tree.svg|link=|alt=",
["christmas island"] = "Flag of Christmas Island.svg|link=|alt=flag",
["civilizations"] = "Lascar Avenue of the Dead and the Pyramid of the Sun in the background (4566574277).jpg|border|link=|alt=",
["civil rights movement"] = "Logo SNCC.svg|link=WP:ACRM|alt=",
["cities"] = "COL-city icon.png|link=|alt=",
["clans of scotland"] = "Scottish clan map.png|link=|alt=map",
["classical music"] = "Audio a.svg|link=|alt=",
["classical tamil"] = "Word_Tamil.svg|link=|alt=word",
["climate"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=icon",
["climate change"] = "Climate change icon.png|link=|alt=icon",
["climbing"] = "Pictograms-nps-land-technical_rock_climbing.svg|link=|alt=icon",
["clothing"] = "Emojione 1F458.svg|alt=icon",
["cocos (keeling) islands"] = "Flag of the Cocos (Keeling) Islands.svg|border|link=|alt=flag",
["coffee"] = "Emblem-relax.svg|alt=icon",
["college basketball"] = "Basketball.png|link=|alt=",
["college football"] = "NCAAFootball transparent.png|alt=icon",
["colombia"] = "Flag of Colombia.svg|border|link=|alt=flag",
["colorado"] = "Flag of Colorado.svg|border|link=|alt=flag",
["comedy"] = "SMirC-laugh.svg|alt=icon",
["comics"] = "Wikipetan-manga.png|alt=icon",
["communism"] = "Symbol-hammer-and-sickle.svg|link=|alt=",
["community"] = "P globe blue.png|alt=icon",
["comoros"] = "Flag of the Comoros.svg|border|link=|alt=flag",
["companies"] = "Industry5.svg|link=|alt=",
["computer programming"] = "Octicons-terminal.svg|alt=icon",
["computer science"] = "Internet map 1024.jpg|alt=icon",
["connecticut"] = "Flag of Connecticut.svg|border|link=|alt=flag",
["conservatism"] = "DodgerBlue flag waving.svg|link=|alt=",
["constructed languages"] = "Design conlang.png|alt=icon",
["contents"] = "Wikipedia's W.svg|link=|alt=",
["contents/indexes"] = "Pointing-right.svg|link=|alt=icon",
["contents/lists"] = "Liste.svg|link=|alt=icon",
["contents/outlines"] = "Pointing-left.svg|link=|alt=icon",
["cooking"] = "One chef's hat.png|link=|alt=",
["cook islands"] = "Flag of the Cook Islands.svg|border|link=|alt=flag",
["cornwall"] = "Flag of Cornwall.svg|border|link=|alt=flag",
["coronavirus disease 2019"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon",
["cosmology"] = "Ilc 9yr moll4096.png|link=|alt=",
["costa rica"] = "Flag of Costa Rica.svg|border|link=|alt=flag",
["côte d'ivoire"] = "Flag of Côte d'Ivoire.svg|border|link=|alt=flag",
["countries"] = "P countries-vector.svg|alt=icon",
["county kilkenny"] = "County Kilkenny arms.svg|alt=coat of arms",
["covid-19"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon",
["cretaceous"] = "Shantungosaurus-v4.jpg|alt=",
["cricket"] = "Cricketball.png|link=|alt=",
["criminal justice"] = "Scale of justice 2.svg|link=|alt=",
["croatia"] = "Flag of Croatia.svg|border|link=|alt=flag",
["crustaceans"] = "Charybdis japonica.jpg|alt=icon",
["cuba"] = "Flag of Cuba.svg|border|link=|alt=flag",
["cumbria"] = "Herdwick sheep crop.jpg|alt=icon",
["curaçao"] = "Flag of Curaçao.svg|border|link=|alt=flag",
["cue sports"] = "Eight Ball Rack 2005 SeanMcClean.jpg|link=|alt=",
["current events"] = ambox_globe .. "|link=|alt=",
["current events/turkey"] = "Wikinews-logo.png|link=|alt=",
["cyprus"] = "Flag of Cyprus.svg|border|link=|alt=flag",
["czech republic"] = "Flag of the Czech Republic.svg|border|link=|alt=flag",
["czechia"] = "Flag of the Czech Republic.svg|border|link=|alt=flag",
}
12569afcf6d5bfd01b853e6f6bca13f71c151050
Template:Country data New Zealand
10
1469
2804
2023-08-04T09:10:41Z
w>Paine Ellsworth
0
per edit request on talk page - include entry
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = New Zealand
| flag alias = Flag of New Zealand.svg
| flag alias-1834 = Flag of the United Tribes of New Zealand.svg
| flag alias-civil-1867 = Flag of New Zealand Government Ships 1867.svg
| flag alias-civil = Civil Ensign of New Zealand.svg
| flag alias-naval = Naval Ensign of New Zealand.svg
| flag alias-naval-1941 = Naval Ensign of the United Kingdom.svg
| link alias-naval = Royal New Zealand Navy
| flag alias-air force = Air Force Ensign of New Zealand.svg
| link alias-air force = Royal New Zealand Air Force
| flag alias-navy = Naval Ensign of New Zealand.svg
| link alias-navy = Royal New Zealand Navy
| {{#ifeq:{{{altlink}}}|A national rugby union team|link alias-rugby union|empty}} = Junior All Blacks
| link alias-football = New Zealand {{{mw|men's}}} national {{{age|}}} football team
| size = {{{size|}}}
| name = {{{name|}}}
| altlink = {{{altlink|}}}
| altvar = {{{altvar|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = 1834
| var2 = civil-1867
| var3 = civil
| var4 = naval-1941
| redir1 = NZL
</noinclude>
}}
4a2d3e8b70d545a0b673944f12c5663dcf4c85e5
Template:Hatnote templates
10
992
2180
2023-08-04T18:41:52Z
wikipedia>FooBarBaz
0
Moved.
wikitext
text/x-wiki
{{Navbox
| name = Hatnote templates
| state = {{{state|<includeonly>autocollapse</includeonly>}}}
| bodyclass = hlist
| belowclass = hlist
| title = [[WP:Hatnote#Hatnote templates|Hatnote templates]]
| above =
*[[Wikipedia:Hatnote]]
*[[Wikipedia:Disambiguation]]
*[[Wikipedia:Redirect]]
| group1 = Generic
| list1 =
*{{tl|Hatnote}}
*{{tl|Self-reference}}
| group2 = For and about
| list2 =
*{{tl|For}}
*{{tl|For-text}} (for custom text)
*{{tl|For-multi}} (for multiple uses)
*{{tl|About}}
*Variations: {{tl|Other uses}}
*{{tl|Other uses of}}
*{{tl|Redirect-distinguish-for}}
*{{tl|About-distinguish}}
*{{tl|About-distinguish-text}}
| group3 = Other topics
| list3 =
*{{tl|Other people}}
*{{tl|About other people}} (adds "about" description)
*{{tl|Similar names}}
*{{tl|Other storms}}
*{{tl|Other places}}
*{{tl|Other ships}}
| group4 = Redirect
| list4 =
*{{tl|Redirect}}
*{{tl|Redirect2}} (for two redirects)
*{{tl|Redirect-multi}} (for multiple redirects)
*{{tl|Redirect-several}} (for several redirects, without listing each)
*{{tl|Redirect-synonym}}
*{{tl|Redirect-distinguish}}
*{{tl|Redirect-distinguish-text}}
*{{tl|Redirect-distinguish-for}}
*{{tl|Technical reasons}}
| group5 = Distinguish
| list5 =
*{{tl|Distinguish}} (supports custom text)
*{{tl|About-distinguish}}
*{{tl|About-distinguish-text}} (for custom text)
*{{tl|Redirect-distinguish}}
*{{tl|Redirect-distinguish-text}} (for custom text)
*{{tl|Redirect-distinguish-for}}
| group6 = For use in sections
| list6 =
*{{tl|Main}}
*{{tl|Main if exists}}
*{{tl|Main list}}
*{{tl|Further}}
*{{tl|Further-text}} (for custom text)
*{{tl|Further interlanguage link}}
*{{tl|See also}}
*{{tl|See also if exists}}
*{{tl|See also-text}} (for custom text)
*{{tl|For outline}}
*{{tl|For timeline}}
| group7 = Special
| list7 =
*{{tl|Broader}}
*{{tl|For introduction}}
*{{tl|See Wiktionary}}
*{{tl|Transcluding article}}
*{{tl|Transcluded section}}
| group8 = Subject specific
| list8 =
* {{tl|About year}}
* {{tl|Highway detail hatnote}}
* {{tl|For LMST}}
* {{tl|WikiIPA}}
| below =
*{{Icon|cat}} [[:Category:Hatnote templates]]
**[[:Category:Hatnote modules|modules]]
**[[:Category:Hatnote templates for names|for [family] names]]
**[[:Category:Hatnote templates for lists|for lists]]
*[[Template:Category hatnote templates|hatnote templates for category pages]]
}}<noinclude>
{{Documentation}}
</noinclude>
5ea17ab2381b3c2002e4846f08d462d2574b6015
Template:Documentation
10
50
169
95
2023-08-07T07:13:50Z
meta>Nieuwsgierige Gebruiker
0
Undid revision 342625 by [[Special:Contributions/67.163.114.70|67.163.114.70]] ([[User talk:67.163.114.70|talk]])
wikitext
text/x-wiki
{{#invoke:Documentation|main}}
bb08b6773a4c1e1d528cefda2d7c305d8b5193ec
Template:Infobox settlement
10
1427
2762
2023-08-08T12:47:25Z
w>Paine Ellsworth
0
per edit request on talk page - remove redundant "%"
wikitext
text/x-wiki
<includeonly>{{main other|{{#invoke:Settlement short description|main}}|}}{{Infobox
| child = {{yesno|{{{embed|}}}}}
| templatestyles = Infobox settlement/styles.css
| bodyclass = ib-settlement vcard
<!--** names, type, and transliterations ** -->
| above = <div class="fn org">{{if empty|{{{name|}}}|{{{official_name|}}}|{{PAGENAMEBASE}}}}</div>
{{#if:{{{native_name|}}}|<div class="nickname ib-settlement-native" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}{{#if:{{{other_name|}}}|<div class="nickname ib-settlement-other-name">{{{other_name}}}</div>}}
| subheader = {{#if:{{{settlement_type|{{{type|}}}}}}|<div class="category">{{{settlement_type|{{{type}}}}}}</div>}}
| rowclass1 = mergedtoprow ib-settlement-official
| data1 = {{#if:{{{name|}}}|{{{official_name|}}}}}
<!-- ***Transliteration language 1*** -->
| rowclass2 = mergedtoprow
| header2 = {{#if:{{{translit_lang1|}}}|{{{translit_lang1}}} transcription(s)}}
| rowclass3 = {{#if:{{{translit_lang1_type1|}}}|mergedrow|mergedbottomrow}}
| label3 = • {{{translit_lang1_type}}}
| data3 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type|}}}|{{{translit_lang1_info|}}}}}}}
| rowclass4 = {{#if:{{{translit_lang1_type2|}}}|mergedrow|mergedbottomrow}}
| label4 = • {{{translit_lang1_type1}}}
| data4 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type1|}}}|{{{translit_lang1_info1|}}}}}}}
| rowclass5 = {{#if:{{{translit_lang1_type3|}}}|mergedrow|mergedbottomrow}}
| label5 = • {{{translit_lang1_type2}}}
| data5 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type2|}}}|{{{translit_lang1_info2|}}}}}}}
| rowclass6 = {{#if:{{{translit_lang1_type4|}}}|mergedrow|mergedbottomrow}}
| label6 = • {{{translit_lang1_type3}}}
| data6 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type3|}}}|{{{translit_lang1_info3|}}}}}}}
| rowclass7 = {{#if:{{{translit_lang1_type5|}}}|mergedrow|mergedbottomrow}}
| label7 = • {{{translit_lang1_type4}}}
| data7 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type4|}}}|{{{translit_lang1_info4|}}}}}}}
| rowclass8 = {{#if:{{{translit_lang1_type6|}}}|mergedrow|mergedbottomrow}}
| label8 = • {{{translit_lang1_type5}}}
| data8 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type5|}}}|{{{translit_lang1_info5|}}}}}}}
| rowclass9 = mergedbottomrow
| label9 = • {{{translit_lang1_type6}}}
| data9 = {{#if:{{{translit_lang1|}}}|{{#if:{{{translit_lang1_type6|}}}|{{{translit_lang1_info6|}}}}}}}
<!-- ***Transliteration language 2*** -->
| rowclass10 = mergedtoprow
| header10 = {{#if:{{{translit_lang2|}}}|{{{translit_lang2}}} transcription(s)}}
| rowclass11 = {{#if:{{{translit_lang2_type1|}}}|mergedrow|mergedbottomrow}}
| label11 = • {{{translit_lang2_type}}}
| data11 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type|}}}|{{{translit_lang2_info|}}}}}}}
| rowclass12 = {{#if:{{{translit_lang2_type2|}}}|mergedrow|mergedbottomrow}}
| label12 = • {{{translit_lang2_type1}}}
| data12 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type1|}}}|{{{translit_lang2_info1|}}}}}}}
| rowclass13 = {{#if:{{{translit_lang2_type3|}}}|mergedrow|mergedbottomrow}}
| label13 = • {{{translit_lang2_type2}}}
| data13 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type2|}}}|{{{translit_lang2_info2|}}}}}}}
| rowclass14 = {{#if:{{{translit_lang2_type4|}}}|mergedrow|mergedbottomrow}}
| label14 = • {{{translit_lang2_type3}}}
| data14 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type3|}}}|{{{translit_lang2_info3|}}}}}}}
| rowclass15 = {{#if:{{{translit_lang2_type5|}}}|mergedrow|mergedbottomrow}}
| label15 = • {{{translit_lang2_type4}}}
| data15 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type4|}}}|{{{translit_lang2_info4|}}}}}}}
| rowclass16 = {{#if:{{{translit_lang2_type6|}}}|mergedrow|mergedbottomrow}}
| label16 = • {{{translit_lang2_type5}}}
| data16 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type5|}}}|{{{translit_lang2_info5|}}}}}}}
| rowclass17 = mergedbottomrow
| label17 = • {{{translit_lang2_type6}}}
| data17 = {{#if:{{{translit_lang2|}}}|{{#if:{{{translit_lang2_type6|}}}|{{{translit_lang2_info6|}}}}}}}
<!-- end ** names, type, and transliterations ** -->
<!-- ***Skyline Image*** -->
| rowclass18 = mergedtoprow
| data18 = {{#if:{{{image_skyline|}}}|<!--
-->{{#invoke:InfoboxImage|InfoboxImage<!--
-->|image={{{image_skyline|}}}<!--
-->|size={{if empty|{{{image_size|}}}|{{{imagesize|}}}}}|sizedefault=250px<!--
-->|alt={{if empty|{{{image_alt|}}}|{{{alt|}}}}}<!--
-->|title={{if empty|{{{image_caption|}}}|{{{caption|}}}|{{{image_alt|}}}|{{{alt|}}}}}}}<!--
-->{{#if:{{{image_caption|}}}{{{caption|}}}|<div class="ib-settlement-caption">{{if empty|{{{image_caption|}}}|{{{caption|}}}}}</div>}} }}
<!-- ***Flag, Seal, Shield and Coat of arms*** -->
| rowclass19 = mergedtoprow
| class19 = maptable
| data19 = {{#if:{{{image_flag|}}}{{{image_seal|}}}{{{image_shield|}}}{{{image_blank_emblem|}}}{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}
|{{Infobox settlement/columns
| 1 = {{#if:{{{image_flag|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_flag}}}|size={{{flag_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|125px|100x100px}}|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{flag_alt|}}}|title=Flag of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Flag|link={{{flag_link|}}}|name={{{official_name}}}}}</div>}}
| 2 = {{#if:{{{image_seal|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_seal|}}}|size={{{seal_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{seal_alt|}}}|title=Official seal of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{seal_type|}}}|{{{seal_type}}}|Seal}}|link={{{seal_link|}}}|name={{{official_name}}}}}</div>}}
| 3 = {{#if:{{{image_shield|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_shield|}}}||size={{{shield_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{shield_alt|}}}|title=Coat of arms of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type=Coat of arms|link={{{shield_link|}}}|name={{{official_name}}}}}</div>}}
| 4 = {{#if:{{{image_blank_emblem|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_blank_emblem|}}}|size={{{blank_emblem_size|}}}|sizedefault={{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}|85px|100x100px}}|alt={{{blank_emblem_alt|}}}|title=Official logo of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}<div class="ib-settlement-caption-link">{{Infobox settlement/link|type={{#if:{{{blank_emblem_type|}}}|{{{blank_emblem_type}}}}}|link={{{blank_emblem_link|}}}|name={{{official_name}}}}}</div>}}
| 5 = {{#if:{{{image_map|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=100x100px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption-link">{{{map_caption}}}</div>}}}}
| 0 = {{#if:{{{pushpin_map_narrow|}}}|{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}|
{{location map|{{{pushpin_map|}}}
|border = infobox
|alt = {{{pushpin_map_alt|}}}
|caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{{map_caption}}}}}}}}}
|float = center
|width = {{#if:{{{pushpin_mapsize|}}}|{{{pushpin_mapsize}}}|150}}
|default_width = 250
|relief= {{{pushpin_relief|}}}
|AlternativeMap = {{{pushpin_image|}}}
|overlay_image = {{{pushpin_overlay|}}}
|coordinates = {{{coordinates|}}}
|label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }}
|marksize =6
|outside = {{{pushpin_outside|}}}<!-- pin is outside the map -->
|position = {{{pushpin_label_position|}}}
}}
}} }}
}} }}
<!-- ***Etymology*** -->
| rowclass20 = mergedtoprow
| data20 = {{#if:{{{etymology|}}}|Etymology: {{{etymology}}} }}
<!-- ***Nickname*** -->
| rowclass21 = {{#if:{{{etymology|}}}|mergedrow|mergedtoprow}}
| data21 = {{#if:{{{nickname|}}}{{{nicknames|}}}|<!--
-->{{Pluralize from text|parse_links=1|{{if empty|{{{nickname|}}}|{{{nicknames|}}}{{force plural}}}}|<!--
-->link={{{nickname_link|}}}|singular=Nickname|likely=Nickname(s)|plural=Nicknames}}: <!--
--><div class="ib-settlement-nickname nickname">{{if empty|{{{nickname|}}}|{{{nicknames|}}}}}</div><!--
-->{{Main other|{{Pluralize from text|parse_links=1|{{{nickname|}}}|<!--
-->likely=[[Category:Pages using infobox settlement with possible nickname list]]}}}}}}
<!-- ***Motto*** -->
| rowclass22 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}|mergedrow|mergedtoprow}}
| data22 = {{#if:{{{motto|}}}{{{mottoes|}}}|<!--
-->{{Pluralize from text|{{if empty|{{{motto|}}}|{{{mottoes|}}}{{force plural}}}}|<!--
-->link={{{motto_link|}}}|singular=Motto|likely=Motto(s)|plural=Mottoes}}: <!--
--><div class="ib-settlement-nickname nickname">{{if empty|{{{motto|}}}|{{{mottoes|}}}}}</div><!--
-->{{Main other|{{Pluralize from text|{{{motto|}}}|<!--
-->likely=[[Category:Pages using infobox settlement with possible motto list]]}}}}}}
<!-- ***Anthem*** -->
| rowclass23 = {{#if:{{{etymology|}}}{{{nickname|}}}{{{nicknames|}}}{{{motto|}}}{{{mottoes|}}}|mergedrow|mergedtoprow}}
| data23 = {{#if:{{{anthem|}}}|{{#if:{{{anthem_link|}}}|[[{{{anthem_link|}}}|Anthem:]]|Anthem:}} {{{anthem}}}}}
<!-- ***Map*** -->
| rowclass24 = mergedtoprow
| data24 = {{#if:{{both|{{{pushpin_map_narrow|}}}|{{{pushpin_map|}}}}}||{{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map}}}|size={{{mapsize|}}}|sizedefault=250px|alt={{{map_alt|}}}|title={{{map_caption|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption|}}}|<div class="ib-settlement-caption">{{{map_caption}}}</div>}}
}}}}
| rowclass25 = mergedrow
| data25 = {{#if:{{{image_map1|}}}|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map1}}}|size={{{mapsize1|}}}|sizedefault=250px|alt={{{map_alt1|}}}|title={{{map_caption1|Location of {{#if:{{{name|}}}|{{{name}}}|{{{official_name}}}}}}}}}}{{#if:{{{map_caption1|}}}|<div class="ib-settlement-caption">{{{map_caption1}}}</div>}} }}
<!-- ***Pushpin Map*** -->
| rowclass26 = mergedtoprow
| data26 = {{#if:{{{pushpin_map_narrow|}}}||{{#if:{{both| {{{pushpin_map|}}} | {{{coordinates|}}} }}|
{{location map|{{{pushpin_map|}}}
|border = infobox
|alt = {{{pushpin_map_alt|}}}
|caption ={{#if:{{{pushpin_map_caption_notsmall|}}}|{{{pushpin_map_caption_notsmall|}}}|{{#if:{{{pushpin_map_caption|}}}|{{{pushpin_map_caption}}}|{{#if:{{{map_caption|}}}|{{#if:{{{image_map|}}}||{{{map_caption}}}}}}}}}}}
|float = center
|width = {{{pushpin_mapsize|}}}
|default_width = 250
|relief= {{{pushpin_relief|}}}
|AlternativeMap = {{{pushpin_image|}}}
|overlay_image = {{{pushpin_overlay|}}}
|coordinates = {{{coordinates|}}}
|label = {{#ifeq: {{lc: {{{pushpin_label_position|}}} }} | none | | {{#if:{{{pushpin_label|}}}|{{{pushpin_label}}}|{{#if:{{{name|}}}|{{{name}}}|{{{official_name|}}}}}}} }}
|marksize =6
|outside = {{{pushpin_outside|}}}<!-- pin is outside the map -->
|position = {{{pushpin_label_position|}}}
}}
}} }}
<!-- ***Coordinates*** -->
| rowclass27 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|{{#if:{{{grid_position|}}}|mergedrow|mergedbottomrow}}}}
| data27 = {{#if:{{{coordinates|}}}
|Coordinates{{#if:{{{coor_pinpoint|{{{coor_type|}}}}}}| ({{{coor_pinpoint|{{{coor_type|}}}}}})}}: {{#invoke:ISO 3166|geocoordinsert|nocat=true|1={{{coordinates|}}}|country={{{subdivision_name|}}}|subdivision1={{{subdivision_name1|}}}|subdivision2={{{subdivision_name2|}}}|subdivision3={{{subdivision_name3|}}}|type=city{{#if:{{{population_total|}}}|{{#iferror:{{#expr:{{formatnum:{{{population_total}}}|R}}+1}}||({{formatnum:{{replace|{{{population_total}}}|,|}}|R}})}}}} }}{{{coordinates_footnotes|}}} }}
| rowclass28 = {{#if:{{{image_map|}}}{{{image_map1|}}}{{{pushpin_map|}}}|mergedbottomrow|mergedrow}}
| label28 = {{if empty|{{{grid_name|}}}|Grid position}}
| data28 = {{{grid_position|}}}
<!-- ***Subdivisions*** -->
| rowclass29 = mergedtoprow
| label29 = {{{subdivision_type}}}
| data29 = {{#if:{{{subdivision_type|}}}|{{{subdivision_name|}}} }}
| rowclass30 = mergedrow
| label30 = {{{subdivision_type1}}}
| data30 = {{#if:{{{subdivision_type1|}}}|{{{subdivision_name1|}}} }}
| rowclass31 = mergedrow
| label31 = {{{subdivision_type2}}}
| data31 = {{#if:{{{subdivision_type2|}}}|{{{subdivision_name2|}}} }}
| rowclass32 = mergedrow
| label32 = {{{subdivision_type3}}}
| data32 = {{#if:{{{subdivision_type3|}}}|{{{subdivision_name3|}}} }}
| rowclass33 = mergedrow
| label33 = {{{subdivision_type4}}}
| data33 = {{#if:{{{subdivision_type4|}}}|{{{subdivision_name4|}}} }}
| rowclass34 = mergedrow
| label34 = {{{subdivision_type5}}}
| data34 = {{#if:{{{subdivision_type5|}}}|{{{subdivision_name5|}}} }}
| rowclass35 = mergedrow
| label35 = {{{subdivision_type6}}}
| data35 = {{#if:{{{subdivision_type6|}}}|{{{subdivision_name6|}}} }}
<!--***Established*** -->
| rowclass36 = mergedtoprow
| label36 = {{{established_title}}}
| data36 = {{#if:{{{established_title|}}}|{{{established_date|}}} }}
| rowclass37 = mergedrow
| label37 = {{{established_title1}}}
| data37 = {{#if:{{{established_title1|}}}|{{{established_date1|}}} }}
| rowclass38 = mergedrow
| label38 = {{{established_title2}}}
| data38 = {{#if:{{{established_title2|}}}|{{{established_date2|}}} }}
| rowclass39 = mergedrow
| label39 = {{{established_title3}}}
| data39 = {{#if:{{{established_title3|}}}|{{{established_date3|}}} }}
| rowclass40 = mergedrow
| label40 = {{{established_title4}}}
| data40 = {{#if:{{{established_title4|}}}|{{{established_date4|}}} }}
| rowclass41 = mergedrow
| label41 = {{{established_title5}}}
| data41 = {{#if:{{{established_title5|}}}|{{{established_date5|}}} }}
| rowclass42 = mergedrow
| label42 = {{{established_title6}}}
| data42 = {{#if:{{{established_title6|}}}|{{{established_date6|}}} }}
| rowclass43 = mergedrow
| label43 = {{{established_title7}}}
| data43 = {{#if:{{{established_title7|}}}|{{{established_date7|}}} }}
| rowclass44 = mergedrow
| label44 = {{{extinct_title}}}
| data44 = {{#if:{{{extinct_title|}}}|{{{extinct_date|}}} }}
| rowclass45 = mergedrow
| label45 = Founded by
| data45 = {{{founder|}}}
| rowclass46 = mergedrow
| label46 = [[Namesake|Named for]]
| data46 = {{{named_for|}}}
<!-- ***Seat of government and subdivisions within the settlement*** -->
| rowclass47 = mergedtoprow
| label47 = {{#if:{{{seat_type|}}}|{{{seat_type}}}|Seat}}
| data47 = {{{seat|}}}
| rowclass48 = mergedrow
| label48 = {{#if:{{{seat1_type|}}}|{{{seat1_type}}}|Former seat}}
| data48 = {{{seat1|}}}
| rowclass49 = mergedrow
| label49 = {{#if:{{{seat2_type|}}}|{{{seat2_type}}}|Former seat}}
| data49 = {{{seat2|}}}
| rowclass51 = {{#if:{{{seat|}}}{{{seat1|}}}{{{seat2|}}}|mergedrow|mergedtoprow}}
| label51 = {{#if:{{{parts_type|}}}|{{{parts_type}}}|Boroughs}}
| data51 = {{#if:{{{parts|}}}{{{p1|}}}
|{{#ifeq:{{{parts_style|}}}|para
|<b>{{{parts|}}}{{#if:{{both|{{{parts|}}}|{{{p1|}}}}}|: |}}</b>{{comma separated entries|{{{p1|}}}|{{{p2|}}}|{{{p3|}}}|{{{p4|}}}|{{{p5|}}}|{{{p6|}}}|{{{p7|}}}|{{{p8|}}}|{{{p9|}}}|{{{p10|}}}|{{{p11|}}}|{{{p12|}}}|{{{p13|}}}|{{{p14|}}}|{{{p15|}}}|{{{p16|}}}|{{{p17|}}}|{{{p18|}}}|{{{p19|}}}|{{{p20|}}}|{{{p21|}}}|{{{p22|}}}|{{{p23|}}}|{{{p24|}}}|{{{p25|}}}|{{{p26|}}}|{{{p27|}}}|{{{p28|}}}|{{{p29|}}}|{{{p30|}}}|{{{p31|}}}|{{{p32|}}}|{{{p33|}}}|{{{p34|}}}|{{{p35|}}}|{{{p36|}}}|{{{p37|}}}|{{{p38|}}}|{{{p39|}}}|{{{p40|}}}|{{{p41|}}}|{{{p42|}}}|{{{p43|}}}|{{{p44|}}}|{{{p45|}}}|{{{p46|}}}|{{{p47|}}}|{{{p48|}}}|{{{p49|}}}|{{{p50|}}}}}
|{{#if:{{{p1|}}}|{{Collapsible list|title={{{parts|}}}|expand={{#switch:{{{parts_style|}}}|coll=|list=y|{{#if:{{{p6|}}}||y}}}}|1={{{p1|}}}|2={{{p2|}}}|3={{{p3|}}}|4={{{p4|}}}|5={{{p5|}}}|6={{{p6|}}}|7={{{p7|}}}|8={{{p8|}}}|9={{{p9|}}}|10={{{p10|}}}|11={{{p11|}}}|12={{{p12|}}}|13={{{p13|}}}|14={{{p14|}}}|15={{{p15|}}}|16={{{p16|}}}|17={{{p17|}}}|18={{{p18|}}}|19={{{p19|}}}|20={{{p20|}}}|21={{{p21|}}}|22={{{p22|}}}|23={{{p23|}}}|24={{{p24|}}}|25={{{p25|}}}|26={{{p26|}}}|27={{{p27|}}}|28={{{p28|}}}|29={{{p29|}}}|30={{{p30|}}}|31={{{p31|}}}|32={{{p32|}}}|33={{{p33|}}}|34={{{p34|}}}|35={{{p35|}}}|36={{{p36|}}}|37={{{p37|}}}|38={{{p38|}}}|39={{{p39|}}}|40={{{p40|}}}|41={{{p41|}}}|42={{{p42|}}}|43={{{p43|}}}|44={{{p44|}}}|45={{{p45|}}}|46={{{p46|}}}|47={{{p47|}}}|48={{{p48|}}}|49={{{p49|}}}|50={{{p50|}}}}}
|{{{parts}}}
}}
}} }}
<!-- ***Government type and Leader*** -->
| rowclass52 = mergedtoprow
| header52 = {{#if:{{{government_type|}}}{{{governing_body|}}}{{{leader_name|}}}{{{leader_name1|}}}{{{leader_name2|}}}{{{leader_name3|}}}{{{leader_name4|}}}|Government<div class="ib-settlement-fn">{{{government_footnotes|}}}</div>}}
<!-- ***Government*** -->
| rowclass53 = mergedrow
| label53 = • Type
| data53 = {{{government_type|}}}
| rowclass54 = mergedrow
| label54 = • Body
| class54 = agent
| data54 = {{{governing_body|}}}
| rowclass55 = mergedrow
| label55 = • {{{leader_title}}}
| data55 = {{#if:{{{leader_title|}}}|{{{leader_name|}}} {{#if:{{{leader_party|}}}|({{Polparty|{{{subdivision_name}}}|{{{leader_party}}}}})}}}}
| rowclass56 = mergedrow
| label56 = • {{{leader_title1}}}
| data56 = {{#if:{{{leader_title1|}}}|{{{leader_name1|}}}}}
| rowclass57 = mergedrow
| label57 = • {{{leader_title2}}}
| data57 = {{#if:{{{leader_title2|}}}|{{{leader_name2|}}}}}
| rowclass58 = mergedrow
| label58 = • {{{leader_title3}}}
| data58 = {{#if:{{{leader_title3|}}}|{{{leader_name3|}}}}}
| rowclass59 = mergedrow
| label59 = • {{{leader_title4}}}
| data59 = {{#if:{{{leader_title4|}}}|{{{leader_name4|}}}}}
| rowclass60 = mergedrow
| label60 = {{{government_blank1_title}}}
| data60 = {{#if:{{{government_blank1|}}}|{{{government_blank1|}}}}}
| rowclass61 = mergedrow
| label61 = {{{government_blank2_title}}}
| data61 = {{#if:{{{government_blank2|}}}|{{{government_blank2|}}}}}
| rowclass62 = mergedrow
| label62 = {{{government_blank3_title}}}
| data62 = {{#if:{{{government_blank3|}}}|{{{government_blank3|}}}}}
| rowclass63 = mergedrow
| label63 = {{{government_blank4_title}}}
| data63 = {{#if:{{{government_blank4|}}}|{{{government_blank4|}}}}}
| rowclass64 = mergedrow
| label64 = {{{government_blank5_title}}}
| data64 = {{#if:{{{government_blank5|}}}|{{{government_blank5|}}}}}
| rowclass65 = mergedrow
| label65 = {{{government_blank6_title}}}
| data65 = {{#if:{{{government_blank6|}}}|{{{government_blank6|}}}}}
<!-- ***Geographical characteristics*** -->
<!-- ***Area*** -->
| rowclass66 = mergedtoprow
| header66 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_rural_sq_mi|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_km2|}}}{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_metro_sq_mi|}}}{{{area_blank1_sq_mi|}}}
|{{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}
|<!-- displayed below -->
|Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div>
}}
}}
| rowclass67 = {{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}|mergedtoprow|mergedrow}}
| label67 = {{#if:{{both|{{#ifeq:{{{total_type}}}| |1}}|{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}}}
|Area<div class="ib-settlement-fn">{{{area_footnotes|}}}</div>
| • {{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}}
}}
| data67 = {{#if:{{{area_total_km2|}}}{{{area_total_ha|}}}{{{area_total_acre|}}}{{{area_total_sq_mi|}}}{{{area_total_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_total_km2|}}}
|ha ={{{area_total_ha|}}}
|acre ={{{area_total_acre|}}}
|sqmi ={{{area_total_sq_mi|}}}
|dunam={{{area_total_dunam|}}}
|link ={{#switch:{{{dunam_link|}}}||on|total=on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass68 = mergedrow
| label68 = • Land
| data68 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_acre|}}}{{{area_land_sq_mi|}}}{{{area_land_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_land_km2|}}}
|ha ={{{area_land_ha|}}}
|acre ={{{area_land_acre|}}}
|sqmi ={{{area_land_sq_mi|}}}
|dunam={{{area_land_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|land|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass69 = mergedrow
| label69 = • Water
| data69 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_acre|}}}{{{area_water_sq_mi|}}}{{{area_water_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_water_km2|}}}
|ha ={{{area_water_ha|}}}
|acre ={{{area_water_acre|}}}
|sqmi ={{{area_water_sq_mi|}}}
|dunam={{{area_water_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|water|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}} {{#if:{{{area_water_percent|}}}| {{{area_water_percent}}}{{#ifeq:%|{{#invoke:string|sub|{{{area_water_percent|}}}|-1}}||%}}}}}}
| rowclass70 = mergedrow
| label70 = • Urban<div class="ib-settlement-fn">{{{area_urban_footnotes|}}}</div>
| data70 = {{#if:{{{area_urban_km2|}}}{{{area_urban_ha|}}}{{{area_urban_acre|}}}{{{area_urban_sq_mi|}}}{{{area_urban_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_urban_km2|}}}
|ha ={{{area_urban_ha|}}}
|acre ={{{area_urban_acre|}}}
|sqmi ={{{area_urban_sq_mi|}}}
|dunam={{{area_urban_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|urban|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass71 = mergedrow
| label71 = • Rural<div class="ib-settlement-fn">{{{area_rural_footnotes|}}}</div>
| data71 = {{#if:{{{area_rural_km2|}}}{{{area_rural_ha|}}}{{{area_rural_acre|}}}{{{area_rural_sq_mi|}}}{{{area_rural_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_rural_km2|}}}
|ha ={{{area_rural_ha|}}}
|acre ={{{area_rural_acre|}}}
|sqmi ={{{area_rural_sq_mi|}}}
|dunam={{{area_rural_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|rural|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass72 = mergedrow
| label72 = • Metro<div class="ib-settlement-fn">{{{area_metro_footnotes|}}}</div>
| data72 = {{#if:{{{area_metro_km2|}}}{{{area_metro_ha|}}}{{{area_metro_acre|}}}{{{area_metro_sq_mi|}}}{{{area_metro_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_metro_km2|}}}
|ha ={{{area_metro_ha|}}}
|acre ={{{area_metro_acre|}}}
|sqmi ={{{area_metro_sq_mi|}}}
|dunam={{{area_metro_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|metro|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
<!-- ***Area rank*** -->
| rowclass73 = mergedrow
| label73 = • Rank
| data73 = {{{area_rank|}}}
| rowclass74 = mergedrow
| label74 = • {{{area_blank1_title}}}
| data74 = {{#if:{{{area_blank1_km2|}}}{{{area_blank1_ha|}}}{{{area_blank1_acre|}}}{{{area_blank1_sq_mi|}}}{{{area_blank1_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_blank1_km2|}}}
|ha ={{{area_blank1_ha|}}}
|acre ={{{area_blank1_acre|}}}
|sqmi ={{{area_blank1_sq_mi|}}}
|dunam={{{area_blank1_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|blank1|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass75 = mergedrow
| label75 = • {{{area_blank2_title}}}
| data75 = {{#if:{{{area_blank2_km2|}}}{{{area_blank2_ha|}}}{{{area_blank2_acre|}}}{{{area_blank2_sq_mi|}}}{{{area_blank2_dunam|}}}
|{{infobox_settlement/areadisp
|km2 ={{{area_blank2_km2|}}}
|ha ={{{area_blank2_ha|}}}
|acre ={{{area_blank2_acre|}}}
|sqmi ={{{area_blank2_sq_mi|}}}
|dunam={{{area_blank2_dunam|}}}
|link ={{#ifeq:{{{dunam_link|}}}|blank2|on}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass76 = mergedrow
| label76 =
| data76 = {{{area_note|}}}
<!-- ***Dimensions*** -->
| rowclass77 = mergedtoprow
| header77 = {{#if:{{{length_km|}}}{{{length_mi|}}}{{{width_km|}}}{{{width_mi|}}}|Dimensions<div class="ib-settlement-fn">{{{dimensions_footnotes|}}}</div>}}
| rowclass78 = mergedrow
| label78 = • Length
| data78 = {{#if:{{{length_km|}}}{{{length_mi|}}}
| {{infobox_settlement/lengthdisp
|km ={{{length_km|}}}
|mi ={{{length_mi|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
| rowclass79 = mergedrow
| label79 = • Width
| data79 = {{#if:{{{width_km|}}}{{{width_mi|}}}
|{{infobox_settlement/lengthdisp
|km ={{{width_km|}}}
|mi ={{{width_mi|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation*** -->
| rowclass80 = mergedtoprow
| label80 = {{#if:{{{elevation_link|}}}|[[{{{elevation_link|}}}|Elevation]]|Elevation}}<div class="ib-settlement-fn">{{{elevation_footnotes|}}}{{#if:{{{elevation_point|}}}| ({{{elevation_point}}})}}</div>
| data80 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_m|}}}
|ft ={{{elevation_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
| rowclass81 = {{#if:{{{elevation_m|}}}{{{elevation_ft|}}}|mergedrow|mergedtoprow}}
| label81 = Highest elevation<div class="ib-settlement-fn">{{{elevation_max_footnotes|}}}{{#if:{{{elevation_max_point|}}}| ({{{elevation_max_point}}})}}</div>
| data81 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_max_m|}}}
|ft ={{{elevation_max_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation max rank*** -->
| rowclass82 = mergedrow
| label82 = • Rank
| data82 = {{#if:{{{elevation_max_m|}}}{{{elevation_max_ft|}}}| {{{elevation_max_rank|}}} }}
| rowclass83 = {{#if:{{{elevation_min_rank|}}}|mergedrow|mergedbottomrow}}
| label83 = Lowest elevation<div class="ib-settlement-fn">{{{elevation_min_footnotes|}}}{{#if:{{{elevation_min_point|}}}| ({{{elevation_min_point}}})}}</div>
| data83 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}
|{{infobox_settlement/lengthdisp
|m ={{{elevation_min_m|}}}
|ft ={{{elevation_min_ft|}}}
|pref={{{unit_pref}}}
|name={{{subdivision_name}}}
}} }}
<!-- ***Elevation min rank*** -->
| rowclass84 = mergedrow
| label84 = • Rank
| data84 = {{#if:{{{elevation_min_m|}}}{{{elevation_min_ft|}}}|{{{elevation_min_rank|}}}}}
<!-- ***Population*** -->
| rowclass85 = mergedtoprow
| label85 = Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div>
| data85 = {{fix comma category|{{#if:{{{population|}}}
| {{formatnum:{{replace|{{{population}}}|,|}}}}
| {{#ifeq:{{{total_type}}}|
| {{#if:{{{population_total|}}}
| {{formatnum:{{replace|{{{population_total}}}|,|}}}}
}}
}}
}}}}
| rowclass86 = mergedtoprow
| header86 = {{#if:{{{population|}}}
|
|{{#ifeq:{{{total_type}}}|
|
|{{#if:{{{population_total|}}}{{{population_urban|}}}{{{population_rural|}}}{{{population_metro|}}}{{{population_blank1|}}}{{{population_blank2|}}}{{{population_est|}}}
|Population<div class="ib-settlement-fn">{{#if:{{{population_as_of|}}}|{{nbsp}}({{{population_as_of}}})}}{{{population_footnotes|}}}</div>
}}
}}
}}
| rowclass87 = mergedrow
| label87 = • {{#if:{{{total_type|}}}|{{{total_type}}}|{{#if:{{{population_metro|}}}{{{population_urban|}}}{{{population_rural|}}}{{{area_metro_km2|}}}{{{area_metro_sq_mi|}}}{{{area_urban_km2|}}}{{{area_urban_sq_mi|}}}{{{area_rural_km2|}}}{{{area_rural_sq_mi|}}}|{{#if:{{{settlement_type|{{{type|}}}}}}|{{{settlement_type|{{{type}}}}}}|City}}|Total}}}}
| data87 = {{#if:{{{population|}}}
|
|{{#ifeq:{{{total_type}}}|
|
|{{#if:{{{population_total|}}}
| {{fix comma category|{{formatnum:{{replace|{{{population_total}}}|,|}}}}}}
}}
}}
}}
| rowclass88 = mergedrow
| label88 = • Estimate <div class="ib-settlement-fn">({{{pop_est_as_of}}}){{{pop_est_footnotes|}}}</div>
| data88 = {{#if:{{{population_est|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_est}}}|,|}}}}}} }}
<!-- ***Population rank*** -->
| rowclass89 = mergedrow
| label89 = • Rank
| data89 = {{{population_rank|}}}
| rowclass90 = mergedrow
| label90 = • Density
| data90 = {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}{{{population_total|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_km2|}}}
|/sqmi={{{population_density_sq_mi|}}}
|pop ={{{population_total|}}}
|dunam={{{area_total_dunam|}}}
|ha ={{{area_total_ha|}}}
|km2 ={{{area_total_km2|}}}
|acre ={{{area_total_acre|}}}
|sqmi ={{{area_total_sq_mi|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
<!-- ***Population density rank*** -->
| rowclass91 = mergedrow
| label91 = • Rank
| data91 = {{{population_density_rank|}}}
| rowclass92 = mergedrow
| label92 = • [[Urban area|Urban]]<div class="ib-settlement-fn">{{{population_urban_footnotes|}}}</div>
| data92 = {{#if:{{{population_urban|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_urban}}}|,|}}}}}} }}
| rowclass93 = mergedrow
| label93 = • Urban density
| data93 = {{#if:{{{population_density_urban_km2|}}}{{{population_density_urban_sq_mi|}}}{{{population_urban|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_urban_km2|}}}
|/sqmi={{{population_density_urban_sq_mi|}}}
|pop ={{{population_urban|}}}
|ha ={{{area_urban_ha|}}}
|km2 ={{{area_urban_km2|}}}
|acre ={{{area_urban_acre|}}}
|sqmi ={{{area_urban_sq_mi|}}}
|dunam={{{area_urban_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass94 = mergedrow
| label94 = • [[Rural area|Rural]]<div class="ib-settlement-fn">{{{population_rural_footnotes|}}}</div>
| data94 = {{#if:{{{population_rural|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_rural}}}|,|}}}}}}}}
| rowclass95 = mergedrow
| label95 = • Rural density
| data95 = {{#if:{{{population_density_rural_km2|}}}{{{population_density_rural_sq_mi|}}}{{{population_rural|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_rural_km2|}}}
|/sqmi={{{population_density_rural_sq_mi|}}}
|pop ={{{population_rural|}}}
|ha ={{{area_rural_ha|}}}
|km2 ={{{area_rural_km2|}}}
|acre ={{{area_rural_acre|}}}
|sqmi ={{{area_rural_sq_mi|}}}
|dunam={{{area_rural_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass96 = mergedrow
| label96 = • [[Metropolitan area|Metro]]<div class="ib-settlement-fn">{{{population_metro_footnotes|}}}</div>
| data96 = {{#if:{{{population_metro|}}}| {{fix comma category|{{formatnum:{{replace|{{{population_metro}}}|,|}}}}}} }}
| rowclass97 = mergedrow
| label97 = • Metro density
| data97 = {{#if:{{{population_density_metro_km2|}}}{{{population_density_metro_sq_mi|}}}{{{population_metro|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_metro_km2|}}}
|/sqmi={{{population_density_metro_sq_mi|}}}
|pop ={{{population_metro|}}}
|ha ={{{area_metro_ha|}}}
|km2 ={{{area_metro_km2|}}}
|acre ={{{area_metro_acre|}}}
|sqmi ={{{area_metro_sq_mi|}}}
|dunam={{{area_metro_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass98 = mergedrow
| label98 = • {{{population_blank1_title|}}}<div class="ib-settlement-fn">{{{population_blank1_footnotes|}}}</div>
| data98 = {{#if:{{{population_blank1|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank1}}}|,|}}}}}}}}
| rowclass99 = mergedrow
| label99 = • {{#if:{{{population_blank1_title|}}}|{{{population_blank1_title}}} density|Density}}
| data99 = {{#if:{{{population_density_blank1_km2|}}}{{{population_density_blank1_sq_mi|}}}{{{population_blank1|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_blank1_km2|}}}
|/sqmi={{{population_density_blank1_sq_mi|}}}
|pop ={{{population_blank1|}}}
|ha ={{{area_blank1_ha|}}}
|km2 ={{{area_blank1_km2|}}}
|acre ={{{area_blank1_acre|}}}
|sqmi ={{{area_blank1_sq_mi|}}}
|dunam={{{area_blank1_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass100 = mergedrow
| label100 = • {{{population_blank2_title|}}}<div class="ib-settlement-fn">{{{population_blank2_footnotes|}}}</div>
| data100 = {{#if:{{{population_blank2|}}}|{{fix comma category|{{formatnum:{{replace|{{{population_blank2}}}|,|}}}}}}}}
| rowclass101 = mergedrow
| label101 = • {{#if:{{{population_blank2_title|}}}|{{{population_blank2_title}}} density|Density}}
| data101 = {{#if:{{{population_density_blank2_km2|}}}{{{population_density_blank2_sq_mi|}}}{{{population_blank2|}}}
|{{infobox_settlement/densdisp
|/km2 ={{{population_density_blank2_km2|}}}
|/sqmi={{{population_density_blank2_sq_mi|}}}
|pop ={{{population_blank2|}}}
|ha ={{{area_blank2_ha|}}}
|km2 ={{{area_blank2_km2|}}}
|acre ={{{area_blank2_acre|}}}
|sqmi ={{{area_blank2_sq_mi|}}}
|dunam={{{area_blank2_dunam|}}}
|pref ={{{unit_pref}}}
|name ={{{subdivision_name}}}
}}}}
| rowclass102 = mergedrow
| label102 =
| data102 = {{{population_note|}}}
| rowclass103 = mergedtoprow
| label103 = {{Pluralize from text|{{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}{{force plural}}}}|<!--
-->link=Demonym|singular=Demonym|likely=Demonym(s)|plural=Demonyms}}
| data103 = {{if empty|{{{population_demonym|}}}|{{{population_demonyms|}}}}}{{Main other|{{Pluralize from text|{{{population_demonym|}}}|likely=[[Category:Pages using infobox settlement with possible demonym list]]}}}}
<!-- ***Demographics 1*** -->
| rowclass104 = mergedtoprow
| header104 = {{#if:{{{demographics_type1|}}}
|{{{demographics_type1}}}<div class="ib-settlement-fn">{{{demographics1_footnotes|}}}</div>}}
| rowclass105 = mergedrow
| label105 = • {{{demographics1_title1}}}
| data105 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title1|}}}|{{{demographics1_info1|}}}}}}}
| rowclass106 = mergedrow
| label106 = • {{{demographics1_title2}}}
| data106 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title2|}}}|{{{demographics1_info2|}}}}}}}
| rowclass107 = mergedrow
| label107 = • {{{demographics1_title3}}}
| data107 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title3|}}}|{{{demographics1_info3|}}}}}}}
| rowclass108 = mergedrow
| label108 = • {{{demographics1_title4}}}
| data108 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title4|}}}|{{{demographics1_info4|}}}}}}}
| rowclass109 = mergedrow
| label109 = • {{{demographics1_title5}}}
| data109 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title5|}}}|{{{demographics1_info5|}}}}}}}
| rowclass110 = mergedrow
| label110 = • {{{demographics1_title6}}}
| data110 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title6|}}}|{{{demographics1_info6|}}}}}}}
| rowclass111 = mergedrow
| label111 = • {{{demographics1_title7}}}
| data111 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title7|}}}|{{{demographics1_info7|}}}}}}}
| rowclass112 = mergedrow
| label112 = • {{{demographics1_title8}}}
| data112 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title8|}}}|{{{demographics1_info8|}}}}}}}
| rowclass113 = mergedrow
| label113 = • {{{demographics1_title9}}}
| data113 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title9|}}}|{{{demographics1_info9|}}}}}}}
| rowclass114 = mergedrow
| label114 = • {{{demographics1_title10}}}
| data114 = {{#if:{{{demographics_type1|}}}
|{{#if:{{{demographics1_title10|}}}|{{{demographics1_info10|}}}}}}}
<!-- ***Demographics 2*** -->
| rowclass115 = mergedtoprow
| header115 = {{#if:{{{demographics_type2|}}}
|{{{demographics_type2}}}<div class="ib-settlement-fn">{{{demographics2_footnotes|}}}</div>}}
| rowclass116 = mergedrow
| label116 = • {{{demographics2_title1}}}
| data116 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title1|}}}|{{{demographics2_info1|}}}}}}}
| rowclass117 = mergedrow
| label117 = • {{{demographics2_title2}}}
| data117 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title2|}}}|{{{demographics2_info2|}}}}}}}
| rowclass118 = mergedrow
| label118 = • {{{demographics2_title3}}}
| data118 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title3|}}}|{{{demographics2_info3|}}}}}}}
| rowclass119 = mergedrow
| label119 = • {{{demographics2_title4}}}
| data119 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title4|}}}|{{{demographics2_info4|}}}}}}}
| rowclass120 = mergedrow
| label120 = • {{{demographics2_title5}}}
| data120 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title5|}}}|{{{demographics2_info5|}}}}}}}
| rowclass121 = mergedrow
| label121 = • {{{demographics2_title6}}}
| data121 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title6|}}}|{{{demographics2_info6|}}}}}}}
| rowclass122 = mergedrow
| label122 = • {{{demographics2_title7}}}
| data122 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title7|}}}|{{{demographics2_info7|}}}}}}}
| rowclass123 = mergedrow
| label123 = • {{{demographics2_title8}}}
| data123 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title8|}}}|{{{demographics2_info8|}}}}}}}
| rowclass124 = mergedrow
| label124 = • {{{demographics2_title9}}}
| data124 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title9|}}}|{{{demographics2_info9|}}}}}}}
| rowclass125 = mergedrow
| label125 = • {{{demographics2_title10}}}
| data125 = {{#if:{{{demographics_type2|}}}
|{{#if:{{{demographics2_title10|}}}|{{{demographics2_info10|}}}}}}}
<!-- ***Time Zones*** -->
| rowclass126 = mergedtoprow
| header126 = {{#if:{{{timezone1_location|}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}|}}
| rowclass127 = {{#if:{{{timezone1_location|}}}|mergedrow|mergedtoprow}}
| label127 = {{#if:{{{timezone1_location|}}}|{{{timezone1_location}}}|{{#if:{{{timezone2_location|}}}|{{{timezone2_location}}}|{{#if:{{{timezone2|}}}|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]s|[[{{#if:{{{timezone_link|}}}|{{{timezone_link}}}|Time zone}}|Time zone]]}}}}}}
| data127 = {{#if:{{{utc_offset1|{{{utc_offset|}}} }}}
|[[UTC{{{utc_offset1|{{{utc_offset}}}}}}]] {{#if:{{{timezone1|{{{timezone|}}}}}}|({{{timezone1|{{{timezone}}}}}})}}
|{{{timezone1|{{{timezone|}}}}}}
}}
| rowclass128 = mergedrow
| label128 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data128 = {{#if:{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}
|[[UTC{{{utc_offset1_DST|{{{utc_offset_DST|}}}}}}]] {{#if:{{{timezone1_DST|{{{timezone_DST|}}}}}}|({{{timezone1_DST|{{{timezone_DST}}}}}})}}
|{{{timezone1_DST|{{{timezone_DST|}}}}}}
}}
| rowclass129 = mergedrow
| label129 = {{#if:{{{timezone2_location|}}}| {{{timezone2_location|}}}|<nowiki />}}
| data129 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset2|{{{utc_offset2|}}} }}}
|[[UTC{{{utc_offset2|{{{utc_offset2}}}}}}]] {{#if:{{{timezone2|}}}|({{{timezone2}}})}}
|{{{timezone2|}}}
}}
}}
| rowclass130 = mergedrow
| label130 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data130 = {{#if:{{{utc_offset2_DST|}}}|[[UTC{{{utc_offset2_DST|}}}]] {{#if:{{{timezone2_DST|}}}|({{{timezone2_DST|}}})}}
|{{{timezone2_DST|}}}
}}
| rowclass131 = mergedrow
| label131 = {{#if:{{{timezone3_location|}}}| {{{timezone3_location|}}}|<nowiki />}}
| data131 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset3|{{{utc_offset3|}}} }}}
|[[UTC{{{utc_offset3|{{{utc_offset3}}}}}}]] {{#if:{{{timezone3|}}}|({{{timezone3}}})}}
|{{{timezone3|}}}
}}
}}
| rowclass132 = mergedrow
| label132 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data132 = {{#if:{{{utc_offset3_DST|}}}|[[UTC{{{utc_offset3_DST|}}}]] {{#if:{{{timezone3_DST|}}}|({{{timezone3_DST|}}})}}
|{{{timezone3_DST|}}}
}}
| rowclass133 = mergedrow
| label133 = {{#if:{{{timezone4_location|}}}| {{{timezone4_location|}}}|<nowiki />}}
| data133 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset4|{{{utc_offset4|}}} }}}
|[[UTC{{{utc_offset4|{{{utc_offset4}}}}}}]] {{#if:{{{timezone4|}}}|({{{timezone4}}})}}
|{{{timezone4|}}}
}}
}}
| rowclass134 = mergedrow
| label134 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data134 = {{#if:{{{utc_offset4_DST|}}}|[[UTC{{{utc_offset4_DST|}}}]] {{#if:{{{timezone4_DST|}}}|({{{timezone4_DST|}}})}}
|{{{timezone4_DST|}}}
}}
| rowclass135 = mergedrow
| label135 = {{#if:{{{timezone5_location|}}}| {{{timezone5_location|}}}|<nowiki />}}
| data135 = {{#if:{{{timezone1|{{{timezone|}}}}}}{{{utc_offset1|{{{utc_offset|}}}}}}
|{{#if:{{{utc_offset5|{{{utc_offset5|}}} }}}
|[[UTC{{{utc_offset5|{{{utc_offset5}}}}}}]] {{#if:{{{timezone5|}}}|({{{timezone5}}})}}
|{{{timezone5|}}}
}}
}}
| rowclass136 = mergedrow
| label136 = <span class="nowrap"> • Summer ([[Daylight saving time|DST]])</span>
| data136 = {{#if:{{{utc_offset5_DST|}}}|[[UTC{{{utc_offset5_DST|}}}]] {{#if:{{{timezone5_DST|}}}|({{{timezone5_DST|}}})}}
|{{{timezone5_DST|}}}
}}
<!-- ***Postal Code(s)*** -->
| rowclass137 = mergedtoprow
| label137 = {{{postal_code_type}}}
| class137 = adr
| data137 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|<div class="postal-code">{{{postal_code}}}</div>}}}}
| rowclass138 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}|mergedbottomrow|mergedtoprow}}
| label138 = {{{postal2_code_type}}}
| class138 = adr
| data138 = {{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|<div class="postal-code">{{{postal2_code}}}</div>}} }} }}
<!-- ***Area Code(s)*** -->
| rowclass139 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}|mergedrow|mergedtoprow}}
| label139 = {{if empty|{{{area_code_type|}}}|{{Pluralize from text|any_comma=1|parse_links=1|{{if empty|{{{area_code|}}}|{{{area_codes|}}}{{force plural}}}}|<!--
-->link=Telephone numbering plan|singular=Area code|likely=Area code(s)|plural=Area codes}}}}
| data139 = {{if empty|{{{area_code|}}}|{{{area_codes|}}}}}{{#if:{{{area_code_type|}}}||{{Main other|{{Pluralize from text|any_comma=1|parse_links=1|{{{area_code|}}}|||[[Category:Pages using infobox settlement with possible area code list]]}}}}}}
<!-- Geocode-->
| rowclass140 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}|mergedrow|mergedtoprow}}
| label140 = [[Geocode]]
| class140 = nickname
| data140 = {{{geocode|}}}
<!-- ISO Code-->
| rowclass141 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}|mergedrow|mergedtoprow}}
| label141 = [[ISO 3166|ISO 3166 code]]
| class141 = nickname
| data141 = {{{iso_code|}}}
<!-- Vehicle registration plate-->
| rowclass142 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|mergedrow|mergedtoprow}}
| label142 = {{#if:{{{registration_plate_type|}}}|{{{registration_plate_type}}}|[[Vehicle registration plate|Vehicle registration]]}}
| data142 = {{{registration_plate|}}}
<!-- Other codes -->
| rowclass143 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|mergedrow|mergedtoprow}}
| label143 = {{{code1_name|}}}
| class143 = nickname
| data143 = {{#if:{{{code1_name|}}}|{{{code1_info|}}}}}
| rowclass144 = {{#if:{{#if:{{{postal_code_type|}}}|{{#if:{{{postal_code|}}}|1}}}}{{#if:{{{postal_code_type|}}}|{{#if:{{{postal2_code_type|}}}|{{#if:{{{postal2_code|}}}|1}}}}}}{{{area_code|}}}{{{geocode|}}}{{{iso_code|}}}|{{{registration_plate|}}}|{{{code1_name|}}}|mergedrow|mergedtoprow}}
| label144 = {{{code2_name|}}}
| class144 = nickname
| data144 = {{#if:{{{code2_name|}}}|{{{code2_info|}}}}}
<!-- ***Blank Fields (two sections)*** -->
| rowclass145 = mergedtoprow
| label145 = {{{blank_name_sec1|{{{blank_name|}}}}}}
| data145 = {{#if:{{{blank_name_sec1|{{{blank_name|}}}}}}|{{{blank_info_sec1|{{{blank_info|}}}}}}}}
| rowclass146 = mergedrow
| label146 = {{{blank1_name_sec1|{{{blank1_name|}}}}}}
| data146 = {{#if:{{{blank1_name_sec1|{{{blank1_name|}}}}}}|{{{blank1_info_sec1|{{{blank1_info|}}}}}}}}
| rowclass147 = mergedrow
| label147 = {{{blank2_name_sec1|{{{blank2_name|}}}}}}
| data147 = {{#if:{{{blank2_name_sec1|{{{blank2_name|}}}}}}|{{{blank2_info_sec1|{{{blank2_info|}}}}}}}}
| rowclass148 = mergedrow
| label148 = {{{blank3_name_sec1|{{{blank3_name|}}}}}}
| data148 = {{#if:{{{blank3_name_sec1|{{{blank3_name|}}}}}}|{{{blank3_info_sec1|{{{blank3_info|}}}}}}}}
| rowclass149 = mergedrow
| label149 = {{{blank4_name_sec1|{{{blank4_name|}}}}}}
| data149 = {{#if:{{{blank4_name_sec1|{{{blank4_name|}}}}}}|{{{blank4_info_sec1|{{{blank4_info|}}}}}}}}
| rowclass150 = mergedrow
| label150 = {{{blank5_name_sec1|{{{blank5_name|}}}}}}
| data150 = {{#if:{{{blank5_name_sec1|{{{blank5_name|}}}}}}|{{{blank5_info_sec1|{{{blank5_info|}}}}}}}}
| rowclass151 = mergedrow
| label151 = {{{blank6_name_sec1|{{{blank6_name|}}}}}}
| data151 = {{#if:{{{blank6_name_sec1|{{{blank6_name|}}}}}}|{{{blank6_info_sec1|{{{blank6_info|}}}}}}}}
| rowclass152 = mergedrow
| label152 = {{{blank7_name_sec1|{{{blank7_name|}}}}}}
| data152 = {{#if:{{{blank7_name_sec1|{{{blank7_name|}}}}}}|{{{blank7_info_sec1|{{{blank7_info|}}}}}}}}
| rowclass153 = mergedtoprow
| label153 = {{{blank_name_sec2}}}
| data153 = {{#if:{{{blank_name_sec2|}}}|{{{blank_info_sec2|}}}}}
| rowclass154 = mergedrow
| label154 = {{{blank1_name_sec2}}}
| data154 = {{#if:{{{blank1_name_sec2|}}}|{{{blank1_info_sec2|}}}}}
| rowclass155 = mergedrow
| label155 = {{{blank2_name_sec2}}}
| data155 = {{#if:{{{blank2_name_sec2|}}}|{{{blank2_info_sec2|}}}}}
| rowclass156 = mergedrow
| label156 = {{{blank3_name_sec2}}}
| data156 = {{#if:{{{blank3_name_sec2|}}}|{{{blank3_info_sec2|}}}}}
| rowclass157 = mergedrow
| label157 = {{{blank4_name_sec2}}}
| data157 = {{#if:{{{blank4_name_sec2|}}}|{{{blank4_info_sec2|}}}}}
| rowclass158 = mergedrow
| label158 = {{{blank5_name_sec2}}}
| data158 = {{#if:{{{blank5_name_sec2|}}}|{{{blank5_info_sec2|}}}}}
| rowclass159 = mergedrow
| label159 = {{{blank6_name_sec2}}}
| data159 = {{#if:{{{blank6_name_sec2|}}}|{{{blank6_info_sec2|}}}}}
| rowclass160 = mergedrow
| label160 = {{{blank7_name_sec2}}}
| data160 = {{#if:{{{blank7_name_sec2|}}}|{{{blank7_info_sec2|}}}}}
<!-- ***Website*** -->
| rowclass161 = mergedtoprow
| label161 = Website
| data161 = {{#if:{{{website|}}}|{{{website}}}}}
| class162 = maptable
| data162 = {{#if:{{{module|}}}|{{{module}}}}}
<!-- ***Footnotes*** -->
| belowrowclass = mergedtoprow
| below = {{{footnotes|}}}
}}<!-- Check for unknowns
-->{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox settlement with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox settlement]] with unknown parameter "_VALUE_"|ignoreblank=y
| alt | anthem | anthem_link | area_blank1_acre | area_blank1_dunam | area_blank1_ha | area_blank1_km2 | area_blank1_sq_mi | area_blank1_title | area_blank2_acre | area_blank2_dunam | area_blank2_ha | area_blank2_km2 | area_blank2_sq_mi | area_blank2_title | area_code | area_code_type | area_codes | area_footnotes | area_land_acre | area_land_dunam | area_land_ha | area_land_km2 | area_land_sq_mi | area_metro_acre | area_metro_dunam | area_metro_footnotes | area_metro_ha | area_metro_km2 | area_metro_sq_mi | area_note | area_rank | area_rural_acre | area_rural_dunam | area_rural_footnotes | area_rural_ha | area_rural_km2 | area_rural_sq_mi | area_total_acre | area_total_dunam | area_total_ha | area_total_km2 | area_total_sq_mi | area_urban_acre | area_urban_dunam | area_urban_footnotes | area_urban_ha | area_urban_km2 | area_urban_sq_mi | area_water_acre | area_water_dunam | area_water_ha | area_water_km2 | area_water_percent | area_water_sq_mi | blank_emblem_alt | blank_emblem_link | blank_emblem_size | blank_emblem_type | blank_info | blank_info_sec1 | blank_info_sec2 | blank_name | blank_name_sec1 | blank_name_sec2 | blank1_info | blank1_info_sec1 | blank1_info_sec2 | blank1_name | blank1_name_sec1 | blank1_name_sec2 | blank2_info | blank2_info_sec1 | blank2_info_sec2 | blank2_name | blank2_name_sec1 | blank2_name_sec2 | blank3_info | blank3_info_sec1 | blank3_info_sec2 | blank3_name | blank3_name_sec1 | blank3_name_sec2 | blank4_info | blank4_info_sec1 | blank4_info_sec2 | blank4_name | blank4_name_sec1 | blank4_name_sec2 | blank5_info | blank5_info_sec1 | blank5_info_sec2 | blank5_name | blank5_name_sec1 | blank5_name_sec2 | blank6_info | blank6_info_sec1 | blank6_info_sec2 | blank6_name | blank6_name_sec1 | blank6_name_sec2 | blank7_info | blank7_info_sec1 | blank7_info_sec2 | blank7_name | blank7_name_sec1 | blank7_name_sec2 | caption | code1_info | code1_name | code2_info | code2_name | coor_pinpoint | coor_type | coordinates | coordinates_footnotes | demographics_type1 | demographics_type2 | demographics1_footnotes | demographics1_info1 | demographics1_info10 | demographics1_info2 | demographics1_info3 | demographics1_info4 | demographics1_info5 | demographics1_info6 | demographics1_info7 | demographics1_info8 | demographics1_info9 | demographics1_title1 | demographics1_title10 | demographics1_title2 | demographics1_title3 | demographics1_title4 | demographics1_title5 | demographics1_title6 | demographics1_title7 | demographics1_title8 | demographics1_title9 | demographics2_footnotes | demographics2_info1 | demographics2_info10 | demographics2_info2 | demographics2_info3 | demographics2_info4 | demographics2_info5 | demographics2_info6 | demographics2_info7 | demographics2_info8 | demographics2_info9 | demographics2_title1 | demographics2_title10 | demographics2_title2 | demographics2_title3 | demographics2_title4 | demographics2_title5 | demographics2_title6 | demographics2_title7 | demographics2_title8 | demographics2_title9 | dimensions_footnotes | dunam_link | elevation_footnotes | elevation_ft | elevation_link | elevation_m | elevation_max_footnotes | elevation_max_ft | elevation_max_m | elevation_max_point | elevation_max_rank | elevation_min_footnotes | elevation_min_ft | elevation_min_m | elevation_min_point | elevation_min_rank | elevation_point | embed | established_date | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_title | established_title1 | established_title2 | established_title3 | established_title4 | established_title5 | established_title6 | established_title7 | etymology | extinct_date | extinct_title | flag_alt | flag_border | flag_link | flag_size | footnotes | founder | geocode | governing_body | government_footnotes | government_type | government_blank1_title | government_blank1 | government_blank2_title | government_blank2 | government_blank2_title | government_blank3 | government_blank3_title | government_blank3 | government_blank4_title | government_blank4 | government_blank5_title | government_blank5 | government_blank6_title | government_blank6 | grid_name | grid_position | image_alt | image_blank_emblem | image_caption | image_flag | image_map | image_map1 | image_seal | image_shield | image_size | image_skyline | imagesize | iso_code | leader_name | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_party | leader_title | leader_title1 | leader_title2 | leader_title3 | leader_title4 | length_km | length_mi | map_alt | map_alt1 | map_caption | map_caption1 | mapsize | mapsize1 | module | motto | motto_link | mottoes | name | named_for | native_name | native_name_lang | nickname | nickname_link | nicknames | official_name | other_name | p1 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p2 | p20 | p21 | p22 | p23 | p24 | p25 | p26 | p27 | p28 | p29 | p3 | p30 | p31 | p32 | p33 | p34 | p35 | p36 | p37 | p38 | p39 | p4 | p40 | p41 | p42 | p43 | p44 | p45 | p46 | p47 | p48 | p49 | p5 | p50 | p6 | p7 | p8 | p9 | parts | parts_style | parts_type | pop_est_as_of | pop_est_footnotes | population | population_as_of | population_blank1 | population_blank1_footnotes | population_blank1_title | population_blank2 | population_blank2_footnotes | population_blank2_title | population_demonym | population_demonyms | population_density_blank1_km2 | population_density_blank1_sq_mi | population_density_blank2_km2 | population_density_blank2_sq_mi | population_density_km2 | population_density_metro_km2 | population_density_metro_sq_mi | population_density_rank | population_density_rural_km2 | population_density_rural_sq_mi | population_density_sq_mi | population_density_urban_km2 | population_density_urban_sq_mi | population_est | population_footnotes | population_metro | population_metro_footnotes | population_note | population_rank | population_rural | population_rural_footnotes | population_total | population_urban | population_urban_footnotes | postal_code | postal_code_type | postal2_code | postal2_code_type | pushpin_image | pushpin_label | pushpin_label_position | pushpin_map | pushpin_map_alt | pushpin_map_caption | pushpin_map_caption_notsmall | pushpin_map_narrow | pushpin_mapsize | pushpin_outside | pushpin_overlay | pushpin_relief | registration_plate | registration_plate_type | seal_alt | seal_link | seal_size | seal_type | seat | seat_type | seat1 | seat1_type | seat2 | seat2_type | settlement_type | shield_alt | shield_link | shield_size | short_description | subdivision_name | subdivision_name1 | subdivision_name2 | subdivision_name3 | subdivision_name4 | subdivision_name5 | subdivision_name6 | subdivision_type | subdivision_type1 | subdivision_type2 | subdivision_type3 | subdivision_type4 | subdivision_type5 | subdivision_type6 | timezone | timezone_DST | timezone_link | timezone1 | timezone1_DST | timezone1_location | timezone2 | timezone2_DST | timezone2_location | timezone3 | timezone3_DST | timezone3_location | timezone4 | timezone4_DST | timezone4_location | timezone5 | timezone5_DST | timezone5_location | total_type | translit_lang1 | translit_lang1_info | translit_lang1_info1 | translit_lang1_info2 | translit_lang1_info3 | translit_lang1_info4 | translit_lang1_info5 | translit_lang1_info6 | translit_lang1_type | translit_lang1_type1 | translit_lang1_type2 | translit_lang1_type3 | translit_lang1_type4 | translit_lang1_type5 | translit_lang1_type6 | translit_lang2 | translit_lang2_info | translit_lang2_info1 | translit_lang2_info2 | translit_lang2_info3 | translit_lang2_info4 | translit_lang2_info5 | translit_lang2_info6 | translit_lang2_type | translit_lang2_type1 | translit_lang2_type2 | translit_lang2_type3 | translit_lang2_type4 | translit_lang2_type5 | translit_lang2_type6 | type | unit_pref | utc_offset | utc_offset_DST | utc_offset1 | utc_offset1_DST | utc_offset2 | utc_offset2_DST | utc_offset3 | utc_offset3_DST | utc_offset4 | utc_offset4_DST | utc_offset5 | utc_offset5_DST | website | width_km | width_mi
}}<!--
-->{{#invoke:Check for clobbered parameters|check
| template = Infobox settlement
| cat = {{main other|Category:Pages using infobox settlement with conflicting parameters}}
| population; population_total
| image_size; imagesize
| image_alt; alt
| image_caption; caption
}}<!-- Wikidata
-->{{#if:{{{coordinates_wikidata|}}}{{{wikidata|}}}
|[[Category:Pages using infobox settlement with the wikidata parameter]]
}}{{main other|<!-- Missing country
-->{{#if:{{{subdivision_name|}}}||[[Category:Pages using infobox settlement with missing country]]}}<!-- No map
-->{{#if:{{{pushpin_map|}}}{{{image_map|}}}{{{image_map1|}}}||[[Category:Pages using infobox settlement with no map]]}}<!-- Image_map1 without image_map
-->{{#if:{{{image_map1|}}}|{{#if:{{{image_map|}}}||[[Category:Pages using infobox settlement with image_map1 but not image_map]]}}}}<!-- No coordinates
-->{{#if:{{{coordinates|}}}||[[Category:Pages using infobox settlement with no coordinates]]}}<!--
-->{{#if:{{{type|}}}|{{#ifeq:{{{settlement_type|a}}}|{{{settlement_type|b}}}|[[Category:Pages using infobox settlement with ignored type]]|}}|}}<!-- Ignored type parameter
-->{{#if:{{{embed|}}}|[[Category:Pages using infobox settlement with embed]]}}
}}</includeonly><noinclude>
{{documentation}}
<!--Please add this template's categories to the /doc subpage, not here - thanks!-->
</noinclude>
f793562757697511bcbaf05e1a004a887ca760f8
Module:Footnotes/anchor id list
828
897
1984
2023-08-08T18:24:26Z
wikipedia>Trappist the monk
0
Scribunto
text/plain
require('strict');
local data = mw.loadData ('Module:Footnotes/anchor id list/data');
local whitelist = mw.loadData ('Module:Footnotes/whitelist');
local Lang_obj = mw.language.getContentLanguage(); -- used by template_list_add() to uppercase first letter of template name TODO: better way to do that?
local redirects_date = {
['date'] = true,
['datetomos'] = true,
['formatdate'] = true,
['isotodmymdy'] = true,
['isotomos'] = true,
}
local redirects_patent = { -- special case cs1-like templates because uses different parameters for name and date in anchor ID
['Cite patent'] = true,
['Citeref patent'] = true,
['Ref patent'] = true,
}
local redirects_sfnref = {
['sfnref'] = true,
['harvid'] = true,
}
local aliases_author = { -- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits
'last#',
'author#',
'surname#',
'author-last#',
'author#-last',
'subject#',
'host#',
}
local aliases_contributor = {
'contributor#',
'contributor-last#',
'contributor#-last',
'contributor-surname#',
'contributor#-surname',
}
local aliases_editor = {
'editor#',
'editor-last#',
'editor#-last',
'editor-surname#',
'editor#-surname',
}
local aliases_harvc_author = {
'last#',
'author#',
}
local aliases_inventor = { -- cite patent
'inventor#',
'inventor-last#',
'inventor#-last',
'inventor-surname#',
'inventor#-surname',
'invent#',
'invent-#',
}
local alias_patterns_date = { -- normal lua patterns for most cs1|2-like templates
'|%s*year%s*=%s*',
'|%s*date%s*=%s*',
'|%s*publication%-?date%s*=%s*',
'|%s*air%-?date%s*=%s*',
}
local alias_patterns_harvc_date = { -- normal lua patterns for harvc template
'|%s*anchor%-year%s*=%s*',
'|%s*year%s*=%s*',
}
local alias_patterns_patent_date = { -- normal lua patterns for cite patent templates
'|%s*issue%-date%s*=%s*',
'|%s*gdate%s*=%s*',
'|%s*publication%-date%s*=%s*',
'|%s*pubdate%s*=%s*',
}
local patterns_date = { -- normal lua patterns
-- '(%d%d%d%d–%d%d%d%d%l?)$', -- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab
'(%d%d%d%d)%D+(%d%d%d%d%l?)$', -- any range with four-digit years; with or without dab; not two captures
'^(%d%d%d%d–%d%d%l?)$', -- YYYY–YY two-digit year range; with or without dab
'^(c%. %d%d%d%d?%l?)$', -- three- or four-digit circa year; with or without dab
'(%d%d%d%d?%l?)$', -- three- or four-digit year at end of date (dmy or mdy); with or without dab
'^(%d%d%d%d?%l?)', -- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab
'^(n%.d%.%l?)$', -- 'no date' with dots; with or without dab
'^(nd%l?)$', -- 'no date' without dots; with or without dab
}
local patterns_tags = {
'<nowiki>.-</nowiki>',
'<!%-%-.-%-%->',
'<pre>.-</pre>',
'<syntaxhighlight.->.-</syntaxhighlight>',
'<source.->.-</source>', -- deprecated alias of syntaxhighlight tag
}
local template_skip = { -- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates
['Citation-attribution'] = true,
}
local Article_content;
local anchor_id_list = {}; -- exported tables
local template_list = {};
local article_whitelist = {};
--[[--------------------------< A R T I C L E _ C O N T E N T _ G E T >----------------------------------------
get article content, remove certain html-like tags and their content so that this code doesn't include any citation
templates inside the tags as valid tagets; they are not.
]]
local function article_content_get ()
if not Article_content then
Article_content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
for _, tag in ipairs (patterns_tags) do
Article_content = Article_content:gsub (tag, ''); -- remove certain html-like tags and their content
end
end
end
--[[--------------------------< S F N R E F _ G E T >----------------------------------------------------------
make an anchor id from the contents of {{sfnref}} or {{harvid}}. this function assumes that {{sfnref}} and {{harvid}}
are correctly formed.
]]
local function sfnref_get (template)
template = template:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim
local parts = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
local anchor_id = {};
if redirects_sfnref[parts[1]:lower()] then
anchor_id[1] = 'CITEREF';
else
return nil; -- not an sfnref or harvid template
end
local i = 2; -- indexer into parts{} table
local j = 2; -- indexer into anchor_id{} table which already has 'CITEREF' at [1]
while parts[i] and 7 > j do -- loop through what should be just positional parameters for names and year (2-6 four names and a date)
if not parts[i]:find ('=') then -- look for equal sign (named paraneter in a template that doesn't support named parameters)
anchor_id[j] = parts[i]; -- positional parameters are saved
j = j+1; -- bump the anchor_id{} indexer
end
i = i+ 1; -- bump the parts{} indexer
end
return table.concat (anchor_id, '');
end
--[[--------------------------< D A T E _ G E T >--------------------------------------------------------------
extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order. Does not error
check (that is left to the cs1|2 templates to do)
also gets date from |<date alias>={{date|...}}
]]
local function date_get (template, aliases)
local rvalue;
for _, pattern in ipairs (aliases) do -- spin through the date alias patterns
rvalue = tostring(template):match (pattern); -- is this |<date alias>= used (tostring() because something makes match() think template is a table)
if rvalue then
rvalue = tostring(template):match (pattern .. '(%b{})'); -- is rvalue a template?
if rvalue then
rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim
local parts = mw.text.split (rvalue, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
if redirects_date[parts[1]:lower()] then -- if parts[1] names {{date}} or redirect
rvalue = parts[2]; -- assume that date template is properly formed, first positional parameter is the date
else
return ''; -- |date= holds some other template than {{date}} or redirect
end
else
rvalue = template:match (pattern .. '([^|}]+)');
if rvalue then -- if rvalue is something
rvalue = mw.text.trim (rvalue); -- trim it
end
if not rvalue or '' == rvalue then -- if rvale was nothing or trimed to nothing
rvalue = nil; -- ensure that it is unset so we can try the next parameter in the list
end
end
if rvalue then
for _, pattern in ipairs (patterns_date) do -- spin through the recognized date formats
-- date = rvalue:match (pattern); -- attempt to extract year portion according to the pattern
local date, date2 = rvalue:match (pattern); -- attempt to extract year portion according to the pattern; <date2> gets second year in any range
if date then
if date2 then -- when a second year
date = table.concat ({date, '–', date2}); -- build a date range
end
return date; -- matched so return;
end
end
break; -- found a date but it was malformed so abandon
end
end
end
return ''; -- no date param or date param doesn't hold a recognized date; empty string for concatenation
end
--[[--------------------------< V N A M E S _ G E T >----------------------------------------------------------
extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter.
splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma-
separated names (corporate)
]]
local function vnames_get (params, vparam)
local vnames = {}; -- first four author or editor names go here
local split = {}; -- temp table to assist in decoding accept-as-witten-markup
if params[vparam] then -- test for |vauthors= or |veditor=
split = mw.text.split (params[vparam], '%s*,%s*'); -- this will separate portions of ((Black, Brown, White, an Co.))
local i = 1; -- an indexer
while split[i] do
if split[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens
local name = split[i];
i=i+1; -- bump indexer to next segment
while split[i] do
name = name .. ', ' .. split[i]; -- concatenate with previous segments
if split[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parens
break; -- and done reassembling so
end
i=i+1; -- bump indexer
end
table.insert (vnames, name); -- and add accept-as-witten name to the vnames table
else
table.insert (vnames, split[i]); -- and add name to the vnames table
end
i=i+1; -- bump indexer
if 5 == i then break; end -- limit to four names
end
for i, vname in ipairs (vnames) do
if not vname:match ('%(%(.-%)%)') then -- without accept-this-value-as-written markup
vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1'); -- extract and save surname(s)
end
end
for i, vname in ipairs (vnames) do -- repeat, this time for accept-this-value-as-written markup
vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1'); -- remove markup if present and save the whole name
end
end
return 0 ~= #vnames and table.concat (vnames) or nil -- return a concatenation of the vnames; nil else
end
--[[--------------------------< N A M E S _ G E T >------------------------------------------------------------
cs1|2 makes anchor id from contributor, author, or editor name-lists in that order
get the names from the cs1|2 template; if there are no contributor names, try author names, then try editor names.
returns concatenated names in enumeration order when successful; nil else
empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not
present) are included as empty string with all other names
]]
local function names_get (params, aliases_list)
local names = {}; -- first four author or editor names go here
local enum_alias; -- alias with '#' replaced with a digit
for enum=1, 4 do -- four names only
for i, alias in ipairs (aliases_list) do
if not names[enum] then -- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum
enum_alias = alias:gsub ('#', enum); -- replace '#' to make 'lastn'
if 1 == enum then -- because |last= and last1= are exact aliases
if params[enum_alias] then -- test |last1= first
names[enum] = params[enum_alias]; -- found so save the value assigned to |last1=
break; -- next enum
else
enum_alias = alias:gsub ('#', ''); -- replace '#' to make 'last'
if params[enum_alias] then
names[enum] = params[enum_alias]; -- found so save the value assigned to |last=
break; -- next enum
end
end
else -- here for enum 2, 3, 4
if params[enum_alias] then
names[enum] = params[enum_alias]; -- found so save the value assigned to |lastn=
break; -- next enum
end
end
end
end
end
for enum=1, 4 do -- spin through the names table and
local name = names[enum];
if not name then -- when nameholding parameter n is not present (nil)
name = ''; -- convert to empty string for concatenation
end
name = name:gsub('%(%((.-)%)%)', '%1'); -- remove accept-as-written markup if present
names[enum] = name; -- save the modified name
end
local name_str = table.concat (names); -- concatenate the names
return '' ~= name_str and name_str or nil; -- return the concatenation if not empty string; nil else
end
--[[--------------------------< T E M P L A T E _ S T R I P >--------------------------------------------------
removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the
citation or harvc template.
Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear. cs1|2 does
not see the template markup but instead sees the result of the template as html. cs1|2 strips the html which
leaves the displayed value for the anchor id. We can't do that here so, because templates aren't allowed in
parameters, we simply discard any templates found in the cs1|2 template.
this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors,
|last2= empty -> CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, & Last3 YYYY' with CITEREFLast1Last3YYYY).
]]
local function template_strip (template)
template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1); -- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace)
template = template:gsub ('%b{}', ''); -- remove any templates from the cs1|2 template
return template;
end
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
]]
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters
return argument;
end
--[=[-------------------------< W I K I L I N K _ S T R I P >--------------------------------------------------
Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and
harvc templates so here we remove any wiki markup:
[[link|label]] -> label
[[link]] -> link
]=]
local function wikilink_strip (template)
for wikilink in template:gmatch ('%[%b[]%]') do -- get a wikilink
template = template:gsub ('%[%b[]%]', '__57r1P__', 1); -- install a marker
if wikilink:match ('%[%[.-|(.-)%]%]') then
wikilink = wikilink:match ('%[%[.-|(.-)%]%]'); -- extract label from complex [[link|label]] wikilink
else
wikilink = wikilink:match ('%[%[(.-)%]%]'); -- extract link from simple [[link]] wikilinks
end
wikilink = escape_lua_magic_chars (wikilink); -- in case there are lua magic characters in wikilink
template = template:gsub ('__57r1P__', wikilink, 1); -- replace the marker with the appropriate text
end
return template;
end
--[[--------------------------< T E M P L A T E _ N A M E _ G E T >--------------------------------------------
return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace;
when the template is a sandbox the subpage portion of the template name is omitted from the returned template name
{{Cite book/new |...}} returns cite book
]]
local function template_name_get (template)
local template_name = template:match ('^{{%s*([^/|}]+)'); -- get template name; ignore subpages ~/new, ~/sandbox; parser functions
if not template_name or template_name:match ('^#') then -- parser functions, magic words don't count as templates
return nil; -- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this;
end;
template_name = template_name:gsub ('%s*$', ''); -- trim trailing whitespace; leading whitespace already removed
return Lang_obj:ucfirst (template_name); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?
end
--[[--------------------------< T E M P L A T E _ P A R A M S _ G E T >----------------------------------------
parse apart a template's parameters and store in the params table where key is the parameter's name and value is
the parameter's value; empty parameters are not saved
]]
local function template_params_get (template, params_t)
template = wikilink_strip (template); -- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id
-- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed
template = template_strip (template); -- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed
local temp_t = mw.text.split (template, '%s*|%s*'); --split on the pipe
for _, param in ipairs (temp_t) do
if param:find ('=', 1, true) then -- a named parameter?
local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)');
if v then -- there must be a value
if '' ~= v and not v:match ('^%s$') then -- skip when value is empty string or only whitespace
params_t[k] = mw.text.trim (v); -- add trimmed value else
end
end
end
end
end
--[[--------------------------< C I T E R E F _ M A K E _ H A R V C >------------------------------------------
makes anchor_id from {{harvc}} or redirects
]]
local function anchor_id_make_harvc (template)
local date = date_get (template, alias_patterns_harvc_date); -- get date; done here because might be in {{date}}; return date if valid; empty string else
local anchor_id;
local params = {}; -- table of harvc parameters
local id; -- custom anchor id for this {{harvc}} template
id = template:match ('|%s*id%s*=%s*(%b{})'); -- in case |id={{sfnref}}; done here because templates will be stripped
template_params_get (template, params); -- build a table of template parameters and their values; this strips wikilinks and templates
if id then -- when set is {{sfnref}} or {{harvid}} template
return sfnref_get (id); -- returns content of {{sfnref}} or {{harvid}}; nil else
end
if params.id then -- custom anchor for this {{harvc}} template (text)
return params.id; -- |id= value as written
end
anchor_id = names_get (params, aliases_harvc_author); -- get the harvc contributor names
if anchor_id then -- if names were gotten
return 'CITEREF' .. anchor_id .. date;
end
return nil; -- no names; no anchor_id
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ W R A P P E R >----------------------------------
for wrapper templates
inspect externally visible |ref= to decide what to do:
|ref= - empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters
|ref=harv - same as empty or missing
|ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters
|ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters
|ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?
|ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter
]]
local function anchor_id_make_wrapper (template)
local ref; -- content of |ref=
local template_name; -- name of the template
local anchor_id; -- the assembled anchor id from this template
local date;
local name_default;
local date_default;
local vol;
local params = {}; -- table of template parameters
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
if not template_name or template_skip[template_name] then
return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)
end
date = date_get (template, alias_patterns_date); -- get date; done here because might be in {{date}}
-- if '' == date then
-- date = whitelist.wrapper_templates[template_name][2] or ''; -- no externally visible date so get default date
-- end
ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template
if not ref then
if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value
ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value'
if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)
ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace
if '' == ref then -- trimming a string of whitespace makes an empty string
ref = nil; -- make empty ref same as missing ref
end
end
end
end
template_params_get (template, params); -- build a table of template parameters and their values
if whitelist.wrapper_templates[template_name][1] then -- is this wrapper a simple-default wrapper?
name_default = whitelist.wrapper_templates[template_name][1]; -- get the default names
date_default = whitelist.wrapper_templates[template_name][2]; -- get the default date
else
vol = params['volume'] or 'default';
if not whitelist.wrapper_templates[template_name][vol] then -- make sure this volume exists
vol = 'default'; -- doesn't exist, use default volume
end
name_default = whitelist.wrapper_templates[template_name][vol][1]; -- get the default names
date_default = whitelist.wrapper_templates[template_name][vol][2]; -- get the default date
end
if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty
anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names
names_get (params, aliases_author) or
vnames_get (params, 'vauthors') or -- |vauthors=
names_get (params, aliases_editor) or
vnames_get (params, 'veditors') or -- |veditors=
name_default; -- default names from whitelist
-- whitelist.wrapper_templates[template_name][1]; -- default names from whitelist
if '' == date then -- if date not provided in the template
date = date_default; -- use the default date from whitelist
end
if anchor_id then -- if names were gotten
anchor_id = 'CITEREF' .. anchor_id .. date;
end
elseif ref:match ('%b{}') then -- ref holds a template
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
elseif 'none' == ref then -- |ref=none
return nil; -- anchor id expicitly suppressed
else
anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter
end
return anchor_id; -- anchor_id text; nil else
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ C S 1 2 >----------------------------------------
for cs1|2 template and cs1-like templates
inspect |ref= to decide what to do:
|ref= - empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs
|ref=harv - get names and date from template parameters
|ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters
|ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters
|ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?
|ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter
]]
local function anchor_id_make_cs12 (template)
local ref; -- content of |ref=
local template_name; -- name of the template
local anchor_id; -- the assembled anchor id from this template
local date;
local params = {}; -- table of template parameters
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
if not template_name or template_skip[template_name] then
return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)
end
if redirects_patent[template_name] then
date = date_get (template, alias_patterns_patent_date); -- get date; done here because might be in {{date}}
else
date = date_get (template, alias_patterns_date);
end
ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template
if not ref then
if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value
ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value'
if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)
ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace
if '' == ref then -- trimming a string of whitespace makes an empty string
ref = nil; -- make empty ref same as missing ref
end
end
end
end
template_params_get (template, params); -- build a table of template parameters and their values
if not ref then -- |ref= not set, might be cite LSA which doesn't support |ref=
if 'cite lsa' == template_name then
return 'CITEREF' .. (params.last or '') .. (params.year or ''); -- cite LSA always creates an anchor id using only |last= and |year= (no aliases)
end
end
if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty
if redirects_patent[template_name] then -- if this is a cite patent template
anchor_id = names_get (params, aliases_inventor); -- inventor names only
else -- cs1|2 template
anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names
names_get (params, aliases_author) or
vnames_get (params, 'vauthors') or -- |vauthors=
names_get (params, aliases_editor) or
vnames_get (params, 'veditors'); -- |veditors=
end
if anchor_id then -- if names were gotten
anchor_id = 'CITEREF' .. anchor_id .. date;
end
elseif ref:match ('%b{}') then -- ref holds a template
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
elseif 'none' == ref and not redirects_patent[template_name] then -- |ref=none; not supported by cite patent
return nil; -- anchor id expicitly suppressed
else
anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter
end
return anchor_id; -- anchor_id text; nil else
end
--[[--------------------------< L I S T _ A D D >--------------------------------------------------------------
adds an <item> to <list> table; for anchor IDs, the boolean <encode> argument must be set true; no return value
]]
local function list_add (item, list, encode)
if item then -- if there was an item
if encode then -- for anchor IDs ...
item = mw.uri.anchorEncode (item); -- encode to remove wikimarkup, convert spaces to underscores etc
end
if not list[item] then -- if not already saved
list[item] = 1; -- save it
else -- here when this item already saved
list[item] = list[item] + 1; -- to indicate that there are multiple items
end
end
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ A N C H O R >------------------------------------
make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of
anchors it may hold.
]]
local function anchor_id_make_anchor (template, anchor_id_list)
template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name
template = wikilink_strip (template); -- strip any wikilink markup (there shouldn't be any but just in case)
local params = {};
local anchor_id;
for param in template:gmatch ('%b{}') do -- loop through the template; remove and save templates (presumed to be sfnref or harvid)
table.insert (params, param); -- save it
template = template:gsub ('%b{}', '', 1); -- remove it from source template
end
for _, t in ipairs (params) do -- spin through the templates in params
anchor_id = sfnref_get (t); -- attempt to decode {{sfnref}} and {{harvid}}
if anchor_id then -- nil when not {{sfnref}} or {{harvid}}
list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list
end
end
template = template:gsub ('|%s*|', '|'); -- when pipe follows pipe with or without white space, remove extraneous pipe
template = template:gsub ('^|', ''):gsub('|$', ''); -- remove extraneous leading and trailing pipes
params = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
for _, t in ipairs (params) do -- spin through the anchor IDs
anchor_id = mw.text.trim (t); -- trim white space
if '' ~= anchor_id then -- should always have something
list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list
end
end
end
--[[--------------------------< T E M P L A T E _ L I S T _ A D D >--------------------------------------------
makes a list of templates use in the article.
]]
local function template_list_add (template)
local template = template:match ('{{%s*(.-)[|}]'); -- keep the case of the template - this is different from template_name_get()
if template and not template:match ('^#') then -- found a template or magic word; ignore magic words
template=mw.text.trim (template); -- trim whitespace
template = Lang_obj:ucfirst (template); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?
list_add (template, template_list); -- add to list with (unused) tally
end
end
--[[--------------------------< A N C H O R _ I D _ L I S T _ M A K E >----------------------------------------
makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates
Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper,
these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that
link correctly to those wrapper templates will incorrectly show error messages. Use |ignore-err=yes in the {{harv}},
{{sfn}}, and {{harvc}} templates to supress the error message.
creates a list of templates used in the article for use with the whitelist
creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}}
]]
local function anchor_id_list_make ()
article_content_get (); -- attempt to get this article's content
if '' == Article_content then -- when there is no article content
return ''; -- no point in continuing
end
local template; -- place to hold the template that we found
local template_name;
local anchor_id; -- place to hold an anchor id as it is extracted / decoded
local find_pattern = '%f[{]{{[^{]';
local tstart, tend = Article_content:find (find_pattern); -- find the first template; do not find template variables: {{{template var|}}}
while tstart do
template = Article_content:match ('%b{}', tstart); -- get the whole template
if not template then
break; -- template is nil for some reason (last template missing closing }} for example) so declare ourselves done
end
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
template_list_add (template); -- add this template's name to the list
if data.known_templates_cs12 [template_name] then
anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template
list_add (anchor_id, anchor_id_list, true)
elseif data.known_templates_vcite [template_name] then
local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template
if ref then -- |ref={{template}}
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
list_add (anchor_id, anchor_id_list, true);
else
local params = {};
template_params_get (template, params); -- build a table of template parameters and their values
anchor_id = params['ref']; -- when both set, vcite uses value from |ref=
if not anchor_id and params['harvid'] then
anchor_id = 'CITEREF' .. params['harvid']; -- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid=
end
list_add (anchor_id, anchor_id_list, true);
end
elseif data.known_templates_harvc [template_name] then
anchor_id = anchor_id_make_harvc (template); -- extract an anchor id from this template
list_add (anchor_id, anchor_id_list, true);
elseif data.known_templates_wikicite [template_name] then
local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}}
if ref then
anchor_id = sfnref_get (ref);
elseif template:match ('|%s*ref%s*=([^|}]+)') then
anchor_id = template:match ('|%s*ref%s*=([^|}]+)'); -- plain-text
elseif template:match ('|%s*id%s*=%s*(%b{})') then
ref = template:match ('|%s*id%s*=%s*(%b{})');
anchor_id = 'Reference-' .. sfnref_get (ref);
elseif template:match ('|%s*id%s*=([^|}]+)') then
anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)'); -- plain-text
else
anchor_id = nil; -- no matches, ensure that anchor_id has no value
end
if anchor_id then
list_add (anchor_id, anchor_id_list, true);
end
elseif data.known_templates_anchor [template_name] then
anchor_id_make_anchor (template, anchor_id_list); -- extract anchor ids from this template if any
elseif data.known_templates_sfn_whitelist [template_name] then
template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name
template = mw.text.trim (template, '%s|'); -- trim leading trailing white space and pipes
template = mw.text.split (template, '%s*|%s*'); -- make a table of the template's parameters
for _, anchor_id in ipairs (template) do -- spin through this template's parameter
if '' ~= anchor_id and not article_whitelist[anchor_id] then
anchor_id = mw.uri.anchorEncode (anchor_id)
article_whitelist[anchor_id] = 1; -- add to the whitelist
end
end
elseif template_name and whitelist.wrapper_templates[template_name] then
anchor_id = anchor_id_make_wrapper (template); -- extract an anchor id from this template if possible
list_add (anchor_id, anchor_id_list, true);
elseif template_name and template_name:match ('^Cit[ea]') then -- not known, not known wrapper; last gasp, try as cs1-like
anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template if possible
list_add (anchor_id, anchor_id_list, true);
end
tstart, tend = Article_content:find (find_pattern, tend); -- search for another template; begin at end of last search
end
mw.logObject (anchor_id_list, 'anchor_id_list');
mw.logObject (template_list, 'template_list');
mw.logObject (article_whitelist, 'article_whitelist');
return anchor_id_list;
end
--[[--------------------------< E X P O R T E D _ T A B L E S >------------------------------------------------
]]
return {
anchor_id_list = anchor_id_list_make(), -- table of anchor ids available in this article
article_whitelist = article_whitelist, -- table of anchor ids with false-positive error message to be suppressed
template_list = template_list, -- table of templates used in this article
}
a827820b3af4a53f9ce6c4a2293bd7f418785903
Module:Demo
828
1337
2672
2023-08-09T09:12:21Z
w>JWBTH
0
fix handling of -{
Scribunto
text/plain
local p = {}
--creates a frame object that cannot access any of the parent's args
--unless a table containing a list keys of not to inherit is provided
function disinherit(frame, onlyTheseKeys)
local parent = frame:getParent() or frame
local orphan = parent:newChild{}
orphan.getParent = parent.getParent --returns nil
orphan.args = {}
if onlyTheseKeys then
local family = {parent, frame}
for f = 1, 2 do
for k, v in pairs(family[f] and family[f].args or {}) do
orphan.args[k] = orphan.args[k] or v
end
end
parent.args = mw.clone(orphan.args)
setmetatable(orphan.args, nil)
for _, k in ipairs(onlyTheseKeys) do
rawset(orphan.args, k, nil)
end
end
return orphan, parent
end
function getSeparator(args, default)
local br = tonumber(args.br) and ('<br>'):rep(args.br) or args.br
local sep = args.sep or br or default
return #sep > 0 and ' ' .. sep .. ' ' or sep
end
function p.get(frame, arg, passArgs)
local orphan, frame = disinherit(frame, passArgs and {arg or 1})
local code = frame.args[arg or 1] or ''
if code:match'UNIQ%-%-nowiki' then
code = mw.text.unstripNoWiki(code)
:gsub('<', '<')
:gsub('>', '>')
:gsub('"', '"')
-- Replace `}%-` with `}-` because of some server quirk leading to
-- =mw.text.unstripNoWiki(mw.getCurrentFrame():preprocess('<nowiki>}-</nowiki>'))
-- outputting `}-` instead of `}-`, while it's ok with `<nowiki>} -</nowiki>`
:gsub('}%-', '}-')
-- The same with `-{`
:gsub('%-{', '-{')
end
local kill_categories = frame.args.demo_kill_categories or frame.args.nocat
return {
source = code,
output = orphan:preprocess(code):gsub(kill_categories and '%[%[Category.-%]%]' or '', ''),
frame = frame
}
end
function p.main(frame, demoTable)
local show = demoTable or p.get(frame)
local args = show.frame.args
if show[args.result_arg] then
return show[args.result_arg]
end
local yesno = require('Module:Yesno')
args.reverse = yesno(args.reverse, false)
args.sep = getSeparator(args, '')
local source = frame:extensionTag{
name = 'syntaxhighlight',
args = {
lang = 'wikitext',
style = args.style
},
content = show.source
}
return args.reverse and
show.output .. args.sep .. source or
source .. args.sep .. show.output
end
-- Alternate function to return an inline result
function p.inline(frame, demoTable)
local show = demoTable or p.get(frame)
local args = show.frame.args
if show[args.result_arg] then
return show[args.result_arg]
end
local yesno = require('Module:Yesno')
args.reverse = yesno(args.reverse, false)
args.sep = getSeparator(args, args.reverse and '←' or '→')
local source = frame:extensionTag{
name = 'syntaxhighlight',
args = {
lang = 'wikitext',
inline = true,
style = args.style
},
content = show.source
}
return args.reverse and
show.output .. args.sep .. source or
source .. args.sep .. show.output
end
--passing of args into other module without preprocessing
function p.module(frame)
local orphan, frame = disinherit(frame, {
'demo_template',
'demo_module',
'demo_module_func',
'demo_main',
'demo_sep',
'demo_br',
'demo_result_arg',
'demo_kill_categories',
'nocat'
})
local template = frame.args.demo_template and 'Template:'..frame.args.demo_template
local demoFunc = frame.args.demo_module_func or 'main\n'
local demoModule = require('Module:' .. frame.args.demo_module)[demoFunc:match('^%s*(.-)%s*$')]
frame.args.br, frame.args.result_arg = frame.args.demo_sep or frame.args.demo_br, frame.args.demo_result_arg
local kill_categories = frame.args.demo_kill_categories or frame.args.nocat
if demoModule then
local named = {insert = function(self, ...) table.insert(self, ...) return self end}
local source = {insert = named.insert, '{{', frame.args.demo_template or frame.args.demo_module, '\n'}
if not template then
source:insert(2, '#invoke:'):insert(4, '|'):insert(5, demoFunc)
end
local insertNamed = #source + 1
for k, v in pairs(orphan.args) do
local nan, insert = type(k) ~= 'number', {v}
local target = nan and named or source
target:insert'|'
if nan then
target:insert(k):insert'=':insert'\n'
table.insert(insert, 1, #target)
end
target:insert(unpack(insert))
local nowiki = v:match('nowiki')
if nowiki or v:match('{{.-}}') then
orphan.args[k] = frame:preprocess(nowiki and mw.text.unstripNoWiki(v) or v)
end
end
source:insert'}}'
table.insert(source, insertNamed, table.concat(named))
return p.main(orphan, {
source = table.concat(source), "<>'|=~",
output = tostring(demoModule(orphan)):gsub(kill_categories and '%[%[Category.-%]%]' or '', ''),
frame = frame
})
else
return "ERROR: Invalid module function: "..demoFunc
end
end
return p
ca508cc116b29461dde7f1bd086a5d7f2a08507b
Template:Unichar
10
1609
2944
2023-08-09T17:53:55Z
w>Jonesey95
0
removing main other check from the error detection, since this template is used in a lot of template documentation pages and should be checked
wikitext
text/x-wiki
<includeonly>{{unichar/main
| hval ={{unichar/hexformat|{{{1|<#salted#>}}} }}
| hvalinput ={{{1|}}}<!--to use in errormessage-->
| na ={{{2|}}}
| ulink ={{{ulink|<#salted#>}}}
| nlink ={{{nlink|<#salted#>}}}
| image ={{{image|}}}
| cwith ={{#if:{{{cwith|}}} | {{{cwith}}} | {{#if:{{{cwith}}} || }} }}
| size ={{#if:{{{image|}}} | {{#if:{{#invoke:String|endswith|1={{lc:{{{size|}}}}}|2=px}}|{{{size}}}|10px}} | {{{size|{{#if:{{{cwith}}}|125%|150%}}}}} }}
| use ={{lc:{{{use|unicode}}}}}
| use2 ={{{use2|}}}
| dval ={{hex2dec|{{unichar/hexformat|{{{1|<#salted#>}}} }}|no}}
| html ={{#ifeq:{{{html|+}}}|{{{html|-}}}|yes|no}}
| note ={{{note|}}}
| gc ={{#if:{{{1|}}} |{{unichar/gc|{{hex2dec|{{{1|0}}}|no}}|hval={{unichar/hexformat|{{{1|<#salted#>}}} }} }} | <#not a Unicode code point#> }}
}}<!--
-->{{#invoke:check for unknown parameters|check
|unknown=[[Category: Pages using Unichar with unknown parameters|_VALUE_]]
|preview=[[Template:Unichar]] unknown parameter "_VALUE_"
|showblankpositional=1
|1 |hval |2 |na |ulink |image |cwith |size |use |use2 |nlink |html |gc |note }}</includeonly><!--
--><noinclude>{{documentation}}</noinclude>
d466c6ddb83896c3c9a47089b09eb54cd49e1bb7
Template:Template parameter usage
10
60
115
2023-08-10T01:28:48Z
wikipedia>Jonesey95
0
clarify that the linked report applies only to article space
wikitext
text/x-wiki
{{#switch:{{{label|}}}
|=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}} in articles{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
|for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
}}<noinclude>
{{documentation}}
</noinclude>
10a89e6a4bc63a1427518ea21bf94b8f623a7391
Template:Interlanguage link
10
1096
2391
2023-08-10T08:18:00Z
wikipedia>Primefac
0
add a hairspace for italics use to avoid collisions
wikitext
text/x-wiki
<includeonly>{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#if:{{{italic|}}}{{{italics|}}}|''}}[[{{{1}}}{{safesubst:#if:{{{lt|}}}|{{safesubst:!}}{{{lt}}}}}]]{{safesubst:#if:{{{italic|}}}{{{italics|}}}| ''}}{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#ifeq:{{subst:Substcheck}}|SUBST||<!--
-->{{#if:{{#if:{{{preserve|{{{display|}}}}}}|1|{{#ifexist:{{{1|}}}|{{#invoke:redirect|isRedirect|{{{1|}}}}}|1}}}}<!--
-->
|<{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}} class="noprint" style="{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|ib|font-size:100%;|sup|super|sub=|font-size:85%;}} font-style: normal; {{#if:{{{nobold|}}}|font-weight: normal;}}"> [{{#if:{{{WD|{{{wd|}}}}}}
| [[d:Special:EntityPage/{{{WD|{{{wd}}}}}}#sitelinks-wikipedia|<span title=""{{{1}}}" in other languages">{{#if:{{{short|{{{s|}}}}}}|d|Wikidata}}</span>]]<!--
-->{{main other||{{#if:{{{reasonator|}}}|<nowiki />; [https://tools.wmflabs.org/reasonator/?q={{urlencode:{{{WD|{{{wd}}}}}}}} Reasonator]}}}}
| {{Separated entries|separator=; 
| {{#if:{{{2|}}}|[[:{{{2}}}:{{#if:{{{3|}}}|{{{3}}}|{{{1}}}}}|{{{2}}}]]}}
| {{#if:{{{4|}}}|[[:{{{4}}}:{{#if:{{{5|}}}|{{{5}}}|{{{1}}}}}|{{{4}}}]]}}
| {{#if:{{{6|}}}|[[:{{{6}}}:{{#if:{{{7|}}}|{{{7}}}|{{{1}}}}}|{{{6}}}]]}}
| {{#if:{{{8|}}}{{{10|}}}{{{12|}}}|{{Separated entries|separator=; 
| {{#if:{{{8|}}}|[[:{{{8}}}:{{#if:{{{9|}}}|{{{9}}}|{{{1}}}}}|{{{8}}}]]}}
| {{#if:{{{10|}}}|[[:{{{10}}}:{{#if:{{{11|}}}|{{{11}}}|{{{1}}}}}|{{{10}}}]]}}
| {{#if:{{{12|}}}|[[:{{{12}}}:{{#if:{{{13|}}}|{{{13}}}|{{{1}}}}}|{{{12}}}]]}}
| {{#if:{{{14|}}}|[[:{{{14}}}:{{#if:{{{15|}}}|{{{15}}}|{{{1}}}}}|{{{14}}}]]}}
| {{#if:{{{16|}}}|[[:{{{16}}}:{{#if:{{{17|}}}|{{{17}}}|{{{1}}}}}|{{{16}}}]]}}
| {{#if:{{{18|}}}|[[:{{{18}}}:{{#if:{{{19|}}}|{{{19}}}|{{{1}}}}}|{{{18}}}]]}}
| {{#if:{{{20|}}}|[[:{{{20}}}:{{#if:{{{21|}}}|{{{21}}}|{{{1}}}}}|{{{20}}}]]}}
| {{#if:{{{22|}}}|[[:{{{22}}}:{{#if:{{{23|}}}|{{{23}}}|{{{1}}}}}|{{{22}}}]]}}
| {{#if:{{{24|}}}|[[:{{{24}}}:{{#if:{{{25|}}}|{{{25}}}|{{{1}}}}}|{{{24}}}]]}}
}}}}
| {{#if:{{{reasonator|}}}|[https://tools.wmflabs.org/reasonator/test/?find={{urlencode:{{{1}}}}} Reasonator search]}}
}}}}]</{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}}>
| [[Category:Interlanguage link template existing link]]<nowiki />
}}}}</includeonly>{{main other|{{#if:{{{preserve|{{{display|}}}}}}|[[Category:Interlanguage link template forcing interwiki links]]}}}}<noinclude>
{{documentation}}
</noinclude>
4c50a05de0c11d15b5feac4c7e31ab97094984bb
Module:Citation/CS1/COinS
828
895
1980
2023-08-12T19:19:02Z
wikipedia>Trappist the monk
0
sync from sandbox;
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local has_accept_as_written, is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< M A K E _ C O I N S _ T I T L E >----------------------------------------------
Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs)
Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings
of %27%27...
]]
local function make_coins_title (title, script)
title = has_accept_as_written (title);
if is_set (title) then
title = strip_apostrophe_markup (title); -- strip any apostrophe markup
else
title = ''; -- if not set, make sure title is an empty string
end
if is_set (script) then
script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string)
script = strip_apostrophe_markup (script); -- strip any apostrophe markup
else
script = ''; -- if not set, make sure script is an empty string
end
if is_set (title) and is_set (script) then
script = ' ' .. script; -- add a space before we concatenate
end
return title .. script; -- return the concatenation
end
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of Lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
]]
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other Lua magic pattern characters
return argument;
end
--[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------
Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS.
]]
local function get_coins_pages (pages)
local pattern;
if not is_set (pages) then return pages; end -- if no page numbers then we're done
while true do
pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the URL and following space(s): "[url "
if nil == pattern then break; end -- no more URLs
pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape Lua's magic pattern characters
pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible
end
pages = pages:gsub("[%[%]]", ""); -- remove the brackets
pages = pages:gsub("–", "-" ); -- replace endashes with hyphens
pages = pages:gsub("&%w+;", "-" ); -- and replace HTML entities (– etc.) with hyphens; do we need to replace numerical entities like   and the like?
return pages;
end
--[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------
There are three options for math markup rendering that depend on the editor's math preference settings. These
settings are at [[Special:Preferences#mw-prefsection-rendering]] and are
PNG images
TeX source
MathML with SVG or PNG fallback
All three are heavy with HTML and CSS which doesn't belong in the metadata.
Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings
of the last editor to save the page.
This function gets the rendered form of an equation according to the editor's preference before the page is saved. It
then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so
that the page is saved without extraneous HTML/CSS markup and with a reasonably readable text form of the equation.
When a replacement is made, this function returns true and the value with replacement; otherwise false and the initial
value. To replace multipe equations it is necessary to call this function from within a loop.
]=]
local function coins_replace_math_stripmarker (value)
local stripmarker = cfg.stripmarkers['math'];
local rendering = value:match (stripmarker); -- is there a math stripmarker
if not rendering then -- when value doesn't have a math stripmarker, abandon this test
return false, value;
end
rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error)
if rendering:match ('alt="[^"]+"') then -- if PNG math option
rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text
elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$
rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text
elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option
rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text
else
return false, value; -- had math stripmarker but not one of the three defined forms
end
return true, value:gsub (stripmarker, rendering, 1);
end
--[[--------------------------< C O I N S _ C L E A N U P >----------------------------------------------------
Cleanup parameter values for the metadata by removing or replacing invisible characters and certain HTML entities.
2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content
when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29
TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible
characters table?
]]
local function coins_cleanup (value)
local replaced = true; -- default state to get the do loop running
while replaced do -- loop until all math stripmarkers replaced
replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation
end
value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message
value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">'(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s
value = value:gsub (' ', ' '); -- replace entity with plain space
value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space
if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero-width joiner characters from indic script
value = value:gsub ('‍', ''); -- remove ‍ entities
value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen
end
value = value:gsub ('[\009\010\013 ]+', ' '); -- replace horizontal tab, line feed, carriage return with plain space
return value;
end
--[[--------------------------< C O I N S >--------------------------------------------------------------------
COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information.
]]
local function COinS(data, class)
if 'table' ~= type(data) or nil == next(data) then
return '';
end
for k, v in pairs (data) do -- spin through all of the metadata parameter values
if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed)
data[k] = coins_cleanup (v);
end
end
local ctx_ver = "Z39.88-2004";
-- treat table strictly as an array with only set values.
local OCinSoutput = setmetatable( {}, {
__newindex = function(self, key, value)
if is_set(value) then
rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } );
end
end
});
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn', 'journal', 'news', 'magazine'}) or
(in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or
('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) then -- set genre according to the type of citation template we are rendering
OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, cite ssrn
elseif 'conference' == class then
OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set)
elseif 'web' == class then
OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set)
else
OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles
end
OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only
OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles
-- these used only for periodicals
OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall
OCinSoutput["rft.quarter"] = data.Quarter; -- single digits 1->first quarter, etc.
OCinSoutput["rft.chron"] = data.Chron; -- free-form date components
OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books
OCinSoutput["rft.issue"] = data.Issue;
OCinSoutput['rft.artnum'] = data.ArticleNumber; -- {{cite journal}} only
OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata
elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier
if 'report' == class or 'techreport' == class then -- cite report and cite techreport
OCinSoutput["rft.genre"] = "report";
elseif 'conference' == class then -- cite conference when Periodical not set
OCinSoutput["rft.genre"] = "conference";
OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book)
elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then
if is_set (data.Chapter) then
OCinSoutput["rft.genre"] = "bookitem";
OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title
else
if 'map' == class or 'interview' == class then
OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview
else
OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia
end
end
else -- {'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'}
OCinSoutput["rft.genre"] = "unknown";
end
OCinSoutput["rft.btitle"] = data.Title; -- book only
OCinSoutput["rft.place"] = data.PublicationPlace; -- book only
OCinSoutput["rft.series"] = data.Series; -- book only
OCinSoutput["rft.pages"] = data.Pages; -- book, journal
OCinSoutput["rft.edition"] = data.Edition; -- book only
OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation
else -- cite thesis
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier
OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported)
OCinSoutput["rft.degree"] = data.Degree; -- dissertation only
OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation
end
-- NB. Not currently supported are "info:ofi/fmt:kev:mtx:patent", "info:ofi/fmt:kev:mtx:dc", "info:ofi/fmt:kev:mtx:sch_svc", "info:ofi/fmt:kev:mtx:ctx"
-- and now common parameters (as much as possible)
OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation
for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all?
if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end
local id = cfg.id_handlers[k].COinS;
if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry
OCinSoutput["rft_id"] = table.concat{ id, "/", v };
elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc. that have defined COinS keywords
OCinSoutput[ id ] = v;
elseif 'url' == id then -- for urls that are assembled in ~/Identifiers; |asin= and |ol=
OCinSoutput["rft_id"] = table.concat ({data.ID_list[k], "#id-name=", cfg.id_handlers[k].label});
elseif id then -- when cfg.id_handlers[k].COinS is not nil so urls created here
OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v, cfg.id_handlers[k].suffix or '', "#id-name=", cfg.id_handlers[k].label }; -- others; provide a URL and indicate identifier name as #fragment (human-readable, but transparent to browsers)
end
end
local last, first;
for k, v in ipairs( data.Authors ) do
last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki stripmarkers, non-printing or invisible characters
if k == 1 then -- for the first author name only
if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name
OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation
OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name
end
else -- for all other authors
if is_set(last) and is_set(first) then
OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation
end
-- TODO: At present we do not report "et al.". Add anything special if this condition applies?
end
end
OCinSoutput.rft_id = data.URL;
OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage };
-- TODO: Add optional extra info:
-- rfr_dat=#REVISION<version> (referrer private data)
-- ctx_id=<data.RawPage>#<ref> (identifier for the context object)
-- ctx_tim=<ts> (timestamp in format yyyy-mm-ddThh:mm:ssTZD or yyyy-mm-dd)
-- ctx_enc=info:ofi/enc:UTF-8 (character encoding)
OCinSoutput = setmetatable( OCinSoutput, nil );
-- sort with version string always first, and combine.
-- table.sort( OCinSoutput );
table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004"
return table.concat(OCinSoutput, "&");
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from selected Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
remove_wiki_link = utilities_page_ptr.remove_wiki_link;
strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup;
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
make_coins_title = make_coins_title,
get_coins_pages = get_coins_pages,
COinS = COinS,
set_selected_modules = set_selected_modules,
}
4fe549c532af319223cc4d9da2c6d33a786131c1
Module:Citation/CS1/Date validation
828
893
1976
2023-08-12T19:19:06Z
wikipedia>Trappist the monk
0
sync from sandbox;
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >--------------------------------
File-scope variables are declared here
]]
local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration?
local year_limit; -- used by is_valid_year()
--[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >----------------------------------------
returns true if:
Wikipedia start date <= accessdate < today + 2 days
Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time)
accessdate is the date provided in |access-date= at time 00:00:00 UTC
today is the current date at time 00:00:00 UTC plus 48 hours
if today is 2015-01-01T00:00:00 then
adding 24 hours gives 2015-01-02T00:00:00 – one second more than today
adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow
This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser
apparently doesn't understand non-English date month names. This function will always return false when the date
contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that
call this function with YYYY-MM-DD format dates.
]=]
local function is_valid_accessdate (accessdate)
local good1, good2;
local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates
good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand
access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix time stamp
end
if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date
return true;
else
return false; -- accessdate out of range
end
end
--[[--------------------------< G E T _ M O N T H _ N U M B E R >----------------------------------------------
returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct.
If not a valid month, returns 0
]]
local function get_month_number (month)
return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first
cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names
0; -- not a recognized month name
end
--[[--------------------------< G E T _ S E A S O N _ N U M B E R >--------------------------------------------
returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling
must be correct. If not a valid season, returns 0.
21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere”
returns 0 when <param> is not |date=
Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south
hemisphere seasons but cs1|2 has no way to make that distinction.
These additional divisions not currently supported:
25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere
29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_season_number (season, param)
if 'date' ~= param then
return 0; -- season dates only supported by |date=
end
return cfg.date_names['local'].season[season] or -- look for local names first
cfg.date_names['en'].season[season] or -- failing that, look for English names
0; -- not a recognized season name
end
--[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------
returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling
must be correct. If not a valid quarter, returns 0.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
returns 0 when <param> is not |date=
Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons and quarters.
These additional divisions not currently supported:
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_quarter_number (quarter, param)
if 'date' ~= param then
return 0; -- quarter dates only supported by |date=
end
quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char
return cfg.date_names['local'].quarter[quarter] or -- look for local names first
cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names
0; -- not a recognized quarter name
end
--[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >----------------------------------
returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct.
returns 0 when <param> is not |date=
]]
local function get_proper_name_number (name, param)
if 'date' ~= param then
return 0; -- proper-name dates only supported by |date=
end
return cfg.date_names['local'].named[name] or -- look for local names dates first
cfg.date_names['en'].named[name] or -- failing that, look for English names
0; -- not a recognized named date
end
--[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------
returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated)
]]
local function get_element_number (element, param)
local num;
local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order
for _, func in ipairs (funcs) do -- spin through the function list
num = func (element, param); -- call the function and get the returned number
if 0 ~= num then -- non-zero when valid month season quarter
return num; -- return that number
end
end
return nil; -- not valid
end
--[[--------------------------< I S _ V A L I D _ Y E A R >----------------------------------------------------
Function gets current year from the server and compares it to year from a citation parameter. Years more than one
year in the future are not acceptable.
Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable
]]
local function is_valid_year (year, param)
if not is_set (year_limit) then
year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once
end
year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison
if year and (100 > year) then -- years less than 100 not supported
return false;
end
if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date=
return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted
end
return year and (year <= year_limit) or false;
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if day is less than or equal to the number of days in month and year is no farther into the future
than next year; else returns false.
Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap
years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately
1923) dates are assumed to be Gregorian.
]]
local function is_valid_date (year, month, day, param)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future
return false;
end
month = tonumber (month); -- required for YYYY-MM-DD dates
if (2 == month) then -- if February
month_length = 28; -- then 28 days unless
if 1582 > tonumber(year) then -- Julian calendar
if 0 == (year%4) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else -- Gregorian calendar
if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
end
else
month_length = days_in_month[month];
end
if tonumber (day) > month_length then
return false;
end
return true;
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >--------------------------
Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August.
This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are
listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else
]]
local function is_valid_month_range_style (month1, month2)
if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable?
(cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable?
(cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable?
(cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable?
return true;
end
return false; -- names are mixed
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------
Check a pair of months or seasons to see if both are valid members of a month or season pair.
Month pairs are expected to be left to right, earliest to latest in time.
All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok
]]
local function is_valid_month_season_range(range_start, range_end, param)
local range_start_number = get_month_number (range_start);
local range_end_number;
if 0 == range_start_number then -- is this a month range?
range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number
range_end_number = get_season_number (range_end, param); -- get end season number
if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then
return true; -- any season pairing is accepted except when both are the same
end
return false; -- range_start and/or range_end is not a season
end
-- here when range_start is a month
range_end_number = get_month_number (range_end); -- get end month number
if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end?
is_valid_month_range_style (range_start, range_end) then -- do months have the same style?
return true; -- proper order and same style
end
return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month
end
--[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------
This function receives a table of date parts for one or two dates and an empty table reference declared in
Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is
determined to be a valid date format. The question of what to do with invalid date formats is not answered here.
The date parts in the input table are converted to an ISO 8601 conforming date string:
single whole dates: yyyy-mm-dd
month and year dates: yyyy-mm
year dates: yyyy
ranges: yyyy-mm-dd/yyyy-mm-dd
yyyy-mm/yyyy-mm
yyyy/yyyy
Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from
Julian to Proleptic Gregorian.
The input table has:
year, year2 – always present; if before 1582, ignore months and days if present
month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas
day, day2 – 0 if not provided, 1-31 for days
the output table receives:
rftdate: an ISO 8601 formatted date
rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates)
rftssn: one of four season keywords: winter, spring, summer, fall (lowercase)
rftquarter: one of four values: 1, 2, 3, 4
]]
local function make_COinS_date (input, tCOinS_date)
local date; -- one date or first date in a range
local date2 = ''; -- end of range date
input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber()
input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals
-- start temporary Julian / Gregorian calendar uncertainty detection
local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian
local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926
local day = tonumber (input.day);
if (0 ~= day) and -- day must have a value for this to be a whole date
(((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or
((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or
((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925
tCOinS_date.inter_cal_cat = true; -- set category flag true
end
-- end temporary Julian / Gregorian calendar uncertainty detection
if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date
tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only
return; -- done
end
-- here for all forms of Gregorian dates
if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date
date = input.year; -- &rft.date gets year only
if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year
date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range
end
local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case
if 0 == input.month2 then -- single season, quarter, or proper-name date
if 40 < tonumber(input.month) then
tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only
elseif 30 < tonumber(input.month) then
tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only
else
tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only
end
else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank
if input.year ~= input.year2 then -- season year – season year range or season year–year
if 0 ~= input.month2 then
tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only
end
else -- season–season year range
tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only
end
end
tCOinS_date.rftdate = tostring (date);
return; -- done
end
-- here for gregorian calendar dates
if 0 ~= input.day then
date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date
elseif 0 ~= input.month then
date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month
else
date = string.format ('%s', input.year); -- just year
end
if 0 ~= input.year2 then
if 0 ~= input.day2 then
date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date
elseif 0 ~= input.month2 then
date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month
else
date2 = string.format ('/%s', input.year2); -- just year
end
end
tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator
return;
end
--[[--------------------------< P A T T E R N S >--------------------------------------------------------------
this is the list of patterns for date formats that this module recognizes. Approximately the first half of these
patterns represent formats that might be reformatted into another format. Those that might be reformatted have
'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year),
'y' (year); second day, month, year have a '2' suffix.
These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration
because changes to this table require changes to check_date() and to reformatter() and reformat_date()
]]
local patterns = {
-- year-initial numerical year-month-day
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'},
-- month-initial: month day, year
['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'},
-- month-initial day range: month day–day, year; days are separated by endash
['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'},
-- day-initial: day month year
['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'},
-- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki
-- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'},
-- day-range-initial: day–day month year; days are separated by endash
['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'},
-- day initial month-day-range: day month - day month year; uses spaced endash
['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'},
-- month initial month-day-range: month day – month day, year; uses spaced endash
['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'},
-- day initial month-day-year-range: day month year - day month year; uses spaced endash
['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'},
-- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'},
-- these date formats cannot be converted, per se, but month name can be rendered short or long
-- month/season year - month/season year; separated by spaced endash
['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'},
-- month/season range year; months separated by endash
['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'},
-- month/season year or proper-name year; quarter year when First Quarter YYYY etc.
['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't
-- these date formats cannot be converted
['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash
['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash
['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY
}
--[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------
returns true and date value if that value has proper dmy, mdy, ymd format.
returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is
set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date.
]]
local function is_valid_embargo_date (v)
if v:match (patterns['ymd'][1]) or -- ymd
v:match (patterns['Mdy'][1]) or -- dmy
v:match (patterns['dMy'][1]) then -- mdy
return true, v;
end
return false, '9999'; -- if here not good date so return false and set embargo date to long time in future
end
--[[--------------------------< C H E C K _ D A T E >----------------------------------------------------------
Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only
allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day
months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons
must be spelled correctly. Future years beyond next year are not allowed.
If the date fails the format tests, this function returns false and does not return values for anchor_year and
COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets
its year from the year parameter if present otherwise CITEREF does not get a date value.
Inputs:
date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date)
Returns:
false if date string is not a real date; else
true, anchor_year, COinS_date
anchor_year can be used in CITEREF anchors
COinS_date is ISO 8601 format date; see make_COInS_date()
]]
local function check_date (date_string, param, tCOinS_date)
local year; -- assume that year2, months, and days are not used;
local year2 = 0; -- second year in a year range
local month = 0;
local month2 = 0; -- second month in a month range
local day = 0;
local day2 = 0; -- second day in a day range
local anchor_year;
local coins_date;
if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format
year, month, day = date_string:match (patterns['ymd'][1]);
if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar
anchor_year = year;
elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year
month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash
month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2=month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year
day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
--[[ NOT supported at en.wiki
elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed
anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
-- end NOT supported at en.wiki ]]
elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash
day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2 = month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash
day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]);
if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later;
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash
month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]);
if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash
day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
local century;
month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]);
if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
year2 = century..year2; -- add the century to year2 for comparisons
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
month = get_season_number(month, param);
elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash
month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]);
month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata
if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then
return false; -- not Summer or Winter; abandon
end
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash
month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style
month = get_month_number(month);
month2 = get_month_number(month2);
elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
else
return false;
end
elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash
month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]);
if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end
if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season
month = get_month_number(month);
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end
else
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
end
year2 = year;
elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year
month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]);
if not is_valid_year(year) then return false; end
month = get_element_number(month, param); -- get month season quarter proper-name number or nil
if not month then return false; end -- not valid whatever it is
elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash
local century;
year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003
year2 = century .. year2; -- add the century to year2 for comparisons
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters
add_prop_cat ('year-range-abbreviated'); -- add properties cat
end
elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY
anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]);
if false == is_valid_year(year) then
return false;
end
else
return false; -- date format not one of the MOS:DATE approved formats
end
if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date
if anchor_year:match ('%l$') then
return false;
end
end
if 'access-date' == param then -- test access-date here because we have numerical date parts
if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required
0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range
if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then
return false; -- return false when access-date out of bounds
end
else
return false; -- return false when access-date is a range of two dates
end
end
if 'archive-date' == param then -- test archive-date here because we have numerical date parts
if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required
0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range
return false; -- return false when archive-date is a range of two dates
end
end
local result=true; -- check whole dates for validity; assume true because not all dates will go through this test
if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date)
result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date=
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range)
result = is_valid_date (year, month, day);
result = result and is_valid_date (year, month, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range)
result = is_valid_date (year, month, day);
result = result and is_valid_date (year, month2, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range)
result = is_valid_date(year, month, day);
result = result and is_valid_date(year2, month2, day2);
end
if false == result then return false; end
if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values
make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS
end
return true, anchor_year; -- format is good and date string represents a real date
end
--[[--------------------------< D A T E S >--------------------------------------------------------------------
Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns
true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in
the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes).
Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially,
parameters with errors are added to the <error_list> sequence table as the dates are tested.
]]
local function dates(date_parameters_list, tCOinS_date, error_list)
local anchor_year; -- will return as nil if the date being tested is not |date=
local COinS_date; -- will return as nil if the date being tested is not |date=
local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999
local good_date = false;
for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(v.val) then -- if the parameter has a value
v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year=
local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested
if 'date' == k then
anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter
good_date = is_valid_year(year);
elseif 'year' == k then
good_date = is_valid_year(year);
end
elseif 'date' == k then -- if the parameter is |date=
if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date
elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date
else
good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date
end
elseif 'year' == k then -- if the parameter is |year= it should hold only a year value
if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)");
end
elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date=
good_date = check_date (v.val, k); -- go test the date
if true == good_date then -- if the date is a valid date
good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999
end
else -- any other date-holding parameter
good_date = check_date (v.val, k); -- go test the date
end
if false == good_date then -- assemble one error message so we don't add the tracking category multiple times
table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list
end
end
end
return anchor_year, embargo_date; -- and done
end
--[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------
Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value:
0 - year value does not match the year value in date
1 - (default) year value matches the year value in date or one of the year values when date contains two years
2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx)
the numeric value in <result> determines the 'output' if any from this function:
0 – adds error message to error_list sequence table
1 – adds maint cat
2 – does nothing
]]
local function year_date_check (year_string, year_origin, date_string, date_origin, error_list)
local year;
local date1;
local date2;
local result = 1; -- result of the test; assume that the test passes
year = year_string:match ('(%d%d%d%d?)');
if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx
date1 = date_string:match ('(%d%d%d%d)');
year = year_string:match ('(%d%d%d%d)');
if year ~= date1 then
result = 0; -- years don't match
else
result = 2; -- years match; but because disambiguated, don't add to maint cat
end
elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years
date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)");
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges
local century;
date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)");
date2 = century..date2; -- convert YY to YYYY
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year
date1 = date_string:match ("(%d%d%d%d?)");
if year ~= date1 then
result = 0;
end
else -- should never get here; this function called only when no other date errors
result = 0; -- no recognizable year in date
end
if 0 == result then -- year / date mismatch
table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table
elseif 1 == result then -- redundant year / date
set_message ('maint_date_year'); -- add a maint cat
end
end
--[[--------------------------< R E F O R M A T T E R >--------------------------------------------------------
reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be
reformatted. Does the grunt work for reformat_dates().
The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds:
format string used by string.format()
identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures
from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1]
Items in patterns{} have the general form:
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where:
['ymd'] is pattern_idx
patterns['ymd'][1] is the match pattern with captures for mw.ustring.match()
patterns['ymd'][2] is an indicator letter identifying the content of the first capture
patterns['ymd'][3] ... the second capture etc.
when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier
characters as indexes into t{} For the above, a ymd date is in t{} as:
t.y = first capture (year), t.m = second capture (month), t.d = third capture (day)
To reformat, this function is called with the pattern_idx that matches the current format of the date and with
format_param set to the desired format. This function loads table t{} as described and then calls string.format()
with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according
to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2..
]]
local re_formats = {
['ymd'] = { -- date format is ymd; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Mdy'] = { -- date format is Mdy; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['dMy'] = { -- date format is dMy; reformat to:
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Md-dy'] = { -- date format is Md-dy; reformat to:
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy
},
['d-dMy'] = { -- date format is d-d>y; reformat to:
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy
},
['dM-dMy'] = { -- date format is dM-dMy; reformat to:
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy
},
['Md-Mdy'] = { -- date format is Md-Mdy; reformat to:
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy
},
['dMy-dMy'] = { -- date format is dMy-dMy; reformat to:
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy
},
['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to:
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy
},
['My-My'] = { -- these for long/short reformatting
['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic
},
['M-My'] = { -- these for long/short reformatting
['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic
},
['My'] = { -- these for long/short reformatting
['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic
},
-- ['yMd'] = { -- not supported at en.wiki
-- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
-- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- },
}
local function reformatter (date, pattern_idx, format_param, mon_len)
if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- not in this set of date format patterns then not a reformattable date
end
if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd
end
if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either
format_param = 'any'; -- so format-agnostic
end
-- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line
-- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki
if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line
return; -- not a reformattable date
end
local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1]
c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures
local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..]
[patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter
[patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter;
[patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil;
[patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error
[patterns[pattern_idx][6] or 'x'] = c5;
[patterns[pattern_idx][7] or 'x'] = c6;
[patterns[pattern_idx][8] or 'x'] = c7;
};
if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd)
if t.y2 then -- for year range date formats
t.y2 = t.a; -- use the anchor year capture when reassembling the date
else -- here for single date formats (except ymd)
t.y = t.a; -- use the anchor year capture when reassembling the date
end
end
if tonumber(t.m) then -- if raw month is a number (converting from ymd)
if 's' == mon_len then -- if we are to use abbreviated month names
t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name
else
t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name
end
t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present
elseif 'ymd' == format_param then -- when converting to ymd
t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message?
if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582
return;
end
t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits
t.d = string.format ('%02d', t.d);
elseif mon_len then -- if mon_len is set to either 'short' or 'long'
for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both
if t[mon] then
t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic)
if 0 == t[mon] then return; end -- seasons and named dates can't be converted
t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length
end
end
end
local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string
t[re_formats[pattern_idx][format_param][2]], -- named captures from t{}
t[re_formats[pattern_idx][format_param][3]],
t[re_formats[pattern_idx][format_param][4]],
t[re_formats[pattern_idx][format_param][5]],
t[re_formats[pattern_idx][format_param][6]],
t[re_formats[pattern_idx][format_param][7]],
t[re_formats[pattern_idx][format_param][8]]
);
return new_date;
end
--[[-------------------------< R E F O R M A T _ D A T E S >--------------------------------------------------
Reformats existing dates into the format specified by format.
format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes
access- and archive-dates; otherwise these dates are not reformatted.
This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of
the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in
{{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate
values for |cs1-dates= are:
l - all dates are rendered with long month names
ls - publication dates use long month names; access-/archive-dates use abbreviated month names
ly - publication dates use long month names; access-/archive-dates rendered in ymd format
s - all dates are rendered with abbreviated (short) month names
sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format
y - all dates are rendered in ymd format
the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the
value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates=
empty, omitted, or invalid) where xxx shall be either of dmy or mdy.
dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the
list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function
returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter().
]]
local function reformat_dates (date_parameters_list, format)
local all = false; -- set to false to skip access- and archive-dates
local len_p = 'l'; -- default publication date length shall be long
local len_a = 'l'; -- default access-/archive-date length shall be long
local result = false;
local new_date;
if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}};
format = format:match('(%a+)%-all'); -- extract the format
all = true; -- all dates are long format dates because this keyword doesn't specify length
elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only
all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates
format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords
if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted
format = 'ymd'; -- override {{use xxx dates}}
elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then
len_a = len_p; -- in case len_a not set
end
end -- else only publication dates and they are long
for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) then -- if the parameter has a value
if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way
for pattern_idx, pattern in pairs (patterns) do
if mw.ustring.match (param_val.val, pattern[1]) then
if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date
new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting
else -- all other dates
new_date = reformatter (param_val.val, pattern_idx, format, len_p);
end
if new_date then -- set when date was reformatted
date_parameters_list[param_name].val = new_date; -- update date in date list
result = true; -- and announce that changes have been made
break;
end
end -- if
end -- for
end -- if
end -- if
end -- for
return result; -- declare boolean result and done
end
--[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >----------------------------------------
Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2
template has any date errors.
Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false.
]]
local function date_hyphen_to_dash (date_parameters_list)
local result = false;
local n;
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) and
not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western)
param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash
if 0 ~= n then
date_parameters_list[param_name].val = param_val.val; -- update the list
result = true;
end
end
end
return result; -- so we know if any hyphens were replaced
end
--[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------
Attempts to translate English date names to local-language date names using names supplied by MediaWiki's
date parser function. This is simple name-for-name replacement and may not work for all languages.
if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits.
This will also translate ymd dates.
]]
local function date_name_xlate (date_parameters_list, xlt_dig)
local xlate;
local mode; -- long or short month names
local modified = false;
local date;
local sources_t = {
{cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names
{cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names
{cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names
{cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam
{cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates
}
local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name
for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t
if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and
if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name
return date_names_t[2][date_names_t[1][month]]; -- return the local date name
end
end
end
end
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(param_val.val) then -- if the parameter has a value
date = param_val.val;
for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range)
month = mw.text.trim (month); -- this because quarterly dates contain whitespace
xlate = is_xlateable (month); -- get translate <month>; returns translation or nil
if xlate then
date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
if xlt_dig then -- shall we also translate digits?
date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits'
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
end
return modified;
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
set_message = utilities_page_ptr.set_message;
substitute = utilities_page_ptr.substitute;
wrap_style = utilities_page_ptr.wrap_style;
cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration
end
--[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------
Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message when |archive-date=
does not match the timestamp.
]]
local function archive_date_check (archive_date, archive_url_timestamp)
local good, archive_date_ts = pcall (lang_object.formatDate, lang_object, 'Ymd', archive_date); -- |archive-date= value to YYYYMMDD format
-- local archive_date_ts = lang_object:formatDate ('Ymd', archive_date); -- |archive-date= value to YYYYMMDD format
if good then
if not archive_url_timestamp:find (archive_date_ts, 1, true) then -- plain text find; begin search at position 1
set_message ('err_archive_date_url_ts_mismatch'); -- emit an error message
end
end
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return { -- return exported functions
archive_date_check = archive_date_check,
date_hyphen_to_dash = date_hyphen_to_dash,
date_name_xlate = date_name_xlate,
dates = dates,
reformat_dates = reformat_dates,
set_selected_modules = set_selected_modules,
year_date_check = year_date_check,
}
91dea3f3d4d1691cec7700aac0057c873554b8c1
Module:Citation/CS1/Whitelist
828
886
1962
2023-08-12T19:19:08Z
wikipedia>Trappist the monk
0
sync from sandbox;
Scribunto
text/plain
--[[--------------------------< S U P P O R T E D P A R A M E T E R S >--------------------------------------
Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
true - these parameters are valid and supported parameters
false - these parameters are deprecated but still supported
tracked - these parameters are valid and supported parameters tracked in an eponymous properties category
nil - these parameters are no longer supported. remove entirely
]]
local basic_arguments_t = {
['accessdate'] = true,
['access-date'] = true,
['agency'] = true,
['archivedate'] = true,
['archive-date'] = true,
['archive-format'] = true,
['archiveurl'] = true,
['archive-url'] = true,
['article'] = true,
['article-format'] = true,
['article-number'] = true, -- {{cite journal}}, {{cite conference}}; {{citation}} when |journal= has a value
['article-url'] = true,
['article-url-access'] = true,
['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['asin'] = true,
['ASIN'] = true,
['asin-tld'] = true,
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['authorlink'] = true,
['author-link'] = true,
['author-mask'] = true,
['authors'] = true,
['bibcode'] = true,
['bibcode-access'] = true,
['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier
['chapter'] = true,
['chapter-format'] = true,
['chapter-url'] = true,
['chapter-url-access'] = true,
['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier
['collaboration'] = true,
['contribution'] = true,
['contribution-format'] = true,
['contribution-url'] = true,
['contribution-url-access'] = true,
['contributor'] = true,
['contributor-first'] = true,
['contributor-given'] = true,
['contributor-last'] = true,
['contributor-surname'] = true,
['contributor-link'] = true,
['contributor-mask'] = true,
['date'] = true,
['department'] = true,
['df'] = true,
['dictionary'] = true,
['display-authors'] = true,
['display-contributors'] = true,
['display-editors'] = true,
['display-interviewers'] = true,
['display-subjects'] = true,
['display-translators'] = true,
['doi'] = true,
['DOI'] = true,
['doi-access'] = true,
['doi-broken-date'] = true,
['edition'] = true,
['editor'] = true,
['editor-first'] = true,
['editor-given'] = true,
['editor-last'] = true,
['editor-surname'] = true,
['editor-link'] = true,
['editor-mask'] = true,
['eissn'] = true,
['EISSN'] = true,
['encyclopaedia'] = true,
['encyclopedia'] = true,
['entry'] = true,
['entry-format'] = true,
['entry-url'] = true,
['entry-url-access'] = true,
['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['first'] = true,
['format'] = true,
['given'] = true,
['hdl'] = true,
['HDL'] = true,
['hdl-access'] = true,
['host'] = true, -- unique to certain templates?
['id'] = true,
['ID'] = true,
['institution'] = true, -- constrain to cite thesis?
['interviewer'] = true,
['interviewer-first'] = true,
['interviewer-given'] = true,
['interviewer-last'] = true,
['interviewer-surname'] = true,
['interviewer-link'] = true,
['interviewer-mask'] = true,
['isbn'] = true,
['ISBN'] = true,
['ismn'] = true,
['ISMN'] = true,
['issn'] = true,
['ISSN'] = true,
['issue'] = true,
['jfm'] = true,
['JFM'] = true,
['journal'] = true,
['jstor'] = true,
['JSTOR'] = true,
['jstor-access'] = true,
['lang'] = true,
['language'] = true,
['last'] = true,
['lccn'] = true,
['LCCN'] = true,
['location'] = true,
['magazine'] = true,
['medium'] = true,
['medrxiv'] = true, -- cite medrxiv; here because allowed in cite ... as identifier
['minutes'] = true, -- constrain to cite AV media and podcast?
['mode'] = true,
['mr'] = true,
['MR'] = true,
['name-list-style'] = true,
['newspaper'] = true,
['no-pp'] = true,
['no-tracking'] = true,
['number'] = true,
['oclc'] = true,
['OCLC'] = true,
['ol'] = true,
['OL'] = true,
['ol-access'] = true,
['orig-date'] = true,
['origyear'] = true,
['orig-year'] = true,
['osti'] = true,
['OSTI'] = true,
['osti-access'] = true,
['others'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['people'] = true,
['periodical'] = true,
['place'] = true,
['pmc'] = true,
['PMC'] = true,
['pmc-embargo-date'] = true,
['pmid'] = true,
['PMID'] = true,
['postscript'] = true,
['pp'] = true,
['publication-date'] = true,
['publication-place'] = true,
['publisher'] = true,
['quotation'] = true,
['quote'] = true,
['quote-page'] = true,
['quote-pages'] = true,
['ref'] = true,
['rfc'] = true,
['RFC'] = true,
['sbn'] = true,
['SBN'] = true,
['scale'] = true,
['script-article'] = true,
['script-chapter'] = true,
['script-contribution'] = true,
['script-entry'] = true,
['script-journal'] = true,
['script-magazine'] = true,
['script-newspaper'] = true,
['script-periodical'] = true,
['script-quote'] = true,
['script-section'] = true,
['script-title'] = true,
['script-website'] = true,
['script-work'] = true,
['section'] = true,
['section-format'] = true,
['section-url'] = true,
['section-url-access'] = true,
['series'] = true,
['ssrn'] = true, -- cite ssrn; these three here because allowed in cite ... as identifier
['SSRN'] = true,
['ssrn-access'] = true,
['subject'] = true,
['subject-first'] = true,
['subject-given'] = true,
['subject-last'] = true,
['subject-link'] = true,
['subject-mask'] = true,
['subject-surname'] = true,
['surname'] = true,
['s2cid'] = true,
['S2CID'] = true,
['s2cid-access'] = true,
['template-doc-demo'] = true,
['time'] = true, -- constrain to cite av media and podcast?
['time-caption'] = true, -- constrain to cite av media and podcast?
['title'] = true,
['title-link'] = true,
['title-note'] = true,
['translator'] = true,
['translator-first'] = true,
['translator-given'] = true,
['translator-last'] = true,
['translator-surname'] = true,
['translator-link'] = true,
['translator-mask'] = true,
['trans-article'] = true,
['trans-chapter'] = true,
['trans-contribution'] = true,
['trans-entry'] = true,
['trans-journal'] = true,
['trans-magazine'] = true,
['trans-newspaper'] = true,
['trans-periodical'] = true,
['trans-quote'] = true,
['trans-section'] = true,
['trans-title'] = true,
['trans-website'] = true,
['trans-work'] = true,
['type'] = true,
['url'] = true,
['URL'] = true,
['url-access'] = true,
['url-status'] = true,
['vauthors'] = true,
['veditors'] = true,
['version'] = true,
['via'] = true,
['volume'] = true,
['website'] = true,
['work'] = true,
['year'] = true,
['zbl'] = true,
['ZBL'] = true,
}
local numbered_arguments_t = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['contributor#'] = true,
['contributor-first#'] = true,
['contributor#-first'] = true,
['contributor-given#'] = true,
['contributor#-given'] = true,
['contributor-last#'] = true,
['contributor#-last'] = true,
['contributor-surname#'] = true,
['contributor#-surname'] = true,
['contributor-link#'] = true,
['contributor#-link'] = true,
['contributor-mask#'] = true,
['contributor#-mask'] = true,
['editor#'] = true,
['editor-first#'] = true,
['editor#-first'] = true,
['editor-given#'] = true,
['editor#-given'] = true,
['editor-last#'] = true,
['editor#-last'] = true,
['editor-surname#'] = true,
['editor#-surname'] = true,
['editor-link#'] = true,
['editor#-link'] = true,
['editor-mask#'] = true,
['editor#-mask'] = true,
['first#'] = true,
['given#'] = true,
['host#'] = true,
['interviewer#'] = true,
['interviewer-first#'] = true,
['interviewer#-first'] = true,
['interviewer-given#'] = true,
['interviewer#-given'] = true,
['interviewer-last#'] = true,
['interviewer#-last'] = true,
['interviewer-surname#'] = true,
['interviewer#-surname'] = true,
['interviewer-link#'] = true,
['interviewer#-link'] = true,
['interviewer-mask#'] = true,
['interviewer#-mask'] = true,
['last#'] = true,
['subject#'] = true,
['subject-first#'] = true,
['subject#-first'] = true,
['subject-given#'] = true,
['subject#-given'] = true,
['subject-last#'] = true,
['subject#-last'] = true,
['subject-link#'] = true,
['subject#-link'] = true,
['subject-mask#'] = true,
['subject#-mask'] = true,
['subject-surname#'] = true,
['subject#-surname'] = true,
['surname#'] = true,
['translator#'] = true,
['translator-first#'] = true,
['translator#-first'] = true,
['translator-given#'] = true,
['translator#-given'] = true,
['translator-last#'] = true,
['translator#-last'] = true,
['translator-surname#'] = true,
['translator#-surname'] = true,
['translator-link#'] = true,
['translator#-link'] = true,
['translator-mask#'] = true,
['translator#-mask'] = true,
}
--[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >--------------------
Cite arXiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn are preprint templates that use the limited
set of parameters defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are
supplemented with a template-specific list of parameters that are required by the particular template and may be
exclusive to one of the preprint templates. Some of these parameters may also be available to the general cs1|2
templates.
Same conventions for true/false/tracked/nil as above.
]]
local preprint_arguments_t = {
arxiv = {
['arxiv'] = true, -- cite arxiv and arxiv identifiers
['class'] = true,
['eprint'] = true, -- cite arxiv and arxiv identifiers
},
biorxiv = {
['biorxiv'] = true,
},
citeseerx = {
['citeseerx'] = true,
},
medrxiv = {
['medrxiv'] = true,
},
ssrn = {
['ssrn'] = true,
['SSRN'] = true,
['ssrn-access'] = true,
},
}
--[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >----------------------
cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn templates are preprint templates so are
allowed only a limited subset of parameters allowed to all other cs1|2 templates. The limited subset is defined
here.
This list of parameters also used by {{cite document}}
Same conventions for true/false/tracked/nil as above.
]]
local limited_basic_arguments_t = {
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['author-link'] = true,
['authorlink'] = true,
['author-mask'] = true,
['authors'] = true,
['collaboration'] = true,
['date'] = true,
['df'] = true,
['display-authors'] = true,
['first'] = true,
['given'] = true,
['language'] = true,
['last'] = true,
['mode'] = true,
['name-list-style'] = true,
['no-tracking'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['postscript'] = true,
['pp'] = true,
['quotation'] = true,
['quote'] = true,
['ref'] = true,
['surname'] = true,
['template-doc-demo'] = true,
['title'] = true,
['trans-title'] = true,
['vauthors'] = true,
['year'] = true,
}
local limited_numbered_arguments_t = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['first#'] = true,
['given#'] = true,
['last#'] = true,
['surname#'] = true,
}
--[[--------------------------< U N I Q U E _ A R G U M E N T S >----------------------------------------------
Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this
table are the template's CitationClass parameter value
Same conventions for true/false/tracked/nil as above.
]]
local unique_arguments_t = {
['audio-visual'] = {
['transcript'] = true,
['transcript-format'] = true,
['transcript-url'] = true,
},
conference = {
['book-title'] = true,
['conference'] = true,
['conference-format'] = true,
['conference-url'] = true,
['event'] = true,
},
episode = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episode-link'] = true, -- alias of |title-link=
['network'] = true,
['season'] = true,
['series-link'] = true,
['series-no'] = true,
['series-number'] = true,
['station'] = true,
['transcript'] = true,
['transcript-format'] = true,
['transcript-url'] = true,
},
mailinglist = {
['mailing-list'] = true,
},
map = {
['cartography'] = true,
['inset'] = true,
['map'] = true,
['map-format'] = true,
['map-url'] = true,
['map-url-access'] = true,
['script-map'] = true,
['sections'] = true,
['sheet'] = true,
['sheets'] = true,
['trans-map'] = true,
},
newsgroup = {
['message-id'] = true,
['newsgroup'] = true,
},
report = {
['docket'] = true,
},
serial = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episode'] = true, -- cite serial only TODO: make available to cite episode?
['episode-link'] = true, -- alias of |title-link=
['network'] = true,
['series-link'] = true,
['station'] = true,
},
speech = {
['conference'] = true,
['conference-format'] = true,
['conference-url'] = true,
['event'] = true,
},
thesis = {
['degree'] = true,
['docket'] = true,
},
}
--[[--------------------------< C I T E _ D O C U M E N T >----------------------------------------------------
Special case for cite document. This template takes the limited basic and limited enumerated parameters plus
others that are apply only to standalone published sources that cannot be cited any other way; no url, book,
periodical, etc parameters; limited support for name lists and named identifiers.
when validating parameters in {{cite document}} templates, the basic and
]]
local document_arguments_t = {
['bibcode'] = true,
['bibcode-access'] = true,
['doi'] = true,
['DOI'] = true,
['doi-access'] = true,
['doi-broken-date'] = true,
['hdl'] = true,
['HDL'] = true,
['hdl-access'] = true,
['id'] = true,
['ID'] = true,
['jfm'] = true,
['JFM'] = true,
['lang'] = true,
['location'] = true,
['mr'] = true,
['MR'] = true,
['no-pp'] = true,
['orig-date'] = true,
['origyear'] = true,
['orig-year'] = true,
['osti'] = true,
['OSTI'] = true,
['osti-access'] = true,
['place'] = true,
['publisher'] = true,
['quote-page'] = true,
['quote-pages'] = true,
['script-quote'] = true,
['script-title'] = true,
['title-link'] = true,
['translator'] = true,
['translator-first'] = true,
['translator-given'] = true,
['translator-last'] = true,
['translator-surname'] = true,
['translator-link'] = true,
['translator-mask'] = true,
['trans-quote'] = true,
['type'] = true,
['zbl'] = true,
['ZBL'] = true,
}
local document_numbered_arguments_t = {
['translator#'] = true,
['translator-first#'] = true,
['translator#-first'] = true,
['translator-given#'] = true,
['translator#-given'] = true,
['translator-last#'] = true,
['translator#-last'] = true,
['translator-surname#'] = true,
['translator#-surname'] = true,
['translator-link#'] = true,
['translator#-link'] = true,
['translator-mask#'] = true,
['translator#-mask'] = true,
}
--[[--------------------------< L I S T _ C O M B I N E >------------------------------------------------------
makes one table from a list of tables. <lists_t> is a sequence of tables to be combined
]]
local function list_combine (lists_t)
local out_t = {};
for _, list_t in ipairs (lists_t) do -- for each list in <lists_t>
for k, v in pairs (list_t) do -- extract each k/v pair
out_t[k] = v; -- add to <out_t>
end
end
return out_t; -- and done
end
--[[--------------------------< T E M P L A T E _ L I S T _ G E T >--------------------------------------------
gets a list of the templates from table t
]]
local function template_list_get (t)
local out_t = {}; -- a table for output
for k, _ in pairs (t) do -- spin through the table and collect the keys
table.insert (out_t, k) -- add each key to the output table
end
return out_t; -- and done
end
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
preprint_arguments_t = preprint_arguments_t,
preprint_template_list_t = template_list_get (preprint_arguments_t), -- make a template list from preprint_arguments{} table
unique_arguments_t = unique_arguments_t,
unique_param_template_list_t = template_list_get (unique_arguments_t), -- make a template list from unique_arguments{} table
document_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t, document_arguments_t, document_numbered_arguments_t});
common_parameters_t = list_combine ({basic_arguments_t, numbered_arguments_t});
limited_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t});
};
bd347271e3380cb17f22c0e3924982798e9adc07
Template:Infobox writer
10
1142
2468
2023-08-14T18:21:07Z
w>Neveselbert
0
add/copy from [[Template:Infobox person]]
wikitext
text/x-wiki
{{Infobox
| bodyclass = vcard
| bodystyle = {{#if:{{{box_width|}}} |width:{{{box_width}}};}}
| child = {{lc:{{{embed}}}}}
| title = {{#ifeq:{{lc:{{{embed}}}}}|yes|'''Writing career'''}}
| abovestyle = font-size:125%;
| above =
{{#ifeq:{{lc:{{{embed}}}}}|yes||
{{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}} |<div class="honorific-prefix" style="display:inline;font-size: 77%; font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div><br/>}}<!--
--><includeonly><div style="display:inline;" class="fn">{{{name|{{PAGENAMEBASE}}}}}</div></includeonly><!--
-->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}} |<br/><div class="honorific-suffix" style="display:inline;font-size: 77%; font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}}<!--
-->}}
| image = {{#invoke:InfoboxImage|InfoboxImage |image={{{image|}}} |size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|300|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}}}x200px|{{{image size|{{{image_size|{{{imagesize|}}}}}}}}}}}|sizedefault=frameless |upright={{{image_upright|1}}} |alt={{{alt|}}} |title={{{caption|}}} |suppressplaceholder=yes}}
| caption = {{{caption|}}}
| captionstyle = line-height:1.4em;
| labelstyle = line-height:1.2em; padding-right:0.65em;
| datastyle = line-height:1.4em;
| label1 = Native name
| data1 = {{#if:{{{native_name|}}} |<div class="nickname" {{#if:{{{native_name_lang|}}}|lang="{{{native_name_lang}}}"}}>{{{native_name}}}</div>}}
| label2 = Born
| data2 = {{br separated entries
| 1={{{birth_name|}}}
| 2={{#switch:{{lc:{{{birth_date|}}}}}
|? |?? |??? |???? |19? |19?? |18?? |17?? |u |unk |unknown = {{abbr|DOB|Date of birth}} unknown
| {{{birth_date|}}}
}}
| 3={{{birth_place|}}}
}}
| label3 = Died
| data3 = {{br separated entries
| 1={{#switch:{{lc:{{{death_date|}}}}}
|? |?? |??? |???? |19? |19?? |18?? |17?? |u |unk |unknown = {{abbr|DOD|Date of death}} unknown
| {{{death_date|}}}
}}
| 2={{{death_place|}}}
}}
| label4 = Resting place
| data4 = {{br separated entries|{{{resting_place|}}} |{{{resting_place_coordinates|}}} }}
| label5 = Pen name
| class5 = nickname
| data5 = {{{penname|{{{pseudonym|}}}}}}
| label6 = Nickname
| class6 = nickname
| data6 = {{{nickname|}}}
| label7 = Occupation
| class7 = role
| data7 = {{{occupation|}}}
| label8 = Language
| data8 = {{{language|}}}
| label10 = Nationality
| class10 = category
| data10 = {{{nationality|}}}
| label11 = Citizenship
| data11 = {{{citizenship|}}}
| label12 = Education
| data12 = {{{education|}}}
| label13 = Alma mater
| data13 = {{{alma_mater|}}}
| label15 = Period
| data15 = {{{period|}}}
| label16 = Genre{{#if:{{{genres|}}}|s}}
| class16 = category
| data16 = {{#if:{{{genres|}}}|{{{genres}}}|{{{genre|}}}}}
| label17 = Subject{{#if:{{{subjects|}}}|s}}
| data17 = {{#if:{{{subjects|}}}|{{{subjects}}}|{{{subject|}}}}}
| label18 = Literary movement
| data18 = {{{movement|}}}
| label21 = Years active
| data21 = {{{years active|{{{years_active|{{{yearsactive|}}}}}}}}}
| label22 = Employer{{Pluralize from text|{{{employer|}}}|likely=(s)|plural=s}}
| data22 = {{{employer|}}}{{main other|{{Pluralize from text| {{{employer|}}}|likely=}}}}
| class22 = org
| label29 = Notable work{{#if:{{{notableworks|{{{notable_works|}}}}}}|s}}
| data29 = {{#if:{{{notableworks|{{{notable_works|}}}}}}|{{{notableworks|{{{notable_works|}}}}}}|{{{notablework|}}}}}
| label30 = Notable awards
| data30 = {{{awards|}}}
| label32 = Spouse{{#if:{{{spouses|}}}|s}}
| data32 = {{#if:{{{spouses|}}}|{{{spouses}}}|{{{spouse|}}}}}
| label33 = Partner{{#if:{{{partners|}}}|s}}
| data33 = {{#if:{{{partners|}}}|{{{partners}}}|{{{partner|}}}}}
| label34 = Children
| data34 = {{{children|}}}
| label35 = Parent{{#if:{{{parents|}}}|s}}
| data35 = {{#if:{{{parents|}}}|{{{parents}}}|{{{parent|}}}}}
| label36 = Relatives
| data36 = {{{relatives|{{{relations|}}}}}}
|header39 = {{#if:{{{signature|}}}|{{if empty|{{{signature_type|}}}|Signature}}}}
| data40 = {{#invoke:InfoboxImage|InfoboxImage|image={{{signature|}}}|size={{{signature_size|}}}|sizedefault=150px|upright=0.72|alt={{{signature_alt|}}}}}
| data41 = {{{misc|{{{module|}}}}}}
| header42 = {{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|Website}}
| data43 = {{{website|{{{homepage|{{{URL|}}}}}}}}}
| data44 = {{#if:{{{portaldisp|}}} |<hr/>'''{{portal-inline|Literature|size=tiny}}'''}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Infobox writer with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox writer]] with unknown parameter "_VALUE_"|ignoreblank=y| alma_mater | alt | awards | birth_date | birth_name | birth_place | box_width | caption | children | citizenship | death_date | death_place | education | embed | employer | genre | genres | homepage | honorific prefix | honorific suffix | honorific_prefix | honorific_suffix | honorific-prefix | honorific-suffix | image | image caption | image size | image_caption | image_size | image_upright | imagesize | landscape | language | misc | module | movement | name | nationality | native_name | native_name_lang | nickname | notablework | notableworks | notable_works | occupation | partner | partners | penname | period | portaldisp | pronunciation | pseudonym | relations | relatives | resting_place | resting_place_coordinates | signature | signature_alt | signature_size | signature_type | spouse | spouses | subject | subjects | URL | website | years active | years_active | yearsactive | parent | parents}}{{main other|
{{#if:{{{pronunciation|}}} |[[Category:Biography template using pronunciation]]
}}{{#if:{{{website|{{{homepage|{{{URL|}}}}}}}}}|{{#switch:{{str left|{{{website|{{{homepage|{{{URL|}}}}}}}}}|1}}|<=|[=|#default=[[Category:Biography template using bare URL in website parameter]]}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
edcd937c2868da8b8be16170de5a9c0966b3e2f1
Template:Infobox writer/doc
10
1383
2718
2023-08-14T18:36:09Z
w>Neveselbert
0
/* TemplateData */ punc
wikitext
text/x-wiki
{{Documentation subpage}}
{{Person infobox header}}
{{high-use}}
{{auto short description}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
'''Infobox writer''' may be used to summarize information about a person who is a writer/author (includes screenwriters).
If the writer-specific fields here are not needed, consider using the more general {{Tl|Infobox person}}; other infoboxes there can be found in [[:Category:People and person infobox templates]].
This template may also be used as a module (or sub-template) of {{Tl|Infobox person}}; see [[Wikipedia:WikiProject Infoboxes/embed|WikiProject Infoboxes/embed]] for guidance on such usage.
== Syntax ==
{{Parameter names example
|embed |honorific_prefix |name |honorific_suffix |image |image_size={{{image_size}}} |image_upright |landscape |alt |caption |native_name |native_name_lang |pseudonym |birth_name |birth_date |birth_place |death_date |death_place |resting_place |occupation |language |nationality |citizenship |education |alma_mater | |period |genre={{{genre}}} or {{{genres}}} |subject={{{subject}}} or {{{subjects}}} |movement |notable_works={{{notable_works}}} |spouse={{{spouse}}} or {{{spouses}}} |partner={{{partner}}} or {{{partners}}} |children |relatives |awards |signature={{{signature}}}<br /> |signature_alt |signature_size |signature_type |years_active |module |website={{{website}}} |portaldisp
}}
The infobox may be added by pasting the template as shown below into an article. All fields are optional. Any unused parameter names can be left blank or omitted.
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox writer
| embed =
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_size =
| image_upright =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| native_name =
| native_name_lang =
| pseudonym =
| birth_name = <!-- only use if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) -->
| death_place =
| resting_place =
| occupation =
| language =
| nationality = <!-- use only when necessary per [[WP:INFONAT]] -->
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| education =
| alma_mater =
| period =
| genre = <!-- or: | genres = -->
| subject = <!-- or: | subjects = -->
| movement =
| notable_works =
| spouse = <!-- or: | spouses = -->
| partner = <!-- or: | partners = -->
| children =
| relatives =
| awards =
| signature =
| signature_alt =
| signature_size =
| signature_type =
| years_active =
| module =
| website = <!-- {{URL|example.org}} -->
| portaldisp = <!-- "on", "yes", "true", etc.; or omit -->
}}
</syntaxhighlight>
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox writer
| embed =
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_size =
| image_upright =
| landscape =
| alt =
| caption =
| native_name =
| native_name_lang =
| pseudonym =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| resting_place =
| occupation =
| language =
| nationality =
| citizenship =
| education =
| alma_mater =
| period =
| genre =
| subject =
| movement =
| notable_works =
| spouse =
| partner =
| children =
| relatives =
| awards =
| signature =
| signature_alt =
| signature_size =
| signature_type =
| years_active =
| module =
| website =
| portaldisp =
}}
</syntaxhighlight>
{{clear}}
== Parameters ==
Please remove any parameters from an article's infobox that are unlikely to be used.
All parameters are optional.
Unless otherwise specified, if a parameter has multiple values, they should be comma-separated using the {{Tlx|Cslist}} template:
: {{Para|language|{{Tlx|Cslist|French|Spanish|English}}}}
which produces:
: |language={{Cslist|French|Spanish|English}}
If any of the individual values contain commas already, add {{Para|semi|true}} to use semi-colons as separators:
: {{Para|pseudonym|{{Tlx|Cslist|Smith, Bob|DaveyJones|Adams, Fred|semi{{=}}true}}}}
which produces:
: |pseudonym={{Cslist|Smith, Bob|DaveyJones|Adams, Fred|semi=true}}
For more information, see [[Template:Infobox person#Inline lists]].
{| class="wikitable"
! style="text-align: left" | Parameter
! style="text-align: left" | Explanation
|-
| '''name'''
| Insert name of the person. Use the common name, typically name of article. If omitted it defaults to the name of the article; if present but blank, the header is omitted. Note: '''<ins>Do not</ins>''' add icons or other images.
|-
| '''embed '''
| Set to "yes" if embedded in another infobox template.
|-
| '''honorific_prefix'''
| Honorifics that go before the name, e.g. "Lady", "Sir"
|-
| '''honorific_suffix'''
| Honorifics that go after the name, e.g. "MBE"
|-
| '''image'''
| Insert image name. Use only the file name such as {{highlight|abc.jpg}}, {{highlight|xyz.png}}, {{highlight|123.gif}}, etc. Do not use syntax such as <nowiki>[[File:abc.jpg]]</nowiki> or <nowiki>[[File:abc.jpg|200px]]</nowiki><br />
Only free-content images are allowed for depicting living people. Non-free and "fair use" images, e.g., promo photos, CD/DVD covers, posters, screen captures, etc., will be deleted. See [[WP:NONFREE]].
|-
| '''image_upright'''
| Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).
|-
| '''image_size'''
| Size to display image: ''200px'' (set width), or ''200x300px'' (max width & max height). This defaults to 200px if empty or omitted.
|-
| '''landscape'''
| Set to "yes" when using wide, short images. The image height (rather than width) will be limited to 200 pixels.
|-
| '''alt'''
| The [[alt attribute]] for the image, for readers who cannot see the image. See [[WP:ALT]].
|-
| '''caption'''
| Caption for the image. Try to include the date the image was created.
|-
| '''native_name'''
| Name in local language. Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''native_name_lang'''
| A [[language tag]], e.g. "fr" for French. If more than one, use {{tl|lang}} inside native_name instead
|-
| '''pseudonym'''
| Any of the person's aliases or pen names. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]).
|-
| '''nickname'''
| Nickname(s) other than pen names.
|-
| '''birth_name'''
| Insert person's name at birth (or christening if name at birth is unavailable).
|-
| '''birth_date'''
| Insert the person's birth date if known as: month day, year or day month year as appropriate.
For a living person consider using:
:{{tlx|Birth date and age|year of birth|month of birth|day of birth}}
Otherwise use:
:{{tlx|Birth date|year of birth|month of birth|day of birth}}.
In either case, add {{para|df|yes}} to show date as [[WP:DATES#Full date formatting|day before month]]; otherwise format is month before day.
|-
| '''birth_place'''
| Insert the person's place of birth if known as: town, city, state, country. Note: '''<ins>Do not</ins>''' add flag icons to the birthplace. See: [[Wikipedia:Manual of Style (flags)]].
|-
| '''death_date'''
| Note: Using this field will also change the background display color of the name at the top of the infobox to <span style="background:silver">silver</span>.
If the person is still living, leave this parameter blank.
Insert the person's date of death if known as: month day, year or day month year as appropriate.
When the full birth date and death date are known, use the following:
:{{Tlx|Death date and age|yr died|mo died|da died|yr born|mo born|da born}}
Add {{para|df|yes}} to show date as [[WP:DATES#Full date formatting|day before month]]; otherwise format is month before day.
::'''''example'''''
:::<small><nowiki>{{Death date and age|</nowiki>{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}|1950|12|31|df=yes<nowiki>}}</nowiki></small>
::'''''output display results'''''
:::<small>{{Death date and age|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}|1950|12|31|df=yes}}</small>
*When only the birth and death years are known, use:
:<small><nowiki>{{</nowiki>Death year and age|year died|year born<nowiki>}}</nowiki></small>
::'''''example'''''
:::<small><nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small>
::'''''output display results'''''
:::<small>{{Death year and age|{{CURRENTYEAR}}|1950}}</small>
*When only the birth month, birth year and death year are known, use:
:<small>birth month, <nowiki>{{</nowiki>Death year and age|year died|year born<nowiki>}}</nowiki></small>
::'''''example'''''
:::<small>{{CURRENTMONTHNAME}}, <nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small>
::'''''output display results'''''
:::<small>{{CURRENTMONTHNAME}}, {{Death year and age|{{CURRENTYEAR}}|1950}}</small>
*When only the death year is known, use:
:<small>death year</small>
::'''''example'''''
:::<small>{{CURRENTYEAR}}</small>
::'''''output display results'''''
:::<small>{{CURRENTYEAR}}</small>
*When the date of death is unknown, but the person is certainly now dead use the following (case is insensitive):
::'''''example'''''
:::unknown
::'''''output display results'''''
:::date of death unknown
*When the date of death is unknown, and it is preferable not to display anything and just change the background display color of the infobox. Enter the following (case is insensitive):
::'''''example'''''
:::died
::'''''output display results'''''
:::nothing will be displayed.
*When the date of death is only known approximately.
:Preface the entry with a wikilink <nowiki>[[</nowiki>Circa|c. <nowiki>]]</nowiki> or c.
::'''''examples'''''
:::<small><nowiki>[[</nowiki>Circa|c.<nowiki>]]</nowiki> <nowiki>{{</nowiki>Death year and age|{{CURRENTYEAR}}|1950<nowiki>}}</nowiki></small>
:::<small><nowiki>[[</nowiki>Circa|c.<nowiki>]]</nowiki> year died</small>
::'''''output display results'''''
:::<small>[[Wiktionary:circa|c.]] {{Death year and age|{{CURRENTYEAR}}|1950}}</small>
:::<small>[[Wiktionary:circa|c.]] {{CURRENTYEAR}}</small>
|-
| '''death_place'''
| Insert the person's place of death if known as: town, city, state, country. Note: '''<ins>Do not</ins>''' add flag icons to the deathplace. See: [[Wikipedia:Manual of Style (flags)]].
|-
| '''resting_place'''
| Place of burial, ash-scattering, etc.
|-
|-
| '''occupation'''
| Insert the type of person: novelist, short story person, journalist, etc. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]).
|-
| '''language'''
| Language of published writings.
|-
| '''nationality'''
| Nationality of person, use only when necessary per [[WP:INFONAT]].
|-
| '''citizenship'''
| Citizenship of person., use only when necessary per [[WP:INFONAT]].
|-
| '''education'''
|
|-
| '''alma_mater'''
| The [[alma mater]], or college or universities where the person studied. If more than one, indicate ones where they obtained their degree(s) or graduated from.
|-
| '''period'''
| Dates from first publication to last publication.
|-
| '''genre'''
| Fiction persons: All genres that the person wrote in. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]).
|-
| '''subject'''
| Non-fiction persons: All subjects that the person wrote about. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]).
|-
| '''movement'''
| Insert the literary movement associated with or involving the person. Use {{Tlx|Cslist}} for multiple values (see information at the [[#Parameters|top of this section]]).
|-
| '''notable_works'''
| Names of '''notable''' works ([[WP:NN]]).
Use {{Tlx|Unbulleted list}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
<small>If there is a dispute between editors over what is or is not a notable work, it should be brought up on the article's talk page. If no consensus can be developed for a particular person, the notable_works parameter should be marked with:</small>
<small>{{highlight|<nowiki><!-- Please do not add notable works to this article. See talk page as mutual consensus could not be achieved on this article. --></nowiki>}}</small>
|-
| '''spouse'''
| Name of spouse(s), followed by years of marriage. Use the format ''Name (1950–present)'' for current spouse and ''Name (1970–1999)'' for former spouse(s). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''partner'''
| Name of long-term unmarried partner(s) (e.g., [[domestic partner]]). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''children'''
| Number of children (e.g., 3), or list of children names. Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''relatives'''
| Names of parents, siblings or other relatives; include only if they are independently notable or particularly relevant. Include the relationship in parentheses after the name (father, sister, uncle, etc.). Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''parents'''
| Names of parents; include only if they are independently notable or particularly relevant. This parameter may be used for biological, adoptive, foster, or step-parents. Use {{Tlx|Unbulleted list}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
|-
| '''influences'''
| No longer supported. Please move cited/citable instances into prose.
|-
| '''influenced'''
| No longer supported. Please move cited/citable instances into prose.
|-
| '''awards'''
| Insert any '''notable''' awards the person has won.
Consider using the template: {{tlx|Awards|award|year|title|role}}
Use {{Tlx|Plainlist}} for multiple values (see information at [[Template:Infobox person#Inline lists]]).
Note: '''<ins>Do not</ins>''' add icons or other images.
|-
| '''signature'''
| An image of the person's signature. Image is displayed at a width of 128px, same format as {{Tl|Infobox person}}, {{Tl|Infobox officeholder}} and {{Tl|Infobox philosopher}}.
|-
| '''signature_type'''
| Changes the '''Signature''' label to the preferred argument, such as '''Seal'''
|-
| '''signature_size'''
| Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter.
|-
| '''signature_alt'''
| [[WP:Alternative text for images|Alternative text]] for signature. Write out the signature exactly as it appears in the image, including punctuation. For [[WP:ACCESSIBILITY|accessibility]].
|-
| '''years_active'''
| Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a [[floruit]] date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.
|-
| '''module'''
| Used for embedding other infoboxes into this one.
|-
| '''website'''
| If the person has an '''official''' website enter it here. '''<ins>Do not</ins>''' enter unofficial, blogs or fan websites. Only one '''official''' website is allowed. If the person has more than one '''official''' website, only the most prominent should be listed in the infobox. All other websites should be listed in the article under ==External links==.
Use {{T|URL}} as in <nowiki>{{URL|ExampleCompany.com}}</nowiki>. Do not include the "<nowiki>http[s]://</nowiki>" or "www." parts unless the server requires it. Use [[camel case]] capitalization to make multiword domain names easier to read.
|-
| '''portaldisp'''
| This is an optional parameter to display the literature portal link at the bottom of the infobox. Leaving this parameter blank will cause the literature portal link '''not''' to display. Setting this parameter to '''yes''' or '''y''' (case is insensitive) will display the literature portal link.
::::::[[File:Portal-puzzle.svg|frameless|upright=0.11|link=|alt=]] [[Portal:Literature|Literature portal]]
If there is a dispute between editors over whether this parameter should be used in the article, it should be brought up on the article's talk page. If no consensus can be developed for a particular person, the portaldisp parameter should be marked with:
{{highlight|<nowiki><!-- Please do not use this parameter in this article. See talk page as mutual consensus could not be achieved on this article. --></nowiki>}}
|-
<!-- removed, very few articles used this parameter | '''footnotes'''
| Insert any miscellaneous information here. -->
|}
== Use as a child template ==
The '''embed''' parameter is used when embedding this infobox into another.
{{Infobox person module documentation |template=Infobox writer |parameter=embed |example_parameter1=genre}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "Infobox writer may be used to summarize information about a person who is a writer/author (includes screenwriters).",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"name": {
"required": false,
"label": "Name",
"type": "string",
"description": "Insert name of the person. Use the common name, typically name of article. If omitted it defaults to the name of the article; if present but blank, the header is omitted. Note: Do not add icons or other images.",
"suggested": true
},
"embed": {
"label": "Embedded",
"description": "Set to 'yes' if embedded in another infobox template.",
"type": "string",
"required": false,
"suggestedvalues": [
"Yes"
]
},
"honorific_prefix": {
"required": false,
"label": "Honorific (prefix)",
"type": "string",
"description": "Honorifics that go before the name, e.g. 'Lady', 'Sir', 'Dr'."
},
"honorific_suffix": {
"required": false,
"label": "Honorific (suffix)",
"type": "string",
"description": "Honorifics that go after the name, e.g. 'MBE'."
},
"native_name": {
"required": false,
"label": "Native name",
"type": "string",
"description": "Name of the writer in his native languages(s). Use {{Plainlist}} for multiple values."
},
"native_name_lang": {
"required": false,
"label": "Native name language",
"type": "string",
"description": "A language tag e.g. 'fr' for French. If more than one, use {{lang}} inside native_name instead"
},
"image": {
"required": false,
"label": "Image",
"type": "wiki-file-name",
"description": "Image of the writer. Insert image name. Use only the file name such as abc.jpg, xyz.png, 123.gif, etc. Do not use syntax such as [[File:abc.jpg]] or [[File:abc.jpg|200px]]\nOnly free-content images are allowed for depicting living people. Non-free and \"fair use\" images, e.g., promo photos, CD/DVD covers, posters, screen captures, etc., will be deleted. See WP:NONFREE.",
"suggested": true
},
"image_size": {
"required": false,
"label": "Image size",
"type": "string",
"description": "Size to display image.",
"aliases": [
"image size",
"imagesize"
],
"example": "Format: 250px (set width), or 200x300px (max width & max height).",
"default": "200px if empty or omitted."
},
"image_upright": {
"required": false,
"label": "Image upright",
"type": "string",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%)."
},
"landscape": {
"label": "Landscape",
"description": "Set to 'yes' when using wide, short images. The image height (rather than width) will be limited to 200 pixels.",
"type": "boolean"
},
"alt": {
"required": false,
"label": "Image alternative text",
"type": "string",
"description": "The alt attribute for the image, for readers who cannot see the image. See WP:ALT."
},
"caption": {
"required": false,
"label": "Image caption",
"aliases": [
"image caption",
"image_caption"
],
"type": "string",
"description": "Caption for the image. Try to include the date the image was created.",
"suggested": true
},
"pseudonym": {
"required": false,
"label": "Pseudonym",
"type": "string",
"description": "Any of the person's aliases or pen names. Use {{Cslist}} for multiple values"
},
"birth_name": {
"required": false,
"label": "Birth name",
"type": "string",
"description": "Insert person's name at birth (or christening if name at birth is unavailable)."
},
"birth_date": {
"required": false,
"label": "Birth date",
"type": "line",
"description": "Insert the person's birth date if known as: month day, year or day month year as appropriate.\nFor a living person consider using:\n\n{{Birth date and age|year of birth|month of birth|day of birth}}\nOtherwise use:\n\n{{Birth date|year of birth|month of birth|day of birth}}.\nIn either case, add |df=yes to show date as day before month; otherwise format is month before day.",
"suggested": true
},
"birth_place": {
"required": false,
"label": "Birth place",
"type": "string",
"description": "Insert the person's place of birth if known as: town, city, state, country. Note: Do not add flag icons to the birthplace."
},
"death_date": {
"required": false,
"label": "Death date",
"type": "line",
"description": "If the person is still living, leave this parameter blank.\n\nInsert the person's date of death if known as: month day, year or day month year as appropriate.\n\nWhen the full birth date and death date are known, use the following:\n\n{{Death date and age|yr died|mo died|da died|yr born|mo born|da born}} - See template page for more details about formatting options.",
"suggested": true
},
"death_place": {
"required": false,
"label": "Death place",
"type": "string",
"description": "Insert the person's place of death if known as: town, city, state, country. Note: Do not add flag icons to the deathplace."
},
"resting_place": {
"required": false,
"label": "Resting place",
"type": "string",
"description": "Place of writer's grave or ash scattering"
},
"occupation": {
"required": false,
"label": "Occupation",
"type": "string",
"description": "Insert the type of person: novelist, short story person, journalist, etc. Use {{Cslist}} for multiple values",
"suggested": true
},
"language": {
"required": false,
"label": "Language",
"type": "string",
"description": "Language of published writings"
},
"nationality": {
"required": false,
"label": "Nationality",
"type": "string",
"description": "Nationality of writer, use only when necessary per [[WP:INFONAT]]"
},
"citizenship": {
"required": false,
"label": "Citizenship",
"type": "string",
"description": "Writer's country of citizenship"
},
"education": {
"required": false,
"label": "Education",
"type": "string"
},
"alma_mater": {
"required": false,
"label": "Alma mater",
"type": "string",
"description": "University or school that writer attended. If more than one, indicate ones where they obtained their degree(s) or graduated from."
},
"home_town": {
"required": false,
"label": "Home town",
"type": "string",
"description": "Place where the person was raised and matured"
},
"period": {
"required": false,
"label": "Period",
"type": "line",
"description": "Dates from first publication to last publication",
"suggested": true
},
"genre": {
"required": false,
"label": "Genre",
"type": "string",
"description": "Use for fiction writers: All genres that the person wrote in. Use {{Cslist}} for multiple values"
},
"subject": {
"required": false,
"label": "Subject",
"type": "string",
"description": "Use for non-fiction writers: All subjects that the person wrote about. Use {{Cslist}} for multiple values",
"suggested": true
},
"movement": {
"required": false,
"label": "Movement",
"type": "string",
"description": "Insert the literary movement associated with or involving the person. Use {{Cslist}} for multiple values"
},
"notable_works": {
"required": false,
"label": "Notable works",
"type": "string",
"description": "Names of notable works (see WP:NN). Use {{Unbulleted list}} for multiple values.",
"aliases": [
"notableworks"
],
"suggested": true
},
"spouse": {
"required": false,
"label": "Spouse",
"type": "string",
"description": "Name of spouse(s), followed by years of marriage. Use the format Name (1950–present) for current spouse and Name (1970–1999) for former spouse(s). Use {{Plainlist}} for multiple values."
},
"partner": {
"required": false,
"label": "Partner",
"type": "string",
"description": "Name of long-term unmarried partner(s) (e.g., domestic partner). Use {{Plainlist}} for multiple values."
},
"children": {
"required": false,
"label": "Children",
"type": "string",
"description": "Number of children (e.g., 3), or list of children names. Use {{Plainlist}} for multiple values."
},
"relatives": {
"required": false,
"label": "Relatives",
"type": "string",
"description": "Names of parents, siblings or other relatives; include only if they are independently notable or particularly relevant. Include the relationship in parentheses after the name (father, sister, uncle, etc.). Use {{Plainlist}} for multiple values."
},
"awards": {
"required": false,
"label": "Awards",
"type": "string",
"description": "Insert any notable awards the person has won.\nConsider using the template: {{Awards|award|year|title|role}}\n\nUse {{Plainlist}} for multiple values.",
"suggested": true
},
"signature": {
"required": false,
"label": "Signature",
"type": "wiki-page-name",
"description": "File name of the writer's signature. Image is displayed at a width of 128px."
},
"signature_type": {
"description": "Alter from Signature to, for example, Seal",
"label": "Signature type",
"type": "string"
},
"signature_size": {
"description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.",
"label": "Signature size"
},
"signature_alt": {
"required": false,
"label": "Signature (alternative)",
"type": "string",
"description": "Alternative text for signature. Write out the signature exactly as it appears in the image, including punctuation. (For accessibility, to be read by screen readers.)"
},
"years_active": {
"description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.",
"label": "Years Active",
"type": "string",
"required": false
},
"module": {
"required": false,
"label": "Module",
"type": "string",
"description": "Used for embedding other infoboxes into this one"
},
"website": {
"required": false,
"label": "Website",
"type": "string",
"description": "If the person has an official website enter it here. Do not enter unofficial, blogs or fan websites. Only one official website is allowed. If the person has more than one official website, only the most prominent should be listed in the infobox. All other websites should be listed in the article under ==External links==.\nUse {{URL}}. Do not include the \"http[s]://\" or \"www.\" parts unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.",
"example": "{{URL|ExampleCompany.com}}",
"suggested": true
},
"portaldisp": {
"required": false,
"label": "Portal link",
"type": "string",
"description": "This is an optional parameter to display the literature portal link at the bottom of the infobox. Set this parameter to yes or y for enabling the portal link.",
"suggestedvalues": [
"yes"
]
}
}
}
</templatedata>
{{Collapse bottom}}
==Example==
{{Infobox writer
| name = J. K. Rowling
| honorific_suffix = {{post-nominals|country=GBR|CH|OBE|HonFRSE|FRCPE|FRSL|size=100%}}
| image = J. K. Rowling 2010.jpg
| caption = Rowling at the [[White House]] in 2010
| birth_name = Joanne Rowling
| birth_date = {{Birth date and age|df=yes|1965|7|31}}
| birth_place = [[Yate]], Gloucestershire, England
| pseudonym = {{unbulleted list|J. K. Rowling|Robert Galbraith}}
| occupation = {{hlist|Author|philanthropist}}
| alma_mater = {{ubl|[[University of Exeter]]|[[Moray House School of Education|Moray House]]}}
| period = [[Contemporary literature|Contemporary]]
| years_active = 1997–present
| genres = {{hlist|[[Fantasy]]|[[drama]]|[[young adult fiction]]|[[crime fiction]]}}
| subject =
| movement =
| spouse = {{unbulleted list|{{marriage|Jorge Arantes|1992|1995|end=divorced}}|{{marriage|Neil Murray|26 December 2001}}}}
| children = 3
| relatives =
| website = {{URL|jkrowling.com}}
| signature = JKRowlingsignature.svg
}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox writer
| name = J. K. Rowling
| honorific_suffix = {{post-nominals|country=GBR|CH|OBE|HonFRSE|FRCPE|FRSL|size=100%}}
| image = J. K. Rowling 2010.jpg
| caption = Rowling at the [[White House]] in 2010
| birth_name = Joanne Rowling
| birth_date = {{Birth date and age|df=yes|1965|7|31}}
| birth_place = [[Yate]], Gloucestershire, England
| pseudonym = {{unbulleted list|J. K. Rowling|Robert Galbraith}}
| occupation = {{hlist|Author|philanthropist}}
| alma_mater = {{ubl|[[University of Exeter]]|[[Moray House School of Education|Moray House]]}}
| period = [[Contemporary literature|Contemporary]]
| years_active = 1997–present
| genres = {{hlist|[[Fantasy]]|[[drama]]|[[young adult fiction]]|[[crime fiction]]}}
| subject =
| movement =
| spouse = {{unbulleted list|{{marriage|Jorge Arantes|1992|1995|end=divorced}}|{{marriage|Neil Murray|26 December 2001}}}}
| children = 3
| relatives =
| website = {{URL|jkrowling.com}}
| signature = JKRowlingsignature.svg
}}
</syntaxhighlight>
== Microformat ==
{{UF-hcard-person}}
== Tracking categories ==
* {{Category link with count|Biography template using pronunciation}}
* {{Category link with count|Pages using Infobox writer with unknown parameters}}
== See also ==
* {{tl|Infobox person}}
<includeonly>
{{Sandbox other||
<!----Categories below this line, please; interwikis to Wikidata---->
{{DEFAULTSORT:Writer}}
[[Category:Publishing infobox templates]]
[[Category:People and person infobox templates|Writer]]
[[Category:Biographical templates usable as a module]]
[[Category:Infobox templates with module parameter|Writer]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}
</includeonly>
553d1466b6e2e37ad8b54f07dc7b1ee693fcbeef
Template:Math templates
10
1564
2899
2023-08-16T02:21:03Z
w>PK2
0
use bodyclass = hlist in navbox as per [[WP:HLIST]]
wikitext
text/x-wiki
<!-- This template uses British English. -->
{{Navbox with collapsible groups
| name = Math templates
| state = {{{state|expanded}}}
| bodyclass = hlist
| title = Math templates
| liststyle = font-size:110%;<!--(as some templates' descriptions include links)-->
| selected = {{{selected|{{{expanded|{{{1|}}}}}}}}}
<!-------------- Functions / Numeral systems -------------->
| abbr1 = FN
| group1 =
*Functions
*Numeral systems
| state1 = <noinclude>expanded</noinclude>
| list1 =
{{Navbox |child
| group1 = Functions
| list1 =
*{{tlbare|elementary arithmetic}}
*{{tlbare|precision}}
*{{tlbare|val}} (value formatting)
*{{tlbare|percentage}}
| group2 = Numeral systems
| list2 =
*{{ml|BaseConvert|''X''to''Y''}}
*{{tlbare|binary}}
*{{tlbare|decimal2Base}}
*{{tlbare|hex2dec}}
*{{tlbare|hexadecimal}}
*{{tlbare|octal}}
*{{tlbare|quaternary}}
*{{tlbare|quinary}}
*{{tlbare|rn}}
*{{tlbare|roman}}
*{{tlbare|senary}}
*{{tlbare|ternary}}
*{{tlbare|vigesimal}}
}}
<!---------------------- Conversions ---------------------->
| abbr2 = conversions
| group2 = Conversions
| state2 = <noinclude>expanded</noinclude>
| list2 =
{{Aligned table
|style=margin:0 auto 0;text-align:left;
| {{Aligned table
|style=padding-right:2.5em;
|col1style=text-align:right;white-space:nowrap;padding-right:1.0em;
|col2style=font-size:90%;<!--(see liststyle above)--> vertical-align:middle;line-height:1.3em;font-style:italic;
| {{tlbare|convert}} | many units (see: [[Template:Convert/list_of_units |list]])
| {{tlbare|cvt}} | abbreviated {{tl|convert}}
| {{tlbare|convinfobox}} | {{tl|convert}} for infoboxes
| {{tlbare|bbl to t}} | barrels of oil to tonnes
| {{tlbare|long ton}} | long hundredweights, quarters and pounds to kilograms;<br/>long tons and hundredweights to pounds and metric tons
| {{tlbare|miles-chains}} | miles and chains to kilometres linking "chains"
}}
| {{Aligned table
|col1style=text-align:right;white-space:nowrap;padding-right:1.0em;
|col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic;
| {{tlbare|decdeg}} | degrees, minutes, and seconds to [[decimal degrees]]
| {{tlbare|deg2DMS|deg2dms}} | decimal degrees to degrees, minutes, and seconds
| {{tlbare|deg2HMS|deg2hms}} | decimal degrees to [[hour angle]] (in hours, minutes, and seconds)
| {{tlbare|HMS2Deg|hms2deg}} | [[hour angle]] (in hours, minutes, and seconds) to decimal degrees
| {{tlbare|inflation}} | calculate inflation of Consumer Price Index-related prices
| {{tlbare|pop density}} | population density in an area
| {{tlbare|track gauge}} | railway track gauges
}}
}}
<!----------------------- Notation & formatting ------------------------>
| group3 = Notation and {{Category link|Mathematical formatting templates|formatting}}
| abbr3 = notation
| state3 = <noinclude>expanded</noinclude>
| list3 =
{{Aligned table
|style=margin:0 auto 0;text-align:left;
| {{Aligned table
|style=padding-right:2.5em;
|col1style=text-align:right;white-space:nowrap;padding-right:1.0em;
|col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic;
| {{tlbare|bigmath}} | bigger font to match {{noitalic|[[TeX]]}} {{noitalic|<samp><nowiki>\</nowiki>displaystyle</samp>}} (standalone formulas only)
|
*{{tlbare|bra-ket}}
*{{tlbare|braket}}
*{{tlbare|bra}}
*{{tlbare|ket}} | [[bra–ket notation]]
| {{tlbare|ceil}}, {{tlbare|floor}} | calculations [[:mw:Help:Extension:ParserFunctions##expr|:mw:Help:#expr]]; formatting indicators {{noitalic|1={{ceil|3.14}}}}, {{noitalic|1={{floor|3.14}}}} (no calculation performed)
| {{tlbare|fraction}} | slant fractions {{frac|3|5}} (not for maths/science articles; use ''standing'' or upright fractions {{noitalic|{{tlx|sfrac}}}} instead)
| {{tlbare|intmath}} | [[integral symbol]]s
|
*{{tlbare|langle}}
*{{tlbare|rangle}}
*{{tlbare|Angle bracket|angbr}} | [[Bracket#Angular brackets|angular bracket]]s
|
*{{tlbare|ldelim}}
*{{tlbare|rdelim}} | multiline delimiters (2–5 lines inclusive)
| {{tlbare|abs}} | absolute values (paired vertical lines)
| {{tlbare|math}} | short text-based formulas
| {{tlbare|mathcal}} | [mathematical] calligraphic font; alternative to {{noitalic|[[LaTeX]]}} {{noitalic|<samp><nowiki>\</nowiki>mathcal{...}</samp>}}
}}
| {{Aligned table
|col1style=text-align:right;white-space:nowrap;padding-right:1.0em;
|col2style=font-size:90%;<!--(as above)--> vertical-align:middle;line-height:1.3em;font-style:italic;
| {{tlbare|mvar}} | individual italicized maths variables in normal text
|
*{{tlbare|overline}}
*{{tlbare|underline}} | a line set above/below a sequence of characters
| {{tlbare|overarc}} | an arc set above a sequence of characters
|
*{{tlbare|overset}}
*{{tlbare|underset}} | arbitrary characters/diacritics set above/below one another
| {{tlbare|pars}} | parentheses that can be resized {{noitalic|1={{math|{{pars|s=150|{{large|∑}}}}}}}}
| {{tlbare|sfrac}} | "standing" or upright fractions {{sfrac|3|5}} (use in maths/science articles instead of{{noitalic|{{tlx|fraction}}}})
|
*{{tlbare|sub}}
*{{tlbare|sup}}
*{{tlbare|su}} | subscripts and superscripts
|style7.1=vertical-align:middle;text-align:right;padding-right:1.0em;| {{tlbare|tmath}}
| Wrap {{noitalic|[[TeX]]}} in {{noitalic|<nowiki><math></nowiki>}} tags
| {{tlbare|tombstone}} | symbol indicating the [[Tombstone (typography)|end of a proof]]
| {{tlbare|val}} | measurement values, uncertainties and units
| {{tlbare|vec}} | various overarrows, underarrows, etc.<!--pointing left, right or both ways-->
}}
}}
<!---------------- Boxes / Tags / Notices ----------------->
| abbr4 = BTN
| group4 =
*Boxes
*Tags
*Notices
| state4 = <noinclude>expanded</noinclude>
| list4 =
{{Navbox with columns |child
|colstyle=text-align:center;
| col1header = Boxes
| col1 =
*{{tlbare|arithmetic operations}}
*{{tlbare|calculus}}
*{{tlbare|Infobox mathematical function}}
*{{tlbare|functions}}
| col2header = Tags
| col2 =
*{{tlbare|metricate}}
*{{tlbare|undue precision}}
*{{tlbare|units attention}}
}}
| below =
*{{icon|Category}} {{c|Mathematics templates|Category}}
*[[:Module:Math]]
}}<noinclude>
{{Documentation}}
</noinclude>
26ad83e7e42cc47c602b1e14ad1859e0f4fb6867
Template:Infobox3cols/doc
10
1539
2874
2023-08-16T21:46:03Z
w>SWinxy
0
Split module doc; use <syntaxhighlight>
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Lua|Module:Infobox3cols}}
{{Uses TemplateStyles|Template:Plainlist/styles.css|Template:Hlist/styles.css}}
This is a fork of {{tl|infobox}} which provides an option for up to three <code>data</code> attributes per row, in addition to a label: data''x''a, data''x''b and data''x''c.
{{clear}}
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox3cols
| child =
| bodyclass =
| bodystyle =
| title =
| titleclass =
| titlestyle =
| above =
| abovestyle =
| aboveclass =
| aboverowclass =
| subheader =
| subheaderstyle =
| subheaderclass =
| subheaderrowclass1 =
| subheader2 =
| subheaderrowclass2 =
| image =
| image1 =
| caption =
| caption1 =
| captionstyle =
| imagestyle =
| imageclass =
| imagerowclass1 =
| image2 =
| caption2 =
| imagerowclass2 =
| headerstyle =
| labelstyle =
| datastyle =
| datastylea =
| datastyleb =
| datastylec =
| extracellstyles = 1,3a,4b=...
| header1 =
| label1 =
| data1 =
| data1a =
| data1b =
| data1c =
| class1 =
| rowclass1 =
| header2 =
| rowclass2 =
| label2 =
| data2 =
| class2 =
| data2a =
| data2b =
| class2a =
| class2b =
| class2c =
| data2c =
...
| below =
| belowstyle =
| belowclass =
| belowrowclass =
| name =
}}
</syntaxhighlight>
== Parameter precedence ==
The bulk of the infobox is generated by blocks of numbered parameters: <code>headerX</code>, <code>labelX</code>, <code>dataX</code>, <code>dataXa</code>, <code>dataXb</code>, and <code>dataXc</code>. The following examples demonstrate the order in which these parameters are used.
{|
|+ Example 1
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{Infobox3cols
| header1 = header1
| label1 = label1
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 = header1
| label1 = label1
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
|}
{|
|+ Example 2
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 = label1
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 = label1
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
|}
{|
|+ Example 3
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 =
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 =
| data1 = data1
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
|}
{|
|+ Example 4
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
|}
{|
|+ Example 5
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a =
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a =
| data1b = data1b
| data1c = data1c
}}
|}
{|
|+ Example 6
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a =
| data1b =
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 = label1
| data1 =
| data1a =
| data1b =
| data1c = data1c
}}
|}
{|
|+ Example 7
! Code !! Result
|- style="vertical-align:top"
|
<syntaxhighlight lang="wikitext">
{{infobox3cols
| header1 =
| label1 =
| data1 =
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
</syntaxhighlight>
|
{{infobox3cols
| header1 =
| label1 =
| data1 =
| data1a = data1a
| data1b = data1b
| data1c = data1c
}}
|}
== Tracking categories ==
* {{clc|Pages using infobox3cols with undocumented parameters}}
* {{clc|Pages using infobox3cols with header0 or label0 or data0}}
* {{clc|Pages using infobox3cols with multidatastyle}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates| ]]
[[Category:Wikipedia metatemplates]]
[[Category:Templates that add a tracking category]]
[[Category:Infobox templates with three columns| ]]
}}</includeonly>
ab485207606ddc9a4a57e3ff567920b0e72b8eae
Template:More citations needed
10
1020
2236
2023-08-18T03:57:08Z
wikipedia>SWinxy
0
Use [[Special:EditPage]] link
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|More citations needed}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Question book-new.svg|50x40px|alt=]]
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''.
| fix = Please help [[Special:Edit/{{FULLPAGENAME}}|improve this article]] by [[Help:Referencing for beginners|adding citations to reliable sources]]{{#if:{{{1|}}}|{{sp}}in this {{{1}}}}}. Unsourced material may be challenged and removed.{{#if:{{{find2|{{{unquoted|}}}}}}| <br /><small>{{find sources mainspace|{{#if:{{{find|}}}|{{{find}}}|.}}|{{{find2|{{{unquoted|}}}}}}}}</small> |{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} }}
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}
}}<noinclude>
<!-- Please add categories to the /doc subpage, thanks -->
{{Documentation}}
</noinclude>
f2f3be3f3c3586a16c3e9caeb10bd8b6b751fab3
Template:Infobox UK place/NoLocalMap
10
1417
2752
2023-08-18T18:00:08Z
w>MusikBot II
0
Protected "[[Template:Infobox UK place/NoLocalMap]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 250 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require autoconfirmed or confirmed access] (indefinite))
wikitext
text/x-wiki
<noinclude>Do not delete this page, just select the '''What links here''' option to find pages with the UK map shown rather than a more local one.</noinclude>
b2cd2398b5b579ab44791b1c8ad576927270f6ca
Template:Marriage/doc
10
1260
2594
2023-08-19T09:05:05Z
CrafterNova
48
/* Usage */wording fix
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{esoteric}}
{{high-use}}
{{Lua|Module:Check for unknown parameters|Module:Parameter validation}}
{{Uses Wikidata|P21|P570}}
{{Uses TemplateStyles|Template:Marriage/styles.css}}
==Usage==
This template is intended for use in infoboxes; specifically {{tl|Infobox person}} and [[:Category:Templates calling Infobox person|templates calling Infobox person]].
{{tl|Marriage}} takes up to three unnamed parameters (name, start date, end date)—plus an optional named parameter {{para|end}} (also called {{para|reason}})—to produce output such as the following:
{{Markup
| style = font-size:small;
| title = Examples
| col1 = Template | col2 = Output
| <nowiki>{{marriage |John Smith |1 January 1895 |December 31, 1905}}</nowiki>
| {{marriage |John Smith |1 January 1895 |December 31, 1905}}
| <nowiki>{{marriage |John Doe |1885 |July 27, 1888 |end=d.}}</nowiki>
| {{marriage |John Doe |1885 |July 27, 1888 |end=d.}}
| <nowiki>{{marriage |Jane Doe |2002}}</nowiki>
| {{marriage |Jane Doe |2002}}
| <nowiki>{{marriage |John Q. Public |2002|2010}}</nowiki>
| {{marriage |John Q. Public |2002|2010}}
| <nowiki>{{marriage |John Q. Citizen |2002|2010|end=div}}
{{marriage |<!--John Q. Citizen-->|2012}}</nowiki>
| {{marriage |John Q. Citizen |2002|2010|end=div}}
{{marriage |<!--John Q. Citizen-->|2012}}
| <nowiki>{{marriage |John Q. Taxpayer |2002|end=div}}</nowiki>
| {{marriage |John Q. Taxpayer |2002|end=div}}
| <nowiki>{{marriage |Joe Blow|<!--unknown-->|2010|end=div}}</nowiki>
| {{marriage |Joe Blow|<!--unknown-->|2010|end=div}}
| <nowiki>{{marriage |Joe Bloggs|<!--unknown-->|2010}}</nowiki>
| {{marriage |Joe Bloggs|<!--unknown-->|2010}}
| <nowiki>{{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}}</nowiki>
| {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}}
| <nowiki>{{marriage |Joe Schmo |end=div}}</nowiki>
| {{marriage |Joe Schmo |end=div}}
| <nowiki>{{marriage |Juan Perez |2010|reason=<!--earliest-->}}</nowiki>
| {{marriage |Juan Perez |2010|reason=<!--earliest-->}}
}}
Use of the first two parameters with {{para|end}} ({{para|reason}}) will cause a line break between the name and the start date.
===In an infobox===
{{Infobox person|name={{tl|Infobox person}} |spouse = {{Plainlist|
* {{marriage |John Smith |1 January 1895 |December 31, 1905}}
* {{marriage |John Doe |1885 |July 27, 1888 |end=d.}}
* {{marriage |Jane Doe |2002}}
* {{marriage |John Q. Public |2002|2010}}
* {{marriage |John Q. Citizen |2002|2010|end=div}}
* {{marriage |<!--John Q. Citizen-->|2012}}
* {{marriage |John Q. Taxpayer |2002|end=div}}
* {{marriage |Joe Blow|<!--unknown-->|2010|end=div}}
* {{marriage |Joe Bloggs|<!--unknown-->|2010}}
* {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}}
* {{marriage |Joe Schmo |end=div}}
* {{marriage |Juan Perez |2010|reason=<!--earliest-->}} }}
}}
Infoboxes already reduce text size to 88%, and [[MOS:FONTSIZE]] sets a lower limit for text size at 85% of the normal page font size, so it is not appropriate to use font size reduction when this template is used in an infobox. The example here is produced by:
<syntaxhighlight style="font-size:small;" lang="wikitext">
{{Infobox person |spouse = {{Plainlist|
* {{marriage |John Smith |1 January 1895 |December 31, 1905}}
* {{marriage |John Doe |1885 |July 27, 1888 |end=d.}}
* {{marriage |Jane Doe |2002}}
* {{marriage |John Q. Public |2002|2010}}
* {{marriage |John Q. Citizen |2002|2010|end=div}}
* {{marriage |<!--John Q. Citizen-->|2012}}
* {{marriage |John Q. Taxpayer |2002|end=div}}
* {{marriage |Joe Blow|<!--unknown-->|2010|end=div}}
* {{marriage |Joe Bloggs|<!--unknown-->|2010}}
* {{marriage |Joe Sixpack|<!--unknown-->|2010|end=<!--uncertain-->}}
* {{marriage |Joe Schmo |end=div}}
* {{marriage |Juan Perez |2010|reason=<!--earliest-->}} }}
}}
</syntaxhighlight>
==Syntax and parameters==
<code>{{((}}marriage {{!}}{{thin space|<{{var|text}}>}}{{!}}{{thin space|<{{var|start date}}>}}{{!}}{{thin space|<{{var|end date}}>}}[{{!}}{{thin space|end{{=}}}}]{{))}}</code>
{{Aligned table |class=wikitable |style=line-height:1.35em;
| col1style=vertical-align:middle;text-align:center;padding-right:1.0em; |col2style=vertical-align:middle;padding-right:0.5em;
| row1style=background:whitesmoke;vertical-align:middle;text-align:center;font-weight:bold;
| Parameter | Description
| <{{var|text}}>
| (First unnamed parameter) Some text—usually a spouse's name—preceding the parenthesis carrying the marriage date/s, etc. This parameter may be omitted, typically for a remarriage to the same spouse.
| <{{var|start date}}>
| (Second unnamed parameter) Year or full date when the marriage began. Only the year will be displayed. If a full date is provided, it is given via a tooltip; i.e., {{tla|Tooltip}}. ([[#In an infobox|See first and second examples above.]])
| <{{var|end date}}>
| (Third unnamed parameter) Year or full date when the marriage ended. Only the year will be displayed. If a full date is provided, it is given via a tooltip; i.e., {{tla|Tooltip}}. ([[#In an infobox|See first and second examples above.]]) If the marriage ended because of the death of the article's subject, {{insource|"Omission per Template:Marriage instructions"|do {{em|not}} provide a date}}.
| {{para|end}} or {{para|reason}}
| Reason for marriage's end. If the marriage ended because of the death of the article's subject, {{insource|"Omission per Template:Marriage instructions"|do {{em|not}} provide a reason}}; use of <i>{{dc|his death}}</i> or <i>{{dc|her death}}</i> for this purpose has been deprecated ([[Template talk:Marriage/Archive 5#Use "(m. 1900)" and do not fill in an end date|see discussion]]).
* {{bxtn|d}}, {{bxtn|d.}}, or {{bxtn|died}} includes {{xtn|died}} within the parentheses if the marriage ended on the spouse's death.
* {{bxtn|div}}, {{bxtn|div.}}, or {{bxtn|divorced}} includes {{abbr|{{xtn|div.}}|divorced}} or {{xtn|divorced}} within the parentheses.
* Otherwise, {{para|end|<var>value</var>}} includes customized text. For example:
: {{code|<nowiki>{{marriage |Miss Doe |January 1, 1882 |December 31, 1905 |end=annulled}}</nowiki>}} which produces:
{{block indent |style=margin-bottom:0.6em;
| {{marriage |Miss Doe |January 1, 1882 |December 31, 1905 |end=annulled}} }}
{{qnote|Use of the values {{dcr|w}}, {{dcr|w.}}, {{dcr|wid}}, {{dcr|wid.}}, {{dcr|widow}}, or {{dcr|widowed}} is [[Template talk:Marriage/Archive 4#Who is widowed - topic or topic's spouse?|no longer supported]] and will display an error message.}}
}}
None of the parameters are required on their own, but if a template is missing all three of start date, end date, and reason, an error message will be displayed.
==Tracking categories==
===Categories populated via template logic===
* {{Category link with count|Marriage template errors}}: invalid or missing dates; unsupported parameters or values
** {{Category link with count|Marriage template deprecations}}
** {{Category link with count|Category:Marriage template anomalies}}
===Categories populated via [[Module:Parameter_validation|parameter validation]]===
* {{Category link with count|Pages using Marriage with duplicate parameters}}
* {{Category link with count|Pages using Marriage with unknown parameters}}
* {{Category link with count|Pages using Marriage with deprecated parameters}}
==TemplateData==
{{TemplateData header}}
<templatedata>{
"params": {
"1": {
"label": "Spouse's name",
"description": "Name of the person to whom the subject is married.",
"type": "string",
"suggested": true
},
"2": {
"label": "Date married",
"description": "Date the marriage began.",
"type": "date",
"suggested": true
},
"3": {
"label": "Date ended",
"description": "Date the marriage was dissolved or the spouse of the article's subject died.",
"type": "date",
"required": false
},
"end": {
"label": "Reason ended",
"description": "Reason for marriage's end. If the marriage ended because of the death of the article's subject, do not provide a reason.",
"type": "string",
"required": false,
"aliases": [
"reason"
],
"suggestedvalues": [
"died",
"divorced"
]
}
},
"format": "inline"
}</templatedata>
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Text-specific formatting and function templates]]
[[Category:Marriage templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
ad7cdf80745a2d1fc2328987b9401dc5441882c6
Template:Visible anchor
10
1243
2577
2023-08-19T16:03:20Z
w>Paine Ellsworth
0
update
wikitext
text/x-wiki
<templatestyles src="Template:Visible anchor/styles.css" /><span class="vanchor"><!--
-->{{#if:{{{1|}}}|<span id="{{{1}}}"></span>}}<!--
-->{{#if:{{{2|}}}|<span id="{{{2}}}"></span>}}<!--
-->{{#if:{{{3|}}}|<span id="{{{3}}}"></span>}}<!--
-->{{#if:{{{4|}}}|<span id="{{{4}}}"></span>}}<!--
-->{{#if:{{{5|}}}|<span id="{{{5}}}"></span>}}<!--
-->{{#if:{{{6|}}}|<span id="{{{6}}}"></span>}}<!--
-->{{#if:{{{7|}}}|<span id="{{{7}}}"></span>}}<!--
-->{{#if:{{{8|}}}|<span id="{{{8}}}"></span>}}<!--
-->{{#if:{{{9|}}}|<span id="{{{9}}}"></span>}}<!--
-->{{#if:{{{10|}}}|<span id="{{{10}}}"></span>}}<!--
--><span class="vanchor-text">{{{text|{{{1}}}}}}</span><!--
-->{{#if:{{{11|}}}|<span class="error">[[Template:Visible anchor]]: too many anchors, maximum is 10.</span>}}<!--
--></span><noinclude>
{{Documentation}}
<!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE; INTERWIKIS GO TO WIKIDATA, THANK YOU! -->
</noinclude>
291421f0e3c11a13eea17d283cc3d18aa587bbf7
Help:Footnotes
12
586
1320
2023-08-20T07:07:44Z
wikipedia>Mathglot
0
/* Footnotes: predefined groups */ Use template.
wikitext
text/x-wiki
<noinclude>{{pp-semi-indef}}</noinclude>{{short description|Wikipedia help article}}
{{For|the official guideline on citing sources|Wikipedia:Citing sources}}
{{For|help with citation templates|Help:Citation Style 1}}
{{Redirect|WP:FN|the fringe theories noticeboard|Wikipedia:Fringe theories/Noticeboard}}
{{Redirect|WP:NOTES|hatnotes|Wikipedia:Hatnote|article layout of footnotes|MOS:NOTES|musical notes|Wikipedia:Manual of Style/Music#Images and notation}}
{{Wikipedia how to|H:FOOT|WP:FOOTNOTES|H:FN}}
This page explains how to create the '''Footnotes''' section for Wikipedia articles. In this context, the word "Footnotes" refers to the Wikipedia-specific manner of documenting an article's sources and providing tangential information, and should not be confused with the general concept of [[Note (typography)|footnotes]]. This how-to does not cover the formatting of citations within the Footnotes section, which is reviewed in [[Wikipedia:Citing sources|Citing sources]].
Footnotes are used most commonly to provide:
* [[Wikipedia:Citing sources|references (bibliographic citations) to reliable sources]],
* [[Help:explanatory notes|explanatory information]], or
* source information for tables and other elements.
Footnotes or [[Help:Shortened footnotes|shortened footnotes]] may be used at the editor's discretion in accordance with the guideline on [[WP:CITEVAR|Variation in citation methods]].
Only certain types of material on the English Wikipedia are required to have an inline citation. There is [[Wikipedia:Inline citation#Citation density|no requirement to provide a citation for every sentence]], because multiple sentences may be supported by the same footnote. For advice on which material should be cited, see the guidelines on [[WP:MINREF|When you must use inline citations]], the [[Wikipedia:Good article criteria|Good article criteria]] and [[Wikipedia:when to cite|When to cite]]. For advice on how to organize and format bibliographic citations, see the guideline on [[Wikipedia:Citing sources|Citing sources]] and examples of [[Wikipedia:Citation templates#Examples|Citation templates]].
Footnotes are created using the {{cite.php}} software extension. This extension adds the HTML-like elements {{tag|ref}}, {{tag|references|s}} and {{tag|references}}. The elements are also used in a number of templates; for example, it is becoming more common to use {{tl|reflist}} rather than {{tag|references|s}} as it can style the reference list.
==Overview==
{{VE documentation|style=width: 25%; font-size: 87%; float:right}}<!--This is because the visual editor is even more limited than the standard Wikitext editor-->
The Footnotes system shows two elements on the page:
* A '''Footnote marker''' is displayed in the article's content as a bracketed, superscripted number, letter, or word. Examples shown respectively are: {{dummy ref}}{{dummy ref|a}}{{dummy ref|Note 1}}. This footnote label is linked to the full footnote. Clicking on the footnote marker jumps the page down to the footnote and highlights the citation. If you are using the desktop site and have Javascript enabled, then hovering your cursor over a footnote marker (or touching it on touch devices) will show a pop-up box containing the footnote.
* A '''Footnote''' displays the full citation for the source. Together the footnotes are displayed in an ordered list wherever the reference list markup {{tl|reflist}} is placed. Each entry begins with the footnote label in plain text. The entire reference list is formatted in a slightly smaller font.
:Each successive footnote label is automatically incremented. Thus the first footnote marker would be {{dummy ref}}, the second would be {{dummy ref|2}} and so on. Custom labels are also incremented: {{dummy ref|a}}{{dummy ref|b}}{{dummy ref|c}}, {{dummy ref|Note 1}} {{dummy ref|Note 2}} {{dummy ref|Note 3}}.
:For a single use footnote, the label is followed by a caret (^) that is a backlink to the matching footnote marker. For example:
{{dummy footnote|margin=5em}}
:If a named footnote is used in the text multiple times, then the footnote has multiple backlinks shown as letters:
{{dummy footnote|2|a b c|margin=5em}}
:Clicking on the backlink or pressing {{keypress|Alt|←}} returns to the footnote marker.
===Footnotes in action===
The superscript numeral "1" in square brackets at the end of this sentence is an example of a footnote marker.<ref>This is a footnote that contains a citation or note.</ref>
{{reflist}}
{{anchor|Footnote markers: the basics}}
==Footnotes: the basics==
{{See also|Help:Reftags}}
To create the footnote marker, determine the point in the page content where the marker is desired and enter the markup with the citation or note inside the {{tag|ref}} tags. For example:
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
The {{tl|reflist}} template will be explained in the next section.
The content inside the {{tag|ref}} will show in the reference list. The ref tags can be added anywhere a citation or note is needed. There must be content inside the tags, else an error will show.
===Where to place ref tags===
Ref tags should follow any punctuation (usually a period), not precede it; see [[WP:REFPUNC]]. There should be no space between the punctuation and the tag:
{{markup
|<nowiki>...text.<ref>Content of the reference</ref>
{{reflist}}</nowiki>
|...text.<ref>Content of the reference</ref> {{xt|Right}}
{{reflist}}
|<nowiki>...text<ref>Content of the reference</ref>.
{{reflist}}</nowiki>
|...text<ref>Content of the reference</ref>. {{!xt|Wrong (tag before punctuation)}}
{{reflist}}
|<nowiki>...text. <ref>Content of the reference</ref>
{{reflist}}</nowiki>
|...text. <ref>Content of the reference</ref> {{!xt|Wrong (space before tag)}}
{{reflist}}
}}
===Formatting ref tags===
The content of the ref tags can be formatted using most wiki markup or HTML markup, although techniques such as the [[Help:Pipe trick|pipe trick]] and [[Help:Substitution|template substitution]] will not work in footnotes. For example:
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
The ref tag content may also contain an internal or external link:
{{markup
|<nowiki>This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
{{MediaWiki URL rules}}
==Reference lists: the basics==
Once any number of footnotes have been inserted into the content, the reference list must be generated. For the basic reference list, add {{tl|reflist}} wherever the list is desired. Once the page is published and viewed, the footnotes will be automatically generated and numbered and the reference list will be generated. The main reference list is placed in a separate section, usually titled "References", "Notes" or the like.
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
==References==
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{fake heading|sub=2|References}}
{{reflist}}
}}
'''Notes'''
{{shortcut|HELP:MULTIREF}}
* In some cases, a page has more than one reference list. Until 2014, multiple uses of {{tl|reflist}} on the same page required use of a {{para|close}} parameter; that bug has been fixed and the{{para|close}} parameter may safely be removed.
*When editing, {{tag|references|s}} may be seen instead of {{tl|reflist}}. This will automatically display the references in multiple columns, but {{tag|references|s}} does not offer the other advanced features of {{tl|reflist}}.
{{anchor|Naming a ref tag so it can be used more than once|Footnote markers: using a source more than once}}
==Footnotes: using a source more than once==
{{Shortcut|WP:REFNAME|WP:NAMEDREFS}}
{{Anchor|Reference name (naming a ref tag so it can be used more than once)}}
{{Anchor|WP:NAMEDREF}} <!-- from WP:NAMEDREFS redirect -->
{{See also|Wikipedia:Citing sources#Citing multiple pages of the same source}}
You can cite the same source more than once on a page by using '''named references''', also called named footnotes. The syntax to define a named footnote is:
:{{tag|ref|params=name="<var>name</var>"|content=<var>content</var>}}
To invoke the named footnote:
:{{tag|ref|s|params=name="<var>name</var>"}}
{{refname rules}}
Note that the colon-followed-by-numeral names, like <code>":0"</code>, are currently [[Wikipedia:Village_pump_(technical)/Archive_173#VisualEditor_creating_bad_ref_names|generated by default]] in [[WP:VE|VisualEditor]].
{{markup
|<nowiki>This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" />
{{reflist}}</nowiki>
|This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" />
{{reflist}}
}}
The actual name used can be almost anything, but it is recommended that it have a connection to the citation or note. A common practice is to use the author-year or publisher-year for the reference name. This helps editors remember the name, by associating it with the information that is visible to the reader.
Note that the footnote labels are incremented in the order they are used, and that they use the same label when reused, thus the labels can seem out of order:
{{markup
|<nowiki>This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" />
{{reflist}}</nowiki>
|This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" />
{{reflist}}
}}
When using both names and [[#Footnotes:_groups|groups]], the syntax is:
:{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}}
Care should be taken when deleting references to avoid creating a cite error. See [[Wikipedia:Avoiding common mistakes#Deleting...|Avoiding common mistakes]].
==Reference lists: columns==
{{shortcut|H:REFCOLS}}
{{hatnote|Columns are not supported by Internet Explorer 9 and below; see {{tl|reflist}} for technical details}}
When using {{tag|references|s}} or {{tl|reflist}}, the list can be split into columns. The {{tag|references|s}} tag provides a default column width of 30 [[em (typography)|em]]. {{tl|Reflist}} can be used to set a different column width:
:{{tlx|reflist|<var>xx</var>em}}, where <var>xx</var> is the column width in em.
The number of columns will automatically be adjusted to the width of the display. It should be used only when necessary, as both the tag and the template have built-in auto-formatting capabilities providing a useful default display in most scenarios.
The [[Template:Reflist#Columns|set columns feature]] is now [[deprecated]] in favor of the option described above, which is better suited to flexible formatting for a variety of display screen sizes, ranging from mobile phones and tablets to wide-screen "cinema" displays. Forcing a fixed number of columns has been disabled in mobile view.
The number of columns to use is up to the editor, but some major practices include:
* {{tlx|Reflist|30em}}: Where there are many footnotes plus a page-width Bibliography subsection: see {{oldid|Ebola virus disease|561190497#References|Ebola virus disease (06:28, 23 June 2013)}}
* {{tlx|Reflist|20em}}: Where {{sfnote}} are used; see {{oldid|NBR 224 and 420 Classes|442508215#Notes|NBR 224 and 420 Classes (13:32, 1 August 2011)}}.
For example:
Using {{tlx|Reflist|30em}} will create columns with a minimum width of 30 em,
{{markup|title=30em wide columns
|<nowiki>Lorem ipsum.<ref>Source name, access date, etc.</ref>
Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref>
==References==
{{Reflist|30em}}</nowiki>
|Lorem ipsum.<ref>Source name, access date, etc.</ref>
Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref>
{{fake heading|sub=3|References}}
{{Reflist|30em}}
}}
==List-defined references==
{{shortcut|WP:LDR}}
{{main|Help:List-defined references}}
Some or all of the footnotes can also be defined within the reference section/list, and invoked in the page content. This keeps those citations in one central location for easier maintenance and avoids cluttering the text. This is purely a source code change{{snd}}the actual display of the citation in the text to a reader is unaffected. For a more detailed evaluation of this method, see [[WP:LDRHOW]]. The syntax is:
<syntaxhighlight lang="xml">
{{reflist|refs=
<ref name="name1">Content</ref>
<ref name="name2">Content</ref>
<ref name="name...n">Content</ref>
}}
</syntaxhighlight>
or, alternatively,
<syntaxhighlight lang="xml">
<references>
<ref name="name1">Content</ref>
<ref name="name2">Content</ref>
<ref name="name...n">Content</ref>
</references>
</syntaxhighlight>
The footnote markers are included as usual for a named footnote. For example:
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/>
Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/>
How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/>
==References==
{{reflist|refs=
<ref name="Jukeboxes">This is the jukeboxes reference.</ref>
<ref name="LazyDog">This is the lazy dog reference.</ref>
<ref name="JumpingFrogs">This is the jumping frogs reference.</ref>
}}</nowiki>
|The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/>
Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/>
How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/>
{{fake heading|sub=3|References}}
{{reflist|refs=
<ref name="LazyDog">This is the lazy dog reference.</ref>
<ref name="Jukeboxes">This is the jukeboxes reference.</ref>
<ref name="JumpingFrogs">This is the jumping frogs reference.</ref>
}}}}
The references will be numbered, and appear in the output, ''in the order that they are first referred to in the content,'' regardless of their order within the list. All references in reference list must be referenced in the content, otherwise an error message will be shown.
Note that when you use the visual editor, you will not be able to add, remove, or change list-defined references.
{{anchor|Embedding references within footnotes}}
==Footnotes: embedding references==
{{shortcut|WP:REFNEST}}
{{See also|WP:Nesting footnotes}}
[[Help:Explanatory notes|Explanatory notes]] may need to be referenced. Because of limitations in the {{cite.php}} software, reference tags cannot be nested; that is, a set of {{tag|ref}} tags cannot be placed inside another pair of {{tag|ref}} tags. Attempting to do so will result in a cite error.
The templates {{tl|r}} and {{tl|refn}} can be used to nest references. The markup is:
:{{tlx|refn|2=group=''group''|3=name=''name''|4=''content''}} or
:{{tlx|r|2=group=''group''|3=name=''name''|4=refn=''content''}} or
:{{tlx|r|2=g=''group''|3=n=''name''|4=r=''content''}} (shorter)
''name'' and ''group'' being optional parameters. The ''content'' may include {{tag|ref|o}} tags or another {{tl|r}} template.
The other templates listed below in [[#Footnotes: predefined groups|Predefined groups]] are variants of {{tl|refn}} that include a styled group and have a matching styled reference list template.
Examples:
===Using {{tl|refn}}===
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}}
==Notes==
{{reflist|group=nb}}
==References==
{{reflist}}
</nowiki>
|The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}}
{{fake heading|sub=3|Notes}}
{{reflist|group=nb}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
===Using {{tl|r}}===
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}}
==Notes==
{{reflist|group=nb}}
==References==
{{reflist}}
</nowiki>
|The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}}
{{fake heading|sub=3|Notes}}
{{reflist|group=nb}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
The use of the magic word <code>#tag:ref</code> is valid, but the sequence of parameters is invariant and nonintuitive. {{tl|r}} as well as {{tl|refn}} and its variants use this markup internally.
:<code>{{#tag:ref|<var>refcontent</var>|group=<var>groupname</var>|name=<var>name</var>}}</code>
{{anchor|Grouping footnotes}}
==Footnotes: groups==
{{shortcut|WP:REFGROUP|WP:CITELABEL}}
Sometimes it is useful to group the footnotes into separate lists, for example to separate explanatory notes from references, or to list references for tables, image captions, infoboxes and navboxes. The sequence of footnote labels is independent in each group.
The syntax to define a footnote with a group is:
:{{tag|ref|params=group=<var>groupname</var>|content=Content}}
The footnote marker group name ''must'' be enclosed in quotes if the group name includes a space, else a cite error will occur, otherwise quotes are optional.
The syntax for the reference list with a group is:
:{{tlx|reflist|2=group=<var>groupname</var>}}
The reference list group name does not need to be enclosed in quotes.
Example:
{{markup
|<nowiki>This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation.</ref> And this needs even more clarification.<ref group=note>Another note</ref>
==Notes==
{{reflist|group=note}}
==References==
{{reflist}}</nowiki>
|This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation</ref> And this needs even more clarification.<ref group=note>Another note</ref>
{{fake heading|sub=3|Notes}}
{{reflist|group=note}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
Note that the footnote labels in the reference list show only the numbers and not the group name.
When using both names and groups, the syntax is:
:{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}}
For the repeated note:
:{{tag|ref|s|params=group="<var>groupname</var>" name="<var>name</var>"}}
==Footnotes: predefined groups==
{{shortcut|H:PREGROUP|WP:EXPLNOTE}}
{{for|technical details|Help:Cite link labels}}
{{for|Shortened footnotes with explanatory footnotes|Help:Shortened footnotes#Explanatory notes}}
{{See also|Wikipedia:Citing sources#Variation in citation methods|Wikipedia:Manual of Style/Layout#Notes and references}}
<section begin=pregroup /><!--this section is used as the documentation for the efn/notelist templates-->{{anchor|footnotes_predefined_groups}}
There are several predefined groups that can have a reference list styled so that the label (a superscripted character within square brackets, e.g., {{dummy ref|1}}) of an [[Help:Explanatory notes|explanatory note]] or citation ({{aka}} footnote, reference) matches and links to the note marker label located in the main text and the label in front of the note's text in the appropriate group's list. There can be [[Wikipedia:Citing sources#Separating citations from explanatory footnotes|more than one of these groups' lists]] in the Notes, References and other similarly purposed sections.
These predefined note and citation groups have templates that make the [[wikitext]] markup simpler. These templates also allow a standard reference to be inserted, so that an explanatory note can have a reference, or citations can be nested.
'''Note:''' If the note's text has a reference name that is used more than once, the labels will still match, but the clickable alpha characters that toggle the note's display will be ''next to'' the note's label, with links to the multiple locations of its marker in the main text. See [[Help:Footnotes#Footnotes: using a source more than once|WP:REFNAME]] and the first point below in [[#Issues|§ Issues]].
===Template use by reference group type===
<section begin=pregrouptable />
{| class="wikitable"
|- style="vertical-align:top;"
! Group type !! Footnote marker template<br/>or markup !! Reference list<br/> template !! Sample labels
|-
|rowspan=3|''none by default, but optionally any'' || {{tag|ref}}
|rowspan=3| {{tlx|reflist}}
|rowspan=3| 1 2 3 4 5 6 7 8 9 10
|-
| {{tlx|r}} (for nested references)
|-
| {{tlx|refn}} (for nested references)
|-
| lower-alpha || {{tlx|efn}}<br />{{tlx|efn-la}} || {{tlx|notelist}}<br />{{tlx|notelist-la}} || a b c d e f g h i j
|-
| upper-alpha || {{tlx|efn-ua}} || {{tlx|notelist-ua}} || A B C D E F G H I J
|-
| lower-roman || {{tlx|efn-lr}} || {{tlx|notelist-lr}} || i ii iii iv v vi vii viii ix x
|-
| upper-roman || {{tlx|efn-ur}} || {{tlx|notelist-ur}} || I II III IV V VI VII VIII IX X
|-
| lower-greek || {{tlx|efn-lg}} || {{tlx|notelist-lg}} || α β γ δ ε ζ η θ ι κ
|-
|note || {{tlx|NoteTag}} || {{tlx|NoteFoot}} || note 1 note 2 note 3
|}<section end=pregrouptable />
* {{tlx|efn}} supports {{para|name}} and {{para|group}}, which work the same as the parameters in {{tag|ref|o}} (see, for instance, the 3rd and 4th examples below). Do not enclose values in quotes.
* {{tlx|notelist}} supports the {{para|colwidth}}, {{para|refs}}, and {{para|group}} parameters, which work the same as the parameters in {{tlx|reflist}}. Do not enclose values in quotes.
In these examples, the footnote labels match between the footnote marker and the reference list:
{{markup|title=With lower-alpha labels
|<nowiki>Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}}
{{notelist}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}}
{{notelist}}
}}
{{markup|title=With lower-roman labels
|<nowiki>Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}}
{{notelist-lr}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}}
{{notelist-lr}}
}}
{{markup|title=With named references
|<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist}}
}}
Note: With named references you only need to add the details once. For each use after the first you just need to re-use the reference name. Doing this will not cause the inline superscript to display a custom name.
{{markup|title=Named references can also be defined in the notelist
|<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist|refs=
{{efn|name=fn1|Very long footnote 1}}
{{efn|name=fn2|Very long footnote 2}}
}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist|refs=
{{efn|name=fn1|Very long footnote 1}}
{{efn|name=fn2|Very long footnote 2}}
}}
}}
'''Note''': Due to limitations in the MediaWiki software, do not use list defined footnotes that contain references.
===Issues===
* Multiple backlink labels (see [[WP:REFNAME]]) are always styled as lower-alpha. This can be confusing when {{tlx|efn}} is used. See the note in the introduction of [[#footnotes_predefined_groups|this section]], above.
* The entries in the reference list will show the default decimal styling if:
** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} does not exactly match one of the predefined values; use {{tlx|efn}} or variant as {{para|group}} will not be needed.
** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} is enclosed by quotes; use {{tlx|efn}} or variant as {{para|group}} will not be needed.
** {{tlx|reflist}} is indented with the {{code|:}} markup.
** {{tag|references|s}} is used instead of {{tlx|reflist}}
* The entries in the reference list will have no styling if:
** A reference is included in {{tlx|navbox}} or one of the variants and the style is set to <code>bodyclass=hlist</code>; to resolve this, replace the style with <code>listclass=hlist</code>.<section end=pregroup />
* If the note text contains an "=" sign, precede the note text with {{para|1}}, like this: <code><nowiki>{{efn|name=fn1|1=Very long footnote with an equation, 2+2=4}}</nowiki></code>
==Reference lists: automatically generated==
{{main|Help:Automatically generated reference list}}
A page with {{tag|ref|o}} tags but no reference list markup used to display an error, except on talk and user pages. In recent versions of Wikipedia, the error no longer appears; instead an automatically generated reference list (AGRL) is displayed at the bottom of the page.
Compared to the reference lists on properly formatted pages, an AGRL can be confusing to both readers and editors. But it is easily corrected by adding reference list markup such as the following. Add it at the position where the reference list would normally appear.
<syntaxhighlight lang="wikitext" style="width: 10.6em;">
==References==
{{reflist}}
</syntaxhighlight>
On talk pages, the {{tl|reflist-talk}} template can be used to add a reference list to a specific discussion.
{{anchor|Citing one book repeatedly with different page numbers}}
==Footnotes: page numbers==
{{main|Help:References and page numbers}}
Suppose you would like to cite one book, but different facts appear on different pages. You would like to cite the book again and again, but point each fact to the proper page. Suppose one fact is on page 8, a different fact on page 12, a third fact on page 18, a fourth fact on page 241. You could put a line in the "pages" parameter saying "see pages 8, 12, 18, 241" but a fact-checker might have to check all of them before figuring out the right one. Or, you could duplicate the entire citation for the book in each instance, but that would be redundant.
One common approach is to use [[Help:Shortened footnotes|shortened citations]]. The long citation to support the shortened citations can either be placed as a bullet point in a separate ''References section'' after the ''Footnotes section''; or it can be placed in the first footnote to cite the source (with the initial relevant page number[s]). The remaining footnotes will use shortened citations (these usually contain the author's last name, the date of publication, and the relevant page number[s]).
A less common approach is to attach a {{tlx|rp|8}} right after the footnote marker and replace the "8" with the appropriate page number. For example:
{{markup
|<nowiki>Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}</nowiki>
|Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
{{tlx|r}} compactly combines the functions of <code><nowiki><ref></nowiki></code> and {{t|rp}}: <code><nowiki>{{r|Schudson}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/></nowiki></code> and <code><nowiki>{{r|Schudson|p=241}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/>{{rp|241}}</nowiki></code>.
==Previewing edits==
When you [[Help:Section#Section editing|edit a single section]] of a page, the footnotes list will be visible when you [[Help:Show preview|preview your edits]] under the heading "Preview of references", although you will still not be able to see named references whose definition is outside the section you are editing.
Tools that can be used are the [[user:js/ajaxPreview]] or [[User:Anomie/ajaxpreview.js]] scripts or the [[User:Cacycle/wikEd|wikEd]] gadget.
==RefToolbar==
{{main|Wikipedia:RefToolbar/2.0}}
[[File:Cite web named ref 01.png|thumb|400px|Using the citation toolbar to name the first reference.]]
[[File:Citation toolbar named ref.png|thumb|400px|Using the citation toolbar to insert additional references to the first source.]]
You can use the citation toolbar to name references. When you first create a reference, you can enter a value in the "Ref name" box. When you want to reuse this reference, click the "Named references" button on the citation toolbar and choose which reference you would like to insert.
{{clear}}
==Issues and limitations==
* {{cite.php|bug}}
* [[Help:Substitution|subst:]] does not work within {{tag|ref|o}} tags. {{phab|T4700}}
* The [[Help:Pipe trick|pipe trick]] does not work within {{tag|ref|o}} tags. {{phab|T4700}}
== Flagging inadequate referencing ==
{{See also | Template: Unreferenced/doc#Usage|Template:Citation style}}
* The template {{Tlx|Refimprove}} should be added to articles where there are '''some, but insufficient, inline citations to support the material''' currently in the article. For [[WP:BLP|biographies of living persons]], use {{tlx|BLP sources}} instead.
* The template {{Tlx|Unreferenced}} should be added to articles with '''no references at all'''. For biographies of living persons, use {{tlx|BLP unsourced}} instead.
* The template {{Tlx|Unreferenced section}} is for '''individual sections that have no citations''' in articles that have at least one citation somewhere else. For biographies of living persons, use {{tlx|BLP unsourced section}} instead.
* The template {{Tlx|Medref}} is specifically for articles '''needing additional ''medical'' references'''.
==See also==
* [[Template:Harvard citation#Using CITEREF directly]] and {{tl|sfnref}}
* [[Wikipedia:Citing sources/Further considerations]]—a how-to article with some additional considerations for citing sources
* [[Wikipedia:Help desk]]—to ask questions about using footnotes in articles if you were not able to find the information you need on this help page.
*[[Template:Editor tools]]—{{tl|Editor tools}}
{{Wikipedia referencing}}
{{Help navigation}}
[[Category:Wikipedia editor help]]
[[Category:Wikipedia citation administration]]
5da4bd8b070c8a7aaa5dac9fc84a9f447a9061cd
Template:Infobox year in country/doc
10
1351
2686
2023-08-20T20:19:59Z
w>Tassedethe
0
v2.05 - Repaired 1 link to disambiguation page - [[WP:DPL|(You can help)]] - [[Michael Jeffery]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This template may be used on any page formatted as '(Year) in (Place)' (e.g. [[1967 in Australia]]). But as of 2021-10-06 it is common only on pages about 'Year in Australia'.
== Usage ==
<syntaxhighlight lang="wikitext">
{{Infobox year in country
| year =
| country =
| monarch =
| president =
| governor-general =
| pm =
| population =
| australian =
| elections =
}}
</syntaxhighlight>
== Parameters ==
All parameters are optional. Separate multiple values using {{tl|Plainlist}} or {{tl|Flatlist}}
; year :
; country : May be wikilinked; if not present, infobox title defaults to page name
; monarch :
; president :
; governor-general :
; pm : Prime minister
; population :
; australian : [[Australian of the Year]] awardee; for Australia only
; elections :
== Examples ==
{{Infobox year in country
| year = 1967
| monarch = Queen [[Elizabeth II]]
| governor-general = [[Richard Casey, Baron Casey|Richard Casey]]
| pm = [[Harold Holt]], then [[John McEwen]]
| population = 11,912,253
| australian = [[The Seekers]]
| elections = {{Plainlist|
* [[1967 Australian Senate election|Half-senate]]
* [[1967 Australian referendum (Aboriginals)|referendum]]
}}
}}
{{Infobox year in country
| year = 2007
| country = [[Australia]]
| monarch = Queen [[Elizabeth II]]
| governor-general = [[Michael Jeffery (Australian Army officer)|Michael Jeffery]]
| pm = [[John Howard]], then [[Kevin Rudd]]
| population = 21,161,323
| australian = [[Tim Flannery]]
| elections = {{Plainlist|
* [[2007 New South Wales state election|New South Wales]]
* [[2007 Australian federal election|federal]]
}}
}}
== How to get information for Australia ==
*Monarch: Generally contained within the article, but if not, see [http://www.genuki.org.uk/big/royalty/index.html#list here] for a good list.
*Governor-General: Generally contained within the article, but if not, see [http://www.gg.gov.au/governorgeneral/category.php?id=3 here] for a good list.
*Prime Minister: Generally contained within the article, but if not, see [http://pandora.nla.gov.au/pan/10052/20071016-1104/www.pm.gov.au/past_pm/index.html#biographies here] for a good list.
*Population: See [http://www.abs.gov.au/AUSSTATS/ABS@Archive.nsf/log?openagent&3105065001_table2.xls&3105.0.65.001&DataCubes&7BB5E247A5A2F416CA25717600229537&0&2006&23.05.2006&Latest here] (since 1901) or [http://www.abs.gov.au/AUSSTATS/ABS@Archive.nsf/log?openagent&3105065001_table1.xls&3105.0.65.001&DataCubes&3451B0B3478CB42ECA2571760022670D&0&2006&23.05.2006&Latest here] (since 1788). Some older results do not include indigenous peoples. 'Since 1901' generally contains this data.
*Australian of the Year: See [[Australian of the Year]].
*Elections: See [http://elections.uwa.edu.au/electionsearch.lasso here] for state elections (specify state and date - both are optional). See [http://www.aph.gov.au/library/elect/elecdate.htm here] for federal elections.
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates|Year In Country]]
[[Category:Year in region templates| ]]
}}</includeonly>
e6a4b9427473f3076fb833ef46de2b2b20312044
Module:Language/data/iana languages
828
468
1035
2023-08-21T15:41:21Z
wikipedia>Trappist the monk
0
update to 2023-08-02 data;
Scribunto
text/plain
-- File-Date: 2023-08-02
local active = {
["aa"] = {"Afar"},
["ab"] = {"Abkhazian"},
["ae"] = {"Avestan"},
["af"] = {"Afrikaans"},
["ak"] = {"Akan"},
["am"] = {"Amharic"},
["an"] = {"Aragonese"},
["ar"] = {"Arabic"},
["as"] = {"Assamese"},
["av"] = {"Avaric"},
["ay"] = {"Aymara"},
["az"] = {"Azerbaijani"},
["ba"] = {"Bashkir"},
["be"] = {"Belarusian"},
["bg"] = {"Bulgarian"},
["bh"] = {"Bihari languages"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengali", "Bangla"},
["bo"] = {"Tibetan"},
["br"] = {"Breton"},
["bs"] = {"Bosnian"},
["ca"] = {"Catalan", "Valencian"},
["ce"] = {"Chechen"},
["ch"] = {"Chamorro"},
["co"] = {"Corsican"},
["cr"] = {"Cree"},
["cs"] = {"Czech"},
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},
["cv"] = {"Chuvash"},
["cy"] = {"Welsh"},
["da"] = {"Danish"},
["de"] = {"German"},
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Modern Greek (1453-)"},
["en"] = {"English"},
["eo"] = {"Esperanto"},
["es"] = {"Spanish", "Castilian"},
["et"] = {"Estonian"},
["eu"] = {"Basque"},
["fa"] = {"Persian"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faroese"},
["fr"] = {"French"},
["fy"] = {"Western Frisian"},
["ga"] = {"Irish"},
["gd"] = {"Scottish Gaelic", "Gaelic"},
["gl"] = {"Galician"},
["gn"] = {"Guarani"},
["gu"] = {"Gujarati"},
["gv"] = {"Manx"},
["ha"] = {"Hausa"},
["he"] = {"Hebrew"},
["hi"] = {"Hindi"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croatian"},
["ht"] = {"Haitian", "Haitian Creole"},
["hu"] = {"Hungarian"},
["hy"] = {"Armenian"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indonesian"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Icelandic"},
["it"] = {"Italian"},
["iu"] = {"Inuktitut"},
["ja"] = {"Japanese"},
["jv"] = {"Javanese"},
["ka"] = {"Georgian"},
["kg"] = {"Kongo"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kazakh"},
["kl"] = {"Kalaallisut", "Greenlandic"},
["km"] = {"Khmer", "Central Khmer"},
["kn"] = {"Kannada"},
["ko"] = {"Korean"},
["kr"] = {"Kanuri"},
["ks"] = {"Kashmiri"},
["ku"] = {"Kurdish"},
["kv"] = {"Komi"},
["kw"] = {"Cornish"},
["ky"] = {"Kirghiz", "Kyrgyz"},
["la"] = {"Latin"},
["lb"] = {"Luxembourgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgan", "Limburger", "Limburgish"},
["ln"] = {"Lingala"},
["lo"] = {"Lao"},
["lt"] = {"Lithuanian"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvian"},
["mg"] = {"Malagasy"},
["mh"] = {"Marshallese"},
["mi"] = {"Maori"},
["mk"] = {"Macedonian"},
["ml"] = {"Malayalam"},
["mn"] = {"Mongolian"},
["mr"] = {"Marathi"},
["ms"] = {"Malay (macrolanguage)"},
["mt"] = {"Maltese"},
["my"] = {"Burmese"},
["na"] = {"Nauru"},
["nb"] = {"Norwegian Bokmål"},
["nd"] = {"North Ndebele"},
["ne"] = {"Nepali (macrolanguage)"},
["ng"] = {"Ndonga"},
["nl"] = {"Dutch", "Flemish"},
["nn"] = {"Norwegian Nynorsk"},
["no"] = {"Norwegian"},
["nr"] = {"South Ndebele"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Occitan (post 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromo"},
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},
["os"] = {"Ossetian", "Ossetic"},
["pa"] = {"Panjabi", "Punjabi"},
["pi"] = {"Pali"},
["pl"] = {"Polish"},
["ps"] = {"Pushto", "Pashto"},
["pt"] = {"Portuguese"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh"},
["rn"] = {"Rundi"},
["ro"] = {"Romanian", "Moldavian", "Moldovan"},
["ru"] = {"Russian"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardinian"},
["sd"] = {"Sindhi"},
["se"] = {"Northern Sami"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Croatian"},
["si"] = {"Sinhala", "Sinhalese"},
["sk"] = {"Slovak"},
["sl"] = {"Slovenian"},
["sm"] = {"Samoan"},
["sn"] = {"Shona"},
["so"] = {"Somali"},
["sq"] = {"Albanian"},
["sr"] = {"Serbian"},
["ss"] = {"Swati"},
["st"] = {"Southern Sotho"},
["su"] = {"Sundanese"},
["sv"] = {"Swedish"},
["sw"] = {"Swahili (macrolanguage)"},
["ta"] = {"Tamil"},
["te"] = {"Telugu"},
["tg"] = {"Tajik"},
["th"] = {"Thai"},
["ti"] = {"Tigrinya"},
["tk"] = {"Turkmen"},
["tl"] = {"Tagalog"},
["tn"] = {"Tswana"},
["to"] = {"Tonga (Tonga Islands)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsonga"},
["tt"] = {"Tatar"},
["tw"] = {"Twi"},
["ty"] = {"Tahitian"},
["ug"] = {"Uighur", "Uyghur"},
["uk"] = {"Ukrainian"},
["ur"] = {"Urdu"},
["uz"] = {"Uzbek"},
["ve"] = {"Venda"},
["vi"] = {"Vietnamese"},
["vo"] = {"Volapük"},
["wa"] = {"Walloon"},
["wo"] = {"Wolof"},
["xh"] = {"Xhosa"},
["yi"] = {"Yiddish"},
["yo"] = {"Yoruba"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Chinese"},
["zu"] = {"Zulu"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Arbëreshë Albanian"},
["aaf"] = {"Aranadan"},
["aag"] = {"Ambrak"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Algerian Saharan Arabic"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Eastern Abnaki"},
["aas"] = {"Aasáx"},
["aat"] = {"Arvanitika Albanian"},
["aau"] = {"Abau"},
["aav"] = {"Austro-Asiatic languages"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasi"},
["aba"] = {"Abé"},
["abb"] = {"Bankon"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Western Abnaki"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Tajiki Arabic"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinese"},
["acf"] = {"Saint Lucian Creole French"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Mesopotamian Arabic"},
["acn"] = {"Achang"},
["acp"] = {"Eastern Acipa"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Hijazi Arabic"},
["acx"] = {"Omani Arabic"},
["acy"] = {"Cypriot Arabic"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Dhofari Arabic"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Adamorobe Sign Language"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Amdo Tibetan"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"Tunisian Arabic"},
["aec"] = {"Saidi Arabic"},
["aed"] = {"Argentine Sign Language"},
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Armenian Sign Language"},
["aeq"] = {"Aer"},
["aer"] = {"Eastern Arrernte"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"Afro-Asiatic languages"},
["afb"] = {"Gulf Arabic"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Afghan Sign Language"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Afro-Seminole Creole"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Central Cagayan Agta"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Southern Alta"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (China)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Antigua and Barbuda Creole English"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Assyrian Neo-Aramaic"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (Japan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (South Sudan)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleut"},
["alf"] = {"Alege"},
["alg"] = {"Algonquian languages"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Gheg Albanian"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutor"},
["als"] = {"Tosk Albanian"},
["alt"] = {"Southern Altai"},
["alu"] = {"'Are'are"},
["alv"] = {"Atlantic-Congo languages"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papua New Guinea)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Southern Amami-Oshima"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Western Neo-Aramaic"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Old English (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (India)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (India)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"Apache languages"},
["apb"] = {"Sa'a"},
["apc"] = {"Levantine Arabic"},
["apd"] = {"Sudanese Arabic"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Jicarilla Apache"},
["apk"] = {"Kiowa Apache"},
["apl"] = {"Lipan Apache"},
["apm"] = {"Mescalero-Chiricahua Apache"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatani"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Western Apache"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"Alacalufan languages"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"Algic languages"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Northern Alta"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Standard Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["ard"] = {"Arabana"},
["are"] = {"Western Arrarnta"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungun", "Mapuche"},
["aro"] = {"Araona"},
["arp"] = {"Arapaho"},
["arq"] = {"Algerian Arabic"},
["arr"] = {"Karo (Brazil)"},
["ars"] = {"Najdi Arabic"},
["art"] = {"Artificial languages"},
["aru"] = {"Aruá (Amazonas State)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Rodonia State)"},
["ary"] = {"Moroccan Arabic"},
["arz"] = {"Egyptian Arabic"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"American Sign Language"},
["asf"] = {"Auslan", "Australian Sign Language"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Algerian Sign Language"},
["asq"] = {"Austrian Sign Language"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Australian Aborigines Sign Language"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"Athapascan languages"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Northern Altai"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"Arauan languages"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (Nigeria)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"Australian languages"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Uzbeki Arabic"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Eastern Egyptian Bedawi Arabic"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papua New Guinea)"},
["awc"] = {"Cicipu"},
["awd"] = {"Arawakan languages"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"South Awyu"},
["awt"] = {"Araweté"},
["awu"] = {"Central Awyu"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Central African Republic)"},
["axl"] = {"Lower Southern Aranda"},
["axm"] = {"Middle Armenian"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Southern Aymara"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Hadrami Arabic"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Libyan Arabic"},
["ayn"] = {"Sanaani Arabic"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"North Mesopotamian Arabic"},
["ayq"] = {"Ayi (Papua New Guinea)"},
["ayr"] = {"Central Aymara"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"South Azerbaijani"},
["azc"] = {"Uto-Aztecan languages"},
["azd"] = {"Eastern Durango Nahuatl"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"North Azerbaijani"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Western Durango Nahuatl"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Highland Puebla Nahuatl"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"Banda languages"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Bahamas Creole English"},
["bai"] = {"Bamileke languages"},
["baj"] = {"Barakai"},
["bal"] = {"Baluchi"},
["ban"] = {"Balinese"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Bavarian"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"Baltic languages"},
["bau"] = {"Bada (Nigeria)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},
["bbp"] = {"West Central Banda"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (Nigeria)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Central Bai"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Southern Balochi"},
["bcd"] = {"North Babar"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Central Bikol"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (Nigeria)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Democratic Republic of Congo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (South Sudan)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (South Sudan)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Indonesian Bajau"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"West Coast Bajau"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (Zambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"Berber languages"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papua New Guinea)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Northern Bai"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"British Sign Language"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Ban Khor Sign Language"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Southern Bai"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (Laos)"},
["bgn"] = {"Western Balochi"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Eastern Balochi"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Balkan Gagauz Turkish"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Bohtan Neo-Aramaic"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (Indonesia)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Southern Birifor"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papua New Guinea)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Mid-Southern Banda"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Democratic Republic of Congo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Northern Sorsoganon"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (South Sudan)"},
["bln"] = {"Southern Catanduanes Bikol"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Northern Betsimisaraka Malagasy"},
["bmn"] = {"Bina (Papua New Guinea)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (Indonesia)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Eastern Tawbuid"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"Bantu languages"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Bamako Sign Language"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Central African Republic)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Banda Malay"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papua New Guinea)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Bulgarian Sign Language"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (Nigeria)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Bengkala Sign Language"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Berbice Creole Dutch"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Eastern Bru"},
["brv"] = {"Western Bru"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (India)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardi"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Bacanese Malay"},
["btk"] = {"Batak languages"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buriat"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginese"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Berau Malay"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Bolivian Sign Language"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (Indonesia)"},
["bvu"] = {"Bukit Malay"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Southern Bobo Madaré"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (Ghana)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Mongolia Buriat"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Russia Buriat"},
["bxs"] = {"Busam"},
["bxu"] = {"China Buriat"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (Nigeria)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Southern Betsimisaraka Malagasy"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Belize Kriol English"},
["bzk"] = {"Nicaragua Creole English"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (Indonesia)"},
["bzr"] = {"Biri"},
["bzs"] = {"Brazilian Sign Language"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (Nigeria)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifuna"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Southern Carrier"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"Central American Indian languages"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinian"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Galibi Carib"},
["cas"] = {"Tsimané"},
["cau"] = {"Caucasian languages"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"Chibchan languages"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalian"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Cafundo Creole"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Malaccan Creole Malay"},
["ccn"] = {"North Caucasian languages"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"South Caucasian languages"},
["cda"] = {"Choni"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Min Dong Chinese"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Chadian Sign Language"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Lower Chehalis"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Eastern Khumi Chin"},
["cel"] = {"Celtic languages"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Highland Oaxaca Chontal"},
["chf"] = {"Tabasco Chontal"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Mari (Russia)"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chq"] = {"Quiotepec Chinantec"},
["chr"] = {"Cherokee"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Ozumacín Chinantec"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasaw"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrian"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Western Cham"},
["cje"] = {"Chru"},
["cjh"] = {"Upper Chehalis"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Eastern Cham"},
["cjn"] = {"Chenapian"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Jinyu Chinese"},
["ckb"] = {"Central Kurdish"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavian"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Chukot"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Chaldean Neo-Aramaic"},
["cle"] = {"Lealao Chinantec"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Lowland Oaxaca Chontal"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Eastern Highland Chatino"},
["cma"] = {"Maa"},
["cmc"] = {"Chamic languages"},
["cme"] = {"Cerma"},
["cmg"] = {"Classical Mongolian"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Mandarin Chinese"},
["cmo"] = {"Central Mnong"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Northern Qiang"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrin"},
["cns"] = {"Central Asmat"},
["cnt"] = {"Tepetotutla Chinantec"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Middle Cornish"},
["coa"] = {"Cocos Islands Malay"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comanche"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptic"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"English-based creoles and pidgins"},
["cpf"] = {"French-based creoles and pidgins"},
["cpg"] = {"Cappadocian Greek"},
["cpi"] = {"Chinese Pidgin English"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"Portuguese-based creoles and pidgins"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Pu-Xian Chinese"},
["cpy"] = {"South Ucayali Ashéninka"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Island Carib"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["cri"] = {"Sãotomense"},
["crj"] = {"Southern East Cree"},
["crk"] = {"Plains Cree"},
["crl"] = {"Northern East Cree"},
["crm"] = {"Moose Cree"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crow"},
["crp"] = {"Creoles and pidgins"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Carolina Algonquian"},
["crs"] = {"Seselwa Creole French"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chiltepec Chinantec"},
["csb"] = {"Kashubian"},
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Chiangmai Sign Language"},
["cse"] = {"Czech Sign Language"},
["csf"] = {"Cuba Sign Language"},
["csg"] = {"Chilean Sign Language"},
["csh"] = {"Asho Chin"},
["csi"] = {"Coast Miwok"},
["csj"] = {"Songlai Chin"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Chinese Sign Language"},
["csm"] = {"Central Sierra Miwok"},
["csn"] = {"Colombian Sign Language"},
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},
["csq"] = {"Croatia Sign Language"},
["csr"] = {"Costa Rican Sign Language"},
["css"] = {"Southern Ohlone"},
["cst"] = {"Northern Ohlone"},
["csu"] = {"Central Sudanic languages"},
["csv"] = {"Sumtu Chin"},
["csw"] = {"Swampy Cree"},
["csx"] = {"Cambodian Sign Language"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Tedim Chin"},
["cte"] = {"Tepinapa Chinantec"},
["ctg"] = {"Chittagonian"},
["cth"] = {"Thaiphum Chin"},
["ctl"] = {"Tlacoatzintepec Chinantec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Western Highland Chatino"},
["cts"] = {"Northern Catanduanes Bikol"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Zacatepec Chatino"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"Cushitic languages"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Woods Cree"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Huizhou Chinese"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Min Zhong Chinese"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"Land Dayak languages"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slave (Athapascan)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Central African Republic)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Southern Dagaare"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Northern Dagara"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (individual language)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"South Central Dinka"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Southwestern Dinka"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Northeastern Dinka"},
["diq"] = {"Dimli (individual language)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Northwestern Dinka"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Southeastern Dinka"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmatian"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Upper Kinabatangan"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"Mande languages"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"East Damar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Upper Grand Valley Dani"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Lower Grand Valley Dani"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Northern Lendu"},
["dnr"] = {"Danaru"},
["dnt"] = {"Mid Grand Valley Dani"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Western Dani"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Northern Dong"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (macrolanguage)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papua New Guinea)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Dominican Sign Language"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"Dravidian languages"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"West Damar"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Lower Sorbian"},
["dse"] = {"Dutch Sign Language"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Danish Sign Language"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Mardin Sign Language"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Central Dusun"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Middle Dutch (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyula"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Eastern Bontok"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Ecuadorian Sign Language"},
["ecy"] = {"Eteocypriot"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilian"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"Egyptian languages"},
["egy"] = {"Egyptian (Ancient)"},
["ehs"] = {"Miyakubo Sign Language"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Standard Estonian"},
["ekl"] = {"Kol (Bangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Eastern Kayah"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamite"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Eastern Meohang"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Eastern Maninkakan"},
["emm"] = {"Mamulique"},
["emn"] = {"Eman"},
["emp"] = {"Northern Emberá"},
["emq"] = {"Eastern Minyag"},
["ems"] = {"Pacific Gulf Yupik"},
["emu"] = {"Eastern Muria"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Epigraphic Mayan"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Forest Enets"},
["enh"] = {"Tundra Enets"},
["enl"] = {"Enlhet"},
["enm"] = {"Middle English (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Edo State)"},
["enw"] = {"Enwan (Akwa Ibom State)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (Côte d'Ivoire)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"South Efate"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"North Alaskan Inupiatun"},
["esk"] = {"Northwest Alaska Inupiatun"},
["esl"] = {"Egypt Sign Language"},
["esm"] = {"Esuma"},
["esn"] = {"Salvadoran Sign Language"},
["eso"] = {"Estonian Sign Language"},
["esq"] = {"Esselen"},
["ess"] = {"Central Siberian Yupik"},
["esu"] = {"Central Yupik"},
["esx"] = {"Eskimo-Aleut languages"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Ethiopian Sign Language"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscan"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Basque (family)"},
["eve"] = {"Even"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenki"},
["ewo"] = {"Ewondo"},
["ext"] = {"Extremaduran"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"South Fali"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Equatorial Guinea)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Southwestern Fars"},
["faz"] = {"Northwestern Fars"},
["fbl"] = {"West Albay Bikol"},
["fcs"] = {"Quebec Sign Language"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Filipino", "Pilipino"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Tornedalen Finnish", "Meänkieli"},
["fiu"] = {"Finno-Ugrian languages"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Kven Finnish"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"North Fali"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Far Western Muria"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"Formosan languages"},
["fpe"] = {"Fernando Po Creole English"},
["fqs"] = {"Fas"},
["frc"] = {"Cajun French"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Middle French (ca. 1400-1600)"},
["fro"] = {"Old French (842-ca. 1400)"},
["frp"] = {"Arpitan", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["frt"] = {"Fortsenal"},
["fse"] = {"Finnish Sign Language"},
["fsl"] = {"French Sign Language"},
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaar"},
["fud"] = {"East Futuna"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["fuh"] = {"Western Niger Fulfulde"},
["fui"] = {"Bagirmi Fulfulde"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Central-Eastern Niger Fulfulde"},
["fur"] = {"Friulian"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Nigerian Fulfulde"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Mixed Great Andamanese"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauz"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Gan Chinese"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"West Central Oromo"},
["gba"] = {"Gbaya (Central African Republic)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Northern Grebo"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Eastern Xwla Gbe"},
["gby"] = {"Gbari"},
["gbz"] = {"Zoroastrian Dari"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Guadeloupean Creole French"},
["gcl"] = {"Grenadian Creole English"},
["gcn"] = {"Gaina"},
["gcr"] = {"Guianese Creole French"},
["gct"] = {"Colonia Tovar German"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Ghandruk Sign Language"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Hutterite German", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"Germanic languages"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Hiberno-Scottish Gaelic"},
["ghe"] = {"Southern Ghale"},
["ghh"] = {"Northern Ghale"},
["ghk"] = {"Geko Karen"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertese"},
["gim"] = {"Gimi (Eastern Highlands)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (West New Britain)"},
["giq"] = {"Green Gelao"},
["gir"] = {"Red Gelao"},
["gis"] = {"North Giziga"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"White Gelao"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"South Giziga"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Gurindji Kriol"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Madang Province)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Guinea Kpelle"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Chad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"East Germanic languages"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Middle High German (ca. 1050-1500)"},
["gml"] = {"Middle Low German"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"North Germanic languages"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"West Germanic languages"},
["gmx"] = {"Magoma"},
["gmy"] = {"Mycenaean Greek"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guanche"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Northern Gondi"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Western Bolivian Guaraní"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Old High German (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothic"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Ghanaian Pidgin English"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (Brazil)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Rajput Garasia"},
["grb"] = {"Grebo"},
["grc"] = {"Ancient Greek (to 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Southern Grebo"},
["grk"] = {"Greek languages"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Central Grebo"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Barclayville Grebo"},
["grz"] = {"Guramalum"},
["gse"] = {"Ghanaian Sign Language"},
["gsg"] = {"German Sign Language"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Guatemalan Sign Language"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Southwest Gbaya"},
["gsp"] = {"Wasembo"},
["gss"] = {"Greek Sign Language"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Paraguayan Guaraní"},
["guh"] = {"Guahibo"},
["gui"] = {"Eastern Bolivian Guaraní"},
["guk"] = {"Gumuz"},
["gul"] = {"Sea Island Creole English"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Guinean Sign Language"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (Paraguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Southern"},
["gya"] = {"Northwest Gbaya"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Guyanese Creole English"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Hanoi Sign Language"},
["hac"] = {"Gurani"},
["had"] = {"Hatam"},
["hae"] = {"Eastern Oromo"},
["haf"] = {"Haiphong Sign Language"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Hakka Chinese"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiian"},
["hax"] = {"Southern Haida"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Ancient Hebrew"},
["hbu"] = {"Habu"},
["hca"] = {"Andaman Creole Hindi"},
["hch"] = {"Huichol"},
["hdn"] = {"Northern Haida"},
["hds"] = {"Honduras Sign Language"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Northern Qiandong Miao"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Fiji Hindi"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hinduri"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittite"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Hieroglyphic Luwian"},
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},
["hmf"] = {"Hmong Don"},
["hmg"] = {"Southwestern Guiyang Hmong"},
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},
["hmn"] = {"Hmong", "Mong"},
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},
["hmq"] = {"Eastern Qiandong Miao"},
["hmr"] = {"Hmar"},
["hms"] = {"Southern Qiandong Miao"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},
["hmx"] = {"Hmong-Mien languages"},
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},
["hmz"] = {"Hmong Shua", "Sinicized Miao"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Southern Hindko"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Northern Hindko"},
["hns"] = {"Caribbean Hindustani"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Mari (Madang Province)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothi", "Haroti"},
["hok"] = {"Hokan languages"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Ho Chi Minh City Sign Language"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Horned Miao"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrik"},
["hrz"] = {"Harzani"},
["hsb"] = {"Upper Sorbian"},
["hsh"] = {"Hungarian Sign Language"},
["hsl"] = {"Hausa Sign Language"},
["hsn"] = {"Xiang Chinese"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Middle Hittite"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastec"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzib"},
["hvc"] = {"Haitian Vodoun Culture Language"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Western Armenian"},
["hyx"] = {"Armenian (family)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Icelandic Sign Language"},
["icr"] = {"Islander Creole English"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Indo-Portuguese"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Based Pidgin"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"Indo-Iranian languages"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"Ijo languages"},
["ijs"] = {"Southeast Ijo"},
["ike"] = {"Eastern Canadian Inuktitut"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Inuit Sign Language"},
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (Malaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (Philippines)"},
["ils"] = {"International Sign"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsian"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingush"},
["inj"] = {"Jungle Inga"},
["inl"] = {"Indonesian Sign Language"},
["inm"] = {"Minaean"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Indian Sign Language"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"Iranian languages"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"Iroquoian languages"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Italian Sign Language"},
["isg"] = {"Irish Sign Language"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Israeli Sign Language"},
["ist"] = {"Istriot"},
["isu"] = {"Isu (Menchum Division)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"Italic languages"},
["itd"] = {"Southern Tidung"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Judeo-Italian"},
["itl"] = {"Itelmen"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatec"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (Congo)"},
["izh"] = {"Ingrian"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Jamaican Creole English"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"New Caledonian Javanese"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Jambi Malay"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Judeo-Berber"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Jamaican Country Sign Language"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Judeo-Tat"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Judeo-Georgian"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Jhankot Sign Language"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Kaduna State)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Youle Jinuo"},
["jiv"] = {"Shuar"},
["jiy"] = {"Buyuan Jinuo"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Mobwa Karen"},
["jko"] = {"Kubo"},
["jkp"] = {"Paku Karen"},
["jkr"] = {"Koro (India)"},
["jks"] = {"Amami Koniya Sign Language"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Jamaican Sign Language"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (Nigeria)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (Nigeria)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Western Juxtlahuaca Mixtec"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Jordanian Sign Language"},
["jow"] = {"Jowulu"},
["jpa"] = {"Jewish Palestinian Aramaic"},
["jpr"] = {"Judeo-Persian"},
["jpx"] = {"Japanese (family)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Judeo-Arabic"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Japanese Sign Language"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Jumla Sign Language"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Caribbean Javanese"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Judeo-Yemeni Arabic"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpak", "Karakalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Central African Republic)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (Kenya)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"Karen languages"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardian"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Central African Republic)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (Indonesia)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantan"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},
["kcm"] = {"Gula (Central African Republic)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"Kordofanian languages"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaim"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Eastern Keres"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Democratic Republic of Congo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"West Kewa"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Northwestern Kolami"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (India)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kannada Kurumba"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnauri"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsari"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (Côte d'Ivoire)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhi", "Kutchi"},
["kfs"] = {"Bilaspuri"},
["kft"] = {"Kanjari"},
["kfu"] = {"Katkari"},
["kfv"] = {"Kurmukar"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Selangor Sign Language"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"Khoisan languages"},
["khj"] = {"Kuturmi"},
["khk"] = {"Halh Mongolian"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanese", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Democratic Republic of Congo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Eastern Parbate Kham"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (individual language)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Northeast Kiwai"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Coastal Konjo"},
["kjd"] = {"Southern Kiwai"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Highland Konjo"},
["kjl"] = {"Western Parbate Kham"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Harijan Kinnauri"},
["kjp"] = {"Pwo Eastern Karen"},
["kjq"] = {"Western Keres"},
["kjr"] = {"Kurudu"},
["kjs"] = {"East Kewa"},
["kjt"] = {"Phrae Pwo Karen"},
["kju"] = {"Kashaya"},
["kjv"] = {"Kaikavian Literary Language"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Mabaka Valley Kalinga"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (Nigeria)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Southern Dong"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papua New Guinea)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (Nigeria)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (India)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Northern Kurdish"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Karipúna Creole French"},
["kmw"] = {"Komo (Democratic Republic of Congo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Khorasani Turkish"},
["kna"] = {"Dera (Nigeria)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Central Kanuri"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Western Kanjobal"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (individual language)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (Guinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komi-Permyak"},
["kok"] = {"Konkani (macrolanguage)"},
["kol"] = {"Kol (Papua New Guinea)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraean"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komi-Zyrian"},
["kpw"] = {"Kobon"},
["kpx"] = {"Mountain Koiali"},
["kpy"] = {"Koryak"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Eastern Krahn"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Northern Kissi"},
["kqt"] = {"Klias River Kadazan"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karachay-Balkar"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelian"},
["krn"] = {"Sapo"},
["kro"] = {"Kru languages"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (Sudan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Western Krahn"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Southern Kalinga"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Southern Kisi"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"S'gaw Karen"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"North Muyu"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"South Muyu"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kituba (Democratic Republic of Congo)"},
["ktv"] = {"Eastern Katu"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Bas-Uélé District)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papua New Guinea)"},
["kuf"] = {"Western Katu"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumyk"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Upper Kuskokwim"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (Indonesia)"},
["kve"] = {"Kalabakan"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Korean Sign Language"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Geba Karen"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Lahta Karen", "Lahta"},
["kvu"] = {"Yinbaw Karen"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Yintale Karen", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["kwx"] = {"Khirwar"},
["kwy"] = {"San Salvador Kongo"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (Ethiopia)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Zayein Karen"},
["kxm"] = {"Northern Khmer"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papua New Guinea)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Northern Binukidnon"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Western Kayah"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Western Karaboro"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Tshopo District)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Southern Subanen"},
["lab"] = {"Linear A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladino"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Uganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Chad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lak"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Central Bontok"},
["lbl"] = {"Libon Bikol"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Libyan Sign Language"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Western Lawa"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Luri"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Democratic Republic of Congo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papua New Guinea)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lezghian"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (South Sudan)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (Indonesia)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"West-Central Limba"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligurian"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Liberian English"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (Guinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papua New Guinea)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Chad)"},
["llp"] = {"North Efate"},
["llq"] = {"Lolak"},
["lls"] = {"Lithuanian Sign Language"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"East Limba"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"South Lembata"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"West Lembata"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombard"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardic"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"South Central Banda"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (Côte d'Ivoire)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (Liberia)"},
["lon"] = {"Malawi Lomwe"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Louisiana Creole"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozi"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Northern Luri"},
["lre"] = {"Laurentian"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Southern Yamphu"},
["lrt"] = {"Larantuka Malay"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},
["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Latvian Sign Language"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Tibetan Sign Language"},
["lso"] = {"Laos Sign Language"},
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Trinidad and Tobago Sign Language"},
["lsv"] = {"Sivia Sign Language"},
["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Mauritian Sign Language"},
["ltc"] = {"Late Middle Chinese"},
["ltg"] = {"Latgalian"},
["lth"] = {"Thur"},
["lti"] = {"Leti (Indonesia)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludian"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Southern Luri"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Standard Latvian"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"White Lachi"},
["lwl"] = {"Eastern Lawa"},
["lwm"] = {"Laomian"},
["lwo"] = {"Luwo"},
["lws"] = {"Malawian Sign Language"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Literary Chinese"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"San Jerónimo Tecóatl Mazatec"},
["mab"] = {"Yutanduchi Mixtec"},
["mad"] = {"Madurese"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithili"},
["maj"] = {"Jalapa De Díaz Mazatec"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"Austronesian languages"},
["maq"] = {"Chiquihuitlán Mazatec"},
["mas"] = {"Masai"},
["mat"] = {"San Francisco Matlatzinca"},
["mau"] = {"Huautla Mazatec"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"North Moluccan Malay"},
["maz"] = {"Central Mazahua"},
["mba"] = {"Higaonon"},
["mbb"] = {"Western Bukidnon Manobo"},
["mbc"] = {"Macushi"},
["mbd"] = {"Dibabawon Manobo"},
["mbe"] = {"Molale"},
["mbf"] = {"Baba Malay"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Ilianen Manobo"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Sarangani Manobo"},
["mbt"] = {"Matigsalug Manobo"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (East Sepik Province)"},
["mby"] = {"Memoni"},
["mbz"] = {"Amoltepec Mixtec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Itundujia Mixtec"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Malaccan Creole Portuguese"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Cameroon Mambila"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Chad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"South Watut"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (Nigeria)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papua New Guinea)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Chad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Maltese Sign Language"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papua New Guinea)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Santa Lucía Monteverde Mixtec"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (Ethiopia)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Southwestern Tlaxiaco Mixtec"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Central Melanau"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Kedah Malay"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"North Mofu"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi South"},
["mfn"] = {"Cross River Mbembe"},
["mfo"] = {"Mbe"},
["mfp"] = {"Makassar Malay"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Mexican Sign Language"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Middle Irish (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Eastern Magar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (India)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (Zambia)"},
["mhp"] = {"Balinese Malay"},
["mhq"] = {"Mandan"},
["mhr"] = {"Eastern Mari"},
["mhs"] = {"Buru (Indonesia)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Mor Islands)"},
["mia"] = {"Miami"},
["mib"] = {"Atatláhuca Mixtec"},
["mic"] = {"Mi'kmaq", "Micmac"},
["mid"] = {"Mandaic"},
["mie"] = {"Ocotepec Mixtec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"San Miguel El Grande Mixtec"},
["mih"] = {"Chayuco Mixtec"},
["mii"] = {"Chigmecatitlán Mixtec"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Peñoles Mixtec"},
["mim"] = {"Alacatlatzala Mixtec"},
["min"] = {"Minangkabau"},
["mio"] = {"Pinotepa Nacional Mixtec"},
["mip"] = {"Apasco-Apoala Mixtec"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"Uncoded languages"},
["mit"] = {"Southern Puebla Mixtec"},
["miu"] = {"Cacaloxtepec Mixtec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtepec Mixtec"},
["miy"] = {"Ayutla Mixtec"},
["miz"] = {"Coatzospan Mixtec"},
["mjb"] = {"Makalero"},
["mjc"] = {"San Juan Colorado Mixtec"},
["mjd"] = {"Northwest Maidu"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papua New Guinea)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mahican"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (China)"},
["mkh"] = {"Mon-Khmer languages"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilese"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Kupang Malay"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Silacayoapan Mixtec"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kituba (Congo)"},
["mkx"] = {"Kinamiging Manobo"},
["mky"] = {"East Makian"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Western Maninkakan"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Michoacán Mazahua"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"North Ambrym"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Western Xiangxi Miao"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Manchu"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundani"},
["mng"] = {"Eastern Mnong"},
["mnh"] = {"Mono (Democratic Republic of Congo)"},
["mni"] = {"Manipuri"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinka"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Southern Mnong"},
["mno"] = {"Manobo languages"},
["mnp"] = {"Min Bei Chinese"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (USA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilian"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawk"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mopán Maya"},
["moq"] = {"Mor (Bomberai Peninsula)"},
["mor"] = {"Moro"},
["mos"] = {"Mossi"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Chad)"},
["mpl"] = {"Middle Watut"},
["mpm"] = {"Yosondúa Mixtec"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidian"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (Indonesia)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Kota Bangun Kutai Malay"},
["mqh"] = {"Tlazoyaltepec Mixtec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"South Marquesan"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"West Makian"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Western Magar"},
["mre"] = {"Martha's Vineyard Sign Language"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Western Mari"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockese"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"North Marquesan"},
["mrr"] = {"Maria (India)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Central"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Yucatec Maya Sign Language"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Masikoro Malagasy"},
["msi"] = {"Sabah Malay"},
["msj"] = {"Ma (Democratic Republic of Congo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Mongolian Sign Language"},
["mss"] = {"West Masela"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Cotabato Manobo"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Solomon Islands)"},
["mtf"] = {"Murik (Papua New Guinea)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papua New Guinea)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Tututepec Mixtec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Southern Binukidnon"},
["mtx"] = {"Tidaá Mixtec"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Mednyj Aleut"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Multiple languages"},
["mum"] = {"Maiwala"},
["mun"] = {"Munda languages"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Eastern Xiangxi Miao"},
["mur"] = {"Murle"},
["mus"] = {"Creek"},
["mut"] = {"Western Muria"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (Pakistan)"},
["mvf"] = {"Peripheral Mongolian"},
["mvg"] = {"Yucuañe Mixtec"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (Australia)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Indus Kohistani"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Kita Maninkakan"},
["mwl"] = {"Mirandese"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Central Maewo"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Northwest Oaxaca Mixtec"},
["mxb"] = {"Tezoatlán Mixtec"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabic"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (Indonesia)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (Malaysia)"},
["mxs"] = {"Huitepec Mixtec"},
["mxt"] = {"Jamiltepec Mixtec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Metlatónoc Mixtec"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Southeastern Nochixtlán Mixtec"},
["mxz"] = {"Central Masela"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"Mayan languages"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Classical Mandaic"},
["mza"] = {"Santa María Zacatepec Mixtec"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Madagascar Sign Language"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Monastic Sign Language"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Ixcatlán Mazatec"},
["mzj"] = {"Manya"},
["mzk"] = {"Nigeria Mambila"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderani"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanese"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Mozambican Sign Language"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Southern Nambikuára"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Pidgin"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Min Nan Chinese"},
["nao"] = {"Naaba"},
["nap"] = {"Neapolitan"},
["naq"] = {"Khoekhoe", "Nama (Namibia)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Coatepec Nahuatl"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Namibian Sign Language"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Southern Ngbandi"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Central Nicobarese"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Central Huasteca Nahuatl"},
["nci"] = {"Classical Nahuatl"},
["ncj"] = {"Northern Puebla Nahuatl"},
["nck"] = {"Na-kara"},
["ncl"] = {"Michoacán Nahuatl"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Northern Katang"},
["ncr"] = {"Ncane"},
["ncs"] = {"Nicaraguan Sign Language"},
["nct"] = {"Chothe Naga"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Central Puebla Nahuatl"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndau"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvian"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Low German", "Low Saxon"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Eastern Ngad'a"},
["neb"] = {"Toura (Côte d'Ivoire)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Neo-Hittite"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"North Central Mixe"},
["ner"] = {"Yahadian"},
["nes"] = {"Bhoti Kinnauri"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Northern Ngbandi"},
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},
["ngd"] = {"Ngando (Central African Republic)"},
["nge"] = {"Ngemba"},
["ngf"] = {"Trans-New Guinea languages"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Ngatik Men's Creole"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Guerrero Nahuatl"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Tabasco Nahuatl"},
["nhd"] = {"Chiripá", "Ava Guaraní"},
["nhe"] = {"Eastern Huasteca Nahuatl"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Tetelcingo Nahuatl"},
["nhh"] = {"Nahari"},
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},
["nhm"] = {"Morelos Nahuatl"},
["nhn"] = {"Central Nahuatl"},
["nho"] = {"Takuu"},
["nhp"] = {"Isthmus-Pajapan Nahuatl"},
["nhq"] = {"Huaxcaleca Nahuatl"},
["nhr"] = {"Naro"},
["nht"] = {"Ometepec Nahuatl"},
["nhu"] = {"Noone"},
["nhv"] = {"Temascaltepec Nahuatl"},
["nhw"] = {"Western Huasteca Nahuatl"},
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},
["nhy"] = {"Northern Oaxaca Nahuatl"},
["nhz"] = {"Santa María La Alta Nahuatl"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"Niger-Kordofanian languages"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Southern Nicobarese"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasan"},
["niq"] = {"Nandi"},
["nir"] = {"Nimboran"},
["nis"] = {"Nimi"},
["nit"] = {"Southeastern Kolami"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyak"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Nocte Naga"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Lotha Naga"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Liangmai Naga"},
["njo"] = {"Ao Naga"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Pidgin"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Khoibu Naga"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Inpui Naga"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Khezha Naga"},
["nki"] = {"Thangal Naga"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"North Asmat"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi and Zambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"East Nyala"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Lao Naga"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Maram Naga"},
["nmb"] = {"Big Nambas", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Mzieme Naga"},
["nmf"] = {"Tangkhul Naga (India)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Monsang Naga"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Central African Republic)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Moyon Naga"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Northeast Maidu"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papua New Guinea)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"West Ambae"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Maring Naga"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"North Nuaulu"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Northern Rengma Naga"},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Wancho Naga"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (Australia)"},
["nnw"] = {"Southern Nuni"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Northern Thai"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogai"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Old Norse"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Eastern Nisu"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Ponyo-Gongwang Naga"},
["nph"] = {"Phom Naga"},
["npi"] = {"Nepali (individual language)"},
["npl"] = {"Southeastern Puebla Nahuatl"},
["npn"] = {"Mondropolon"},
["npo"] = {"Pochuri Naga"},
["nps"] = {"Nipsan"},
["npu"] = {"Puimei Naga"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Southern Nago"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Kyan-Karyaw Naga"},
["nqt"] = {"Nteng"},
["nqy"] = {"Akyaung Ari Naga"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Noric"},
["nre"] = {"Southern Rengma Naga"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Chokri Naga"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Norn"},
["nrp"] = {"North Picene"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Northern Kalapuya"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Sangtam Naga"},
["nsb"] = {"Lower Nossob"},
["nsc"] = {"Nshi"},
["nsd"] = {"Southern Nisu"},
["nse"] = {"Nsenga"},
["nsf"] = {"Northwestern Nisu"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Nigerian Sign Language"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Norwegian Sign Language"},
["nsm"] = {"Sumi Naga"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},
["nsp"] = {"Nepalese Sign Language"},
["nsq"] = {"Northern Sierra Miwok"},
["nsr"] = {"Maritime Sign Language"},
["nss"] = {"Nali"},
["nst"] = {"Tase Naga"},
["nsu"] = {"Sierra Negra Nahuatl"},
["nsv"] = {"Southwestern Nisu"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Northern Tidung"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Northern Tepehuan"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Tangkhul Naga (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"Nubian languages"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Northern Nuni"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Tlamacazapa Nahuatl"},
["nvh"] = {"Nasarian"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Southwest Tanna"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Middle Newar"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Democratic Republic of Congo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Koki Naga"},
["nxl"] = {"South Nuaulu"},
["nxm"] = {"Numidian"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (Sudan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"New Zealand Sign Language"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},
["oav"] = {"Old Avar"},
["obi"] = {"Obispeño"},
["obk"] = {"Southern Bontok"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Old Burmese"},
["obt"] = {"Old Breton"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Old Chinese"},
["ocm"] = {"Old Cham"},
["oco"] = {"Old Cornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Old Dutch"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Old Frisian"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Old Georgian"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Old Hittite"},
["ohu"] = {"Old Hungarian"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"Northwestern Ojibwa"},
["ojc"] = {"Central Ojibwa"},
["ojg"] = {"Eastern Ojibwa"},
["ojp"] = {"Old Japanese"},
["ojs"] = {"Severn Ojibwa"},
["ojv"] = {"Ontong Java"},
["ojw"] = {"Western Ojibwa"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Southwestern Edo)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Old Kentish Sign Language"},
["okm"] = {"Middle Korean (10th-16th cent.)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Old Korean (3rd-9th cent.)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Northwestern Edo)"},
["okz"] = {"Old Khmer"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvi"},
["olr"] = {"Olrat"},
["olt"] = {"Old Lithuanian"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"East Ambae"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Old Manipuri"},
["omq"] = {"Oto-Manguean languages"},
["omr"] = {"Old Marathi"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"Omotic languages"},
["omw"] = {"South Tairora"},
["omx"] = {"Old Mon"},
["omy"] = {"Old Malay"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"Northern One"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Old Nubian"},
["onx"] = {"Onin Based Pidgin"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Old Ossetic"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Old Russian"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Old Sundanese"},
["oso"] = {"Ososo"},
["osp"] = {"Old Spanish"},
["ost"] = {"Osatu"},
["osu"] = {"Southern One"},
["osx"] = {"Old Saxon"},
["ota"] = {"Ottoman Turkish (1500-1928)"},
["otb"] = {"Old Tibetan"},
["otd"] = {"Ot Danum"},
["ote"] = {"Mezquital Otomi"},
["oti"] = {"Oti"},
["otk"] = {"Old Turkish"},
["otl"] = {"Tilapa Otomi"},
["otm"] = {"Eastern Highland Otomi"},
["otn"] = {"Tenango Otomi"},
["oto"] = {"Otomian languages"},
["otq"] = {"Querétaro Otomi"},
["otr"] = {"Otoro"},
["ots"] = {"Estado de México Otomi"},
["ott"] = {"Temoaya Otomi"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Texcatepec Otomi"},
["oty"] = {"Old Tamil"},
["otz"] = {"Ixtenco Otomi"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Old Uighur"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalian", "Övdalian"},
["owi"] = {"Owiniga"},
["owl"] = {"Old Welsh"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"Papuan languages"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Northern Paiute"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauan"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawnee"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Mezontla Popoloca"},
["pbf"] = {"Coyotepec Popoloca"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (Nigeria)"},
["pbm"] = {"Puebla Mazatec"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Central Pame"},
["pbt"] = {"Southern Pashto"},
["pbu"] = {"Northern Pashto"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papua New Guinea)"},
["pca"] = {"Santa Inés Ahuatempan Popoloca"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picard"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Nigerian Pidgin"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Pennsylvania German"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Peranakan Indonesian"},
["peb"] = {"Eastern Pomo"},
["ped"] = {"Mala (Papua New Guinea)"},
["pee"] = {"Taje"},
["pef"] = {"Northeastern Pomo"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Northern Pomo"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},
["pep"] = {"Kunja"},
["peq"] = {"Southern Pomo"},
["pes"] = {"Iranian Persian"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Eastern Penan"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Sudanese Creole Arabic"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Primitive Irish"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Papua New Guinean Sign Language"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"Philippine languages"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"Phoenician"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Phu Thai"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavani"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapese"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatan"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Pakistan Sign Language"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Central Palawano"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"Central Malayo-Polynesian languages"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Kohistani Shina"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Oluta Popoluca"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},
["plt"] = {"Plateau Malagasy"},
["plu"] = {"Palikúr"},
["plv"] = {"Southwest Palawano"},
["plw"] = {"Brooke's Point Palawano"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Northern Pumi"},
["pmj"] = {"Southern Pumi"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Northern Pame"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piemontese"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Plains Miwok"},
["pmx"] = {"Poumei Naga"},
["pmy"] = {"Papuan Malay"},
["pmz"] = {"Southern Pame"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Western Panjabi"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Western Penan"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontic"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Central African Republic)"},
["poc"] = {"Poqomam"},
["poe"] = {"San Juan Atzingo Popoloca"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Highland Popoluca"},
["pok"] = {"Pokangá"},
["pom"] = {"Southeastern Pomo"},
["pon"] = {"Pohnpeian"},
["poo"] = {"Central Pomo"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Texistepec Popoluca"},
["pos"] = {"Sayula Popoluca"},
["pot"] = {"Potawatomi"},
["pov"] = {"Upper Guinea Crioulo"},
["pow"] = {"San Felipe Otlaltepec Popoloca"},
["pox"] = {"Polabian"},
["poy"] = {"Pogolo"},
["poz"] = {"Malayo-Polynesian languages"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"San Luís Temalacayuca Popoloca"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["prc"] = {"Parachi"},
["prd"] = {"Parsi-Dari"},
["pre"] = {"Principense"},
["prf"] = {"Paranan"},
["prg"] = {"Prussian"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Peruvian Sign Language"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Dari", "Afghan Persian"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Providencia Sign Language"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Iranian Sign Language", "Persian Sign Language"},
["psd"] = {"Plains Indian Sign Language"},
["pse"] = {"Central Malay"},
["psg"] = {"Penang Sign Language"},
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},
["psl"] = {"Puerto Rican Sign Language"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Polish Sign Language"},
["psp"] = {"Philippine Sign Language"},
["psq"] = {"Pasi"},
["psr"] = {"Portuguese Sign Language"},
["pss"] = {"Kaulong"},
["pst"] = {"Central Pashto"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patani"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Western Highland Purepecha"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatese"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Pwo Western Karen"},
["pwr"] = {"Powari"},
["pww"] = {"Pwo Northern Karen"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Huallaga Huánuco Quechua"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Calderón Highland Quichua"},
["quf"] = {"Lambayeque Quechua"},
["qug"] = {"Chimborazo Highland Quichua"},
["quh"] = {"South Bolivian Quechua"},
["qui"] = {"Quileute"},
["quk"] = {"Chachapoyas Quechua"},
["qul"] = {"North Bolivian Quechua"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Southern Pastaza Quechua"},
["quq"] = {"Quinqui"},
["qur"] = {"Yanahuanca Pasco Quechua"},
["qus"] = {"Santiago del Estero Quichua"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Tena Lowland Quichua"},
["qux"] = {"Yauyos Quechua"},
["quy"] = {"Ayacucho Quechua"},
["quz"] = {"Cusco Quechua"},
["qva"] = {"Ambo-Pasco Quechua"},
["qvc"] = {"Cajamarca Quechua"},
["qve"] = {"Eastern Apurímac Quechua"},
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},
["qvi"] = {"Imbabura Highland Quichua"},
["qvj"] = {"Loja Highland Quichua"},
["qvl"] = {"Cajatambo North Lima Quechua"},
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},
["qvn"] = {"North Junín Quechua"},
["qvo"] = {"Napo Lowland Quechua"},
["qvp"] = {"Pacaraos Quechua"},
["qvs"] = {"San Martín Quechua"},
["qvw"] = {"Huaylla Wanca Quechua"},
["qvy"] = {"Queyu"},
["qvz"] = {"Northern Pastaza Quichua"},
["qwa"] = {"Corongo Ancash Quechua"},
["qwc"] = {"Classical Quechua"},
["qwe"] = {"Quechuan (family)"},
["qwh"] = {"Huaylas Ancash Quechua"},
["qwm"] = {"Kuman (Russia)"},
["qws"] = {"Sihuas Ancash Quechua"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Chiquián Ancash Quechua"},
["qxc"] = {"Chincha Quechua"},
["qxh"] = {"Panao Huánuco Quechua"},
["qxl"] = {"Salasaca Highland Quichua"},
["qxn"] = {"Northern Conchucos Ancash Quechua"},
["qxo"] = {"Southern Conchucos Ancash Quechua"},
["qxp"] = {"Puno Quechua"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Cañar Highland Quichua"},
["qxs"] = {"Southern Qiang"},
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},
["qxu"] = {"Arequipa-La Unión Quechua"},
["qxw"] = {"Jauja Wanca Quechua"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Western Meohang"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthani"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Northern Bontok"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Réunion Creole French"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Romano-Greek"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnol"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Southern Roglai"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (India)"},
["rib"] = {"Bribri Sign Language"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Carpathian Romani"},
["rmd"] = {"Traveller Danish"},
["rme"] = {"Angloromani"},
["rmf"] = {"Kalo Finnish Romani"},
["rmg"] = {"Traveller Norwegian"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Baltic Romani"},
["rmm"] = {"Roma"},
["rmn"] = {"Balkan Romani"},
["rmo"] = {"Sinte Romani"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Romanian Sign Language"},
["rmt"] = {"Domari"},
["rmu"] = {"Tavringer Romani"},
["rmv"] = {"Romanova"},
["rmw"] = {"Welsh Romani"},
["rmx"] = {"Romam"},
["rmy"] = {"Vlax Romani"},
["rmz"] = {"Marma"},
["rnb"] = {"Brunca Sign Language"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"Romance languages"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Northern Roglai"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romany"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Romano-Serbian"},
["rsk"] = {"Ruthenian", "Rusnak"},
["rsl"] = {"Russian Sign Language"},
["rsm"] = {"Miriwoong Sign Language"},
["rsn"] = {"Rwandan Sign Language"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yurats"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusyn"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro Romanian"},
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},
["ruq"] = {"Megleno Romanian"},
["rut"] = {"Rutul"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (Nigeria)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Uganda)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (India)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Northern Amami-Oshima"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Central Okinawan"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papua New Guinea)"},
["sbd"] = {"Southern Samo"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"San Miguel Creole French"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Sri Lankan Creole Malay"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Sicilian"},
["sco"] = {"Scots"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"North Slavey"},
["sct"] = {"Southern Katang"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sassarese Sardinian"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Southern Kurdish"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Saudi Arabian Sign Language"},
["sdn"] = {"Gallurese Sardinian"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"Eastern Sudanic languages"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},
["sfe"] = {"Eastern Subanen"},
["sfm"] = {"Small Flowery Miao"},
["sfs"] = {"South African Sign Language"},
["sfw"] = {"Sehwi"},
["sga"] = {"Old Irish (to 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Swiss-German Sign Language"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Sign languages"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitian"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Sierra Leone Sign Language"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Chadian Arabic"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Akkala Sami"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papua New Guinea)"},
["sio"] = {"Siouan languages"},
["sip"] = {"Sikkimese"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"Sino-Tibetan languages"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Kildin Sami"},
["sje"] = {"Pite Sami"},
["sjg"] = {"Assangori"},
["sjk"] = {"Kemi Sami"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Ter Sami"},
["sju"] = {"Ume Sami"},
["sjw"] = {"Shawnee"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Southern Sierra Miwok"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Sakalava Malagasy"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Skepi Creole Dutch"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"Slavic languages"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Swiss-Italian Sign Language"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Southern Puget Sound Salish"},
["sli"] = {"Lower Silesian"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Singapore Sign Language"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Southern Sami"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smk"] = {"Bolinao"},
["sml"] = {"Central Sama"},
["smm"] = {"Musasa"},
["smn"] = {"Inari Sami"},
["smp"] = {"Samaritan"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Skolt Sami"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Democratic Republic of Congo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Southern Ma'di"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Thai Song"},
["sob"] = {"Sobei"},
["soc"] = {"So (Democratic Republic of Congo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdian"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"Songhai languages"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Southern Thai"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (Indonesia)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papua New Guinea)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Loreto-Ucayali Spanish"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"South Picene"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"Albanian languages"},
["sqk"] = {"Albanian Sign Language"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Siculo Arabic"},
["sqs"] = {"Sri Lankan Sign Language"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Logudorese Sardinian"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Campidanese Sardinian"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Southern Sorsoganon"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"Nilo-Saharan languages"},
["ssb"] = {"Southern Sama"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Shihhi Arabic"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Western Sisaala"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Spanish Sign Language"},
["ssq"] = {"So'a"},
["ssr"] = {"Swiss-French Sign Language"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Northern Subanen"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stoney"},
["stp"] = {"Southeastern Tepehuan"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Straits Salish"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalese"},
["sty"] = {"Siberian Tatar"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Western Subanon"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerian"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Vincentian Creole English"},
["sve"] = {"Serili"},
["svk"] = {"Slovakian Sign Language"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvian"},
["swb"] = {"Maore Comorian"},
["swc"] = {"Congo Swahili"},
["swf"] = {"Sere"},
["swg"] = {"Swabian"},
["swh"] = {"Swahili (individual language)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Swedish Sign Language"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanian"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Southern Kalapuya"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptic"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Upper Saxon"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Central Subanen"},
["syc"] = {"Classical Syriac"},
["syd"] = {"Samoyedic languages"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Syriac"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Al-Sayyid Bedouin Sign Language"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Silesian"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Solomon Islands Sign Language"},
["szv"] = {"Isu (Fako Division)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Lower Tanana"},
["tab"] = {"Tabassaran"},
["tac"] = {"Lowland Tarahumara"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"Tai languages"},
["taj"] = {"Eastern Tamang"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Central Tarahumara"},
["tas"] = {"Tay Boi"},
["tau"] = {"Upper Tanana"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"North Tairora"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"Tibeto-Burman languages"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Southern Tutchone"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Turks And Caicos Creole English"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Torres Strait Creole", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Southeastern Tarahumara"},
["tcw"] = {"Tecpatlán Totonac"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Thado Chin"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Western Tamang"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Tandroy-Mahafaly Malagasy"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelche"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (Colombia)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (USA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Eastern Gorkha Tamang"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Tobagonian Creole English"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Central Tagbanwa"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Northern Tarahumara"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tidikelt Tamazight"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Southern Tiwa"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Northern Tujia"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Temacine Tamazight"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Southern Tujia"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Tesaka Malagasy"},
["tkl"] = {"Tokelau"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhur"},
["tks"] = {"Takestani"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Upper Necaxa Totonac"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Southwestern Tepehuan"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Yecuatla Totonac"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Chad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (Indonesia)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Western Tunebo"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"North Tanna"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Coyutla Totonac"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (Zambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Xicotepec De Juárez Totonac"},
["top"] = {"Papantla Totonac"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Highland Totonac"},
["tou"] = {"Tho"},
["tov"] = {"Upper Taromi"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Pisaflores Tepehua"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tlachichilco Tepehua"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Western Totonac"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"East Tarangan"},
["trf"] = {"Trinidadian Creole English"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"Turkic languages"},
["trl"] = {"Traveller Scottish"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"San Martín Itunyoso Triqui"},
["trr"] = {"Taushiro"},
["trs"] = {"Chicahuaxtla Triqui"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Tringgus-Sembaan Bidayuh"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonian"},
["tse"] = {"Tunisian Sign Language"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},
["tsp"] = {"Northern Toussian"},
["tsq"] = {"Thai Sign Language"},
["tsr"] = {"Akei"},
["tss"] = {"Taiwan Sign Language"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Tebul Sign Language"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Upper Ta'oih"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Northern Tutchone"},
["ttn"] = {"Towei"},
["tto"] = {"Lower Ta'oih"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tawallammat Tamajaq"},
["ttr"] = {"Tera"},
["tts"] = {"Northeastern Thai"},
["ttt"] = {"Muslim Tat"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Central Tunebo"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbuka"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"Tupi languages"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"Altaic languages"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"Tungus languages"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Southeast Ambrym"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Tutsa Naga"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timor Pidgin"},
["twa"] = {"Twana"},
["twb"] = {"Western Tawbuid"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (Indonesia)"},
["twf"] = {"Northern Tiwa"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Southwestern Tarahumara"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharian B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thracian"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"West Tarangan"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessian"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Tanosy Malagasy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvinian"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Tanzanian Sign Language"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Central Atlas Tamazight"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykh"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurt"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Ugaritic"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Ugandan Sign Language"},
["ugo"] = {"Ugong"},
["ugy"] = {"Uruguayan Sign Language"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (India)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Ukrainian Sign Language"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithian"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinian"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"North Watut"},
["und"] = {"Undetermined"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"Uralic languages"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papua New Guinea)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Southern Paiute"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Solomon Islands)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"West Uvean", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Northern Uzbek"},
["uzs"] = {"Southern Uzbek"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Southeast Babar"},
["vbk"] = {"Southwestern Bontok"},
["vec"] = {"Venetian"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Veps"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},
["vic"] = {"Virgin Islands Creole English"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Korlai Creole Portuguese"},
["vkt"] = {"Tenggarong Kutai Malay"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Juxtlahuaca Mixtec"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"East Masela"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Ixtayutla Mixtec"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mitlatongo Mixtec"},
["vmp"] = {"Soyaltepec Mazatec"},
["vmq"] = {"Soyaltepec Mixtec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Valley Maidu"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Tamazola Mixtec"},
["vmy"] = {"Ayautla Mazatec"},
["vmz"] = {"Mazatlán Mazatec"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voro"},
["vot"] = {"Votic"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Moldova Sign Language"},
["vsl"] = {"Venezuelan Sign Language"},
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (China)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (Philippines)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"West Bengal Sign Language"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Western"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"Sorbian languages"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroon Pidgin"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"North Wahgi"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Southern Toussian"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Mwali Comorian"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (Sudan)"},
["wlm"] = {"Middle Welsh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisian"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (Ghana)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (Nigeria)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Western Minyag"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (Indonesia)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papua New Guinea)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Ndzwani Comorian"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Northern"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaian"},
["wof"] = {"Gambian Wolof"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (Nigeria)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hanga Hundi"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (Australia)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Wu Chinese"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Western Fijian"},
["xaa"] = {"Andalusian Arabic"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequian"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmyk", "Oirat"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalachee"},
["xaq"] = {"Aquitanian"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Lower Burdekin"},
["xbc"] = {"Bactrian"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Middle Breton"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarian"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbric"},
["xcc"] = {"Camunic"},
["xce"] = {"Celtiberian"},
["xcg"] = {"Cisalpine Gaulish"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Classical Armenian"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmian"},
["xcr"] = {"Carian"},
["xct"] = {"Classical Tibetan"},
["xcu"] = {"Curonian"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dacian"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomite"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Malayic Dayak"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscan"},
["xga"] = {"Galatian"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"Mongolian languages"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Harami"},
["xhc"] = {"Hunnic"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Middle Khmer (1400 to 1850 CE)"},
["xhr"] = {"Hernican"},
["xht"] = {"Hattic"},
["xhu"] = {"Hurrian"},
["xhv"] = {"Khua"},
["xib"] = {"Iberian"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrian"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Indus Valley Language"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Northern Nago"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Mendalam Kayan"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Kenyan Sign Language"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Mainstream Kenyah"},
["xkn"] = {"Kayan River Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lycian"},
["xld"] = {"Lydian"},
["xle"] = {"Lemnian"},
["xlg"] = {"Ligurian (Ancient)"},
["xli"] = {"Liburnian"},
["xln"] = {"Alanic"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontic"},
["xls"] = {"Lusitanian"},
["xlu"] = {"Cuneiform Luwian"},
["xly"] = {"Elymian"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Median"},
["xmf"] = {"Mingrelian"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Ancient Macedonian"},
["xml"] = {"Malaysian Sign Language"},
["xmm"] = {"Manado Malay"},
["xmn"] = {"Manichaean Middle Persian"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitic"},
["xms"] = {"Moroccan Sign Language"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},
["xmw"] = {"Tsimihety Malagasy"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Ancient North Arabian"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"Na-Dene languages"},
["xng"] = {"Middle Mongolian"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Northern Kankanay"},
["xno"] = {"Anglo-Norman"},
["xnq"] = {"Ngoni (Mozambique)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (Sudan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Oyster Bay Tasmanian"},
["xpe"] = {"Liberia Kpelle"},
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},
["xpg"] = {"Phrygian"},
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Port Sorell Tasmanian"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Mohegan-Pequot"},
["xpr"] = {"Parthian"},
["xps"] = {"Pisidian"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punic"},
["xpv"] = {"Northern Tasmanian", "Tommeginne"},
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},
["xpx"] = {"Southwestern Tasmanian", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Bruny Island Tasmanian"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Eastern Karaboro"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazic"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetic"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythian"},
["xsd"] = {"Sidetic"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"South Slavey"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (Nigeria)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovian"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Alcozauca Mixtec"},
["xtb"] = {"Chazumba Mixtec"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Diuxi-Tilantongo Mixtec"},
["xte"] = {"Ketengban"},
["xtg"] = {"Transalpine Gaulish"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Sinicahua Mixtec"},
["xtj"] = {"San Juan Teita Mixtec"},
["xtl"] = {"Tijaltepec Mixtec"},
["xtm"] = {"Magdalena Peñasco Mixtec"},
["xtn"] = {"Northern Tlaxiaco Mixtec"},
["xto"] = {"Tokharian A"},
["xtp"] = {"San Miguel Piedras Mixtec"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Early Tripuri"},
["xts"] = {"Sindihui Mixtec"},
["xtt"] = {"Tacahua Mixtec"},
["xtu"] = {"Cuyamecalco Mixtec"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Yoloxochitl Mixtec"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrian"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Upper Umpqua"},
["xur"] = {"Urartian"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetic"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalic"},
["xvo"] = {"Volscian"},
["xvs"] = {"Vestinian"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Western Xwla Gbe"},
["xwo"] = {"Written Oirat"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (Ghana)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalian"},
["xzp"] = {"Ancient Zapotec"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Pass Valley Yali"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Democratic Republic of Congo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"West Yugur"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Yilan Creole"},
["yda"] = {"Yanda"},
["ydd"] = {"Eastern Yiddish"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanic"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Yolŋu Sign Language"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Judeo-Iraqi Arabic"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Yan-nhaŋu Sign Language"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Western Yiddish"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Yimchungru Naga"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"North Awyu"},
["yis"] = {"Yis"},
["yit"] = {"Eastern Lalu"},
["yiu"] = {"Awu"},
["yiv"] = {"Northern Nisu"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Northern Yukaghir"},
["ykh"] = {"Khamnigan Mongol"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Angguruk Yali"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Southern Muji"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysian"},
["ymx"] = {"Northern Muji"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Naukan Yupik"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"Yupik languages"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenets"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassic"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Yugoslavian Sign Language"},
["ysm"] = {"Myanmar Sign Language"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (China)"},
["ysp"] = {"Southern Lolopo"},
["ysr"] = {"Sirenik Yupik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Yucatec Maya"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Judeo-Tripolitanian Arabic"},
["yue"] = {"Yue Chinese", "Cantonese"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (Nigeria)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Morobe Province)"},
["yux"] = {"Southern Yukaghir"},
["yuy"] = {"East Yugur"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Western Lalu"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Central Lalo"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Sandaun Province)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Sierra de Juárez Zapotec"},
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},
["zac"] = {"Ocotlán Zapotec"},
["zad"] = {"Cajonos Zapotec"},
["zae"] = {"Yareni Zapotec"},
["zaf"] = {"Ayoquesco Zapotec"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Isthmus Zapotec"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Miahuatlán Zapotec"},
["zao"] = {"Ozolotepec Zapotec"},
["zap"] = {"Zapotec"},
["zaq"] = {"Aloápam Zapotec"},
["zar"] = {"Rincón Zapotec"},
["zas"] = {"Santo Domingo Albarradas Zapotec"},
["zat"] = {"Tabaa Zapotec"},
["zau"] = {"Zangskari"},
["zav"] = {"Yatzachi Zapotec"},
["zaw"] = {"Mitla Zapotec"},
["zax"] = {"Xadani Zapotec"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Central Berawan"},
["zbe"] = {"East Berawan"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Bauchi State)"},
["zbw"] = {"West Berawan"},
["zca"] = {"Coatecas Altas Zapotec"},
["zcd"] = {"Las Delicias Zapotec"},
["zch"] = {"Central Hongshuihe Zhuang"},
["zdj"] = {"Ngazidja Comorian"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Eastern Hongshuihe Zhuang"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Guibei Zhuang"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zgm"] = {"Minz Zhuang"},
["zgn"] = {"Guibian Zhuang"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Dai Zhuang"},
["zhi"] = {"Zhire"},
["zhn"] = {"Nong Zhuang"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Chinese (family)"},
["zia"] = {"Zia"},
["zib"] = {"Zimbabwe Sign Language"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmian"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"São Paulo Kaingáng"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinian"},
["zkz"] = {"Khazar"},
["zla"] = {"Zula"},
["zle"] = {"East Slavic languages"},
["zlj"] = {"Liujiang Zhuang"},
["zlm"] = {"Malay (individual language)"},
["zln"] = {"Lianshan Zhuang"},
["zlq"] = {"Liuqian Zhuang"},
["zls"] = {"South Slavic languages"},
["zlu"] = {"Zul"},
["zlw"] = {"West Slavic languages"},
["zma"] = {"Manda (Australia)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Negeri Sembilan Malay"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Democratic Republic of Congo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"Zande languages"},
["zne"] = {"Zande (individual language)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Copainalá Zoque"},
["zoh"] = {"Chimalapa Zoque"},
["zom"] = {"Zou"},
["zoo"] = {"Asunción Mixtepec Zapotec"},
["zoq"] = {"Tabasco Zoque"},
["zor"] = {"Rayón Zoque"},
["zos"] = {"Francisco León Zoque"},
["zpa"] = {"Lachiguiri Zapotec"},
["zpb"] = {"Yautepec Zapotec"},
["zpc"] = {"Choapan Zapotec"},
["zpd"] = {"Southeastern Ixtlán Zapotec"},
["zpe"] = {"Petapa Zapotec"},
["zpf"] = {"San Pedro Quiatoni Zapotec"},
["zpg"] = {"Guevea De Humboldt Zapotec"},
["zph"] = {"Totomachapan Zapotec"},
["zpi"] = {"Santa María Quiegolani Zapotec"},
["zpj"] = {"Quiavicuzas Zapotec"},
["zpk"] = {"Tlacolulita Zapotec"},
["zpl"] = {"Lachixío Zapotec"},
["zpm"] = {"Mixtepec Zapotec"},
["zpn"] = {"Santa Inés Yatzechi Zapotec"},
["zpo"] = {"Amatlán Zapotec"},
["zpp"] = {"El Alto Zapotec"},
["zpq"] = {"Zoogocho Zapotec"},
["zpr"] = {"Santiago Xanica Zapotec"},
["zps"] = {"Coatlán Zapotec"},
["zpt"] = {"San Vicente Coatlán Zapotec"},
["zpu"] = {"Yalálag Zapotec"},
["zpv"] = {"Chichicapan Zapotec"},
["zpw"] = {"Zaniza Zapotec"},
["zpx"] = {"San Baltazar Loxicha Zapotec"},
["zpy"] = {"Mazaltepec Zapotec"},
["zpz"] = {"Texmelucan Zapotec"},
["zqe"] = {"Qiubei Zhuang"},
["zra"] = {"Kara (Korea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatic"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskean"},
["zsl"] = {"Zambian Sign Language"},
["zsm"] = {"Standard Malay"},
["zsr"] = {"Southern Rincon Zapotec"},
["zsu"] = {"Sukurum"},
["zte"] = {"Elotepec Zapotec"},
["ztg"] = {"Xanaguía Zapotec"},
["ztl"] = {"Lapaguía-Guivini Zapotec"},
["ztm"] = {"San Agustín Mixtepec Zapotec"},
["ztn"] = {"Santa Catarina Albarradas Zapotec"},
["ztp"] = {"Loxicha Zapotec"},
["ztq"] = {"Quioquitani-Quierí Zapotec"},
["zts"] = {"Tilquiapan Zapotec"},
["ztt"] = {"Tejalapan Zapotec"},
["ztu"] = {"Güilá Zapotec"},
["ztx"] = {"Zaachila Zapotec"},
["zty"] = {"Yatee Zapotec"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzari"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zyb"] = {"Yongbei Zhuang"},
["zyg"] = {"Yang Zhuang"},
["zyj"] = {"Youjiang Zhuang"},
["zyn"] = {"Yongnan Zhuang"},
["zyp"] = {"Zyphe Chin"},
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},
["zzj"] = {"Zuojiang Zhuang"}
}
local deprecated = {
["in"] = {"Indonesian"},
["iw"] = {"Hebrew"},
["ji"] = {"Yiddish"},
["jw"] = {"Javanese"},
["mo"] = {"Moldavian", "Moldovan"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"South Levantine Arabic"},
["ajt"] = {"Judeo-Tunisian Arabic"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (China)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Babalia Creole Arabic"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Southern Betsimisaraka Malagasy"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Democratic Republic of Congo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Democratic Republic of Congo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Chilean Quechua"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (India)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (India)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Eastern Karnic"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Eastern Gurung"},
["ggo"] = {"Southern Gondi"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (Nigeria)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Upper Tanudan Kalinga"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Indo-Iranian]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Paku Karen"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Nepali Kurux"},
["kxu"] = {"Kui (India)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (Nigeria)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (South Sudan)"},
["lsg"] = {"Lyons Sign Language"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Pidgin"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (India)"},
["myq"] = {"Forest Maninka"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Durango Nahuatl"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Mirpur Panjabi"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Rennellese Sign Language"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"South Wemale"},
["tmk"] = {"Northwestern Tamang"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Southwestern Tamang"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (Brazil)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmanian"},
["ybd"] = {"Yangbye"},
["yds"] = {"Yiddish Sign Language"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
d2b8387b798a45d93230d1c1b7b22a80714751a1
Module:Language/data/iana scripts
828
470
1037
2023-08-21T15:41:24Z
wikipedia>Trappist the monk
0
update to 2023-08-02 data;
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Adlm"] = {"Adlam"},
["Afak"] = {"Afaka"},
["Aghb"] = {"Caucasian Albanian"},
["Ahom"] = {"Ahom", "Tai Ahom"},
["Arab"] = {"Arabic"},
["Aran"] = {"Arabic (Nastaliq variant)"},
["Armi"] = {"Imperial Aramaic"},
["Armn"] = {"Armenian"},
["Avst"] = {"Avestan"},
["Bali"] = {"Balinese"},
["Bamu"] = {"Bamum"},
["Bass"] = {"Bassa Vah"},
["Batk"] = {"Batak"},
["Beng"] = {"Bengali", "Bangla"},
["Bhks"] = {"Bhaiksuki"},
["Blis"] = {"Blissymbols"},
["Bopo"] = {"Bopomofo"},
["Brah"] = {"Brahmi"},
["Brai"] = {"Braille"},
["Bugi"] = {"Buginese"},
["Buhd"] = {"Buhid"},
["Cakm"] = {"Chakma"},
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},
["Cari"] = {"Carian"},
["Cham"] = {"Cham"},
["Cher"] = {"Cherokee"},
["Chrs"] = {"Chorasmian"},
["Cirt"] = {"Cirth"},
["Copt"] = {"Coptic"},
["Cpmn"] = {"Cypro-Minoan"},
["Cprt"] = {"Cypriot syllabary"},
["Cyrl"] = {"Cyrillic"},
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},
["Deva"] = {"Devanagari", "Nagari"},
["Diak"] = {"Dives Akuru"},
["Dogr"] = {"Dogra"},
["Dsrt"] = {"Deseret", "Mormon"},
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},
["Egyd"] = {"Egyptian demotic"},
["Egyh"] = {"Egyptian hieratic"},
["Egyp"] = {"Egyptian hieroglyphs"},
["Elba"] = {"Elbasan"},
["Elym"] = {"Elymaic"},
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},
["Glag"] = {"Glagolitic"},
["Gong"] = {"Gunjala Gondi"},
["Gonm"] = {"Masaram Gondi"},
["Goth"] = {"Gothic"},
["Gran"] = {"Grantha"},
["Grek"] = {"Greek"},
["Gujr"] = {"Gujarati"},
["Guru"] = {"Gurmukhi"},
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},
["Hano"] = {"Hanunoo", "Hanunóo"},
["Hans"] = {"Han (Simplified variant)"},
["Hant"] = {"Han (Traditional variant)"},
["Hatr"] = {"Hatran"},
["Hebr"] = {"Hebrew"},
["Hira"] = {"Hiragana"},
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},
["Hmng"] = {"Pahawh Hmong"},
["Hmnp"] = {"Nyiakeng Puachue Hmong"},
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},
["Hung"] = {"Old Hungarian", "Hungarian Runic"},
["Inds"] = {"Indus", "Harappan"},
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},
["Java"] = {"Javanese"},
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},
["Jurc"] = {"Jurchen"},
["Kali"] = {"Kayah Li"},
["Kana"] = {"Katakana"},
["Kawi"] = {"Kawi"},
["Khar"] = {"Kharoshthi"},
["Khmr"] = {"Khmer"},
["Khoj"] = {"Khojki"},
["Kitl"] = {"Khitan large script"},
["Kits"] = {"Khitan small script"},
["Knda"] = {"Kannada"},
["Kore"] = {"Korean (alias for Hangul + Han)"},
["Kpel"] = {"Kpelle"},
["Kthi"] = {"Kaithi"},
["Lana"] = {"Tai Tham", "Lanna"},
["Laoo"] = {"Lao"},
["Latf"] = {"Latin (Fraktur variant)"},
["Latg"] = {"Latin (Gaelic variant)"},
["Latn"] = {"Latin"},
["Leke"] = {"Leke"},
["Lepc"] = {"Lepcha", "Róng"},
["Limb"] = {"Limbu"},
["Lina"] = {"Linear A"},
["Linb"] = {"Linear B"},
["Lisu"] = {"Lisu", "Fraser"},
["Loma"] = {"Loma"},
["Lyci"] = {"Lycian"},
["Lydi"] = {"Lydian"},
["Mahj"] = {"Mahajani"},
["Maka"] = {"Makasar"},
["Mand"] = {"Mandaic", "Mandaean"},
["Mani"] = {"Manichaean"},
["Marc"] = {"Marchen"},
["Maya"] = {"Mayan hieroglyphs"},
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},
["Mend"] = {"Mende Kikakui"},
["Merc"] = {"Meroitic Cursive"},
["Mero"] = {"Meroitic Hieroglyphs"},
["Mlym"] = {"Malayalam"},
["Modi"] = {"Modi", "Moḍī"},
["Mong"] = {"Mongolian"},
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},
["Mroo"] = {"Mro", "Mru"},
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},
["Mult"] = {"Multani"},
["Mymr"] = {"Myanmar", "Burmese"},
["Nagm"] = {"Nag Mundari"},
["Nand"] = {"Nandinagari"},
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},
["Nbat"] = {"Nabataean"},
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},
["Nkoo"] = {"N’Ko", "N'Ko"},
["Nshu"] = {"Nüshu"},
["Ogam"] = {"Ogham"},
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},
["Orkh"] = {"Old Turkic", "Orkhon Runic"},
["Orya"] = {"Oriya", "Odia"},
["Osge"] = {"Osage"},
["Osma"] = {"Osmanya"},
["Ougr"] = {"Old Uyghur"},
["Palm"] = {"Palmyrene"},
["Pauc"] = {"Pau Cin Hau"},
["Pcun"] = {"Proto-Cuneiform"},
["Pelm"] = {"Proto-Elamite"},
["Perm"] = {"Old Permic"},
["Phag"] = {"Phags-pa"},
["Phli"] = {"Inscriptional Pahlavi"},
["Phlp"] = {"Psalter Pahlavi"},
["Phlv"] = {"Book Pahlavi"},
["Phnx"] = {"Phoenician"},
["Piqd"] = {"Klingon (KLI pIqaD)"},
["Plrd"] = {"Miao", "Pollard"},
["Prti"] = {"Inscriptional Parthian"},
["Psin"] = {"Proto-Sinaitic"},
["Ranj"] = {"Ranjana"},
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},
["Rohg"] = {"Hanifi Rohingya"},
["Roro"] = {"Rongorongo"},
["Runr"] = {"Runic"},
["Samr"] = {"Samaritan"},
["Sara"] = {"Sarati"},
["Sarb"] = {"Old South Arabian"},
["Saur"] = {"Saurashtra"},
["Sgnw"] = {"SignWriting"},
["Shaw"] = {"Shavian", "Shaw"},
["Shrd"] = {"Sharada", "Śāradā"},
["Shui"] = {"Shuishu"},
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},
["Sind"] = {"Khudawadi", "Sindhi"},
["Sinh"] = {"Sinhala"},
["Sogd"] = {"Sogdian"},
["Sogo"] = {"Old Sogdian"},
["Sora"] = {"Sora Sompeng"},
["Soyo"] = {"Soyombo"},
["Sund"] = {"Sundanese"},
["Sunu"] = {"Sunuwar"},
["Sylo"] = {"Syloti Nagri"},
["Syrc"] = {"Syriac"},
["Syre"] = {"Syriac (Estrangelo variant)"},
["Syrj"] = {"Syriac (Western variant)"},
["Syrn"] = {"Syriac (Eastern variant)"},
["Tagb"] = {"Tagbanwa"},
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},
["Tale"] = {"Tai Le"},
["Talu"] = {"New Tai Lue"},
["Taml"] = {"Tamil"},
["Tang"] = {"Tangut"},
["Tavt"] = {"Tai Viet"},
["Telu"] = {"Telugu"},
["Teng"] = {"Tengwar"},
["Tfng"] = {"Tifinagh", "Berber"},
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},
["Thaa"] = {"Thaana"},
["Thai"] = {"Thai"},
["Tibt"] = {"Tibetan"},
["Tirh"] = {"Tirhuta"},
["Tnsa"] = {"Tangsa"},
["Toto"] = {"Toto"},
["Ugar"] = {"Ugaritic"},
["Vaii"] = {"Vai"},
["Visp"] = {"Visible Speech"},
["Vith"] = {"Vithkuqi"},
["Wara"] = {"Warang Citi", "Varang Kshiti"},
["Wcho"] = {"Wancho"},
["Wole"] = {"Woleai"},
["Xpeo"] = {"Old Persian"},
["Xsux"] = {"Sumero-Akkadian cuneiform"},
["Yezi"] = {"Yezidi"},
["Yiii"] = {"Yi"},
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},
["Zinh"] = {"Code for inherited script"},
["Zmth"] = {"Mathematical notation"},
["Zsye"] = {"Symbols (Emoji variant)"},
["Zsym"] = {"Symbols"},
["Zxxx"] = {"Code for unwritten documents"},
["Zyyy"] = {"Code for undetermined script"},
["Zzzz"] = {"Code for uncoded script"}
}
441e9d6e54b88bea137b8945819732a90106bd4d
Module:Language/data/iana regions
828
472
1039
2023-08-21T15:41:26Z
wikipedia>Trappist the monk
0
update to 2023-08-02 data;
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["AC"] = {"Ascension Island"},
["AD"] = {"Andorra"},
["AE"] = {"United Arab Emirates"},
["AF"] = {"Afghanistan"},
["AG"] = {"Antigua and Barbuda"},
["AI"] = {"Anguilla"},
["AL"] = {"Albania"},
["AM"] = {"Armenia"},
["AO"] = {"Angola"},
["AQ"] = {"Antarctica"},
["AR"] = {"Argentina"},
["AS"] = {"American Samoa"},
["AT"] = {"Austria"},
["AU"] = {"Australia"},
["AW"] = {"Aruba"},
["AX"] = {"Åland Islands"},
["AZ"] = {"Azerbaijan"},
["BA"] = {"Bosnia and Herzegovina"},
["BB"] = {"Barbados"},
["BD"] = {"Bangladesh"},
["BE"] = {"Belgium"},
["BF"] = {"Burkina Faso"},
["BG"] = {"Bulgaria"},
["BH"] = {"Bahrain"},
["BI"] = {"Burundi"},
["BJ"] = {"Benin"},
["BL"] = {"Saint Barthélemy"},
["BM"] = {"Bermuda"},
["BN"] = {"Brunei Darussalam"},
["BO"] = {"Bolivia"},
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},
["BR"] = {"Brazil"},
["BS"] = {"Bahamas"},
["BT"] = {"Bhutan"},
["BV"] = {"Bouvet Island"},
["BW"] = {"Botswana"},
["BY"] = {"Belarus"},
["BZ"] = {"Belize"},
["CA"] = {"Canada"},
["CC"] = {"Cocos (Keeling) Islands"},
["CD"] = {"The Democratic Republic of the Congo"},
["CF"] = {"Central African Republic"},
["CG"] = {"Congo"},
["CH"] = {"Switzerland"},
["CI"] = {"Côte d'Ivoire"},
["CK"] = {"Cook Islands"},
["CL"] = {"Chile"},
["CM"] = {"Cameroon"},
["CN"] = {"China"},
["CO"] = {"Colombia"},
["CP"] = {"Clipperton Island"},
["CQ"] = {"Sark"},
["CR"] = {"Costa Rica"},
["CU"] = {"Cuba"},
["CV"] = {"Cabo Verde", "Cape Verde"},
["CW"] = {"Curaçao"},
["CX"] = {"Christmas Island"},
["CY"] = {"Cyprus"},
["CZ"] = {"Czechia", "Czech Republic"},
["DE"] = {"Germany"},
["DG"] = {"Diego Garcia"},
["DJ"] = {"Djibouti"},
["DK"] = {"Denmark"},
["DM"] = {"Dominica"},
["DO"] = {"Dominican Republic"},
["DZ"] = {"Algeria"},
["EA"] = {"Ceuta, Melilla"},
["EC"] = {"Ecuador"},
["EE"] = {"Estonia"},
["EG"] = {"Egypt"},
["EH"] = {"Western Sahara"},
["ER"] = {"Eritrea"},
["ES"] = {"Spain"},
["ET"] = {"Ethiopia"},
["EU"] = {"European Union"},
["EZ"] = {"Eurozone"},
["FI"] = {"Finland"},
["FJ"] = {"Fiji"},
["FK"] = {"Falkland Islands (Malvinas)"},
["FM"] = {"Federated States of Micronesia"},
["FO"] = {"Faroe Islands"},
["FR"] = {"France"},
["GA"] = {"Gabon"},
["GB"] = {"United Kingdom"},
["GD"] = {"Grenada"},
["GE"] = {"Georgia"},
["GF"] = {"French Guiana"},
["GG"] = {"Guernsey"},
["GH"] = {"Ghana"},
["GI"] = {"Gibraltar"},
["GL"] = {"Greenland"},
["GM"] = {"Gambia"},
["GN"] = {"Guinea"},
["GP"] = {"Guadeloupe"},
["GQ"] = {"Equatorial Guinea"},
["GR"] = {"Greece"},
["GS"] = {"South Georgia and the South Sandwich Islands"},
["GT"] = {"Guatemala"},
["GU"] = {"Guam"},
["GW"] = {"Guinea-Bissau"},
["GY"] = {"Guyana"},
["HK"] = {"Hong Kong"},
["HM"] = {"Heard Island and McDonald Islands"},
["HN"] = {"Honduras"},
["HR"] = {"Croatia"},
["HT"] = {"Haiti"},
["HU"] = {"Hungary"},
["IC"] = {"Canary Islands"},
["ID"] = {"Indonesia"},
["IE"] = {"Ireland"},
["IL"] = {"Israel"},
["IM"] = {"Isle of Man"},
["IN"] = {"India"},
["IO"] = {"British Indian Ocean Territory"},
["IQ"] = {"Iraq"},
["IR"] = {"Islamic Republic of Iran"},
["IS"] = {"Iceland"},
["IT"] = {"Italy"},
["JE"] = {"Jersey"},
["JM"] = {"Jamaica"},
["JO"] = {"Jordan"},
["JP"] = {"Japan"},
["KE"] = {"Kenya"},
["KG"] = {"Kyrgyzstan"},
["KH"] = {"Cambodia"},
["KI"] = {"Kiribati"},
["KM"] = {"Comoros"},
["KN"] = {"Saint Kitts and Nevis"},
["KP"] = {"Democratic People's Republic of Korea"},
["KR"] = {"Republic of Korea"},
["KW"] = {"Kuwait"},
["KY"] = {"Cayman Islands"},
["KZ"] = {"Kazakhstan"},
["LA"] = {"Lao People's Democratic Republic"},
["LB"] = {"Lebanon"},
["LC"] = {"Saint Lucia"},
["LI"] = {"Liechtenstein"},
["LK"] = {"Sri Lanka"},
["LR"] = {"Liberia"},
["LS"] = {"Lesotho"},
["LT"] = {"Lithuania"},
["LU"] = {"Luxembourg"},
["LV"] = {"Latvia"},
["LY"] = {"Libya"},
["MA"] = {"Morocco"},
["MC"] = {"Monaco"},
["MD"] = {"Moldova"},
["ME"] = {"Montenegro"},
["MF"] = {"Saint Martin (French part)"},
["MG"] = {"Madagascar"},
["MH"] = {"Marshall Islands"},
["MK"] = {"North Macedonia"},
["ML"] = {"Mali"},
["MM"] = {"Myanmar"},
["MN"] = {"Mongolia"},
["MO"] = {"Macao"},
["MP"] = {"Northern Mariana Islands"},
["MQ"] = {"Martinique"},
["MR"] = {"Mauritania"},
["MS"] = {"Montserrat"},
["MT"] = {"Malta"},
["MU"] = {"Mauritius"},
["MV"] = {"Maldives"},
["MW"] = {"Malawi"},
["MX"] = {"Mexico"},
["MY"] = {"Malaysia"},
["MZ"] = {"Mozambique"},
["NA"] = {"Namibia"},
["NC"] = {"New Caledonia"},
["NE"] = {"Niger"},
["NF"] = {"Norfolk Island"},
["NG"] = {"Nigeria"},
["NI"] = {"Nicaragua"},
["NL"] = {"Netherlands"},
["NO"] = {"Norway"},
["NP"] = {"Nepal"},
["NR"] = {"Nauru"},
["NU"] = {"Niue"},
["NZ"] = {"New Zealand"},
["OM"] = {"Oman"},
["PA"] = {"Panama"},
["PE"] = {"Peru"},
["PF"] = {"French Polynesia"},
["PG"] = {"Papua New Guinea"},
["PH"] = {"Philippines"},
["PK"] = {"Pakistan"},
["PL"] = {"Poland"},
["PM"] = {"Saint Pierre and Miquelon"},
["PN"] = {"Pitcairn"},
["PR"] = {"Puerto Rico"},
["PS"] = {"State of Palestine"},
["PT"] = {"Portugal"},
["PW"] = {"Palau"},
["PY"] = {"Paraguay"},
["QA"] = {"Qatar"},
["RE"] = {"Réunion"},
["RO"] = {"Romania"},
["RS"] = {"Serbia"},
["RU"] = {"Russian Federation"},
["RW"] = {"Rwanda"},
["SA"] = {"Saudi Arabia"},
["SB"] = {"Solomon Islands"},
["SC"] = {"Seychelles"},
["SD"] = {"Sudan"},
["SE"] = {"Sweden"},
["SG"] = {"Singapore"},
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {"Slovenia"},
["SJ"] = {"Svalbard and Jan Mayen"},
["SK"] = {"Slovakia"},
["SL"] = {"Sierra Leone"},
["SM"] = {"San Marino"},
["SN"] = {"Senegal"},
["SO"] = {"Somalia"},
["SR"] = {"Suriname"},
["SS"] = {"South Sudan"},
["ST"] = {"Sao Tome and Principe"},
["SV"] = {"El Salvador"},
["SX"] = {"Sint Maarten (Dutch part)"},
["SY"] = {"Syrian Arab Republic"},
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},
["TA"] = {"Tristan da Cunha"},
["TC"] = {"Turks and Caicos Islands"},
["TD"] = {"Chad"},
["TF"] = {"French Southern Territories"},
["TG"] = {"Togo"},
["TH"] = {"Thailand"},
["TJ"] = {"Tajikistan"},
["TK"] = {"Tokelau"},
["TL"] = {"Timor-Leste"},
["TM"] = {"Turkmenistan"},
["TN"] = {"Tunisia"},
["TO"] = {"Tonga"},
["TR"] = {"Türkiye", "Turkey"},
["TT"] = {"Trinidad and Tobago"},
["TV"] = {"Tuvalu"},
["TW"] = {"Taiwan, Province of China"},
["TZ"] = {"United Republic of Tanzania"},
["UA"] = {"Ukraine"},
["UG"] = {"Uganda"},
["UM"] = {"United States Minor Outlying Islands"},
["UN"] = {"United Nations"},
["US"] = {"United States"},
["UY"] = {"Uruguay"},
["UZ"] = {"Uzbekistan"},
["VA"] = {"Holy See (Vatican City State)"},
["VC"] = {"Saint Vincent and the Grenadines"},
["VE"] = {"Venezuela"},
["VG"] = {"British Virgin Islands"},
["VI"] = {"U.S. Virgin Islands"},
["VN"] = {"Viet Nam"},
["VU"] = {"Vanuatu"},
["WF"] = {"Wallis and Futuna"},
["WS"] = {"Samoa"},
["YE"] = {"Yemen"},
["YT"] = {"Mayotte"},
["ZA"] = {"South Africa"},
["ZM"] = {"Zambia"},
["ZW"] = {"Zimbabwe"},
["001"] = {"World"},
["002"] = {"Africa"},
["003"] = {"North America"},
["005"] = {"South America"},
["009"] = {"Oceania"},
["011"] = {"Western Africa"},
["013"] = {"Central America"},
["014"] = {"Eastern Africa"},
["015"] = {"Northern Africa"},
["017"] = {"Middle Africa"},
["018"] = {"Southern Africa"},
["019"] = {"Americas"},
["021"] = {"Northern America"},
["029"] = {"Caribbean"},
["030"] = {"Eastern Asia"},
["034"] = {"Southern Asia"},
["035"] = {"South-Eastern Asia"},
["039"] = {"Southern Europe"},
["053"] = {"Australia and New Zealand"},
["054"] = {"Melanesia"},
["057"] = {"Micronesia"},
["061"] = {"Polynesia"},
["142"] = {"Asia"},
["143"] = {"Central Asia"},
["145"] = {"Western Asia"},
["150"] = {"Europe"},
["151"] = {"Eastern Europe"},
["154"] = {"Northern Europe"},
["155"] = {"Western Europe"},
["202"] = {"Sub-Saharan Africa"},
["419"] = {"Latin America and the Caribbean"}
}
08de6963e81994fd00a9f7b5a76b5ed63c543989
Module:Language/data/iana variants
828
473
1041
2023-08-21T15:41:29Z
wikipedia>Trappist the monk
0
update to 2023-08-02 data;
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["1606nict"] = {
["descriptions"] = {"Late Middle French (to 1606)"},
["prefixes"] = {"frm"},
},
["1694acad"] = {
["descriptions"] = {"Early Modern French"},
["prefixes"] = {"fr"},
},
["1901"] = {
["descriptions"] = {"Traditional German orthography"},
["prefixes"] = {"de"},
},
["1959acad"] = {
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},
["prefixes"] = {"be"},
},
["1994"] = {
["descriptions"] = {"Standardized Resian orthography"},
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},
},
["1996"] = {
["descriptions"] = {"German orthography of 1996"},
["prefixes"] = {"de"},
},
["abl1943"] = {
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},
["prefixes"] = {"pt-br"},
},
["akuapem"] = {
["descriptions"] = {"Akuapem Twi"},
["prefixes"] = {"tw"},
},
["alalc97"] = {
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},
["prefixes"] = {},
},
["aluku"] = {
["descriptions"] = {"Aluku dialect", "Boni dialect"},
["prefixes"] = {"djk"},
},
["ao1990"] = {
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},
["prefixes"] = {"pt", "gl"},
},
["aranes"] = {
["descriptions"] = {"Aranese"},
["prefixes"] = {"oc"},
},
["arkaika"] = {
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},
["prefixes"] = {"eo"},
},
["asante"] = {
["descriptions"] = {"Asante Twi", "Ashanti Twi"},
["prefixes"] = {"tw"},
},
["auvern"] = {
["descriptions"] = {"Auvergnat"},
["prefixes"] = {"oc"},
},
["baku1926"] = {
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},
},
["balanka"] = {
["descriptions"] = {"The Balanka dialect of Anii"},
["prefixes"] = {"blo"},
},
["barla"] = {
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["basiceng"] = {
["descriptions"] = {"Basic English"},
["prefixes"] = {"en"},
},
["bauddha"] = {
["descriptions"] = {"Buddhist Hybrid Sanskrit"},
["prefixes"] = {"sa"},
},
["bciav"] = {
["descriptions"] = {"BCI Blissymbolics AV"},
["prefixes"] = {"zbl"},
},
["bcizbl"] = {
["descriptions"] = {"BCI Blissymbolics"},
["prefixes"] = {"zbl"},
},
["biscayan"] = {
["descriptions"] = {"Biscayan dialect of Basque"},
["prefixes"] = {"eu"},
},
["biske"] = {
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["blasl"] = {
["descriptions"] = {"Black American Sign Language dialect"},
["prefixes"] = {"ase", "sgn-ase"},
},
["bohoric"] = {
["descriptions"] = {"Slovene in Bohorič alphabet"},
["prefixes"] = {"sl"},
},
["boont"] = {
["descriptions"] = {"Boontling"},
["prefixes"] = {"en"},
},
["bornholm"] = {
["descriptions"] = {"Bornholmsk"},
["prefixes"] = {"da"},
},
["cisaup"] = {
["descriptions"] = {"Cisalpine"},
["prefixes"] = {"oc"},
},
["colb1945"] = {
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},
["prefixes"] = {"pt"},
},
["cornu"] = {
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},
["prefixes"] = {"en"},
},
["creiss"] = {
["descriptions"] = {"Occitan variants of the Croissant area"},
["prefixes"] = {"oc"},
},
["dajnko"] = {
["descriptions"] = {"Slovene in Dajnko alphabet"},
["prefixes"] = {"sl"},
},
["ekavsk"] = {
["descriptions"] = {"Serbian with Ekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["emodeng"] = {
["descriptions"] = {"Early Modern English (1500-1700)"},
["prefixes"] = {"en"},
},
["fonipa"] = {
["descriptions"] = {"International Phonetic Alphabet"},
["prefixes"] = {},
},
["fonkirsh"] = {
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},
["prefixes"] = {},
},
["fonnapa"] = {
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},
["prefixes"] = {},
},
["fonupa"] = {
["descriptions"] = {"Uralic Phonetic Alphabet"},
["prefixes"] = {},
},
["fonxsamp"] = {
["descriptions"] = {"X-SAMPA transcription"},
["prefixes"] = {},
},
["gallo"] = {
["descriptions"] = {"Gallo"},
["prefixes"] = {"fr"},
},
["gascon"] = {
["descriptions"] = {"Gascon"},
["prefixes"] = {"oc"},
},
["grclass"] = {
["descriptions"] = {"Classical Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["grital"] = {
["descriptions"] = {"Italian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},
},
["grmistr"] = {
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["hepburn"] = {
["descriptions"] = {"Hepburn romanization"},
["prefixes"] = {"ja-latn"},
},
["hognorsk"] = {
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},
["prefixes"] = {"nn"},
},
["hsistemo"] = {
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
},
["ijekavsk"] = {
["descriptions"] = {"Serbian with Ijekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["itihasa"] = {
["descriptions"] = {"Epic Sanskrit"},
["prefixes"] = {"sa"},
},
["ivanchov"] = {
["descriptions"] = {"Bulgarian in 1899 orthography"},
["prefixes"] = {"bg"},
},
["jauer"] = {
["descriptions"] = {"Jauer dialect of Romansh"},
["prefixes"] = {"rm"},
},
["jyutping"] = {
["descriptions"] = {"Jyutping Cantonese Romanization"},
["prefixes"] = {"yue"},
},
["kkcor"] = {
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["kociewie"] = {
["descriptions"] = {"The Kociewie dialect of Polish"},
["prefixes"] = {"pl"},
},
["kscor"] = {
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},
["prefixes"] = {"kw"},
},
["laukika"] = {
["descriptions"] = {"Classical Sanskrit"},
["prefixes"] = {"sa"},
},
["lemosin"] = {
["descriptions"] = {"Limousin"},
["prefixes"] = {"oc"},
},
["lengadoc"] = {
["descriptions"] = {"Languedocien"},
["prefixes"] = {"oc"},
},
["lipaw"] = {
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["ltg1929"] = {
["descriptions"] = {"The Latgalian language orthography codified in 1929"},
["prefixes"] = {"ltg"},
},
["ltg2007"] = {
["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"},
["prefixes"] = {"ltg"},
},
["luna1918"] = {
["descriptions"] = {"Post-1917 Russian orthography"},
["prefixes"] = {"ru"},
},
["metelko"] = {
["descriptions"] = {"Slovene in Metelko alphabet"},
["prefixes"] = {"sl"},
},
["monoton"] = {
["descriptions"] = {"Monotonic Greek"},
["prefixes"] = {"el"},
},
["ndyuka"] = {
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},
["prefixes"] = {"djk"},
},
["nedis"] = {
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},
["prefixes"] = {"sl"},
},
["newfound"] = {
["descriptions"] = {"Newfoundland English"},
["prefixes"] = {"en-ca"},
},
["nicard"] = {
["descriptions"] = {"Niçard"},
["prefixes"] = {"oc"},
},
["njiva"] = {
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["nulik"] = {
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},
["prefixes"] = {"vo"},
},
["osojs"] = {
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["oxendict"] = {
["descriptions"] = {"Oxford English Dictionary spelling"},
["prefixes"] = {"en"},
},
["pahawh2"] = {
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh3"] = {
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh4"] = {
["descriptions"] = {"Pahawh Hmong Final Version orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pamaka"] = {
["descriptions"] = {"Pamaka dialect"},
["prefixes"] = {"djk"},
},
["peano"] = {
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},
["prefixes"] = {"la"},
},
["petr1708"] = {
["descriptions"] = {"Petrine orthography"},
["prefixes"] = {"ru"},
},
["pinyin"] = {
["descriptions"] = {"Pinyin romanization"},
["prefixes"] = {"zh-latn", "bo-latn"},
},
["polyton"] = {
["descriptions"] = {"Polytonic Greek"},
["prefixes"] = {"el"},
},
["provenc"] = {
["descriptions"] = {"Provençal"},
["prefixes"] = {"oc"},
},
["puter"] = {
["descriptions"] = {"Puter idiom of Romansh"},
["prefixes"] = {"rm"},
},
["rigik"] = {
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},
["prefixes"] = {"vo"},
},
["rozaj"] = {
["descriptions"] = {"Resian", "Resianic", "Rezijan"},
["prefixes"] = {"sl"},
},
["rumgr"] = {
["descriptions"] = {"Rumantsch Grischun"},
["prefixes"] = {"rm"},
},
["scotland"] = {
["descriptions"] = {"Scottish Standard English"},
["prefixes"] = {"en"},
},
["scouse"] = {
["descriptions"] = {"Scouse"},
["prefixes"] = {"en"},
},
["simple"] = {
["descriptions"] = {"Simplified form"},
["prefixes"] = {},
},
["solba"] = {
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["sotav"] = {
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["spanglis"] = {
["descriptions"] = {"Spanglish"},
["prefixes"] = {"en", "es"},
},
["surmiran"] = {
["descriptions"] = {"Surmiran idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sursilv"] = {
["descriptions"] = {"Sursilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sutsilv"] = {
["descriptions"] = {"Sutsilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["synnejyl"] = {
["descriptions"] = {"Synnejysk", "South Jutish"},
["prefixes"] = {"da"},
},
["tarask"] = {
["descriptions"] = {"Belarusian in Taraskievica orthography"},
["prefixes"] = {"be"},
},
["tongyong"] = {
["descriptions"] = {"Tongyong Pinyin romanization"},
["prefixes"] = {"zh-latn"},
},
["tunumiit"] = {
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},
["prefixes"] = {"kl"},
},
["uccor"] = {
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ucrcor"] = {
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ulster"] = {
["descriptions"] = {"Ulster dialect of Scots"},
["prefixes"] = {"sco"},
},
["unifon"] = {
["descriptions"] = {"Unifon phonetic alphabet"},
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},
},
["vaidika"] = {
["descriptions"] = {"Vedic Sanskrit"},
["prefixes"] = {"sa"},
},
["valencia"] = {
["descriptions"] = {"Valencian"},
["prefixes"] = {"ca"},
},
["vallader"] = {
["descriptions"] = {"Vallader idiom of Romansh"},
["prefixes"] = {"rm"},
},
["vecdruka"] = {
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},
["prefixes"] = {"lv"},
},
["vivaraup"] = {
["descriptions"] = {"Vivaro-Alpine"},
["prefixes"] = {"oc"},
},
["wadegile"] = {
["descriptions"] = {"Wade-Giles romanization"},
["prefixes"] = {"zh-latn"},
},
["xsistemo"] = {
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
}
}
36f89cd82969f3b0f948034eba0fa2c149ee65c2
Module:Language/data/iana suppressed scripts
828
474
1043
2023-08-21T15:41:32Z
wikipedia>Trappist the monk
0
update to 2023-08-02 data;
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Arab"] = {"ar", "fa", "ps", "ur"},
["Armn"] = {"hy"},
["Beng"] = {"as", "bn"},
["Blis"] = {"zbl"},
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},
["Ethi"] = {"am", "ti"},
["Geor"] = {"ka"},
["Grek"] = {"el"},
["Gujr"] = {"gu"},
["Guru"] = {"pa"},
["Hebr"] = {"he", "iw", "yi"},
["Jpan"] = {"ja"},
["Khmr"] = {"km"},
["Knda"] = {"kn"},
["Kore"] = {"ko"},
["Laoo"] = {"lo"},
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",
"tpi", "tvl"},
["Mlym"] = {"ml"},
["Mymr"] = {"my"},
["Nkoo"] = {"nqo"},
["Orya"] = {"or"},
["Sinh"] = {"si"},
["Taml"] = {"ta"},
["Telu"] = {"te"},
["Thaa"] = {"dv"},
["Thai"] = {"th"},
["Tibt"] = {"dz"}
}
e2c364560ccc050dacdd276ebab1758584b937ad
Template:Lang-x/doc/parameters
10
1007
2210
2023-08-22T01:52:38Z
wikipedia>LethologicalLinguophile
0
Fix capitalization of script name in "ru-Latn"
wikitext
text/x-wiki
==lang-xx==
<section begin=lang_xx_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} -->
{| class="wikitable"
|+lang-xx supported parameters
!parameter !! definition !! yields to !! alias
|-
|<code>text</code> || non-English text || – || <code><nowiki>{{{1}}}</nowiki></code>
|-
|<code>translit</code> || Latin script transliteration of the content in <code>text</code> || – || <code><nowiki>{{{2}}}</nowiki></code>
|-
|<code>translit-std</code> || standard used for the transliteration of the value of <code>translit</code>; accepted values are: <kbd>ISO</kbd>, <kbd>DIN</kbd>, <kbd>IAST</kbd>, <kbd>ALA</kbd>, <kbd>ALA-LC</kbd> || – ||
|-
|{{nowrap|<code>translit-script</code>}} || transliteration standard's script identifier || – ||
|-
|<code>translation</code> || literal English translation or gloss of the content in <code>text</code> || – || <code>lit</code>, <code><nowiki>{{{3}}}</nowiki></code>
|-
|<code>label</code> || label to be used instead of template-provided language label; may be wikilinked; special keyword <kbd>none</kbd> causes the template to render without any labels (including transliteration and translation labels) || – ||
|-
|<code>link</code> || <kbd>yes</kbd> (default) links language name and static text associated with <code>translit</code> and <code>translation</code>; accepted values are: <kbd>no</kbd>, <kbd>yes</kbd>; {{para|link|no}} does not unlink wikilinked labels set by {{para|label}} || – || <code>links</code>
|-
|-
|<code>code</code> || [[IETF language tag]] for the content in <code>text</code>; set by the template, overriding the template setting is discouraged || – ||
|-
|<code>script</code> || IETF language script subtag; sometimes set by the template when the language of the content in <code>text</code> uses more than one writing system; always four alpha characters; a value of <kbd>Latn</kbd> <small>({{em|not}} "Latin"!)</small> forces italic rendering unless overridden by <code>italic</code>; overrides <code>rtl</code> || <code>italic</code> ||
|-
|<code>region</code> || IETF language region subtag || – ||
|-
|<code>variant</code> || IETF language variant subtag || – ||
|-
|<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || <code>script</code> ||
|-
|<code>italic</code> || {{crossref|see table "lang-xx {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code>
|-
|<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – ||
|-
|<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – ||
|-
|<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – ||
|-
|}
{| class="wikitable"
|+lang-xx {{pipe}}italic= parameter operation
|-
!{{pipe}}italic= value !! description !! example code !! result !! html markup
|-
|rowspan="4"| {{plainlist|
*parameter not present;
*parameter present, not set;
*invalid value}}
|rowspan="7"| {{plainlist|
*module applies style from:
* template setting, or
* {{para|script|latn}};
*else inherits from external markup;
*invalid values treated as default}}
| <code><nowiki>{{lang-ru|тундра}}</nowiki></code> || {{lang-ru|тундра}} || {{code|{{lang-ru|тундра}}}}
|-
| <code>{{deprecated code|red=yes|<nowiki>{{lang-ru|tûndra}}</nowiki>}}</code> || {{lang-ru|tûndra}} || {{code|{{lang-ru|tûndra}}}}<br />Incorrect markup; this requires {{para|script|latn}}.
|-
| <code><nowiki>{{lang-fr|toundra}}</nowiki></code> || {{lang-fr|toundra}} || {{code|{{lang-fr|toundra}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra}}</nowiki></code> || {{lang-ru|script=latn|tûndra}} || {{code|{{lang-ru|script=latn|tûndra}}}}
|-
|rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang-ru|тундра|italic=default}}</nowiki></code> || {{lang-ru|тундра|italic=default}} || {{code|{{lang-ru|тундра|italic=default}}}}
|-
| <code><nowiki>{{lang-fr|toundra|italic=default}}</nowiki></code> || {{lang-fr|toundra|italic=default}} || {{code|{{lang-fr|toundra|italic=default}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=default}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=default}} || {{code|{{lang-ru|script=latn|tûndra|italic=default}}}}
|-
|rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist|
*module applies upright style;
*overrides {{para|script|latn}};
*overrides external markup}}
| <code><nowiki>{{lang-ru|тундра|italic=no}}</nowiki></code> || {{lang-ru|тундра|italic=no}} || {{code|{{lang-ru|тундра|italic=no}}}}
|-
| <code><nowiki>{{lang-fr|toundra|italic=no}}</nowiki></code> || {{lang-fr|toundra|italic=no}} || {{code|{{lang-fr|toundra|italic=no}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=no}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=no}} || {{code|{{lang-ru|script=latn|tûndra|italic=no}}}}
|-
| <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=no}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=no}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=no}}''}}
|-
|rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist|
*module applies italic style;
*ignores {{para|script|latn}}}}
| <code><nowiki>{{lang-ru|тундра|italic=yes}}</nowiki></code> || {{lang-ru|тундра|italic=yes}} || {{code|{{lang-ru|тундра|italic=yes}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=yes}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=yes}} || {{code|{{lang-ru|script=latn|tûndra|italic=yes}}}}
|-
|rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inherits style from external markup;
*overrides {{para|script|latn}}}}
| <code><nowiki>{{lang-ru|тундра|italic=unset}}</nowiki></code> || {{lang-ru|тундра|italic=unset}} || {{code|{{lang-ru|тундра|italic=unset}}}}
|-
| <code><nowiki>''{{lang-ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang-ru|тундра|italic=unset}}'' || {{code|''{{lang-ru|тундра|italic=unset}}''}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=unset}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=unset}} || {{code|{{lang-ru|script=latn|tûndra|italic=unset}}}}
|-
| <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=unset}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=unset}}''}}
|-
|rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inverts style in internal markup{{dagger}};
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang-ru|тундра|italic=invert}}</nowiki></code> || {{lang-ru|тундра|italic=invert}} || {{code|{{lang-ru|тундра|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|''тундра''|italic=invert}}</nowiki></code> || {{lang-ru|''тундра''|italic=invert}} || {{code|{{lang-ru|''тундра''|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=invert}} || {{code|{{lang-ru|script=latn|tûndra|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|''tûndra''|italic=invert}} || {{code|{{lang-ru|script=latn|''tûndra''|italic=invert}}}}
|-
|}
{{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}:
:<code><nowiki>{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code>
::{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}
:<code><nowiki>{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code>
::{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}
<section end=lang_xx_parameters />
==lang==
<section begin=lang_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_parameters}} -->
{| class="wikitable"
|+lang supported parameters
!parameter !! definition !! yields to !! alias
|-
|<code>code</code> || [[IETF language tag]] for the content in <code>text</code> || – || <code><nowiki>{{{1}}}</nowiki></code>
|-
|<code>text</code> || non-English text || – || <code><nowiki>{{{2}}}</nowiki></code>
|-
|<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || IETF script subtag in <code>code</code> (if provided) ||
|-
|<code>italic</code> || {{crossref|see table "lang {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code>
|-
|<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – ||
|-
|<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – ||
|-
|<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – ||
|-
|}
{| class="wikitable" id="italic parameter"
|+lang {{pipe}}italic= parameter operation
|-
!{{pipe}}italic= value !! description !! example code !! result !! html markup
|-
|rowspan="4"| {{plainlist|
*parameter not present;
*parameter present, not set;
*invalid value}}
|rowspan="7"| {{plainlist|
*module applies style from:
* auto-italics or
* script subtag <code>latn</code>;
*else inherits from external markup;
*invalid values treated as default}}
| <code><nowiki>{{lang|ru|тундра}}</nowiki></code> || {{lang|ru|тундра}} || {{code|{{lang|ru|тундра}}}}
|-
| <code>{{deprecated code|red=yes|<nowiki>{{lang|ru|tûndra}}</nowiki>}}</code> || {{lang|ru|tûndra}} || {{code|{{lang|ru|tûndra}}}}<br />Incorrect markup; this requires {{para||ru-Latn}}.
|-
| <code><nowiki>{{lang|fr|toundra}}</nowiki></code> || {{lang|fr|toundra}} || {{code|{{lang|fr|toundra}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra}}</nowiki></code> || {{lang|ru-Latn|tûndra}} || {{code|{{lang|ru-Latn|tûndra}}}}
|-
|rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang|ru|тундра|italic=default}}</nowiki></code> || {{lang|ru|тундра|italic=default}} || {{code|{{lang|ru|тундра|italic=default}}}}
|-
| <code><nowiki>{{lang|fr|toundra|italic=default}}</nowiki></code> || {{lang|fr|toundra|italic=default}} || {{code|{{lang|fr|toundra|italic=default}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=default}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=default}} || {{code|{{lang|ru-Latn|tûndra|italic=default}}}}
|-
|rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist|
*module applies upright style;
*overrides auto-italics
*overrides script subtag <code>latn</code>;
*overrides external markup}}
| <code><nowiki>{{lang|ru|тундра|italic=no}}</nowiki></code> || {{lang|ru|тундра|italic=no}} || {{code|{{lang|ru|тундра|italic=no}}}}
|-
| <code><nowiki>{{lang|fr|toundra|italic=no}}</nowiki></code> || {{lang|fr|toundra|italic=no}} || {{code|{{lang|fr|toundra|italic=no}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=no}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=no}} || {{code|{{lang|ru-Latn|tûndra|italic=no}}}}
|-
| <code><nowiki>''{{lang|fr|toundra|italic=no}}''</nowiki></code> || ''{{lang|fr|toundra|italic=no}}'' || {{code|''{{lang|fr|toundra|italic=no}}''}}
|-
|rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist|
*module applies italic style;
*ignores auto-italics;
*ignores script subtag <code>latn</code>}}
| <code><nowiki>{{lang|ru|тундра|italic=yes}}</nowiki></code> || {{lang|ru|тундра|italic=yes}} || {{code|{{lang|ru|тундра|italic=yes}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=yes}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=yes}} || {{code|{{lang|ru-Latn|tûndra|italic=yes}}}}
|-
|rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inherits style from external markup;
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang|ru|тундра|italic=unset}}</nowiki></code> || {{lang|ru|тундра|italic=unset}} || {{code|{{lang|ru|тундра|italic=unset}}}}
|-
| <code><nowiki>''{{lang|ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang|ru|тундра|italic=unset}}'' || {{code|''{{lang|ru|тундра|italic=unset}}''}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=unset}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=unset}} || {{code|{{lang|ru-Latn|tûndra|italic=unset}}}}
|-
| <code><nowiki>''{{lang|ru-Latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang|ru-Latn|tûndra|italic=unset}}'' || {{code|''{{lang|ru-Latn|tûndra|italic=unset}}''}}
|-
|rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inverts style in internal markup{{dagger}};
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang|ru|тундра|italic=invert}}</nowiki></code> || {{lang|ru|тундра|italic=invert}} || {{code|{{lang|ru|тундра|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru|''тундра''|italic=invert}}</nowiki></code> || {{lang|ru|''тундра''|italic=invert}} || {{code|{{lang|ru|''тундра''|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=invert}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=invert}} || {{code|{{lang|ru-Latn|tûndra|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru-Latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang|ru-Latn|''tûndra''|italic=invert}} || {{code|{{lang|ru-Latn|''tûndra''|italic=invert}}}}
|-
|}
{{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}:
:<code><nowiki>{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code>
::{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}
:<code><nowiki>{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code>
::{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}
<section end=lang_parameters />
9f872259d64409fe61de99a33ab37b30ea8b89c5
Template:UF-hcard-place
10
1221
2550
2023-08-22T10:47:27Z
w>PK2
0
bypass redirect to [[Template:Flatlist]]
wikitext
text/x-wiki
The HTML mark up produced by this template includes an [[HCard|hCard microformat]], which makes the place-name and location [[Parsing|parsable]] by computers, either acting automatically to catalogue article across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to an address book. For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]].
If the place or venue has an "established", "founded", "opened" or similar date that is specific to the day, use {{tl|start date}} [[Wikipedia:WikiProject Microformats/dates|unless the date is before 1583 CE]]. If it has a URL, use {{tl|URL}}.
hCard uses HTML classes including:
{{flatlist |
* adr
* category
* country-name
* extended-address
* fn
* label
* locality
* nickname
* note
* org
* street-address
* url
* vcard
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{sandbox other||[[Category:Templates generating hCards]]}}</includeonly><noinclude>
[[Category:Templates generating hCards]]
[[Category:Microformat (uF) message templates]]
</noinclude>
4dd5b2fed1d81094b0e7b4f51a6009b556b539b3
Template:UF-hcard-person
10
202
458
2023-08-22T10:48:21Z
wikipedia>PK2
0
bypass redirect to [[Template:Flatlist]]
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
=== Sub-templates ===
Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]].
To include a URL, use {{Tl|URL}}.
'''Please do not remove instances of these sub-templates.'''
=== Classes ===
hCard uses HTML classes including:
{{Flatlist|
*adr
*agent
*bday
*birthplace
*category
*country-name
*deathdate
*deathplace
*extended-address
*family-name
*fn (required)
*given-name
*honorific-prefix
*honorific-suffix
*label
*locality
*n
*nickname
*note
*org
*role
*url
*vcard
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude>
[[Category:Templates generating hCards]]
[[Category:Microformat (uF) message templates]]
</noinclude>
cf7d7c17b9e4a925f11599e609ceb43d23ba29ea
Template:UF-hcard-geo
10
1391
2726
2023-08-22T10:49:12Z
w>PK2
0
bypass redirect to [[Template:Flatlist]]
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[HCard| hCard microformat]], which makes the place-name and location [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to an address book. Within the hCard is a [[Geo (microformat)|Geo microformat]], which additionally makes the [[Geographic coordinate system|coordinates]] (latitude & longitude) parsable, so that they can be, say, looked up on a map, or downloaded to a [[Global Positioning System|GPS]] unit. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
=== Sub-templates ===
If the place or venue has "established", "founded", "opened" or similar dates, use {{tl|start date}} for the earliest of those dates [[Wikipedia:WikiProject Microformats/dates|unless the date is before 1583 CE]].
If it has a URL, use {{tl|URL}}.
'''Please do not remove instances of these sub-templates.'''
=== Classes ===
hCard uses HTML classes including:
{{Flatlist|
*adr
*agent
*category
*county-name
*extended-address
*fn
*label
*locality
*nickname
*note
*org
*region
*street-address
*uid
*url
*vcard
}}
Geo is produced by calling {{tl|coord}}, and uses HTML classes:
{{Flatlist|
*geo
*latitude
*longitude
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''
=== Precision ===
When giving coordinates, '''please use an [[Wikipedia:WikiProject Geographical coordinates#Precision|appropriate level of precision]]'''. Do '''not''' use {{tl|coord}}'s {{para|name}} parameter.<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |
[[Category:Templates with coordinates fields]]
[[Category:Templates generating hCards and Geo]]
}}</includeonly><noinclude>__NOTOC__{{doc}}</noinclude>
b2e64e922ddf0a9b1b20a214e99d2d1a8d7f81c4
Template:UF-hcal-geo
10
1513
2848
2023-08-22T10:50:57Z
w>PK2
0
bypass redirect to [[Template:Flatlist]]
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[hCalendar|hCalendar microformat]], which makes the event details [[parsing|parsable]] by computers, either acting automatically to catalogue article across Wikipedia, or via a browser tool operated by a person, to (for example) add the subject to a calendar or diary application. Within the hCalendar is a [[Geo (microformat)|Geo microformat]], which additionally makes the [[geographic coordinate system|coordinates]] (latitude & longitude) parsable, so that they can be, say, looked up on a map, or downloaded to a [[Global Positioning System|GPS]] unit. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
Dates will only be included if you use {{tl|Start date}} or {{tl|End date}} (use the former for single dates, [[Wikipedia:WikiProject Microformats/dates|but do not use any of these if the date is before 1583 CE]]). {{tl|End date}} requires that a time be specified, but display of this time may be suppressed by adding {{para|nodate|yes}} to the end.
To include a URL, use {{tl|URL}}.
hCalendar uses HTML classes including:
{{Flatlist|indent=1|
*attendee
*dtend
*dtstart
*location
*summary
*url
*vevent
}}
Geo is produced by calling {{tl|coord}}, and uses HTML classes:
{{Flatlist|indent=1|
*geo
*latitude
*longitude
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<br/>Also, when giving coordinates, please don't be [[wikipedia:WikiProject Geographical coordinates#Precision|overly precise]].
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars and Geo|{{PAGENAME}}]]}} }}</includeonly><noinclude>
[[Category:Microformat (uF) message templates]]
</noinclude>
17ca83a86600e9c6435d5e462efaadfbe2c34b4b
Template:UF-geo-other
10
1687
3145
2023-08-22T10:51:40Z
wikipedia>PK2
0
bypass redirect to [[Template:Flatlist]]
wikitext
text/x-wiki
The HTML markup produced by this template emits an [[Geo (microformat)| Geo microformat]], which makes the location's [[Geographic coordinate system|coordinates]] (latitude & longitude) [[Parsing|parsable]], so that they can be, say, looked up on a map. As yet, [http://microformats.org/wiki/geo-extension-strawman the standard for doing this] for off-world bodies is still under development, but is supported in some microformat parsers (e.g. [http://buzzword.org.uk/swignition/ Swignition]). For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]].
Geo is usually produced by calling {{tl|coord}}, and uses HTML classes:
{{Flatlist|
*body
*geo
*latitude
*longitude
}}
'''Please do not rename or remove these classes.'''
When giving coordinates, please don't be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]].
[[Category:Templates generating Geo]]<noinclude>
[[Category:Microformat (uF) message templates]]
</noinclude>
613bb35611b91e35da4f93aa2271dff142885821
Module:Portal/images/e
828
848
1878
2023-08-24T02:42:07Z
wikipedia>Paine Ellsworth
0
per edit request on talk page - include entry
Scribunto
text/plain
--[==[ This is the "E" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "E". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["earth"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=",
["earth sciences"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=",
["earthquakes"] = "Good Friday Earthquake at Turnagain Arm.jpg|link=|alt=image",
["east asia"] = "East Asia Cutout Projection.png|border|link=|alt=map",
["east germany"] = "Flag of East Germany.svg|border|link=|alt=flag",
["east sussex"] = "Arms of the East Sussex County Council.svg|link=|alt=",
["east timor"] = "Flag of East Timor.svg|border|link=|alt=flag",
["eastern europe"] = "Eastern Europe (Robinson projection).png|border|link=|alt=map",
["ecology"] = "Earth Day Flag.png|border|link=|alt=icon",
["ecuador"] = "Flag of Ecuador.svg|border|link=|alt=flag",
["ed, edd n eddy"] = "Ed, Edd n Eddy logo.png|link=|alt=",
["edinburgh"] = "Flag of Edinburgh.svg|alt=flag",
["education"] = "Diploma icon.png|alt=icon",
["education in india"] = "Nalanda University India ruins.jpg|link=|alt=photo",
["egypt"] = "Flag of Egypt.svg|border|link=|alt=flag",
["eifel"] = "Geobox Mountain Range.svg|link=|alt=icon",
["el salvador"] = "Flag of El Salvador.svg|border|link=|alt=flag",
["electoral districts in canada"] = "Canpoligeoicon.png|link=|alt=",
["electronics"] = "Nuvola apps ksim.png|alt=icon",
["energy"] = "Crystal energy.svg|alt=icon",
["engineering"] = "Nuvola apps kcmsystem.svg|alt=icon",
["england"] = "Flag of England.svg|border|link=|alt=flag",
["english football"] = "Soccerball England.svg|link=|alt=",
["english language"] = "Shakespeare2.jpg|link=|alt=painting",
["english law"] = "Scale of justice 2 new.jpeg|alt=icon",
["entomology"] = "Orapia rayneri.svg|link=|alt=image",
["environment"] = "Aegopodium podagraria1 ies.jpg|alt=icon",
["equatorial guinea"] = "Flag of Equatorial Guinea.svg|border|link=|alt=flag",
["eritrea"] = "Flag of Eritrea.svg|border|link=|alt=flag",
["erotica and pornography"] = "Pornproject logo.svg|alt=icon",
["estonia"] = "Flag of Estonia.svg|border|link=|alt=flag",
["eswatini"] = "Flag of Eswatini.svg|border|link=|alt=flag",
["ethiopia"] = "Flag of Ethiopia.svg|border|link=|alt=flag",
["eurasia"] = "Eurasia (orthographic projection).svg|link=|alt=map",
["europe"] = "Europe (orthographic projection).svg|link=|alt=map",
["european military history"] = "Cartography of Europe (blue).svg|link=|alt=",
["european union"] = "Flag of Europe.svg|border|link=|alt=flag",
["eurovision song contest"] = "Wiki Eurovision Heart (Infobox).svg|border|link=|alt=icon",
["evangelical christianity"] = "ChristianitySymbolWhite.PNG|link=|alt=",
["evangelion"] = "Tree of life kircher plain.png|link=|alt=",
["evolutionary biology"] = "Tree of life.svg|alt=icon",
["extinct and endangered species"] = "ExtinctDodoBird.jpeg|link=|alt=",
["extraterrestrial"] = "Galaxy blue.jpg|link=|alt=photo",
}
94070388d2b90fdc5d9bac8bcf57cd60115a825f
Template:Infobox military person/doc
10
1366
2701
2023-08-24T03:10:51Z
w>Shaan Sengupta
0
Added death cause
wikitext
text/x-wiki
{{#ifeq:{{{noheader|}}}|yes||
{{Documentation subpage}}
{{Person infobox header}}
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
}}
A military person infobox may be used to summarize information about an individual military person, such as a soldier or military leader, or for uniformed officers in non-military branches of government.
This template may be used as a module (sub-template) of {{tl|Infobox person}}; see [[Wikipedia:Infobox modules]] for guidance on such usage.
== Usage ==
=== Blank template ===
The infobox should be added as shown below:
{{Parameter names example|_template=|embed|width_style|honorific prefix|honorific_prefix|name|honorific suffix|honorific_suffix|image|image_size|alt|caption|native_name|native_name_lang|birth_name|other_name|nickname|birth_date|birth_place|death_date|death_place|death_cause|placeofburial_label|placeofburial|placeofburial_coordinates|allegiance|branch_label|branch|serviceyears_label|serviceyears|rank_label|rank|servicenumber|unit|commands|known_for|battles_label|battles|awards|memorials|alma_mater|spouse|relations|otherwork|laterwork|signature|signature_size|signature alt|signature_alt|website|homepage|URL|module}}
<syntaxhighlight lang="wikitext" style=overflow:auto;>
{{Infobox military person
|honorific_prefix =
|name =
|honorific_suffix =
|image =
|image_upright =
|alt =
|caption =
|native_name =
|native_name_lang =
|birth_name =
|other_name =
|nickname =
|birth_date = <!--{{birth date and age|YYYY|MM|DD}} or {{birth date|YYYY|MM|DD}} if dead-->
|birth_place =
|death_date = <!--{{death date and age|dYYYY|dMM|dDD|YYYY|MM|DD}}-->
|death_place =
|death_cause =
|placeofburial =
|placeofburial_label =
|placeofburial_coordinates = <!--{{coord|LAT|LONG|display=inline,title}}-->
|allegiance =
|branch =
|branch_label = <!--"Branch" or "Service"-->
|serviceyears =
|serviceyears_label =
|rank =
|rank_label =
|servicenumber =
|unit =
|commands =
|known_for =
|battles =
|battles_label =
|awards =
|memorials =
|alma_mater =
|spouse = <!--{{marriage|name|start date|end date}}; add spouse if reliably sourced-->
|children =
|relations =
|laterwork =
|signature =
|signature_size =
|signature_alt =
|website = <!--{{URL|example.com}}-->
|module =
}}</syntaxhighlight>
=== Parameters ===
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]). Please keep in mind [[WP:ICONDECORATION]] for the use of images.
* '''honorific_prefix''' – titles such as "Sir".
* '''name''' – the full name of the person.
* '''honorific_suffix''' – post-nominal honours such as "OBE"
* '''image''' – ''optional'' – an image of the person. The image must be given in the form <code><nowiki>Example.jpg</nowiki></code>; an image of a nation's highest award, such as the [[Medal of Honor]] or [[Victoria Cross]], may be displayed for recipients of it, especially as a placeholder.
* '''image_upright''' – ''optional'' – See [[WP:UPRIGHT]]
* '''image_size''' – ''optional'' – the size of the image in px. Give the number without the px suffix (for example, ''220'' rather than ''220px''). {{para|image_upright}} is preferred.
* '''alt''' [[Wikipedia:Alternative text for images|Alt text]], if used, must be placed here.
* '''caption''' – ''optional'' – the text to be placed below the image.
* '''native_name''' – the person's name in their own language
* '''native_name_lang''' – [[List of ISO 639-2 codes|ISO 639-2 code]] e.g. "fre" or "fra" for French. If more than one, use {{Tl|lang}} for {{Para|native_name}} instead
* '''birth_name''' – ''optional'' – the name the person was born with, if different from that used later in life.
* '''other_name''' – ''optional'' – other names by which the person was known.
* '''nickname''' – ''optional'' – nickname(s) by which the person was known.
* '''birth_date''' – ''optional'' – the date of birth, if known, using {{Tl|Birth date}} or {{Tl|Birth date and age}}.
* '''birth_place''' – ''optional'' – the person's birthplace.
* '''death_date''' – ''optional'' – the date of death, if applicable and known, in {{Tl|Death date and age}}.
* '''death_place''' – ''optional'' – the place where the person died.
* '''death_cause''' - ''optional'' - the cause of death of the person.
* '''placeofburial''' – ''optional'' – the place where the person's remains are buried or otherwise interred.
* '''placeofburial_label''' – ''optional'' – the label of the ''placeofburial'' field (above). The ''placeofburial'' field is normally preceded by the label "Buried"; if this is not appropriate for the particular manner in which the remains were disposed of, a different label can be specified here.
* '''placeofburial_coordinates''' – ''optional'' – the precise location where the person's remains are buried or otherwise interred. {{UF-coord}}
* '''allegiance''' – ''optional'' – the country or other power the person served. Multiple countries may be indicated together with the corresponding dates. This field should not be used to indicate a particular service branch, which is better indicated by the <code>branch</code> field (below).
* '''branch''' – ''optional'' – the service branch (Army, Navy, etc.) the person was a part of; this should be left blank for people who were not part of a formal armed service, or who predate the establishment of formal service branches.
* '''branch_label''' – ''optional'' – the label of the ''branch'' field (above). The ''branch'' field is normally preceded by "Service/Branch"; to avoid word wrapping, one of "Service" or "Branch" can be specified.
* '''serviceyears''' – ''optional'' – the years during which the person served.
* '''serviceyears_label''' – ''optional'' – the label to use for the '''serviceyears''' field (above); defaults to "Years of service".
* '''rank''' – ''optional'' – the highest rank achieved by the person. The rank being awarded posthumously, may be noted. In cases where the person held different ranks in different armies, multiple ranks should be specified with dates and country noted for each. Separate multiple entries using {{Tl|Plainlist}}.
* '''rank_label''' – ''optional'' – the label to use for the '''rank''' field (above); defaults to "Rank".
* '''service number''' – ''optional'' – the [[service number]] held by the individual during military service. Do not supply for living persons unless published by secondary sources such as the ''[[London Gazette]]''.
* '''unit''' – ''optional'' – for persons who are not notable as commanding officers, the unit (company, battalion, regiment, etc.) in which they served. This should be omitted if the commands are specified (as below).
* '''commands''' – ''optional'' – for persons who are notable as commanding officers, the units they commanded. Dates should be given if multiple notable commands were held. Separate multiple entries using {{Tl|Plainlist}}.
* '''known_for''' or '''known''' – ''optional'' – for other areas of notability such as war crimes or notable orders.
* '''battles''' – ''optional'' – any notable battles or wars in which the person participated. This should be omitted if a {{tl|Campaignbox}} is used in conjunction with this template. Separate multiple entries using {{Tl|Plainlist}}.
* '''battles_label''' – ''optional'' – the label to use for the '''battles''' field (above); defaults to "Battles/wars".
* '''awards''' – ''optional'' – any ''notable'' awards or decorations the person received; exhaustive lists should be worked into the prose. Separate multiple entries using {{Tl|Plainlist}}.
* '''memorials''' – ''optional'' – Memorials or monuments to the subject (e.g. statues, streets named after them). Separate multiple entries using {{Tl|Plainlist}}.
* '''alma_mater''' – ''optional'' – educational institutions the subject graduated from and degree received, in parentheses. Separate multiple entries using {{Tl|Plainlist}}
* '''spouse''' – ''optional'' – list the service members spouse(s) if verifiable from a reliable source.
* '''children''' – ''optional'' – Only if independently notable themselves or particularly relevant. Number of children (e.g., three or 3), or list of names if notable, in which case, separate entries using <nowiki>{{Plainlist}}</nowiki> or <nowiki>{{Unbulleted list}}</nowiki>. For privacy reasons, consider omitting the names of children of living persons, unless notable.
* '''relations''' – ''optional'' – any notable relations. Only reasonably close ones should be indicated; an exhaustive listing of an extensive family tree should be avoided here.
* '''laterwork''' – ''optional'' – profession or positions held by the person other than military service (displays with the label "Other work"). Separate multiple entries using {{Tl|Plainlist}}.
* '''signature''' – ''optional'' – an image of the person's signature. The image must be given in the form <code><nowiki>example.jpg</nowiki></code>.
* '''signature_size''' – ''optional'' – the size of the signature in px. Give the number without the px suffix.
* '''signature_alt''' – ''optional'' – alt text for the signature.
* '''website''' – ''optional'' – Use {{Tl|URL}}
* '''module''' – ''optional'' – Embedded template
=== Lists ===
For parameters such as {{para|awards}}, {{para|unit}} or {{para|commands}}, which take lists of values, unbulleted or bulleted lists may be preferable. See [[MOS:VLIST]].
'''Unbulleted lists''' can be created with {{tl|plainlist}} or {{tl|ublist}}. The use of {{tag|br|s}} is common but {{dcr|semantically incorrect.}} See [[MOS:NOBR]].
{{markup|<nowiki>awards = {{plainlist|
* Purple Heart (3)
* Bronze Star (2)
* World War II Victory Medal
* Presidential Unit Citation
* Orange Lanyard
}}</nowiki>|{{plainlist|
* Purple Heart (3)
* Bronze Star (2)
* World War II Victory Medal
* Presidential Unit Citation
* Orange Lanyard}}
}}
{{markup|<nowiki>awards = {{unbulleted list
| Purple Heart (3)
| Bronze Star (2)
| World War II Victory Medal
| Presidential Unit Citation
| Orange Lanyard
}}</nowiki>|{{unbulleted list
| Purple Heart (3)
| Bronze Star (2)
| World War II Victory Medal
| Presidential Unit Citation
| Orange Lanyard}}
}}
'''Bulleted lists''' can be created with * markup.
{{markup|<nowiki>awards =
* Purple Heart (3)
* Bronze Star (2)
* World War II Victory Medal
* Presidential Unit Citation
* Orange Lanyard
</nowiki>|
* Purple Heart (3)
* Bronze Star (2)
* World War II Victory Medal
* Presidential Unit Citation
* Orange Lanyard
}}
=== Embedding ===
Many military people and uniformed officers in other services are known primarily for something other than their military service (e.g. [[Douglas Fairbanks Jr.]], [[Vivek Murthy]], or [[James Stewart]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, displaying one continuous infobox.
Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax. The title for the embedded section can be changed using {{para|embed_title}}.
{{Infobox person
|name = John Infobox
|birth_name = John Military Infobox
|birth_date = {{birth date|1950|5|5|df=y}}
|birth_place = Template City, Country
|death_date = {{death date and age|2010|6|10|1950|5|5|df=y}}
|occupation = Actor
|years_active = 1970–1990
|module =
{{Infobox military person
|embed = yes
|embed_title = Fictitious military career
|allegiance = United States
|branch = U.S. Army Air Forces
|serviceyears = 1980–1985
|rank = Brigadier general
|website = example.com
}}
}}
<syntaxhighlight lang="wikitext" style=overflow:auto;>
{{Infobox person
|name = John Infobox
|birth_name = John Military Infobox
|birth_date = {{birth date|1950|5|5|df=y}}
|birth_place = Template City, Country
|death_date = {{death date and age|2010|6|10|1950|5|5|df=y}}
|occupation = Actor
|years_active = 1970–1990
|module =
{{Infobox military person
|embed = yes
|embed_title = Fictitious military career
|allegiance = United States
|branch = U.S. Army Air Forces
|serviceyears = 1980–1985
|rank = Brigadier general
|website = {{URL|example.com}}
}}
}}</syntaxhighlight>
=== Example ===
'''Templates demonstrated:''' {{tl|birth date}}, {{tl|death date and age}}, {{tl|plainlist}}, {{tl|tree list}}, {{tl|tree list/end}}, and {{tl|ublist}}.
{{Infobox military person
|width_style = person
|name = Carwood Lipton<!--
|image = Carwood lipton 506e.jpg
|caption = First Lieutenant Lipton in dress uniform-->
|birth_name = Clifford Carwood Lipton
|nickname = "Lip"
|birth_date = {{birth date|1920|01|30}}
|birth_place = [[Huntington, West Virginia]]
|death_date = {{death date and age|2001|12|16|1920|01|30}}
|death_place = [[Pinehurst, North Carolina]]
|allegiance = United States
|branch_label = Branch
|branch = [[United States Army]]
|serviceyears_label = Service years
|serviceyears = 1942–1945
|rank = [[First lieutenant (United States)|First lieutenant]]
|unit = {{plainlist|
* [[E Company, 506th Infantry Regiment (United States)|Easy Company]],
* [[506th Infantry Regiment (United States)|506th Infantry Regiment]],
* [[101st Airborne Division]]}}
|battles_label = Conflict
|battles = {{tree list}}
* World War II
** [[American airborne landings in Normandy|Normandy landings]]
** [[Operation Market Garden|''Market Garden'']]
** [[Battle of the Bulge]]
{{tree list/end}}
|awards = {{unbulleted list|[[Bronze Star]] (2)|[[Purple Heart]] (3)}}
|otherwork = Glass executive
}}
<syntaxhighlight lang="wikitext">
{{Infobox military person
|width_style = person
|name = Carwood Lipton<!--
|image = Carwood lipton 506e.jpg
|caption = First Lieutenant Lipton in dress uniform-->
|birth_name = Clifford Carwood Lipton
|nickname = "Lip"
|birth_date = {{birth date|1920|01|30}}
|birth_place = [[Huntington, West Virginia]]
|death_date = {{death date and age|2001|12|16|1920|01|30}}
|death_place = [[Pinehurst, North Carolina]]
|allegiance = United States
|branch_label = Branch
|branch = [[United States Army]]
|serviceyears_label = Service years
|serviceyears = 1942–1945
|rank = [[First lieutenant (United States)|First lieutenant]]
|unit = {{plainlist|
* [[E Company, 506th Infantry Regiment (United States)|Easy Company]],
* [[506th Infantry Regiment (United States)|506th Infantry Regiment]],
* [[101st Airborne Division]]}}
|battles_label = Conflict
|battles = {{tree list}}
* World War II
** [[American airborne landings in Normandy|Normandy landings]]
** [[Operation Market Garden|''Market Garden'']]
** [[Battle of the Bulge]]
{{tree list/end}}
|awards = {{unbulleted list|[[Bronze Star]] (2)|[[Purple Heart]] (3)}}
|otherwork = Glass executive
}}
</syntaxhighlight>
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"honorific_prefix": {
"required": false,
"label": "Honorific Prefix",
"type": "string",
"description": "Titles such as 'Sir'."
},
"name": {
"required": false,
"label": "Name",
"type": "string",
"description": "The full name of the person."
},
"honorific_suffix": {
"required": false,
"label": "Honorific Suffix",
"type": "string",
"description": "Post-nominal honours such as 'OBE'"
},
"native_name": {
"required": false,
"label": "Native Name",
"type": "string",
"description": "The person's name in their own language"
},
"native_name_lang": {
"required": false,
"label": "Native Name Language",
"type": "string",
"description": "Language in which the native name is given"
},
"image": {
"required": false,
"label": "Image",
"type": "wiki-page-name",
"description": "The image must be given in the form Example.jpg"
},
"image_upright": {
"required": false,
"label": "Image scaling",
"type": "number",
"description": "Image scaling factor, see WP:UPRIGHT"
},
"image_size": {
"required": false,
"label": "Image size",
"type": "number",
"description": "Size of the image in pixels."
},
"alt": {
"required": false,
"label": "Alt",
"type": "string",
"description": "Alternative text, if used, must be placed here."
},
"caption": {
"required": false,
"label": "Caption",
"type": "string",
"description": "Caption for the image"
},
"birth_date": {
"required": false,
"label": "Birth Date",
"type": "line",
"description": "The Date of Birth, if known,"
},
"death_date": {
"required": false,
"label": "Death Date",
"type": "line",
"description": "The Date of Death, if applicable and known,"
},
"birth_place": {
"required": false,
"label": "Birth Place",
"type": "string",
"description": "The person's birth place."
},
"death_place": {
"required": false,
"label": "Death Place",
"type": "string",
"description": "The place where the person died."
},
"death_cause": {
"required": false,
"label": "Death Cause",
"type": "string",
"description": "The cause of the person's death."
},
"placeofburial": {
"required": false,
"label": "Place of Burial",
"type": "string",
"description": "The place where the person's remains are buried or otherwise interred."
},
"placeofburial_label": {
"required": false,
"label": "Place of Burial Label",
"type": "string",
"description": "The label to use for the place of burial field"
},
"placeofburial_coordinates": {
"required": false,
"label": "Place of burial Coordinates",
"type": "string",
"description": "The precise location where the person's remains are buried or otherwise interred. "
},
"nickname": {
"required": false,
"label": "Nick Name",
"type": "string",
"description": "Nick name(s) by which the person was known."
},
"birth_name": {
"required": false,
"label": "Birth Name",
"type": "string",
"description": "The name of the person was born with."
},
"allegiance": {
"required": false,
"label": "Allegiance",
"type": "string",
"description": "The country or other power the person served."
},
"branch": {
"required": false,
"label": "Branch",
"type": "string",
"description": "The service branch (Army, Navy, etc.)"
},
"serviceyears": {
"required": false,
"label": "Service Years",
"type": "number",
"description": "The years during which the person served."
},
"rank": {
"required": false,
"label": "Rank",
"type": "string",
"description": "The highest rank achieved by the person"
},
"servicenumber": {
"required": false,
"label": "Service Number",
"type": "string",
"description": "The service number held by the individual during military service. "
},
"unit": {
"required": false,
"label": "Unit",
"type": "string",
"description": "The unit in which the person served(company, battalion, regiment, etc.)"
},
"commands": {
"required": false,
"label": "Commands",
"type": "string",
"description": "For persons who are notable as commanding officers, the units they commanded."
},
"known_for": {
"required": false,
"label": "Known for",
"type": "string",
"description": "For other areas of notability such as war crimes or notable orders."
},
"battles": {
"required": false,
"label": "Battles",
"type": "string",
"description": "Any notable battles or wars in which the person participated."
},
"battles_label": {
"required": false,
"label": "Battles Label",
"type": "string",
"description": "The label to use for the battles field"
},
"awards": {
"required": false,
"label": "Awards",
"type": "string",
"description": "Any notable awards or decorations the person received"
},
"alma_mater": {
"required": false,
"label": "Alma mater",
"type": "string",
"description": "The linked name of attended higher education institution(s)."
},
"spouse": {
"required": false,
"label": "Spouse",
"type": "string",
"description": "Notable spouse if verifiable from a reliable source."
},
"children": {
"required": false,
"label": "Children",
"type": "string",
"description": "Notable children or number of children if verifiable from a reliable source."
},
"relations": {
"required": false,
"label": "Relations",
"type": "string",
"description": "Any notable relations."
},
"laterwork": {
"required": false,
"label": "Later Work",
"type": "string",
"description": "Profession or positions held by the person other than military service"
},
"signature": {
"required": false,
"label": "Signature",
"type": "string",
"description": "An image of the person's signature."
},
"website": {
"required": false,
"label": "Website",
"type": "string",
"description": "Military's website"
},
"branch_label": {
"label": "Branch Label",
"description": "The label of the branch field (above). The branch field is normally preceded by \"Service/Branch\"; to avoid word wrapping, one of \"Service\" or \"Branch\" can be specified.",
"example": "Branch",
"type": "string",
"default": "Service/Branch"
}
},
"format": "{{_\n| _____________ = _\n}}\n",
"paramOrder": [
"honorific_prefix",
"name",
"honorific_suffix",
"native_name",
"native_name_lang",
"image",
"image_upright",
"image_size",
"alt",
"caption",
"birth_date",
"death_date",
"death_cause",
"birth_place",
"death_place",
"placeofburial",
"placeofburial_label",
"placeofburial_coordinates",
"nickname",
"birth_name",
"allegiance",
"branch",
"branch_label",
"serviceyears",
"rank",
"servicenumber",
"unit",
"commands",
"known_for",
"battles",
"battles_label",
"awards",
"alma_mater",
"spouse",
"children",
"relations",
"laterwork",
"signature",
"website"
]
}
</templatedata>
== Tracking category ==
* {{Category link with count|Pages using infobox military person with unknown parameters}}
* {{Category link with count|Infobox military person image param needs updating}}
== See also ==
* {{tlg|Infobox military unit}}
* {{tlg|Infobox officeholder}}<!--
--><includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Military infobox templates|Person]]
[[Category:People and person infobox templates|Military person]]
[[Category:Biographical templates usable as a module|Military person]]
[[Category:Infobox templates with module parameter|Military person]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly> <noinclude>
[[Category:WikiProject Military history template instructions|Military person infobox]]
</noinclude>
f2f58bd3347bb5f2dcc79323e1fd43b6c3975c8a
Template:Tree list/doc
10
492
1089
2023-08-26T12:16:07Z
wikipedia>WOSlinker
0
remove {{Tree list/final branch}} as not needed
wikitext
text/x-wiki
{{doc subpage}}
{{When on basepage|{{Uses TemplateStyles|Template:Tree list/styles.css}}}}
This family of templates can be used to create a properly structured and accessible tree. This can be used to display family trees, succession to thrones, etc. They comprise:
{{Tree list}}
* {{tl|Tree list}}
** {{tl|Tree list/end}}
** {{tl|Tree list/branching}}
{{Tree list/end}}
== Syntax ==
=== Start and finish of the tree ===
The tree must include a start and finish, using the templates {{tl|Tree list}} and {{tl|Tree list/end}} respectively. The tree is essentially a series of nested lists built with the asterisk *.
<syntaxhighlight lang="wikitext">
{{Tree list}}
* Here goes the content of the tree using asterisks.
{{Tree list/end}}
</syntaxhighlight>
=== The branches of the tree ===
Each branch of the tree is built using nested lists:
<syntaxhighlight lang="wikitext">
{{Tree list}}
* A first level branch
** A second level branch
*** A third level branch
{{Tree list/end}}
</syntaxhighlight>
produces
{{Tree list}}
* A first level branch
** A second level branch
*** A third level branch
{{Tree list/end}}
=== Unlabelled branches ===
An unlabelled branch may be formed by using the {{tl|Tree list/branching}} template.
<syntaxhighlight lang="wikitext">{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}</syntaxhighlight>
produces the following:
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}}
*** A third level branch
*** The final third level branch
{{Tree list/end}}
==Collapse==
To collapse a tree place {{tlx|Hidden begin}} before {{tlx|Tree list}} and enclose {{tlx|Tree list/end}} with {{tlx|Hidden end}}. {{tlx|Hidden begin}} default to just a show link on the right, but it takes a number of parameters see the template's documentation. In this case:
|border=1px #aaa solid — a solid border around the tree
|title=Demonstration tree — a suitable name for the tree
|ta1=center – center the title= name
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=Demonstration tree|ta1=center}}
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}
{{Hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|ta1=center||title=Demonstration tree}}
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}
{{Hidden end}}
If the parameter <code>|expanded=on</code> is added to {{tlx|hidden begin}} then the box will be drawn expanded rather than the default, which is to collapse the tree.
== Examples ==
===A family tree ===
'''Code :'''
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England)|ta1=center|expanded=on}}
{{Tree list}}
*[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509)
**[[Arthur, Prince of Wales]] (1486 - 1502)
**[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541)
***[[James, Duke of Rothesay]] (1507 - 1508)
***[[Arthur, Duke of Rothesay]] (1509 - 1510)
***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542)
****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587)
*****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625)
******''From whom succeeding English, Scottish and British monarchs are descended.''
***[[Alexander Stewart, Duke of Ross]] (1514 - 1515)
***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578)
**[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547)
***[[Henry, Duke of Cornwall]] (1511 - 1511)
***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558)
***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603)
***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]]
**[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495)
**[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533)
***Henry Brandon (1516 - 1522)
***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547)
****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553)
****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568)
****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578)
****Elizabeth Stokes (1555 - 1556)
***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547)
****''From whom are descended the [[Earl of Derby|Earls of Derby]]''
***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534)
**[[Edmund Tudor, Duke of Somerset]] (1499 - 1500)
**[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503)
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
which gives
{{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England) |ta1=center|expanded=on}}
{{Tree list}}
*[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509)
**[[Arthur, Prince of Wales]] (1486 - 1502)
**[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541)
***[[James, Duke of Rothesay]] (1507 - 1508)
***[[Arthur, Duke of Rothesay]] (1509 - 1510)
***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542)
****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587)
*****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625)
******''From whom succeeding English, Scottish and British monarchs are descended.''
***[[Alexander Stewart, Duke of Ross]] (1514 - 1515)
***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578)
**[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547)
***[[Henry, Duke of Cornwall]] (1511 - 1511)
***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558)
***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603)
***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]]
**[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495)
**[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533)
***Henry Brandon (1516 - 1522)
***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547)
****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553)
****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568)
****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578)
****Elizabeth Stokes (1555 - 1556)
***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547)
****''From whom are descended the [[Earl of Derby|Earls of Derby]]''
***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534)
**[[Edmund Tudor, Duke of Somerset]] (1499 - 1500)
**[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503)
{{Tree list/end}}
{{hidden end}}
===An ancestry tree===
[[Ahnentafel]] style trees can be can be displayed using this template, but usually for less than 6 generations the customised Ahnentafel templates are clearer (see [[Template:Ahnentafel/doc]]). There is also an ahnentafel template ({{tl|Ahnentafel-tree}}), that is based on this one, that makes construction this tree simpler.
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}}
{{Tree list}}
*1. '''[[William, Prince of Wales]]''' (born 21 June 1982)
**2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948)
***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021)
****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944)
****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969)
***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022)
****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952)
****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002)
**3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997)
***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992)
****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975)
****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972)
***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004)
****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955)
****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993)
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}}
{{Tree list}}
*1. '''[[William, Prince of Wales]]''' (born 21 June 1982)
**2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948)
***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021)
****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944)
****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969)
***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022)
****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952)
****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002)
**3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997)
***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992)
****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975)
****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972)
***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004)
****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955)
****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993)
{{Tree list/end}}
{{hidden end}}
=== A cladogram ===
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}}
{{Tree list}}
*[[Tetrapoda]]
** {{Tree list/branching}}
*** Many extinct groups such as the ''[[Eucritta]]''
*** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians
** {{Tree list/branching}}
*** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]]
*** [[Cotylosauria]]
**** [[Amniota]], Originally all "Reptilian"
**** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}}
{{Tree list}}
*[[Tetrapoda]]
** {{Tree list/branching}}
*** Many extinct groups such as the ''[[Eucritta]]''
*** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians
** {{Tree list/branching}}
*** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]]
*** [[Cotylosauria]]
**** [[Amniota]], Originally all "Reptilian"
**** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles
{{Tree list/end}}
{{hidden end}}
==See also==
*[[Wikipedia:Family trees]]
*{{tlx|Chart}} — This template produces one row in a "family tree"-like chart consisting of boxes and connecting lines
*{{tlx|Ahnentafel}} — This template takes genealogical data in the form of an [[ahnentafel]] and presents it as a graphical ancestry tree
*{{tlx|ahnentafel-tree}} uses {{tlx|Tree list}} and will handle up to an ahnentafel of 511 places (9 generations), but will also display as little as one generation.
<includeonly>{{Sandbox other||
[[Category:List formatting and function templates]]
[[Category:Genealogy formatting templates]]
}}</includeonly>
e198bd2ed42427a385cca605488247032f83e579
Module:Footnotes/whitelist
828
899
1988
2023-08-27T19:27:58Z
wikipedia>Renata3
0
+ apod from talk
Scribunto
text/plain
--[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S >----------------------------
A list of wrapper templates by their canonical names – spelling and capitalization is important. Each wrapper
template has a table of two values: [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is
the default year. This table is indexed indirectly through the wrapper_templates table.
This table is not available externally.
]]
local wrapper_template_defaults = { -- keys are canonical template names
['Americana'] = {'Rines', '1920'}, -- tables with default name and default year
['Cite EB1911'] = {'Chisholm', '1911'}, -- tables with default name and default year
['EB1911'] = {'Chisholm', '1911'},
['EI3'] = {'FleetKrämerMatringeNawas', ''},
['ODNB'] = {'', ''}, -- there is no default anchor ID; this forces evaluation of {{cite ODNB}} redirects
}
--[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S _ V O L >--------------------
For wrapper templates that use |volume= to specify default name (often editor names) and year. Wrapper templates
are indexed by their canonical names – spelling and capitalization is important. Each wrapper template has a table
of values for every volume. Volumes may be indexed by Arabic or Roman numerals. Each volume index has a table of
twp values" [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. Each
wrapper template in this table must have a ['default'] key for those occasions when |volume= is omitted or empty.
This table is indexed indirectly through the wrapper_templates table.
This table is not available externally.
]]
local wrapper_template_defaults_vol = { -- primary keys are canonical template names; TODO: do these keys have to be canonical template names?
['Cite Catholic Encyclopedia'] = { -- secondary keys are volume
['1'] = {'Herbermann', '1907'},
['2'] = {'Herbermann', '1907'},
['3'] = {'Herbermann', '1908'},
['4'] = {'Herbermann', '1908'},
['5'] = {'Herbermann', '1909'},
['6'] = {'Herbermann', '1909'},
['7'] = {'Herbermann', '1910'},
['8'] = {'Herbermann', '1910'},
['9'] = {'Herbermann', '1910'},
['10'] = {'Herbermann', '1911'},
['11'] = {'Herbermann', '1911'},
['12'] = {'Herbermann', '1911'},
['13'] = {'Herbermann', '1912'},
['14'] = {'Herbermann', '1912'},
['15'] = {'Herbermann', '1912'},
['default'] = {'Herbermann', '1913'},
},
['Cite EB9'] = {
['1'] = {'Baynes', '1878'}, ['I'] = {'Baynes', '1878'},
['2'] = {'Baynes', '1878'}, ['II'] = {'Baynes', '1878'},
['3'] = {'Baynes', '1878'}, ['III'] = {'Baynes', '1878'},
['4'] = {'Baynes', '1878'}, ['IV'] = {'Baynes', '1878'},
['5'] = {'Baynes', '1878'}, ['V'] = {'Baynes', '1878'},
['6'] = {'Baynes', '1878'}, ['VI'] = {'Baynes', '1878'},
['7'] = {'Baynes', '1878'}, ['VII'] = {'Baynes', '1878'},
['8'] = {'Baynes', '1878'}, ['VIII'] = {'Baynes', '1878'},
['9'] = {'Baynes', '1879'}, ['IX'] = {'Baynes', '1879'},
['10'] = {'Baynes', '1879'}, ['X'] = {'Baynes', '1879'},
['11'] = {'BaynesSmith', '1880'}, ['XI'] = {'BaynesSmith', '1880'},
['12'] = {'BaynesSmith', '1881'}, ['XII'] = {'BaynesSmith', '1881'},
['13'] = {'BaynesSmith', '1881'}, ['XIII'] = {'BaynesSmith', '1881'},
['14'] = {'BaynesSmith', '1882'}, ['XIV'] = {'BaynesSmith', '1882'},
['15'] = {'BaynesSmith', '1883'}, ['XV'] = {'BaynesSmith', '1883'},
['16'] = {'BaynesSmith', '1883'}, ['XVI'] = {'BaynesSmith', '1883'},
['17'] = {'BaynesSmith', '1884'}, ['XVII'] = {'BaynesSmith', '1884'},
['18'] = {'BaynesSmith', '1885'}, ['XVIII'] = {'BaynesSmith', '1885'},
['19'] = {'BaynesSmith', '1885'}, ['XIX'] = {'BaynesSmith', '1885'},
['20'] = {'BaynesSmith', '1886'}, ['XX'] = {'BaynesSmith', '1886'},
['21'] = {'BaynesSmith', '1886'}, ['XXI'] = {'BaynesSmith', '1886'},
['22'] = {'BaynesSmith', '1887'}, ['XXII'] = {'BaynesSmith', '1887'},
['23'] = {'BaynesSmith', '1888'}, ['XXIII'] = {'BaynesSmith', '1888'},
['24'] = {'BaynesSmith', '1888'}, ['XXIV'] = {'BaynesSmith', '1888'},
['default'] = {'Baynes', '1875–1889'},
},
['Encyclopaedia of Islam, New Edition'] = {
['1'] = {'GibbKramersLévi-ProvençalSchacht', '1960'},
['2'] = {'LewisPellatSchacht', '1965'},
['3'] = {'LewisMénagePellatSchacht', '1971'},
['4'] = {'van_DonzelLewisPellatBosworth', '1978'},
['5'] = {'Bosworthvan_DonzelLewisPellat', '1986'},
['6'] = {'Bosworthvan_DonzelPellat', '1991'},
['7'] = {'Bosworthvan_DonzelHeinrichsPellat', '1993'},
['8'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1995'},
['9'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1997'},
['10'] = {'BearmanBianquisBosworthvan_Donzel', '2000'},
['11'] = {'BearmanBianquisBosworthvan_Donzel', '2002'},
['12'] = {'BearmanBianquisBosworthvan_Donzel', '2004'},
['atlas'] = {'Brice', '1981'},
['abridged'] = {'van_Donzel', '1994'},
['default'] = {'BearmanBianquisBosworthvan_Donzel', '1960–2005'},
},
['New Cambridge Medieval History'] = {
['1'] = {'Fouracre', '2005'},
['2'] = {'McKitterick', '1995'},
['3'] = {'Reuter', '2000'},
['4a'] = {'LuscombeRiley-Smith', '2004'},
['4b'] = {'LuscombeRiley-Smith', '2004'},
['5'] = {'Abulafia', '1999'},
['6'] = {'Jones', '2000'},
['7'] = {'Allmand', '1998'},
['default'] = {'', '1995–2005'},
},
['The History of al-Tabari'] = {
['1'] = {'Rosenthal', '1989'},
['2'] = {'Brinner', '1986'},
['3'] = {'Brinner', '1991'},
['4'] = {'Perlmann', '1987'},
['5'] = {'Bosworth', '1999'},
['6'] = {'WattMcDonald', '1989'},
['7'] = {'McDonald', '1987'},
['8'] = {'Fishbein', '1997'},
['9'] = {'Poonawala', '1990'},
['10'] = {'Donner', '1993'},
['11'] = {'Blankinship', '1993'},
['12'] = {'Friedmann', '1992'},
['13'] = {'Juynboll', '1989'},
['14'] = {'Smith', '1994'},
['15'] = {'Humphreys', '1990'},
['16'] = {'Brockett', '1997'},
['17'] = {'Hawting', '1996'},
['18'] = {'Morony', '1987'},
['19'] = {'Howard', '1990'},
['20'] = {'Hawting', '1989'},
['21'] = {'Fishbein', '1990'},
['22'] = {'Rowson', '1989'},
['23'] = {'Hinds', '1990'},
['24'] = {'Powers', '1989'},
['25'] = {'Blankinship', '1989'},
['26'] = {'Hillenbrand', '1989'},
['27'] = {'Williams', '1985'},
['28'] = {'McAuliffe', '1995'},
['29'] = {'Kennedy', '1990'},
['30'] = {'Bosworth', '1989'},
['31'] = {'Fishbein', '1992'},
['32'] = {'Bosworth', '1987'},
['33'] = {'Bosworth', '1991'},
['34'] = {'Kraemer', '1989'},
['35'] = {'Saliba', '1985'},
['36'] = {'Waines', '1992'},
['37'] = {'Fields', '1987'},
['38'] = {'Rosenthal', '1985'},
['39'] = {'Landau-Tasseron', '1998'},
['40'] = {'Popovkin', '2007'},
['default'] = {'Yarshater', '1985–2007'},
},
}
--[[--------------------------< W R A P P E R _ T E M P L A T E S >--------------------------------------------
A list of wrapper templates and their redirects – spelling and capitalization is important; first character is
always uppercase. Each wrapper template gets its value from a k/v pair in the wrapper_template_defaults table.
article reader queries this table to see if template_name is a wrapper template
]]
local wrapper_templates = { -- keys are names of wrapper templates and their redirects
['Americana'] = wrapper_template_defaults['Americana'], -- canonical name; this template calls Cite Americana
['Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['1913Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Catholic encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CatholicEncyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CE13'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite Americana'] = wrapper_template_defaults['Americana'], -- canonical name
['Cite Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CathEncy'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite Catholic Encyclopædia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite EB1911'] = wrapper_template_defaults['Cite EB1911'], -- canonical name
['1911EB'] = wrapper_template_defaults['Cite EB1911'], -- redirects
['EB1911 cite'] = wrapper_template_defaults['Cite EB1911'],
['Wikisource1911Enc Citation'] = wrapper_template_defaults['Cite EB1911'],
['Wikisource1911Enc citation'] = wrapper_template_defaults['Cite EB1911'],
['Cite EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical
['Eb9'] = wrapper_template_defaults_vol['Cite EB9'],
['Cite ODNB'] = wrapper_template_defaults['ODNB'], -- canonical
['Cite odnb'] = wrapper_template_defaults['ODNB'],
['DNBweb'] = wrapper_template_defaults['ODNB'],
['OBDNweb'] = wrapper_template_defaults['ODNB'],
['ODNB'] = wrapper_template_defaults['ODNB'],
['ODNBref'] = wrapper_template_defaults['ODNB'],
['ODNBweb'] = wrapper_template_defaults['ODNB'],
['EB1911'] = wrapper_template_defaults['EB1911'], -- canonical name; this template calls Cite EB1911
['1911'] = wrapper_template_defaults['EB1911'], -- redirects
['1911s'] = wrapper_template_defaults['EB1911'],
['Britannica 1911'] = wrapper_template_defaults['EB1911'],
['Encyclopedia Britannica 1911'] = wrapper_template_defaults['EB1911'],
['Encyclopædia Britannica 1911'] = wrapper_template_defaults['EB1911'],
['EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical; this template calls Cite EB9
['Encyclopaedia of Islam, New Edition'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], -- canonical
['EI2'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'],
['Encyclopaedia of Islam, THREE'] = wrapper_template_defaults['EI3'], -- canonical
['EI3'] = wrapper_template_defaults['EI3'],
['New Cambridge Medieval History'] = wrapper_template_defaults_vol['New Cambridge Medieval History'], -- canonical
['The History of al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- canonical
['The History of Al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects
['The History of al-Ṭabarī'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects
}
--[[--------------------------< T E M P L A T E _ N A M E S >--------------------------------------------------
This table holds the names of templates and the names of their redirects. Template names must be written exactly
as they are named at their templatespace page. This same also applies to redirects.
The indexes in this table are not critical but should be short and concise.
]]
local template_names = {
['ADB'] = {'Allgemeine Deutsche Biographie', 'Cite ADB'},
['Butt_Stations'] = {'Butt-Stations', 'Butt-stations'},
['Cam_Hist_Iran'] = {'Cambridge History of Iran', 'The Cambridge History of Iran'},
['DNB'] = {'Cite DNB', 'DNB', 'DNB Cite', 'Cite DNBSupp', 'DNBSupp', 'Cite DNB12', 'Cite DNBIE', 'DNB12', 'DNBIE', 'DNBfirst'},
['ME-ref'] = {'ME-ref', 'Me-ref'},
['ODB'] = {'ODB', 'Oxford Dictionary of Byzantium'},
['ODLA'] = {'ODLA', 'Oxford Dictionary of Late Antiquity'},
['NDB'] = {'Cite NDB', 'NDB'},
['Iranica'] = {'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},
}
--[[--------------------------< S P E C I A L _ P A T T E R N S >----------------------------------------------
Lua patterns. These are scanned sequentially which costs time and processing far and above the time and processing
needed to index into whitelist{}. Do not create a pattern here if a normal whitelist entry or entries can be created.
]]
local special_patterns = {
'CITEREFACAD%u%u%u?%u?%d+%u%u?', -- {{Acad}} ID appears to be 2-4 letters, then 3 numbers, then 1-2 letters
'CITEREFAHD%d+', -- {{Cite AHD}}
'CITEREFHistoric_England%d+', -- {{National Heritage List for England}} & {{PastScape}}
'CITEREFHistoric_Environment_Scotland%u%u%u?%u?%d', -- {{Historic Environment Scotland}} %u can be BTL, GLD, HMPA, LB, SM
'CITEREFQHR%d+', -- {{Cite QHR}}
'CITEREF[%d%a_%pöüäß→]+_at_Bach_Digital', -- {{BDh}}
'CITEREF[BR]GBl_[12]%d%d%d%-?I?I?%/%d+', -- {{Cite Austrian gazette}}
'CITEREFStGBl_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}}
'CITEREFGBlÖ_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}}
}
--[[--------------------------< D N B _ S P E C I A L _ P A T T E R N S >--------------------------------------
Lua patterns. Note at special_patterns applies. These for the DNB templates only; these will be tried only when
there is a DNB template in the article.
Pretty much any author name during the period 1885–1901 inclusive, and 1912.
The DNBIE was published in 1903, and Template:DNBIE says that its use is deprecated, but we do not fight that battle here.
]]
local DNB_special_patterns = {
'CITEREF%a[%a%-_\']*188[5-9]', -- 1885–1889
'CITEREF%a[%a%-_\']*189%d', -- 1890–1899
'CITEREF%a[%a%-_\']*190[0-1]', -- 1900–1901
'CITEREF%a[%a%-_\']*1903', -- 1903 IE
'CITEREF%a[%a%-_\']*1912', -- 1912 supplement
}
--[[--------------------------< W H I T E L I S T >------------------------------------------------------------
This is a list of anchor IDs known to be associated with specific wrapper templates. The anchor ID serves as an
index into the table. The assigned value is another table that lists the associated template and any redirects.
Except for year disambiguators, anchor IDs must have the same form as the anchor creator makes; must be the
anchor-encoded form. Remove the year disambiguator.
Template names must be written exactly as they are named at their templatespace page. This same also applies to
redirects. Module:Footnotes reads the template names left to right so most-commonly-used template or redirect name
should appear first. When there are more than one name and when those templates have various anchor IDs the template
namelist should be added to the template_names{} table.
Note that references to Template:EB1911 are listed under "E" in the alphabetical list below to keep them organized.
]]
local whitelist = {
----------< # >----------
['CITEREF2013_Statistical_Yearbook_of_the_Republic_of_Croatia'] = {'Croatia Yearbook 2013'},
----------< A >----------
['CITEREFAGA_1884–1897'] = {'Schubert\'s compositions (references)'},
['CITEREFATOC2009'] = {'ATOCConnectingCommunitiesReportS10'},
['CITEREFAbaevBailey1985'] = template_names['Iranica'],
['CITEREFAbbas1988'] = template_names['Iranica'],
['CITEREFAbbas1989'] = template_names['Iranica'],
['CITEREFAbramowitzStegun1983'] = {'Abramowitz Stegun ref'},
['CITEREFActa_Lipsiensium1723'] = {'Bach\'s compositions (sources)'},
['CITEREFAdamsFranzosa2009'] = {'Adams Franzosa Introduction to Topology Pure and Applied'},
['CITEREFAdaschErnstKeim1978'] = {'Adasch Topological Vector Spaces'},
['CITEREFAffleck1978'] = {'Affleck-On Track'},
['CITEREFAhlgrimm1969'] = {'Bach\'s compositions (sources)'},
['CITEREFAhmadiNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFAhrons1927'] = {'Book-Ahrons-British Steam Railway Locomotive'},
['CITEREFAl-Kindi1912'] = {'The Governors and Judges of Egypt'},
['CITEREFAlbert_Schumann1886'] = {'Cite ADB'},
['CITEREFAlden1916'] = {'Shakespeare sonnets bibliography'},
['CITEREFAldrich1969'] = {'Aldrich-LocosGER7'},
['CITEREFAleksidze2018'] = template_names['ODLA'],
['CITEREFAlexiou2010'] = {'Cite flatiron'},
['CITEREFAlgar1983'] = template_names['Iranica'],
['CITEREFAlgar1989'] = template_names['Iranica'],
['CITEREFAlgar1990'] = template_names['Iranica'],
['CITEREFAlgar2003'] = template_names['Iranica'],
['CITEREFAlizadeh1990'] = template_names['Iranica'],
['CITEREFAllamaniPanagiotopoulou1978'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFAllcockDaviesle_FlemingMaskelyne1968'] = {'RCTS-LocosGWR-1'},
['CITEREFAllenBoddyBrownFry1970'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},
['CITEREFAllenBoddyBrownFry1971'] = {'RCTS-LocosLNER-8B', 'RCTS-LocosLNER'},
['CITEREFAllenBoddyBrownFry1983'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},
['CITEREFAmanat1998'] = template_names['Iranica'],
['CITEREFAmanat1999'] = template_names['Iranica'],
['CITEREFAmbartsumian2014'] = template_names['Iranica'],
['CITEREFAmerican_Railway_Association1922'] = {'1922 Locomotive Cyclopedia'},
['CITEREFAnderson1952'] = {'Naval Wars in the Levant 1559–1853'},
['CITEREFAndo2000'] = template_names['Iranica'],
['CITEREFAngelov2018'] = template_names['ODLA'],
['CITEREFAnwārEIr1985'] = template_names['Iranica'],
['CITEREFArkhangel'skiiPonomarev1984'] = {'Arkhangel\'skii Ponomarev Fundamentals of General Topology Problems and Exercises'},
['CITEREFArrey_von_Dommer1875'] = {'Cite ADB'},
['CITEREFAshraf2006'] = template_names['Iranica'],
['CITEREFAslanianBerberian2009'] = template_names['Iranica'],
['CITEREFAsmus1966'] = template_names['NDB'],
['CITEREFAsmussen1985'] = template_names['Iranica'],
['CITEREFAspreas1929'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFAtkins2007'] = {'Shakespeare sonnets bibliography'},
['CITEREFAube2011'] = template_names['Iranica'],
['CITEREFAudiKondevWangHuang2017'] = {'NUBASE2016'},
['CITEREFAvdoyan2018'] = template_names['ODLA'],
['CITEREFAwdry1990'] = {'Awdry-RailCo', 'Carnarvonshire Railway'},
['CITEREFAzarnoosh2021'] = template_names['Iranica'],
['CITEREFRamelli2018'] = {'Oxford Dictionary of Late Antiquity'},['CITEREFA_History_of_the_Crusades'] = {'Setton-A History of the Crusades'},
----------< B >----------
['CITEREFBabinger1962'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBabinger1978'] = {'Mehmed the Conqueror and His Time'},
['CITEREFBabinger1992'] = {'Mehmed the Conqueror and His Time'},
['CITEREFBachAgricola1754'] = {'Bach\'s compositions (sources)'},
['CITEREFBadura-SkodaBranscombe2008'] = {'Schubert\'s compositions (references)'},
['CITEREFBagley1999'] = {'Cite Cambridge History of China'},
['CITEREFBahramianHirtensteinGholami2013'] = {'Encyclopaedia Islamica'},
['CITEREFBalcer1990'] = template_names['Iranica'],
['CITEREFBaldwin1969'] = {'Setton-A History of the Crusades'},
['CITEREFBaldwin1985'] = {'Setton-A History of the Crusades'},
['CITEREFBaldwinKazhdan1991'] = template_names['ODB'],
['CITEREFBaldwinTalbot1991'] = template_names['ODB'],
['CITEREFBaltzer1916'] = {'Baltzer-Kolonialbahnen'},
['CITEREFBanach1932'] = {'Banach Théorie des Opérations Linéaires'},
['CITEREFBandy2021'] = template_names['Iranica'],
['CITEREFBartusis1991'] = template_names['ODB'],
['CITEREFBaxter1971'] = {'Baxter-BritishLocoCat1'},
['CITEREFBaxter1977'] = {'Baxter-BritishLocoCat1'},
['CITEREFBaxter1978'] = {'Baxter-BritishLocoCat2A'},
['CITEREFBaxter1979'] = {'Baxter-BritishLocoCat2B'},
['CITEREFBaxter1982'] = {'Baxter-BritishLocoCat3A', 'Baxter-BritishLocoCat3B'},
['CITEREFBaxter1984'] = {'Baxter-BritishLocoCat4'},
['CITEREFBaxter1986'] = {'Baxter-BritishLocoCat5A'},
['CITEREFBaxter1988'] = {'Baxter-BritishLocoCat5B'},
['CITEREFBaxter2012'] = {'Baxter-BritishLocoCat6'},
['CITEREFBeattie1986'] = template_names['Iranica'],
['CITEREFBeißwenger1991'] = {'Bach\'s compositions (sources)'},
['CITEREFBek2001'] = {'Cite Grove'},
['CITEREFBelke1996'] = {'Tabula Imperii Byzantini'},
['CITEREFBelkeMersisch1990'] = {'Tabula Imperii Byzantini'},
['CITEREFBelkeRestle1984'] = {'Tabula Imperii Byzantini'},
['CITEREFBellini2008'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBernardini2003'] = template_names['Iranica'],
['CITEREFBernhard_von_Poten1889'] = template_names['ADB'],
['CITEREFBernhard_von_Poten1898'] = template_names['ADB'],
['CITEREFBernjian2008'] = {'Encyclopaedia Islamica'},
['CITEREFBezilla1980'] = {'Bezilla-PRR-Electric-Traction'},
['CITEREFBianquis1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},
['CITEREFBickerman1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBierstedt1988'] = {'Bierstedt An Introduction to Locally Convex Inductive Limits'},
['CITEREFBiran2009'] = template_names['Iranica'],
['CITEREFBirken1976'] = {'Die Provinzen des Osmanischen Reiches'},
['CITEREFBivar1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBivar2003'] = template_names['Iranica'],
['CITEREFBlair2002'] = template_names['Iranica'],
['CITEREFBlair2021'] = template_names['Iranica'],
['CITEREFBlake1966'] = {'DisraeliRef'},
['CITEREFBlanken2019'] = {'Bach\'s compositions (sources)'},
['CITEREFBlankinship1994'] = {'The End of the Jihâd State', 'The End of the Jihad State'},
['CITEREFBlautSchulze2008'] = {'Bach\'s compositions (sources)'},
['CITEREFBloom2007'] = {'Cite Routledge Broadway', 'Cite Broadway Routledge', 'Cite Routledge Guide to Broadway', 'Routledge Guide to Broadway'},
['CITEREFBock1978'] = {'Audie-bock-directors'},
['CITEREFBodde1986'] = {'Cite Cambridge History of China'},
['CITEREFBoddyBrownFryHennigan1968'] = {'RCTS-LocosLNER-4', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1975'] = {'RCTS-LocosLNER-2B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1977'] = {'RCTS-LocosLNER-9A', 'RCTS-LocosLNER-9B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1979'] = {'RCTS-LocosLNER-3A', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownHenniganHoole1984'] = {'RCTS-LocosLNER-6C', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownHenniganNeve1981'] = {'RCTS-LocosLNER-3B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownNeveYeadon1983'] = {'RCTS-LocosLNER-6B', 'RCTS-LocosLNER'},
['CITEREFBoddyFryHenniganHoole1990'] = {'RCTS-LocosLNER-10B', 'RCTS-LocosLNER'},
['CITEREFBoddyFryHenniganProud1963'] = {'RCTS-LocosLNER-1', 'RCTS-LocosLNER'},
['CITEREFBoddyNeveTeeYeadon1982'] = {'RCTS-LocosLNER-6A', 'RCTS-LocosLNER'},
['CITEREFBoddyNeveYeadon1973'] = {'RCTS-LocosLNER-2A', 'RCTS-LocosLNER'},
['CITEREFBody1989'] = {'Body-Railways-Vol2'},
['CITEREFBon1969'] = {'La Morée franque'},
['CITEREFBonebakker1997'] = template_names['Iranica'],
['CITEREFBonner2010'] = {'New Cambridge History of Islam'},
['CITEREFBonnett2005'] = {'Bonnett Practical Rail Engineering'},
['CITEREFBonporti1712'] = {'Bach\'s compositions (sources)'},
['CITEREFBooth2000'] = {'Shakespeare sonnets bibliography'},
['CITEREFBorsari1964'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBossert1914'] = {'Schaff-Herzog'},
['CITEREFBosworth1968'] = template_names['Cam_Hist_Iran'],
['CITEREFBosworth1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBosworth1983'] = template_names['Iranica'],
['CITEREFBosworth1984'] = template_names['Iranica'],
['CITEREFBosworth1987'] = template_names['Iranica'],
['CITEREFBosworth1988'] = template_names['Iranica'],
['CITEREFBosworth1989'] = template_names['Iranica'],
['CITEREFBosworth1994'] = template_names['Iranica'],
['CITEREFBosworth1995'] = template_names['Iranica'],
['CITEREFBosworth1997'] = template_names['Iranica'],
['CITEREFBosworth1998'] = template_names['Iranica'],
['CITEREFBosworth2000'] = template_names['Iranica'],
['CITEREFBosworth2001'] = template_names['Iranica'],
['CITEREFBosworth2002'] = template_names['Iranica'],
['CITEREFBosworth2003'] = template_names['Iranica'],
['CITEREFBosworth2008'] = template_names['Iranica'],
['CITEREFBosworth2009'] = template_names['Iranica'],
['CITEREFBosworth2010'] = template_names['Iranica'],
['CITEREFBosworth2011'] = template_names['Iranica'],
['CITEREFBosworthCrane1984'] = template_names['Iranica'],
['CITEREFBottoMitchell2002'] = {'Cite ATT Broadway', 'Cite At This Theatre Broadway', 'Cite Broadway At This Theatre', 'Cite Broadway ATT'},
['CITEREFBourbaki1987'] = {'Bourbaki Topological Vector Spaces', 'Bourbaki Topological Vector Spaces Part 1 Chapters 1–5'},
['CITEREFBourbaki1989'] = {'Bourbaki General Topology Part I Chapters 1-4', 'Bourbaki General Topology Part II Chapters 5-10', 'Bourbaki Algebra I Chapters 1-3 Springer'},
['CITEREFBourbaki1994'] = {'Bourbaki EHM'},
['CITEREFBowen1928'] = {'The Life and Times of Ali ibn Isa'},
['CITEREFBowmanCameronGarnsey2005'] = {'Cambridge Ancient History'},
['CITEREFBoyce1983'] = template_names['Iranica'],
['CITEREFBoyce1986'] = template_names['Iranica'],
['CITEREFBoyce1989'] = template_names['Iranica'],
['CITEREFBoyce2000'] = template_names['Iranica'],
['CITEREFBoyce2009'] = template_names['Iranica'],
['CITEREFBoyd1970'] = {'Boyd-MidWales'},
['CITEREFBoyd1975'] = {'Boyd-FR1'},
['CITEREFBoyd1985'] = {'Boyd-NCaerns2Penrhyn'},
['CITEREFBoyd1986'] = {'Boyd-NCaerns3Dinorwic'},
['CITEREFBoyd1988'] = {'Boyd-SCaerns1'},
['CITEREFBoyd1989'] = {'Boyd-SCaerns2'},
['CITEREFBoyd1990'] = {'Boyd-NCaerns1'},
['CITEREFBradshaw1968'] = {'Bradshaw-1910April'},
['CITEREFBradshaw1985'] = {'Bradshaw-1922July'},
['CITEREFBradshaw2011'] = {'Bradshaw-1895December'},
['CITEREFBradshaw2012'] = {'Bradshaw-1850March'},
['CITEREFBrand1968'] = {'Byzantium Confronts the West'},
['CITEREFBrand1991'] = {'DBI', 'ODB', 'Oxford Dictionary of Byzantium'},
['CITEREFBray2010'] = {'Bray-SDJR'},
['CITEREFBrett2010'] = {'New Cambridge History of Islam'},
['CITEREFBriant1985'] = template_names['Iranica'],
['CITEREFBrosius2000'] = template_names['Iranica'],
['CITEREFBrown2000'] = template_names['Iranica'],
['CITEREFBrown2008'] = {'The Cambridge History of the Byzantine Empire'},
['CITEREFBrown2021'] = {'Cite Gaia EDR3'},
['CITEREFBrunner1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBrunner1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBrunner1984'] = template_names['Iranica'],
['CITEREFBrunner1986'] = template_names['Iranica'],
['CITEREFBryan1886'] = {'Bryan (3rd edition)'},
['CITEREFBryan1889'] = {'Bryan (3rd edition)'},
['CITEREFBuhle1909'] = {'Bach\'s compositions (sources)'},
['CITEREFBulliet1984'] = template_names['Iranica'],
['CITEREFBulookbashiNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFBunbury1857'] = {'DGRG'},
['CITEREFBurant1987'] = {'Cite DCB'},
['CITEREFBurch1911'] = {'Burch Electric Traction'},
['CITEREFBurke1866'] = {'O\'Donnell family tree'},
['CITEREFBurn1985'] = template_names['Cam_Hist_Iran'],
['CITEREFBurrowsWallace1999'] = {'Cite gotham'},
['CITEREFBury1911'] = {'The Imperial Administrative System of the Ninth Century'},
['CITEREFBusse1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBusse1982'] = template_names['Iranica'],
['CITEREFButcherNicholson2018'] = template_names['ODLA'],
['CITEREFButt1995'] = template_names['Butt_Stations'],
['CITEREFBöwering1995'] = template_names['Iranica'],
['CITEREFBürgelMottahedeh1988'] = template_names['Iranica'],
----------< C >----------
['CITEREFCIC1983'] = {'CIC1983bib'},
['CITEREFCalifornia1988'] = {'CA-Rail Passenger Development Plan-1988'},
['CITEREFCalmard1988'] = template_names['Iranica'],
['CITEREFCalmard1999'] = template_names['Iranica'],
['CITEREFCaltrans1984'] = {'Countrystudy'},
['CITEREFCameronWard-PerkinsWhitby2000'] = {'Cambridge Ancient History'},
['CITEREFCanepa2018'] = template_names['ODLA'],
['CITEREFCanny2008'] = {'O\'Donnell family tree'},
['CITEREFCappelCutlerKazhdan1991'] = template_names['ODB'],
['CITEREFCarl_von_Prantl1879'] = {'Cite ADB'},
['CITEREFCarlson2010'] = {'Dlmf'},
['CITEREFCaro1974'] = {'Cite Power Broker'},
['CITEREFCarpenter1977'] = template_names['ME-ref'],
['CITEREFCarpenter1981'] = template_names['ME-ref'],
['CITEREFCarra_de_VauxHodgson1965'] = {'EI2'},
['CITEREFCarter2006'] = {'Carter-RailwaysMotivePowerArgentina'},
['CITEREFCasserley1968'] = {'Casserley-joint'},
['CITEREFCasserleyJohnston1966'] = {'Casserley-LocoGrouping3'},
['CITEREFCasserleyJohnston1974'] = {'Casserley-LocoGrouping3', 'Casserley-LocoGrouping2', '0-7110-0554-0'},
['CITEREFCasway1984'] = {'O\'Donnell family tree'},
['CITEREFCavanna_Ciappina2001'] = {'DBI'},
['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley', 'MLCC'},
['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley'},
['CITEREFCawley2010'] = {'MLCC'},
['CITEREFCawley2011'] = {'MLCC'},
['CITEREFChaléardChanson-JabeurBéranger2006'] = {'Chaléard-Le cdf en Afrique'},
['CITEREFChambers1728'] = {'Cyclopaedia 1728'},
['CITEREFChasiotis1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFChaumont1985'] = template_names['Iranica'],
['CITEREFChaumont1986'] = template_names['Iranica'],
['CITEREFChaumont1987'] = template_names['Iranica'],
['CITEREFChaumont1990'] = template_names['Iranica'],
['CITEREFChaumontSchippmann1988'] = template_names['Iranica'],
['CITEREFCheyneBlack1899'] = {'Biblica', 'Cite Biblica'},
['CITEREFCheyneBlack1899–1903'] = {'Cite Biblica'},
['CITEREFCheyneBlack1901'] = {'Cite Biblica'},
['CITEREFCheyneBlack1902'] = {'Cite Biblica'},
['CITEREFCheyneBlack1903'] = {'Cite Biblica'},
['CITEREFChisholm1922'] = {'EB1922', 'Cite EB1922'},
['CITEREFChittick1997'] = template_names['Iranica'],
['CITEREFChkeidze2001'] = template_names['Iranica'],
['CITEREFChoniates1984'] = {'O City of Byzantium'},
['CITEREFChrista_Jost1999'] = template_names['NDB'],
['CITEREFChung1994'] = {'Country study'},
['CITEREFChurchmanHurst2001'] = {'Churchman & Hurst Railways of New Zealand'},
['CITEREFChurchman_&_Hurst2001'] = {'Churchman & Hurst Railways of New Zealand'},
['CITEREFChurella2013'] = {'Churella-PRR-1'},
['CITEREFClementsMcMahon2008'] = {'ClementsMcMahon-GSR Locomotives'},
['CITEREFClinker1978'] = {'Clinker-Stations'},
['CITEREFClinker1988'] = {'Clinker-Stations'},
['CITEREFCoates1990'] = {'Coates-Reading'},
['CITEREFColbyWilliams1916'] = {'New International Encyclopedia', 'NIE'},
['CITEREFColledgeWarlow2006'] = {'Colledge', 'Cite Colledge2006'},
['CITEREFColledgeWarlow2010'] = {'Cite Colledge2010'},
['CITEREFCollins2016'] = {'Cite Collins 2016'},
['CITEREFConolly1998'] = {'IanAllan-PreGroup-Atlas1998'},
['CITEREFConway1990'] = {'Conway A Course in Functional Analysis'},
['CITEREFCosentino2008'] = {'DBI'},
['CITEREFCoulthard-Clark2002'] = {'Australian Dictionary of Biography'},
['CITEREFCousin1910'] = {'A Short Biographical Dictionary of English Literature', 'Cite SBDEL'},
['CITEREFCox1967'] = {'Cox-Upper Darby'},
['CITEREFCox2011'] = {'Cox-Dixie'},
['CITEREFCrevier1993'] = {'Crevier 1993'},
['CITEREFCrockett2007'] = {'Australian Dictionary of Biography'},
['CITEREFCroke2018'] = template_names['ODLA'],
['CITEREFCrone1980'] = {'Slaves on Horses'},
['CITEREFCronin2011'] = template_names['Iranica'],
['CITEREFCroughtonKidnerYoung1982'] = {'Croughton-PrivateStations'},
['CITEREFCruickshanks1970'] = {'HistoryofParliament'},
['CITEREFCudahy2002'] = {'Cudahy-Hudson'},
['CITEREFCudahy2003'] = {'Cudahy-Subways'},
['CITEREFCurta2006'] = {'Southeastern Europe in the Middle Ages, 500–1250'},
----------< D >----------
['CITEREFDBI'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFDZS2015'] = {'Croatia Yearbook 2015'},
['CITEREFDadelsen1957'] = {'Bach\'s compositions (sources)'},
['CITEREFDaftary1990'] = {'Daftary-The Ismailis'},
['CITEREFDaftary2003'] = template_names['Iranica'],
['CITEREFDaftary2007'] = {'Daftary-The Ismailis'},
['CITEREFDaftary2015'] = template_names['Iranica'],
['CITEREFDaiber1988'] = template_names['Iranica'],
['CITEREFDandamayevShahbaziLecoq1986'] = template_names['Iranica'],
['CITEREFDaniel2000'] = template_names['Iranica'],
['CITEREFDaniel2010'] = {'New Cambridge History of Islam'},
['CITEREFDanielsDench1963'] = {'Daniels-NoMore'},
['CITEREFDanielsDench1973'] = {'Daniels-NoMore'},
['CITEREFDanner1975'] = template_names['Cam_Hist_Iran'],
['CITEREFDarleyCanepa2018'] = {'Oxford Dictionary of Late Antiquity'},
['CITEREFDaryaee2009'] = template_names['Iranica'],
['CITEREFDaryaee2018'] = template_names['ODLA'],
['CITEREFDaryaeeCanepa2018'] = template_names['ODLA'],
['CITEREFDavid1961'] = {'Bach\'s compositions (sources)'},
['CITEREFDavidson2010'] = {'HistoryofParliament'},
['CITEREFDavidsonThrush2010'] = {'HistoryofParliament'},
['CITEREFDavies1996'] = {'Davies-PLMLocoList'},
['CITEREFDavies1997'] = {'Davies-NordLocoList'},
['CITEREFDavies2001'] = {'Davies-EstLocoList3', 'Davies-ÉtatLocoList'},
['CITEREFDavies2003'] = {'Davies-SNCFLocoList'},
['CITEREFDaviesFirthLuckingThomas1966'] = {'RCTS-LocosGWR-10'},
['CITEREFDavud2018'] = {'Encyclopaedia Islamica'},
['CITEREFDavudNazerian2008'] = {'Encyclopaedia Islamica'},
['CITEREFDe_Negri1997'] = {'DBI'},
['CITEREFDemircan2010'] = {'TDV Encyclopedia of Islam'},
['CITEREFDeutsch1951'] = {'Schubert\'s compositions (references)'},
['CITEREFDeutsch1978'] = {'Schubert\'s compositions (references)'},
['CITEREFDeutsche_Autos,_Band_2,2001'] = {'Deutsche Autos-2'},
['CITEREFDeutsche_Autos,_Band_3,2001'] = {'Deutsche Autos-3'},
['CITEREFDeutsche_Autos,_Band_4,2001'] = {'Deutsche Autos-4'},
['CITEREFDeutsche_Autos,_Band_5,2001'] = {'Deutsche Autos-5'},
['CITEREFDeutsche_Autos,_Band_6,2001'] = {'Deutsche Autos-6'},
['CITEREFDewick2005'] = {'Dewick-Atlas'},
['CITEREFDiamonstein-Spielvogel2011'] = {'Cite landmarks'},
['CITEREFDickens2018'] = template_names['ODLA'],
['CITEREFDirksen1998'] = {'Bach\'s compositions (sources)'},
['CITEREFDirksen2010'] = {'Bach\'s compositions (sources)'},
['CITEREFDirksen2016'] = {'Bach\'s compositions (sources)'},
['CITEREFDixmier1984'] = {'Dixmier General Topology'},
['CITEREFDoerfer1989'] = template_names['Iranica'],
['CITEREFDoganis1930'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFDoleckiMynard2016'] = {'Dolecki Mynard Convergence Foundations Of Topology'},
['CITEREFDolkart1998'] = {'Cite morningside'},
['CITEREFDonner1995'] = template_names['Iranica'],
['CITEREFDonohue2003'] = {'The Buwayhid Dynasty in Iraq'},
['CITEREFDorin1972'] = {'Dorin-North Western'},
['CITEREFDow1962'] = {'Dow-GC2'},
['CITEREFDow1965'] = {'Dow-GC3'},
['CITEREFDow1985'] = {'Dow-GC1'},
['CITEREFDowney2007'] = {'Downey-Chicago'},
['CITEREFDrechsler2005'] = template_names['Iranica'],
['CITEREFDrummond1964'] = {'HistoryofParliament'},
['CITEREFDrury1985'] = {'Drury Historical Guide 1985'},
['CITEREFDrury1993'] = {'Drury-North American Steam'},
['CITEREFDuchesne-Guillemin1994'] = template_names['Iranica'],
['CITEREFDugundji1966'] = {'Dugundji Topology'},
['CITEREFDuke1995'] = {'Duke-Santa Fe-1'},
['CITEREFDukeKeilty1990'] = {'Duke-RDC'},
['CITEREFDumbarton_Oaks_Hagiography_Database'] = {'Dumbarton Oaks Hagiography Database'},
['CITEREFDunbar1969'] = {'Dunbar-Railroads'},
['CITEREFDuncan-Jones2010'] = {'Shakespeare sonnets bibliography'},
['CITEREFDunlop1895'] = {'O\'Donnell family tree'},
['CITEREFDunlop1985'] = template_names['Iranica'],
['CITEREFDunn2013'] = {'Dunn-Comeng-5'},
['CITEREFDurand-Guédy2008'] = template_names['Iranica'],
['CITEREFDurand-Guédy2010'] = template_names['Iranica'],
['CITEREFDurand-Guédy2013'] = {'Encyclopaedia Islamica'},
['CITEREFDurham1998'] = {'California\'s Geographic Names'},
['CITEREFDurrant1972'] = {'Durrant-Steam Locos Eastern Europe'},
['CITEREFDurrant1981'] = {'Durrant-Garratt-Rev'},
['CITEREFDurrantLewisJorgensen1981'] = {'Durrant-SteamAfrica'},
['CITEREFDömlingKohlhase1971'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1952'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1954'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1987'] = {'Bach\'s compositions (sources)'},
['CITEREFDürrJones2006'] = {'Bach\'s compositions (sources)'},
['CITEREFDürrKobayashi1998'] = {'Bach\'s compositions (sources)'},
['CITEREFde_Blois2000'] = template_names['Iranica'],
['CITEREFde_Planhol1987'] = template_names['Iranica'],
['CITEREFde_Planhol1988'] = template_names['Iranica'],
----------< E >----------
['CITEREFEIr.1994'] = template_names['Iranica'],
['CITEREFEarle2018'] = {'Gymnosperm Database'},
['CITEREFEbata2019'] = {'BDh'},
['CITEREFEbata2020'] = {'BDh'},
['CITEREFEbrahimKhodaverdian2018'] = {'Encyclopaedia Islamica'},
['CITEREFEdwards1995'] = {'Edwards Functional Analysis Theory and Applications'},
['CITEREFEichberg1976'] = {'Bach\'s compositions (sources)'},
['CITEREFEilers1983'] = template_names ['Cam_Hist_Iran'],
['CITEREFEkbal1991'] = template_names['Iranica'],
['CITEREFEl-Hibri2010'] = {'New Cambridge History of Islam'},
['CITEREFEldredgeHorenstein2014'] = {'Cite concrete'},
['CITEREFElsholz1982'] = {'Schubert\'s compositions (references)'},
['CITEREFElwell-Sutton1984'] = template_names['Iranica'],
['CITEREFEppstein1966'] = {'Bach\'s compositions (sources)'},
['CITEREFEppstein1982'] = {'Bach\'s compositions (sources)'},
['CITEREFEquasis'] = {'Csr', 'Cite ship register'},
['CITEREFEuDaly2009'] = {'Complete Book of North American Railroading'},
['CITEREFEuDalySchaferJessupBoyd2009'] = {'Complete Book of North American Railroading'},
----------< F >----------
['CITEREFFacella2021'] = template_names['Iranica'],
['CITEREFFang1943'] = {'Cite ECCP'},
['CITEREFFarinella2001'] = {'DBI'},
['CITEREFFatehi-NezhadAzarnooshNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFFatehi-nezhadRahimi2008'] = {'Encyclopaedia Islamica'},
['CITEREFFeder1958'] = {'Bach\'s compositions (sources)'},
['CITEREFFederal_Writers'_Project1939'] = {'Cite fednyc'},
['CITEREFFelixMadelung1995'] = template_names['Iranica'],
['CITEREFFernandez1983'] = {'Fernandez1983'},
['CITEREFFerneyhough1980'] = {'Ferneyhough-LMR'},
['CITEREFFesharaki2015'] = {'Encyclopaedia Islamica'},
['CITEREFFiaccadori1991'] = template_names['ODB'],
['CITEREFFikratUmar2008'] = template_names['Iranica'],
['CITEREFFine1991'] = {'The Early Medieval Balkans'},
['CITEREFFine1994'] = {'The Late Medieval Balkans'},
['CITEREFFletcher,_Great_Tank_Scandal'] = {'Book-Fletcher-Great Tank Scandal'},
['CITEREFFletcher,_Universal_Tank'] = {'Book-Fletcher-Universal Tank'},
['CITEREFFloor1992'] = template_names['Iranica'],
['CITEREFFloor2005'] = template_names['Iranica'],
['CITEREFFlora_of_North_America'] = {'EFloras'},
['CITEREFFlora_of_North_America2009'] = {'EFloras'},
['CITEREFFluckMarshallWilson1996'] = {'FluMarWil-LocRailCR'},
['CITEREFFonstad1991'] = template_names['ME-ref'],
['CITEREFForkelTerry1920'] = {'Bach\'s compositions (sources)'},
['CITEREFFornaçon,_Siegfried1957'] = template_names['NDB'],
['CITEREFForrestal1999'] = {'Forrestal-Wineries'},
['CITEREFForster1990'] = {'Cite DCB'},
['CITEREFFoss1991'] = template_names['ODB'],
['CITEREFFoster1971'] = template_names['ME-ref'],
['CITEREFFoster1996'] = {'Foster-Field Guide'},
['CITEREFFrailey2010'] = {'Frailey-Twilight'},
['CITEREFFranke1994'] = {'Cite Cambridge History of China'},
['CITEREFFranz_Schnorr_von_Carolsfeld1883'] = {'Cite ADB'},
['CITEREFFriedrich_Wilhelm_Bautz1975'] = {'BBKL'},
['CITEREFFriedrich_Wilhelm_Bautz1990'] = {'BBKL'},
['CITEREFFry1964'] = {'RCTS-LocosLNER-7', 'RCTS-LocosLNER'},
['CITEREFFry1966'] = {'RCTS-LocosLNER-5', 'RCTS-LocosLNER'},
['CITEREFFrye1975'] = template_names['Cam_Hist_Iran'],
['CITEREFFrye1983'] = template_names['Cam_Hist_Iran'],
['CITEREFFrye2004'] = template_names['Iranica'],
['CITEREFFubini2012'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFFudenbergTirole1991'] = {'Cite Fudenberg Tirole 1991'},
['CITEREFFultonHarris1991'] = {'Fulton-Harris'},
----------< G >----------
['CITEREFGarakaniBrown2013'] = {'Encyclopaedia Islamica'},
['CITEREFGardner2005'] = {'MSW3 Microbiotheria'},
['CITEREFGardoni2015'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGareyJohnson1979'] = {'Garey-Johnson'},
['CITEREFGarsoian2000'] = template_names['Iranica'],
['CITEREFGarsoian2004'] = template_names['Iranica'],
['CITEREFGarsoian2005'] = template_names['Iranica'],
['CITEREFGarth2003'] = template_names['ME-ref'],
['CITEREFGazette34205'] = {'London Gazette'},
['CITEREFGazette34339'] = {'London Gazette'},
['CITEREFGazette34390'] = {'London Gazette'},
['CITEREFGazette34427'] = {'London Gazette'},
['CITEREFGazette34558'] = {'London Gazette'},
['CITEREFGazette34870'] = {'London Gazette'},
['CITEREFGazette34978'] = {'London Gazette'},
['CITEREFGazette34989'] = {'London Gazette'},
['CITEREFGazette35037'] = {'London Gazette'},
['CITEREFGazette35107'] = {'London Gazette'},
['CITEREFGazette35134'] = {'London Gazette'},
['CITEREFGazette35284'] = {'London Gazette'},
['CITEREFGazette37560'] = {'London Gazette'},
['CITEREFGazette37590'] = {'London Gazette'},
['CITEREFGazette37598'] = {'London Gazette'},
['CITEREFGazette37610'] = {'London Gazette'},
['CITEREFGazette38020'] = {'London Gazette'},
['CITEREFGazette38611'] = {'London Gazette'},
['CITEREFGeanakoplos1959'] = {'Emperor Michael Palaeologus and the West'},
['CITEREFGeorg_von_Dadelsen1953'] = template_names['NDB'],
['CITEREFGhanoonparvar1989'] = template_names['Iranica'],
['CITEREFGhereghlou2009'] = template_names['Iranica'],
['CITEREFGhereghlou2016'] = template_names['Iranica'],
['CITEREFGhulamiyan2015'] = template_names['Iranica'],
['CITEREFGhulamiyan2015'] = {'Encyclopaedia Islamica'},
['CITEREFGiannasi1975'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGibb1923'] = {'The Arab Conquests in Central Asia'},
['CITEREFGignoux1983'] = template_names['Iranica'],
['CITEREFGignoux1994'] = template_names['Iranica'],
['CITEREFGil1997'] = {'A History of Palestine, 634-1099', 'A History of Palestine, 634–1099'},
['CITEREFGillham2001'] = {'Gillham-Waterloo-City'},
['CITEREFGilliland1969'] = {'Gilliland'},
['CITEREFGilliland1994'] = {'Pop Chronicles 40s'},
['CITEREFGilliverMarshallWeiner2006'] = template_names['ME-ref'],
['CITEREFGilmanPeckColby1905'] = {'Cite NIE', 'New International Encyclopedia', 'NIE'},
['CITEREFGilmanPeckColby1916'] = {'New International Encyclopedia', 'NIE'},
['CITEREFGiunashvili2016'] = template_names['Iranica'],
['CITEREFGleaves1921'] = {'Gleaves'},
['CITEREFGlischinski1997'] = {'Glischinski-Santa Fe'},
['CITEREFGlöckner1983'] = {'Bach\'s compositions (sources)'},
['CITEREFGoldberg1981'] = {'Goldberg-Amtrak'},
['CITEREFGordon2001'] = {'Gordon-The Breaking of a Thousand Swords'},
['CITEREFGraham1974'] = {'Cite DCB'},
['CITEREFGrant1994'] = {'Grant-Death'},
['CITEREFGrant2010'] = {'Grant-Twilight'},
['CITEREFGrant2017'] = {'Grant-RailCo'},
['CITEREFGrassi2018'] = template_names['Iranica'],
['CITEREFGray1986'] = template_names['Cam_Hist_Iran'],
['CITEREFGreenlaw2007'] = {'Greenlaw-Via Rail'},
['CITEREFGregory1991'] = template_names['ODB'],
['CITEREFGregoryŠevčenko1991'] = template_names['ODB'],
['CITEREFGrete_Schemann1957'] = template_names['NDB'],
['CITEREFGrey2002'] = {'Australian Dictionary of Biography'},
['CITEREFGrierson1903'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1908'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1919'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1967'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGriffith1991'] = template_names['ODB'],
['CITEREFGriffithsSmith1999'] = {'Griffiths-Sheds1'},
['CITEREFGriffithsSmith2000'] = {'Griffiths-Sheds2'},
['CITEREFGrothendieck1955'] = {'Grothendieck Produits Tensoriels Topologiques et Espaces Nucléaires'},
['CITEREFGrothendieck1973'] = {'Grothendieck Topological Vector Spaces'},
['CITEREFGrothendieckDieudonné1960'] = {'EGA'},
['CITEREFGrothendieckDieudonné1961'] = {'EGA'},
['CITEREFGrothendieckDieudonné1963'] = {'EGA'},
['CITEREFGrothendieckDieudonné1964'] = {'EGA'},
['CITEREFGrothendieckDieudonné1965'] = {'EGA'},
['CITEREFGrothendieckDieudonné1966'] = {'EGA'},
['CITEREFGrothendieckDieudonné1967'] = {'EGA'},
['CITEREFGrothendieckDieudonné1971'] = {'EGA'},
['CITEREFGroves2005'] = {'MSW3 Primates', 'MSW3 Groves'},
['CITEREFGrubb2005'] = {'MSW3 Artiodactyla'},
['CITEREFGuilland1967'] = {'Recherches sur les institutions byzantines'},
['CITEREFGulino2005'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGunzburg1984'] = {'Gunzburg-History WAGR Steam'},
['CITEREFGurneyNabavi1993'] = template_names['Iranica'],
['CITEREFGutas1987'] = template_names['Iranica'],
['CITEREFGvakharia2001'] = template_names['Iranica'],
['CITEREFGüner1997'] = {'TDV Encyclopedia of Islam'},
----------< H >----------
['CITEREFHaarer2018'] = template_names['ODLA'],
['CITEREFHabibi2021'] = template_names['Iranica'],
['CITEREFHadidi2000'] = template_names['Iranica'],
['CITEREFHaji2008'] = template_names['Iranica'],
['CITEREFHaldon1999'] = {'Warfare, State and Society in the Byzantine World, 565–1204'},
['CITEREFHalliday1985'] = {'Halliday-AustWineCompend'},
['CITEREFHalliday2008'] = {'Halliday-JHWAtlasAust2008'},
['CITEREFHalliday2009'] = {'Halliday-AustWineEncyc'},
['CITEREFHalm1998'] = template_names['Iranica'],
['CITEREFHalpenny1990'] = {'Canadabio'},
['CITEREFHambly1990'] = template_names['Cam_Hist_Iran'],
['CITEREFHambly1991'] = template_names['Cam_Hist_Iran'],
['CITEREFHammondAnderson1993'] = template_names['ME-ref'],
['CITEREFHammondScull1995'] = template_names['ME-ref'],
['CITEREFHammondScull2005'] = template_names['ME-ref'],
['CITEREFHammondScull2006'] = template_names['ME-ref'],
['CITEREFHanaway1988'] = template_names['Iranica'],
['CITEREFHanaway1989'] = template_names['Iranica'],
['CITEREFHanawayLewisohn2004'] = template_names['Iranica'],
['CITEREFHans_Heinrich_Borcherdt1955'] = template_names['NDB'],
['CITEREFHans_Knudsen1972'] = template_names['NDB'],
['CITEREFHansen1988'] = {'Book-Hansen-US Nuclear Weapons'},
['CITEREFHansman1991'] = template_names['Iranica'],
['CITEREFHartshorne1977'] = {'Hartshorne AG'},
['CITEREFHassanpour1989'] = template_names['Iranica'],
['CITEREFHassanpour1995'] = template_names['Iranica'],
['CITEREFHasumi2003'] = {'Hasumi-shiguehiko-ozu-2003'},
['CITEREFHaswell-Smith2004'] = {'Haswell-Smith'},
['CITEREFHaugic1908'] = {'Schaff-Herzog'},
['CITEREFHawting1987'] = {'The First Dynasty of Islam'},
['CITEREFHawting2000'] = {'The First Dynasty of Islam'},
['CITEREFHaynes2011'] = {'RubberBible92nd'},
['CITEREFHeinichen1728'] = {'Bach\'s compositions (sources)'},
['CITEREFHeinrich_Welti1890'] = {'Cite ADB'},
['CITEREFHelgen2005'] = {'MSW3 Scandentia'},
['CITEREFHellmann1965'] = {'Bach\'s compositions (sources)'},
['CITEREFHenrici1725'] = {'Bach\'s compositions (sources)'},
['CITEREFHenryOrsmond1928'] = {'Raiatea family tree'},
['CITEREFHermann_Palm1876'] = {'Cite ADB'},
['CITEREFHerr2000'] = {'Herr-LN'},
['CITEREFHeschel2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},
['CITEREFHewsen1988'] = template_names['Iranica'],
['CITEREFHidyHidyScottHofsummer2004'] = {'Hidy-Great Northern'},
['CITEREFHildHellenkemper1990'] = {'Tabula Imperii Byzantini'},
['CITEREFHildHellenkemper1994'] = {'Tabula Imperii Byzantini'},
['CITEREFHildRestle1981'] = {'Tabula Imperii Byzantini'},
['CITEREFHillenbrand1986'] = template_names['Iranica'],
['CITEREFHills,_Power_from_Steam'] = {'Book-Hills-Power from Steam'},
['CITEREFHills1989'] = {'Book-Hills-Power from Steam'},
['CITEREFHilmarJestremski2004'] = {'Schubert\'s compositions (references)'},
['CITEREFHilton1980'] = {'Hilton-Amtrak'},
['CITEREFHilton1990'] = {'Hilton Narrow Gauge'},
['CITEREFHiltonDue1960'] = {'Hilton-Interurban'},
['CITEREFHinton1986'] = {'HistoryofParliament'},
['CITEREFHirsch1906'] = {'Cite JE1906'},
['CITEREFHistoric_Environment_Scotland'] = {'Canmore'},
['CITEREFHistoric_Environment_Scotland1972'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland1976'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland2020'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland:_Rusco_Tower2020'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_ScotlandLB33744'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_ScotlandLB50114'] = {'Historic Environment Scotland'},
['CITEREFHob.'] = {'Schubert\'s compositions (references)'},
['CITEREFHoffmanSmith2005'] = {'MSW3 Lagomorpha'},
['CITEREFHoffmann1738'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1983'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1987'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1999'] = {'Bach\'s compositions (sources)'},
['CITEREFHolland1972'] = {'Holland-Vol 2'},
['CITEREFHolland1988'] = {'Cite DCB'},
['CITEREFHolland2001'] = {'Holland-Classic'},
['CITEREFHollingsworth1980'] = {'Hollingsworth-Atlas-Rigby'},
['CITEREFHollingsworth1991'] = template_names['ODB'],
['CITEREFHollingsworthCutler1991'] = template_names['ODB'],
['CITEREFHolmgren2003'] = {'EFloras'},
['CITEREFHoltBiddle1986'] = {'Holt-NorthWest'},
['CITEREFHolton1989'] = {'Holton-Reading-1'},
['CITEREFHonigmann1935'] = {'Byzance et les Arabes'},
['CITEREFHopley1983'] = {'Australian Dictionary of Biography'},
['CITEREFHort1911'] = {'DCBL'},
['CITEREFHorváth1966'] = {'Horváth Topological Vector Spaces and Distributions Volume 1 1966'},
['CITEREFHosseini2017'] = template_names['Iranica'],
['CITEREFHounshell1984'] = {'Hounshell1984'},
['CITEREFHudson1997'] = {'Country study'},
['CITEREFHughes1990'] = {'Hughes-IndianLocos1'},
['CITEREFHughes1992'] = {'Hughes-IndianLocos2'},
['CITEREFHughes1994'] = {'Hughes-IndianLocos3'},
['CITEREFHughes1996'] = {'Hughes-IndianLocos4'},
['CITEREFHummel1943'] = {'Cite ECCP'},
['CITEREFHumphreys2018'] = template_names['ODLA'],
['CITEREFHunter-Crawley2018'] = template_names['ODLA'],
['CITEREFHunter2008'] = {'Country study'},
['CITEREFHutter2009'] = template_names['Iranica'],
['CITEREFHutterer2005'] = {'MSW3 Soricomorpha'},
['CITEREFHütter2012'] = {'Hütter-50bis53'},
['CITEREFHütter2015'] = {'Hütter-54bis59'},
['CITEREFHütter2021'] = {'Hütter-60bis91'},
----------< I >----------
['CITEREFIbn_Khallikan1843'] = {'Ibn Khallikan\'s Biographical Dictionary'},
['CITEREFImber2002'] = {'Imber-The Ottoman Empire, 1300–1650'},
['CITEREFInalcik1989'] = {'Setton-A History of the Crusades'},
['CITEREFIranica:_Bahrām'] = template_names['Iranica'],
['CITEREFIrvine2006'] = template_names['Iranica'],
['CITEREFIshino1998'] = {'Teishajo'},
['CITEREFIshkevariNejad2008'] = {'Encyclopaedia Islamica'},
['CITEREFIvey1919'] = {'Ivey-Marquette'},
----------< J >----------
['CITEREFJackson1908'] = {'Schaff-Herzog'},
['CITEREFJackson1988'] = template_names['Iranica'],
['CITEREFJackson1989'] = template_names['Iranica'],
['CITEREFJackson1995'] = {'Cite enc-nyc'},
['CITEREFJackson2010'] = {'Cite enc-nyc2'},
['CITEREFJacksonMelville2001'] = template_names['Iranica'],
['CITEREFJacobs1904'] = {'Cite Jewish Encyclopedia'},
['CITEREFJarchow1981'] = {'Jarchow Locally Convex Spaces'},
['CITEREFJavadiBurrill1988'] = template_names['Iranica'],
['CITEREFJohn_O'Donovan1856'] = {'Cite AFM'},
['CITEREFJohnstonWelshSchafer2001'] = {'Johnston-Streamliner'},
['CITEREFJones2011'] = {'Cite EPD'},
['CITEREFJordan2002'] = {'Jordan-WineWABest'},
['CITEREFJoshi1983'] = {'Joshi Introduction to General Topology'},
['CITEREFJoslen2003'] = {'Joslen-OOB'},
['CITEREFJowett1867'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFJowett1989'] = {'Jowett-Atlas', 'Carnarvonshire Railway'},
['CITEREFJowett2000'] = {'Jowett-Nationalised'},
['CITEREFJullien2018'] = template_names['ODLA'],
['CITEREFJupp1986'] = {'HistoryofParliament'},
----------< K >----------
['CITEREFK.'] = {'Schubert\'s compositions (references)'},
['CITEREFKadinsky2016'] = {'Cite Hidden Waters NYC'},
['CITEREFKaegi1991'] = template_names['ODB'],
['CITEREFKamaly2006'] = template_names['Iranica'],
['CITEREFKamp1981'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFKang2008'] = {'Country study'},
['CITEREFKaramatiMelvin-Koushki2021'] = template_names['Iranica'],
['CITEREFKaramatiMelvin-Koushki2021'] = {'Encyclopaedia Islamica'},
['CITEREFKarimi-Hakkak1997'] = template_names['Iranica'],
['CITEREFKarimiMaghsoodi2013'] = {'Encyclopaedia Islamica'},
['CITEREFKarl_Frohnmeyer1953'] = template_names['NDB'],
['CITEREFKarnow1989'] = {'Cite-Karnow'},
['CITEREFKasheff2001'] = template_names['Iranica'],
['CITEREFKayvaniGholami2008'] = {'Encyclopaedia Islamica'},
['CITEREFKazhdan1991'] = template_names['ODB'],
['CITEREFKazhdanCutler1991'] = template_names['ODB'],
['CITEREFKazhdanJeffreys1991'] = template_names['ODB'],
['CITEREFKazhdanŠevčenko1991'] = template_names['ODB'],
['CITEREFKeall1987'] = template_names['Iranica'],
['CITEREFKeefe2006'] = {'Schubert\'s compositions (references)'},
['CITEREFKeightley1999'] = {'Cite Cambridge History of China'},
['CITEREFKeller1937'] = {'Bach\'s compositions (sources)'},
['CITEREFKelly1988'] = {'Cite GEIL'},
['CITEREFKellyBurrage1920'] = {'Cite AMB1920'},
['CITEREFKennedy1998'] = {'The Cambridge History of Egypt', 'Cite Kennedy 1998', 'Cambridge History of Egypt'},
['CITEREFKennedy2001'] = {'Kennedy-The Armies of the Caliphs'},
['CITEREFKennedy2004'] = {'The Prophet and the Age of the Caliphates'},
['CITEREFKennedy2007'] = {'Kennedy-The Great Arab Conquests'},
['CITEREFKennedy2016'] = {'The Prophet and the Age of the Caliphates'},
['CITEREFKenyon2011'] = {'Bach\'s compositions (sources)'},
['CITEREFKerrigan1995'] = {'Shakespeare sonnets bibliography'},
['CITEREFKettenhofen1995'] = template_names['Iranica'],
['CITEREFKettenhofen2001'] = template_names['Iranica'],
['CITEREFKettenhofenBournoutianHewsen1998'] = template_names['Iranica'],
['CITEREFKhaleelulla1982'] = {'Khaleelulla Counterexamples in Topological Vector Spaces'},
['CITEREFKhaleghi-Motlagh1999'] = template_names['Iranica'],
['CITEREFKhaleghi-Motlagh2001'] = template_names['Iranica'],
['CITEREFKhan2012'] = {'Cite Banglapedia'},
['CITEREFKhatibiNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFKim1994'] = {'Country study'},
['CITEREFKirnberger1774'] = {'Bach\'s compositions (sources)'},
['CITEREFKirnberger1780'] = {'Bach\'s compositions (sources)'},
['CITEREFKlein2006'] = {'Klein-UP-2'},
['CITEREFKlíma1988'] = template_names['Iranica'],
['CITEREFKobayashi1978'] = {'Bach\'s compositions (sources)'},
['CITEREFKoderHild1976'] = {'Tabula Imperii Byzantini'},
['CITEREFKoderSoustalKoder1998'] = {'Tabula Imperii Byzantini'},
['CITEREFKoeppel2015'] = {'Cite citygrid'},
['CITEREFKofos1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFKohler1902'] = {'Cite Jewish Encyclopedia'},
['CITEREFKolde1914'] = {'Schaff-Herzog'},
['CITEREFKoliopoulos1978'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFKolmogorovFomin1957'] = {'Kolmogorov Fomin Elements of the Theory of Functions and Functional Analysis'},
['CITEREFKonrad_Ameln1985'] = template_names['NDB'],
['CITEREFKoska2011'] = {'Bach\'s compositions (sources)'},
['CITEREFKratville1962'] = {'Kratville-SSL'},
['CITEREFKretzschmar1910'] = {'Bach\'s compositions (sources)'},
['CITEREFKube2009'] = {'Schubert\'s compositions (references)'},
['CITEREFKurz1983'] = template_names['Cam_Hist_Iran'],
['CITEREFKuznik2008'] = {'Bach\'s compositions (sources)'},
['CITEREFKöthe1969'] = {'Köthe Topological Vector Spaces I'},
['CITEREFKöthe1979'] = {'Köthe Topological Vector Spaces II'},
['CITEREFKöthe1983'] = {'Köthe Topological Vector Spaces I'},
['CITEREFKülzer2008'] = {'Tabula Imperii Byzantini'},
['CITEREFKüçükaşcı2001'] = {'TDV Encyclopedia of Islam'},
----------< L >----------
['CITEREFLa_Porta2018'] = template_names['ODLA'],
['CITEREFLacourcière1974'] = {'Cite DCB'},
['CITEREFLadefogedMaddieson1996'] = {'SOWL'},
['CITEREFLandau-Tasseron2010'] = {'New Cambridge History of Islam'},
['CITEREFLandauCondit1996'] = {'Cite nysky'},
['CITEREFLandmann1907'] = {'Bach\'s compositions (sources)'},
['CITEREFLang1983'] = template_names['Cam_Hist_Iran'],
['CITEREFLangaroodiCooper2008'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiCooper2015'] = template_names['Iranica'],
['CITEREFLangaroodiCooper2015'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiNegahban2015'] = template_names['Iranica'],
['CITEREFLangaroodiNegahban2015'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroudi2001'] = template_names['Iranica'],
['CITEREFLatham1982–2021'] = template_names['Iranica'],
['CITEREFLazard1975'] = template_names['Cam_Hist_Iran'],
['CITEREFLaërtius1925'] = {'Cite Lives of the Eminent Philosophers', 'Cite LotEP'},
['CITEREFLeCoq1986'] = template_names['Iranica'],
['CITEREFLe_Quien1740'] = {'Oriens Christianus'},
['CITEREFLe_Strange1900'] = {'Baghdad During the Abbasid Caliphate'},
['CITEREFLe_Strange1905'] = {'Lands of the Eastern Caliphate'},
['CITEREFLe_Strange1922'] = {'Baghdad During the Abbasid Caliphate'},
['CITEREFLeblanc1979'] = {'Cite DCB'},
['CITEREFLee1903'] = {'Cite DNBIE'},
['CITEREFLee2018'] = template_names['ODLA'],
['CITEREFLeisingerWollny1993'] = {'Bach\'s compositions (sources)'},
['CITEREFLerner1988'] = template_names['Iranica'],
['CITEREFLev1999'] = {'Saladin in Egypt'},
['CITEREFLevitan2001'] = {'Springer'},
['CITEREFLewin1925'] = {'Lewin-EarlyRail'},
['CITEREFLewis1969'] = {'Setton-A History of the Crusades'},
['CITEREFLewis1986'] = {'Lewis-Shortline-1986'},
['CITEREFLewis1991'] = {'Lewis-Shortline-1991'},
['CITEREFLewis1996'] = {'Lewis-Shortline-1996'},
['CITEREFLewis2001'] = template_names['Iranica'],
['CITEREFLi2002'] = {'Cite Cambridge History of China'},
['CITEREFLiederNet_Archive'] = {'Schubert\'s compositions (references)'},
['CITEREFLieu1997'] = template_names['Iranica'],
['CITEREFLighthouses_of_Australia_Inc'] = {'Cite loa'},
['CITEREFLind1986'] = {'Lind-Limiteds'},
['CITEREFLittle1974'] = {'Cite DCB'},
['CITEREFLongnon1969'] = {'Setton-A History of the Crusades'},
['CITEREFLosensky2003'] = template_names['Iranica'],
['CITEREFLoverance2018'] = template_names['ODLA'],
['CITEREFLukonin1983'] = {'Cambridge History of Iran'},
['CITEREFLurje2010'] = template_names['Iranica'],
['CITEREFLuttrell1975'] = {'Setton-A History of the Crusades'},
['CITEREFLuttrell1987'] = {'DBI'},
['CITEREFLynch2004'] = {'Lynch-Penn Central'},
['CITEREFLynch2005'] = {'Lynch-New Haven passenger'},
['CITEREFLynch2018'] = template_names['ODLA'],
['CITEREFLéger1990'] = {'Cite DCB'},
['CITEREFle_Fleming1953'] = {'RCTS-LocosGWR-8'},
['CITEREFle_Fleming1960'] = {'RCTS-LocosGWR-8'},
----------< M >----------
['CITEREFMacDermot1927'] = {'Infobox GWR'},
['CITEREFMacDermot1931'] = {'Infobox GWR'},
['CITEREFMacEoin1988'] = template_names['Iranica'],
['CITEREFMacKenzie1992'] = template_names['Iranica'],
['CITEREFMadelung1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMadelung1978'] = {'EI2'},
['CITEREFMadelung1983'] = template_names['Iranica'],
['CITEREFMadelung1984'] = template_names['Iranica'],
['CITEREFMadelung1988'] = template_names['Iranica'],
['CITEREFMadelung1993'] = template_names['Iranica'],
['CITEREFMadelung2003'] = template_names['Iranica'],
['CITEREFMadelungFelix1995'] = template_names['Iranica'],
['CITEREFMaeda2009'] = template_names['Iranica'],
['CITEREFMagdalino2002'] = {'The Empire of Manuel I Komnenos'},
['CITEREFMaiken1989'] = {'Maiken-Night Trains'},
['CITEREFMailer2004'] = {'Mailer-Omaha Road'},
['CITEREFMajidiNegahban'] = {'Encyclopaedia Islamica'},
['CITEREFMalandra2009'] = template_names['Iranica'],
['CITEREFManfred_Knedlik2007'] = {'BBKL'},
['CITEREFMarshak1994'] = template_names['Iranica'],
['CITEREFMarshak2002'] = template_names['Iranica'],
['CITEREFMarshall1823'] = {'Cite RNB1823'},
['CITEREFMarshall1824'] = {'Cite RNB1823'},
['CITEREFMarshall1825'] = {'Cite RNB1823'},
['CITEREFMarshall1827'] = {'Cite RNB1823'},
['CITEREFMarshall1828'] = {'Cite RNB1823'},
['CITEREFMarshall1829'] = {'Cite RNB1823'},
['CITEREFMarshall1830'] = {'Cite RNB1823'},
['CITEREFMarshall1831'] = {'Cite RNB1823'},
['CITEREFMarshall1832'] = {'Cite RNB1823'},
['CITEREFMarshall1833'] = {'Cite RNB1823'},
['CITEREFMarshall1835'] = {'Cite RNB1823'},
['CITEREFMarshall1972'] = {'Lancashire & Yorkshire Railway 3'},
['CITEREFMarshall2001'] = {'Marshall-INGSR'},
['CITEREFMartin_Persch1992'] = {'BBKL'},
['CITEREFMartin_Persch1993'] = {'BBKL'},
['CITEREFMartin_Persch1996'] = {'BBKL'},
['CITEREFMartindale1980'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMartindale1992'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMartindaleJonesMorris1971'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMasoud_Jalali-Moqaddam2015'] = {'Encyclopaedia Islamica'},
['CITEREFMatini1987'] = template_names['Iranica'],
['CITEREFMatthee2008'] = template_names['Iranica'],
['CITEREFMatthee2015'] = template_names['Iranica'],
['CITEREFMaul2005'] = {'Bach\'s compositions (sources)'},
['CITEREFMayGray2006'] = {'MayGray-WAGRPassCar'},
['CITEREFMazzaoui2002'] = template_names['Iranica'],
['CITEREFMcArthurMcArthur2003'] = {'Cite ogn', 'Cite Oregon Geographic Names'},
['CITEREFMcCaffrey1990'] = template_names['Iranica'],
['CITEREFMcCorduck2004'] = {'McCorduck 2004'},
['CITEREFMcCurdyRogers1902'] = {'Cite Jewish Encyclopedia'},
['CITEREFMcDonnell2015'] = {'McDonnell-Locomotives-2nd'},
['CITEREFMcGhee2008'] = {'Cite McGhee 2008'},
['CITEREFMeiningen1704'] = {'Bach\'s compositions (sources)'},
['CITEREFMeints1992'] = {'Meints-Companies'},
['CITEREFMeints2005'] = {'Meints-Lines'},
['CITEREFMelamed1988'] = {'Bach\'s compositions (sources)'},
['CITEREFMelamed1995'] = {'Bach\'s compositions (sources)'},
['CITEREFMelville1997'] = template_names['Iranica'],
['CITEREFMelville2003'] = template_names['Iranica'],
['CITEREFMennell1892'] = {'Dictionary of Australasian Biography'},
['CITEREFMetcalfe2009'] = {'The Muslims of Medieval Italy'},
['CITEREFMiddleton1961'] = {'Middleton-Interurban'},
['CITEREFMiddleton2001'] = {'Middleton-Electrified-2nd'},
['CITEREFMiddleton2002'] = {'Middleton-PRR-Under-Wire'},
['CITEREFMiddletonSmerkDiehl2007'] = {'Encyclopedia of North American Railroads'},
['CITEREFMiles1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMillar2011'] = {'NZR Steam Locomotive'},
['CITEREFMiller'] = {'Encyclopaedia Islamica'},
['CITEREFMiller1908'] = {'The Latins in the Levant', 'Latins in the Levant'},
['CITEREFMiller1921'] = {'Essays on the Latin Orient'},
['CITEREFMinnich2008'] = {'Country study'},
['CITEREFMiramar_Ship_Index'] = {'Csr', 'Cite ship register'},
['CITEREFMitchell1965'] = {'Mitchell TOC'},
['CITEREFMittermeierKonstantHawkinsLouis2006'] = {'LoM2'},
['CITEREFMittermeierLouisRichardsonSchwitzer2010'] = {'LoM3'},
['CITEREFMittermeierTattersallKonstantMeyers1994'] = {'LoM1'},
['CITEREFMoore1875'] = {'Cite CEM'},
['CITEREFMorana1993'] = {'Bach\'s compositions (sources)'},
['CITEREFMorony2009'] = template_names['Iranica'],
['CITEREFMoschonas1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFMottahedeh1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMozartHaydnHaydn2008'] = {'Schubert\'s compositions (references)'},
['CITEREFMunkres1974'] = {'Munkres Topology'},
['CITEREFMunkres2000'] = {'Munkres Topology'},
['CITEREFMurray2006'] = {'Murray-Illinois Central'},
['CITEREFMusserCarleton2005'] = {'MSW3 Muroidea'},
['CITEREFMüller,_Hans-Christian1966'] = template_names['NDB'],
['CITEREFMyersWang2002'] = {'Cite Cambridge History of China'},
----------< N >----------
['CITEREFNSA_II,_15'] = {'Schubert\'s compositions (references)'},
['CITEREFNSA_scores'] = {'Schubert\'s compositions (references)'},
['CITEREFNSA_website'] = {'Schubert\'s compositions (references)'},
['CITEREFNagel1990'] = template_names['Iranica'],
['CITEREFNariciBeckenstein2011'] = {'Narici Beckenstein Topological Vector Spaces'},
['CITEREFNavāʾī1988'] = template_names['Iranica'],
['CITEREFNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFNersessian2018'] = template_names['ODLA'],
['CITEREFNetzer1998'] = template_names['Iranica'],
['CITEREFNetzer2007'] = template_names['Iranica'],
['CITEREFNeukirch1999'] = {'Neukirch ANT'},
['CITEREFNeukirchSchmidtWingberg2000'] = {'Neukirch et al. CNF'},
['CITEREFNew_York_City_Landmarks_Preservation_CommissionDolkartPostal2009'] = {'Cite nycland'},
['CITEREFNewbould1999'] = {'Schubert\'s compositions (references)'},
['CITEREFNewman1994'] = template_names['Iranica'],
['CITEREFNicholsonCanepaDaryaee2018'] = template_names['ODLA'],
['CITEREFNicol1988'] = {'Byzantium and Venice: A Study in Diplomatic and Cultural Relations'},
['CITEREFNicol1992'] = {'The Immortal Emperor: The Life and Legend of Constantine Palaiologos, Last Emperor of the Romans'},
['CITEREFNicol1993'] = {'The Last Centuries of Byzantium, 1261–1453', 'The Last Centuries of Byzantium'},
['CITEREFNock1974'] = {'Nock-EustonGlasgow'},
----------< O >----------
['CITEREFO'Byrne1849'] = {'Cite NBD1849'},
['CITEREFO'ConnorRobertson'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson1996'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson2000'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson2004'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'Donoghue1897'] = {'Cite DNB'},
['CITEREFODB'] = template_names['ODB'],
['CITEREFODLA'] = template_names['ODLA'],
['CITEREFOberling1984'] = template_names['Iranica'],
['CITEREFOberling2008'] = template_names['Iranica'],
['CITEREFOberling2010'] = template_names['Iranica'],
['CITEREFOdisheli2018'] = template_names['ODLA'],
['CITEREFOfficial_Guide_of_the_Railways1950'] = {'Official Guide of the Railways'},
['CITEREFOgorek2012'] = {'Ogorek-South Shore'},
['CITEREFOikonomides1991'] = template_names['ODB'],
['CITEREFOikonomou1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFOlbrycht2021'] = template_names['Iranica'],
----------< P >----------
['CITEREFPLP'] = {'Prosopographisches Lexikon der Palaiologenzeit', 'PLP'},
['CITEREFPalmer1875'] = {'Cite ADB'},
['CITEREFPalmerStewart1965'] = {'Palmer & Stewart'},
['CITEREFPanainoAbdollahyBalland1990'] = template_names['Iranica'],
['CITEREFPandariHirtensteinNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFParvin2003'] = template_names['Iranica'],
['CITEREFParvin2009'] = template_names['Iranica'],
['CITEREFPatience1996'] = {'Patience-SteamTwilight'},
['CITEREFPatton2005'] = {'MSW3 Geomyidae'},
['CITEREFPaul2000'] = template_names['Iranica'],
['CITEREFPawson1979'] = {'Pawson-Delaware Valley'},
['CITEREFPaxtonBourne1985'] = {'Paxton-Bourne'},
['CITEREFPeacock2011'] = template_names['Iranica'],
['CITEREFPeck1898'] = {'HDCA'},
['CITEREFPerlis2001'] = {'Springer'},
['CITEREFPerreault2004'] = {'Bach\'s compositions (sources)'},
['CITEREFPerry1983'] = template_names['Cam_Hist_Iran'],
['CITEREFPerry1990'] = template_names['Cam_Hist_Iran'],
['CITEREFPerry1991'] = template_names['Cam_Hist_Iran'],
['CITEREFPetropoulosKoumarianou1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFPetrucci1982'] = {'DBI'},
['CITEREFPezeshk2017'] = {'Encyclopaedia Islamica'},
['CITEREFPezeshkKhaleeli2017'] = template_names['Iranica'],
['CITEREFPezeshkKhaleeli2017'] = {'Encyclopaedia Islamica'},
['CITEREFPfau2008'] = {'Bach\'s compositions (sources)'},
['CITEREFPinkepank1973'] = {'Pinkepank diesel spotters guide 2'},
['CITEREFPlantlist2016'] = {'Plantlist'},
['CITEREFPlaten1976'] = {'Bach\'s compositions (sources)'},
['CITEREFPloumidisAlexiou1974'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFPmbZ'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},
['CITEREFPolemis1968'] = {'Polemis-The Doukai'},
['CITEREFPope2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},
['CITEREFPopplewell'] = {'Popplewell-Gazetteer'},
['CITEREFPotts2018'] = template_names['ODLA'],
['CITEREFPottsCanepa2018'] = template_names['ODLA'],
['CITEREFPourshariati2017'] = {'Encyclopædia Iranica Online'},
['CITEREFPozza1992'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFPrawer1985'] = {'Setton-A History of the Crusades'},
['CITEREFPritsak1991'] = template_names['ODB'],
['CITEREFProsopographie_der_mittelbyz._Zeit'] = {'Prosopographie der mittelbyzantinischen Zeit'},
----------< Q >----------
['CITEREFQuick2009'] = {'Quick-Stations'},
['CITEREFQuick2019'] = {'Quick-stations-5'},
['CITEREFQuick2020'] = {'Quick-stations-5'},
['CITEREFQuick2022'] = {'Quick-stations-5'},
['CITEREFQuinn2003'] = template_names['Iranica'],
----------< R >----------
['CITEREFRaditsa1983'] = template_names['Cam_Hist_Iran'],
['CITEREFRahman1983'] = template_names['Iranica'],
['CITEREFRaja'i1987'] = template_names['Iranica'],
['CITEREFRamaer1974'] = {'Ramaer-SteamLocosEAR'},
['CITEREFRansome-Wallis1971'] = {'Ransome-Wallis 1'},
['CITEREFRateliff2007'] = template_names['ME-ref'],
['CITEREFRavegnano2000'] = {'DBI'},
['CITEREFReed1953'] = {'RCTS-LocosGWR-2'},
['CITEREFReed1975'] = {'Reed-Streamline era'},
['CITEREFReed1997'] = {'Schubert\'s compositions (references)'},
['CITEREFReinhard_Tenberg1990'] = {'BBKL'},
['CITEREFRettinghaus2020'] = {'BDh'},
['CITEREFReynolds1921'] = {'Cite Collier\'s', 'Collier\'s'},
['CITEREFReynoldsOroszi2000'] = {'Reynolds-BO'},
['CITEREFRezaHirtensteinGholami2021'] = {'Encyclopaedia Islamica'},
['CITEREFRezakhani2018'] = template_names['ODLA'],
['CITEREFRezvani2014'] = template_names['Iranica'],
['CITEREFRichter-Bernburg2003'] = template_names['Iranica'],
['CITEREFRichter2018'] = {'BDh'},
['CITEREFRigo2005'] = template_names['ODB'],
['CITEREFRipleyDana1863'] = {'New American Cyclopedia'},
['CITEREFRipleyDana1864'] = {'New American Cyclopedia'},
['CITEREFRipleyDana1879'] = {'Cite AmCyc'},
['CITEREFRistaino1988'] = {'Country study'},
['CITEREFRobert_Eitner1891'] = {'Cite ADB'},
['CITEREFRobertson1983'] = {'Robertson-OriginScot'},
['CITEREFRoe1916'] = {'Roe1916'},
['CITEREFRoe1937'] = {'Roe1937'},
['CITEREFRoemer1986'] = template_names['Cam_Hist_Iran'],
['CITEREFRoemer1989'] = template_names['Iranica'],
['CITEREFRoemer2004'] = template_names['Iranica'],
['CITEREFRolt1965'] = {'Rolt1965'},
['CITEREFRoltKichenside1982'] = {'Rolt-Red'},
['CITEREFRose1857'] = {'Cite Newgenbio'},
['CITEREFRosenfeld1974'] = template_names['NDB'],
['CITEREFRosenzweigBlackmar1992'] = {'Cite Central Park History', 'Cite Central Park history'},
['CITEREFRowe2002'] = {'Cite Cambridge History of China'},
['CITEREFRowledge1975'] = {'Rowledge-Engines of the LMS'},
['CITEREFRowledge1993'] = {'Rowledge-Irish Steam Register'},
['CITEREFRowlett'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2007'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2012'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2013'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2016'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2017'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowson1998'] = template_names['Iranica'],
['CITEREFRudin1973'] = {'Rudin Walter Functional Analysis'},
['CITEREFRudin1991'] = {'Rudin Walter Functional Analysis'},
['CITEREFRunciman1951'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1951–1954'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1952'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1954'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1989'] = {'Runciman-A History of the Crusades'},
['CITEREFRussell1985'] = {'Setton-A History of the Crusades', 'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},
['CITEREFRussell1986'] = template_names['Iranica'],
['CITEREFRussell1987'] = template_names['Iranica'],
['CITEREFRussellNorvig2003'] = {'Russell Norvig 2003'},
['CITEREFRybczynski2000'] = {'Rybczynski2000'},
['CITEREFRypka1968'] = template_names['Cam_Hist_Iran'],
----------< S >----------
['CITEREFSR_staff2013'] = {'Houston family tree'},
['CITEREFSadeghiTehrani2008'] = {'Encyclopaedia Islamica'},
['CITEREFSadıkoğlu1996'] = {'TDV Encyclopedia of Islam'},
['CITEREFSafa1987'] = template_names['Iranica'],
['CITEREFSafa1988'] = template_names['Iranica'],
['CITEREFSafa1989'] = template_names['Iranica'],
['CITEREFSafa1994'] = template_names['Iranica'],
['CITEREFSafa2003'] = template_names['Iranica'],
['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica Online'},
['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica'},
['CITEREFSajjadiAsatryanMelvin-Koushki2021'] = template_names['Iranica'],
['CITEREFSalbiev2021'] = template_names['Iranica'],
['CITEREFSalo2004'] = template_names['ME-ref'],
['CITEREFSamiʿiMelvin-Koushki2013'] = {'Encyclopaedia Islamica'},
['CITEREFSanders1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},
['CITEREFSanders2003'] = {'Sanders-Indiana'},
['CITEREFSanders2006'] = {'Sanders-Heartland'},
['CITEREFSanders2007'] = {'Sanders-Akron'},
['CITEREFSarikakis1974'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSaunders2001'] = {'Saunders-Merging Lines'},
['CITEREFSaunders2013'] = {'Saunders-Giants of the Seas'},
['CITEREFSavadaShaw1992'] = {'Country study'},
['CITEREFSavoryKaramustafa1998'] = template_names['Iranica'],
['CITEREFScarce1986'] = template_names['Iranica'],
['CITEREFSchaeferWolff1999'] = {'Schaefer Wolff Topological Vector Spaces'},
['CITEREFSchafer1996'] = {'Schafer-Classic-Railroads-1'},
['CITEREFSchafer1998'] = {'Schafer-Vintage Diesel'},
['CITEREFSchafer2000'] = {'Schafer-More-Classic'},
['CITEREFSchafer2003'] = {'Schafer-Classic-Railroads-3'},
['CITEREFSchaferSolomon1997'] = {'Schafer-Pennsylvania'},
['CITEREFSchaferWelsh1997'] = {'Schafer-Classic'},
['CITEREFSchaferWelsh2002'] = {'Schafer-Streamliners'},
['CITEREFSchaferWelshHolland2001'] = {'Schafer-American passenger train'},
['CITEREFSchaff-Herzog'] = {'Schaff-Herzog'},
['CITEREFSchechter1996'] = {'Schechter Handbook of Analysis and Its Foundations'},
['CITEREFScheide1960'] = {'Bach\'s compositions (sources)'},
['CITEREFSchicht1805'] = {'Bach\'s compositions (sources)'},
['CITEREFSchilling1997'] = {'Schilling-pop-culture'},
['CITEREFSchindel2013'] = template_names['Iranica'],
['CITEREFSchippmann1986'] = template_names['Iranica'],
['CITEREFSchippmann1987'] = template_names['Iranica'],
['CITEREFSchlitter2005'] = {'MSW3 Tubulidentata'},
['CITEREFSchlumberger1983'] = template_names['Cam_Hist_Iran'],
['CITEREFSchmieder1950'] = {'Bach\'s compositions (sources)'},
['CITEREFSchmieder1990'] = {'Bach\'s compositions (sources)'},
['CITEREFSchmitt1986'] = template_names['Iranica'],
['CITEREFSchmitt1989'] = template_names['Iranica'],
['CITEREFSchmitt1993'] = template_names['Iranica'],
['CITEREFSchmitt1994'] = template_names['Iranica'],
['CITEREFSchmitt1995'] = template_names['Iranica'],
['CITEREFSchmitt2002'] = template_names['Iranica'],
['CITEREFSchmitt2004'] = template_names['Iranica'],
['CITEREFSchmitt2005'] = template_names['Iranica'],
['CITEREFSchmitt2018'] = template_names['Iranica'],
['CITEREFSchmittBailey1986'] = template_names['Iranica'],
['CITEREFSchmitz1870'] = {'Cite DGRBM'},
['CITEREFSchneider1907'] = {'Bach\'s compositions (sources)'},
['CITEREFSchneider1912'] = {'Bach\'s compositions (sources)'},
['CITEREFScholze1736'] = {'Bach\'s compositions (sources)'},
['CITEREFSchroeter1961'] = {'Schroeter-Eisenbahnen'},
['CITEREFSchroeterRamaer1993'] = {'Schroeter-Ramaer-Eisenbahnen'},
['CITEREFSchubert-online'] = {'Schubert\'s compositions (references)'},
['CITEREFSchubert1968'] = {'Schubert Topology'},
['CITEREFSchulenberg2010'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulenberg2013'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1980'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1983'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1984'] = {'Bach\'s compositions (sources)'},
['CITEREFSchwieterman2001'] = {'Schwieterman-Leaves-Eastern'},
['CITEREFScottNegus2011'] = {'Scott-Negus-Cellar Door'},
['CITEREFScribbins1970'] = {'Scribbins-Hiawatha'},
['CITEREFScribbins2008'] = {'Scribbins-400-2008', 'Scribbins-Remembered'},
['CITEREFSearle'] = {'Cite sslidx'},
['CITEREFSegal1982'] = template_names['Iranica'],
['CITEREFSellwood1983'] = template_names['Cam_Hist_Iran'],
['CITEREFSemmensGoldfinch2003'] = {'Book-Semmens-Goldfinch-How Steam Locomotives Really Work'},
['CITEREFSemsarZand2008'] = {'Encyclopaedia Islamica'},
['CITEREFSetton1975'] = {'Setton-A History of the Crusades'},
['CITEREFSetton1976'] = {'The Papacy and the Levant'},
['CITEREFSetton1978'] = {'The Papacy and the Levant'},
['CITEREFSetton1984'] = {'The Papacy and the Levant'},
['CITEREFSettonHazard1975'] = {'Setton-A History of the Crusades'},
['CITEREFSfyroeras1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFShahbazi1986'] = template_names['Iranica'],
['CITEREFShahbazi1987'] = template_names['Iranica'],
['CITEREFShahbazi1988'] = template_names['Iranica'],
['CITEREFShahbazi1989'] = template_names['Iranica'],
['CITEREFShahbazi1991'] = template_names['Iranica'],
['CITEREFShahbazi1994'] = template_names['Iranica'],
['CITEREFShahbazi2002'] = template_names['Iranica'],
['CITEREFShahbazi2003'] = template_names['Iranica'],
['CITEREFShahbazi2004'] = template_names['Iranica'],
['CITEREFShahbazi2005'] = template_names['Iranica'],
['CITEREFShahbaziBosworth1990'] = template_names['Iranica'],
['CITEREFShahbaziRichter-Bernburg2002'] = template_names['Iranica'],
['CITEREFShaki1991'] = template_names['Iranica'],
['CITEREFShaughnessy1997'] = {'Shaughnessy-DH'},
['CITEREFShaw1978'] = {'Shaw-RailroadAccidents'},
['CITEREFShayegan2004'] = template_names['Iranica'],
['CITEREFShayesteh2013'] = template_names['Iranica'],
['CITEREFSheikhsofla2018'] = {'Encyclopaedia Islamica'},
['CITEREFShindo2004'] = {'Kaneto-shindo-shinario-jinsei'},
['CITEREFShoarian-SattariRezaeeNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFShoshani2005'] = {'MSW3 Shoshani'},
['CITEREFShtern2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSiegele1957'] = {'Bach\'s compositions (sources)'},
['CITEREFSilanos2014'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFSilke2006'] = {'O\'Donnell family tree'},
['CITEREFSimmons2005'] = {'MSW3 Chiroptera'},
['CITEREFSimon1966'] = {'Simon-Wines Australia'},
['CITEREFSimonWarner2011'] = {'Amtrak By the Numbers'},
['CITEREFSinclair1911'] = {'DCBL'},
['CITEREFSinger1905'] = {'Jewish Encyclopedia'},
['CITEREFSix1934'] = {'Cite Six', 'Cite six'},
['CITEREFSkjærvø2018'] = template_names['ODLA'],
['CITEREFSkoulatos1980'] = {'Les personnages byzantins de l\'Alexiade'},
['CITEREFSloan1964'] = {'Sloan1964'},
['CITEREFSmith1854'] = {'Cite DGRG', 'DGRG'},
['CITEREFSmith1870'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1873'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1876'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1880'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith2010'] = {'Smith-Cruise Ships-2010'},
['CITEREFSolomentsev2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSolomon2000'] = {'Solomon-American Diesel', 'Solomon-UP'},
['CITEREFSolomon2003'] = {'Solomon-Masterpieces'},
['CITEREFSolomon2004'] = {'Solomon-Amtrak'},
['CITEREFSolomon2005'] = {'Solomon-SP-Passenger'},
['CITEREFSolomon2006'] = {'Solomon-EMD Locomotives'},
['CITEREFSolomon2011'] = {'Solomon-Modern Diesel'},
['CITEREFSolomon2014'] = {'Solomon-GE and EMD'},
['CITEREFSolomonSchafer2007'] = {'Solomon-New York Central'},
['CITEREFSolopova2009'] = template_names['ME-ref'],
['CITEREFSoucek1982'] = template_names['Iranica'],
['CITEREFSoucek1983'] = template_names['Iranica'],
['CITEREFSoustal1991'] = {'Tabula Imperii Byzantini'},
['CITEREFSoustalKoder1981'] = {'Tabula Imperii Byzantini'},
['CITEREFSpielhoff1991'] = {'Spielhoff-EL'},
['CITEREFSpitta1894'] = {'Bach\'s compositions (sources)'},
['CITEREFSpitta1899'] = {'Bach\'s compositions (sources)'},
['CITEREFSpringirth2016'] = {'Springirth-Philadelphia'},
['CITEREFSpuhler1986'] = template_names['Cam_Hist_Iran'],
['CITEREFSpuler1983'] = template_names['Iranica'],
['CITEREFSpuler1987'] = template_names['Iranica'],
['CITEREFStagner1993'] = {'Stagner-Transition'},
['CITEREFStansfield1999'] = {'Stansfield-AyrRenfrew'},
['CITEREFStatistical_Yearbook_of_the_Republic_of_Croatia_2015'] = {'Croatia Yearbook 2015'},
['CITEREFStaufer1993'] = {'Staufer-Pennsy_III'},
['CITEREFStauferPennypacker1962'] = {'Staufer-Pennsy'},
['CITEREFStauferPennypacker1968'] = {'Staufer-Pennsy Power II'},
['CITEREFStaunton1988'] = {'Australian Dictionary of Biography'},
['CITEREFSternFishmanTilove2006'] = {'Cite New York 2000', 'Cite NY2000', 'Cite ny2000', 'Cite NY 2000', 'Cite ny 2000'},
['CITEREFSternGilmartinMassengale1983'] = {'Cite New York 1900', 'Cite NY1900'},
['CITEREFSternGilmartinMellins1987'] = {'Cite New York 1930', 'Cite NY 1930', 'Cite NY1930', 'Cite ny1930', 'Cite ny 1930'},
['CITEREFSternMellinsFishman1995'] = {'Cite New York 1960', 'Cite NY1960', 'Cite NY 1960', 'Cite ny1960', 'Cite ny 1960'},
['CITEREFSternMellinsFishman1999'] = {'Cite New York 1880', 'Cite NY1880', 'Cite NY 1880', 'Cite ny1880', 'Cite ny 1880'},
['CITEREFStewart1974'] = {'When Steam Was King'},
['CITEREFStrachey1981'] = template_names['ME-ref'],
['CITEREFStrickland1983'] = {'Strickland Locomotive Directory'},
['CITEREFStähelin1909'] = {'Schaff-Herzog'},
['CITEREFSuetin2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSundermann1988'] = template_names['Iranica'],
['CITEREFSusanne_Schurr1992'] = {'BBKL'},
['CITEREFSusanne_Siebert1992'] = {'BBKL'},
['CITEREFSvolopoulos1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSwartz1992'] = {'Swartz An Introduction to Functional Analysis'},
----------< T >----------
['CITEREFLondon_Gazette'] = {'London Gazette'},
['CITEREFTaber1977'] = {'Taber-DLW-19th'},
['CITEREFTaberTaber1980'] = {'Taber-DLW-20th-1'},
['CITEREFTaberTaber1981'] = {'Taber-DLW-20th-2'},
['CITEREFTafazzoli1999'] = template_names['Iranica'],
['CITEREFTafazzoli1999'] = {'Encyclopaedia Islamica'},
['CITEREFTafazzoli2000'] = template_names['Iranica'],
['CITEREFTalbot1991'] = template_names['ODB'],
['CITEREFTalbotKazhdan1991'] = template_names['ODB'],
['CITEREFTanındı2008'] = template_names['Iranica'],
['CITEREFTao2009'] = {'Cite Cambridge History of China'},
['CITEREFTer-Ghewondyan1976'] = {'The Arab Emirates in Bagratid Armenia'},
['CITEREFThe_London_Gazette1950'] = {'London Gazette'},
['CITEREFThe_London_Gazette_26_September_1919'] = {'London Gazette'},
['CITEREFThielemann2012'] = {'Bach\'s compositions (sources)'},
['CITEREFThomas1970'] = {'HistoryofParliament'},
['CITEREFThomas1971'] = {'Thomas-History-VI'},
['CITEREFThrush2010'] = {'HistoryofParliament'},
['CITEREFTikhomirov2001'] = {'Springer'},
['CITEREFTittel1966'] = {'Bach\'s compositions (sources)'},
['CITEREFTodt1996'] = {'BBKL'},
['CITEREFTodtVest2014'] = {'Tabula Imperii Byzantini'},
['CITEREFTolkien1937'] = template_names['ME-ref'],
['CITEREFTolkien1954'] = template_names['ME-ref'],
['CITEREFTolkien1955'] = template_names['ME-ref'],
['CITEREFTolkien1964'] = template_names['ME-ref'],
['CITEREFTolkien1966'] = template_names['ME-ref'],
['CITEREFTolkien1977'] = template_names['ME-ref'],
['CITEREFTolkien1980'] = template_names['ME-ref'],
['CITEREFTolkien1982'] = template_names['ME-ref'],
['CITEREFTolkien1983'] = template_names['ME-ref'],
['CITEREFTolkien1984'] = template_names['ME-ref'],
['CITEREFTolkien1985'] = template_names['ME-ref'],
['CITEREFTolkien1986'] = template_names['ME-ref'],
['CITEREFTolkien1987'] = template_names['ME-ref'],
['CITEREFTolkien1988'] = template_names['ME-ref'],
['CITEREFTolkien1989'] = template_names['ME-ref'],
['CITEREFTolkien1990'] = template_names['ME-ref'],
['CITEREFTolkien1992'] = template_names['ME-ref'],
['CITEREFTolkien1993'] = template_names['ME-ref'],
['CITEREFTolkien1994'] = template_names['ME-ref'],
['CITEREFTolkien1996'] = template_names['ME-ref'],
['CITEREFTolkien1998'] = template_names['ME-ref'],
['CITEREFTolkien1999'] = template_names['ME-ref'],
['CITEREFTolkien2007'] = template_names['ME-ref'],
['CITEREFTolkienSwann1978'] = template_names['ME-ref'],
['CITEREFTolkienTolkien1992'] = template_names['ME-ref'],
['CITEREFTonks1988'] = {'Tonks ironstone'},
['CITEREFTonks1989'] = {'Tonks ironstone'},
['CITEREFTonks1992'] = {'Tonks ironstone'},
['CITEREFTorri2013'] = {'Bach\'s compositions (sources)'},
['CITEREFTougher2018'] = template_names['ODLA'],
['CITEREFToumanoff1986'] = template_names['Iranica'],
['CITEREFToumanoff2010'] = template_names['Iranica'],
['CITEREFToumanoffChaumont1987'] = template_names['Iranica'],
['CITEREFTourret1995'] = {'Tourret-Allied Military Locomotives'},
['CITEREFTrapp1991'] = template_names['ODB'],
['CITEREFTrappBeyerSturm-Schnabl1983'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTrappWaltherBeyer1976'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTrappWaltherBeyerSturm-Schnabl1978'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTreadgold1988'] = {'The Byzantine Revival, 780–842'},
['CITEREFTreadgold1997'] = {'A History of the Byzantine State and Society'},
['CITEREFTrèves2006'] = {'Trèves François Topological vector spaces, distributions and kernels'},
['CITEREFTucker2009'] = {'Encyclopaedia Islamica'},
['CITEREFTurim1998'] = {'Turim-oshima'},
['CITEREFTuring1950'] = {'Turing 1950'},
----------< U >----------
['CITEREFUS-NHub_Music_Deposit_31_(Klavierbüchlein_für_W._F._Bach)_at_Bach_Digital'] = {'Bach\'s compositions (sources)'},
['CITEREFUtas2002'] = template_names['Iranica'],
['CITEREFUwe_Eckardt2001'] = {'BBKL'},
['CITEREFunknown_author1881'] = {'Cite ADB'},
['CITEREFunknown_author1882'] = {'Cite ADB'},
----------< V >----------
['CITEREFVakalopoulos1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFVan_Cleve1969'] = {'Setton-A History of the Crusades'},
['CITEREFVan_Hoorickx1971'] = {'Schubert\'s compositions (references)'},
['CITEREFVan_Hoorickx_1974–1976'] = {'Schubert\'s compositions (references)'},
['CITEREFVan_Lint2018'] = template_names['ODLA'],
['CITEREFVan_Riemsdijk,_Compound_Locomotives'] = {'Book-Van Riemsdijk-Compound Locomotives'},
['CITEREFVan_Tricht2011'] = {'The Latin Renovatio of Byzantium'},
['CITEREFVandenberghen1989'] = {'Vandenberghen-SNCB12.2'},
['CITEREFVarzos1984'] = {'Η Γενεαλογία των Κομνηνών', 'Varzos-Genealogy of the Komnenoi'},
['CITEREFVasiliev1935'] = {'Byzance et les Arabes'},
['CITEREFVasiliev1968'] = {'Byzance et les Arabes'},
['CITEREFVendler1997'] = {'Shakespeare sonnets bibliography'},
['CITEREFVenetis2012'] = template_names['Iranica'],
['CITEREFVenn1954'] = {'VennAC'},
['CITEREFVesel1999'] = template_names['Iranica'],
['CITEREFVetter1713'] = {'Bach\'s compositions (sources)'},
['CITEREFVevainaCanepa2018'] = template_names['ODLA'],
['CITEREFVeysey1958'] = {'Veysey-PE-1958'},
['CITEREFVischer1912'] = {'Schaff-Herzog'},
['CITEREFVogelsang2003'] = template_names['Iranica'],
['CITEREFVolkmer1991'] = {'Volkmer-Pennsy-Electric'},
['CITEREFvan_Leyden1956'] = {'Bach\'s compositions (sources)'},
['CITEREFvan_Lint2018'] = template_names['ODLA'],
['CITEREFvon_Prantl1879'] = {'Cite ADB'},
----------< W >----------
['CITEREFWagnerBäzoldZschechLüderitz1990'] = {'Wagner-EFA2.3.2'},
['CITEREFWalter_Asmus1966'] = template_names['NDB'],
['CITEREFWayner1972'] = {'Wayner - Car names, numbers, consists'},
['CITEREFWayner1973'] = {'Wayner-Spotter-2nd'},
['CITEREFWebb2018'] = template_names['ODLA'],
['CITEREFWeber2016'] = template_names['Iranica'],
['CITEREFWechsler1979'] = {'Cite Cambridge History of China'},
['CITEREFWegman2008'] = {'Wegman-Illustrated'},
['CITEREFWeibel1994'] = {'Weibel IHA'},
['CITEREFWeinrebHibbertKeayKeay2008'] = {'London encyclopedia'},
['CITEREFWeisbrod1991'] = {'Weisbrod-EFA1.5'},
['CITEREFWeisbrodMüllerPetznik1978'] = {'Weisbrod-EFA1.2'},
['CITEREFWeiskopf1987'] = template_names['Iranica'],
['CITEREFWeiskopf1989'] = template_names['Iranica'],
['CITEREFWeiskopf1990'] = template_names['Iranica'],
['CITEREFWeiskopf1993'] = template_names['Iranica'],
['CITEREFWellhausen1927'] = {'The Arab Kingdom and its Fall'},
['CITEREFWells1982'] = {'Accents of English'},
['CITEREFWells2008'] = {'Cite LPD'},
['CITEREFWelsh2006'] = {'Welsh-Broadway'},
['CITEREFWelsh2008'] = {'Welsh-UP'},
['CITEREFWerner_Raupp2001'] = {'BBKL'},
['CITEREFWestcott1911'] = {'DCBL'},
['CITEREFWestermayer,_Georg1882'] = {'Cite ADB'},
['CITEREFWham1997'] = {'Wham-Ayrshire'},
['CITEREFWharton1991'] = template_names['ODB'],
['CITEREFWhishaw1842'] = {'Whishaw-RailofGB-2ndEd'},
['CITEREFWhishaw1969'] = {'Whishaw-RailofGB'},
['CITEREFWhite1985'] = {'White-Passenger-1985'},
['CITEREFWhite1993'] = {'White - American railroad freight car'},
['CITEREFWhiteWillenskyLeadon2010'] = {'Cite aia5'},
['CITEREFWhitehurst1973'] = {'Whitehurst GW Engines from 1940'},
['CITEREFWhittow1996'] = {'The Making of Byzantium, 600–1025'},
['CITEREFWickman1982'] = {'Country study'},
['CITEREFWiesehöfer1986'] = template_names['Iranica'],
['CITEREFWiesehöfer2018'] = template_names['ODLA'],
['CITEREFWilansky2013'] = {'Wilansky Modern Methods in Topological Vector Spaces'},
['CITEREFWillard2004'] = {'Willard General Topology'},
['CITEREFWilliams1998'] = {'Williams-Philadelphia'},
['CITEREFWilliams2003'] = {'Bach\'s compositions (sources)'},
['CITEREFWilliams2014'] = template_names['Iranica'],
['CITEREFWillis1750'] = {'Cite Notitia Parliamentaria'},
['CITEREFWilson2017'] = {'Wilson-Guide'},
['CITEREFWilsonFiske1891'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWilsonFiske1892'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWilsonFiske1900'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWiltshire2000'] = {'Lloyd-Margaret River'},
['CITEREFWinfieldLyon2004'] = {'Winfield'},
['CITEREFWinkler1883'] = template_names['ADB'],
['CITEREFWitakowski2018'] = template_names['ODLA'],
['CITEREFWolff1969'] = {'Setton-A History of the Crusades'},
['CITEREFWollny2015'] = {'Bach\'s compositions (sources)'},
['CITEREFWood1907'] = {'Cite Nuttall', 'Nuttall'},
['CITEREFWoodsKilpatrick2005'] = {'MSW3 Hystricognathi'},
['CITEREFWorden2008'] = {'Country study'},
['CITEREFWortley2010'] = {'John Skylitzes: A Synopsis of Byzantine History, 811–1057'},
['CITEREFWozencraft2005'] = {'MSW3 Carnivora'},
['CITEREFWright1979'] = {'Cite Cambridge History of China'},
['CITEREFWright2000'] = {'Bach\'s compositions (sources)'},
['CITEREFWägliJacobi2010'] = {'Schienennetz Schweiz'},
['CITEREFWürsch2013'] = template_names['Iranica'],
----------< X >----------
----------< Y >----------
['CITEREFYakubova2016'] = template_names['Iranica'],
['CITEREFYarshater1983'] = template_names['Iranica'],
['CITEREFYarshater1986'] = template_names['Cam_Hist_Iran'],
['CITEREFYarshater1988'] = template_names['Iranica'],
['CITEREFYarshater2018'] = template_names['Iranica'],
['CITEREFYarshater2021'] = template_names['Iranica'],
['CITEREFYazici2002'] = template_names['Iranica'],
['CITEREFYenne2005'] = {'Yenne-Chiefs'},
['CITEREFYildiz2004'] = template_names['Iranica'],
['CITEREFYonge1990'] = {'Quail-4'},
['CITEREFYonge1994'] = {'Quail-5'},
['CITEREFYonge2002'] = {'Quail-5'},
['CITEREFYonge2008'] = {'Quail-5'},
['CITEREFYonge2016'] = {'Quail-2-2016'},
['CITEREFYongePadgettSzwenk2013'] = {'Quail-4-Paper-3rdEd'},
['CITEREFYu1986'] = {'Cite Cambridge History of China'},
['CITEREFYusofi1990'] = template_names['Iranica'],
----------< Z >----------
['CITEREFZahn1889–1893'] = {'Bach\'s compositions (sources)'},
['CITEREFZakeri2021'] = template_names['Iranica'],
['CITEREFZarrinkoubNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFZarrinkub1975'] = template_names['Cam_Hist_Iran'],
['CITEREFZeiniWiesehöfer2018'] = template_names['ODLA'],
['CITEREFZekulich2000'] = {'Zekulich-WineWA'},
['CITEREFZimmermann2004'] = {'Zimmermann-Burlington'},
['CITEREFZimmermann2007'] = {'Zimmermann-GrandLuxe'},
['CITEREFZuccaric._1747'] = {'Bach\'s compositions (sources)'},
----------< UNSORTED >----------
['CITEREFGazette27462'] = {'London Gazette'},
['CITEREFCawley2012'] = {'Medieval Lands by Charles Cawley'},
['CITEREFCrone2003'] = {'Slaves on Horses'},
['CITEREFΙστορία_του_Ελληνικού_Έθνους'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSpyropoulos1928'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFPikros1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFÖz1993'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzgüdenli2008'] = template_names['Iranica'],
['CITEREFÖzaydın2002'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzaydın2006'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzkuyumcu2006'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖztürk2013'] = {'TDV Encyclopedia of Islam'},
['CITEREFΜεγάλη_Στρατιωτικὴ_καὶ_Ναυτικὴ_Ἐγκυκλοπαιδεία'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFŞeşen1988'] = {'TDV Encyclopedia of Islam'},
['CITEREFFranke1994'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFTao2009'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFWechsler1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFWright1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFHistoric_England_Benty_Grange'] = {'NHLE'},
['CITEREFWalter1967'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFAliprantisBorder2006'] = {'Aliprantis Border Infinite Dimensional Analysis A Hitchhiker\'s Guide Third Edition'},
['CITEREFAmanat1985'] = template_names['Iranica'],
['CITEREFBaldwin1991'] = template_names['ODB'],
['CITEREFCallwell1999'] = {'Muni Chronology'},
['CITEREFHalmos1982'] = {'Halmos A Hilbert Space Problem Book 1982'},
['CITEREFHistoric_England'] = {'NHLE', 'National Heritage List for England'},
['CITEREFHitchins2001'] = template_names['Iranica'],
['CITEREFJohnson1906'] = {'BDA1906', 'Cite BDA1906'},
['CITEREFMachinery's_Handbook1996'] = {'MachinerysHandbook25e'},
['CITEREFMatthee2012'] = template_names['Iranica'],
['CITEREFNicholson2018'] = template_names['ODLA'],
['CITEREFNicol1968'] = {'The Byzantine Family of Kantakouzenos'},
['CITEREFWilsonFiske1889'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFShippey2005'] = template_names['ME-ref'],
['CITEREFColvin1947'] = {'Colvin1947'},
['CITEREFSorensen1956'] = {'Sorensen1956'},
['CITEREFBosworth1999'] = template_names['Iranica'],
['CITEREFGregoryKazhdan1991'] = template_names['ODB'],
['CITEREFKelley1975'] = {'Kelley General Topology'},
['CITEREFIacocca1984'] = {'Iacocca1984'},
['CITEREFNestruev2020'] = {'Nestruev Smooth Manifolds and Observables 2020'},
['CITEREFOrmsby1982'] = {'Cite DCB'},
['CITEREFVentura1963'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFZălinescu2002'] = {'Zălinescu Convex Analysis in General Vector Spaces 2002'},
['CITEREFGreenwoodEarnshaw1997'] = {'Greenwood&Earnshaw2nd'},
['CITEREFMullié1852'] = {'Cite Mullié', 'Mullié'},
['CITEREFEl-Hibri2021'] = {'The Abbasid Caliphate: A History'},
['CITEREFHolland1989'] = {'Holland1989'},
['CITEREFHowes1995'] = {'Howes Modern Analysis and Topology 1995'},
['CITEREFRockafellarWets2009'] = {'Rockafellar Wets Variational Analysis 2009 Springer'},
['CITEREFSearle1980'] = {'Searle 1980'},
['CITEREFVan_Riemsdijk1994'] = {'Book-Van Riemsdijk-Compound Locomotives'},
['CITEREFGaines2008'] = {'Cite Gaines 2008'},
['CITEREFSmid2008'] = {'Smid2008'},
['CITEREFSmid2010'] = {'Smid2010'},
['CITEREFNesbittOikonomides1991'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittOikonomides1994'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittOikonomides1996'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFMcGeerNesbittOikonomides2001'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFMcGeerNesbittOikonomides2005'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittMorrisson2009'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITETEFCotsonis2020'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFTolkienSwann2002'] = {'ME-ref'},
['CITEREFApostol1976'] = {'Apostol IANT'},
['CITEREFBournoutian2018'] = {'Cite Armenia and Imperial Decline'},
['CITEREFCsászár1978'] = {'Császár General Topology'},
['CITEREFHovannisian1971'] = {'Cite The Republic of Armenia Volume 1'},
['CITEREFКавказский_календарь_на_1913_год'] = {'Cite Kavkazskiy Kalendar 1913'},
['CITEREFКавказский_календарь_на_1917_год'] = {'Cite Kavkazskiy Kalendar 1917'},
['CITEREFLang2002'] = {'Lang Algebra'},
['CITEREFLurie'] = {'Lurie-HA'},
['CITEREFTsutsiev2014'] = {'Cite Atlas of the Ethno-Political History of the Caucasus'},
['CITEREFVenables1911'] = {'DCBL'},
['CITEREFWilansky2008'] = {'Wilansky Topology for Analysis 2008'},
['CITEREFKazemzadeh1951'] = {'The Struggle for Transcaucasia'},
['CITEREFNicol1984'] = {'The Despotate of Epiros, 1267–1479'},
['CITEREFKorkotyan1932'] = {'Cite The Population of Soviet Armenia'},
['CITEREFHalm1991'] = {'Das Reich des Mahdi'},
['CITEREFHalm2014'] = {'Kalifen und Assassinen'},
['CITEREFHovannisian1982'] = {'Cite The Republic of Armenia Volume 2'},
['CITEREFHovannisian1996'] = {'Cite The Republic of Armenia Volume 3', 'Cite The Republic of Armenia Volume 4'},
['CITEREFHovannisian1967'] = {'Cite Armenia on the Road to Independence'},
['CITEREFKazemzadeh1951'] = {'Cite The Struggle for Transcaucasia'},
['CITEREFКавказский_календарь_на_1910_год'] = {'Cite Kavkazskiy Kalendar 1910'},
['CITEREFКавказский_календарь_на_1915_год'] = {'Cite Kavkazskiy Kalendar 1915'},
['CITEREFNicol1994'] = {'The Byzantine Lady: Ten Portraits, 1250–1500'},
['CITEREFTolkien1979'] = {'ME-ref'},
['CITEREFTopping1975'] = {'Setton-A History of the Crusades', 'Wisconsin History of the Crusades'},
['CITEREFHalm2003'] = {'Die Kalifen von Kairo'},
['CITEREFLilieLudwigPratschZielke1999'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},
['CITEREFDer_Matossian2020'] = {'Cite The First Republic of Armenia'},
['CITEREFEaston1897'] = {'Eastons', 'EBD'},
['CITEREFLilieLudwigPratschZielke2000'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2001'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2002'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2009'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke1998–2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFWells2000'] = {'Cite LPD'},
['CITEREFWells1990'] = {'Cite LPD'},
['CITEREFHunter2012'] = {'Cite HGOC', 'Cite Hunter'},
['CITEREFFordCrowther1922'] = {'Ford1922'},
['CITEREFLegifrance'] = {'Cite Legifrance'},
['CITEREFCoverdale_&_Colpitts1946'] = {'Coverdale & Colpitts 1', 'Coverdale & Colpitts 2', 'Coverdale & Colpitts 3'},
['CITEREFDonaghy1972'] = {'Donaghy-LMR'},
['CITEREFKubrusly2011'] = {'Kubrusly The Elements of Operator Theory 2nd Edition 2011'},
['CITEREFNemiroffBonnell1998'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2004'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2005'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2006'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2007'] = {'Cite APOD'},
}
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
DNB_special_patterns = DNB_special_patterns,
DNB_template_names = template_names['DNB'],
special_patterns = special_patterns,
whitelist = whitelist,
wrapper_templates = wrapper_templates,
}
23630084de31b60e3f29b5c4182432ec14252600
Module:Math/doc
828
1662
3065
2023-08-27T20:07:46Z
wikipedia>MarMi wiki
0
clarify
wikitext
text/x-wiki
{{for|''formatting'' mathematical expressions, LATEX-style|Template:Math}}
{{High-risk|1,607,000+}}
{{module rating|protected}}
This module provides a number of mathematical functions. These functions can be used from #invoke or from other Lua modules.
== Use from other Lua modules ==
To use the module from normal wiki pages, no special preparation is needed. If you are using the module from another Lua module, first you need to load it, like this:
<syntaxhighlight lang="lua">
local mm = require('Module:Math')
</syntaxhighlight>
(The <code>mm</code> variable stands for '''M'''odule '''M'''ath; you can choose something more descriptive if you prefer.)
Most functions in the module have a version for Lua and a version for #invoke. It is possible to use the #invoke functions from other Lua modules, but using the Lua functions has the advantage that you do not need to access a Lua [[mw:Extension:Scribunto/Lua reference manual#Frame object|frame object]]. Lua functions are preceded by <code>_</code>, whereas #invoke functions are not.
== random ==
{{see also|Module:Random}}
{{#invoke:math|random}}
{{#invoke:math|random|''max_value''}}
{{#invoke:math|random|''min_value''|''max_value''}}
<syntaxhighlight lang="lua">
mm._random()
mm._random(max_value)
mm._random(min_value, max_value)
</syntaxhighlight>
Generates a random number.
* If no arguments are specified, the number produced is greater than or equal to 0 and less than 1.
* If one argument is provided, the number produced is an integer between 1 and that argument. The argument must be a positive integer.
* If two arguments are provided, the number produced is an integer between the first and second arguments. Both arguments must be integers, but can be negative.
This function will not work properly for numbers less than −2<sup>32</sup> and greater than 2<sup>32</sup> − 1. If you need to use numbers outside of this range, it is recommended that you use [[Module:Random]].
== order ==
{{#invoke:math|order|''n''}}
<syntaxhighlight lang="lua">
mm._order(n)
</syntaxhighlight>
Determines the [[order of magnitude]] of a number.
== precision ==
{{#invoke:math|precision|''n''}}
{{#invoke:math|precision|x=''n''}}
<syntaxhighlight lang="lua">
mm._precision(number_string)
</syntaxhighlight>
Detemines the precision of a number. For example, for "4" it will return "0", for "4.567" it will return "3", and for "100" it will return "-2".
The function attempts to parse the string representation of the number, and detects whether the number uses [[Scientific notation#E notation|E notation]]. For this reason, when called from Lua, very large numbers or very precise numbers should be directly input as strings to get accurate results. If they are input as numbers, the Lua interpreter will change them to E notation and this function will return the precision of the E notation rather than that of the original number. This is not a problem when the number is called from #invoke, as all input from #invoke is in string format.
== max ==
{{#invoke:math|max|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._max(v1, v2, v3, ...)
</syntaxhighlight>
Returns the maximum value from the values specified. Values that cannot be converted to numbers are ignored.
== median ==
{{#invoke:math|median|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._median(v1, v2, v3, ...)
</syntaxhighlight>
Returns the [[median]] value from the values specified. Values that cannot be converted to numbers are ignored.
== min ==
{{#invoke:math|min|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._min(v1, v2, v3, ...)
</syntaxhighlight>
Returns the minimum value from the values specified. Values that cannot be converted to numbers are ignored.
== sum ==
{{#invoke:math|sum|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._sum(v1, v2, v3, ...)
</syntaxhighlight>
Returns the sum of the values specified. Values that cannot be converted to numbers are ignored.
== average ==
{{#invoke:math|average|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._average(v1, v2, v3, ...)
</syntaxhighlight>
Returns the average of the values specified. (More precisely, the value returned is the [[Mean#Arithmetic mean (AM)|arithmetic mean]].) Values that cannot be converted to numbers are ignored.
== round ==
{{#invoke:math|round|''value''|''precision''}}
{{#invoke:math|round|value=''value''|precision=''precision''}}
<syntaxhighlight lang="lua">
mm._round(value, precision)
</syntaxhighlight>
[[Rounding|Rounds]] a number to the specified precision{{clarify|reason=What method exactly is used?}}.
Note: As of October 2019, there is a bug in the display of some rounded numbers. When trying to round a number that rounds to "n.0", like "1.02", to the nearest tenth of a digit (i.e. {{para|r|1}}), this function should display "1.0", but it unexpectedly displays "1". Use the {{para|precision_format}} parameter instead.
== log10 ==
{{#invoke:math | log10 | ''x''}}
<syntaxhighlight lang="lua">
mm._log10(x)
</syntaxhighlight>
Returns <code>log<sub>10</sub>(''x'')</code>, the [[logarithm]] of ''x'' using base 10.
== mod ==
{{#invoke:math|mod|''x''|''y''}}
<syntaxhighlight lang="lua">
mm._mod(x, y)
</syntaxhighlight>
Gets <code>''x''</code> [[Modulo operation|modulo]] <code>''y''</code>, or the remainder after <code>''x''</code> has been divided by <code>''y''</code>. This is accurate for integers up to 2<sup>53</sup>; for larger integers Lua's modulo operator may return an erroneous value. This function deals with this problem by returning <code>0</code> if the modulo given by Lua's modulo operator is less than 0 or greater than <code>''y''</code>.
== gcd ==
{{#invoke:math|gcd|''v1''|''v2''|...}}
<syntaxhighlight lang="lua">
mm._gcd(v1, v2, ...)
</syntaxhighlight>
Finds the [[greatest common divisor]] of the values specified. Values that cannot be converted to numbers are ignored.
== precision_format ==
{{#invoke:math|precision_format|''value_string''|''precision''}}
<syntaxhighlight lang="lua">
mm._precision_format(value_string, precision)
</syntaxhighlight>
Rounds a number to the specified precision and formats according to rules originally used for {{tl|Rnd}}. Output is a string.
Parameter <var>precision</var> should be an integer number of digits after the decimal point. Negative values are permitted. Non-integers give unexpected results. Positive values greater than the input precision add zero-padding, negative values greater than the input order can consume all digits.
Formatting 8,765.567 with {{tlc|#invoke:Math|precision_format|8765.567|<var>precision</var>}} gives:
{|class="wikitable"
|+
!<code><var>precision</var></code>!!Result
|-
|style="text-align:right"|2||{{#invoke:Math|precision_format|8765.567|2}}
|-
|style="text-align:right"| -2||{{#invoke:Math|precision_format|8765.567|-2}}
|-
|style="text-align:right"|6||{{#invoke:Math|precision_format|8765.567|6}}
|-
|style="text-align:right"| -6||{{#invoke:Math|precision_format|8765.567|-6}}
|-
|style="text-align:right"|2.5||{{#invoke:Math|precision_format|8765.567|2.5}}
|-
|style="text-align:right"| -2.5||{{#invoke:Math|precision_format|8765.567|-2.5}}
|}
== divide ==
{{#invoke:Math|divide|''x''|''y''|''round=''|''precision=''}}
<syntaxhighlight lang="lua">
mm._divide(x, y, round, precision)
</syntaxhighlight>
Divide x by y.
* If y if not a number, it is returned.
* Otherwise, if x is not a number, it is returned.
* If round is true ("yes" for #invoke), the result has no decimals
* Precision indicates how many digits of precision the result should have
If any of the arguments contain HTML tags, they are returned unchanged, allowing any errors in calculating the arguments to the division function to be propagated to the calling template.
== cleanNumber ==
<syntaxhighlight lang="lua">
local number, number_string = mm._cleanNumber(number_string)
</syntaxhighlight>
A helper function that can be called from other Lua modules, but not from #invoke. This takes a string or a number value as input, and if the value can be converted to a number, cleanNumber returns the number and the number string. If the value cannot be converted to a number, cleanNumber returns <code>nil, nil</code>.
==See also==
{{Math templates}}
58f1eada1ab7de23905e945547ffa5f823a88b94
Template:Infobox
10
86
215
2023-08-28T04:05:10Z
Tali64³
14
Undid revision 343934 by [[Special:Contributions/Corkscrew012|Corkscrew012]] ([[User talk:Corkscrew012|talk]]) Unconstructive editing; perhaps you posted your edit to the wrong wiki?
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
adcda4ac544f8af340cf47833dc2960631593988
Module:Pagetype/config
828
94
235
2023-08-28T13:36:34Z
wikipedia>Mr. Stradivarius
0
update from [[Module:Pagetype/config/sandbox]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Pagetype configuration data --
-- This page holds localisation and configuration data for Module:Pagetype. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
-- This table holds the default page types for each namespace. Keys to this
-- table should be integers that can be used as keys to mw.site.namespaces.
cfg.pagetypes = {
[0] = 'article', -- Main namespace
[2] = 'user page',
[4] = 'project page',
[6] = 'file',
[8] = 'interface page', -- MediaWiki namespace
[10] = 'template',
[12] = 'help page',
[14] = 'category',
[100] = 'portal',
[118] = 'draft',
[710] = 'Timed Text page',
[828] = 'module',
[2300] = 'gadget',
[2302] = 'gadget definition',
[-1] = 'special page',
[-2] = 'file', -- Media namespace
}
-- This table holds the namespaces to be looked up from cfg.pagetypes by
-- default.
cfg.defaultNamespaces = {
[0] = true, -- main
[6] = true, -- file
[10] = true, -- template
[14] = true, -- category
[828] = true, -- module
}
-- This table holds the namespaces to be looked up from cfg.pagetypes if
-- cfg.defaultnsExtended is set.
cfg.extendedNamespaces = {
[0] = true, -- main
[2] = true, -- user
[4] = true, -- project
[6] = true, -- file
[8] = true, -- mediawiki
[10] = true, -- template
[12] = true, -- help
[14] = true, -- category
[100] = true, -- portal
[118] = true, -- draft
[828] = true, -- module
}
-- This table holds custom aliases for each namespace.
cfg.customNamespaceAliases = {
[0] = {'main'},
}
-- The parameter name to set which default namespace values to be looked up from
-- cfg.pagetypes.
cfg.defaultns = 'defaultns'
-- The value of cfg.defaultns to set all namespaces, including talk.
cfg.defaultnsAll = 'all'
-- The value of cfg.defaultns to set the namespaces listed in
-- cfg.extendedNamespaces
cfg.defaultnsExtended = 'extended'
-- The value of cfg.defaultns to set no default namespaces.
cfg.defaultnsNone = 'none'
-- The parameter name to use for talk pages.
cfg.talk = 'talk'
-- The default value for talk pages.
cfg.talkDefault = 'talk page'
-- The parameter name to use for disambiguation pages page.
cfg.dab = 'dab'
-- This table holds the different possible aliases for disambiguation-class
-- pages. These should be lower-case.
cfg.dabAliases = {
['disambiguation'] = true,
['disambig'] = true,
['disamb'] = true,
['dab'] = true,
}
-- The default value for disambiguation pages.
cfg.dabDefault = 'page'
-- The parameter name to use for N/A-class page.
cfg.na = 'na'
-- This table holds the different possible aliases for N/A-class pages. These
-- should be lower-case.
cfg.naAliases = {
['na'] = true,
['n/a'] = true,
}
-- The default value for N/A-class pages.
cfg.naDefault = 'page'
-- The parameter name to use for redirects.
cfg.redirect = 'redirect'
-- The default value to use for redirects.
cfg.redirectDefault = 'redirect'
-- The parameter name for undefined namespaces.
cfg.other = 'other'
-- The value used if the module detects an undefined namespace.
cfg.otherDefault = 'page'
-- The usual suffix denoting a plural.
cfg.plural = 's'
-- This table holds plurals not formed by a simple suffix.
cfg.irregularPlurals = {
["category"] = "categories"
}
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line
5360b93ef5fd7551e38026f1b8df00bed8b34b2d
Module:Pagetype
828
93
233
2023-08-28T13:37:34Z
wikipedia>Mr. Stradivarius
0
switch back to using [[Module:Pagetype/config]], as it has now been updated
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- PAGETYPE --
-- --
-- This is a meta-module intended to replace {{pagetype}} and similar --
-- templates. It automatically detects namespaces, and allows for a --
-- great deal of customisation. It can easily be ported to other --
-- wikis by changing the values in the [[Module:Pagetype/config]]. --
-- --
--------------------------------------------------------------------------------
-- Load config.
local cfg = mw.loadData('Module:Pagetype/config')
-- Load required modules.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local mDisambiguation = require('Module:Disambiguation')
local p = {}
-- Look up a namespace argument in the args table.
local function lookUpNamespaceArg(args, key)
local arg = args[key]
-- Convert "yes", "1" etc. to true, "no", "0" etc. to false, and leave
-- other values the same.
return yesno(arg, arg)
end
-- Append multiple values to an array
local function appendMultiple(target, source)
for _, value in ipairs(source) do
table.insert(target, value)
end
end
-- Get argument keys for a title's namespace
local function getNamespaceArgKeys(title, cfg)
local nsInfo = mw.site.namespaces[title.namespace]
local customAliases = cfg.customNamespaceAliases[title.namespace] or {}
local keys = {}
if nsInfo.name ~= '' then
table.insert(keys, nsInfo.name)
end
if nsInfo.canonicalName ~= nsInfo.name and nsInfo.canonicalName ~= '' then
table.insert(keys, nsInfo.canonicalName)
end
appendMultiple(keys, nsInfo.aliases)
appendMultiple(keys, customAliases)
return keys
end
-- Get the argument for a title's namespace, if it was specified in the args
-- table.
local function getNamespaceArg(title, args, cfg)
if title.isTalkPage then
return lookUpNamespaceArg(args, cfg.talk)
end
for _, key in ipairs(getNamespaceArgKeys(title, cfg)) do
local arg = lookUpNamespaceArg(args, mw.ustring.lower(key))
if arg ~= nil then
return arg
end
end
return nil
end
-- Look up a page type specific to the title's namespace
local function getExplicitPageType(title, cfg)
if title.isTalkPage then
return cfg.talkDefault
else
return cfg.pagetypes[title.namespace]
end
end
-- Get a default page type that is not specific to the title's namespace
local function getDefaultPageType(args, cfg)
local other = lookUpNamespaceArg(args, cfg.other)
if type(other) == 'string' then
return other
else
return cfg.otherDefault
end
end
local function detectRedirects(title, args)
local redirect = lookUpNamespaceArg(args, cfg.redirect)
if redirect == false then
-- Don't detect redirects if they have been specifically disallowed.
return nil
end
-- Allow custom values for redirects.
if not title.isRedirect then
return nil
elseif type(redirect) == 'string' then
return redirect
else
return cfg.redirectDefault
end
end
local function detectDisambiguationPages(title, args, cfg)
if title.namespace ~= 0 then
-- Only detect disambiguation pages in mainspace
return nil
end
local dab = lookUpNamespaceArg(args, cfg.dab)
if dab == false then
-- Don't detect disambiguation pages if explicitly disallowed
return nil
end
if not mDisambiguation.isDisambiguation(title:getContent()) then
return nil
elseif type(dab) == 'string' then
return dab
else
return cfg.dabDefault
end
end
-- Gets the pagetype from a class specified from the first positional
-- parameter.
local function getPageTypeFromClass(args, class, key, aliasTable, default)
local arg = lookUpNamespaceArg(args, key)
if arg == false then
-- Don't check for this class if it is specifically disallowed.
return nil
end
if aliasTable[class] then
if type(arg) == 'string' then
return arg
else
return default
end
end
return nil
end
-- Get page types for mainspaces pages with an explicit class specified
local function getMainNamespaceClassPageType(title, args, cfg)
if title.namespace ~= 0 then
return nil
end
local class = args[1]
if type(class) == 'string' then
-- Put in lower case so e.g. "na" and "NA" will both match.
class = mw.ustring.lower(class)
end
return getPageTypeFromClass(
args,
class,
cfg.na,
cfg.naAliases,
cfg.naDefault
)
end
-- Get page type specified by an explicit namespace argument.
local function getNamespaceArgPageType(title, args, cfg)
local namespaceArg = getNamespaceArg(title, args, cfg)
if namespaceArg == true then
-- Namespace has been explicitly enabled, so return the default for
-- this namespace
return getExplicitPageType(title, cfg)
elseif namespaceArg == false then
-- Namespace has been explicitly disabled
return getDefaultPageType(args, cfg)
elseif namespaceArg then
-- This namespaces uses custom text
return namespaceArg
else
return nil
end
end
-- Whether the title is in the set of default active namespaces which are
-- looked up in cfg.pagetypes.
local function isInDefaultActiveNamespace(title, args, cfg)
local defaultNamespacesKey = args[cfg.defaultns]
if defaultNamespacesKey == cfg.defaultnsAll then
return true
end
local defaultNamespaces
if defaultNamespacesKey == cfg.defaultnsExtended then
defaultNamespaces = cfg.extendedNamespaces
elseif defaultNamespacesKey == cfg.defaultnsNone then
defaultNamespaces = {}
else
defaultNamespaces = cfg.defaultNamespaces
end
return defaultNamespaces[title.namespace] or false
end
-- Get page type not specified or detected by other means
local function getOtherPageType(title, args, cfg)
if isInDefaultActiveNamespace(title, args, cfg) then
return getExplicitPageType(title, cfg)
else
return getDefaultPageType(args, cfg)
end
end
local function getPageType(title, args, cfg)
return (
detectRedirects(title, args, cfg)
or detectDisambiguationPages(title, args, cfg)
or getMainNamespaceClassPageType(title, args, cfg)
or getNamespaceArgPageType(title, args, cfg)
or getOtherPageType(title, args, cfg)
)
end
local function shouldUseSubjectTitle(args, cfg)
return not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll
end
-- Get the Scribunto title object to fetch the page type of
local function getTitle(args, cfg)
local title
if args.page then
title = mw.title.new(args.page)
if not title then
return nil
end
else
title = mw.title.getCurrentTitle()
end
if shouldUseSubjectTitle(args, cfg) then
return title.subjectPageTitle
else
return title
end
end
local function pluralize(pageType, cfg)
if cfg.irregularPlurals[pageType] then
return cfg.irregularPlurals[pageType]
else
return pageType .. cfg.plural -- often 's'
end
end
local function capitalize(pageType)
local first = mw.ustring.sub(pageType, 1, 1)
local rest = mw.ustring.sub(pageType, 2)
return mw.ustring.upper(first) .. rest
end
function p._main(args)
local title = getTitle(args, cfg)
local pageType = getPageType(title, args, cfg)
if yesno(args.plural, false) then
pageType = pluralize(pageType, cfg)
end
if yesno(args.caps, false) then
pageType = capitalize(pageType)
end
return pageType
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
return p
ab72b17cbd3e423817484aedfd33b480e9ba3611
Template:Navigation templates
10
1296
2631
2023-08-29T10:05:25Z
w>Andrybak
0
use [[Module:Navbox/styles.css]]
wikitext
text/x-wiki
<templatestyles src="Module:Navbox/styles.css" />
{| class="wikitable" style="margin-left: auto; margin-right: auto; text-align: center;"
|+ Navigation templates comparison {{Navbar|Navigation templates|plain=1|brackets=y}}
|-
! Template
! Collapsible !! Header color
! Image !! Groups !! Style (body) <br /> parameter/s
|-
| style="text-align: left;" | {{tl|Navbox}}
| collapsible || class="navbox-title" | navbox
| Left/right of body || Yes || Yes
|-
| style="text-align: left;" | {{tl|Navbox with collapsible groups}}
| collapsible || class="navbox-title" | navbox
| Left/right of body and/or in each list || Yes || Yes
|-
| style="text-align: left;" | {{tl|Navbox with columns}}
| collapsible || class="navbox-title" | navbox
| Left/right of columns || No || Yes
|}
{| class="wikitable" style="margin-left: auto; margin-right: auto; text-align: center;"
|+ Collapsible attributes
|-
! Type !! CSS classes !! JavaScript !! Collapses when !! Custom <br /> initial state !! Nesting
|-
| style="text-align:left;" | [[Help:Collapsing|Collapsible tables]]
| mw-collapsible
| Defined in [[MediaWiki:Common.js|Common.js]]
| 2 or more autocollapse on page || Yes || Yes
|}<noinclude>
[[Category:Navbox meta-templates|Δ]]
[[Category:Documentation shared content templates]]
</noinclude>
3532432c7f57704faf211932139c393f1bc2b912
Template:Infobox officeholder/doc
10
203
460
2023-08-30T04:04:42Z
wikipedia>Jonesey95
0
clarify how jr/sr works now
wikitext
text/x-wiki
{{Documentation subpage}}
{{Person infobox header}}
{{High-use|demo={{ROOTPAGENAME}}}}
{{Notice|Please note that in June 2017, the {{para|religion}} parameter was removed from Infobox officeholder as a result of [[Template talk:Infobox officeholder/Archive 21#Religion in officeholder infoboxes|this discussion]].}}
{{tl|Infobox officeholder}} is incorporated into the following templates (i.e. all the templates listed <span class="plainlinks">[{{fullurl:Special:WhatLinksHere/Template:Infobox officeholder|namespace=10&limit=1000&hidetrans=1&hidelinks=1}} here]</span>). Please use the most appropriate name when placing this template on a page.
{{collapse top |title= List of templates}}
{{refbegin|colwidth=20em}}
* {{Tld|Infobox AM}}
* {{Tld|Infobox Canadian MP}}
* {{Tld|Infobox Canadian senator}}
* {{Tld|Infobox candidate}}
* {{Tld|Infobox civil servant}}
* {{Tld|Infobox chancellor}}
* {{Tld|Infobox congressional candidate}}
* {{Tld|Infobox congressman}}
* {{Tld|Infobox defense minister}}
* {{Tld|Infobox deputy first minister}}
* {{Tld|Infobox deputy prime minister}}
* {{Tld|Infobox doge}}
* {{Tld|Infobox Eritrea cabinet official}}
* {{Tld|Infobox first lady}}
* {{Tld|Infobox first minister}}
* {{Tld|Infobox governor}}
* {{Tld|Infobox governor-elect}}
* {{Tld|Infobox governor general}}
* {{Tld|Infobox governor-general}}
* {{Tld|Infobox Indian politician}}
* {{Tld|Infobox judge}}
* {{Tld|Infobox lt governor}}
* {{Tld|Infobox mayor}}
* {{Tld|Infobox MEP}}
* {{Tld|Infobox minister}}
* {{Tld|Infobox MLA}}
* {{Tld|Infobox MP}}
* {{Tld|Infobox MSP}}
* {{Tld|Infobox PM}}
* {{Tld|Infobox politician}}
* {{Tld|Infobox politician (general)}}
* {{Tld|Infobox premier}}
* {{Tld|Infobox president}}
* {{Tld|Infobox president-elect}}
* {{Tld|Infobox prime minister}}
* {{Tld|Infobox prime minister-elect}}
* {{Tld|Infobox representative-elect}}
* {{Tld|Infobox SCC chief justice}}
* {{Tld|Infobox SCC puisne justice}}
* {{Tld|Infobox secretary-general}}
* {{Tld|Infobox senator}}
* {{Tld|Infobox senator-elect}}
* {{Tld|Infobox speaker}}
* {{Tld|Infobox state representative}}
* {{Tld|Infobox state SC associate justice}}
* {{Tld|Infobox state SC justice}}
* {{Tld|Infobox state senator}}
* {{Tld|Infobox US ambassador}}
* {{Tld|Infobox US associate justice}}
* {{Tld|Infobox US cabinet official}}
* {{Tld|Infobox US chief justice}}
* {{Tld|Infobox US territorial governor}}
* {{Tld|Infobox vice president}}
{{refend}}
{{collapse bottom}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
==Usage==
{{hatnote|Note: This template is for use on articles about '''individual people'''. For the infobox for use on articles about offices/positions, see [[Template:Infobox official post]].}}
Paste the code for the relevant office and then add the [[#Personal data|personal data]] to the bottom. There are no required fields and some fields will not appear when others are in use. For instructions on how to implement multiple terms, see [[Template:Infobox officeholder/example#Multiple terms|this page]]. For advice on alt text, see ''[[Wikipedia:Alternative text for images]]''.
The parameter {{para|order}} is used in conjunction with {{para|office}} to state that the officeholder is the ''n''th holder of the office, for example "42nd President of the United States". This should only be used when there is a well established use of such numbering in reliable sources. Do not add numbers simply based on a Wikipedia list of holders of the office, because (1) the list may not be accurate and (2) even with a definite list, different numbering systems could be applied (as to how various categories of "irregular" officeholders should be counted, and as to the counting of those serving for multiple non-consecutive periods) making the numbers arbitrary; and even where such issues are not yet present, they are bound to be in the future, making this unsustainable. Per [[WP:SEAOFBLUE]], it is not recommended to wikilink {{para|order}} to a list of officeholders, even if such a list exists.
If {{para|order}} is not specified, the value of {{para|office}} can be [[Help:Link#Wikilinks|wikilinked]] in the usual way, for example, "<code><nowiki>[[Ministry of Defence (Singapore)|Minister for Defence]]</nowiki></code>". However, if {{para|order}} is specified together with {{para|office}}, the value of {{para|office}} is automatically linked to a Wikipedia article of the same name, whether such an article exists or not. Wikilinking cannot be used to redirect the link elsewhere, but a [[Wikipedia:Piped link|piped link]] can be created like this: "<code><nowiki>Ministry of Defence (Singapore){{!}}Minister for Defence</nowiki></code>" (note that the double square brackets have been omitted).
When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc. This can be helpful for complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date).
Where a politician was redistricted into a new district, you can use {{para|prior_term}} to indicate which district(s) they were in before. This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the person who preceded the subject when the subject first took office and the person who succeeded the subject when the subject last left office. Where the use of "same district number" is used for determining "predecessor" and "successor" in any office, but where the area is so altered as to make such a "predecessor" or "successor" of little or no biographical value, the word "redistricted" should be used rather than using names of officeholders whose connection is accidental by virtue of district number, but unrelated to any election contests between officeholders.
Please do not re-purpose any fields to add decorative images, icons or flags. Template:Infobox viceroy styles or the like can be used for this. [[WP:INFOBOXFLAG]] applies here.
Per consensus in [[Wikipedia:Village pump (proposals)/Archive 175#RfC: Interim use of successor in Infobox officeholder|this RfC]], the infobox for an incumbent officeholder should not mention an [[-elect|elected or designated]] successor, or the end date of the term, until the successor takes office.
===General office===
{{For|examples of this code in use|Template:Infobox officeholder/example#General office}}
{{Generic template demo
| honorific_prefix
| name<!-- defaults to article title when left blank -->
| native_name
| native_name_lang
| honorific_suffix
| image
| image_size
| image_upright
| image name
| image_name_alt
| smallimage
| smallimage_alt
| alt
| caption
| order
| office
| status<!--If this is specified, overrides Incumbent.-->
| term_start
| term_end<!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) -->
| subterm
| suboffice
| alongside
| monarch
| president
| governor_general
| primeminister
| chancellor
| taoiseach
| governor
| co-leader
| vicepresident
| viceprimeminister
| deputy
| lieutenant
| parliamentarygroup
| constituency
| majority
| predecessor
| successor
| prior_term
| order2
| office2
| term_start2
| term_end2
| subterm2
| suboffice2
| alongside2
| monarch2
| president2
| governor_general2
| primeminister2
| chancellor2
| taoiseach2
| governor2
| co-leader2
| vicepresident2
| viceprimeminister2
| deputy2
| lieutenant2Z
| parliamentarygroup2
| constituency2
| predecessor2
| successor2
| majority2
| prior_term2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox officeholder
| honorific_prefix =
| name = <!-- defaults to article title when left blank -->
| native_name = <!--The person's name in their own language, if different.-->
| native_name_lang = <!--ISO 639-1 code, e.g., "fr" for French. If more than one, use {{lang}} in |native_name= instead.-->
| honorific_suffix =
| image =
| image_size =
| image_upright =
| smallimage = <!--If this is specified, "image" should not be.-->
| smallimage_alt =
| alt =
| caption =
| order =
| office =
| status = <!--If this is specified, overrides Incumbent.-->
| term_start =
| term_end = <!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) -->
| subterm =
| suboffice =
| alongside = <!--For two or more people serving in the same position from the same district. (e.g. United States senators.)-->
| monarch =
| president =
| governor_general =
| primeminister =
| taoiseach =
| chancellor =
| governor =
| co-leader =
| vicepresident =
| viceprimeminister =
| deputy =
| lieutenant =
| succeeding = <!--For President-elect or equivalent-->
| parliamentarygroup =
| constituency =
| majority =
| predecessor =
| successor = <!-- should not be filled until the successor takes office-->
| prior_term =
| order2 = <!--Can be repeated up to 16 times by changing the number-->
| office2 = <!--Can be repeated up to 16 times by changing the number-->
| term_start2 = <!--Can be repeated up to 16 times by changing the number-->
| term_end2 = <!--Can be repeated up to 16 times by changing the number-->
| subterm2 = <!--Can be repeated up to 16 times by changing the number-->
| suboffice2 = <!--Can be repeated up to 16 times by changing the number-->
| alongside2 = <!--Can be repeated up to 16 times by changing the number-->
| monarch2 = <!--Can be repeated up to 16 times by changing the number-->
| president2 = <!--Can be repeated up to 16 times by changing the number-->
| governor_general2 = <!--Can be repeated up to 16 times by changing the number-->
| primeminister2 = <!--Can be repeated up to 16 times by changing the number-->
| chancellor2 = <!--Can be repeated up to 16 times by changing the number-->
| taoiseach2 = <!--Can be repeated up to 16 times by changing the number-->
| governor2 = <!--Can be repeated up to 16 times by changing the number-->
| co-leader2 = <!--Can be repeated up to 16 times by changing the number-->
| vicepresident2 = <!--Can be repeated up to 16 times by changing the number-->
| viceprimeminister2 = <!--Can be repeated up to 16 times by changing the number-->
| deputy2 = <!--Can be repeated up to 16 times by changing the number-->
| lieutenant2 = <!--Can be repeated up to 16 times by changing the number-->
| succeeding2 = <!--Can be repeated up to 16 times by changing the number-->
| predecessor2 = <!--Can be repeated up to 16 times by changing the number-->
| successor2 = <!--Can be repeated up to 16 times by changing the number-->
| parliamentarygroup2= <!--Can be repeated up to 16 times by changing the number-->
| constituency2 = <!--Can be repeated up to 16 times by changing the number-->
| majority2 = <!--Can be repeated up to 16 times by changing the number-->
| prior_term2 = <!--Can be repeated up to 16 times by changing the number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Ambassador===
{{For|examples of this code in use|Template:Infobox officeholder/example#Ambassador}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| order
| ambassador_from
| country
| term_start
| term_end
| predecessor
| successor
| president
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox ambassador
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| order = <!--Can be repeated up to 16 times by adding a number-->
| ambassador_from = <!--Can be repeated up to 16 times by adding a number-->
| country = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| president = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Assembly member===
{{For|examples of this code in use|Template:Infobox officeholder/example#Assembly Member}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| constituency_AM
| assembly
| majority
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox AM
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| constituency_AM = <!--Can be repeated up to eight times by adding a number-->
| assembly = <!--Can be repeated up to 16 times by adding a number-->
| majority = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Governor===
{{For|examples of this code in use|Template:Infobox officeholder/example#Governor}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| order
| office
| term_start
| term_end
| lieutenant
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox governor
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| order = <!--Can be repeated up to 16 times by adding a number-->
| office = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| lieutenant = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If Governor was appointed by a President, add:
{{Generic template demo
| president
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| president = <!--name of president-->
</syntaxhighlight>
{{clear}}
If Governor appointed by other, add:
{{Generic template demo
| appointed
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| appointed = <!--name of appointer-->
</syntaxhighlight>
{{clear}}
===Judge===
{{For|examples of this code in use|Template:Infobox officeholder/example#Judge}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| office
| term_start
| term_end
| nominator
| appointer
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox judge
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| office = <!--Can be repeated up to 16 times by changing the number-->
| term_start = <!--Can be repeated up to 16 times by changing the number-->
| term_end = <!--Can be repeated up to 16 times by changing the number-->
| nominator = <!--Can be repeated up to 16 times by changing the number-->
| appointer = <!--Can be repeated up to 16 times by changing the number-->
| predecessor = <!--Can be repeated up to 16 times by changing the number-->
| successor = <!--Can be repeated up to 16 times by changing the number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Member of Parliament===
{{For|examples of this code in use|Template:Infobox officeholder/example#Member of Parliament}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| constituency_MP
| parliament
| majority
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox MP
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| constituency_MP = <!--Can be repeated up to eight times by adding a number-->
| parliament = <!--Can be repeated up to 16 times by adding a number-->
| majority = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===U.S. Representatives===
====U.S. Congressperson====
{{For|examples of this code in use|Template:Infobox officeholder/example#US Congressperson}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Congressman
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_start = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_end = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| successor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If Congressperson served as Speaker of the House add:
{{Generic template demo
| speaker
| term_start2
| term_end2
| predecessor2
| successor2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| speaker = <!--number of office holder-->
| term_start2 =
| term_end2 =
| predecessor2 =
| successor2 =
</syntaxhighlight>
{{clear}}
If Congressman has been elected but not sworn in:
{{Generic template demo
| succeeding
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| succeeding = <!--the name of the incumbent congressman-->
</syntaxhighlight>
{{clear}}
====State Representative====
{{For|examples of this code in use|Template:Infobox officeholder/example#State Representative}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state_house
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox state representative
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state_house = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_start = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_end = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| successor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
For Representative from states that have an Assembly, instead of state_house use:
{{Generic template demo
| state_assembly
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_assembly = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
For Representative from states that have a House of Delegates, instead of state_house use:
{{Generic template demo
| state_delegate
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_delegate = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
For Representative from states that have a Legislature, instead of state_house use:
{{Generic template demo
| state_legislature
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_legislature = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If Representative served as Speaker of the State House add:
{{Generic template demo
| speaker
| state_house
| term_start2
| term_end2
| predecessor2
| successor2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| speaker = <!--number of office holder-->
| state_house =
| term_start2 =
| term_end2 =
| predecessor2 =
| successor2 =
</syntaxhighlight>
{{clear}}
===U.S. Senators===
====U.S. Senator====
{{For|examples of this code in use|Template:Infobox officeholder/example#US Senator}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| image_size
| image_upright
| alt
| jr/sr
| state
| term_start
| term_end
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox senator
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_size =
| image_upright =
| alt =
| jr/sr = <!--Can be repeated up to eight times by appending 2, 3, etc--> Set to any value to display the "United States Senator from" header. If this parameter is missing or empty, "United States Senator from" will not be displayed.
| state = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_start = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_end = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| successor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
{{Generic template demo
| term_start
| alongside
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| term_start =
| alongside = <!--the name of fellow senator-->
</syntaxhighlight>
{{clear}}
If Senator has just been elected and is a Senator-Elect:
{{Generic template demo
| succeeding
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| succeeding = <!--the name of the incumbent senator-->
</syntaxhighlight>
{{clear}}
If Senator served as Senate Majority Leader add:
{{Generic template demo
| majorityleader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majorityleader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If Senator served as Congressman add:
{{Generic template demo
| state3
| district3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| district3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
====State Senator====
{{For|examples of this code in use|Template:Infobox officeholder/example#State Senator}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state_senate
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox state senator
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state_senate = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| district = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_start = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_end = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| successor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If State Senator served as Majority Leader of the State Senate add:
{{Generic template demo
| majority_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majority_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Minority Leader of the State Senate add:
{{Generic template demo
| minority_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| minority_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Majority Floor Leader of the State Senate add:
{{Generic template demo
| majority_floor_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majority_floor_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Minority Floor Leader of the State Senate add:
{{Generic template demo
| minority_floor_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| minority_floor_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
===Ukrainian legislative office===
{{For|examples of this code in use|Template:Infobox officeholder/example#Ukrainian legislative office}}
{{Generic template demo
| name
| native_name
| native_name_lang
| image
| caption
| office1
| convocation1
| constituency1
| term_start1
| term_end1
| convocation2
| constituency2
| term_start2
| term_end2
| office3
| convocation3
| constituency3
| term_start3
| term_end3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Ukrainian legislative office
| name =
| native_name =
| native_name_lang =
| image =
| caption =
| office1 =
| convocation1 =
| constituency1 =
| term_start1 =
| term_end1 =
| convocation2 =
| constituency2 =
| term_start2 =
| term_end2 =
| office3 = <!--Can be repeated up to 16 times by adding a number-->
| convocation3 = <!--Can be repeated up to 16 times by adding a number-->
| constituency3 = <!--Can be repeated up to 16 times by adding a number-->
| term_start3 = <!--Can be repeated up to 16 times by adding a number-->
| term_end3 = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
==Personal data==
Place this underneath the template
{{Generic template demo
| pronunciation
| birth_name <!-- only use if different from name -->
| birth_date
| birth_place
| death_date
| death_place
| death_cause <!-- should only be included when the cause of death has significance for the subject's notability -->
| resting_place
| resting_place_coordinates
| citizenship <!-- use only when necessary per [[WP:INFONAT]] -->
| nationality <!-- use only when necessary per [[WP:INFONAT]] -->
| party
| otherparty
| height
| spouse <!--Fill only if notable (reference required) or there is a WP article on this person-->
| partner <!--Fill only if notable (reference required) or there is a WP article on this person-->
| relations <!--Fill only if notable (reference required) or there is a WP article on this person-->
| children <!--Fill only if notable (reference required) or there is a WP article on this person-->
| parents <!--Fill only if notable (reference required) or there is a WP article on this person-->
| mother <!--Fill only if notable (reference required) or there is a WP article on this person-->
| father <!--Fill only if notable (reference required) or there is a WP article on this person-->
| relatives <!--Fill only if notable (reference required) or there is a WP article on this person-->
| residence
| education
| alma_mater
| occupation
| profession
| salary
| known_for
| cabinet
| committees
| portfolio
| awards
| blank1
| data1
| blank2
| data2
| blank3
| data3
| blank4
| data4
| blank5
| data5
| signature
| signature_alt
| website
| nickname
| allegiance
| branch
| serviceyears
| rank
| unit
| commands
| battles
| mawards
| military_blank1
| military_data1
| military_blank2
| military_data2
| military_blank3
| military_data3
| military_blank4
| military_data4
| military_blank5
| military_data5
| module
| module2
| module3
| module4
| module5
| footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| pronunciation =
| birth_name = <!-- only use if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} -->
| death_place =
| death_cause = <!-- should only be included when the cause of death has significance for the subject's notability -->
| resting_place =
| resting_place_coordinates =
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| nationality = <!-- use only when necessary per [[WP:INFONAT]] -->
| party =
| otherparty = <!--For additional political affiliations-->
| height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) -->
| spouse =
| partner = <!--For those with a domestic partner and not married-->
| relations =
| children =
| parents = <!-- overrides mother and father parameters -->
| mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| relatives =
| residence =
| education =
| alma_mater =
| occupation =
| profession =
| known_for =
| salary =
| cabinet =
| committees =
| portfolio =
| awards = <!-- For civilian awards - appears as "Awards" if |mawards= is not set -->
| blank1 =
| data1 =
| blank2 =
| data2 =
| blank3 =
| data3 =
| blank4 =
| data4 =
| blank5 =
| data5 =
| signature =
| signature_alt =
| signature_size =
| website =
| nickname =
<!--Military service-->
| allegiance =
| branch =
| serviceyears =
| rank =
| unit =
| commands =
| battles =
| mawards = <!-- for military awards - appears as "Awards" if |awards= is not set -->
| military_blank1 =
| military_data1 =
| military_blank2 =
| military_data2 =
| military_blank3 =
| military_data3 =
| military_blank4 =
| military_data4 =
| military_blank5 =
| military_data5 =
<!--Embedded templates / Footnotes-->
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| footnotes =
}}
</syntaxhighlight>
{{clear}}
<code>nationality</code> is [[Wikipedia:Manual of Style/Infoboxes#Nationality and citizenship|not displayed]] if the corresponding country is mentioned in <code>birth_place</code>, for example <code>|birth_place = Tokyo, Japan |nationality = Japanese</code>.
== Embedding other templates ==
The ''module'' parameters (module, module2, ... module5) may used to embed other templates into this infobox (see [[Wikipedia:Infobox modules]]).
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox officeholder
| name =
| <!-- etc. -->
| module =
{{Infobox football biography | embed = yes
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Embedding within a different infobox ==
Many officeholders are known for more than just their appointments (e.g., [[Clint Eastwood]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, creating the illusion of one continuous infobox. Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax.
<syntaxhighlight lang="wikitext" style="overflow: auto">
{{Infobox person
| name = John Infobox
| image = Example.jpg
| caption = John Infobox in 2005
| birth_name = John Officeholder Person Infobox
| birth_date = {{Birth date|1950|5|25}}
| birth_place = Template City
| death_date = {{Death date and age|2010|10|22|1950|5|25}}
| occupation = Actor
| years_active = 1970–1990
| module =
{{Infobox officeholder | embed = yes
| office = Mayor of Wikipedia
| term_start = 1994
| term_end = 1998
}}
| website = {{URL|example.com}}
}}
</syntaxhighlight>
==Microformat==
{{UF-hcard-person}}
==TemplateData==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "An infobox for office holders",
"format": "{{_\n| ___________________ = _\n}}\n",
"params": {
"name": {
"label": "Name",
"description": "Commonly-known name of person (defaults to article name, without disambiguation)",
"type": "line",
"default": "PAGENAME"
},
"office": {
"label": "office",
"description": "Office held",
"type": "string"
},
"order": {
"label": "order",
"description": "Used in conjunction with 'office' to state that the officeholder is the nth holder of the office",
"type": "string"
},
"bodyclass": {
"label": "bodyclass",
"type": "string"
},
"mainwidth": {
"label": "mainwidth",
"default": "22em",
"type": "string"
},
"native_name": {
"label": "Native name",
"type": "string",
"description": "Name in the person's native language",
"example": "Melquíades Rafael Martínez Ruiz"
},
"native_name_lang": {
"label": "Native name language",
"type": "string",
"description": "Language in which the person's native name is",
"example": "ca"
},
"image": {
"label": "Image",
"description": "Filename for the image (e.g. 'Example.jpg').",
"type": "wiki-file-name",
"required": false
},
"width": {
"label": "width",
"type": "string",
"aliases": [
"imagesize",
" image_size"
]
},
"alt": {
"label": "Alternative text",
"description": "Alternative text for the image.",
"type": "line"
},
"image name": {
"label": "image name",
"type": "string"
},
"smallimage": {
"label": "smallimage",
"type": "string"
},
"caption": {
"label": "Image caption",
"description": "Caption for the image.",
"type": "string",
"required": false
},
"alongside": {
"label": "alongside",
"description": "For two or more people serving in the same position from the same district. (e.g. United States senators.)",
"type": "string"
},
"ambassador_from": {
"label": "ambassador from",
"type": "string"
},
"appointer": {
"label": "appointer",
"type": "string"
},
"assembly": {
"label": "assembly",
"type": "string"
},
"chancellor": {
"label": "chancellor",
"type": "string"
},
"co-leader": {
"label": "co-leader",
"type": "string"
},
"constituency_AM": {
"label": "constituency AM",
"type": "string"
},
"constituency": {
"label": "constituency",
"type": "string"
},
"country": {
"label": "country",
"type": "string",
"example": "Israel"
},
"deputy": {
"label": "deputy",
"type": "string"
},
"district": {
"label": "district",
"type": "string"
},
"firstminister": {
"label": "first minister",
"type": "string"
},
"governor-general": {
"label": "governor-general",
"type": "string"
},
"leader": {
"label": "leader",
"type": "string"
},
"legislature": {
"label": "legislature",
"type": "wiki-page-name",
"example": "[[United States House of Representatives]]"
},
"lieutenant_governor": {
"label": "lieutenant governor",
"type": "string"
},
"lieutenant": {
"label": "lieutenant",
"type": "string"
},
"majorityleader": {
"label": "majority leader",
"type": "string"
},
"minister": {
"label": "minister",
"type": "string"
},
"minister_from": {
"label": "minister from",
"type": "string"
},
"minority_floor_leader": {
"label": "minority floor leader",
"type": "string"
},
"majority_floor_leader": {
"label": "majority floor leader",
"type": "string"
},
"minorityleader": {
"label": "minority leader",
"type": "string",
"example": "[[Chuck Shumer]]"
},
"monarch": {
"label": "monarch",
"type": "string"
},
"nominator": {
"label": "nominator",
"type": "string"
},
"parliament": {
"label": "parliament",
"type": "string"
},
"parliamentarygroup": {
"label": "parliamentary group",
"type": "string"
},
"predecessor": {
"label": "predecessor",
"type": "string"
},
"preceding": {
"label": "preceding",
"type": "string"
},
"preceded": {
"label": "preceded",
"type": "string"
},
"premier": {
"label": "premier",
"type": "string"
},
"president": {
"label": "president",
"type": "string"
},
"primeminister": {
"label": "primeminister",
"type": "string"
},
"riding": {
"label": "riding",
"type": "string"
},
"status": {
"label": "status",
"description": "If this is specified, overrides Incumbent.",
"type": "string"
},
"succeeded": {
"label": "succeeded",
"type": "string"
},
"succeeding": {
"label": "succeeding",
"description": "For President-elect or equivalent.",
"type": "string"
},
"successor": {
"label": "successor",
"type": "string"
},
"taoiseach": {
"label": "taoiseach",
"type": "string"
},
"term_start": {
"label": "term start",
"type": "string",
"description": "Date of the beginning of the person's term"
},
"term_end": {
"label": "term end",
"type": "string",
"description": "Date for the end of the person's term"
},
"title": {
"label": "title",
"type": "string"
},
"vicechair": {
"label": "vice chair",
"type": "string"
},
"vicegovernor": {
"label": "vice governor",
"type": "string"
},
"vicepresident": {
"label": "vice president",
"type": "string"
},
"vicepremier": {
"label": "vice premier",
"type": "string"
},
"viceprimeminister": {
"label": "vice prime minister",
"type": "string"
},
"speaker": {
"label": "speaker",
"type": "string"
},
"footnotes": {
"label": "footnotes",
"type": "string"
},
"date": {
"label": "date",
"type": "string"
},
"year": {
"label": "year",
"type": "string"
},
"source": {
"label": "source",
"type": "string"
},
"signature": {
"label": "signature",
"type": "wiki-file-name"
},
"signature_alt": {
"label": "signature alt text",
"type": "string"
},
"appointe": {
"label": "appointee",
"type": "string"
},
"alongside2": {
"label": "alongside 2",
"type": "string"
},
"peerage2": {
"label": "peerage 2",
"type": "string"
},
"ambassador_from2": {
"label": "ambassador from 2",
"type": "string"
},
"appointer2": {
"label": "appointer 2",
"type": "string"
},
"assembly2": {
"label": "assembly 2",
"type": "string"
},
"chancellor2": {
"label": "chancellor 2",
"type": "string"
},
"co-leader2": {
"label": "co-leader 2",
"type": "string"
},
"constituency_AM2": {
"label": "constituency AM 2",
"type": "string"
},
"country2": {
"label": "country 2",
"type": "string",
"example": "Malaya"
},
"deputy2": {
"label": "deputy 2",
"type": "string"
},
"district2": {
"label": "district 2",
"type": "string"
},
"firstminister2": {
"label": "first minister 2",
"type": "string"
},
"governor": {
"label": "governor",
"type": "string"
},
"governor-general2": {
"label": "governor-general 2",
"type": "string"
},
"governor2": {
"label": "governor 2",
"type": "string"
},
"leader2": {
"label": "leader 2",
"type": "string",
"example": "Donald Trump"
},
"legislature2": {
"label": "legislature 2",
"type": "wiki-page-name",
"example": "[[United States Senate]]"
},
"lieutenant_governor2": {
"label": "lieutenant governor 2",
"type": "string"
},
"lieutenant2": {
"label": "lieutenant2",
"type": "string"
},
"majority": {
"label": "majority",
"type": "string"
},
"majorityleader2": {
"label": "majority leader 2",
"type": "string",
"example": "Mitch McConnell"
},
"minister_from2": {
"label": "minister from 2",
"type": "string"
},
"minority_floor_leader2": {
"label": "minority floor leader 2",
"type": "string"
},
"majority_floor_leader2": {
"label": "majority floor leader 2",
"type": "string"
},
"majority2": {
"label": "majority 2",
"type": "string"
},
"minister2": {
"label": "minister 2",
"type": "string"
},
"minority": {
"label": "minority",
"type": "string"
},
"minorityleader2": {
"label": "minority leader 2",
"type": "string",
"example": "[[Chuck Shumer]]"
},
"monarch2": {
"label": "monarch 2",
"type": "string"
},
"nominator2": {
"label": "nominator 2",
"type": "string"
},
"office2": {
"label": "office 2",
"type": "string"
},
"order2": {
"label": "order 2",
"type": "string"
},
"parliament2": {
"label": "parliament2",
"type": "string"
},
"parliamentarygroup2": {
"label": "parliamentary group 2",
"type": "string"
},
"predecessor2": {
"label": "predecessor 2",
"type": "string"
},
"preceding2": {
"label": "preceding 2",
"type": "string"
},
"preceded2": {
"label": "preceded 2",
"type": "string"
},
"premier2": {
"label": "premier 2",
"type": "string"
},
"president2": {
"label": "president 2",
"type": "string"
},
"primeminister2": {
"label": "prime minister 2",
"type": "string"
},
"riding2": {
"label": "riding 2",
"type": "string"
},
"speaker_office": {
"label": "speaker office",
"type": "string"
},
"state_assembly": {
"label": "state assembly",
"type": "string"
},
"state_delegate": {
"label": "state delegate",
"type": "string"
},
"state_house": {
"label": "state house",
"type": "string"
},
"state_legislature": {
"label": "state legislature",
"type": "string"
},
"state_senate": {
"label": "state senate",
"type": "string"
},
"state": {
"label": "state",
"type": "string",
"description": "The state this officeholder represents or represented",
"example": "[[Alabama]]"
},
"term": {
"label": "term",
"type": "string"
},
"party": {
"label": "party",
"type": "string"
},
"prior_term": {
"label": "prior_term",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1blankname": {
"label": "1blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1namedata": {
"label": "1namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2blankname": {
"label": "2blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2namedata": {
"label": "2namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3blankname": {
"label": "3blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3namedata": {
"label": "3namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4blankname": {
"label": "4blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4namedata": {
"label": "4namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5blankname": {
"label": "5blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5namedata": {
"label": "5namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1blankname1": {
"label": "1blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1namedata1": {
"label": "1namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2blankname1": {
"label": "2blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2namedata1": {
"label": "2namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3blankname1": {
"label": "3blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3namedata1": {
"label": "3namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4blankname1": {
"label": "4blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4namedata1": {
"label": "4namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5blankname1": {
"label": "5blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5namedata1": {
"label": "5namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"alongside1": {
"label": "alongside1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"ambassador_from1": {
"label": "ambassador_from1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"appointer1": {
"label": "appointer1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"assembly1": {
"label": "assembly1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"chair1": {
"label": "chair1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"chancellor1": {
"label": "chancellor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"co-leader1": {
"label": "co-leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"constituency_AM1": {
"label": "constituency_AM1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"constituency1": {
"label": "constituency1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"country1": {
"label": "country1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"deputy1": {
"label": "deputy1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"district1": {
"label": "district1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"firstminister1": {
"label": "firstminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"governor-general1": {
"label": "governor-general1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"governor1": {
"label": "governor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"leader1": {
"label": "leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"legislature1": {
"label": "legislature1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"lieutenant_governor1": {
"label": "lieutenant governor 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"lieutenant1": {
"label": "lieutenant 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minority_floor_leader1": {
"label": "minority floor leader 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minister_from1": {
"label": "minister from 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majority_floor_leader1": {
"label": "majority_floor_leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majorityleader1": {
"label": "majorityleader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majority1": {
"label": "majority1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minister1": {
"label": "minister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minorityleader1": {
"label": "minorityleader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"monarch1": {
"label": "monarch1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"nominator1": {
"label": "nominator1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"office1": {
"label": "office1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"order1": {
"label": "order1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"parliament1": {
"label": "parliament1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"parliamentarygroup1": {
"label": "parliamentary group 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"predecessor1": {
"label": "predecessor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"preceding1": {
"label": "preceding1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"preceded1": {
"label": "preceded1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"premier1": {
"label": "premier1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"president1": {
"label": "president1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"primeminister1": {
"label": "primeminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"riding1": {
"label": "riding 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_assembly1": {
"label": "state_assembly1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_delegate1": {
"label": "state_delegate1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_house1": {
"label": "state_house1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_legislature1": {
"label": "state_legislature1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_senate1": {
"label": "state_senate1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state1": {
"label": "state1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"succeeded1": {
"label": "succeeded1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"succeeding1": {
"label": "succeeding1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"successor1": {
"label": "successor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"taoiseach1": {
"label": "taoiseach1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termend1": {
"label": "termend1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termstart1": {
"label": "termstart1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"term1": {
"label": "term1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"title1": {
"label": "title1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicechair1": {
"label": "vicechair1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicegovernor1": {
"label": "vicegovernor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicepresident1": {
"label": "vicepresident1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicepremier1": {
"label": "vicepremier1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"viceprimeminister1": {
"label": "viceprimeminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"prior_term1": {
"label": "prior term 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termend2": {
"label": "term end 2",
"type": "string"
},
"termstart2": {
"label": "term start 2",
"type": "string"
},
"term2": {
"label": "term 2",
"type": "string"
},
"title2": {
"label": "title 2",
"type": "string"
},
"vicechair2": {
"label": "vice chair 2",
"type": "string"
},
"vicegovernor2": {
"label": "vice governor 2",
"type": "string"
},
"vicepresident2": {
"label": "vice president 2",
"type": "string"
},
"vicepremier2": {
"label": "vice premier 2",
"type": "string"
},
"viceprimeminister2": {
"label": "vice prime minister 2",
"type": "string"
},
"succeeded2": {
"label": "succeeded 2",
"type": "string"
},
"succeeding2": {
"label": "succeeding 2",
"type": "string"
},
"successor2": {
"label": "successor 2",
"type": "string"
},
"taoiseach2": {
"label": "taoiseach 2",
"type": "string"
},
"state_assembly2": {
"label": "state assembly2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_delegate2": {
"label": "state delegate2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_house2": {
"label": "state house 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_legislature2": {
"label": "state legislature 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_senate2": {
"label": "state senate2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state 2": {
"label": "state 2",
"description": "Additional fields numbered up to 14",
"type": "string",
"example": "[[Georgia (U.S. State)|Georgia]]"
},
"prior_term2": {
"label": "prior term 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"birth_name": {
"label": "Birth name",
"description": "Name at birth, if different from 'name'.",
"type": "string",
"required": false,
"aliases": [
"birthname"
]
},
"birth_date": {
"label": "Birth date",
"description": "Date of birth. Use {{birth date and age}} (for living people) or {{birth date}} for the deceased.",
"type": "line",
"required": false
},
"birth_place": {
"label": "Birth place",
"description": "Place of birth.",
"type": "line"
},
"death_date": {
"label": "Death date",
"description": "Date of death. Use {{death date and age}}. Use {{death date}} if birth date unknown or incomplete.",
"type": "content"
},
"death_place": {
"label": "Death place",
"description": "The person's place of death, if deceased",
"type": "line",
"required": false,
"example": "[[Crown Heights]]"
},
"resting_place": {
"label": "Resting place",
"description": "Person's grave, etc.",
"type": "line",
"required": false
},
"resting_place_coordinates": {
"label": "Resting place",
"description": "Coordinates of grave, etc. Use {{Coord|LAT|LONG|type:landmark|display=inline}}",
"type": "line"
},
"citizenship": {
"label": "citizenship",
"type": "string",
"description": "The person's country of citizenship",
"example": "[[Germany]]"
},
"nationality": {
"label": "Nationality",
"description": "The person's nationality, use only when necessary per [[WP:INFONAT]]",
"type": "line",
"example": "Canadian"
},
"otherparty": {
"label": "other political party",
"type": "string"
},
"spouse": {
"label": "Spouse(s)",
"description": "Spouse(s), if notable",
"type": "line",
"required": false,
"aliases": [
"spouses"
]
},
"partner": {
"label": "Partner(s)",
"description": "Domestic partner(s), if notable",
"type": "line"
},
"relations": {
"label": "relations",
"type": "string"
},
"children": {
"label": "children",
"type": "string"
},
"parents": {
"label": "parents",
"type": "string"
},
"residence": {
"label": "Residence",
"description": "Where this person lives",
"type": "line"
},
"alma_mater": {
"label": "Alma mater",
"description": "The linked name of attended higher education institution(s).",
"type": "line"
},
"occupation": {
"label": "occupation",
"description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Politician, entrepreneur, businessman)",
"type": "string"
},
"profession": {
"label": "profession",
"description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Attorney, accountant)",
"type": "string"
},
"cabinet": {
"label": "cabinet",
"type": "string"
},
"committees": {
"label": "committees",
"type": "string"
},
"portfolio": {
"label": "portfolio",
"type": "string"
},
"blank1": {
"label": "blank1",
"description": "Also blank2 ... blank5",
"type": "string"
},
"data1": {
"label": "data1",
"description": "Also data2 ... data5",
"type": "string"
},
"website": {
"label": "Official website",
"description": "Office holder's official website, using {{URL}}.",
"type": "line"
},
"nickname": {
"label": "nickname",
"type": "string"
},
"allegiance": {
"label": "allegiance",
"type": "string"
},
"branch": {
"label": "branch",
"type": "string"
},
"serviceyears": {
"label": "serviceyears",
"type": "string"
},
"rank": {
"label": "rank",
"type": "string"
},
"unit": {
"label": "unit",
"type": "string"
},
"commands": {
"label": "commands",
"type": "string"
},
"battles": {
"label": "battles fought",
"type": "string"
},
"military_blank1": {
"label": "military blank 1",
"description": "Also military_blank2 ... military_blank5",
"type": "string"
},
"military_data1": {
"label": "military data 1",
"description": "Also military_data2 ... military_data5",
"type": "string"
},
"1blankname2": {
"label": "1blankname2",
"type": "string"
},
"1namedata2": {
"label": "1namedata2",
"type": "string"
},
"2blankname2": {
"label": "2blankname2",
"type": "string"
},
"2namedata2": {
"label": "2namedata2",
"type": "string"
},
"3blankname2": {
"label": "3blankname2",
"type": "string"
},
"3namedata2": {
"label": "3namedata2",
"type": "string"
},
"4blankname2": {
"label": "4blankname2",
"type": "string"
},
"4namedata2": {
"label": "4namedata2",
"type": "string"
},
"5blankname2": {
"label": "5blankname2",
"type": "string"
},
"5namedata2": {
"label": "5namedata2",
"type": "string"
},
"pronunciation": {
"label": "Name pronunciation",
"type": "string"
},
"honorific_prefix": {
"label": "Honorific prefix",
"description": "Title such as 'The Honourable'",
"type": "wiki-page-name",
"required": false,
"aliases": [
"honorific prefix"
]
},
"honorific_suffix": {
"label": "Honorific suffix",
"description": "Initials such as 'OBE', 'FRSA'",
"type": "wiki-page-name",
"required": false,
"aliases": [
"honorific suffix"
]
},
"image_size": {
"label": "Image size",
"description": "Size of the image (e.g. '220px').",
"type": "line",
"default": "varies",
"required": false,
"aliases": [
"imagesize"
]
},
"education": {
"label": "Education",
"description": "Where or with whom the officeholder trained.",
"type": "line",
"required": false
},
"awards": {
"label": "Awards",
"description": "Awards won by the officeholder. Consider using {{awd}}.",
"type": "line",
"required": false
},
"image_name_alt": {},
"smallname_alt": {},
"net_worth": {
"label": "DEPRECATED: Net worth",
"description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.",
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered."
}
}
}
</templatedata>
{{Collapse bottom}}
== Tracking categories ==
; Hidden tracking/maintenance categories (in main and supporting templates):
* {{clc|Biography template using pronunciation}}
* {{clc|Pages using infobox officeholder with ambassador from or minister from}}
* {{clc|Pages using infobox officeholder with both term and term_start or term_end}}
* {{clc|Pages using infobox officeholder with office0}}
* {{clc|Pages using infobox officeholder with speaker}}
* {{clc|Pages using infobox officeholder with succeeding and term or termend}}
* {{clc|Pages using infobox officeholder with unknown parameters}}
== See also ==
* [[Template:S-start]] ([[Wikipedia:WikiProject Succession Box Standardization|succession box standardization]])
; Supporting templates
* [[Template:Infobox officeholder/office]]
* <!-- [[Template:Infobox officeholder/Personal data]] -->
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates|Officeholder]]
[[Category:Politics and government infobox templates|Officeholder]]
[[Category:People and person infobox templates|Officeholder]]
[[Category:Infobox templates with module parameter|Officeholder]]
[[Category:Biographical templates usable as a module|Officeholder]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9f0aa9b1712a817a2411b7ffcf199709eb3a1b22
Module:Citation/CS1
828
827
1844
2023-08-30T19:56:08Z
wikipedia>Trappist the monk
0
fix {{cs1 config}} support for |display-translators=;
Scribunto
text/plain
require ('strict');
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
each of these counts against the Lua upvalue limit
]]
local validation; -- functions in Module:Citation/CS1/Date_validation
local utilities; -- functions in Module:Citation/CS1/Utilities
local z = {}; -- table of tables in Module:Citation/CS1/Utilities
local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers
local metadata; -- functions in Module:Citation/CS1/COinS
local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist
--[[------------------< P A G E S C O P E V A R I A B L E S >---------------
declare variables here that have page-wide scope that are not brought in from
other modules; that are created here and used here
]]
local added_deprecated_cat; -- Boolean flag so that the category is added only once
local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category
local added_generic_name_errs; -- Boolean flag so we only emit one generic name error / category and stop testing names once an error is encountered
local Frame; -- holds the module's frame table
local is_preview_mode; -- true when article is in preview mode; false when using 'Preview page with this template' (previewing the module)
local is_sandbox; -- true when using sandbox modules to render citation
--[[--------------------------< F I R S T _ S E T >------------------------------------------------------------
Locates and returns the first set value in a table of values where the order established in the table,
left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set.
This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs
version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate
the for-loop before it reached the actual end of the list.
]]
local function first_set (list, count)
local i = 1;
while i <= count do -- loop through all items in list
if utilities.is_set( list[i] ) then
return list[i]; -- return the first set list member
end
i = i + 1; -- point to next
end
end
--[[--------------------------< A D D _ V A N C _ E R R O R >----------------------------------------------------
Adds a single Vancouver system error message to the template's output regardless of how many error actually exist.
To prevent duplication, added_vanc_errs is nil until an error message is emitted.
added_vanc_errs is a Boolean declared in page scope variables above
]]
local function add_vanc_error (source, position)
if added_vanc_errs then return end
added_vanc_errs = true; -- note that we've added this category
utilities.set_message ('err_vancouver', {source, position});
end
--[[--------------------------< I S _ S C H E M E >------------------------------------------------------------
does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it
is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says:
Scheme names consist of a sequence of characters beginning with a
letter and followed by any combination of letters, digits, plus
("+"), period ("."), or hyphen ("-").
returns true if it does, else false
]]
local function is_scheme (scheme)
return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern
end
--[=[-------------------------< I S _ D O M A I N _ N A M E >--------------------------------------------------
Does this thing that purports to be a domain name seem to be a valid domain name?
Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5
BNF defined here: https://tools.ietf.org/html/rfc4234
Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15;
see also [[Single-letter second-level domain]]
list of TLDs: https://www.iana.org/domains/root/db
RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between
the first and last characters the name may use letters, digits, and the hyphen.
Also allowed are IPv4 addresses. IPv6 not supported
domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld
is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped
here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal.
There are several tests:
the first character of the whole domain name including subdomains must be a letter or a digit
internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490
single-letter/digit second-level domains in the .org, .cash, and .today TLDs
q, x, and z SL domains in the .com TLD
i and q SL domains in the .net TLD
single-letter SL domains in the ccTLDs (where the ccTLD is two letters)
two-character SL domains in gTLDs (where the gTLD is two or more letters)
three-plus-character SL domains in gTLDs (where the gTLD is two or more letters)
IPv4 dot-decimal address format; TLD not allowed
returns true if domain appears to be a proper name and TLD or IPv4 address, else false
]=]
local function is_domain_name (domain)
if not domain then
return false; -- if not set, abandon
end
domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once
if not domain:match ('^[%w]') then -- first character must be letter or digit
return false;
end
if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource
return false;
end
local patterns = { -- patterns that look like URLs
'%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld
'%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix
'%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10)
'%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10)
'%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars)
'%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD
'^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address
}
for _, pattern in ipairs (patterns) do -- loop through the patterns list
if domain:match (pattern) then
return true; -- if a match then we think that this thing that purports to be a URL is a URL
end
end
for _, d in ipairs (cfg.single_letter_2nd_lvl_domains_t) do -- look for single letter second level domain names for these top level domains
if domain:match ('%f[%w][%w]%.' .. d) then
return true
end
end
return false; -- no matches, we don't know what this thing is
end
--[[--------------------------< I S _ U R L >------------------------------------------------------------------
returns true if the scheme and domain parts of a URL appear to be a valid URL; else false.
This function is the last step in the validation process. This function is separate because there are cases that
are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external
wikilinks.
]]
local function is_url (scheme, domain)
if utilities.is_set (scheme) then -- if scheme is set check it and domain
return is_scheme (scheme) and is_domain_name (domain);
else
return is_domain_name (domain); -- scheme not set when URL is protocol-relative
end
end
--[[--------------------------< S P L I T _ U R L >------------------------------------------------------------
Split a URL into a scheme, authority indicator, and domain.
First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#).
If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain.
When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one
or more '/' characters immediately following the scheme's colon), make sure that there are only 2.
Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes
like news: that don't use authority indicator?
Strip off any port and path;
]]
local function split_url (url_str)
local scheme, authority, domain;
url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//')
if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL
domain = url_str:match ('^//(%S*)')
elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name
scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions
if utilities.is_set (authority) then
authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing;
if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then
return scheme; -- return scheme only making domain nil which will cause an error message
end
else
if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test?
return scheme; -- return scheme only making domain nil which will cause an error message
end
end
domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present
end
return scheme, domain;
end
--[[--------------------------< L I N K _ P A R A M _ O K >---------------------------------------------------
checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs
Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed:
# < > [ ] | { } _
except the underscore which is used as a space in wiki URLs and # which is used for section links
returns false when the value contains any of these characters.
When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the
|<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok).
]]
local function link_param_ok (value)
local scheme, domain;
if value:find ('[<>%[%]|{}]') then -- if any prohibited characters
return false;
end
scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL;
return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL
end
--[[--------------------------< L I N K _ T I T L E _ O K >---------------------------------------------------
Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value.
|<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when
that condition exists
check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language
code and must begin with a colon.
]]
local function link_title_ok (link, lorig, title, torig)
local orig;
if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value
if not link_param_ok (link) then -- check |<param>-link= markup
orig = lorig; -- identify the failing link parameter
elseif title:find ('%[%[') then -- check |title= for wikilink markup
orig = torig; -- identify the failing |title= parameter
elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki
local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix
if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon
orig = lorig; -- flag as error
end
end
end
if utilities.is_set (orig) then
link = ''; -- unset
utilities.set_message ('err_bad_paramlink', orig); -- URL or wikilink in |title= with |title-link=;
end
return link; -- link if ok, empty string else
end
--[[--------------------------< C H E C K _ U R L >------------------------------------------------------------
Determines whether a URL string appears to be valid.
First we test for space characters. If any are found, return false. Then split the URL into scheme and domain
portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two
portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false.
Because it is different from a standard URL, and because this module used external_link() to make external links
that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name
is at https://tools.ietf.org/html/rfc5536#section-3.1.4
]]
local function check_url( url_str )
if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL
return false;
end
local scheme, domain;
scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL;
if 'news:' == scheme then -- special case for newsgroups
return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$');
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >----------------------------
Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first
non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks
that use protocol-relative URLs. Also finds bare URLs.
The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that
find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=,
and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]]
is possible as might be [[en://Hus]].
]=]
local function is_parameter_ext_wikilink (value)
local scheme, domain;
if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]'));
elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]'));
elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(%a%S*:%S+)'));
elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain
else
return false; -- didn't find anything that is obviously a URL
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[[-------------------------< C H E C K _ F O R _ U R L >-----------------------------------------------------
loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message.
]]
local function check_for_url (parameter_list, error_list)
for k, v in pairs (parameter_list) do -- for each parameter in the list
if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message
table.insert (error_list, utilities.wrap_style ('parameter', k));
end
end
end
--[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------
Escape sequences for content that will be used for URL descriptions
]]
local function safe_for_url( str )
if str:match( "%[%[.-%]%]" ) ~= nil then
utilities.set_message ('err_wikilink_in_url', {});
end
return str:gsub( '[%[%]\n]', {
['['] = '[',
[']'] = ']',
['\n'] = ' ' } );
end
--[[--------------------------< E X T E R N A L _ L I N K >----------------------------------------------------
Format an external link with error checking
]]
local function external_link (URL, label, source, access)
local err_msg = '';
local domain;
local path;
local base_url;
if not utilities.is_set (label) then
label = URL;
if utilities.is_set (source) then
utilities.set_message ('err_bare_url_missing_title', {utilities.wrap_style ('parameter', source)});
else
error (cfg.messages["bare_url_no_origin"]); -- programmer error; valid parameter name does not have matching meta-parameter
end
end
if not check_url (URL) then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)});
end
domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path
if path then -- if there is a path portion
path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values
URL = table.concat ({domain, path}); -- and reassemble
end
base_url = table.concat ({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL
if utilities.is_set (access) then -- access level (subscription, registration, limited)
base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon
end
return base_url;
end
--[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >--------------------------------------
Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the
offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated
parameters in the citation.
added_deprecated_cat is a Boolean declared in page scope variables above
]]
local function deprecated_parameter(name)
if not added_deprecated_cat then
added_deprecated_cat = true; -- note that we've added this category
utilities.set_message ('err_deprecated_params', {name}); -- add error message
end
end
--[=[-------------------------< K E R N _ Q U O T E S >--------------------------------------------------------
Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote
mark contained in a |title= or |chapter= parameter's value.
This function will positive kern either single or double quotes:
"'Unkerned title with leading and trailing single quote marks'"
" 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example)
Double single quotes (italic or bold wiki-markup) are not kerned.
Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter
quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks.
Call this function for chapter titles, for website titles, etc.; not for book titles.
]=]
local function kern_quotes (str)
local cap = '';
local wl_type, label, link;
wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks
if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
str = utilities.substitute (cfg.presentation['kern-right'], str);
elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks
str = utilities.substitute (cfg.presentation['kern-right'], str);
end
else -- plain text or [[L|D]]; text in label variable
label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark)
label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark)
cap = mw.ustring.match (label, "^([\"\'][^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-left'], cap);
end
cap = mw.ustring.match (label, "^(.+[^\'][\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-right'], cap);
end
if 2 == wl_type then
str = utilities.make_wikilink (link, label); -- reassemble the wikilink
else
str = label;
end
end
return str;
end
--[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >----------------------------------------
|script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should
not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped
in italic markup.
Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right.
|script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon:
|script-title=ja:*** *** (where * represents a Japanese character)
Spaces between the two-character code and the colon and the colon and the first script character are allowed:
|script-title=ja : *** ***
|script-title=ja: *** ***
|script-title=ja :*** ***
Spaces preceding the prefix are allowed: |script-title = ja:*** ***
The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can
know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute
is not added. At this time there is no error message for this condition.
Supports |script-title=, |script-chapter=, |script-<periodical>=
]]
local function format_script_value (script_value, script_param)
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix
lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
if not utilities.is_set (lang) then
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message
return ''; -- script_value was just the prefix so return empty string
end
-- if we get this far we have prefix and script
name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize
if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script
-- is prefix one of these language codes?
if utilities.in_array (lang, cfg.script_lang_codes) then
utilities.add_prop_cat ('script', {name, lang})
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message
end
script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL
return script_value;
end
--[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------
Initially for |title= and |script-title=, this function concatenates those two parameter values after the script
value has been wrapped in <bdi> tags.
]]
local function script_concatenate (title, script, script_param)
if utilities.is_set (script) then
script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error
if utilities.is_set (script) then
title = title .. ' ' .. script; -- concatenate title and script title
end
end
return title;
end
--[[--------------------------< W R A P _ M S G >--------------------------------------------------------------
Applies additional message text to various parameter values. Supplied string is wrapped using a message_list
configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken
from citation_config.messages - the reason this function is similar to but separate from wrap_style().
]]
local function wrap_msg (key, str, lower)
if not utilities.is_set ( str ) then
return "";
end
if true == lower then
local msg;
msg = cfg.messages[key]:lower(); -- set the message to lower case before
return utilities.substitute ( msg, str ); -- including template text
else
return utilities.substitute ( cfg.messages[key], str );
end
end
--[[----------------< W I K I S O U R C E _ U R L _ M A K E >-------------------
Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate
label; nil else.
str is the value assigned to |chapter= (or aliases) or |title= or |title-link=
]]
local function wikisource_url_make (str)
local wl_type, D, L;
local ws_url, ws_label;
local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'});
wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink)
if 0 == wl_type then -- not a wikilink; might be from |title-link=
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]]
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]])
str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_label = D; -- get ws article name from display portion of interwiki link
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title without namespace from link portion of wikilink
});
end
end
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent-encoding of fragment marker
end
return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil
end
--[[----------------< F O R M A T _ P E R I O D I C A L >-----------------------
Format the three periodical parameters: |script-<periodical>=, |<periodical>=,
and |trans-<periodical>= into a single Periodical meta-parameter.
]]
local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical)
if not utilities.is_set (periodical) then
periodical = ''; -- to be safe for concatenation
else
periodical = utilities.wrap_style ('italic-title', periodical); -- style
end
periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (trans_periodical) then
trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical);
if utilities.is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when trans-periodical without periodical or script-periodical
periodical = trans_periodical;
utilities.set_message ('err_trans_missing_title', {'periodical'});
end
end
return periodical;
end
--[[------------------< F O R M A T _ C H A P T E R _ T I T L E >---------------
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=,
and |chapter-url= into a single chapter meta- parameter (chapter_url_source used
for error messages).
]]
local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access)
local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link
if ws_url then
ws_label = ws_label:gsub ('_', ' '); -- replace underscore separators with space characters
chapter = ws_label;
end
if not utilities.is_set (chapter) then
chapter = ''; -- to be safe for concatenation
else
if false == no_quotes then
chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks
chapter = utilities.wrap_style ('quoted-title', chapter);
end
end
chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (chapter_url) then
chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate
elseif ws_url then
chapter = external_link (ws_url, chapter .. ' ', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this?
chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter});
end
if utilities.is_set (trans_chapter) then
trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter);
if utilities.is_set (chapter) then
chapter = chapter .. ' ' .. trans_chapter;
else -- here when trans_chapter without chapter or script-chapter
chapter = trans_chapter;
chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param>
utilities.set_message ('err_trans_missing_title', {chapter_source});
end
end
return chapter;
end
--[[----------------< H A S _ I N V I S I B L E _ C H A R S >-------------------
This function searches a parameter's value for non-printable or invisible characters.
The search stops at the first match.
This function will detect the visible replacement character when it is part of the Wikisource.
Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers
(gallery, math, pre, ref) and identifies them with a slightly different error message.
See also coins_cleanup().
Output of this function is an error message that identifies the character or the
Unicode group, or the stripmarker that was detected along with its position (or,
for multi-byte characters, the position of its first byte) in the parameter value.
]]
local function has_invisible_chars (param, v)
local position = ''; -- position of invisible char or starting position of stripmarker
local capture; -- used by stripmarker detection to hold name of the stripmarker
local stripmarker; -- boolean set true when a stripmarker is found
capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true
if capture == v then -- if same there are no Unicode characters
return;
end
for _, invisible_char in ipairs (cfg.invisible_chars) do
local char_name = invisible_char[1]; -- the character or group name
local pattern = invisible_char[2]; -- the pattern used to find it
position, _, capture = mw.ustring.find (v, pattern); -- see if the parameter value contains characters that match the pattern
if position and (cfg.invisible_defs.zwj == capture) then -- if we found a zero-width joiner character
if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts
position = nil; -- unset position
elseif cfg.emoji_t[mw.ustring.codepoint (v, position+1)] then -- is zwj followed by a character listed in emoji{}?
position = nil; -- unset position
end
end
if position then
if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition)
('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters
stripmarker = true; -- set a flag
elseif true == stripmarker and cfg.invisible_defs.del == capture then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker
position = nil; -- unset
else
local err_msg;
if capture and not (cfg.invisible_defs.del == capture or cfg.invisible_defs.zwj == capture) then
err_msg = capture .. ' ' .. char_name;
else
err_msg = char_name .. ' ' .. 'character';
end
utilities.set_message ('err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}); -- add error message
return; -- and done with this parameter
end
end
end
end
--[[-------------------< A R G U M E N T _ W R A P P E R >----------------------
Argument wrapper. This function provides support for argument mapping defined
in the configuration file so that multiple names can be transparently aliased to
single internal variable.
]]
local function argument_wrapper ( args )
local origin = {};
return setmetatable({
ORIGIN = function ( self, k )
local dummy = self[k]; -- force the variable to be loaded.
return origin[k];
end
},
{
__index = function ( tbl, k )
if origin[k] ~= nil then
return nil;
end
local args, list, v = args, cfg.aliases[k];
if type( list ) == 'table' then
v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' );
if origin[k] == nil then
origin[k] = ''; -- Empty string, not nil
end
elseif list ~= nil then
v, origin[k] = args[list], list;
else
-- maybe let through instead of raising an error?
-- v, origin[k] = args[k], k;
error( cfg.messages['unknown_argument_map'] .. ': ' .. k);
end
-- Empty strings, not nil;
if v == nil then
v = '';
origin[k] = '';
end
tbl = rawset( tbl, k, v );
return v;
end,
});
end
--[[--------------------------< N O W R A P _ D A T E >-------------------------
When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>.
When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span:
<span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY
DOES NOT yet support MMMM YYYY or any of the date ranges.
]]
local function nowrap_date (date)
local cap = '';
local cap2 = '';
if date:match("^%d%d%d%d%-%d%d%-%d%d$") then
date = utilities.substitute (cfg.presentation['nowrap1'], date);
elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then
cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$");
date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2});
end
return date;
end
--[[--------------------------< S E T _ T I T L E T Y P E >---------------------
This function sets default title types (equivalent to the citation including
|type=<default value>) for those templates that have defaults. Also handles the
special case where it is desirable to omit the title type from the rendered citation
(|type=none).
]]
local function set_titletype (cite_class, title_type)
if utilities.is_set (title_type) then
if 'none' == cfg.keywords_xlate[title_type] then
title_type = ''; -- if |type=none then type parameter not displayed
end
return title_type; -- if |type= has been set to any other value use that value
end
return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation
end
--[[--------------------------< S A F E _ J O I N >-----------------------------
Joins a sequence of strings together while checking for duplicate separation characters.
]]
local function safe_join( tbl, duplicate_char )
local f = {}; -- create a function table appropriate to type of 'duplicate character'
if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions
f.gsub = string.gsub
f.match = string.match
f.sub = string.sub
else -- for multi-byte characters use the ustring library functions
f.gsub = mw.ustring.gsub
f.match = mw.ustring.match
f.sub = mw.ustring.sub
end
local str = ''; -- the output string
local comp = ''; -- what does 'comp' mean?
local end_chr = '';
local trim;
for _, value in ipairs( tbl ) do
if value == nil then value = ''; end
if str == '' then -- if output string is empty
str = value; -- assign value to it (first time through the loop)
elseif value ~= '' then
if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup.
comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string)
else
comp = value;
end
-- typically duplicate_char is sepc
if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character?
-- Because individual string segments often (always?) begin with terminal punct for the
-- preceding segment: 'First element' .. 'sepc next element' .. etc.?
trim = false;
end_chr = f.sub(str, -1, -1); -- get the last character of the output string
-- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff?
if end_chr == duplicate_char then -- if same as separator
str = f.sub(str, 1, -2); -- remove it
elseif end_chr == "'" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc''
str = f.sub(str, 1, -4) .. "''"; -- remove them and add back ''
elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]''
trim = true; -- why? why do this and next differently from previous?
elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]''
trim = true; -- same question
end
elseif end_chr == "]" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink
trim = true;
elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link
trim = true;
elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link
trim = true;
elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title.
trim = true;
end
elseif end_chr == " " then -- if last char of output string is a space
if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space>
str = f.sub(str, 1, -3); -- remove them both
end
end
if trim then
if value ~= comp then -- value does not equal comp when value contains HTML markup
local dup2 = duplicate_char;
if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it
value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup
else
value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character
end
end
end
str = str .. value; -- add it to the output string
end
end
return str;
end
--[[--------------------------< I S _ S U F F I X >-----------------------------
returns true if suffix is properly formed Jr, Sr, or ordinal in the range 1–9.
Puncutation not allowed.
]]
local function is_suffix (suffix)
if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then
return true;
end
return false;
end
--[[--------------------< I S _ G O O D _ V A N C _ N A M E >-------------------
For Vancouver style, author/editor names are supposed to be rendered in Latin
(read ASCII) characters. When a name uses characters that contain diacritical
marks, those characters are to be converted to the corresponding Latin
character. When a name is written using a non-Latin alphabet or logogram, that
name is to be transliterated into Latin characters. The module doesn't do this
so editors may/must.
This test allows |first= and |last= names to contain any of the letters defined
in the four Unicode Latin character sets
[http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A
[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF
[http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F
[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F
|lastn= also allowed to contain hyphens, spaces, and apostrophes.
(http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
|firstn= also allowed to contain hyphens, spaces, apostrophes, and periods
This original test:
if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$")
or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then
was written outside of the code editor and pasted here because the code editor
gets confused between character insertion point and cursor position. The test has
been rewritten to use decimal character escape sequence for the individual bytes
of the Unicode characters so that it is not necessary to use an external editor
to maintain this code.
\195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls)
\195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls)
\195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B)
\199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B)
]]
local function is_good_vanc_name (last, first, suffix, position)
if not suffix then
if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix
first = first:match ('(.-)[,%s]+'); -- get name/initials
suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix
end
end
if utilities.is_set (suffix) then
if not is_suffix (suffix) then
add_vanc_error (cfg.err_msg_supl.suffix, position);
return false; -- not a name with an appropriate suffix
end
end
if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or
nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then
add_vanc_error (cfg.err_msg_supl['non-Latin char'], position);
return false; -- not a string of Latin characters; Vancouver requires Romanization
end;
return true;
end
--[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------
Attempts to convert names to initials in support of |name-list-style=vanc.
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period.
See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/.
Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered
as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/.
This code only accepts and understands generational suffix in the Vancouver format
because Roman numerals look like, and can be mistaken for, initials.
This function uses ustring functions because firstname initials may be any of the
Unicode Latin characters accepted by is_good_vanc_name ().
]]
local function reduce_to_initials(first, position)
local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$");
if not name then -- if not initials and a suffix
name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials?
end
if name then -- if first is initials with or without suffix
if 3 > mw.ustring.len (name) then -- if one or two initials
if suffix then -- if there is a suffix
if is_suffix (suffix) then -- is it legitimate?
return first; -- one or two initials and a valid suffix so nothing to do
else
add_vanc_error (cfg.err_msg_supl.suffix, position); -- one or two initials with invalid suffix so error message
return first; -- and return first unmolested
end
else
return first; -- one or two initials without suffix; nothing to do
end
end
end -- if here then name has 3 or more uppercase letters so treat them as a word
local initials, names = {}, {}; -- tables to hold name parts and initials
local i = 1; -- counter for number of initials
names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix
while names[i] do -- loop through the table
if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot)
names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present
if is_suffix (names[i]) then -- if a legitimate suffix
table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table
break; -- and done because suffix must fall at the end of a name
end -- no error message if not a suffix; possibly because of Romanization
end
if 3 > i then
table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table
end
i = i + 1; -- bump the counter
end
return table.concat(initials) -- Vancouver format does not include spaces.
end
--[[--------------------------< I N T E R W I K I _ P R E F I X E N _ G E T >----------------------------------
extract interwiki prefixen from <value>. Returns two one or two values:
false – no prefixen
nil – prefix exists but not recognized
project prefix, language prefix – when value has either of:
:<project>:<language>:<article>
:<language>:<project>:<article>
project prefix, nil – when <value> has only a known single-letter prefix
nil, language prefix – when <value> has only a known language prefix
accepts single-letter project prefixen: 'd' (wikidata), 's' (wikisource), and 'w' (wikipedia) prefixes; at this
writing, the other single-letter prefixen (b (wikibook), c (commons), m (meta), n (wikinews), q (wikiquote), and
v (wikiversity)) are not supported.
]]
local function interwiki_prefixen_get (value, is_link)
if not value:find (':%l+:') then -- if no prefix
return false; -- abandon; boolean here to distinguish from nil fail returns later
end
local prefix_patterns_linked_t = { -- sequence of valid interwiki and inter project prefixen
'^%[%[:([dsw]):(%l%l+):', -- wikilinked; project and language prefixes
'^%[%[:(%l%l+):([dsw]):', -- wikilinked; language and project prefixes
'^%[%[:([dsw]):', -- wikilinked; project prefix
'^%[%[:(%l%l+):', -- wikilinked; language prefix
}
local prefix_patterns_unlinked_t = { -- sequence of valid interwiki and inter project prefixen
'^:([dsw]):(%l%l+):', -- project and language prefixes
'^:(%l%l+):([dsw]):', -- language and project prefixes
'^:([dsw]):', -- project prefix
'^:(%l%l+):', -- language prefix
}
local cap1, cap2;
for _, pattern in ipairs ((is_link and prefix_patterns_linked_t) or prefix_patterns_unlinked_t) do
cap1, cap2 = value:match (pattern);
if cap1 then
break; -- found a match so stop looking
end
end
if cap1 and cap2 then -- when both then :project:language: or :language:project: (both forms allowed)
if 1 == #cap1 then -- length == 1 then :project:language:
if cfg.inter_wiki_map[cap2] then -- is language prefix in the interwiki map?
return cap1, cap2; -- return interwiki project and interwiki language
end
else -- here when :language:project:
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return cap2, cap1; -- return interwiki project and interwiki language
end
end
return nil; -- unknown interwiki language
elseif not (cap1 or cap2) then -- both are nil?
return nil; -- we got something that looks like a project prefix but isn't; return fail
elseif 1 == #cap1 then -- here when one capture
return cap1, nil; -- length is 1 so return project, nil language
else -- here when one capture and its length it more than 1
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return nil, cap1; -- return nil project, language
end
end
end
--[[--------------------------< L I S T _ P E O P L E >--------------------------
Formats a list of people (authors, contributors, editors, interviewers, translators)
names in the list will be linked when
|<name>-link= has a value
|<name>-mask- does NOT have a value; masked names are presumed to have been
rendered previously so should have been linked there
when |<name>-mask=0, the associated name is not rendered
]]
local function list_people (control, people, etal)
local sep;
local namesep;
local format = control.format;
local maximum = control.maximum;
local name_list = {};
if 'vanc' == format then -- Vancouver-like name styling?
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma
namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space
else
sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon
namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space>
end
if sep:sub (-1, -1) ~= " " then sep = sep .. " " end
if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names
for i, person in ipairs (people) do
if utilities.is_set (person.last) then
local mask = person.mask;
local one;
local sep_one = sep;
if utilities.is_set (maximum) and i > maximum then
etal = true;
break;
end
if mask then
local n = tonumber (mask); -- convert to a number if it can be converted; nil else
if n then
one = 0 ~= n and string.rep("—", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name
person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil
else
one = mask; -- replace name with mask text (must include name-list separator)
sep_one = " "; -- modify name-list separator
end
else
one = person.last; -- get surname
local first = person.first -- get given name
if utilities.is_set (first) then
if ("vanc" == format) then -- if Vancouver format
one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
if not person.corporate and is_good_vanc_name (one, first, nil, i) then -- and name is all Latin characters; corporate authors not tested
first = reduce_to_initials (first, i); -- attempt to convert first name(s) to initials
end
end
one = one .. namesep .. first;
end
end
if utilities.is_set (person.link) then
one = utilities.make_wikilink (person.link, one); -- link author/editor
end
if one then -- if <one> has a value (name, mdash replacement, or mask text replacement)
local proj, tag = interwiki_prefixen_get (one, true); -- get the interwiki prefixen if present
if 'w' == proj and ('Wikipedia' == mw.site.namespaces.Project['name']) then
proj = nil; -- for stuff like :w:de:<article>, :w is unnecessary TODO: maint cat?
end
if proj then
proj = ({['d'] = 'Wikidata', ['s'] = 'Wikisource', ['w'] = 'Wikipedia'})[proj]; -- :w (wikipedia) for linking from a non-wikipedia project
if proj then
one = one .. utilities.wrap_style ('interproj', proj); -- add resized leading space, brackets, static text, language name
tag = nil; -- unset; don't do both project and language
end
end
if tag == cfg.this_wiki_code then
tag = nil; -- stuff like :en:<article> at en.wiki is pointless TODO: maint cat?
end
if tag then
local lang = cfg.lang_tag_remap[tag] or cfg.mw_languages_by_tag_t[tag];
if lang then -- error messaging done in extract_names() where we know parameter names
one = one .. utilities.wrap_style ('interwiki', lang); -- add resized leading space, brackets, static text, language name
end
end
table.insert (name_list, one); -- add it to the list of names
table.insert (name_list, sep_one); -- add the proper name-list separator
end
end
end
local count = #name_list / 2; -- (number of names + number of separators) divided by 2
if 0 < count then
if 1 < count and not etal then
if 'amp' == format then
name_list[#name_list-2] = " & "; -- replace last separator with ampersand text
elseif 'and' == format then
if 2 == count then
name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text
else
name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text
end
end
end
name_list[#name_list] = nil; -- erase the last separator
end
local result = table.concat (name_list); -- construct list
if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list
result = result .. sep .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al.
end
return result, count; -- return name-list string and count of number of names (count used for editor names only)
end
--[[--------------------< M A K E _ C I T E R E F _ I D >-----------------------
Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise
returns an empty string.
namelist is one of the contributor-, author-, or editor-name lists chosen in that
order. year is Year or anchor_year.
]]
local function make_citeref_id (namelist, year)
local names={}; -- a table for the one to four names and year
for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names
names[i] = v.last
if i == 4 then break end -- if four then done
end
table.insert (names, year); -- add the year at the end
local id = table.concat(names); -- concatenate names and year for CITEREF id
if utilities.is_set (id) then -- if concatenation is not an empty string
return "CITEREF" .. id; -- add the CITEREF portion
else
return ''; -- return an empty string; no reason to include CITEREF id in this citation
end
end
--[[--------------------------< C I T E _ C L A S S _A T T R I B U T E _M A K E >------------------------------
construct <cite> tag class attribute for this citation.
<cite_class> – config.CitationClass from calling template
<mode> – value from |mode= parameter
]]
local function cite_class_attribute_make (cite_class, mode)
local class_t = {};
table.insert (class_t, 'citation'); -- required for blue highlight
if 'citation' ~= cite_class then
table.insert (class_t, cite_class); -- identify this template for user css
table.insert (class_t, utilities.is_set (mode) and mode or 'cs1'); -- identify the citation style for user css or javascript
else
table.insert (class_t, utilities.is_set (mode) and mode or 'cs2'); -- identify the citation style for user css or javascript
end
for _, prop_key in ipairs (z.prop_keys_t) do
table.insert (class_t, prop_key); -- identify various properties for user css or javascript
end
return table.concat (class_t, ' '); -- make a big string and done
end
--[[---------------------< N A M E _ H A S _ E T A L >--------------------------
Evaluates the content of name parameters (author, editor, etc.) for variations on
the theme of et al. If found, the et al. is removed, a flag is set to true and
the function returns the modified name and the flag.
This function never sets the flag to false but returns its previous state because
it may have been set by previous passes through this function or by the associated
|display-<names>=etal parameter
]]
local function name_has_etal (name, etal, nocat, param)
if utilities.is_set (name) then -- name can be nil in which case just return
local patterns = cfg.et_al_patterns; -- get patterns from configuration
for _, pattern in ipairs (patterns) do -- loop through all of the patterns
if name:match (pattern) then -- if this 'et al' pattern is found in name
name = name:gsub (pattern, ''); -- remove the offending text
etal = true; -- set flag (may have been set previously here or by |display-<names>=etal)
if not nocat then -- no categorization for |vauthors=
utilities.set_message ('err_etal', {param}); -- and set an error if not added
end
end
end
end
return name, etal;
end
--[[---------------------< N A M E _ I S _ N U M E R I C >----------------------
Add maint cat when name parameter value does not contain letters. Does not catch
mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the
current version of this test but |first=(1888) is caught.
returns nothing
]]
local function name_is_numeric (name, list_name)
if utilities.is_set (name) then
if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters
utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template
end
end
end
--[[-----------------< N A M E _ H A S _ M U L T _ N A M E S >------------------
Evaluates the content of last/surname (authors etc.) parameters for multiple names.
Multiple names are indicated if there is more than one comma or any "unescaped"
semicolons. Escaped semicolons are ones used as part of selected HTML entities.
If the condition is met, the function adds the multiple name maintenance category.
Same test for first except that commas should not appear in given names (MOS:JR says
that the generational suffix does not take a separator character). Titles, degrees,
postnominals, affiliations, all normally comma separated don't belong in a citation.
<name> – name parameter value
<list_name> – AuthorList, EditorList, etc
<limit> – number of allowed commas; 1 (default) for surnames; 0 for given names
returns nothing
]]
local function name_has_mult_names (name, list_name, limit)
local _, commas, semicolons, nbsps;
limit = limit and limit or 1;
if utilities.is_set (name) then
_, commas = name:gsub (',', ''); -- count the number of commas
_, semicolons = name:gsub (';', ''); -- count the number of semicolons
-- nbsps probably should be its own separate count rather than merged in
-- some way with semicolons because Lua patterns do not support the
-- grouping operator that regex does, which means there is no way to add
-- more entities to escape except by adding more counts with the new
-- entities
_, nbsps = name:gsub (' ',''); -- count nbsps
-- There is exactly 1 semicolon per entity, so subtract nbsps
-- from semicolons to 'escape' them. If additional entities are added,
-- they also can be subtracted.
if limit < commas or 0 < (semicolons - nbsps) then
utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message
end
end
end
--[=[-------------------------< I S _ G E N E R I C >----------------------------------------------------------
Compares values assigned to various parameters according to the string provided as <item> in the function call.
<item> can have on of two values:
'generic_names' – for name-holding parameters: |last=, |first=, |editor-last=, etc
'generic_titles' – for |title=
There are two types of generic tests. The 'accept' tests look for a pattern that should not be rejected by the
'reject' test. For example,
|author=[[John Smith (author)|Smith, John]]
would be rejected by the 'author' reject test. But piped wikilinks with 'author' disambiguation should not be
rejected so the 'accept' test prevents that from happening. Accept tests are always performed before reject
tests.
Each of the 'accept' and 'reject' sequence tables hold tables for en.wiki (['en']) and local.wiki (['local'])
that each can hold a test sequence table The sequence table holds, at index [1], a test pattern, and, at index
[2], a boolean control value. The control value tells string.find() or mw.ustring.find() to do plain-text search (true)
or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so
that we don't run out of processing time on very large articles.
Returns
true when a reject test finds the pattern or string
false when an accept test finds the pattern or string
nil else
]=]
local function is_generic (item, value, wiki)
local test_val;
local str_lower = { -- use string.lower() for en.wiki (['en']) and use mw.ustring.lower() or local.wiki (['local'])
['en'] = string.lower,
['local'] = mw.ustring.lower,
}
local str_find = { -- use string.find() for en.wiki (['en']) and use mw.ustring.find() or local.wiki (['local'])
['en'] = string.find,
['local'] = mw.ustring.find,
}
local function test (val, test_t, wiki) -- local function to do the testing; <wiki> selects lower() and find() functions
val = test_t[2] and str_lower[wiki](value) or val; -- when <test_t[2]> set to 'true', plaintext search using lowercase value
return str_find[wiki] (val, test_t[1], 1, test_t[2]); -- return nil when not found or matched
end
local test_types_t = {'accept', 'reject'}; -- test accept patterns first, then reject patterns
local wikis_t = {'en', 'local'}; -- do tests for each of these keys; en.wiki first, local.wiki second
for _, test_type in ipairs (test_types_t) do -- for each test type
for _, generic_value in pairs (cfg.special_case_translation[item][test_type]) do -- spin through the list of generic value fragments to accept or reject
for _, wiki in ipairs (wikis_t) do
if generic_value[wiki] then
if test (value, generic_value[wiki], wiki) then -- go do the test
return ('reject' == test_type); -- param value rejected, return true; false else
end
end
end
end
end
end
--[[--------------------------< N A M E _ I S _ G E N E R I C >------------------------------------------------
calls is_generic() to determine if <name> is a 'generic name' listed in cfg.generic_names; <name_alias> is the
parameter name used in error messaging
]]
local function name_is_generic (name, name_alias)
if not added_generic_name_errs and is_generic ('generic_names', name) then
utilities.set_message ('err_generic_name', name_alias); -- set an error message
added_generic_name_errs = true;
end
end
--[[--------------------------< N A M E _ C H E C K S >--------------------------------------------------------
This function calls various name checking functions used to validate the content of the various name-holding parameters.
]]
local function name_checks (last, first, list_name, last_alias, first_alias)
local accept_name;
if utilities.is_set (last) then
last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last>
if not accept_name then -- <last> not wrapped in accept-as-written markup
name_has_mult_names (last, list_name); -- check for multiple names in the parameter
name_is_numeric (last, list_name); -- check for names that are composed of digits and punctuation
name_is_generic (last, last_alias); -- check for names found in the generic names list
end
end
if utilities.is_set (first) then
first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first>
if not accept_name then -- <first> not wrapped in accept-as-written markup
name_has_mult_names (first, list_name, 0); -- check for multiple names in the parameter; 0 is number of allowed commas in a given name
name_is_numeric (first, list_name); -- check for names that are composed of digits and punctuation
name_is_generic (first, first_alias); -- check for names found in the generic names list
end
local wl_type, D = utilities.is_wikilink (first);
if 0 ~= wl_type then
first = D;
utilities.set_message ('err_bad_paramlink', first_alias);
end
end
return last, first; -- done
end
--[[----------------------< E X T R A C T _ N A M E S >-------------------------
Gets name list from the input arguments
Searches through args in sequential order to find |lastn= and |firstn= parameters
(or their aliases), and their matching link and mask parameters. Stops searching
when both |lastn= and |firstn= are not found in args after two sequential attempts:
found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the
search is done.
This function emits an error message when there is a |firstn= without a matching
|lastn=. When there are 'holes' in the list of last names, |last1= and |last3=
are present but |last2= is missing, an error message is emitted. |lastn= is not
required to have a matching |firstn=.
When an author or editor parameter contains some form of 'et al.', the 'et al.'
is stripped from the parameter and a flag (etal) returned that will cause list_people()
to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps
'et al.' out of the template's metadata. When this occurs, an error is emitted.
]]
local function extract_names(args, list_name)
local names = {}; -- table of names
local last; -- individual name components
local first;
local link;
local mask;
local i = 1; -- loop counter/indexer
local n = 1; -- output table indexer
local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors)
local etal = false; -- return value set to true when we find some form of et al. in an author parameter
local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging
while true do
last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1
first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i );
link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i );
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
if last then -- error check |lastn= alias for unknown interwiki link prefix; done here because this is where we have the parameter name
local project, language = interwiki_prefixen_get (last, true); -- true because we expect interwiki links in |lastn= to be wikilinked
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', last_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
last = utilities.remove_wiki_link (last); -- remove wikilink markup; show display value only
end
end
if link then -- error check |linkn= alias for unknown interwiki link prefix
local project, language = interwiki_prefixen_get (link, false); -- false because wiki links in |author-linkn= is an error
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', link_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
link = nil; -- unset so we don't link
link_alias = nil;
end
end
last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al.
first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al.
last, first = name_checks (last, first, list_name, last_alias, first_alias); -- multiple names, extraneous annotation, etc. checks
if first and not last then -- if there is a firstn without a matching lastn
local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias
utilities.set_message ('err_first_missing_last', {
first_alias, -- param name of alias missing its mate
first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form
}); -- add this error message
elseif not first and not last then -- if both firstn and lastn aren't found, are we done?
count = count + 1; -- number of times we haven't found last and first
if 2 <= count then -- two missing names and we give up
break; -- normal exit or there is a two-name hole in the list; can't tell which
end
else -- we have last with or without a first
local result;
link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup
if first then
link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup
end
names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only)
n = n + 1; -- point to next location in the names table
if 1 == count then -- if the previous name was missing
utilities.set_message ('err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}); -- add this error message
end
count = 0; -- reset the counter, we're looking for two consecutive missing names
end
i = i + 1; -- point to next args location
end
return names, etal; -- all done, return our list of names and the etal flag
end
--[[--------------------------< N A M E _ T A G _ G E T >------------------------------------------------------
attempt to decode |language=<lang_param> and return language name and matching tag; nil else.
This function looks for:
<lang_param> as a tag in cfg.lang_tag_remap{}
<lang_param> as a name in cfg.lang_name_remap{}
<lang_param> as a name in cfg.mw_languages_by_name_t
<lang_param> as a tag in cfg.mw_languages_by_tag_t
when those fail, presume that <lang_param> is an IETF-like tag that MediaWiki does not recognize. Strip all
script, region, variant, whatever subtags from <lang_param> to leave just a two or three character language tag
and look for the new <lang_param> in cfg.mw_languages_by_tag_t{}
on success, returns name (in properly capitalized form) and matching tag (in lowercase); on failure returns nil
]]
local function name_tag_get (lang_param)
local lang_param_lc = mw.ustring.lower (lang_param); -- use lowercase as an index into the various tables
local name;
local tag;
name = cfg.lang_tag_remap[lang_param_lc]; -- assume <lang_param_lc> is a tag; attempt to get remapped language name
if name then -- when <name>, <lang_param> is a tag for a remapped language name
return name, lang_param_lc; -- so return <name> from remap and <lang_param_lc>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- still assuming that <lang_param_lc> is a tag; strip script, region, variant subtags
name = cfg.lang_tag_remap[tag]; -- attempt to get remapped language name with language subtag only
if name then -- when <name>, <tag> is a tag for a remapped language name
return name, tag; -- so return <name> from remap and <tag>
end
if cfg.lang_name_remap[lang_param_lc] then -- not a tag, assume <lang_param_lc> is a name; attempt to get remapped language tag
return cfg.lang_name_remap[lang_param_lc][1], cfg.lang_name_remap[lang_param_lc][2]; -- for this <lang_param_lc>, return a (possibly) new name and appropriate tag
end
tag = cfg.mw_languages_by_name_t[lang_param_lc]; -- assume that <lang_param_lc> is a language name; attempt to get its matching tag
if tag then
return cfg.mw_languages_by_tag_t[tag], tag; -- <lang_param_lc> is a name so return the name from the table and <tag>
end
name = cfg.mw_languages_by_tag_t[lang_param_lc]; -- assume that <lang_param_lc> is a tag; attempt to get its matching language name
if name then
return name, lang_param_lc; -- <lang_param_lc> is a tag so return it and <name>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- is <lang_param_lc> an IETF-like tag that MediaWiki doesn't recognize? <tag> gets the language subtag; nil else
if tag then
name = cfg.mw_languages_by_tag_t[tag]; -- attempt to get a language name using the shortened <tag>
if name then
return name, tag; -- <lang_param_lc> is an unrecognized IETF-like tag so return <name> and language subtag
end
end
end
--[[-------------------< L A N G U A G E _ P A R A M E T E R >------------------
Gets language name from a provided two- or three-character ISO 639 code. If a code
is recognized by MediaWiki, use the returned name; if not, then use the value that
was provided with the language parameter.
When |language= contains a recognized language (either code or name), the page is
assigned to the category for that code: Category:Norwegian-language sources (no).
For valid three-character code languages, the page is assigned to the single category
for '639-2' codes: Category:CS1 ISO 639-2 language sources.
Languages that are the same as the local wiki are not categorized. MediaWiki does
not recognize three-character equivalents of two-character codes: code 'ar' is
recognized but code 'ara' is not.
This function supports multiple languages in the form |language=nb, French, th
where the language names or codes are separated from each other by commas with
optional space characters.
]]
local function language_parameter (lang)
local tag; -- some form of IETF-like language tag; language subtag with optional region, sript, vatiant, etc subtags
local lang_subtag; -- ve populates |language= with mostly unecessary region subtags the MediaWiki does not recognize; this is the base language subtag
local name; -- the language name
local language_list = {}; -- table of language names to be rendered
local names_t = {}; -- table made from the value assigned to |language=
local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name
names_t = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list
for _, lang in ipairs (names_t) do -- reuse lang here because we don't yet know if lang is a language name or a language tag
name, tag = name_tag_get (lang); -- attempt to get name/tag pair for <lang>; <name> has proper capitalization; <tag> is lowercase
if utilities.is_set (tag) then
lang_subtag = tag:gsub ('^(%a%a%a?)%-.*', '%1'); -- for categorization, strip any IETF-like tags from language tag
if cfg.this_wiki_code ~= lang_subtag then -- when the language is not the same as this wiki's language
if 2 == lang_subtag:len() then -- and is a two-character tag
utilities.add_prop_cat ('foreign-lang-source', {name, tag}, lang_subtag); -- categorize it; tag appended to allow for multiple language categorization
else -- or is a recognized language (but has a three-character tag)
utilities.add_prop_cat ('foreign-lang-source-2', {lang_subtag}, lang_subtag); -- categorize it differently TODO: support multiple three-character tag categories per cs1|2 template?
end
elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled
utilities.add_prop_cat ('local-lang-source', {name, lang_subtag}); -- categorize it
end
else
name = lang; -- return whatever <lang> has so that we show something
utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added
end
table.insert (language_list, name);
name = ''; -- so we can reuse it
end
name = utilities.make_sep_list (#language_list, language_list);
if (1 == #language_list) and (lang_subtag == cfg.this_wiki_code) then -- when only one language, find lang name in this wiki lang name; for |language=en-us, 'English' in 'American English'
return ''; -- if one language and that language is this wiki's return an empty string (no annotation)
end
return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)'
--[[ TODO: should only return blank or name rather than full list
so we can clean up the bunched parenthetical elements Language, Type, Format
]]
end
--[[-----------------------< S E T _ C S _ S T Y L E >--------------------------
Gets the default CS style configuration for the given mode.
Returns default separator and either postscript as passed in or the default.
In CS1, the default postscript and separator are '.'.
In CS2, the default postscript is the empty string and the default separator is ','.
]]
local function set_cs_style (postscript, mode)
if utilities.is_set(postscript) then
-- emit a maintenance message if user postscript is the default cs1 postscript
-- we catch the opposite case for cs2 in set_style
if mode == 'cs1' and postscript == cfg.presentation['ps_' .. mode] then
utilities.set_message ('maint_postscript');
end
else
postscript = cfg.presentation['ps_' .. mode];
end
return cfg.presentation['sep_' .. mode], postscript;
end
--[[--------------------------< S E T _ S T Y L E >-----------------------------
Sets the separator and postscript styles. Checks the |mode= first and the
#invoke CitationClass second. Removes the postscript if postscript == none.
]]
local function set_style (mode, postscript, cite_class)
local sep;
if 'cs2' == mode then
sep, postscript = set_cs_style (postscript, 'cs2');
elseif 'cs1' == mode then
sep, postscript = set_cs_style (postscript, 'cs1');
elseif 'citation' == cite_class then
sep, postscript = set_cs_style (postscript, 'cs2');
else
sep, postscript = set_cs_style (postscript, 'cs1');
end
if cfg.keywords_xlate[postscript:lower()] == 'none' then
-- emit a maintenance message if user postscript is the default cs2 postscript
-- we catch the opposite case for cs1 in set_cs_style
if 'cs2' == mode or 'citation' == cite_class then
utilities.set_message ('maint_postscript');
end
postscript = '';
end
return sep, postscript
end
--[=[-------------------------< I S _ P D F >-----------------------------------
Determines if a URL has the file extension that is one of the PDF file extensions
used by [[MediaWiki:Common.css]] when applying the PDF icon to external links.
returns true if file extension is one of the recognized extensions, else false
]=]
local function is_pdf (url)
return url:match ('%.pdf$') or url:match ('%.PDF$') or
url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or
url:match ('%.PDF#') or url:match ('%.pdf#');
end
--[[--------------------------< S T Y L E _ F O R M A T >-----------------------
Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message
if the format parameter does not have a matching URL parameter. If the format parameter
is not set and the URL contains a file extension that is recognized as a PDF document
by MediaWiki's commons.css, this code will set the format parameter to (PDF) with
the appropriate styling.
]]
local function style_format (format, url, fmt_param, url_param)
if utilities.is_set (format) then
format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize
if not utilities.is_set (url) then
utilities.set_message ('err_format_missing_url', {fmt_param, url_param}); -- add an error message
end
elseif is_pdf (url) then -- format is not set so if URL is a PDF file then
format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF
else
format = ''; -- empty string for concatenation
end
return format;
end
--[[---------------------< G E T _ D I S P L A Y _ N A M E S >------------------
Returns a number that defines the number of names displayed for author and editor
name lists and a Boolean flag to indicate when et al. should be appended to the name list.
When the value assigned to |display-xxxxors= is a number greater than or equal to zero,
return the number and the previous state of the 'etal' flag (false by default
but may have been set to true if the name list contains some variant of the text 'et al.').
When the value assigned to |display-xxxxors= is the keyword 'etal', return a number
that is one greater than the number of authors in the list and set the 'etal' flag true.
This will cause the list_people() to display all of the names in the name list followed by 'et al.'
In all other cases, returns nil and the previous state of the 'etal' flag.
inputs:
max: A['DisplayAuthors'] or A['DisplayEditors'], etc; a number or some flavor of etal
count: #a or #e
list_name: 'authors' or 'editors'
etal: author_etal or editor_etal
This function sets an error message when |display-xxxxors= value greater than or equal to number of names but
not when <max> comes from {{cs1 config}} global settings. When using global settings, <param> is set to the
keyword 'cs1 config' which is used to supress the normal error. Error is suppressed because it is to be expected
that some citations in an article will have the same or fewer names that the limit specified in {{cs1 config}}.
]]
local function get_display_names (max, count, list_name, etal, param)
if utilities.is_set (max) then
if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
max = count + 1; -- number of authors + 1 so display all author name plus et al.
etal = true; -- overrides value set by extract_names()
elseif max:match ('^%d+$') then -- if is a string of numbers
max = tonumber (max); -- make it a number
if (max >= count) and ('cs1 config' ~= param) then -- error when local |display-xxxxors= value greater than or equal to number of names; not an error when using global setting
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil;
end
else -- not a valid keyword or number
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil; -- unset; as if |display-xxxxors= had not been set
end
end
return max, etal;
end
--[[----------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >---------------
Adds error if |page=, |pages=, |quote-page=, |quote-pages= has what appears to be
some form of p. or pp. abbreviation in the first characters of the parameter content.
check page for extraneous p, p., pp, pp., pg, pg. at start of parameter value:
good pattern: '^P[^%.P%l]' matches when page begins PX or P# but not Px
where x and X are letters and # is a digit
bad pattern: '^[Pp][PpGg]' matches when page begins pp, pP, Pp, PP, pg, pG, Pg, PG
]]
local function extra_text_in_page_check (val, name)
if not val:match (cfg.vol_iss_pg_patterns.good_ppattern) then
for _, pattern in ipairs (cfg.vol_iss_pg_patterns.bad_ppatterns) do -- spin through the selected sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message ('err_extra_text_pages', name); -- add error message
return; -- and done
end
end
end
end
--[[--------------------------< E X T R A _ T E X T _ I N _ V O L _ I S S _ C H E C K >------------------------
Adds error if |volume= or |issue= has what appears to be some form of redundant 'type' indicator.
For |volume=:
'V.', or 'Vol.' (with or without the dot) abbreviations or 'Volume' in the first characters of the parameter
content (all case insensitive). 'V' and 'v' (without the dot) are presumed to be roman numerals so
are allowed.
For |issue=:
'No.', 'I.', 'Iss.' (with or without the dot) abbreviations, or 'Issue' in the first characters of the
parameter content (all case insensitive).
Single character values ('v', 'i', 'n') allowed when not followed by separator character ('.', ':', '=', or
whitespace character) – param values are trimmed of whitespace by MediaWiki before delivered to the module.
<val> is |volume= or |issue= parameter value
<name> is |volume= or |issue= parameter name for error message
<selector> is 'v' for |volume=, 'i' for |issue=
sets error message on failure; returns nothing
]]
local function extra_text_in_vol_iss_check (val, name, selector)
if not utilities.is_set (val) then
return;
end
local patterns = 'v' == selector and cfg.vol_iss_pg_patterns.vpatterns or cfg.vol_iss_pg_patterns.ipatterns;
local handler = 'v' == selector and 'err_extra_text_volume' or 'err_extra_text_issue';
val = val:lower(); -- force parameter value to lower case
for _, pattern in ipairs (patterns) do -- spin through the selected sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message (handler, name); -- add error message
return; -- and done
end
end
end
--[=[-------------------------< G E T _ V _ N A M E _ T A B L E >----------------------------------------------
split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled
parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the
rendered citation and in the metadata. Individual author names may be wikilinked
|vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.))
]=]
local function get_v_name_table (vparam, output_table, output_link_table)
local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas
local wl_type, label, link; -- wl_type not used here; just a placeholder
local i = 1;
while name_table[i] do
if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses
local name = name_table[i];
i = i + 1; -- bump indexer to next segment
while name_table[i] do
name = name .. ', ' .. name_table[i]; -- concatenate with previous segments
if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses
break; -- and done reassembling so
end
i = i + 1; -- bump indexer
end
table.insert (output_table, name); -- and add corporate name to the output table
table.insert (output_link_table, ''); -- no wikilink
else
wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
table.insert (output_table, label); -- add this name
if 1 == wl_type then
table.insert (output_link_table, label); -- simple wikilink [[D]]
else
table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string
end
end
i = i + 1;
end
return output_table;
end
--[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >--------------------------------
This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and
|xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does.
Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names
may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance
tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests.
Supports generational suffixes Jr, 2nd, 3rd, 4th–6th.
This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials.
]]
local function parse_vauthors_veditors (args, vparam, list_name)
local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn=
local v_name_table = {};
local v_link_table = {}; -- when name is wikilinked, targets go in this table
local etal = false; -- return value set to true when we find some form of et al. vauthors parameter
local last, first, link, mask, suffix;
local corporate = false;
vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period)
v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas
for i, v_name in ipairs(v_name_table) do
first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor
local accept_name;
v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name>
if accept_name then
last = v_name;
corporate = true; -- flag used in list_people()
elseif string.find(v_name, "%s") then
if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters;
add_vanc_error (cfg.err_msg_supl.punctuation, i);
end
local lastfirstTable = {}
lastfirstTable = mw.text.split(v_name, "%s+")
first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix
if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters
suffix = first; -- not initials so assume that whatever we got is a generational suffix
first = table.remove(lastfirstTable); -- get what should be the initials from the table
end
last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix
if not utilities.is_set (last) then
first = ''; -- unset
last = v_name; -- last empty because something wrong with first
add_vanc_error (cfg.err_msg_supl.name, i);
end
if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then
add_vanc_error (cfg.err_msg_supl['missing comma'], i); -- matches last II last; the case when a comma is missing
end
if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test
add_vanc_error (cfg.err_msg_supl.initials, i); -- matches a space between two initials
end
else
last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this?
end
if utilities.is_set (first) then
if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else
add_vanc_error (cfg.err_msg_supl.initials, i); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials
end
is_good_vanc_name (last, first, suffix, i); -- check first and last before restoring the suffix which may have a non-Latin digit
if utilities.is_set (suffix) then
first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials
suffix = ''; -- unset so we don't add this suffix to all subsequent names
end
else
if not corporate then
is_good_vanc_name (last, '', nil, i);
end
end
link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i];
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list
end
return names, etal; -- all done, return our list of names
end
--[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or
select one of |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list.
Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest;
|editorn= (and aliases) highest and |veditors= lowest (support for |editors= withdrawn)
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second
test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better
way to do this, I just haven't discovered what that way is.
Emits an error message when more than one xxxxor name source is provided.
In this function, vxxxxors = vauthors or veditors; xxxxors = authors as appropriate.
]]
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)
local lastfirst = false;
if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ...
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors=
utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then
lastfirst = true;
end
if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions
(utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or
(true == lastfirst and utilities.is_set (xxxxors)) then
local err_name;
if 'AuthorList' == list_name then -- figure out which name should be used in error message
err_name = 'author';
else
err_name = 'editor';
end
utilities.set_message ('err_redundant_parameters', err_name .. '-name-list parameters'); -- add error message
end
if true == lastfirst then return 1 end; -- return a number indicating which author name source to use
if utilities.is_set (vxxxxors) then return 2 end;
if utilities.is_set (xxxxors) then return 3 end;
return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last
end
--[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------
This function is used to validate a parameter's assigned value for those parameters that have only a limited number
of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing
or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one
of the list of allowed values returns the translated value; else, emits an error message and returns the value
specified by ret_val.
TODO: explain <invert>
]]
local function is_valid_parameter_value (value, name, possible, ret_val, invert)
if not utilities.is_set (value) then
return ret_val; -- an empty parameter is ok
end
if (not invert and utilities.in_array (value, possible)) then -- normal; <value> is in <possible> table
return cfg.keywords_xlate[value]; -- return translation of parameter keyword
elseif invert and not utilities.in_array (value, possible) then -- invert; <value> is not in <possible> table
return value; -- return <value> as it is
else
utilities.set_message ('err_invalid_param_val', {name, value}); -- not an allowed value so add error message
return ret_val;
end
end
--[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >----------------------------------------
This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space
when the last character is not a sepc character or when the last three characters are not sepc followed by two
closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a
single space character.
]]
local function terminate_name_list (name_list, sepc)
if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated
return name_list; -- just return the name list
elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char
return name_list .. " "; -- don't add another
else
return name_list .. sepc .. ' '; -- otherwise terminate the name list
end
end
--[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >-----------------------------------------
returns the concatenation of the formatted volume and issue (or journal article number) parameters as a single
string; or formatted volume or formatted issue, or an empty string if neither are set.
]]
local function format_volume_issue (volume, issue, article, cite_class, origin, sepc, lower)
if not utilities.is_set (volume) and not utilities.is_set (issue) and not utilities.is_set (article) then
return '';
end
-- same condition as in format_pages_sheets()
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
local is_numeric_vol = volume and (volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$')); -- is only uppercase roman numerals or only digits?
local is_long_vol = volume and (4 < mw.ustring.len(volume)); -- is |volume= value longer than 4 characters?
if volume and (not is_numeric_vol and is_long_vol) then -- when not all digits or Roman numerals, is |volume= longer than 4 characters?
utilities.add_prop_cat ('long-vol'); -- yes, add properties cat
end
if is_journal then -- journal-style formatting
local vol = '';
if utilities.is_set (volume) then
if is_numeric_vol then -- |volume= value all digits or all uppercase Roman numerals?
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, volume}); -- render in bold face
elseif is_long_vol then -- not all digits or Roman numerals; longer than 4 characters?
vol = utilities.substitute (cfg.messages['j-vol'], {sepc, utilities.hyphen_to_dash (volume)}); -- not bold
else -- four or fewer characters
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, utilities.hyphen_to_dash (volume)}); -- bold
end
end
vol = vol .. (utilities.is_set (issue) and utilities.substitute (cfg.messages['j-issue'], issue) or '')
vol = vol .. (utilities.is_set (article) and utilities.substitute (cfg.messages['j-article-num'], article) or '')
return vol;
end
if 'podcast' == cite_class and utilities.is_set (issue) then
return wrap_msg ('issue', {sepc, issue}, lower);
end
if 'conference' == cite_class and utilities.is_set (article) then -- |article-number= supported only in journal and conference cites
if utilities.is_set (volume) and utilities.is_set (article) then -- both volume and article number
return wrap_msg ('vol-art', {sepc, utilities.hyphen_to_dash (volume), article}, lower);
elseif utilities.is_set (article) then -- article number alone; when volume alone, handled below
return wrap_msg ('art', {sepc, article}, lower);
end
end
-- all other types of citation
if utilities.is_set (volume) and utilities.is_set (issue) then
return wrap_msg ('vol-no', {sepc, utilities.hyphen_to_dash (volume), issue}, lower);
elseif utilities.is_set (volume) then
return wrap_msg ('vol', {sepc, utilities.hyphen_to_dash (volume)}, lower);
else
return wrap_msg ('issue', {sepc, issue}, lower);
end
end
--[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >-----------------------------------------
adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings.
The return order is:
page, pages, sheet, sheets
Singular has priority over plural when both are provided.
]]
local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower)
if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators
if utilities.is_set (sheet) then
if 'journal' == origin then
return '', '', wrap_msg ('j-sheet', sheet, lower), '';
else
return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), '';
end
elseif utilities.is_set (sheets) then
if 'journal' == origin then
return '', '', '', wrap_msg ('j-sheets', sheets, lower);
else
return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower);
end
end
end
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
if utilities.is_set (page) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', '';
elseif not nopp then
return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', '';
else
return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', '';
end
elseif utilities.is_set (pages) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', '';
elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number
return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', '';
elseif not nopp then
return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', '';
else
return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', '';
end
end
return '', '', '', ''; -- return empty strings
end
--[[--------------------------< I N S O U R C E _ L O C _ G E T >----------------------------------------------
returns one of the in-source locators: page, pages, or at.
If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text
for use in COinS. This COinS thing is done because here we convert an interwiki-link to an external link and
add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it?
TODO: add support for sheet and sheets?; streamline;
TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned
to a new name)?
]]
local function insource_loc_get (page, page_orig, pages, pages_orig, at)
local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?)
if utilities.is_set (page) then
if utilities.is_set (pages) or utilities.is_set (at) then
pages = ''; -- unset the others
at = '';
end
extra_text_in_page_check (page, page_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label
if ws_url then
page = external_link (ws_url, ws_label .. ' ', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page});
coins_pages = ws_label;
end
elseif utilities.is_set (pages) then
if utilities.is_set (at) then
at = ''; -- unset
end
extra_text_in_page_check (pages, pages_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label
if ws_url then
pages = external_link (ws_url, ws_label .. ' ', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages});
coins_pages = ws_label;
end
elseif utilities.is_set (at) then
ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label
if ws_url then
at = external_link (ws_url, ws_label .. ' ', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at});
coins_pages = ws_label;
end
end
return page, pages, at, coins_pages;
end
--[[--------------------------< I S _ U N I Q U E _ A R C H I V E _ U R L >------------------------------------
add error message when |archive-url= value is same as |url= or chapter-url= (or alias...) value
]]
local function is_unique_archive_url (archive, url, c_url, source, date)
if utilities.is_set (archive) then
if archive == url or archive == c_url then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); -- add error message
return '', ''; -- unset |archive-url= and |archive-date= because same as |url= or |chapter-url=
end
end
return archive, date;
end
--[=[-------------------------< A R C H I V E _ U R L _ C H E C K >--------------------------------------------
Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the
save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...)
archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow
unwitting readers to do.
When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own
algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results.
This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and
|archive-date= and an error message when:
|archive-url= holds an archive.org save command URL
|archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the
correct place
otherwise returns |archive-url= and |archive-date=
There are two mostly compatible archive.org URLs:
//web.archive.org/<timestamp>... -- the old form
//web.archive.org/web/<timestamp>... -- the new form
The old form does not support or map to the new form when it contains a display flag. There are four identified flags
('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore)
we don't check for these specific flags but we do check the form.
This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified
archive URL:
for save command errors, return undated wildcard (/*/)
for timestamp errors when the timestamp has a wildcard, return the URL unmodified
for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/)
A secondary function is to return an archive-url timestamp from those urls that have them (archive.org and
archive.today). The timestamp is used by validation.archive_date_check() to see if the value in |archive-date=
matches the timestamp in the archive url.
]=]
local function archive_url_check (url, date)
local err_msg = ''; -- start with the error message empty
local path, timestamp, flag; -- portions of the archive.org URL
timestamp = url:match ('//archive.today/(%d%d%d%d%d%d%d%d%d%d%d%d%d%d)/'); -- get timestamp from archive.today urls
if timestamp then -- if this was an archive.today url ...
return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=, and done
end
-- here for archive.org urls
if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL
return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate
end
if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page
err_msg = cfg.err_msg_supl.save;
url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL
elseif url:match('//liveweb%.archive%.org/') then
err_msg = cfg.err_msg_supl.liveweb;
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation
if not path then -- malformed in some way; pattern did not match
err_msg = cfg.err_msg_supl.timestamp;
elseif 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
err_msg = cfg.err_msg_supl.timestamp;
if '*' ~= flag then
local replacement = timestamp:match ('^%d%d%d%d%d%d') or timestamp:match ('^%d%d%d%d'); -- get the first 6 (YYYYMM) or first 4 digits (YYYY)
if replacement then -- nil if there aren't at least 4 digits (year)
replacement = replacement .. string.rep ('0', 14 - replacement:len()); -- year or yearmo (4 or 6 digits) zero-fill to make 14-digit timestamp
url=url:gsub ('(//web%.archive%.org/[^%d]*)%d[^/]*', '%1' .. replacement .. '*', 1) -- for preview, modify ts to 14 digits plus splat for calendar display
end
end
elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element
err_msg = cfg.err_msg_supl.path;
elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
else
return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
end
end
-- if here, something not right so
utilities.set_message ('err_archive_url', {err_msg}); -- add error message and
if is_preview_mode then
return url, date, timestamp; -- preview mode so return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
else
return '', ''; -- return empty strings for ArchiveURL and ArchiveDate
end
end
--[[--------------------------< P L A C E _ C H E C K >--------------------------------------------------------
check |place=, |publication-place=, |location= to see if these params include digits. This function added because
many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that)
returns the original parameter value without modification; added maint cat when parameter value contains digits
]]
local function place_check (param_val)
if not utilities.is_set (param_val) then -- parameter empty or omitted
return param_val; -- return that empty state
end
if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value
utilities.set_message ('maint_location'); -- yep, add maint cat
end
return param_val; -- and done
end
--[[--------------------------< I S _ A R C H I V E D _ C O P Y >----------------------------------------------
compares |title= to 'Archived copy' (placeholder added by bots that can't find proper title); if matches, return true; nil else
]]
local function is_archived_copy (title)
title = mw.ustring.lower(title); -- switch title to lower case
if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy'
return true;
elseif cfg.special_case_translation.archived_copy['local'] then
if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script
return true;
end
end
end
--[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------
This is the main function doing the majority of the citation formatting.
]]
local function citation0( config, args )
--[[
Load Input Parameters
The argument_wrapper facilitates the mapping of multiple aliases to single internal variable.
]]
local A = argument_wrapper ( args );
local i
-- Pick out the relevant fields from the arguments. Different citation templates
-- define different field names for the same underlying things.
local author_etal;
local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors=
local Authors;
local NameListStyle;
if cfg.global_cs1_config_t['NameListStyle'] then -- global setting in {{cs1 config}} overrides local |name-list-style= parameter value; nil when empty or assigned value invalid
NameListStyle = is_valid_parameter_value (cfg.global_cs1_config_t['NameListStyle'], 'cs1 config: name-list-style', cfg.keywords_lists['name-list-style'], ''); -- error messaging 'param' here is a hoax
else
NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], '');
end
if cfg.global_cs1_config_t['NameListStyle'] and utilities.is_set (A['NameListStyle']) then -- when template has |name-list-style=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
local Collaboration = A['Collaboration'];
do -- to limit scope of selected
local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList');
if 1 == selected then
a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
a, author_etal = parse_vauthors_veditors (args, A['Vauthors'], 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn=
elseif 3 == selected then
Authors = A['Authors']; -- use content of |authors=
if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors=
utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO:
end
end
if utilities.is_set (Collaboration) then
author_etal = true; -- so that |display-authors=etal not required
end
end
local editor_etal;
local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors=
do -- to limit scope of selected
local selected = select_author_editor_source (A['Veditors'], nil, args, 'EditorList'); -- support for |editors= withdrawn
if 1 == selected then
e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=
end
end
local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases
local Chapter_origin = A:ORIGIN ('Chapter');
local Contribution; -- because contribution is required for contributor(s)
if 'contribution' == Chapter_origin then
Contribution = Chapter; -- get the name of the contribution
end
local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs
if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites
c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=
if 0 < #c then
if not utilities.is_set (Contribution) then -- |contributor= requires |contribution=
utilities.set_message ('err_contributor_missing_required_param', 'contribution'); -- add missing contribution error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
if 0 == #a then -- |contributor= requires |author=
utilities.set_message ('err_contributor_missing_required_param', 'author'); -- add missing author error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
end
else -- if not a book cite
if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters?
utilities.set_message ('err_contributor_ignored'); -- add contributor ignored error message
end
Contribution = nil; -- unset
end
local Title = A['Title'];
local TitleLink = A['TitleLink'];
local auto_select = ''; -- default is auto
local accept_link;
TitleLink, accept_link = utilities.has_accept_as_written (TitleLink, true); -- test for accept-this-as-written markup
if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords
auto_select = TitleLink; -- remember selection for later
TitleLink = ''; -- treat as if |title-link= would have been empty
end
TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set
local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used
if 'map' == config.CitationClass and 'section' == Chapter_origin then
Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}}
Chapter = ''; -- unset for now; will be reset later from |map= if present
end
local Periodical = A['Periodical'];
local Periodical_origin = A:ORIGIN('Periodical');
local ScriptPeriodical = A['ScriptPeriodical'];
local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
local TransPeriodical = A['TransPeriodical'];
local TransPeriodical_origin = A:ORIGIN ('TransPeriodical');
if (utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (ScriptPeriodical))) then
local param;
if utilities.is_set (Periodical) then -- get a parameter name from one of these periodical related meta-parameters
Periodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = Periodical_origin -- get parameter name for error messaging
elseif utilities.is_set (TransPeriodical) then
TransPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = TransPeriodical_origin; -- get parameter name for error messaging
elseif utilities.is_set (ScriptPeriodical) then
ScriptPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = ScriptPeriodical_origin; -- get parameter name for error messaging
end
if utilities.is_set (param) then -- if we found one
utilities.set_message ('err_periodical_ignored', {param}); -- emit an error message
end
end
if utilities.is_set (Periodical) then
local i;
Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated
if i then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {Periodical_origin});
end
end
if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}}
if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'mailinglist')});
end
Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}}
Periodical_origin = A:ORIGIN('MailingList');
end
-- web and news not tested for now because of
-- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors?
if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter
-- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message
local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message
if p[config.CitationClass] then
utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]});
end
end
local Volume;
-- local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) then
if not utilities.in_array (Periodical_origin, cfg.citation_no_volume_t) then -- {{citation}} does not render |volume= when these parameters are used
Volume = A['Volume']; -- but does for all other 'periodicals'
end
elseif utilities.is_set (ScriptPeriodical) then
if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website=
Volume = A['Volume']; -- but does for all other 'periodicals'
end
else
Volume = A['Volume']; -- and does for non-'periodical' cites
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings
Volume = A['Volume'];
end
extra_text_in_vol_iss_check (Volume, A:ORIGIN ('Volume'), 'v');
local Issue;
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, cfg.citation_issue_t) then -- {{citation}} may render |issue= when these parameters are used
Issue = utilities.hyphen_to_dash (A['Issue']);
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table
if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then
Issue = utilities.hyphen_to_dash (A['Issue']);
end
end
local ArticleNumber;
if utilities.in_array (config.CitationClass, {'journal', 'conference'}) or ('citation' == config.CitationClass and utilities.is_set (Periodical) and 'journal' == Periodical_origin) then
ArticleNumber = A['ArticleNumber'];
end
extra_text_in_vol_iss_check (Issue, A:ORIGIN ('Issue'), 'i');
local Page;
local Pages;
local At;
local QuotePage;
local QuotePages;
if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then -- TODO: rewrite to emit ignored parameter error message?
Page = A['Page'];
Pages = utilities.hyphen_to_dash (A['Pages']);
At = A['At'];
QuotePage = A['QuotePage'];
QuotePages = utilities.hyphen_to_dash (A['QuotePages']);
end
local Edition = A['Edition'];
local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace'));
local Place = place_check (A['Place'], A:ORIGIN('Place'));
local PublisherName = A['PublisherName'];
local PublisherName_origin = A:ORIGIN('PublisherName');
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then
local i = 0;
PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized
if i and (0 < i) then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {PublisherName_origin});
end
end
if ('document' == config.CitationClass) and not utilities.is_set (PublisherName) then
utilities.set_message ('err_missing_publisher', {config.CitationClass, 'publisher'});
end
local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup?
local Newsgroup_origin = A:ORIGIN('Newsgroup');
if 'newsgroup' == config.CitationClass then
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup
utilities.set_message ('err_parameter_ignored', {PublisherName_origin});
end
PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS
end
local URL = A['URL']; -- TODO: better way to do this for URL, ChapterURL, and MapURL?
local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then
UrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', 'url');
end
local ChapterURL = A['ChapterURL'];
local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then
ChapterUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')});
end
local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then
MapUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {'map-url'});
end
local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language
local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil);
-- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories
if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page
if cfg.uncategorized_namespaces[this_page.namespace] then -- is this page's namespace id one of the uncategorized namespace ids?
no_tracking_cats = "true"; -- set no_tracking_cats
end
for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
no_tracking_cats = "true"; -- set no_tracking_cats
break; -- bail out if one is found
end
end
end
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it)
utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category
local coins_pages;
Page, Pages, At, coins_pages = insource_loc_get (Page, A:ORIGIN('Page'), Pages, A:ORIGIN('Pages'), At);
local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil);
if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different
utilities.add_prop_cat ('location-test'); -- add property cat to evaluate how often PublicationPlace and Place are used together
if PublicationPlace == Place then
Place = ''; -- unset; don't need both if they are the same
end
elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ...
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL
local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL
local ScriptChapter = A['ScriptChapter'];
local ScriptChapter_origin = A:ORIGIN ('ScriptChapter');
local Format = A['Format'];
local ChapterFormat = A['ChapterFormat'];
local TransChapter = A['TransChapter'];
local TransChapter_origin = A:ORIGIN ('TransChapter');
local TransTitle = A['TransTitle'];
local ScriptTitle = A['ScriptTitle'];
--[[
Parameter remapping for cite encyclopedia:
When the citation has these parameters:
|encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= for rendering
|encyclopedia= and |article= then map |encyclopedia= to |title= for rendering
|trans-title= maps to |trans-chapter= when |title= is re-mapped
|url= maps to |chapter-url= when |title= is remapped
All other combinations of |encyclopedia=, |title=, and |article= are not modified
]]
local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS
if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}}
if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then
utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')});
Encyclopedia = nil; -- unset because not supported by this template
end
end
if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both parameters set emit an error message; {{citation}} only; Periodical not allowed in {{cite encyclopedia}}
utilities.set_message ('err_periodical_ignored', {Periodical_origin});
end
if utilities.is_set (Encyclopedia) then
Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia for rendering; {{citation}} could (not legitimately) have both; use Encyclopedia
Periodical_origin = A:ORIGIN ('Encyclopedia');
if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then
if not utilities.is_set (Chapter) then
Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title= for rendering
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle')
TransChapter = TransTitle;
ChapterURL = URL;
ChapterURL_origin = URL_origin;
ChapterUrlAccess = UrlAccess;
if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then
Chapter = utilities.make_wikilink (TitleLink, Chapter);
end
Title = Periodical;
ChapterFormat = Format;
Periodical = ''; -- redundant so unset
TransTitle = '';
URL = '';
Format = '';
TitleLink = '';
ScriptTitle = '';
end
elseif utilities.is_set (Chapter) or utilities.is_set (ScriptChapter) then -- |title= not set
Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= for rendering
Periodical = ''; -- redundant so unset
end
end
end
-- special case for cite techreport.
local ID = A['ID'];
if (config.CitationClass == "techreport") then -- special case for cite techreport
if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue'
if not utilities.is_set (ID) then -- can we use ID for the "number"?
ID = A['Number']; -- yes, use it
else -- ID has a value so emit error message
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'number')});
end
end
end
-- Account for the oddity that is {{cite conference}}, before generation of COinS data.
local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode
local Conference = A['Conference'];
local BookTitle = A['BookTitle'];
local TransTitle_origin = A:ORIGIN ('TransTitle');
if 'conference' == config.CitationClass then
if utilities.is_set (BookTitle) then
Chapter = Title;
Chapter_origin = 'title';
-- ChapterLink = TitleLink; -- |chapter-link= is deprecated
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
URL_origin = '';
ChapterFormat = Format;
TransChapter = TransTitle;
TransChapter_origin = TransTitle_origin;
Title = BookTitle;
Format = '';
-- TitleLink = '';
TransTitle = '';
URL = '';
end
elseif 'speech' ~= config.CitationClass then
Conference = ''; -- not cite conference or cite speech so make sure this is empty string
end
-- CS1/2 mode
local Mode;
if cfg.global_cs1_config_t['Mode'] then -- global setting in {{cs1 config}} overrides local |mode= parameter value; nil when empty or assigned value invalid
Mode = is_valid_parameter_value (cfg.global_cs1_config_t['Mode'], 'cs1 config: mode', cfg.keywords_lists['mode'], ''); -- error messaging 'param' here is a hoax
else
Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], '');
end
if cfg.global_cs1_config_t['Mode'] and utilities.is_set (A['Mode']) then -- when template has |mode=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
-- separator character and postscript
local sepc, PostScript = set_style (Mode:lower(), A['PostScript'], config.CitationClass);
-- controls capitalization of certain static text
local use_lowercase = ( sepc == ',' );
-- cite map oddities
local Cartography = "";
local Scale = "";
local Sheet = A['Sheet'] or '';
local Sheets = A['Sheets'] or '';
if config.CitationClass == "map" then
if utilities.is_set (Chapter) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', Chapter_origin)}); -- add error message
end
Chapter = A['Map'];
Chapter_origin = A:ORIGIN('Map');
ChapterURL = A['MapURL'];
ChapterURL_origin = A:ORIGIN('MapURL');
TransChapter = A['TransMap'];
ScriptChapter = A['ScriptMap']
ScriptChapter_origin = A:ORIGIN('ScriptMap')
ChapterUrlAccess = MapUrlAccess;
ChapterFormat = A['MapFormat'];
Cartography = A['Cartography'];
if utilities.is_set ( Cartography ) then
Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase);
end
Scale = A['Scale'];
if utilities.is_set ( Scale ) then
Scale = sepc .. " " .. Scale;
end
end
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.
local Series = A['Series'];
if 'episode' == config.CitationClass or 'serial' == config.CitationClass then
local SeriesLink = A['SeriesLink'];
SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set
local Network = A['Network'];
local Station = A['Station'];
local s, n = {}, {};
-- do common parameters first
if utilities.is_set (Network) then table.insert(n, Network); end
if utilities.is_set (Station) then table.insert(n, Station); end
ID = table.concat(n, sepc .. ' ');
if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}}
local Season = A['Season'];
local SeriesNumber = A['SeriesNumber'];
if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'seriesno')}); -- add error message
SeriesNumber = ''; -- unset; prefer |season= over |seriesno=
end
-- assemble a table of parts concatenated later into Series
if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end
if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end
if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end
Issue = ''; -- unset because this is not a unique parameter
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle');
ChapterLink = TitleLink; -- alias |episode-link=
TransChapter = TransTitle;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
ChapterFormat = Format;
Title = Series; -- promote series to title
TitleLink = SeriesLink;
Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number
if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL
Chapter = utilities.make_wikilink (ChapterLink, Chapter);
elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode;
Series = utilities.make_wikilink (ChapterLink, Series);
end
URL = ''; -- unset
TransTitle = '';
ScriptTitle = '';
Format = '';
else -- now oddities that are cite serial
Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial
Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday?
if utilities.is_set (Series) and utilities.is_set (SeriesLink) then
Series = utilities.make_wikilink (SeriesLink, Series);
end
Series = utilities.wrap_style ('italic-title', Series); -- series is italicized
end
end
-- end of {{cite episode}} stuff
-- handle type parameter for those CS1 citations that have default values
local TitleType = A['TitleType'];
local Degree = A['Degree'];
if utilities.in_array (config.CitationClass, {'AV-media-notes', 'document', 'interview', 'mailinglist', 'map', 'podcast', 'pressrelease', 'report', 'speech', 'techreport', 'thesis'}) then
TitleType = set_titletype (config.CitationClass, TitleType);
if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis
TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower();
end
end
if utilities.is_set (TitleType) then -- if type parameter is specified
TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses
-- TODO: Hack on TitleType to fix bunched parentheses problem
end
-- legacy: promote PublicationDate to Date if neither Date nor Year are set.
local Date = A['Date'];
local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging
local PublicationDate = A['PublicationDate'];
local Year = A['Year'];
if not utilities.is_set (Date) then
Date = Year; -- promote Year to Date
Year = nil; -- make nil so Year as empty string isn't used for CITEREF
if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set
Date = PublicationDate; -- promote PublicationDate to Date
PublicationDate = ''; -- unset, no longer needed
Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter
else
Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter
end
else
Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging
end
if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation
--[[
Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where
we get the date used in the metadata.
Date validation supporting code is in Module:Citation/CS1/Date_validation
]]
local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], '');
if not utilities.is_set (DF) then
DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template
end
local ArchiveURL;
local ArchiveDate;
local ArchiveFormat = A['ArchiveFormat'];
local archive_url_timestamp; -- timestamp from wayback machine url
ArchiveURL, ArchiveDate, archive_url_timestamp = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url');
ArchiveURL, ArchiveDate = is_unique_archive_url (ArchiveURL, URL, ChapterURL, A:ORIGIN('ArchiveURL'), ArchiveDate); -- add error message when URL or ChapterURL == ArchiveURL
local AccessDate = A['AccessDate'];
-- local LayDate = A['LayDate'];
local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification
local DoiBroken = A['DoiBroken'];
local Embargo = A['Embargo'];
local anchor_year; -- used in the CITEREF identifier
do -- create defined block to contain local variables error_message, date_parameters_list, mismatch
local error_message = '';
-- AirDate has been promoted to Date so not necessary to check it
local date_parameters_list = {
['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')},
['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')},
['date'] = {val = Date, name = Date_origin},
['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')},
['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')},
-- ['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')},
['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')},
['year'] = {val = Year, name = A:ORIGIN ('Year')},
};
local error_list = {};
anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list);
-- start temporary Julian / Gregorian calendar uncertainty categorization
if COinS_date.inter_cal_cat then
utilities.add_prop_cat ('jul-greg-uncertainty');
end
-- end temporary Julian / Gregorian calendar uncertainty categorization
if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed;
validation.year_date_check (Year, A:ORIGIN ('Year'), Date, A:ORIGIN ('Date'), error_list);
end
if 0 == #error_list then -- error free dates only; 0 when error_list is empty
local modified = false; -- flag
if utilities.is_set (DF) then -- if we need to reformat dates
modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate
end
if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate
modified = true;
utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category
end
-- for those wikis that can and want to have English date names translated to the local language; not supported at en.wiki
if cfg.date_name_auto_xlate_enable and validation.date_name_xlate (date_parameters_list, cfg.date_digit_auto_xlate_enable ) then
utilities.set_message ('maint_date_auto_xlated'); -- add maint cat
modified = true;
end
if modified then -- if the date_parameters_list values were modified
AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values
ArchiveDate = date_parameters_list['archive-date'].val;
Date = date_parameters_list['date'].val;
DoiBroken = date_parameters_list['doi-broken-date'].val;
-- LayDate = date_parameters_list['lay-date'].val;
PublicationDate = date_parameters_list['publication-date'].val;
end
if archive_url_timestamp and utilities.is_set (ArchiveDate) then
validation.archive_date_check (ArchiveDate, archive_url_timestamp); -- does YYYYMMDD in archive_url_timestamp match date in ArchiveDate
end
else
utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}); -- add this error message
end
end -- end of do
if utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) or -- {{cite book}}, {{cite encyclopedia}}; TODO: {{cite conference}} and others?
('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) or -- {{citation}} as an encylopedia citation
('citation' == config.CitationClass and not utilities.is_set (Periodical)) then -- {{citation}} as a book citation
if utilities.is_set (PublicationPlace) then
if not utilities.is_set (PublisherName) then
local date = COinS_date.rftdate and tonumber (COinS_date.rftdate:match ('%d%d%d%d')); -- get year portion of COinS date (because in Arabic numerals); convert string to number
if date and (1850 <= date) then -- location has no publisher; if date is 1850 or later
utilities.set_message ('maint_location_no_publisher'); -- add maint cat
end
else -- PublisherName has a value
if cfg.keywords_xlate['none'] == PublisherName then -- if that value is 'none' (only for book and encyclopedia citations)
PublisherName = ''; -- unset
end
end
end
end
local ID_list = {}; -- sequence table of rendered identifiers
local ID_list_coins = {}; -- table of identifiers and their values from args; key is same as cfg.id_handlers's key
local Class = A['Class']; -- arxiv class identifier
local ID_support = {
{A['ASINTLD'], 'ASIN', 'err_asintld_missing_asin', A:ORIGIN ('ASINTLD')},
{DoiBroken, 'DOI', 'err_doibroken_missing_doi', A:ORIGIN ('DoiBroken')},
{Embargo, 'PMC', 'err_embargo_missing_pmc', A:ORIGIN ('Embargo')},
}
ID_list, ID_list_coins = identifiers.identifier_lists_get (args, {DoiBroken = DoiBroken, ASINTLD = A['ASINTLD'], Embargo = Embargo, Class = Class}, ID_support);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, {{cite ssrn}}, before generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv=, |citeseerx=, |medrxiv=, |ssrn= required for their templates
if not (args[cfg.id_handlers[config.CitationClass:upper()].parameters[1]] or -- can't use ID_list_coins k/v table here because invalid parameters omitted
args[cfg.id_handlers[config.CitationClass:upper()].parameters[2]]) then -- which causes unexpected parameter missing error message
utilities.set_message ('err_' .. config.CitationClass .. '_missing'); -- add error message
end
Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['medrxiv'] = 'medRxiv', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass];
end
-- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free
if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead
if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled
if identifiers.auto_link_urls[auto_select] then -- manual selection
URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link
URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC
URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed
URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI
URL = identifiers.auto_link_urls['doi'];
URL_origin = cfg.id_handlers['DOI'].parameters[1];
end
end
if utilities.is_set (URL) then -- set when using an identifier-created URL
if utilities.is_set (AccessDate) then -- |access-date= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_accessdate_missing_url'); -- add an error message
AccessDate = ''; -- unset
end
if utilities.is_set (ArchiveURL) then -- |archive-url= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_archive_missing_url'); -- add an error message
ArchiveURL = ''; -- unset
end
end
end
-- At this point fields may be nil if they weren't specified in the template use. We can use that fact.
-- Test if citation has no title
if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode
utilities.set_message ('err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'});
end
if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and
utilities.in_array (config.CitationClass, {'journal', 'citation'}) and
(utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and
('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites
Title = ''; -- set title to empty string
utilities.set_message ('maint_untitled'); -- add maint cat
end
-- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information.
-- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that
-- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title
-- is the article title, and Chapter is a section within the article. So, we remap
local coins_chapter = Chapter; -- default assuming that remapping not required
local coins_title = Title; -- et tu
if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then
coins_chapter = Title; -- remap
coins_title = Periodical;
end
end
local coins_author = a; -- default for coins rft.au
if 0 < #c then -- but if contributor list
coins_author = c; -- use that instead
end
-- this is the function call to COinS()
local OCinSoutput = metadata.COinS({
['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata
['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS
['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic / accept-as-written markup
['Degree'] = Degree; -- cite thesis only
['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic / accept-as-written markup
['PublicationPlace'] = PublicationPlace,
['Date'] = COinS_date.rftdate, -- COinS_date.* has correctly formatted date values if Date is valid;
['Season'] = COinS_date.rftssn,
['Quarter'] = COinS_date.rftquarter,
['Chron'] = COinS_date.rftchron,
['Series'] = Series,
['Volume'] = Volume,
['Issue'] = Issue,
['ArticleNumber'] = ArticleNumber,
['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages}, 7)), -- pages stripped of external links
['Edition'] = Edition,
['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
['ID_list'] = ID_list_coins,
['RawPage'] = this_page.prefixedText,
}, config.CitationClass);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, and {{cite ssrn}} AFTER generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, medRxiv, or ssrn now unset so it isn't displayed
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
-- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text
if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then
PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil ));
end
local Editors;
local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list
local Contributors; -- assembled contributors name list
local contributor_etal;
local Translators; -- assembled translators name list
local translator_etal;
local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs
t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn=
local Interviewers;
local interviewers_list = {};
interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters
local interviewer_etal;
-- Now perform various field substitutions.
-- We also add leading spaces and surrounding markup and punctuation to the
-- various parts of the citation, but only when they are non-nil.
do
local last_first_list;
local control = {
format = NameListStyle, -- empty string, '&', 'amp', 'and', or 'vanc'
maximum = nil, -- as if display-authors or display-editors not set
mode = Mode
};
do -- do editor name list first because the now unsupported coauthors used to modify control table
if cfg.global_cs1_config_t['DisplayEditors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum , editor_etal = get_display_names (cfg.global_cs1_config_t['DisplayEditors'], #e, 'editors', editor_etal, 'cs1 config');
else
control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal, A:ORIGIN ('DisplayEditors'));
end
if cfg.global_cs1_config_t['DisplayEditors'] and utilities.is_set (A['DisplayEditors']) then -- when template has |display-editors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Editors, EditorCount = list_people (control, e, editor_etal);
if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then
EditorCount = 2; -- spoof to display (eds.) annotation
end
end
do -- now do interviewers
if cfg.global_cs1_config_t['DisplayInterviewers'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, interviewer_etal = get_display_names (cfg.global_cs1_config_t['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, 'cs1 config');
else
control.maximum, interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, A:ORIGIN ('DisplayInterviewers'));
end
if cfg.global_cs1_config_t['DisplayInterviewers'] and utilities.is_set (A['DisplayInterviewers']) then -- when template has |display-interviewers=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Interviewers = list_people (control, interviewers_list, interviewer_etal);
end
do -- now do translators
if cfg.global_cs1_config_t['DisplayTranslators'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, translator_etal = get_display_names (cfg.global_cs1_config_t['DisplayTranslators'], #t, 'translators', translator_etal, 'cs1 config');
else
control.maximum, translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal, A:ORIGIN ('DisplayTranslators'));
end
if cfg.global_cs1_config_t['DisplayTranslators'] and utilities.is_set (A['DisplayTranslators']) then -- when template has |display-translators=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Translators = list_people (control, t, translator_etal);
end
do -- now do contributors
if cfg.global_cs1_config_t['DisplayContributors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, contributor_etal = get_display_names (cfg.global_cs1_config_t['DisplayContributors'], #c, 'contributors', contributor_etal, 'cs1 config');
else
control.maximum, contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal, A:ORIGIN ('DisplayContributors'));
end
if cfg.global_cs1_config_t['DisplayContributors'] and utilities.is_set (A['DisplayContributors']) then -- when template has |display-contributors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Contributors = list_people (control, c, contributor_etal);
end
do -- now do authors
if cfg.global_cs1_config_t['DisplayAuthors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, author_etal = get_display_names (cfg.global_cs1_config_t['DisplayAuthors'], #a, 'authors', author_etal, 'cs1 config');
else
control.maximum, author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal, A:ORIGIN ('DisplayAuthors'));
end
if cfg.global_cs1_config_t['DisplayAuthors'] and utilities.is_set (A['DisplayAuthors']) then -- when template has |display-authors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
last_first_list = list_people (control, a, author_etal);
if utilities.is_set (Authors) then
Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al.
if author_etal then
Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter
end
else
Authors = last_first_list; -- either an author name list or an empty string
end
end -- end of do
if utilities.is_set (Authors) and utilities.is_set (Collaboration) then
Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al.
end
end
local ConferenceFormat = A['ConferenceFormat'];
local ConferenceURL = A['ConferenceURL'];
ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url');
Format = style_format (Format, URL, 'format', 'url');
-- special case for chapter format so no error message or cat when chapter not supported
if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then
ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url');
end
if not utilities.is_set (URL) then
if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist
('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website=
utilities.set_message ('err_cite_web_url');
end
-- do we have |accessdate= without either |url= or |chapter-url=?
if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set;
utilities.set_message ('err_accessdate_missing_url');
AccessDate = '';
end
end
local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], '');
local OriginalURL
local OriginalURL_origin
local OriginalFormat
local OriginalAccess;
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if utilities.is_set ( ArchiveURL ) then
if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it
OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text
OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages
OriginalFormat = ChapterFormat; -- and original |chapter-format=
if 'live' ~= UrlStatus then
ChapterURL = ArchiveURL -- swap-in the archive's URL
ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages
ChapterFormat = ArchiveFormat or ''; -- swap in archive's format
ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
elseif utilities.is_set (URL) then
OriginalURL = URL; -- save copy of original source URL
OriginalURL_origin = URL_origin; -- name of URL parameter for error messages
OriginalFormat = Format; -- and original |format=
OriginalAccess = UrlAccess;
if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it
URL = ArchiveURL -- swap-in the archive's URL
URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages
Format = ArchiveFormat or ''; -- swap in archive's format
UrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
end
elseif utilities.is_set (UrlStatus) then -- if |url-status= is set when |archive-url= is not set
utilities.set_message ('maint_url_status'); -- add maint cat
end
if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then
local chap_param;
if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters
chap_param = A:ORIGIN ('Chapter')
elseif utilities.is_set (TransChapter) then
chap_param = A:ORIGIN ('TransChapter')
elseif utilities.is_set (ChapterURL) then
chap_param = A:ORIGIN ('ChapterURL')
elseif utilities.is_set (ScriptChapter) then
chap_param = ScriptChapter_origin;
else utilities.is_set (ChapterFormat)
chap_param = A:ORIGIN ('ChapterFormat')
end
if utilities.is_set (chap_param) then -- if we found one
utilities.set_message ('err_chapter_ignored', {chap_param}); -- add error message
Chapter = ''; -- and set them to empty string to be safe with concatenation
TransChapter = '';
ChapterURL = '';
ScriptChapter = '';
ChapterFormat = '';
end
else -- otherwise, format chapter / article title
local no_quotes = false; -- default assume that we will be quoting the chapter parameter value
if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s)
if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title
no_quotes = true; -- then render it unquoted
end
end
Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter
if utilities.is_set (Chapter) then
Chapter = Chapter .. ChapterFormat ;
if 'map' == config.CitationClass and utilities.is_set (TitleType) then
Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title
end
Chapter = Chapter .. sepc .. ' ';
elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ...
Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it
end
end
-- Format main title
local plain_title = false;
local accept_title;
Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title>
if accept_title and ('' == Title) then -- only support forced empty for now "(())"
Title = cfg.messages['notitle']; -- replace by predefined "No title" message
-- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting
ScriptTitle = ''; -- just mute for now
TransTitle = ''; -- just mute for now
plain_title = true; -- suppress text decoration for descriptive title
utilities.set_message ('maint_untitled'); -- add maint cat
end
if not accept_title then -- <Title> not wrapped in accept-as-written markup
if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title=
Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three
elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ...
not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.)
Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters
end
if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then
utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title
end
if is_generic ('generic_titles', Title) then
utilities.set_message ('err_generic_title'); -- set an error message
end
end
if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'document', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or
('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article
Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks
Title = utilities.wrap_style ('quoted-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle );
elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above)
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title
else
Title = utilities.wrap_style ('italic-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle);
end
if utilities.is_set (TransTitle) then
if utilities.is_set (Title) then
TransTitle = " " .. TransTitle;
else
utilities.set_message ('err_trans_missing_title', {'title'});
end
end
if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs?
if utilities.is_set (TitleLink) and utilities.is_set (URL) then
utilities.set_message ('err_wikilink_in_url'); -- set an error message because we can't have both
TitleLink = ''; -- unset
end
if not utilities.is_set (TitleLink) and utilities.is_set (URL) then
Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. Format;
URL = ''; -- unset these because no longer needed
Format = "";
elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then
local ws_url;
ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here
if ws_url then
Title = external_link (ws_url, Title .. ' ', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title});
Title = Title .. TransTitle;
else
Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle;
end
else
local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink)
ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Title = external_link (ws_url, Title .. ' ', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title});
Title = Title .. TransTitle;
else
Title = Title .. TransTitle;
end
end
else
Title = TransTitle;
end
if utilities.is_set (Place) then
Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " ";
end
local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
if utilities.is_set (Conference) then
if utilities.is_set (ConferenceURL) then
Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil );
end
Conference = sepc .. " " .. Conference .. ConferenceFormat;
elseif utilities.is_set (ConferenceURL) then
Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil );
end
local Position = '';
if not utilities.is_set (Position) then
local Minutes = A['Minutes'];
local Time = A['Time'];
if utilities.is_set (Minutes) then
if utilities.is_set (Time) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'time')});
end
Position = " " .. Minutes .. " " .. cfg.messages['minutes'];
else
if utilities.is_set (Time) then
local TimeCaption = A['TimeCaption']
if not utilities.is_set (TimeCaption) then
TimeCaption = cfg.messages['event'];
if sepc ~= '.' then
TimeCaption = TimeCaption:lower();
end
end
Position = " " .. TimeCaption .. " " .. Time;
end
end
else
Position = " " .. Position;
At = '';
end
Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase);
At = utilities.is_set (At) and (sepc .. " " .. At) or "";
Position = utilities.is_set (Position) and (sepc .. " " .. Position) or "";
if config.CitationClass == 'map' then
local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier
local Inset = A['Inset'];
if utilities.is_set ( Inset ) then
Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase);
end
if utilities.is_set ( Sections ) then
Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase);
elseif utilities.is_set ( Section ) then
Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase);
end
At = At .. Inset .. Section;
end
local Others = A['Others'];
if utilities.is_set (Others) and 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor=
if config.CitationClass == "AV-media-notes"
or config.CitationClass == "audio-visual" then -- special maint for AV/M which has a lot of 'false' positives right now
utilities.set_message ('maint_others_avm')
else
utilities.set_message ('maint_others');
end
end
Others = utilities.is_set (Others) and (sepc .. " " .. Others) or "";
if utilities.is_set (Translators) then
Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc);
end
if utilities.is_set (Interviewers) then
Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc);
end
local TitleNote = A['TitleNote'];
TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or "";
if utilities.is_set (Edition) then
if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn.
utilities.set_message ('err_extra_text_edition'); -- add error message
end
Edition = " " .. wrap_msg ('edition', Edition);
else
Edition = '';
end
Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum
local Agency = A['Agency'];
Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or "";
Volume = format_volume_issue (Volume, Issue, ArticleNumber, config.CitationClass, Periodical_origin, sepc, use_lowercase);
if utilities.is_set (AccessDate) then
local retrv_text = " " .. cfg.messages['retrieved']
AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format
if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case
AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text
AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates
end
if utilities.is_set (ID) then ID = sepc .. " " .. ID; end
local Docket = A['Docket'];
if "thesis" == config.CitationClass and utilities.is_set (Docket) then
ID = sepc .. " Docket " .. Docket .. ID;
end
if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set
ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set
end
if utilities.is_set (URL) then
URL = " " .. external_link( URL, nil, URL_origin, UrlAccess );
end
local Quote = A['Quote'];
local TransQuote = A['TransQuote'];
local ScriptQuote = A['ScriptQuote'];
if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then
if utilities.is_set (Quote) then
if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks
Quote = Quote:sub(2, -2); -- strip them off
end
end
Quote = kern_quotes (Quote); -- kern if needed
Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags
if utilities.is_set (ScriptQuote) then
Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped
end
if utilities.is_set (TransQuote) then
if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks
TransQuote = TransQuote:sub(2, -2); -- strip them off
end
Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote );
end
if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix
local quote_prefix = '';
if utilities.is_set (QuotePage) then
extra_text_in_page_check (QuotePage, 'quote-page'); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc.
if not NoPP then
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', '';
end
elseif utilities.is_set (QuotePages) then
extra_text_in_page_check (QuotePages, 'quote-pages'); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc.
if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', '';
elseif not NoPP then
quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', '';
end
end
Quote = quote_prefix .. ": " .. Quote;
else
Quote = sepc .. " " .. Quote;
end
PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set
end
-- We check length of PostScript here because it will have been nuked by
-- the quote parameters. We'd otherwise emit a message even if there wasn't
-- a displayed postscript.
-- TODO: Should the max size (1) be configurable?
-- TODO: Should we check a specific pattern?
if utilities.is_set(PostScript) and mw.ustring.len(PostScript) > 1 then
utilities.set_message ('maint_postscript')
end
local Archived;
if utilities.is_set (ArchiveURL) then
if not utilities.is_set (ArchiveDate) then -- ArchiveURL set but ArchiveDate not set
utilities.set_message ('err_archive_missing_date'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
else
if utilities.is_set (ArchiveDate) then -- ArchiveURL not set but ArchiveDate is set
utilities.set_message ('err_archive_date_missing_url'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
end
if utilities.is_set (ArchiveURL) then
local arch_text;
-- if not utilities.is_set (ArchiveDate) then
-- utilities.set_message ('err_archive_missing_date');
-- ArchiveDate = ''; -- empty string for concatenation
-- end
if "live" == UrlStatus then
arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. ' ' .. utilities.substitute ( cfg.messages['archived-live'],
{external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil) .. ArchiveFormat, ArchiveDate } );
else
Archived = '';
end
if not utilities.is_set (OriginalURL) then
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown'
if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then
arch_text = cfg.messages['archived-unfit'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. ' ' .. arch_text .. ArchiveDate; -- format already styled
if 'bot: unknown' == UrlStatus then
utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added
else
utilities.set_message ('maint_unfit'); -- and add a category if not already added
end
else -- UrlStatus is empty, 'dead'
arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. " " .. utilities.substitute ( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
else
Archived = ''; -- unset for concatenation
end
end
else -- OriginalUrl not set
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (ArchiveFormat) then
Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message
else
Archived = '';
end
-- local Lay = '';
-- local LaySource = A['LaySource'];
-- local LayURL = A['LayURL'];
-- local LayFormat = A['LayFormat'];
-- LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url');
-- if utilities.is_set (LayURL) then
-- if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end
-- if utilities.is_set (LaySource) then
-- LaySource = " – ''" .. utilities.safe_for_italics (LaySource) .. "''";
-- else
-- LaySource = "";
-- end
-- if sepc == '.' then
-- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
-- else
-- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
-- end
-- elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url=
-- Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message
-- end
local TranscriptURL = A['TranscriptURL']
local TranscriptFormat = A['TranscriptFormat'];
TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl');
local Transcript = A['Transcript'];
local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
if utilities.is_set (Transcript) then
if utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil );
end
Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat;
elseif utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil );
end
local Publisher;
if utilities.is_set (PublicationDate) then
PublicationDate = wrap_msg ('published', PublicationDate);
end
if utilities.is_set (PublisherName) then
if utilities.is_set (PublicationPlace) then
Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate;
else
Publisher = sepc .. " " .. PublisherName .. PublicationDate;
end
elseif utilities.is_set (PublicationPlace) then
Publisher= sepc .. " " .. PublicationPlace .. PublicationDate;
else
Publisher = PublicationDate;
end
-- Several of the above rely upon detecting this as nil, so do it last.
if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then
if utilities.is_set (Title) or utilities.is_set (TitleNote) then
Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
else
Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
end
end
local Language = A['Language'];
if utilities.is_set (Language) then
Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc.
else
Language=''; -- language not specified so make sure this is an empty string;
--[[ TODO: need to extract the wrap_msg from language_parameter
so that we can solve parentheses bunching problem with Format/Language/TitleType
]]
end
--[[
Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).
]]
if "speech" == config.CitationClass then -- cite speech only
TitleNote = TitleType; -- move TitleType to TitleNote so that it renders ahead of |event=
TitleType = ''; -- and unset
if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter
if utilities.is_set (Conference) then -- and if |event= is set
Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering
end
end
end
-- Piece all bits together at last. Here, all should be non-nil.
-- We build things this way because it is more efficient in LUA
-- not to keep reassigning to the same string variable over and over.
local tcommon;
local tcommon2; -- used for book cite when |contributor= is set
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
if not (utilities.is_set (Authors) or utilities.is_set (Editors)) then
Others = Others:gsub ('^' .. sepc .. ' ', ''); -- when no authors and no editors, strip leading sepc and space
end
if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here?
tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc );
elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites
if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc.
tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2
tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
else
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
end
elseif 'map' == config.CitationClass then -- special cases for cite map
if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter
tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
elseif utilities.is_set (Periodical) then -- map in a periodical
tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
else -- a sheet or stand-alone map
tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc );
end
elseif 'episode' == config.CitationClass then -- special case for cite episode
tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc );
else -- all other CS1 templates
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language,
Volume, Others, Edition, Publisher, Agency}, sepc );
end
if #ID_list > 0 then
ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc );
else
ID_list = ID;
end
local Via = A['Via'];
Via = utilities.is_set (Via) and wrap_msg ('via', Via) or '';
local idcommon;
if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript
-- idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc );
idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Quote }, sepc );
else
-- idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc );
idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Quote }, sepc );
end
local text;
local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At;
local OrigDate = A['OrigDate'];
OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or '';
if utilities.is_set (Date) then
if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set
Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses
else -- neither of authors and editors set
if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc
Date = " " .. Date .. OrigDate; -- Date does not begin with sepc
else
Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc
end
end
end
if utilities.is_set (Authors) then
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination
Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Editors) then
local in_text = '';
local post_text = '';
if utilities.is_set (Chapter) and 0 == #c then
in_text = cfg.messages['in'] .. ' ';
if (sepc ~= '.') then
in_text = in_text:lower(); -- lowercase for cs2
end
end
if EditorCount <= 1 then
post_text = ' (' .. cfg.messages['editor'] .. ')'; -- be consistent with no-author, no-date case
else
post_text = ' (' .. cfg.messages['editors'] .. ')';
end
Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc.
local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' ';
if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2
Authors = by_text .. Authors; -- author follows title so tweak it here
if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated
Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space
end
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination
Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space
end
text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc );
else
text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc );
end
elseif utilities.is_set (Editors) then
if utilities.is_set (Date) then
if EditorCount <= 1 then
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editor'];
else
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editors'];
end
else
if EditorCount <= 1 then
Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " "
else
Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " "
end
end
text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc );
else
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc );
else
text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc );
end
end
if utilities.is_set (PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc.
text = text:sub(1, -sepc:len() - 1);
end
text = safe_join( {text, PostScript}, sepc );
-- Now enclose the whole thing in a <cite> element
local options_t = {};
options_t.class = cite_class_attribute_make (config.CitationClass, Mode);
local Ref = is_valid_parameter_value (A['Ref'], A:ORIGIN('Ref'), cfg.keywords_lists['ref'], nil, true); -- nil when |ref=harv; A['Ref'] else
if 'none' ~= cfg.keywords_xlate[(Ref and Ref:lower()) or ''] then
local namelist_t = {}; -- holds selected contributor, author, editor name list
local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation
if #c > 0 then -- if there is a contributor list
namelist_t = c; -- select it
elseif #a > 0 then -- or an author list
namelist_t = a;
elseif #e > 0 then -- or an editor list
namelist_t = e;
end
local citeref_id;
if #namelist_t > 0 then -- if there are names in namelist_t
citeref_id = make_citeref_id (namelist_t, year); -- go make the CITEREF anchor
if mw.uri.anchorEncode (citeref_id) == ((Ref and mw.uri.anchorEncode (Ref)) or '') then -- Ref may already be encoded (by {{sfnref}}) so citeref_id must be encoded before comparison
utilities.set_message ('maint_ref_duplicates_default');
end
else
citeref_id = ''; -- unset
end
options_t.id = Ref or citeref_id;
end
if string.len (text:gsub('%b<>', '')) <= 2 then -- remove html and html-like tags; then get length of what remains;
z.error_cats_t = {}; -- blank the categories list
z.error_msgs_t = {}; -- blank the error messages list
OCinSoutput = nil; -- blank the metadata string
text = ''; -- blank the the citation
utilities.set_message ('err_empty_citation'); -- set empty citation message and category
end
local render_t = {}; -- here we collect the final bits for concatenation into the rendered citation
if utilities.is_set (options_t.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags
table.insert (render_t, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options_t.id), mw.text.nowiki(options_t.class), text})); -- when |ref= is set or when there is a namelist
else
table.insert (render_t, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options_t.class), text})); -- when |ref=none or when namelist_t empty and |ref= is missing or is empty
end
if OCinSoutput then -- blanked when citation is 'empty' so don't bother to add boilerplate metadata span
table.insert (render_t, utilities.substitute (cfg.presentation['ocins'], OCinSoutput)); -- format and append metadata to the citation
end
local template_name = ('citation' == config.CitationClass) and 'citation' or 'cite ' .. (cfg.citation_class_map_t[config.CitationClass] or config.CitationClass);
local template_link = '[[Template:' .. template_name .. '|' .. template_name .. ']]';
local msg_prefix = '<code class="cs1-code">{{' .. template_link .. '}}</code>: ';
if 0 ~= #z.error_msgs_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_e, template_link));
table.insert (render_t, ' '); -- insert a space between citation and its error messages
table.sort (z.error_msgs_t); -- sort the error messages list; sorting includes wrapping <span> and <code> tags; hidden-error sorts ahead of visible-error
local hidden = true; -- presume that the only error messages emited by this template are hidden
for _, v in ipairs (z.error_msgs_t) do -- spin through the list of error messages
if v:find ('cs1-visible-error', 1, true) then -- look for the visible error class name
hidden = false; -- found one; so don't hide the error message prefix
break; -- and done because no need to look further
end
end
z.error_msgs_t[1] = table.concat ({utilities.error_comment (msg_prefix, hidden), z.error_msgs_t[1]}); -- add error message prefix to first error message to prevent extraneous punctuation
table.insert (render_t, table.concat (z.error_msgs_t, '; ')); -- make a big string of error messages and add it to the rendering
end
if 0 ~= #z.maint_cats_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_m, template_link));
table.sort (z.maint_cats_t); -- sort the maintenance messages list
local maint_msgs_t = {}; -- here we collect all of the maint messages
if 0 == #z.error_msgs_t then -- if no error messages
table.insert (maint_msgs_t, msg_prefix); -- insert message prefix in maint message livery
end
for _, v in ipairs( z.maint_cats_t ) do -- append maintenance categories
table.insert (maint_msgs_t, -- assemble new maint message and add it to the maint_msgs_t table
table.concat ({v, ' (', utilities.substitute (cfg.messages[':cat wikilink'], v), ')'})
);
end
table.insert (render_t, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs_t, ' '))); -- wrap the group of maint messages with proper presentation and save
end
if not no_tracking_cats then
for _, v in ipairs (z.error_cats_t) do -- append error categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
for _, v in ipairs (z.maint_cats_t) do -- append maintenance categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
for _, v in ipairs (z.prop_cats_t) do -- append properties categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
end
return table.concat (render_t); -- make a big string and done
end
--[[--------------------------< V A L I D A T E >--------------------------------------------------------------
Looks for a parameter's name in one of several whitelists.
Parameters in the whitelist can have three values:
true - active, supported parameters
false - deprecated, supported parameters
nil - unsupported parameters
]]
local function validate (name, cite_class, empty)
local name = tostring (name);
local enum_name; -- parameter name with enumerator (if any) replaced with '#'
local state;
local function state_test (state, name) -- local function to do testing of state values
if true == state then return true; end -- valid actively supported parameter
if false == state then
if empty then return nil; end -- empty deprecated parameters are treated as unknowns
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
if 'tracked' == state then
local base_name = name:gsub ('%d', ''); -- strip enumerators from parameter names that have them to get the base name
utilities.add_prop_cat ('tracked-param', {base_name}, base_name); -- add a properties category; <base_name> modifies <key>
return true;
end
return nil;
end
if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted
return nil;
end
-- replace wnumerator digit(s) with # (|last25= becomes |last#=) (mw.ustring because non-Western 'local' digits)
enum_name = mw.ustring.gsub (name, '%d+$', '#'); -- where enumerator is last charaters in parameter name (these to protect |s2cid=)
enum_name = mw.ustring.gsub (enum_name, '%d+([%-l])', '#%1'); -- where enumerator is in the middle of the parameter name; |author#link= is the oddity
if 'document' == cite_class then -- special case for {{cite document}}
state = whitelist.document_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false;
end
if utilities.in_array (cite_class, whitelist.preprint_template_list_t) then -- limited parameter sets allowed for these templates
state = whitelist.limited_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
state = whitelist.preprint_arguments_t[cite_class][name]; -- look in the parameter-list for the template identified by cite_class
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end -- end limited parameter-set templates
if utilities.in_array (cite_class, whitelist.unique_param_template_list_t) then -- template-specific parameters for templates that accept parameters from the basic argument list
state = whitelist.unique_arguments_t[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class
if true == state_test (state, name) then return true; end
end -- if here, fall into general validation
state = whitelist.common_parameters_t[enum_name]; -- all other templates; all normal parameters allowed; this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end
--[=[-------------------------< I N T E R _ W I K I _ C H E C K >----------------------------------------------
check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language
code. when these values have the form (without leading colon):
[[<prefix>:link|label]] return label as plain-text
[[<prefix>:link]] return <prefix>:link as plain-text
return value as is else
]=]
local function inter_wiki_check (parameter, value)
local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists
local _;
if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so
utilities.set_message ('err_bad_paramlink', parameter); -- emit an error message
_, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink
end
return value;
end
--[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------
Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal
sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a
parameter that is missing its pipe. There are two tests made:
{{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name
{{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki)
cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML
tags are removed before the search.
If a missing pipe is detected, this function adds the missing pipe maintenance category.
]]
local function missing_pipe_check (parameter, value)
local capture;
value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc.
capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes
if capture and validate (capture) then -- if the capture is a valid parameter name
utilities.set_message ('err_missing_pipe', parameter);
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >--------------------------------------
look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_punc (param, value)
if 'number' == type (param) then
return;
end
param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize
if cfg.punct_skip[param] then
return; -- parameter name found in the skip table so done
end
if value:match ('[,;:]$') then
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
if value:match ('^=') then -- sometimes an extraneous '=' character appears ...
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ U R L >------------------------------------------
look for extraneous url parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_url (url_param_t)
local url_error_t = {};
check_for_url (url_param_t, url_error_t); -- extraneous url check
if 0 ~= #url_error_t then -- non-zero when there are errors
table.sort (url_error_t);
utilities.set_message ('err_param_has_ext_link', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message
end
end
--[[--------------------------< C I T A T I O N >--------------------------------------------------------------
This is used by templates such as {{cite book}} to create the actual citation text.
]]
local function citation(frame)
Frame = frame; -- save a copy in case we need to display an error message in preview mode
local config = {}; -- table to store parameters from the module {{#invoke:}}
for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame
config[k] = v;
-- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep?
end
-- i18n: set the name that your wiki uses to identify sandbox subpages from sandbox template invoke (or can be set here)
local sandbox = ((config.SandboxPath and '' ~= config.SandboxPath) and config.SandboxPath) or '/sandbox'; -- sandbox path from {{#invoke:Citation/CS1/sandbox|citation|SandboxPath=/...}}
is_sandbox = nil ~= string.find (frame:getTitle(), sandbox, 1, true); -- is this invoke the sandbox module?
sandbox = is_sandbox and sandbox or ''; -- use i18n sandbox to load sandbox modules when this module is the sandox; live modules else
local pframe = frame:getParent()
local styles;
cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else
whitelist = mw.loadData ('Module:Citation/CS1/Whitelist' .. sandbox);
utilities = require ('Module:Citation/CS1/Utilities' .. sandbox);
validation = require ('Module:Citation/CS1/Date_validation' .. sandbox);
identifiers = require ('Module:Citation/CS1/Identifiers' .. sandbox);
metadata = require ('Module:Citation/CS1/COinS' .. sandbox);
styles = 'Module:Citation/CS1' .. sandbox .. '/styles.css';
utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables
identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module
validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module
metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module
z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities
is_preview_mode = not utilities.is_set (frame:preprocess ('{{REVISIONID}}'));
local args = {}; -- table where we store all of the template's arguments
local suggestions = {}; -- table where we store suggestions if we need to loadData them
local error_text; -- used as a flag
local capture; -- the single supported capture when matching unknown parameters using patterns
local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing
for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame
v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string
if v ~= '' then
if ('string' == type (k)) then
k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9
end
if not validate( k, config.CitationClass ) then
if type (k) ~= 'string' then -- exclude empty numbered parameters
if v:match("%S+") ~= nil then
error_text = utilities.set_message ('err_text_ignored', {v});
end
elseif validate (k:lower(), config.CitationClass) then
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, k:lower()}); -- suggest the lowercase version of the parameter
else
if nil == suggestions.suggestions then -- if this table is nil then we need to load it
suggestions = mw.loadData ('Module:Citation/CS1/Suggestions' .. sandbox); --load sandbox version of suggestion module when {{#invoke:Citation/CS1/sandbox|...}}; live module else
end
for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter
capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match
if capture then -- if the pattern matches
param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator)
if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists)
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, param}); -- set the suggestion error message
else
error_text = utilities.set_message ('err_parameter_ignored', {k}); -- suggested param not supported by this template
v = ''; -- unset
end
end
end
if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an explicit suggestion?
if (suggestions.suggestions[ k:lower() ] ~= nil) and validate (suggestions.suggestions[ k:lower() ], config.CitationClass) then
utilities.set_message ('err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]});
else
utilities.set_message ('err_parameter_ignored', {k});
v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists)
end
end
end
end
args[k] = v; -- save this parameter and its value
elseif not utilities.is_set (v) then -- for empty parameters
if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter
k = ('' == k) and '(empty string)' or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text
table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list
end
-- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep?
-- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that)
-- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here
end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact?
end
if 0 ~= #empty_unknowns then -- create empty unknown error message
utilities.set_message ('err_param_unknown_empty', {
1 == #empty_unknowns and '' or 's',
utilities.make_sep_list (#empty_unknowns, empty_unknowns)
});
end
local url_param_t = {};
for k, v in pairs( args ) do
if 'string' == type (k) then -- don't evaluate positional parameters
has_invisible_chars (k, v); -- look for invisible characters
end
has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values
missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe?
args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label
if 'string' == type (k) and not cfg.url_skip[k] then -- when parameter k is not positional and not in url skip table
url_param_t[k] = v; -- make a parameter/value list for extraneous url check
end
end
has_extraneous_url (url_param_t); -- look for url in parameter values where a url does not belong
return table.concat ({
frame:extensionTag ('templatestyles', '', {src=styles}),
citation0( config, args)
});
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {citation = citation};
03d0c65e9544044eef296e124f940c7cc9319972
Template:Balkan Wars
10
1107
2413
2023-08-31T03:15:06Z
wikipedia>Ortizesp
0
Disambiguating links to [[Božidar Janković]] (link changed to [[Božidar Janković (general)]]) using [[User:Qwertyytrewqqwerty/DisamAssist|DisamAssist]].
wikitext
text/x-wiki
{{Military navigation
| name = Balkan Wars
| style = wide
| state = {{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}}
| bodyclass = hlist
| title = [[Balkan Wars]]
| category = Balkan Wars
| group1 = Background
| list1 =
* [[Rise of nationalism in the Ottoman Empire|Nationalism in the Ottoman Empire]]
** [[Greater Albania|Albanian]]
** [[Bulgarian irredentism|Bulgarian]]
** [[Megali Idea|Greek]]
** [[Greater Serbia|Serbian]]
* [[Congress of Berlin]]
* Annexation of [[Eastern Rumelia]]
* [[Serbo-Bulgarian War]]
* [[Greco-Turkish War (1897)|Greco-Turkish War of 1897]]
* [[Cretan State]]
* [[Internal Macedonian Revolutionary Organization|IMRO]] & [[Ilinden–Preobrazhenie Uprising]]
* [[Macedonian Struggle]]
* [[Young Turk Revolution]]
* [[Bosnian Crisis]]
* [[Bulgarian Declaration of Independence|Bulgarian Independence]]
* [[31 March Incident]]
* [[Goudi coup]]
* [[Italo-Turkish War]]
* [[Albanian revolt of 1912]]
* [[Balkan League]]
|list2style = background: gainsboro;
|list2 = '''[[First Balkan War]]'''
| group3 = Battles
| list3 =
* [[Battle of Sarantaporo|Sarantaporo]]
* [[Battle of Kardzhali|Kardzhali]]
* [[Battle of Pente Pigadia|Pente Pigadia]]
* [[Battle of Sorovich|Sorovich]]
* [[Battle of Kumanovo|Kumanovo]]
* [[Battle of Kirk Kilisse|Kirk Kilisse]]
* [[Siege of Scutari (1912–1913)|Scutari]]
* [[Battle of Lule Burgas|Lule Burgas]]
* [[Battle of Yenidje|Yenidje]]
* [[Siege of Adrianople (1912–1913)|Adrianople]]
* [[Battle of Prilep|Prilep]]
* [[Himara revolt of 1912|Himara]]
* [[Battle of Monastir|Monastir]]
* [[First Battle of Çatalca|First Çatalca]]
* [[Battle of Kaliakra (1912)|Kaliakra]]
* [[Battle of Merhamli|Merhamli]]
* [[Battle of Driskos|Driskos]]
* [[Battle of Elli|Elli]]
* [[Capture of Korytsa|Korytsa]]
* [[Battle of Lemnos (1913)|Lemnos]]
* [[Battle of Bulair|Bulair]]
* [[Battle of Şarköy|Şarköy]]
* [[Battle of Bizani|Bizani]]
* [[Second Battle of Çatalca|Second Çatalca]]
| group4 = Diplomacy and politics
| list4 =
* [[London Conference of 1912–1913|London Conference]]
* [[Independent Albania|Albanian Independence]]
* [[1913 Ottoman coup d'état]]
* [[Treaty of London (1913)|Treaty of London]]
|list5style = background: gainsboro;
|list5 = '''[[Second Balkan War]]'''
| group6 = Battles
| list6 =
* [[Battle of Kilkis–Lachanas|Kilkis–Lachanas]]
* [[Battle of Doiran (1913)|Doiran]]
* [[Battle of Bregalnica|Bregalnica]]
* [[Battle of Knjaževac|Knjaževac]]
* [[Battle of Kalimanci|Kalimanci]]
* [[Battle of Kresna Gorge|Kresna Gorge]]
* [[Southern Dobruja Offensive|Southern Dobruja]]
* [[Romanian landings in Bulgaria]]
* [[Siege of Vidin (1913)|Vidin]]
* [[Battle of Pirot (1913)|Pirot]]
| group7 = Diplomacy and politics
| list7 =
* [[Greek–Serbian Alliance of 1913|Greek–Serbian Alliance]]
* [[Provisional Government of Western Thrace]]
* [[Treaty of Bucharest (1913)|Treaty of Bucharest]]
* [[Treaty of Constantinople (1913)|Treaty of Constantinople]]
* [[Treaty of Athens]]
| group8 = Other
| list8 =
* [[1913 Romanian Army cholera outbreak]]
|list9style = background: gainsboro;
|list9 = '''General'''
| group10 = Aftermath
| list10 =
* [[Autonomous Republic of Northern Epirus|Autonomy of Northern Epirus]]
* [[Greco-Turkish crisis of 1914]]
* [[Assassination of Archduke Franz Ferdinand|Sarajevo Assassination]] and [[World War I]]
* [[Ottoman–Bulgarian alliance]]
* [[Balkans theatre|Balkans campaign of WWI]]
** [[Serbian campaign]]
** [[Macedonian front]]
| group11 = Atrocities
| list11 =
* [[Report of the International Commission on the Balkan Wars|Carnegie Commission]]
* [[Massacres of Albanians in the Balkan Wars|Massacres of Albanians]]
* [[Destruction of the Thracian Bulgarians in 1913|Bulgarians deportation program]]
* [[Greek genocide#Events|Initial phase of the Greek genocide]]
* [[List of places burned during the Balkan Wars|Places burned down]]
| group12 = Participants
| list12 =
* [[Kingdom of Bulgaria|Bulgaria]]
** [[Ferdinand I of Bulgaria|Ferdinand I]]
** [[Ivan Evstratiev Geshov|Ivan Geshov]]
** [[Stoyan Danev]]
** [[Mihail Savov]]
** [[Ivan Fichev]]
** [[Vasil Kutinchev]]
** [[Nikola Ivanov]]
** [[Radko Dimitriev]]
** [[Stiliyan Kovachev]]
** [[Georgi Todorov (general)|Georgi Todorov]]
* [[Greece in the Balkan Wars|Greece]]
** [[George I of Greece|George I]]
** [[Constantine I of Greece|Constantine I]]
** [[Eleftherios Venizelos]]
** [[Panagiotis Danglis]]
** [[Pavlos Kountouriotis]]
** [[Konstantinos Sapountzakis]]
** [[Viktor Dousmanis]]
* [[Kingdom of Montenegro|Montenegro]]
** [[Nicholas I of Montenegro|Nicholas I]]
** [[Danilo, Crown Prince of Montenegro|Crown Prince Danilo]]
** [[Janko Vukotić]]
* [[Ottoman Empire]]
** [[Mehmed V]]
** [[Nazim Pasha]]
** [[Zeki Pasha]]
** [[Mehmet Esat Bülkat|Esad Pasha]]
** [[Kölemen Abdullah Pasha]]
** [[Ali Rıza Pasha]]
** [[Hasan Tahsin Pasha]]
** [[Enver Pasha|Enver Bey]]
** [[Ahmed Izzet Pasha]]
* [[Kingdom of Romania|Romania]]
** [[Carol I of Romania|Carol I]]
** [[Ferdinand I of Romania|Crown Prince Ferdinand]]
** [[Alexandru Averescu]]
* [[Serbia in the Balkan Wars|Serbia]]
** [[Peter I of Serbia|Peter I]]
** [[Alexander I of Yugoslavia|Crown Prince Alexander]]
** [[Radomir Putnik]]
** [[Petar Bojović]]
** [[Stepa Stepanović]]
** [[Božidar Janković (general)|Božidar Janković]]
* Other Balkan states: [[Albania during the Balkan Wars|Albania]] ([[Ismail Kemal]])
| below =
* [[:Category:Balkan Wars|Category]]
}}<noinclude>
{{collapsible option |statename=optional |default=collapsed}}
[[Category:Europe war and conflict navigational boxes]]
</noinclude>
66e26a69be983c820e6ca2c449f43206837f4fed
Template:Infobox musical artist
10
1141
2467
2023-08-31T14:02:47Z
w>Paine Ellsworth
0
per edit request on talk page - include discography parameter
wikitext
text/x-wiki
{{Infobox
| child = {{lc:{{{embed|}}}}}
| bodyclass = vcard plainlist
| headerstyle = background-color: {{Infobox musical artist/color}}
| autoheaders = y
| title = {{#ifeq:{{lc:{{{embed|}}}}}|yes|'''Musical career'''}}
| decat = yes <!-- remove from template:infobox tracking categories -->
| abovestyle = background-color: {{Infobox musical artist/color}}; font-size: 125%;
| above = {{#ifeq:{{lc:{{{embed|}}}}}|yes||{{#if:{{{name|{{PAGENAMEBASE}}}}}|{{#if:{{{honorific_prefix|}}}|<div class="honorific-prefix" style="font-size: 78%; font-weight: normal;">{{{honorific_prefix|}}}</div>}}<div class="{{Infobox musical artist/hCard class|{{{background|}}}}}">{{{name|{{PAGENAMEBASE}}}}}</div>{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang|}}}">}}{{{native_name|}}}{{#if:{{{native_name_lang|}}}|</div>}}}}{{#if:{{{honorific_suffix|}}}|<div class="honorific-suffix" style="font-size: 78%; font-weight: normal;">{{{honorific_suffix|}}}</div>}} |{{BASEPAGENAME}}}}}}
| image = {{#invoke:InfoboxImage|InfoboxImage
|image={{{image|}}}
|size={{#ifeq:{{lc:{{{landscape|}}}}}|yes|{{min|300|{{#if:{{#ifexpr:{{{image_size|}}}}}|300|{{{image_size|}}}}}}}x200px|{{{image_size|}}}}}
|sizedefault=frameless
|upright={{{image_upright|1}}}
|title={{{alt|{{{caption|}}}}}}
|alt={{{alt|}}}
|suppressplaceholder=yes}}
| caption = {{{caption|}}}
| header1 = {{#if:{{{image|}}}|Background information}}
| class3 = nickname
| label3 = {{Nowrap|Birth name}}
| data3 = {{{birth_name|}}}
| class4 = nickname
| label4 = {{Nowrap|Also known as}}
| data4 = {{{alias|}}}
| label5 = Born
| data5 = {{br separated entries|{{{birth_date|}}}|{{{birth_place|}}}}}
| label6 = Origin
| data6 = {{{origin|}}}
| label7 = Died
| data7 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}}
| label8 = Genres
| data8 = {{{genre|}}}
| class9 = role
| label9 = {{#if:{{{occupations|}}}|Occupations|Occupation(s)}}
| data9 = {{if empty|{{{occupations|}}}|{{{occupation|}}}}}
| class10 = note
| label10 = {{#if:{{{instruments|}}}|Instruments|Instrument(s)}}
| data10 = {{{instruments|{{{instrument|}}}}}}
| label11 = Discography
| data11 = {{{discography|}}}
| label12 = {{Nowrap|Years active}}
| data12 = {{{years_active|}}}
| label13 = Labels
| data13 = {{{label|}}}
| label14 = Member of
| data14 = {{{current_member_of|}}}
| label15 = Formerly of
| data15 = {{{past_member_of|}}}
| label16 = Spinoffs
| data16 = {{{spinoffs|}}}
| label17 = Spinoff of
| data17 = {{{spinoff_of|}}}
| label18 = <span class="nowrap">Spouse(s)</span>
| data18 = {{{spouse|}}}
| label19 = <span class="nowrap">Partner(s)</span>
| data19 = {{{partner|}}}
| header20 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label21 = Members
| data21 = {{{current_members|}}}
| header22 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label23 = {{Nowrap|Past members}}
| data23 = {{{past_members|}}}
| header30 = {{#ifeq:{{lc:{{{embed|}}}}}|yes||<nowiki />}}
| label31 = Website
| data31 = {{{website|}}}
| label40 = <nowiki />
| data41 = {{{module|}}}
| data42 = {{{module2|}}}
| data43 = {{{module3|}}}
}}<includeonly>{{#if:{{{current_members|}}}{{{past_members|}}}||{{#ifeq:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Mm]usical [Aa]rtists?}}<!--
Is infobox in lead:
-->{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ss]inger}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Mm]usician}}{{#invoke:Is infobox in lead|main|[Ii]nfobox [Ii]nstrumentalist}}|true|{{short description|Musical artist|noreplace}}}}}}<!--
hCards:
-->{{Main other|1=[[Category:Articles with hCards]]}}<!--
Unknown parameters:
-->{{#invoke:Check for unknown parameters | check | unknown={{main other|1=[[Category:Pages using Template:Infobox musical artist with unknown parameters|_VALUE_]]}}| preview = Page using [[Template:Infobox musical artist]] with unknown parameter "_VALUE_"| ignoreblank=y <!-- whitelist 29 Jun 2022
[38x param name]: -->| alias | alt | associated_acts | background | birth_date | birth_name | birth_place | caption | current_member_of | current_members | death_date | death_place | discography | embed | genre | honorific_prefix | honorific_suffix | image_size | image_upright | image | instrument | instruments | label | landscape | module2 | module3 | module | name | native_name_lang | native_name | occupations | occupation | origin | partner | past_member_of | past_members | spinoff_of | spinoffs | spouse | website | years_active}}<!--
Associated_acts tracking:
-->{{main other|1={{#if:{{{associated_acts|}}}|[[Category:Pages using infobox musical artist with associated acts]]}}}}</includeonly><!--
Documentation:
--><noinclude>{{Documentation}}</noinclude>
68288e373bb81a89d5f51c4f49452b0cdb52b0f3
Template:Infobox musical artist/doc
10
1376
2711
2023-08-31T14:41:38Z
w>Paine Ellsworth
0
/* For groups or bands */ further example
wikitext
text/x-wiki
<noinclude>{{pp-vandalism|small=yes}}</noinclude>{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[</nowiki>[[Wikipedia:Wikidata]]<nowiki>]]) -->
{{High-use}}
{{Person infobox header}}
{{Music infobox header}}
{{auto short description|conditions=unless {{para|current_members}} or {{para|past_members}} is populated}}
{{lua|Module:InfoboxImage|Module:Check for unknown parameters}}
'''{{tl|Infobox musical artist}}''' is the standard infobox for musician articles, and is within the purview of [[Wikipedia:WikiProject Musicians|WikiProject Musicians]].
This template may also be used as a module (or sub-template) of {{tl|Infobox person}}; see [[Wikipedia:WikiProject Infoboxes/embed|WikiProject Infoboxes/embed]] for guidance on such usage.
See also [[Wikipedia:WikiProject Musicians/Infobox|WikiProject Musicians/Infobox]] for more information.
== Usage ==
{{em|One of the following two}} alternatives (one for individuals, one for groups) should be placed in an article at the top of the page, before the introduction.
=== For articles about individuals ===
* For dancers, use {{tl|Infobox dancer}} instead.
{{Parameter names example | honorific_prefix| name| honorific_suffix| image| image_upright| image_size| landscape| alt| caption| native_name| native_name_lang| birth_name| alias| birth_date| birth_place| origin| death_date| death_place| genre| occupations| instruments| discography| years_active| label| current_member_of| past_member_of| spouse| partner| website| module| module2| module3 }}
<syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0">
{{Infobox musical artist
| background = person
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_upright =
| image_size =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt =
| caption =
| native_name =
| native_name_lang =
| birth_name = <!-- leave empty if the same "name" -->
| alias =
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year unless the exact date is already WIDELY published, as per [[WP:DOB]] -->
| birth_place =
| origin =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (death date first) -->
| death_place =
| genre =
| occupation =
| instrument =
| discography =
| years_active = <!-- YYYY–YYYY (or –present) -->
| label =
| current_member_of =
| past_member_of =
| spouse = <!-- Use article title or common name -->
| partner = <!-- (unmarried long-term partner) -->
| website = <!-- {{URL|example.com}} or {{Official URL}} -->
| module =
| module2 =
| module3 =
}}
</syntaxhighlight>
=== For articles about musical groups ===
* Some types of musical groups have their own dedicated infobox, which should be used instead: {{tl|Infobox choir}}, {{tl|Infobox orchestra}}, {{tl|Infobox marching band}}
{{Parameter names example | name | image | image_size | image_upright | landscape | alt | caption | alias | origin | genre | discography | years_active | label | website | current_members | past_members | spinoffs | spinoff_of | module | module2 | module3 }}
<syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0">
{{Infobox musical artist
| background = group_or_band
| name =
| image =
| image_size =
| image_upright =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt =
| caption =
| alias =
| origin =
| genre =
| discography =
| years_active = <!-- {{Start date|YYYY}}–{{End date|YYYY}} (or –present) -->
| label =
| spinoffs =
| spinoff_of =
| current_members =
| past_members =
| website = <!-- {{URL|example.com}} or {{Official URL}} -->
| module =
| module2 =
| module3 =
}}
</syntaxhighlight>
== Parameters ==
* Most fields are optional and the row will simply be omitted if no data is supplied.
* See [[Wikipedia:WikiProject Musicians|WikiProject Musicians]] for more information about this template.
=== background ===
Currently only used to track if it's a single person or a group that is required for [[Wikipedia:WikiProject Microformats/hcard|hCard microformat]]. Use value <code>person</code> or <code>group_or_band</code>.
=== honorific_prefix ===
Titles or styles such as "[[The Right Honourable]]"
=== name ===
The name of the group or artist ("the act") in plain text only. Logos and other graphics are to be avoided in this field in accordance with [[WP:ACCESS]], [[WP:FAIR]], and in particular [[WP:LOGO]]. This field is mandatory.
=== honorific_suffix ===
Honours such as "CBE", "OBE" (e.g. [[Cilla Black|Cilla Black OBE]])
=== image ===
An image of the act, sufficiently clear for display at 220 pixels' width. Set to only the image name (e.g. <code>Example.png</code>) not <code>File:Example.png</code> or <code><nowiki>[[File:Example.png|200px|abc]]</nowiki></code>.
=== image_size ===
The image size should only be specified if the image is smaller than 220 pixels width. Enter the width in pixels without "px", for example <code>150</code>.
=== image_upright ===
Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).
=== landscape ===
Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels.
=== alt ===
Alt text for the image, for visually impaired and other readers who cannot see the image. See [[WP:ALT]].
=== caption ===
Caption for the image to be displayed.
=== native_name ===
{{Em|This field is only relevant for individuals.}} The artist's name in their own language. For Chinese-language individuals, use {{tl|Infobox Chinese}} for <code>|module=</code> instead. For Korean-language individuals, use {{tl|Infobox Korean name}} for <code>|module=</code> instead.
=== native_name_lang ===
{{Em|This field is only relevant for individuals.}} [[List of ISO 639-2 codes|ISO 639-2 code]] ("fre" or "fra" for French). If more than one, use {{tl|lang}} for {{Para|native_name}} instead
=== birth_name ===
{{Em|This field is only relevant for individuals.}} The person's name at birth, if different
=== alias ===
For listing {{em|official}} [[stage name]]s for the act or solo artist other than the name in the {{para|name}} parameter. Also for the solo artist's [[legal name]](s), or other officially authorized names that differ from their birth name. This field is not for nicknames such as "The Godfather of Soul" ([[James Brown]]) or "Nippy" ([[Whitney Houston]]), which are not the artists' {{em|official}} names.
=== birth_date ===
{{Em|This field is only relevant for individuals.}} The artist's date of birth; it is preferable to use {{tl|Birth date and age}} (for example <code><nowiki>{{Birth date and age|1949|12|31}}</nowiki></code>) to display current age. If the artist's age is verified, but the date is not known, then use {{tl|Birth based on age as of date}} (for example <code><nowiki>{{Birth based on age as of date|63|2012|08|30}}</nowiki></code>). For dead people, use {{tl|Birth date}} (for example <code><nowiki>{{Birth date|1949|12|31}}</nowiki></code>). Also list the place of birth using the birth_place parameter (below).
<syntaxhighlight lang="wikitext">{{Birth date and age|Year|Month|Day}}</syntaxhighlight>
=== birth_place ===
{{Em|This field is only relevant for individuals.}} The artist's place of birth. For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. (see field "[[Template:Infobox musical artist/doc#origin|origin]]" below).
<syntaxhighlight lang="wikitext">[[City]], State/Province, Country</syntaxhighlight>
=== origin ===
The town, city etc., from which the group or musician originated (that is, the place where the group was founded, or where the individual performer started their career, should it not match the location of their birth). If the place is not known, specify at least the country. For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. Omit the country if it does not differ from that specified at the field "birth_place".
<syntaxhighlight lang="wikitext">[[City]], State/Province, Country</syntaxhighlight>
=== death_date ===
{{Em|This field is only relevant for individuals.}} The artist's date of death (same format as birth_date; but use {{tl|Death date and age}}).
=== death_place ===
{{Em|This field is only relevant for individuals.}}
The artist's place of death (same format as birth_place). For "United States" and "United Kingdom", it is preferred that they be abbreviated "U.S." and "UK", but political subdivisions should never be (never "MA" for "Massachusetts", "ON" for "Ontario", etc.). See Notes{{r|location}} for details. Do not add a flag icon. Omit the country if it does not differ from that specified at the field "birth_place".
=== genre ===
The genre or genres of music performed by the act. Aim for generality (e.g. <code><nowiki>[[Hip hop music|Hip hop]]</nowiki></code> rather than <code><nowiki>[[East Coast hip hop]]</nowiki></code>) and preferably use two to four. Genres should be separated by using commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}} Genres should be wikilinked. Use piped links where needed, for example: <code><nowiki>[[Pop music|Pop]], [[Rock music|rock]]</nowiki></code>. Most genres are not proper nouns and should not be capitalized. However, the first word in a list of multiple genres should be capitalized. Genres that are sourced in the article itself do not require a source in the infobox, but sometimes it can be useful to have the source listed again anyway, to help prevent edit warring. A hidden comment such as <code><nowiki><!-- genres listed here are sourced in the article text --></nowiki></code> can also be used to this end.
=== occupation ===
{{Em|This field is only relevant for individuals.}} Roles the artist has fulfilled (e.g. musician, songwriter, producer). For artists who have participated in forms of entertainment outside of music (such as acting), these occupations can be included if notable. Please observe sentence case and capitalise only the first letter of the first item (e.g. Musician, actor, singer-songwriter). Multiple occupations should be ordered according to importance and separated by commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}}
=== instrument ===
{{Em|This field is only relevant for individuals.}} General class(es) of instrument(s) played by the artist (e.g. <code><nowiki>guitar</nowiki></code> or <code><nowiki>violin</nowiki></code>). Include <code><nowiki>singing</nowiki></code>, <code><nowiki>rapping</nowiki></code>, <code><nowiki>beatboxing</nowiki></code> or <code><nowiki>scat singing</nowiki></code> if relevant. Separate multiple entries by using commas, {{tl|Flatlist}} or {{tl|Hlist}}.{{r|lists}} Instruments listed in the infobox should be limited to {{em|only}} those that the artist is primarily known for using. The instruments infobox parameter is {{em|not}} intended as a [[WP:COATRACK]] for every instrument the subject has ever used.
=== discography ===
Link to an article about the musician's or group's [[discography]].
=== years_active ===
Period(s) during which the act was or has been active. Only calendar year ranges or a single calendar year should be listed; for example, do not distinguish between the period [[Paul McCartney]] was in [[the Beatles]] and his solo career. Use commas, {{tl|Flatlist}}, or {{tl|Hlist}}}.{{r|lists}} to separate non-consecutive periods, and denote ranges with an unspaced [[en dash]] (e.g. {{nowrap|1993–2004, 2005–present}}). See [[WP:DATE#Longer periods]] and [[WP:MOS#En dashes]].
=== label ===
The record label or labels to which the act has been signed. Omit parenthetical dates; save that information for the main article as this degree of detail is better discussed in prose. [[MOS:PIPEDLINK|Pipe out]] "Records", "Entertainment", "Music" or similar words from the end of any label's name. For example, use <code><nowiki>[[Universal Records|Universal]]</nowiki></code> rather than <code><nowiki>[[Universal Records]]</nowiki></code>. Separate multiple entries by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}} Start with the oldest first.
=== current_member_of ===
The groups/bands of which the artist is currently part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}
=== past_member_of ===
The groups/bands of which the artist is previously part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}
=== spinoffs ===
Groups which have spun off from this group. For example, sub-units. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}
=== spinoff_of ===
A group from which this group has spun off.
=== spouse ===
{{Em|This field is only relevant for individuals.}} The confirmed spouse(s) of the individual. Names of the spouses should be separated by using commas, {{tl|Flatlist}}, {{tl|Hlist}}, or {{tl|Unbulleted list}}. {{Tl|Marriage}} may be used to indicate the date at which the marriage(s) started and ended where known. {{r|lists}}
=== partner ===
{{Em|This field is only relevant for individuals.}} As for spouse or spouses, but the confirmed long term unmarried partner(s) of the individual.
=== current_members ===
{{Em|This field is only relevant for active groups.}} Current members of the group, listed in order of joining with no other notation than names. For multiple members joining concurrently (such as the formation of the band), list them according to alphabetical order. Separate multiple entries using [[Help:list|<nowiki>*</nowiki> list markup]]. For example,
<syntaxhighlight lang="wikitext" style="overflow:auto">
| current_members =
* Member 1
* Member 2
* Member 3
</syntaxhighlight>
=== past_members ===
{{Em|This field is only relevant for groups.}} Past members of the group, listed in order of joining with no other notation than names. If a group is inactive, all members should be listed here, and none in the "current_members" field. If membership of the group has varied over time, it should not be noted here, but may be discussed in the article body. Separate multiple entries using [[Help:list|<nowiki>*</nowiki> list markup]]. For example,
<syntaxhighlight lang="wikitext" style="overflow:auto">
| past_members =
* Member 1
* Member 2
* Member 3
</syntaxhighlight>
=== website ===
The {{em|single}} web address for the act's primary {{em|official}} website. Use {{tl|URL}} as <nowiki>{{URL|example.com}} </nowiki>. {{tl|Official URL}} can be used to automatically fetch the web address from Wikidata.
=== embed ===
Set to 'yes' if embedded in another infobox template.
=== module, module2, module3 ===
Used for embedding other infoboxes into this one.
== Use as a child template ==
The '''embed''' parameter is used when embedding this infobox into another.
{{Infobox person module documentation |template=Infobox musical artist |parameter=embed}}
== Embedding other templates ==
The '''module''' parameters (module, module2, module3) are used for embedding other templates into this infobox.
<syntaxhighlight lang="wikitext" style="overflow:auto; white-space:pre;">
{{Infobox musical artist
| name =
| <!-- etc. -->
| module = {{Infobox ABC
| embed = yes <!-- or child=yes / subbox=yes -->
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Examples ==
=== For individual musicians ===
{{Infobox musical artist
| name = Mariah Carey
| image = Mariah Carey13 Edwards Dec 1998.jpg
| image_upright =
| alt = Young woman singing into a hand mic with her eyes closed and a big smile
| caption = Carey performing in 1998
| birth_name = <!-- leave empty if the same "name" -->
| birth_date = {{Birth date and age|1970|3|27}}
| birth_place = [[Huntington, New York]], U.S.
| origin = New York City
| genre = {{Flatlist|
* [[Pop music|Pop]]
* [[Contemporary R&B|R&B]]
* [[dance-pop]]
}}
| discography = [[Mariah Carey albums discography|Albums]]<br />[[Mariah Carey singles discography|Singles]]
| occupation = Singer-songwriter, record producer
| years_active = 1990–present
| spouse = {{Unbulleted list|{{marriage|[[Tommy Mottola]]|1993|1998|end=divorced}}|{{marriage|[[Nick Cannon]]|2008|2016|end=divorced}}}}
| label = {{Flatlist|
* [[Columbia Records|Columbia]]
* [[Virgin Records|Virgin]]
* [[MonarC]]/[[Island Records|Island]]
}}
| website = {{URL|mariahcarey.com}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0">
{{Infobox musical artist
| name = Mariah Carey
| image = Mariah Carey13 Edwards Dec 1998.jpg
| image_upright =
| alt = Young woman singing into a hand mic with her eyes closed and a big smile
| caption = Carey performing in 1998
| birth_name = <!-- leave empty if the same "name" -->
| birth_date = {{Birth date and age|1970|3|27}}
| birth_place = [[Huntington, New York]], U.S.
| origin = New York City
| genre = {{hlist|
* [[Pop music|Pop]]
* [[Contemporary R&B|R&B]]
* [[dance-pop]]
}}
| discography = [[Mariah Carey albums discography|Albums]]<br />[[Mariah Carey singles discography|Singles]]
| occupations = Singer-songwriter, record producer
| years_active = 1990–present
| spouse = {{Unbulleted list|{{marriage|[[Tommy Mottola]]|1993|1998|end=divorced}}|{{marriage|[[Nick Cannon]]|2008|2016|end=divorced}}}}
| label = {{Flatlist|
* [[Columbia Records|Columbia]]
* [[Virgin Records|Virgin]]
* [[MonarC]]/[[Island Records|Island]]
}}
| website = {{URL|mariahcarey.com}}
}}
</syntaxhighlight>
{{Clear}}
=== For groups or bands ===
{{Infobox musical artist
| name = Audioslave
| image = Audioslave 2005.jpg
| landscape = yes
| alt = Four-man rock group performing on stage, spotlit, with row of darkened fans in the foreground
| caption = From left to right: [[Tim Commerford]], [[Chris Cornell]], [[Brad Wilk]] and [[Tom Morello]] in 2005
| origin = [[Los Angeles]], California, U.S.
| genre = {{Flatlist|
* [[Hard rock]]
* [[alternative rock]]
* [[post-grunge]]
}}
| discography = [[Audioslave discography]]
| years_active = 2001–2007
| label = {{Flatlist|
* [[Epic Records|Epic]]
* [[Interscope Records|Interscope]]
}}
| current_members =
| past_members =
* [[Chris Cornell]]
* [[Tom Morello]]
* [[Tim Commerford]]
* [[Brad Wilk]]
| website = {{URL|audioslave.com}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; margin-left:0">
{{Infobox musical artist
| name = Audioslave
| image = Audioslave 2005.jpg
| landscape = yes
| alt = Four-man rock group performing on stage, spotlit, with row of darkened fans in the foreground
| caption = From left to right: [[Tim Commerford]], [[Chris Cornell]], [[Brad Wilk]] and [[Tom Morello]] in 2005
| origin = [[Los Angeles]], California, U.S.
| genre = {{Flatlist|
* [[Hard rock]]
* [[alternative rock]]
* [[post-grunge]]
}}
| discography = [[Audioslave discography]]
| years_active = 2001–2007
| label = {{Flatlist|
* [[Epic Records|Epic]]
* [[Interscope Records|Interscope]]
}}
| current_members =
| past_members =
* [[Chris Cornell]]
* [[Tom Morello]]
* [[Tim Commerford]]
* [[Brad Wilk]]
| website = {{URL|audioslave.com}}
}}
</syntaxhighlight>
Examples of the template in use can be found at:
* [[Elvis Presley]]
* [[Madonna]]
* [[Sly and the Family Stone]]
== Tracking categories ==
Hidden maintenance/tracking categories which may be added to articles using this infobox:
* {{Category link with count|Pages using Template:Infobox musical artist with unknown parameters|pages}} – any articles using this infobox with unknown parameter names
* {{clc|Pages using infobox musical artist with associated acts|pages}} - all articles where this deprecated param has been used
* {{Category link with count|Articles with hCards|pages}} – all articles using this infobox
== See also ==
'''Supporting templates'''
* [[Template:Infobox musical artist/hCard class]]
'''Similate templates'''
* [[Template:Infobox person]]
== Notes ==
{{Reflist|refs=
<ref name="lists">For short horizontal lists of two or three items, comma separators are acceptable, but for longer lists the use of {{tl|Flatlist}} or {{tl|Hlist}} is preferred as they offer a benefit to users of screen readers. Vertical lists should always be implemented by {{tl|Plainlist}} or {{tl|Unbulleted list}} and never by {{tag|br|s}} tags for reasons of [[Wikipedia:Manual of Style/Accessibility#Vertical lists|accessibility]].</ref>
<ref name="location">As per RfC "Naming countries in infoboxes": When identifying a location, city or region in the United States or United Kingdom, the preferred approach is to use the country abbreviations allowed by [[MOS:ACRO]], such as "Portsmouth, New Hampshire, U.S." and "Cardiff, Wales, UK", rather than spelling out the full country name. Avoid using abbreviations for states or provinces in all nations. {{xt|New Hampshire}} rather than {{!xt|NH}}, {{xt|New South Wales}} rather than {{!xt|NSW}}, or {{xt|British Columbia}} rather than {{!xt|BC}} (see [[MOS:POSTABBR]]). Cities such as New York City and London may be rendered as "New York City, U.S." and "London, UK" or simply "New York City" and "London". Also, these should not be linked when the context makes it clear (see [[MOS:OVERLINK]]). If only the country name is included, it may be written out in full.
</ref>
}}
== Microformat ==
{{UF-hcard-person}}
The determination between <code>class="fn"</code> (for individuals) and <code>class="fn org"</code> (for groups) and is made by {{tl|Infobox musical artist/hCard class}} using {{para|background}}.
== TemplateData ==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "An infobox for musical artists/groups.",
"params": {
"honorific_prefix": {
"label": "Honorific prefix",
"description": "Titles such as Sir.",
"type": "string",
"required": false
},
"name": {
"label": "Name",
"description": "Name of group/artist, plain text only.",
"type": "string",
"default": "The page name"
},
"honorific_suffix": {
"label": "Honorific suffix",
"description": "Honours such as CBE, OBE.",
"type": "string",
"required": false
},
"image": {
"label": "Image",
"description": "Image to use in infobox Set to only the image name.",
"type": "wiki-file-name",
"required": false,
"example": "ABBA - TopPop 1974 5.png"
},
"image_size": {
"label": "Image size",
"description": "Should only be specified if the image is smaller than 220 pixels width. Enter the width in pixels without 'px'.",
"type": "string",
"required": false,
"example": "150",
"deprecated": "image_upright should be used instead"
},
"image_upright": {
"label": "Image upright",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"type": "string",
"required": false
},
"landscape": {
"label": "Landscape",
"description": "Set to yes when using wide, short images.",
"type": "line",
"required": false,
"autovalue": "yes",
"suggestedvalues": [
"yes"
]
},
"alt": {
"label": "Image alt text",
"description": "Alt text for the image, for visually impaired and other readers who cannot see the image.",
"type": "string",
"required": false
},
"caption": {
"label": "Image caption",
"description": "Caption for the image.",
"type": "string",
"required": false
},
"native_name": {
"label": "Native name",
"description": "The artist's name in their own language.",
"type": "string",
"required": false
},
"native_name_lang": {
"label": "Native name language (code)",
"description": "ISO 639-2 code e.g. 'fra' for French. If more than one, use {{lang}} for native_name instead",
"type": "line",
"required": false,
"example": "fra"
},
"birth_name": {
"label": "Birth name",
"description": "The person's name at birth.",
"type": "string",
"required": false
},
"alias": {
"label": "Alias",
"description": "Official stage names, legal names, or other officially authorized names. Not for nicknames.",
"type": "string",
"required": false
},
"birth_date": {
"label": "Birth date",
"description": "The artist's date of birth; it is preferable to use {{Birth date and age}}.",
"type": "string",
"required": false,
"example": "{{Birth date and age|1949|12|31}}",
"autovalue": "{{Birth date and age|YYYY|MM|DD}}"
},
"birth_place": {
"label": "Birth place",
"description": "The artist's place of birth. e.g. '[[Lubbock, Texas]], U.S.'.",
"type": "string",
"required": false
},
"origin": {
"label": "Origin",
"description": "The city from which the singer or group originated.",
"type": "string",
"required": false,
"example": "[[Aston]], [[Birmingham]], England"
},
"death_date": {
"label": "Death date",
"description": "The artist's date of death use {{Death date and age}}",
"type": "string",
"required": false,
"autovalue": "{{Death date and age|YYYY|MM|DD|YYYY|MM|DD}}"
},
"death_place": {
"label": "Death place",
"description": "Place of death.",
"type": "string",
"required": false
},
"genre": {
"label": "Genre",
"description": "The genre or genres of music performed by the act. Genres should be wikilinked and separated by using commas, {{tl|flatlist}} or {{tl|hlist}}",
"type": "string",
"required": false,
"example": "{{hlist|[[Rock music|Rock]]|[[synth-pop]]|[[house music|house}}"
},
"discography": {
"label": "Discography",
"description": "Link to an article or articles about the musician's or group's discography",
"type": "string",
"required": false,
"example": "[[ABBA discography]]"
},
"years_active": {
"label": "Years active",
"description": "Years artist/group was active.",
"type": "string",
"required": false,
"example": "1993–2004, 2005–present"
},
"label": {
"label": "Record label",
"description": "The record label or labels to which the act has been signed, as a comma- or {{tl|flatlist}}-separated list. Omit dates.",
"type": "string",
"required": false,
"example": "[[Universal Records|Universal]]"
},
"current_member_of": {
"label": "Current member of",
"description": "The groups/bands of which the artist is currently part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}",
"type": "string"
},
"past_member_of": {
"label": "Past member of",
"description": "The groups/bands of which the artist is formerly part of. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}",
"type": "string"
},
"spinoffs": {
"label": "Spinoffs",
"description": "Groups which have spun off from this group. For example, sub-units. Name of the groups/bands should be separated by using commas, {{tl|Flatlist}}, or {{tl|Hlist}}.{{r|lists}}",
"type": "string"
},
"spinoff_of": {
"label": "Spinoff of",
"description": "A group from which this group has spun off.",
"type": "string"
},
"spouse": {
"label": "Spouse(s)",
"description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–1999) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.",
"type": "string",
"required": false
},
"partner": {
"label": "Partner(s)",
"description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–1999) for former partner(s).",
"type": "string",
"required": false
},
"website": {
"label": "Website",
"description": "The single web address for the act's primary official website, {{URL|example.com}} or {{Official URL}}",
"type": "string",
"required": false,
"example": "{{URL|blacksabbath.com}}"
},
"current_members": {
"label": "Current members",
"description": "Name of current members of the group, listed in order of joining. Separate multiple entries using * list markup, one per line.",
"type": "string",
"required": false
},
"past_members": {
"label": "Past members",
"description": "Past members of the group, listed in order of joining. Separate multiple entries using * list markup, one per line. If a group is inactive, all members should be listed here, and none in the 'current_members' field.",
"type": "string",
"required": false
},
"embed": {
"label": "Embedded",
"description": "Set to 'yes' if embedded in another infobox template.",
"type": "line",
"required": false,
"autovalue": "yes",
"suggestedvalues": [
"yes"
]
},
"module": {
"label": "Module",
"description": "Used for embedding other infoboxes into this one.",
"type": "string",
"required": false
},
"module2": {
"label": "Module 2",
"description": "Used for embedding other infoboxes into this one.",
"type": "string",
"required": false
},
"module3": {
"label": "Module 3",
"description": "Used for embedding other infoboxes into this one.",
"type": "string",
"required": false
},
"background": {
"label": "Background",
"description": "Currently only used to track if it's a single person or a group for hCard microformat.",
"example": "person",
"type": "line",
"suggestedvalues": [
"person",
"group_or_band"
]
},
"occupation": {
"label": "Occupation(s)",
"description": "Roles the artist has fulfilled (e.g. musician, songwriter, producer, etc). For artists who have participated in forms of entertainment outside of music (such as acting), these occupations can be included if notable.",
"type": "string"
},
"occupations": {
"deprecated": true
},
"instruments": {
"deprecated": true
},
"instrument": {
"label": "Instrument(s)",
"description": "General classes of instruments played by the artist, e.g. guitar or violin. Include singing, rapping, beatboxing and/or scat singing if relevant. Separate multiple entries by using commas, {{tl|flatlist}} or {{tl|hlist}}. Instruments listed in the infobox should be limited to only those that the artist is primarily known for using.",
"type": "string"
},
"associated_acts": {
"deprecated": "Replace with (1) current_member_of / past_member_of for persons or (2) spinoffs / spinoff_of for groups"
}
},
"format": "{{_\n| _________________ = _\n}}\n",
"paramOrder": [
"honorific_prefix",
"background",
"name",
"honorific_suffix",
"image",
"image_size",
"image_upright",
"landscape",
"alt",
"caption",
"native_name",
"native_name_lang",
"birth_name",
"alias",
"birth_date",
"birth_place",
"origin",
"death_date",
"death_place",
"genre",
"occupation",
"instrument",
"discography",
"years_active",
"label",
"current_member_of",
"past_member_of",
"spinoffs",
"spinoff_of",
"spouse",
"partner",
"current_members",
"past_members",
"website",
"embed",
"module",
"module2",
"module3",
"occupations",
"instruments",
"associated_acts"
]
}
</templatedata>
{{Collapse bottom}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Music infobox templates|Musical Artist]]
[[Category:People and person infobox templates|Musical Artist]]
[[Category:Biographical templates usable as a module|Musical Artist]]
[[Category:Infobox templates with module parameter|Musical Artist]]
[[Category:WikiProject Musicians templates|Infobox Musical Artist]]
[[Category:Templates that add a tracking category]]<!--sort by PAGENAME-->
}}</includeonly>
31648732a0c3f204726e288b9e1783f3a42cbd23
Template:Template display
10
1066
2330
2023-08-31T17:59:44Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Template display]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 5077 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:Message box|ombox|type=notice
|image={{#switch:{{{1}}}|adaptive=[[File:Different devices simple.svg|65x65px|link=|alt=]]|nomobile=[[File:Handheld devices no.svg|55px|link=|alt=]]|nodesktop=[[File:Desktop devices no.svg|55px|link=|alt=]]}}
|text={{#switch:{{{1}}}
| adaptive = This template is [[Adaptive web design|responsive]] and <strong>displays differently in mobile and desktop view</strong>. Read the documentation for an explanation of the differences and why they exist.
| nomobile = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the documentation for an explanation.
| nodesktop = This template does ''not'' display in the desktop view of Wikipedia; it is <strong>mobile only</strong>. Read the documentation for an explanation.
| nomobilesidebar = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the [[Template:Sidebar/doc|parent documentation]] for an explanation.
| vector2022 = This template does not work properly in the [[Wikipedia:Vector 2022|Vector 2022]] skin. Read the documentation for an explanation.
| #default = {{{1}}}
}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
47cc41eacc2d2dec246f01b81111b280cec901a3
Template:Infobox organization/doc
10
1524
2859
2023-09-02T16:22:42Z
w>Hossam Azab
0
/* TemplateData */
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{tlc|{{BASEPAGENAME}}}} can be used to provide at-a-glance information at the start of an article about an organization.
== Usage ==
{{Parameter names example |_display=italics
|name |full_name |native_name |native_name_lang=es
|image={{{image}}} |image_size={{{image_size}}} |alt={{{alt}}} |caption
|logo={{{logo}}} |logo_size={{{logo_size}}} |logo_alt={{{logo_alt}}} |logo_caption
|map={{{map}}} |map_size={{{map_size}}} |map_alt={{{map_alt}}} |map_caption |map2={{{map2}}} |map2_size={{{map2_size}}} |map2_alt={{{map2_alt}}} |map2_caption
|abbreviation |nickname |pronounce={{{pronounce}}} |pronounce ref |pronounce comment |pronounce 2 |named_after |predecessor |merged |successor |formation |founder=''founder'' {{\}} ''founders'' |founding_location
|dissolved=''dissolved'' {{\}} ''defunct'' |merger |type |tax_id=''tax_id'' {{\}} ''vat_id''
|registration_id |status |purpose |professional_title |headquarters |location_city |location_country |location_city2 |location_country2 |addnl_location_city |addnl_location_country |addnl_location_city2 |addnl_location_country2 |coordinates |origins |region_served=''region_served'' {{\}} ''region'' {{\}} ''area_served'' |products=''products'' {{\}} ''product'' |services |methods=''methods'' {{\}} ''method'' |fields=''fields'' {{\}} ''field''
|membership |membership_year=''_year'' |language =''language'' {{\}} ''languages'' |owner=''owner'' {{\}} ''owners'' |sec_gen=''sec_gen'' {{\}} ''gen_sec''
|leader_title |leader_name |leader_title2 |leader_name2 |leader_title3 |leader_name3 |leader_title4 |leader_name4
|leader_title5 |leader_name5
|board_of_directors |key_people |main_organ =''main_organ'' {{\}} ''publication'' |parent_organization=''parent_organization'' {{\}} ''parent_organisation'' |subsidiaries |secessions |affiliations |ror_id
|budget |budget_year=''_year'' |revenue |revenue_year=''_year'' |disbursements |expenses |expenses_year=''_year'' |endowment |endowment_year=''_year'' | funding
|staff |staff_year=''_year'' |volunteers |volunteers_year=''_year''
|students |students_year=''_year''
|awards |website=<code><nowiki>{{URL|...}}</nowiki></code> |remarks |formerly=''formerly'' {{\}} ''former_name'' |footnotes |bodystyle
}}
===Full syntax===
Copy this version to use, remove hidden notes (both the <code><nowiki><!--</nowiki></code> and <code><nowiki>--></nowiki></code> characters) that surround certain entries, in order for the data you enter to appear in the published article. All fields '''''must''''' be [[lowercase]], and all are optional.
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox organization
| name = <!-- defaults to {{PAGENAME}}, if not provided -->
| full_name =
| native_name = <!-- organization's name in its local language -->
| native_name_lang = <!-- required ISO 639-1 code of the above native language -->
| logo =
| logo_size =
| logo_alt =
| logo_caption =
| image =
| image_size =
| alt = <!-- see [[WP:ALT]] -->
| caption =
| map = <!-- map image -->
| map_size = <!-- defaults to 250px -->
| map_alt =
| map_caption =
| map2 = <!-- 2nd map image, if required -->
| map2_size =
| map2_alt =
| map2_caption =
| abbreviation =
| nickname =
| pronounce =
| pronounce ref =
| pronounce comment =
| pronounce 2 =
| named_after =
| predecessor =
| merged = <!-- any other organization(s) which it was merged into -->
| successor =
| formation = <!-- or |established = --><!-- use {{start date and age|YYYY|MM|DD}} -->
| founder = <!-- or |founders = -->
| founding_location =
| dissolved = <!-- or |defunct = --><!-- use {{end date and age|YYYY|MM|DD}} -->
| merger = <!-- other organizations (if any) merged with, to constitute the new organization -->
| type = <!-- e.g., [[Nonprofit organization|Nonprofit]], [[Non-governmental organization|NGO]], etc. -->
| tax_id = <!-- or |vat_id = (for European organizations) -->
| registration_id = <!-- for non-profits -->
| status = <!-- legal status or description (company, charity, foundation, etc.) -->
| purpose = <!-- or |focus = --><!-- humanitarian, activism, peacekeeping, etc. -->
| professional_title = <!-- for professional associations -->
| headquarters =
| location_city =
| location_country =
| location_city2 =
| location_country2 =
| addnl_location_city =
| addnl_location_country =
| addnl_location_city2 =
| addnl_location_country2 =
| coordinates = <!-- {{coord|LAT|LON|display=inline,title}} -->
| origins =
| region_served = <!-- or |area_served = or |region = -->
| products = <!-- or |product = -->
| services =
| methods = <!-- or |method = -->
| fields = <!-- or |field = -->
| membership = <!-- number of members -->
| membership_year = <!-- year to which membership numbers/data apply -->
| language = <!-- or |languages = --><!-- any official language or languages used -->
| owner = <!-- or |owners = -->
| sec_gen = <!-- or |gen_sec for General Secretary -->
| leader_title = <!-- defaults to "Leader" -->
| leader_name =
| leader_title2 =
| leader_name2 =
| leader_title3 =
| leader_name3 =
| leader_title4 =
| leader_name4 =
| leader_title5 =
| leader_name5 =
| board_of_directors =
| key_people =
| main_organ = <!-- or |publication = --><!-- organization's principal body (assembly, committee, board, etc.) or publication -->
| parent_organization = <!-- or |parent_organisation = -->
| subsidiaries =
| secessions =
| affiliations =
| ror_id = <!-- unique ID in the Research Organization Registry -->
| budget =
| budget_year =
| revenue =
| revenue_year =
| disbursements =
| expenses =
| expenses_year =
| endowment =
| endowment_year =
| funding = <!-- source of funding e.g. for "think tanks" -->
| staff =
| staff_year =
| volunteers =
| volunteers_year =
| students =
| students_year =
| awards =
| website = <!-- {{Official URL}} or {{URL|example.com}} -->
| remarks =
| formerly = <!-- or |former_name = -->
| footnotes =
| bodystyle =
}}
</syntaxhighlight>
{{clear}}
=== Example ===
All fields are [[lower case]] and optional.
{{Infobox organization
| name = Organization's {{var|name}}
| full_name = Organization's unabbreviated name
| native_name = {{var|native_name}}
| native_name_lang = es
| image = Example.png
| alt = Text alternative for those who do not see the image
| caption = {{longitem|({{var|caption}}{{thin space}}''':'''){{break}}Example.png ({{var|image}}) at template's default size.}}
| map = World map.jpg
| map_alt = This is the message carried by "map_alt" parameter
| map_caption = {{longitem|({{var|map_caption}}{{thin space}}''':'''){{break}}World map.jpg ({{var|map}}) at template's default size.}}
| abbreviation = {{var|abbreviation}}
| nickname = {{var|nickname}}
| named_after = {{var|named_after}}
| predecessor = {{var|predecessor}}
| merged = {{var|merged}}
| successor = {{var|successor}}
| formation = {{nowrap|{{var|formation}} (or {{var|established}})}}
| founder = {{var|founder}} (or {{var|founders}})
| founding_location = {{var|founding_location}}
| dissolved = {{var|dissolved}} (or {{var|defunct}})
| merger = {{var|merger}}
| type = {{var|type}}
| tax_id = {{var|tax_id}} (or {{var|vat_id}})
| registration_id = {{var|registration_id}}
| status = {{var|status}}
| purpose = {{var|purpose}}
| headquarters = {{var|headquarters}}
| location_city = {{var|location_city}}
| location_country = {{var|location_country}}
| coords = ({{thin space|use {{tl|coord}}}})
| origins = {{var|origins}}
| region_served = {{var|region_served}}
| products = {{var|products}}
| services = {{var|services}}
| methods = {{var|methods}}
| fields = {{var|fields}}
| membership = {{var|membership}}
| membership_year = {{var|_year}}
| language = {{var|language}} (or {{var|languages}})
| owner = {{var|owner}} (or {{var|owners}})
| sec_gen = {{var|sec_gen}} (or {{var|gen_sec}})
| leader_title = {{var|leader_title}}
| leader_name = {{var|leader_name}}
| leader_title2 = {{var|leader_title2}}
| leader_name2 = {{var|leader_name2}}
| board_of_directors = {{var|board_of_directors}}
| key_people = {{var|key_people}}
| main_organ = {{nowrap|{{var|main_organ}} (or {{var|publication}})}}
| parent_organization = {{var|parent_organi[z/s]ation}}
| subsidiaries = {{var|subsidiaries}}
| secessions = {{var|secessions}}
| affiliations = {{var|affiliations}}
| ror_id = {{var|unique id}}
| budget = {{var|budget}}
| budget_year = {{var|_year}}
| revenue = {{var|revenue}}
| revenue_year = {{var|_year}}
| disbursements = {{var|disbursements}}
| expenses = {{var|expenses}}
| expenses_year = {{var|_year}}
| endowment = {{var|endowment}}
| endowment_year = {{var|_year}}
| funding = {{var|funding}}
| staff = {{var|staff}}
| staff_year = {{var|_year}}
| volunteers = {{var|volunteers}}
| volunteers_year = {{var|_year}}
| students = {{var|students}}
| students_year = {{var|_year}}
| awards = {{var|awards}}
| website = {{var|website}}
| remarks = {{var|remarks}}
| formerly = {{nowrap|{{var|formerly}} (or {{var|former_name}})}}
| footnotes = {{var|footnotes}}
}}
<syntaxhighlight lang="wikitext" line style="overflow:auto;">
{{Infobox organization
| name = Organization's {{var|name}}
| full_name = Organization's unabbreviated name
| native_name = {{var|native_name}}
| native_name_lang = required ISO 639-1 code of the above native language
| image = Example.png
| alt = Text alternative for those who do not see the image
| caption = {{longitem|({{var|caption}}{{thin space}}''':'''){{break}}Example.png ({{var|image}}) at template's default size.}}
| map = World map.jpg
| map_alt = This is the message carried by "map_alt" parameter
| map_caption = {{longitem|({{var|map_caption}}{{thin space}}''':'''){{break}}World map.jpg ({{var|map}}) at template's default size.}}
| abbreviation = {{var|abbreviation}}
| nickname = {{var|nickname}}
| named_after = {{var|named_after}}
| predecessor = {{var|predecessor}}
| merged = {{var|merged}}
| successor = {{var|successor}}
| formation = {{nowrap|{{var|formation}} (or {{var|established}})}}
| founder = {{var|founder}} (or {{var|founders}})
| founding_location = {{var|founding_location}}
| dissolved = {{var|dissolved}} (or {{var|defunct}})
| merger = {{var|merger}}
| type = {{var|type}}
| tax_id = {{var|tax_id}} (or {{var|vat_id}})
| registration_id = {{var|registration_id}}
| status = {{var|status}}
| purpose = {{var|purpose}}
| headquarters = {{var|headquarters}}
| location_city = {{var|location_city}}
| location_country = {{var|location_country}}
| coords = ({{thin space|use {{tl|coord}}}})
| origins = {{var|origins}}
| region_served = {{var|region_served}}
| products = {{var|products}}
| services = {{var|services}}
| methods = {{var|methods}}
| fields = {{var|fields}}
| membership = {{var|membership}}
| membership_year = {{var|_year}}
| language = {{var|language}} (or {{var|languages}})
| owner = {{var|owner}} (or {{var|owners}})
| sec_gen = {{var|sec_gen}} (or {{var|gen_sec}})
| leader_title = {{var|leader_title}}
| leader_name = {{var|leader_name}}
| leader_title2 = {{var|leader_title2}}
| leader_name2 = {{var|leader_name2}}
| board_of_directors = {{var|board_of_directors}}
| key_people = {{var|key_people}}
| main_organ = {{nowrap|{{var|main_organ}} (or {{var|publication}})}}
| parent_organization = {{var|parent_organi[z/s]ation}}
| subsidiaries = {{var|subsidiaries}}
| secessions = {{var|secessions}}
| affiliations = {{var|affiliations}}
| ror_id = {{var|unique id}}
| budget = {{var|budget}}
| budget_year = {{var|_year}}
| revenue = {{var|revenue}}
| revenue_year = {{var|_year}}
| disbursements = {{var|disbursements}}
| expenses = {{var|expenses}}
| expenses_year = {{var|_year}}
| endowment = {{var|endowment}}
| endowment_year = {{var|_year}}
| funding = {{var|funding}}
| staff = {{var|staff}}
| staff_year = {{var|_year}}
| volunteers = {{var|volunteers}}
| volunteers_year = {{var|_year}}
| students = {{var|students}}
| students_year = {{var|_year}}
| awards = {{var|awards}}
| website = {{var|website}}
| remarks = {{var|remarks}}
| formerly = {{nowrap|{{var|formerly}} (or {{var|former_name}})}}
| footnotes = {{var|footnotes}}
}}
</syntaxhighlight>
{{clear}}
===Uprights===
There are four upright parameters, logo: {{para|upright}}, image: {{para|image_upright}}, map: {{para|map_upright}} and map2: {{para|map2_upright}}. For an explanation of the upright parameter, please see [[Help:Upright]].
===Pushpin maps===
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox organization
...
| coordinates = <!-- Use the {{Coord}} template. -->
| pushpin_map = <!-- Location name used for Template:Location map -->
| map_alt = <!-- Location name used for Template:Location map -->
| pushpin_relief =
| map_dot_label =
| map_size =
| map_caption = <!-- Text to be displayed below map; for no caption enter "map_caption="; -->
...
}}
</syntaxhighlight>
==== Map type ====
A list of modules containing maps that may be used can be found at:
* [[Special:PrefixIndex/Module:Location map/data/]]
== Microformat ==
{{UF-hcard-org}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"format": "block",
"params": {
"full_name": {
"label": "Full name",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Unabbreviated name of the organization"
},
"image": {
"label": "Image",
"type": "wiki-file-name",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Image of organisation"
},
"image_size": {
"label": "Image size",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Size of image"
},
"image_upright": {
"label": "Image upright",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Upright sizing for image. See [[Help:Upright]]."
},
"alt": {
"label": "Alternative text",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Alternative text for image. See [[WP:ALT]]."
},
"caption": {
"label": "Image caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Caption for image",
"example": "YMCA headquarters in Geneva, Switzerland"
},
"logo": {
"label": "Logo",
"type": "wiki-file-name",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Logo of organisation"
},
"logo_size": {
"label": "Logo size",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "size of logo"
},
"upright": {
"label": "Logo upright",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Upright sizing for logo. See [[Help:Upright]]."
},
"logo_alt": {
"label": "Logo alt",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "see [[WP:ALT]]"
},
"logo_caption": {
"label": "Logo caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "caption of logo"
},
"map": {
"label": "Map",
"type": "wiki-file-name",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Map image"
},
"map_size": {
"label": "Map size",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "defaults to 250px"
},
"map_upright": {
"label": "Map upright",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Upright sizing for map. See [[Help:Upright]]."
},
"map_alt": {
"label": "Map alt",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Alternative text for map"
},
"map_caption": {
"label": "Map caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "caption for map"
},
"map2": {
"label": "Second map",
"type": "wiki-file-name",
"required": false,
"suggested": false,
"deprecated": false,
"description": "second map image, if required"
},
"map2_size": {
"label": "Second map size",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "size of map"
},
"map2_upright": {
"label": "Second map upright",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Upright sizing for map2. See [[Help:Upright]]."
},
"map2_alt": {
"label": "Second map alt",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"map2_caption": {
"label": "Second map caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "caption for map"
},
"nickname": {
"label": "Nickname",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Nickname of organization"
},
"pronounce": {
"label": "Pronounce",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"pronounce ref": {
"label": "Pronounce ref",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"pronounce comment": {
"label": "pronounce comment",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"pronounce 2": {
"label": "Pronounce 2",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"named_after": {
"label": "Named after",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Person or other entity that the organisation was named after, if any"
},
"predecessor": {
"label": "Predecessor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organization that preceded this one, if any"
},
"merged": {
"label": "Merged",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Any other organizations with which this organization was merged"
},
"successor": {
"label": "Successor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organisation that succeeded/replaced this one, if any"
},
"formation": {
"label": "Formation",
"aliases": [
"established",
"founded"
],
"type": "date",
"required": false,
"suggested": true,
"deprecated": false,
"description": "Date established, e.g., use {{start date and age|YYYY|MM|DD}}"
},
"founder": {
"label": "Founder",
"aliases": [
"founders"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Founder(s) of organisation"
},
"founding_location": {
"label": "Founding location",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Place where organization was founded"
},
"merger": {
"label": "Merger",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Other organizations (if any) that merged to constitute this organization"
},
"type": {
"label": "Type",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Type of organization",
"example": "[[Governmental organization|Governmental]], [[Non-governmental organization|NGO]], [[Nonprofit organization|Nonprofit]]"
},
"tax_id": {
"label": "tax_id",
"aliases": [
"vat_id"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"registration_id": {
"label": "registration_id",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"status": {
"label": "Status",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organization's legal status or description (company, charity, foundation)",
"example": "foundation"
},
"purpose": {
"label": "Purpose",
"aliases": [
"focus"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organization's purpose or focus",
"example": "humanitarian, activism, peacekeeping, etc."
},
"professional_title": {
"label": "Professional title",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "For professional associations"
},
"headquarters": {
"label": "Headquarters",
"type": "string",
"required": false,
"suggested": true,
"deprecated": false,
"description": "Location of organisation's headquarters"
},
"coordinates": {
"label": "Coordinates",
"aliases": [
"coords"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Coordinates of location, use {{coord}}"
},
"origins": {
"label": "Origins",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"products": {
"label": "Products",
"aliases": [
"product"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"services": {
"label": "Services",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "services of organisation"
},
"methods": {
"label": "Methods",
"aliases": [
"method"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"fields": {
"label": "Fields",
"aliases": [
"field"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"membership": {
"label": "Membership",
"aliases": [
"members"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Number of memberships in organisation, if relevant",
"example": "100"
},
"membership_year": {
"label": "Membership year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Year in which number of memberships was given",
"example": "2016"
},
"language": {
"label": "Language",
"aliases": [
"languages"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Any official language or languages used by the organization",
"example": "French"
},
"owner": {
"label": "Owner",
"aliases": [
"owners"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Entity that owns this organization, if any"
},
"sec_gen": {
"label": "Secretary General",
"aliases": [
"gen_sec"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the organization's Secretary General (if such post exists)"
},
"leader_title": {
"label": "Leader title",
"type": "string",
"required": false,
"suggested": true,
"deprecated": false,
"description": "Title of leader #1",
"example": "Board Chair"
},
"leader_name": {
"label": "Leader name",
"type": "string",
"required": false,
"suggested": true,
"deprecated": false,
"description": "Name of leader #1",
"example": "Jane Doe"
},
"leader_title2": {
"label": "Leader title 2",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"example": "CEO, President, etc."
},
"leader_name2": {
"label": "Leader name 2",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"leader_name3": {
"label": "Leader name 3",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"leader_title3": {
"label": "Leader title 3",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"example": "Director, Manager, etc."
},
"leader_title4": {
"label": "Leader title 4",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"leader_name4": {
"label": "Leader name 4",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"leader_title5": {
"label": "Leader title 5",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"leader_name5": {
"label": "Leader name 5",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"board_of_directors": {
"label": "Board of directors",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organization's board of directors"
},
"key_people": {
"label": "Key people",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Key people of organisation, e.g. use {{plainlist}} for multiple"
},
"main_organ": {
"label": "Main organ",
"aliases": [
"publication"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organization's principal body (assembly, committee, board) or publication",
"example": "assembly, committee, board, etc."
},
"parent_organization": {
"label": "Parent organization",
"aliases": [
"parent_organisation"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Parent organisation of this one"
},
"subsidiaries": {
"label": "Subsidiaries",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Subsidiaries of this organisation"
},
"secessions": {
"label": "Secessions",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organisation secessions"
},
"affiliations": {
"label": "Affiliations",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Affiliation of organisation"
},
"ror_id": {
"label": "R.O.R. Id",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "unique ID in the Research Organization Registry"
},
"budget": {
"label": "Budget",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organisation budget",
"example": "$2 m [[Canadian dollar|CAD]]"
},
"budget_year": {
"label": "Budget year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false,
"example": "2016"
},
"revenue": {
"label": "Revenue",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Revenue made by organization",
"example": "$5 m [[Canadian dollar|CAD]]"
},
"revenue_year": {
"label": "Revenue year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"disbursements": {
"label": "Disbursements",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"expenses": {
"label": "Expenses",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"expenses_year": {
"label": "Expenses year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"endowment": {
"label": "Endowment",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"endowment_year": {
"label": "Endowment year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"staff": {
"label": "Staff",
"aliases": [
"employees"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Numbers or types of staff",
"example": "20 [[Full-time equivalent|FTEs]]"
},
"staff_year": {
"label": "Staff year",
"aliases": [
"employees_year"
],
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"volunteers": {
"label": "Volunteers",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Numbers or types of volunteers",
"example": "10 (part-time)"
},
"volunteers_year": {
"label": "Volunteers year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"students": {
"label": "Students",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"students_year": {
"label": "Students year",
"type": "date",
"required": false,
"suggested": false,
"deprecated": false
},
"website": {
"label": "Website",
"type": "url",
"required": false,
"suggested": true,
"deprecated": false,
"description": "Official website of organisation",
"aliases": [
"site"
]
},
"remarks": {
"label": "Remarks",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Organisation remarks"
},
"formerly": {
"label": "Formerly",
"aliases": [
"former_name"
],
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Any former names by which the organization was known"
},
"footnotes": {
"label": "Footnotes",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Footnotes/references"
},
"bodystyle": {
"label": "bodystyle",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"dissolved": {
"aliases": [
"defunct"
],
"label": "Dissolved",
"description": "Dissolved, e.g. use {{end date and age|YYYY|MM|DD}}",
"type": "date"
},
"location_country": {
"label": "Location country",
"description": "Country of the organization's location",
"example": "[[Canada]]"
},
"location_city2": {
"aliases": [
"location2"
]
},
"location_country2": {},
"addnl_location_city": {
"aliases": [
"addnl_location"
]
},
"addnl_location_country": {},
"addnl_location_city2": {
"aliases": [
"addnl_location2"
]
},
"addnl_location_country2": {},
"awards": {
"label": "Awards",
"description": "Awards received by organization, include wikilink if any, use {{Template:Bulleted list}} or {{plainlist}} if multiple"
},
"native_name_lang": {
"label": "Native name language",
"description": "2 letter language code for native_name",
"type": "string",
"example": "fr"
},
"name": {
"label": "Name",
"description": "defaults to {{PAGENAME}} if name not provided",
"example": "YMCA",
"type": "string",
"suggested": true
},
"native name": {
"label": "Native name",
"description": "Organization's name in its local language",
"type": "string"
},
"abbreviation": {
"label": "Abbreviation",
"description": "Abbreviation or acronym of organisation name",
"type": "string"
},
"region": {
"label": "Region",
"description": "Any particular region or regions associated with or served by the organization",
"type": "string"
},
"location_city": {
"label": "Location city",
"description": "city where organization is located",
"example": "[[Baltimore, MD]]",
"type": "string"
}
},
"paramOrder": [
"name",
"formation",
"full_name",
"native name",
"native_name_lang",
"logo",
"logo_size",
"upright",
"logo_alt",
"logo_caption",
"image",
"image_size",
"image_upright",
"alt",
"caption",
"map",
"map_size",
"map_upright",
"map_alt",
"map_caption",
"map2",
"map2_size",
"map2_upright",
"map2_alt",
"map2_caption",
"abbreviation",
"nickname",
"formerly",
"named_after",
"pronounce",
"pronounce ref",
"pronounce comment",
"pronounce 2",
"predecessor",
"merged",
"merger",
"successor",
"founder",
"founding_location",
"dissolved",
"type",
"tax_id",
"registration_id",
"status",
"purpose",
"professional_title",
"headquarters",
"location_city",
"location_country",
"location_city2",
"location_country2",
"addnl_location_city",
"addnl_location_country",
"addnl_location_city2",
"addnl_location_country2",
"coordinates",
"origins",
"region",
"products",
"services",
"methods",
"fields",
"membership",
"membership_year",
"language",
"owner",
"sec_gen",
"leader_title",
"leader_name",
"leader_title2",
"leader_name2",
"leader_title3",
"leader_name3",
"leader_title4",
"leader_name4",
"leader_title5",
"leader_name5",
"board_of_directors",
"key_people",
"main_organ",
"parent_organization",
"subsidiaries",
"secessions",
"affiliations",
"ror_id",
"budget",
"budget_year",
"revenue",
"revenue_year",
"disbursements",
"expenses",
"expenses_year",
"endowment",
"endowment_year",
"staff",
"staff_year",
"volunteers",
"volunteers_year",
"students",
"students_year",
"awards",
"website",
"remarks",
"footnotes",
"bodystyle"
],
"description": {
"en": "Used to provide at-a-glance information at the start of an article about an organization."
}
}
</templatedata>
== Tracking categories ==
* {{Category link with count|Infoboxes without native name language parameter}}
* {{Category link with count|Pages using infobox organization with motto or pledge}}
* {{Category link with count|Pages using infobox organization with unknown parameters}}
== See also ==
* {{tl|Infobox organization/Wikidata}}
* [[Wikipedia:INFOBOXFLAG]]
{{Organization infoboxes}}<includeonly>
{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Organization infobox templates| Organization]]
[[Category:Society and social science infobox templates|Organization]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
10fee924fdd5eaaca355e4caf3bd7788fd9d37c6
Module:Message box
828
10
15
2023-09-02T22:54:30Z
Anomie
5
[[:File:Cscr-featured.svg]] needs a link to the description page for license and attribution. Add the ability for the configuration to specify a flag to accomplish this.
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
f2fb84f7b817d2d88747f57c40902a0d8be8158a
Template:Dummy ref
10
584
1316
2023-09-03T16:33:15Z
wikipedia>Intrisit
0
Added rcat shell for a clean look and refactored rcat for this title.
wikitext
text/x-wiki
#REDIRECT [[Template:Dummy reference]]
{{Redirect category shell|{{R from short name}}}}
51e7e4d220e438d9b8e1e1ee2c7b8d4f91fb7569
Template:Infobox royalty/doc
10
1360
2695
2023-09-03T20:02:19Z
w>DrKay
0
unnecessary detail
wikitext
text/x-wiki
{{Documentation subpage}}
{{person infobox header}}
{{Auto short description}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
This template may be used for anyone having royal connections. This template is only for historic biographies and must not be used for mythical / legendary characters or creatures. You can use other templates for them, such as {{tlx|Infobox character}}.
== Blank syntax ==
{{Parameter names example
|name |title |titletext |more |image |image_size |alt |caption |succession |moretext |reign |reign-type |coronation |cor-type |investiture |predecessor |pre-type |successor |suc-type |regent |reg-type |succession1 |moretext1 |reign1 |reign-type1 |coronation1 |cor-type1 |predecessor1 |pre-type1 |successor1 |suc-type1 |regent1 |reg-type1 |succession2 |moretext2 |reign2 |reign-type2 |coronation2 |cor-type2 |predecessor2 |pre-type2 |successor2 |suc-type2 |regent2 |reg-type2 |succession3 |moretext3 |reign3 |reign-type3 |coronation3 |cor-type3 |predecessor3 |pre-type3 |successor3 |suc-type3 |regent3 |reg-type3 |birth_name |birth_date |birth_place |death_date |death_place |burial_date |burial_place |queen |type |spouse |spouse-type |spouses |spouses-type |consort |issue |issue-link |issue-pipe |issue-type |full name |era name |era dates |regnal name |posthumous name |temple name |native_lang1 |native_lang1_name1 |house |house-type |royal house |father |mother |religion |occupation |signature_type |signature |signature_alt |module
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royalty
| embed =
| name =
| title =
| titletext =
| more =
| image =
| image_size =
| alt =
| caption =
| succession =
| moretext =
| reign =
| reign-type =
| coronation =
| cor-type =
| investiture =
| predecessor =
| pre-type =
| successor =
| suc-type =
| regent =
| reg-type =
| succession1 =
| moretext1 =
| reign1 =
| reign-type1 =
| coronation1 =
| cor-type1 =
| predecessor1 =
| pre-type1 =
| successor1 =
| suc-type1 =
| regent1 =
| reg-type1 =
| succession2 =
| moretext2 =
| reign2 =
| reign-type2 =
| coronation2 =
| cor-type2 =
| predecessor2 =
| pre-type2 =
| successor2 =
| suc-type2 =
| regent2 =
| reg-type2 =
| succession3 = <!-- up to | succession10 = -->
| moretext3 =
| reign3 =
| reign-type3 =
| coronation3 =
| cor-type3 =
| predecessor3 =
| pre-type3 =
| successor3 =
| suc-type3 =
| regent3 =
| reg-type3 =
| birth_name =
| birth_date = <!-- For Gregorian dates: {{birth date and age|YYYY|MM|DD|df=y}} -->
| birth_place =
| death_date = <!-- {{death date and age|YYYY|MM|DD|YYYY|MM|DD|df=y}} -->
| death_place =
| burial_date =
| burial_place =
| queen =
| spouse = <!-- or | spouses = -->
| spouse-type = <!-- or | spouses-type = -->
| consort = <!-- yes or no -->
| issue = <!--list children in order of birth. Use {{plainlist}} or {{unbulleted list}} -->
| issue-link =
| issue-pipe =
| issue-type =
| full name =
| era name =
| era dates =
| regnal name =
| posthumous name =
| temple name =
| native_lang1 = <!-- up to | native_lang5 = -->
| native_lang1_name1 = <!-- up to | native_lang5_name1 = -->
| house =
| house-type =
| royal house =
| dynasty =
| father =
| mother =
| religion =
| occupation =
| signature_type =
| signature =
| signature_alt =
| module =
}}
</syntaxhighlight>
== Example ==
{{Infobox royalty
| name = Henry VIII
| image = After Hans Holbein the Younger - Portrait of Henry VIII - Google Art Project.jpg
| alt = Portrait of Henry VIII
| caption = Portrait by [[Hans Holbein the Younger]]
| succession = {{hlist |[[List of English monarchs|King of England]] |[[List of Irish monarchs|Lord/King of Ireland]]}}
| moretext = ([[Style of the English sovereigns|more...]])
| reign = {{nowrap|21 April 1509 – 28 January 1547}}
| coronation = 24 June 1509
| predecessor = [[Henry VII of England|Henry VII]]
| successor = [[Edward VI of England|Edward VI]]
| spouses = {{plainlist|
* [[Catherine of Aragon]]
* [[Anne Boleyn]]
* [[Jane Seymour]]
* [[Anne of Cleves]]
* [[Catherine Howard]]
* [[Catherine Parr]]
}}
| issue = {{plainlist|
* [[Mary I of England]]
* [[Henry FitzRoy, 1st Duke of Richmond and Somerset|Henry Fitzroy]] ''(illegitimate)''
* [[Elizabeth I of England]]
* [[Edward VI of England]]
}}
| issue-link = #Marriages and issue
| issue-pipe = (among others)
| house = [[House of Tudor|Tudor]]
| father = [[Henry VII of England]]
| mother = [[Elizabeth of York]]
| birth_date = 28 June 1491
| birth_place = [[Palace of Placentia|Greenwich Palace]], [[Greenwich]]
| death_date = {{death date and age|1547|1|28|1491|6|28|df=yes}}
| death_place = [[Palace of Whitehall]], London
| burial_place = {{nowrap|[[St George's Chapel, Windsor Castle]]}}
| signature = HenryVIIISig.svg
| religion = {{longitem|Christian ([[Catholic Church|Roman Catholic]] then [[Anglo-Catholicism#History|Anglican]])}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox royalty
| name = Henry VIII
| image = After Hans Holbein the Younger - Portrait of Henry VIII - Google Art Project.jpg
| alt = Portrait of Henry VIII
| caption = Portrait by [[Hans Holbein the Younger]]
| succession = {{hlist |[[List of English monarchs|King of England]] |[[List of Irish monarchs|Lord/King of Ireland]]}}
| moretext = ([[Style of the English sovereigns|more...]])
| reign = {{nowrap|21 April 1509 – 28 January 1547}}
| coronation = 24 June 1509
| predecessor = [[Henry VII of England|Henry VII]]
| successor = [[Edward VI of England|Edward VI]]
| spouses = {{plainlist|
* [[Catherine of Aragon]]
* [[Anne Boleyn]]
* [[Jane Seymour]]
* [[Anne of Cleves]]
* [[Catherine Howard]]
* [[Catherine Parr]]
}}
| issue = {{plainlist|
* [[Mary I of England]]
* [[Henry FitzRoy, 1st Duke of Richmond and Somerset|Henry Fitzroy]] ''(illegitimate)''
* [[Elizabeth I of England]]
* [[Edward VI of England]]
}}
| issue-link = #Marriages and issue
| issue-pipe = (among others)
| house = [[House of Tudor|Tudor]]
| father = [[Henry VII of England]]
| mother = [[Elizabeth of York]]
| birth_date = 28 June 1491
| birth_place = [[Palace of Placentia|Greenwich Palace]], [[Greenwich]]
| death_date = {{death date and age|1547|1|28|1491|6|28|df=yes}}
| death_place = [[Palace of Whitehall]], London
| burial_place = {{nowrap|[[St George's Chapel, Windsor Castle]]}}
| signature = HenryVIIISig.svg
| religion = {{longitem|Christian ([[Catholic Church|Roman Catholic]] then [[Anglo-Catholicism#History|Anglican]])}}
}}
</syntaxhighlight>
{{clear right}}
== Parameters ==
All parameters are optional (even "name" can be taken from PAGENAME).
{| class="wikitable"
|-
| colspan="2" style="text-align:center;background: #EEDDFF;" | name / title / type / image
|-
| style="align: right; text-align: right; vertical-align: top;" | name =
| Most common name in English-language sources (e.g. George III; Prince William (not William, Duke of Cumberland); Sophie (neither Princess Edward nor Princess Sophie); Elizabeth Bowes-Lyon (rather than Queen Elizabeth); Prince William (rather than Prince William of Wales) etc.)
|-
| style="align: right; text-align: right; vertical-align: top;" | title =
| Principal [[substantive title]](s) in use (e.g. King of England; prev. Duke of Edinburgh) (omit this field if any one "succession(X)" field would be identical to it). Automatically italicized, so do not use {{tl|plainlist}} or similar templates; use {{tag|br|s}} for line breaks.
|-
| style="align: right; text-align: right; vertical-align: top;" | titletext =
| An explanatory note about "title", already in small text — such as a link to full titles (dependent upon "title")
|-
| style="align: right; text-align: right; vertical-align: top;" | more =
| Automatically-generated alternative to "titletext"; only appears if "titletext" is undefined/empty and "realm" is defined
: '''{{hlist |austria |belgium |britain |china |cyprus |denmark |en-sco |england |ethiopia |france |hre |hungary |italy |jerusalem |luxembourg |malaysia |monaco |netherlands |norway |parma |portugal |russia |scotland |sicilies |spain-crown |spain-heir |sweden}}'''
|-
| style="align: right; text-align: right; vertical-align: top;" | image =
| i.e. X.jpg, ''that is to say no [[Image:''
|-
| style="align: right; text-align: right; vertical-align: top;" | image_size =
| Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on "my preferences" and adjusting thumbnail size) if empty or omitted. This parameter should not normally need to be set.
|-
| style="align: right; text-align: right; vertical-align: top;" | alt =
| Alt text for the image, for visually impaired readers ''see [[WP:ALT]]''
|-
| style="align: right; text-align: right; vertical-align: top;" | caption =
| Details of artist and year, for instance ''see [[WP:CAP]]''
|-
| colspan="2" style="text-align:center;background: #EEDDFF;" | ''succession'' fields
|-
| style="align: right; text-align: right; vertical-align: top;" | succession =
| Primary substantive hereditary title (regarding the following fields, "reign" 'til "suc-type"; omit the "title" field if the two would be identical)
|-
| style="align: right; text-align: right; vertical-align: top;" | moretext =
| An explanatory note about the "succession", already in small text — such as a link to full titles (dependent upon "succession")
|-
| style="align: right; text-align: right; vertical-align: top;" | reign =
| D Month YYYY – D Month YYYY (or other appropriate format per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]]; for monarchs and their consorts (although dates may differ between the two))
|-
| style="align: right; text-align: right; vertical-align: top;" | reign-type =
| Optional alternative text for 'Reign' (dependent upon "reign")
|-
| style="align: right; text-align: right; vertical-align: top;" | coronation =
| D Month YYYY (or other appropriate format per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]]; for monarchs and their consorts)
|-
| style="align: right; text-align: right; vertical-align: top;" | cor-type =
| Optional alternative text for 'Coronation', such as 'Investiture' (dependent upon "coronation"). Automatically links to country-specific article if one of the following values is entered:
: '''{{hlist |britain |france |hre |hungary |japan |malaysia |norway |ottoman |poland |russia}}'''
|-
| style="align: right; text-align: right; vertical-align: top;" | predecessor =
| For use in succession whose titles are entirely and directly hereditary. Link should be piped as appropriate — when it is reasonably clear that the person in context is a (e.g.) King of Scots, he may be linked as "James II" rather than "James II of Scotland".
|-
| style="align: right; text-align: right; vertical-align: top;" | pre-type =
| Optional alternative text for 'Predecessor' (dependent upon "predecessor")
|-
| style="align: right; text-align: right; vertical-align: top;" | regent =
| Any regents of the monarch in their role in this succession only; listed by most common name/title, most recent first, using {{tl|unbulleted list}}.
|-
| style="align: right; text-align: right; vertical-align: top;" | reg-type =
| Optional alternative text for 'Regent' (dependent upon "regent")
|-
| style="align: right; text-align: right; vertical-align: top;" | successor =
| As predecessor, ''[[mutatis mutandis]]''
|-
| style="align: right; text-align: right; vertical-align: top;" | suc-type =
| Optional alternative text for 'Successor'. e.g. 'Heir apparent' or 'Heir presumptive' (dependent upon "successor")
|-
| colspan="2" style="text-align:center;background: #EEDDFF;" | "succession" to "suc-type" repeated as "successionX" to "suc-typeX" for 1–9
|-
| style="align: right; text-align: right; vertical-align: top;" | birth_name =
| If different from name or full name
|-
| style="align: right; text-align: right; vertical-align: top;" | birth_date =
|
*for dead people with dates in the Gregorian calendar, <nowiki>{{birth date|yyyy|mm|dd|df=yes}}</nowiki> (''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Birth date]])
*for living persons, <nowiki>{{birth date and age|yyyy|mm|dd|df=yes}}</nowiki> (''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Birth date and age]])
|-
| style="align: right; text-align: right; vertical-align: top;" | birth_place =
| [[Home|Residence]], Town/City/County/Region/Country (although almost invariably Country is obvious) HOWEVER, TAKE CARE TO AVOID [[Wikipedia:Manual of Style/Icons|FLAGCRUFT]] (dependent upon "date of birth")
|-
| style="align: right; text-align: right; vertical-align: top;" | death_date =
|
*for those who died aged 3 years old or over, <nowiki>{{death date and age|YYYY|MM|DD|yyyy|mm|dd|df=yes}}</nowiki> (dd/mm/yyyy being DoB; ''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]] and [[:Template:Death date and age]])
*for those who died aged under 3 years old, <nowiki>{{death date|YYYY|MM|DD|df=yes}} (aged {{age for infant|abbr=yes|yyyy|mm|dd|YYYY|MM|DD|df=yes}})</nowiki> (dd/mm/yyyy being DoB; ''m.m.'' per [[Wikipedia:Manual of Style/Dates and numbers|MOS:DATE#Dates]], [[:Template:Death date]] and [[:Template:age for infant]])
|-
| style="align: right; text-align: right; vertical-align: top;" | death_place =
| See "birth_place", ''m.m.'' (dependent upon "death_date")
|-
| style="align: right; text-align: right; vertical-align: top;" | burial_date =
| See "death_date"
|-
| style="align: right; text-align: right; vertical-align: top;" | burial_place =
| See "birth_place"
|-
| colspan="2" style="text-align:center;background: #FFEEDD;" | ''spouse'' fields
|-
| style="align: right; text-align: right; vertical-align: top;" | consort =
|
*yes, ''if the subject is the consort of any monarch — affects "reign"''
*no, ''which is the default if the field is omitted''
|-
| style="align: right; text-align: right; vertical-align: top;" | spouse =
| Husbands/wives only; listed by most common name/title, in chronological order, using {{tl|unbulleted list}}, and dates if needed, e.g. (m. 2004; div. 2006). Break dates onto a new line if more visually appropriate. <code>spouses</code> is an alternative.
|-
| style="align: right; text-align: right; vertical-align: top;" | spouse-type =
| Optional alternative text for 'Spouse', <code>spouses-type</code> is an alternative.
|-
| colspan="2" style="text-align:center;background: #FFEEDD;" | Another alternative is to repeat as "spouseX" and "spouseX-type" for 1–9; label is 'Wife' or 'Wives'.
|-
| style="align: right; text-align: right; vertical-align: top;" | issue =
| Children in order of birth, using {{tl|unbulleted list}}; listed by name and highest shorthand title (e.g. Prince Edward, Earl of Wessex), do not use preceding styles (e.g. ''HM''). Individuals without articles and/or who died as infants may be omitted from the list on an arbitrary basis. See also note for 'predecessor'.
|-
| style="align: right; text-align: right; vertical-align: top;" | issue-link =
| Creates small link to a section in the article for further details on offspring (dependent upon "issue")
|-
| style="align: right; text-align: right; vertical-align: top;" | issue-pipe =
| Changes the output text of the above link (dependent upon "issue-link")
|-
| style="align: right; text-align: right; vertical-align: top;" | full name =
| English/Anglicised full legal non-titular name (current/most recent), with maiden name '([[Married and maiden names|née]] Whatever)' and translation in their native/official tongue(s) on a new line (each) underneath (use a <nowiki>''{{lang-XX|}}''</nowiki> [[:Category:Wikipedia multilingual support templates|multilingual support template]])
|-
| style="align: right; text-align: right; vertical-align: top;" |
era name =
| For [[Regnal year#Asian era names|Asian era names]], wikilinked if appropriate (dependent upon "era dates")
|-
| style="align: right; text-align: right; vertical-align: top;" | era dates =
| The dates of the monarch's era (per the above)
|-
| style="align: right; text-align: right; vertical-align: top;" | regnal name =
| The monarch's [[regnal name]]
|-
| style="align: right; text-align: right; vertical-align: top;" | posthumous name =
| The posthumous name given to monarchs in certain traditions
|-
| style="align: right; text-align: right; vertical-align: top;" | temple name =
| As "posthumous name" ''m.m.''
|-
| style="align: right; text-align: right; vertical-align: top;" | house =
| The houses, dynasties, or families to which the subject belonged/s (by birth, marriage or otherwise), listed chronologically first to last, using {{tl|unbulleted list}} (e.g. <code><nowiki>{{unbulleted list|[[House of Saxe-Coburg and Gotha|Saxe-Coburg and Gotha]] | [[House of Windsor|Windsor]] }}</nowiki></code>) (formerly called "house name" and listed last to first — it is strongly recommended that, for clarity, ''(by birth/marriage)'' or similar be included after each House's link)
|-
| style="align: right; text-align: right; vertical-align: top;" | house-type =
| Optional alternative text for 'Royal house', such as 'Dynasty' or 'Family' (dependent upon "house")
|-
| style="align: right; text-align: right; vertical-align: top;" | father =
| Most common shorthand name, do not use preceding styles (e.g. ''HM''). May include multiple individuals, such as (biological), (adoptive) or (''hānai''). See also note for 'predecessor'.
|-
| style="align: right; text-align: right; vertical-align: top;" | mother =
| Most common maiden name or highest title held in her own right
|-
| style="align: right; text-align: right; vertical-align: top;" | occupation =
| Primary non-royal occupations, listed most recent first (if the subject is deceased there's no need for 'prev.') e.g. 'Theatre; prev. Broadcasting' (alive), or 'Military; Author' (dead)
|-
| style="align: right; text-align: right; vertical-align: top;" | signature =
| X.jpg, being an image of the subject's personal signature
|-
| style="align: right; text-align: right; vertical-align: top;" | signature_type =
| A label to replace the default 'Signature', e.g. [[Tughra]] for Ottoman sultans
|-
| style="align: right; text-align: right; vertical-align: top;" | signature_alt =
| Alt text for signature
|-
| style="align: right; text-align: right; vertical-align: top;" | religion =
| Despite [[Wikipedia:Village_pump_(policy)/Archive_126#RfC:_Religion_in_biographical_infoboxes|an RFC that generally forbids religion in "person" infoboxes]], because religion is a relevant characteristic of many monarchs, religion may be listed if relevant, sourced and uncontroversial. See this template's talk page for related discussions.
|}
=== Use as a child template ===
The '''embed''' parameter is used when embedding this infobox into another.
{{Infobox person module documentation |template=Infobox royalty |parameter=embed}}
=== Embedding other templates ===
The '''module''' parameter is used for embedding other templates into this infobox (see [[Wikipedia:Infobox modules]]).
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox royalty
| name =
| <!-- etc. -->
| module =
{{Infobox military person | embed=yes
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Notes ==
; Peer wikilinks
: The wikilinks of substantive peers (or those in another kind of numbered succession) should always show that number (eg [[Richard, 1st Earl of Cornwall]] rather than Richard, Earl of Cornwall), unless other conventions say otherwise (such as that one should always see [[Prince Edward, Duke of Kent]], never Prince Edward, 2nd Duke of Kent). Generally, use the article's title, omitting surplus fore- and surnames or disambiguation.
== Microformats ==
{{UF-hcard-person}}
== TemplateData ==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>{
"description": "An infobox for royalty",
"format": "{{_\n| ____________ = _\n}}\n",
"params": {
"2": {},
"name": {
"label": "Name",
"description": "Most common name in English-language sources.",
"type": "string",
"required": false
},
"title": {
"label": "Title",
"description": "Principal substantive title(s) in use.",
"type": "string",
"required": false
},
"titletext": {
"label": "Titletext",
"description": "An explanatory note about 'title', already in small text — such as a link to full titles (dependent upon 'title').",
"type": "string",
"required": false
},
"more": {
"label": "More",
"description": "Automatically-generated alternative to 'titletext', only appears if 'titletext' is undefined/empty and 'realm' is defined.",
"type": "string",
"required": false
},
"image": {
"label": "Image",
"description": "i.e. X.jpg, that is to say no [[Image:",
"type": "wiki-file-name",
"required": false
},
"alt": {
"label": "Alt",
"description": "Alt text for the image",
"type": "string",
"required": false
},
"caption": {
"label": "Caption",
"description": "Details of author and year",
"type": "string",
"required": false
},
"succession": {
"label": "Succession",
"description": "Primary substantive hereditary title (regarding the following fields, 'reign' 'til 'suc-type'; omit the 'title' field if the two would be identical)",
"type": "string",
"required": false
},
"moretext": {
"label": "moretext",
"description": "An explanatory note about the 'succession', already in small text — such as a link to full titles (dependent upon 'succession')",
"type": "string",
"required": false
},
"reign": {
"label": "Reign",
"description": "D Month YYYY – D Month YYYY (or other appropriate format per MOS:DATE#Dates; for monarchs and their consorts (although dates may differ between the two))",
"type": "string",
"required": false
},
"reign-type": {
"label": "Reign-type",
"description": "Optional alternative text for 'Reign' (dependent upon 'reign')",
"type": "string",
"required": false
},
"coronation": {
"label": "Coronation",
"description": "D Month YYYY (or other appropriate format per MOS:DATE#Dates; for monarchs and their consorts)",
"type": "string",
"required": false
},
"cor-type": {
"label": "Coronation-type",
"description": "Optional alternative text for 'Coronation', such as 'Investiture' (dependent upon 'coronation'). Automatically links to country-specific article if one of the following values is entered:britain,france,hre,hungary,japan,malaysia,norway,ottoman,poland,russia.",
"type": "string",
"required": false
},
"predecessor": {
"label": "Predecessor",
"description": "For use in succession whose titles are entirely and directly hereditary. Link should be piped as appropriate — when it is reasonably clear that the person in context is a (e.g.) King of Scots, he may be linked as 'James II' rather than 'James II of Scotland'.",
"type": "string",
"required": false
},
"pre-type": {
"label": "Predecessor-type",
"description": "Optional alternative text for 'Predecessor' (dependent upon 'predecessor')",
"type": "string",
"required": false
},
"regent": {
"label": "Regent",
"description": "Any regents of the monarch in their role in this succession only; listed by most common name/title, most recent first, using <nowiki>{{unbulleted list}}</nowiki>",
"type": "string",
"required": false
},
"reg-type": {
"label": "Regent-type",
"description": "Optional alternative text for 'Regent' (dependent upon 'regent')",
"type": "string",
"required": false
},
"successor": {
"label": "Successor",
"description": "As predecessor, mutatis mutandis",
"type": "string",
"required": false
},
"suc-type": {
"label": "Successor-type",
"description": "Optional alternative text for 'Successor'. e.g. 'Heir apparent' or 'Heir presumptive' (dependent upon 'successor')",
"type": "string",
"required": false
},
"birth_name": {
"label": "Birth name",
"description": "If different from name or full name.",
"type": "string",
"required": false
},
"birth_date": {
"label": "Birth date",
"description": "for dead people with dates in the Gregorian calendar, {{birth date|yyyy|mm|dd|df=yes}} (m.m. per MOS:DATE#Dates and Template:Birth date), for living persons, {{birth date and age|yyyy|mm|dd|df=yes}} (m.m. per MOS:DATE#Dates and Template:Birth date and age)",
"type": "string",
"required": false
},
"birth_place": {
"label": "Birth place",
"description": "Residence, Town/City/County/Region/Country (although almost invariably Country is obvious) HOWEVER, TAKE CARE TO AVOID FLAGCRUFT (dependent upon 'date of birth')",
"type": "string",
"required": false
},
"death_date": {
"label": "Death date",
"description": "for those who died aged 3 years old or over, {{death date and age|YYYY|MM|DD|yyyy|mm|dd|df=yes}} (dd/mm/yyyy being DoB; m.m. per MOS:DATE#Dates and Template:Death date and age), for those who died aged under 3 years old, {{death date|YYYY|MM|DD|df=yes}} (aged {{age for infant|abbr=yes|yyyy|mm|dd|YYYY|MM|DD|df=yes}}) (dd/mm/yyyy being DoB; m.m. per MOS:DATE#Dates, Template:Death date and Template:age for infant)",
"type": "string",
"required": false
},
"death_place": {
"label": "Death place",
"description": "See 'birth_place', m.m. (dependent upon 'death_date')",
"type": "string",
"required": false
},
"burial_date": {
"label": "Burial date",
"description": "See 'death_date'",
"type": "string",
"required": false,
"aliases": [
"date of burial"
]
},
"burial_place": {
"label": "Burial place",
"description": "See 'birth_place'",
"type": "string",
"required": false,
"aliases": [
"place of burial"
]
},
"consort": {
"label": "Consort",
"description": "yes, if the subject is the consort of any monarch — affects 'reign' no, which is the default if the field is omitted",
"type": "string",
"required": false
},
"spouse": {
"label": "Spouse",
"description": "Husbands/wives only; listed by most common name/title, in chronological order, using <nowiki>{{unbulleted list}}</nowiki>, and dates if needed, e.g. (m. 2004; div. 2006). Break dates onto a new line if more visually appropriate. 'spouses' will have label 'Spouses' instead of 'Spouse'.",
"type": "string",
"required": false,
"aliases": [
"spouses"
]
},
"spouse-type": {
"label": "Spouse-type",
"description": "Optional alternative text for 'Spouse' and 'Spouses'.",
"type": "string",
"required": false,
"aliases": [
"spouses-type"
]
},
"issue": {
"label": "Issue",
"description": "Children in order of birth, separated using <nowiki>{{unbulleted list}}</nowiki>; listed by name and highest shorthand title (e.g. Prince Edward, Earl of Wessex), do not use preceding styles (e.g. HM). Individuals without articles and/or who died as infants may be omitted from the list on an arbitrary basis. See also note for 'predecessor'.",
"type": "string",
"required": false
},
"issue-link": {
"label": "Issue-link",
"description": "Creates small link to a section in the article for further details on offspring (dependent upon 'issue')",
"type": "string",
"required": false
},
"issue-pipe": {
"label": "Issue-pipe",
"description": "Changes the output text of the above link (dependent upon 'issue-link')",
"type": "string",
"required": false
},
"full name": {
"label": "Full name",
"description": "English/Anglicised full legal non-titular name (current/most recent), with maiden name '(née Whatever)' and translation in their native/official tongue(s) on a new line (each) underneath (use a ''{{lang-XX|}}'' Multilingual support template)",
"type": "string",
"required": false,
"aliases": [
"family_name",
"clan_name",
"given_name"
]
},
"era name": {
"label": "Era name",
"description": "For Asian era names, wikilinked if appropriate (dependent upon 'era dates')",
"type": "string",
"required": false
},
"era dates": {
"label": "Era dates",
"description": "The dates of the monarch's era (per the above)",
"type": "string",
"required": false
},
"regnal name": {
"label": "Regnal name",
"description": "The monarch's regnal name",
"type": "string",
"required": false
},
"posthumous name": {
"label": "Posthumous name",
"description": "The posthumous name given to monarchs in certain traditions",
"type": "string",
"required": false
},
"temple name": {
"label": "Temple name",
"description": "As 'posthumous name' m.m.",
"type": "string",
"required": false
},
"house": {
"label": "House",
"description": "The houses, dynasties, or families to which the subject belonged/s (by birth, marriage or otherwise), listed chronologically first to last, using <nowiki>{{unbulleted list}}</nowiki> (e.g. <nowiki>{{unbulleted list|[[House of Saxe-Coburg and Gotha]] | [[House of Windsor]] }}</nowiki>) (formerly called 'house name' and listed last to first — it is strongly recommended that, for clarity, (by birth/marriage) or similar be included after each House's link)",
"type": "string",
"required": false
},
"house-type": {
"label": "House-type",
"description": "Optional alternative text for 'Royal house', such as 'Dynasty' or 'Family' (dependent upon 'house')",
"type": "string",
"required": false
},
"father": {
"label": "Father",
"description": "Most common shorthand title, do not use preceding styles (e.g. HM). May include multiple individuals, such as (biological), (adoptive) or (''hānai''). See also note for 'predecessor'.",
"type": "string",
"required": false
},
"mother": {
"label": "Mother",
"description": "Most common maiden name or highest title held in her own right",
"type": "string",
"required": false
},
"occupation": {
"label": "Occupation",
"description": "Primary non-royal occupations, listed most recent first (if the subject is deceased there's no need for 'prev.') e.g. 'Theatre; prev. Broadcasting' (alive), or 'Military; Author' (dead).",
"type": "string",
"required": false
},
"signature_type": {
"label": "Signature type",
"description": "A label to replace the default 'Signature', e.g. 'Tughra' for Ottoman sultans",
"type": "string",
"required": false
},
"signature_alt": {
"label": "Signature alt",
"description": "Alt text for signature",
"type": "string",
"required": false
},
"religion": {
"label": "Religion",
"description": "The subject's religion(s) may be listed with dates (in chronological order) if relevant, sourced and uncontroversial",
"type": "string",
"required": false
},
"embed": {},
"image_size": {
"description": "Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height).",
"type": "string",
"default": "220px"
},
"investiture": {},
"succession1": {},
"moretext1": {},
"reign-type1": {},
"reign1": {},
"cor-type1": {},
"coronation1": {},
"pre-type1": {},
"predecessor1": {},
"suc-type1": {},
"successor1": {},
"reg-type1": {},
"regent1": {},
"succession2": {},
"moretext2": {},
"reign-type2": {},
"reign2": {},
"cor-type2": {},
"coronation2": {},
"pre-type2": {},
"predecessor2": {},
"suc-type2": {},
"successor2": {},
"reg-type2": {},
"regent2": {},
"succession3": {},
"moretext3": {},
"reign-type3": {},
"reign3": {},
"cor-type3": {},
"coronation3": {},
"pre-type3": {},
"predecessor3": {},
"suc-type3": {},
"successor3": {},
"reg-type3": {},
"regent3": {},
"succession4": {},
"moretext4": {},
"reign-type4": {},
"reign4": {},
"cor-type4": {},
"coronation4": {},
"pre-type4": {},
"predecessor4": {},
"suc-type4": {},
"successor4": {},
"reg-type4": {},
"regent4": {},
"succession5": {},
"moretext5": {},
"reign-type5": {},
"reign5": {},
"cor-type5": {},
"coronation5": {},
"pre-type5": {},
"predecessor5": {},
"suc-type5": {},
"successor5": {},
"reg-type5": {},
"regent5": {},
"succession6": {},
"moretext6": {},
"reign-type6": {},
"reign6": {},
"cor-type6": {},
"coronation6": {},
"pre-type6": {},
"predecessor6": {},
"suc-type6": {},
"successor6": {},
"reg-type6": {},
"regent6": {},
"succession7": {},
"moretext7": {},
"reign-type7": {},
"reign7": {},
"cor-type7": {},
"coronation7": {},
"pre-type7": {},
"predecessor7": {},
"suc-type7": {},
"successor7": {},
"reg-type7": {},
"regent7": {},
"succession8": {},
"moretext8": {},
"reign-type8": {},
"reign8": {},
"cor-type8": {},
"coronation8": {},
"pre-type8": {},
"predecessor8": {},
"suc-type8": {},
"successor8": {},
"reg-type8": {},
"regent8": {},
"succession9": {},
"moretext9": {},
"reign-type9": {},
"reign9": {},
"cor-type9": {},
"coronation9": {},
"pre-type9": {},
"predecessor9": {},
"suc-type9": {},
"successor9": {},
"reg-type9": {},
"regent9": {},
"succession10": {},
"moretext10": {},
"reign-type10": {},
"reign10": {},
"cor-type10": {},
"coronation10": {},
"pre-type10": {},
"predecessor10": {},
"suc-type10": {},
"successor10": {},
"reg-type10": {},
"regent10": {},
"queen": {},
"type": {},
"spouse 2": {},
"spouse 1": {},
"spouse 3": {},
"spouse 4": {},
"spouse 5": {},
"spouse 6": {},
"spouse 7": {},
"spouse 8": {},
"spouse 9": {},
"issue-type": {},
"native_lang1": {},
"native_lang1_name1": {},
"native_lang2": {},
"native_lang2_name1": {},
"native_lang3": {},
"native_lang3_name1": {},
"native_lang4": {},
"native_lang4_name1": {},
"native_lang5": {},
"native_lang5_name1": {},
"royal house": {},
"dynasty": {},
"signature": {
"description": "X.jpg, being an image of the subject's personal signature",
"type": "string"
},
"module": {},
"pronunciation": {}
},
"paramOrder": [
"name",
"title",
"titletext",
"more",
"image",
"image_size",
"alt",
"caption",
"succession",
"moretext",
"reign",
"reign-type",
"coronation",
"cor-type",
"predecessor",
"pre-type",
"regent",
"reg-type",
"successor",
"suc-type",
"birth_name",
"birth_date",
"birth_place",
"death_date",
"death_place",
"burial_date",
"burial_place",
"consort",
"spouse",
"spouse-type",
"issue",
"issue-link",
"issue-pipe",
"full name",
"era name",
"era dates",
"regnal name",
"posthumous name",
"temple name",
"house",
"house-type",
"father",
"mother",
"occupation",
"signature",
"signature_type",
"signature_alt",
"religion",
"embed",
"2",
"investiture",
"succession1",
"moretext1",
"reign-type1",
"reign1",
"cor-type1",
"coronation1",
"pre-type1",
"predecessor1",
"suc-type1",
"successor1",
"reg-type1",
"regent1",
"succession2",
"moretext2",
"reign-type2",
"reign2",
"cor-type2",
"coronation2",
"pre-type2",
"predecessor2",
"suc-type2",
"successor2",
"reg-type2",
"regent2",
"succession3",
"moretext3",
"reign-type3",
"reign3",
"cor-type3",
"coronation3",
"pre-type3",
"predecessor3",
"suc-type3",
"successor3",
"reg-type3",
"regent3",
"succession4",
"moretext4",
"reign-type4",
"reign4",
"cor-type4",
"coronation4",
"pre-type4",
"predecessor4",
"suc-type4",
"successor4",
"reg-type4",
"regent4",
"succession5",
"moretext5",
"reign-type5",
"reign5",
"cor-type5",
"coronation5",
"pre-type5",
"predecessor5",
"suc-type5",
"successor5",
"reg-type5",
"regent5",
"succession6",
"moretext6",
"reign-type6",
"reign6",
"cor-type6",
"coronation6",
"pre-type6",
"predecessor6",
"suc-type6",
"successor6",
"reg-type6",
"regent6",
"succession7",
"moretext7",
"reign-type7",
"reign7",
"cor-type7",
"coronation7",
"pre-type7",
"predecessor7",
"suc-type7",
"successor7",
"reg-type7",
"regent7",
"succession8",
"moretext8",
"reign-type8",
"reign8",
"cor-type8",
"coronation8",
"pre-type8",
"predecessor8",
"suc-type8",
"successor8",
"reg-type8",
"regent8",
"succession9",
"moretext9",
"reign-type9",
"reign9",
"cor-type9",
"coronation9",
"pre-type9",
"predecessor9",
"suc-type9",
"successor9",
"reg-type9",
"regent9",
"succession10",
"moretext10",
"reign-type10",
"reign10",
"cor-type10",
"coronation10",
"pre-type10",
"predecessor10",
"suc-type10",
"successor10",
"reg-type10",
"regent10",
"queen",
"type",
"spouse 2",
"spouse 1",
"spouse 3",
"spouse 4",
"spouse 5",
"spouse 6",
"spouse 7",
"spouse 8",
"spouse 9",
"issue-type",
"native_lang1",
"native_lang1_name1",
"native_lang2",
"native_lang2_name1",
"native_lang3",
"native_lang3_name1",
"native_lang4",
"native_lang4_name1",
"native_lang5",
"native_lang5_name1",
"royal house",
"dynasty",
"module",
"pronunciation"
]
}</templatedata>
{{Collapse bottom}}
== Tracking categories ==
* {{clc|Biography template using pronunciation}}
* {{clc|Pages using infobox royalty with unknown parameters}}
== See also ==
* [https://en.wikipedia.org/w/index.php?title=Special%3AWhatLinksHere&target=Template%3A{{urlencode:{{BASEPAGENAME}}}}&namespace=0 List of articles using ''Template:{{BASEPAGENAME}}'']
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata -->
[[Category:Royalty and nobility infobox templates| ]]
[[Category:Biographical templates usable as a module|Royalty]]
[[Category:Infobox templates with module parameter|Royalty]]
[[Category:Politics and government infobox templates|Royalty]]
[[Category:Templates generating hCalendars]]
[[Category:Templates generating hCards]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
7cb7a1aaba8421390bead3cef6da2d9acd78035e
Template:Flag/core
10
1491
2826
2023-09-04T21:35:34Z
Pppery
6
Add new flags per edit request
wikitext
text/x-wiki
<span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{#if:{{{flag alias|}}}|{{{flag alias}}}|Flag placeholder.svg}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]] {{#switch:{{{flag alias}}}|Flag of Switzerland.svg|Flag of the Vatican City.svg|Flag of Switzerland (Pantone).svg|Flag of Vatican City State - 2023 version.svg= }}{{#ifeq:{{{alias}}}|Nepal| }}</span>[[{{{alias}}}|{{{name}}}]]<noinclude>{{documentation}}</noinclude>
0714064913bcc5abd9dae55d4fb50f52965eef35
Template:Flagcountry/core
10
1205
2534
2023-09-04T21:39:51Z
Pppery
6
Per edit request
wikitext
text/x-wiki
<span class="datasortkey" data-sort-value="{{{sortkey|{{{shortname alias|{{{alias}}}}}}}}}"><!--
--><span class="flagicon"><!--
-->[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|<!--
-->{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|<!--
-->{{{border-{{{variant}}}|{{{border|border}}}}}} |<!--
-->alt=|<!--
-->link=]] <!--
-->{{#switch:{{{flag alias}}}|Flag of Switzerland.svg|Flag of the Vatican City.svg|Flag of Switzerland (Pantone).svg|Flag of Vatican City State - 2023 version.svg= }}<!--
-->{{#ifeq:{{{alias}}}|Nepal| }}<!--
--></span>[[{{{link alias-{{{variant}}}|{{{alias}}}}}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|{{{shortname alias|{{{alias}}}}}}}}]]<!--
--></span><noinclude>{{documentation}}</noinclude>
1f6cdc61b8d06e6993f1621ac4b695389268eedf
Module:Portal/images/p
828
843
1868
2023-09-05T14:16:21Z
wikipedia>Pppery
0
Per edit request
Scribunto
text/plain
--[==[ This is the "P" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "P". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["pacific northwest"] = "Abies lasiocarpa 0775.JPG|link=|alt=",
["painting"] = "600-artist-palette.svg|link=|alt=artist's palette",
["pakistan"] = "Flag of Pakistan.svg|border|link=|alt=flag",
["palaeontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon",
["palau"] = "Flag of Palau.svg|border|link=|alt=flag",
["paleontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon",
["paleozoic"] = "Tiktaalik BW flopped.jpg|alt=icon",
["palestine"] = "Flag of Palestine.svg|border|link=|alt=flag",
["palestinian territories"] = "Flag of Palestine.svg|border|link=|alt=flag",
["pan-africanism"] = "Flag of the UNIA.svg",
["panama"] = "Flag of Panama.svg|border|link=|alt=flag",
["pandemics"] = "Protokol Kesehatan.jpg|link=|alt=",
["papua new guinea"] = "Flag of Papua New Guinea.svg|border|link=|alt=flag",
["paraguay"] = "Flag of Paraguay.svg|border|link=|alt=flag",
["patna"] = "Golghar, Patna, 1888.jpg|link=|alt=",
["peer review"] = "PR icon.png|alt=icon",
["pennsylvania"] = "Flag of Pennsylvania.svg|border|link=|alt=flag",
["people's republic of china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag",
["peru"] = "Flag of Peru.svg|border|link=|alt=flag",
["philadelphia"] = "Libertybell alone small.jpg|link=|alt=",
["philately"] = "Stamp UK Penny Red pl148.jpg|link=|alt=",
["philippines"] = "Flag of the Philippines.svg|border|link=|alt=flag",
["philosophy"] = "Socrates.png|link=|alt=",
["phoenicia"] = "Phoenician aleph.svg|alt=Black on white image of the Phoenician letter Aleph",
["photography"] = "Camera-871052.svg|link=|alt=",
["physics"] = "Stylised atom with three Bohr model orbits and stylised nucleus.svg|alt=icon",
["piracy"] = "Skull and crossbones.svg|link=|alt=",
["pitcairn islands"] = "Flag of the Pitcairn Islands.svg|border|link=|alt=flag",
["pittsburgh"] = "Coat of arms of Pittsburgh, Pennsylvania.svg|link=|alt=",
["plants"] = "Leaf 1 web.jpg|alt=icon",
["poetry"] = "Quill and ink.svg|alt=icon",
["pokémon"] = "Wikiball.svg|alt=icon",
["poland"] = "Flag of Poland.svg|border|link=|alt=flag",
["political science"] = "Plato-raphael.jpg|link=|alt=",
["politics"] = "A coloured voting box.svg|border|alt=icon",
["polyhedra"] = "Small snub icosicosidodecahedron.png|link=|alt=icon",
["polynesia"] = "Polynesia.png|link=|alt=map",
["pollution"] = "Benxi Steel Industries.jpg|link=|alt=photo",
["pop music"] = "Audio-input-microphone.png|alt=icon",
["portal"] = "PorcheCentralNordCathedraleChartre041130-.jpg|alt=icon",
["portugal"] = "Flag of Portugal.svg|border|link=|alt=flag",
["prehistoric mammals"] = "Smilodon Knight.jpg|link=|alt=",
["primates"] = "Man of the woods.JPG|alt=icon",
["prince edward island"] = "Flag of Prince Edward Island.svg|border|link=|alt=flag",
["probability"] = "Nuvola apps atlantik.png|link=|alt=icon",
["prostitution"] = "Bombilla roja - red Edison lamp.svg|link=alt=icon",
["protected areas of india"] = "Nagzira Tiger By Vijay Phulwadhawa.jpg|link=|alt=photo",
["prussia"] = "Flag of Prussia (1892-1918).svg|link=|alt=photo",
["psychiatry"] = "American Lady Against The Sky.jpg|alt=icon",
["psychology"] = "Psi2.svg|link=|alt=",
["puducherry"] = "Seal of Puducherry (cropped).svg|link=|alt=",
["puerto rico"] = "Flag of Puerto Rico.svg|border|link=|alt=flag",
["punjab"] = "Golden Temple (Harmandir Sahib) in Amritsar, India.jpg|border|link=|alt=image",
["punjab, india"] = "Seal of Punjab.gif|link=|alt=icon",
["punjab, pakistan"] = "Flag of Punjab.svg|border|link=|alt=flag",
}
f0317bea96bbb5170b149cd1fd81695e9a105b56
Template:Stateless nationalism in Europe
10
1111
2421
2023-09-07T09:03:43Z
wikipedia>The Banner
0
lf
wikitext
text/x-wiki
{{navbox
|navbar=
|name=Stateless nationalism in Europe
|title=[[List of active separatist movements in Europe|Movements]] of [[Regionalism (politics)|regionalism]], [[separatism]] and [[Stateless nation|stateless]] [[nationalism]] in Europe
|listclass=hlist
| group1 = Albania
| list1 =
*[[Autonomous Republic of Northern Epirus|Northern Epirus]]
| group2 = Azerbaijan
| list2 =
*[[Republic of Artsakh|Artsakh]]
*[[Lezgin nationalism|Lezgin]]
*[[Talysh-Mughan Autonomous Republic|Talysh]]
| group3 = Belgium
| list3 =
*[[Flemish Movement|Flemish]]
*[[Walloon Movement|Walloon]]
| group4 = Bosnia and<br />Herzegovina
| list4 =
*[[Proposed secession of Republika Srpska|Republika Srpska]]
| group5 = Croatia
| list5 =
*[[Istrianism|Istrian]]
| group6 = Cyprus
| list6 =
*[[Turkish Cypriot nationalism|Turkish Cypriot]]
| group7 = Denmark
| list7 =
*[[Greenlandic independence|Greenlandic]]
*[[Faroese independence movement|Faroese]]
| group8 = Finland
| list8 =
*[[Future of Åland|Ålandic]]
*[[Sápmi|Sámi]]
| group9 = France
| list9 =
*[[Alsace independence movement|Alsatian]]
*[[Basque nationalism|Basque]]
*[[Breton nationalism|Breton]]
*[[Corsican nationalism|Corsican]]
*[[Occitan nationalism|Occitan]]
*[[Catalan nationalism|North Catalan]]
| group10 = Georgia
| list10 =
*[[Abkhazia]]n
*[[Adjaria]]n
*[[United Javakhk Democratic Alliance|Javakheti]]
*[[Ossetia]]n
| group11 = Germany
| list11 =
*[[Bavarian nationalism|Bavarian]]
*[[Sorbs]]
*[[Swabians]]
| group12 = Greece
| list12 =
*[[Chameria|Cham Albanian]]
| group13 = Italy
| list13 =
*[[Lombard nationalism|Lombard]]
*[[Padanian nationalism|Padanian]]
*[[Sardinian nationalism|Sardinian]]
*[[Sicilian nationalism|Sicilian]]
*[[South Tyrolean independence movement|South Tyrolean]]
*[[Venetian nationalism|Venetian]]
| group14 = North Macedonia
| list14 =
*[[Ilirida]]
| group15 = Moldova
| list15 =
*[[Gagauzia]]
*[[Transnistria]]
| group16 = Netherlands
| list16 =
*[[Frisian nationalism|Frisian]]
| group17 = Norway
| list17 =
*[[Sápmi|Sámi]]
| group18 = Poland
| list18 =
*[[Kaszëbskô Jednota|Kashubian]]
*[[Silesian Autonomy Movement|Silesian]]
*[[Free City of Danzig Government in Exile|Free City of Danzig]]
| group19 = Romania
| list19 =
*[[Székely autonomy movement|Székely]]
*[[Transylvania–Banat League|Transylvania–Banat]]
| group20 = Russia
| list20 =
*[[Balkar and Karachay nationalism|Balkar and Karachay]]
*[[Bashkortostan|Bashkir]]
*[[Chechen Republic of Ichkeria|Chechen]]
*[[Chuvash nationalism|Chuvash]]
*[[Circassian nationalism|Circassian]]
*[[Crimean People's Republic|Crimean Tatar]]
*[[Karelia]]n
*[[Lezgin nationalism|Lezgin]]
*[[Ossetia]]n
*[[Sápmi|Sámi]]
*[[Siberian regionalism|Siberian]]
*[[Tatar nationalism|Tatar]]
| group21 = Serbia
| list21 =
*[[Vojvodina Autonomist Movement|Vojvodina]]
*[[Kosovo]]
| group22 = Spain
| list22 =
*[[Andalusian nationalism|Andalusian]]
*[[Aragonese nationalism|Aragonese]]
*[[Asturian nationalism|Asturian]]
*[[Basque nationalism|Basque]]
*[[Canarian nationalism|Canarian]]
*[[Castilian nationalism|Castilian]]
*[[Catalan nationalism|Catalan]]
*[[Galician nationalism|Galician]]
*[[Navarrese nationalism|Navarrese]]
*[[Valencian nationalism|Valencian]]
| group23 = Sweden
| list23 =
*[[Sápmi|Sámi]]
*[[Scania Party|Scania]]
| group24 = Turkey
| list24 =
*[[Assyrian nationalism|Assyrian]]
*[[Kurdish nationalism|Kurdish]]
| group25 = Ukraine
| list25 =
*[[Crimean People's Republic|Crimean Tatar]]
*[[Donetsk People's Republic|Donetsk]]
*[[Luhansk People's Republic|Luhansk]]
| group26 = United Kingdom
| list26 =
*[[Cornish nationalism|Cornish]]
*[[Ulster nationalism|Northern Irish]]
*[[Scottish nationalism|Scottish]]
*[[Welsh nationalism|Welsh]]
*[[Yorkshire Party|Yorkshire]]
|group27= See also
|list27=
*[[First-level NUTS of the European Union]]
|group28= Notes
}}<noinclude>
{{Doc|content=
==See also==
* [[:Category:Stateless nationalism in Europe]]
[[Category:Europe politics and government navigational boxes|Nationalism]]
[[Category:Nationalism navigational boxes|Europe]]
}}</noinclude>
b87180dad1a4664fe28e781822eba7c933c7979b
Template:Infobox character/doc
10
1267
2601
2023-09-07T23:17:36Z
w>Omnipaedista
0
edited formatting
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{auto short description}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters|Module:Formatted appearance}}
'''Infobox character''' is used to create an infobox for a fictional character of any type.
== Usage ==
The blank form immediately below shows the most commonly used fields, and complete instructions are listed further down the page.
{{Infobox character
| name = {{{name}}}
| series = {{{series}}}
| image = {{{image}}}
| alt = {{{alt}}}
| caption = {{{caption}}}
| first_major = {{{first_major}}}
| first_minor = {{{first_minor}}}
| first_date = {{{first_date}}}
| last_major = {{{last_major}}}
| last_minor = {{{last_minor}}}
| last_date = {{{last_date}}}
| creator = {{{creator}}}
| based_on = {{{based_on}}}
| adapted_by = {{{adapted_by}}}
| designer = {{{designer}}}
| portrayer = {{{portrayer}}}
| voice = {{{voice}}}
| motion_actor = {{{motion_actor}}}
| full_name = {{{full_name}}}
| nickname = {{{nickname}}}
| alias = {{{alias}}}
| species = {{{species}}}
| gender = {{{gender}}}
| title = {{{title}}}
| occupation = {{{occupation}}}
| affiliation = {{{affiliation}}}
| fighting_style = {{{fighting_style}}}
| weapon = {{{weapon}}}
| family = {{{family}}}
| spouse = {{{spouse}}}
| significant_other = {{{significant_other}}}
| children = {{{children}}}
| relatives = {{{relatives}}}
| religion = {{{religion}}}
| origin = {{{origin}}}
| nationality = {{{nationality}}}
}}
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox character
| name =
| series = <!-- or |franchise=; use without the italic on the outside -->
| image =
| alt =
| caption =
| first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games -->
| first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions -->
| first_date =
| first = <!-- Use instead of first_major= etc. when custom or complex formatting is needed. -->
| last_major =
| last_minor = <!-- or |last_issue= -->
| last_date =
| last = <!-- Use instead of last_major= etc. when custom or complex formatting is needed. -->
| creator = <!-- only the credited creators; use adapted_by= for adaptations -->
| based_on = <!-- if not an original creation, use {{based on|character|author}} -->
| adapted_by = <!-- for character adaption articles -->
| designer =
| portrayer =
| voice =
| motion_actor =
| full_name =
| nickname = <!-- or |nicknames= -->
| alias = <!-- or |aliases= -->
| species = <!-- or |race=; for non-humans only -->
| gender = <!-- if not obvious -->
| title =
| occupation = <!-- or |position= or |class= -->
| affiliation = <!-- or |alignment= -->
| fighting_style =
| weapon =
| family =
| spouse = <!-- or |spouses= -->
| significant_other = <!-- or |significant_others= -->
| children =
| relatives =
| religion =
| origin = <!-- or |home= -->
| nationality =
}}</syntaxhighlight>
== Parameters ==
All parameters are optional. Separate multiple entries using {{tl|Plainlist}}.
{| class="wikitable"
|-
! scope="col" | Parameter
! scope="col" | Notes
|-
! scope="row" | name
| Character name to display in top header (default = PAGENAME).
|-
! scope="row" | series
| Name of the series in which the character appears.
|-
! scope="row" | franchise
| Name of the fictional world or story in which the character appears. Does not italicize title.
|-
! scope="row" | multiple
| Set to yes if the infobox describes more than one character.
|-
! scope="row" | image
| Image of the character. "File:" and wikilinking is not required; i.e. use {{para|image|Example.png}}.
|-
! scope="row" | image_upright
| The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px.
|-
! scope="row" | alt
| Alt text for image per [[WP:MOSALT]].
|-
! scope="row" | caption
| A caption explaining the image.
|-
! scope="row" | first_major
| The title of the [[MOS:MAJORWORK|major work]] the fictional element first appeared in. Major works include TV series, films, books, albums and games.
|-
! scope="row" | first_minor
| The title of the [[MOS:MINORWORK|minor work]] the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions.
|-
! scope="row" | first_issue
| The number of the comic book issue the fictional element first appeared in.
|-
! scope="row" | first_date
| The date of the publication/release of the minor work where the fictional element first appeared in.
|-
! scope="row" | last_major
| The title of the [[MOS:MAJORWORK|major work]] the fictional element last appeared in. Major works include TV series, films, books, albums and games.
|-
! scope="row" | last_minor
| The title of the [[MOS:MINORWORK|minor work]] the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions.
|-
! scope="row" | last_issue
| The number of the comic book issue the fictional element last appeared in.
|-
! scope="row" | last_date
| The date of the publication/release of the minor work where the fictional element last appeared in.
|-
! scope="row" | first
| First appearance of the character.
|-
! scope="row" | firstgame
| First appearance in a game of the character.
|-
! scope="row" | last
| Last appearance of the character.
|-
! scope="row" | creator
| Name of the individuals who are credited with the creation of the character.
|-
! scope="row" | based_on
| Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}.
|-
! scope="row" | adapted_by
| Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character.
|-
! scope="row" | designer
| Name of the individuals who designed the character.
|-
! scope="row" | portrayer
| Name of the individuals who portrayed the character.
|-
! scope="row" | voice
| Name of the individuals who voiced the character. Should be omitted if the same as "portrayer".
|-
! scope="row" | motion_actor
| Name of the individuals who portrayed the character in motion capture.
|-
! scope="row" | noinfo
| Disable the first "In-universe information" header.
|-
! scope="row" | info-hdr
| Text for display in second header (default = Information).
|-
! scope="row" | full_name
| The character's full name.
|-
! scope="row" | {{Unbulleted list|nickname|nicknames}}
| Any nicknames used by the character.
|-
! scope="row" | {{Unbulleted list|alias|aliases}}
| Any aliases used by the character.
|-
! scope="row" | {{Unbulleted list|species|race}}
| The species or race of the character. Use for non-human characters only.
|-
! scope="row" | gender
| The gender of the character. Use only if not obvious.
|-
! scope="row" | title
| Titles the character was known by.
|-
! scope="row" | {{Unbulleted list|occupation|position}}
| The character's job or role.
|-
! scope="row" | class
| The [[character class]] for RPG characters.
|-
! scope="row" | affiliation
| The groups or teams the character belongs to.
|-
! scope="row" | alignment
| The character's Dungeons & Dragons alignment.
|-
! scope="row" | fighting_style
| The primary fighting styles used by the character.
|-
! scope="row" | weapon
| The types of weapons the character uses.
|-
! scope="row" | family
| The character's family members.
|-
! scope="row" | {{Unbulleted list|spouse|spouses}}
| The character's spouses.
|-
! scope="row" | {{Unbulleted list|significant_other|significant_others}}
| The character's significant others.
|-
! scope="row" | children
| The characters's children.
|-
! scope="row" | relatives
| The characters's relatives.
|-
! scope="row" | religion
| The character's religion.
|-
! scope="row" | {{Unbulleted list|origin|home}}
| The character's place of origin.
|-
! scope="row" | nationality
| The character's nationality.
|-
! scope="row" | extra-hdr
| Text for display in third header (default = No third header).
|-
! scope="row" | lbl#
| Label to display in left column where "#" is 1-5, 21-25, or 31-35 for custom fields under the 1st, 2nd, or 3rd headers respectively.
|-
! scope="row" | data#
| Text to display in the right column corresponding to the appropriate "lbl#".
|}
===TemplateData===
{{Collapse top|title=TemplateData}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "Creates an infobox for a fictional character of any type.",
"params": {
"name": {
"label": "Name",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Character name to display in top header (default = PAGENAME)."
},
"series": {
"label": "Series",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the series in which the character appears."
},
"franchise": {
"label": "Franchise",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the fictional world or story in which the character appears. Does not italicize title."
},
"multiple": {
"label": "Multiple",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Set to yes if the infobox describes more than one character."
},
"image": {
"label": "Image",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Image of the character. \"File:\" and wikilinking is not required; i.e. use {{para|image|Example.png}}."
},
"image_upright": {
"label": "Image upright",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The image size defaults to frameless (220px). The size should not be set to a value that would result in an image width greater than 270px."
},
"alt": {
"label": "Alt",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Alt text for image per [[WP:MOSALT]]."
},
"caption": {
"label": "Caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "A caption explaining the image."
},
"first_major": {
"label": "First appearance major",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The title of the major work the fictional element first appeared in. Major works include TV series, films, books, albums and games."
},
"first_minor": {
"label": "First appearance minor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The title of the minor work the fictional element first appeared in. Minor works include TV episodes, chapters, songs and game missions."
},
"first_issue": {
"label": "First appearance issue",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The number of the comic book issue the fictional element first appeared in."
},
"first_date": {
"label": "First appearance date",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The date of the publication/release of the minor work where the fictional element first appeared in."
},
"last_major": {
"label": "Last appearance major",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The title of the major work the fictional element last appeared in. Major works include TV series, films, books, albums and games."
},
"last_minor": {
"label": "Last appearance minor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The title of the minor work the fictional element last appeared in. Minor works include TV episodes, chapters, songs and game missions."
},
"last_issue": {
"label": "Last appearance issue",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The number of the comic book issue the fictional element last appeared in."
},
"last_date": {
"label": "Last appearance date",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The date of the publication/release of the minor work where the fictional element last appeared in."
},
"first": {
"label": "First appearance",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "First appearance of the character."
},
"firstgame": {
"label": "First game",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "First appearance in a game of the character."
},
"last": {
"label": "Last appearance",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Last appearance of the character."
},
"creator": {
"label": "Creator",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who are credited with the creation of the character."
},
"based_on": {
"label": "Based on",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the original character the adaptation is based on. Use {{based on}} to add the title of original character and the names of the original creators. Use this field in conjunction with {{para|adapted_by}}."
},
"adapted_by": {
"label": "Adapted by",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who adapted the character into a new medium. Use this field if the character in a medium is based on a character from a different medium, such as a character on television based on a comic book character."
},
"designer": {
"label": "Designer",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who designed the character."
},
"portrayer": {
"label": "Portrayer",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who portrayed the character."
},
"voice": {
"label": "Voice actor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who voiced the character (if different from portrayer or there is no portrayer)"
},
"motion_actor": {
"label": "Motion actor",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Name of the individuals who portrayed the character in motion capture."
},
"lbl1": {
"label": "Label 1",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Label to display in left column for custom fields under the 1st header."
},
"data1": {
"label": "Data 1",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Text to display in the right column corresponding to lbl1."
},
"lbl2": {
"label": "Label 2",
"inherits": "lbl1"
},
"data2": {
"label": "Data 2",
"description": "Text to display in the right column corresponding to lbl2.",
"inherits": "data1"
},
"lbl3": {
"label": "Label 3",
"inherits": "lbl1"
},
"data3": {
"label": "Data 3",
"description": "Text to display in the right column corresponding to lbl3.",
"inherits": "data1"
},
"lbl4": {
"label": "Label 4",
"inherits": "lbl1"
},
"data4": {
"label": "Data 4",
"description": "Text to display in the right column corresponding to lbl4.",
"inherits": "data1"
},
"lbl5": {
"label": "Label 5",
"inherits": "lbl1"
},
"data5": {
"label": "Data 5",
"description": "Text to display in the right column corresponding to lbl5.",
"inherits": "data1"
},
"noinfo": {
"label": "Disable second header",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Disable the first \"In-universe information\" header."
},
"info-hdr": {
"label": "Second header text",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Text for display in second header (default = Information)."
},
"full_name": {
"label": "Full name",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's full name."
},
"nickname": {
"label": "Nickname",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "A nickname used by the character. If there is more than one nickname, use {{para|nicknames}} and separate multiple entries using {{tl|Plainlist}}."
},
"nicknames": {
"label": "Nicknames",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Any nicknames used by the character. If there is only one nickname, use {{para|nickname}}."
},
"alias": {
"label": "Alias",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "An alias used by the character. If there is more than one alias, use {{para|aliases}} and separate multiple entries using {{tl|Plainlist}}."
},
"aliases": {
"label": "Alias",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Any aliases used by the character. If there is only one alias, use {{para|alias}}."
},
"species": {
"label": "Species",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The species of the character. Use for non-human characters only."
},
"race": {
"label": "Race",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The race of the character. Use for non-human characters only."
},
"gender": {
"label": "Gender",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The gender of the character. Use only if not obvious."
},
"title": {
"label": "Title",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Titles the character was known by."
},
"occupation": {
"label": "Occupation",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's job or role."
},
"position": {
"label": "Position",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's job or role."
},
"class": {
"label": "Class",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character class for RPG characters."
},
"affiliation": {
"label": "Affiliation",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The groups or teams the character belongs to."
},
"alignment": {
"label": "Alignment",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's Dungeons & Dragons alignment."
},
"fighting_style": {
"label": "Fighting style",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The primary fighting styles used by the character."
},
"weapon": {
"label": "Weapon",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The types of weapons the character uses."
},
"family": {
"label": "Family",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's family members."
},
"spouse": {
"label": "Spouse",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's spouses."
},
"spouses": {
"label": "Spouses",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's spouses."
},
"significant_other": {
"label": "Significant other",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's significant others. If there is more than one significant_other, use {{para|significant_others}} and separate multiple entries using {{tl|Plainlist}}."
},
"significant_others": {
"label": "Significant others",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's significant others. If there is only one significant_other, use {{para|significant_other}}."
},
"children": {
"label": "Children",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The characters's children"
},
"relatives": {
"label": "Relatives",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The characters's relatives"
},
"religion": {
"label": "Religion",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's religion"
},
"origin": {
"label": "Origin",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's place of origin."
},
"home": {
"label": "Home",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's place of origin."
},
"nationality": {
"label": "Nationality",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The character's nationality."
},
"lbl21": {
"label": "Label 21",
"description": "Label to display in left column for custom fields under the 2nd header.",
"inherits": "lbl1"
},
"data21": {
"label": "Data 21",
"description": "Text to display in the right column corresponding to lbl21.",
"inherits": "data1"
},
"lbl22": {
"label": "Label 22",
"inherits": "lbl21"
},
"data22": {
"label": "Data 22",
"description": "Text to display in the right column corresponding to lbl22.",
"inherits": "data1"
},
"lbl23": {
"label": "Label 23",
"inherits": "lbl21"
},
"data23": {
"label": "Data 23",
"description": "Text to display in the right column corresponding to lbl23.",
"inherits": "data1"
},
"lbl24": {
"label": "Label 24",
"inherits": "lbl21"
},
"data24": {
"label": "Data 24",
"description": "Text to display in the right column corresponding to lbl24.",
"inherits": "data1"
},
"lbl25": {
"label": "Label 25",
"inherits": "lbl21"
},
"data25": {
"label": "Data 25",
"description": "Text to display in the right column corresponding to lbl25.",
"inherits": "data1"
},
"extra-hdr": {
"label": "Third header text",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Text for display in third header (default = No third header)."
},
"lbl31": {
"label": "Label 31",
"description": "Label to display in left column for custom fields under the 3rd header.",
"inherits": "lbl22"
},
"data31": {
"label": "Data 31",
"description": "Text to display in the right column corresponding to lbl31.",
"inherits": "data1"
},
"lbl32": {
"label": "Label 32",
"inherits": "lbl31"
},
"data32": {
"label": "Data 32",
"description": "Text to display in the right column corresponding to lbl32.",
"inherits": "data1"
},
"lbl33": {
"label": "Label 33",
"inherits": "lbl31"
},
"data33": {
"label": "Data 33",
"description": "Text to display in the right column corresponding to lbl33.",
"inherits": "data1"
},
"lbl34": {
"label": "Label 34",
"inherits": "lbl31"
},
"data34": {
"label": "Data 34",
"description": "Text to display in the right column corresponding to lbl34.",
"inherits": "data1"
},
"lbl35": {
"label": "Label 35",
"inherits": "lbl31"
},
"data35": {
"label": "Data 35",
"description": "Text to display in the right column corresponding to lbl35.",
"inherits": "data1"
}
},
"format": "block"
}
</templatedata>
{{Collapse bottom}}
=== All parameters (not for general use) ===
{{Collapse top|title=Complete list of parameters}}
{{Parameter names example|_template=| adapted_by | affiliation | alias | alt | based_on | caption | children | creator | data1 | data2 | data3 | data4 | data5 | data21 | data22 | data23 | data24 | data25 | data31 | data32 | data33 | data34 | data35 | designer | extra-hdr | family | fighting_style | first_date | first_major | first_minor | firstgame | franchise | full_name | gender | home | image | image_size | image_upright | info-hdr | last_date | last_major | last_minor | lbl1 | lbl2 | lbl3 | lbl4 | lbl5 | lbl21 | lbl22 | lbl23 | lbl24 | lbl25 | lbl31 | lbl32 | lbl33 | lbl34 | lbl35 | motion_actor | multiple | name | nationality | nickname | occupation | origin | portrayer | position | race | relatives | religion | series | significant_other | species | spouse | title | voice | weapon}}
<syntaxhighlight lang="wikitext">
{{Infobox character
| name =
| series = <!-- or |franchise=; use without the italic on the outside -->
| multiple =
| image =
| image_upright =
| alt =
| caption =
| first_major = <!-- per [[MOS:MAJORWORK]] - major works include TV series, films, books, albums and games -->
| first_minor = <!-- or |first_issue=; Per [[MOS:MINORWORK]] - minor works include TV episodes, chapters, songs and game missions -->
| first_date =
| last_major =
| last_minor = <!-- or |last_issue= -->
| last_date =
| first =
| firstgame =
| last =
| creator = <!-- only the credited creators; use adapted_by= for adaptations -->
| based_on = <!-- if not an original creation, use {{based on|character|author}} -->
| adapted_by = <!-- for character adaption articles -->
| designer =
| portrayer =
| voice =
| motion_actor =
| lbl1 =
| data1 =
| lbl2 =
| data2 =
| lbl3 =
| data3 =
| lbl4 =
| data4 =
| lbl5 =
| data5 =
| noinfo =
| info-hdr =
| full_name =
| nickname = <!-- or |nicknames= -->
| alias = <!-- or |aliases= -->
| species = <!-- or |race=; for non-humans only -->
| gender = <!-- if not obvious -->
| title =
| occupation = <!-- or |position= or |class= -->
| affiliation = <!-- or |alignment= -->
| fighting_style =
| weapon =
| family =
| spouse = <!-- or |spouses= -->
| significant_other = <!-- or |significant_others= -->
| children =
| relatives =
| religion =
| origin = <!-- or |home= -->
| nationality =
| lbl21 =
| data21 =
| lbl22 =
| data22 =
| lbl23 =
| data23 =
| lbl24 =
| data24 =
| lbl25 =
| data25 =
| extra-hdr =
| lbl31 =
| data31 =
| lbl32 =
| data32 =
| lbl33 =
| data33 =
| lbl34 =
| data34 =
| lbl35 =
| data35 =
}}</syntaxhighlight>
{{Collapse bottom}}
== Example ==
{{Infobox character
| name = John Doe
| series = [[Criminal Minds]]
| image =
| caption =
| first_major = Criminal Minds
| first_minor = Pilot
| first_date = 2005
| last_major = Criminal Minds
| last_minor = Last One
| last_date = 2018
| creator = [[Agnes Nixon]]
| portrayer = [[Soupy Sales]]
| nickname = Doeboy
| alias = Jack Dew
| gender = Male
| title = Detective
| occupation = Law enforcement
| family = Doe
| spouse = Jane Doe
| significant_other =
| children = John Doe, Jr.
| relatives = {{Plainlist|
* Phil Doe (father)
* Nancy Doe (mother)
}}
| religion = [[Christianity|Christian]]
| nationality = American
}}
<syntaxhighlight lang="wikitext">
{{Infobox character
| name = John Doe
| series = [[Criminal Minds]]
| image =
| caption =
| first_major = Criminal Minds
| first_minor = Pilot
| first_date = 2005
| last_major = Criminal Minds
| last_minor = Last One
| last_date = 2018
| creator = [[Agnes Nixon]]
| portrayer = [[Soupy Sales]]
| nickname = Doeboy
| alias = Jack Dew
| gender = Male
| title = Detective
| occupation = Law enforcement
| family = Doe
| spouse = Jane Doe
| significant_other =
| children = John Doe, Jr.
| relatives = {{Plainlist|
* Phil Doe (father)
* Nancy Doe (mother)
}}
| religion = [[Christianity|Christian]]
| nationality = American
}}
</syntaxhighlight>
== Tracking categories ==
* {{clc|Pages using infobox character with unknown parameters}}
* {{clc|Articles using Infobox character with multiple unlabeled fields}}
== See also ==
* {{tl|Infobox person}}
{{Film- and television-related infobox templates}}<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Fictional character infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
abefaf40a0d8f61cb9007d12379197adc0dbf68c
Template:Unicode version
10
1619
2954
2023-09-08T03:19:08Z
w>Drmccreedy
0
Prepare for next release
wikitext
text/x-wiki
{{trim|1=<!--
PREFIX
-->{{#switch:{{{prefix|}}}
|as of|asof=as of Unicode version
|As of|Asof=As of Unicode version
|#default={{{prefix|}}}}} <!--
VERSION NUMBER
-->{{#switch:{{{version|0.0}}}
| 1 | 1.0.0 = 1.0.0
| 1.0.1 = 1.0.1
| 1.1 = 1.1
| 2 | 2.0 = 2.0
| 2.1 = 2.1
| 3 | 3.0 = 3.0
| 3.1 = 3.1
| 3.2 = 3.2
| 4 | 4.0 = 4.0
| 4.1 = 4.1
| 5 | 5.0 = 5.0
| 5.1 = 5.1
| 5.2 = 5.2
| 6 | 6.0 = 6.0
| 6.1 = 6.1
| 6.2 = 6.2
| 6.3 = 6.3
| 7 | 7.0 = 7.0
| 8 | 8.0 = 8.0
| 9 | 9.0 = 9.0
| 10 | 10.0 = 10.0
| 11 | 11.0 = 11.0
| 12 | 12.0 = 12.0
| 12.1 = 12.1
| 13 | 13.0 = 13.0
| 14 | 14.0 = 14.0
| 15 | 15.0 = 15.0
| 15.1 = 15.1
|#default=<!-- not recognised/error, return blank -->
}}<!--
SUFFIX
-->{{#if:{{{suffix|}}}| {{#switch:{{lc:{{{suffix|}}}}}
|#default={{{suffix|}}}}}}}{{{ref|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
30faebd87a5634ec93174a1faa2aa8cc59cb15fe
Module:Message box/configuration
828
11
17
2023-09-08T14:09:56Z
Pppery
6
Use SVG per edit request
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox-license.svg'
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg',
imageNeedsLink = true
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
27f00af5cf3939613e9156acd5e62a3469d03d81
Template:Infobox character
10
1117
2442
2023-09-08T15:46:09Z
w>Izno
0
[[Wikipedia:Templates for discussion/Log/2023 August 29#Template:Infobox Transformers character]] closed as merge ([[WP:XFDC#4.0.13|XFDcloser]])
wikitext
text/x-wiki
{{Main other|{{Short description|Fictional character|noreplace|pagetype=Articles}}}}
{{Infobox
| bodystyle = border-spacing: 2px 5px;
| above = {{If empty |{{{name|}}} |<includeonly>{{PAGENAMEBASE}}</includeonly> }}
| abovestyle = background-color: #DEDEE2;
| subheader = {{#if: {{{series|}}}{{{franchise|}}} | {{#if: {{{series|}}} | ''{{{series|}}}'' | {{{franchise|}}} }} character{{#if: {{{multiple|}}} | s }} }}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}}}
| caption = {{{caption|}}}
| headerstyle = background-color: #DEDEE2;
| label1 = First appearance
| data1 = {{#if: {{{first|}}} | {{{first|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{first_major|}}} |minor_work={{{first_minor|}}} |issue={{{first_issue|}}} |date={{{first_date|}}} }} }}
| label2 = First game
| data2 = {{{firstgame|}}}
| label3 = Last appearance
| data3 = {{#if: {{{last|}}} | {{{last|}}} | {{#invoke:Formatted appearance|getFormattedAppearance|major_work={{{last_major|}}} |minor_work={{{last_minor|}}} |issue={{{last_issue|}}} |date={{{last_date|}}} }} }}
| label4 = Created by
| data4 = {{{creator|}}}
| label5 = Based on
| data5 = {{{based_on|}}}
| label6 = Adapted by
| data6 = {{{adapted_by|}}}
| label7 = Designed by
| data7 = {{{designer|}}}
| label8 = Portrayed by
| data8 = {{{portrayer|}}}
| label9 = Voiced by
| data9 = {{{voice|}}}
| label10 = Motion capture
| data10 = {{{motion_actor|}}}
| label11 = {{{lbl1|}}}
| data11 = {{{data1|}}}
| label12 = {{{lbl2|}}}
| data12 = {{{data2|}}}
| label13 = {{{lbl3|}}}
| data13 = {{{data3|}}}
| label14 = {{{lbl4|}}}
| data14 = {{{data4|}}}
| label15 = {{{lbl5|}}}
| data15 = {{{data5|}}}
| header20 = {{#if: {{{noinfo|}}} || {{#if: {{{full_name|}}} {{{alias|}}} {{{aliases|}}} {{{nickname|}}} {{{nicknames|}}} {{{race|}}} {{{species|}}} {{{gender|}}} {{{title|}}} {{{occupation|}}} {{{position|}}} {{{class|}}} {{{affiliation|}}} {{{alignment|}}} {{{fighting_style|}}} {{{weapon|}}} {{{family|}}} {{{spouse|}}} {{{spouses|}}} {{{significant_other|}}} {{{significant_others|}}} {{{children|}}} {{{relatives|}}} {{{religion|}}} {{{origin|}}} {{{home|}}} {{{nationality|}}} {{{data21|}}} {{{data22|}}} {{{data23|}}} {{{data24|}}} {{{data25|}}} | {{If empty |{{{info-hdr|}}} |In-universe information }} }} }}
| label21 = Full name
| data21 = {{{full_name|}}}
| label22 = {{#if: {{{alias|}}} | Alias | Aliases }}
| data22 = {{If empty |{{{alias|}}} |{{{aliases|}}} }}
| label23 = {{#if: {{{nickname|}}} | Nickname | Nicknames }}
| data23 = {{If empty |{{{nickname|}}} |{{{nicknames|}}} }}
| label24 = {{#if: {{{race|}}} | Race | Species }}
| data24 = {{If empty |{{{race|}}} |{{{species|}}} }}
| label25 = Gender
| data25 = {{{gender|}}}
| label26 = Title
| data26 = {{{title|}}}
| label27 = {{#if: {{{occupation|}}} | Occupation | {{#if: {{{position|}}} | Position | Class }} }}
| data27 = {{If empty |{{{occupation|}}} |{{{position|}}} |{{{class|}}} }}
| label28 = {{#if: {{{affiliation|}}} | Affiliation | Alignment }}
| data28 = {{If empty |{{{affiliation|}}} |{{{alignment|}}} }}
| label29 = Fighting style
| data29 = {{{fighting_style|}}}
| label30 = Weapon
| data30 = {{{weapon|}}}
| label31 = Family
| data31 = {{{family|}}}
| label32 = {{#if: {{{spouse|}}} | Spouse | Spouses }}
| data32 = {{If empty |{{{spouse|}}} |{{{spouses|}}} }}
| label33 = {{#if: {{{significant_other|}}} | Significant {{nowrap|other}} | Significant {{nowrap|others}} }}
| data33 = {{If empty |{{{significant_other|}}} |{{{significant_others|}}} }}
| label34 = Children
| data34 = {{{children|}}}
| label35 = Relatives
| data35 = {{{relatives|}}}
| label36 = Religion
| data36 = {{{religion|}}}
| label37 = {{#if: {{{origin|}}} | Origin | Home }}
| data37 = {{If empty |{{{origin|}}} |{{{home|}}} }}
| label38 = Nationality
| data38 = {{{nationality|}}}
| label39 = {{{lbl21|}}}
| data39 = {{{data21|}}}
| label40 = {{{lbl22|}}}
| data40 = {{{data22|}}}
| label41 = {{{lbl23|}}}
| data41 = {{{data23|}}}
| label42 = {{{lbl24|}}}
| data42 = {{{data24|}}}
| label43 = {{{lbl25|}}}
| data43 = {{{data25|}}}
| header50 = {{#if: {{{data31|}}} {{{data32|}}} {{{data33|}}} {{{data34|}}} {{{data35|}}} | {{{extra-hdr|}}} }}
| label51 = {{{lbl31|}}}
| data51 = {{{data31|}}}
| label52 = {{{lbl32|}}}
| data52 = {{{data32|}}}
| label53 = {{{lbl33|}}}
| data53 = {{{data33|}}}
| label54 = {{{lbl34|}}}
| data54 = {{{data34|}}}
| label55 = {{{lbl35|}}}
| data55 = {{{data35|}}}
}}<!-- Start tracking
-->{{Main other
|{{#if: {{{lbl35|}}} {{{data35|}}} {{{lbl25|}}} {{{data25|}}} {{{lbl5|}}} {{{data5|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|5{{PAGENAME}}]]
| {{#if: {{{lbl34|}}} {{{data34|}}} {{{lbl24|}}} {{{data24|}}} {{{lbl4|}}} {{{data4|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|4{{PAGENAME}}]]
| {{#if: {{{lbl33|}}} {{{data33|}}} {{{lbl23|}}} {{{data23|}}} {{{lbl3|}}} {{{data3|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|3{{PAGENAME}}]]
| {{#if: {{{lbl32|}}} {{{data32|}}} {{{lbl22|}}} {{{data22|}}} {{{lbl2|}}} {{{data2|}}} | [[Category:Articles using Infobox character with multiple unlabeled fields|2{{PAGENAME}}]]
}} }} }} }}}}<!--
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox character with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox character]] with unknown parameter "_VALUE_"|showblankpositional=1| adapted_by | affiliation | alias | aliases | alignment | alt | caption | children | class | creator | based_on | data1 | data2 | data3 | data4 | data5 | data21 | data22 | data23 | data24 | data25 | data31 | data32 | data33 | data34 | data35 | designer | extra-hdr | family | fighting_style | first | first_date | first_issue | first_major | first_minor | firstgame | franchise | full_name | gender | home | image | image_size | image_upright | info-hdr | last | last_date | last_issue | last_major | last_minor | lbl1 | lbl2 | lbl3 | lbl4 | lbl5 | lbl21 | lbl22 | lbl23 | lbl24 | lbl25 | lbl31 | lbl32 | lbl33 | lbl34 | lbl35 | motion_actor | multiple | name | nationality | nickname | nicknames | noinfo | occupation | origin | portrayer | position | race | relatives | religion | series | significant_other | significant_others | species | spouse | spouses | title | voice | weapon }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
b871898b27742ffec427d7523c2ac6875ce11391
Template:Infobox/doc
10
207
2493
470
2023-09-09T08:06:21Z
w>Tjmj
0
/* Examples */ Suppress [[Category:Pages using infobox templates with ignored data cells]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{distinguish|Template:Userbox}}
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Lua|Module:Infobox}}
{{Parameter names example
|name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>......
|image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>......
|header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div>
|label2={{{label1}}} |data2={{{data1}}}
|data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div>
|header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div>
|label6={{{label2}}} |data6={{{data2}}}
|data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div>
|data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div>
|below
}}
This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes.
== Usage ==
{{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}).
For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified:
<syntaxhighlight lang="wikitext">
{{Infobox
| name = {{{name|{{PAGENAME}}}}}
| image = {{{image|}}}
| caption1 = {{{caption|}}}
| label1 = Former names
| data1 = {{{former_names|}}}
| header2 = General information
| label3 = Status
| data3 = {{{status|}}}
... <!-- etc. -->
}}
</syntaxhighlight>
== Optional control parameters ==
; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change.
; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it.
; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes".
; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it.
; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details.
== Content parameters ==
=== Title ===
There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended):
; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative.
; above : Text to put within the uppermost cell of the table.
; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images.
Examples:
{{Infobox
| name = Infobox/doc
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</syntaxhighlight>{{clear}}
{{Infobox
| name = Infobox/doc
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</syntaxhighlight>{{clear}}
=== Illustration images ===
; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text.
; caption(n) : Text to put underneath the images.
=== Main data ===
; header(n) : Text to use as a header in row n.
; label(n) : Text to use as a label in row n.
; data(n) : Text to display as data in row n.
Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are:
* {{para|class''(n)''}} {{para|header''(n)''}}
* {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
* {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below.
==== Number ranges ====
To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| header3 = Section 1
| label5 = Label A
| data5 = Data A
| label7 = Label C
| data7 = Data C
| header10 = Section 2
| label12 = Label D
| data12 = Data D
</syntaxhighlight>{{clear}}
It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]].
There is no upper limit on numbers but there must be at most 50 between each used number.
==== Making data fields optional ====
A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| label5 = Population
| data5 = {{{population|}}}
</syntaxhighlight>{{clear}}
This way if an article doesn't define the population parameter in its infobox the row won't be displayed.
For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'":
<syntaxhighlight lang="wikitext" style="overflow:auto">
| label6 = Mass
| data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }}
</syntaxhighlight>{{clear}}
For more on #if, see [[meta:ParserFunctions##if:|here]].
==== Hiding headers when all its data fields are empty ====
You can also make headers automatically hide when their section is empty (has no data-row showing).
Consider this situation:
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''':
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content.
Note: if the data has empty css elements, like {{para|data|2=<span style="background:yellow;"></span>}}, this will be treated as non-empty (having data).
If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items.
{{Infobox
| title = Example: blank header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
</syntaxhighlight>{{clear}}
=== Footer ===
; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information.
== Presentation parameters ==
=== Italic titles ===
Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter.
* Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox.
* Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}}
* Do not make any titles italic by not passing the parameter at all.
=== CSS styling ===
{{div col}}
; bodystyle : Applies to the infobox table as a whole
; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox.
; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle.
; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future.
; captionstyle : Applies to the text of the image caption.
; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row.
; headerstyle : Applies to all header cells
; subheaderstyle : Applies to all subheader cells
; labelstyle : Applies to all label cells
; datastyle : Applies to all data cells
; belowstyle : Applies only to the below cell
{{div col end}}
=== HTML classes and microformats ===
{{div col}}
; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole.
; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption.
<!-- currently not implemented in Lua module
; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on.
-->
; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell.
; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on.
; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''.
; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on.
; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''.
; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells.
; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect.
<!-- currently not implemented in Lua module
; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on.
-->
; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell.
{{div col end}}
This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats.
To flag an infobox as containing [[hCard]] information, for example, add the following parameter:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| bodyclass = vcard
</syntaxhighlight>{{clear}}
And for each row containing a data cell that's part of the vcard, add a corresponding class parameter:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| class1 = fn
| class2 = org
| class3 = tel
</syntaxhighlight>{{clear}}
...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox.
See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general.
== Examples ==
Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell :
{{Suppress categories|
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
}}
<syntaxhighlight lang="wikitext">
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
</syntaxhighlight>
For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels:
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
<syntaxhighlight lang="wikitext">
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
</syntaxhighlight>
== Embedding ==
<!--Linked from [[Template:Subinfobox bodystyle/doc]]-->
One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>.
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
or,
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number.
[[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes.
== Subboxes ==
An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table.
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
</syntaxhighlight>{{clear}}
Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) :
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
</syntaxhighlight>{{clear}}
Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes.
== Controlling line-breaking in embedded bulletless lists ==
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Full blank syntax ==
(Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.)
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| templatestyles =
| child templatestyles =
| grandchild templatestyles =
| bodystyle =
| titlestyle =
| abovestyle =
| subheaderstyle =
| title =
| above =
| subheader =
| imagestyle =
| captionstyle =
| image =
| caption =
| image2 =
| caption2 =
| headerstyle =
| labelstyle =
| datastyle =
| header1 =
| label1 =
| data1 =
| header2 =
| label2 =
| data2 =
| header3 =
| label3 =
| data3 =
| header4 =
| label4 =
| data4 =
| header5 =
| label5 =
| data5 =
| header6 =
| label6 =
| data6 =
| header7 =
| label7 =
| data7 =
| header8 =
| label8 =
| data8 =
| header9 =
| label9 =
| data9 =
| header10 =
| label10 =
| data10 =
| header11 =
| label11 =
| data11 =
| header12 =
| label12 =
| data12 =
| header13 =
| label13 =
| data13 =
| header14 =
| label14 =
| data14 =
| header15 =
| label15 =
| data15 =
| header16 =
| label16 =
| data16 =
| header17 =
| label17 =
| data17 =
| header18 =
| label18 =
| data18 =
| header19 =
| label19 =
| data19 =
| header20 =
| label20 =
| data20 =
| belowstyle =
| below =
}}
</syntaxhighlight>{{clear}}
{{Help:Infobox/user style}}
== Porting to other MediaWikis ==
The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"title": {
"label": "Title",
"description": "Title displayed above the infobox",
"type": "string",
"suggested": true
},
"image": {
"label": "Image",
"description": "Image illustrating the topic. Use full image syntax.",
"type": "content",
"suggested": true,
"example": "[[File:example.png|200px|alt=Example alt text]]"
},
"caption": {
"label": "Caption",
"description": "caption for the image",
"type": "content",
"suggested": true
}
},
"paramOrder": [
"title",
"image",
"caption"
]
}
</templatedata>
==Tracking categories==
* {{Category link with count|Articles with missing Wikidata information}}
* {{Category link with count|Articles using infobox templates with no data rows}}
* {{Category link with count|Pages using embedded infobox templates with the title parameter}}
==See also==
* [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based
* [[Module:Check for unknown parameters]]
* {{tl|Infobox3cols}}
* {{tl|Navbox}} and {{tl|Sidebar}}
* [[Wikipedia:List of infoboxes|List of infoboxes]]
* [[:Module:InfoboxImage]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates| ]]
[[Category:Wikipedia metatemplates|Infobox]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates based on the Infobox Lua module]]
}}</includeonly>
b7ba187ea76ee960bbe295ad01c44c646eaedadb
Module:Authority control/config
828
1076
2350
2023-09-11T08:49:27Z
wikipedia>MSGJ
0
update link for PLBABN and remove obsolete patterns from NLP
Scribunto
text/plain
require('strict')
local p = {}
p.auxiliary = 'Module:Authority control/auxiliary'
p.i18n = {
aclink = '[[Help:Authority control|Authority control databases]]',
ACmodule = 'Module:Authority control',
addtowd = 'Add values to Wikidata',
attentioncat = 'Pages with authority control identifiers needing attention',
All_articles = 'All articles',
allfaultycat = 'All articles with faulty authority control information',
Appears_as = 'Appears as', -- used on documentation table to show example
Articles = 'Articles',
autocollapse = 'autocollapse', -- Navbox state parameter
cat = 'Articles with %s identifiers',
category = 'Category',
Code = 'Code',
collapsed = 'collapsed', -- Navbox state parameter
connecttowd = 'Please connect this article to a Wikidata item.',
Description = 'Description',
errortemplate = 'Error', -- e.g. [[Template:Error]],
expanded = 'expanded', -- Navbox state parameter
faultcat = 'Articles with faulty authority control information',
Faults = 'Faults',
faulty = 'faulty',
identifier = 'identifier',
identifiers = 'identifiers',
idnotvalid = 'The %s identifier %s is not valid.',
linktemplate = 'Wikidata property link', -- refers to [[Template:Wikidata property link]]
localparams = 'Local parameters are deprecated.',
maincat = 'Articles with authority control information',
movetowd = 'Please move values to Wikidata.',
name = 'Authority control',
navbox = 'Module:Navbox',
pages = 'pages',
pageswithparams = 'Pages using authority control with parameters', -- name of category for tracking uses with parameters
previewwarning = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', -- preview message when local parameters are used
qidcode = 'Please use the <code>|qid=</code> parameter to specify the Wikidata item.',
sandbox = 'sandbox',
Section = 'Section',
suppressedcat = 'Articles with suppressed authority control identifiers',
testcases = 'testcases',
Topic = 'Topic',
Totals = 'Totals',
Tracking_category = 'Tracking category',
warning = 'Warning',
warningicon = '345-409 Ambox warning centered.svg', -- icon used for faulty ids
WDproperty = 'Wikidata property',
}
p.config = {
{ 'AAG',
property = 3372,
section = 5,
link = 'https://www.aucklandartgallery.com/explore-art-and-ideas/artist/$1/',
label = 'Auckland',
pattern = '%d+',
},
{ 'ACM-DL',
property = 864,
section = 4,
pattern = '%d%d%d%d%d%d%d%d%d%d%d',
link = 'https://dl.acm.org/profile/$1',
label = 'Association for Computing Machinery',
},
{ 'ADB',
property = 1907,
section = 6,
patterns = {'[a-z][-a-z]+-[1-3]%d%d?%d?%d?', '[a-z][-a-z]+-[1-9]%d?%d?%d?'},
link = 'http://adb.anu.edu.au/biography/$1',
label = 'Australia',
},
{ 'ADK',
property = 4114,
section = 5,
link = 'https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1',
label = 'ADK',
patterns = {'4999[6-9]', '5[0-4]%d%d%d', '55[0-6]%d%d', '5570%d', '5571[0-8]'}
},
{ 'admiralty',
property = 3562,
patterns = {'[A-Q]%d%d%d%d', '[A-Q]%d%d%d%d%.%d+'},
section = 3,
prefix = '[[Admiralty (identifier)|Admiralty]]'
},
{ 'AGSA',
property = 6804,
section = 5,
pattern = '[1-9]%d*',
link = 'https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/$1/',
label = 'South Australia',
},
{ 'ARLHS',
property = 2980,
section = 3,
pattern = '[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?',
link = 'http://wlol.arlhs.com/lighthouse/$1.html',
label = 'ARLHS',
},
{ 'autores.uy',
property = 2558,
section = 6,
pattern = '[1-9]%d?%d?%d?%d?',
link = 'https://autores.uy/autor/$1',
label = 'Uruguay',
remark = "autores.uy is an author's database, that focus on [[Uruguay]]an authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain."
},
{ 'AWR',
property = 4186,
section = 6,
patterns = {'[A-Z][A-Z][A-Z]%d%d%d%d[a-z]', '[A-Z][A-Z]%d%d%d%d%d[a-z]'},
link = 'http://www.womenaustralia.info/biogs/$1.htm',
label = 'Australian Women\'s Register',
},
{ 'BGCI',
property = 5818,
section = 3,
link = 'https://www.bgci.org/garden.php?id=$1',
label = 'BGCI garden',
pattern = '%d+'
},
{ 'BIBSYS',
property = 1015,
section = 2,
patterns = {'[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d'},
link = 'https://authority.bibsys.no/authority/rest/authorities/html/$1',
label = 'Norway',
remark = 'BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions.'
},
{ 'Bildindex',
property = 2092,
section = 7,
pattern = '%d+',
link = 'https://www.bildindex.de/document/obj$1',
label = 'Bildindex',
},
{ 'BMLO',
property = 865,
section = 6,
link = 'https://bmlo.de/$1',
label = 'BMLO',
pattern = '[a-z][0-9][0-9][0-9][0-9]'
},
{ 'BNC',
property = 1890,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number=$1',
label = 'Chile',
},
{ 'BNE',
property = 950,
section = 2,
patterns = {'[XF][XF]%d%d%d%d%d?%d?%d?', 'a%d%d%d%d%d?%d?%d?', 'bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d', 'Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d'},
link = 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=$1',
label = 'Spain',
remark = "National Library of Spain (BNE: ''Biblioteca Nacional de España'') is a major public library, the largest in Spain."
},
{ 'BNF',
property = 268,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]',
link = 'https://catalogue.bnf.fr/ark:/12148/cb$1',
label = 'France',
remark = 'Authority data of people listed in the general catalogue of the National Library of France'
},
{ 'BNFdata',
property = 268,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]',
link = 'https://data.bnf.fr/ark:/12148/cb$1',
label = 'BnF data'
},
{ 'BNMM',
property = 3788,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://catalogo.bn.gov.ar/F/?func=direct&local_base=BNA10&doc_number=$1',
label = 'Argentina',
},
{ 'Botanist',
property = 428,
section = 4,
valid = 'botanistV',
link = 'https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=$1',
label = 'International Plant Names Index',
remark = 'Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at [[International Plant Names Index]] (IPNI).'
},
{ 'BPN',
property = 651,
section = 6,
patterns = {'%d%d%d%d%d%d%d%d', '0?%d%d%d%d%d%d%d', '0?0?%d%d%d%d%d%d'},
link = 'http://www.biografischportaal.nl/en/persoon/$1',
label = 'Netherlands',
remark = 'Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands.'
},
{ 'BRAHMS artist',
property = 5226,
section = 5,
link = 'http://brahms.ircam.fr/$1',
label = 'BRAHMS',
pattern = '[a-z%-\\]+',
remark = 'Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM'
},
{ 'BRAHMS work',
property = 5302,
section = 7,
link = 'https://brahms.ircam.fr/works/work/$1/',
label = 'BRAHMS',
pattern = '[1-9]%d*',
remark = "Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM"
},
{ 'CANTICN',
property = 9984,
section = 2,
pattern = '981[0-1]%d%d%d%d%d%d%d%d%d06706',
link = 'https://cantic.bnc.cat/registre/$1',
label = 'Catalonia',
},
{ 'CCG',
property = 3920,
section = 3,
customlink = 'ccg',
remark = 'Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard.'
},
{ 'CINII',
property = 271,
section = 4,
pattern = 'D[AB]%d%d%d%d%d%d%d[%dX]',
link = 'https://ci.nii.ac.jp/author/$1?l=en',
label = 'CiNii',
remark = 'CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the [[National Institute of Informatics]].'
},
{ 'CWGC',
property = 1908,
section = 6,
pattern = '[1-9]%d*',
link = 'https://www.cwgc.org/find-war-dead/casualty/$1/',
label = 'Commonwealth War Graves Commission',
},
{ 'DAAO',
property = 1707,
section = 5,
pattern = '[a-z%-]+%d*',
link = 'https://www.daao.org.au/bio/$1',
label = 'Australian Artists',
},
{ 'Danish List of Lights and Fog signals',
property = 4038,
section = 3,
pattern = '[1-9]%d*[A-Za-z]?',
prefix = 'Denmark',
},
{ 'DB',
property = 8671,
section = 7,
label = 'Deutsche Bahn',
link = 'https://iris.noncd.db.de/wbt/js/index.html?bhf=$1&zeilen=50&seclang=en',
remark = 'Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn',
pattern = '[ABCDEFHIJKLMNOPQRSTUVWXYZ][A-Z0-9%s][A-Z0-9%s]?[A-Z0-9%s]?[A-Z0-9%s]?'
},
{ 'DBI',
property = 1986,
section = 6,
link = 'https://www.treccani.it/enciclopedia/$1_(Dizionario-Biografico)',
label = 'Italian People',
},
{ 'DBLP',
property = 2456,
section = 4,
patterns = {'%d%d%d?%/%d+-?[%d]*[%a]*-?[%d]*', '[%a]+%/[%w]*-?[%d]*'},
link = 'https://dblp.org/pid/$1',
label = 'DBLP',
},
{ 'Deutsche Synchronkartei',
property = 11646,
section = 6,
label = 'Deutsche Synchronkartei',
link = 'https://www.synchronkartei.de/person/$1',
remark = 'Online database of voice actors in film and television productions',
pattern = string.rep('[0-9a-zA-Z_-]',9)
},
{ 'DIB',
property = 6829,
section = 6,
pattern = '0[01]%d%d%d%d%.?[A-D]?',
link = 'https://doi.org/10.3318/dib.$1.v1',
label = 'Ireland',
},
{ 'DSI',
property = 2349,
section = 5,
pattern = '[1-9]%d*',
link = 'http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value=$1',
label = 'Scientific illustrators',
},
{ 'DTBIO',
property = 7902,
section = 6,
pattern = '1[0-9]%d%d%d%d%d%d%d?[0-9X]',
link = 'https://www.deutsche-biographie.de/pnd$1.html?language=en',
label = 'Deutsche Biographie',
},
{ 'EBIDAT',
property = 9725,
section = 3,
label = 'EBIDAT',
link = 'https://www.ebidat.de/cgi-bin/ebidat.pl?id=$1',
remark = 'Identifier for an entry in the castles inventory database EBIDAT',
pattern = '[1-9]%d?%d?%d?'
},
{ 'Emmy',
property = 8381,
section = 5,
link = 'https://www.emmys.com/bios/$1',
label = 'Emmy Awards'
},
{ 'EMU',
property = 4613,
section = 7,
pattern = '%d%d?%d?%d?%d?%d?',
link = 'http://esu.com.ua/search_articles.php?id=$1',
label = 'Encyclopedia of Modern Ukraine',
},
{ 'EUTA',
property = 4535,
section = 3,
label = 'EUTA theatre',
link = 'http://www.theatre-architecture.eu/db/?theatreId=$1',
pattern = '[1-9]%d*'
},
{ 'EUTA person',
property = 4534,
section = 6,
label = 'EUTA',
link = 'http://www.theatre-architecture.eu/db.html?personId=$1',
pattern = '[1-9]%d?%d?%d?%d?%d?%d?'
},
{ 'FAST',
property = 2163,
section = 1,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?',
link = 'http://id.worldcat.org/fast/$1/',
label = 'FAST',
},
{ 'Finnish List of Lights',
property = 4143,
section = 3,
pattern = '%d+',
prefix = 'Finland',
},
{ 'FNZA',
property = 6792,
section = 5,
pattern = '[1-9]%d*',
link = 'https://findnzartists.org.nz/artist/$1/',
label = 'New Zealand Artists',
},
{ 'GND',
property = 227,
section = 2,
patterns = {'1[0123]?%d%d%d%d%d%d%d[0-9X]', '[47]%d%d%d%d%d%d%-%d', '[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]', '3%d%d%d%d%d%d%d[0-9X]'},
link = 'https://d-nb.info/gnd/$1',
label = 'Germany',
remark = 'Authority data on people, corporations and subjects from the [[German National Library]] (DNB)'
},
{ 'Google Scholar',
property = 1960,
section = 4,
pattern = '[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]',
link = 'https://scholar.google.com/citations?user=$1',
label = 'Google Scholar',
},
{ 'Grammy',
property = 7303,
section = 5,
pattern = '%w[%w-]+%/%d+',
link = 'https://www.grammy.com/grammys/artists/$1',
label = 'Grammy Awards',
},
{ 'GVP',
property = 1886,
section = 3,
link = 'https://volcano.si.edu/volcano.cfm?vn=$1',
label = 'Global Volcanism Program',
pattern = '%d%d%d%d%d%d'
},
{ 'HDS',
property = 902,
section = 7,
pattern = '%d%d%d%d%d%d',
label = 'Historical Dictionary of Switzerland',
link = 'https://hls-dhs-dss.ch/fr/articles/$1',
remark = 'Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland.'
},
{ 'IAAF',
property = 1146,
section = 6,
pattern = '%d+',
link = 'https://www.iaaf.org/athletes/_/$1',
label = 'World Athletics',
remark = 'The IAAF athlete database lists information about [[sport of athletics]] competitors.'
},
{ 'ICCU',
property = 396,
section = 2,
pattern = '%u%u[%u0-3]V%d%d%d%d%d%d',
link = 'https://opac.sbn.it/nome/$1',
label = 'Italy',
remark = 'Central Institute for the Union Catalogue (ICCU: {{lang|it|Istituto Centrale per il Catalogo Unico}}) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service ({{lang|it|Servizio bibliotecario nazionale}}).'
},
{ 'ICIA',
property = 1736,
section = 5,
pattern = '%d+',
link = 'https://www.imj.org.il/artcenter/newsite/en/?artist=$1',
label = 'ICIA (Israel)',
},
{ 'IEU',
property = 9070,
section = 7,
pattern = '[A-Z]\\[A-Z]\\%w+',
link = 'http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\$1',
label = 'Internet Encyclopedia of Ukraine',
},
{ 'ISIL',
property = 791,
section = 6,
customlink = 'ISILlink',
remark = 'Libraries, museums and archives, decentralized national databases.'
},
{ 'ISNI',
property = 213,
section = 1,
label = 'ISNI',
valid = 'validateIsni',
link = 'https://isni.org/isni/$1',
remark = 'ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers.'
},
{ 'J9U',
property = 8189,
section = 2,
pattern = '9870[0-1]%d%d%d%d%d%d%d%d05171',
link = 'http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=$1',
label = 'Israel',
},
{ 'Joconde',
property = 347,
section = 7,
pattern = ''..string.rep('[%-0-9A-Za-z]', 11)..'',
link = 'https://www.pop.culture.gouv.fr/notice/joconde/$1',
label = 'Joconde',
},
{ 'KANTO',
property = 8980,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://urn.fi/URN:NBN:fi:au:finaf:$1',
label = 'Finland',
},
{ 'KBR',
property = 11249,
section = 2,
pattern = '%d%d%d%d%d%d%d%d',
link = 'https://opac.kbr.be/LIBRARY/doc/AUTHORITY/$1',
label = 'Belgium',
},
{ 'KULTURNAV',
property = 1248,
section = 5,
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'http://kulturnav.org/$1',
label = 'KulturNav',
remark = 'KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the [[Arts Council Norway]].'
},
{ 'LCCN',
property = 244,
section = 2,
pattern = '%l%l?%d%d%d%d%d%d%d%d%d?%d?',
link = 'https://id.loc.gov/authorities/$1',
label = 'United States',
remark = 'See [[Wikipedia:Authority control#LCCN]] for formatting instructions'
},
{ 'Leopoldina',
property = 10299,
section = 4,
link = 'https://www.leopoldina.org/mitgliederverzeichnis/mitglieder/member/Member/show/$1/',
label = 'Leopoldina',
pattern = '[%-a-z]+%d?'
},
{ 'LexM',
property = 9692,
section = 5,
link = 'https://www.lexm.uni-hamburg.de/object/lexm_lexmperson_$1',
label = 'LexM',
remark = 'Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit',
pattern = '%d%d%d%d%d%d%d%d'
},
{ 'Libris',
property = 5587,
section = 2,
pattern = '%w+',
link = 'https://libris.kb.se/$1',
label = 'Sweden'
},
{ 'LIR',
property = 886,
section = 7,
pattern = '%d+',
link = 'http://www.e-lir.ch/e-LIR___Lexicon.$1.450.0.html',
label = 'Lexicon Istoric Retic',
remark = '{{lang|rm|Lexicon Istoric Retic}} (LIR) is a two volume version with a selection of articles published in Romansh.'
},
{ 'LNB',
property = 1368,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=$1&P_CON_LNG=ENG',
label = 'Latvia',
},
{ 'Marina Militare',
property = 3863,
section = 3,
pattern = '[1-9]%d*',
link = 'http://www.marina.difesa.it/cosa-facciamo/per-la-difesa-sicurezza/fari/Pagine/$1.aspx',
label = 'Italy',
},
{ 'MarineTraffic',
property = 3601,
section = 3,
pattern = '%d%d%d%d%d%d%d%d%d%d',
link = 'https://www.marinetraffic.com/en/ais/details/lights/$1',
label = 'MarineTraffic',
},
{ 'MATHSN',
property = 4955,
section = 4,
pattern = '[1-9]%d%d%d%d%d?%d?',
link = 'https://mathscinet.ams.org/mathscinet/MRAuthorID/$1',
label = 'MathSciNet',
},
{ 'MBA',
property = 434,
section = 5,
category = 'MusicBrainz',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/artist/$1',
label = 'MusicBrainz',
remark = 'MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.'
},
{ 'MBAREA',
property = 982,
section = 3,
category = 'MusicBrainz area',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/area/$1',
label = 'MusicBrainz area',
},
{ 'MBI',
property = 1330,
section = 7,
category = 'MusicBrainz instrument',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/instrument/$1',
label = 'MusicBrainz instrument',
},
{ 'MBL',
property = 966,
section = 7,
category = 'MusicBrainz label',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
label = 'MusicBrainz label',
link = 'https://musicbrainz.org/label/$1',
},
{ 'MBP',
property = 1004,
section = 3,
category = 'MusicBrainz place',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/place/$1',
label = 'MusicBrainz place',
},
{ 'MBRG',
property = 436,
section = 7,
category = 'MusicBrainz release group',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/release-group/$1',
label = 'MusicBrainz release group',
},
{ 'MBS',
property = 1407,
section = 7,
category = 'MusicBrainz series',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/series/$1',
label = 'MusicBrainz series',
},
{ 'MBW',
property = 435,
section = 7,
category = 'MusicBrainz work',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/work/$1',
label = 'MusicBrainz work',
},
{ 'Mérimée',
property = 380,
section = 3,
link = 'https://www.pop.culture.gouv.fr/notice/merimee/$1',
label = 'Mérimée',
patterns = {'[PEI]A%d[0-9AB]%d%d%d%d%d%d','ACR%d%d%d%d%d%d%d', 'MI%d%d%dB?', 'JAR%d%d%d%d%d%d%d', 'SPR%d%d%d%d%d%d%d'}
},
{ 'MGP',
property = 549,
section = 4,
pattern = '%d%d?%d?%d?%d?%d?',
link = 'https://www.mathgenealogy.org/id.php?id=$1',
label = 'Mathematics Genealogy Project',
remark = 'Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians.'
},
{ 'MoMA',
property = 2174,
section = 5,
link = 'https://www.moma.org/artists/$1',
label = 'Museum of Modern Art',
pattern = '%d+'
},
{ 'Musée d\'Orsay',
property = 2268,
section = 5,
link = 'https://www.musee-orsay.fr/en/ressources/repertoire-artistes-personnalites/$1',
label = 'Musée d\'Orsay',
pattern = '[1-9]%d?%d?%d?%d?%d?'
},
{ 'NARA',
property = 1225,
section = 7,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://catalog.archives.gov/id/$1',
label = 'NARA',
remark = 'National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records.'
},
{ 'National Gallery of Canada',
property = 5368,
section = 5,
label = 'National Gallery of Canada',
link = 'https://www.gallery.ca/collection/artist/$1',
pattern = '%C+'
},
{ 'NCL',
property = 1048,
section = 2,
pattern = '%d+',
link = 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=$1&CON_LNG=ENG',
label = 'Taiwan',
remark = 'National Central Library is the national library of Taiwan, Republic of China.'
},
{ 'NDL',
property = 349,
section = 2,
link = 'https://id.ndl.go.jp/auth/ndlna/$1',
patterns = {'a1%d?%d%d%d%d%d%d%d%d', 's?%d?%d%d%d%d%d%d%d%d'},
label = 'Japan',
remark = 'Authority data listed in the catalog of the national library of Japan. Search also available via [http://viaf.org/ VIAF].'
},
{ 'NGA',
property = 3563,
section = 3,
pattern = '11[0-6]%-%d+%.?%d*',
link = 'https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id=$1',
label = 'NGA',
},
{ 'NGV',
property = 2041,
section = 5,
pattern = '%d+',
link = 'https://www.ngv.vic.gov.au/explore/collection/artist/$1/',
label = 'Victoria',
},
{ 'NKC',
property = 691,
section = 2,
pattern = '[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=$1&CON_LNG=ENG',
label = 'Czech Republic',
remark = 'National Library of the Czech Republic ({{lang|cs|Národní knihovna České republiky}}) is the central library of the Czech Republic.'
},
{ 'NLA',
property = 409,
section = 2,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://nla.gov.au/anbd.aut-an$1',
label = 'Australia',
remark = "NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via [http://viaf.org/ VIAF]."
},
{ 'NLG',
property = 3348,
section = 2,
pattern = '[1-9]%d*',
link = 'https://data.nlg.gr/resource/authority/record$1',
label = 'Greece',
},
{ 'NLK',
property = 5034,
section = 2,
link = 'https://lod.nl.go.kr/resource/$1',
label = 'Korea',
patterns = {'%u%u%u%d%d%d%d%a?%d%d%d%d%d?%d?', 'CNTS%-%d%d%d%d%d%d%d%d%d%d%d'}
},
{ 'NLR',
property = 1003,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number=$1',
label = 'Romania',
},
{ 'Norwegian List of Lights',
property = 4055,
section = 3,
pattern = '%d+',
prefix = 'Norway',
},
{ 'NSK',
property = 1375,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://katalog.nsk.hr/F/?func=direct&doc_number=$1&local_base=nsk10',
label = 'Croatia',
},
{ 'NTA',
property = 1006,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[%dX]',
link = 'http://data.bibliotheken.nl/id/thes/p$1',
label = 'Netherlands',
},
{ 'Online List of Lights',
property = 3223,
section = 3,
pattern = '[1-9]%d*',
label = 'OLL',
link = 'http://listoflights.org/leuchtfeuer/detail?id=$1.aspx'
},
{ 'ORCID',
property = 496,
section = 4,
label = 'ORCID',
valid = 'orcidV',
link = 'https://orcid.org/$1',
remark = 'Authority data on researchers, academics, etc. The ID range is a subset of the [[ISNI]] range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{tl|ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at [https://orcid.org/register orcid.org/register]. Please take care not to confuse ORCID and ISNI identifiers.'
},
{ 'PIC',
property = 2750,
section = 5,
pattern = '[1-9]%d*',
link = 'https://pic.nypl.org/constituents/$1',
label = 'Photographers\' Identities',
remark = "PIC is a photographer's database. It is maintained by the New York Public Library."
},
{ 'Pleiades',
property = 1584,
section = 3,
label = 'Pleiades',
link = 'https://pleiades.stoa.org/places/$1',
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?',
remark = "Pleiades is a joint project of the Institute for the Study of the Ancient World at [[New York University]] and the Ancient World Mapping Center at the [[University of North Carolina]] at Chapel Hill."
},
{ 'PLWABN',
property = 7293,
section = 2,
pattern = '981%d%d%d%d%d%d%d%d05606*',
link = 'https://dbn.bn.org.pl/descriptor-details/$1',
label = 'Poland',
},
{ 'PortugalA',
property = 1005,
section = 2,
pattern = '[1-9]%d*',
link = 'http://id.bnportugal.gov.pt/aut/catbnp/$1',
label = 'Portugal',
},
{ 'Portuguese lighthouse',
property = 4423,
section = 3,
patterns = {'[1-9]%d*', '[1-9]%d*.%d+'},
prefix = 'Portugal',
},
{ 'NLP',
property = 1695,
section = 2,
pattern = 'a%d%d%d%d%d%d%d%d%d%d%d%d%d',
link = 'https://dbn.bn.org.pl/descriptor-details/$1',
label = 'Poland',
suppressedbyproperty = {7293}
},
{ 'PhilPeople',
property = 3233,
section = 4,
link = 'https://philpeople.org/profiles/$1',
label = 'PhilPeople',
patterns = {'[a-z%-]+', '[a-z%-]+%-%d'}
},
{ 'Prado',
property = 5321,
section = 5,
link = 'https://www.museodelprado.es/en/the-collection/artist/wd/$1',
label = 'Prado',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x'
},
{ 'Publons',
property = 3829,
section = 4,
pattern = '%d+',
link = 'https://publons.com/author/$1/',
label = 'Publons'
},
{ 'RID',
property = 1053,
section = 4,
patterns = {'[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d', '[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d'},
link = 'https://www.researcherid.com/rid/$1',
label = 'ResearcherID',
remark = 'An identifying system for scientific authors. The system was introduced in January 2008 by [[Thomson Reuters]]. The combined use of the [[digital object identifier]] with the ResearcherID allows for a unique association of authors and scientific articles.'
},
{ 'RISM',
property = 5504,
section = 7,
label = 'RISM',
patterns = {'pe[1-9]%d*', 'ks[1-9]%d*', '[1-9]%d*'},
link = 'https://opac.rism.info/search?id=$1',
},
{ 'RKDartists',
property = 650,
section = 5,
pattern = '[1-9]%d?%d?%d?%d?%d?',
link = 'https://rkd.nl/en/explore/artists/$1',
label = 'RKD Artists',
remark = 'RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).'
},
{ 'RKDID',
property = 350,
section = 7,
pattern = '[1-9]%d?%d?%d?%d?%d?',
link = 'https://rkd.nl/nl/explore/images/$1',
label = 'RKD ID',
},
{ 'RSL',
property = 947,
section = 2,
pattern = '%d%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=$1&CON_LNG=ENG',
label = 'Russia',
remark = 'Russian State Library ({{lang|ru|Российская государственная библиотека}}) is the national library of Russia.'
},
{ 'Scopus',
property = 1153,
section = 4,
pattern = '[1-9]%d%d%d%d%d%d%d%d%d%d?',
link = 'https://www.scopus.com/authid/detail.uri?authorId=$1',
label = 'Scopus',
remark = 'SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities).'
},
{ 'SELIBR',
property = 906,
section = 2,
pattern = '[1-9]%d%d%d%d%d?',
link = 'https://libris.kb.se/auth/$1',
label = 'Sweden',
remark = 'Authority data from the [[National Library of Sweden]]',
suppressedbyproperty = {5587}
},
{ 'SIKART',
property = 781,
section = 5,
pattern = '%d%d%d%d%d%d%d%d?%d?',
link = 'http://www.sikart.ch/KuenstlerInnen.aspx?id=$1&lng=en',
label = 'SIKART',
remark = 'SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR).'
},
{ 'SNAC-ID',
property = 3430,
section = 7,
pattern = '%d*[A-Za-z][0-9A-Za-z]*',
link = 'https://snaccooperative.org/ark:/99166/$1',
label = 'SNAC',
},
{ 'Städel',
property = 4581,
section = 5,
label = 'Städel',
link = 'https://sammlung.staedelmuseum.de/en/person/$1',
pattern = '%C+'
},
{ 'StadiumDB',
property = 5288,
section = 3,
label = 'StadiumDB',
link = 'http://stadiumdb.com/stadiums/$1',
pattern = '%l%l%l/[_%w]+'
},
{ 'Structurae structure',
property = 454,
section = 3,
pattern = '[12]0%d%d%d%d%d%d',
label = 'Structurae',
link = 'https://structurae.net/structures/$1',
},
{ 'Structurae person',
property = 2418,
section = 6,
pattern = '10%d%d%d%d%d',
label = 'Structurae',
link = 'https://structurae.net/persons/$1',
},
{ 'SUDOC',
property = 269,
section = 7,
label = 'IdRef',
pattern = '%d%d%d%d%d%d%d%d[%dxX]',
link = 'https://www.idref.fr/$1',
remark = 'Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from [http://www.sudoc.abes.fr/xslt//DB=2.1/SET=2/TTL=1/LNG=EN/ English-speaking catalog] (search author, click one book, click author name, take PPN= value of the URL)'
},
{ 'Sycomore',
property = 1045,
section = 6,
link = 'https://www2.assemblee-nationale.fr/sycomore/fiche/(num_dept)/$1',
label = 'Sycomore',
pattern = '[1-9]%d?%d?%d?%d?'
},
{ 'TA98',
property = 1323,
section = 7,
pattern = 'A%d%d%.%d%.%d%d%.%d%d%d[FM]?',
link = 'http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id=$1',
label = 'Terminologia Anatomica',
},
{ 'TDVİA',
property = 7314,
section = 7,
pattern = '[%d%l/-]+',
link = 'https://islamansiklopedisi.org.tr/$1',
label = 'İslâm Ansiklopedisi',
},
{ 'TePapa',
property = 3544,
section = 5,
pattern = '%d+',
link = 'https://collections.tepapa.govt.nz/agent/$1',
label = 'Te Papa (New Zealand)'
},
{ 'TLS',
property = 1362,
section = 7,
valid = 'tlsV',
link = 'http://tls.theaterwissenschaft.ch/wiki/$1',
label = 'Theaterlexikon',
remark = '{{lang|de|Theaterlexikon der Schweiz}} (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the [[University of Berne]].'
},
{ 'Trove',
property = 1315,
section = 6,
label = 'Trove',
pattern = '[1-9]%d%d%d%d%d%d?%d?',
link = 'https://trove.nla.gov.au/people/$1',
},
{ 'UKPARL',
property = 6213,
section = 6,
pattern = '[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]',
link = 'https://id.parliament.uk/$1',
label = 'UK Parliament',
remark = 'UK parliament member data'
},
{ 'ULAN',
property = 245,
section = 5,
pattern = '500%d%d%d%d%d%d',
link = 'https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=$1',
label = 'ULAN',
remark = 'ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).'
},
{ 'USCG',
property = 3723,
section = 3,
prefix = '[[USCG (identifier)|USCG]]',
customlink = 'uscgLink'
},
{ 'USCongress',
property = 1157,
section = 6,
pattern = '[A-Z]00[01]%d%d%d',
link = 'http://bioguide.congress.gov/scripts/biodisplay.pl?index=$1',
label = 'US Congress',
remark = 'Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico.'
},
{ 'VcBA',
property = 8034,
section = 2,
pattern = '49[0-9]%/[1-9][0-9]?[0-9]?[0-9]?[0-9]?[0-9]?',
link = 'https://wikidata-externalid-url.toolforge.org/?p=8034&url_prefix=https://opac.vatlib.it/auth/detail/&id=$1',
label = 'Vatican',
remark = 'Vatican Library document data'
},
{ 'VIAF',
property = 214,
section = 1,
label = 'VIAF',
patterns = {'[1-9]%d%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?'},
link = 'https://viaf.org/viaf/$1',
remark = 'International authority data from the Online Computer Library Center (OCLC)'
},
{ 'Vitaskrá',
property = 3993,
section = 3,
pattern = '[1-9]%d*',
prefix = 'Iceland'
},
{ 'WorldCat Entities',
property = 10832,
section = 1,
link = 'https://id.oclc.org/worldcat/entity/$1',
label = 'WorldCat',
patterns = {'%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w', '[QP][1-9]%d*'},
remark = 'WorldCat Entities for persons and works, by [[OCLC]]',
},
{ 'World Waterfall',
property = 3326,
section = 3,
link = 'https://www.worldwaterfalldatabase.com/index.php/waterfall/$1',
label = 'World Waterfall',
pattern = '%d+'
},
{ 'ZBMATH',
property = 1556,
section = 4,
patterns = {'%l[%l%-]*','%l[%l%-]*%.%l[%l%-]*','%l[%l%-]*.%d*','%l[%l%-]*%.%l[%l%-]*%.%d*'},
link = 'https://zbmath.org/authors/?q=ai:$1',
label = 'zbMATH',
}
}
p.sections = {
[1] = {name = 'International', hidelabelwhenalone = true},
[2] = {name = 'National'},
[3] = {name = 'Geographic'},
[4] = {name = 'Academics'},
[5] = {name = 'Artists'},
[6] = {name = 'People'},
[7] = {name = 'Other', hidelabelwhenalone = true}
}
p.whitelists = {
arts = {
topic = 2018526,
properties = {268, 214, 7859, 3372, 6804, 1907, 4186, 2092, 1908, 1707, 6829, 2349, 6792, 227, 1960, 347, 1248, 244, 1225, 2041, 409, 2750, 650, 350, 781, 3430, 3544, 1315, 245, 1986, 7902, 651, 791, 7303}
},
lighthouse = {
topic = 39715,
properties = {3563, 4055, 3223, 4423, 3723, 3993, 3562, 2980, 4038, 3920, 4143, 3863, 3601}
},
ch = {
topic = 39,
properties = {902, 886, 3065, 781, 1362},
},
cz = {topic = 213, properties = {691}},
cl = {topic = 298, properties = {1890}},
es = {topic = 29, properties = {950, 9984}},
gr = {topic = 41, properties = {3348}},
hr = {topic = 224, properties = {1375}},
il = {topic = 801, properties = {8189, 1736}},
it = {topic = 38, properties = {396, 3863, 1986, 8034}},
ja = {topic = 17, properties = {349, 271}},
kr = {topic = 884, properties = {5034}},
lv = {topic = 211, properties = {1368}},
nl = {topic = 55, properties = {651, 1006, 650, 350}},
pl = {topic = 36, properties = {1695, 7293}},
ro = {topic = 218, properties = {1003}},
ru = {topic = 159, properties = {947}},
sv = {topic = 34, properties = {906, 5587}},
tr = {topic = 43, properties = {7314}},
tw = {topic = 865, properties = {1048}},
uy = {topic = 77, properties = {2558}}
}
p.auto_additional = { -- defines properties to check when additional=auto
527, -- has part(s)
150, -- contains the administrative territorial entity
355, -- has subsidiary
}
return p
9ae0144b113daabc4b65bcd79ccd0ae3152eea27
Template:Authority control/doc
10
1075
2348
2023-09-12T15:05:58Z
wikipedia>Tholme
0
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Template display|nomobile}}
{{Lua|Module:Authority control|Module:Authority control/config|Module:Check for unknown parameters}}
{{Uses Wikidata|section=Wikidata}}
{{Authority control/related}}
{{TOC right}}
== Description ==
{{details|Authority control|Wikipedia:Authority control}}
This template links Wikipedia articles to various library (and other) catalogue systems, for biographies and other topics.
This template draws its values from [[Wikidata]]. A pencil icon [[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px]] gives convenient access to the "Identifiers" section of the corresponding Wikidata item.
=== Empty instances ===
If there is no information in Wikidata for the specific subject, an empty instance of this template will be ''dormant'', meaning it will be invisible on the rendered page. Thus, using this template on a page with no authority information is harmless. An empty instance of this template stays dormant in an article, until values are added to Wikidata, when it will then display them.
=== Validation ===
The template attempts to validate digits for all values and shows an error if the check fails.
<!--Wherever possible, the template also generates a link to [[WorldCat Identities]], using VIAF or LCCN values, or manually via {{para|WORLDCATID}}.-->
=== Position ===
{{See also|Wikipedia:Manual of Style/Layout#Standard appendices and footers{{!}}Wikipedia:Manual of Style/Layout}}
As a metadata template, the Authority control template should be placed on a new line, after the [[Wikipedia:External links|external links]] section and [[Wikipedia:Navigation templates|navigation templates]], immediately before the categories.
==Usage==
:{{kbd|<nowiki>{{Authority control}}</nowiki>}}
As a general guideline:
# Insert the empty version
# Click "[[Help:Show preview|Show preview]]" to see which sources are automatically pulled from Wikidata
# If you know of more sources, add those sources to the article's [[WP:Wikidata#Access from Wikipedia|Wikidata item]], so that other language versions of Wikipedia will automatically benefit.
=== Suppression of identifiers ===
Identifiers can be selectively suppressed via the {{para|suppress}} parameter. For example {{Q|P434}} can be suppressed by typing:
:{{kbd|<nowiki>{{Authority control |suppress=P434}}</nowiki>}}
=== Specifying the Wikidata item ===
If a page is not connected to a Wikidata item (for example, a page in draft space, user space or project space), you can specify the appropriate item to draw data from, by using the {{para|qid}} parameter.
:{{kbd|<nowiki>{{Authority control |qid=Q49605590}}</nowiki>}}
To find the correct item, you can [[wikidata:Special:Search|search the database]]. If there is not yet an existing item, you can [[wikidata:Special:NewItem|create a new item]].
As soon as the page is connected to a Wikidata item, this parameter will be ignored so you can remove it from the template.
=== Additional Wikidata items ===
In some cases, you might need to specify additional items to draw data from. For example,
* [[Bonnie and Clyde]] also draws data from {{Q|Q2319886}} and {{Q|Q3320282}}
* [[North Rona]] also draws data from {{Q|Q28831543}}
To specify additional items, you can use the {{para|additional}} parameter. For example:
{{kbd|<nowiki>{{Authority control | additional = Q2319886, Q3320282}}</nowiki>}}
To automatically add additional links from related items, use {{para|additional|auto}}. This is useful for married couples, musical groups, etc.
=== Whitelists ===
A number of whitelists are configured, which allow only a limited selection of identifiers to be displayed. These can be used with the {{para|show}} parameter. For example, including {{para|show|arts}} will only show identifiers which have identified as particularly relevant to the arts.
Multiple whitelists may be used. For example:
{{kbd|<nowiki>{{Authority control|show=arts,SV}}</nowiki>}} adds identifiers from the arts and Sweden whitelists.
{{para|country}} can be used as an alias for {{para|show}} (but they can't both be used simultaneously).
{{collapse|{{#invoke:Authority control/documentation|whitelisttable}}|List of whitelists}}
==Examples==
;[[Victor Hugo]]
<kbd><nowiki>{{Authority control |qid=Q535}}</nowiki></kbd>
{{Authority control |qid=Q535}}
;[[Alexander Graham Bell]]
<kbd><nowiki>{{Authority control |qid=Q34286}}</nowiki></kbd>
{{Authority control |qid=Q34286}}
;[[Harry Forbes Witherby]]:
<kbd><nowiki>{{Authority control |qid=Q352545}}</nowiki></kbd>
{{Authority control |qid=Q352545}}
;[[Carl Larsson]]:
<kbd><nowiki>{{Authority control (arts) |country=SV |qid=Q187310}}</nowiki></kbd>
{{Authority control (arts) |country=SV |qid=Q187310}}
== Rendering ==
The template is split into a number of sections, including "International", "National", "Academics", "Artists" etc. The template usually displays as a navbox with a header:
{{Authority control |qid=Q921242}}
If all identifiers are in the same section, {{para|state}} is ignored, and the template displays on one line.
If you use additional qids to draw data from additional wikidata items, then a new section will be added for each. In this case, the identifiers will not be separated further:
{{Authority control |qid=Q219937|additional=Q2319886,Q3320282}}
{{collapsible option}}
{{Anchor|Wikidata|Tracking categories}}
=== Microformat ===
The template wraps each UID value with the [[HTML]] markup: <code><nowiki><span class="uid">...</span></nowiki></code>, which enables the first-found value to be included in an [[hCard]] [[microformat]].
== List of identifiers ==
{{#ifexpr:{{PAGESINCAT:All articles with faulty authority control information}}|{{error|Warning: {{plural|{{PAGESINCAT:All articles with faulty authority control information}}|article has|articles have}} faulty authority control information}}, see [[:Category:All articles with faulty authority control information|All articles with faulty authority control information]].}}
The template gets its information from the following properties on [[Wikidata]]:
{{#invoke:Authority control/documentation{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}|docConfTable|config={{#switch:{{SUBPAGENAME}}|sandbox=sandbox|staging=staging}}}}
== Additional tracking categories ==
This template may add the following categories:
* {{Category link with count|Pages with authority control identifiers needing attention|pages}} – category to track errors
** {{Category link with count|Pages using authority control with parameters}} – identifiers should be migrated to Wikidata
** {{Category link with count|All articles with faulty authority control information}} – faulty identifiers to fix
=== Error reports ===
{{Template error report}}
==See also==
* [[Wikipedia:Authority control]] – editor information
* [[Help:Authority control]] – reader help
* [[Template:Taxonbar]] – authority control style template for taxonomic databases
* [[Template:Sports links]] – authority control style template for sports articles
* [[User:UBX/Authority control]] – for self-identifying as an AC user
* [[:Commons:Template:Authority control]] – template on Commons
== TemplateData ==
{{TemplateDataHeader}}
<templatedata>
{
"description": "A template to link Wikipedia articles to various library catalogue systems",
"params": {
"state": {
"description": "Initial state of the template",
"type": "string",
"suggestedvalues": [
"autocollapse",
"expanded",
"collapsed"
],
"default": "autocollapse"
},
"qid": {
"label": "qid",
"description": "Wikidata QID number for an article not yet connected to a Wikidata item. Once the article is connected to a Wikidata item, then this parameter will be ignored.",
"example": "Q49605590",
"type": "string"
},
"suppress": {
"description": "Comma-separated list of identifers to suppress from the template, in the form of the Wikidata property ID (e.g. P227),",
"example": "P227, P1986",
"type": "string"
},
"additional": {
"description": "Comma-seprated list of additional Wikidata QIDs of items to display data for. Each should be related and covered by the article.",
"type": "string",
"example": "Q28831543"
},
"show": {
"aliases": [
"country"
],
"label": "whitelist",
"example": "ES",
"type": "string",
"suggestedvalues": [
"arts"
],
"suggested": true,
"description": "Whitelist (e.g. arts) or country code (e.g. ES) or property (e.g. P214) to show. If not specified, then every supported identifier will be displayed."
}
},
"format": "\n{{_|_=_}}\n",
"paramOrder": [
"show",
"suppress",
"qid",
"additional",
"state"
]
}
</templatedata>
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Wikipedia authority control]]
[[Category:Templates using data from Wikidata]]
[[Category:Templates that add a tracking category]]
[[Category:External link templates using Wikidata]]
}}</includeonly>
d58567c78dce9fd58e573d100f1f9ec327aef132
Module:Unicode data
828
459
1031
2023-09-12T16:56:59Z
wikipedia>Drmccreedy
0
Add new block for Unicode v15.1
Scribunto
text/plain
local p = {}
local floor = math.floor
local function errorf(level, ...)
if type(level) == "number" then
return error(string.format(...), level + 1)
else -- level is actually the format string.
return error(string.format(level, ...), 2)
end
end
local function binary_range_search(codepoint, ranges)
local low, mid, high
low, high = 1, ranges.length or require "Module:TableTools".length(ranges)
while low <= high do
mid = floor((low + high) / 2)
local range = ranges[mid]
if codepoint < range[1] then
high = mid - 1
elseif codepoint <= range[2] then
return range, mid
else
low = mid + 1
end
end
return nil, mid
end
p.binary_range_search = binary_range_search
--[[
local function linear_range_search(codepoint, ranges)
for i, range in ipairs(ranges) do
if range[1] <= codepoint and codepoint <= range[2] then
return range
end
end
end
--]]
-- Load a module by indexing "loader" with the name of the module minus the
-- "Module:Unicode data/" part. For instance, loader.blocks returns
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be
-- returned.
local loader = setmetatable({}, {
__index = function (self, key)
local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key)
if not success then
data = false
end
self[key] = data
return data
end
})
-- For the algorithm used to generate Hangul Syllable names,
-- see "Hangul Syllable Name Generation" in section 3.12 of the
-- Unicode Specification:
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf
local name_hooks = {
{ 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters
{ 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters
{ 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A
{ 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph
{ 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables
local Hangul_data = loader.Hangul
local syllable_index = codepoint - 0xAC00
return ("HANGUL SYLLABLE %s%s%s"):format(
Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],
Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)
/ Hangul_data.trail_count)],
Hangul_data.trails[syllable_index % Hangul_data.trail_count]
)
end },
-- High Surrogates, High Private Use Surrogates, Low Surrogates
{ 0xD800, 0xDFFF, "<surrogate-%04X>" },
{ 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use
-- CJK Compatibility Ideographs
{ 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph
{ 0x18800, 0x18AFF, function (codepoint)
return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF)
end },
{ 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement
{ 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu
{ 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B
{ 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C
{ 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D
{ 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E
{ 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F
-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)
{ 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement
return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17)
end},
{ 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G
{ 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H
{ 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I
{ 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use
{ 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use
}
name_hooks.length = #name_hooks
local name_range_cache
local function generate_name(data, codepoint)
if type(data) == "string" then
return data:format(codepoint)
else
return data(codepoint)
end
end
--[[
-- Checks that the code point is a number and in range.
-- Does not check whether code point is an integer.
-- Not used
local function check_codepoint(funcName, argIdx, val)
require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')
if codepoint < 0 or 0x10FFFF < codepoint then
errorf("Codepoint %04X out of range", codepoint)
end
end
--]]
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8
function p.lookup_name(codepoint)
-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned
-- (Cn) and specifically noncharacters:
-- https://www.unicode.org/faq/private_use.html#nonchar4
if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF
or floor(codepoint % 0x10000) >= 0xFFFE) then
return ("<noncharacter-%04X>"):format(codepoint)
end
if name_range_cache -- Check if previously used "name hook" applies to this code point.
and codepoint >= name_range_cache[1]
and codepoint <= name_range_cache[2] then
return generate_name(name_range_cache[3], codepoint)
end
local range = binary_range_search(codepoint, name_hooks)
if range then
name_range_cache = range
return generate_name(range[3], codepoint)
end
local data = loader[('names/%03X'):format(codepoint / 0x1000)]
if data and data[codepoint] then
return data[codepoint]
-- Unassigned (Cn) consists of noncharacters and reserved characters.
-- The character has been established not to be a noncharacter,
-- and if it were assigned, its name would already been retrieved,
-- so it must be reserved.
else
return ("<reserved-%04X>"):format(codepoint)
end
end
--[[
-- No image data modules on Wikipedia yet.
function p.lookup_image(codepoint)
local data = loader[('images/%03X'):format(codepoint / 0x1000)]
if data then
return data[codepoint]
end
end
--]]
local planes = {
[ 0] = "Basic Multilingual Plane";
[ 1] = "Supplementary Multilingual Plane";
[ 2] = "Supplementary Ideographic Plane";
[ 3] = "Tertiary Ideographic Plane";
[14] = "Supplementary Special-purpose Plane";
[15] = "Supplementary Private Use Area-A";
[16] = "Supplementary Private Use Area-B";
}
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.
local blocks
local function block_iter(blocks, i)
i = i + 1
local data = blocks[i]
if data then
-- Unpack doesn't work on tables loaded with mw.loadData.
return i, data[1], data[2], data[3]
end
end
-- An ipairs-type iterator generator for the list of blocks.
function p.enum_blocks()
local blocks = loader.blocks
return block_iter, blocks, 0
end
function p.lookup_plane(codepoint)
local i = floor(codepoint / 0x10000)
return planes[i] or ("Plane %u"):format(i)
end
function p.lookup_block(codepoint)
local blocks = loader.blocks
local range = binary_range_search(codepoint, blocks)
if range then
return range[3]
else
return "No Block"
end
end
function p.get_block_info(name)
for i, block in ipairs(loader.blocks) do
if block[3] == name then
return block
end
end
end
function p.is_valid_pagename(pagename)
local has_nonws = false
for cp in mw.ustring.gcodepoint(pagename) do
if (cp == 0x0023) -- #
or (cp == 0x005B) -- [
or (cp == 0x005D) -- ]
or (cp == 0x007B) -- {
or (cp == 0x007C) -- |
or (cp == 0x007D) -- }
or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR
or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block
or (cp == 0xFFFD) -- REPLACEMENT CHARACTER
then
return false
end
local printable, result = p.is_printable(cp)
if not printable then
return false
end
if result ~= "space-separator" then
has_nonws = true
end
end
return has_nonws
end
local function manual_unpack(what, from)
if what[from + 1] == nil then
return what[from]
end
local result = {}
from = from or 1
for i, item in ipairs(what) do
if i >= from then
table.insert(result, item)
end
end
return unpack(result)
end
local function compare_ranges(range1, range2)
return range1[1] < range2[1]
end
-- Creates a function to look up data in a module that contains "singles" (a
-- code point-to-data map) and "ranges" (an array containing arrays that contain
-- the low and high code points of a range and the data associated with that
-- range).
-- "loader" loads and returns the "singles" and "ranges" tables.
-- "match_func" is passed the code point and either the data or the "dots", and
-- generates the final result of the function.
-- The varargs ("dots") describes the default data to be returned if there wasn't
-- a match.
-- In case the function is used more than once, "cache" saves ranges that have
-- already been found to match, or a range whose data is the default if there
-- was no match.
local function memo_lookup(data_module_subpage, match_func, ...)
local dots = { ... }
local cache = {}
local singles, ranges
return function (codepoint)
if not singles then
local data_module = loader[data_module_subpage]
singles, ranges = data_module.singles, data_module.ranges
end
if singles[codepoint] then
return match_func(codepoint, singles[codepoint])
end
local range = binary_range_search(codepoint, cache)
if range then
return match_func(codepoint, manual_unpack(range, 3))
end
local range, index = binary_range_search(codepoint, ranges)
if range then
table.insert(cache, range)
table.sort(cache, compare_ranges)
return match_func(codepoint, manual_unpack(range, 3))
end
if ranges[index] then
local dots_range
if codepoint > ranges[index][2] then
dots_range = {
ranges[index][2] + 1,
ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,
unpack(dots)
}
else -- codepoint < range[index][1]
dots_range = {
ranges[index - 1] and ranges[index - 1][2] + 1 or 0,
ranges[index][1] - 1,
unpack(dots)
}
end
table.sort(cache, compare_ranges)
end
return match_func(codepoint)
end
end
-- Get a code point's combining class value in [[Module:Unicode data/combining]],
-- and return whether this value is not zero. Zero is assigned as the default
-- if the combining class value is not found in this data module.
-- That is, return true if character is combining, or false if it is not.
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for
-- more information.
p.is_combining = memo_lookup(
"combining",
function (codepoint, combining_class)
return combining_class and combining_class ~= 0 or false
end,
0)
function p.add_dotted_circle(str)
return (mw.ustring.gsub(str, ".",
function(char)
if p.is_combining(mw.ustring.codepoint(char)) then
return '◌' .. char
end
end))
end
local lookup_control = memo_lookup(
"control",
function (codepoint, ccc)
return ccc or "assigned"
end,
"assigned")
p.lookup_control = lookup_control
function p.is_assigned(codepoint)
return lookup_control(codepoint) ~= "unassigned"
end
function p.is_printable(codepoint)
local result = lookup_control(codepoint)
return (result == "assigned") or (result == "space-separator"), result
end
function p.is_whitespace(codepoint)
local result = lookup_control(codepoint)
return (result == "space-separator"), result
end
p.lookup_category = memo_lookup(
"category",
function (codepoint, category)
return category
end,
"Cn")
local lookup_script = memo_lookup(
"scripts",
function (codepoint, script_code)
return script_code or 'Zzzz'
end,
"Zzzz")
p.lookup_script = lookup_script
function p.get_best_script(str)
-- Check type of argument, because mw.text.decode coerces numbers to strings!
require "libraryUtil".checkType("get_best_script", 1, str, "string")
-- Convert HTML character references (including named character references,
-- or character entities) to characters.
str = mw.text.decode(str, true)
local scripts = {}
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
-- Ignore "Inherited", "Undetermined", or "Uncoded" scripts.
if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then
scripts[script] = true
end
end
-- If scripts does not contain two or more keys,
-- return first and only key (script code) in table.
if not next(scripts, next(scripts)) then
return next(scripts)
end -- else return majority script, or else "Zzzz"?
end
function p.is_Latin(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0340-U+10FFFF. If they are not found and there is at least
-- one Latin-script character, the string counts as Latin, because the rest
-- of the characters can only be Zyyy, Zinh, and Zzzz.
-- The only scripts found below U+0370 (the first code point of the Greek
-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.
-- See the codepage in the [[UTF-8]] article.
if not str:find "[\205-\244]" then
for codepoint in mw.ustring.gcodepoint(str) do
if lookup_script(codepoint) == "Latn" then
return true
end
end
end
local Latn = false
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if script == "Latn" then
Latn = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return Latn
end
-- Checks that a string contains only characters belonging to right-to-left
-- scripts, or characters of ignorable scripts.
function p.is_rtl(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0580-U+10FFFF. If they are not found, the string can only
-- have characters from a left-to-right script, because the first code point
-- in a right-to-left script is U+0591, in the Hebrew block.
if not str:find "[\214-\244]" then
return false
end
local result = false
local rtl = loader.scripts.rtl
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if rtl[script] then
result = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return result
end
--[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------
external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so
that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text
has <br /> tags.
]]
function p.is_rtl_frame (frame)
local str = frame.args[1]; -- get the string from the {{#invoke:}} frame
str = str:gsub ('%b<>', ''); -- strip any html and html-like tags
return p.is_rtl (str); -- return if whatever remains rtl; false else
end
local function get_codepoint(args, arg)
local codepoint_string = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
local codepoint = tonumber(codepoint_string, 16)
or errorf(2, "Parameter %s is not a code point in hexadecimal base",
tostring(arg))
if not (0 <= codepoint and codepoint <= 0x10FFFF) then
errorf(2, "code point in parameter %s out of range", tostring(arg))
end
return codepoint
end
local function get_func(args, arg, prefix)
local suffix = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
suffix = mw.text.trim(suffix)
local func_name = prefix .. suffix
local func = p[func_name]
or errorf(2, "There is no function '%s'", func_name)
return func
end
-- This function allows any of the "lookup" functions to be invoked. The first
-- parameter is the word after "lookup_"; the second parameter is the code point
-- in hexadecimal base.
function p.lookup(frame)
local func = get_func(frame.args, 1, "lookup_")
local codepoint = get_codepoint(frame.args, 2)
local result = func(codepoint)
if func == p.lookup_name then
-- Prevent code point labels such as <control-0000> from being
-- interpreted as HTML tags.
result = result:gsub("<", "<")
end
return result
end
function p.is(frame)
local func = get_func(frame.args, 1, "is_")
-- is_Latin and is_valid_pagename take strings.
if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then
return (func(frame.args[2]))
else -- The rest take code points.
local codepoint = get_codepoint(frame.args, 2)
return (func(codepoint)) -- Adjust to one result.
end
end
return p
898b5f0689e2646f633acbbd08143920c87abef2
Template:ISO 15924 alias
10
1603
2938
2023-09-12T21:58:30Z
w>Drmccreedy
0
bump Unicode version to 15.1
wikitext
text/x-wiki
<!-- As of 2023-08-07 this is the complete list of 166 Unicode 15.1 code-to-alias script IDs (Property Value Alias) by ISO 15924/Unicode
Expected input: "alpha4=" OR "1=" (an existing ISO 15924 code in alpha4, eg "Latn")
-->{{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}}
| Adlm = Adlam
| Aghb = Caucasian Albanian
| Ahom = Ahom
| Arab = Arabic
| Armi = Imperial Aramaic
| Armn = Armenian
| Avst = Avestan
| Bali = Balinese
| Bamu = Bamum
| Bass = Bassa Vah
| Batk = Batak
| Beng = Bengali
| Bhks = Bhaiksuki
| Bopo = Bopomofo
| Brah = Brahmi
| Brai = Braille
| Bugi = Buginese
| Buhd = Buhid
| Cakm = Chakma
| Cans = Canadian Aboriginal
| Cari = Carian
| Cham = Cham
| Cher = Cherokee
| Chrs = Chorasmian
| Copt = Coptic
| Cpmn = Cypro Minoan
| Cprt = Cypriot
| Cyrl = Cyrillic
| Deva = Devanagari
| Diak = Dives Akuru
| Dogr = Dogra
| Dsrt = Deseret
| Dupl = Duployan
| Egyp = Egyptian Hieroglyphs
| Elba = Elbasan
| Elym = Elymaic
| Ethi = Ethiopic
| Geok = Georgian
| Geor = Georgian
| Glag = Glagolitic
| Gong = Gunjala Gondi
| Gonm = Masaram Gondi
| Goth = Gothic
| Gran = Grantha
| Grek = Greek
| Gujr = Gujarati
| Guru = Gurmukhi
| Hang = Hangul
| Hani = Han
| Hano = Hanunoo
| Hatr = Hatran
| Hebr = Hebrew
| Hira = Hiragana
| Hluw = Anatolian Hieroglyphs
| Hmng = Pahawh Hmong
| Hmnp = Nyiakeng Puachue Hmong
| Hrkt = Katakana or Hiragana
| Hung = Old Hungarian
| Ital = Old Italic
| Java = Javanese
| Kali = Kayah Li
| Kana = Katakana
| Kawi = Kawi
| Khar = Kharoshthi
| Khmr = Khmer
| Khoj = Khojki
| Kits = Khitan Small Script
| Knda = Kannada
| Kthi = Kaithi
| Lana = Tai Tham
| Laoo = Lao
| Latn = Latin
| Lepc = Lepcha
| Limb = Limbu
| Lina = Linear A
| Linb = Linear B
| Lisu = Lisu
| Lyci = Lycian
| Lydi = Lydian
| Mahj = Mahajani
| Maka = Makasar
| Mand = Mandaic
| Mani = Manichaean
| Marc = Marchen
| Medf = Medefaidrin
| Mend = Mende Kikakui
| Merc = Meroitic Cursive
| Mero = Meroitic Hieroglyphs
| Mlym = Malayalam
| Modi = Modi
| Mong = Mongolian
| Mroo = Mro
| Mtei = Meetei Mayek
| Mult = Multani
| Mymr = Myanmar
| Nagm = Nag Mundari
| Nand = Nandinagari
| Narb = Old North Arabian
| Nbat = Nabataean
| Newa = Newa
| Nkoo = NKo
| Nshu = Nushu
| Ogam = Ogham
| Olck = Ol Chiki
| Orkh = Old Turkic
| Orya = Oriya
| Osge = Osage
| Osma = Osmanya
| Ougr = Old Uyghur
| Palm = Palmyrene
| Pauc = Pau Cin Hau
| Perm = Old Permic
| Phag = Phags-pa
| Phli = Inscriptional Pahlavi
| Phlp = Psalter Pahlavi
| Phnx = Phoenician
| Plrd = Miao
| Prti = Inscriptional Parthian
| Rjng = Rejang
| Rohg = Hanifi Rohingya
| Runr = Runic
| Samr = Samaritan
| Sarb = Old South Arabian
| Saur = Saurashtra
| Sgnw = SignWriting
| Shaw = Shavian
| Shrd = Sharada
| Sidd = Siddham
| Sind = Khudawadi
| Sinh = Sinhala
| Sogd = Sogdian
| Sogo = Old Sogdian
| Sora = Sora Sompeng
| Soyo = Soyombo
| Sund = Sundanese
| Sylo = Syloti Nagri
| Syrc = Syriac
| Tagb = Tagbanwa
| Takr = Takri
| Tale = Tai Le
| Talu = New Tai Lue
| Taml = Tamil
| Tang = Tangut
| Tavt = Tai Viet
| Telu = Telugu
| Tfng = Tifinagh
| Tglg = Tagalog
| Thaa = Thaana
| Thai = Thai
| Tibt = Tibetan
| Tirh = Tirhuta
| Tnsa = Tangsa
| Toto = Toto
| Ugar = Ugaritic
| Vaii = Vai
| Vith = Vithkuqi
| Wara = Warang Citi
| Wcho = Wancho
| Xpeo = Old Persian
| Xsux = Cuneiform
| Yezi = Yezidi
| Yiii = Yi
| Zanb = Zanabazar Square
| Zinh = Inherited
| Zyyy = Common
| Zzzz = Unknown
| #default = {{{default|}}}
}}<!--
--><noinclude>{{documentation}}</noinclude>
2e5d96a69b08aab71ee4c8e0540fa6b89a70744f
Template:Markup
10
581
1310
2023-09-13T11:00:00Z
wikipedia>Nardog
0
fix conditional
wikitext
text/x-wiki
<includeonly>{| style="{{#if:{{{width|}}}|width:{{{width}}};}} margin-top:0;margin-left:{{{margin-left|{{{margin|0}}}}}}; border-width:medium; padding:0; {{{style|}}}"
{{#if:{{{title|}}} |{{!}}+ '''{{{title}}}'''}}
{{#if:{{{noheaders|}}}{{{notitle|}}} |
|! scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col1headerstyle|}}}"{{!}} {{{col1|{{{t1|Markup}}}}}} {{!!}}<!--
-->scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col2headerstyle|}}}"{{!}} {{{col2|{{{t2|Renders as}}}}}}
}}<!--
-->{{For loop||call=format item|pc1n=template|pc1v=Markup/row|pc2n=c1style|pc2v={{{col1style|{{{codestyle|{{{markupstyle|}}}}}}}}}|pc3n=c2style|pc3v={{{col2style|{{{outputstyle|}}}}}}|pv=item|{{item|c1={{{1|}}}|c2={{{2|}}}}}|{{item|c1={{{3|}}}|c2={{{4|}}}}}|{{item|c1={{{5|}}}|c2={{{6|}}}}}|{{item|c1={{{7|}}}|c2={{{8|}}}}}|{{item|c1={{{9|}}}|c2={{{10|}}}}}|{{item|c1={{{11|}}}|c2={{{12|}}}}}|{{item|c1={{{13|}}}|c2={{{14|}}}}}|{{item|c1={{{15|}}}|c2={{{16|}}}}}|{{item|c1={{{17|}}}|c2={{{18|}}}}}|{{item|c1={{{19|}}}|c2={{{20|}}}}}|{{item|c1={{{21|}}}|c2={{{22|}}}}}|{{item|c1={{{23|}}}|c2={{{24|}}}}}|{{item|c1={{{25|}}}|c2={{{26|}}}}}|{{item|c1={{{27|}}}|c2={{{28|}}}}}|{{item|c1={{{29|}}}|c2={{{30|}}}}}|{{item|c1={{{31|}}}|c2={{{32|}}}}}|{{item|c1={{{33|}}}|c2={{{34|}}}}}|{{item|c1={{{35|}}}|c2={{{36|}}}}}|{{item|c1={{{37|}}}|c2={{{38|}}}}}|{{item|c1={{{39|}}}|c2={{{40|}}}}}}}
|-
|style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"|
|style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"|
|}</includeonly><noinclude>
{{Documentation}}
</noinclude>
8f9e78df3cd9801aa6cb36c463195df132394e9a
Module:Unicode data/scripts
828
477
1047
2023-09-13T19:41:55Z
wikipedia>Drmccreedy
0
Update for Unicode v15.1
Scribunto
text/plain
--[=[
-- Official Unicode script values for individual codepoints and ranges of
-- codepoints.
-- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided
-- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt
-- provided script codes corresponding to the names (see [[Script (Unicode)]]).
--]=]
local data = {
singles = {
[0x000AA] = "Latn",
[0x000BA] = "Latn",
[0x000D7] = "Zyyy",
[0x000F7] = "Zyyy",
[0x00374] = "Zyyy",
[0x0037E] = "Zyyy",
[0x0037F] = "Grek",
[0x00384] = "Grek",
[0x00385] = "Zyyy",
[0x00386] = "Grek",
[0x00387] = "Zyyy",
[0x0038C] = "Grek",
[0x00605] = "Zyyy",
[0x0060C] = "Zyyy",
[0x0061B] = "Zyyy",
[0x0061F] = "Zyyy",
[0x00640] = "Zyyy",
[0x00670] = "Zinh",
[0x006DD] = "Zyyy",
[0x0085E] = "Mand",
[0x008E2] = "Zyyy",
[0x009B2] = "Beng",
[0x009D7] = "Beng",
[0x00A3C] = "Guru",
[0x00A51] = "Guru",
[0x00A5E] = "Guru",
[0x00AD0] = "Gujr",
[0x00B9C] = "Taml",
[0x00BD0] = "Taml",
[0x00BD7] = "Taml",
[0x00C5D] = "Telu",
[0x00DBD] = "Sinh",
[0x00DCA] = "Sinh",
[0x00DD6] = "Sinh",
[0x00E3F] = "Zyyy",
[0x00E84] = "Laoo",
[0x00EA5] = "Laoo",
[0x00EC6] = "Laoo",
[0x010C7] = "Geor",
[0x010CD] = "Geor",
[0x010FB] = "Zyyy",
[0x01258] = "Ethi",
[0x012C0] = "Ethi",
[0x0171F] = "Tglg",
[0x01804] = "Mong",
[0x01805] = "Zyyy",
[0x01940] = "Limb",
[0x01CD3] = "Zyyy",
[0x01CE1] = "Zyyy",
[0x01CED] = "Zinh",
[0x01CF4] = "Zinh",
[0x01CFA] = "Zyyy",
[0x01D2B] = "Cyrl",
[0x01D78] = "Cyrl",
[0x01DBF] = "Grek",
[0x01F59] = "Grek",
[0x01F5B] = "Grek",
[0x01F5D] = "Grek",
[0x02071] = "Latn",
[0x0207F] = "Latn",
[0x02126] = "Grek",
[0x02132] = "Latn",
[0x0214E] = "Latn",
[0x02D27] = "Geor",
[0x02D2D] = "Geor",
[0x02D7F] = "Tfng",
[0x03005] = "Hani",
[0x03006] = "Zyyy",
[0x03007] = "Hani",
[0x030A0] = "Zyyy",
[0x031EF] = "Zyyy",
[0x032FF] = "Zyyy",
[0x0A7D3] = "Latn",
[0x0A92E] = "Zyyy",
[0x0A92F] = "Kali",
[0x0A95F] = "Rjng",
[0x0A9CF] = "Zyyy",
[0x0AB5B] = "Zyyy",
[0x0AB65] = "Grek",
[0x0FB3E] = "Hebr",
[0x0FDCF] = "Arab",
[0x0FEFF] = "Zyyy",
[0x0FF70] = "Zyyy",
[0x101A0] = "Grek",
[0x101FD] = "Zinh",
[0x102E0] = "Zinh",
[0x1039F] = "Ugar",
[0x1056F] = "Aghb",
[0x10808] = "Cprt",
[0x1083C] = "Cprt",
[0x1083F] = "Cprt",
[0x1091F] = "Phnx",
[0x1093F] = "Lydi",
[0x1107F] = "Brah",
[0x110CD] = "Kthi",
[0x11288] = "Mult",
[0x1133B] = "Zinh",
[0x11350] = "Gran",
[0x11357] = "Gran",
[0x118FF] = "Wara",
[0x11909] = "Diak",
[0x11D3A] = "Gonm",
[0x11FB0] = "Lisu",
[0x11FFF] = "Taml",
[0x16FE0] = "Tang",
[0x16FE1] = "Nshu",
[0x16FE4] = "Kits",
[0x1B000] = "Kana",
[0x1B132] = "Hira",
[0x1B155] = "Kana",
[0x1D4A2] = "Zyyy",
[0x1D4BB] = "Zyyy",
[0x1D546] = "Zyyy",
[0x1E08F] = "Cyrl",
[0x1E2FF] = "Wcho",
[0x1EE24] = "Arab",
[0x1EE27] = "Arab",
[0x1EE39] = "Arab",
[0x1EE3B] = "Arab",
[0x1EE42] = "Arab",
[0x1EE47] = "Arab",
[0x1EE49] = "Arab",
[0x1EE4B] = "Arab",
[0x1EE54] = "Arab",
[0x1EE57] = "Arab",
[0x1EE59] = "Arab",
[0x1EE5B] = "Arab",
[0x1EE5D] = "Arab",
[0x1EE5F] = "Arab",
[0x1EE64] = "Arab",
[0x1EE7E] = "Arab",
[0x1F200] = "Hira",
[0x1F7F0] = "Zyyy",
[0xE0001] = "Zyyy",
},
ranges = {
{ 0x00000, 0x00040, "Zyyy" },
{ 0x00041, 0x0005A, "Latn" },
{ 0x0005B, 0x00060, "Zyyy" },
{ 0x00061, 0x0007A, "Latn" },
{ 0x0007B, 0x000A9, "Zyyy" },
{ 0x000AB, 0x000B9, "Zyyy" },
{ 0x000BB, 0x000BF, "Zyyy" },
{ 0x000C0, 0x000D6, "Latn" },
{ 0x000D8, 0x000F6, "Latn" },
{ 0x000F8, 0x002B8, "Latn" },
{ 0x002B9, 0x002DF, "Zyyy" },
{ 0x002E0, 0x002E4, "Latn" },
{ 0x002E5, 0x002E9, "Zyyy" },
{ 0x002EA, 0x002EB, "Bopo" },
{ 0x002EC, 0x002FF, "Zyyy" },
{ 0x00300, 0x0036F, "Zinh" },
{ 0x00370, 0x00373, "Grek" },
{ 0x00375, 0x00377, "Grek" },
{ 0x0037A, 0x0037D, "Grek" },
{ 0x00388, 0x0038A, "Grek" },
{ 0x0038E, 0x003A1, "Grek" },
{ 0x003A3, 0x003E1, "Grek" },
{ 0x003E2, 0x003EF, "Copt" },
{ 0x003F0, 0x003FF, "Grek" },
{ 0x00400, 0x00484, "Cyrl" },
{ 0x00485, 0x00486, "Zinh" },
{ 0x00487, 0x0052F, "Cyrl" },
{ 0x00531, 0x00556, "Armn" },
{ 0x00559, 0x0058A, "Armn" },
{ 0x0058D, 0x0058F, "Armn" },
{ 0x00591, 0x005C7, "Hebr" },
{ 0x005D0, 0x005EA, "Hebr" },
{ 0x005EF, 0x005F4, "Hebr" },
{ 0x00600, 0x00604, "Arab" },
{ 0x00606, 0x0060B, "Arab" },
{ 0x0060D, 0x0061A, "Arab" },
{ 0x0061C, 0x0061E, "Arab" },
{ 0x00620, 0x0063F, "Arab" },
{ 0x00641, 0x0064A, "Arab" },
{ 0x0064B, 0x00655, "Zinh" },
{ 0x00656, 0x0066F, "Arab" },
{ 0x00671, 0x006DC, "Arab" },
{ 0x006DE, 0x006FF, "Arab" },
{ 0x00700, 0x0070D, "Syrc" },
{ 0x0070F, 0x0074A, "Syrc" },
{ 0x0074D, 0x0074F, "Syrc" },
{ 0x00750, 0x0077F, "Arab" },
{ 0x00780, 0x007B1, "Thaa" },
{ 0x007C0, 0x007FA, "Nkoo" },
{ 0x007FD, 0x007FF, "Nkoo" },
{ 0x00800, 0x0082D, "Samr" },
{ 0x00830, 0x0083E, "Samr" },
{ 0x00840, 0x0085B, "Mand" },
{ 0x00860, 0x0086A, "Syrc" },
{ 0x00870, 0x0088E, "Arab" },
{ 0x00890, 0x00891, "Arab" },
{ 0x00898, 0x008E1, "Arab" },
{ 0x008E3, 0x008FF, "Arab" },
{ 0x00900, 0x00950, "Deva" },
{ 0x00951, 0x00954, "Zinh" },
{ 0x00955, 0x00963, "Deva" },
{ 0x00964, 0x00965, "Zyyy" },
{ 0x00966, 0x0097F, "Deva" },
{ 0x00980, 0x00983, "Beng" },
{ 0x00985, 0x0098C, "Beng" },
{ 0x0098F, 0x00990, "Beng" },
{ 0x00993, 0x009A8, "Beng" },
{ 0x009AA, 0x009B0, "Beng" },
{ 0x009B6, 0x009B9, "Beng" },
{ 0x009BC, 0x009C4, "Beng" },
{ 0x009C7, 0x009C8, "Beng" },
{ 0x009CB, 0x009CE, "Beng" },
{ 0x009DC, 0x009DD, "Beng" },
{ 0x009DF, 0x009E3, "Beng" },
{ 0x009E6, 0x009FE, "Beng" },
{ 0x00A01, 0x00A03, "Guru" },
{ 0x00A05, 0x00A0A, "Guru" },
{ 0x00A0F, 0x00A10, "Guru" },
{ 0x00A13, 0x00A28, "Guru" },
{ 0x00A2A, 0x00A30, "Guru" },
{ 0x00A32, 0x00A33, "Guru" },
{ 0x00A35, 0x00A36, "Guru" },
{ 0x00A38, 0x00A39, "Guru" },
{ 0x00A3E, 0x00A42, "Guru" },
{ 0x00A47, 0x00A48, "Guru" },
{ 0x00A4B, 0x00A4D, "Guru" },
{ 0x00A59, 0x00A5C, "Guru" },
{ 0x00A66, 0x00A76, "Guru" },
{ 0x00A81, 0x00A83, "Gujr" },
{ 0x00A85, 0x00A8D, "Gujr" },
{ 0x00A8F, 0x00A91, "Gujr" },
{ 0x00A93, 0x00AA8, "Gujr" },
{ 0x00AAA, 0x00AB0, "Gujr" },
{ 0x00AB2, 0x00AB3, "Gujr" },
{ 0x00AB5, 0x00AB9, "Gujr" },
{ 0x00ABC, 0x00AC5, "Gujr" },
{ 0x00AC7, 0x00AC9, "Gujr" },
{ 0x00ACB, 0x00ACD, "Gujr" },
{ 0x00AE0, 0x00AE3, "Gujr" },
{ 0x00AE6, 0x00AF1, "Gujr" },
{ 0x00AF9, 0x00AFF, "Gujr" },
{ 0x00B01, 0x00B03, "Orya" },
{ 0x00B05, 0x00B0C, "Orya" },
{ 0x00B0F, 0x00B10, "Orya" },
{ 0x00B13, 0x00B28, "Orya" },
{ 0x00B2A, 0x00B30, "Orya" },
{ 0x00B32, 0x00B33, "Orya" },
{ 0x00B35, 0x00B39, "Orya" },
{ 0x00B3C, 0x00B44, "Orya" },
{ 0x00B47, 0x00B48, "Orya" },
{ 0x00B4B, 0x00B4D, "Orya" },
{ 0x00B55, 0x00B57, "Orya" },
{ 0x00B5C, 0x00B5D, "Orya" },
{ 0x00B5F, 0x00B63, "Orya" },
{ 0x00B66, 0x00B77, "Orya" },
{ 0x00B82, 0x00B83, "Taml" },
{ 0x00B85, 0x00B8A, "Taml" },
{ 0x00B8E, 0x00B90, "Taml" },
{ 0x00B92, 0x00B95, "Taml" },
{ 0x00B99, 0x00B9A, "Taml" },
{ 0x00B9E, 0x00B9F, "Taml" },
{ 0x00BA3, 0x00BA4, "Taml" },
{ 0x00BA8, 0x00BAA, "Taml" },
{ 0x00BAE, 0x00BB9, "Taml" },
{ 0x00BBE, 0x00BC2, "Taml" },
{ 0x00BC6, 0x00BC8, "Taml" },
{ 0x00BCA, 0x00BCD, "Taml" },
{ 0x00BE6, 0x00BFA, "Taml" },
{ 0x00C00, 0x00C0C, "Telu" },
{ 0x00C0E, 0x00C10, "Telu" },
{ 0x00C12, 0x00C28, "Telu" },
{ 0x00C2A, 0x00C39, "Telu" },
{ 0x00C3C, 0x00C44, "Telu" },
{ 0x00C46, 0x00C48, "Telu" },
{ 0x00C4A, 0x00C4D, "Telu" },
{ 0x00C55, 0x00C56, "Telu" },
{ 0x00C58, 0x00C5A, "Telu" },
{ 0x00C60, 0x00C63, "Telu" },
{ 0x00C66, 0x00C6F, "Telu" },
{ 0x00C77, 0x00C7F, "Telu" },
{ 0x00C80, 0x00C8C, "Knda" },
{ 0x00C8E, 0x00C90, "Knda" },
{ 0x00C92, 0x00CA8, "Knda" },
{ 0x00CAA, 0x00CB3, "Knda" },
{ 0x00CB5, 0x00CB9, "Knda" },
{ 0x00CBC, 0x00CC4, "Knda" },
{ 0x00CC6, 0x00CC8, "Knda" },
{ 0x00CCA, 0x00CCD, "Knda" },
{ 0x00CD5, 0x00CD6, "Knda" },
{ 0x00CDD, 0x00CDE, "Knda" },
{ 0x00CE0, 0x00CE3, "Knda" },
{ 0x00CE6, 0x00CEF, "Knda" },
{ 0x00CF1, 0x00CF3, "Knda" },
{ 0x00D00, 0x00D0C, "Mlym" },
{ 0x00D0E, 0x00D10, "Mlym" },
{ 0x00D12, 0x00D44, "Mlym" },
{ 0x00D46, 0x00D48, "Mlym" },
{ 0x00D4A, 0x00D4F, "Mlym" },
{ 0x00D54, 0x00D63, "Mlym" },
{ 0x00D66, 0x00D7F, "Mlym" },
{ 0x00D81, 0x00D83, "Sinh" },
{ 0x00D85, 0x00D96, "Sinh" },
{ 0x00D9A, 0x00DB1, "Sinh" },
{ 0x00DB3, 0x00DBB, "Sinh" },
{ 0x00DC0, 0x00DC6, "Sinh" },
{ 0x00DCF, 0x00DD4, "Sinh" },
{ 0x00DD8, 0x00DDF, "Sinh" },
{ 0x00DE6, 0x00DEF, "Sinh" },
{ 0x00DF2, 0x00DF4, "Sinh" },
{ 0x00E01, 0x00E3A, "Thai" },
{ 0x00E40, 0x00E5B, "Thai" },
{ 0x00E81, 0x00E82, "Laoo" },
{ 0x00E86, 0x00E8A, "Laoo" },
{ 0x00E8C, 0x00EA3, "Laoo" },
{ 0x00EA7, 0x00EBD, "Laoo" },
{ 0x00EC0, 0x00EC4, "Laoo" },
{ 0x00EC8, 0x00ECE, "Laoo" },
{ 0x00ED0, 0x00ED9, "Laoo" },
{ 0x00EDC, 0x00EDF, "Laoo" },
{ 0x00F00, 0x00F47, "Tibt" },
{ 0x00F49, 0x00F6C, "Tibt" },
{ 0x00F71, 0x00F97, "Tibt" },
{ 0x00F99, 0x00FBC, "Tibt" },
{ 0x00FBE, 0x00FCC, "Tibt" },
{ 0x00FCE, 0x00FD4, "Tibt" },
{ 0x00FD5, 0x00FD8, "Zyyy" },
{ 0x00FD9, 0x00FDA, "Tibt" },
{ 0x01000, 0x0109F, "Mymr" },
{ 0x010A0, 0x010C5, "Geor" },
{ 0x010D0, 0x010FA, "Geor" },
{ 0x010FC, 0x010FF, "Geor" },
{ 0x01100, 0x011FF, "Hang" },
{ 0x01200, 0x01248, "Ethi" },
{ 0x0124A, 0x0124D, "Ethi" },
{ 0x01250, 0x01256, "Ethi" },
{ 0x0125A, 0x0125D, "Ethi" },
{ 0x01260, 0x01288, "Ethi" },
{ 0x0128A, 0x0128D, "Ethi" },
{ 0x01290, 0x012B0, "Ethi" },
{ 0x012B2, 0x012B5, "Ethi" },
{ 0x012B8, 0x012BE, "Ethi" },
{ 0x012C2, 0x012C5, "Ethi" },
{ 0x012C8, 0x012D6, "Ethi" },
{ 0x012D8, 0x01310, "Ethi" },
{ 0x01312, 0x01315, "Ethi" },
{ 0x01318, 0x0135A, "Ethi" },
{ 0x0135D, 0x0137C, "Ethi" },
{ 0x01380, 0x01399, "Ethi" },
{ 0x013A0, 0x013F5, "Cher" },
{ 0x013F8, 0x013FD, "Cher" },
{ 0x01400, 0x0167F, "Cans" },
{ 0x01680, 0x0169C, "Ogam" },
{ 0x016A0, 0x016EA, "Runr" },
{ 0x016EB, 0x016ED, "Zyyy" },
{ 0x016EE, 0x016F8, "Runr" },
{ 0x01700, 0x01715, "Tglg" },
{ 0x01720, 0x01734, "Hano" },
{ 0x01735, 0x01736, "Zyyy" },
{ 0x01740, 0x01753, "Buhd" },
{ 0x01760, 0x0176C, "Tagb" },
{ 0x0176E, 0x01770, "Tagb" },
{ 0x01772, 0x01773, "Tagb" },
{ 0x01780, 0x017DD, "Khmr" },
{ 0x017E0, 0x017E9, "Khmr" },
{ 0x017F0, 0x017F9, "Khmr" },
{ 0x01800, 0x01801, "Mong" },
{ 0x01802, 0x01803, "Zyyy" },
{ 0x01806, 0x01819, "Mong" },
{ 0x01820, 0x01878, "Mong" },
{ 0x01880, 0x018AA, "Mong" },
{ 0x018B0, 0x018F5, "Cans" },
{ 0x01900, 0x0191E, "Limb" },
{ 0x01920, 0x0192B, "Limb" },
{ 0x01930, 0x0193B, "Limb" },
{ 0x01944, 0x0194F, "Limb" },
{ 0x01950, 0x0196D, "Tale" },
{ 0x01970, 0x01974, "Tale" },
{ 0x01980, 0x019AB, "Talu" },
{ 0x019B0, 0x019C9, "Talu" },
{ 0x019D0, 0x019DA, "Talu" },
{ 0x019DE, 0x019DF, "Talu" },
{ 0x019E0, 0x019FF, "Khmr" },
{ 0x01A00, 0x01A1B, "Bugi" },
{ 0x01A1E, 0x01A1F, "Bugi" },
{ 0x01A20, 0x01A5E, "Lana" },
{ 0x01A60, 0x01A7C, "Lana" },
{ 0x01A7F, 0x01A89, "Lana" },
{ 0x01A90, 0x01A99, "Lana" },
{ 0x01AA0, 0x01AAD, "Lana" },
{ 0x01AB0, 0x01ACE, "Zinh" },
{ 0x01B00, 0x01B4C, "Bali" },
{ 0x01B50, 0x01B7E, "Bali" },
{ 0x01B80, 0x01BBF, "Sund" },
{ 0x01BC0, 0x01BF3, "Batk" },
{ 0x01BFC, 0x01BFF, "Batk" },
{ 0x01C00, 0x01C37, "Lepc" },
{ 0x01C3B, 0x01C49, "Lepc" },
{ 0x01C4D, 0x01C4F, "Lepc" },
{ 0x01C50, 0x01C7F, "Olck" },
{ 0x01C80, 0x01C88, "Cyrl" },
{ 0x01C90, 0x01CBA, "Geor" },
{ 0x01CBD, 0x01CBF, "Geor" },
{ 0x01CC0, 0x01CC7, "Sund" },
{ 0x01CD0, 0x01CD2, "Zinh" },
{ 0x01CD4, 0x01CE0, "Zinh" },
{ 0x01CE2, 0x01CE8, "Zinh" },
{ 0x01CE9, 0x01CEC, "Zyyy" },
{ 0x01CEE, 0x01CF3, "Zyyy" },
{ 0x01CF5, 0x01CF7, "Zyyy" },
{ 0x01CF8, 0x01CF9, "Zinh" },
{ 0x01D00, 0x01D25, "Latn" },
{ 0x01D26, 0x01D2A, "Grek" },
{ 0x01D2C, 0x01D5C, "Latn" },
{ 0x01D5D, 0x01D61, "Grek" },
{ 0x01D62, 0x01D65, "Latn" },
{ 0x01D66, 0x01D6A, "Grek" },
{ 0x01D6B, 0x01D77, "Latn" },
{ 0x01D79, 0x01DBE, "Latn" },
{ 0x01DC0, 0x01DFF, "Zinh" },
{ 0x01E00, 0x01EFF, "Latn" },
{ 0x01F00, 0x01F15, "Grek" },
{ 0x01F18, 0x01F1D, "Grek" },
{ 0x01F20, 0x01F45, "Grek" },
{ 0x01F48, 0x01F4D, "Grek" },
{ 0x01F50, 0x01F57, "Grek" },
{ 0x01F5F, 0x01F7D, "Grek" },
{ 0x01F80, 0x01FB4, "Grek" },
{ 0x01FB6, 0x01FC4, "Grek" },
{ 0x01FC6, 0x01FD3, "Grek" },
{ 0x01FD6, 0x01FDB, "Grek" },
{ 0x01FDD, 0x01FEF, "Grek" },
{ 0x01FF2, 0x01FF4, "Grek" },
{ 0x01FF6, 0x01FFE, "Grek" },
{ 0x02000, 0x0200B, "Zyyy" },
{ 0x0200C, 0x0200D, "Zinh" },
{ 0x0200E, 0x02064, "Zyyy" },
{ 0x02066, 0x02070, "Zyyy" },
{ 0x02074, 0x0207E, "Zyyy" },
{ 0x02080, 0x0208E, "Zyyy" },
{ 0x02090, 0x0209C, "Latn" },
{ 0x020A0, 0x020C0, "Zyyy" },
{ 0x020D0, 0x020F0, "Zinh" },
{ 0x02100, 0x02125, "Zyyy" },
{ 0x02127, 0x02129, "Zyyy" },
{ 0x0212A, 0x0212B, "Latn" },
{ 0x0212C, 0x02131, "Zyyy" },
{ 0x02133, 0x0214D, "Zyyy" },
{ 0x0214F, 0x0215F, "Zyyy" },
{ 0x02160, 0x02188, "Latn" },
{ 0x02189, 0x0218B, "Zyyy" },
{ 0x02190, 0x02426, "Zyyy" },
{ 0x02440, 0x0244A, "Zyyy" },
{ 0x02460, 0x027FF, "Zyyy" },
{ 0x02800, 0x028FF, "Brai" },
{ 0x02900, 0x02B73, "Zyyy" },
{ 0x02B76, 0x02B95, "Zyyy" },
{ 0x02B97, 0x02BFF, "Zyyy" },
{ 0x02C00, 0x02C5F, "Glag" },
{ 0x02C60, 0x02C7F, "Latn" },
{ 0x02C80, 0x02CF3, "Copt" },
{ 0x02CF9, 0x02CFF, "Copt" },
{ 0x02D00, 0x02D25, "Geor" },
{ 0x02D30, 0x02D67, "Tfng" },
{ 0x02D6F, 0x02D70, "Tfng" },
{ 0x02D80, 0x02D96, "Ethi" },
{ 0x02DA0, 0x02DA6, "Ethi" },
{ 0x02DA8, 0x02DAE, "Ethi" },
{ 0x02DB0, 0x02DB6, "Ethi" },
{ 0x02DB8, 0x02DBE, "Ethi" },
{ 0x02DC0, 0x02DC6, "Ethi" },
{ 0x02DC8, 0x02DCE, "Ethi" },
{ 0x02DD0, 0x02DD6, "Ethi" },
{ 0x02DD8, 0x02DDE, "Ethi" },
{ 0x02DE0, 0x02DFF, "Cyrl" },
{ 0x02E00, 0x02E5D, "Zyyy" },
{ 0x02E80, 0x02E99, "Hani" },
{ 0x02E9B, 0x02EF3, "Hani" },
{ 0x02F00, 0x02FD5, "Hani" },
{ 0x02FF0, 0x03004, "Zyyy" },
{ 0x03008, 0x03020, "Zyyy" },
{ 0x03021, 0x03029, "Hani" },
{ 0x0302A, 0x0302D, "Zinh" },
{ 0x0302E, 0x0302F, "Hang" },
{ 0x03030, 0x03037, "Zyyy" },
{ 0x03038, 0x0303B, "Hani" },
{ 0x0303C, 0x0303F, "Zyyy" },
{ 0x03041, 0x03096, "Hira" },
{ 0x03099, 0x0309A, "Zinh" },
{ 0x0309B, 0x0309C, "Zyyy" },
{ 0x0309D, 0x0309F, "Hira" },
{ 0x030A1, 0x030FA, "Kana" },
{ 0x030FB, 0x030FC, "Zyyy" },
{ 0x030FD, 0x030FF, "Kana" },
{ 0x03105, 0x0312F, "Bopo" },
{ 0x03131, 0x0318E, "Hang" },
{ 0x03190, 0x0319F, "Zyyy" },
{ 0x031A0, 0x031BF, "Bopo" },
{ 0x031C0, 0x031E3, "Zyyy" },
{ 0x031F0, 0x031FF, "Kana" },
{ 0x03200, 0x0321E, "Hang" },
{ 0x03220, 0x0325F, "Zyyy" },
{ 0x03260, 0x0327E, "Hang" },
{ 0x0327F, 0x032CF, "Zyyy" },
{ 0x032D0, 0x032FE, "Kana" },
{ 0x03300, 0x03357, "Kana" },
{ 0x03358, 0x033FF, "Zyyy" },
{ 0x03400, 0x04DBF, "Hani" },
{ 0x04DC0, 0x04DFF, "Zyyy" },
{ 0x04E00, 0x09FFF, "Hani" },
{ 0x0A000, 0x0A48C, "Yiii" },
{ 0x0A490, 0x0A4C6, "Yiii" },
{ 0x0A4D0, 0x0A4FF, "Lisu" },
{ 0x0A500, 0x0A62B, "Vaii" },
{ 0x0A640, 0x0A69F, "Cyrl" },
{ 0x0A6A0, 0x0A6F7, "Bamu" },
{ 0x0A700, 0x0A721, "Zyyy" },
{ 0x0A722, 0x0A787, "Latn" },
{ 0x0A788, 0x0A78A, "Zyyy" },
{ 0x0A78B, 0x0A7CA, "Latn" },
{ 0x0A7D0, 0x0A7D1, "Latn" },
{ 0x0A7D5, 0x0A7D9, "Latn" },
{ 0x0A7F2, 0x0A7FF, "Latn" },
{ 0x0A800, 0x0A82C, "Sylo" },
{ 0x0A830, 0x0A839, "Zyyy" },
{ 0x0A840, 0x0A877, "Phag" },
{ 0x0A880, 0x0A8C5, "Saur" },
{ 0x0A8CE, 0x0A8D9, "Saur" },
{ 0x0A8E0, 0x0A8FF, "Deva" },
{ 0x0A900, 0x0A92D, "Kali" },
{ 0x0A930, 0x0A953, "Rjng" },
{ 0x0A960, 0x0A97C, "Hang" },
{ 0x0A980, 0x0A9CD, "Java" },
{ 0x0A9D0, 0x0A9D9, "Java" },
{ 0x0A9DE, 0x0A9DF, "Java" },
{ 0x0A9E0, 0x0A9FE, "Mymr" },
{ 0x0AA00, 0x0AA36, "Cham" },
{ 0x0AA40, 0x0AA4D, "Cham" },
{ 0x0AA50, 0x0AA59, "Cham" },
{ 0x0AA5C, 0x0AA5F, "Cham" },
{ 0x0AA60, 0x0AA7F, "Mymr" },
{ 0x0AA80, 0x0AAC2, "Tavt" },
{ 0x0AADB, 0x0AADF, "Tavt" },
{ 0x0AAE0, 0x0AAF6, "Mtei" },
{ 0x0AB01, 0x0AB06, "Ethi" },
{ 0x0AB09, 0x0AB0E, "Ethi" },
{ 0x0AB11, 0x0AB16, "Ethi" },
{ 0x0AB20, 0x0AB26, "Ethi" },
{ 0x0AB28, 0x0AB2E, "Ethi" },
{ 0x0AB30, 0x0AB5A, "Latn" },
{ 0x0AB5C, 0x0AB64, "Latn" },
{ 0x0AB66, 0x0AB69, "Latn" },
{ 0x0AB6A, 0x0AB6B, "Zyyy" },
{ 0x0AB70, 0x0ABBF, "Cher" },
{ 0x0ABC0, 0x0ABED, "Mtei" },
{ 0x0ABF0, 0x0ABF9, "Mtei" },
{ 0x0AC00, 0x0D7A3, "Hang" },
{ 0x0D7B0, 0x0D7C6, "Hang" },
{ 0x0D7CB, 0x0D7FB, "Hang" },
{ 0x0F900, 0x0FA6D, "Hani" },
{ 0x0FA70, 0x0FAD9, "Hani" },
{ 0x0FB00, 0x0FB06, "Latn" },
{ 0x0FB13, 0x0FB17, "Armn" },
{ 0x0FB1D, 0x0FB36, "Hebr" },
{ 0x0FB38, 0x0FB3C, "Hebr" },
{ 0x0FB40, 0x0FB41, "Hebr" },
{ 0x0FB43, 0x0FB44, "Hebr" },
{ 0x0FB46, 0x0FB4F, "Hebr" },
{ 0x0FB50, 0x0FBC2, "Arab" },
{ 0x0FBD3, 0x0FD3D, "Arab" },
{ 0x0FD3E, 0x0FD3F, "Zyyy" },
{ 0x0FD40, 0x0FD8F, "Arab" },
{ 0x0FD92, 0x0FDC7, "Arab" },
{ 0x0FDF0, 0x0FDFF, "Arab" },
{ 0x0FE00, 0x0FE0F, "Zinh" },
{ 0x0FE10, 0x0FE19, "Zyyy" },
{ 0x0FE20, 0x0FE2D, "Zinh" },
{ 0x0FE2E, 0x0FE2F, "Cyrl" },
{ 0x0FE30, 0x0FE52, "Zyyy" },
{ 0x0FE54, 0x0FE66, "Zyyy" },
{ 0x0FE68, 0x0FE6B, "Zyyy" },
{ 0x0FE70, 0x0FE74, "Arab" },
{ 0x0FE76, 0x0FEFC, "Arab" },
{ 0x0FF01, 0x0FF20, "Zyyy" },
{ 0x0FF21, 0x0FF3A, "Latn" },
{ 0x0FF3B, 0x0FF40, "Zyyy" },
{ 0x0FF41, 0x0FF5A, "Latn" },
{ 0x0FF5B, 0x0FF65, "Zyyy" },
{ 0x0FF66, 0x0FF6F, "Kana" },
{ 0x0FF71, 0x0FF9D, "Kana" },
{ 0x0FF9E, 0x0FF9F, "Zyyy" },
{ 0x0FFA0, 0x0FFBE, "Hang" },
{ 0x0FFC2, 0x0FFC7, "Hang" },
{ 0x0FFCA, 0x0FFCF, "Hang" },
{ 0x0FFD2, 0x0FFD7, "Hang" },
{ 0x0FFDA, 0x0FFDC, "Hang" },
{ 0x0FFE0, 0x0FFE6, "Zyyy" },
{ 0x0FFE8, 0x0FFEE, "Zyyy" },
{ 0x0FFF9, 0x0FFFD, "Zyyy" },
{ 0x10000, 0x1000B, "Linb" },
{ 0x1000D, 0x10026, "Linb" },
{ 0x10028, 0x1003A, "Linb" },
{ 0x1003C, 0x1003D, "Linb" },
{ 0x1003F, 0x1004D, "Linb" },
{ 0x10050, 0x1005D, "Linb" },
{ 0x10080, 0x100FA, "Linb" },
{ 0x10100, 0x10102, "Zyyy" },
{ 0x10107, 0x10133, "Zyyy" },
{ 0x10137, 0x1013F, "Zyyy" },
{ 0x10140, 0x1018E, "Grek" },
{ 0x10190, 0x1019C, "Zyyy" },
{ 0x101D0, 0x101FC, "Zyyy" },
{ 0x10280, 0x1029C, "Lyci" },
{ 0x102A0, 0x102D0, "Cari" },
{ 0x102E1, 0x102FB, "Zyyy" },
{ 0x10300, 0x10323, "Ital" },
{ 0x1032D, 0x1032F, "Ital" },
{ 0x10330, 0x1034A, "Goth" },
{ 0x10350, 0x1037A, "Perm" },
{ 0x10380, 0x1039D, "Ugar" },
{ 0x103A0, 0x103C3, "Xpeo" },
{ 0x103C8, 0x103D5, "Xpeo" },
{ 0x10400, 0x1044F, "Dsrt" },
{ 0x10450, 0x1047F, "Shaw" },
{ 0x10480, 0x1049D, "Osma" },
{ 0x104A0, 0x104A9, "Osma" },
{ 0x104B0, 0x104D3, "Osge" },
{ 0x104D8, 0x104FB, "Osge" },
{ 0x10500, 0x10527, "Elba" },
{ 0x10530, 0x10563, "Aghb" },
{ 0x10570, 0x1057A, "Vith" },
{ 0x1057C, 0x1058A, "Vith" },
{ 0x1058C, 0x10592, "Vith" },
{ 0x10594, 0x10595, "Vith" },
{ 0x10597, 0x105A1, "Vith" },
{ 0x105A3, 0x105B1, "Vith" },
{ 0x105B3, 0x105B9, "Vith" },
{ 0x105BB, 0x105BC, "Vith" },
{ 0x10600, 0x10736, "Lina" },
{ 0x10740, 0x10755, "Lina" },
{ 0x10760, 0x10767, "Lina" },
{ 0x10780, 0x10785, "Latn" },
{ 0x10787, 0x107B0, "Latn" },
{ 0x107B2, 0x107BA, "Latn" },
{ 0x10800, 0x10805, "Cprt" },
{ 0x1080A, 0x10835, "Cprt" },
{ 0x10837, 0x10838, "Cprt" },
{ 0x10840, 0x10855, "Armi" },
{ 0x10857, 0x1085F, "Armi" },
{ 0x10860, 0x1087F, "Palm" },
{ 0x10880, 0x1089E, "Nbat" },
{ 0x108A7, 0x108AF, "Nbat" },
{ 0x108E0, 0x108F2, "Hatr" },
{ 0x108F4, 0x108F5, "Hatr" },
{ 0x108FB, 0x108FF, "Hatr" },
{ 0x10900, 0x1091B, "Phnx" },
{ 0x10920, 0x10939, "Lydi" },
{ 0x10980, 0x1099F, "Mero" },
{ 0x109A0, 0x109B7, "Merc" },
{ 0x109BC, 0x109CF, "Merc" },
{ 0x109D2, 0x109FF, "Merc" },
{ 0x10A00, 0x10A03, "Khar" },
{ 0x10A05, 0x10A06, "Khar" },
{ 0x10A0C, 0x10A13, "Khar" },
{ 0x10A15, 0x10A17, "Khar" },
{ 0x10A19, 0x10A35, "Khar" },
{ 0x10A38, 0x10A3A, "Khar" },
{ 0x10A3F, 0x10A48, "Khar" },
{ 0x10A50, 0x10A58, "Khar" },
{ 0x10A60, 0x10A7F, "Sarb" },
{ 0x10A80, 0x10A9F, "Narb" },
{ 0x10AC0, 0x10AE6, "Mani" },
{ 0x10AEB, 0x10AF6, "Mani" },
{ 0x10B00, 0x10B35, "Avst" },
{ 0x10B39, 0x10B3F, "Avst" },
{ 0x10B40, 0x10B55, "Prti" },
{ 0x10B58, 0x10B5F, "Prti" },
{ 0x10B60, 0x10B72, "Phli" },
{ 0x10B78, 0x10B7F, "Phli" },
{ 0x10B80, 0x10B91, "Phlp" },
{ 0x10B99, 0x10B9C, "Phlp" },
{ 0x10BA9, 0x10BAF, "Phlp" },
{ 0x10C00, 0x10C48, "Orkh" },
{ 0x10C80, 0x10CB2, "Hung" },
{ 0x10CC0, 0x10CF2, "Hung" },
{ 0x10CFA, 0x10CFF, "Hung" },
{ 0x10D00, 0x10D27, "Rohg" },
{ 0x10D30, 0x10D39, "Rohg" },
{ 0x10E60, 0x10E7E, "Arab" },
{ 0x10E80, 0x10EA9, "Yezi" },
{ 0x10EAB, 0x10EAD, "Yezi" },
{ 0x10EB0, 0x10EB1, "Yezi" },
{ 0x10EFD, 0x10EFF, "Arab" },
{ 0x10F00, 0x10F27, "Sogo" },
{ 0x10F30, 0x10F59, "Sogd" },
{ 0x10F70, 0x10F89, "Ougr" },
{ 0x10FB0, 0x10FCB, "Chrs" },
{ 0x10FE0, 0x10FF6, "Elym" },
{ 0x11000, 0x1104D, "Brah" },
{ 0x11052, 0x11075, "Brah" },
{ 0x11080, 0x110C2, "Kthi" },
{ 0x110D0, 0x110E8, "Sora" },
{ 0x110F0, 0x110F9, "Sora" },
{ 0x11100, 0x11134, "Cakm" },
{ 0x11136, 0x11147, "Cakm" },
{ 0x11150, 0x11176, "Mahj" },
{ 0x11180, 0x111DF, "Shrd" },
{ 0x111E1, 0x111F4, "Sinh" },
{ 0x11200, 0x11211, "Khoj" },
{ 0x11213, 0x11241, "Khoj" },
{ 0x11280, 0x11286, "Mult" },
{ 0x1128A, 0x1128D, "Mult" },
{ 0x1128F, 0x1129D, "Mult" },
{ 0x1129F, 0x112A9, "Mult" },
{ 0x112B0, 0x112EA, "Sind" },
{ 0x112F0, 0x112F9, "Sind" },
{ 0x11300, 0x11303, "Gran" },
{ 0x11305, 0x1130C, "Gran" },
{ 0x1130F, 0x11310, "Gran" },
{ 0x11313, 0x11328, "Gran" },
{ 0x1132A, 0x11330, "Gran" },
{ 0x11332, 0x11333, "Gran" },
{ 0x11335, 0x11339, "Gran" },
{ 0x1133C, 0x11344, "Gran" },
{ 0x11347, 0x11348, "Gran" },
{ 0x1134B, 0x1134D, "Gran" },
{ 0x1135D, 0x11363, "Gran" },
{ 0x11366, 0x1136C, "Gran" },
{ 0x11370, 0x11374, "Gran" },
{ 0x11400, 0x1145B, "Newa" },
{ 0x1145D, 0x11461, "Newa" },
{ 0x11480, 0x114C7, "Tirh" },
{ 0x114D0, 0x114D9, "Tirh" },
{ 0x11580, 0x115B5, "Sidd" },
{ 0x115B8, 0x115DD, "Sidd" },
{ 0x11600, 0x11644, "Modi" },
{ 0x11650, 0x11659, "Modi" },
{ 0x11660, 0x1166C, "Mong" },
{ 0x11680, 0x116B9, "Takr" },
{ 0x116C0, 0x116C9, "Takr" },
{ 0x11700, 0x1171A, "Ahom" },
{ 0x1171D, 0x1172B, "Ahom" },
{ 0x11730, 0x11746, "Ahom" },
{ 0x11800, 0x1183B, "Dogr" },
{ 0x118A0, 0x118F2, "Wara" },
{ 0x11900, 0x11906, "Diak" },
{ 0x1190C, 0x11913, "Diak" },
{ 0x11915, 0x11916, "Diak" },
{ 0x11918, 0x11935, "Diak" },
{ 0x11937, 0x11938, "Diak" },
{ 0x1193B, 0x11946, "Diak" },
{ 0x11950, 0x11959, "Diak" },
{ 0x119A0, 0x119A7, "Nand" },
{ 0x119AA, 0x119D7, "Nand" },
{ 0x119DA, 0x119E4, "Nand" },
{ 0x11A00, 0x11A47, "Zanb" },
{ 0x11A50, 0x11AA2, "Soyo" },
{ 0x11AB0, 0x11ABF, "Cans" },
{ 0x11AC0, 0x11AF8, "Pauc" },
{ 0x11B00, 0x11B09, "Deva" },
{ 0x11C00, 0x11C08, "Bhks" },
{ 0x11C0A, 0x11C36, "Bhks" },
{ 0x11C38, 0x11C45, "Bhks" },
{ 0x11C50, 0x11C6C, "Bhks" },
{ 0x11C70, 0x11C8F, "Marc" },
{ 0x11C92, 0x11CA7, "Marc" },
{ 0x11CA9, 0x11CB6, "Marc" },
{ 0x11D00, 0x11D06, "Gonm" },
{ 0x11D08, 0x11D09, "Gonm" },
{ 0x11D0B, 0x11D36, "Gonm" },
{ 0x11D3C, 0x11D3D, "Gonm" },
{ 0x11D3F, 0x11D47, "Gonm" },
{ 0x11D50, 0x11D59, "Gonm" },
{ 0x11D60, 0x11D65, "Gong" },
{ 0x11D67, 0x11D68, "Gong" },
{ 0x11D6A, 0x11D8E, "Gong" },
{ 0x11D90, 0x11D91, "Gong" },
{ 0x11D93, 0x11D98, "Gong" },
{ 0x11DA0, 0x11DA9, "Gong" },
{ 0x11EE0, 0x11EF8, "Maka" },
{ 0x11F00, 0x11F10, "Kawi" },
{ 0x11F12, 0x11F3A, "Kawi" },
{ 0x11F3E, 0x11F59, "Kawi" },
{ 0x11FC0, 0x11FF1, "Taml" },
{ 0x12000, 0x12399, "Xsux" },
{ 0x12400, 0x1246E, "Xsux" },
{ 0x12470, 0x12474, "Xsux" },
{ 0x12480, 0x12543, "Xsux" },
{ 0x12F90, 0x12FF2, "Cpmn" },
{ 0x13000, 0x13455, "Egyp" },
{ 0x14400, 0x14646, "Hluw" },
{ 0x16800, 0x16A38, "Bamu" },
{ 0x16A40, 0x16A5E, "Mroo" },
{ 0x16A60, 0x16A69, "Mroo" },
{ 0x16A6E, 0x16A6F, "Mroo" },
{ 0x16A70, 0x16ABE, "Tnsa" },
{ 0x16AC0, 0x16AC9, "Tnsa" },
{ 0x16AD0, 0x16AED, "Bass" },
{ 0x16AF0, 0x16AF5, "Bass" },
{ 0x16B00, 0x16B45, "Hmng" },
{ 0x16B50, 0x16B59, "Hmng" },
{ 0x16B5B, 0x16B61, "Hmng" },
{ 0x16B63, 0x16B77, "Hmng" },
{ 0x16B7D, 0x16B8F, "Hmng" },
{ 0x16E40, 0x16E9A, "Medf" },
{ 0x16F00, 0x16F4A, "Plrd" },
{ 0x16F4F, 0x16F87, "Plrd" },
{ 0x16F8F, 0x16F9F, "Plrd" },
{ 0x16FE2, 0x16FE3, "Hani" },
{ 0x16FF0, 0x16FF1, "Hani" },
{ 0x17000, 0x187F7, "Tang" },
{ 0x18800, 0x18AFF, "Tang" },
{ 0x18B00, 0x18CD5, "Kits" },
{ 0x18D00, 0x18D08, "Tang" },
{ 0x1AFF0, 0x1AFF3, "Kana" },
{ 0x1AFF5, 0x1AFFB, "Kana" },
{ 0x1AFFD, 0x1AFFE, "Kana" },
{ 0x1B001, 0x1B11F, "Hira" },
{ 0x1B120, 0x1B122, "Kana" },
{ 0x1B150, 0x1B152, "Hira" },
{ 0x1B164, 0x1B167, "Kana" },
{ 0x1B170, 0x1B2FB, "Nshu" },
{ 0x1BC00, 0x1BC6A, "Dupl" },
{ 0x1BC70, 0x1BC7C, "Dupl" },
{ 0x1BC80, 0x1BC88, "Dupl" },
{ 0x1BC90, 0x1BC99, "Dupl" },
{ 0x1BC9C, 0x1BC9F, "Dupl" },
{ 0x1BCA0, 0x1BCA3, "Zyyy" },
{ 0x1CF00, 0x1CF2D, "Zinh" },
{ 0x1CF30, 0x1CF46, "Zinh" },
{ 0x1CF50, 0x1CFC3, "Zyyy" },
{ 0x1D000, 0x1D0F5, "Zyyy" },
{ 0x1D100, 0x1D126, "Zyyy" },
{ 0x1D129, 0x1D166, "Zyyy" },
{ 0x1D167, 0x1D169, "Zinh" },
{ 0x1D16A, 0x1D17A, "Zyyy" },
{ 0x1D17B, 0x1D182, "Zinh" },
{ 0x1D183, 0x1D184, "Zyyy" },
{ 0x1D185, 0x1D18B, "Zinh" },
{ 0x1D18C, 0x1D1A9, "Zyyy" },
{ 0x1D1AA, 0x1D1AD, "Zinh" },
{ 0x1D1AE, 0x1D1EA, "Zyyy" },
{ 0x1D200, 0x1D245, "Grek" },
{ 0x1D2C0, 0x1D2D3, "Zyyy" },
{ 0x1D2E0, 0x1D2F3, "Zyyy" },
{ 0x1D300, 0x1D356, "Zyyy" },
{ 0x1D360, 0x1D378, "Zyyy" },
{ 0x1D400, 0x1D454, "Zyyy" },
{ 0x1D456, 0x1D49C, "Zyyy" },
{ 0x1D49E, 0x1D49F, "Zyyy" },
{ 0x1D4A5, 0x1D4A6, "Zyyy" },
{ 0x1D4A9, 0x1D4AC, "Zyyy" },
{ 0x1D4AE, 0x1D4B9, "Zyyy" },
{ 0x1D4BD, 0x1D4C3, "Zyyy" },
{ 0x1D4C5, 0x1D505, "Zyyy" },
{ 0x1D507, 0x1D50A, "Zyyy" },
{ 0x1D50D, 0x1D514, "Zyyy" },
{ 0x1D516, 0x1D51C, "Zyyy" },
{ 0x1D51E, 0x1D539, "Zyyy" },
{ 0x1D53B, 0x1D53E, "Zyyy" },
{ 0x1D540, 0x1D544, "Zyyy" },
{ 0x1D54A, 0x1D550, "Zyyy" },
{ 0x1D552, 0x1D6A5, "Zyyy" },
{ 0x1D6A8, 0x1D7CB, "Zyyy" },
{ 0x1D7CE, 0x1D7FF, "Zyyy" },
{ 0x1D800, 0x1DA8B, "Sgnw" },
{ 0x1DA9B, 0x1DA9F, "Sgnw" },
{ 0x1DAA1, 0x1DAAF, "Sgnw" },
{ 0x1DF00, 0x1DF1E, "Latn" },
{ 0x1DF25, 0x1DF2A, "Latn" },
{ 0x1E000, 0x1E006, "Glag" },
{ 0x1E008, 0x1E018, "Glag" },
{ 0x1E01B, 0x1E021, "Glag" },
{ 0x1E023, 0x1E024, "Glag" },
{ 0x1E026, 0x1E02A, "Glag" },
{ 0x1E030, 0x1E06D, "Cyrl" },
{ 0x1E100, 0x1E12C, "Hmnp" },
{ 0x1E130, 0x1E13D, "Hmnp" },
{ 0x1E140, 0x1E149, "Hmnp" },
{ 0x1E14E, 0x1E14F, "Hmnp" },
{ 0x1E290, 0x1E2AE, "Toto" },
{ 0x1E2C0, 0x1E2F9, "Wcho" },
{ 0x1E4D0, 0x1E4F9, "Nagm" },
{ 0x1E7E0, 0x1E7E6, "Ethi" },
{ 0x1E7E8, 0x1E7EB, "Ethi" },
{ 0x1E7ED, 0x1E7EE, "Ethi" },
{ 0x1E7F0, 0x1E7FE, "Ethi" },
{ 0x1E800, 0x1E8C4, "Mend" },
{ 0x1E8C7, 0x1E8D6, "Mend" },
{ 0x1E900, 0x1E94B, "Adlm" },
{ 0x1E950, 0x1E959, "Adlm" },
{ 0x1E95E, 0x1E95F, "Adlm" },
{ 0x1EC71, 0x1ECB4, "Zyyy" },
{ 0x1ED01, 0x1ED3D, "Zyyy" },
{ 0x1EE00, 0x1EE03, "Arab" },
{ 0x1EE05, 0x1EE1F, "Arab" },
{ 0x1EE21, 0x1EE22, "Arab" },
{ 0x1EE29, 0x1EE32, "Arab" },
{ 0x1EE34, 0x1EE37, "Arab" },
{ 0x1EE4D, 0x1EE4F, "Arab" },
{ 0x1EE51, 0x1EE52, "Arab" },
{ 0x1EE61, 0x1EE62, "Arab" },
{ 0x1EE67, 0x1EE6A, "Arab" },
{ 0x1EE6C, 0x1EE72, "Arab" },
{ 0x1EE74, 0x1EE77, "Arab" },
{ 0x1EE79, 0x1EE7C, "Arab" },
{ 0x1EE80, 0x1EE89, "Arab" },
{ 0x1EE8B, 0x1EE9B, "Arab" },
{ 0x1EEA1, 0x1EEA3, "Arab" },
{ 0x1EEA5, 0x1EEA9, "Arab" },
{ 0x1EEAB, 0x1EEBB, "Arab" },
{ 0x1EEF0, 0x1EEF1, "Arab" },
{ 0x1F000, 0x1F02B, "Zyyy" },
{ 0x1F030, 0x1F093, "Zyyy" },
{ 0x1F0A0, 0x1F0AE, "Zyyy" },
{ 0x1F0B1, 0x1F0BF, "Zyyy" },
{ 0x1F0C1, 0x1F0CF, "Zyyy" },
{ 0x1F0D1, 0x1F0F5, "Zyyy" },
{ 0x1F100, 0x1F1AD, "Zyyy" },
{ 0x1F1E6, 0x1F1FF, "Zyyy" },
{ 0x1F201, 0x1F202, "Zyyy" },
{ 0x1F210, 0x1F23B, "Zyyy" },
{ 0x1F240, 0x1F248, "Zyyy" },
{ 0x1F250, 0x1F251, "Zyyy" },
{ 0x1F260, 0x1F265, "Zyyy" },
{ 0x1F300, 0x1F6D7, "Zyyy" },
{ 0x1F6DC, 0x1F6EC, "Zyyy" },
{ 0x1F6F0, 0x1F6FC, "Zyyy" },
{ 0x1F700, 0x1F776, "Zyyy" },
{ 0x1F77B, 0x1F7D9, "Zyyy" },
{ 0x1F7E0, 0x1F7EB, "Zyyy" },
{ 0x1F800, 0x1F80B, "Zyyy" },
{ 0x1F810, 0x1F847, "Zyyy" },
{ 0x1F850, 0x1F859, "Zyyy" },
{ 0x1F860, 0x1F887, "Zyyy" },
{ 0x1F890, 0x1F8AD, "Zyyy" },
{ 0x1F8B0, 0x1F8B1, "Zyyy" },
{ 0x1F900, 0x1FA53, "Zyyy" },
{ 0x1FA60, 0x1FA6D, "Zyyy" },
{ 0x1FA70, 0x1FA7C, "Zyyy" },
{ 0x1FA80, 0x1FA88, "Zyyy" },
{ 0x1FA90, 0x1FABD, "Zyyy" },
{ 0x1FABF, 0x1FAC5, "Zyyy" },
{ 0x1FACE, 0x1FADB, "Zyyy" },
{ 0x1FAE0, 0x1FAE8, "Zyyy" },
{ 0x1FAF0, 0x1FAF8, "Zyyy" },
{ 0x1FB00, 0x1FB92, "Zyyy" },
{ 0x1FB94, 0x1FBCA, "Zyyy" },
{ 0x1FBF0, 0x1FBF9, "Zyyy" },
{ 0x20000, 0x2A6DF, "Hani" },
{ 0x2A700, 0x2B739, "Hani" },
{ 0x2B740, 0x2B81D, "Hani" },
{ 0x2B820, 0x2CEA1, "Hani" },
{ 0x2CEB0, 0x2EBE0, "Hani" },
{ 0x2EBF0, 0x2EE5D, "Hani" },
{ 0x2F800, 0x2FA1D, "Hani" },
{ 0x30000, 0x3134A, "Hani" },
{ 0x31350, 0x323AF, "Hani" },
{ 0xE0020, 0xE007F, "Zyyy" },
{ 0xE0100, 0xE01EF, "Zinh" },
},
-- Scripts.txt gives full names; here we consider them aliases to save space.
aliases = {
Adlm = "Adlam",
Aghb = "Caucasian Albanian",
Ahom = "Ahom",
Arab = "Arabic",
Armi = "Imperial Aramaic",
Armn = "Armenian",
Avst = "Avestan",
Bali = "Balinese",
Bamu = "Bamum",
Bass = "Bassa Vah",
Batk = "Batak",
Beng = "Bengali",
Bhks = "Bhaiksuki",
Bopo = "Bopomofo",
Brah = "Brahmi",
Brai = "Braille",
Bugi = "Buginese",
Buhd = "Buhid",
Cakm = "Chakma",
Cans = "Canadian Aboriginal",
Cari = "Carian",
Cham = "Cham",
Cher = "Cherokee",
Chrs = "Chorasmian",
Copt = "Coptic",
Cpmn = "Cypro Minoan",
Cprt = "Cypriot",
Cyrl = "Cyrillic",
Deva = "Devanagari",
Diak = "Dives Akuru",
Dogr = "Dogra",
Dsrt = "Deseret",
Dupl = "Duployan",
Egyp = "Egyptian Hieroglyphs",
Elba = "Elbasan",
Elym = "Elymaic",
Ethi = "Ethiopic",
Geor = "Georgian",
Glag = "Glagolitic",
Gong = "Gunjala Gondi",
Gonm = "Masaram Gondi",
Goth = "Gothic",
Gran = "Grantha",
Grek = "Greek",
Gujr = "Gujarati",
Guru = "Gurmukhi",
Hang = "Hangul",
Hani = "Han",
Hano = "Hanunoo",
Hatr = "Hatran",
Hebr = "Hebrew",
Hira = "Hiragana",
Hluw = "Anatolian Hieroglyphs",
Hmng = "Pahawh Hmong",
Hmnp = "Nyiakeng Puachue Hmong",
Hrkt = "Katakana Or Hiragana",
Hung = "Old Hungarian",
Ital = "Old Italic",
Java = "Javanese",
Kali = "Kayah Li",
Kana = "Katakana",
Kawi = "Kawi",
Khar = "Kharoshthi",
Khmr = "Khmer",
Khoj = "Khojki",
Kits = "Khitan Small Script",
Knda = "Kannada",
Kthi = "Kaithi",
Lana = "Tai Tham",
Laoo = "Lao",
Latn = "Latin",
Lepc = "Lepcha",
Limb = "Limbu",
Lina = "Linear A",
Linb = "Linear B",
Lisu = "Lisu",
Lyci = "Lycian",
Lydi = "Lydian",
Mahj = "Mahajani",
Maka = "Makasar",
Mand = "Mandaic",
Mani = "Manichaean",
Marc = "Marchen",
Medf = "Medefaidrin",
Mend = "Mende Kikakui",
Merc = "Meroitic Cursive",
Mero = "Meroitic Hieroglyphs",
Mlym = "Malayalam",
Modi = "Modi",
Mong = "Mongolian",
Mroo = "Mro",
Mtei = "Meetei Mayek",
Mult = "Multani",
Mymr = "Myanmar",
Nagm = "Nag Mundari",
Nand = "Nandinagari",
Narb = "Old North Arabian",
Nbat = "Nabataean",
Newa = "Newa",
Nkoo = "NKo",
Nshu = "Nushu",
Ogam = "Ogham",
Olck = "Ol Chiki",
Orkh = "Old Turkic",
Orya = "Oriya",
Osge = "Osage",
Osma = "Osmanya",
Ougr = "Old Uyghur",
Palm = "Palmyrene",
Pauc = "Pau Cin Hau",
Perm = "Old Permic",
Phag = "Phags Pa",
Phli = "Inscriptional Pahlavi",
Phlp = "Psalter Pahlavi",
Phnx = "Phoenician",
Plrd = "Miao",
Prti = "Inscriptional Parthian",
Rjng = "Rejang",
Rohg = "Hanifi Rohingya",
Runr = "Runic",
Samr = "Samaritan",
Sarb = "Old South Arabian",
Saur = "Saurashtra",
Sgnw = "SignWriting",
Shaw = "Shavian",
Shrd = "Sharada",
Sidd = "Siddham",
Sind = "Khudawadi",
Sinh = "Sinhala",
Sogd = "Sogdian",
Sogo = "Old Sogdian",
Sora = "Sora Sompeng",
Soyo = "Soyombo",
Sund = "Sundanese",
Sylo = "Syloti Nagri",
Syrc = "Syriac",
Tagb = "Tagbanwa",
Takr = "Takri",
Tale = "Tai Le",
Talu = "New Tai Lue",
Taml = "Tamil",
Tang = "Tangut",
Tavt = "Tai Viet",
Telu = "Telugu",
Tfng = "Tifinagh",
Tglg = "Tagalog",
Thaa = "Thaana",
Thai = "Thai",
Tibt = "Tibetan",
Tirh = "Tirhuta",
Tnsa = "Tangsa",
Toto = "Toto",
Ugar = "Ugaritic",
Vaii = "Vai",
Vith = "Vithkuqi",
Wara = "Warang Citi",
Wcho = "Wancho",
Xpeo = "Old Persian",
Xsux = "Cuneiform",
Yezi = "Yezidi",
Yiii = "Yi",
Zanb = "Zanabazar Square",
Zinh = "Inherited",
Zyyy = "Common",
Zzzz = "Unknown",
},
}
-- Required for binary search function in [[Module:Language/scripts]].
-- Cannot get length of module loaded with mw.loadData.
data.ranges.length = #data.ranges
data.rtl = {}
for _, script in ipairs(mw.loadData "Module:Lang/data".rtl_scripts) do
-- [[Module:Lang/data]] has script codes in lowercase;
-- this module has script codes with the first letter capitalized.
data.rtl[script:gsub("^%a", string.upper)] = true
end
return data
6afbaa9e21efd3898f0ff056b5456c0cd5813400
Template:Film- and television-related infobox templates
10
1257
2591
2023-09-15T04:24:20Z
w>InfiniteNexus
0
wikitext
text/x-wiki
{{Navbox
| name = Film- and television-related infobox templates
| title = Film- and television-related infobox templates
| listclass = hlist
| state = {{{state|autocollapse}}}
| group1 = [[Wikipedia:List of infoboxes#Film|Film]]
| list1 =
* [[Template:Infobox film|Film]]
** [[Template:Infobox film/short description|/short description]]
* [[Template:Infobox film or theatre festival|Film or theatre festival]]
* [[Template:Infobox art movement|Art movement]]
* [[Template:Infobox cinema market|Cinema market]]
* [[Template:Infobox movie quote|Movie quote]]
| group2 = [[Wikipedia:List of infoboxes#Television|Television]]
| list2 =
* [[Template:Infobox television|Television]]
* [[Template:Infobox television season|Television season]]
** [[Template:Infobox reality competition season|Reality competition season]]
* [[Template:Infobox television episode|Television episode]]
** [[Template:Infobox television crossover episode|crossover]]
*** [[Template:Infobox television crossover episode/part|/part]]
** ''[[Template:Infobox Doctor Who episode|Doctor Who]]''
** ''[[Template:Infobox Futurama episode|Futurama]]''
** ''[[Template:Infobox Simpsons episode|Simpsons]]''
* [[Template:Infobox animanga/Video|Animanga]]
| group3 = Misc video
| list3 =
* ''[[Template:Infobox Paris by Night|Paris by Night]]''
* [[Template:Infobox machinima|Machinima]]
| group4 = Industry
| list4 =
* [[Template:Infobox award|Award]]
* [[Template:Infobox awards list|Awards list]]
* [[Template:Infobox film awards|Film awards]]
** [[Template:Infobox film awards/link|/link]]
** [[Template:Infobox film awards/style|/style]]
* [[Template:Infobox broadcasting network|Broadcasting network]]
* [[Template:Infobox television channel|Television channel]]
* [[Template:Infobox television station|Television station]]
* [[Template:Infobox programming block|Programming block]]
* [[Template:Infobox presenter|Presenter]]
| group5 = [[Wikipedia:List of infoboxes#Photography|Technical]]
| list5 =
* [[Template:Infobox camera|Camera]]
* [[Template:Infobox movie camera|Movie camera]]
* [[Template:Infobox camera mount|Camera mount]]
* [[Template:Infobox photographic lens|Photographic lens]]
* [[Template:Infobox lens design|Lens design]]
* [[Template:Infobox photographic film|Photographic film]]
| group6 = [[Wikipedia:List of infoboxes#Fictional elements|Fiction]]
| list6 =
* [[Template:Infobox fictional artifact|Artifact]]
* [[Template:Infobox character|Character]]
** [[Template:Infobox Doctor Who doctor|Doctor Who doctor]]
** [[Template:Infobox G.I. Joe character|''G.I. Joe'']]
** [[Template:Infobox soap character|Soap opera]]
* [[Template:Infobox fictional family|Family]]
** [[Template:Infobox fictional family/member|Family member]]
* [[Template:Infobox fictional location|Location]]
* [[Template:Infobox fictional organisation|Organisation]]
* [[Template:Infobox fictional race|Race]]
* [[Template:Infobox fictional vehicle|Vehicle]]
| group7 = Template modules
| list7 =
* [[Template:Infobox name module|Name module]]
* [[Template:Based on|Based on]]
* [[Template:Infobox person|Person]]
* [[Template:Listen|Listen]]
| group8 = Related
| list8 =
* [[Template:Infobox advertising|Advertising]]
* [[Template:Infobox media franchise|Media franchise]]
* [[Template:Infobox audio drama|Audio drama]]
* [[Template:Infobox podcast|Podcast]]
* [[Template:Infobox radio station|Radio station]]
* [[Template:Infobox radio show|Radio show]]
}}<noinclude>
{{Documentation}}
</noinclude>
194d6ca46eda0a7ea7550c9c6dce0440fc9c303e
Template:Language templates
10
444
1061
2023-09-16T04:59:36Z
wikipedia>Nardog
0
distracting
wikitext
text/x-wiki
{{Sidebar
| name = Language templates
| width = 238px
| bodystyle = border-spacing:0;background:#f7f7f7;padding:2px;
| titlestyle = background:#ccccff;
| title = Language templates
| contentclass = plainlist
| contentstyle = padding:0.25em;background:#fdfdfd;
| navbarstyle = background:#fdfdfd;padding:0 5px
| heading1 = Language names ([[ISO 639]])
| content1 =
* {{tl|ISO 639 name}}
| heading2 = Interwiki links
| content2 =
* {{tl|Wikt-lang}}
* [[Module:Language]]
* {{tl|Interlanguage link}}
| heading5 = Foreign-language text
| content5 =
* {{tl|Lang}}
* [[Module:Lang]]
* {{tl|Transliteration}}
* {{tl|Title language}}
* {{tl|PIE}}
| heading6 = Other
| content6 =
* {{tl|IPA}}
* [[Module:Language/data]]
* [[:Category:Wikipedia multilingual support templates]]
}}<noinclude>
{{Documentation|content=
[[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]].
}}
[[Category:Documentation see also templates]]
</noinclude>
f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7
Template:Infobox German place/doc
10
1436
2771
2023-09-17T02:53:11Z
Pppery
6
-
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Uses Infobox settlement}}
{{Lua|Module:String|Module:Check for unknown parameters}}
{{Uses Wikidata|P2046}}
=== Infobox for cities, towns and municipalities in Germany ===
New infobox that combines features of [[:de:Vorlage:Infobox Gemeinde in Deutschland]] and [[Template:Infobox settlement]], plus a few extra things.
== Syntax - German parameters ==
Also see English parameters in next section, or see:
<span style="background:yellow">'''[[Template:Infobox German place/Instructions|instructions for full syntax]]'''</span>
List of basic German-name parameters (skip any unneeded fields):
<nowiki>{{Infobox German place
| Name =
| German_name =
| Art =
| image_photo =
| imagesize =
| image_caption =
| Wappen =
| image_flag =
| coordinates = {{Coord}}
| Lageplan =
| Lageplanbeschreibung =
| Bundesland = required parameter
| Regierungsbezirk =
| Landkreis =
| Kreis =
| Amt =
| Gemeindeverwaltungsverband =
| Samtgemeinde =
| Verbandsgemeinde =
| Verwaltungsgemeinschaft =
| Verwaltungsverband =
| Höhe = elevation
| elevationmax = "X-Xmax m (y-ymax ft)" Xmax is optional elevationmax
| Fläche =
| area_metro =
| pop_metro =
| PLZ =
| Vorwahl =
| Kfz =
| Gemeindeschlüssel =
| Gliederung =
| Website =
| Bürgermeister =
| Bürgermeistertitel =
| leader_term =
| Partei =
| ruling_party1 =
| ruling_party2 =
| ruling_party3 =
| year =
| _noautocat =
}}</nowiki>
== Syntax - English parameters ==
<span style="background:yellow">'''[[Template:Infobox German location/Instructions|Click here to see instructions for full syntax information]]'''</span>
List of English-name alias parameters (skip any unneeded fields):
<nowiki>{{Infobox German place
| name = (or 'Name') English name of the place
| German_name = German name of the place
| image_photo = image file for top image (omit "Image:")
| imagesize = width of image_photo (default 268px)
| image_caption = phrase shown beneath top image
| image_coa = (or 'Wappen') image file of town seal
| image_flag = image file of town flag
| coordinates = latitude and longitude; use {{Coord}}
| image_plan = (or 'Lageplan') image file of bottom closeup map
| plantext = (or 'Lageplanbeschreibung') heading above bottom map
| state = (or 'Bundesland') required parameter
| region = (or 'Regierungsbezirk') optional region name
| district = (or 'Landkreis' or 'Kreis') name of district
| borough = 'Stadtkreis' or 'Bezirk', borough if subdivision
| Amt =
| Gemeindeverwaltungsverband =
| Samtgemeinde =
| Verbandsgemeinde =
| Verwaltungsgemeinschaft =
| Verwaltungsverband =
| type = type of subdivision, e.g. borough or quarter (locality)
| City = city, if subdivision
| Town = town, if subdivision
| elevation = (or 'Höhe') meters above sea-level (converts to ft)
| elevationmax = "X-Xmax m (y-ymax ft)" Xmax is optional elevationmax
| area = (or 'Fläche') area of location in square km
| area_metro = area of metro part in square km
| pop_metro = population of metro part (without commas)
| postal_code = (or 'PLZ') postal or ZIP codes
| area_code = (or 'Vorwahl') telephone area code
| licence = (or 'Kfz' or 'license') licence plate code
| Gemeindeschlüssel =
| divisions = (or 'Gliederung') divisions, such as "5 boroughs"
| mayor = (or 'Bürgermeister') name of leader
| Bürgermeistertitel = official title of leader
| leader_term = term in office for leader
| party = (or 'Partei') political party of leader
| ruling_party1 =
| ruling_party2 =
| ruling_party3 =
| year = year founded
| website = (or 'Website') URL of location website
| _noautocat =
}}</nowiki>
== Important features ==
Since [[:de:Vorlage:Infobox Gemeinde in Deutschland]] is being introduced to many German locations in the German Wikipedia, the variable fields here use the same names to make it easier for editors to import infobox information from the German Wikipedia to the English one. <br>For many fields, German values can be given (i.e. without translation to English) and will be displayed in English.
* e.g., By entering "Bundesland = Bayern", the infobox will display "State: Bavaria"
The variables with English names relate to features that do not exist in ''Infobox Ort in Deutschland''.
Major new features, compared to {{tlc|Infobox Town DE}}:
* No longer need a location map for each entry. By entering the geographical co-ordinates, a map is automatically displayed.
* Population data automatically transcluded from {{tl|Population Germany}}.
* Area, population density and elevation automatically displayed in both metric and imperial units
* Auto-categorisation of entries, depending on values entered
* Optional 2nd map (''Lageplan'') at bottom, to display location in more detail.
Major new features, compared to [[:de:Vorlage:Infobox Ort in Deutschland]]:
* Can give year of city foundation: places article in "Category: xxxx establishments"
* Can display representative photo of location (a feature of Infobox Town DE, which, for some reason, was never used) (e.g. see: ''[[Cologne]]'')
* In addition to displaying the political party of the mayor/lord mayor/etc., it is also possible to display the ruling parties. Currently, a coalition of up to 3 parties is supported - if more are needed, please report it on the template talk page. (e.g. see: ''[[Braunschweig]]'').
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"borough": {
"label": "borough",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false
},
"imagesize": {
"label": "Imagesize",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Avoid. Use only when it is necessary to reduce the size of the above image from its default value of 268px. Tall images could be reduced, such as 220px, to balance the infobox appearance."
},
"image_caption": {
"label": "Image caption",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Caption underneath representative image. Keep as short as possible. Allows wikilinks"
},
"Bürgermeistertitel": {
"label": "Bürgermeistertitel",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Title: Mayor / Bürgermeister, Lord Mayor / Oberbürgermeister, Ortsbürgermeister, Ortsvorsteher etc. Use wikilinks only if linking to a specific article (eg. [[List of mayors of Bremen|Mayor]]). Default is \"Mayor\""
},
"area_metro": {
"label": "area_metro",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Are of metropolitan area in square kilometres. Will automatically calculate value in square miles. Enter value without spaces or commas, otherwise an error message will be displayed in the area field. Only the bigger cities will have a need for this field."
},
"Gemeindeschlüssel": {
"label": "Gemeindeschlüssel",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "The Gemeindeschlüssel is the code for the municipalities, cities, districts etc. as used by the German statistics offices. For municipalities and cities this is an 8-digit number, either formatted \"XX X XX XXX\" or unformatted. This infobox uses this code to retrieve the municipality population from a database, see {{Population Germany}}. The code is not displayed. It is required for independent municipalities and cities. For dependent areas and settlements (quarters, boroughs, villages) use the \"Einwohner\" or \"population\" field."
},
"Stand": {
"label": "Stand",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Date for population value. Enter in YYYY-MM-DD format (eg. 2006-12-31)",
"aliases": [
"population_as_of"
]
},
"pop_metro": {
"label": "Pop metro",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Population of metropolitan area. Only the bigger cities will have a need for this field."
},
"pop_urban": {
"label": "Pop urban",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Population of urban area. Only the bigger cities will have a need for this field."
},
"pop_ref": {
"label": "Pop ref",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Source for population statistic(s). Needed only for places that do not have automatic population updates using the Gemeindeschlüssel/key parameter. This field must use the <ref>-code, citing the document or website. When this field is filled in, you must add a references section at the end of the article if it does not already have one. (eg. with {{reflist}}) Citation examples: 1. Minimum requirement: pop_ref=<ref>[http://www.samplesite.de Population source]</ref> 2. Expanded syntax:<ref>{{cite web |title=Bevölkerung im Regierungsbezirk Köln |url=http://www.lds.nrw.de/statistik/datenangebot/Regionen/amtlichebevoelkerungszahlen/rp3_juni06.html |author=Landesamt für Datenverarbeitung und Statistik Nordrhein-Westfalen |accessdate=2007-04-25 |language=German}}</ref>"
},
"year": {
"label": "Year",
"type": "number",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Year of foundation, NOT the year of the first recorded mention of the location."
},
"_noautocat": {
"label": "Noautocat",
"type": "string",
"required": false,
"suggested": false,
"deprecated": false,
"description": "Give a value of \"yes\" to prevent auto-categorisation. Used only on draft articles (i.e. in the User space)"
},
"name": {
"aliases": [
"Name"
],
"label": "Name",
"description": "Common English name of location. Use only if name is different from article name",
"type": "string"
},
"German_name": {
"label": "German name",
"description": "German name of location. Use only if name is different from English name.",
"type": "string"
},
"type": {
"aliases": [
"Art"
],
"description": "Needed. Type of location. Also used for article categorisation. Accepts German and English names. Accepted values: * Municipality / Gemeinde - default * Town / Stadt - if the municipality has town-rights (ie. it appears on this list) * City - towns with more than 100,000 people (ie. it appears on this list) * Amt / Gemeindeverwaltungsverband / Samtgemeinde / Verbandsgemeinde / Verwaltungsgemeinschaft / Verwaltungsverband - collective municipality * Ortsteil / Stadtteil / Borough / Quarter etc. - subdivision of a city, town or municipality",
"type": "string"
},
"image_photo": {
"aliases": [
"image_skyline"
],
"label": "Image photo ",
"description": "The top image, a representative photo of the location: skyline, notable landmark, etc. The image used should be wider than it is tall, to keep the infobox as compact as possible. No wikilinks.",
"type": "string"
},
"City": {
"aliases": [
"Town",
"Municipality"
],
"label": "City or Town or Municipality",
"description": "Used for places that are subdivisions of cities, towns or municipalities. Use the field name that corresponds with the higher administrative unit (e.g. \"City = Berlin\" for parts of Berlin, \"Town = Memmingen\" for parts of Memmingen, \"Municipality = Sassenburg\" for parts of Sassenburg).",
"type": "string"
},
"image_coa": {
"aliases": [
"Wappen"
],
"label": "Wappen or image_coa",
"description": "Coat of arms image. No wikilinks. Leave blank if image is unknown or unavailable. If the location simply does not have a coat of arms, put: Wappen = none.",
"type": "string"
},
"state": {
"aliases": [
"Bundesland"
],
"label": "Bundesland or state",
"description": "Needed. Federal state to which the location belongs. No wikilinks. Accepts English and German names, translates many names to English.",
"type": "string",
"required": true
},
"region": {
"aliases": [
"Regierungsbezirk",
"regbzk"
],
"label": "Regierungsbezirk or region",
"description": "Name of the administrative region (Regierungsbezirk) that the location belongs to. Not used for all states. Regierungsbezirk articles on the English wiki are named \"xxxx (region)\", so only the name of the region is needed here (without wikilinks) and the infobox should link to the correct article.",
"type": "string"
},
"district": {
"aliases": [
"Kreis",
"Landkreis"
],
"label": "Kreis / Landkreis or district",
"description": "Needed. District that the location belongs to. If the location is an urban district, say Kreis = urban. District articles on the English wiki are named \"xxxx (district)\" or without the \"(district)\" part. For most cases, only the name of the district (xxxx) is needed here (without wikilinks) and the infobox should link to the correct article.",
"type": "string"
},
"Amt": {
"aliases": [
"Gemeindeverwaltungsverband",
"Samtgemeinde",
"Verbandsgemeinde",
"Verwaltungsgemeinschaft",
"Verwaltungsverband"
],
"label": "Amt, Gemeindeverwaltungsverband, Samtgemeinde, Verbandsgemeinde, Verwaltungsgemeinschaft, Verwaltungsverband",
"description": "Some locations belong to a collective municipality of some sort. Fill in the corresponding field and delete all unused fields.",
"type": "string"
},
"divisions": {
"aliases": [
"Gliederung"
],
"label": "Gliederung or divisions",
"description": "Local subdivisions. When copying towninfo directly from the German wiki, please translate content of this field to English and remove any red links.",
"type": "string"
},
"mayor": {
"aliases": [
"Bürgermeister"
],
"label": "Bürgermeister or mayor",
"description": "Name of the mayor/lord mayor/etc. Wikilinks automatically generated if the entry exists.",
"type": "string"
},
"party": {
"aliases": [
"Partei"
],
"label": "Partei or party",
"description": "Political party of Mayor/Lord Mayor/etc. Use standard party abbreviations (CDU, SPD, Green, FDP, PDS, FWG, etc.) and the correct wikilinks should be generated (if not, leave a comment on the template talk page). For independent politicians, say Partei=ind",
"type": "string"
},
"ruling_party1": {
"aliases": [
"ruling_party2",
"ruling_party3"
],
"label": "ruling_party1, ruling_party2, ruling_party3",
"description": "Party or parties that govern this location. Fill in this field in the same way as the Partei field.",
"type": "string"
},
"area": {
"aliases": [
"Fläche"
],
"label": "Fläche or area",
"description": "Area in square kilometres. Will automatically calculate value in square miles. Enter value without spaces or commas, otherwise an error message will be displayed in the area field.",
"type": "string"
},
"elevation": {
"aliases": [
"Höhe"
],
"label": "Höhe or elevation",
"description": "Elevation in metres. Will automatically calculate value in feet. For some entries, a range of elevation values is given in the German wiki. To prevent an error in the conversion to feet, any range values must use a simple minus sign instead of any other dash characters. Elevation ranges will not be converted to feet.",
"type": "string"
},
"population": {
"aliases": [
"Einwohner"
],
"label": "Einwohner or population",
"description": "Population. Don't use this for independent municipalities and cities, use the \"Gemeindeschlüssel\" field instead. If area is also given, population density will also be calculated. Enter value without spaces or commas, otherwise an error message will be displayed in the density field.",
"type": "string"
},
"licence": {
"aliases": [
"Kfz"
],
"label": "Kfz or licence",
"description": "Car number plate code for the location (1-3 capital letters).",
"type": "string"
},
"area_code": {
"aliases": [
"Vorwahl"
],
"label": "Vorwahl or area_code",
"description": "Telephone area code. If various values are given, display as a simple range (if possible). Avoid descriptions of each code.",
"type": "number"
},
"postal_code": {
"aliases": [
"PLZ"
],
"label": "PLZ or postal_code",
"description": "[edit] Postal code. If various values are given, display as a simple range (if possible). Avoid descriptions of each code.",
"type": "number"
},
"website": {
"aliases": [
"Website"
],
"label": "Website",
"description": "Official website of the location. Trim displayed URL as much as possible. (eg. Website=[http://www.samplesite.de samplesite.de])",
"type": "wiki-page-name"
},
"image_plan": {
"aliases": [
"Lageplan"
],
"label": "Lageplan or image_plan",
"description": "Zoomed-in map image displaying location within a region of Germany (e.g., a state or a Kreis), with optional width, plansize=265px. ",
"type": "string"
},
"plantext": {
"aliases": [
"Lageplanbeschreibung"
],
"label": "Lageplanbeschreibung or plantext",
"description": "Caption for map image given by Lageplan. The template will attempt to automatically create a caption, using values given for other fields. If the caption does not match with the image, use this field to manually enter a caption.",
"type": "string"
},
"image_flag": {
"description": "Flag image. Plain file name, no wikilinks or size."
},
"coordinates": {
"description": "Use the {{coord}} template"
},
"year_of_first_mention": {
"description": "year of the first recorded mention of the location.",
"type": "number"
},
"pop_demonym": {
"aliases": [
"demonym"
],
"description": "Demonym "
},
"footnotes": {},
"dissolved": {
"description": "If the administrative unit was disbanded: the date when it was disbanded"
},
"leader_term": {
"description": "Term for elected mayors",
"example": "2019–2024"
}
},
"paramOrder": [
"name",
"German_name",
"type",
"City",
"borough",
"image_photo",
"imagesize",
"image_caption",
"image_coa",
"state",
"region",
"district",
"Amt",
"divisions",
"mayor",
"Bürgermeistertitel",
"party",
"ruling_party1",
"area",
"area_metro",
"elevation",
"Gemeindeschlüssel",
"population",
"Stand",
"pop_metro",
"pop_urban",
"pop_ref",
"licence",
"area_code",
"postal_code",
"year",
"website",
"image_plan",
"plantext",
"_noautocat",
"image_flag",
"coordinates",
"year_of_first_mention",
"pop_demonym",
"footnotes",
"dissolved",
"leader_term"
]
}
</templatedata>
== Microformat ==
{{UF-hcard-geo}}
== Tracking categories ==
* {{clc|Pages using infobox German place with unknown parameters}}
* {{clc|Pages using infobox German place with an elevation range}}
* {{clc|Germany articles requiring maintenance}}
== See also ==
* [[Wikipedia:Uploading metadata to Wikidata]]
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Templates with coordinates fields|Infobox German location]]
[[Category:Germany subdivision infobox templates|4]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
979010cf2e5ae975e444a77615b6a20c498a560e
Template:Infobox officeholder/office
10
158
369
2023-09-17T22:18:03Z
wikipedia>Neveselbert
0
conditional
wikitext
text/x-wiki
{{#if:{{{speaker|}}}{{{state_legislature|}}}{{{state_assembly|}}}{{{speaker_office|}}}{{{state_delegate|}}}{{{state_house|}}}{{{prior_term|}}}{{{nominee|}}}{{{candidate|}}}{{{termstart|}}}{{{election_date|}}}{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}{{{jr/sr|}}}{{{succeeding|}}}{{{assuming|}}}{{{state|}}}{{{jr/sr and state|}}}{{{state_senate|}}}{{{district|}}}{{{ambassador_from|}}}{{{minister_from|}}}{{{order|}}}{{{office|}}}{{{title|}}}{{{country|}}}{{{constituency_AM|}}}{{{constituency_MP|}}}{{{parliament|}}}{{{assembly|}}}{{{constituency_|}}}{{{riding|}}}{{{term|}}}{{{termend|}}}{{{alongside|}}}{{{co-leader|}}}
|{{#invoke:infobox|infoboxTemplate|child=yes|decat=yes
| headerstyle = background:{{{color|lavender}}};line-height:normal;padding:0.2em;
| datastyle = border-bottom:none
<!--------Speaker of the House--------->
| header1 = {{#if:{{{speaker|}}}|
{{{speaker}}} {{#if:{{{state_legislature|}}}
|[[Speaker of the {{{state_legislature}}} Legislature]]
|{{#if:{{{state_assembly|}}}
|[[Speaker of the {{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]
|{{#if:{{{speaker_office|}}}|{{{speaker_office}}}|[[Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|United States}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}|Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|U.S.}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}]]}}
}}
}}{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}}
<!--------Office--------->
| header2 = {{#if:{{{nominee|}}}{{{candidate|}}}|
{{#if:{{{party_election|}}}{{{party|}}}
|{{#if:{{{party_election|}}}|{{{party_election}}}|{{{party}}}}} {{#if:{{{nominee|}}}|nominee for<br>{{{nominee}}}|candidate for<br>{{{candidate}}}}}
|{{#if:{{{nominee|}}}|Nominee for<br>{{{nominee}}}|Candidate for<br>{{{candidate}}}}}
}} }}
| data3 = {{#if:{{{nominee|}}}{{{candidate|}}}|
{{#if:{{{termstart|}}}{{{election_date|}}} | <span class="nowrap">'''Election date'''</span><br />{{#if:{{{election_date|}}}|{{{election_date}}}|{{{termstart}}}}}
}} }}
| header4 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{jr/sr|}}}|[[United States Senate|<!--Changed code to eliminate "Junior/Senior" distinction for U.S. Senators per [[Template talk:Infobox Officeholder/Archive 9#Senior/Junior U.S. Senators]]{{{jr/sr}}}-->United States Senator{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}}]]<br />from {{{state}}}
}} }}
| header5 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{{jr/sr and state|}}}
}}
| header6 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{state_senate|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_senate}}} Senate]]</span><br />from the {{{district}}} district{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}} }}
| header7 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{state_legislature|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_legislature}}} Legislature]]</span><br />from the {{{district}}} district
}} }}
| header8 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}||
{{#if:{{{order|}}}
|{{{order}}}{{#if:{{{office|}}} | [[{{{office}}}]]}}{{#if:{{{state|}}} | [[{{{state}}}]]}}{{#if:{{{title|}}} | {{{title}}}}}
|{{{office|}}}
}} }}
| header9 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}||
{{#if:{{{order|}}}
||{{{title|}}}
}} }}
<!--------Ambassador--------->
| header10 = {{#if:{{both|{{{ambassador_from|}}}{{{minister_from|}}}|{{{country|}}}}}
|{{#if:{{{order|}}}|{{{order}}}}} {{#if:{{{minister_from|}}}
|[[{{{minister_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{minister_from}}} Minister to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]]
|[[{{{ambassador_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{ambassador_from}}} Ambassador to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]]
}} [[Category:Pages using infobox officeholder with ambassador from or minister from]]
}}
<!--------MP--------->
| header11 = {{#if:{{{constituency_AM|}}}{{{constituency_MP|}}}|
{{#switch:{{{parliament|}}}
|Australian = Member of the <span style="display: inline-block;">[[Australian House of Representatives|Australian Parliament]]</span>
|European = [[Member of the European Parliament]]
|Scottish = [[Member of the Scottish Parliament]]
|Sri Lanka|Sri Lankan = [[Member of Parliament (Sri Lanka)|Member of Parliament]]
|United Kingdom|UK = [[Member of Parliament (United Kingdom)|Member of Parliament]]
|#default = {{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{#ifeq:{{Title disambig text|{{{constituency_MP|}}}}}|UK Parliament constituency
|{{{constituency_MP|}}}
|{{#if:{{#switch:{{{parliament|}}} |United Kingdom|UK| = {{Linkless exists|{{delink|{{{constituency_MP|}}}}} (UK Parliament constituency)}} }}
|{{#if:{{Constlk|{{delink|{{{constituency_MP|}}}}}}}
|{{Constlk|{{delink|{{{constituency_MP|}}}}}}}
|{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}}
|{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}}
}}{{#if:{{{prior_term|}}}|
<div style="font-weight:normal;">{{{prior_term}}}</div>}}
}}
| header12 = {{#if:{{{riding|}}}|{{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|
{{#switch:{{{parliament|}}}
|Canadian = [[Member of Parliament (Canada)|Member of Parliament]]
|#default = Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{{riding}}}
}}
<!--------Majority Leader (State Senate)--------->
| header13 = {{#if:{{{majority_leader|}}}|{{{majority_leader}}} {{#if:{{{state_senate|}}}|[[Majority Leader of the {{{state_senate}}} Senate]]|[[United States Senate Majority Leader]]}}
}}
<!--------Majority Floor Leader (State Senate)--------->
| header14 = {{#if:{{{majority_floor_leader|}}}|{{{majority_floor_leader}}} [[Majority Floor Leader of the {{{state_senate}}} Senate]]
}}
<!--------Minority Leader (State Senate)--------->
| header15 = {{#if:{{{minority_leader|}}}|{{{minority_leader}}} [[Minority Leader of the {{{state_senate}}} Senate]]
}}
<!--------Minority Floor Leader (State Senate)--------->
| header16 = {{#if:{{{minority_floor_leader|}}}|{{{minority_floor_leader}}} [[Minority Floor Leader of the {{{state_senate}}} Senate]]
}}
<!--------Congressman--------->
| header17 = {{#if:{{{state_legislature|}}}{{{state_senate|}}}{{{jr/sr|}}}{{{jr/sr and state|}}}||
{{#if:{{#if:{{{state|}}}|{{{constituency|}}}}}{{{district|}}}{{{state_house|}}}|{{#if:{{{state_assembly|}}}
|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]</span><br />from the
|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|United States }}}} {{#if:{{{state_delegate|}}}|House of Delegates|House of Representatives}}|{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|U.S.}}}} {{#if:{{{state_delegate|}}}|House of Delegates|{{#if:{{{state_house|}}}| }}House of Representatives}}]]</span>{{#if:{{{district|}}}{{{state|}}}{{{state_delegate|}}}{{{state_house|}}}|<br />from {{#if:{{{state_delegate|}}}|the |{{#if:{{{state_house|}}}|{{#if:{{{district|}}}|the|{{{state|}}}}}|{{{state|}}}{{#if:{{{district|}}}|'s}}}}}}
}}}} {{#if:{{{district|}}}|{{{district}}} district|{{#if:{{{state_house|}}}|{{{constituency|}}}}}}}{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}}
}}
<!--------Convocation--------->
| header18 = {{#if:{{{convocation|}}}|{{{convocation}}}}}
<!--------Term--------->
| data19 = {{#if:{{{termend|}}}{{{succeeding|}}}{{{assuming|}}}|
{{#if:{{{status|}}}
| <div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|}}|
}}
| data20 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
| <span class="nowrap">'''Assuming office'''</span><br />{{{termstart}}}{{#if:{{{term|}}}{{{termend|}}}|[[Category:Pages using infobox officeholder with succeeding and term or termend]]}}
| {{#if: {{{term|}}} | <span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{{term}}} }}
}} }}
| data21 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
|
|{{#if:{{{termstart|}}}
| {{#if:{{{termend|}}}
|<!--then: term has start and end:--><span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{en dash range|{{{termstart}}}|{{{termend}}}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leading}} with {{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}}
|{{#if:{{{status|}}}|<div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|<!--else: term is ongoing--><div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''[[Incumbent]]'''</div>}}
}}
}}
}} }}
| data22 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
|
|{{#if:{{{termstart|}}}
|{{#if:{{{termend|}}}
|<!--then nothing else; term has ended-->
|<!--else term is ongoing:--><span class="nowrap">'''{{#if:{{{termlabel|}}}|{{str rep|1={{{termlabel}}}|2=In office|3=Assumed office}}|Assumed office}}'''</span> <br />{{{termstart}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leader}} with {{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}}
}}
}}
}} }}
}} }}<!--
end infobox1 / start infobox2
-->{{#if:{{{monarch|}}}{{{president|}}}{{{governor-general|}}}{{{governor_general|}}}{{{primeminister|}}}{{{chancellor|}}}{{{minister|}}}{{{taoiseach|}}}{{{firstminister|}}}{{{chiefminister|}}}{{{premier|}}}{{{governor|}}}{{{lieutenant_governor|}}}{{{vicepresident|}}}{{{vicegovernor|}}}{{{viceprimeminister|}}}{{{vicepremier|}}}{{{deputy|}}}{{{leader|}}}{{{lieutenant|}}}{{{nominator|}}}{{{appointer|}}}{{{opponent|}}}{{{incumbent|}}}{{{succeeding|}}}{{{assuming|}}}{{{preceding|}}}{{{predecessor|}}}{{{preceded|}}}{{{successor|}}}{{{succeeded|}}}{{{parliamentarygroup|}}}{{{constituency|}}}{{{majority|}}}{{{suboffice|}}}{{{1namedata|}}}{{{2namedata|}}}{{{3namedata|}}}{{{4namedata|}}}{{{5namedata|}}}{{{runningmate|}}}|
{{#invoke:infobox|infoboxTemplate|child=yes
| labelstyle = text-align:left
| label1 = <span class="nowrap">Nominated by</span>
| data1 = {{{nominator|}}}
| label2 = <span class="nowrap">Appointed by</span>
| data2 = {{{appointer|}}}
<!--------President, Prime Minister, Governor--------->
| label3 = Monarch{{#if:{{detect singular|{{{monarch|}}}}}||s}}
| data3 = {{{monarch|}}}
| label4 = President
| data4 = {{{president|}}}
| label5 = {{#if:{{{governor_general|}}}|Governor{{#if:{{detect singular|{{{governor_general}}}}}||s}} General|Governor{{#if:{{detect singular|{{{governor-general}}}}}||s}}-General}}
| data5 = {{#if:{{{governor_general|}}}|{{{governor_general}}}|{{{governor-general|}}}}}
| label6 = <span class="nowrap">Prime Minister</span>
| data6 = {{{primeminister|}}}
| label7 = Chancellor
| data7 = {{{chancellor|}}}
| label8 = Minister
| data8 = {{{minister|}}}
| label9 = Taoiseach
| data9 = {{{taoiseach|}}}
| label10 = <span class="nowrap">First Minister</span>
| data10 = {{{firstminister|}}}
| label11 = <span class="nowrap">Chief Minister</span>
| data11 = {{{chiefminister|}}}
| label12 = Premier
| data12 = {{{premier|}}}
| label13 = Governor
| data13 = {{{governor|}}}
| label14 = Lieutenant Governor
| data14 = {{{lieutenant_governor|}}}
<!--------Vice president/s, Vice Prime Minister/s, Deputy/ies, Lieutenant/s--------->
| label15 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice President]]|Vice President}}|Vice President}}</span>
| data15 = {{{vicepresident|}}}
| label16 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Governor]]|Vice Governor}}|Vice Governor}}</span>
| data16 = {{{vicegovernor|}}}
| label17 = <span class="nowrap">{{#if:{{{office|}}}|[[Vice {{{office}}}|Vice PM]]|Vice [[Prime Minister|PM]]}}</span>
| data17 = {{{viceprimeminister|}}}
| label18 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Premier]]|Vice Premier}}|Vice Premier}}</span>
| data18 = {{{vicepremier|}}}
| label19 = {{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Deputy {{{office}}}}}|valid|[[Deputy {{{office}}}|Deputy]]|Deputy}}|Deputy}}
| data19 = {{{deputy|}}}
| label20 = Leader
| data20 = {{{leader|}}}
| label21 = {{#if:{{{office|}}}|[[Lieutenant {{{office}}}|Lieutenant]]|Lieutenant}}
| data21 = {{{lieutenant|}}}
| label22 = {{nowrap|{{{subterm|}}}}}
| data22 = {{{suboffice|}}}
<!--------Blank fields--------->
| label23 = {{{1blankname|}}}
| data23 = {{{1namedata|}}}
| label24 = {{{2blankname|}}}
| data24 = {{{2namedata|}}}
| label25 = {{{3blankname|}}}
| data25 = {{{3namedata|}}}
| label26 = {{{4blankname|}}}
| data26 = {{{4namedata|}}}
| label27 = {{{5blankname|}}}
| data27 = {{{5namedata|}}}
<!--------Predecessor/successor--------->
| label28 = <span class="nowrap">Running mate</span>
| data28 = {{{runningmate|}}}
| label29 = Opponent{{Pluralize from text|{{{opponent|}}}|likely=(s)|plural=s}}
| data29 = {{{opponent|}}}
| label30 = Incumbent
| data30 = {{{incumbent|}}}
| label31 = {{#if:{{{succeeding|}}}|Succeeding|Preceding}}
| data31 = {{#if:{{{succeeding|}}}|{{{succeeding|}}}|{{{preceding|}}}}}
| label32 = <span class="nowrap">Preceded by</span>
| data32 = {{#if:{{{succeeding|}}}||{{#if:{{{predecessor|}}}|{{{predecessor}}}|{{{preceded|}}}}}}}
| label33 = <span class="nowrap">Succeeded by</span>
| data33 = {{#if:{{{succeeding|}}}||{{#switch:{{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}}
| Incumbent
| '''Incumbent'''
| ''Incumbent''
| [[Incumbent]]
| incumbent
| '''incumbent'''
| ''incumbent''
| [[incumbent]] =
| #default = {{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}}
}}}}
<!--------Constituency/Majority--------->
| label34 = [[Parliamentary group]]
| data34 = {{{parliamentarygroup|}}}
| label35 = Constituency
| data35 = {{#if:{{{state_house|}}}||{{{constituency|}}}}}
| label36 = Majority
| data36 = {{{majority|}}}
}} }}<noinclude>{{documentation}}</noinclude>
78e1d0c6824133f19dbb0aa4c7571c928b233dbc
Template:Ambox/doc
10
1309
2644
2023-09-17T23:40:21Z
w>Paine Ellsworth
0
fmt
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
{{High-use}}
{{Lua|Module:Message box}}
{{Mbox templates (small)}}
{{tl|Ambox}} stands for '''A'''rticle '''m'''essage '''box''', which is a [[Help:Metatemplating|metatemplate]]. It is used to build message boxes for templates used in '''articles''', such as {{tl|underlinked}}. It offers several different colours, images and some other features.
==Basic usage==
The box below shows the most common parameters that are accepted by {{Tl|Ambox}}. The purpose of each is described below.
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Ambox
| name =
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type =
| image =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| cat =
| all =
}}
</syntaxhighlight>
==Full usage==
{{Hidden begin |title=Full parameters| titlestyle = background:palegreen;}}
The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously.
{| class="wikitable" align="left" style="background:transparent; width=30%;"
!All parameters
|-
|<syntaxhighlight lang="wikitext" style="font-size:100%">
{{Ambox
| name =
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| small = {{{small|}}}
| type =
| image =
| imageright =
| smallimage =
| smallimageright =
| class =
| style =
| textstyle =
| sect = {{{1|}}}
| issue =
| talk = {{{talk|}}}
| fix =
| date = {{{date|}}}
| text =
| smalltext =
| plainlinks = no
| removalnotice =
| cat =
| all =
| cat2 =
| all2 =
| cat3 =
| all3 =
}}
</syntaxhighlight>
|}
{{Hidden end}}
{{clear}}
==Common parameters==
=== ''name'' ===
The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example {{Tl|Underlinked}} specifies {{Para|name|Underlinked}}.
This parameter should be updated if the template is ever moved. The purpose of this parameter is twofold:
* If incorrectly [[Wikipedia:Substitution|substituted]], it allows the meta-template to notify the name of the template which has been substituted, which may help editors to fix the problem.
* It allows the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself.
=== ''subst'' ===
The ''subst'' parameter allows the meta-template to detect whether the template has been incorrectly substituted, and give an appropriate warning. It will also add such pages to [[:Category:Pages with incorrectly substituted templates]]. Just copy the code exactly as it appears in the box.
=== ''small'' ===
The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article:
{{Ambox|nocat=true|small=left|text=This is the small left-aligned Ambox format.}}
Otherwise the standard format will be produced:
{{Ambox|nocat=true|text=This is the standard Ambox format.}}
Other variations:
* For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all.
* For templates which should ''always'' be small, just specify {{Para|small|left}}.
* For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article.
To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together:
{{Ambox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}}
See {{section link||sect}} below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display).
=== ''type'' ===
The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below.
{{Ambox
|nocat=true
| type = speedy
| text = type=<u>speedy</u> – Speedy deletion issues, such as {{tl|db-g1}} and {{tl|db-g3}}.
}}
{{Ambox
|nocat=true
| type = delete
| text = type=<u>delete</u> – Deletion issues, such as {{tl|article for deletion}} and {{tl|proposed deletion}}.
}}
{{Ambox
|nocat=true
| type = content
| text = type=<u>content</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}.
}}
{{Ambox
|nocat=true
| type = style
| text = type=<u>style</u> – Style issues, such as {{tl|cleanup}} and {{tl|underlinked}}.
}}
{{ambox
|nocat=true
| type = notice
| text = type=<u>notice</u> – Article notices, such as {{tl|current}} and {{tl|in use}}.
}}
{{Ambox
|nocat=true
| type = move
| text = type=<u>move</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|merge}}.
}}
{{Ambox
|nocat=true
| type = protection
| text = type=<u>protection</u> – Protection notices, such as {{tl|pp-vandalism}} and {{tl|pp-protected}}.
}}
If no ''type'' parameter is given the template defaults to {{para|type|notice}}.
=== ''image'' ===
You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files in Wikipedia (see [[Wikipedia:Manual of Style/Images#How to place an image]].) Widths of 40-50px are typical. For example:
* {{Tl|POV}} specifies {{Para|image|<nowiki>[[File:Unbalanced scales.svg|40px|link=|alt=]]</nowiki>}} and looks like this:
{{POV|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
* {{tl|underlinked}} specifies {{para|image|<nowiki>[[File:Ambox wikify.svg|50x40px|link=|alt=]]</nowiki>}} and looks like this:
{{underlinked|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
Please note:
* If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.)
* If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area.
* If an icon is [[Wikipedia:Alternative text for images#Purely decorative images|purely decorative]] and also in the [[Wikipedia:Image use policy#Public_domain|public domain]], [[Wikipedia:Manual of Style/Accessibility|accessibility]] can be improved by suppressing the link to the file page by adding "{{para|link}}{{para|alt}}" as seen above.
=== ''sect'' ===
Many article message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc.
{{em|If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.}}
A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. For example, {{tlx|Advert|section}} produces:
{{Advert|section|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. Another is to use {{tlx|Yesno}} to parse the value for a positive, and pass {{para|sect|section}} if true.
{{em|These approaches can be combined}}, and this is recommended. The following ready-to-use code:
{{block indent|1=<code><nowiki>| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}</nowiki></code>}}
enables the following:
* Any positive value that {{tlx|Yesno}} can detect will be used with the named parameter in the ambox-based template to get "section" instead of "article": {{para|section|y}}, {{para|sect|True}}, etc. It is recommended to allow both {{para|sect}} and {{para|section}} so that editors do not have to guess which one will work. The sample code above does this for you.
* Any other value passed, in any manner, will replace "article": {{para||section and its subsections}}, {{para|1|list}}, {{para|sect|section}}, {{para|section|table}}, etc.
It is also advisable to restrict use of the {{para|small}} parameter so that it is made contingent upon the template being applied to a section (or whatever) rather than the whole article, to prevent the small version of the template being used at the top of the article where it would be inconsistent with other article-wide cleanup/dispute banners:
{{block indent|1=<code><nowiki>| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}</nowiki></code>}}
(In this case, any value of {{para|small}} or {{para|left}} will trigger the small, left display, as long as some value of {{para|sect}} or one of its aliases in that template has also been provided.) This code can be copy-pasted and used with the above code block. See, e.g., [[Template:Trivia]] and its [[Template:Trivia/testcases]] to observe the combined functionality.
=== ''issue'' and ''fix'' ===
The ''issue'' parameter is used to describe the issue with the article. Try to keep it short and to-the-point (approximately 10-20 words) and be sure to include a link to a relevant [[Wikipedia:Policies and guidelines|policy or guideline]].
The ''fix'' parameter contains some text which describes what should be done to improve the article. It may be longer than the text in ''issue'', but should not usually be more than two sentences.
When the template is in its compact form (when placed inside {{tl|multiple issues}}) or small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example, {{Tl|Citation style}} defines
* <syntaxhighlight lang="text" inline>|issue=This article '''has an unclear citation style'''.</syntaxhighlight>
* <syntaxhighlight lang="text" inline>|fix=The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]], [[Wikipedia:Footnotes|footnoting]], or [[Wikipedia:External links|external linking]].</syntaxhighlight>
When used stand-alone it produces the whole text:
{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
But when used inside {{Tl|Multiple issues}} or with {{Para|small|left}} it displays only the issue:
{{Multiple issues <!-- Even though there's only one "issue", please don't remove this {{Multiple issues}} template. It is a demonstration of the formatting. --> |{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}}}
{{Citation style|small=left|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
=== ''talk'' ===
Some article message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. {{para|talk|<nowiki>{{{talk|}}}</nowiki>}}
This parameter may then be used by an editor as follows:
* {{para|talk|SECTION HEADING}} – the link will point to the specified section on the article's talk page, e.g. {{para|talk|Foo}}
* {{para|talk|FULL PAGE NAME}} – the template will link to the page specified (which may include a [[Help:Link#Section linking (anchors)|section anchor]]), e.g. {{para|talk|Talk:Banana#Foo}}
Notes:
* When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined.
* In order to make sure there is always a link to the talk page, you can use {{para|talk|<nowiki>{{{talk|#}}}</nowiki>}}.
* If the talk page does not exist, there will be no link, whatever the value of the parameter.
=== ''date'' ===
Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a [[Wikipedia:Bots|bot]]). This will be displayed after the message in a smaller font.
Passing this parameter also enables [[:Category:Wikipedia maintenance categories sorted by month|monthly cleanup categorisation]] when the ''cat'' parameter is also defined.
=== ''info'' ===
This parameter is for specifying additional information. Whatever you add here will appear after the date, and will not be displayed if the template is being wrapped in {{tl|multiple issues}}.
=== ''removalnotice'' ===
If you specify {{para|removalnotice|yes}}, then the following notice will be displayed after the date and after the ''info'' text:
* <small>[[Help:Maintenance template removal|Learn how and when to remove this template message]].</small>
This will not be displayed if the template is being wrapped in {{tl|multiple issues}}.
=== ''cat'' ===
This parameter defines a monthly cleanup category. If {{para|cat|CATEGORY}} then:
* articles will be placed in '''Category:CATEGORY from DATE''' if {{para|date|DATE}} is specified.
* articles will be placed in '''Category:CATEGORY''' if the date is not specified.
For example, {{Tl|No footnotes}} specifies {{Para|cat|Articles lacking in-text citations}} and so an article with the template {{Tlx|No footnotes|2=date=June 2010}} will be placed in [[:Category:Articles lacking in-text citations from June 2010]].
The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
=== ''all'' ===
The ''all'' parameter defines a category into which all articles should be placed.
The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used.
== Additional parameters ==
=== ''imageright'' ===
An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image.
=== ''smallimage'' and ''smallimageright'' ===
Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified.
=== ''class'' ===
Custom [[Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated.
=== ''style'' and ''textstyle'' ===
Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>.
* ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box.
* ''textstyle'' relates to the text cell.
=== ''text'' and ''smalltext'' ===
Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead.
Customised text for the small format can be defined using ''smalltext''.
=== ''plainlinks'' ===
Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}.
=== ''cat2'', ''cat3'', ''all2'', and ''all3'' ===
* ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]].
* ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]].
== Technical notes ==
* If you need to use special characters in the text parameter then you need to escape them like this:
<syntaxhighlight lang="wikitext">
{{Ambox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
</syntaxhighlight>
{{Ambox
|nocat=true
| text = <div>
Equal sign = and a start and end brace { } work fine as they are.
But here is a pipe | and two end braces <nowiki>}}</nowiki>.
And now a pipe and end braces <nowiki>|}}</nowiki>.
</div>
}}
* The <code><div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that.
* The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons.
* For more technical details see the [[Template talk:Ambox|talk page]] and the "See also" links below. Since this template works almost exactly like {{Tl|Tmbox}}, {{Tl|Imbox}}, {{Tl|Cmbox}} and {{Tl|Ombox}} their talk pages and related pages might also contain more details.
==Display on mobile devices==
The MediaWiki developers have been conducted ongoing readability studies on ambox on the [https://en.m.wikipedia.org mobile version of Wikipedia]. Until further notice, code installed by the developers on the mobile version will generally override what we do here regarding the display and layout of this template. For more information, see [[:MW:Reading/Web/Projects/Mobile Page Issues]].
== TemplateData ==
{{TemplateData header|noheader=1}}
<templatedata>
{
"params": {
"1": {},
"small": {
"label": "Small Mode",
"description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.",
"type": "string",
"suggestedvalues": [
"no",
"left"
]
},
"talk": {
"autovalue": "{{{talk|}}}"
},
"date": {},
"name": {
"label": "Template Name",
"description": "The name parameter specifies the name of the template, without the Template namespace prefix. ",
"type": "string"
},
"type": {
"description": "Type of issue the template describes. Defines the colour of the left bar, and the image that is used by default",
"type": "line",
"suggestedvalues": [
"speedy",
"delete",
"content",
"style",
"notice",
"move",
"protection"
]
},
"image": {
"description": "Image used with the template",
"type": "wiki-file-name"
},
"sect": {
"description": "Parameter that can be used to change the text \"this article\" to \"this section\" or something else",
"type": "line",
"suggestedvalues": [
"{{{1|}}}"
]
},
"issue": {
"description": "Describes the issue with the article",
"type": "content"
},
"fix": {
"description": "Describes what should be done to improve the article",
"type": "content"
},
"subst": {
"description": "Allows the meta-template to detect whether the template has been incorrectly substituted"
},
"info": {
"description": "Specifies additional information"
},
"removalnotice": {
"description": "Displays a notice about when and how to remove the template message",
"type": "boolean"
},
"cat": {
"description": "Defines a monthly cleanup category"
},
"all": {
"description": "Defines a category into which all articles should be placed"
},
"imageright": {},
"class": {},
"text ": {},
"plainlinks": {},
"smallimage ": {},
"smallimageright": {},
"textstyle": {},
"style ": {},
"smalltext": {},
"cat2": {},
"cat3": {},
"all2": {},
"all3": {}
},
"paramOrder": [
"name",
"subst",
"small",
"type",
"image",
"sect",
"issue",
"fix",
"talk",
"date",
"1",
"info",
"removalnotice",
"cat",
"all",
"imageright",
"class",
"text ",
"plainlinks",
"smallimage ",
"smallimageright",
"textstyle",
"style ",
"smalltext",
"cat2",
"cat3",
"all2",
"all3"
]
}
</templatedata>
== Mbox family ==
{{Mbox templates see also}}
== See also ==
* [[Wikipedia:Manual of Style/Article message boxes]] – The historical style guideline for creating article message boxes.
<includeonly>{{sandbox other||
<!-- Add categories below this line, and interwikis at Wikidata -->
[[Category:Article message templates| ]]
[[Category:Mbox and messagebox templates]]
}}</includeonly>
c7aefac73ea2ee9bb36c0ca5e40d4f3afd61c3e1
Template:Film date
10
1344
2679
2023-09-19T07:02:20Z
w>Gonnym
0
Undid revision 1176062049 by [[Special:Contributions/Gonnym|Gonnym]] ([[User talk:Gonnym|talk]]) seems there are errors
wikitext
text/x-wiki
{{#if:{{{1|}}}
|{{Main other|demospace={{{demospace|}}}
|{{#ifexpr:{{#time:U|{{{1}}}-{{#if:{{{2|}}}|{{{2}}}|01}}-{{#if:{{{3|}}}|{{{3}}}|01}}}} > {{#time:U|{{CURRENTTIMESTAMP}}}}
| [[Category:Upcoming {{#if:{{{TV|}}}|television}} films]]
}}{{#ifexist:Category:{{{fy|{{{1}}}}}} {{#if:{{{TV|}}}|television}} films
| [[Category:{{{fy|{{{1}}}}}} {{#if:{{{TV|}}}|television}} films]]
}}
}}
}}{{Plainlist|
* {{Start date|{{{1|}}}|{{{2|}}}|{{{3|}}}|df={{{df|}}}}}{{#if:{{{4|}}}| ({{{4|}}}){{{ref1|}}}|{{{ref1|}}}}}{{#if:{{{5|}}}|
* {{Start date|{{{5}}}|{{{6|}}}|{{{7|}}}|df={{{df|}}}}}{{#if:{{{8|}}}| ({{{8|}}}){{{ref2|}}}|{{{ref2|}}}}}}}{{#if:{{{9|}}}|
* {{Start date|{{{9}}}|{{{10|}}}|{{{11|}}}|df={{{df|}}}}}{{#if:{{{12|}}}| ({{{12|}}}){{{ref3|}}}|{{{ref3|}}}}}}}{{#if:{{{13|}}}|
* {{Start date|{{{13}}}|{{{14|}}}|{{{15|}}}|df={{{df|}}}}}{{#if:{{{16|}}}| ({{{16|}}}){{{ref4|}}}|{{{ref4|}}}}}}}{{#if:{{{17|}}}|
* {{Start date|{{{17}}}|{{{18|}}}|{{{19|}}}|df={{{df|}}}}}{{#if:{{{20|}}}| ({{{20|}}}){{{ref5|}}}|{{{ref5|}}}}}}}
}}<!--
# Tracking categories added 3 April 2020 by User:BrownHairedGirl
-->{{Main other|<!--
-->{{#if: {{{fy|}}}<!--
-->|[[Category:Template film date with category override]]<!--
-->}}<!--
-->{{#if: {{{17|}}}<!--
-->|[[Category:Template film date with 5 release dates]]<!--
-->|{{#if: {{{13|}}}<!--
-->|[[Category:Template film date with 4 release dates]]<!--
-->|{{#if: {{{9|}}}<!--
-->|[[Category:Template film date with 3 release dates]]<!--
-->|{{#if: {{{5|}}}<!--
-->|[[Category:Template film date with 2 release dates]]<!--
-->|{{#if: {{{1|}}}<!--
-->|[[Category:Template film date with 1 release date]]<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
--><noinclude>{{Documentation}}</noinclude>
89f1fedaf1d01160c6062452636664ececfaf823
Module:Disambiguation
828
133
315
2023-09-19T18:27:51Z
wikipedia>MSGJ
0
deploy new version, code by [[User:Mr. Stradivarius]]
Scribunto
text/plain
local p = {}
local mRedirect = require('Module:Redirect')
local disambiguationTemplates = mw.loadData('Module:Disambiguation/templates')
local function capitalize(s)
-- This function only works on ASCII strings. If your wiki has
-- disambiguation templates that use Unicode strings, use the commented-out
-- line instead. Enwiki uses ASCII string manipulation only here to improve
-- performance.
return s:sub(1, 1):upper() .. s:sub(2, -1)
-- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1)
end
local function isDisambiguationTemplate(template)
return disambiguationTemplates[capitalize(template)] or false
end
p.isDisambiguation = function(content)
-- false if there is no content
if content == nil then
return false
end
-- redirects are not disambiguation pages
if mRedirect.getTargetFromText(content) ~= nil then
return false
end
-- check for disambiguation templates in the content
local templateNames = {}
for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do
if isDisambiguationTemplate(template) then
return true
end
end
-- check for magic word
if string.find(content, "__DISAMBIG__", 1, true) ~= nil then
return true
end
return false
end
p._isDisambiguationPage = function(page)
-- Look "(disambiguation)" in the title
if string.find(page, "(disambiguation)",0,true) ~= nil then
return true;
end
-- Look for disamiguation template in page content
local title = mw.title.new(page)
if not title then return false end
local content = title:getContent()
return p.isDisambiguation(content)
end
-- Entry points for templates
p.isDisambiguationPage = function(frame)
local title = frame.args[1]
return p._isDisambiguationPage(title) and "yes" or ""
end
return p
fedda4d3046080cab39fcd65ab9a9318912a8d57
Template:Person infobox header
10
204
462
2023-09-20T04:58:38Z
wikipedia>Jonesey95
0
add documentation template
wikitext
text/x-wiki
{{ombox|type=content|text=The design and content of biographical infoboxes must follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guideline]].
All content displayed in this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons]]''' policy if applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] contentious material '''must be removed immediately''' from the article and its infobox, especially if potentially [[Wikipedia:Libel|libellous]].}}
<noinclude>
{{documentation
|content=
{{no documentation}}
{{Uncat}}
}}
</noinclude>
9f982493e161c304a75d9b6b06d5b730ee1bb282
Module:Citation/CS1/Identifiers
828
894
1978
2023-09-20T15:12:36Z
wikipedia>Trappist the monk
0
tweak to support new oclc limit;
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities
substitute, make_wikilink;
local z; -- table of tables defined in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< P A G E S C O P E V A R I A B L E S >--------------------------------------
declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here
]]
local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title=
--============================<< H E L P E R F U N C T I O N S >>============================================
--[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >----------------------------
as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata.
returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else
for identifiers that do not have q, returns nil
for wikis that do not have mw.wikibase installed, returns nil
]]
local function wikidata_article_name_get (q)
if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki
return nil; -- abandon
end
local wd_article;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki
if wd_article then
wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required
end
return wd_article; -- article title from WD; nil else
end
--[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------
common function to create identifier link label from handler table or from Wikidata
returns the first available of
1. redirect from local wiki's handler table (if enabled)
2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language)
3. label specified in the local wiki's handler table
]]
local function link_label_make (handler)
local wd_article;
if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive
wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it;
end
return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link;
end
--[[--------------------------< E X T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style external link
]]
local function external_link_id (options)
local url_string = options.id;
local ext_link;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
local wd_article; -- article title from Wikidata
if options.encode == true or options.encode == nil then
url_string = mw.uri.encode (url_string, 'PATH');
end
if options.auto_link and is_set (options.access) then
auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix});
end
ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki (options.id));
if is_set (options.access) then
ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock
end
return table.concat ({
make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order)
options.separator or ' ',
ext_link
});
end
--[[--------------------------< I N T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style internal link
TODO: Does not currently need to support options.access, options.encode, auto-linking and COinS (as in external_link_id),
but may be needed in the future for :m:Interwiki_map custom-prefixes like :arxiv:, :bibcode:, :DOI:, :hdl:, :ISSN:,
:JSTOR:, :Openlibrary:, :PMID:, :RFC:.
]]
local function internal_link_id (options)
local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
return table.concat (
{
make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label
options.separator or ' ', -- add the separator
make_wikilink (
table.concat (
{
options.prefix,
id, -- translated to Western digits
options.suffix or ''
}),
substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis
); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required?
});
end
--[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------
Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against
today's date. If embargo date is in the future, returns the content of |pmc-embargo-date=; otherwise, returns
an empty string because the embargo has expired or because |pmc-embargo-date= was not set in this cite.
]]
local function is_embargoed (embargo)
if is_set (embargo) then
local lang = mw.getContentLanguage();
local good1, embargo_date, todays_date;
good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo);
todays_date = lang:formatDate ('U');
if good1 then -- if embargo date is a good date
if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future?
return embargo; -- still embargoed
else
set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat
return ''; -- unset because embargo has expired
end
end
end
return ''; -- |pmc-embargo-date= not set return empty string
end
--[=[-------------------------< I S _ V A L I D _ R X I V _ D A T E >------------------------------------------
for biorxiv, returns true if:
2019-12-11T00:00Z <= biorxiv_date < today + 2 days
for medrxiv, returns true if:
2020-01-01T00:00Z <= medrxiv_date < today + 2 days
The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400
The medrxiv identifier has a start date of 2020-01-01. The Unix timestamp for that date is {{#time:U|2020-01-01}} = 1577836800
<rxiv_date> is the date provided in those |biorxiv= parameter values that are dated and in |medrxiv= parameter values at time 00:00:00 UTC
<today> is the current date at time 00:00:00 UTC plus 48 hours
if today's date is 2023-01-01T00:00:00 then
adding 24 hours gives 2023-01-02T00:00:00 – one second more than today
adding 24 hours gives 2023-01-03T00:00:00 – one second more than tomorrow
inputs:
<y>, <m>, <d> – year, month, day parts of the date from the birxiv or medrxiv identifier
<select> 'b' for biorxiv, 'm' for medrxiv; defaults to 'b'
]=]
local function is_valid_rxiv_date (y, m, d, select)
if 0 == tonumber (m) and 12 < tonumber (m) then -- <m> must be a number 1–12
return false;
end
if 0 == tonumber (d) and 31 < tonumber (d) then -- <d> must be a number 1–31; TODO: account for month length and leap yer?
return false;
end
local rxiv_date = table.concat ({y, m, d}, '-'); -- make ymd date string
local good1, good2;
local rxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates
local lang_object = mw.getContentLanguage();
good1, rxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', rxiv_date); -- convert rxiv_date value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand
rxiv_ts = tonumber (rxiv_ts) or lang_object:parseFormattedNumber (rxiv_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix timestamp
end
local limit_ts = ((select and ('m' == select)) and 1577836800) or 1576022400; -- choose the appropriate limit timesatmp
return ((limit_ts <= rxiv_ts) and (rxiv_ts < tomorrow_ts)) -- limit_ts <= rxiv_date < tomorrow's date
end
--[[--------------------------< IS _ V A L I D _ I S X N >-----------------------------------------------------
ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit.
ISBN-13 is checked in isbn().
If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length
and stripped of dashes, spaces and other non-ISxN characters.
]]
local function is_valid_isxn (isxn_str, len)
local temp = 0;
isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58
len = len + 1; -- adjust to be a loop counter
for i, v in ipairs (isxn_str) do -- loop through all of the bytes and calculate the checksum
if v == string.byte ("X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58)
temp = temp + 10 * (len - i); -- it represents 10 decimal
else
temp = temp + tonumber (string.char (v) )*(len-i);
end
end
return temp % 11 == 0; -- returns true if calculation result is zero
end
--[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >-----------------------------------------------
ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit.
If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length
and stripped of dashes, spaces and other non-ISxN-13 characters.
]]
local function is_valid_isxn_13 (isxn_str)
local temp=0;
isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39
for i, v in ipairs (isxn_str) do
temp = temp + (3 - 2*(i % 2)) * tonumber (string.char (v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit
end
return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct
end
--[[--------------------------< N O R M A L I Z E _ L C C N >--------------------------------------------------
LCCN normalization (https://www.loc.gov/marc/lccn-namespace.html#normalization)
1. Remove all blanks.
2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash.
3. If there is a hyphen in the string:
a. Remove it.
b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out):
1. All these characters should be digits, and there should be six or less. (not done in this function)
2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six.
Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function.
]]
local function normalize_lccn (lccn)
lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace
if nil ~= string.find (lccn, '/') then
lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it
end
local prefix
local suffix
prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix
if nil ~= suffix then -- if there was a hyphen
suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6
lccn = prefix..suffix; -- reassemble the LCCN
end
return lccn;
end
--============================<< I D E N T I F I E R F U N C T I O N S >>====================================
--[[--------------------------< A R X I V >--------------------------------------------------------------------
See: https://arxiv.org/help/arxiv_identifier
format and error check arXiv identifier. There are three valid forms of the identifier:
the first form, valid only between date codes 9107 and 0703, is:
arXiv:<archive>.<class>/<date code><number><version>
where:
<archive> is a string of alpha characters - may be hyphenated; no other punctuation
<class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
first digit of YY for this form can only 9 and 0
<number> is a three-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented)
the second form, valid from April 2007 through December 2014 is:
arXiv:<date code>.<number><version>
where:
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
<number> is a four-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces
the third form, valid from January 2015 is:
arXiv:<date code>.<number><version>
where:
<date code> and <version> are as defined for 0704-1412
<number> is a five-digit number
]]
local function arxiv (options)
local id = options.id;
local class = options.Class; -- TODO: lowercase?
local handler = options.handler;
local year, month, version;
local err_msg = false; -- assume no error message
local text; -- output text
if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version
year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month
((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok?
err_msg = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years)
((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)?
err_msg = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years)
err_msg = true; -- flag for error message
end
else
err_msg = true; -- not a recognized format; flag for error message
end
if err_msg then
options.coins_list_t['ARXIV'] = nil; -- when error, unset so not included in COinS
end
local err_msg_t = {};
if err_msg then
set_message ('err_bad_arxiv');
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access});
if is_set (class) then
if id:match ('^%d+') then
text = table.concat ({text, ' [[https://arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink
else
set_message ('err_class_ignored');
end
end
return text;
end
--[[--------------------------< B I B C O D E >--------------------------------------------------------------------
Validates (sort of) and formats a bibcode ID.
Format for bibcodes is specified here: https://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes
But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters
and first four digits must be a year. This function makes these tests:
length must be 19 characters
characters in position
1–4 must be digits and must represent a year in the range of 1000 – next year
5 must be a letter
6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. )
9–18 must be letter, digit, or dot
19 must be a letter or dot
]]
local function bibcode (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local ignore_invalid = options.accept;
local err_type;
local err_msg = '';
local year;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = access});
if 19 ~= id:len() then
err_type = cfg.err_msg_supl.length;
else
year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$");
if not year then -- if nil then no pattern match
err_type = cfg.err_msg_supl.value; -- so value error
else
local next_year = tonumber (os.date ('%Y')) + 1; -- get the current year as a number and add one for next year
year = tonumber (year); -- convert year portion of bibcode to a number
if (1000 > year) or (year > next_year) then
err_type = cfg.err_msg_supl.year; -- year out of bounds
end
if id:find('&%.') then
err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter)
end
if id:match ('.........%.tmp%.') then -- temporary bibcodes when positions 10–14 are '.tmp.'
set_message ('maint_bibcode');
end
end
end
if is_set (err_type) and not ignore_invalid then -- if there was an error detected and accept-as-written markup not used
set_message ('err_bad_bibcode', {err_type});
options.coins_list_t['BIBCODE'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< B I O R X I V >-----------------------------------------------------------------
Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly
6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd.
date and suffixed with an optional version identifier.
The bioRxiv ID is the string of characters:
https://doi.org/10.1101/078733 -> 10.1101/078733
or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits:
https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2
see https://www.biorxiv.org/about-biorxiv
]]
local function biorxiv (options)
local id = options.id;
local handler = options.handler;
local err_msg = true; -- flag; assume that there will be an error
local patterns = {
'^10%.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11)
}
for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match
if id:match (pattern) then
local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier
if m then -- m is nil when id is the six-digit form
if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for biorxiv limit
break; -- date fail; break out early so we don't unset the error message
end
end
err_msg = nil; -- we found a match so unset the error message
break; -- and done
end
end -- err_cat remains set here when no match
if err_msg then
options.coins_list_t['BIORXIV'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_biorxiv'); -- and set the error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator,
encode = handler.encode, access = handler.access});
end
--[[--------------------------< C I T E S E E R X >------------------------------------------------------------
CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org).
The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure
]]
local function citeseerx (options)
local id = options.id;
local handler = options.handler;
local matched;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = handler.access});
matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$");
if not matched then
set_message ('err_bad_citeseerx' );
options.coins_list_t['CITESEERX'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< D O I >------------------------------------------------------------------------
Formats a DOI and checks for DOI errors.
DOI names contain two parts: prefix and suffix separated by a forward slash.
Prefix: directory indicator '10.' followed by a registrant code
Suffix: character string of any length chosen by the registrant
This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends
with a period or a comma, this function will emit a bad_doi error message.
DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash,
and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in DOI names.
https://www.doi.org/doi_handbook/2_Numbering.html -- 2.2 Syntax of a DOI name
https://www.doi.org/doi_handbook/2_Numbering.html#2.2.2 -- 2.2.2 DOI prefix
]]
local function doi (options)
local id = options.id;
local inactive = options.DoiBroken
local access = options.access;
local ignore_invalid = options.accept;
local handler = options.handler;
local err_flag;
local text;
if is_set (inactive) then
local inactive_year = inactive:match("%d%d%d%d"); -- try to get the year portion from the inactive date
local inactive_month, good;
if is_set (inactive_year) then
if 4 < inactive:len() then -- inactive date has more than just a year (could be anything)
local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki
good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date
if not good then
inactive_month = nil; -- something went wrong so make sure this is unset
end
end
end -- otherwise, |doi-broken-date= has something but it isn't a date
if is_set (inactive_year) and is_set (inactive_month) then
set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '});
elseif is_set (inactive_year) then
set_message ('maint_doi_inactive_dated', {inactive_year, '', ''});
else
set_message ('maint_doi_inactive');
end
inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')';
end
local registrant = mw.ustring.match (id, '^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form
local registrant_err_patterns = { -- these patterns are for code ranges that are not supported
'^[^1-3]%d%d%d%d%.%d+$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999
'^[^1-6]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 60000+); accepts: 10000–69999
'^[^1-9]%d%d%d%.%d+$', -- 4 digits with subcode (0xxx); accepts: 1000–9999
'^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999
'^%d%d%d%d%d%d+', -- 6 or more digits
'^%d%d?%d?$', -- less than 4 digits without subcode (3 digits with subcode is legitimate)
'^%d%d?%.[%d%.]+', -- 1 or 2 digits with subcode
'^5555$', -- test registrant will never resolve
'[^%d%.]', -- any character that isn't a digit or a dot
}
if not ignore_invalid then
if registrant then -- when DOI has proper form
for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns
if registrant:match (pattern) then -- to validate registrant codes
err_flag = set_message ('err_bad_doi'); -- when found, mark this DOI as bad
break; -- and done
end
end
else
err_flag = set_message ('err_bad_doi'); -- invalid directory or malformed
end
else
set_message ('maint_doi_ignore');
end
if err_flag then
options.coins_list_t['DOI'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access,
auto_link = not (err_flag or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored
}) .. (inactive or '');
return text;
end
--[[--------------------------< H D L >------------------------------------------------------------------------
Formats an HDL with minor error checking.
HDL names contain two parts: prefix and suffix separated by a forward slash.
Prefix: character string using any character in the UCS-2 character set except '/'
Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant
This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends
with a period or a comma, this function will emit a bad_hdl error message.
HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and
terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in HDLs.
Query string parameters are named here: https://www.handle.net/proxy_servlet.html. query strings are not displayed
but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we
have to detect the query string so that it isn't URL-encoded with the rest of the identifier.
]]
local function hdl (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local query_params = { -- list of known query parameters from https://www.handle.net/proxy_servlet.html
'noredirect',
'ignore_aliases',
'auth',
'cert',
'index',
'type',
'urlappend',
'locatt',
'action',
}
local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string
local found;
if hdl then -- when there are query strings, this is the handle identifier portion
for _, q in ipairs (query_params) do -- spin through the list of query parameters
if param:match ('^' .. q) then -- if the query string begins with one of the parameters
found = true; -- announce a find
break; -- and stop looking
end
end
end
if found then
id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not
else
suffix = ''; -- make sure suffix is empty string for concatenation else
end
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access})
if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma
set_message ('err_bad_hdl' );
options.coins_list_t['HDL'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< I S B N >----------------------------------------------------------------------
Determines whether an ISBN string is valid
]]
local function isbn (options)
local isbn_str = options.id;
local ignore_invalid = options.accept;
local handler = options.handler;
local function return_result (check, err_type) -- local function to handle the various returns
local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = isbn_str, separator = handler.separator});
if ignore_invalid then -- if ignoring ISBN errors
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error
else -- here when not ignoring
if not check then -- and there is an error
options.coins_list_t['ISBN'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_isbn', err_type); -- set an error message
return ISBN; -- return id text
end
end
return ISBN; -- return id text
end
if nil ~= isbn_str:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X
end
local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace
local len = id:len();
if len ~= 10 and len ~= 13 then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if len == 10 then
if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position
return return_result (false, cfg.err_msg_supl.form);
end
if not is_valid_isxn (id, 10) then -- test isbn-10 for numerical validity
return return_result (false, cfg.err_msg_supl.check); -- fail if isbn-10 is not numerically valid
end
if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin)
return return_result (false, cfg.err_msg_supl.group); -- fail if isbn-10 begins with 630/1
end
return return_result (true, cfg.err_msg_supl.check); -- pass if isbn-10 is numerically valid
else
if id:match ('^%d+$') == nil then
return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits
end
if id:match ('^97[89]%d*$') == nil then
return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979
end
if id:match ('^9790') then
return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN
end
return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check);
end
end
--[[--------------------------< A S I N >----------------------------------------------------------------------
Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha
characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit
ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=.
Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit.
|asin=630....... and |asin=631....... are (apparently) not a legitimate ISBN though it checksums as one; these
do not cause this function to emit the maint_asin message
This function is positioned here because it calls isbn()
]]
local function asin (options)
local id = options.id;
local domain = options.ASINTLD;
local err_flag;
if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then
err_flag = set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters
else
if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X)
if is_valid_isxn (id, 10) then -- see if ASIN value is or validates as ISBN-10
if not id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not a valid isbn prefixes but are used by amazon as a numeric identifier
err_flag = set_message ('err_bad_asin'); -- ASIN has ISBN-10 form but begins with something other than 630/1 so probably an isbn
end
elseif not is_set (err_flag) then
err_flag = set_message ('err_bad_asin'); -- ASIN is not ISBN-10
end
elseif not id:match("^%u[%d%u]+$") then
err_flag = set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha
end
end
if (not is_set (domain)) or in_array (domain, {'us'}) then -- default: United States
domain = "com";
elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom
domain = "co." .. domain;
elseif in_array (domain, {'z.cn'}) then -- China
domain = "cn";
elseif in_array (domain, {'au', 'br', 'mx', 'sg', 'tr'}) then -- Australia, Brazil, Mexico, Singapore, Turkey
domain = "com." .. domain;
elseif not in_array (domain, {'ae', 'ca', 'cn', 'de', 'es', 'fr', 'in', 'it', 'nl', 'pl', 'sa', 'se', 'co.jp', 'co.uk', 'com', 'com.au', 'com.br', 'com.mx', 'com.sg', 'com.tr'}) then -- Arabic Emirates, Canada, China, Germany, Spain, France, Indonesia, Italy, Netherlands, Poland, Saudi Arabia, Sweden (as of 2021-03 Austria (.at), Liechtenstein (.li) and Switzerland (.ch) still redirect to the German site (.de) with special settings, so don't maintain local ASINs for them)
err_flag = set_message ('err_bad_asin_tld'); -- unsupported asin-tld value
end
local handler = options.handler;
if not is_set (err_flag) then
options.coins_list_t['ASIN'] = handler.prefix .. domain .. "/dp/" .. id; -- asin for coins
else
options.coins_list_t['ASIN'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. domain .. "/dp/",
id = id, encode = handler.encode, separator = handler.separator})
end
--[[--------------------------< I S M N >----------------------------------------------------------------------
Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the
same check digit calculations. See https://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf
section 2, pages 9–12.
ismn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx)
or an identifier registered at info-uri.info (info:)
]]
local function ismn (options)
local id = options.id;
local handler = options.handler;
local text;
local valid_ismn = true;
local id_copy;
id_copy = id; -- save a copy because this testing is destructive
id = id:gsub ('[%s-]', ''); -- remove hyphens and white space
if 13 ~= id:len() or id:match ("^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790
valid_ismn = false;
else
valid_ismn=is_valid_isxn_13 (id); -- validate ISMN
end
-- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to
-- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode})
text = table.concat ( -- because no place to link to yet
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id_copy
});
if false == valid_ismn then
options.coins_list_t['ISMN'] = nil; -- when error, unset so not included in COinS; not really necessary here because ismn not made part of COinS
set_message ('err_bad_ismn'); -- create an error message if the ISMN is invalid
end
return text;
end
--[[--------------------------< I S S N >----------------------------------------------------------------------
Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but
has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked
like this:
|issn=0819 4327 gives: [https://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link
This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length
and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters
other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The
ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits.
]]
local function issn (options)
local id = options.id;
local handler = options.handler;
local ignore_invalid = options.accept;
local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate
local text;
local valid_issn = true;
id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace
if 8 ~= id:len() or nil == id:match ("^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position
valid_issn = false; -- wrong length or improper character
else
valid_issn = is_valid_isxn (id, 8); -- validate ISSN
end
if true == valid_issn then
id = string.sub (id, 1, 4 ) .. "-" .. string.sub (id, 5 ); -- if valid, display correctly formatted version
else
id = issn_copy; -- if not valid, show the invalid ISSN with error message
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if ignore_invalid then
set_message ('maint_issn_ignore');
else
if false == valid_issn then
options.coins_list_t['ISSN'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_issn', (options.hkey == 'EISSN') and 'e' or ''); -- create an error message if the ISSN is invalid
end
end
return text;
end
--[[--------------------------< J F M >-----------------------------------------------------------------------
A numerical identifier in the form nn.nnnn.nn
]]
local function jfm (options)
local id = options.id;
local handler = options.handler;
local id_num;
id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier
if is_set (id_num) then
set_message ('maint_jfm_format');
else -- plain number without JFM prefix
id_num = id; -- if here id does not have prefix
end
if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then
id = id_num; -- jfm matches pattern
else
set_message ('err_bad_jfm' ); -- set an error message
options.coins_list_t['JFM'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< J S T O R >--------------------------------------------------------------------
Format a JSTOR with some error checking
]]
local function jstor (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
if id:find ('[Jj][Ss][Tt][Oo][Rr]') or id:find ('^https?://') or id:find ('%s') then
set_message ('err_bad_jstor'); -- set an error message
options.coins_list_t['JSTOR'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
end
--[[--------------------------< L C C N >----------------------------------------------------------------------
Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of
the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits.
https://oclc-research.github.io/infoURI-Frozen/info-uri.info/info:lccn/reg.html
length = 8 then all digits
length = 9 then lccn[1] is lowercase alpha
length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits
length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits
length = 12 then lccn[1] and lccn[2] are both lowercase alpha
]]
local function lccn (options)
local lccn = options.id;
local handler = options.handler;
local err_flag; -- presume that LCCN is valid
local id = lccn; -- local copy of the LCCN
id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes)
local len = id:len(); -- get the length of the LCCN
if 8 == len then
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits)
err_flag = set_message ('err_bad_lccn'); -- set an error message
end
elseif 9 == len then -- LCCN should be adddddddd
if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern?
err_flag = set_message ('err_bad_lccn'); -- set an error message
end
elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ...
if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
end
elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd
if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
elseif 12 == len then -- LCCN should be aadddddddddd
if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
else
err_flag = set_message ('err_bad_lccn'); -- wrong length, set an error message
end
if not is_set (err_flag) and nil ~= lccn:find ('%s') then
err_flag = set_message ('err_bad_lccn'); -- lccn contains a space, set an error message
end
if is_set (err_flag) then
options.coins_list_t['LCCN'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< M E D R X I V >-----------------------------------------------------------------
Format medRxiv ID and do simple error checking. Similar to later bioRxiv IDs, medRxiv IDs are prefixed with a
yyyy.mm.dd. date and suffixed with an optional version identifier. Ealiest date accepted is 2020.01.01
The medRxiv ID is a date followed by an eight-digit number followed by an optional version indicator 'v' and one or more digits:
https://www.medrxiv.org/content/10.1101/2020.11.16.20232009v2 -> 10.1101/2020.11.16.20232009v2
]]
local function medrxiv (options)
local id = options.id;
local handler = options.handler;
local err_msg_flag = true; -- flag; assume that there will be an error
local patterns = {
'%d%d%d%d%d%d%d%d$', -- simple 8-digit identifier; these should be relatively rare
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%dv%d+$', -- y.m.d. date + 8-digit identifier + version (2020-01-01 and later)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%d$', -- y.m.d. date + 8-digit identifier (2020-01-01 and later)
}
for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match
if id:match (pattern) then
local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier
if m then -- m is nil when id is the 8-digit form
if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for medrxiv limit
break; -- date fail; break out early so we don't unset the error message
end
end
err_msg_flag = nil; -- we found a match so unset the error message
break; -- and done
end
end -- <err_msg_flag> remains set here when no match
if err_msg_flag then
options.coins_list_t['MEDRXIV'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_medrxiv'); -- and set the error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator,
encode = handler.encode, access = handler.access});
end
--[[--------------------------< M R >--------------------------------------------------------------------------
A seven digit number; if not seven digits, zero-fill leading digits to make seven digits.
]]
local function mr (options)
local id = options.id;
local handler = options.handler;
local id_num;
local id_len;
id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix
if is_set (id_num) then
set_message ('maint_mr_format'); -- add maint cat
else -- plain number without mr prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
id_len = id_num and id_num:len() or 0;
if (7 >= id_len) and (0 ~= id_len) then
id = string.rep ('0', 7-id_len) .. id_num; -- zero-fill leading digits
else
set_message ('err_bad_mr'); -- set an error message
options.coins_list_t['MR'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< O C L C >----------------------------------------------------------------------
Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}}
archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html
]]
local function oclc (options)
local id = options.id;
local handler = options.handler;
local number;
if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters)
number = id:match('ocm(%d+)'); -- get the number
elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters)
number = id:match('ocn(%d+)'); -- get the number
elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters)
number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number
elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field
number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number
if 9 < number:len() then
number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers
end
elseif id:match('^%d+$') then -- no prefix
number = id; -- get the number
if tonumber (id) > handler.id_limit then
number = nil; -- unset when id value exceeds the limit
end
end
if number then -- proper format
id = number; -- exclude prefix, if any, from external link
else
set_message ('err_bad_oclc') -- add an error message if the id is malformed
options.coins_list_t['OCLC'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< O P E N L I B R A R Y >--------------------------------------------------------
Formats an OpenLibrary link, and checks for associated errors.
]]
local function openlibrary (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W';
local err_flag;
local prefix = { -- these are appended to the handler.prefix according to code
['A']='authors/OL',
['M']='books/OL',
['W']='works/OL',
['X']='OL' -- not a code; spoof when 'code' in id is invalid
};
if not ident then
code = 'X'; -- no code or id completely invalid
ident = id; -- copy id to ident so that we display the flawed identifier
err_flag = set_message ('err_bad_ol');
end
if not is_set (err_flag) then
options.coins_list_t['OL'] = handler.prefix .. prefix[code] .. ident; -- experiment for ol coins
else
options.coins_list_t['OL'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. prefix[code],
id = ident, separator = handler.separator, encode = handler.encode,
access = access});
end
--[[--------------------------< O S T I >----------------------------------------------------------------------
Format OSTI and do simple error checking. OSTIs are sequential numbers beginning at 1 and counting up. This
code checks the OSTI to see that it contains only digits and is less than test_limit specified in the configuration;
the value in test_limit will need to be updated periodically as more OSTIs are issued.
NB. 1018 is the lowest OSTI number found in the wild (so far) and resolving OK on the OSTI site
]]
local function osti (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
if id:match("[^%d]") then -- if OSTI has anything but digits
set_message ('err_bad_osti'); -- set an error message
options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS
else -- OSTI is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1018 > id_num or handler.id_limit < id_num then -- if OSTI is outside test limit boundaries
set_message ('err_bad_osti'); -- set an error message
options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
end
--[[--------------------------< P M C >------------------------------------------------------------------------
Format a PMC, do simple error checking, and check for embargoed articles.
The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not
be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the
PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix.
PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation
has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed ()
returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string.
PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less
than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued.
]]
local function pmc (options)
local id = options.id;
local embargo = options.Embargo; -- TODO: lowercase?
local handler = options.handler;
local err_flag;
local id_num;
local text;
id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix
if is_set (id_num) then
set_message ('maint_pmc_format');
else -- plain number without PMC prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries
err_flag = set_message ('err_bad_pmc'); -- set an error message
else
id = tostring (id_num); -- make sure id is a string
end
else -- when id format incorrect
err_flag = set_message ('err_bad_pmc'); -- set an error message
end
if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed?
text = table.concat ( -- still embargoed so no external link
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id,
});
else
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access,
auto_link = not err_flag and 'pmc' or nil -- do not auto-link when PMC has error
});
end
if err_flag then
options.coins_list_t['PMC'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< P M I D >----------------------------------------------------------------------
Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This
code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable
test_limit will need to be updated periodically as more PMIDs are issued.
]]
local function pmid (options)
local id = options.id;
local handler = options.handler;
if id:match("[^%d]") then -- if PMID has anything but digits
set_message ('err_bad_pmid'); -- set an error message
options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS
else -- PMID is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries
set_message ('err_bad_pmid'); -- set an error message
options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< R F C >------------------------------------------------------------------------
Format RFC and do simple error checking. RFCs are sequential numbers beginning at 1 and counting up. This
code checks the RFC to see that it contains only digits and is less than test_limit specified in the configuration;
the value in test_limit will need to be updated periodically as more RFCs are issued.
An index of all RFCs is here: https://tools.ietf.org/rfc/
]]
local function rfc (options)
local id = options.id;
local handler = options.handler;
if id:match("[^%d]") then -- if RFC has anything but digits
set_message ('err_bad_rfc'); -- set an error message
options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS
else -- RFC is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if RFC is outside test limit boundaries
set_message ('err_bad_rfc'); -- set an error message
options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access});
end
--[[--------------------------< S 2 C I D >--------------------------------------------------------------------
Format an S2CID, do simple error checking
S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only
digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically
as more S2CIDs are issued.
]]
local function s2cid (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local id_num;
local text;
id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries
set_message ('err_bad_s2cid'); -- set an error message
options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS
end
else -- when id format incorrect
set_message ('err_bad_s2cid'); -- set an error message
options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
return text;
end
--[[--------------------------< S B N >------------------------------------------------------------------------
9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits
sbn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx)
or an identifier registered at info-uri.info (info:)
]]
local function sbn (options)
local id = options.id;
local ignore_invalid = options.accept;
local handler = options.handler;
local function return_result (check, err_type) -- local function to handle the various returns
local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator});
if not ignore_invalid then -- if not ignoring SBN errors
if not check then
options.coins_list_t['SBN'] = nil; -- when error, unset so not included in COinS; not really necessary here because sbn not made part of COinS
set_message ('err_bad_sbn', {err_type}); -- display an error message
return SBN;
end
else
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only)
end
return SBN;
end
if id:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X
end
local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests
if 9 ~= ident:len() then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if ident:match ('^%d*X?$') == nil then
return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position
end
return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check);
end
--[[--------------------------< S S R N >----------------------------------------------------------------------
Format an SSRN, do simple error checking
SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is
only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need
to be updated periodically as more SSRNs are issued.
]]
local function ssrn (options)
local id = options.id;
local handler = options.handler;
local id_num;
local text;
id_num = id:match ('^%d+$'); -- id must be all digits
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries
set_message ('err_bad_ssrn'); -- set an error message
options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS
end
else -- when id format incorrect
set_message ('err_bad_ssrn'); -- set an error message
options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = options.access});
return text;
end
--[[--------------------------< U S E N E T _ I D >------------------------------------------------------------
Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in
'<' and/or '>' angle brackets.
]]
local function usenet_id (options)
local id = options.id;
local handler = options.handler;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>'
set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid
options.coins_list_t['USENETID'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< Z B L >-----------------------------------------------------------------------
A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional
format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/
temporary format is apparently eight digits. Anything else is an error
]]
local function zbl (options)
local id = options.id;
local handler = options.handler;
if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format?
set_message ('maint_zbl'); -- yes, add maint cat
elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format?
set_message ('err_bad_zbl'); -- no, set an error message
options.coins_list_t['ZBL'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--============================<< I N T E R F A C E F U N C T I O N S >>==========================================
--[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------
Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for
any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to
the identifier list. Emits redundant error message if more than one alias exists in args
]]
local function extract_ids (args)
local id_list = {}; -- list of identifiers found in args
for k, v in pairs (cfg.id_handlers) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table
v = select_one (args, v.parameters, 'err_redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present
if is_set (v) then id_list[k] = v; end -- if found in args, add identifier to our list
end
return id_list;
end
--[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >--------------------------------------
Fetches custom id access levels from arguments using configuration settings. Parameters which have a predefined access
level (e.g. arxiv) do not use this function as they are directly rendered as free without using an additional parameter.
returns a table of k/v pairs where k is same as the identifier's key in cfg.id_handlers and v is the assigned (valid) keyword
access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else)
]]
local function extract_id_access_levels (args, id_list)
local id_accesses_list = {};
for k, v in pairs (cfg.id_handlers) do
local access_param = v.custom_access; -- name of identifier's access-level parameter
if is_set (access_param) then
local access_level = args[access_param]; -- get the assigned value if there is one
if is_set (access_level) then
if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required
set_message ('err_invalid_param_val', {access_param, access_level});
access_level = nil; -- invalid so unset
end
if not is_set (id_list[k]) then -- identifier access-level must have a matching identifier
set_message ('err_param_access_requires_param', {k:lower()}); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message
end
id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword
end
end
end
return id_accesses_list;
end
--[[--------------------------< B U I L D _ I D _ L I S T >----------------------------------------------------
render the identifiers into a sorted sequence table
<ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value
<options_t> is a table of various k/v option pairs provided in the call to new_build_id_list();
modified by this function and passed to all identifier rendering functions
<access_levels_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value (if valid)
returns a sequence table of sorted (by hkey - 'handler' key) rendered identifier strings
]]
local function build_id_list (ID_list_coins_t, options_t, access_levels_t)
local ID_list_t = {};
local accept;
local func_map = { --function map points to functions associated with hkey identifier
['ARXIV'] = arxiv,
['ASIN'] = asin,
['BIBCODE'] = bibcode,
['BIORXIV'] = biorxiv,
['CITESEERX'] = citeseerx,
['DOI'] = doi,
['EISSN'] = issn,
['HDL'] = hdl,
['ISBN'] = isbn,
['ISMN'] = ismn,
['ISSN'] = issn,
['JFM'] = jfm,
['JSTOR'] = jstor,
['LCCN'] = lccn,
['MEDRXIV'] = medrxiv,
['MR'] = mr,
['OCLC'] = oclc,
['OL'] = openlibrary,
['OSTI'] = osti,
['PMC'] = pmc,
['PMID'] = pmid,
['RFC'] = rfc,
['S2CID'] = s2cid,
['SBN'] = sbn,
['SSRN'] = ssrn,
['USENETID'] = usenet_id,
['ZBL'] = zbl,
}
for hkey, v in pairs (ID_list_coins_t) do
v, accept = has_accept_as_written (v); -- remove accept-as-written markup if present; accept is boolean true when markup removed; false else
-- every function gets the options table with value v and accept boolean
options_t.hkey = hkey; -- ~/Configuration handler key
options_t.id = v; -- add that identifier value to the options table
options_t.accept = accept; -- add the accept boolean flag
options_t.access = access_levels_t[hkey]; -- add the access level for those that have an |<identifier-access= parameter
options_t.handler = cfg.id_handlers[hkey];
options_t.coins_list_t = ID_list_coins_t; -- pointer to ID_list_coins_t; for |asin= and |ol=; also to keep erroneous values out of the citation's metadata
options_t.coins_list_t[hkey] = v; -- id value without accept-as-written markup for metadata
if options_t.handler.access and not in_array (options_t.handler.access, cfg.keywords_lists['id-access']) then
error (cfg.messages['unknown_ID_access'] .. options_t.handler.access); -- here when handler access key set to a value not listed in list of allowed id access keywords
end
if func_map[hkey] then
local id_text = func_map[hkey] (options_t); -- call the function to get identifier text and any error message
table.insert (ID_list_t, {hkey, id_text}); -- add identifier text to the output sequence table
else
error (cfg.messages['unknown_ID_key'] .. hkey); -- here when func_map doesn't have a function for hkey
end
end
local function comp (a, b) -- used by following table.sort()
return a[1]:lower() < b[1]:lower(); -- sort by hkey
end
table.sort (ID_list_t, comp); -- sequence table of tables sort
for k, v in ipairs (ID_list_t) do -- convert sequence table of tables to simple sequence table of strings
ID_list_t[k] = v[2]; -- v[2] is the identifier rendering from the call to the various functions in func_map{}
end
return ID_list_t;
end
--[[--------------------------< O P T I O N S _ C H E C K >----------------------------------------------------
check that certain option parameters have their associated identifier parameters with values
<ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value
<ID_support_t> is a sequence table of tables created in citation0() where each subtable has four elements:
[1] is the support parameter's assigned value; empty string if not set
[2] is a text string same as key in cfg.id_handlers
[3] is cfg.error_conditions key used to create error message
[4] is original ID support parameter name used to create error message
returns nothing; on error emits an appropriate error message
]]
local function options_check (ID_list_coins_t, ID_support_t)
for _, v in ipairs (ID_support_t) do
if is_set (v[1]) and not ID_list_coins_t[v[2]] then -- when support parameter has a value but matching identifier parameter is missing or empty
set_message (v[3], (v[4])); -- emit the appropriate error message
end
end
end
--[[--------------------------< I D E N T I F I E R _ L I S T S _ G E T >--------------------------------------
Creates two identifier lists: a k/v table of identifiers and their values to be used locally and for use in the
COinS metadata, and a sequence table of the rendered identifier strings that will be included in the rendered
citation.
]]
local function identifier_lists_get (args_t, options_t, ID_support_t)
local ID_list_coins_t = extract_ids (args_t); -- get a table of identifiers and their values for use locally and for use in COinS
options_check (ID_list_coins_t, ID_support_t); -- ID support parameters must have matching identifier parameters
local ID_access_levels_t = extract_id_access_levels (args_t, ID_list_coins_t); -- get a table of identifier access levels
local ID_list_t = build_id_list (ID_list_coins_t, options_t, ID_access_levels_t); -- get a sequence table of rendered identifier strings
return ID_list_t, ID_list_coins_t; -- return the tables
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
set_message = utilities_page_ptr.set_message;
select_one = utilities_page_ptr.select_one;
substitute = utilities_page_ptr.substitute;
make_wikilink = utilities_page_ptr.make_wikilink;
z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title=
identifier_lists_get = identifier_lists_get, -- experiment to replace individual calls to build_id_list(), extract_ids, extract_id_access_levels
is_embargoed = is_embargoed;
set_selected_modules = set_selected_modules;
}
3cd8b5ef8d199885cc0c92aabeb5bc338fa6f42c
Module:Lang/documentor tool
828
1005
2206
2023-09-20T16:20:02Z
wikipedia>Nardog
0
make "Supported private-use IETF language tags" sortable
Scribunto
text/plain
require('strict')
local p = {}
--[[ -------------------------< P R I V A T E _ T A G S >------------------------------------------------------
{{#invoke:Lang/documentor tool|private_tags}}
Reads the override{} table in Module:Lang/data and renders a wiki table of private tags and their associated languages
]]
local function private_tags (frame)
local override_t = mw.loadData ('Module:Lang/data').override; -- get the override table
local private_t = {};
for tag, lang in pairs (override_t) do
if tag:find ('%-x%-') then
table.insert (private_t, table.concat ({'\n|-\n|', lang, '||', tag}))
end
end
table.sort (private_t)
table.insert (private_t, 1, '{| class="wikitable sortable"');
table.insert (private_t, 2, '\n|+ Supported private-use IETF language tags')
table.insert (private_t, 3, '\n! Language !! Private-use tag')
return table.concat (private_t) .. '\n|}';
-- return '<pre>' .. table.concat (private_t) .. '\n|}' .. '</pre>'
--error (mw.dumpObject (private_t))
end
--[[ -------------------------< L A N G - X X _ S E T T I N G S >----------------------------------------------
{{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}}
Reads the content of the template and extracts the parameters from {{#invoke:Lang|...}} for display on the template's
documentation page.
]]
local function lang_xx_settings(frame)
local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace
if not page then
return '' -- TODO: error message?
end
local content = page:getContent() -- get unparsed content
if not page then
return '' -- TODO: error message?
end
local out = {}
local params
local style
if content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+|[^}]+}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+|[^}]+}}') then -- if this template uses [[Module:Lang]]
params = content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+(|[^}]+)}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+(|[^}]+)}}') -- extract the #invoke:'s parameters
if not params then
return '' -- there should be at least one or the template/module won't work TODO: error message?
end
table.insert(out, '{| class="wikitable" style="text-align: right; float: right;"\n|+settings') -- start a wikitable
for k, v in params:gmatch('%s*|%s*([^%s=]+)%s*=%s*([^%s|]+)') do -- get the parameter names (k) and values (v)
if 'label' == k then -- special case for labels because spaces and pipes
v = params:match('label%s*=%s*(%[%[[^%]]+%]%])') or params:match('label%s*=%s*([^|\n]+)') or 'missing label'
end
table.insert(out, table.concat({k, '\n|', v})) -- make rudimentary wikitable entries
end
style = content:match('lang_xx_([^|]+)');
if not style or ('italic' ~= mw.text.trim (style) and 'inherit' ~= mw.text.trim (style)) then
return '<span style="color:#d33">Error: template #invoke calls unknown function</span>';
end
return table.concat({table.concat(out,'\n|-\n! scope="row" | '), '\n|-\n|colspan="2"|style: ', style, '\n|-\n|}'}) -- add inter-row markup and close the wikitable and done
else
return '' -- does not use [[Module:Lang]] so abandon quietly
end
end
--[[ -------------------------- < U S E S _ M O D U L E > --------------------------
{{#invoke:Lang/documentor tool|uses_module|template={{ROOTPAGENAME}}}}
Reads the content of the template to determine if this {{lang-xx}} template uses Module:Lang.
Returns the index of the substring '{{#invoke|lang|' in the template page content if true; empty string if false.
Used in template documentation {{#if:}} parser functions.
]]
local function uses_module(frame)
local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace
if not page then
return '' -- TODO: error message?
end
local content = page:getContent() -- get unparsed content
if not page then
return '' -- TODO: error message?
end
return content:find('{{%s*#invoke:[Ll]ang%s*|') or '' -- return index or empty string
end
--[[ -------------------------- < S H A R E D _ C O D E > --------------------------
- Tables:
-- language_categories
-- error_messages
-- strings
- Functions:
-- make_error(message, layout, parent_category, nocat)
-- get_language_link(language_name, language_code)
-- get_see_also_section(page_title, language_name, language_code)
-- get_hidden_category_template(frame)
-- get_top_section(frame)
-- get_bottom_section(frame, language_name, see_also_section, parent_category)
]]
local language_categories = {
["LANGUAGES_SOURCES"] = "Articles with %s-language sources (%s)",
["LANGUAGES_COLLECTIVE_SOURCES"] = "Articles with %s-collective sources (%s)",
["CS1"] = "CS1 %s-language sources (%s)",
["LANGUAGE_TEXT"] = "Articles containing %s-language text",
-- old version ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text from the %s collective",
["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text in %s",
["ENGLISH"] = "Articles containing explicitly cited %s-language text",
}
local error_assistance = " Please see [[Template talk:Lang]] for assistance."
local error_messages = {
["ASSISTANCE"] = "Please see [[Template talk:Lang]] for assistance.",
["INCORRECT_CATEGORY_TITLE"] = "[[:%s]] is not the category being populated by the {{tlx|%s}} template. The correct category is located at: [[:%s]].",
["NO_CATEGORY_TITLE_FOUND"] = "No language category found for '''%s.'''" .. error_assistance,
["NOT_VALID_CATEGORY_FORMAT"] = "'''%s''' is not a a valid category title." .. error_assistance,
["NOT_VALID_LANGUAGE_CODE"] = "[[%s]] is not a valid ISO 639 or IETF language name." .. error_assistance,
}
local strings = {
["ERROR_CATEGORY"] = "[[Category:Lang and lang-xx template errors]]",
["ERROR_SPAN"] = '<span style="font-size: 100%%; font-style: normal;" class="error">Error: %s </span>',
["PURGE_DIV"] = '<div style="font-size: x-small;">%s</div>',
["SEE_ALSO"] = "\n==See also==",
["SEE_ALSO_ITEM"] = "* [[:%s]]",
}
--[[ -------------------------- < M A K E _ E R R O R > --------------------------
Create an error message.
Does not place page in error category if args.nocat is used.
Does not categorize in parent cateogory if used in category namespace (usually for /testcases).
]]
local function make_error(message, layout, parent_category, nocat)
table.insert(layout, string.format(strings["ERROR_SPAN"], message))
if not nocat then
table.insert(layout, strings["ERROR_CATEGORY"])
end
if mw.title.getCurrentTitle().nsText == "Category" then
table.insert(layout, parent_category)
end
return table.concat(layout)
end
--[[ -------------------------- < G E T _ L A N G U A G E _ L I N K > --------------------------
Generates a language link for the correct style.
Collective languages use the name_from_tag value,
while other languages use a display name of "x-language".
]]
local function get_language_link(language_name, language_code)
local lang_module = require('Module:Lang')
-- Is a language collective?
if language_name:find('languages') then
return lang_module.name_from_tag({language_code, link = "yes"})
else
return lang_module.name_from_tag({language_code, link = "yes", label = lang_module.name_from_tag({language_code}) .. "-language"})
end
end
--[[ -------------------------- < G E T _ S E E _ A L S O _ S E C T I O N > --------------------------
Generates a consistent style See also section for
{{Category articles containing non-English-language text}} and {{Non-English-language source category}}.
If {{CS1 language sources}} is converted, it should also use it.
]]
local function get_see_also_section(page_title, language_name, language_code)
local see_also_section = {}
for _, category_name in pairs(language_categories) do
local category = mw.title.new(string.format(category_name, language_name, language_code), 14)
if category and page_title ~= category.text and category.exists then
table.insert(see_also_section, string.format(strings["SEE_ALSO_ITEM"], category.prefixedText))
end
end
table.sort(see_also_section)
table.insert(see_also_section, 1, strings["SEE_ALSO"])
if table.getn(see_also_section) == 1 then
return ""
else
return table.concat(see_also_section, "\n")
end
end
--[[ -------------------------- < G E T _ H I D D E N _ C A T E G O R Y _ T E M P L A T E > --------------------------
Generates the Template:Hidden category template.
This function is separate from the get_top_section() function
as this should be used in both error categories and valid categories.
]]
local function get_hidden_category_template(frame)
return frame:expandTemplate{title = 'Hidden category'}
end
--[[ -------------------------- < G E T _ T O P _ S E C T I O N > --------------------------
Generates a consistent top maintenance template section which consists of:
-- Template:Possibly empty category
-- Template:Purge
]]
local function get_top_section(frame)
local top_section = {}
if mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "all") == 0 then
table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category'})
else
table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category', args = {hidden=true}})
end
local purge_module = require('Module:Purge')
table.insert(top_section, string.format(strings["PURGE_DIV"], purge_module._main({"Purge page cache"})))
return table.concat(top_section, "\n\n")
end
--[[ -------------------------- < G E T _ B O T T O M _ S E C T I O N > --------------------------
Generates a consistent non-text section which consists of:
-- Template:CatAutoTOC
-- A see also section
-- {{DEFAULTSORT}}
-- Categorization in parent category
]]
local function get_bottom_section(frame, language_name, see_also_section, parent_category)
local bottom_section = {}
table.insert(bottom_section, frame:expandTemplate{title = 'CatAutoTOC'})
table.insert(bottom_section, see_also_section)
if mw.title.getCurrentTitle().nsText == "Category" then
table.insert(bottom_section, frame:preprocess{text = "{{DEFAULTSORT:" .. language_name .. "}}"})
table.insert(bottom_section, parent_category)
end
return table.concat(bottom_section, "\n\n\n")
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ T E X T _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_text_category}}
This function implements {{Non-English-language text category}}.
]]
local non_english_language_text_strings = {
["LINE1"] = "This category contains articles with %s%s text. The primary purpose of these categories is to facilitate manual or automated checking of text in other languages.",
["LINE2"] = "This category should only be added with the %s family of templates, never explicitly.",
["LINE3"] = 'For example %s, which wraps the text with <code><span lang="%s"></code>.%s',
["LINE3_EXTRA"] = " Also available is %s which displays as %s.",
["IN_SCRIPT"] = " (in %s)",
["EXAMPLE_DEFAULT_TEXT"] = "text in %s language here",
["PARENT_CATEGORY"] = "[[Category:Articles containing non-English-language text]]",
["TEMPLATE"] = "Lang",
}
local function non_english_language_text_category(frame)
local page = mw.title.getCurrentTitle()
local args = require('Module:Arguments').getArgs(frame)
-- args.test is used for /testcases
if args.test then
page = mw.title.new(args.test)
end
-- Naming style: Articles with text from the Berber languages collective
local page_title_modified = page.text
local split_title = "([^,]+)%%s([^,]*)"
local part1 = ""
local part2 = ""
if page_title_modified:find('Articles with text in') then
-- Naming style: Category:Articles with text from Afro-Asiatic languages (as currently implemented in Module:lang)
part1, part2 = language_categories["LANGUAGES_COLLECTIVE_TEXT"]:match(split_title)
elseif page_title_modified:find('explicitly cited') then
part1, part2 = language_categories["ENGLISH"]:match(split_title)
else
-- Naming style: Category:Articles containing French-language text
part1, part2 = language_categories["LANGUAGE_TEXT"]:match(split_title)
end
page_title_modified = page_title_modified:gsub(part1, "")
page_title_modified = page_title_modified:gsub(part2, "")
local language_name = page_title_modified
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local parent_category = non_english_language_text_strings["PARENT_CATEGORY"]
if language_name == page.text then
-- Error: Category title format not supported.
return make_error(string.format(error_messages["NOT_VALID_CATEGORY_FORMAT"], page.text), layout, parent_category, args.nocat)
end
local lang_module = require('Module:Lang')
local language_code = lang_module._tag_from_name({language_name})
if language_code:find('[Ee]rror') then
-- Error: Language code not found in database.
return make_error(string.format(error_messages["NOT_VALID_LANGUAGE_CODE"], language_name), layout, parent_category, args.nocat)
end
local correct_language_category_title = lang_module._category_from_tag({language_code})
if correct_language_category_title:find('[Ee]rror') then
-- Error: No category title found for language code.
return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat)
end
local current_category_title = page.prefixedText
if current_category_title ~= correct_language_category_title then
-- Error: The current title used is not in the supported format. TODO: can this still be reached?
return make_error(
string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_text_strings["LANG"], correct_language_category_title),
layout, parent_category, args.nocat)
end
table.insert(layout, get_top_section(frame))
local script_text = ""
if args.script then
script_text = string.format(non_english_language_text_strings["IN_SCRIPT"], args.script)
end
local language_link = get_language_link(language_name, language_code)
table.insert(layout, string.format(non_english_language_text_strings["LINE1"], language_link, script_text))
local lang_template = frame:expandTemplate{title = 'Tl', args = {non_english_language_text_strings["TEMPLATE"]}}
table.insert(layout, string.format(non_english_language_text_strings["LINE2"], lang_template))
local language_code_link = lang_module._name_from_tag({language_code, link="yes", label=language_code})
local example_default_text = string.format(non_english_language_text_strings["EXAMPLE_DEFAULT_TEXT"], language_name)
local example_text = args.example or example_default_text
local lang_template_example = frame:expandTemplate{title = 'Tlx', args = {non_english_language_text_strings["TEMPLATE"], language_code_link, example_text}}
local lang_x = mw.title.makeTitle(10, "Lang-" .. language_code)
local line3_extra = ""
if lang_x.exists then
local lang_x_template_example = frame:expandTemplate{title = 'Tlx', args = {lang_x.text, example_text}}
local lang_x_template = frame:expandTemplate{title = lang_x.text, args = {example_text}}
line3_extra = string.format(non_english_language_text_strings["LINE3_EXTRA"], lang_x_template_example, lang_x_template)
end
table.insert(layout, string.format(non_english_language_text_strings["LINE3"], lang_template_example, language_code, line3_extra))
local see_also_section = get_see_also_section(page.text, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_text_strings["PARENT_CATEGORY"])
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ S O U R C E S _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_sources_category}}
This function implements {{Non-English-language sources category}}.
]]
local non_english_language_sources_strings = {
["LINE1"] = "This is a tracking category for articles that use %s to identify %s sources.",
["PARENT_CATEGORY"] = "[[Category:Articles with non-English-language sources]]",
["TEMPLATE"] = "In lang",
}
local function non_english_language_sources_category(frame)
local page = mw.title.getCurrentTitle()
local args = require('Module:Arguments').getArgs(frame)
-- args.test is used for /testcases
if args.test then
page = mw.title.new(args.test)
end
local page_title = page.text
local language_code = page_title:match('%(([%a%-]+)%)')
local language_name = require('Module:Lang')._name_from_tag({language_code})
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local parent_category = non_english_language_sources_strings["PARENT_CATEGORY"]
local correct_language_category_title = require('Module:In lang')._in_lang({language_code, ["list-cats"]="yes"})
if correct_language_category_title == "" then
-- Error: No category title found for language code.
return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat)
end
local current_category_title = page.prefixedText
if correct_language_category_title ~= current_category_title then
-- Error: The current title used is not in the supported format.
return make_error(
string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_sources_strings["TEMPLATE"], correct_language_category_title),
layout, parent_category, args.nocat)
end
local language_link = get_language_link(language_name, language_code)
local text = string.format(non_english_language_sources_strings["LINE1"], frame:expandTemplate{title = 'Tlx', args = {non_english_language_sources_strings["TEMPLATE"], language_code}}, language_link)
table.insert(layout, get_top_section(frame))
table.insert(layout, text)
local see_also_section = get_see_also_section(page_title, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, parent_category)
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ C S 1 _ S O U R C E S _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_cs1_sources_category}}
This function implements {{Non-English-language CS1 sources category}}.
]]
local non_english_language_cs1_text_strings = {
["LINE1"] = "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to identify a source in [[%s language|%s]]. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
["PARENT_CATEGORY"] = "[[Category:CS1 foreign language sources]]", -- #TODO change to "Articles with non-english CS1 language sources" or "CS1 non-English language sources"
}
--"This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
--"[[Category:CS1 uses foreign language script]]",
-- "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
-- "to identify a source in [[%s language|%s]].",
-- "to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>.",
local function non_english_language_cs1_sources_category(frame)
local page_title_object = mw.title.getCurrentTitle()
local page_title = page_title_object.text
local language_code = page_title:match('%(([%a%-]+)%)')
local language_name = require('Module:Lang')._name_from_tag({language_code})
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local see_also_section = ""
local parameter_doc = frame:expandTemplate{title = 'para', args = {"language", language_code}}
table.insert(layout, get_top_section(frame))
table.insert(layout, string.format(non_english_language_cs1_text_strings["LINE1"], parameter_doc, language_name, language_name))
local see_also_section = get_see_also_section(page_title, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_cs1_text_strings["PARENT_CATEGORY"])
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < T E S T _ C A S E S _ S H A R E D _ C O D E > --------------------------
]]
local function compare_by_keys2(a, b) -- local function used by table.sort()
return a[2] < b[2] -- ascending sort by code
end
local function compare_by_keys(a, b) -- local function used by table.sort()
return a[1] < b[1] -- ascending sort by code
end
-- Used by testcases_iso_code_to_name()
local function get_language_code_table_from_code(args)
local entry = {}
--if args.override_table[args.language_code] then
-- table.insert(entry, args.override_table[args.language_code][1]) -- :gsub(' %b()$', '') fails here
--else
table.insert(entry, args.language_code)
-- end
return entry
end
-- Used by testcases_name_from_tag()
local function get_language_code_and_name_table_from_code(args)
local entry = {}
if args.override_table[args.language_code] then
table.insert(entry, args.language_code)
local language_code, _ = args.override_table[args.language_code][1]:gsub(' %b()$', '')
table.insert(entry, language_code)
else
table.insert(entry, args.language_code)
table.insert(entry, args.language_table[args.language_code])
end
return entry
end
-- Used by testcases_category_from_tag()
local function get_language_code_and_category_table_from_code(args)
local entry = {}
table.insert(entry, args.language_code)
table.insert(entry, args.test_function({args.language_code}))
return entry
end
-- Used by testcases_iso_name_to_code() and testcases_tag_from_name()
local function get_language_name_and_code_table_from_code(args)
local entry = {}
if args.override_table[args.language_code] then
table.insert(entry, args.override_table[args.language_code][1]) -- only the first name when there are multiples
table.insert(entry, args.language_code)
else
table.insert(entry, args.language_names[1]) -- only the first name when there are multiples
table.insert(entry, args.language_code)
end
return entry
end
local function get_table(table_function, language_table, length, range, iso_number, test_function)
local table_of_language_name_and_code_tables = {}
local override_table_name = "override"
if iso_number then
override_table_name = "override_" .. iso_number
end
local override_table = require("Module:Language/data/ISO_639_override/sandbox")[override_table_name]
-- For most ISO 639s.
if range then
for language_code, language_names in pairs(language_table) do
if language_code:find(range) then
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
-- For ISO 639-1.
elseif length then
for language_code, language_names in pairs(language_table) do
if language_code:len() == 2 then
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
-- For general /testcases.
else
for language_code, language_names in pairs(language_table) do
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
return table_of_language_name_and_code_tables
end
local function get_undabbed_table(language_list, length, range)
local undabbed_language_table = {} -- for this test, ISO 639-3 language name disambiguators must be removed; un-dabbed names go here
for language_code, language_names in pairs(language_list) do
-- For most ISO 639s.
if range then
if language_code:find(range) then
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code
end
-- For ISO 639-1.
elseif length then
if language_code:len() == 2 then
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code
end
-- For general /testcases.
else
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '')
end
end
return undabbed_language_table
end
--[[ -------------------------- < T E S T C A S E S _ C A T E G O R Y _ F R O M _ T A G > --------------------------
Entry point for the various category_from_tag testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_code>", "<category name according to Module:Lang>"}
- "Expected" column value is the category name according to Module:Lang.
- "Actual" column value is the result of {{#invoke:Lang/sandbox|category_from_tag|<language_code>}}.
TODO: Currently not working.
]]
local function testcases_category_from_tag(self, args)
local cat_from_tag_function = require('Module:Lang')._category_from_tag
local language_tables = get_table(get_language_code_and_category_table_from_code, args.language_list, args.length, args.range, args.iso_number, cat_from_tag_function)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|category_from_tag|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ N A M E _ F R O M _ T A G > --------------------------
Entry point for the various name_from_tag testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_code>", "<language_name>"}
- "Expected" column value is the <language_name>.
- "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|name_from_tag|<language_code>}}.
]]
local function testcases_name_from_tag(self, args)
local undabbed_language_table = get_undabbed_table(args.language_list, args.length, args.range, nil)
local language_tables = get_table(get_language_code_and_name_table_from_code, undabbed_language_table, args.length, args.range)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|name_from_tag|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ T A G _ F R O M _ N A M E > --------------------------
Entry point for the various tag_from_name testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_name>", "<language_code>"}
- "Expected" column value is the <language_code>.
- "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|tag_from_name|<language_name>}}.
TODO: Currently not working.
]]
local function testcases_tag_from_name(self, args)
local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys2)
local ordered_table = {}
table.sort(unordered_table)
for _, key in ipairs(unordered_table) do
table.insert(ordered_table, {key, reverse_table[key]})
end
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|tag_from_name|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ I S O _ C O D E _ T O _ N A M E > --------------------------
Entry point for the various iso_code_to_name testcases.
Build a table of test patterns where each entry in the table is a table with one member:
{"<language_code>"}
- "Expected" column value is the result of the live version of {{#invoke:ISO 639 name|iso_639_name_to_code|<language_code>}}.
- "Actual" column value is the result of sandbox version {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_code>}}.
]]
local function testcases_iso_code_to_name(self, args)
local language_tables = get_table(get_language_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:ISO 639 name/sandbox|iso_639_code_to_name|link=yes|', '}}', '{{#invoke:ISO 639 name|iso_639_code_to_name|link=yes|', '}}',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ I S O _ N A M E _ T O _ C O D E > --------------------------
Entry point for the various iso_name_to_code testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_name>", "<language_code>"}
- "Expected" column value is the <language_code>.
- "Actual" column is value the result of {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_name>}}.
]]
local function testcases_iso_name_to_code(self, args)
local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys2)
self:preprocess_equals_preprocess_many(
'{{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|2=' .. args.iso_number .. "|", '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[--------------------------< S E E _ A L S O >--------------------------------------------------------------
adds items to the list of items in §See also section of Template:Lang-x/doc; Evaluates single positional parameter
which is a comma-separated list of items including list markup.
{{#invoke:Lang/documentor tool|see_also|*{{tl|Lang-tt-Cyrl}}, *{{tl|Lang-tt-Latn}}, *{{tl|Lang-tt-Arab}}}}
]]
local function see_also (frame)
if nil == frame.args[1] or '' == frame.args[1] then -- if empty, ...
return; -- ... return nothing
end
return frame:preprocess (frame.args[1]:gsub ('%s*,%s', '\n')); -- preprocess so any templates are rendered before saving and done
end
--[[ -------------------------< E X P O R T E D _ F U N C T I O N S > -----------------------------------------
]]
return {
lang_xx_settings = lang_xx_settings,
uses_module = uses_module,
see_also = see_also,
non_english_language_text_category = non_english_language_text_category,
non_english_language_sources_category = non_english_language_sources_category,
non_english_language_cs1_sources_category = non_english_language_cs1_sources_category,
private_tags = private_tags,
-- Module:Lang testcases
testcases_category_from_tag = testcases_category_from_tag,
testcases_name_from_tag = testcases_name_from_tag,
testcases_tag_from_name = testcases_tag_from_name,
-- Module:ISO 639 name testcases
testcases_iso_code_to_name = testcases_iso_code_to_name,
testcases_iso_name_to_code = testcases_iso_name_to_code,
}
3db6b7c36a439f8240ae6575fc41416c18ae47fe
Template:Lang-el/doc
10
1009
2214
2023-09-20T16:45:01Z
wikipedia>Nardog
0
/* See also */ not the case, now just a redirct
wikitext
text/x-wiki
{{Documentation subpage}}
{{COinS safe|n}}
{{high-use|18556}}
{{lua|Module:lang}}
{{hatnote|'''This template is only for tagging [[Modern Greek]] text.''' For Ancient Greek, see {{tlx|lang-grc}}; for Medieval Greek, see {{tlx|lang-gkm}}. For custom labels, no labels, or other uses, see {{tlx|lang}}.}}
==Usage==
{{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}}
The primary objective of this template (and of the other {{tlx|lang}} templates) is to tag non-English text so that ''both'' human ''and'' machine readers are able to properly interpret, display and understand non-English text as part of an effort to move towards a [[semantic web]]. To that end, proper use of these templates helps web browsers to choose the correct display font, text-to-speech screen readers to select a more appropriate pronunciation, search engines to better index and relate the context of the content, translation services to properly interpret the words, spell checkers to properly allow and/or require diacritics, and so on.
===Important metadata===
''Regardless of the label that is displayed in front of the text'' (e.g.: "Ancient Greek:" vs. "Greek:" vs. "Modern Greek"), this template will ''always'' wrap the supplied Greek text inside of appropriate HTML {{tag|span}} tags – that is to say that the Greek text will be tagged using the [[ISO 639-1]] language code for '''Modern Greek''': "'''el'''". The following example wikicode:
::{{tlc|lang-el|άτομο}}
produces the following HTML:
::<code><nowiki><a href="/wiki/Greek language" title="Greek language">Greek</a>:</nowiki></code>
::<code><nowiki><span </nowiki>'''lang="el" xml:lang="el"'''<nowiki>>άτομο</span></nowiki></code>
This [[metadata]] identifies the enclosed text as Modern Greek for the benefit of search engines, browsers, screen readers, translators, typesetters, and so on. To these "non-human readers", Modern Greek (encoded as "el") has important distinctions from e.g. Ancient Greek (appropriately encoded using "grc" by other {{tlx|lang}} templates). '''For that reason, this template should never be used with Ancient or Medieval or other Greek text'''.
== Parameters ==
{{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}}
==Syntax==
:'''<nowiki>{{lang-el</nowiki>'''
::'''|{{var|Modern Greek text}}''' – using the Greek alphabet (with [[Greek diacritics|diacritics]]). ''(mandatory)''
::'''|{{var|<nowiki>links=value</nowiki>}}''' – valid values: '''yes''' to have the language name linked (default) and '''no''' to prevent the language name from being linked. '' (optional)''
::'''|{{var|<nowiki>lit=string</nowiki>}}''' – valid strings are English translations of the Greek text. ''(optional)''
::'''|{{var|<nowiki>translit=string</nowiki>}}''' – valid strings are transliterations (with the [[Latin script]]) of the Greek text. ''(optional)''
:'''<nowiki>}}</nowiki>'''
==Examples==
:{| class="wikitable"
|-
! Code
! Result
|-
| {{tlf|lang-el|άτομο}}
| {{lang-el|άτομο}}
|-
| {{tlf|lang-el|άτομο|links{{=}}yes}}
| {{lang-el|άτομο|links=yes}}
|-
| {{tlf|lang-el|άτομο|links{{=}}no}}
| {{lang-el|άτομο|links=no}}
|-
| <code><nowiki>'''Nea Dimokratia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}</nowiki></code>
| '''Nea Dimokratia''' - {{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}
|-
| <code><nowiki>'''Eleftherotypia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}</nowiki></code>
| '''Eleftherotypia''' - {{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}
|}
== Tracking categories ==
* Articles using this template are automatically placed in {{clc|Articles containing Greek-language text}}.
* {{clc|Instances of Lang-el using second unnamed parameter}} - nothing inherently wrong if supplied <code>{{{2}}}</code>, but was created to check for compliance with template scheme.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Text",
"description": "The Greek text to be displayed",
"type": "line",
"required": true
},
"links": {
"label": "Link?",
"description": "If a link to the article Greek language is included",
"type": "boolean",
"default": "yes"
},
"lit": {
"label": "Lit",
"description": "English translation of Greek text",
"type": "string"
},
"translit": {
"label": "Transliteration",
"description": "A Latin alphabet respelling of Greek text",
"suggested": true,
"type": "string"
},
"translit-std": {
"label": "Transliteration standard",
"description": "The identifier for the standard used for transliteration. Accepted value must be one of: ISO, DIN, IAST, ALA, and ALA-LC.",
"suggested": true,
"example": "ISO",
"type": "string"
},
"label": {
"label": "Label",
"description": "label to be used instead of template-provided language label; may be wikilinked; special keyword none causes the template to render without any labels (including transliteration and translation labels)",
"example": "none"
}
},
"description": "Insert Greek text. This template should only be used with modern Greek."
}
</templatedata>
== See also ==
* {{tlx|lang-gkm}} for Medieval Greek.
* {{tlx|lang-grc}} for Ancient Greek.
* {{tlx|lang-grc-gre}} for which the Ancient Greek description is not satisfactory or limiting.
* {{tlx|lang|2=el}} tags Modern Greek text, without the label (for use with custom display, and other uses).
* {{tlx|lang|2=ell}} tags Modern Greek text, without the label (for use with custom display, and other uses).
* {{tlx|lang|2=grc}} tags Ancient Greek text, without the label (for use with custom display, and other uses).
* {{tlx|transl|2=el}} tags text as "Greek Transliteration" (has no visible effect other than said tag when pointer is placed on text).
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Greek multilingual support templates|{{PAGENAME}}]]
[[Category:Lang-x templates|el]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9299cd14ca31df398ffd6c1bbb96c9a03855f67c
Template:Infobox government agency/doc
10
1536
2871
2023-09-20T18:27:09Z
w>Dudhhr
0
Reverted edits by [[Special:Contributions/Jakeistead|Jakeistead]] ([[User talk:Jakeistead|talk]]) ([[WP:AntiVandal|AV]])
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Location map|Module:Check for unknown parameters}}
{{Parameter names example
| name
| native_name
| native_name_a
| native_name_r
| seal
| seal_size
| seal_caption
| seal_alt
| logo
| logo_size
| logo_caption
| logo_alt
| image
| image_size
| image_caption
| image_alt
| formed
| preceding1
| preceding2
| preceding3
| preceding4
| preceding5
| preceding6
| dissolved
| type
| agency_type
| superseding1
| superseding2
| superseding3
| superseding4
| superseding5
| superseding6
| jurisdiction
| status
| headquarters
| coordinates
| motto
| employees
| budget
| minister_type
| minister1_name
| minister1_pfo
| minister2_name
| minister2_pfo
| deputyminister_type
| deputyminister1_name
| deputyminister1_pfo
| deputyminister2_name
| deputyminister2_pfo
| chief1_name
| chief1_position
| chief2_name
| chief2_position
| parent_department
| parent_agency
| parent_agency_type
| child1_agency
| child2_agency
| keydocument1
| keydocument2
| website
| agency_id
| map
| map_size
| map_caption
| map_alt
| footnotes
}}
{{tlg|bold=yes|Infobox government agency}} is an [[WP:infobox|infobox]] for use in articles on government agencies, departments, ministries, etc.
== Usage ==
=== Syntax ===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox government agency
| name =
| native_name =
| native_name_a =
| native_name_r =
| type =
| seal =
| seal_size =
| seal_caption =
| seal_alt =
| logo =
| logo_size =
| logo_caption =
| logo_alt =
| image =
| image_size =
| image_caption =
| image_alt =
| formed = <!-- {{Start date|YYYY|MM|DD}} OR {{Start date and age|YYYY|MM|DD}} -->
| preceding1 =
| preceding2 = <!-- up to |preceding6= -->
| dissolved =
| superseding1 =
| superseding2 = <!-- up to |superseding6= -->
| agency_type =
| jurisdiction =
| status =
| headquarters =
| coordinates = <!-- {{coord|LATITUDE|LONGITUDE|type:landmark_region:US|display=inline,title}} -->
| motto =
| employees =
| budget =
| minister_type =
| minister1_name =
| minister1_pfo =
| minister2_name =
| minister2_pfo = <!-- up to |minister8_name= -->
| deputyminister_type =
| deputyminister1_name =
| deputyminister1_pfo =
| deputyminister2_name =
| deputyminister2_pfo = <!-- up to |deputyminister8_name= -->
| chief1_name =
| chief1_position =
| chief2_name =
| chief2_position = <!-- up to |chief9_name= -->
| parent_department =
| parent_agency =
| parent_agency_type = <!-- defaults to |type if left blank -->
| child1_agency =
| child2_agency = <!-- up to |child25_agency= -->
| keydocument1 = <!-- up to |keydocument6= -->
| website = <!-- {{URL|example.com}} -->
| agency_id =
| map =
| map_size =
| map_caption =
| map_alt =
| footnotes =
| embed =
}}
</syntaxhighlight>
{{clear}}
=== Parameters ===
All parameters except the agency name are optional.
{| class="wikitable" style="background-color: white;"
| style="background-color: whitesmoke;" | '''Field Name'''
| style="background-color: whitesmoke;" | '''Required'''
| style="background-color: whitesmoke;" | '''Description'''
| style="background-color: whitesmoke;" | '''Values'''
|-
| name || yes || Name of the agency || Text
|-
| native_name || no || Agency name in a native language using Western characters (French, German, Spanish, etc.), such as Port Lotniczy im. Fryderyka Chopina. Can also be used for two different names in the same language. || Text; wrap with {{Tl|Lang}}
|-
| native_name_a || no || (optional) Agency name in a native language with non-Western characters (Chinese, Japanese, Korean, Arabic, etc.), such as 北京首都国际机场. || Text; wrap with {{Tl|Lang}}
|-
| native_name_r || no || (optional) Use in conjunction with above for Romanized name of the agency, such as Běijīng Shǒudū Guójì Jīcháng. || Text; wrap with {{Tl|Lang}}
|-
| agency_type || no || Type of agency, rendered on separate line as "'''Type'''" || Text
|-
| type || no || Type of agency, rendered elsewhere in infobox, e.g. "''type'' overview in first line (defaults to "agency") || Text
|-
| seal || no || Seal for the agency || filename
|-
| seal_size || no || Image size for the agency seal (limited to 180 px maximum) || Numbers
|-
| seal_caption || no || Caption for the agency seal || Text
|-
| seal_alt || no || Alt caption for the agency seal || Text
|-
| logo || no || Logo for the agency || filename
|-
| logo_size || no || Image size for the agency logo (limited to 220 px maximum) || Numbers
|-
| logo_caption || no || Caption for the agency logo || Text
|-
| logo_alt || no || Alt caption for the agency logo || Text
|-
| image || no || Image for the agency || filename
|-
| image_size || no || Image size for the agency image (limited to 220 px maximum) || Numbers
|-
| image_caption || no || Caption for the agency image || Text
|-
| image_alt || no || Alt caption for the agency image || Text
|-
| formed || no || Date of foundation of the agency || Use {{Tl|Start date}}
|-
| preceding1 || no || Name of preceding agency. Can be repeated up to six times (preceding1 to preceding6).<br/>'''Note:''' Title of box will automatically pluralise upon use of preceding2. || Text
|-
| dissolved || no || Date of dissolution of the agency || Text e.g.; <nowiki>25 July 2005, or 1876</nowiki>
|-
| superseding1 || no || Name of superseding agency. Can be repeated up to six times (superseding1 to superseding6).<br/>'''Note:''' Title of box will automatically pluralise upon use of superseding2. || Text
|-
| jurisdiction || no || Name of the jurisdiction in which the agency resides || Text e.g.; <nowiki>[[Government of Western Australia]] or [[United States Government]]</nowiki>
|-
| headquarters || no || Location of the agency's headquarters. || Text e.g.; <nowiki>[[Sydney, New South Wales]]</nowiki>
|-
| coordinates || no || Headquarters coordinates using {{tl|coord}}. See documentation at {{tl|coord}} for fields. || <nowiki>{{coord|45|31|7|N|122|50|16|W|type:landmark_region:US|display=inline,title}}</nowiki>
|-
| motto || no || Official motto/slogan of the agency|| Motto/slogan
|-
| employees || no || Number of employees of the agency || Number
|-
| budget || no || Annual budget of the agency || Text e.g.; <nowiki>$95 m [[United States dollar|USD]] (2006)</nowiki>
|-
| minister1_name || no || For [[Westminster system]]s: Name of current minister responsible for the agency. Can be repeated up to eight times (minister1_name to minister8_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of minister2_name. || Text
|-
| minister1_pfo || no || For Westminster systems: Portfolio title of responsible minister. Can be repeated up to eight times (minister1_pfo to minister8_pfo). || Text
|-
| deputyminister1_name || no || For Westminster systems with deputy ministers: Name of current deputy minister responsible for the agency. Can be repeated up to eight times (deputyminister1_name to deputyminister8_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of minister2_name. || Text
|-
| deputyminister1_pfo || no || For Westminster systems with deputy ministers: Portfolio title of responsible deputy minister. Can be repeated up to eight times (minister1_pfo to minister8_pfo). || Text
|-
| chief1_name || no || Name of current agency chief/director/executive director. Can be repeated up to nine times (chief1_name to chief9_name).<br/>'''Note:''' Title of box will automatically pluralise upon use of chief2_name. || Text
|-
| chief1_position || no || Position title of current agency chief/director/executive director. Can be repeated up to nine times (chief1_position to chief9_position). || Text
|-
| parent_department || no || Parent department of this agency (when the parent is not an agency) || Text
|-
| parent_agency || no || Parent agency of this agency (when the parent is also an agency) || Text
|-
| parent_agency_type || no || Parent agency type (defaults to ''type'') || Text
|-
| child1_agency || no || List of current child agencies reporting to this agency. Can be repeated up to twenty five times (child1_agency to child25_agency).<br/>'''Note:''' Title of box will automatically pluralise upon use of child2_agency. || Text
|-
| keydocument1|| no || Hyperlink of key document for organisation. Can be repeated up to six times (keydocument1 to keydocument6).<br/>'''Note:''' Title of box will automatically pluralise upon use of keydocument2. || Text
|-
| website || no || Web address for agency website || Use {{Tl|URL}}. '''Don't forget to take out the "example.com"!'''
|-
| agency_id || no || Unique identifier assigned by records office or similar organisation || Text
|-
| map || no || Image for the map || filename
|-
| map_size || no || Image size for the map (limited to 220 px maximum) || Numbers
|-
| map_caption || no || Caption for the map || Text
|-
| map_alt || no || Alt caption for the map || Text
|-
| footnotes || no || Footnotes or references for included information || Text
|-
| child || no || to make this a child (subsidiary) infobox || Infobox template
|-
| embed || no || to embed another child (subsidiary) infobox at the bottom || infobox template
|}
== Examples ==
{{Infobox government agency
| name = United States Department of Agriculture
| type = Department
| logo = USDA logo.svg
| logo_size = 140 px
| logo_caption = Logo of the USDA
| logo_alt = USDA official logo
| seal = US Department of Agriculture seal.svg
| seal_size = 140 px
| seal_caption = Seal of the Department of Agriculture
| seal_alt = Department of Agriculture official seal
| formed = {{Start date|1889|02|15}}
| jurisdiction = [[Federal government of the United States]]
| headquarters = 1301 [[Independence Avenue (Washington, D.C.)|Independence Avenue]], S.W., [[Washington, D.C.]]
| coordinates = {{coord|38|53|12|N|77|01|47|W|region:US-DC_type:landmark|display=inline}}
| employees = 105,778 (June 2007)
| budget = $94 billion [[United States dollar|USD]] (2006)
| chief1_name = [[Mike Johanns]]
| chief1_position = [[United States Secretary of Agriculture|Secretary of Agriculture]]
| chief2_name = [[Charles Franklin Conner|Charles F. Conner]]
| chief2_position = Deputy Secretary of Agriculture
| child1_agency = Several
| website = {{URL|usda.gov}}
}}
For the [[United States Department of Agriculture]]:
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox government agency
| name = United States Department of Agriculture
| type = Department
| logo = USDA logo.svg
| logo_size = 140 px
| logo_caption = Logo of the USDA
| logo_alt = USDA official logo
| seal = Seal of the United States Department of Agriculture.svg
| seal_size = 140 px
| seal_caption = Seal of the Department of Agriculture
| seal_alt = Department of Agriculture official seal
| formed = {{Start date|1889|02|15}}
| jurisdiction = [[Federal government of the United States]]
| headquarters = 1301 [[Independence Avenue (Washington, D.C.)|Independence Avenue]], S.W., [[Washington, D.C.]]
| coordinates = {{coord|38|53|12|N|77|01|47|W|region:US-DC_type:landmark|display=inline,title}}
| employees = 105,778 (June 2007)
| budget = $94 billion [[United States dollar|USD]] (2006)
| chief1_name = [[Mike Johanns]]
| chief1_position = [[United States Secretary of Agriculture|Secretary of Agriculture]]
| chief2_name = [[Charles Franklin Conner|Charles F. Conner]]
| chief2_position = Deputy Secretary of Agriculture
| child1_agency = Several
| website = {{URL|usda.gov}}
}}
</syntaxhighlight>
{{clear}}
{{Infobox government agency
| name = Federal Statistical Office of Germany
| native_name = Statistisches Bundesamt Deutschland
| logo = Logo Destatis.svg
| logo_alt = Logo Destatis
| headquarters = Gustav-Stresemann-Ring 11, D-65189, [[Wiesbaden]]
| coordinates = {{coord|50|4|18.7068|N|8|15|6.2676|E|region:DE-HE_type:landmark|display=inline}}
| formed = {{start date and age|df=yes|paren=yes|1953|07|03}}
| jurisdiction = [[Politics of Germany|Government of Germany]]
| employees = 2,780
| minister1_name = [[Wolfgang Schäuble|Wolfgang Schauble]]
| minister1_pfo = [[Federal Ministry of the Interior (Germany)|German Interior Minister]]
| chief1_name = Walter Radermacher
| chief1_position = Bureau president
| parent_department = [[Federal Ministry of the Interior (Germany)|Federal Ministry of the Interior]]
| website = {{URL|destatis.de}}
}}
For the [[Federal Statistical Office of Germany]]:
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox government agency
| name = Federal Statistical Office of Germany
| native_name = Statistisches Bundesamt Deutschland
| logo = Logo Destatis.svg
| logo_alt = Logo Destatis
| headquarters = Gustav-Stresemann-Ring 11, D-65189, [[Wiesbaden]]
| coordinates = {{coord|50|4|18.7068|N|8|15|6.2676|E|region:DE-HE_type:landmark|display=inline,title}}
| formed = {{start date and age|df=yes|paren=yes|1953|07|03}}
| jurisdiction = [[Politics of Germany|Government of Germany]]
| employees = 2,780
| minister1_name = [[Wolfgang Schäuble|Wolfgang Schauble]]
| minister1_pfo = [[Federal Ministry of the Interior (Germany)|German Interior Minister]]
| chief1_name = Walter Radermacher
| chief1_position = Bureau president
| parent_department = [[Federal Ministry of the Interior (Germany)|Federal Ministry of the Interior]]
| website = {{URL|destatis.de}}
}}
</syntaxhighlight>
{{clear}}
== TemplateData ==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "An infobox template for use in articles on government agencies",
"format": "{{_\n| _______________ = _\n}}\n",
"params": {
"name": {
"suggested": true,
"aliases": [
"agency_name"
],
"label": "Name",
"description": "Name of the agency",
"type": "line",
"default": "Name of the page"
},
"native_name": {
"aliases": [
"nativename"
],
"label": "Native name",
"description": "Agency name in a native language using Western characters (French, German, Spanish, etc.), such as Port Lotniczy im. Fryderyka Chopina. Can also be used for two different names in the same language.",
"example": "{{lang|pl|Port Lotniczy im}}",
"type": "line"
},
"native_name_a": {
"aliases": [
"nativename_a"
],
"label": "Direct native name",
"description": "Agency name in a native language with non-Western characters (Chinese, Japanese, Korean, Arabic, etc.).",
"example": "{{lang|zh|北京首都国际机场}}",
"type": "line"
},
"native_name_r": {
"aliases": [
"nativename_r"
],
"label": "Romanised native name",
"description": "(optional) Use in conjunction with above for Romanized name of the agency.",
"example": "{{lang|zh-p|Běijīng Shǒudū Guójì Jīcháng}}",
"type": "line"
},
"seal": {
"label": "Seal",
"description": "Seal for the agency",
"type": "wiki-file-name",
"suggested": true
},
"seal_size": {
"aliases": [
"seal_width"
],
"label": "Seal size",
"description": "Image size for the agency seal (limited to 180 px maximum)",
"type": "number"
},
"seal_caption": {
"label": "Seal caption",
"description": "Caption for the agency seal",
"type": "line"
},
"logo": {
"label": "Logo",
"description": "Image for the agency\t",
"type": "wiki-file-name",
"suggested": true
},
"logo_size": {
"aliases": [
"logo_width"
],
"label": "Logo size",
"description": "Image size for the agency image (limited to 180 px maximum)\t",
"type": "number"
},
"logo_caption": {
"description": "Caption for the agency logo",
"type": "line",
"label": "Logo caption"
},
"image": {
"aliases": [
"picture"
],
"label": "Image",
"description": "Image for the agency",
"type": "wiki-file-name"
},
"image_size": {
"aliases": [
"picture_width"
],
"label": "Image size",
"description": "Image size for the agency image (limited to 180 px maximum)",
"type": "number"
},
"image_caption": {
"aliases": [
"picture_caption"
],
"label": "Image caption",
"description": "Caption for the agency image\t",
"type": "line"
},
"formed": {
"label": "Date founded",
"description": "Date of foundation of the agency",
"example": "{{Start date|1066|12|25|df=yes}}",
"type": "line",
"suggested": true
},
"preceding1": {
"label": "Preceding agency 1",
"description": "Name of a preceding agency. Title of box will automatically pluralise upon use of more than one.",
"type": "line"
},
"preceding2": {
"inherits": "preceding1",
"label": "Preceding agency 2"
},
"preceding3": {
"inherits": "preceding1",
"label": "Preceding agency 3"
},
"preceding4": {
"inherits": "preceding1",
"label": "Preceding agency 4"
},
"preceding5": {
"inherits": "preceding1",
"label": "Preceding agency 5"
},
"preceding6": {
"inherits": "preceding1",
"label": "Preceding agency 6"
},
"dissolved": {
"label": "Date dissolved",
"description": "Date of dissolution of the agency",
"example": "{{end date|1782}}"
},
"superseding1": {
"aliases": [
"superseding"
],
"label": "Superseding agency 1",
"description": "Name of a superseding agency. Title of box will automatically pluralise upon use of more than one.",
"type": "line"
},
"superseding2": {
"inherits": "superseding1",
"label": "Superseding agency 2"
},
"superseding3": {
"inherits": "superseding1",
"label": "Superseding agency 3"
},
"superseding4": {
"inherits": "superseding1",
"label": "Superseding agency 4"
},
"superseding5": {
"inherits": "superseding1",
"label": "Superseding agency 5"
},
"superseding6": {
"inherits": "superseding1",
"label": "Superseding agency 6"
},
"jurisdiction": {
"label": "Jurisdiction",
"description": "Name of the jurisdiction in which the agency resides\t",
"example": "[[Government of Western Australia]]",
"type": "line",
"suggested": true
},
"headquarters": {
"label": "Headquarters",
"description": "Location of the agency's headquarters. Do not list country unless it is not already clear from context.",
"example": "[[Sydney, New South Wales]]",
"type": "line"
},
"latd": {
"label": "Latitude in degrees",
"description": "Headquarters co-ordinates; latitude in degrees.",
"type": "number"
},
"longd": {
"label": "Longitude in degrees.",
"description": "Headquarters co-ordinates; longitude in degrees.",
"type": "number"
},
"latm": {
"label": "Latitude in minutes",
"description": "Headquarters co-ordinates; latitude in minutes.",
"type": "number"
},
"lats": {
"label": "Latitude in seconds",
"description": "Headquarters co-ordinates; latitude in seconds.",
"type": "number"
},
"latNS": {
"label": "Latitude polarity",
"description": "Headquarters co-ordinates; specifies Northern (N) or Southern (S) latitude.",
"example": "N",
"type": "line"
},
"longm": {
"label": "Longitude in minutes",
"description": "Headquarters co-ordinates; longitude in minutes.",
"type": "number"
},
"longs": {
"label": "Longitude in seconds",
"description": "Headquarters co-ordinates; longitude in seconds.",
"type": "number"
},
"longEW": {
"label": "Longitude polarity",
"description": "Headquarters co-ordinates; specifies Western (W) or Eastern (E) latitude.",
"example": "W",
"type": "line"
},
"region_code": {
"label": "Region code",
"description": "Headquarters coordinates; sets the preferred map region of coverage, used in selecting appropriate map resources for the area. The region should be supplied as either a two character ISO 3166-1 alpha-2 country code, or an ISO 3166-2 region code.",
"example": "AU",
"type": "line"
},
"coordinates": {
"label": "Headquarter co-ordinates template",
"description": "Headquarters coordinates using {{coord}} option instead of the above. See documentation at {{coord}} for fields.\t",
"type": "line",
"deprecated": true
},
"motto": {
"label": "Motto or slogan",
"description": "Official motto/slogan of the agency",
"example": "Semper Occultus",
"type": "line"
},
"employees": {
"label": "Employees",
"description": "Number of employees of the agency",
"example": "3200",
"type": "number",
"suggested": true
},
"budget": {
"label": "Annual budget",
"description": "Annual budget of the agency",
"example": "$95 m [[United States dollar|USD]] (2006)",
"type": "line",
"suggested": true
},
"minister1_name": {
"label": "Minister 1",
"description": "Name of a current minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.",
"example": "[[The Right Honourable|Rt Hon]] [[Philip Hammond]], [[Member of parliament|MP]]",
"type": "line"
},
"minister1_pfo": {
"label": "Ministerial portfolio 1",
"description": "Portfolio of a current minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.",
"example": "[[Secretary of State for Foreign and Commonwealth Affairs]]",
"type": "line"
},
"minister2_name": {
"inherits": "minister1_name",
"label": "Minister 2"
},
"minister2_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 2"
},
"minister3_name": {
"inherits": "minister1_name",
"label": "Minister 3"
},
"minister3_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 3"
},
"minister4_name": {
"inherits": "minister1_name",
"label": "Minister 4"
},
"minister4_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 4"
},
"minister5_name": {
"inherits": "minister1_name",
"label": "Minister 5"
},
"minister5_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 5"
},
"minister6_name": {
"inherits": "minister1_name",
"label": "Minister 6"
},
"minister6_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 6"
},
"minister7_name": {
"inherits": "minister1_name",
"label": "Minister 7"
},
"minister7_pfo": {
"inherits": "minister1_pfo",
"label": "Ministerial portfolio 7"
},
"deputyminister1_name": {
"label": "Deputy minister 1",
"description": "Name of a current deputy minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.",
"type": "line"
},
"deputyminister1_pfo": {
"label": "Deputy ministerial portfolio 1",
"description": "Portfolio of a current deputy minister responsible for the agency, in Westminster systems. Title of box will automatically pluralise upon use of more than one.",
"example": "[[Secretary of State for Foreign and Commonwealth Affairs]]",
"type": "line"
},
"deputyminister2_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 2"
},
"deputyminister2_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 2"
},
"deputyminister3_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 3"
},
"deputyminister3_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 3"
},
"deputyminister4_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 4"
},
"deputyminister4_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 4"
},
"deputyminister5_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 5"
},
"deputyminister5_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 5"
},
"deputyminister6_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 6"
},
"deputyminister6_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 6"
},
"deputyminister7_name": {
"inherits": "deputyminister1_name",
"label": "Deputy minister 7"
},
"deputyminister7_pfo": {
"inherits": "deputyminister1_pfo",
"label": "Deputy ministerial portfolio 7"
},
"chief1_name": {
"label": "Head 1",
"description": "Name of current agency chief/director/executive director.",
"example": "[[Alex Younger]]",
"type": "line",
"suggested": true
},
"chief1_position": {
"label": "Head position 1",
"description": "Position title of current agency chief/director/executive director.",
"example": "[[Chief of the Secret Intelligence Service|Chief of the SIS]]",
"type": "line",
"suggested": true
},
"chief2_name": {
"inherits": "chief1_name",
"label": "Head 2"
},
"chief2_position": {
"inherits": "chief1_position",
"label": "Head position 2"
},
"chief3_name": {
"inherits": "chief1_name",
"label": "Head 3"
},
"chief3_position": {
"inherits": "chief1_position",
"label": "Head position 3"
},
"chief4_name": {
"inherits": "chief1_name",
"label": "Head 4"
},
"chief4_position": {
"inherits": "chief1_position",
"label": "Head position 4"
},
"chief5_name": {
"inherits": "chief1_name",
"label": "Head 5"
},
"chief5_position": {
"inherits": "chief1_position",
"label": "Head position 5"
},
"chief6_name": {
"inherits": "chief1_name",
"label": "Head 6"
},
"chief6_position": {
"inherits": "chief1_position",
"label": "Head position 6"
},
"chief7_name": {
"inherits": "chief1_name",
"label": "Head 7"
},
"chief7_position": {
"inherits": "chief1_position",
"label": "Head position 7"
},
"chief8_name": {
"inherits": "chief1_name",
"label": "Head 8"
},
"chief8_position": {
"inherits": "chief1_position",
"label": "Head position 8"
},
"chief9_name": {
"inherits": "chief1_name",
"label": "Head 9"
},
"chief9_position": {
"inherits": "chief1_position",
"label": "Head position 9"
},
"parent_department": {
"label": "Parent department",
"description": "Parent department of this agency (when the parent is not an agency)\t",
"example": "[[Home Office]]",
"type": "line",
"suggested": true
},
"parent_agency": {
"label": "Parent agency",
"description": "Parent agency of this agency (when the parent is also an agency)\t",
"type": "line"
},
"child1_agency": {
"label": "Child agency 1",
"description": "An agency that reports to this one.",
"type": "line"
},
"child2_agency": {
"inherits": "child1_agency",
"label": "Child agency 2"
},
"child3_agency": {
"inherits": "child1_agency",
"label": "Child agency 3"
},
"child4_agency": {
"inherits": "child1_agency",
"label": "Child agency 4"
},
"child5_agency": {
"inherits": "child1_agency",
"label": "Child agency 5"
},
"child6_agency": {
"inherits": "child1_agency",
"label": "Child agency 6"
},
"child7_agency": {
"inherits": "child1_agency",
"label": "Child agency 7"
},
"child8_agency": {
"inherits": "child1_agency",
"label": "Child agency 8"
},
"child9_agency": {
"inherits": "child1_agency",
"label": "Child agency 9"
},
"child10_agency": {
"inherits": "child1_agency",
"label": "Child agency 10"
},
"child11_agency": {
"inherits": "child1_agency",
"label": "Child agency 11"
},
"child12_agency": {
"inherits": "child1_agency",
"label": "Child agency "
},
"child13_agency": {
"inherits": "child1_agency",
"label": "Child agency 13"
},
"child14_agency": {
"inherits": "child1_agency",
"label": "Child agency 14"
},
"child15_agency": {
"inherits": "child1_agency",
"label": "Child agency 15"
},
"child16_agency": {
"inherits": "child1_agency",
"label": "Child agency 16"
},
"child17_agency": {
"inherits": "child1_agency",
"label": "Child agency 17"
},
"child18_agency": {
"inherits": "child1_agency",
"label": "Child agency 18"
},
"child19_agency": {
"inherits": "child1_agency",
"label": "Child agency 19"
},
"child20_agency": {
"inherits": "child1_agency",
"label": "Child agency 20"
},
"child31_agency": {
"inherits": "child1_agency",
"label": "Child agency 31"
},
"child22_agency": {
"inherits": "child1_agency",
"label": "Child agency 22"
},
"child23_agency": {
"inherits": "child1_agency",
"label": "Child agency 23"
},
"child24_agency": {
"inherits": "child1_agency",
"label": "Child agency 24"
},
"child25_agency": {
"inherits": "child1_agency",
"label": "Child agency 25"
},
"keydocument1": {
"label": "Key document 1",
"description": "Hyperlink to key document for the organisation.",
"type": "url"
},
"keydocument2": {
"inherits": "keydocument1",
"label": "Key document 2"
},
"keydocument3": {
"inherits": "keydocument1",
"label": "Key document 3"
},
"keydocument4": {
"inherits": "keydocument1",
"label": "Key document 4"
},
"keydocument5": {
"inherits": "keydocument1",
"label": "Key document 5"
},
"keydocument6": {
"inherits": "keydocument1",
"label": "Key document 6"
},
"website": {
"label": "Website",
"description": "Hyperlink to agency's website.",
"type": "url",
"suggested": true
},
"map": {
"label": "Map",
"description": "Image for the map",
"type": "wiki-file-name"
},
"map_size": {
"aliases": [
"map_width",
"pushpin_mapsize"
],
"label": "Map size",
"description": "Image size for the map (limited to 180 px maximum)",
"type": "number"
},
"map_caption": {
"label": "Map caption",
"description": "Caption for the map",
"type": "line",
"aliases": [
"pushpin_map_caption"
]
},
"footnotes": {
"label": "Footnotes"
},
"type": {
"label": "Type",
"description": "Type of agency",
"type": "line",
"default": "agency"
},
"service": {},
"agency_type": {},
"subbox": {},
"italic title": {},
"child": {},
"embed": {},
"seal_alt": {},
"logo_alt": {},
"image_alt": {},
"status": {},
"minister_type": {},
"minister8_name": {
"label": "Minister 8"
},
"minister8_pfo": {
"label": "Ministerial portfolio 8"
},
"deputyminister_type": {},
"deputyminister8_name": {
"label": "Deputy minister 8"
},
"deputyminister8_pfo": {
"label": "Deputy ministerial portfolio 8"
},
"parent_agency_type": {},
"child21_agency": {},
"agency_id": {},
"map_alt": {
"aliases": [
"pushpin_map_alt"
]
},
"map_type": {
"aliases": [
"pushpin_map"
]
},
"map_dot_mark": {},
"map_dot_label": {
"aliases": [
"map dot label",
"pushpin_label"
]
},
"relief": {
"aliases": [
"pushpin_relief"
]
},
"image_map": {}
},
"paramOrder": [
"name",
"native_name",
"native_name_a",
"native_name_r",
"type",
"seal",
"seal_size",
"seal_caption",
"logo",
"logo_size",
"logo_caption",
"image",
"image_size",
"image_caption",
"formed",
"preceding1",
"preceding2",
"preceding3",
"preceding4",
"preceding5",
"preceding6",
"dissolved",
"superseding1",
"superseding2",
"superseding3",
"superseding4",
"superseding5",
"superseding6",
"jurisdiction",
"headquarters",
"latd",
"longd",
"latm",
"lats",
"latNS",
"longm",
"longs",
"longEW",
"region_code",
"coordinates",
"motto",
"employees",
"budget",
"minister1_name",
"minister1_pfo",
"minister2_name",
"minister2_pfo",
"minister3_name",
"minister3_pfo",
"minister4_name",
"minister4_pfo",
"minister5_name",
"minister5_pfo",
"minister6_name",
"minister6_pfo",
"minister7_name",
"minister7_pfo",
"minister8_name",
"deputyminister1_name",
"deputyminister1_pfo",
"deputyminister2_name",
"deputyminister2_pfo",
"deputyminister3_name",
"deputyminister3_pfo",
"deputyminister4_name",
"deputyminister4_pfo",
"deputyminister5_name",
"deputyminister5_pfo",
"deputyminister6_name",
"deputyminister6_pfo",
"deputyminister7_name",
"deputyminister7_pfo",
"chief1_name",
"chief1_position",
"chief2_name",
"chief2_position",
"chief3_name",
"chief3_position",
"chief4_name",
"chief4_position",
"chief5_name",
"chief5_position",
"chief6_name",
"chief6_position",
"chief7_name",
"chief7_position",
"chief8_name",
"chief8_position",
"chief9_name",
"chief9_position",
"parent_department",
"parent_agency",
"child1_agency",
"child2_agency",
"child3_agency",
"child4_agency",
"child5_agency",
"child6_agency",
"child7_agency",
"child8_agency",
"child9_agency",
"child10_agency",
"child11_agency",
"child12_agency",
"child13_agency",
"child14_agency",
"child15_agency",
"child16_agency",
"child17_agency",
"child18_agency",
"child19_agency",
"child20_agency",
"child31_agency",
"child22_agency",
"child23_agency",
"child24_agency",
"child25_agency",
"keydocument1",
"keydocument2",
"keydocument3",
"keydocument4",
"keydocument5",
"keydocument6",
"website",
"map",
"map_size",
"map_caption",
"footnotes",
"agency_type",
"service",
"subbox",
"italic title",
"child",
"embed",
"seal_alt",
"logo_alt",
"image_alt",
"status",
"minister_type",
"minister8_pfo",
"deputyminister_type",
"deputyminister8_name",
"deputyminister8_pfo",
"parent_agency_type",
"child21_agency",
"agency_id",
"map_alt",
"map_type",
"map_dot_mark",
"map_dot_label",
"relief",
"image_map"
]
}
</templatedata>
{{Collapse bottom}}
== Tracking category ==
* {{clc|Pages using infobox government agency with unknown parameters}}
== See also ==
===A related note===
{{Note2}} 'Infobox government agency' is discouraged as the sole infobox for certain government bodies, such as law enforcement, military units, space programs, and a few others because they ''all'' have infoboxes specializing in those subjects. However, practical embedding of infoboxes ''is'' encouraged.
{{Organization infoboxes}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Organization infobox templates|Government Agency]]
[[Category:Politics and government infobox templates|Government Agency]]
[[Category:Embeddable templates]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}</includeonly>
24bd4129b5e2f63990eb107efca1696a417c76f1
Template:Infobox person/doc
10
1259
2593
2023-09-21T07:19:01Z
w>Toghrul R
0
+
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}{{pp-move-indef}}</noinclude>{{for|an infobox for fictional characters|Template:Infobox character}}
{{Template shortcut|Personbox}}
{{documentation subpage}}
{{Person infobox header}}
{{High-use|info=About [https://linkcount.toolforge.org/index.php?project=en.wikipedia.org&page=Template:Infobox_person&namespaces=0 410,000] of them (90%) are in mainspace.}}
{{Notice|Please note that in 2016, the {{para|religion}} and {{para|ethnicity}} parameters were removed from Infobox person as a result of [[Wikipedia:Village pump (policy)/Archive 126#RfC: Religion in biographical infoboxes|the RfC: Religion in biographical infoboxes]] and [[Wikipedia:Village pump (policy)/Archive 127#RfC: Ethnicity in infoboxes|the RfC: Ethnicity in infoboxes]] as clarified by [[Template talk:Infobox person/Archive 31#Ethnicity? Religion?|this discussion]].}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
{{Tracks Wikidata|P18|cat=No local image but image on Wikidata}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
{{tl|Infobox person}} may be used to summarize information about a particular person, usually at the top of an article.
== Redirects and calls ==
At least {{PAGESINCATEGORY:Templates calling Infobox person}} other [[:Category:Templates calling Infobox person|templates call this one]] and many templates [{{fullurl:Special:WhatLinksHere/Template:Infobox_person|namespace=10&hidetrans=1&hidelinks=1}} redirect here].
== Modules ==
The following templates are suitable for use as a "module" in this one:
* Templates in [[:Category:Biographical templates usable as a module]]
* {{tl|Listen}}
* {{tl|Infobox Chinese}}
== Usage ==
The infobox may be added by pasting the template as shown below into an article and then filling in the desired fields. Any parameters left blank or omitted will not be displayed.
=== Blank template with basic parameters ===
{{Infobox person
| name = ''name''
| image = example-serious.jpg
| alt = alt
| caption = ''caption''
| birth_name = ''birth_name''
| birth_date = ''birth_date''
| birth_place = ''birth_place''
| death_date = ''death_date''
| death_place = ''death_place''
| nationality = ''nationality''
| other_names = ''other_names''
| occupation = ''occupation''
| years_active = ''years_active''
| known_for = ''known_for''
| notable_works = ''notable_works''
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;">
{{Infobox person
| name = <!-- defaults to article title when left blank -->
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| birth_name = <!-- only use if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (DEATH date then BIRTH date) -->
| death_place =
| nationality = <!-- use only when necessary per [[WP:INFONAT]] -->
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
{{Infobox person
| name = ''name''
| image = example-serious.jpg
| alt = alt
| caption = ''caption''
| birth_name = ''birth_name''
| birth_date = ''birth_date''
| birth_place = ''birth_place''
| death_date = ''death_date''
| death_place = ''death_place''
| nationality = ''nationality''
| other_names = ''other_names''
| occupation = ''occupation''
| years_active = ''years_active''
| known_for = ''known_for''
| notable_works = ''notable_works''
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em;">
{{Infobox person
| name =
| image =
| alt =
| caption =
| birth_name =
| birth_date =
| birth_place =
| death_date =
| death_place =
| nationality =
| other_names =
| occupation =
| years_active =
| known_for =
| notable_works =
}}
</syntaxhighlight>
{{clear}}
=== Blank template with all parameters ===
Only the most pertinent information should be included. Please {{em|remove}} unused parameters, and refrain from inserting dubious trivia in an attempt to fill all parameters.
{{Parameter names example | _display=italics
| honorific_prefix | name | honorific_suffix
| image=example-serious.jpg | image_upright=1 | landscape | alt | caption <!--shows placement of parameters, see examples for image-->
| native_name | native_name_lang | pronunciation
| birth_name | birth_date | birth_place | baptised <!--does not display due to birth date displayed-->
| disappeared_date | disappeared_place | disappeared_status | death_date | death_place | death_cause <!--should only be included when the cause of death has significance for the subject's notability-->
| body_discovered | resting_place | resting_place_coordinates | monuments
| nationality | other_names | siglum | citizenship | education | alma_mater
| occupation | years_active | era | employer | organization | agent | known_for | notable_works
| style | height | television
| title | term | predecessor | successor | party | otherparty | movement | opponents | boards
| criminal_charges | criminal_penalty | criminal_status
| spouse | partner | children | parents | relatives | family | callsign | awards | website
| module | module2 | module3 | module4 | module5 | module6 <!--removed the ... which only saved two lines from being shown-->
| signature=<nowiki>signature.jpg</nowiki> |signature_type | signature_size | signature_alt
| footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em">
{{Infobox person
| honorific_prefix =
| name = <!-- defaults to article title when left blank -->
| honorific_suffix =
| image = <!-- filename only, no "File:" or "Image:" prefix, and no enclosing [[brackets]] -->
| image_upright =
| landscape = <!-- yes, if wide image, otherwise leave blank -->
| alt = <!-- descriptive text for use by speech synthesis (text-to-speech) software -->
| caption =
| native_name =
| native_name_lang =
| pronunciation =
| birth_name = <!-- only use if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} for living people supply only the year with {{Birth year and age|YYYY}} unless the exact date is already widely published, as per [[WP:DOB]]. For people who have died, use {{Birth date|YYYY|MM|DD}}. -->
| birth_place =
| baptised = <!-- will not display if birth_date is entered -->
| disappeared_date = <!-- {{Disappeared date and age|YYYY|MM|DD|YYYY|MM|DD}} (disappeared date then birth date) -->
| disappeared_place =
| disappeared_status =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (enter DEATH date then BIRTH date (e.g., ...|1967|8|31|1908|2|28}} use both this parameter and |birth_date to display the person's date of birth, date of death, and age at death) -->
| death_place =
| death_cause = <!-- should only be included when the cause of death has significance for the subject's notability -->
| body_discovered =
| resting_place =
| resting_place_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| burial_place = <!-- may be used instead of resting_place and resting_place_coordinates (displays "Burial place" as label) -->
| burial_coordinates = <!-- {{coord|LAT|LONG|type:landmark|display=inline}} -->
| monuments =
| nationality = <!-- use only when necessary per [[WP:INFONAT]] -->
| other_names =
| siglum =
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent = <!-- discouraged in most cases, specifically when promotional, and requiring a reliable source -->
| known_for =
| notable_works = <!-- produces label "Notable work"; may be overridden by |credits=, which produces label "Notable credit(s)"; or by |works=, which produces label "Works"; or by |label_name=, which produces label "Label(s)" -->
| style =
| height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) -->
| television =
| title = <!-- formal/awarded/job title. The parameter |office=may be used as an alternative when the label is better rendered as "Office" (e.g. public office or appointments) -->
| term =
| predecessor =
| successor =
| party =
| otherparty =
| movement =
| opponents =
| boards =
| criminal_charges = <!-- criminality parameters should be supported with citations from reliable sources -->
| criminal_penalty =
| criminal_status =
| spouse = <!-- use article title or common name -->
| partner = <!-- (unmarried long-term partner) -->
| children =
| parents = <!-- overrides mother and father parameters -->
| mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| relatives =
| family =
| callsign = <!-- amateur radio, use if relevant -->
| awards =
| website = <!-- {{URL|example.com}} -->
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
<syntaxhighlight lang="wikitext" style="overflow:auto; line-height:1.2em">
{{Infobox person
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_upright =
| landscape =
| alt =
| caption =
| native_name =
| native_name_lang =
| pronunciation =
| birth_name =
| birth_date =
| birth_place =
| baptised =
| disappeared_date =
| disappeared_place =
| disappeared_status =
| death_date =
| death_place =
| death_cause =
| body_discovered =
| resting_place =
| resting_place_coordinates =
| burial_place =
| burial_coordinates =
| monuments =
| nationality =
| other_names =
| siglum =
| citizenship =
| education =
| alma_mater =
| occupation =
| years_active =
| era =
| employer =
| organization =
| agent =
| known_for =
| notable_works =
| style =
| height =
| television =
| title =
| term =
| predecessor =
| successor =
| party =
| otherparty =
| movement =
| opponents =
| boards =
| criminal_charges =
| criminal_penalty =
| criminal_status =
| spouse =
| partner =
| children =
| parents =
| mother =
| father =
| relatives =
| family =
| callsign =
| awards =
| website =
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| module6 =
| signature =
| signature_type =
| signature_size =
| signature_alt =
| footnotes =
}}
</syntaxhighlight>
{{clear}}
== Parameters ==
{{large|Do not use all these parameters for any one person. The list is long to cover a wide range of people. Only use those parameters that convey essential or notable information about the subject, and ensure that this information is sourced in the article or (if present only in the infobox) in the infobox itself}}
Any parameters left blank or omitted will not be displayed. Many parameters have alternative names, implemented for compatibility with other templates (especially to aid merging). The preferred names are shown in the table below.
{| class="wikitable"
! Parameter
! Explanation
|-
| {{mono|honorific_prefix}}
| To appear on the line above the person's name. This is for things like {{para|honorific_prefix|Sir}} – honorifics of serious significance that are attached to the name in formal address, such as knighthoods and formal titles used by people with official governmental or diplomatic positions; do not use it for routine things like "{{!mxt|[[Dr.]]}}" or "{{!mxt|[[Ms.]]}}"
|-
| {{mono|name}}
| Common name of person (defaults to article name if left blank; provide {{para|birth_name}} (below) if different from {{para|name}}). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the {{para|birth_name}} parameter, include them here. ''Do not put honorifics or alternative names in this parameter.'' There are separate parameters for these things, covered below.
|-
| {{mono|honorific_suffix}}
| To appear on the line below the person's name. This is for things like {{para|honorific_suffix|[[Officer of the Order of the British Empire|OBE]]}} – honorifics of serious significance that are attached to the name in formal address, such as national orders and non-honorary doctorates; do not use it for routine things like "{{!mxt|[[Bachelor of Arts|BA]]}}". It is permissible but not required to use the {{tlx|post-nominals}} template inside this parameter; doing so requires {{tlx|post-nominals|size{{=}}100%|...}}.
|-
| {{mono|image}}
| Image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{code|File:}} or {{code|Image:}} prefix. If an image is desired but not available, one may add {{pval|yes}} to the {{para|needs-photo}} parameter of the {{tlx|WikiProject Biography}} template on the talk page. If no image is available yet, [[Wikipedia:Centralized discussion/Image placeholders|do not use an image placeholder]]. See [[#Image]] for further guidelines.
|-
| {{mono|image_upright}}
| Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).
|-
| {{mono|landscape}}
| Set to <code>yes</code> when using wide, short images. The image height (rather than width) will be limited to 200 pixels.
|-
| {{mono|alt}}
| Descriptive [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|{{code|alt}} text for the image]], for visually impaired readers. One word (such as {{pval|photograph}}) is rarely sufficient. Do not copy-paste the value of {{para|caption}} (below) into this parameter. Example of the difference: "Willie Nelson at a concert in Dallas, 1989" is good as {{para|caption}} value; "Nelson in western-wear with an acoustic guitar, on stage in a daytime show with band in background" is an {{para|alt}} description. If nothing meaningful can be said that isn't already in the caption, use the [[Wikipedia:Manual of Style/Accessibility/Alternative text for images#Captions and nearby text|stock text]] {{para|alt|refer to caption}}.
|-
| {{mono|caption}}
| Caption for image, if needed. Try to include the date of photo, some context (check the <code>File:</code> or [[Wikimedia Commons|Commons]] page for the image). Image credit should generally not be included per [[MOS:CREDITS]].
|-
| {{mono|native_name}}
| The person's name in their own language, if different.
|-
| {{mono|native_name_lang}}
| [[ISO 639-1]] code, e.g., "{{pval|fr}}" for French. If more than one, use {{tlx|lang}} around each name in {{para|native_name}} instead.
|-
| {{mono|pronunciation}}
| Details of how to pronounce the individual's native name. <!--copied from TemplateData description, if changed please update there also-->
|-
| {{mono|birth_name}}
| Name at birth; only use if different from {{para|name}}.
|-
| {{mono|birth_date}}
| Date of birth: Use {{tlx|birth date and age}} (if living) or {{tlx|birth date}} (if dead). {{crossref|See template's page for details on usage.}} If only a year of birth is known, or age as of a certain date, consider using {{tlx|birth year and age}} or {{tlx|birth based on age as of date}}. For living people [[Wikipedia:Biographies of living persons#Privacy of personal information and using primary sources|supply only the year unless the exact date is already widely published]]. Treat such cases as if only the year is known, so use {{tlx|birth year and age}} or a similar option. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|-
| {{mono|{{vanchor|birth_place}}}}
| Place of birth: {{var|city}}, {{var|administrative region}}, {{var|country}}.
* Use the name of the birthplace at the time of birth, e.g.: {{pval|Saigon}} (prior to 1976) or {{pval|Ho Chi Minh City}} (post-1976).
* [[Wikipedia:Manual of Style/Icons#Do not use flags to indicate locations of birth, residence, or death|Do not use a flag template]], coat of arms, or other icon.
* [[Wikipedia:Manual of Style/Infoboxes#Purpose|Omit unnecessary or redundant details]]. For example, it is not necessary to state: {{!xt|{{pval|New York City, [[New York (state)|New York]], United States}}}} when {{xt|{{pval|New York City, U.S.}}}} conveys essentially the same information more concisely.
* Countries should [[Wikipedia:Manual of Style/Linking#What generally should not be linked|generally not be linked]].
* For modern subjects, the country should generally be a sovereign state; for United Kingdom locations, the constituent [[Countries of the United Kingdom|countries of the UK]] are sometimes used instead, when more appropriate in the context.
* For historical subjects, use the place name most appropriate for the context and our readership. What the place may correspond to on a modern map is a matter for an article's main text.
* For union republics, subordinate country can be shown: {{!xt|{{pval|Moscow, [[Russian SFSR]], Soviet Union}}}}.
* For subsequent places (of death, etc.) it is not necessary to repeat jurisdictional details or links for the same place name.
|-
| {{mono|baptised}}
| Date of baptism: {{em|Only}} for use when birth date is not known (e.g., for [[Ludwig van Beethoven]]). Will not display if a birth date is entered. Do not use subtemplates. Parameter <code>baptized</code> can be used for articles that use American English spelling.
|-
| {{mono|disappeared_date}}
| (For missing people) Date of disappearance: Use {{tlx|disappeared date and age}} (if birth date is known) or {{tlx|disappeared date}} (if birth date unknown).
|-
| {{mono|disappeared_place}}
| (For missing people) Place of disappearance: {{var|city}}, {{var|administrative region}}, {{var|country}}. <!--This space is needed for readability, due to quirk of these templated elements being in proximity.--> ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{mono|disappeared_status}}
| (For missing people) Current status for the person, e.g., if the person is still regarded as missing (using {{tlx|missing for}} to calculate the time since disappearance), or if the person has been [[Declared death in absentia|declared dead ''{{lang|la|in absentia}}'']], with a date for such a ruling.
|-
| {{mono|death_date}}
| Date of death: Use {{tlx|death date and age}} (if birth date is known) or {{tlx|death date}} (if birth date unknown). {{crossref|See template's page for details on usage.}} If exact dates are unknown, consider using {{tlx|death year and age}}. The templates mentioned in this paragraph emit metadata indicating the date is in the Gregorian calendar; if the date is in the Julian calendar, do not use these templates, just write the date.
|-
| {{mono|death_place}}
| Place of death: {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{mono|death_cause}}
| Cause of death. Should be clearly defined and sourced, and should only be included when the cause of death has significance for the subject's notability, e.g. [[James Dean]], [[John Lennon]]. It should not be filled in for unremarkable deaths such as those from old age or routine illness, e.g. [[Bruce Forsyth]], [[Eduard Khil]].
|-
| {{mono|body_discovered}}
| Place where the body was discovered (if different from place of death). {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{mono|burial_place}}
| Place of burial {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc. {{crossref|See {{para|resting_place}} for non-burials}}.)
|-
| {{mono|burial_coordinates}}
| Coordinates for place of burial, to accompany {{para|burial_place}}. Use {{tlx|coord}} template.
|-
| {{mono|resting_place}}
| Location of columbarium, ash-scattering, etc. If no location, leave blank. {{var|city}}, {{var|administrative region}}, {{var|country}}. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, redundancy, anachronisms, "country" definitions, etc.)
|-
| {{mono|resting_place_coordinates}}
| Coordinates for location of columbarium, ash-scattering etc. Use {{tlx|coord}} template.
|-
| {{mono|monuments}}
| Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.
|-
| {{mono|nationality}}
| {{anchor|nationality}}May be used instead of {{para|citizenship}} (below) or vice versa in cases where any confusion could result. Should only be used {{em|with}} {{para|citizenship}} when they differ per [[WP:INFONAT]]. Do not put religion or ethnicity in this field. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.)
|-
| {{mono|other_names}}
| Other notable names for the person, if different from {{para|name}} and {{para|birth_name}}. [[Wikipedia:Manual of Style/Biographies#Pseudonyms|This can include]] stage names, maiden/married names, nicknames, criminal aliases, etc.
|-
| {{mono|siglum}}
| [[Siglum]] or monogram, a text shortcut (often formed from the initials of the name, with variations) used to sign work, if relevant.
|-
| {{mono|citizenship}}
| Country of legal citizenship, if different from nationality. Rarely needed. See usage notes for {{para|nationality}}, above. Should only be used if citizenship differs from the value in {{para|nationality}} and cannot be inferred from the birthplace. Note that many countries do not automatically grant citizenship to people born within their borders. Do not put religion or ethnicity in this field. ({{crossref|See {{para|birth_place}}, [[#birth place|above]], for instructions on how to use this parameter}}, including: no flag templates, inappropriate linking, anachronisms, "country" definitions, etc.)
|-
| {{mono|education}}
| Education, e.g., degree, institution and graduation year, if relevant. If very little information is available or relevant, the {{para|alma_mater}} parameter may be more appropriate.
|-
| {{mono|alma_mater}}
| ''[[Alma mater]]''. This parameter is a more concise alternative to (not addition to) {{para|education}}, and will often consist of the linked name of the last-attended institution of higher education (not secondary schools). It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as perhaps at [[Bill Gates]].
|-
| {{mono|occupation}}
| Occupation(s) as given in the lead. Use list markup for three or more entries, e.g. with {{tlx|flatlist}}. Please observe [[sentence case]] and capitalise only the first letter of the first item; e.g.:
{{block indent|1={{Flatlist|
* Musician
* singer-songwriter
* actor
}}}}
|-
| {{mono|years_active}}
| Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format {{code|1950–2000}}, or {{code|1970–present}} if still active. [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Date ranges]] always use an [[Wikipedia:Manual of Style#En dashes|en dash]], not hyphen. If no dates of birth and/or death are known for the subject, only a ''[[floruit]]'' date range, as is common with ancient subjects, this parameter can be used for it. If approximate (''[[wikt:circa#English|circa]]'') dates are known for either or both, put them in the {{para|birth_date}} and {{para|death_date}} parameters. Helpful templates: {{tlx|floruit}}, {{tlx|circa}}.
|-
| {{mono|era}}
| Era (e.g., {{pval|Medieval}}) in which the person lived; less specific than {{para|years_active}}. Should not be used if dates are available.
|-
| {{mono|employer}}
| Employer(s), if relevant.
|-
| {{mono|organization}} or {{mono|organisation}}
| Non-employing organization(s), if relevant.
|-
| {{mono|agent}}
| The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a [[Wikipedia:Identifying reliable sources|reliable source]].
|-
| {{mono|known_for}}
| A brief description of why the person is notable.
|-
| {{ubl|{{mono|notable_works}};<br/> {{small|alternatives:}}
|{{mono|credits}}
|{{mono|label_name}}
|{{mono|works}}
}}
| Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any. Produces the label '''Notable work'''. May be overridden by {{para|credits}}, which produces '''Notable credit(s)'''; or by {{para|works}}, which produces '''Works'''; or by {{para|label_name}}, which produces '''Label(s)'''.
* The {{para|notable_works}}, {{para|credits}}, and {{para|label_name}} parameters are intended to be (at most) short [[#Inline lists|inline lists]].
* The {{para|label_name}} variant is used for one or more record labels with which a performer is associated, or a fashion label in which a designer has been heavily involved or for which they are well known. Remember that this parameter is an alternative to the others mentioned here and is not used along with them.
* The {{para|works}} variant is intended to link to {{em|a specific list article}} for a larger body of work (not all of which may be individually notable).
|-
| {{mono|style}}
| The style of the subject's works, if applicable. {{crossref|This parameter is not for [[Style (manner of address)|styles of address or office]]; see {{para|honorific_prefix}}.}}
|-
| {{mono|height}}
| If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. {{crossref|See documentation of this parameter at [[Template:Infobox sportsperson#height|Template:Infobox sportsperson]] for more information.}}
|-
| {{mono|television}}
| Television programmes presented by or {{em|closely}} associated with the subject. For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{mono|title}}
| Multiple uses:
* Formal title, such as {{pval|First Lady of Japan}} for [[Akie Abe]].
* Awarded title, such as {{pval|Mr. Olympia}} for [[Arnold Schwarzenegger]].
* Job title, such as {{pval|President of Calvin College}} for [[Anthony Diekema]].
* A combination of the above, such as {{pval|Professor of Mathematics}} and {{pval|[[Fellow of the Royal Society]]}} for [[Bill Parry (mathematician)|Bill Parry]]
For multiple entries, use an [[#Inline lists|inline list]].
Use the {{para|awards}} parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.
|-
| {{mono|office}}
| May be used as an alternative to {{para|title}} when the label is better displayed as '''Office''' (e.g. public office or appointments). Using this parameter will override {{para|title}}.
|-
| {{mono|term}}
| Years the person held the {{para|title}} or {{para|office}} listed above. Helpful template: {{tlx|reign}} (also used for civil offices).
|-
| {{mono|predecessor}}
| Person who previously held the {{para|title}} or {{para|office}} listed above.
|-
| {{mono|successor}}
| Person who subsequently held the {{para|title}} or {{para|office}} listed above.
|-
| {{mono|party}}
| If relevant. Field labelled '''Political party'''.
|-
| {{mono|otherparty}}
| If relevant. Field labelled '''Other political affiliations'''.
|-
| {{mono|movement}}
| If relevant. Can be [[Social movement|social]], [[Political movement|political]] (non-party), [[Art movement|artistic]], [[Philosophical movement|philosophical]], [[List of literary movements|literary]], [[Cultural movement|cultural]], etc.
|-
| {{mono|opponents}}
| Notable relevant opponents (e.g., for major political office).
|-
| {{mono|boards}}
| For [[board of directors]] membership(s), if relevant. Field labeled '''Board member of'''.
|-
| {{ubl|{{mono|criminal_charges}}|{{mono|criminal_penalty}}|{{mono|criminal_status}}}}
| For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.
|-
| {{mono|spouse}}
| Name of spouse(s), followed by years of marriage. Use the format ''Name (married 1950–present)'' for a current spouse, and ''Name (married 1970–99)'' for former spouse(s). Use article title (if linking) or [[Wikipedia:Article titles#Use commonly recognizable names|common name]]. For multiple entries, use an [[#Inline lists|inline list]]. For deceased persons still married at time of death, do not include the end year.
|-
| {{mono|partner}}
| If particularly relevant, or if the partner is notable; "partner" here means unmarried life partners in a [[domestic partnership]] (of any gender or sexual orientation), not business partner. Use the format ''Name (1950–present)'' for current partner and ''Name (1970–1999)'' for former partner(s).
|-
| {{mono|children}}
| Typically the number of children (e.g., {{pval|3}}); only list names of independently notable or particularly relevant children. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For multiple entries, use an [[#Inline lists|inline list]]. {{em|For [[Wikipedia:Biographies of living persons#Privacy of names|privacy reasons]], consider omitting the names of living children, unless notable.}}
|-
| {{mono|parents}}
| Names of parents; include only if they are independently notable or particularly relevant. For multiple entries, use an [[#Inline lists|inline list]]. If subject has only one notable mother and/or only one notable father, {{para|mother}} and {{para|father}} parameters may be used instead. These parameters may be used for biological, adoptive, foster, or step-parents.
|-
| {{mono|mother}}
| Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{mono|father}}
| Name of father; include only if subject has one father who is independently notable or particularly relevant. Displays '''Parent(s)''' as label, and is overridden by the {{para|parents}} parameter.
|-
| {{mono|relatives}}
| Names of siblings or other relatives; include only if independently notable and particularly relevant. Include the relationship in parentheses after the name (sister, uncle, etc.). For multiple entries, use an [[#Inline lists|inline list]].
|-
| {{mono|callsign}}
| Amateur radio [[call sign]], if relevant.
|-
| {{mono|awards}}
| Notable awards. If many, link to an appropriate section of the article instead. Use {{para|title}} parameter, above, for awarded titles; A single award should not use both parameters.
|-
| {{mono|website}}
| Official website only. Unofficial websites should be placed under <code><nowiki>==External links==</nowiki></code> in the body of the article. Use {{tlx|URL}} as in {{tnull|URL|Example.com}}. Do not display the {{samp|www.}} part unless the site requires it.
|-
| {{mono|template_name}}
| Used when {{tl|Infobox person}} is wrapped by another template. This would be the (lower-case) name of the wrapping template, without the "Template:" prefix.
|-
| {{ubl | {{mono|module}} | {{mono|module2}} | {{mono|module3}} | {{mono|module4}} | {{mono|module5}} | {{mono|module6}} }}
| Used for embedding other infoboxes into this one. Example:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name = Paul McCartney
...
| module =
{{Infobox musical artist
| embed = yes
| instrument = piano
...
}} <!-- end of Infobox musical artist -->
...
}} <!-- end of Infobox person -->
</syntaxhighlight>
{{crossref|For more detailed information, see [[Wikipedia:WikiProject Infoboxes/embed]].}}
|-
| {{mono|signature}}
| An image of the person's signature. Please use image name: {{pval|abc.jpg}}, {{pval|xpz.png}}, {{pval|123.gif}}, etc., without the {{samp|File:}} or {{samp|Image:}} prefix
|-
| {{mono|signature_type}}
| Changes the '''Signature''' label to the preferred argument, such as '''Seal'''
|-
| {{mono|signature_size}}
| Default is {{samp|150px}}. If necessary, a signature can be resized manually as per the {{para|image_size}} parameter.
|-
| {{mono|signature_alt}}
| Alt text for the signature image. For example, for {{samp|[[:File:Thomas Jefferson Signature.svg]]}}, the alt text might be {{para|signature_alt| Th: Jefferson}}, spelling out the signature exactly as it appears in the image.
|-
| {{mono|footnotes}}
| Textual notes about any of the infobox data. This is not for reference citations. If an infobox parameter's value needs a citation, [[Wikipedia:Citing sources|cite inline]] at the end of the value. Citations will appear in the article's references section along with the other citations in the article.
|-
| {{mono|image_size}}
| {{strongbad|Deprecated}}. Size to display image: {{pval|200px}} (set width), {{pval|x300px}} (set height), or {{pval|200x300px}} (max width & max height). If empty or omitted, this defaults to {{samp|frameless}} (default is {{samp|220px}}, but logged-in users can change this by clicking on "my preferences" and adjusting thumbnail size). [[Wikipedia:Image use policy#Displayed image size|Use of this parameter is discouraged]]. Use image_upright instead. Do not use "{{!mxt|×}}" or capital "{{!mxt|X}}"
|}
=== Additional parameter usage explanation ===
==== Image ====
The image in the infobox should be representative of the person who is the subject of the article. For some historical figures, particularly those born in the 18th century or before, this image is often a painting or other artistic depiction of the individual (see [[George Washington]]). Persons born in the 20th century onward, such as [[Barack Obama]], are most often represented by a photograph of the individual.
When the subject of a biographical article has recently died, particularly those who have been publicly known for decades, editors may come to a consensus on the article's talk page regarding what image would best be suited for the infobox. An example of such a discussion can be found in the talk page archives for [[Elizabeth II]] (section [[Talk:Elizabeth II/Archive 45#Infobox photograph for after her death|Infobox photograph for after her death]]); in this instance, the 2015 photograph of Elizabeth II that was present in the article's infobox when discussions began was eventually replaced with a photograph of her taken in 1958.
=== Inline lists ===
{{Main|WP:Manual of Style/Lists#Horizontal lists|WP:Manual of Style/Lists#Unbulleted lists}}
Parameters with multiple values should be formatted with inline-list templates.
'''Horizontal''' ones include {{tlx|hlist}} or {{tlx|flatlist}}. In [[Wikipedia:Manual of Style/Lists#Horizontal lists|horizontal style]], only the first item is capitalized (aside from [[Wikipedia:Manual of Style/Capital letters#Proper names|proper names]]).
This style is best for short items, and few of them. Mid-dots, commas or semicolons are available as separators (use semicolons or mid-dots if any items contain their own commas). For example:
* {{para|parameter_name|{{tlp|hlist |Foo |bar |baz}}}} → {{hlist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo |bar |baz}}}} → {{cslist |Foo |bar |baz}}
* {{para|parameter_name|{{tlp|cslist |Foo, fee |bar, bor |baz, biz |semi=true}}}} → {{cslist |Foo, fee |bar, bor |baz, biz |semi=true}}
Horizontal list example with {{tlx|hlist|Item one|item two|item three}}: {{hlist|Item one|item two|item three}}
'''Vertical''' templates are {{tlx|plainlist}} and {{tlx|unbulleted list}} (vertical), use [[Wikipedia:Manual of Style/Lists#Unbulleted lists|unbulleted, non-indented lists]] for clean display in infoboxes. Entries may be all [[sentence case]], or all lowercase (aside from proper names) after the first.
This style is best for long items, and longer lists. For long lists of information that may not be of immediate interest but retained for reference, the {{tlx|collapsible list}} template can be used; this is not a universally accessible option, so should not be used for key information.
''[[Wikipedia:Manual of Style/Lists#Line breaks|Do not use {{tag|br|s}} markup]]'' to create fake lists, as in: {{!mxt|<nowiki>Item one<br />item two<br />item three</nowiki>}}.
Vertical list example:, using {{tlx|unbulleted list|Item one|item two|item three}}:
{{unbulleted list|Item one|item two|item three}}
== Example ==
{{Infobox person{{#ifeq:{{SUBPAGENAME}}|sandbox |/sandbox}}
| name = Bill Gates
| post-nominals =
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
*[[Berkshire Hathaway]]
*Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
<syntaxhighlight lang="wikitext" style="overflow: auto">
{{Infobox person
| name = Bill Gates
| post-nominals =
| image = Bill Gates 2017 (cropped).jpg
| alt = Head and shoulders photo of Bill Gates
| caption = Gates in 2017
| birth_name = William Henry Gates III
| birth_date = {{birth date and age|1955|10|28}}
| birth_place = [[Seattle, Washington]], U.S.
| known_for = Co-founder of [[Microsoft]] and [[Bill & Melinda Gates Foundation]]
| education = [[Harvard University]] (dropped out)
| occupation = {{hlist|Software developer|investor|entrepreneur}}
| years_active = 1972–present
| title = {{indented plainlist|
* Co-[[chairperson]] of the Bill & Melinda Gates Foundation
* Chairman and founder of [[Branded Entertainment Network]]
* Chairman and founder of [[Cascade Investment]]
* Chairman and co-founder of [[TerraPower]]
* Founder of [[Breakthrough Energy]]
* Technology advisor of Microsoft}}
| boards = {{plainlist|
*[[Berkshire Hathaway]]
*Microsoft (former, both)}}
| spouse = {{marriage|[[Melinda French]]|January 1, 1994|August 2, 2021|reason=divorce}}
| children = 3
| father = [[Bill Gates Sr.]]
| mother = [[Mary Maxwell Gates|Mary Maxwell]]
| website = {{URL|https://www.gatesnotes.com}}
| awards = {{ubl|[[Presidential Medal of Freedom]] (2016)|[[Hilal-e-Pakistan]] (2022)}}
| signature = Bill Gates signature.svg
| signature_alt = William H. Gates III
}}
</syntaxhighlight>
== Microformat ==
{{UF-hcard-person}}
{{clear}}
== TemplateData ==
{{TemplateData header}}
<div style="width:auto; overflow:scroll">
<templatedata>
{
"description": "An infobox for articles about people",
"format": "{{_\n| __________________ = _\n}}\n",
"params": {
"honorific_prefix": {
"description": "Honorific prefix(es), to appear on the line above the person's name",
"label": "Honorific prefix",
"aliases": [
"honorific-prefix",
"honorific prefix",
"pre-nominals"
]
},
"name": {
"description": "Common name of person (defaults to article name if left blank; provide birth_name (below) if different from name). If middle initials are specified (or implied) by the lead of the article, and are not specified separately in the birth_name field, include them here.",
"label": "Name",
"type": "string",
"suggested": true
},
"honorific_suffix": {
"description": "Honorific suffix(es), to appear on the line below the person's name",
"label": "Post-nominals",
"aliases": [
"honorific-suffix",
"honorific suffix",
"post-nominals"
]
},
"image": {
"description": "Image name: abc.jpg, xpz.png, 123.gif, etc. If an image is desired but not available, one may add \"yes\" to the \"needs-photo\" section of the :Template:WPBiography on the talkpage. If no image is available yet, do not use an image placeholder.",
"label": "Image",
"example": "abc.jpg, xpz.png, 123.gif",
"type": "wiki-file-name",
"suggested": true
},
"image_size": {
"description": "DEPRECATED/DISCOURAGED. Size to display image: 200px (set width), x300px (set height), or 200x300px (max width & max height). This defaults to frameless (default is 220px, but logged in users can change this by clicking on \"my preferences\" and adjusting thumbnail size) if empty or omitted. Use of this parameter is discouraged as per WP:IMGSIZE. Use image_upright instead.",
"label": "DEPRECATED: Image size",
"aliases": [
"image size",
"imagesize"
],
"example": "200px",
"default": "220px",
"deprecated": "DEPRECATED: Use of this parameter is discouraged as per WP:IMGSIZE. Delete it when encountered and use image_upright instead."
},
"alt": {
"description": "Alt text for image, for visually impaired readers. One word (such as \"photograph\") is rarely sufficient. See WP:ALT.",
"label": "Alt",
"type": "string"
},
"caption": {
"description": "Caption for image, if needed. Try to include date of photo and the photographer.",
"label": "Caption",
"aliases": [
"image caption",
"image_caption"
],
"type": "string"
},
"native_name": {
"description": "The person's name in their own language, if different.",
"label": "Native name",
"type": "string"
},
"native_name_lang": {
"description": "ISO 639-1 code, e.g., \"fr\" for French. If more than one, use Template:lang in `native_name` instead.",
"label": "Native name language"
},
"pronunciation": {
"description": "Details of how to pronounce the individual's native name.",
"label": "Native name pronunciation"
},
"birth_name": {
"description": "Name at birth; only use if different from name.",
"label": "Birth name",
"aliases": [
"birthname"
],
"type": "string"
},
"birth_date": {
"description": "Date of birth: {{Birth date and age|YYYY|MM|DD}} for living people. For people who have died, use {{Birth date|YYYY|MM|DD}}. If only a year of birth is known, or age as of a certain date, consider using Template:birth year and age or Template:birth based on age as of date.",
"label": "Birth date",
"type": "content"
},
"birth_place": {
"description": "Place of birth: city, administrative region, sovereign state. Use the name of the birthplace at the time of birth, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976). Do not use a flag template.",
"label": "Birth place",
"type": "string"
},
"baptised": {
"description": "Date of baptism: ONLY for use when birth date is not known (e.g., Beethoven). Will not display if a birth date is entered. Do not use subtemplates. Parameter 'baptized' can be used for articles that use American english spelling.",
"label": "Baptised",
"aliases": [
"baptized"
],
"type": "date"
},
"disappeared_date": {
"description": "(For missing people) Date of disappearance: Template:disappeared date and age (if birth date is known) or Template:disappeared date (if birth date unknown).",
"label": "Disappeared date"
},
"disappeared_place": {
"description": "(For missing people) Place of disappearance: city, administrative region, sovereign state. Do not use a flag template.",
"label": "Disappeared place"
},
"disappeared_status": {
"description": "(For missing people) Current status for the person, e.g., if the person is still regarded as missing (using Template:missing for to calculate the time since disappearance), or if the person has been declared dead in absentia, with a date for such a ruling.",
"label": "Disappeared status",
"aliases": [
"status"
]
},
"death_date": {
"description": "Date of death: {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} (if birth date is known) or Template:death date (if birth date unknown). See Template:Death date/doc for details on usage. If exact dates are unknown, consider using Template:death year and age.",
"label": "Death date"
},
"death_place": {
"description": "Place of death: city, administrative region, sovereign state. Note: Do not use a flag template. Use the name of the deathplace at the time of death, e.g.: Saigon (prior to 1976), Ho Chi Minh City (post 1976)",
"label": "Death place",
"type": "string"
},
"death_cause": {
"description": "Cause of death. This should only be included when the cause of death has significance for the subject's notability.",
"label": "Death cause",
"aliases": [
"death cause"
]
},
"body_discovered": {
"description": "Place where the body was discovered (if different from place of death). Do not use a flag template.",
"label": "Body discovered",
"aliases": [
"body discovered"
]
},
"resting_place": {
"description": "Place of burial, ash-scattering, etc. Do not use a flag template.",
"label": "Resting place",
"aliases": [
"resting place",
"restingplace"
]
},
"resting_place_coordinates": {
"description": "Coordinates for place of burial, ash-scattering etc. Use Template:coord template.",
"label": "Resting place coordinates",
"aliases": [
"resting place coordinates",
"restingplacecoordinates"
]
},
"monuments": {
"description": "Significant monuments erected, buildings named, etc., in honour of the subject. If many, link to an appropriate section of the article instead.",
"label": "Monuments"
},
"nationality": {
"description": "Nationality. May be used instead of citizenship (below) or vice versa in cases where any confusion could result. Should only be used 'with' citizenship when they somehow differ. Should only be used if nationality cannot be inferred from the birthplace per [[WP:INFONAT]]. Do not use a flag template.",
"label": "Nationality",
"type": "string"
},
"other_names": {
"description": "Other notable names for the person, if different from name and birth_name.",
"label": "Other names",
"aliases": [
"other names",
"othername",
"nickname",
"alias"
]
},
"siglum": {
"description": "Siglum, monogram, shortcut, if relevant.",
"label": "Siglum"
},
"citizenship": {
"description": "Country of legal citizenship, if different from nationality. Rarely needed. See usage notes for nationality above. Should only be used if citizenship cannot be inferred from the birthplace. Do not use a flag template.",
"label": "Citizenship",
"type": "string"
},
"education": {
"description": "Education, e.g., degree, institution and graduation year, if relevant. If very little information is available or relevant, the `alma_mater` parameter may be more appropriate.",
"label": "Education"
},
"alma_mater": {
"description": "Alma mater. This parameter is a more concise alternative to `education`, and will most often simply consist of the linked name of the last-attended higher education institution. It is usually not relevant to include either parameter for non-graduates, but article talk page consensus may conclude otherwise, as at Bill Gates.",
"label": "Alma mater",
"aliases": [
"alma mater"
]
},
"occupation": {
"description": "Occupation(s) as given in the lead.",
"label": "Occupation"
},
"years_active": {
"description": "Date range in years during which the subject was active in their principal occupation(s) and/or other activity for which they are notable. Use the format 1950–2000, or 1970–present if still active (note the use of an en dash, not hyphen). If no dates of birth and/or death are known for the subject, only a floruit date range, as is common with ancient subjects, this parameter can be used for it. If approximate (circa) dates are known for either or both, put them in the birth_date and death_date parameters.",
"label": "Years active",
"aliases": [
"years active",
"yearsactive"
]
},
"era": {
"description": "Era during which the subject lived or was active. Less specific than 'years active'.",
"label": "Era"
},
"employer": {
"description": "Employer(s), if relevant.",
"label": "Employer"
},
"organization": {
"description": "Non-employing organization(s), if relevant.",
"label": "Organization",
"aliases": [
"organizations",
"organisation",
"organisations"
]
},
"agent": {
"description": "The subject's agent (individual and/or agency), discouraged in most cases, specifically when promotional, and requiring a reliable source.",
"label": "Agent"
},
"known_for": {
"description": "A brief description of what the person is notable for.",
"label": "Known For",
"aliases": [
"known for",
"known"
],
"example": "Environmental activism"
},
"notable_works": {
"description": "Title(s) of notable work(s) (publications, compositions, sculptures, films, etc.) by the subject, if any.",
"label": "Notable works",
"aliases": [
"works",
"credits",
"notable works",
"label_name"
]
},
"style": {
"description": "The style in which the subject works, if applicable.",
"label": "Style"
},
"net_worth": {
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.",
"description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.",
"label": "DEPRECATED: Net worth",
"aliases": [
"net worth",
"networth"
]
},
"height": {
"description": "If person was notable for their height, or if height is relevant. If used, this should also include the year of the measurement if the person had not reached full adulthood when this stat was published. See documentation of this parameter at Template:Infobox sportsperson for more information.",
"label": "Height"
},
"height_m": {
"description": "If person was notable for their height, or if height is relevant, their height in metres (it will be automatically converted to Imperial).",
"label": "Height in metres",
"type": "number"
},
"height_cm": {
"description": "If person was notable for their height, or if height is relevant, their height in centimetres (it will be automatically converted to Imperial).",
"label": "Height in centimetres",
"type": "number"
},
"height_ft": {
"description": "If person was notable for their height, or if height is relevant, their height in whole feet (it will be automatically converted to SI). Use with height_in.",
"label": "Height in feet",
"type": "number"
},
"height_in": {
"description": "If person was notable for their height, or if height is relevant, their height in remaining inches (it will be automatically converted to SI). Use with height_ft.",
"label": "Remaining height in inches",
"type": "number"
},
"weight": {
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.",
"label": "DEPRECATED: Weight"
},
"weight_kg": {
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.",
"description": "If person was notable for their weight, or if weight is relevant, their weight in kilogrammes (it will be automatically converted to Imperial).",
"label": "DEPRECATED: Weight in kilogrammes"
},
"weight_lb": {
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.",
"description": "If person was notable for their weight, or if weight is relevant, their weight in pounds, or their weight in remaining pounds if weight in whole stones is specified (it will be automatically converted to SI).",
"label": "DEPRECATED: Weight in pounds"
},
"weight_st": {
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered.",
"description": "If person was notable for their weight, or if weight is relevant, their weight in whole stones (it will be automatically converted to SI).",
"label": "DEPRECATED: Weight in stones"
},
"television": {
"description": "Television programmes presented by or closely associated with the subject.",
"label": "Television"
},
"title": {
"description": "Multiple uses: Formal title, such as First Lady of Japan for Akie Abe.; Awarded title, such as Mr. Olympia for Arnold Schwarzenegger.; Job title, such as President of Calvin College for Anthony Diekema.; A combination of the above, such as Professor of Mathematics and Fellow of the Royal Society for Bill Parry See also \"awards\" parameter, below, for awarded honors that are not really titles. A single award should not use both parameters.",
"label": "Title",
"aliases": [
"office"
]
},
"term": {
"description": "Years the person held the title listed above.",
"label": "Term"
},
"predecessor": {
"description": "Person who previously held the title listed above.",
"label": "Predecessor"
},
"successor": {
"description": "Person who subsequently held the title listed above.",
"label": "Successor"
},
"party": {
"description": "If relevant. Field labelled Political party.",
"label": "Party"
},
"otherparty": {
"description": "If relevant. Field labelled Other political affiliations.",
"label": "Other party"
},
"movement": {
"description": "If relevant. '''Movement''' can be social, political (non-party), artistic, philosophical, literary, cultural, etc.",
"label": "Movement"
},
"opponents": {
"description": "Notable relevant opponents (e.g., for major political office).",
"label": "Opponents"
},
"boards": {
"description": "For board of directors membership(s), if relevant. Field labeled Board member of.",
"label": "Boards"
},
"criminal_charges": {
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources in the article body.",
"label": "Criminal charge(s)",
"aliases": [
"criminal_charge",
"criminal charge"
]
},
"criminal_penalty": {
"label": "Criminal penalty",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.",
"aliases": [
"criminal penalty"
]
},
"criminal_status": {
"label": "Criminal status",
"description": "For convicted criminals only. Please be certain to support these parameters with citations from reliable sources, in the article body.",
"aliases": [
"judicial_status",
"judicial status",
"criminal status"
]
},
"spouse": {
"description": "Name of spouse(s), followed by years of marriage. Use the format Name (married 1950–present) for a current spouse, and Name (married 1970–99) for former spouse(s). Separate entries using Template:Plainlist or Template:Unbulleted list. For deceased persons still married at time of death, do not include an end year. {{Marriage}} may be used.",
"label": "Spouse(s)",
"aliases": [
"spouses",
"spouse(s)"
]
},
"partner": {
"description": "For unmarried life partners in a domestic partnership (of any gender or sexual orientation), not business partners. Use the format Name (1950–present) for current partner and Name (1970–99) for former partner(s).",
"label": "Partner(s)",
"aliases": [
"partners",
"partner(s)",
"domestic_partner",
"domesticpartner"
]
},
"children": {
"description": "Number of children (e.g., 3), or list of independently notable names, in which case, separate entries using Template:Plainlist or Template:Unbulleted list. Names may be preceded by a number to show total children and avoid implying that named children are the only offspring. For privacy reasons, consider omitting the names of children of living persons, unless notable.",
"label": "Children"
},
"parents": {
"description": "Names of parents. Separate entries using Template:Plainlist or Template:Unbulleted list. If subject has only one notable mother and/or father, 'mother' and 'father' parameters may be used instead",
"label": "Parent(s)"
},
"mother": {
"description": "Name of mother; include only if subject has one mother who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Mother",
"type": "string"
},
"father": {
"description": "Name of father; include only if subject has one father who is independently notable or particularly relevant. Overwritten by 'parents' parameter.",
"label": "Father",
"type": "string"
},
"relatives": {
"description": "Names of siblings or other relatives. Include the relationship in parentheses after the name (sister, uncle, etc). Separate entries using Template:Plainlist or Template:Unbulleted list.",
"label": "Relatives",
"aliases": [
"relations"
]
},
"family": {
"description": "Family or house of the individual, if notable.",
"label": "Family"
},
"callsign": {
"description": "Amateur radio call sign, if relevant.",
"label": "Callsign"
},
"awards": {
"description": "Notable awards. If many, link to an appropriate section of the article instead. See also \"title\" parameter, above, for awarded titles. A single award should not use both parameters.",
"label": "Awards"
},
"honours": {
"description": "Honours the individual has been awarded, if notable.",
"label": "Honours",
"aliases": [
"honors"
]
},
"website": {
"description": "Official website only. Unofficial websites should be placed under ==External links== in the body of the article. Use {{URL}}. Do not include the www. part unless the server requires it. Use camel case capitalization to make multiword domain names easier to read.",
"label": "Website",
"aliases": [
"homepage",
"URL",
"url"
],
"type": "content",
"example": "{{URL|example.com}}",
"suggested": true
},
"template_name": {
"description": "If Infobox person is wrapped by another template, set this to lowercase name of template (without the 'Template:').",
"label": "Template name",
"type": "string",
"example": "infobox academic",
"default": "infobox person"
},
"module": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module",
"aliases": [
"misc"
]
},
"module2": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module two",
"aliases": [
"misc2"
]
},
"module3": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module three",
"aliases": [
"misc3"
]
},
"module4": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module four",
"aliases": [
"misc4"
]
},
"module5": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module five",
"aliases": [
"misc5"
]
},
"module6": {
"description": "Used for embedding other infoboxes into this one.",
"label": "Module six",
"aliases": [
"misc6"
]
},
"child": {
"label": "DEPRECATED: Use as an embedded infobox",
"description": "DEPRECATED: Use this infobox within another one. For experts only.",
"example": "yes",
"deprecated": true,
"aliases": [
"embed"
]
},
"signature": {
"description": "An image of the person's signature. Please use image name: abc.jpg, xpz.png, 123.gif, etc.",
"label": "Signature",
"type": "wiki-file-name"
},
"signature_type": {
"description": "Alter from Signature to, for example, Seal",
"label": "Signature type",
"type": "string"
},
"signature_size": {
"description": "Default is 150px. If necessary, a signature can be resized manually as per the \"image_size\" parameter.",
"label": "Signature size"
},
"signature_alt": {
"description": "Alt text for the signature image. For example, for :File:Thomas Jefferson Signature.svg, the alt text might be |signature_alt= Th: Jefferson, spelling out the signature exactly as it appears in the image.",
"label": "Signature alt",
"aliases": [
"signature alt"
],
"type": "string"
},
"footnotes": {
"description": "Notes about any of the infobox data.",
"label": "Footnotes"
},
"abovestyle": {
"description": "DEPRECATED: A CSS style to use for the individual's name, over-riding the community norm. Only use in exception circumstances.",
"label": "DEPRECATED: Name CSS over-ride",
"deprecated": true
},
"image_upright": {
"label": "Image upright",
"description": "Scales the image thumbnail from its default size by the given factor. Values less than 1 scale the image down (0.9 = 90%) and values greater than 1 scale the image up (1.15 = 115%).",
"example": "1.15",
"default": "1",
"type": "number"
},
"landscape": {
"label": "Landscape",
"description": "Set to yes when using wide, short images. The image height (rather than width) will be limited to 200 pixels.",
"type": "boolean"
},
"burial_place": {
"label": "Burial place",
"description": "Place of burial, alternative to 'Resting place' Displays the label 'Burial place'.",
"type": "content"
},
"burial_coordinates": {
"label": "Burial place coordinates",
"description": "Coordinates for place of burial, to accompany 'Burial place'. Use {{coord}} template."
},
"influences": {
"label": "DEPRECATED: Influences",
"description": "DEPRECATED and unused in the infobox. Do not use.",
"deprecated": "Deprecated. Unused in the infobox. Do not use."
},
"influenced": {
"label": "DEPRECATED: Influenced",
"description": "DEPRECATED and unused in the infobox. Do not use.",
"deprecated": "Deprecated. Unused in the infobox. Do not use."
},
"home_town": {
"aliases": [
"home town"
],
"label": "DEPRECATED: home_town",
"description": "The place where the person was raised and matured, if different from birth place.",
"deprecated": "DEPRECATED and now unused in the infobox. Do not use."
},
"nocat_wdimage": {
"label": "nocat_wdimage",
"description": "Where an infobox has no image but Wikidata has an image name, add an image or |nocat_wdimage=yes to the infobox.",
"type": "string"
}
},
"paramOrder": [
"honorific_prefix",
"name",
"honorific_suffix",
"image",
"image_upright",
"landscape",
"image_size",
"alt",
"caption",
"native_name",
"native_name_lang",
"pronunciation",
"other_names",
"siglum",
"birth_name",
"birth_date",
"birth_place",
"baptised",
"disappeared_date",
"disappeared_place",
"disappeared_status",
"death_date",
"death_place",
"death_cause",
"body_discovered",
"resting_place",
"resting_place_coordinates",
"burial_place",
"burial_coordinates",
"monuments",
"nationality",
"citizenship",
"education",
"alma_mater",
"occupation",
"years_active",
"era",
"employer",
"organization",
"agent",
"known_for",
"notable_works",
"style",
"net_worth",
"height",
"height_m",
"height_cm",
"height_ft",
"height_in",
"weight",
"weight_kg",
"weight_lb",
"weight_st",
"television",
"title",
"term",
"predecessor",
"successor",
"party",
"otherparty",
"movement",
"opponents",
"boards",
"criminal_charges",
"criminal_penalty",
"criminal_status",
"spouse",
"partner",
"children",
"parents",
"mother",
"father",
"relatives",
"family",
"callsign",
"awards",
"honours",
"website",
"template_name",
"module",
"module2",
"module3",
"module4",
"module5",
"module6",
"signature",
"signature_type",
"signature_size",
"signature_alt",
"footnotes",
"nocat_wdimage",
"abovestyle",
"child",
"influences",
"influenced",
"home_town"
]
}
</templatedata>
</div>
== Tracking categories ==
* {{clc|Pages using infobox person with unknown parameters}}
* {{clc|Pages using infobox person with conflicting parameters}}
* {{clc|Pages using infobox person with multiple employers}}
* {{clc|Pages using infobox person with multiple organizations}}
* {{clc|Pages using infobox person with multiple agents}}
* {{clc|Pages using infobox person with multiple credits}}
* {{clc|Pages using infobox person with multiple labels}}
* {{clc|Pages using infobox person with multiple opponents}}
* {{clc|Pages using infobox person with multiple criminal charges}}
* {{clc|Pages using infobox person with multiple spouses}}
* {{clc|Pages using infobox person with multiple partners}}
* {{clc|Pages using infobox person with multiple parents}}
* {{clc|Biography template using pronunciation}}
* {{clc|Biography with signature}}
* {{clc|No local image but image on Wikidata}} – Used by [[Template:Wikidata image]] to track articles where an infobox has no image but [[Wikidata]] has an image name. To exclude articles from this category, add an image or {{para|nocat_wdimage|yes}} to the infobox.
== See also ==
Variations of this template which use [[Wikidata]]:
* {{tl|Infobox person/Wikidata}}
Alternative templates are listed at [[Wikipedia:WikiProject Biography/Infoboxes|WikiProject Biography/Infoboxes]] and within the [[:Category:People and person infobox templates|people and person infobox templates category]].
<div style="display: none">{{reflist}}</div>
{{Film- and television-related infobox templates}}
<includeonly>
{{Basepage subpage|
[[Category:People and person infobox templates| ]]
[[Category:Biographical templates usable as a module|Person]]
[[Category:Infobox templates with module parameter|Person]]
[[Category:Templates that add a tracking category]]
}}
</includeonly>
6c3ac5da41c8e9030ec5bd531450af67794f574d
Module:Disambiguation/templates
828
156
361
2023-09-22T01:35:40Z
Pppery
6
Changed protection settings for "[[Module:Disambiguation/templates]]": Up to full prot for consistency with the parent ([Edit=Require administrator access] (indefinite) [Move=Require administrator access] (indefinite))
Scribunto
text/plain
-- This page contains a table of all disambiguation templates and their
-- redirects. Templates names are capitalized, and the Template: prefix is
-- removed. Templates are grouped with the main template first, followed by
-- its redirects.
return {
['Disambiguation'] = true,
['Begriffsklärung'] = true,
['DAB'] = true,
['Dab'] = true,
['Dabpage'] = true,
['Dbig'] = true,
['Dis'] = true,
['Disam'] = true,
['Disamb'] = true,
['Disambig misspelling'] = true,
['Disambig'] = true,
['Disambig-plants'] = true,
['Disambiguation page'] = true,
['Meta disambig'] = true,
['Project disambiguation'] = true,
['Shortcut disambig'] = true,
['WP disambig'] = true,
['WP-disambig'] = true,
['Wikipedia disambiguation'] = true,
['Airport disambiguation'] = true,
['Airport disambig'] = true,
['Biology disambiguation'] = true,
['Call sign disambiguation'] = true,
['Callsigndis'] = true,
['Caselaw disambiguation'] = true,
['Case law disambiguation'] = true,
['Chinese title disambiguation'] = true,
['CJKVdab'] = true,
['Chinese title disambig'] = true,
['Disambig-Chinese-char-title'] = true,
['Disambiguation cleanup'] = true,
['Cleanup disambig'] = true,
['Cleanup disambiguation'] = true,
['CleanupDisambig'] = true,
['Dab cleanup'] = true,
['Dab-cleanup'] = true,
['Dabclean'] = true,
['Disamb-cleanup'] = true,
['Disambcleanup'] = true,
['Disambig cleanup'] = true,
['Disambig-CU'] = true,
['Disambig-cleanup'] = true,
['Disambig-cu'] = true,
['Disambigcleanup'] = true,
['Disambiguate-cleanup'] = true,
['Disambiguation-cleanup'] = true,
['Geodis-cleanup'] = true,
['Genus disambiguation'] = true,
['Genus disambig'] = true,
['Hospital disambiguation'] = true,
['Hospitaldis'] = true,
['Human name disambiguation'] = true,
['Bio-dab'] = true,
['HNDIS'] = true,
['HnDis'] = true,
['Hndab'] = true,
['Hndis'] = true,
['Hndisambig'] = true,
['Human name dab'] = true,
['Personal name disambiguation'] = true,
['Personal name'] = true,
['Human name disambiguation cleanup'] = true,
['Hndis-cleanup'] = true,
['Personal name disambiguation cleanup'] = true,
['Letter–number combination disambiguation'] = true,
['LNCD'] = true,
['Letter-Number Combination Disambiguation'] = true,
['Letter-Number combination disambiguation'] = true,
['Letter-NumberCombDisambig'] = true,
['Letter-NumberCombdisambig'] = true,
['Letter-NumberCombinationDisambiguation'] = true,
['Letter-number combination disambiguation'] = true,
['Mathematical disambiguation'] = true,
['Math dab'] = true,
['Math disambiguation'] = true,
['Mathdab'] = true,
['Mathematics disambiguation'] = true,
['Maths disambiguation'] = true,
['Military unit disambiguation'] = true,
['Mil-unit-dis'] = true,
['Mil-unit-disambig'] = true,
['Music disambiguation'] = true,
['Music disambig'] = true,
['Number disambiguation'] = true,
['Numberdis'] = true,
['Numdab'] = true,
['Numdisambig'] = true,
['Opus number disambiguation'] = true,
['Phonetics disambiguation'] = true,
['Place name disambiguation'] = true,
['DisambigG'] = true,
['DisambigGeo'] = true,
['Disambiggeo'] = true,
['Geo-dis'] = true,
['Geodab'] = true,
['Geodis'] = true,
['Geodisambig'] = true,
['Geographic disambiguation'] = true,
['Portal disambiguation'] = true,
['Portal disambig'] = true,
['Road disambiguation'] = true,
['Roaddis'] = true,
['School disambiguation'] = true,
['School disambig'] = true,
['Schooldab'] = true,
['Schooldis'] = true,
['Species Latin name abbreviation disambiguation'] = true,
['Species Latin name disambiguation'] = true,
['LatinNameDisambig'] = true,
['SpeciesLatinNameDisambig'] = true,
['Station disambiguation'] = true,
['Station dab'] = true,
['Synagogue disambiguation'] = true,
['Taxonomic authority disambiguation'] = true,
['Taxonomic authorities disambiguation'] = true,
['Taxonomy disambiguation'] = true,
['Species disambiguation'] = true,
['Template disambiguation'] = true,
['Template ambiguous'] = true,
['Template dab'] = true,
['Template disambig'] = true,
['WoO number disambiguation'] = true,
}
7af08129f9ba1d6305051d78ca21d8cd58a1bea9
Template:Unichar/glyph
10
1614
2949
2023-09-23T23:50:42Z
w>Andrevan
0
wikitext
text/x-wiki
{{#if:{{{br|}}}|{{substr|{{#invoke:HTMLDecode | HTMLDecode | text={{{br|}}}}}|0|1}}}}{{#if:{{{image|}}}
| [[File:{{{image|}}}|frameless|{{{size|}}}|baseline|alt={{{na|}}}]]
| {{#switch:{{{gc|<#not a Unicode code point#>}}}
| <#not a Unicode code point#> =
| Cc =<span style="font-size:small"><control-{{{hval|}}}></span>
| Cs =<span style="font-size:small"><surrogate-{{{hval|}}}></span>
| Cp =<span style="font-size:small"><private-use-{{{hval|}}}></span>
| Cn =<!--Cn=<reserved> is not detected--><span style="font-size:small"><noncharacter-{{{hval|}}}></span>
| Cf | Zl | Zp =<!--formatting chars, no glyph or html code at all-->
| Zs =<span class="Unicode" style="background:lightblue;line-height:1em">{{#ifeq:{{{hval|}}}| 0020 | |&#x{{{hval|}}};}}</span><!--change space 0x20 into nbsp=0xA0 to preserve the space from wiki-markup deletion-->
| #default=<span style="font-size:{{{size|unexp}}};line-height:1em">{{#switch:{{{use|}}}
| ipa ={{IPA|{{{cwith|}}}&#x{{{hval}}};}}
| lang ={{lang|{{{use2|}}}|{{{cwith|}}}&#x{{{hval}}};}}
| script={{script|{{{use2|}}}|{{{cwith|}}}&#x{{{hval}}};}}<!--use2: first char uc here?-->
| unicode
| #default = {{#ifeq:{{{cwith|}}}|◌|{{script|serif|{{{cwith|}}}&#x{{{hval}}};}}|{{{cwith|}}}&#x{{{hval|}}}; }}}}</span>}}{{#ifeq:{{{cwith|}}}| | }}}}{{#if:{{{br|}}}|{{substr|{{#invoke:HTMLDecode | HTMLDecode | text={{{br|}}}}}|1|2}}}}<!--
--><noinclude>{{documentation}}</noinclude>
d1cd6eabceba8c77c4e5fa68b03004e540ad1b13
Module:Transclusion count/data/I
828
70
135
2023-09-24T05:10:35Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["IAAF_name"] = 2100,
["IAST"] = 6300,
["IBDB_name"] = 9100,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 153000,
["IMDb_title"] = 189000,
["IMO_Number"] = 4100,
["IMSLP"] = 8200,
["INA"] = 2100,
["IND"] = 7500,
["INR"] = 6500,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5200,
["IP"] = 2600,
["IPA"] = 142000,
["IPA-de"] = 8100,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 6000,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-ru"] = 2700,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 48000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7000,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3600,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 518000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8100,
["ISP"] = 5300,
["ISR"] = 4800,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9000,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Iaaf_name"] = 7200,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 17000,
["Icehockeystats"] = 12000,
["Icon"] = 581000,
["If"] = 271000,
["If_all"] = 6400,
["If_between"] = 3800,
["If_both"] = 155000,
["If_empty"] = 3660000,
["If_first_display_both"] = 73000,
["If_in_page"] = 9900,
["If_last_display_both"] = 30000,
["If_preview"] = 58000,
["If_then_show"] = 289000,
["Ifempty"] = 4000,
["Ifeq"] = 16000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1300000,
["Ifnotempty"] = 14000,
["Ifnumber"] = 36000,
["Ifsubst"] = 445000,
["Ih"] = 7500,
["Ill"] = 117000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 167000,
["Image_requested/Category_helper"] = 159000,
["Imbox"] = 917000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5620000,
["Importance/colour"] = 5640000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7100,
["Improve_documentation"] = 2400,
["In_class"] = 5900,
["In_lang"] = 357000,
["In_progress"] = 3200,
["In_string"] = 75000,
["In_title"] = 19000,
["Inactive_WikiProject_banner"] = 206000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 43000,
["Incumbent_pope"] = 4300,
["Indent"] = 4300,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4300,
["Inflation/UK/dataset"] = 4300,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6200,
["Inflation/year"] = 25000,
["Info"] = 7300,
["Infobox"] = 3230000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 147000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4600,
["Infobox_Indian_constituency/defaultdata"] = 4600,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7700,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4800,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3300,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8000,
["Infobox_UK_place/NoPostCode"] = 3100,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2600,
["Infobox_YouTube_personality/styles.css"] = 2600,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 191000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6800,
["Infobox_animanga/Header"] = 6800,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 28000,
["Infobox_artist_discography"] = 5900,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8400,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 27000,
["Infobox_character"] = 7600,
["Infobox_chess_biography"] = 3900,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5500,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 83000,
["Infobox_computing_device"] = 2300,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5400,
["Infobox_country"] = 6400,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6400,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2300,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_designation_list"] = 19000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 6900,
["Infobox_dim/core"] = 6900,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9700,
["Infobox_drug/chemical_formula"] = 9700,
["Infobox_drug/data_page_link"] = 9700,
["Infobox_drug/formatATC"] = 9600,
["Infobox_drug/formatCASnumber"] = 9700,
["Infobox_drug/formatChEBI"] = 9700,
["Infobox_drug/formatChEMBL"] = 9700,
["Infobox_drug/formatChemDBNIAID"] = 9700,
["Infobox_drug/formatChemSpider"] = 9700,
["Infobox_drug/formatCompTox"] = 9700,
["Infobox_drug/formatDrugBank"] = 9700,
["Infobox_drug/formatIUPHARBPS"] = 9700,
["Infobox_drug/formatJmol"] = 9700,
["Infobox_drug/formatKEGG"] = 9700,
["Infobox_drug/formatPDBligand"] = 9100,
["Infobox_drug/formatPubChemCID"] = 9700,
["Infobox_drug/formatPubChemSID"] = 9700,
["Infobox_drug/formatUNII"] = 9700,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9800,
["Infobox_drug/maintenance_categories"] = 9700,
["Infobox_drug/non-ref-space"] = 4200,
["Infobox_drug/pregnancy_category"] = 9800,
["Infobox_drug/title"] = 9700,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5400,
["Infobox_family"] = 2100,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 156000,
["Infobox_film/short_description"] = 152000,
["Infobox_film_awards"] = 2600,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2600,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 206000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8000,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2500,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3400,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8800,
["Infobox_islands/area"] = 9200,
["Infobox_islands/density"] = 9200,
["Infobox_islands/length"] = 8800,
["Infobox_islands/styles.css"] = 8800,
["Infobox_journal"] = 9700,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4300,
["Infobox_language"] = 9500,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9500,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3600,
["Infobox_library"] = 2100,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 80000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 423000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2000,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2000,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 121000,
["Infobox_musical_artist/color"] = 121000,
["Infobox_musical_artist/hCard_class"] = 313000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7400,
["Infobox_name_module"] = 7000,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2500,
["Infobox_noble"] = 7300,
["Infobox_officeholder"] = 219000,
["Infobox_officeholder/office"] = 224000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 2900,
["Infobox_park"] = 7400,
["Infobox_person"] = 473000,
["Infobox_person/Wikidata"] = 4800,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7100,
["Infobox_person/weight"] = 66000,
["Infobox_philosopher"] = 3400,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3000,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3800,
["Infobox_racing_driver_series_section"] = 2000,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6400,
["Infobox_religious_biography"] = 5200,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 2800,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 15000,
["Infobox_rugby_league_biography"] = 9900,
["Infobox_rugby_league_biography/PLAYER"] = 9800,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 48000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 561000,
["Infobox_settlement/areadisp"] = 235000,
["Infobox_settlement/columns"] = 94000,
["Infobox_settlement/columns/styles.css"] = 94000,
["Infobox_settlement/densdisp"] = 436000,
["Infobox_settlement/impus"] = 81000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 94000,
["Infobox_settlement/metric"] = 209000,
["Infobox_settlement/pref"] = 291000,
["Infobox_settlement/styles.css"] = 561000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3400,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2100,
["Infobox_sports_competition_event"] = 17000,
["Infobox_sports_competition_event/medalrow"] = 11000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5400,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 106000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3400,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 54000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2100,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 155000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 3600,
["Invalid_SVG/styles.css"] = 3600,
["Iptalk"] = 17000,
["IranCensus2006"] = 47000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 47000,
["Irc"] = 2100,
["Irish_place_name"] = 2600,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 141000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 6100,
["Is_italic_taxon"] = 478000,
["Is_redirect"] = 27000,
["Isbn"] = 7500,
["Isfdb_name"] = 3700,
["Isfdb_title"] = 4400,
["Isnumeric"] = 209000,
["Iso2continent"] = 35000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 226000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5200,
["Italic_title"] = 282000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4300,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 142000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 131000,
["Module:IPA"] = 142000,
["Module:IPA/data"] = 128000,
["Module:IPA/styles.css"] = 114000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 48000,
["Module:IPAc-en/data"] = 48000,
["Module:IPAc-en/phonemes"] = 48000,
["Module:IPAc-en/pronunciation"] = 48000,
["Module:IPAddress"] = 188000,
["Module:ISO_3166"] = 1030000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 7900,
["Module:ISO_3166/data/National"] = 1030000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 581000,
["Module:Icon/data"] = 581000,
["Module:If_empty"] = 3660000,
["Module:If_in_page"] = 9900,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 357000,
["Module:Indent"] = 4300,
["Module:Infobox"] = 4100000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4360000,
["Module:Infobox3cols"] = 296000,
["Module:InfoboxImage"] = 4410000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 404000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3000,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 63000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9000,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3300,
["Module:Is_infobox_in_lead"] = 377000,
["Module:Is_instance"] = 335000,
["Module:Italic_title"] = 1110000,
["Module:Italic_title2"] = 5200,
}
55575e31a45262bbf1b3a26b1bf96c3de6e0cacf
Template:VTE
10
1333
2668
2023-09-24T22:17:02Z
w>SWinxy
0
Wrap in {{Documentation}}
wikitext
text/x-wiki
{{#invoke:Navbar|navbar|mini = 1|template = {{{template|{{{1|}}}}}}}}<noinclude>{{Documentation|content=
The VTE template invokes the {{tl|navbar}} template with the parameter {{var|mini}} set to 1.
For more information, see [[Template:Navbar/doc]], which has been transcluded below for convenience.
{{cot|[[Template:Navbar/doc]]}}
{{documentation|1=Template:Navbar/doc}}
{{cob}}
}}
</noinclude>
ae3a70a9ea950d57d33c91e4d5b182059181b000
Template:Infobox military operation/doc
10
1511
2846
2023-09-24T23:24:29Z
w>EnderWatcher95
0
/* Example */
wikitext
text/x-wiki
{{#ifeq:{{{noheader|}}}|yes||{{Documentation subpage}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
}}
This infobox may be used to describe a particular planned or executed military operation or attack. For operations that resulted in combat, it can be used as an auxiliary template to the {{tl|infobox military conflict}}, if necessary; for other types of operations, including those that were planned but never executed, it may be used alone. In the case of conflicts that consisted of multiple independent operations, multiple copies of the box may be used on a single article.
__TOC__
=== Usage ===
{{Parameter names example|_template = Infobox military operation |title |name |partof |conflict |image |image_size |image_upright |alt |caption |coordinates = {{coord|0|0}} |map_type=Earth |map_size= |map_label |map_caption |scope |type |location |coordinates |planned |planned_by |commanded_by |target |objective |date |time |time-begin |time-end |timezone |executed_by |outcome |casualties |fatalities |injuries}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox military operation
|name =
|partof =
|subtitle =
|image =
|image_upright =
|alt =
|caption =
|scope =
|type =
|location =
|location2 = <!-- 2 through 10 for more locations -->
|coordinates =
|coordinates2 = <!-- 2 through 10 for more locations -->
|map_type =
|map_size =
|map_caption =
|map_label =
|map_label2 = <!-- 2 through 10 for more locations -->
|planned =
|planned_by =
|commanded_by =
|objective =
|target =
|date = <!-- {{start date|YYYY|MM|DD|df=y}} -->
|time =
|time-begin =
|time-end =
|timezone =
|executed_by =
|outcome =
|casualties =
|fatalities =
|injuries =
}}</syntaxhighlight>
=== Example ===
{{Infobox military operation
|name = Case Blue
|Result = Australian Victory
|planned_by = ''[[Wehrmacht]]''
|objective = Capture of [[Caucasus]] oil fields
|executed = Began {{start date|1942|06|28|df=y}}
|executed_by = [[Army Group South]]
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox military operation
|name = Case Blue
|scope = Strategic offensive
|planned_by = ''[[Wehrmacht]]''
|objective = Capture of [[Caucasus]] oil fields
|executed = Began {{start date|1942|06|28|df=y}}
|executed_by = [[Army Group South]]
}}</syntaxhighlight>
=== Parameters ===
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]).
* '''name''' – the name of the operational plan; names in multiple languages may be provided.
* '''subtitle''' – alternative name of the conflict being described.
* '''partof''' – ''optional'' – the larger conflict containing the event described in the article.
* '''image''' – ''optional'' – an image for the warbox. Given in the form <code>File:Example.jpg</code>
* '''image_upright''' – ''optional'' – image upright scaling factor.
* '''alt''' – ''optional'' – [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|Alternative text for image]] that is accessible to [[screen reader]]s to help the [[visually impaired]]
* '''caption''' – ''optional'' – the text to be placed below the image.
* '''location''' – ''optional'' – the location of the operation.
* '''coordinates''' – ''optional'' – the coordinates for the location above, given as {{tl|coord}} with ''|display=inline,title''. Used to display the geographic location of the conflict and the location on a map added with the <code>map_type</code> parameter. If coordinates for several locations are given, consider if hany shall have the title display.
* '''map_type''' – ''optional'' – the base map to be used for the location map, e.g. "Scotland"; see {{tl|location map}} for more details.
* '''map_size''' – ''optional'' – width of the location map in pixels (px), e.g. "150"; defaults to: "220".
* '''map_caption''' – ''optional'' – caption displayed below the location map; defaults to "Location within {{{map_type}}}", e.g. "Location within Scotland".
* '''map_label''' – ''optional'' – the label placed next to the marker on the location map.
* '''scope''' – ''optional'' – the scope of the operation, such as "Strategic", "Operational", or "Tactical".
* '''type''' – ''optional'' – as an alternative to the '''scope''' field above, the type of operation, such as "Suicide attack" or "Ambush".
* '''planned''' – ''optional'' – the date(s) on which the plan was developed.
* '''planned_by''' – ''optional'' – the person or group responsible for developing the plan.
* '''commanded_by''' – ''optional'' – the person commanding the operation.
* '''objective''' – ''optional'' – the objective(s) of the operation.
* '''target''' – ''optional'' – as an alternative to the '''objective''' field above, the target(s) of the operation.
* '''date''' – ''optional'' – the date(s), if any, on which the operation was executed. use {{Tl|Start date}} (and {{Tl|End date}} if required)
* '''time''' – ''optional'' – the time, if any, at which the operation was executed.
* '''time-begin''' and '''time-end''' – ''optional'' – as an alternative to the '''time''' field above, the start and end times, respectively.
* '''timezone''' – ''optional'' – the timezone of the location of the operation; [[UTC]]+X, [[UTC]]-X, or [[UTC]] (i.e. offset from [[UTC]]) is preferred.
* '''executed_by''' – ''optional'' – the people, groups, units, or formations responsible for executing the operation.
* '''outcome''' – ''optional'' – the outcome of the operation from the perspective of the planners.
* '''casualties''' – ''optional'' – any casualties occurring during the execution of the operation.
* '''fatalities''' – ''optional'' – as an alternative to the '''casualties''' field above, the number of fatalities occurring during the execution of the operation.
* '''injuries''' – ''optional'' – as an alternative to the '''casualties''' field above, the number of injuries occurring during the execution of the operation.
=== Microformat ===
{{UF-hcal}}
=== TemplateData ===
{{collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=y}}
<templatedata>
{
"description": "This infobox may be used to describe a particular planned or executed military operation or attack.",
"format": "{{_\n| _____________ = _\n}}\n",
"params": {
"name": {
"label": "Name",
"description": "The name of the military operation",
"type": "string",
"suggested": true
}
},
"paramOrder": [
"name"
]
}
</templatedata>
{{collapse bottom}}
=== See also ===
* {{tl|Infobox civil conflict}}
* {{tl|Infobox civilian attack}}
* {{tl|Infobox military conflict}}<noinclude>
[[Category:WikiProject Military history template instructions|Military operation]]
</noinclude>
<includeonly>
{{Sandbox other||{{#ifeq:{{{noheader|}}}|yes||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Templates with coordinates fields]]
[[Category:Military auxiliary infobox templates|Military operation]]
[[Category:Templates that add a tracking category|{{PAGENAME}}]]
}}}}</includeonly>
8563c0313f73379ff06c13310de97e2837a51023
Template:ISO 15924 number
10
1623
2958
2023-09-25T03:14:51Z
w>Drmccreedy
0
Update for 2023-09-12 update of ISO 15924
wikitext
text/x-wiki
{{#switch:{{ISO 15924 code|{{{alpha4|{{{1|}}}}}}}}<!-- ISO 15924 as of 2023-09-12: complete list of 221 + 50 Qaaaa-Qabx codes-->
| Adlm = 166
| Afak = 439
| Aghb = 239
| Ahom = 338
| Arab = 160
| Aran = 161
| Armi = 124
| Armn = 230
| Avst = 134
| Bali = 360
| Bamu = 435
| Bass = 259
| Batk = 365
| Beng = 325
| Bhks = 334
| Blis = 550
| Bopo = 285
| Brah = 300
| Brai = 570
| Bugi = 367
| Buhd = 372
| Cakm = 349
| Cans = 440
| Cari = 201
| Cham = 358
| Cher = 445
| Chis = 298
| Chrs = 109
| Cirt = 291
| Copt = 204
| Cpmn = 402
| Cprt = 403
| Cyrl = 220
| Cyrs = 221
| Deva = 315
| Diak = 342
| Dogr = 328
| Dsrt = 250
| Dupl = 755
| Egyd = 070
| Egyh = 060
| Egyp = 050
| Elba = 226
| Elym = 128
| Ethi = 430
| Gara = 164
| Geok = 241
| Geor = 240
| Glag = 225
| Gong = 312
| Gonm = 313
| Goth = 206
| Gran = 343
| Grek = 200
| Gujr = 320
| Gukh = 397
| Guru = 310
| Hanb = 503
| Hang = 286
| Hani = 500
| Hano = 371
| Hans = 501
| Hant = 502
| Hatr = 127
| Hebr = 125
| Hira = 410
| Hluw = 080
| Hmng = 450
| Hmnp = 451
| Hrkt = 412
| Hung = 176
| Inds = 610
| Ital = 210
| Jamo = 284
| Java = 361
| Jpan = 413
| Jurc = 510
| Kali = 357
| Kana = 411
| Kawi = 368
| Khar = 305
| Khmr = 355
| Khoj = 322
| Kitl = 505
| Kits = 288
| Knda = 345
| Kore = 287
| Kpel = 436
| Krai = 396
| Kthi = 317
| Lana = 351
| Laoo = 356
| Latf = 217
| Latg = 216
| Latn = 215
| Leke = 364
| Lepc = 335
| Limb = 336
| Lina = 400
| Linb = 401
| Lisu = 399
| Loma = 437
| Lyci = 202
| Lydi = 116
| Mahj = 314
| Maka = 366
| Mand = 140
| Mani = 139
| Marc = 332
| Maya = 090
| Medf = 265
| Mend = 438
| Merc = 101
| Mero = 100
| Mlym = 347
| Modi = 324
| Mong = 145
| Moon = 218
| Mroo = 264
| Mtei = 337
| Mult = 323
| Mymr = 350
| Nagm = 295
| Nand = 311
| Narb = 106
| Nbat = 159
| Newa = 333
| Nkdb = 085
| Nkgb = 420
| Nkoo = 165
| Nshu = 499
| Ogam = 212
| Olck = 261
| Onao = 296
| Orkh = 175
| Orya = 327
| Osge = 219
| Osma = 260
| Ougr = 143
| Palm = 126
| Pauc = 263
| Pcun = 015
| Pelm = 016
| Perm = 227
| Phag = 331
| Phli = 131
| Phlp = 132
| Phlv = 133
| Phnx = 115
| Piqd = 293
| Plrd = 282
| Prti = 130
| Psin = 103
| Qaaa-Qabx | Qaaa-Qabx | Qaaa–Qabx= 900-949
| Qaaa = 900 | Qaab = 901 | Qaac = 902 | Qaad = 903 | Qaae = 904 | Qaaf = 905 | Qaag = 906 | Qaah = 907 | Qaai = 908 | Qaaj = 909 | Qaak = 910 | Qaal = 911 | Qaam = 912 | Qaan = 913 | Qaao = 914 | Qaap = 915 | Qaaq = 916 | Qaar = 917 | Qaas = 918 | Qaat = 919 | Qaau = 920 | Qaav = 921 | Qaaw = 922 | Qaax = 923 | Qaay = 924 | Qaaz = 925 | Qaba = 926 | Qabb = 927 | Qabc = 928 | Qabd = 929 | Qabe = 930 | Qabf = 931 | Qabg = 932 | Qabh = 933 | Qabi = 934 | Qabj = 935 | Qabk = 936 | Qabl = 937 | Qabm = 938 | Qabn = 939 | Qabo = 940 | Qabp = 941 | Qabq = 942 | Qabr = 943 | Qabs = 944 | Qabt = 945 | Qabu = 946 | Qabv = 947 | Qabw = 948 | Qabx = 949
| Ranj = 303
| Rjng = 363
| Rohg = 167
| Roro = 620
| Runr = 211
| Samr = 123
| Sara = 292
| Sarb = 105
| Saur = 344
| Sgnw = 095
| Shaw = 281
| Shrd = 319
| Shui = 530
| Sidd = 302
| Sidt = 180
| Sind = 318
| Sinh = 348
| Sogd = 141
| Sogo = 142
| Sora = 398
| Soyo = 329
| Sund = 362
| Sunu = 274
| Sylo = 316
| Syrc = 135
| Syre = 138
| Syrj = 137
| Syrn = 136
| Tagb = 373
| Takr = 321
| Tale = 353
| Talu = 354
| Taml = 346
| Tang = 520
| Tavt = 359
| Tayo = 380
| Telu = 340
| Teng = 290
| Tfng = 120
| Tglg = 370
| Thaa = 170
| Thai = 352
| Tibt = 330
| Tirh = 326
| Tnsa = 275
| Todr = 229
| Tols = 299
| Toto = 294
| Tutg = 341
| Ugar = 040
| Vaii = 470
| Visp = 280
| Vith = 228
| Wara = 262
| Wcho = 283
| Wole = 480
| Xpeo = 030
| Xsux = 020
| Yezi = 192
| Yiii = 460
| Zanb = 339
| Zinh = 994
| Zmth = 995
| Zsye = 993
| Zsym = 996
| Zxxx = 997
| Zyyy = 998
| Zzzz = 999
| #default = {{{default|}}}
}}<noinclude>
{{documentation}}
</noinclude>
9c5511b734ff43c00f63bd437379515d8c352a18
Template:ISO 15924 code
10
1604
2939
2023-09-25T03:17:54Z
w>Drmccreedy
0
Update for 2023-09-12 update of ISO 15924
wikitext
text/x-wiki
<!-- Exact list from ISO datafile, as of 2023-09-12: 223 output values (codes).
-->{{#switch:{{{alpha4|{{ucfirst:{{lc:{{{1|}}}}}}}}}}
| 166 | Adlm = Adlm
| 439 | Afak = Afak
| 239 | Aghb = Aghb
| 338 | Ahom = Ahom
| 160 | Arab = Arab
| 161 | Aran = Aran
| 124 | Armi = Armi
| 230 | Armn = Armn
| 134 | Avst = Avst
| 360 | Bali = Bali
| 435 | Bamu = Bamu
| 259 | Bass = Bass
| 365 | Batk = Batk
| 325 | Beng = Beng
| 334 | Bhks = Bhks
| 550 | Blis = Blis
| 285 | Bopo = Bopo
| 300 | Brah = Brah
| 570 | Brai = Brai
| 367 | Bugi = Bugi
| 372 | Buhd = Buhd
| 349 | Cakm = Cakm
| 440 | Cans = Cans
| 201 | Cari = Cari
| 358 | Cham = Cham
| 445 | Cher = Cher
| 298 | Chis = Chis
| 109 | Chrs = Chrs
| 291 | Cirt = Cirt
| 204 | Copt = Copt
| 402 | Cpmn = Cpmn
| 403 | Cprt = Cprt
| 220 | Cyrl = Cyrl
| 221 | Cyrs = Cyrs
| 315 | Deva = Deva
| 342 | Diak = Diak
| 328 | Dogr = Dogr
| 250 | Dsrt = Dsrt
| 755 | Dupl = Dupl
| 70 | 070 | Egyd = Egyd
| 60 | 060 | Egyh = Egyh
| 50 | 050 | Egyp = Egyp
| 226 | Elba = Elba
| 128 | Elym = Elym
| 430 | Ethi = Ethi
| 164 | Gara = Gara
| 241 | Geok = Geok
| 240 | Geor = Geor
| 225 | Glag = Glag
| 312 | Gong = Gong
| 313 | Gonm = Gonm
| 206 | Goth = Goth
| 343 | Gran = Gran
| 200 | Grek = Grek
| 320 | Gujr = Gujr
| 397 | Gukh = Gukh
| 310 | Guru = Guru
| 503 | Hanb = Hanb
| 286 | Hang = Hang
| 500 | Hani = Hani
| 371 | Hano = Hano
| 501 | Hans = Hans
| 502 | Hant = Hant
| 127 | Hatr = Hatr
| 125 | Hebr = Hebr
| 410 | Hira = Hira
| 80 | 080 | Hluw = Hluw
| 450 | Hmng = Hmng
| 451 | Hmnp = Hmnp
| 412 | Hrkt = Hrkt
| 176 | Hung = Hung
| 610 | Inds = Inds
| 210 | Ital = Ital
| 284 | Jamo = Jamo
| 361 | Java = Java
| 413 | Jpan = Jpan
| 510 | Jurc = Jurc
| 357 | Kali = Kali
| 411 | Kana = Kana
| 368 | Kawi = Kawi
| 305 | Khar = Khar
| 355 | Khmr = Khmr
| 322 | Khoj = Khoj
| 505 | Kitl = Kitl
| 288 | Kits = Kits
| 345 | Knda = Knda
| 287 | Kore = Kore
| 436 | Kpel = Kpel
| 396 | Krai = Krai
| 317 | Kthi = Kthi
| 351 | Lana = Lana
| 356 | Laoo = Laoo
| 217 | Latf = Latf
| 216 | Latg = Latg
| 215 | Latn = Latn
| 364 | Leke = Leke
| 335 | Lepc = Lepc
| 336 | Limb = Limb
| 400 | Lina = Lina
| 401 | Linb = Linb
| 399 | Lisu = Lisu
| 437 | Loma = Loma
| 202 | Lyci = Lyci
| 116 | Lydi = Lydi
| 314 | Mahj = Mahj
| 366 | Maka = Maka
| 140 | Mand = Mand
| 139 | Mani = Mani
| 332 | Marc = Marc
| 90 | 090 | Maya = Maya
| 265 | Medf = Medf
| 438 | Mend = Mend
| 101 | Merc = Merc
| 100 | Mero = Mero
| 347 | Mlym = Mlym
| 324 | Modi = Modi
| 145 | Mong = Mong
| 218 | Moon = Moon
| 264 | Mroo = Mroo
| 337 | Mtei = Mtei
| 323 | Mult = Mult
| 350 | Mymr = Mymr
| 295 | Nagm = Nagm
| 311 | Nand = Nand
| 106 | Narb = Narb
| 159 | Nbat = Nbat
| 333 | Newa = Newa
| 85 | 085 | Nkdb = Nkdb
| 420 | Nkgb = Nkgb
| 165 | Nkoo = Nkoo
| 499 | Nshu = Nshu
| 212 | Ogam = Ogam
| 261 | Olck = Olck
| 296 | Onao = Onao
| 175 | Orkh = Orkh
| 327 | Orya = Orya
| 219 | Osge = Osge
| 260 | Osma = Osma
| 143 | Ougr = Ougr
| 126 | Palm = Palm
| 263 | Pauc = Pauc
| 15 | 015 | Pcun = Pcun
| 16 | 016 | Pelm = Pelm
| 227 | Perm = Perm
| 331 | Phag = Phag
| 131 | Phli = Phli
| 132 | Phlp = Phlp
| 133 | Phlv = Phlv
| 115 | Phnx = Phnx
| 293 | Piqd = Piqd
| 282 | Plrd = Plrd
| 130 | Prti = Prti
| 103 | Psin = Psin
| 900-949 | 900–949 | Qaaa-qabx | Qaaa–qabx = Qaaa–Qabx<!-- As a range. Separator IN "-" or NDASH;lc. OUT = NDASH. 2021-02 -->
| 900 | Qaaa = Qaaa
| 949 | Qabx = Qabx
| 303 | Ranj = Ranj
| 363 | Rjng = Rjng
| 167 | Rohg = Rohg
| 620 | Roro = Roro
| 211 | Runr = Runr
| 123 | Samr = Samr
| 292 | Sara = Sara
| 105 | Sarb = Sarb
| 344 | Saur = Saur
| 95 | 095 | Sgnw = Sgnw
| 281 | Shaw = Shaw
| 319 | Shrd = Shrd
| 530 | Shui = Shui
| 302 | Sidd = Sidd
| 180 | Sidt = Sidt
| 318 | Sind = Sind
| 348 | Sinh = Sinh
| 141 | Sogd = Sogd
| 142 | Sogo = Sogo
| 398 | Sora = Sora
| 329 | Soyo = Soyo
| 362 | Sund = Sund
| 274 | Sunu = Sunu
| 316 | Sylo = Sylo
| 135 | Syrc = Syrc
| 138 | Syre = Syre
| 137 | Syrj = Syrj
| 136 | Syrn = Syrn
| 373 | Tagb = Tagb
| 321 | Takr = Takr
| 353 | Tale = Tale
| 354 | Talu = Talu
| 346 | Taml = Taml
| 520 | Tang = Tang
| 359 | Tavt = Tavt
| 380 | Tayo = Tayo
| 340 | Telu = Telu
| 290 | Teng = Teng
| 120 | Tfng = Tfng
| 370 | Tglg = Tglg
| 170 | Thaa = Thaa
| 352 | Thai = Thai
| 330 | Tibt = Tibt
| 326 | Tirh = Tirh
| 275 | Tnsa = Tnsa
| 229 | Todr = Todr
| 299 | Tols = Tols
| 294 | Toto = Toto
| 341 | Tutg = Tutg
| 40 | 040 | Ugar = Ugar
| 470 | Vaii = Vaii
| 280 | Visp = Visp
| 228 | Vith = Vith
| 262 | Wara = Wara
| 283 | Wcho = Wcho
| 480 | Wole = Wole
| 30 | 030 | Xpeo = Xpeo
| 20 | 020 | Xsux = Xsux
| 192 | Yezi = Yezi
| 460 | Yiii = Yiii
| 339 | Zanb = Zanb
| 994 | Zinh = Zinh
| 995 | Zmth = Zmth
| 993 | Zsye = Zsye
| 996 | Zsym = Zsym
| 997 | Zxxx = Zxxx
| 998 | Zyyy = Zyyy
| 999 | Zzzz = Zzzz
| #default={{{default|{{error|Error using {{tlx|ISO 15924 code}}: input "{{{alpha4|{{{1|}}}}}}" not recognized|tag=span}}}}}
}}<noinclude>
{{documentation}}
</noinclude>
0d8982f8566f56ccf8d8469fb534a29f553b6c1e
Template:ISO 15924 name
10
1605
2940
2023-09-25T03:22:17Z
w>Drmccreedy
0
Update for 2023-09-12 update of ISO 15924
wikitext
text/x-wiki
{{#switch:{{{alpha4|{{ISO 15924 code|{{{1|}}}}}}}}<!-- ISO 15924 list as of 2023-09-12: this is the complete list of the 221 + 50 Qaaa-Qabx codes-->
| Adlm = Adlam
| Afak = Afaka
| Aghb = Caucasian Albanian
| Ahom = Ahom, Tai Ahom
| Arab = Arabic
| Aran = Arabic (Nastaliq variant)
| Armi = Imperial Aramaic
| Armn = Armenian
| Avst = Avestan
| Bali = Balinese
| Bamu = Bamum
| Bass = Bassa Vah
| Batk = Batak
| Beng = Bengali (Bangla)
| Bhks = Bhaiksuki
| Blis = Blissymbols
| Bopo = Bopomofo
| Brah = Brahmi
| Brai = Braille
| Bugi = Buginese
| Buhd = Buhid
| Cakm = Chakma
| Cans = Unified Canadian Aboriginal Syllabics
| Cari = Carian
| Cham = Cham
| Cher = Cherokee
| Chis = Chisoi
| Chrs = Chorasmian
| Cirt = Cirth
| Copt = Coptic
| Cpmn = Cypro-Minoan
| Cprt = Cypriot syllabary
| Cyrl = Cyrillic
| Cyrs = Cyrillic (Old Church Slavonic variant)
| Deva = Devanagari (Nagari)
| Diak = Dives Akuru
| Dogr = Dogra
| Dsrt = Deseret (Mormon)
| Dupl = Duployan shorthand, Duployan stenography
| Egyd = Egyptian demotic
| Egyh = Egyptian hieratic
| Egyp = Egyptian hieroglyphs
| Elba = Elbasan
| Elym = Elymaic
| Ethi = Ethiopic (Geʻez)
| Gara = Garay
| Geok = Khutsuri (Asomtavruli and Nuskhuri)
| Geor = Georgian (Mkhedruli and Mtavruli)
| Glag = Glagolitic
| Gong = Gunjala Gondi
| Gonm = Masaram Gondi
| Goth = Gothic
| Gran = Grantha
| Grek = Greek
| Gujr = Gujarati
| Gukh = Gurung Khema
| Guru = Gurmukhi
| Hanb = Han with Bopomofo (alias for Han + Bopomofo)
| Hang = Hangul (Hangŭl, Hangeul)
| Hani = Han (Hanzi, Kanji, Hanja)
| Hano = Hanunoo (Hanunóo)
| Hans = Han (Simplified variant)
| Hant = Han (Traditional variant)
| Hatr = Hatran
| Hebr = Hebrew
| Hira = Hiragana
| Hluw = Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)
| Hmng = Pahawh Hmong
| Hmnp = Nyiakeng Puachue Hmong
| Hrkt = Japanese syllabaries (alias for Hiragana + Katakana)
| Hung = Old Hungarian (Hungarian Runic)
| Inds = Indus (Harappan)
| Ital = Old Italic (Etruscan, Oscan, etc.)
| Jamo = Jamo (alias for Jamo subset of Hangul)
| Java = Javanese
| Jpan = Japanese (alias for Han + Hiragana + Katakana)
| Jurc = Jurchen
| Kali = Kayah Li
| Kana = Katakana
| Kawi = Kawi
| Khar = Kharoshthi
| Khmr = Khmer
| Khoj = Khojki
| Kitl = Khitan large script
| Kits = Khitan small script
| Knda = Kannada
| Kore = Korean (alias for Hangul + Han)
| Kpel = Kpelle
| Krai = Kirat Rai
| Kthi = Kaithi
| Lana = Tai Tham (Lanna)
| Laoo = Lao
| Latf = Latin (Fraktur variant)
| Latg = Latin (Gaelic variant)
| Latn = Latin
| Leke = Leke
| Lepc = Lepcha (Róng)
| Limb = Limbu
| Lina = Linear A
| Linb = Linear B
| Lisu = Lisu (Fraser)
| Loma = Loma
| Lyci = Lycian
| Lydi = Lydian
| Mahj = Mahajani
| Maka = Makasar
| Mand = Mandaic, Mandaean
| Mani = Manichaean
| Marc = Marchen
| Maya = Mayan hieroglyphs
| Medf = Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ)
| Mend = Mende Kikakui
| Merc = Meroitic Cursive
| Mero = Meroitic Hieroglyphs
| Mlym = Malayalam
| Modi = Modi, Moḍī
| Mong = Mongolian
| Moon = Moon (Moon code, Moon script, Moon type)
| Mroo = Mro, Mru
| Mtei = Meitei Mayek (Meithei, Meetei)
| Mult = Multani
| Mymr = Myanmar (Burmese)
| Nagm = Nag Mundari
| Nand = Nandinagari
| Narb = Old North Arabian (Ancient North Arabian)
| Nbat = Nabataean
| Newa = Newa, Newar, Newari, Nepāla lipi
| Nkdb = Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba)
| Nkgb = Naxi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba)
| Nkoo = N’Ko
| Nshu = Nüshu
| Ogam = Ogham
| Olck = Ol Chiki (Ol Cemet’, Ol, Santali)
| Onao = Ol Onal
| Orkh = Old Turkic, Orkhon Runic
| Orya = Oriya (Odia)
| Osge = Osage
| Osma = Osmanya
| Ougr = Old Uyghur
| Palm = Palmyrene
| Pauc = Pau Cin Hau
| Pcun = Proto-Cuneiform
| Pelm = Proto-Elamite
| Perm = Old Permic
| Phag = Phags-pa
| Phli = Inscriptional Pahlavi
| Phlp = Psalter Pahlavi
| Phlv = Book Pahlavi
| Phnx = Phoenician
| Piqd = Klingon (KLI pIqaD)
| Plrd = Miao (Pollard)
| Prti = Inscriptional Parthian
| Psin = Proto-Sinaitic
| Qaaa-Qabx | Qaaa–Qabx = Reserved for private use (range)
| Qaaa = Reserved for private use (start)
| Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz | Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw = Reserved for private use
| Qabx = Reserved for private use (end)
| Ranj = Ranjana
| Rjng = Rejang (Redjang, Kaganga)
| Rohg = Hanifi Rohingya
| Roro = Rongorongo
| Runr = Runic
| Samr = Samaritan
| Sara = Sarati
| Sarb = Old South Arabian
| Saur = Saurashtra
| Sgnw = SignWriting
| Shaw = Shavian (Shaw)
| Shrd = Sharada, Śāradā
| Shui = Shuishu
| Sidd = Siddham, Siddhaṃ, Siddhamātṛkā
| Sidt = Sidetic
| Sind = Khudawadi, Sindhi
| Sinh = Sinhala
| Sogd = Sogdian
| Sogo = Old Sogdian
| Sora = Sora Sompeng
| Soyo = Soyombo
| Sund = Sundanese
| Sunu = Sunuwar
| Sylo = Syloti Nagri
| Syrc = Syriac
| Syre = Syriac (Estrangelo variant)
| Syrj = Syriac (Western variant)
| Syrn = Syriac (Eastern variant)
| Tagb = Tagbanwa
| Takr = Takri, Ṭākrī, Ṭāṅkrī
| Tale = Tai Le
| Talu = New Tai Lue
| Taml = Tamil
| Tang = Tangut
| Tavt = Tai Viet
| Tayo = Tai Yo
| Telu = Telugu
| Teng = Tengwar
| Tfng = Tifinagh (Berber)
| Tglg = Tagalog (Baybayin, Alibata)
| Thaa = Thaana
| Thai = Thai
| Tibt = Tibetan
| Tirh = Tirhuta
| Tnsa = Tangsa
| Todr = Todhri
| Tols = Tolong Siki
| Toto = Toto
| Tutg = Tulu-Tigalari
| Ugar = Ugaritic
| Vaii = Vai
| Visp = Visible Speech
| Vith = Vithkuqi
| Wara = Warang Citi (Varang Kshiti)
| Wcho = Wancho
| Wole = Woleai
| Xpeo = Old Persian
| Xsux = Cuneiform, Sumero-Akkadian
| Yezi = Yezidi
| Yiii = Yi
| Zanb = Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script)
| Zinh = Code for inherited script
| Zmth = Mathematical notation
| Zsye = Symbols (emoji variant)
| Zsym = Symbols
| Zxxx = Code for unwritten documents
| Zyyy = Code for undetermined script
| Zzzz = Code for uncoded script
| #default = {{{default|}}}
}}<noinclude>
{{documentation}}
</noinclude>
4916fd905002b84f32ac38b9f4b572dcc057406d
Template:ISO 15924/wp-article
10
1594
2929
2023-09-25T03:46:14Z
w>Drmccreedy
0
Update for 2023-09-12 update of ISO 15924
wikitext
text/x-wiki
{{ISO 15924/wp-article/format<!-- ISO 15924 as of 2023-09-12: 221 + Qaaa-Qabx codes-->
|alpha4={{{alpha4|{{{1|}}}}}}
|format={{{format|}}}
|label={{{label|}}}
|value={{#switch:{{{alpha4|{{{1|}}}}}}
| Adlm = Adlam script
| Afak = Afaka syllabary
| Aghb = Caucasian Albanian script
| Ahom = Ahom script
| Arab = Arabic script
| Aran = Nastaliq
| Armi = Aramaic alphabet
| Armn = Armenian alphabet
| Avst = Avestan alphabet
| Bali = Balinese script
| Bamu = Bamum script
| Bass = Bassa Vah script
| Batk = Batak script
| Beng = Bengali–Assamese script
| Bhks = Bhaiksuki script
| Blis = Blissymbols
| Bopo = Bopomofo
| Brah = Brahmi script
| Brai = Braille
| Bugi = Lontara script
| Buhd = Buhid script
| Cakm = Chakma script
| Cans = Canadian Aboriginal syllabics
| Cari = Carian alphabets
| Cham = Cham script
| Cher = Cherokee syllabary
| Chis = Kurmali language
| Chrs = Khwarezmian language#Writing system
| Cirt = Cirth
| Copt = Coptic alphabet
| Cpmn = Cypro-Minoan syllabary
| Cprt = Cypriot syllabary
| Cyrl = Cyrillic script
| Cyrs = Early Cyrillic alphabet
| Deva = Devanagari
| Diak = Dhives Akuru
| Dogr = Namem Dogra Akkhar
| Dsrt = Deseret alphabet
| Dupl = Duployan shorthand
| Egyd = Demotic (Egyptian)
| Egyh = Hieratic
| Egyp = Egyptian hieroglyphs
| Elba = Elbasan script
| Elym = Elymaic
| Ethi = Geʽez script
| Gara = Garay alphabet
| Geok = Georgian scripts#Nuskhuri
| Geor = Georgian scripts
| Glag = Glagolitic script
| Gong = Gunjala Gondi script
| Gonm = Gondi writing#Masaram
| Goth = Gothic alphabet
| Gran = Grantha script
| Grek = Greek alphabet
| Gujr = Gujarati script
| Gukh = Khema script
| Guru = Gurmukhi
| Hanb = Chinese characters
| Hang = Hangul
| Hani = Chinese characters
| Hano = Hanunoo script
| Hans = Simplified Chinese characters
| Hant = Traditional Chinese characters
| Hatr = Hatran Aramaic#Alphabet
| Hebr = Hebrew alphabet
| Hira = Hiragana
| Hluw = Anatolian hieroglyphs
| Hmng = Pahawh Hmong
| Hmnp = Nyiakeng Puachue Hmong
| Hrkt = Kana
| Hung = Old Hungarian script
| Inds = Indus script
| Ital = Old Italic scripts
| Jamo = Hangul#Letters
| Java = Javanese script
| Jpan = Japanese writing system
| Jurc = Jurchen script
| Kali = Kayah Li alphabet
| Kana = Katakana
| Kawi = Kawi script
| Khar = Kharosthi
| Khmr = Khmer script
| Khoj = Khojki script
| Kitl = Khitan large script
| Kits = Khitan small script
| Knda = Kannada script
| Kore = Korean mixed script
| Kpel = Kpelle syllabary
| Krai = Bantawa language
| Kthi = Kaithi
| Lana = Tai Tham script
| Laoo = Lao script
| Latf = Fraktur
| Latg = Gaelic type
| Latn = Latin script
| Leke = Leke script
| Lepc = Lepcha script
| Limb = Limbu script
| Lina = Linear A
| Linb = Linear B
| Lisu = Fraser script
| Loma = Loma language#Writing systems
| Lyci = Lycian alphabet
| Lydi = Lydian alphabet
| Mahj = Mahajani
| Maka = Makasar script
| Mand = Mandaic alphabet
| Mani = Manichaean script
| Marc = Marchen script
| Maya = Maya script
| Medf = Medefaidrin
| Mend = Mende Kikakui script
| Merc = Meroitic script
| Mero = Meroitic script
| Mlym = Malayalam script
| Modi = Modi script
| Mong = Mongolian script
| Moon = Moon type
| Mroo = Mru language#Script
| Mtei = Meitei script
| Mult = Multani script
| Mymr = Mon–Burmese script
| Nagm = Mundari Bani
| Nand = Nandinagari
| Narb = Ancient North Arabian
| Nbat = Nabataean alphabet
| Newa = Pracalit script
| Nkdb = Dongba symbols
| Nkgb = Geba syllabary
| Nkoo = N'Ko script
| Nshu = Nüshu
| Ogam = Ogham
| Olck = Ol Chiki script
| Onao = Ol Onal
| Orkh = Old Turkic script
| Orya = Odia script
| Osge = Osage script
| Osma = Osmanya script
| Ougr = Old Uyghur alphabet
| Palm = Palmyrene alphabet
| Pauc = Pau Cin Hau script
| Pcun = Proto-cuneiform numerals
| Pelm = Proto-Elamite script
| Perm = Old Permic script
| Phag = ʼPhags-pa script
| Phli = Inscriptional Pahlavi
| Phlp = Psalter Pahlavi
| Phlv = Pahlavi scripts#Book Pahlavi
| Phnx = Phoenician alphabet
| Piqd = Klingon scripts
| Plrd = Pollard script
| Prti = Inscriptional Parthian
| Psin = Proto-Sinaitic script
| Qaaa | Qaab | Qaac | Qaad | Qaae | Qaaf | Qaag | Qaah | Qaai | Qaaj | Qaak | Qaal | Qaam | Qaan | Qaao | Qaap | Qaaq | Qaar | Qaas | Qaat | Qaau | Qaav | Qaaw | Qaax | Qaay | Qaaz | Qaba | Qabb | Qabc | Qabd | Qabe | Qabf | Qabg | Qabh | Qabi | Qabj | Qabk | Qabl | Qabm | Qabn | Qabo | Qabp | Qabq | Qabr | Qabs | Qabt | Qabu | Qabv | Qabw | Qabx | Qaaa-Qabx | Qaaa–Qabx = ISO 15924#Special codes
| Ranj = Rejang alphabet
| Rjng = Rejang script
| Rohg = Hanifi Rohingya script
| Roro = Rongorongo
| Runr = Runes
| Samr = Samaritan script
| Sara = Sarati
| Sarb = Ancient South Arabian script
| Saur = Saurashtra script
| Sgnw = SignWriting
| Shaw = Shavian alphabet
| Shrd = Sharada script
| Shui = Sui script
| Sidd = Siddhaṃ script
| Sidt = Sidetic language
| Sind = Khudabadi script
| Sinh = Sinhala script
| Sogd = Sogdian alphabet
| Sogo = Sogdian alphabet
| Sora = Sorang Sompeng script
| Soyo = Soyombo script
| Sund = Sundanese script
| Sunu = Sunuwar script
| Sylo = Sylheti Nagri
| Syrc = Syriac alphabet
| Syre = Syriac alphabet#Estrangelo variant
| Syrj = Syriac alphabet#Western variant
| Syrn = Syriac alphabet#Eastern variant
| Tagb = Tagbanwa script
| Takr = Takri script
| Tale = Tai Le script
| Talu = New Tai Lue alphabet
| Taml = Tamil script
| Tang = Tangut script
| Tavt = Tai Viet script
| Tayo = Lai Tay script
| Telu = Telugu script
| Teng = Tengwar
| Tfng = Tifinagh
| Tglg = Baybayin
| Thaa = Thaana
| Thai = Thai script
| Tibt = Tibetan script
| Tirh = Tirhuta script
| Tnsa = Tangsa language#Orthography
| Todr = Todhri alphabet
| Tols = Tolong Siki
| Toto = Toto language#Writing system
| Tutg = Tigalari script
| Ugar = Ugaritic alphabet
| Vaii = Vai syllabary
| Visp = Visible Speech
| Vith = Vithkuqi script
| Wara = Warang Citi
| Wcho = Wancho script
| Wole = Woleai script
| Xpeo = Old Persian cuneiform
| Xsux = Cuneiform
| Yezi = Kurdish alphabets#Yezidi
| Yiii = Yi script
| Zanb = Zanabazar square script
| Zmth = Mathematical notation
| Zsye = Emoji
| Zsym = Symbol
| Zinh | Zxxx | Zyyy | Zzzz = ISO 15924#Special codes
| #default = {{{default|Writing system}}}
}}}}<!--
--><noinclude>{{documentation}}</noinclude>
ebe01f592e50f72d4a002d38d91cf91fb50dd984
Module:Citation/CS1/Configuration
828
880
1950
2023-09-25T12:02:29Z
wikipedia>Trappist the monk
0
bump s2cid;
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates
--[[--------------------------< S E T T I N G S >--------------------------------------------------------------
boolean settings used to control various things. these setting located here to make them easy to find
]]
-- these settings local to this module only
local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki
local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki;
-- manual translation required else; ; always false at en.wiki
-- these settings exported to other modules
local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki
local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces identifiers for namespaces that will not be included in citation error categories.
Same as setting notracking = true by default.
For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered
list of namespace names and their associated identifiers:
{{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}}
]]
uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id
for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids
uncategorized_namespaces_t[k] = true;
end
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Archived from $1 on $2',
['archived-live'] = '$1 from the original on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1 ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['mismatch'] = '<code class="cs1-code">|$1=</code> / <code class="cs1-code">|$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Retrieved $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Translated by $1',
['type'] = ' ($1)', -- for titletype
['written'] = 'Written at $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2, no. $3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
['issue'] = '$1 No. $2', -- $1 is sepc
['art'] = '$1 Art. $2', -- $1 is sepc; for {{cite conference}} only
['vol-art'] = '$1 Vol. $2, art. $3', -- sepc, volume, article-number; for {{cite conference}} only
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['j-article-num'] = ' $1', -- TODO: any punctuation here? static text?
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 p. $2", -- $1 is sepc
['pp-prefix'] = "$1 pp. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = 'minutes in',
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- categories
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
}
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preview mode.
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.
]]
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
['arxiv'] = 'arXiv',
['audio-visual'] = 'AV media',
['AV-media-notes'] = 'AV media notes',
['biorxiv'] = 'bioRxiv',
['citeseerx'] = 'CiteSeerX',
['encyclopaedia'] = 'encyclopedia',
['mailinglist'] = 'mailing list',
['medrxiv'] = 'medRxiv',
['pressrelease'] = 'press release',
['ssrn'] = 'SSRN',
['techreport'] = 'tech report',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< P R E S E N T A T I O N >------------------------
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
]]
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc
['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored)
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items
['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >---------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ArticleNumber'] = 'article-number',
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifier
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = 'conference-format',
['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = 'edition',
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['Inset'] = 'inset',
['Issue'] = {'issue', 'number'},
['Language'] = {'language', 'lang'},
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = 'name-list-style',
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry',
'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper',
'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = 'time-caption',
['Title'] = 'title', -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = {'title-note', 'department'},
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution',
'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper',
'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given",
"subject-first#", "subject#-first", "subject-given#", "subject#-given",
"given#"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname",
"subject-last#", "subject#-last", "subject-surname#", "subject#-surname",
"author#", 'host#', "subject#", "surname#"},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#",
"subject#-link", "authorlink#", "author#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first',
'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last',
'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#",
"editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link"},
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first',
'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last',
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first',
'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last',
'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< P U N C T _ S K I P >---------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
}
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
}
local function build_skip_table (skip_t, meta_params)
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
skip_t[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
skip_t[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
skip_t[param] = 1; -- add param name without enumerator marker
end
end
end
end
return skip_t;
end
local punct_skip = {};
local url_skip = {};
--[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >----------
this is a list of tlds that are known to have single-letter second-level domain names. This list does not include
ccTLDs which are accepted in is_domain_name().
]]
local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'};
--[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------
This table is primarily here to support internationalization. Translations in
this table are used, for example, when an error message, category name, etc.,
is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
local special_case_translation = {
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots or reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
-- generic titles and patterns in this table should be lowercase only
-- leave ['local'] nil except when there is a matching generic title in your language
-- boolean 'true' for plain-text searches; 'false' for pattern searches
['generic_titles'] = {
['accept'] = {
},
['reject'] = {
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains.com', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'subscribe to read', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', false}, ['local'] = nil},
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
{['en'] = {'log into facebook', true}, ['local'] = nil},
{['en'] = {'login • instagram', true}, ['local'] = nil},
{['en'] = {'redirecting...', true}, ['local'] = nil},
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
{['en'] = {'webcite query result', true}, ['local'] = nil},
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
}
},
-- boolean 'true' for plain-text searches, search string must be lowercase only
-- boolean 'false' for pattern searches
-- leave ['local'] nil except when there is a matching generic name in your language
['generic_names'] = {
['accept'] = {
{['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil},
},
['reject'] = {
{['en'] = {'about us', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil},
{['en'] = {'allmusic', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil},
{['en'] = {'business', true}, ['local'] = nil},
{['en'] = {'cnn', true}, ['local'] = nil},
{['en'] = {'collaborator', true}, ['local'] = nil},
{['en'] = {'contributor', true}, ['local'] = nil},
{['en'] = {'contact us', true}, ['local'] = nil},
{['en'] = {'directory', true}, ['local'] = nil},
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil},
{['en'] = {'facebook', true}, ['local'] = nil},
{['en'] = {'google', true}, ['local'] = nil},
{['en'] = {'home page', true}, ['local'] = nil},
{['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil},
{['en'] = {'instagram', true}, ['local'] = nil},
{['en'] = {'interviewer', true}, ['local'] = nil},
{['en'] = {'linkedIn', true}, ['local'] = nil},
{['en'] = {'^[Nn]ews$', false}, ['local'] = nil},
{['en'] = {'pinterest', true}, ['local'] = nil},
{['en'] = {'policy', true}, ['local'] = nil},
{['en'] = {'privacy', true}, ['local'] = nil},
{['en'] = {'reuters', true}, ['local'] = nil},
{['en'] = {'translator', true}, ['local'] = nil},
{['en'] = {'tumblr', true}, ['local'] = nil},
{['en'] = {'twitter', true}, ['local'] = nil},
{['en'] = {'site name', true}, ['local'] = nil},
{['en'] = {'statement', true}, ['local'] = nil},
{['en'] = {'submitted', true}, ['local'] = nil},
{['en'] = {'super.?user', false}, ['local'] = nil},
{['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil},
{['en'] = {'verfasser', true}, ['local'] = nil},
}
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names.
The code in Date_validation will look first in the local table for valid date names.
If date names are not found in the local table, the code will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is
required when the date-name translation function date_name_xlate() is used.
In these tables, season numbering is defined by
Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard
defines various divisions using numbers 21-41. CS1|2 only supports generic seasons.
EDTF does support the distinction between north and south hemisphere seasons
but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) range of uses for a while.
local_date_names_from_mediawiki is a boolean. When set to:
true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short']
false – module will *not* fetch local month names from MediaWiki
Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test
the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted):
=mw.dumpObject (p.date_names['local'])
While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names
from MediaWiki. Those must be translated manually.
]]
local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short']
-- when true, module fetches long and short month names from MediaWiki
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
-- when local_date_names_from_mediawiki = false
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc.
['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc.
['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled
local long_t = {};
local short_t = {};
for i=1, 12 do -- loop 12x and
local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i
long_t[name] = i; -- save it
name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i
short_t[name] = i; -- save it
end
date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation
date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation
end
-- create inverted date-name tables for reformatting and/or translation
for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do
for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i
date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
end
if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled
local digits_t = {};
for i=0, 9 do -- loop 10x and
digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value
end
date_names['local_digits'] = digits_t;
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local title_object = mw.title.getCurrentTitle();
local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used
if 10 ~= title_object.namespace then -- all namespaces except Template
content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
end
local function get_date_format ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
local use_dates_template = content:match ('%b{}', start); -- get the whole template
if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df; -- TODO: add this to <global_cs1_config_t>?
--[[-----------------< V O L U M E , I S S U E , P A G E S >------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[
These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter
names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1
templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must
not support |volume=.
]]
local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used
'website', 'mailinglist', 'script-website',
}
local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used
'journal', 'magazine', 'newspaper', 'periodical', 'work',
'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work',
}
--[[
Patterns for finding extra text in |volume=, |issue=, |page=, |pages=
]]
local vol_iss_pg_patterns = {
good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not
bad_ppatterns = { -- patterns for |page= and |pages=
'^[Pp][PpGg]?%.?[ %d]',
'^[Pp][Pp]?%. ', -- from {{p.}} and {{pp.}} templates
'^[Pp]ages?',
'^[Pp]gs.?',
},
vpatterns = { -- patterns for |volume=
'^volumes?',
'^vols?[%.:=]?'
},
ipatterns = { -- patterns for |issue=
'^issues?',
'^iss[%.:=]?',
'^numbers?',
'^nos?%A', -- don't match 'november' or 'nostradamus'
'^nr[%.:=]?',
'^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here)
}
}
--[[--------------------------< K E Y W O R D S >-------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[-------------------< K E Y W O R D S T A B L E >--------------------------
this is a list of keywords; each key in the list is associated with a table of
synonymous keywords possibly from different languages.
for I18N: add local-language keywords to value table; do not change the key.
For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis,
it is recommended that the English keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[------------------------< X L A T E _ K E Y W O R D S >---------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[----------------< M A K E _ K E Y W O R D S _ L I S T >---------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[----------------< K E Y W O R D S _ L I S T S >-----------------------------
this is a list of lists of valid keywords for the various parameters in [key].
Generally the keys in this table are the canonical en.wiki parameter names though
some are contrived because of use in multiple differently named parameters:
['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the
appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the
parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< C S 1 _ C O N F I G _ G E T >--------------------------------------------------
fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t>
no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked.
Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors,
DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters
accept numeric values only (|display-authors=etal and the like is not supported).
]]
local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table?
local function get_cs1_config ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else
if start then
local cs1_config_template = content:match ('%b{}', start); -- get the whole template
if not cs1_config_template then
return nil;
end
local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe)
table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair
local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'};
local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here
for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents
if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence,
for _, param in ipairs (aliases[meta_param]) do -- extract its contents
meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t>
end
else
meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t>
end
end
local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters
for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs
for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords
keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map
end
end
for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t>
local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value
if k then
if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters
if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal'
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table
end
else
if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table
end
end
end
end
end
end
get_cs1_config (); -- fill <global_cs1_config_t>
--[[---------------------< S T R I P M A R K E R S >----------------------------
Common pattern definition location for stripmarkers so that we don't have to go
hunting for them if (when) MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[------------< I N V I S I B L E _ C H A R A C T E R S >---------------------
This table holds non-printing or invisible characters indexed either by name or
by Unicode group. Values are decimal representations of UTF-8 codes. The table
is organized as a table of tables because the Lua pairs keyword returns table
data in an arbitrary order. Here, we want to process the table from top to bottom
because the entries at the top of the table are also found in the ranges specified
by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the
delete characters. The nowiki stripmarker is not an error but some others are
because the parameter values that include them become part of the template's
metadata before stripmarker replacement.
]]
local invisible_defs = {
del = '\127', -- used to distinguish between stripmarker and del char
zwj = '\226\128\141', -- used with capture because zwj may be allowed
}
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj
characters must be left in. This pattern covers all of the unicode characters
for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
-- list of emoji that use a zwj character (U+200D) to combine with another emoji
-- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06
-- table created by: [[:en:Module:Make emoji zwj table]]
local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx
[9760] = true, -- U+2620 ☠ skull and crossbones
[9792] = true, -- U+2640 ♀ female sign
[9794] = true, -- U+2642 ♂ male sign
[9877] = true, -- U+2695 ⚕ staff of aesculapius
[9878] = true, -- U+2696 ⚖ scales
[9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign
[9992] = true, -- U+2708 ✈ airplane
[10052] = true, -- U+2744 ❄ snowflake
[10084] = true, -- U+2764 ❤ heavy black heart
[11035] = true, -- U+2B1B ⬛ black large square
[127752] = true, -- U+1F308 🌈 rainbow
[127787] = true, -- U+1F32B 🌫 fog
[127806] = true, -- U+1F33E 🌾 ear of rice
[127859] = true, -- U+1F373 🍳 cooking
[127868] = true, -- U+1F37C 🍼 baby bottle
[127876] = true, -- U+1F384 🎄 christmas tree
[127891] = true, -- U+1F393 🎓 graduation cap
[127908] = true, -- U+1F3A4 🎤 microphone
[127912] = true, -- U+1F3A8 🎨 artist palette
[127979] = true, -- U+1F3EB 🏫 school
[127981] = true, -- U+1F3ED 🏭 factory
[128102] = true, -- U+1F466 👦 boy
[128103] = true, -- U+1F467 👧 girl
[128104] = true, -- U+1F468 👨 man
[128105] = true, -- U+1F469 👩 woman
[128139] = true, -- U+1F48B 💋 kiss mark
[128168] = true, -- U+1F4A8 💨 dash symbol
[128171] = true, -- U+1F4AB 💫 dizzy symbol
[128187] = true, -- U+1F4BB 💻 personal computer
[128188] = true, -- U+1F4BC 💼 brief case
[128293] = true, -- U+1F525 🔥 fire
[128295] = true, -- U+1F527 🔧 wrench
[128300] = true, -- U+1F52C 🔬 microscope
[128488] = true, -- U+1F5E8 🗨 left speech bubble
[128640] = true, -- U+1F680 🚀 rocket
[128658] = true, -- U+1F692 🚒 fire engine
[129309] = true, -- U+1F91D 🤝 handshake
[129455] = true, -- U+1F9AF 🦯 probing cane
[129456] = true, -- U+1F9B0 🦰 emoji component red hair
[129457] = true, -- U+1F9B1 🦱 emoji component curly hair
[129458] = true, -- U+1F9B2 🦲 emoji component bald
[129459] = true, -- U+1F9B3 🦳 emoji component white hair
[129466] = true, -- U+1F9BA 🦺 safety vest
[129468] = true, -- U+1F9BC 🦼 motorized wheelchair
[129469] = true, -- U+1F9BD 🦽 manual wheelchair
[129489] = true, -- U+1F9D1 🧑 adult
[129657] = true, -- U+1FA79 🩹 adhesive bandage
[129778] = true, -- U+1FAF2 🫲 leftwards hand
}
--[[----------------------< L A N G U A G E S U P P O R T >-------------------
These tables and constants support various language-specific functionality.
]]
--local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead
end
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests
local mw_languages_by_name_t = {};
for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language=
v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>]
if mw_languages_by_name_t[v] then -- when name already in the table
if 2 == #k or 3 == #k then -- if tag does not have subtags
mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name
end
else -- here when name not in the table
mw_languages_by_name_t[v] = k; -- so add name and matching tag
end
end
local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local)
if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
--[[--------------------< S C R I P T _ L A N G _ C O D E S >-------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character
language codes that apply only to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he',
'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn',
'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta',
'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh'
};
--[[---------------< L A N G U A G E R E M A P P I N G >----------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{}
lang_tag_remap{}:
key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with <tag>
only one language name per <tag>;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{})
may have multiple keys referring to a common preferred name and tag; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['fkv'] = 'Kven', -- MediaWiki returns Kvensk
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
}
--[[---------------< P R O P E R T I E S _ C A T E G O R I E S >----------------
Properties categories. These are used for investigating qualities of citations.
]]
local prop_cats = {
['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location-test'] = 'CS1 location test',
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[-------------------< T I T L E _ T Y P E S >--------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['document'] = 'Document',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['speech'] = 'Speech',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[===================<< E R R O R M E S S A G I N G >>======================
]]
--[[----------< E R R O R M E S S A G E S U P P L I M E N T S >-------------
I18N for those messages that are supplemented with additional specific text that
describes the reason for the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['invalid language code'] = 'invalid language code', -- |script-<param>=
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['missing prefix'] = 'missing prefix', -- |script-<param>=
['missing title part'] = 'missing title part', -- |script-<param>=
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['unknown language code'] = 'unknown language code', -- |script-<param>=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------< E R R O R _ C O N D I T I O N S >---------------------------
Error condition table. This table has two sections: errors at the top, maintenance
at the bottom. Maint 'messaging' does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the
code. For each ID, we specify a text message to display, an error category to
include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error
and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'CS1 errors: access-date without URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_date_missing_url = {
message = '<code class="cs1-code">|archive-date=</code> requires <code class="cs1-code">|archive-url=</code>',
anchor = 'archive_date_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_date_url_ts_mismatch = {
message = '<code class="cs1-code">|archive-date=</code> / <code class="cs1-code">|archive-url=</code> timestamp mismatch',
anchor = 'archive_date_url_ts_mismatch',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_asintld_missing_asin = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|asin=</code>', -- $1 is parameter name
anchor = 'asintld_missing_asin',
category = 'CS1 errors: ASIN TLD',
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_asin_tld = {
message = 'Check <code class="cs1-code">|asin-tld=</code> value',
anchor = 'bad_asin_tld',
category ='CS1 errors: ASIN TLD',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
message = 'Check date values in: $1', -- $1 is a parameter name list
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_jstor = {
message = 'Check <code class="cs1-code">|jstor=</code> value',
anchor = 'bad_jstor',
category = 'CS1 errors: JSTOR',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_medrxiv = {
message = 'Check <code class="cs1-code">|medrxiv=</code> value',
anchor = 'bad_medrxiv',
category = 'CS1 errors: medRxiv',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_osti = {
message = 'Check <code class="cs1-code">|osti=</code> value',
anchor = 'bad_osti',
category = 'CS1 errors: OSTI',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_rfc = {
message = 'Check <code class="cs1-code">|rfc=</code> value',
anchor = 'bad_rfc',
category = 'CS1 errors: RFC',
hidden = false
},
err_bad_s2cid = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'CS1 errors: URL',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: Zbl',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'CS1 errors: bare URL',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'CS1 errors: missing title',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'CS1 errors: requires URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name; $2 is the assigned value
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_embargo_missing_pmc = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|pmc=</code>', -- $1 is parameter name
anchor = 'embargo_missing_pmc',
category = 'CS1 errors: PMC embargo',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'CS1 errors: empty citation',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_extra_text_edition = {
message = '<code class="cs1-code">|edition=</code> has extra text',
anchor = 'extra_text_edition',
category = 'CS1 errors: extra text: edition',
hidden = false,
},
err_extra_text_issue = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_issue',
category = 'CS1 errors: extra text: issue',
hidden = false,
},
err_extra_text_pages = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_pages',
category = 'CS1 errors: extra text: pages',
hidden = false,
},
err_extra_text_volume = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_volume',
category = 'CS1 errors: extra text: volume',
hidden = true,
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'CS1 errors: format without URL',
hidden = false
},
err_generic_name = {
message = '<code class="cs1-code">|$1=</code> has generic name', -- $1 is parameter name
anchor = 'generic_name',
category = 'CS1 errors: generic name',
hidden = false,
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_medrxiv_missing = {
message = '<code class="cs1-code">|medrxiv=</code> required',
anchor = 'medrxiv_missing',
category = 'CS1 errors: medRxiv', -- same as bad medRxiv
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = true
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_missing_publisher = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1
anchor = 'missing_publisher',
category = 'CS1 errors: missing publisher',
hidden = false
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_periodical_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'periodical_ignored',
category = 'CS1 errors: periodical ignored',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'CS1 errors: redundant parameter',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: SSRN',
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'CS1 errors: unrecognized parameter',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = false
},
err_vancouver = {
message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >-------------------------------------
maint messages do not have a message (message = nil); otherwise the structure
is the same as error messages
]]
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_authors = {
message = nil,
anchor = 'authors',
category = 'CS1 maint: uses authors parameter',
hidden = true,
},
maint_bibcode = {
message = nil,
anchor = 'bibcode',
category = 'CS1 maint: bibcode',
hidden = true,
},
maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite
message = nil,
anchor = 'location_no_publisher',
category = 'CS1 maint: location missing publisher',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: bot: original URL status unknown',
hidden = true,
},
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
message = nil,
anchor = 'date_auto_xlated',
category = 'CS1 maint: date auto-translated',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI inactive',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_others_avm = {
message = nil,
anchor = 'others_avm',
category = 'CS1 maint: others in cite AV media (notes)',
hidden = true,
},
maint_overridden_setting = {
message = nil,
anchor = 'overridden',
category = 'CS1 maint: overridden setting',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_postscript = {
message = nil,
anchor = 'postscript',
category = 'CS1 maint: postscript',
hidden = true,
},
maint_ref_duplicates_default = {
message = nil,
anchor = 'ref_default',
category = 'CS1 maint: ref duplicates default',
hidden = true,
},
maint_unfit = {
message = nil,
anchor = 'unfit',
category = 'CS1 maint: unfit URL',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: unrecognized language',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_url_status = {
message = nil,
anchor = 'url_status',
category = 'CS1 maint: url-status',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: Zbl',
hidden = true,
},
}
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each
identifier we specify a variety of information necessary to properly render the
identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: Wikidata q number for the identifier
label: the label preceding the identifier; label is linked to a Wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if URI should be percent-encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for |asin= and |ol=, which require assembly, use the keyword: url
for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
prefix = 'https://arxiv.org/abs/',
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
prefix = 'https://www.amazon.',
COinS = 'url',
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
prefix = 'https://doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
prefix = 'https://doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International Standard Serial Number#Electronic ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
prefix = 'https://hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
prefix = '', -- not currently used;
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
prefix = 'https://www.jstor.org/stable/',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
prefix = 'https://lccn.loc.gov/',
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MEDRXIV'] = {
parameters = {'medrxiv'},
link = 'medRxiv',
redirect = 'medRxiv (identifier)',
q = 'Q58465838',
label = 'medRxiv',
prefix = 'https://www.medrxiv.org/content/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
prefix = 'https://www.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
id_limit = 10005000000,
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
prefix = 'https://openlibrary.org/',
COinS = 'url',
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
prefix = 'https://www.osti.gov/biblio/',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 23010000,
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = '',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 10700000,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = 'Q2082879',
label = 'PMID',
prefix = 'https://pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = 37900000,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
prefix = 'https://tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 9300,
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 4600000,
custom_access = 'ssrn-access',
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 264000000,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >---------------------------------
]]
return {
use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module
local_lang_cat_enable = local_lang_cat_enable,
date_name_auto_xlate_enable = date_name_auto_xlate_enable,
date_digit_auto_xlate_enable = date_digit_auto_xlate_enable,
-- tables and variables created when this module is loaded
global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format.
global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}}
punct_skip = build_skip_table (punct_skip, punct_meta_params),
url_skip = build_skip_table (url_skip, url_meta_params),
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers = stripmarkers,
invisible_chars = invisible_chars,
invisible_defs = invisible_defs,
indic_script = indic_script,
emoji_t = emoji_t,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
script_lang_codes = script_lang_codes,
lang_tag_remap = lang_tag_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces_t,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
vol_iss_pg_patterns = vol_iss_pg_patterns,
single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t,
inter_wiki_map = inter_wiki_map,
mw_languages_by_tag_t = mw_languages_by_tag_t,
mw_languages_by_name_t = mw_languages_by_name_t,
citation_class_map_t = citation_class_map_t,
citation_issue_t = citation_issue_t,
citation_no_volume_t = citation_no_volume_t,
}
46fa8aad81f28bb571f448d36acfddc95d791bf5
Template:ISO 15924 script codes and related Unicode data
10
1628
2963
2023-09-26T02:58:22Z
w>Drmccreedy
0
Update for 2023-09-12 update of ISO 15924
wikitext
text/x-wiki
{{ISO 15924 script codes and related Unicode data/header |state={{{state|mw-uncollapsed}}} }}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Adlm|version=9.0 |chars=88 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Afak|direction=varies|version= |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed">{{Cite web | title=SEI List of Scripts Not Yet Encoded | url=https://linguistics.berkeley.edu/sei/scripts-not-encoded.html | publisher=[[Unicode Consortium]] | date=March 2023 | access-date=2023-09-25}}</ref>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Aghb|version=7.0 |chars=53 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ahom|version=8.0 |chars=65 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Arab|version=1.0 |chars=1,368 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Aran |direction=mixed |version= |chars= |note=|unicode-status=Typographic variant of Arabic (see {{slink||Arab}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Armi|version=5.2 |chars=31 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Armn|version=1.0 |chars=96 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Avst|version=5.2 |chars=61 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bali|version=5.0 |chars=124 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bamu|version=5.2 |chars=657 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bass|version=7.0 |chars=36 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Batk|version=6.0 |chars=56 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Beng|version=1.0 |chars=96 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bhks|version=9.0 |chars=97 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Blis|version= |direction= varies|chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bopo|version=1.0 |chars=77 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Brah|version=6.0 |chars=115 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Brai|version=3.0 |chars=256 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Bugi|version=4.1 |chars=30 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Buhd|version=3.2 |chars=20 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cakm|version=6.1 |chars=71 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cans|version=3.0 |chars=726 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cari|version=5.1 |chars=49 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cham|version=5.1 |chars=83 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cher|version=3.0 |chars=172 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Chis|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature">{{Cite web | title=Unicode Pipeline § Code Points Provisionally Assigned for Mature Proposals | url=https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation | publisher=Unicode Consortium | date=2023-09-12 | access-date=2023-09-25}}</ref>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Chrs|version=13.0 |chars=28 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cirt|version= |direction= varies|chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Copt|version=1.0 |chars=137 |note=Ancient/historic, disunified from Greek in 4.1}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cpmn|version=14.0 |direction= left-to-right |chars=99 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cprt|version=4.0 |chars=55 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cyrl|version=1.0 |chars=506 |note=Includes typographic variant Old Church Slavonic (see {{slink||Cyrs)}}}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Cyrs|version= |direction=varies |chars= |note=Ancient/historic|unicode-status=Typographic variant of Cyrillic (see {{slink||Cyrl}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Deva|version=1.0 |chars=164 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Diak|version=13.0 |chars=72 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Dogr|version=11.0 |chars=60 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Dsrt|version=3.1 |chars=80 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Dupl|version=7.0 |chars=143 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Egyd|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Egyh|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Egyp|version=5.2 |chars=1,110 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Elba|version=7.0 |chars=40 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Elym|version=12.0 |chars=23 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ethi|version=3.0 |chars=523 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gara|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16">{{Cite web | title=Unicode Pipeline § Approved for Publication in Version 16.0 | url=https://www.unicode.org/alloc/Pipeline.html#v16_0 | publisher=Unicode Consortium | date=2023-09-12 | access-date=2023-09-25}}</ref>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Geok|version= |chars= |note=Unicode groups Khutsori, Asomtavruli and Nuskhuri into 'Georgian' (see {{slink||Geok}}). Similarly, Mkhedruli and Mtavruli are 'Georgian' (see {{slink||Geor}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Geor|version=1.0 |chars=173 |note=In Unicode this also includes Nuskhuri ({{mono|1=Geok}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Glag|version=4.1 |chars=134 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gong|version=11.0 |chars=63 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gonm|version=10.0 |chars=75 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Goth|version=3.1 |chars=27 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gran|version=7.0 |chars=85 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Grek|version=1.0 |chars=518 |note=Directionality sometimes as [[boustrophedon]]}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gujr|version=1.0 |chars=91 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Gukh|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Guru|version=1.0 |chars=80 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hanb|version= |direction=mixed |chars= |unicode-status=See {{slink||Hani}}, {{slink||Bopo}} |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hang|version=1.0 |chars=11,739 |note=Hangul syllables relocated in 2.0}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hani|version=1.0 |direction=top-to-bottom, columns right-to-left (historically) |chars=99,030 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hano|version=3.2 |chars=21 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hans|version= |direction=varies |chars= |unicode-status=Subset of Han (Hanzi, Kanji, Hanja) (see {{slink||Hani}}) |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hant |direction=varies|version= |chars= |unicode-status=Subset of {{slink || Hani}} |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hatr|version=8.0 |chars=26 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hebr|version=1.0 |chars=134 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hira|version=1.0 |chars=381 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hluw|version=8.0 |chars=583 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hmng|version=7.0 |chars=127 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hmnp|version=12.0 |chars=71 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hrkt|version= |chars= |note=See {{slink||Hira}}, {{slink||Kana}}}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Hung|version=8.0 |chars=108 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Inds|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ital|version=3.1 |chars=39 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Jamo|version= |direction=varies |chars= |unicode-status=Subset of {{slink||Hang}} |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Java|version=5.2 |chars=90 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Jpan|version= |direction=varies |chars= |unicode-status=See {{slink||Hani}}, {{slink||Hira}} and {{slink||Kana}} |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Jurc|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kali|version=5.1 |chars=47 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kana|version=1.0 |chars=321 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kawi|version=15.0 |chars=86 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Khar|version=4.1 |chars=68 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Khmr|version=3.0 |chars=146 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Khoj|version=7.0 |chars=65 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kitl|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kits|version=13.0 |chars=471 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Knda|version=1.0 |chars=91 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kore|version= |direction=left-to-right |chars= |unicode-status=See {{slink||Hani}}, {{slink||Hang}} |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kpel|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Krai|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Kthi|version=5.2 |chars=68 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lana|version=5.2 |chars=127 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Laoo|version=1.0 |chars=83 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Latf|version= |direction=varies |chars= |note=|unicode-status=Typographic variant of Latin (see {{slink||Latn}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Latg|version= |direction=left-to-right |chars= |note=|unicode-status=Typographic variant of Latin (see {{slink||Latn}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Latn|version=1.0 |chars=1,481 |note=See also: [[Latin script in Unicode]]}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Leke|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lepc|version=5.1 |chars=74 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Limb|version=4.0 |chars=68 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lina|version=7.0 |chars=341 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Linb|version=4.0 |chars=211 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lisu|version=5.2 |chars=49 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Loma|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lyci|version=5.1 |chars=29 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Lydi|version=5.1 |chars=27 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mahj|version=7.0 |chars=39 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Maka|version=11.0 |chars=25 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mand|version=6.0 |chars=29 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mani|version=7.0 |chars=51 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Marc|version=9.0 |chars=68 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Maya|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Medf|version=11.0 |chars=91 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mend|version=7.0 |chars=213 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Merc|version=6.1 |chars=90 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mero|version=6.1 |chars=32 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mlym|version=1.0 |chars=118 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Modi|version=7.0 |chars=79 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mong|version=3.0 |chars=168 |note={{mono|Mong}} includes [[Clear Script|Clear]] and [[Manchu alphabet|Manchu]] scripts}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Moon|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mroo|version=7.0 |chars=43 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mtei|version=5.2 |chars=79 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mult|version=8.0 |chars=38 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Mymr|version=3.0 |chars=223 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nagm|version=15.0 |chars=42 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nand|version=12.0 |chars=65 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Narb|version=7.0 |chars=32 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nbat|version=7.0 |chars=40 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Newa|version=9.0 |chars=97 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nkdb|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nkgb|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nkoo|version=5.0 |chars=62 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Nshu|version=10.0 |chars=397 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ogam|version=3.0 |chars=29 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Olck|version=5.1 |chars=48 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Onao|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Orkh|version=5.2 |chars=73 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Orya|version=1.0 |chars=91 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Osge|version=9.0 |chars=72 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Osma|version=4.0 |chars=40 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ougr|version=14.0 |direction=mixed |chars=26 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Palm|version=7.0 |chars=32 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Pauc|version=7.0 |chars=57 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Pcun|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Pelm|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Perm|version=7.0 |chars=43 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Phag|version=5.0 |chars=56 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Phli|version=5.2 |chars=27 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Phlp|version=7.0 |chars=29 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Phlv|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Phnx|version=5.0 |chars=29 |note=Ancient/historic{{cref2|group=Scripts|g}} }}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Piqd|version= |chars=
|unicode-status= Rejected for inclusion in Unicode<ref group="lower-roman">{{cite web |url=http://std.dkuug.dk/jtc1/sc2/wg2/docs/n1643/n1643.htm | title=Proposal to encode Klingon in Plane 1 of ISO/IEC 10646-2 | date=1997-09-18 | author=Michael Everson}}</ref><!--
--><ref group="lower-roman">{{cite web | url=https://www.unicode.org/consortium/utc-minutes/UTC-087-200105.html | title=Approved Minutes of the UTC 87 / L2 184 Joint Meeting | date=2001-08-14 | author=The Unicode Consortium}}</ref> |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Plrd|version=6.1 |chars=149 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Prti|version=5.2 |chars=30 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Psin|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Qaaa-Qabx|version= |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ranj|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Rjng|version=5.1 |chars=37 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Rohg|version=11.0 |chars=50 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Roro|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Runr|version=3.0 |chars=86 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Samr|version=5.2 |chars=61 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sara|version= |direction=mixed |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sarb|version=5.2 |chars=32 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Saur|version=5.1 |chars=82 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sgnw|version=8.0 |chars=672 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Shaw|version=4.0 |chars=48 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Shrd|version=6.1 |chars=96 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Shui|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sidd|version=7.0 |chars=92 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sidt|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sind|version=7.0 |chars=69 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sinh|version=3.0 |chars=111 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sogd|version=11.0 |chars=42 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sogo|version=11.0 |chars=40 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sora|version=6.1 |chars=35 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Soyo|version=10.0 |chars=83 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sund|version=5.1 |chars=72 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sunu|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Sylo|version=4.1 |chars=45 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Syrc|version=3.0 |chars=88 |note=Includes typographic variants Estrangelo (see {{slink||Syre}}), Western ({{slink||Syrj}}), and Eastern ({{slink||Syrn}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Syre|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Syrj|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Syrn|version= |direction=mixed |chars= |note=|unicode-status=Typographic variant of Syriac (see {{slink||Syrc}})}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tagb|version=3.2 |chars=18 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Takr|version=6.1 |chars=68 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tale|version=4.0 |chars=35 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Talu|version=4.1 |chars=83 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Taml|version=1.0 |chars=123 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tang|version=9.0 |chars=6,914 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tavt|version=5.2 |chars=72 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tayo|version= |direction=top-to-bottom, columns right-to-left |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Telu|version=1.0 |chars=100 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Teng|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tfng|version=4.1 |chars=59 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tglg|version=3.2 |chars=23 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Thaa|version=3.0 |chars=50 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Thai|version=1.0 |chars=86 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tibt|version=2.0 |chars=207 |note=Added in 1.0, removed in 1.1 and reintroduced in 2.0}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tirh|version=7.0 |chars=82 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tnsa|version=14.0 |direction=left-to-right |chars=89 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Todr|version= |direction=right-to-left |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tols|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, proposal is mature<ref group="lower-roman" name="pipeline_mature"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Toto|version=14.0 |direction=left-to-right |chars=31 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Tutg|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode, approved for version 16.0<ref group="lower-roman" name="pipeline_v16"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Ugar|version=4.0 |chars=31 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Vaii|version=5.1 |chars=300 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Visp|version= |direction=left-to-right |chars= |unicode-status=Not in Unicode}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Vith|version=14.0 |direction= left-to-right |chars=70 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Wara|version=7.0 |chars=84 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Wcho|version=12.0 |chars=59 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Wole|version= |direction=mixed |chars= |unicode-status=Not in Unicode, proposal is explored<ref group="lower-roman" name="uniproposed"/>}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Xpeo|version=4.1 |chars=50 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Xsux|version=5.0 |chars=1,234 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Yezi|version=13.0 |chars=47 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Yiii|version=3.0 |chars=1,220 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zanb|version=10.0 |chars=72 |note=Ancient/historic}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zinh|version= |chars=657 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zmth|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zsym|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zsye|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zxxx|version= |chars= |unicode-status=Not a 'script' in Unicode|note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zyyy|version= |chars=8,306 |note=}}
{{ISO 15924 script codes and related Unicode data/row|alpha4=Zzzz|version= |chars=964,234 |note=In Unicode: ''All other code points''}}
|- class="sortbottom"
| colspan="8" | '''Notes'''
{{cnote2 begin | liststyle=lower-alpha}}
{{cnote2 | a | group=ISO_Unicode | [https://unicode.org/iso15924/codelists.html ISO 15924 publications] {{As of|2023|09|12}}}}
{{cnote2 | b | group=ISO_list | [https://unicode.org/iso15924/iso15924-text.html ISO 15924 Normative text file] {{As of|2023|09|12}}}}
{{cnote2 | c | group=ISO_changes | [https://www.unicode.org/iso15924/codechanges.html ISO 15924 Changes] (including Aliases for Unicode; {{As of|2023|09|12|lc=y}})}}
{{cnote2 | d | group=Asof_Unicode_version | Unicode version {{Unicode version|version=15.1}}}}
{{cnote2 | e | group=Unicode_charts | [https://www.unicode.org/charts/ Unicode charts]}}
{{cnote2 | f | group=Aliases_for_Unicode | Unicode uses the "Property Value Alias" (Alias) as the script-name. These Alias names are part of Unicode and are published informatively next to ISO 15924. An alias script name may be used in a character name: <code>Palm</code>, Palmyrene → {{unichar|1=10860|2=PALMYRENE LETTER ALEPH}}.}}
{{cnote2 | g | group=Scripts | In Unicode, the Phoenician script is intended for the representation of text in [[Paleo-Hebrew alphabet|Paleo-Hebrew]], Archaic Phoenician, [[Phoenician language|Phoenician]], [[Aramaic alphabet|Early Aramaic]], Late Phoenician cursive, Phoenician papyri, [[Siloam inscription|Siloam Hebrew]], [[LMLK seal|Hebrew seals]], [[Ammonite language|Ammonite]], [[Moabite language|Moabite]], and [[Punic language|Punic]].<ref group="lower-roman">{{cite web|url=https://www.unicode.org/versions/Unicode15.0.0/ch10.pdf|title=Middle East-II, Ancient Scripts|publisher=The Unicode Consortium|version=15.0.0|access-date=2023-09-25}}</ref>}}
{{cnote2 end}}
|- class="sortbottom"
| colspan="8" | '''References'''
{{reflist|group=lower-roman}}
|}<noinclude>
{{Documentation}}
</noinclude>
aa54cd9a8f18294808e1064d4d15d48d67298be5
Template:Efn/doc
10
588
1324
2023-09-26T20:33:27Z
wikipedia>Jonesey95
0
Reverted 1 edit by [[Special:Contributions/223.24.153.147|223.24.153.147]] ([[User talk:223.24.153.147|talk]]) to last revision by Mirokado
wikitext
text/x-wiki
{{Documentation subpage}}
{{Transwiki guide |small=yes |text=See [[Template:Reflist/Transwiki guide|'''this information''']] on copying this template and modifying it for use on another wiki.}}
<!-- Categories and interwikis go at the bottom of this page. -->
{{High-use}}
'''Explanatory footnotes''' or '''Efn''' are footnotes which provide something other than, or more than, a reference to a [[WP:Reliable sources|source]] that supports the accompanying text. The first unnamed parameter is displayed as the content of the footnote. Note that if the note's content contains an "=" character, a reference error will be displayed; precede the content with {{para|1}} (or one of its aliases, {{para|text}}, {{para|reference}}, or {{para|content}}) to fix the error.
The following explanation is transcluded from [[Help:Footnotes#Footnotes: predefined groups]].
{{#section:Help:footnotes|pregroup}}
==Example articles==
* [[Logic Theorist]] (a short article showing basic usage)
* [[Chinese room]] (a long and complex article which uses all the features: named footnotes, list defined notes, etc.)
* [[Empire of Brazil]]
* [[John Diefenbaker]] (with name= and notes in <nowiki>{{notes}}</nowiki>)
* [[USS Monitor|USS ''Monitor'']]
<includeonly>{{sandbox other||
<!-- Categories and interwikis go here: -->
[[Category:Explanatory footnote templates]]
[[Category:Templates that generate named references]]
}}</includeonly>
== Template data ==
Description: <templatedata>
{
"description": "Inserts an explanatory footnote. Notes can be named and grouped.",
"params": {
"1": {
"aliases": [
"reference",
"text",
"content"
],
"label": "Note",
"description": "Text of the note",
"type": "content",
"suggested": true
},
"name": {
"label": "Ref. name",
"description": "Reference name of the note",
"type": "string",
"suggested": true
},
"group": {
"label": "Reference group",
"description": "Styled group to which the note belongs",
"type": "string",
"suggested": true,
"suggestedvalues": [
"upper-alpha",
"lower-greek",
"note",
"lower-roman",
"upper-roman"
]
}
}
}
</templatedata>
425513f20ca710aa83ef00ed07b04319a3d1cef9
Template:Infobox country/doc
10
245
2551
2023-09-26T23:27:17Z
w>Nikkimaria
0
fix per mos
wikitext
text/x-wiki
{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}}
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
{{Uses TemplateStyles|Template:Infobox country/styles.css}}
This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below.
__FORCETOC__
== Syntax ==
<!---------------------- Country/territory use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|micronation = <!--yes if a micronation-->
|conventional_long_name = <!--Formal or official full name of the country in English-->
|native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)-->
|common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)-->
|status = <!--Status of country, especially useful for micronations-->
|image_flag = <!--e.g. Flag of country.svg-->
|alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)-->
|flag_border = <!--set to no to disable border around the flag-->
|image_flag2 = <!--e.g. Second-flag of country.svg-->
|alt_flag2 = <!--alt text for second flag-->
|flag2_border = <!--set to no to disable border around the flag-->
|image_coat = <!--e.g. Coat of arms of country.svg-->
|alt_coat = <!--alt text for coat of arms-->
|symbol_type = <!--emblem, seal, etc (if not a coat of arms)-->
|national_motto = <!--in inverted commas and wikilinked if link exists-->
|englishmotto = <!--English language version of motto-->
|national_anthem = <!--in inverted commas and wikilinked if link exists-->
|royal_anthem = <!--in inverted commas and wikilinked if link exists-->
|other_symbol_type = <!--Use if a further symbol exists, e.g. hymn-->
|other_symbol =
|image_map = <!--e.g. LocationCountry.svg-->
|loctext = <!--text description of location of country-->
|alt_map = <!--alt text for map-->
|map_caption = <!--Caption to place below map-->
|image_map_size = <!--Map size in number of pixels-->
|image_map2 = <!--Another map, if required-->
|alt_map2 = <!--alt text for second map-->
|map_caption2 = <!--Caption to place below second map-->
|image_map2_size = <!--Map size in number of pixels-->
|capital = <!--Name of country/territory's capital, wikilinked if link exists-->
|coordinates = <!-- Coordinates for capital, using {{tl|coord}} -->
|largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.-->
|largest_settlement_type = <!--Type of settlement if largest settlement not a city-->
|largest_settlement = <!--Name of largest settlement-->
|official_languages = <!--Languages recognised in legislation, constitution, etc-->
|national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc-->
|regional_languages = <!--Languages recognised or associated with particular regions within the country/territory-->
|languages_type = <!--Use to specify a further type of language, if not official, national or regional-->
|languages = <!--Languages of the further type-->
|languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")-->
|languages2_type = <!--Another further type of language-->
|languages2 = <!--Languages of this second further type-->
|languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")-->
|ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory-->
|ethnic_groups_year = <!--Year of ethnic groups data (if provided)-->
|ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)-->
|religion = <!--Religion-->
|religion_year = <!--Year of religion data (if provided)-->
|religion_ref = <!--(for any ref/s to associate with religion data)-->
|demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)-->
|government_type = <!--Wikilinked if link exists-->
|leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")-->
|leader_name1 =
|leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)-->
|leader_name2 =
|leader_title14 = <!--(up to 14 distinct leaders may be included)-->
|leader_name14 =
|legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc-->
|upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")-->
|lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")-->
|sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)-->
|sovereignty_note =
|established_event1 = <!--First key event in history of country/territory's status or formation-->
|established_date1 = <!--Date of first key event-->
|established_event2 = <!--Second key event-->
|established_date2 = <!--Date of second key event-->
|established_event13 = <!--(up to 13 distinct events may be included)-->
|established_date13 =
|area_rank =
|area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)-->
|area_km2 = <!--Major area size (in square km)-->
|area_sq_mi = <!--Area in square mi (requires area_km2)-->
|area_footnote = <!--Optional footnote for area-->
|percent_water =
|area_label = <!--Label under "Area" (default is "Total")-->
|area_label2 = <!--Label below area_label (optional)-->
|area_data2 = <!--Text after area_label2 (optional)-->
|population_estimate =
|population_estimate_rank =
|population_estimate_year =
|population_census =
|population_census_year =
|population_density_km2 =
|population_density_sq_mi =
|population_density_rank =
|nummembers = <!--An alternative to population for micronation-->
|GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)-->
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_PPP_per_capita_rank =
|GDP_nominal =
|GDP_nominal_rank =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|GDP_nominal_per_capita_rank =
|Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)-->
|Gini_ref = <!--(for any ref/s to associate with Gini number)-->
|Gini_rank =
|Gini_year =
|HDI_year = <!-- Please use the year to which the data refers, not the publication year-->
|HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)-->
|HDI_change = <!--increase/decrease/steady; rank change from previous year-->
|HDI_rank =
|HDI_ref = <!--(for any ref/s to associate with HDI number)-->
|currency = <!--Name/s of currency/ies used in country/territory-->
|currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)-->
|time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)-->
|utc_offset = <!--in the form "+N", where N is number of hours offset-->
|time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty-->
|utc_offset_DST = <!--in the form "+N", where N is number of hours offset-->
|DST_note = <!--Optional note regarding DST use-->
|antipodes = <!--Place/s exactly on the opposite side of the world to country/territory-->
|date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) -->
|drives_on = <!--"right" or "left" (side of road)-->
|cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)-->
|iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".-->
|calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc-->
|patron_saint = <!--Use patron_saints for multiple-->
|image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it-->
|alt_map3 = <!--alt text for third map position-->
|footnote_a = <!--For any footnote <sup>a</sup> used above-->
|footnote_b = <!--For any footnote <sup>b</sup> used above-->
|footnote_h = <!--For any footnote <sup>h</sup> used above-->
|footnotes = <!--For any generic non-numbered footnotes-->
}}
</syntaxhighlight>
{{hidden end}}
{{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)-->
Note: Now redundant.
<syntaxhighlight lang="wikitext">
|metropole =
|metropole_area =
|metropole_area_rank =
|metropole_area_magnitude =
|metropole_areami² =
|metropole_population =
|metropole_population_estimate_rank =
|foot =
|foot2 =
|foot3 =
|foot4 =
|foot5 =
</syntaxhighlight>
<!--(France-specific parameters)-->
{{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}}
{{hidden end}}
<!------------------------- Geopolitical use -------------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name = <!-- (in English) -->
|native_name = <!-- Long-form name in native or any/all non-English languages -->
|linking_name = <!-- For wikilinks, if diff from name -->
|image_flag = <!-- Flag image's filename -->
|alt_flag = <!-- alt text for flag-->
|flag_border = <!--set to no to disable border around the flag-->
|symbol_type = <!-- Symbol, Emblem, Logo, etc. -->
|image_symbol = <!-- Symbol image's filename -->
|alt_symbol = <!-- alt text for symbol -->
|symbol_width = <!-- Symbol image's width (default 85px) -->
|motto = <!-- "[motto]" -->
|englishmotto = <!--English language version of motto-->
|anthem = <!-- ''[anthem name]'' -->
|text_symbol_type = <!-- for other types of text symbol -->
|text_symbol = <!-- e.g. ''[hymn name]'' -->
|image_map = <!-- Map image's filename -->
|loctext = <!--text description of location of organization-->
|alt_map = <!-- alt text for map image -->
|map_width = <!-- Map image's width (default 250px) -->
|map_caption =
|org_type = <!-- e.g. Trade bloc -->
|membership_type = <!-- (default "Membership") -->
|membership = <!-- Type/s and/or number/s of members -->
|admin_center_type = <!-- e.g. "Administrative center" (default) -->
|admin_center = <!-- Location/s of administrative center/s -->
|languages_type = <!-- e.g. "[[Official language]]s" (default) -->
|languages =
|leader_title1 = <!-- e.g. "Chair", "President", etc. -->
|leader_name1 =
|leader_title2 = <!-- e.g. "Deputy chair", etc. -->
|leader_name2 =
|leader_title14 =
|leader_name14 =
|established = <!-- Usually a date, in lieu of event/s hereafter -->
|established_event1 =
|established_date1 =
|established_event2 =
|established_date2 =
|established_event9 =
|established_date9 =
|official_website =
|area_km2 = <!-- major area size (in sq_km) -->
|area_sq_mi = <!-- area in square mi (requires area_km2) -->
|area_footnote = <!-- optional footnote for area -->
|percent_water =
|area_label = <!-- label under "Area" (default is "Total") -->
|area_label2 = <!-- label below area_label (optional) -->
|area_dabodyalign = <!-- text after area_label2 (optional) -->
|population_estimate =
|population_estimate_year =
|population_density_km2 =
|population_density_sq_mi =
|GDP_PPP =
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_nominal =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|Gini = <!-- number only, 0-100 -->
|Gini_ref = <!-- for any ref/s to associate with Gini number -->
|Gini_year =
|HDI = <!-- number only, 0-1 -->
|HDI_ref = <!-- for any ref/s to associate with HDI number -->
|HDI_year =
|currency =
|currency_code =
|time_zone =
|utc_offset = <!-- +N, where N is number of hours -->
|footnote1 =
|footnote2 =
|footnote7 =
|footnotes = <!-- For generic non-numbered footnotes -->
}}
</syntaxhighlight>
{{hidden end}}
<!-------------------- Former country use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English.
Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. -->
|conventional_long_name = <!-- Full name in English -->
|common_name = <!-- Name to be used in constructing links and category names; not for display -->
|iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166-->
|era = <!-- Use: "Napoleonic Wars", "Cold War", etc. -->
|status = <!-- Status: see Category list on template page -->
|status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. -->
|empire = <!-- The empire or country to which the entity was in a state of dependency -->
|government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories -->
<!-- Rise and fall, events, years and dates -->
<!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" -->
|event_start = <!-- Default: "Established" -->
|date_start = <!-- Optional: Date of establishment, in format 1 January (no year) -->
|year_start = <!-- Year of establishment -->
|event_end = <!-- Default: "Disestablished" -->
|date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) -->
|year_end = <!-- Year of disestablishment -->
|year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") -->
|year_exile_end = <!-- Year of end of exile (leave blank if still in exile) -->
|event1 = <!-- Optional: other events between "start" and "end" -->
|date_event1 =
|event2 =
|date_event2 =
|event3 =
|date_event3 =
|event4 =
|date_event4 =
|event5 =
|date_event5 =
|event6 =
|date_event6 =
|event_pre = <!-- Optional: A crucial event that took place before "event_start" -->
|date_pre =
|event_post = <!-- Optional: A crucial event that took place after "event_end" -->
|date_post =
<!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 -->
|p1 = <!-- Name of the article for preceding entity, numbered 1-5 -->
|flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) -->
|image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|p2 =
|flag_p2 =
|p3 =
|flag_p3 =
|p4 =
|flag_p4 =
|p5 =
|flag_p5 =
|s1 = <!-- Name of the article for succeeding entity, numbered 1-5 -->
|flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) -->
|image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|s2 =
|flag_s2 =
|s3 =
|flag_s3 =
|s4 =
|flag_s4 =
|s5 =
|flag_s5 =
|image_flag = <!-- Default: Flag of {{{common_name}}}.svg -->
|flag_alt = <!-- Alt text for flag -->
|image_flag2 = <!-- Second flag -->
|flag_alt2 = <!-- Alt text for second flag -->
|flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} -->
|flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} -->
|flag_type = <!-- Displayed text for link under flag. Default "Flag" -->
|flag2_type = <!-- Displayed text for link under flag2. Default "Flag" -->
|image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg -->
|coa_size = <!-- Size of coat of arms -->
|coat_alt = <!-- Alt text for coat of arms -->
|symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" -->
|symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} -->
|image_map =
|image_map_size = <!--Map size in number of pixels-->
|image_map_alt =
|image_map_caption =
|image_map2 = <!-- If second map is needed; does not appear by default -->
|image_map2_size = <!--Map size in number of pixels-->
|image_map2_alt =
|image_map2_caption =
|capital =
|capital_exile = <!-- If status="Exile" -->
|national_motto =
|national_anthem =
|common_languages =
|religion =
|demonym =
|currency =
<!-- Titles and names of the first and last leaders and their deputies -->
|leader1 = <!-- Name of king or president -->
|leader2 =
|leader3 =
|leader4 =
|leader21 = <!--(up to 21 distinct leaders may be included)-->
|year_leader1 = <!-- Years served -->
|year_leader2 =
|year_leader3 =
|year_leader4 =
|year_leader21 =
|title_leader = <!-- Default: "King" for monarchy, otherwise "President" -->
|representative1 = <!-- Name of representative of head of state (e.g. colonial governor) -->
|representative2 =
|representative3 =
|representative4 =
|representative5 =
|year_representative1 = <!-- Years served -->
|year_representative2 =
|year_representative3 =
|year_representative4 =
|year_representative5 =
|title_representative = <!-- Default: "Governor" -->
|deputy1 = <!-- Name of prime minister -->
|deputy2 =
|deputy3 =
|deputy4 =
|year_deputy1 = <!-- Years served -->
|year_deputy2 =
|year_deputy3 =
|year_deputy4 =
|title_deputy = <!-- Default: "Prime minister" -->
<!-- Legislature -->
|legislature = <!-- Name of legislature -->
|house1 = <!-- Name of first chamber -->
|type_house1 = <!-- Default: "Upper house" -->
|house2 = <!-- Name of second chamber -->
|type_house2 = <!-- Default: "Lower house" -->
<!-- Area and population of a given year -->
|stat_year1 = <!-- year of the statistic, specify either area, population or both -->
|stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated -->
|stat_pop1 = <!-- population (w/o commas or spaces) -->
|stat_year2 =
|stat_area2 =
|stat_pop2 =
|stat_year3 =
|stat_area3 =
|stat_pop3 =
|stat_year4 =
|stat_area4 =
|stat_pop4 =
|stat_year5 =
|stat_area5 =
|stat_pop5 =
|today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG -->
|footnote_a = <!-- Accepts wikilinks -->
|footnote_b = <!-- Accepts wikilinks -->
...
|footnote_h = <!-- Accepts wikilinks -->
|footnotes = <!-- Accepts wikilinks -->
}}
</syntaxhighlight>
{{hidden end}}
== Examples ==
<!------------------ Country/territory example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST =
|utc_offset_DST =
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST = not observed
|utc_offset_DST = +1
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
</syntaxhighlight>
{{hidden end}}
<!-------------- Geopolitical organization example --------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]" {{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]]
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607<!--same ref as above-->
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]'' {{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}}
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
</syntaxhighlight>
{{hidden end}}
<!------------------ Former country example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:49428470}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:64925993}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:41058792}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:41058792}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
</syntaxhighlight>
{{hidden end}}
== Errors ==
If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]].
== Microformat ==
{{UF-hcard-place}}
== Tracking categories ==
* {{clc|Country articles requiring maintenance}}
* {{clc|Pages using infobox country with unknown parameters}}
* {{clc|Pages using infobox country with syntax problems}}
* {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}}
* {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}}
* {{clc|Former country articles using status text with Colony or Exile}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.",
"format": "{{_\n| ______________________ = _\n}}\n",
"params": {
"conventional_long_name": {
"label": "Conventional long name",
"type": "string",
"required": false,
"description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.",
"example": "The United States of America"
},
"common_name": {},
"linking_name": {},
"native_name": {
"label": "Native name",
"type": "string",
"required": false,
"example": "{{native name|Bundesrepublik Deutschland}}",
"description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text."
},
"name": {
"label": "Geopolitical organisation name",
"type": "string",
"required": false,
"description": "Name of the geopolitical organisation in English."
},
"image_flag": {
"label": "Flag",
"type": "wiki-file-name",
"required": false,
"example": "Flag of Iceland.svg",
"description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:"
},
"flag_width": {
"label": "Flag width",
"type": "string",
"required": false,
"description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px."
},
"alt_flag": {
"label": "Flag alt text",
"type": "string",
"required": false,
"description": "Alternate text for flag (text shown when pointer hovers over flag)."
},
"flag_border": {
"label": "Flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"flag_caption": {
"label": "Flag caption",
"type": "string",
"required": false,
"description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.",
"example": "1992 version of the flag prior to the country's dissolution"
},
"image_flag2": {
"label": "Second flag",
"type": "wiki-file-name",
"required": false,
"example": "Secondflag of Namibia.svg",
"description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets."
},
"alt_flag2": {
"label": "Second flag alt text",
"type": "string",
"required": false,
"description": "Alt text for second flag (text shown when pointer hovers over flag)."
},
"flag2_border": {
"label": "Second flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"image_coat": {
"label": "Coat of arms",
"type": "wiki-file-name",
"aliases": [
"image_symbol"
],
"example": "Great Seal of the United States (obverse).svg"
},
"symbol_width": {
"label": "Symbol width",
"type": "string",
"required": false,
"description": "Symbol image's width.",
"default": "85px"
},
"alt_coat": {
"label": "Coat of arms alt text",
"type": "string",
"aliases": [
"alt_symbol",
"coat_alt"
],
"required": false,
"description": "Alt text for coat of arms."
},
"symbol_type": {
"label": "Symbol type",
"type": "string",
"required": false,
"description": "If not a coat of arms.",
"example": "emblem, seal, etc"
},
"symbol_type_article": {
"label": "Symbol type article",
"type": "string",
"description": "An article about the type of symbol of the country"
},
"text_symbol": {
"label": "Text symbol",
"type": "string",
"required": false,
"description": "For other types of text symbol.",
"example": "''[hymn name]''"
},
"text_symbol_type": {
"label": "Text symbol type",
"type": "string",
"required": false,
"description": "For other types of text symbol."
},
"other_symbol": {
"label": "Other symbol",
"type": "string",
"required": false,
"description": "Use if a further symbol exists."
},
"other_symbol_type": {
"label": "Other symbol type",
"type": "string",
"required": false
},
"national_motto": {
"label": "National motto",
"type": "string",
"required": false,
"example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}",
"description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English."
},
"motto": {
"label": "Motto",
"type": "string",
"required": false
},
"national_anthem": {
"label": "National anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"anthem": {
"label": "Anthem",
"type": "string",
"required": false
},
"royal_anthem": {
"label": "Royal anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"image_map": {
"label": "Map",
"type": "string",
"required": false,
"example": "LocationCountry.svg"
},
"map_width": {
"label": "Map width",
"type": "string",
"required": false,
"description": "Map image's width.",
"default": "250px"
},
"alt_map": {
"label": "Map alt text",
"type": "string",
"required": false
},
"map_caption": {
"label": "Map caption",
"type": "string",
"required": false,
"description": "Caption to place below map."
},
"image_map2": {
"label": "Map 2",
"type": "string",
"required": false,
"description": "Another map, if required."
},
"map2_width": {
"label": "Map 2 width",
"type": "string",
"required": false
},
"alt_map2": {
"label": "Map 2 alt text",
"type": "string",
"required": false
},
"map_caption2": {
"label": "Map 2 caption",
"type": "string",
"required": false,
"description": "Caption to place below second map."
},
"image_map3": {},
"map3_width": {},
"alt_map3": {},
"map_caption3": {},
"capital": {
"label": "Capital",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type": {
"label": "Capital type",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"type": "string",
"required": false,
"description": "The geographic coordinates of the capital."
},
"latd": {
"label": "Latitude degrees",
"type": "string",
"required": false,
"description": "The degrees of the capital's latitude."
},
"latm": {
"label": "Latitude minutes",
"type": "string",
"description": "The minutes of the capital's latitude."
},
"latNS": {
"label": "Latitude NS",
"type": "string",
"description": "The direction of the capital's latitude."
},
"longd": {
"label": "Longitude degrees",
"type": "string",
"description": "The degrees of the capital's longitude."
},
"longm": {
"label": "Longitude minutes",
"type": "string",
"description": "The minutes of the capital's longitude."
},
"longEW": {
"label": "Longitude EW",
"type": "string",
"description": "The direction of the capital's longitude."
},
"admin_center": {
"label": "Administrative center",
"type": "string",
"required": false,
"description": "Location/s of administrative center/s."
},
"admin_center_type": {
"label": "Administrative center type",
"type": "string",
"required": false,
"default": "Administrative center"
},
"capital2": {
"label": "Capital 2",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type2": {
"label": "Capital 2 type",
"type": "string",
"required": false
},
"admin_center2": {
"label": "Administrative center 2",
"type": "string",
"required": false
},
"admin_center_type2": {
"label": "Administrative center 2 type",
"type": "string",
"required": false
},
"largest_city": {
"label": "Largest city",
"type": "string",
"required": false,
"description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital."
},
"largest_settlement": {
"label": "Largest settlement",
"type": "string",
"required": false,
"description": "Name of largest settlement if not a city."
},
"largest_settlement_type": {
"label": "Largest settlement type",
"type": "string",
"required": false,
"description": "Type of settlement if largest settlement not a city."
},
"official_languages": {
"label": "Official languages",
"type": "string",
"required": false,
"description": "Languages recognised in legislation, constitution, etc."
},
"national_languages": {
"label": "National languages",
"type": "string",
"required": false,
"description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc."
},
"regional_languages": {
"label": "Regional languages",
"type": "string",
"required": false,
"description": "Languages recognised or associated with particular regions within the country/territory."
},
"languages_type": {
"label": "Languages type",
"type": "string",
"description": "Use to specify a further type of language, if not official, national or regional."
},
"languages_sub": {
"label": "Languages sub",
"type": "string",
"required": false,
"description": "Is this further type of language a sub-item of the previous non-sub type?",
"example": "'yes' or 'no'"
},
"languages": {
"label": "Languages",
"type": "string",
"required": false,
"description": "Languages of the further type."
},
"languages2_type": {
"label": "2nd languages type",
"type": "string",
"description": "Use to specify a 2nd further type of language, if not official, national or regional."
},
"languages2_sub": {
"label": "Languages 2 sub",
"type": "string",
"required": false,
"description": "Is the second alternative type of languages a sub-item of the previous non-sub type?",
"example": "'yes or 'no'"
},
"languages2": {
"label": "Languages 2",
"type": "string",
"required": false,
"description": "Languages of the second further type."
},
"ethnic_groups": {
"label": "Ethnic groups",
"type": "string",
"required": false,
"description": "The primary ethnic groups of the country",
"example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | 7.0% [[Malaysian Indian|Indian]] | 1.0% Others }}"
},
"ethnic_groups_ref": {
"label": "Ethnic groups reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of ethnic composition"
},
"ethnic_groups_year": {
"label": "Ethnic groups year",
"type": "number",
"required": false,
"description": "Year the ethnic group statistic is from",
"example": "2017"
},
"religion": {
"label": "Religions",
"type": "string",
"required": false,
"description": "List of religious affiliations in {{ublist}} format",
"example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}"
},
"religion_ref": {
"label": "Religions reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of religious composition"
},
"demonym": {
"label": "Demonym",
"type": "string",
"required": false,
"description": "Name of residents of this country",
"example": "Singaporean",
"suggested": true
},
"org_type": {
"label": "Organization type",
"type": "string",
"required": false
},
"membership": {
"label": "membership",
"type": "string",
"required": false
},
"membership_type": {
"label": "membership_type",
"type": "string",
"required": false
},
"government_type": {
"label": "Type of government",
"type": "string",
"required": false,
"description": "The type of government, e.g. federal republic",
"example": "[[Monarchy]]"
},
"politics_link": {
"label": "Politics link",
"type": "string",
"required": false
},
"leader_title1": {
"label": "Leader 1 title",
"type": "line",
"required": false,
"description": "Title of principal leader",
"example": "[[President of Singapore|President]]"
},
"leader_name1": {
"label": "Leader 1 name",
"type": "line",
"required": false,
"description": "Name of principal leader",
"example": "[[Halimah Yacob]]"
},
"leader_title2": {
"label": "Leader 2 title",
"type": "line",
"required": false,
"description": "Title of 2nd leader",
"example": "[[Prime Minister of Singapore|Prime Minister]]"
},
"leader_name2": {
"label": "Leader 2 name",
"type": "line",
"description": "Name of 2nd leader",
"example": "[[Lee Hsien Loong]]"
},
"leader_title3": {
"label": "Leader 3 title",
"type": "line",
"required": false,
"description": "Title of 3rd leader",
"example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]"
},
"leader_name3": {
"label": "Leader 3 name",
"type": "line",
"description": "Name of 3rd leader",
"example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]"
},
"leader_title4": {
"label": "Leader 4 title",
"type": "line",
"required": false,
"description": "Title of the 4th leader",
"example": "[[President pro tempore of the United States Senate|President pro tempore]]"
},
"leader_name4": {
"label": "Leader 4 name",
"type": "line",
"description": "Name of the 4th leader"
},
"leader_title5": {
"label": "leader_title5",
"type": "string",
"required": false
},
"leader_name5": {
"label": "Leader name 5",
"type": "string"
},
"leader_title6": {
"label": "Leader title 6",
"type": "string",
"required": false
},
"leader_name6": {
"label": "Leader name 6",
"type": "string"
},
"leader_title7": {
"label": "Leader title7",
"type": "string",
"required": false
},
"leader_name7": {
"label": "Leader name 7",
"type": "string"
},
"leader_title8": {
"label": "Leader title 8",
"type": "string",
"required": false
},
"leader_name8": {
"label": "Leader name 8",
"type": "string"
},
"leader_title9": {
"label": "Leader title 9",
"type": "string",
"required": false
},
"leader_name9": {
"label": "Leader name 9",
"type": "string"
},
"leader_title10": {
"label": "Leader title 10",
"type": "string",
"required": false
},
"leader_name10": {
"label": "Leader name 10",
"type": "string"
},
"leader_title11": {
"label": "Leader title 11",
"type": "string",
"required": false
},
"leader_name11": {
"label": "Leader name 11",
"type": "string"
},
"leader_title12": {
"label": "Leader title 12",
"type": "string",
"required": false
},
"leader_name12": {
"label": "Leader name 12",
"type": "string"
},
"leader_title13": {
"label": "Leader title 13",
"type": "string",
"required": false
},
"leader_name13": {
"label": "Leader name 13",
"type": "string"
},
"leader_title14": {
"label": "Leader title 14",
"type": "string",
"required": false
},
"leader_name14": {
"label": "Leader name 14",
"type": "string"
},
"legislature": {
"label": "Legislature",
"type": "line",
"description": "Name of, and link to, the country's national legislature",
"example": "[[Parliament of Singapore|Parliament]]"
},
"upper_house": {
"description": "Upper house of the country or organization's legislature",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"lower_house": {
"description": "Lower house of the country or organization's legislature",
"label": "Lower house",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"sovereignty_type": {
"label": "Sovereignty type",
"type": "line",
"required": false,
"description": "Type of sovereignty this country has",
"example": "Independence"
},
"sovereignty_note": {
"label": "Sovereignty note",
"type": "content",
"required": false,
"description": "Note about this country's sovereignty",
"example": "from the [[United Kingdom]]"
},
"established": {
"label": "established",
"type": "string",
"required": false
},
"established_event1": {
"label": "Establishment event 1",
"type": "string",
"required": false
},
"established_date1": {
"label": "Establishment date 1",
"type": "string",
"required": false
},
"established_event2": {
"label": "Establishment event 2",
"type": "string",
"required": false
},
"established_date2": {
"label": "Establishment date 2",
"type": "string",
"required": false
},
"established_event3": {
"label": "Establishment event 3",
"type": "string",
"required": false
},
"established_date3": {
"label": "Establishment date 3",
"type": "string",
"required": false
},
"established_event4": {
"label": "Establishment event 4",
"type": "string",
"required": false
},
"established_date4": {
"label": "established_date4",
"type": "string",
"required": false
},
"established_event5": {
"label": "Establishment event 5",
"type": "string",
"required": false
},
"established_date5": {
"label": "established_date5",
"type": "string",
"required": false
},
"established_event6": {
"label": "established_event6",
"type": "string",
"required": false
},
"established_date6": {
"label": "established_date6",
"type": "string",
"required": false
},
"established_event7": {
"label": "established_event7",
"type": "string",
"required": false
},
"established_date7": {
"label": "established_date7",
"type": "string",
"required": false
},
"established_event8": {
"label": "established_event8",
"type": "string",
"required": false
},
"established_date8": {
"label": "established_date8",
"type": "string",
"required": false
},
"established_event9": {
"label": "established_event9",
"type": "string",
"required": false
},
"established_date9": {
"label": "established_date9",
"type": "string",
"required": false
},
"established_event10": {
"label": "established_event10",
"type": "string",
"required": false
},
"established_date10": {
"label": "established_date10",
"type": "string",
"required": false
},
"established_event11": {
"label": "established_event11",
"type": "string",
"required": false
},
"established_date11": {
"label": "established_date11",
"type": "string",
"required": false
},
"established_event12": {
"label": "established_event12",
"type": "string",
"required": false
},
"established_date12": {
"label": "established_date12",
"type": "string",
"required": false
},
"area_km2": {
"label": "Land area (km²)",
"type": "number",
"required": false,
"description": "Land area of the country in square kilometers",
"example": "722.5",
"suggested": true
},
"area_link": {
"label": "area_link",
"type": "string",
"required": false
},
"area_label": {
"label": "area_label",
"type": "string",
"required": false
},
"FR_foot4": {
"label": "FR_foot4",
"type": "string",
"required": false,
"deprecated": true
},
"area_footnote": {
"label": "area_footnote",
"type": "string",
"required": false
},
"area_rank": {
"label": "Area rank",
"type": "string",
"required": false,
"description": "Rank among countries of land area",
"example": "174th",
"suggested": true
},
"area_sq_mi": {
"label": "Land area (mi²)",
"type": "number",
"required": false,
"description": "Land area of the country in square miles",
"example": "290"
},
"percent_water": {
"label": "percent_water",
"type": "string",
"required": false
},
"area_label2": {
"label": "area_label2",
"type": "string",
"required": false
},
"area_data2": {
"label": "area_data2",
"type": "string",
"required": false
},
"area_label3": {
"label": "area_label3",
"type": "string",
"required": false
},
"area_data3": {
"label": "area_data3",
"type": "string",
"required": false
},
"FR_metropole": {
"label": "FR_metropole",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot2": {
"label": "FR_foot2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_km2": {
"label": "FR_IGN_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_rank": {
"label": "FR_IGN_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_sq_mi": {
"label": "FR_IGN_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot3": {
"label": "FR_foot3",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_km2": {
"label": "FR_cadastre_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_rank": {
"label": "FR_cadastre_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_sq_mi": {
"label": "FR_cadastre_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"population_estimate": {
"label": "Population estimate",
"type": "number",
"required": false,
"description": "An estimate of the country's population",
"example": "24,000,000"
},
"population_census": {
"label": "Population census",
"type": "string"
},
"population_link": {
"label": "Population link",
"type": "url"
},
"population_estimate_year": {
"label": "Population estimate year",
"type": "number",
"description": "The year the population estimate is from",
"example": "2018"
},
"population_estimate_rank": {
"label": "Population estimate rank",
"type": "string",
"description": "Rank among countries in estimated population",
"example": "3rd"
},
"population_label2": {
"label": "population_label2",
"type": "string",
"required": false
},
"population_data2": {
"label": "Population data 2",
"type": "string",
"required": false
},
"population_label3": {
"label": "Population label 3",
"type": "string",
"required": false
},
"population_data3": {
"label": "Population data 3",
"type": "string",
"required": false
},
"population_census_year": {
"label": "Population census year",
"type": "number",
"required": false,
"description": "Year the population census statistics are from",
"example": "2010"
},
"population_census_rank": {
"label": "Population census rank",
"type": "string",
"description": "Rank among countries in census population",
"example": "3rd"
},
"population_density_km2": {
"label": "Population density per km²",
"type": "number",
"example": "20,212",
"description": "Population density per square kilometer"
},
"population_density_sq_mi": {
"label": "Population density per mi²",
"type": "number",
"description": "Population density per square mile",
"example": "20,212"
},
"pop_den_footnote": {
"label": "Population density footnote",
"type": "string",
"description": "footnote about the population density statistic"
},
"population_density_rank": {
"label": "Population density rank",
"type": "string",
"required": false,
"description": "Rank among countries in population density",
"example": "3rd"
},
"FR_metropole_population": {
"label": "FR_metropole_population",
"type": "string",
"required": false,
"deprecated": true
},
"FR_total_population_estimate_year": {
"label": "FR_total_population_estimate_year",
"type": "string",
"deprecated": true
},
"FR_foot": {
"label": "FR_foot",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate": {
"label": "FR_total_population_estimate",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate_rank": {
"label": "FR_total_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_metropole_population_estimate_rank": {
"label": "FR_metropole_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_foot5": {
"label": "FR_foot5",
"type": "string",
"required": false,
"deprecated": true
},
"GDP_PPP": {
"label": "GDP (PPP)",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity)",
"example": "$554.855 billion",
"suggested": true
},
"GDP_PPP_year": {
"label": "GDP (PPP) year cited",
"type": "number",
"required": false,
"description": "Year the GDP (PPP) statistic is cited from",
"example": "2018",
"suggested": true
},
"GDP_PPP_rank": {
"label": "GDP (PPP) rank",
"type": "string",
"required": false,
"description": "Rank among countries for GDP PPP",
"example": "39th"
},
"GDP_PPP_per_capita": {
"label": "GDP_PPP_per_capita",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity) per capita",
"example": "$98,014"
},
"GDP_PPP_per_capita_rank": {
"label": "GDP (PPP) per capita rank",
"type": "line",
"required": false,
"description": "Rank among countries for GDP PPP per capita",
"example": "3rd"
},
"GDP_nominal": {
"label": "GDP (nominal)",
"type": "string",
"required": false,
"description": "Nominal GDP of the country"
},
"GDP_nominal_year": {
"label": "GDP (nominal) year",
"type": "number",
"required": false,
"description": "Year cited for the country's nominal GDP statistic"
},
"GDP_nominal_rank": {
"label": "GDP (nominal) rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP",
"example": "41st"
},
"GDP_nominal_per_capita": {
"label": "GDP (nominal) per capita",
"type": "string",
"required": false,
"description": "Nominal GDP per capita in the country",
"example": "$61,766"
},
"GDP_nominal_per_capita_rank": {
"label": "GDP (nominal) per capita rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP per capita",
"example": "8th"
},
"Gini": {
"label": "Gini index",
"type": "number",
"required": false,
"description": "Gini index of the country",
"example": "46.4"
},
"Gini_year": {
"label": "Gini index year cited",
"type": "number",
"required": false,
"description": "Year the gini index statistic is cited for",
"example": "2014"
},
"Gini_change": {
"label": "Gini change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" (over last year)",
"example": "increase"
},
"Gini_ref": {
"label": "Gini index reference",
"type": "line",
"required": false,
"description": "Reference for cited Gini index statistic"
},
"Gini_rank": {
"label": "Gini rank",
"type": "string",
"required": false,
"description": "Rank of Gini indices",
"example": "30th"
},
"HDI": {
"label": "Human development index",
"type": "number",
"required": false,
"example": "0.932",
"suggested": true,
"description": "The country's human development index (HDI)"
},
"HDI_year": {
"label": "Human Development Index year",
"type": "number",
"required": false,
"description": "Year to which the HDI statistic refers",
"example": "2017",
"suggested": true
},
"HDI_change": {
"label": "HDI change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" from previous year",
"example": "increase"
},
"HDI_ref": {
"label": "Human Development Index reference",
"type": "line",
"required": false,
"description": "Reference for HDI statistic"
},
"HDI_rank": {
"label": "Human development index rank",
"type": "string",
"required": false,
"description": "Rank among countries for HDI score",
"example": "9th"
},
"currency": {
"label": "Currency",
"type": "line",
"required": false,
"description": "National/official currency name and article link",
"example": "[[Singapore dollar]]"
},
"currency_code": {
"label": "Currency code",
"type": "line",
"required": false,
"description": "Currency code of the official currency",
"example": "SGD"
},
"time_zone": {
"label": "Time zone",
"type": "line",
"required": false,
"description": "National time zone(s)",
"example": "[[Singapore Standard Time|SST]]"
},
"utc_offset": {
"label": "UTC offsets",
"type": "string",
"example": "−4 to −12, +10, +11"
},
"utc_offset_DST": {
"label": "UTF offsets (DST)",
"type": "string",
"example": "−4 to −10"
},
"DST_note": {
"label": "DST note",
"type": "string",
"example": "{{efn|name=\"time\"}}"
},
"time_zone_DST": {
"label": "Time zones (DST)",
"type": "string",
"required": false
},
"DST": {
"label": "Daylight savings time",
"type": "string",
"required": false
},
"antipodes": {
"label": "antipodes",
"type": "string",
"required": false
},
"date_format": {
"label": "Date format",
"type": "string",
"required": false
},
"drives_on": {
"label": "drives on",
"type": "string",
"required": false
},
"rail gauge": {
"label": "Rail gauge",
"type": "string",
"required": false
},
"calling_code": {
"label": "Calling code",
"type": "string",
"example": "+1"
},
"patron_saint": {
"label": "Patron saint",
"aliases": [
"patron_saints"
],
"type": "string",
"required": false
},
"iso3166code": {
"label": "ISO 3166 code",
"type": "string",
"description": "ISO 3166 code for the country",
"example": "US"
},
"cctld": {
"label": "Country code top level domain",
"type": "string",
"example": ".se"
},
"official_website": {
"label": "official_website",
"type": "string",
"required": false,
"description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])."
},
"footnote_a": {
"label": "footnote_a",
"type": "string",
"required": false
},
"footnote_b": {
"label": "footnote_b",
"type": "string",
"required": false
},
"footnote_c": {
"label": "footnote_c",
"type": "string",
"required": false
},
"footnote_d": {
"label": "footnote_d",
"type": "string",
"required": false
},
"footnote_e": {
"label": "footnote_e",
"type": "string",
"required": false
},
"footnote_f": {
"label": "footnote_f",
"type": "string",
"required": false
},
"footnote_g": {
"label": "footnote_g",
"type": "string",
"required": false
},
"footnote_h": {
"label": "footnote_h",
"type": "string",
"required": false
},
"footnote1": {
"label": "footnote1",
"type": "string",
"required": false
},
"footnote2": {
"label": "footnote2",
"type": "string",
"required": false
},
"footnote3": {
"label": "footnote3",
"type": "string",
"required": false
},
"footnote4": {
"label": "footnote4",
"type": "string",
"required": false
},
"footnote5": {
"label": "footnote5",
"type": "string",
"required": false
},
"footnote6": {
"label": "footnote6",
"type": "string",
"required": false
},
"footnote7": {
"label": "footnote7",
"type": "string",
"required": false
},
"footnote8": {
"label": "footnote8",
"type": "string",
"required": false
},
"footnotes": {
"label": "footnotes",
"type": "string",
"required": false
},
"navbar": {
"label": "navbar",
"type": "string",
"required": false
},
"micronation": {},
"status": {
"type": "line"
},
"status_text": {
"type": "line"
},
"empire": {},
"year_end": {
"type": "number"
},
"year_exile_start": {
"type": "number"
},
"year_exile_end": {
"type": "number"
},
"life_span": {
"type": "line"
},
"year_start": {
"type": "number"
},
"flag_size": {
"type": "line"
},
"flag_alt": {
"type": "string"
},
"flag_alt2": {
"type": "string"
},
"flag_type": {
"type": "string"
},
"coa_size": {
"type": "line"
},
"englishmotto": {
"type": "string",
"label": "Motto in English",
"description": "The country's motto translated into English"
},
"image_map_size": {
"type": "line"
},
"image_map_alt": {
"type": "string"
},
"image_map_caption": {
"type": "content"
},
"image_map2_size": {
"type": "line"
},
"image_map2_alt": {
"type": "string"
},
"image_map2_caption": {
"type": "content"
},
"loctext": {
"type": "string"
},
"capital_exile": {
"type": "string"
},
"recognized_languages": {
"aliases": [
"recognised_languages"
],
"type": "content",
"label": "Recognized languages",
"description": "Recognized languages of the country, possibly in list format"
},
"recognized_national_languages": {
"aliases": [
"recognised_national_languages"
],
"type": "content",
"label": "Recognized national languages",
"description": "Recognized national languages of the country, possibly in list format"
},
"recognized_regional_languages": {
"aliases": [
"recognised_regional_languages"
],
"type": "content",
"label": "Recognized regional languages",
"description": "Recognized regional languages of the country, possibly in list format"
},
"common_languages": {
"type": "content",
"label": "Common languages",
"description": "Common languages of the country, possibly in list format",
"example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}"
},
"religion_year": {
"type": "number",
"label": "Religion statistic year",
"description": "Year the religion statistic is from",
"example": "2015"
},
"leader_title15": {
"type": "line"
},
"leader_name15": {
"type": "line"
},
"title_leader": {
"type": "line",
"label": "Leader's title",
"description": "Title of the country's leader",
"example": "[[President of the United States|President]]"
},
"year_leader1": {
"type": "line",
"label": "Leader 1 years",
"description": "Years the first leader reigned",
"example": "1776-1795"
},
"leader1": {
"type": "line",
"label": "Leader 1",
"description": "The first leader of the country",
"example": "[[George Washington]]"
},
"year_leader2": {
"type": "line"
},
"leader2": {
"type": "line"
},
"year_leader3": {
"type": "line"
},
"leader3": {
"type": "line"
},
"year_leader4": {
"type": "line"
},
"leader4": {
"type": "line"
},
"year_leader5": {
"type": "line"
},
"leader5": {
"type": "line"
},
"year_leader6": {
"type": "line"
},
"leader6": {
"type": "line"
},
"year_leader7": {
"type": "line"
},
"leader7": {
"type": "line"
},
"year_leader8": {
"type": "line"
},
"leader8": {
"type": "line"
},
"year_leader9": {
"type": "line"
},
"leader9": {
"type": "line"
},
"year_leader10": {
"type": "line"
},
"leader10": {
"type": "line"
},
"year_leader11": {
"type": "line",
"label": "Leader 11 years",
"description": "Year of leader 11",
"example": "1980-1987"
},
"leader11": {
"type": "line"
},
"title_representative": {
"type": "line",
"label": "Representative title",
"description": "Title of the country's representative",
"example": "[[Governor General of Canada|Governor General]]"
},
"year_representative1": {
"type": "line",
"label": "Representative 1 years",
"description": "Year of representative 1",
"example": "1492-1506"
},
"representative1": {
"type": "line",
"label": "Representative 1",
"description": "First representative"
},
"year_representative2": {
"type": "line",
"label": "Representative 2 years",
"description": "Year of representative 2",
"example": "1552-1580"
},
"representative2": {
"type": "line"
},
"year_representative3": {
"type": "line",
"label": "Representative 3 years",
"description": "Year of representative 3",
"example": "1652-1666"
},
"representative3": {
"type": "line"
},
"year_representative4": {
"type": "line",
"label": "Representative 4 year",
"description": "Year of representative 4",
"example": "1652-1666"
},
"representative4": {
"type": "line"
},
"year_representative5": {
"type": "line",
"label": "Representative 5 years",
"description": "Year of representative 5",
"example": "1652-1666"
},
"representative5": {
"type": "line"
},
"title_deputy": {
"type": "line"
},
"year_deputy1": {
"type": "line",
"label": "Deputy 1 years",
"description": "Years of the 1st deputy",
"example": "2006-2009"
},
"deputy1": {
"type": "line",
"label": "Deputy 1",
"description": "First deputy"
},
"year_deputy2": {
"type": "line",
"label": "Deputy 2 years",
"description": "Years of the 2nd deputy",
"example": "2009-2011"
},
"deputy2": {
"type": "line"
},
"year_deputy3": {
"type": "line",
"label": "Deputy 3 years",
"description": "Years of the 3rd deputy",
"example": "2011-2013"
},
"deputy3": {
"type": "line"
},
"year_deputy4": {
"type": "line",
"label": "Deputy 4 years",
"description": "Years of the 4th deputy",
"example": "2013-2016"
},
"deputy4": {
"type": "line"
},
"year_deputy5": {
"type": "line",
"label": "Deputy 5 years",
"description": "Years of the 5th deputy",
"example": "2016-2018"
},
"deputy5": {
"type": "line"
},
"year_deputy6": {
"type": "line",
"label": "Deputy 6 years",
"description": "Years of the 6th deputy",
"example": "2018-"
},
"deputy6": {
"type": "line"
},
"type_house1": {
"type": "line"
},
"house1": {
"type": "line"
},
"type_house2": {
"type": "line"
},
"house2": {
"type": "line"
},
"event_pre": {
"type": "line"
},
"established_event13": {
"label": "Establishment event 13",
"type": "line"
},
"established_date13": {
"label": "Establishment date 13",
"type": "date"
},
"established_event14": {
"type": "line"
},
"established_date14": {
"type": "line"
},
"established_event15": {
"type": "line"
},
"established_date15": {
"type": "line"
},
"event_start": {
"label": "Starting event",
"description": "The foundational event of the country",
"example": "Established",
"type": "string"
},
"date_pre": {},
"date_start": {
"label": "Date established",
"description": "Date the country, dynasty or organization was established (date of event_start)",
"example": "601 CE",
"type": "string"
},
"event1": {
"label": "Event 1",
"description": "First significant event",
"example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]",
"type": "string"
},
"date_event1": {
"label": "Event 1 date",
"description": "Date of the first significant event",
"example": "601",
"type": "date"
},
"event2": {
"label": "Event 2",
"description": "Second significant event",
"example": "[[Alliance Conducted at Sea|Alliance with Jin]]",
"type": "string"
},
"date_event2": {
"label": "Event 2 date",
"description": "Date of the second significant event",
"type": "string"
},
"event3": {
"label": "Event 3",
"description": "Third significant event",
"example": "[[Jingkang Incident]]",
"type": "string"
},
"date_event3": {},
"event4": {
"label": "Event 4",
"description": "Fourth significant event",
"example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]",
"type": "string"
},
"date_event4": {},
"event5": {
"label": "Event 5",
"description": "Fifth significant event",
"example": "Fall of [[Hangzhou|Lin'an]]",
"type": "string"
},
"date_event5": {},
"event6": {
"label": "Event 6",
"description": "Sixth significant event",
"example": "[[Krystallnacht]]",
"type": "string"
},
"date_event6": {},
"event_end": {
"label": "Event ending the country",
"description": "The event that caused the country to stop existing or transition, if applicable",
"example": "[[Battle of Yamen]] (end of dynasty)",
"type": "string"
},
"date_end": {
"label": "End date",
"description": "Date the country stopped existing or transitioned, if applicable",
"example": "1433",
"type": "date"
},
"event_post": {},
"date_post": {},
"area_ha": {},
"area_acre": {},
"area_land_km2": {},
"area_land_ha": {},
"area_land_sq_mi": {},
"area_land_acre": {},
"area_water_km2": {},
"area_water_ha": {},
"area_water_sq_mi": {},
"area_water_acre": {},
"stat_area1": {},
"stat_area2": {},
"stat_area3": {},
"stat_area4": {},
"stat_area5": {},
"area_land_footnote": {},
"area_water_footnote": {},
"stat_year1": {},
"ref_area1": {},
"stat_year2": {},
"ref_area2": {},
"stat_year3": {},
"ref_area3": {},
"stat_year4": {},
"ref_area4": {},
"stat_year5": {
"label": "Statistic 5 year",
"description": "Year of statistic 5",
"example": "1933",
"type": "number"
},
"ref_area5": {},
"stat_pop1": {},
"stat_pop2": {},
"stat_pop3": {},
"stat_pop4": {},
"stat_pop5": {},
"ref_pop1": {},
"ref_pop2": {},
"ref_pop3": {},
"ref_pop4": {},
"ref_pop5": {},
"nummembers": {},
"p1": {},
"s1": {},
"flag_p1": {},
"image_p1": {},
"border_p1": {},
"flag_p2": {},
"image_p2": {},
"p2": {},
"border_p2": {},
"flag_p3": {},
"image_p3": {},
"p3": {},
"border_p3": {},
"flag_p4": {},
"image_p4": {},
"p4": {},
"border_p4": {},
"flag_p5": {},
"image_p5": {},
"p5": {},
"border_p5": {},
"flag_p6": {},
"image_p6": {},
"p6": {},
"border_p6": {},
"flag_p7": {},
"image_p7": {},
"p7": {},
"border_p7": {},
"flag_p8": {},
"image_p8": {},
"p8": {},
"border_p8": {},
"flag_p9": {},
"image_p9": {},
"p9": {},
"border_p9": {},
"flag_p10": {},
"image_p10": {},
"p10": {},
"border_p10": {},
"flag_p11": {},
"image_p11": {},
"p11": {},
"border_p11": {},
"flag_p12": {},
"image_p12": {},
"p12": {},
"border_p12": {},
"flag_p13": {},
"image_p13": {},
"p13": {},
"border_p13": {},
"flag_p14": {},
"image_p14": {},
"p14": {},
"border_p14": {},
"flag_p15": {},
"image_p15": {},
"p15": {},
"border_p15": {},
"flag_s1": {},
"image_s1": {},
"border_s1": {},
"flag_s2": {},
"image_s2": {},
"s2": {},
"border_s2": {},
"flag_s3": {},
"image_s3": {},
"s3": {},
"border_s3": {},
"flag_s4": {},
"image_s4": {},
"s4": {},
"border_s4": {},
"flag_s5": {},
"image_s5": {},
"s5": {},
"border_s5": {},
"flag_s6": {},
"image_s6": {},
"s6": {},
"border_s6": {},
"flag_s7": {},
"image_s7": {},
"s7": {},
"border_s7": {},
"flag_s8": {},
"image_s8": {},
"s8": {},
"border_s8": {},
"flag_s9": {},
"image_s9": {},
"s9": {},
"border_s9": {},
"flag_s10": {},
"image_s10": {},
"s10": {},
"border_s10": {},
"flag_s11": {},
"image_s11": {},
"s11": {},
"border_s11": {},
"flag_s12": {},
"image_s12": {},
"s12": {},
"border_s12": {},
"flag_s13": {},
"image_s13": {},
"s13": {},
"border_s13": {},
"flag_s14": {},
"image_s14": {},
"s14": {},
"border_s14": {},
"flag_s15": {},
"image_s15": {},
"s15": {},
"border_s15": {},
"today": {
"label": "Today part of",
"description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.",
"example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}",
"type": "content",
"suggested": true
},
"footnotes2": {},
"symbol_caption": {},
"nested": {}
},
"paramOrder": [
"conventional_long_name",
"common_name",
"linking_name",
"native_name",
"name",
"image_flag",
"flag_width",
"alt_flag",
"flag_border",
"flag_caption",
"image_flag2",
"alt_flag2",
"flag2_border",
"image_coat",
"symbol_width",
"alt_coat",
"symbol_type",
"symbol_type_article",
"text_symbol",
"text_symbol_type",
"other_symbol",
"other_symbol_type",
"national_motto",
"motto",
"national_anthem",
"anthem",
"royal_anthem",
"image_map",
"map_width",
"alt_map",
"map_caption",
"image_map2",
"map2_width",
"alt_map2",
"map_caption2",
"image_map3",
"map3_width",
"alt_map3",
"map_caption3",
"capital",
"capital_type",
"coordinates",
"latd",
"latm",
"latNS",
"longd",
"longm",
"longEW",
"admin_center",
"admin_center_type",
"capital2",
"capital_type2",
"admin_center2",
"admin_center_type2",
"largest_city",
"largest_settlement",
"largest_settlement_type",
"official_languages",
"national_languages",
"regional_languages",
"languages_type",
"languages_sub",
"languages",
"languages2_type",
"languages2_sub",
"languages2",
"ethnic_groups",
"ethnic_groups_ref",
"ethnic_groups_year",
"religion",
"religion_ref",
"demonym",
"org_type",
"membership",
"membership_type",
"government_type",
"politics_link",
"leader_title1",
"leader_name1",
"leader_title2",
"leader_name2",
"leader_title3",
"leader_name3",
"leader_title4",
"leader_name4",
"leader_title5",
"leader_name5",
"leader_title6",
"leader_name6",
"leader_title7",
"leader_name7",
"leader_title8",
"leader_name8",
"leader_title9",
"leader_name9",
"leader_title10",
"leader_name10",
"leader_title11",
"leader_name11",
"leader_title12",
"leader_name12",
"leader_title13",
"leader_name13",
"leader_title14",
"leader_name14",
"legislature",
"upper_house",
"lower_house",
"sovereignty_type",
"sovereignty_note",
"established",
"established_event1",
"established_date1",
"established_event2",
"established_date2",
"established_event3",
"established_date3",
"established_event4",
"established_date4",
"established_event5",
"established_date5",
"established_event6",
"established_date6",
"established_event7",
"established_date7",
"established_event8",
"established_date8",
"established_event9",
"established_date9",
"established_event10",
"established_date10",
"established_event11",
"established_date11",
"established_event12",
"established_date12",
"area_km2",
"area_link",
"area_label",
"FR_foot4",
"area_footnote",
"area_rank",
"area_sq_mi",
"percent_water",
"area_label2",
"area_data2",
"area_label3",
"area_data3",
"FR_metropole",
"FR_foot2",
"FR_IGN_area_km2",
"FR_IGN_area_rank",
"FR_IGN_area_sq_mi",
"FR_foot3",
"FR_cadastre_area_km2",
"FR_cadastre_area_rank",
"FR_cadastre_area_sq_mi",
"population_estimate",
"population_census",
"population_link",
"population_estimate_year",
"population_estimate_rank",
"population_label2",
"population_data2",
"population_label3",
"population_data3",
"population_census_year",
"population_census_rank",
"population_density_km2",
"population_density_sq_mi",
"pop_den_footnote",
"population_density_rank",
"FR_metropole_population",
"FR_total_population_estimate_year",
"FR_foot",
"FR_total_population_estimate",
"FR_total_population_estimate_rank",
"FR_metropole_population_estimate_rank",
"FR_foot5",
"GDP_PPP",
"GDP_PPP_year",
"GDP_PPP_rank",
"GDP_PPP_per_capita",
"GDP_PPP_per_capita_rank",
"GDP_nominal",
"GDP_nominal_year",
"GDP_nominal_rank",
"GDP_nominal_per_capita",
"GDP_nominal_per_capita_rank",
"Gini",
"Gini_year",
"Gini_change",
"Gini_ref",
"Gini_rank",
"HDI",
"HDI_year",
"HDI_change",
"HDI_ref",
"HDI_rank",
"currency",
"currency_code",
"time_zone",
"utc_offset",
"utc_offset_DST",
"DST_note",
"time_zone_DST",
"DST",
"antipodes",
"date_format",
"drives_on",
"rail gauge",
"calling_code",
"patron_saint",
"iso3166code",
"cctld",
"official_website",
"footnote_a",
"footnote_b",
"footnote_c",
"footnote_d",
"footnote_e",
"footnote_f",
"footnote_g",
"footnote_h",
"footnote1",
"footnote2",
"footnote3",
"footnote4",
"footnote5",
"footnote6",
"footnote7",
"footnote8",
"footnotes",
"navbar",
"micronation",
"status",
"status_text",
"empire",
"year_end",
"year_exile_start",
"year_exile_end",
"life_span",
"year_start",
"flag_size",
"flag_alt",
"flag_alt2",
"flag_type",
"coa_size",
"englishmotto",
"image_map_size",
"image_map_alt",
"image_map_caption",
"image_map2_size",
"image_map2_alt",
"image_map2_caption",
"loctext",
"capital_exile",
"recognized_languages",
"recognized_national_languages",
"recognized_regional_languages",
"common_languages",
"religion_year",
"leader_title15",
"leader_name15",
"title_leader",
"year_leader1",
"leader1",
"year_leader2",
"leader2",
"year_leader3",
"leader3",
"year_leader4",
"leader4",
"year_leader5",
"leader5",
"year_leader6",
"leader6",
"year_leader7",
"leader7",
"year_leader8",
"leader8",
"year_leader9",
"leader9",
"year_leader10",
"leader10",
"year_leader11",
"leader11",
"title_representative",
"year_representative1",
"representative1",
"year_representative2",
"representative2",
"year_representative3",
"representative3",
"year_representative4",
"representative4",
"year_representative5",
"representative5",
"title_deputy",
"year_deputy1",
"deputy1",
"year_deputy2",
"deputy2",
"year_deputy3",
"deputy3",
"year_deputy4",
"deputy4",
"year_deputy5",
"deputy5",
"year_deputy6",
"deputy6",
"type_house1",
"house1",
"type_house2",
"house2",
"established_event13",
"established_date13",
"established_event14",
"established_date14",
"established_event15",
"established_date15",
"event_pre",
"date_pre",
"event_start",
"date_start",
"event1",
"date_event1",
"event2",
"date_event2",
"event3",
"date_event3",
"event4",
"date_event4",
"event5",
"date_event5",
"event6",
"date_event6",
"event_end",
"date_end",
"event_post",
"date_post",
"area_ha",
"area_acre",
"area_land_km2",
"area_land_ha",
"area_land_sq_mi",
"area_land_acre",
"area_water_km2",
"area_water_ha",
"area_water_sq_mi",
"area_water_acre",
"stat_area1",
"stat_area2",
"stat_area3",
"stat_area4",
"stat_area5",
"area_land_footnote",
"area_water_footnote",
"stat_year1",
"ref_area1",
"stat_year2",
"ref_area2",
"stat_year3",
"ref_area3",
"stat_year4",
"ref_area4",
"stat_year5",
"ref_area5",
"stat_pop1",
"stat_pop2",
"stat_pop3",
"stat_pop4",
"stat_pop5",
"ref_pop1",
"ref_pop2",
"ref_pop3",
"ref_pop4",
"ref_pop5",
"nummembers",
"p1",
"s1",
"flag_p1",
"image_p1",
"border_p1",
"flag_p2",
"image_p2",
"p2",
"border_p2",
"flag_p3",
"image_p3",
"p3",
"border_p3",
"flag_p4",
"image_p4",
"p4",
"border_p4",
"flag_p5",
"image_p5",
"p5",
"border_p5",
"flag_p6",
"image_p6",
"p6",
"border_p6",
"flag_p7",
"image_p7",
"p7",
"border_p7",
"flag_p8",
"image_p8",
"p8",
"border_p8",
"flag_p9",
"image_p9",
"p9",
"border_p9",
"flag_p10",
"image_p10",
"p10",
"border_p10",
"flag_p11",
"image_p11",
"p11",
"border_p11",
"flag_p12",
"image_p12",
"p12",
"border_p12",
"flag_p13",
"image_p13",
"p13",
"border_p13",
"flag_p14",
"image_p14",
"p14",
"border_p14",
"flag_p15",
"image_p15",
"p15",
"border_p15",
"flag_s1",
"image_s1",
"border_s1",
"flag_s2",
"image_s2",
"s2",
"border_s2",
"flag_s3",
"image_s3",
"s3",
"border_s3",
"flag_s4",
"image_s4",
"s4",
"border_s4",
"flag_s5",
"image_s5",
"s5",
"border_s5",
"flag_s6",
"image_s6",
"s6",
"border_s6",
"flag_s7",
"image_s7",
"s7",
"border_s7",
"flag_s8",
"image_s8",
"s8",
"border_s8",
"flag_s9",
"image_s9",
"s9",
"border_s9",
"flag_s10",
"image_s10",
"s10",
"border_s10",
"flag_s11",
"image_s11",
"s11",
"border_s11",
"flag_s12",
"image_s12",
"s12",
"border_s12",
"flag_s13",
"image_s13",
"s13",
"border_s13",
"flag_s14",
"image_s14",
"s14",
"border_s14",
"flag_s15",
"image_s15",
"s15",
"border_s15",
"today",
"footnotes2",
"symbol_caption",
"nested"
]
}
</templatedata>
{{cob}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
965378ebc164be211eeb082cae05a1663a245efc
Template:Infobox military conflict/doc
10
1510
2845
2023-09-27T01:07:25Z
w>Cinderella157
0
Undid revision 1177120633 by [[Special:Contributions/Vascoescatolico|Vascoescatolico]] ([[User talk:Vascoescatolico|talk]])Not for test
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use|16,100}}
{{Lua|Module:Infobox military conflict}}
__TOC__
==Usage==
{{Infobox military conflict
| conflict = Battle of Lützen
| partof = the [[Thirty Years' War]]
| image = Battle of Lutzen.jpg
| alt = Battle of Lutzen by Carl Whalbom depicting King Gustavus Aolphus falling from a horse mortally wounded in a melee
| image_size = 300px
| caption = The '' '''Battle of Lützen''' '' by [[Carl Wahlbom]] shows the death of King [[Gustavus Adolphus]] on 16 November 1632.
| date = 6 November ([[Old Style and New Style dates|O.S.]]) or 16 November ([[Old Style and New Style dates|N.S.]]), 1632
| place = Near [[Lützen]], southwest of [[Leipzig]]<br />(present-day [[Germany]])
| coordinates = {{coord|51|15|N|12|08|E|region:DE_type:city}}
| result = Protestant victory <br />(see {{blue|Aftermath}} section)
| combatant1 = {{flagicon|Sweden|1562}} [[Swedish Empire|Sweden]]<br />[[Protestant Union]]
| combatant2 = {{flag|Holy Roman Empire}}<br/>{{flagicon image|Catholic League (Germany).svg}} [[Catholic League (German)|Catholic League]]
| commander1 = {{flagicon|Sweden|1562}} [[Gustavus Adolphus]]{{KIA}}<br/>{{flagicon|Sweden|1562}} [[Dodo zu Innhausen und Knyphausen|Dodo von Knyphausen]]<br/>{{Flagicon|Electorate of Saxony}} [[Bernhard of Saxe-Weimar]]<br/>{{flagicon|Sweden|1562}} [[Robert Munro, 18th Baron of Foulis]]
| commander2 = {{flagicon|Holy Roman Empire}} [[Albrecht von Wallenstein]]<br/>{{flagicon|Holy Roman Empire}} [[Heinrich Holk]]<br/>{{flagicon|Holy Roman Empire}} [[Gottfried zu Pappenheim|Count Gottfried zu Pappenheim]]{{DOW}}
| strength1 = 12,800 infantry<br />6,200 cavalry<br />60 guns
| strength2 = 10,000 infantry<br />7,000 cavalry, plus 3,000 infantry and 2,000 cavalry on arrival<br />24 guns
| casualties1 = 3,400 dead and 1,600 wounded or missing
| casualties2 = Probably about the same as Swedish casualties{{fakeref|1}}
}}
A military conflict infobox (sometimes referred to as a warbox) may be used to summarize information about a particular military conflict (a battle, campaign, war, or group of related wars) in a standard manner.
Information summarized in an infobox should follow the general guidance for writing a [[Wikipedia:Manual of Style/Lead section|lead section]]. It should not "make claims" or present material not covered by the article. As with a lead section, there is some discretion in citing information in an infobox. The same guidance should be applied to an infobox as given for [[Wikipedia:Manual of Style/Lead section#Citations|citations in a lead section]]. Information in an infobox must conform with [[Wikipedia:Verifiability|verifiability]], [[Wikipedia:Neutral point of view|point-of-view]] and other policies.
Information in the infobox should not be "controversial". Refer the reader to an appropriate section in the article or leave the parameter blank rather than make an unsubstantiated or doubtful claim.
The infobox should be added using the {{tl|infobox military conflict}} template, as shown below:
<div style="width:250px;background:#dddddd;border: 1px solid black;padding:0.5em 1em 0.5em 1em"><syntaxhighlight lang="wikitext">
{{Infobox military conflict
| conflict =
| width =
| partof =
| image =
| image_size =
| alt =
| caption =
| date =
| place =
| coordinates = <!--Use the {{coord}} template -->
| map_type =
| map_relief =
| map_size =
| map_marksize =
| map_caption =
| map_label =
| territory =
| result =
| status =
| combatants_header =
| combatant1 =
| combatant2 =
| combatant3 =
| commander1 =
| commander2 =
| commander3 =
| units1 =
| units2 =
| units3 =
| strength1 =
| strength2 =
| strength3 =
| casualties1 =
| casualties2 =
| casualties3 =
| notes =
| campaignbox =
}}
</syntaxhighlight></div>
'''Note''': When using parameters, avoid the ambiguous abbreviation "N/A", and instead use "unknown" or "none". All subjective or qualitative judgements and numerical quantities or statistics must be cited to a reliable source (see [[WP:MILMOS#CITE]]).
===Parameters===
* '''conflict''' – the name of the conflict being described (e.g. "Battle of Lützen" or "World War I").
* '''width''' – ''optional'' – the width of the infobox, e.g. "400px"; defaults to: "315px".
* '''partof''' – ''optional'' – the larger conflict containing the event described in the article. For battles or campaigns, this should be the war during which the event takes place; for particularly large wars, this may include a theatre (e.g. "the Eastern Front of World War II"). For wars, the parameter may be used to link to a larger group of wars (e.g. the [[Italian War of 1521–26]] to the [[Italian Wars]]). It may be necessary to insert "the" before the name of the war for proper grammar.
* '''image''' – ''optional'' – an image for the warbox. Given in the form <code>Example.jpg</code>
* '''image_size''' – ''optional'' – a size for the image
* '''alt''' – ''optional'' – [[Wikipedia:Manual of Style/Accessibility/Alternative text for images|Alternative text for image]] that is accessible to [[screen reader]]s to help the [[visually impaired]]
* '''caption''' – ''optional'' – the text to be placed below the image.
* '''date''' – ''optional'' – the date of the conflict described. Convention is to give the actual date for battles and the years for wars, but this does not always apply.
* '''place''' – the location of the conflict. For conflicts covering a wide area, a general description (e.g. "France", or "Europe", or "Worldwide") may be used.
* '''coordinates''' – ''optional'' – the location of the structure, given as a coordinate pair by using {{tl|coord}} with ''display=inline,title''. Used to display the geographic location of the conflict and the location on a map added with the <code>map_type</code> parameter.
* '''map_type''' – ''optional'' – the base map to be used for the location map, e.g. "Scotland"; see {{tl|location map}} for more details.
* '''map_relief''' – ''optional'' – "yes" if the location map is a relief map; see {{tl|location map}} for more details.
* '''map_size''' – ''optional'' – width of the location map in pixels (px), e.g. "150"; defaults to: "220".
* '''map_mark''' – ''optional'' – the name of a file to use as the location map marker, e.g. Green_pog.svg; defaults to: "Red_pog.svg".
* '''map_marksize''' – ''optional'' – width of the location map marker in pixels (px), e.g. "10"; defaults to: "8".
* '''map_caption''' – ''optional'' – caption displayed below the location map; defaults to "Location within {{{map_type}}}", e.g. "Location within Scotland".
* '''map_label''' – ''optional'' – the label placed next to the marker on the location map.
* '''territory''' – ''optional'' – any changes in territorial control as a result of the conflict; this should not be used for overly lengthy descriptions of the peace settlement.
* '''action''' – ''optional'' – In case of Coup d'État, short description of ''modus operandi'', e.g. "...marched over the city...", "...dissolving the Congress of the Republic...", "...take the government hostage ...", "...put the country under military control ...", etc.
* '''result''' – ''optional'' – this parameter may use one of two standard terms: "X victory" or "Inconclusive". The term used is for the "immediate" outcome of the "subject" conflict and should reflect what the sources say. In cases where the standard terms do not accurately describe the outcome, a link or note should be made to the section of the article where the result is discussed in detail (such as "See the {{blue|Aftermath}} section"). Such a note can also be used in conjunction with the standard terms but should not be used to conceal an ambiguity in the "immediate" result. Do not introduce non-standard terms like "decisive", "marginal" or "tactical", or contradictory statements like "decisive tactical victory but strategic defeat". Omit this parameter altogether rather than engage in [[WP:NOR|speculation]] about which side won or by how much.
* '''status''' – ''optional'' – for ongoing conflicts, the current status of the conflict. This should not be used if a final result (above) is provided.
* '''combatants_header''' – ''optional'' – sets the header text for the combatants section. Default is "Belligerents". In case of Coup d'État, use "Government-Insurgents "
* '''combatant1'''/'''combatant2'''/'''combatant3''' – ''optional'' – the parties participating in the conflict. This is most commonly the countries whose forces took part in the conflict; however, larger groups (such as alliances or international organizations) or smaller ones (such as particular units, formations, or groups) may be indicated if doing so improves reader understanding. When there is a large number of participants, it may be better to list only the three or four major groups on each side of the conflict, and to describe the rest in the body of the article. The '''combatant3''' field may be used if a conflict has three distinct "sides", and should be left blank on other articles. Combatants should be listed in order of importance to the conflict, be it in terms of military contribution, political clout, or a recognized chain of command. If differing metrics can support alternative lists, then ordering is left to the editors of the particular article. The practice of writing in a "Supported by" subheading is deprecated (see [[Template talk:Infobox military conflict#RfC on "supported by" being used with the belligerent parameter|discussion]]).
** '''combatant1a'''/'''combatant2a'''/'''combatant3a''' – ''optional'' – in cases where the parties significantly changed over the course of the conflict, these subsidiary fields may be used to provide additional rows for the '''combatant''N''''' fields (above).
** '''combatant1b'''/'''combatant2b'''/'''combatant3b''' – ''optional'' – additional row, as above.
** '''combatant1c'''/'''combatant2c'''/'''combatant3c''' – ''optional'' – additional row, as above.
** '''combatant1d'''/'''combatant2d'''/'''combatant3d''' – ''optional'' – additional row, as above.
** '''combatant1e'''/'''combatant2e'''/'''combatant3e''' – ''optional'' – additional row, as above.
* '''commander1'''/'''commander2'''/'''commander3''' – ''optional'' – the commanders of the military forces involved. For battles, this should include military commanders (and other officers as necessary). For wars, only prominent or notable leaders should be listed, with an upper limit of about seven per combatant column recommended. Ranks and position titles should be omitted. The {{tl|KIA}} and {{tl|POW}} templates may be included immediately after the names of commanders who were killed in action or surrendered and were taken prisoner, respectively. The '''commander3''' field can only be used if the '''combatant3''' field is set.
** '''commander1a'''/'''commander2a'''/'''commander3a''' – ''optional'' – in cases where the commanders significantly changed over the course of the conflict, these subsidiary fields may be used to provide additional rows for the '''commander''N''''' fields (above).
** '''commander1b'''/'''commander2b'''/'''commander3b''' – ''optional'' – additional row, as above.
** '''commander1c'''/'''commander2c'''/'''commander3c''' – ''optional'' – additional row, as above.
** '''commander1d'''/'''commander2d'''/'''commander3d''' – ''optional'' – additional row, as above.
** '''commander1e'''/'''commander2e'''/'''commander3e''' – ''optional'' – additional row, as above.
* '''units1'''/'''units2'''/'''units3''' – ''optional'' – the units or formations involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field. The '''units3''' field can only be used if the '''combatant3''' field is set.
* '''strength1'''/'''strength2''' – ''optional'' – the numerical strength of the units involved.
:* '''polstrength1'''/'''polstrength2''' – ''optional'' – In case of Coup d'Etat, political organizations that supported the government (1) respective the insurgents (2).
:* '''milstrength1'''/'''milstrength2''' – ''optional'' – In case of Coup d'Etat, military units that supported the government (1) respective the insurgents (2).
* '''strength3''' – ''optional'' – if '''combatant3''' is set, this is a third strength field identical to the two above; if it is '''''not''''' set, this is an alternate combined field for use where only the total participation in a conflict is known.
* '''casualties1'''/'''casualties2''' – ''optional'' – casualties suffered (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Note that this section of the infobox is headed "Casualties and losses". Terms such as "dead" (or "killed"), "wounded", or "captured" should be used in place of abbreviations such as "KIA" or "POW". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc.
* '''casualties3''' – ''optional'' – if '''combatant3''' is set, this is a third casualty field identical to the two above; if it is '''''not''''' set, this is an alternate combined field for use where only the total casualties of a conflict are known, or where civilian casualties cannot be directly attributed to either side.
* '''notes''' – ''optional'' – optional field for further notes; this should only be used in exceptional circumstances.
* '''campaignbox''' – ''optional'' – optional field for appending a [[WP:CAMPAIGN|campaignbox template]] to the bottom of the infobox, which allows both boxes to float as a single element (useful if there are subsequent left floating images, which would otherwise not be able to float above the campaign box); the template must be specified in the format <nowiki>{{Campaignbox XYZ}}</nowiki>.<noinclude>
[[Category:WikiProject Military history template instructions|Military conflict infobox]]
</noinclude>{{Campaign/doc|noheader=yes}}
{{Operational plan/doc|noheader=yes}}
==Microformat==
{{UF-hcal-geo}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "Summarize information about a particular military conflict (a battle, campaign, war, or group of related wars).",
"format": "{{_\n| _________________ = _\n}}\n",
"params": {
"conflict": {
"label": "Conflict",
"description": "The name of the conflict being described.",
"type": "string/line",
"required": true
},
"width": {
"label": "Width",
"description": "Width of the infobox.",
"type": "string",
"default": "315px",
"required": false
},
"partof": {
"label": "Part of",
"description": "The larger conflict containing the event described in the article.",
"type": "wiki-page-name",
"required": false
},
"image": {
"label": "Image",
"description": "An image for the warbox given in the form Example.jpg.",
"type": "wiki-file-name",
"required": false
},
"image_size": {
"label": "Image size",
"description": "The size of the image",
"type": "string",
"required": false
},
"alt": {
"label": "Alt",
"description": "Alternative textual description of the image",
"type": "string",
"required": false
},
"caption": {
"label": "Caption",
"description": "The text to be placed below the image.",
"type": "string",
"required": false
},
"date": {
"label": "Date",
"description": "The date of the conflict described. Convention is to give the actual date for battles and the years for wars, but this does not always apply.",
"type": "string",
"required": false
},
"place": {
"label": "Place",
"description": "The location of the conflict.",
"type": "string",
"required": true
},
"coordinates": {
"label": "Coordinates",
"description": "The location of the structure, given as a coordinate pair by using {{coord}} with display=inline,title.",
"type": "string",
"required": false
},
"map_type": {
"label": "Map Type",
"description": "The base map to be used for the location map, e.g. \"Scotland\"; see {{location map}} for more details.",
"type": "string",
"required": false
},
"map_relief": {
"label": "Map Relief",
"description": "\"yes\" if the location map is a relief map.",
"type": "string",
"required": false
},
"map_size": {
"label": "Map Size",
"description": "Width of the location map in pixels (px).",
"type": "number",
"default": "220",
"required": false
},
"map_mark": {
"label": "Map Marker",
"description": "File to use as the location map marker.",
"type": "string",
"default": "red_pog.svg",
"required": false
},
"map_marksize": {
"label": "Map Marker Size",
"description": "Width of the location map marker in pixels (px).",
"type": "number",
"default": "8",
"required": false
},
"map_caption": {
"label": "Map Caption",
"description": "Caption displayed below the location map.",
"type": "string",
"default": "Location within {{{map_type}}}",
"required": false
},
"map_label": {
"label": "Map Label",
"description": "The label placed next to the marker on the location map.",
"type": "string/line",
"required": false
},
"territory": {
"label": "Territory",
"description": "Any changes in territorial control as a result of the conflict; this should not be used for overly lengthy descriptions of the peace settlement.",
"type": "string",
"required": false
},
"result": {
"label": "Result",
"description": "This parameter may use one of two standard terms: \"X victory\" or \"Inconclusive\". The term used is for the \"immediate\" outcome of the \"subject\" conflict and should reflect what the sources say. In cases where the standard terms do not accurately describe the outcome, a link or note should be made to the section of the article where the result is discussed in detail (such as \"See the Aftermath section\"). Such a note can also be used in conjunction with the standard terms but should not be used to conceal an ambiguity in the \"immediate\" result. Do not introduce non-standard terms like \"decisive\", \"marginal\" or \"tactical\", or contradictory statements like \"decisive tactical victory but strategic defeat\". Omit this parameter altogether rather than engage in speculation about which side won or by how much.",
"type": "string",
"required": false
},
"status": {
"label": "Status",
"description": "For ongoing conflicts, the current status of the conflict.",
"type": "string/line",
"required": false
},
"combatants_header": {
"label": "\"Combatants\" Header Text",
"description": "Sets the header text for the combatants section.",
"type": "string/line",
"default": "Belligerents",
"required": false
},
"combatant1": {
"label": "Combatant 1",
"description": "A party participating in the conflict.",
"type": "string",
"required": false
},
"combatant2": {
"label": "Combatant 2",
"description": "A party participating in the conflict.",
"type": "string",
"required": false
},
"combatant3": {
"label": "Combatant 3",
"description": "A party participating in the conflict. (only if the conflict has three distinct \"sides\")",
"type": "string",
"required": false
},
"combatant1a": {
"label": "Combatant 1a",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.",
"type": "string",
"required": false
},
"combatant2a": {
"label": "Combatant 2a",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.",
"type": "string",
"required": false
},
"combatant3a": {
"label": "Combatant 3a",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.",
"type": "string",
"required": false
},
"combatant1b": {
"label": "Combatant 1b",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.",
"type": "string",
"required": false
},
"combatant2b": {
"label": "Combatant 2b",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.",
"type": "string",
"required": false
},
"combatant3b": {
"label": "Combatant 3b",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.",
"type": "string",
"required": false
},
"combatant1c": {
"label": "Combatant 1c",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.",
"type": "string",
"required": false
},
"combatant2c": {
"label": "Combatant 2c",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.",
"type": "string",
"required": false
},
"combatant3c": {
"label": "Combatant 3c",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.",
"type": "string",
"required": false
},
"combatant1d": {
"label": "Combatant 1d",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 1 field.",
"type": "string",
"required": false
},
"combatant2d": {
"label": "Combatant 2d",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 2 field.",
"type": "string",
"required": false
},
"combatant3d": {
"label": "Combatant 3d",
"description": "In cases where the parties significantly changed over the course of the conflict, this field may be used to provide additional rows for the Combatant 3 field.",
"type": "string",
"required": false
},
"commander1": {
"label": "Commander of Combatant 1",
"description": "The commanders of the military forces of Combatant (1) involved.",
"type": "string",
"required": false
},
"commander2": {
"label": "Commander of Combatant 2",
"description": "The commanders of the military forces of Combatant 2 involved.",
"type": "string",
"required": false
},
"commander3": {
"label": "Commander of Combatant 3",
"description": "The commanders of the military forces of Combatant 3 involved.",
"type": "string",
"required": false
},
"units1": {
"label": "Units of Combatant 1",
"description": "The units or formations of Combatant 1 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.",
"type": "string",
"required": false
},
"units2": {
"label": "Units of Combatant 2",
"description": "The units or formations of Combatant 2 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.",
"type": "string",
"required": false
},
"units3": {
"label": "Units of Combatant 3",
"description": "The units or formations of Combatant 3 involved. If a large number of distinct formations is present, it may be better to reference an order of battle in the body of the article than to include the entire list in this field.",
"type": "string",
"required": false
},
"strength1": {
"label": "Strength of Combatant 1",
"description": "The numerical strength of Combatant 1.",
"type": "string",
"required": false
},
"strength2": {
"label": "Strength of Combatant 2",
"description": "The numerical strength of Combatant 2.",
"type": "string",
"required": false
},
"strength3": {
"label": "Strength of Combatant 3",
"description": "If Combatant 3 is set, this field is for the numerical strength of Combatant 3. If Combatant 3 is not set, this is an alternate combined field for use where only the total participation in a conflict is known.",
"type": "string",
"required": false
},
"casualties1": {
"label": "Casualties of Combatant 1",
"description": "Casualties suffered by Combatant 1 (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc.",
"type": "string",
"required": false
},
"casualties2": {
"label": "Casualties of Combatant 2",
"description": "Casualties suffered by Combatant 2 (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc.",
"type": "string",
"required": false
},
"casualties3": {
"label": "Casualties of Combatant 3",
"description": "If Combatant 3 is set, this field is for the casualties suffered by Combatant 3, (including: dead, wounded, missing, captured and civilian deaths) and equipment losses. Terms such as \"dead\" (or \"killed\"), \"wounded\", or \"captured\" should be used in place of abbreviations such as \"KIA\" or \"POW\". Where equipment losses are reported, this should be confined to major or significant types of equipment broadly categorized such as: tanks, guns (artillery pieces), aircraft, destroyers etc. If combatant3 is not set, this is an alternate combined field for use where only the total casualties of a conflict are known, or where civilian casualties cannot be directly attributed to either side.",
"type": "string",
"required": false
},
"notes": {
"label": "Notes",
"description": "Optional field for further notes; this should only be used in exceptional circumstances.",
"type": "string",
"required": false
},
"campaignbox": {
"label": "Campaignbox",
"description": "Optional field for appending a campaignbox template to the bottom of the infobox, which allows both boxes to float as a single element (useful if there are subsequent left floating images, which would otherwise not be able to float above the campaign box); the template must be specified in the format {{Campaignbox XYZ}}.",
"type": "string",
"required": false
}
}
}</templatedata>
{{Collapse bottom}}
==See also==
*{{tl|Infobox military operation}}
*{{tl|Infobox civil conflict}}
*{{tl|Infobox civilian attack}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:War and conflict infobox templates| ]]
[[Category:Templates based on the Infobox Lua module]]
}}</includeonly>
b7bc1bfd8830e6f3810fed38740c84ef509585dd
Megali Idea
0
1083
2365
2023-09-27T15:23:43Z
69.84.59.34
0
/* Fall of Constantinople */ minor grammatical changes
wikitext
text/x-wiki
{{Short description|Irredentist concept}}
{{Redirect|Greater Greece|the Ancient Greek settlements in southern Italy|Magna Graecia}}
[[File:ParisPeace-Venizelos-Map.png|thumb|Map showing Greek ambitions at the Paris Peace Conference after WWI, 1919]]
[[File:Map of Greater Greece.png|thumb|Map of Megali Hellas (Greater Greece) as proposed at the Paris Peace Conference of 1919 by [[Eleftherios Venizelos]], the leading major proponent of the Megali Idea at the time.]]
[[File:Map Greece expansion 1832-1947-en.svg|thumb|The territorial expansion of Greece, 1832–1947.]]
The '''Megali Idea''' ({{lang-el|Μεγάλη Ιδέα|Megáli Idéa|Great Idea}})<ref>{{cite book |url=https://books.google.com/books?id=AjDYlMB9amwC |title=The Mediterranean in the Age of Globalization: Migration, Welfare & Borders |last=Mateos |first=Natalia Ribas |publisher=[[Transaction Publishers]]|isbn=9781412837750 }}</ref> is a [[nationalist]]<ref>{{Citation |last=Miller |first=James Edward |title=Introduction: Manifest Destiny Meets the Megali Idea |date=2009-02-01 |url=http://dx.doi.org/10.5149/9780807887943_miller.6 |work=The United States and the Making of Modern Greece |pages=1–22 |publisher=University of North Carolina Press |doi=10.5149/9780807887943_miller.6 |isbn=9780807832479 |access-date=2022-10-21}}</ref><ref>{{Cite book |last=A. |first=Jenkins, Mary |url=http://worldcat.org/oclc/35675237 |title=To megali idea - dead or alive? : the domestic determinants of Greek foreign policy |date=1994 |publisher=Naval Postgraduate School |oclc=35675237}}</ref> and [[irredentist]] concept that expresses the goal of reviving the [[Byzantine Empire]],<ref>Roumen Daskalov, Tchavdar Marinov, Entangled Histories of the Balkans - Volume One: National Ideologies and Language Policies; BRILL, 2013; {{ISBN|900425076X}}, p. 200.</ref> by establishing a Greek state, which would include the large Greek populations that were still under [[Ottoman Empire|Ottoman]] rule after the end of the [[Greek War of Independence]] (1821–1829) and all the regions that had large Greek populations (parts of the southern [[Balkans]], [[Anatolia]] and [[Cyprus]]).<ref>{{Cite web|url=https://o.nsd.no/european_election_database/country/greece/introduction.html|title=European Election Database - Background - Greece|website=o.nsd.no}}</ref>
The term appeared for the first time during the debates of [[Prime Ministers of Greece|Prime Minister]] [[Ioannis Kolettis]] with [[Otto of Greece|King Otto]] that preceded the promulgation of the 1844 constitution.<ref name="BA0">[https://www.britannica.com/place/Greece/Building-the-nation-1832-1913 ''History of Greece''] Encyclopædia Britannica Online</ref> It came to dominate foreign relations and played a significant role in domestic politics for much of the first century of Greek independence. The expression was new in 1844 but the concept had roots in the Greek popular psyche, which long had hopes of liberation from Ottoman rule and restoration of the Byzantine Empire.<ref name="BA0" />
<blockquote>Πάλι με χρόνια με καιρούς,
:πάλι δικά μας θα 'ναι!
(''Once more, as years and time go by, once more they shall be ours'').<ref name="BK0">D. Bolukbasi and D. Bölükbaşı, ''Turkey And Greece: The Aegean Disputes'', Routledge Cavendish 2004</ref></blockquote>
The Megali Idea implies establishing a Greek state, which would be a territory encompassing mostly the former Byzantine lands from the [[Ionian Sea]] in the west to Anatolia and the [[Black Sea]] to the east and from [[Thrace]], [[Macedonia (region)|Macedonia]] and [[Epirus]] in the north to [[Crete]] and [[Cyprus]] to the south. This new state would have [[Constantinople]] as its capital: it would be the "Greece of Two Continents and Five Seas" ([[Europe]] and [[Asia]], the Ionian, [[Aegean Sea|Aegean]], [[Sea of Marmara|Marmara]], Black and [[Libyan Sea|Libyan]] Seas). If realized, this would expand modern Greece to roughly the same size and extent of the later Byzantine Empire, after its [[Byzantine Empire under the Palaiologos dynasty|restoration]] in 1261 AD.
The Megali Idea dominated foreign policy and domestic politics of [[Greece]] from the [[Greek War of Independence|War of Independence]] in the 1820s through the [[Balkan wars]] in the beginning of the 20th century. It started to fade after the [[Greco-Turkish War (1919–1922)]], followed by the [[population exchange between Greece and Turkey]] in 1923. Despite the end of the Megali Idea project in 1922, by then the Greek state had expanded four times, either through military conquest or diplomacy (often with British support). After the creation of Greece in 1830, it annexed the [[Ionian Islands]] ([[Treaty of London, 1864]]), [[Thessaly]] ([[Convention of Constantinople (1881)]]), [[Macedonia (Greece)|Macedonia]], [[Crete]], [[Epirus (region)|(southern) Epirus]] and the Eastern Aegean Islands ([[Treaty of Bucharest (1913)|Treaty of Bucharest]]), and [[Western Thrace]] ([[Treaty of Neuilly]], 1920). The [[Dodecanese]] were annexed after the Second World War ([[Treaty of Peace with Italy, 1947]]).
A related concept is ''[[enosis]]''.
==Fall of Constantinople==
{{Main|Fall of Constantinople}}
[[File:Zonaro GatesofConst.jpg|thumb|180px|Sultan [[Mehmed the Conqueror|Mehmed II]]'s entry into Constantinople.]]
The [[Byzantine Empire]] was [[Division of the Roman Empire|Eastern Roman]] in origin and was called the "Roman Empire" by its inhabitants, though often not by the [[Latin West]], which regarded it as [[Greek East|Greek]]. After its fall, [[Hieronymus Wolf]] popularized the usage of "Byzantium". An informal cultural division had existed within the Roman Empire for centuries before the official political split of the Empire into Eastern and Western halves. Although Latin was the official language of the empire, Greek was the lingua franca in the East and was regularly used alongside Latin in official business. Following the adoption of Christianity in the 4th century, Greek was also the dominant liturgical language, as exemplified by the fact the New Testament was written in Greek. [[Byzantium under the Heraclians|Greek replaced Latin as the official language]] in AD 620.
Byzantium held out against numerous invasions over the centuries and during the 10th and early 11th centuries managed to reclaim considerable territory in the Balkans, Anatolia and to a lesser extent Syria. The Turkish invasion of the mid to late 11th century however greatly weakened the Empire and, although it partially recovered under the [[Byzantine Empire under the Komnenos dynasty|Komnenos dynasty]], it never managed to regain control of the Anatolian interior, cutting the empire off from a valuable source of manpower and tax revenue. In 1204 Constantinople was besieged and sacked during the [[Fourth Crusade]] and became the Capital of what has come to be known as the [[Latin Empire]], a French dominated crusader state, until it was liberated by the [[Empire of Nicaea]], the Byzantine state in exile, in 1261. However, Byzantine strength would rapidly diminish towards the end of the 13th century and evaporated almost entirely during the 14th century, to the extent that by 1400 little remained of the Empire except Constantinople, the city’s immediate surroundings and some small territories in modern-day Greece. In 1453 the Ottoman Turks besieged and captured Constantinople officially marking the end of the Roman Empire and also the end of Greek predominance in the city; although it would continue to have a considerable [[Greeks in Turkey|Greek speaking population]] and the Patriarch of Constantinople continued to reside in the city.
== Greeks under Ottoman rule==
{{Further|Ottoman Greece|Greek Plan}}
[[File:Subject Nationalities of the German Alliance (1917) (cropped).jpg|thumb|Ethnic map of [[Asia Minor]] in 1917.{{Unbulleted list|{{legend|black|Bulgars and Turks}}|{{legend|maroon|Greeks}}|{{legend|yellow|Armenians}}|{{legend|teal|Kurds}}|{{legend|orange|Lazes}}|{{legend|olive|Arabs}}|{{legend|green|Nestorians}}}}]]
Under the ''[[Millet (Ottoman Empire)|millet]]'' system which was in force during the [[Ottoman Empire]], the population was classified according to religion rather than language or ethnicity. Orthodox Greeks were seen as part of the ''millet-i Rûm'' (literally "Roman community") which included all [[Orthodoxy#Christianity|Orthodox Christians]], including beside Greeks also [[Bulgarians]], [[Serbs]], [[Vlachs]], [[Slavs]], [[Georgians]], [[Romanians]] and [[Albanians]], despite their differences in ethnicity and language and despite the fact that the religious hierarchy was Greek dominated. It is not clear to what extent one can speak of a Greek identity during those times as opposed to a Christian or Orthodox identity.<ref>{{cite book |title=Greece: The Modern Sequel |last1=Koliopoulos |first1=John S. |last2=Veremis |first2=Thanos |year=2007 |publisher=C Hurst & Co Publishers Ltd }}</ref> In the late 1780s, [[Catherine II of Russia]] and [[Joseph II of Austria]] intended to reclaim the Byzantine heritage and restore the Greek statehood as part of their joint [[Greek Plan]].
During the Middle Ages and the Ottoman period, Greek-speaking Christians identified as ''Romans'' and thought of themselves as the descendants of the [[Roman Empire]] (including the medieval [[Eastern Roman Empire]]). The term ''Roman'' was often interpreted as synonymous with ''Christian'' throughout Europe and the Mediterranean during this time. The terms ''Greek'' or ''Hellene'' were largely seen by Ottoman Christians as referring to the ancient pagan peoples of the region. This changed during the late stages of the Ottoman Empire and the emergence of the Greek independence movement.<ref>{{cite book |title=Standard Languages and Multilingualism in European History |date=31 May 2012 |editor1=Honing, Matthias |editor2=Vogl, Ulrik |editor3=Moliner, Olivier |publisher=John Benjamins |url=https://books.google.com/books?id=tXAc72rjwBcC |page=163|isbn=9789027273918 }}</ref><ref>{{cite book |title=Hellenisms: Culture, Identity, and Ethnicity from Antiquity to Modernity |year=2008 |editor=Zacharia, Katerina |publisher=Ashgate Publishing |url=https://books.google.com/books?id=H1fGJRxUG6wC |page=240|isbn=9780754665250 }}</ref>
==Greek War of Independence and later==
{{Main|Greek War of Independence|First Hellenic Republic|Kingdom of Greece}}
{{Quote box2
|width= 30em |border= 1px |align= right |halign= left
|quote= "The Kingdom of Greece is not Greece; it is merely a part: the smallest, poorest part of Greece. The Greek is not only he who inhabits the Kingdom, but also he who inhabits [[Ioannina]], [[Salonika]] or [[Serres]] or [[Adrianople]] or [[Constantinople]] or [[Trabzon|Trebizond]] or [[Crete]] or [[Samos]] or any other region belonging to the Greek history or the Greek race... There are two great centres of Hellenism. [[Athens]] is the capital of the Kingdom. Constantinople is the great capital, the dream and hope of all Greeks."
|source=Kolettis voicing his convictions in the National Assembly in January 1844.<ref>Smith M., ''Ionian Vision'', (1999), p. 2</ref>}}
After the [[Greek War of Independence]] ended in 1829, a new southern Greek state was established, with assistance from the [[United Kingdom of Great Britain and Ireland|British Empire]], [[July Monarchy|Kingdom of France]], and [[Imperial Russia]]. However, this new Greek state under [[John Capodistrias]] after the Greek War of Independence was, with Serbia, one of the only two countries of the era whose population was smaller than the population of the same ethnicity outside its borders; most ethnic Greeks still resided within the borders of the Ottoman Empire. This version of Greece was designed by the [[Great Powers]], who had no desire to see a larger Greek state replace the Ottoman Empire.
The Great Idea embodied a desire to bring all ethnic Greeks into the Greek state, and subsequently revive the [[Byzantine Empire]]; it applied specifically to the Greeks in [[Epirus]], [[Thessaly]], [[Macedonia (region)|Macedonia]], [[Thrace]], the [[Aegean Islands]], [[Crete]], [[Cyprus]], parts of [[Anatolia]], and the city of [[Istanbul|Constantinople]] (which would replace [[Athens]] as the capital).
When the young Danish prince [[George I of Greece|Wilhelm Georg]] was elected king in 1863, the title offered to him by the Greek National Assembly was ''not'' "King of Greece", the title of his deposed predecessor, King [[Otto of Greece|Otto]]; but rather "King of ''the [[Hellene]]s''". Implicit in the wording was that George I was to be king of all Greeks, regardless of whether they then lived within the borders of his new kingdom.
The first additional areas to be incorporated into the Kingdom were the [[Ionian islands]] in 1864, and later [[Thessaly]] with the [[Treaty of Berlin (1878)]].
==Revolts, Cretan crisis and Greco-Turkish War (1897)==
{{See also|Epirus Revolt of 1854|Cretan Revolt (1866–69)|Epirus Revolt of 1878|1878 Greek Macedonian rebellion|Greco-Turkish War of 1897|Macedonian Struggle}}
[[File:P. A. de László - Constantine I of Greece, King of the Hellenes.jpg|thumb|140px|[[Constantine I of Greece]] was called ''Constantine XII'' by his supporters, the purported successor to the Emperor [[Constantine XI Palaiologos]]]]
[[File:Elefteriosvenizelos--victoryofvenizel00seliuoft.jpg|thumb|140px|[[Eleftherios Venizelos]] tried to realize the Megali Idea]]
In January 1897, violence and disorder were escalating in Crete, polarizing the population. Massacres of the Christian population took place in Chania and Rethimno. The Greek government, pressured by public opinion, intransigent political elements, extreme nationalist groups (e.g. [[Ethniki Etairia]]) and with the Great Powers reluctant to intervene, decided to send warships and personnel to assist the Cretans. The Great Powers had no option then but to proceed with the occupation of the island, but they were too late. A Greek force of 1,500 men had landed at Kolymbari on 1 February 1897, and its commanding officer, Colonel [[Timoleon Vassos]], declared that he was taking over the island "in the name of the King of the Hellenes" and that he was announcing the union of Crete with Greece. This led to an uprising that spread immediately throughout the island. The Great Powers finally decided to land their troops and stopped the Greek army force from approaching Chania. At the same time their fleets blockaded Crete, preventing both Greeks and Turks from bringing any more troops to the island.
The Ottoman Empire, in reaction to the rebellion of Crete and the assistance sent by Greece, relocated a significant part of its army in the Balkans to the north of Thessaly, close to the borders with Greece. Greece in reply reinforced its borders in Thessaly. However, irregular Greek forces and followers of the Megali Idea acted without orders and raided Turkish outposts, leading the Ottoman Empire to declare war on Greece; the war is known as the [[Greco-Turkish War of 1897]]. The Turkish army, far outnumbering the Greek, was also better prepared, due to the recent reforms carried out by a German mission under [[Colmar Freiherr von der Goltz|Baron von der Goltz]]. The Greek army fell back in retreat. The other Great Powers then intervened and an armistice was signed in May 1897. The war, however, only ended in December of that year.
The military failure in the Greco-Turkish war cost Greece small territorial losses along the border line in northern Thessaly, and a large sum of financial reparations that wrecked Greece's economy for years, while giving no lasting solution to the Cretan Question. The Great Powers (Britain, France, Russia, and Italy) in order to prevent future clashes and trying to avoid the creation of a revanchist climate in Greece, imposed what they thought of as a lasting solution; Crete was proclaimed an autonomous ''[[Cretan State]]''. The four Great Powers assumed the administration of Crete; and, in a decisive diplomatic victory for Greece, Prince George of Greece (second son of King George I) became High Commissioner.
==Early 20th century==
===Balkan Wars===
{{Main|Greece in the Balkan Wars}}
[[File:Maximal Greek claims in Epirus and Macedonia.png|thumb|200px|Greek claims in Epirus and Macedonia after the first Balkan war]]
[[File:New Greece.jpg|thumb|200px|Poster celebrating the "New Hellas" after the [[Balkan Wars]].]]
A major proponent of the Megali Idea was [[Eleftherios Venizelos]], under whose leadership Greek territory doubled in the [[Balkan Wars]] of 1912–13 — southern [[Epirus]], [[Crete]], [[Lesbos]], [[Chios]], [[Ikaria]], [[Samos]], [[Samothrace]], [[Lemnos]] and the majority of [[Macedonia (region)|Macedonia]] were attached to Greece. Born and raised in Crete, in 1909 Venizelos was already a prominent Cretan and had influence in mainland Greece. As such, he was invited after the [[Goudi coup]] in 1909 by the Military League to become Prime Minister of Greece. Venizelos pressed forward a series of reforms in society, as well as the military and administration, which helped Greece succeed in its goals during the Balkan Wars.
===World War I===
{{Main|Greece during World War I|Treaty of Sèvres}}
[[File:Greece in the Treaty of Sèvres.jpg|thumb|200px|Map of Megali Hellas after the [[Treaty of Sèvres]] and featuring a picture of [[Eleftherios Venizelos]].]]
Following the Greek gains in the Balkan Wars, the Ottomans began to persecute ethnic Greeks living in the Empire, which led to [[ethnic cleansing]] in the [[Greek genocide]]. This persecution continued into [[World War I]] when the Ottomans declared for the [[Central Powers]] on late 1914. Greece remained neutral until 1917 when they joined the [[Allies of World War I|Allies]]. Refugees reports of Turkish atrocities as well as the Allied victory in [[World War I]] seemed to promise an even greater realization of the Megali Idea. Greece gained a foothold in Asia Minor with a protectorate over [[Smyrna]] and its hinterland. Following 5 years of Greek administration, a referendum was to be held to determine whether the territory would revert to Ottoman control or join Greece. Greece also gained the islands of [[Imbros]] and [[Tenedos]], [[Western Thrace|Western]] and [[Eastern Thrace]], the border then drawn a few miles from the walls of [[Constantinople]].
===Greco-Turkish War (1919–1922)===
{{Main|Greco-Turkish War (1919–1922)|Great Fire of Smyrna|Treaty of Lausanne|Population exchange between Greece and Turkey}}
[[File:Izmir15Mayis1919.jpg|thumb|200px|Greek soldiers in Smyrna, May 1919.]]
Greece's efforts to take control of Smyrna in accordance with the Treaty of Sèvres were thwarted by [[Turkish revolutionaries]], who were resisting the Allies. The Turks finally prevailed and expelled the Greeks from Anatolia during the [[Greco-Turkish War (1919–1922)]] (part of the [[Turkish War of Independence]]). The war was concluded by the [[Treaty of Lausanne]] which saw Greece cede Eastern Thrace, Imbros, Tenedos and [[Smyrna]] to the nascent Turkish Republic. To avoid any further territorial claims, both Greece and Turkey engaged in an "[[exchange of populations]]": During the conflict, 151,892 Greeks had already fled Asia Minor. The Treaty of Lausanne moved 1,104,216 Greeks from Turkey,<ref>André Billy, ''La Grèce'', Arthaud, 1937, p. 188.</ref> while 380,000 Turks left the Greek territory for Turkey. The transfers ended any further appetite for pursuing the concept of a Greater Greece and ended the 3000 year Greek habitation of Asia Minor. Further population exchanges occurred after World War I, including 40,027 Greeks from Bulgaria, 58,522 from Russia (because of the defeat of the [[White Army]] led by [[Pyotr Wrangel]]) and 10,080 from other lands (for example [[Dodecanese]] or [[Albania]]), while 70,000 Bulgarians from [[Thrace]] and [[Macedonia (Greece)|Macedonia]] had moved to [[Bulgaria]].<ref>''The [[Treaty of Neuilly-sur-Seine]] led to an exchange of 50,000 Greeks for 70,000 Bulgarians between the two countries.'' For more see: Rutsel Silvestre, J. Martha; The Financial Obligation in International Law, Oxford University Press, 2015; {{ISBN|0191055956}}, p. 70.</ref> From the Bulgarian refugees ca. 66,000 were from Greek Macedonia.<ref>"''The second wave of Bulgarian refugees took place in the 1920s, following the signing of the Neilly Treaty (1919) concerning the so-called "voluntary" exchange of population between Greece and Bulgaria. Of them 66,126 people from Greek Macedonia.''" For more see: Victor Roudometof, Collective Memory, National Identity, and Ethnic Conflict: Greece, Bulgaria, and the Macedonian Question; Greenwood Publishing Group, 2002
{{ISBN|0275976483}}, p. 97.</ref>
The immediate reception of refugees to Greece cost 45 million francs, so the League of Nations arranged for a loan of 150 million francs to aid settlement of refugees. In 1930, Venizelos even went on an official visit to [[Turkey]], where he proposed that [[Mustafa Kemal Atatürk|Mustafa Kemal]] be awarded the [[Nobel Peace Prize]].
The Greek novelist [[Yiorgos Theotokas]] described the psychological impact of the defeat of 1922:<blockquote>"For a short time, while the Treaty of Serves ran its joyful but uncertain course, it seemed to them that the...long-buried hopes of their ancestors were to be fulfilled. But the terrible summer of 1922 came all too soon. From the hermitage of Arsenios they watched, tense with anxiety, the daily unfolding of the national tragedy, the last desperate efforts of the Royalist Governments of Greece to save the situation, the failure of King Constantine's attempt to take Constantinople, and the final Catastrophe.<br>In mid-August Mustapha Kemal broke through the Greek front and the Greek army, exhausted by ten years of warfare and the privations of the Asia Minor campaign, was vanquished in two weeks. The Turks, advancing rapidly, recaptured in quick succession Afion-Karahisar, Eski-Shehir, Kiutahia, Brussa, Oushak—and then Smyrna! Once again the banners of Islam floated proudly, tauntingly, over the Aegean coast opposite Chios and Mytilene. The whole of Ionia was in flames. Slaughter and pillage descended on the smiling city of Smyrna and in a few short days turned it into a ruin...As day succeeded day, Greece seemed to have become paralyzed, to have lost all will, all ability to resist the blows of fate. The swiftness of the catastrophe completely overwhelmed the State, flooded as it was by the thousands of fleeting soldiers and refugees who sought shelter on the Greek coasts.The nation was plunged into deep despair...<br>Greece had lost her big gamble and had been uprooted from Asia Minor. St. Sophia remained in the hands of the Moslems. The brilliant plans of 1918 were mocking visions, hallucinations, dreams. And the return of reality was truly heartbreaking. The tale of the years was not yet told, then, the historic hour, the fulfillment of the Great Idea, the moment they had longed for with such faith and such anxiety for five tortured, bloody centuries, had not yet come! It was all a lie!"<ref>Kaloudis, George "Ethnic Cleansing in Asia Minor and the Treaty of Lausanne" p.59-89 from ''International Journal on World Peace'', Volume 31, No. 1, March 2014 p.83-84</ref></blockquote>
== World War II, annexation of Dodecanese and Cyprus dispute ==
{{See also|Military history of Greece during World War II|EOKA|1974 Cypriot coup d'état}}
Although the Great Idea ceased to be a driving force behind Greek foreign policy, some remnants continued to influence Greek foreign policy throughout the remainder of the 20th century.
Thus, after his coup d'état of 4 August 1936, [[Ioannis Metaxas]] proclaimed the advent of the "Third Hellenic Civilization", similar to Adolf Hitler's Third Reich (influenced by [[pan-germanism|pan-Germanism]]).<ref>R. Clogg, p. 118.</ref> The attack by Italy from Albania and the Greek victories enabled Greece to conquer, during the winter of 1940–1941, parts of southern [[Albania]] ([[Northern Epirus]], as it is identified by [[Greeks]]) which were administered as a province of Greece for a short time until the German offensive of April 1941.
The occupation, resistance and the [[Greek civil war|civil war]] initially put the Great Idea in the background. Nevertheless, another very good diplomatic performance by the Greek side at the [[Paris Peace Conference, 1946]] secured a further enlargement of Greek territory, in the form of the Dodecanese Islands, despite the very strong opposition of [[Vyacheslav Molotov]] and the Soviet delegates.<ref>K. Svolopoulos, Greek Foreign Policy 1945–1981, p. 134.</ref>
The British colony of [[Cyprus]] became the "apple of discord" between the two countries, putting an end to the positive Greco-Turkish relations that had existed since the Kemal-Venizelos agreement in the 1930s. In 1955, a [[Hellenic Army|Greek army]] colonel of Greek Cypriot origin, [[George Grivas]], began a campaign of civil disobedience whose purpose was primarily to drive the British from the island, then move for ''[[Enosis]]'' with Greece. The Greek prime minister, [[Alexandros Papagos]], was not unfavourable to this idea.{{citation needed|date=June 2014}} There was increasing polarisation of opinion between the dominant Greek population and the minority Turks.{{citation needed|date=June 2014}}
The problems in Cyprus affected the continent itself. In September 1955, in response to the demand for ''Énosis'', an anti-Greek riot took place in Istanbul. During the [[Istanbul Pogrom]] 4,000 stores, 100 hotels and restaurants and 70 churches were destroyed or damaged.<ref>R. Clogg, p. 153.</ref> This led to the last great wave of migration from Turkey to Greece.
[[File:Cyprus districts named.png|thumb|200px|The island of Cyprus, showing the areas controlled by the ethnic Greek Cypriots of the [[Republic of Cyprus]] (south), and the areas controlled by ethnic Turkish Cypriots (north).]]
The [[Zürich and London Agreement|Zürich Agreement]] of 1959 culminated in independence of the island with Greece, Turkey and UK as guarantee powers. The inter-ethnic clashes from 1960 led to the dispatch of a [[United Nations Peacekeeping Force in Cyprus|peacekeeping force]] of the [[United Nations Organisation|United Nations]] in 1964.
The Cyprus issue was revived by the [[Greek military junta of 1967-1974|dictatorship of the colonels]], who presented their April 21, 1967, ''coup d'état'' as the only way to defend the traditional values of what they called the "Hellenic-Christian Civilization".
Brigadier General Ioannidis arranged, in July 1974, to overthrow Cypriot President [[Archbishop]] [[Makarios III|Makarios]], and proceed with ''[[Enosis]]'' (union with Greece).{{citation needed|date= June 2014}} This led to Turkey invading the island in response, with the expulsion of Greek Cypriots in areas controlled by Turkey, and the flight of Turkish Cypriots from the south. In 1983, the north declared independence, but to this day, the only country that recognizes [[Northern Cyprus]] is Turkey.
==Attempted revival by Golden Dawn==
The [[Greek nationalism|ultra-nationalist]] [[Golden Dawn (political party)|Golden Dawn party]], which had electoral support from 2010 to 2019, supports the Megali Idea,<ref name="stoxos.gr">{{cite news|script-title=el:Μιχαλολιάκος: Του χρόνου στην Κωνσταντινούπολη, στην Σμύρνη, στην Τραπεζούντα…|url=http://www.stoxos.gr/2012/12/blog-post_7247.html|access-date=3 November 2013|newspaper=[[Stochos]]|date=31 December 2012|language=el}}</ref> with party leader, [[Nikolaos Michaloliakos]] stating:
{{quote|For two thousand years, the Jews would say a wish during their festivals, "[[next year in Jerusalem]]", and ultimately after many centuries they managed to make it a reality. So I too conclude with a wish: Next year in [[Constantinople]], in [[Smyrna]], in [[Trabzon|Trebizond]]!|<ref name="stoxos.gr"/>}}
Michaloliakos criticized [[Thessaloniki]] mayor [[Yiannis Boutaris]] for wanting to name a street after Atatürk, who was born in the city when it was still part of the Ottoman Empire.<ref name="todayszaman1">{{Citation |title=Greek far-right leader vows to 'take back' İstanbul, İzmir |newspaper=Today's Zaman|date=15 June 2012 |url=http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |access-date=12 September 2012 | archive-url=https://web.archive.org/web/20131103095534/http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |archive-date=3 November 2013}}</ref><ref name="smyrna">{{Cite web|url=https://www.hurriyetdailynews.com/greek-fuhrer-vows-to-take-back-izmir-after-istanbul-23248|title=Greek 'Führer' vows to 'take back İzmir' after Istanbul|website=Hürriyet Daily News}}</ref>
In January 2013, a group of Golden Dawn supporters attacked the car of Turkish [[consul (representative)|consul-general]] Osman İlhan Şener and hurled insults at Atatürk, during an [[Anti-Turkism|anti-Turkey]] protest in [[Komotini]].<ref name=komotiniAttack>{{cite web|title=Yunanistan'da Türk konsolosun aracına saldırı|url=https://www.ntvmsnbc.com/id/25412725|publisher=NTVMSNBC|access-date=10 January 2013|language=tr}}</ref>
Mihaloliakos has also called for the "liberation"{{citation needed|date=March 2021}} of Northern Epirus. Golden Dawn and its former Cypriot counterpart [[ELAM (Cyprus)|ELAM]] support enosis.
In 2015, close to 100 Golden Dawn members and leaders were arrested on a range of charges, including murder and racketeering. In 2019, the party's level of support, slumped to less than 2%. In October 2020, most of Golden Dawn's leadership was convicted, including Michaloliakos. As of 2023, the party, which never enjoyed electoral support above 10% of the popular vote, now has no remaining members in either the Hellenic or European Parliament.<ref>Gatopoulos, Derek; Becatoros, Elena (7 October 2020). "Greek court rules Golden Dawn party criminal organization". Associated Press. Retrieved January 3, 2020.</ref>
== See also ==
{{Portal|Greece}}
* [[Greek diaspora]]
* [[Northern Epirus]]
* [[Autonomous Republic of Northern Epirus]]
* [[Greece during World War I]]
* [[Occupation of Constantinople]]
* [[Irredentism]]
* [[Zone of Smyrna]]
* [[Republic of Pontus]]
*
* [[Georgios Grivas]]
* [[Foreign relations of Greece]]
* [[Greek Plan]]
* [[Enosis]]
* [[Succession of the Roman Empire]]
==References==
{{Reflist|2}}
{{Balkan Wars}}
{{Megali Idea}}
{{Greek nationalism}}
{{Irredentism}}
{{Pan-nationalist concepts}}
{{Stateless nationalism in Europe}}
[[Category:Megali Idea| ]]
[[Category:National unifications]]
[[Category:Foreign relations of Greece]]
[[Category:Greece–Turkey relations]]
[[Category:History of modern Greece]]
[[Category:19th century in the Ottoman Empire]]
[[Category:Greek nationalism]]
[[Category:Nationalist movements in Europe]]
[[Category:Pan-nationalism]]
[[Category:Political history of Greece]]
[[Category:Political movements of the Ottoman Empire]]
f45ac96163cdb251665c56e33fbee9b5df193b2a
Module:Political party/N
828
1575
2910
2023-09-27T17:16:36Z
w>Jvalienforce
0
Scribunto
text/plain
-- Constant data used by [[Module:Political party]]
local alternate = {
["N/a"] = "N/A",
["n/a"] = "N/A",
["Nacionalista Party (Liberal wing)"] = "Liberal Party (Philippines)",
["Nacionalista Party-Consolidato"] = "Nacionalista Democratico",
["Nacionalista Party-Pro-Independencia"] = "Nacionalista Democrata Pro-Independencia",
["Nafarroa Bai"] = "Geroa Bai",
["Nagaland People's Council"] = "Naga People's Front",
["Naga Peoples Front"] = "Naga People's Front",
["Nagaland People's Front"] = "Naga People's Front",
["Nagaland Peoples Front"] = "Naga People's Front",
["Naleraq Party"] = "Naleraq",
["Natatok"] = "Natatok Indigenous People's Democratic Party",
["National–Liberal Coalition"] = "National/Liberal Coalition",
["National Centre of Independents"] = "National Centre of Independents and Peasants",
["National Coalition Party (Finland)"] = "National Coalition Party",
["National Congress (Sudan)"] = "National Congress Party (Sudan)",
["National Cooperation (Denmark)"] = "National Cooperation",
["National Conservative Party"] = "National Conservative Party (Cuba)",
["National Democratic Alliance (India)"] = "National Democratic Alliance",
["National Democratic Party (UK 1960s)"] = "National Democratic Party (UK, 1966)",
["National Democratic Party (United States)"] = "National Democratic Party (US)",
["National Democrats (UK)"] = "National Democrats (United Kingdom)",
["National Development Party (East Timor)"] = "Party of National Development",
["National Freedom Front"] = "Jathika Nidahas Peramuna",
["National Front (Finland)"] = "Finnish People's Blue-Whites",
["National Front (United Kingdom)"] = "National Front (UK)",
["National Government (UK)"] = "National Government (United Kingdom)",
["National Independence Party (Luxembourg)"] = "Independent National Party (Luxembourg)",
["National Independent"] = "National Government (United Kingdom)",
["National Labour Party (UK 1930s)"] = "National Labour Organisation",
["National Labour Party (UK)"] = "National Labour Organisation",
["National League (Ireland)"] = "National League Party",
["National Liberal and Conservative"] = "National Liberal Party (UK, 1931)",
["National Liberal Party (UK, 1947)"] = "National Liberal Party (UK, 1931)",
["National Liberation Front (Yugoslavia)"] = "Unitary National Liberation Front",
["National Organisation of We the People"] = "Nationwide Organisation of We the People",
["National Organization of the Right"] = "Moderate Party",
["National Party (Chile, 1857–1933)"] = "National Party (Chile, 1857)",
["National Party (Chile, 1966–94)"] = "National Party (Chile, 1966)",
["National Party (United States)"] = "National Party (US)",
["National Party of Australia - Queensland"] = "National Party of Australia – Queensland",
["National Party of Western Australia"] = "National Party of Australia",
["National Patriotic Union \"Rodina\""] = "Rodina (political party)",
["National People’s Ambassadors"] = "National People's Ambassadors",
["National People’s Front (South Africa)"] = "National People's Front (South Africa)",
["National People’s Front"] = "National People's Front (South Africa)",
["National Rally (France)"] = "National Rally",
["National Rally for Democracy (Algeria)"] = "Democratic National Rally",
["National Renewal Alliance Party"] = "National Renewal Alliance",
["National Renewal"] = "National Renewal (Chile)",
["National Republican Party (United States)"] = "National Republican Party (US)",
["National Republican Party"] = "National Republican Party (US)",
["National Revival"] = "National Revival (Artsakh)",
["National Revolutionary Dividends Party"] = "National Revolutionary Party (South Korea, 2020)",
["National Solidarity Party (Peru)"] = "National Solidarity (Peru)",
["National Solidarity Party"] = "National Solidarity Party (Singapore)",
["National Umma Party Sudan"] = "National Umma Party",
["National Union Party (United States)"] = "National Union Party (US)",
["National Union"] = "National Union (Cuba)",
["National Unionist Party (Sudan)"] = "Democratic Unionist Party (Sudan)",
["National Unity Party (Burma)"] = "National Unity Party (Myanmar)",
["Nationalist Coalition (1989)"] = "Nationalist Coalition",
["Nationalist Coalition (1994)"] = "Nationalist Coalition",
["Nationalist Democracy Party (Turkey)"] = "Nationalist Democracy Party",
["Nationalist Left of the Balearic Islands Federation"] = "Socialist Party of Majorca",
["Nationalist Party of Australia"] = "Nationalist Party (Australia)",
["Natural Law Party (New Zealand)"] = "Natural Law Party of New Zealand",
["Natural Law Party (United States)"] = "Natural Law Party (US)",
["Navarrese Autonomist Union"] = "Basque Nationalists",
["Naya Shakti Party, Nepal"] = "Communist Party of Nepal (Unified Socialist)",
["Nebraska Legal Marijuana NOW Party"] = "Legal Marijuana Now Party",
["Nebraska Democratic Party"] = "Democratic Party (United States)",
["Nebraska Republican Party"] = "Republican Party (United States)",
["Neighbourhood and Workers Service Centre"] = "Neighbourhood and Worker's Service Centre",
["Neighbourhood and Workers' Service Centre"] = "Neighbourhood and Worker's Service Centre",
["Neo Destour"] = "Democratic Constitutional Rally",
["NEOS - The New Austria"] = "NEOS – The New Austria and Liberal Forum",
["NEOS – The New Austria"] = "NEOS – The New Austria and Liberal Forum",
["Nepal Sadbhavana Party"] = "Nepal Sadbhawana Party",
["Nepali Congress"] = "Nepali Congress sidebar",
["NETWORK (Slovak party)"] = "Network (Slovak party)",
["Network of Electoral Democracy"] = "Democratic Network",
["Nevada Democratic Party"] = "Democratic Party (United States)",
["Nevada Republican Party"] = "Republican Party (United States)",
["New Alternative Party"] = "New Alternative Party (Thailand)",
["New Centre-Right – Union of the Centre"] = "New Centre-Right",
["New Centre-right"] = "New Centre-Right",
["New Centre"] = "Les Centristes",
["New Force"] = "New Force (Italy)",
["New Generation Party – Christian Democratic"] = "New Generation Party (Romania)",
["New Harmony"] = "New Harmony (Latvia)",
["New Iran Party"] = "Iran Novin Party",
["New Jersey Conservative Party"] = "Conservative Party (US)",
["New Komeito Party"] = "New Kōmeitō",
["New Komeito"] = "New Kōmeitō",
["New Left Front"] = "Left Liberation Front",
["New Majority (Slovakia)"] = "NOVA (Slovakia)",
["New Majority"] = "NOVA (Slovakia)",
["New Nationalist Party"] = "New Nationalist Party (UK)",
["New Party (Republic of China)"] = "New Party (Taiwan)",
["New Progressive Party (United States)"] = "New Progressive Party (US)",
["New Progressive Party of Puerto Rico"] = "New Progressive Party (Puerto Rico)",
["New Republic Party"] = "New Republic Party (South Africa)",
["New Self-Government"] = "Self-Government (Faroe Islands)",
["New Union for Macau's Development"] = "New Macau Development Union",
["New Union for Macau’s Development"] = "New Macau Development Union",
["New York Democratic Party"] = "Democratic Party (United States)",
["New York Republican Party"] = "Republican Party (United States)",
["New York Republican State Committee"] = "Republican Party (United States)",
["New York State Democratic Committee"] = "Democratic Party (United States)",
["New York Tax Cut Now Party"] = "Tax Cut Now Party (New York)",
["New Zealand Democratic Party"] = "New Zealand Democratic Party for Social Credit",
["New Zealand Outdoors Party"] = "NZ Outdoors & Freedom Party",
["New Zealand Progressive Party"] = "Jim Anderton's Progressive Party",
["New Zealand Reform Party"] = "Reform Party (New Zealand)",
["Nieuw Sociaal Contract"] = "New Social Contract",
["No Overall Control"] = "No overall control",
["No party preference (United States)"] = "No party preference (US)",
["No Party to Support (Japan)"] = "Shiji Seitō Nashi",
["Nominated by Petition"] = "Independent (US)",
["Non Partisan"] = "Nonpartisan politician",
["Non-Affiliated"] = "Non-affiliated members of the House of Lords",
["Non-affiliated"] = "Non-affiliated members of the House of Lords",
["Non-Partisan League"] = "Nonpartisan League",
["Non-partisan Solidarity Union"] = "Non-Partisan Solidarity Union",
["Non-partisan"] = "Nonpartisan politician",
["Non-registered candidates"] = "Independent politician",
["None"] = "Independent politician",
["Nonpartisan"] = "Nonpartisan politician",
["Nonpartisan candidate"] = "Nonpartisan politician",
["Nonpartisan (United States)"] = "Nonpartisan (US)",
["North Calotte People"] = "Nordkalottfolket",
["North Carolina Democratic Party"] = "Democratic Party (United States)",
["North Carolina Green Party"] = "Green Party (US)",
["North Carolina Republican Party"] = "Republican Party (United States)",
["North Dakota Democratic-Independent Party"] = "Democratic-Independent Party (North Dakota)",
["North Dakota Democratic–NPL"] = "North Dakota Democratic–Nonpartisan League Party",
["North Dakota Democratic–NPL Party"] = "North Dakota Democratic–Nonpartisan League Party",
["North Dakota Democratic-NPL"] = "North Dakota Democratic–Nonpartisan League Party",
["North Dakota Democratic-NPL Party"] = "North Dakota Democratic–Nonpartisan League Party",
["North Dakota Republican Party"] = "Republican Party (United States)",
["NorthBohemians.cz"] = "Severočeši.cz",
["Northern Mariana Islands Democratic Party"] = "Democratic Party (United States)",
["Northern League"] = "Lega Nord",
["Norwegian Farmers' Association"] = "Centre Party (Norway)",
["Norwegian Labour Party"] = "Labour Party (Norway)",
["Nouvelle Union Populaire écologiste et sociale"] = "New Ecological and Social People's Union",
["NOW – List Pilz"] = "JETZT (party)",
["NPHK"] = "New Prospect for Hong Kong",
["NPPHK"] = "New People's Party (Hong Kong)",
["Nullifier Party (United States)"] = "Nullifier Party",
["NUPES"] = "New Ecological and Social People's Union",
["NUPÉS"] = "New Ecological and Social People's Union",
["NWSC"] = "Neighbourhood and Worker's Service Centre",
["NZ Outdoors Party"] = "NZ Outdoors & Freedom Party",
}
local full = {
["N/A"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Naam Tamilar Katchi"] = {abbrev = "NTK", color = "#B31818", shortname = "",},
["Naari Shakti Party"] = {abbrev = "", color = "#993366", shortname = "",},
["Nabad iyo Nolol"] = {abbrev = "", color = "#5EA4D7", shortname = "",},
["Nacionalista Democrata Pro-Independencia"] = {abbrev = "", color = "#B22222", shortname = "",},
["Nacionalista Democratico"] = {abbrev = "", color = "#191970", shortname = "",},
["Nacionalista Party"] = {abbrev = "NP", color = "#98fb98", shortname = "Nacionalista",},
["Naga National Democratic Party"] = {abbrev = "NND", color = "#a00000", shortname = "",},
["Naga People's Front"] = {abbrev = "NPF", color = "#1717CC", shortname = "",},
["Nagaland Nationalist Organisation"] = {abbrev = "NNO", color = "#FFFF00", shortname = "",},
["Nagaland People's Conference"] = {abbrev = "", color = "#800080", shortname = "",},
["Nagriamel"] = {abbrev = "", color = "#42adde", shortname = "",},
["Nagrik Unmukti Party"] = {abbrev = "NUP", color = "#2E8B57", shortname = "Nagrik Unmukti",},
["Nahdlatul Ulama"] = {abbrev = "", color = "#017533", shortname = "",},
["Najjadeh Party"] = {abbrev = "", color = "#000000", shortname = "",},
["Naleraq"] = {abbrev = "", color = "#FF6900", shortname = "",},
["Namakwa Civic Movement (South Africa)"] = {abbrev = "", color = "#876D51", shortname = "",},
["Namangi Aute"] = {abbrev = "", color = "#F16A26", shortname = "",},
["Namibian Economic Freedom Fighters"] = {abbrev = "NEFF", color = "#852A2A", shortname = "",},
["Nanggroe Aceh Party"] = {abbrev = "PNA", color = "#FF7F42", shortname = "",},
["Nantwich Independent Party"] = {abbrev = "", color = "#FFFFFF", shortname = "Nantwich Independent",},
["Nasdem Party"] = {abbrev = "", color = "#27408B", shortname = "Nasdem",},
["Nashi (political party)"] = {abbrev = "", color = "#16327A", shortname = "",},
["Nasion Rénioné"] = {abbrev = "", color = "#FFDD00", shortname = "",},
["Nasjonal Samling"] = {abbrev = "", color = "red", shortname = "",},
["Nasserist Reform Organisation"] = {abbrev = "", color = "green", shortname = "",},
["Nasserist Unionist People's Organisation"] = {abbrev = "NUPO", color = "#000000", shortname = "",},
["Natatok Indigenous People's Democratic Party"] = {abbrev = "", color = "#6495ED", shortname = "Natatok",},
["Nation (political party)"] = {abbrev = "", color = "black", shortname = "",},
["Nation Alliance (Turkey)"] = {abbrev = "", color = "#D0222C", shortname = "Millet",},
["Nation and Justice Party"] = {abbrev = "", color = "#3F5394", shortname = "",},
["Nation and Revolution"] = {abbrev = "", color = "#000000", shortname = "",},
["Nation Building Labour Party"] = {abbrev = "", color = "#673A8F", shortname = "",},
["Nation Party (Turkey, 1962)"] = {abbrev = "MP", color = "#610B0B", shortname = "",},
["Nation Party (Turkey, 1992)"] = {abbrev = "", color = "#0050A9", shortname = "Nation",},
["Nation Party of Iran"] = {abbrev = "NPI", color = "#FFD700", shortname = "",},
["Nation's Future Party"] = {abbrev = "", color = "#283279", shortname = "",},
["National-Liberal Coalition"] = {abbrev = "", color = "#006644", shortname = "Country",},
["National/Liberal Coalition"] = {abbrev = "", color = "#006644", shortname = "Coalition",},
["National (UK)"] = {abbrev = "", color = "lightblue", shortname = "National",},
["National Action (Chile, 1963)"] = {abbrev = "", color = "#000080", shortname = "",},
["National Action (Italy)"] = {abbrev = "", color = "#336699", shortname = "",},
["National Action (Malta)"] = {abbrev = "", color = "navy", shortname = "",},
["National Action against the Alienation of the People and the Home"] = {abbrev = "", color = "#CD5B45", shortname = "National Action",},
["National Action Movement (Venezuela)"] = {abbrev = "", color = "#000000", shortname = "",},
["National Action Party (El Salvador)"] = {abbrev = "PAN", color = "#7FA920", shortname = "",},
["National Action Party (Mexico)"] = {abbrev = "PAN", color = "#0957A4", shortname = "",},
["National Advance"] = {abbrev = "", color = "#000000", shortname = "",},
["National Advancement Party"] = {abbrev = "PAN", color = "#FFFC33", shortname = "",},
["National Agenda Party"] = {abbrev = "", color = "#1E2144", shortname = "",},
["National Agenda Party (Kenya)"] = {abbrev = "NAP-K", color = "#2D4766", shortname = "",},
["National Agrarian Party"] = {abbrev = "PNA", color = "black", shortname = "",},
["National Agrarian Party (Costa Rica)"] = {abbrev = "PAN", color = "#F5DEB3", shortname = "",},
["National Agricultural Industrial Party"] = {abbrev = "", color = "#0080FF", shortname = "",},
["National Alfonsinist Movement"] = {abbrev = "MNA", color = "#008fc3", shortname = "",},
["National Alliance (Italy)"] = {abbrev = "", color = "#004E99", shortname = "National Alliance",},
["National Alliance (Latvia)"] = {abbrev = "NA", color = "#932330", shortname = "",},
["National Alliance (Lithuania)"] = {abbrev = "NS", color = "#BB2025", shortname = "",},
["National Alliance (Sint Maarten)"] = {abbrev = "NA", color = "#262262", shortname = "",},
["National Alliance (Spain)"] = {abbrev = "", color = "#111011", shortname = "",},
["National Alliance – Segni Pact"] = {abbrev = "", color = "#004E99", shortname = "",},
["National Alliance 21"] = {abbrev = "", color = "#197C53", shortname = "",},
["National Alliance for Belizean Rights"] = {abbrev = "NABR", color = "#228B22", shortname = "",},
["National Alliance for Change"] = {abbrev = "ANC", color = "#FF8201", shortname = "",},
["National Alliance for Democracy and Progress"] = {abbrev = "ANDP", color = "#FBEE06", shortname = "",},
["National Alliance for Reconstruction"] = {abbrev = "NAR", color = "#F35D46", shortname = "",},
["National Alliance July 18"] = {abbrev = "", color = "#1F3759", shortname = "",},
["National Alliance of Independents"] = {abbrev = "", color = "#013068", shortname = "",},
["National Alliance Party (Papua New Guinea)"] = {abbrev = "NAP", color = "#FFD700", shortname = "",},
["National Alliance Party for Unity"] = {abbrev = "", color = "#556627", shortname = "",},
["National Alternative"] = {abbrev = "", color = "#000080", shortname = "",},
["National Alternative Movement"] = {abbrev = "MAN", color = "#0F7B61", shortname = "",},
["National Amalgamated Union of Labour"] = {abbrev = "NAUL", color = "#B31B1B", shortname = "",},
["National Andorran Coalition"] = {abbrev = "CNA", color = "#000080", shortname = "",},
["National Antisemitic Party"] = {abbrev = "", color = "#cfb53b", shortname = "National Antisemitic",},
["National Arab Socialist Ba'ath Party – Yemen Region"] = {abbrev = "", color = "black", shortname = "",},
["National Assembly for Wales"] = {abbrev = "", color = "#E60A82", shortname = "",},
["National Assembly (South Korea)"] = {abbrev = "", color = "#580009", shortname = "",},
["National Association (South Korea)"] = {abbrev = "", color = "#1271B5", shortname = "National Association",},
["National Autonomist Party"] = {abbrev = "PAN", color = "#30D5C8", shortname = "",},
["National Awakening (Iceland)"] = {abbrev = "", color = "#D6AB72", shortname = "",},
["National Awakening Party"] = {abbrev = "PKB", color = "#02754C", shortname = "",},
["National Awami Party (Wali)"] = {abbrev = "", color = "#ff0000", shortname = "",},
["National Awami Party"] = {abbrev = "NAP", color = "#004C7C", shortname = "",},
["National Bloc (France)"] = {abbrev = "", color = "#4682B4", shortname = "",},
["National Bloc (Italy, 1921)"] = {abbrev = "BN", color = "#272E75", shortname = "National Bloc",},
["National Bloc (Italy, 1948)"] = {abbrev = "BN", color = "#000000", shortname = "National Bloc",},
["National Bloc (Lebanon)"] = {abbrev = "", color = "#3e9bae", shortname = "National Bloc",},
["National Bloc (Syria)"] = {abbrev = "", color = "#808080", shortname = "",},
["National Blocs"] = {abbrev = "", color = "#15317E", shortname = "",},
["National Bolshevik Party"] = {abbrev = "", color = "#A80000", shortname = "",},
["National Call for the Republic"] = {abbrev = "", color = "#FFCD03", shortname = "",},
["National Catholic Association of Propagandists"] = {abbrev = "", color = "#EB0029", shortname = "",},
["National Centre of Independents and Peasants"] = {abbrev = "CNIP", color = "#26C4EC", shortname = "",},
["National Centre of Social Republicans"] = {abbrev = "CNRS", color = "#00008b", shortname = "",},
["National Centre Party (Estonia)"] = {abbrev = "RKE", color = "", shortname = "",},
["National Centre Party (Ireland)"] = {abbrev = "NCP", color = "#0000FF", shortname = "National Centre Party",},
["National Centre Union"] = {abbrev = "", color = "#002C77", shortname = "",},
["National Centrist Party"] = {abbrev = "NCP", color = "#293D94", shortname = "",},
["National Change Union"] = {abbrev = "UCN", color = "#0000FE", shortname = "",},
["National Christian Party (Armenia)"] = {abbrev = "", color = "#122D3F", shortname = "",},
["National Christian Party"] = {abbrev = "PNC", color = "#A52A2A", shortname = "",},
["National Christian Union"] = {abbrev = "", color = "white", shortname = "",},
["National-Christian Defense League"] = {abbrev = "LANC", color = "#5a1111", shortname = "",},
["National Citizen Party"] = {abbrev = "", color = "blue", shortname = "",},
["National Citizen Will Party"] = {abbrev = "", color = "#0060af", shortname = "",},
["National Citizens Alliance"] = {abbrev = "", color = "#710039", shortname = "",},
["National Civic Union (Dominican Republic)"] = {abbrev = "", color = "#ff9100", shortname = "",},
["National Coalition / Independent Candidates"] = {abbrev = "NK/NEKA", color = "#27A3DD", shortname = "",},
["National Coalition for Transformation"] = {abbrev = "NCT", color = "#cebcb6", shortname = "",},
["National Coalition of Afghanistan"] = {abbrev = "", color = "#034F97", shortname = "National Coalition",},
["National Coalition Party (2020)"] = {abbrev = "", color = "#0F56FF", shortname = "",},
["National Coalition Party (El Salvador)"] = {abbrev = "PCN", color = "#0B58DC", shortname = "",},
["National Coalition Party"] = {abbrev = "NCP", color = "#006288", shortname = "National Coalition",},
["National Cohesion for Rights and the Construction of Generations"] = {abbrev = "", color = "#B7752C", shortname = "Ribat",},
["National Committee"] = {abbrev = "EK", color = "#6B8E23", shortname = "",},
["National Community Association"] = {abbrev = "NCA", color = "#FFDF00", shortname = "",},
["National Community Association Party"] = {abbrev = "NCAP", color = "#FFFFFF", shortname = "",},
["National Community Party"] = {abbrev = "", color = "#F97F63", shortname = "",},
["National Congress (Pakistan and Bangladesh)"] = {abbrev = "", color = "#00BFFF", shortname = "National Congress",},
["National Congress (Sri Lanka)"] = {abbrev = "", color = "#9acd32", shortname = "",},
["National Congress for Democratic Initiative"] = {abbrev = "", color = "#00FF7F", shortname = "",},
["National Congress for Liberty"] = {abbrev = "", color = "#107B40", shortname = "",},
["National Congress for New Politics"] = {abbrev = "", color = "#009a44", shortname = "National Congress",},
["National Congress for Timorese Reconstruction"] = {abbrev = "CNRT", color = "#1E90FF", shortname = "",},
["National Congress of the Canaries"] = {abbrev = "", color = "#427A3A", shortname = "",},
["National Congress Party (Sudan)"] = {abbrev = "", color = "#0A5A38", shortname = "National Congress",},
["National Congress Party of Afghanistan"] = {abbrev = "", color = "#FFCC66", shortname = "",},
["National Conscience Party"] = {abbrev = "NCP", color = "#000000", shortname = "",},
["National Consensus Forces"] = {abbrev = "NCF", color = "#EC313A", shortname = "",},
["National Conservative Party (Cuba)"] = {abbrev = "PNC", color = "#008000", shortname = "",},
["National Consultation"] = {abbrev = "CN", color = "#172DFC", shortname = "",},
["National Constitution Party"] = {abbrev = "", color = "#32A640", shortname = "Constitution",},
["National Constitutional Assembly"] = {abbrev = "NCA", color = "#EA6646", shortname = "",},
["National Construction Movement"] = {abbrev = "", color = "#43C100", shortname = "El Binaa",},
["National Convention of Nagaland"] = {abbrev = "NCN", color = "#a04040", shortname = "",},
["National Convention Party (Ghana)"] = {abbrev = "", color = "red", shortname = "",},
["National Convention Party (The Gambia)"] = {abbrev = "", color = "pink", shortname = "",},
["National Convergence \"Kwa Na Kwa\""] = {abbrev = "", color = "orange", shortname = "",},
["National Convergence Front"] = {abbrev = "FCN", color = "#003896", shortname = "",},
["National Convergence"] = {abbrev = "CVGC", color = "#36D135", shortname = "",},
["National Cooperation"] = {abbrev = "", color = "#087830", shortname = "National Cooperative",},
["National Cooperative Party"] = {abbrev = "", color = "#A703DF", shortname = "National Cooperative",},
["National Corporate Party"] = {abbrev = "", color = "#003000", shortname = "",},
["National Corps"] = {abbrev = "", color = "#002E52", shortname = "",},
["National Council for the Defense of Democracy – Forces for the Defense of Democracy"] = {abbrev = "CNDD–FDD", color = "#CC0001", shortname = "",},
["National Council for the Defense of Democracy"] = {abbrev = "", color = "#000099", shortname = "",},
["National Council of Nigeria and the Cameroons"] = {abbrev = "", color = "blue", shortname = "",},
["National Council of Venezuelan Indians"] = {abbrev = "CONIVE", color = "#249E2F", shortname = "",},
["National Council (Georgia)"] = {abbrev = "CNDD–FDD", color = "#FFFF00", shortname = "National Council",},
["National Country Party (NSW)"] = {abbrev = "", color = "#006644", shortname = "",},
["National Covenant Party"] = {abbrev = "", color = "green", shortname = "",},
["National Creation"] = {abbrev = "ED", color = "#EF8C18", shortname = "",},
["National Crusade Party"] = {abbrev = "PCN", color = "#000000", shortname = "",},
["National Defence League"] = {abbrev = "", color = "#0000FF", shortname = "",},
["National Democracy (Czech Republic)"] = {abbrev = "ND", color = "#284696", shortname = "",},
["National Democracy (Czechoslovakia)"] = {abbrev = "", color = "#2B347F", shortname = "",},
["National Democracy (Italy)"] = {abbrev = "", color = "#0045AA", shortname = "National Democracy",},
["National Democracy (Poland)"] = {abbrev = "ND", color = "#FFFFFF", shortname = "",},
["National Democracy (Spain)"] = {abbrev = "", color = "#183463", shortname = "",},
["National Democrat Party (Thailand)"] = {abbrev = "", color = "black", shortname = "National Democrat",},
["National Democratic Action (Ecuador)"] = {abbrev = "ADN", color = "#67308B", shortname = "",},
["National Democratic Alternative (Serbia)"] = {abbrev = "NADA", color = "#616264", shortname = "",},
["National Democratic Alliance (Aruba)"] = {abbrev = "", color = "#4682B4", shortname = "",},
["National Democratic Alliance (Italy)"] = {abbrev = "ADN", color = "#32CD32", shortname = "",},
["National Democratic Alliance (Kuwait)"] = {abbrev = "NDA", color = "#88ADD6", shortname = "",},
["National Democratic Alliance (Malawi)"] = {abbrev = "NDA", color = "#EEEEEE", shortname = "",},
["National Democratic Alliance (Mauritania)"] = {abbrev = "AND", color = "#0AA450", shortname = "",},
["National Democratic Alliance (Sierra Leone)"] = {abbrev = "NDA", color = "#4B9A23", shortname = "",},
["National Democratic Alliance"] = {abbrev = "NDA", color = "#F98C1F", shortname = "",},
["National Democratic and Labour Party"] = {abbrev = "", color = "#ffdead", shortname = "National Democratic",},
["National Democratic Christian Party"] = {abbrev = "PNDC", color = "#004A92", shortname = "",},
["National Democratic Civic Movement"] = {abbrev = "MCDN", color = "#000000", shortname = "",},
["National Democratic Coalition (Liberia)"] = {abbrev = "", color = "#D29B24", shortname = "",},
["National Democratic Congress (Ghana)"] = {abbrev = "NDC", color = "#2E8B57", shortname = "",},
["National Democratic Congress (Grenada)"] = {abbrev = "NDC", color = "#FECA09", shortname = "",},
["National Democratic Convention (South Africa)"] = {abbrev = "", color = "black", shortname = "National Democratic Convention",},
["National Democratic Force"] = {abbrev = "NDF", color = "#2042A1", shortname = "",},
["National Democratic Front (Algeria)"] = {abbrev = "FND", color = "", shortname = "",},
["National Democratic Front (Mexico)"] = {abbrev = "FDN", color = "yellow", shortname = "",},
["National Democratic Group"] = {abbrev = "AND", color = "#E21019", shortname = "",},
["National Democratic Hungarian-Szekler Party"] = {abbrev = "PNDMS", color = "#15803C", shortname = "",},
["National Democratic Movement (Bosnia and Herzegovina)"] = {abbrev = "", color = "#0070FF", shortname = "",},
["National Democratic Movement (Jamaica)"] = {abbrev = "NDM", color = "#0C8DE0", shortname = "",},
["National Democratic Party (Argentina)"] = {abbrev = "PDN", color = "#005C9E", shortname = "National Democratic Party",},
["National Democratic Party (Austria)"] = {abbrev = "NDP", color = "#995908", shortname = "",},
["National Democratic Party (Bangladesh)"] = {abbrev = "NDP", color = "#FFBB2B", shortname = "",},
["National Democratic Party (Bosnia and Herzegovina)"] = {abbrev = "NDS", color = "#b30000", shortname = "",},
["National Democratic Party (British Virgin Islands)"] = {abbrev = "NDP", color = "#ED2939", shortname = "",},
["National Democratic Party (Chile)"] = {abbrev = "PADENA", color = "#013068", shortname = "",},
["National Democratic Party (Egypt)"] = {abbrev = "NDP", color = "#11573B", shortname = "",},
["National Democratic Party (El Salvador)"] = {abbrev = "PND", color = "#90EE90", shortname = "",},
["National Democratic Party (Georgia)"] = {abbrev = "NDP", color = "#B5011E", shortname = "",},
["National Democratic Party (Ghana)"] = {abbrev = "NDP", color = "#FF0000", shortname = "",},
["National Democratic Party (Greece)"] = {abbrev = "EDK", color = "#FFD700", shortname = "",},
["National Democratic Party (Iraq)"] = {abbrev = "NDP", color = "red", shortname = "",},
["National Democratic Party (Ireland)"] = {abbrev = "", color = "yellow", shortname = "National Democratic",},
["National Democratic Party (Japan)"] = {abbrev = "", color = "#A703DF", shortname = "National Democratic",},
["National Democratic Party (Kerala)"] = {abbrev = "NDP", color = "Orange", shortname = "",},
["National Democratic Party (Morocco)"] = {abbrev = "NDP", color = "#00FF00", shortname = "",},
["National Democratic Party (Namibia)"] = {abbrev = "NDP", color = "#14A016", shortname = "",},
["National Democratic Party (Northern Ireland)"] = {abbrev = "NDP", color = "#DDFFDD", shortname = "National Democratic",},
["National Democratic Party (Suriname)"] = {abbrev = "NDP", color = "#872890", shortname = "",},
["National Democratic Party (UK, 1966)"] = {abbrev = "", color = "#3F5F5F", shortname = "National Democratic",},
["National Democratic Party (US)"] = {abbrev = "", color = "#FFD700", shortname = "National Democratic",},
["National Democratic Party of Alabama"] = {abbrev = "", color = "#3333FF", shortname = "National Democratic (Ala.)",},
["National Democratic Party of Germany (East Germany)"] = {abbrev = "NDPD", color = "#FFCF00", shortname = "",},
["National Democratic Party of Germany"] = {abbrev = "NPD", color = "#8B4726", shortname = "",},
["National Democratic Party of Liberia"] = {abbrev = "NDPL", color = "#A34120", shortname = "",},
["National Democratic Party of Lithuania"] = {abbrev = "LNDP", color = "gold", shortname = "",},
["National Democratic Party of Spain"] = {abbrev = "", color = "#0061A5", shortname = "",},
["National Democratic Party of Tibet"] = {abbrev = "NDPT", color = "red", shortname = "",},
["National Democratic Party"] = {abbrev = "", color = "#ff8c00", shortname = "National Democratic",},
["National Democratic Peoples Front"] = {abbrev = "NDPF", color = "#7401DF", shortname = "",},
["National Democratic Pole"] = {abbrev = "", color = "#292929", shortname = "",},
["National Democratic Policy Committee"] = {abbrev = "NDPC", color = "red", shortname = "LaRouche movement",},
["National Democratic Progressive Party"] = {abbrev = "", color = "#ED6255", shortname = "",},
["National Democratic Reconciliation Party"] = {abbrev = "", color = "#FFE25A", shortname = "",},
["National Democratic Reconstruction"] = {abbrev = "", color = "#6AAC90", shortname = "",},
["National Democratic Revival"] = {abbrev = "RDK", color = "#D71D29", shortname = "",},
["National Democratic Union (Armenia)"] = {abbrev = "NDU", color = "#16229b", shortname = "",},
["National Democratic Union (Brazil)"] = {abbrev = "UDN", color = "#000080", shortname = "",},
["National Democratic Union (Greece)"] = {abbrev = "EDE", color = "#00008B", shortname = "National Democratic Union",},
["National Democratic Union (Italy)"] = {abbrev = "UDN", color = "#000080", shortname = "National Democratic Union",},
["National Democratic Union (Mauritania)"] = {abbrev = "UDN", color = "#32523D", shortname = "",},
["National Democrats (Sweden)"] = {abbrev = "", color = "#ec9411", shortname = "National Democrats",},
["National Democrats (United Kingdom)"] = {abbrev = "", color = "#2F4F4F", shortname = "National Democrats",},
["National Destourian Initiative"] = {abbrev = "", color = "SkyBlue", shortname = "",},
["National Development Party (Kenya)"] = {abbrev = "NDP", color = "#000040", shortname = "",},
["National Development Party (Myanmar)"] = {abbrev = "", color = "#EA1D27", shortname = "",},
["National Development Party (Thailand)"] = {abbrev = "", color = "#FFA500", shortname = "National Development",},
["National Ecologic Party"] = {abbrev = "PEN", color = "#CCAA00", shortname = "",},
["National Encounter Party"] = {abbrev = "PEN", color = "#EDB337", shortname = "",},
["National Falange"] = {abbrev = "", color = "#0080FF", shortname = "",},
["National Farmers' Association (Sweden)"] = {abbrev = "", color = "#008F3E", shortname = "National Farmers'",},
["National Fascist Community"] = {abbrev = "NOF", color = "black", shortname = "",},
["National Fascist Party"] = {abbrev = "", color = "#000000", shortname = "",},
["National Federal Party"] = {abbrev = "", color = "#1E90FF", shortname = "National Federal",},
["National Federation of Discharged and Demobilized Sailors and Soldiers"] = {abbrev = "NFDDSS", color = "#C0C0C0", shortname = "",},
["National Federation Party"] = {abbrev = "NFP", color = "#145935", shortname = "",},
["National Flood Prevention Party"] = {abbrev = "NFPP", color = "#B0E0E6", shortname = "Flood Prevention",},
["National Force (Belgium)"] = {abbrev = "", color = "#FFFD08", shortname = "",},
["National Forces Alliance"] = {abbrev = "NFA", color = "#FFBA00", shortname = "",},
["National Forces' Movement"] = {abbrev = "NEM", color = "#A91101", shortname = "",},
["National Forces of Liberation"] = {abbrev = "", color = "green", shortname = "",},
["National Forum (Croatia)"] = {abbrev = "", color = "#345AA6", shortname = "",},
["National Freedom Party"] = {abbrev = "NFP", color = "#FF8040", shortname = "",},
["National Front (Belgium)"] = {abbrev = "FN", color = "#F2CB2E", shortname = "",},
["National Front (Czechoslovakia)"] = {abbrev = "", color = "red", shortname = "",},
["National Front (France)"] = {abbrev = "FN", color = "#004A77", shortname = "",},
["National Front (Greece)"] = {abbrev = "EM", color = "#0060a6", shortname = "",},
["National Front (Iran)"] = {abbrev = "NF", color = "#FFD700", shortname = "",},
["National Front (Spain, 1986)"] = {abbrev = "", color = "#000000", shortname = "",},
["National Front (Spain, 2006)"] = {abbrev = "", color = "#000080", shortname = "",},
["National Front (Switzerland)"] = {abbrev = "", color = "black", shortname = "National Front",},
["National Front (UK)"] = {abbrev = "", color = "MidnightBlue", shortname = "National Front",},
["National Front Constitutional Movement"] = {abbrev = "", color = "DarkGoldenrod", shortname = "",},
["National Front for Justice"] = {abbrev = "FNJ", color = "#008000", shortname = "",},
["National Front for Salvation (Tunisia)"] = {abbrev = "", color = "DarkGoldenrod", shortname = "",},
["National Front for Social Justice"] = {abbrev = "FNHS", color = "", shortname = "",},
["National Front for the Salvation of Bulgaria"] = {abbrev = "NFSB", color = "#1C4482", shortname = "",},
["National Front of Albania"] = {abbrev = "", color = "#73584E", shortname = "",},
["National Front of Catalonia (2013)"] = {abbrev = "", color = "#49A6F6", shortname = "",},
["National Front of Catalonia"] = {abbrev = "", color = "#FFF700", shortname = "",},
["National Front of Independents for Understanding"] = {abbrev = "FNIC", color = "", shortname = "",},
["National Front of the German Democratic Republic"] = {abbrev = "", color = "red", shortname = "",},
["National Front of Workers and Peasants"] = {abbrev = "", color = "#FFD700", shortname = "",},
["National Front Party (Azerbaijan)"] = {abbrev = "", color = "#14B5E1", shortname = "",},
["National Front Party (Libya)"] = {abbrev = "NFP", color = "#D1E231", shortname = "",},
["National Government (United Kingdom)"] = {abbrev = "", color = "#cccccc", shortname = "National",},
["National Grand Coalition"] = {abbrev = "", color = "#028DD5", shortname = "",},
["National Harmony Party"] = {abbrev = "", color = "#8A2A30", shortname = "",},
["National Health Action Party"] = {abbrev = "NHA", color = "#0071BB", shortname = "",},
["National Health Service Alliance"] = {abbrev = "", color = "#8B00FF", shortname = "",},
["National Independence Party (Belize)"] = {abbrev = "NIP", color = "#FF0000", shortname = "",},
["National Independence Party (UK)"] = {abbrev = "", color = "#2C6700", shortname = "National Independence",},
["National Independence Party of Georgia"] = {abbrev = "NIP", color = "#C1161E", shortname = "",},
["National Independent Party"] = {abbrev = "NIP", color = "#000000", shortname = "",},
["National Independent Party (Costa Rica)"] = {abbrev = "PNI", color = "#4B0082", shortname = "",},
["National Independent Party (Nepal)"] = {abbrev = "NIP", color = "#0095DA", shortname = "",},
["National Independent Union"] = {abbrev = "", color = "#CF912A", shortname = "",},
["National Indian Muslim Alliance Party"] = {abbrev = "IMAN", color = "#cd0000", shortname = "",},
["National Initiative Party"] = {abbrev = "", color = "#92000a", shortname = "",},
["National Innovation Party"] = {abbrev = "", color = "#25A9E0", shortname = "",},
["National Integration Movement"] = {abbrev = "", color = "#1EC4FF", shortname = "",},
["National Integration Party (Costa Rica)"] = {abbrev = "PIN", color = "#122562", shortname = "",},
["National Integration Party (Guatemala)"] = {abbrev = "PIN", color = "#000000", shortname = "",},
["National Iraqi Alliance"] = {abbrev = "", color = "#008000", shortname = "",},
["National Islamic Front of Afghanistan"] = {abbrev = "", color = "gold", shortname = "",},
["National Islamic Front"] = {abbrev = "NIF", color = "#000000", shortname = "",},
["National Islamic Movement of Afghanistan"] = {abbrev = "", color = "#3F47CC", shortname = "Junbish",},
["National Ittihadi Congress"] = {abbrev = "", color = "#1170C1", shortname = "",},
["National Jankranti Dal"] = {abbrev = "NJD", color = "#edb7c9", shortname = "",},
["National Joint Action Committee"] = {abbrev = "NJAC", color = "black", shortname = "",},
["National Labor Party (Brazil)"] = {abbrev = "", color = "#31b44b", shortname = "",},
["National Labor Party (Mongolia)"] = {abbrev = "NLP", color = "#6D3290", shortname = "",},
["National Labor Party"] = {abbrev = "", color = "#E2826B", shortname = "",},
["National Labour Organisation"] = {abbrev = "", color = "green", shortname = "National Labour",},
["National Labour Party (Brazil)"] = {abbrev = "PTN", color = "#AFB908", shortname = "",},
["National Labour Party (Czechoslovakia, 1925)"] = {abbrev = "NSP", color = "#B0E0E6", shortname = "",},
["National Labour Party (Ireland)"] = {abbrev = "NLP", color = "#FF7F50", shortname = "National Labour Party",},
["National Labour Party (Kenya)"] = {abbrev = "NLP", color = "#23C539", shortname = "",},
["National Landowners (Denmark)"] = {abbrev = "", color = "#246B24", shortname = "National Landowners",},
["National League for Democracy"] = {abbrev = "NLD", color = "#EC1B23", shortname = "",},
["National League of Sweden"] = {abbrev = "", color = "black", shortname = "National League",},
["National League Party"] = {abbrev = "NL", color = "#9932CC", shortname = "National League",},
["National Legitimist Party"] = {abbrev = "", color = "#004F50", shortname = "National Legitimist",},
["National Legion (Norway)"] = {abbrev = "", color = "black", shortname = "",},
["National Liberal Party (Bermuda)"] = {abbrev = "", color = "#E3B533", shortname = "",},
["National Liberal Party (Bulgaria)"] = {abbrev = "", color = "#03C03C", shortname = "",},
["National Liberal Party (Denmark)"] = {abbrev = "", color = "#AFEEEE", shortname = "National Liberal",},
["National Liberal Party (El Salvador)"] = {abbrev = "", color = "#D8F781", shortname = "",},
["National Liberal Party (Germany)"] = {abbrev = "NLP", color = "#98C22C", shortname = "",},
["National Liberal Party (Lebanon)"] = {abbrev = "", color = "#C89E00", shortname = "National Liberal Party",},
["National Liberal Party (Moldova)"] = {abbrev = "", color = "#FFE600", shortname = "",},
["National Liberal Party (Panama)"] = {abbrev = "", color = "#9F140F", shortname = "",},
["National Liberal Party (Romania, 1875)"] = {abbrev = "PNL", color = "#FFE101", shortname = "",},
["National Liberal Party (Romania)"] = {abbrev = "PNL", color = "#FFDD00", shortname = "",},
["National Liberal Party (UK, 1922)"] = {abbrev = "", color = "#FFF890", shortname = "National Liberal",},
["National Liberal Party (UK, 1931)"] = {abbrev = "", color = "#AFEEEE", shortname = "National Liberal",},
["National Liberal Party (UK, 1999)"] = {abbrev = "", color = "#FF6600", shortname = "National Liberal",},
["National Liberal Party–Brătianu"] = {abbrev = "", color = "#d3c241", shortname = "PNL–Brătianu",},
["National Liberal Party–Tătărescu"] = {abbrev = "", color = "#fdff62", shortname = "PNL-Tătărescu",},
["National Liberation Front (Algeria)"] = {abbrev = "FLN", color = "#DC143C", shortname = "",},
["National Liberation Front (Ceylon)"] = {abbrev = "", color = "#00008B", shortname = "",},
["National Liberation Front (South Yemen)"] = {abbrev = "NLF", color = "#DC143C", shortname = "",},
["National Liberation Front of Angola"] = {abbrev = "FNLA", color = "#F8D516", shortname = "",},
["National Liberation Movement (Guatemala)"] = {abbrev = "MLN", color = "#002C77", shortname = "",},
["National Liberation Party (Costa Rica)"] = {abbrev = "PLN", color = "#008024", shortname = "",},
["National List"] = {abbrev = "", color = "#0047AB", shortname = "",},
["National List (Italy)"] = {abbrev = "", color = "#000000", shortname = "National List",},
["National Lokhind Party"] = {abbrev = "NLHP", color = "#00BFFF", shortname = "",},
["National Loktantrik Party"] = {abbrev = "NLP", color = "#3333FF", shortname = "",},
["National Mandate Party"] = {abbrev = "PAN", color = "#0054A3", shortname = "",},
["National Monarchist Union (Spain, 1919)"] = {abbrev = "", color = "#008080", shortname = "",},
["National Movement (Costa Rica)"] = {abbrev = "MN", color = "#FFFFFF", shortname = "",},
["National Movement (Luxembourg)"] = {abbrev = "", color = "gray", shortname = "",},
["National Movement (Poland)"] = {abbrev = "", color = "#C11D1E", shortname = "",},
["National Movement for People's Power"] = {abbrev = "", color = "#A2006D", shortname = "",},
["National Movement for Reconciliation"] = {abbrev = "", color = "#264F9E", shortname = "",},
["National Movement for Sovereignty"] = {abbrev = "", color = "#2B3856", shortname = "",},
["National Movement for Stability and Progress"] = {abbrev = "NDSV", color = "#F5CE42", shortname = "",},
["National Movement for the Development of Society"] = {abbrev = "MNSD", color = "#22B14C", shortname = "",},
["National Movement for the Liberation of Kosovo"] = {abbrev = "", color = "red", shortname = "",},
["National Movement of Amhara"] = {abbrev = "NaMA", color = "#C66122", shortname = "",},
["National Movement of Hope"] = {abbrev = "MNE", color = "#C66122", shortname = "",},
["National Movement of the Revolution"] = {abbrev = "", color = "#FF7F00", shortname = "",},
["National Network (Serbia)"] = {abbrev = "NM", color = "#46B8E9", shortname = "",},
["National Opinion"] = {abbrev = "", color = "#7D5C4B", shortname = "",},
["National Opposing Union"] = {abbrev = "UNO", color = "#006400", shortname = "",},
["National Opposition Union"] = {abbrev = "UNO", color = "#1E90FF", shortname = "",},
["National Ordinary People Empowerment Union"] = {abbrev = "", color = "#08702D", shortname = "",},
["National Pact for Democracy and Development"] = {abbrev = "PNDD-ADIL", color = "#92440A", shortname = "",},
["National Partnership"] = {abbrev = "NS", color = "#000000", shortname = "",},
["National Party (Chile, 1857)"] = {abbrev = "", color = "#9C74FD", shortname = "National",},
["National Party (Chile, 1966)"] = {abbrev = "", color = "#00008B", shortname = "National",},
["National Party (Colombia)"] = {abbrev = "", color = "#E3FF2A", shortname = "",},
["National Party (Costa Rica)"] = {abbrev = "", color = "#32CD32", shortname = "National",},
["National Party (Czech Republic)"] = {abbrev = "NS", color = "#00008B", shortname = "",},
["National Party (Haiti)"] = {abbrev = "", color = "#007BA7", shortname = "",},
["National Party (Ireland, 1995)"] = {abbrev = "", color = "#8A8AE0", shortname = "National Party",},
["National Party (Ireland, 2016)"] = {abbrev = "", color = "#264A3C", shortname = "National Party",},
["National Party (Kingdom of Serbia)"] = {abbrev = "", color = "#040F0F", shortname = "National",},
["National Party (Pakistan)"] = {abbrev = "NP", color = "#CD5C5C", shortname = "",},
["National Party (Papua New Guinea)"] = {abbrev = "", color = "#2F8814", shortname = "National Party",},
["National Party (Poland)"] = {abbrev = "SN", color = "#5E5151", shortname = "",},
["National Party (Queensland, 1917)"] = {abbrev = "", color = "#6495ED", shortname = "National",},
["National Party (South Africa)"] = {abbrev = "", color = "#FF9933", shortname = "National",},
["National Party (South Korea)"] = {abbrev = "", color = "#F1433A", shortname = "National",},
["National Party (Sweden)"] = {abbrev = "", color = "#ffff00", shortname = "National Party",},
["National Party (Syria)"] = {abbrev = "", color = "#00529F", shortname = "National Party",},
["National Party (UK, 1917)"] = {abbrev = "", color = "#327", shortname = "National",},
["National Party (UK, 1976)"] = {abbrev = "", color = "black", shortname = "National Party",},
["National Party (Uruguay)"] = {abbrev = "", color = "#80BFFF", shortname = "National Party",},
["National Party (US)"] = {abbrev = "", color = "#EE6666", shortname = "National",},
["National Party (Zambia)"] = {abbrev = "", color = "#377eb8", shortname = "",},
["National Party For Development and Welfare"] = {abbrev = "NPFDW", color = "#FFBA00", shortname = "",},
["National Party for Solidarity and Development"] = {abbrev = "PNSD", color = "", shortname = "",},
["National Party of Australia – NSW"] = {abbrev = "", color = "#006644", shortname = "National",},
["National Party of Australia – Queensland"] = {abbrev = "", color = "#006644", shortname = "National",},
["National Party of Australia – Tasmania"] = {abbrev = "", color = "#006644", shortname = "",},
["National Party of Australia – Victoria"] = {abbrev = "", color = "#006644", shortname = "National",},
["National Party of Australia (WA)"] = {abbrev = "", color = "#006644", shortname = "National",},
["National Party of Australia"] = {abbrev = "", color = "#006644", shortname = "National",},
["National Party of Greece"] = {abbrev = "EKE", color = "lightgrey", shortname = "",},
["National Party of Honduras"] = {abbrev = "", color = "#007DBC", shortname = "National",},
["National Party of Nigeria"] = {abbrev = "", color = "#445FAC", shortname = "",},
["National Party of Scotland"] = {abbrev = "", color = "#FFFF66", shortname = "National (Scotland)",},
["National Party of South West Africa"] = {abbrev = "", color = "orange", shortname = "",},
["National Party of Suriname"] = {abbrev = "NPS", color = "#00964C", shortname = "",},
["National Party of Work"] = {abbrev = "", color = "#AAD8E6", shortname = "National Party of Work",},
["National Party South Africa"] = {abbrev = "", color = "#0006B0", shortname = "National Party",},
["National Patriotic Coalition"] = {abbrev = "", color = "#ADD8E6", shortname = "",},
["National Patriotic Front (Namibia)"] = {abbrev = "NPF", color = "#EDD31C", shortname = "",},
["National Patriotic Front (Zimbabwe)"] = {abbrev = "", color = "black", shortname = "",},
["National Patriotic Party (Bangladesh)"] = {abbrev = "NPP", color = "#70179E", shortname = "",},
["National Patriotic Party"] = {abbrev = "NPP", color = "#000000", shortname = "",},
["National Peasant Party (Hungary)"] = {abbrev = "", color = "#FFCC00", shortname = "National Peasant",},
["National Peasants' Party"] = {abbrev = "PNȚ", color = "#50693b", shortname = "",},
["National People's Ambassadors"] = {abbrev = "", color = "#D1001C", shortname = "",},
["National People's Front (South Africa)"] = {abbrev = "", color = "#52871E", shortname = "",},
["National People's Party (Bangladesh)"] = {abbrev = "", color = "#CD853F", shortname = "",},
["National People's Party (Curaçao)"] = {abbrev = "PNP", color = "#04733C", shortname = "",},
["National People's Party (India)"] = {abbrev = "NPEP", color = "#FFCA61", shortname = "",},
["National People's Party (Indonesia)"] = {abbrev = "", color = "black", shortname = "",},
["National People's Party (South Africa, 1981)"] = {abbrev = "", color = "#DC143C", shortname = "National People's",},
["National People's Party (South Africa)"] = {abbrev = "", color = "#274D8F", shortname = "National People's Party",},
["National People's Party (The Gambia)"] = {abbrev = "NPP", color = "#40484F", shortname = "",},
["National People's Power"] = {abbrev = "NPP", color = "#C4094A", shortname = "",},
["National People’s Party"] = {abbrev = "", color = "#DDBBCC", shortname = "",},
["National Peoples Party (Pakistan)"] = {abbrev = "", color = "#B22222", shortname = "",},
["National Political Union"] = {abbrev = "", color = "black", shortname = "",},
["National Political Union (1984)"] = {abbrev = "EPEN", color = "#0a00cc", shortname = "",},
["National Popular Alliance"] = {abbrev = "ANAPO", color = "#bc8f8f", shortname = "",},
["National Popular Movement"] = {abbrev = "", color = "#FB0242", shortname = "",},
["National Popular Rally"] = {abbrev = "", color = "#F0001C", shortname = "",},
["National Porfirist Party"] = {abbrev = "", color = "#0047AB", shortname = "",},
["National Preservation Party"] = {abbrev = "", color = "#36895D", shortname = "National Preservation",},
["National Pro Patria Party"] = {abbrev = "PNPP", color = "darkblue", shortname = "",},
["National Progress Party of Armenia"] = {abbrev = "", color = "#F3A81D", shortname = "National Progress",},
["National Progressive Center Union"] = {abbrev = "EPEK", color = "#9370DB", shortname = "",},
["National Progressive Democrats"] = {abbrev = "NPD", color = "#FA8072", shortname = "National Progressive Democrats",},
["National Progressive Force"] = {abbrev = "", color = "#2A52BE", shortname = "",},
["National Progressive Front (Iraq)"] = {abbrev = "NPF", color = "#197B30", shortname = "",},
["National Progressive Front (Syria)"] = {abbrev = "NPF", color = "#197B30", shortname = "",},
["National Progressive Party (Carniola)"] = {abbrev = "NNS", color = "yellow", shortname = "",},
["National Progressive Party (Finland)"] = {abbrev = "", color = "gold", shortname = "National Progressive",},
["National Progressive Party (Laos)"] = {abbrev = "", color = "#002868", shortname = "",},
["National Progressive Party (Switzerland)"] = {abbrev = "PPN", color = "#0404B4", shortname = "",},
["National Progressive Unionist Party"] = {abbrev = "", color = "#F30502", shortname = "Tagammu",},
["National Radical Union"] = {abbrev = "ERE", color = "#005AC0", shortname = "",},
["National Rainbow Coalition – Kenya"] = {abbrev = "", color = "#66FF66", shortname = "",},
["National Rainbow Coalition"] = {abbrev = "NARC", color = "#1889C7", shortname = "",},
["National Rally for Democracy (Benin)"] = {abbrev = "", color = "#FEF880", shortname = "",},
["National Rally for Democracy in Chad"] = {abbrev = "", color = "#ffd700", shortname = "RNDT–Le Réveil",},
["National Rally for Development and Progress"] = {abbrev = "RNDP", color = "#000040", shortname = "",},
["National Rally for Reform and Development"] = {abbrev = "", color = "#008040", shortname = "Tewassoul",},
["National Rally of Independents"] = {abbrev = "RNI", color = "#00B5EE", shortname = "",},
["National Rally"] = {abbrev = "RN", color = "#254671", shortname = "",},
["National Rebirth Party"] = {abbrev = "", color = "#2C4F19", shortname = "",},
["National Reconciliation Party"] = {abbrev = "NRP", color = "#0073CF", shortname = "",},
["National Reconstruction"] = {abbrev = "", color = "#7B68EE", shortname = "National Reconstruction",},
["National Reconstruction Party"] = {abbrev = "PRN", color = "#0087DC", shortname = "",},
["National Reconstruction Party of Romania"] = {abbrev = "PRN", color = "yellow", shortname = "",},
["National Reform Party (Belize)"] = {abbrev = "NRP", color = "#FF7F00", shortname = "",},
["National Reform Party (Ghana)"] = {abbrev = "", color = "purple", shortname = "",},
["National Reform Trend"] = {abbrev = "", color = "#AEDBFB", shortname = "",},
["National Regeneration Movement"] = {abbrev = "MORENA", color = "#B62118", shortname = "",},
["National Religious Front"] = {abbrev = "", color = "#583759", shortname = "",},
["National Religious Party"] = {abbrev = "", color = "#583759", shortname = "Mafdal",},
["National Renaissance Front"] = {abbrev = "", color = "#000080", shortname = "",},
["National Renewal (Chile)"] = {abbrev = "", color = "#024E9A", shortname = "National Renewal",},
["National Renewal (Peru)"] = {abbrev = "", color = "#0047AB", shortname = "",},
["National Renewal Alliance"] = {abbrev = "ARENA", color = "#0067A5", shortname = "",},
["National Renewal Movement (Panama)"] = {abbrev = "MRN", color = "darkgreen", shortname = "",},
["National Renewal Party (Guatemala)"] = {abbrev = "PNR", color = "darkorange", shortname = "",},
["National Renovator Party"] = {abbrev = "", color = "#002147", shortname = "National Renovator",},
["National Republican Alliance"] = {abbrev = "ANR", color = "#504a48", shortname = "",},
["National Republican Convention"] = {abbrev = "", color = "#D82628", shortname = "",},
["National Republican Movement for Democracy and Development"] = {abbrev = "", color = "#000000", shortname = "",},
["National Republican Movement"] = {abbrev = "MNR", color = "#404040", shortname = "",},
["National Republican Party (Costa Rica)"] = {abbrev = "PRN", color = "#FF1414", shortname = "",},
["National Republican Party (Portugal)"] = {abbrev = "", color = "#556B2F", shortname = "",},
["National Republican Party (Spain)"] = {abbrev = "PRN", color = "#B74896", shortname = "",},
["National Republican Party (US)"] = {abbrev = "", color = "#FFE6B0", shortname = "National Republican",},
["National Republican Party of Russia"] = {abbrev = "NRPR", color = "#F9DA00", shortname = "",},
["National Rescue Movement"] = {abbrev = "NRM", color = "#fecd00", shortname = "",},
["National Rescue Party"] = {abbrev = "PRN", color = "#DB7093", shortname = "",},
["National Resistance Movement"] = {abbrev = "NRM", color = "#FFD700", shortname = "",},
["National Restoration Party (Costa Rica)"] = {abbrev = "PREN", color = "#0059CF", shortname = "",},
["National Restoration Party (Zambia)"] = {abbrev = "", color = "#F7941D", shortname = "",},
["National Resurrection Party"] = {abbrev = "TPP", color = "#EB7C11", shortname = "",},
["National Revival (Artsakh)"] = {abbrev = "", color = "#F26737", shortname = "National Revival",},
["National Revival Movement Party"] = {abbrev = "", color = "#CC0000", shortname = "",},
["National Revival of Poland"] = {abbrev = "", color = "#016E4F", shortname = "",},
["National Revolutionary Party (South Korea, 2020)"] = {abbrev = "", color = "#E7141A", shortname = "National Revolutionary",},
["National Revolutionary Party (South Korea, 2021)"] = {abbrev = "", color = "#023793", shortname = "",},
["National Revolutionary Party of Afghanistan"] = {abbrev = "", color = "#FFD700", shortname = "",},
["National Road Party"] = {abbrev = "MYP", color = "#F40F0F", shortname = "",},
["National Salvation Front (Lebanon)"] = {abbrev = "", color = "#DA70D6", shortname = "",},
["National Salvation Front (Romania)"] = {abbrev = "FSN", color = "#DA70D6", shortname = "",},
["National Salvation Movement"] = {abbrev = "MSN", color = "#05AFF2", shortname = "",},
["National Salvation Party"] = {abbrev = "MSP", color = "#000000", shortname = "",},
["National Secular Conference"] = {abbrev = "NSC", color = "green", shortname = "",},
["National Secular Party"] = {abbrev = "NSCP", color = "#F78181", shortname = "",},
["National Self-Government of Germans in Hungary"] = {abbrev = "LdU", color = "#0047AB", shortname = "",},
["National Social Democratic Front"] = {abbrev = "", color = "#FF3180", shortname = "",},
["National Socialist Freedom Movement"] = {abbrev = "NSFP", color = "#804C19", shortname = "",},
["National Socialist Front"] = {abbrev = "NSF", color = "#006699", shortname = "",},
["National Socialist Party (Philippines)"] = {abbrev = "", color = "#B22222", shortname = "National Socialist",},
["National Socialist Party (UK)"] = {abbrev = "", color = "#B20000", shortname = "National Socialist Party",},
["National Socialist Party of New Zealand"] = {abbrev = "", color = "#964B00", shortname = "National Socialist",},
["National Socialist Party"] = {abbrev = "", color = "#FF0800", shortname = "",},
["National Socialist Workers' Party (Sweden)"] = {abbrev = "NSAP", color = "#005293", shortname = "National Socialists",},
["National Socialist Workers' Party of Denmark"] = {abbrev = "", color = "#964B00", shortname = "National Socialists",},
["National Socialists – Left of the 21st century"] = {abbrev = "NS-LEV 21", color = "#E0000F", shortname = "",},
["National Solidarity (Peru)"] = {abbrev = "", color = "#FFEE00", shortname = "",},
["National Solidarity Alliance"] = {abbrev = "", color = "#FFEE00", shortname = "",},
["National Solidarity Party (Singapore)"] = {abbrev = "NSP", color = "#FF3300", shortname = "",},
["National Solidarity Party of Afghanistan"] = {abbrev = "", color = "#6BA5D3", shortname = "",},
["National Struggle Party"] = {abbrev = "", color = "#AF0621", shortname = "",},
["National Super Alliance"] = {abbrev = "", color = "#FFA500", shortname = "",},
["National Transformation Alliance"] = {abbrev = "NTA", color = "#283C95", shortname = "",},
["National Transformation Party (Solomon Islands)"] = {abbrev = "NTPSI", color = "#FEE40D", shortname = "",},
["National Transformation Party (Trinidad and Tobago)"] = {abbrev = "NTP", color = "#FFFFFF", shortname = "",},
["National Trust Party (Malaysia)"] = {abbrev = "", color = "#FFA009", shortname = "Amanah",},
["National Umma Party"] = {abbrev = "NUP", color = "#056D0C", shortname = "",},
["National Unification (Czechoslovakia)"] = {abbrev = "NSj", color = "#251779", shortname = "",},
["National Unification Party (Costa Rica)"] = {abbrev = "UN", color = "#595CFF", shortname = "",},
["National Union (Cuba)"] = {abbrev = "", color = "#D2FF78", shortname = "National Union",},
["National Union (Egypt)"] = {abbrev = "NU", color = "#F0001C", shortname = "",},
["National Union (Gabon)"] = {abbrev = "UN", color = "#276DAB", shortname = "",},
["National Union (Israel)"] = {abbrev = "", color = "#001367", shortname = "National Union",},
["National Union (Portugal)"] = {abbrev = "UN", color = "#002E79", shortname = "",},
["National Union (Spain, 1900)"] = {abbrev = "UN", color = "#FF7F27", shortname = "",},
["National Union (Spain)"] = {abbrev = "UN", color = "#383CA8", shortname = "",},
["National Union (Switzerland)"] = {abbrev = "UN", color = "black", shortname = "",},
["National Union (United Arab Republic)"] = {abbrev = "NU", color = "#DC143C", shortname = "",},
["National Union Attack"] = {abbrev = "ATAKA", color = "#00563F", shortname = "",},
["National Union for Democracy and Progress (Cameroon)"] = {abbrev = "UNDP", color = "#40B749", shortname = "",},
["National Union for Democracy and Progress (Central African Republic)"] = {abbrev = "", color = "#357D29", shortname = "",},
["National Union for Democracy and Renewal"] = {abbrev = "", color = "#FF8C00", shortname = "",},
["National Union for Democratic Progress"] = {abbrev = "", color = "#E90785", shortname = "",},
["National Union for Development and Democracy"] = {abbrev = "UNDD", color = "#008080", shortname = "",},
["National Union for the Defence of Democracy"] = {abbrev = "", color = "#ED8419", shortname = "",},
["National Union for Independence"] = {abbrev = "UNI", color = "#21202e", shortname = "",},
["National Union for Independence and Revolution"] = {abbrev = "UNIR", color = "#0000AA", shortname = "",},
["National Union for the Progress of Romania"] = {abbrev = "UNPR", color = "#D90000", shortname = "",},
["National Union from Banat"] = {abbrev = "UNB", color = "black", shortname = "",},
["National Union of Ethical Citizens"] = {abbrev = "UNACE", color = "#B31B1B", shortname = "",},
["National Union of Greece"] = {abbrev = "EEE", color = "black", shortname = "",},
["National Union of Christian Democrats"] = {abbrev = "NUCD", color = "#B0E0E6", shortname = "",},
["National Union of Independents (Chile)"] = {abbrev = "", color = "grey", shortname = "",},
["National Union of Popular Forces"] = {abbrev = "", color = "#EC1B24", shortname = "",},
["National Union of Progress"] = {abbrev = "", color = "orange", shortname = "",},
["National Union of Workers (Sri Lanka)"] = {abbrev = "", color = "#F90818", shortname = "",},
["National Union Party (Costa Rica)"] = {abbrev = "PUN", color = "green", shortname = "",},
["National Union Party (US)"] = {abbrev = "", color = "#B22222", shortname = "National Union",},
["National Union PSD+PUR"] = {abbrev = "PSD+PUR", color = "#3068D5", shortname = "",},
["National Unionist Zamindara Party"] = {abbrev = "NUZP", color = "#DDFFEE", shortname = "",},
["National United Front"] = {abbrev = "NUF", color = "#0000FF", shortname = "",},
["National United Front of Kampuchea"] = {abbrev = "FUNK", color = "#DC143C", shortname = "",},
["National United Party (Vanuatu)"] = {abbrev = "NUP", color = "#FDCC06", shortname = "National United",},
["National United Party of Afghanistan"] = {abbrev = "", color = "#1081B9", shortname = "",},
["National United Renaissance"] = {abbrev = "", color = "#9F8170", shortname = "",},
["National Unity (Armenia)"] = {abbrev = "", color = "#2B3A8D", shortname = "National Unity",},
["National Unity (Czech Republic)"] = {abbrev = "NSJ", color = "#00008B", shortname = "",},
["National Unity (Greece)"] = {abbrev = "", color = "#022262", shortname = "",},
["National Unity (Maldives)"] = {abbrev = "", color = "#027018", shortname = "",},
["National Unity (Peru)"] = {abbrev = "", color = "green", shortname = "",},
["National Unity Alliance"] = {abbrev = "", color = "#0F0", shortname = "",},
["National Unity and Reconciliation Party"] = {abbrev = "NURP", color = "#B18403", shortname = "",},
["National Unity Association"] = {abbrev = "SEE", color = "#800000", shortname = "",},
["National Unity Democratic Organisation"] = {abbrev = "NUDO", color = "#0B4000", shortname = "",},
["National Unity Movement of Equatorial Guinea"] = {abbrev = "MUNGE", color = "#00059C", shortname = "",},
["National Unity Front"] = {abbrev = "", color = "#FFD700", shortname = "National Unity",},
["National Unity Government"] = {abbrev = "", color = "#FF4545", shortname = "",},
["National Unity of Hope"] = {abbrev = "UNE", color = "#50A700", shortname = "",},
["National Unity of Timorese Resistance"] = {abbrev = "UNDERTIM", color = "#3FB043", shortname = "",},
["National Unity Party (Central African Republic)"] = {abbrev = "", color = "#AFEEEE", shortname = "",},
["National Unity Party (Dominican Republic)"] = {abbrev = "", color = "#50c878", shortname = "",},
["National Unity Party (East Timor)"] = {abbrev = "PUN", color = "#3B4783", shortname = "",},
["National Unity Party (Guinea-Bissau)"] = {abbrev = "", color = "#7BC76D", shortname = "",},
["National Unity Party (Haiti)"] = {abbrev = "PUN", color = "#000000", shortname = "",},
["National Unity Party (Israel)"] = {abbrev = "", color = "#00BBDF", shortname = "National Unity",},
["National Unity Party (Moldova)"] = {abbrev = "PUN", color = "#802937", shortname = "",},
["National Unity Party (Myanmar)"] = {abbrev = "NUP", color = "#2188ca", shortname = "",},
["National Unity Party (Northern Cyprus)"] = {abbrev = "UBP", color = "#FF7F00", shortname = "",},
["National Unity Party (Philippines)"] = {abbrev = "NUP", color = "#104a21", shortname = "",},
["National Unity Platform"] = {abbrev = "NUP", color = "#C62127", shortname = "",},
["National Vanguard of the People"] = {abbrev = "", color = "#A52A2A", shortname = "",},
["National Vanguard Party"] = {abbrev = "PAGN", color = "#000000", shortname = "",},
["National Velasquista Federation"] = {abbrev = "FNV", color = "darkblue", shortname = "",},
["National Veteran's Committee"] = {abbrev = "KKVLAPSH", color = "#A7221D", shortname = "",},
["National Victory"] = {abbrev = "", color = "#EE204E", shortname = "",},
["National Vision Party"] = {abbrev = "", color = "olive", shortname = "",},
["New Wave – The Other Cyprus"] = {abbrev = "", color = "#00AEEE", shortname = "New Wave",},
["National Woodcutters' Rally – Rally for Gabon"] = {abbrev = "RNB–RPG", color = "#E0E05A", shortname = "",},
["National Workers' Party (Spain)"] = {abbrev = "", color = "#B93C3D", shortname = "",},
["National Workers' Party"] = {abbrev = "NPR", color = "#86041C", shortname = "",},
["National Workers' Union (Poland)"] = {abbrev = "NZR", color = "#DA4740", shortname = "",},
["National Youth Movement (Dominican Republic)"] = {abbrev = "", color = "white", shortname = "",},
["National Youth Party"] = {abbrev = "NYP", color = "#16D229", shortname = "",},
["National"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Nationalist (Ireland)"] = {abbrev = "", color = "#33FF00", shortname = "Nationalist",},
["Nationalist Alliance"] = {abbrev = "", color = "#FFFDD0", shortname = "",},
["Nationalist and Conservative Party"] = {abbrev = "", color = "#67C5EB", shortname = "Nationalist Conservative",},
["Nationalist Canarian Assembly"] = {abbrev = "", color = "#C62821", shortname = "",},
["Nationalist Canarian Centre"] = {abbrev = "", color = "#FF6600", shortname = "",},
["Nationalist Canarian Initiative"] = {abbrev = "ICAN", color = "#EB6143", shortname = "",},
["Nationalist Canarian Platform"] = {abbrev = "PCN", color = "#BB2996", shortname = "",},
["Nationalist Citizens' Party"] = {abbrev = "NCP", color = "#50C878", shortname = "",},
["Nationalist Civic Crusade"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Nationalist Coalition–Europe of the Peoples"] = {abbrev = "CN–EP", color = "#1D9546", shortname = "",},
["Nationalist Coalition"] = {abbrev = "", color = "#228B22", shortname = "",},
["Nationalist Congress Party"] = {abbrev = "NCP", color = "#00B2B2", shortname = "",},
["Nationalist Congress Party (Ajit Pawar)"] = {abbrev = "NCP(AP)", color = "#00B2B2", shortname = "",},
["Nationalist Democracy Party"] = {abbrev = "MDP", color = "#000000", shortname = "",},
["Nationalist Democratic Action"] = {abbrev = "", color = "#9B2335", shortname = "",},
["Nationalist Democratic Federation"] = {abbrev = "", color = "#EEDB65", shortname = "",},
["Nationalist Democratic Movement (Bangladesh)"] = {abbrev = "NDM", color = "#005125", shortname = "",},
["Nationalist Democratic Movement"] = {abbrev = "NDM", color = "#DDD000", shortname = "",},
["Nationalist Democratic Progressive Party"] = {abbrev = "NDPP", color = "#ED1B24", shortname = "",},
["Nationalist Galicianist Party"] = {abbrev = "", color = "#79CDCD", shortname = "",},
["Nationalist Hong Kong"] = {abbrev = "", color = "#00247D", shortname = "",},
["Nationalist Left of Manresa"] = {abbrev = "", color = "#A7252F", shortname = "",},
["Nationalist Left"] = {abbrev = "", color = "#396BE4", shortname = "",},
["Nationalist Liberal Party"] = {abbrev = "PLN", color = "#FF0000", shortname = "",},
["Nationalist Maga Alternative"] = {abbrev = "", color = "#089C99", shortname = "",},
["Nationalist Movement Party"] = {abbrev = "MHP", color = "#870000", shortname = "",},
["Nationalist Party (1912)"] = {abbrev = "", color = "#000099", shortname = "Nationalist",},
["Nationalist Party (Australia)"] = {abbrev = "", color = "#6495ED", shortname = "Nationalist",},
["Nationalist Party (Bolivia)"] = {abbrev = "", color = "#191970", shortname = "",},
["Nationalist Party (Greece)"] = {abbrev = "", color = "#87CEFA", shortname = "",},
["Nationalist Party (Iceland)"] = {abbrev = "", color = "#0166cc", shortname = "Nationalist",},
["Nationalist Party (India)"] = {abbrev = "NP", color = "#009999", shortname = "",},
["Nationalist Party (Ireland)"] = {abbrev = "IrishNat", color = "#99FF66", shortname = "Irish Nationalist",},
["Nationalist Party (Malta)"] = {abbrev = "", color = "#5087B2", shortname = "Nationalist",},
["Nationalist Party (Northern Ireland)"] = {abbrev = "Nat", color = "#32cd32", shortname = "Nationalist",},
["Nationalist Party (Thailand)"] = {abbrev = "", color = "#dfab53", shortname = "Nationalist",},
["Nationalist Party (UK)"] = {abbrev = "", color = "DarkGoldenrod", shortname = "Nationalist Party",},
["Nationalist Party for Justice in Angola"] = {abbrev = "P-JANGO", color = "#047CC0", shortname = "",},
["Nationalist Party of Cantabria"] = {abbrev = "", color = "#11DD00", shortname = "",},
["Nationalist Party of Castile and León"] = {abbrev = "", color = "#808080", shortname = "",},
["Nationalist Party of Catalonia"] = {abbrev = "", color = "#47A9B6", shortname = "",},
["Nationalist Party of Ceuta"] = {abbrev = "", color = "#E46C0A", shortname = "",},
["Nationalist Party of Greater Vietnam"] = {abbrev = "", color = "#EA9978", shortname = "",},
["Nationalist Party of Puerto Rico"] = {abbrev = "PNPR", color = "black", shortname = "",},
["Nationalist Party of the Valencian Country"] = {abbrev = "", color = "#D09400", shortname = "",},
["Nationalist People's Coalition"] = {abbrev = "NPC", color = "#4AA02C", shortname = "",},
["Nationalist Republican (Spain)"] = {abbrev = "", color = "#C8989B", shortname = "",},
["Nationalist Republican Alliance"] = {abbrev = "ARENA", color = "#234B9A", shortname = "",},
["Nationalist Republican Liberal Movement"] = {abbrev = "MOLIRENA", color = "#FFFE51", shortname = "",},
["Nationalist Republican Party (Portugal)"] = {abbrev = "", color = "#0087DC", shortname = "",},
["Nationalist Republican Party (Suriname)"] = {abbrev = "PNR", color = "#005AAD", shortname = "",},
["National Socialist Union of Finland"] = {abbrev = "", color = "black", shortname = "",},
["Nationalist Task Party"] = {abbrev = "MÇP", color = "#870000", shortname = "",},
["Nationalist Trinamool Congress"] = {abbrev = "", color = "#99FF99", shortname = "Trinamool Congress",},
["Nationalist Valencian Party"] = {abbrev = "", color = "#F5A302", shortname = "",},
["Nationalist Vanua Tako Lavo Party"] = {abbrev = "NVTLP", color = "blue", shortname = "",},
["Nationalist/Country coalition"] = {abbrev = "", color = "#6495ED", shortname = "",},
["Nationalist/Progressive coalition"] = {abbrev = "", color = "#6495ED", shortname = "",},
["Nationalists’ Party (Iran)"] = {abbrev = "", color = "#4169E1", shortname = "",},
["Nationwide Organisation of We the People"] = {abbrev = "NOW", color = "#22211c", shortname = "",},
["Nationwide Social Democratic Party"] = {abbrev = "JSDP", color = "#0045AF", shortname = "",},
["Native Zakarpattia"] = {abbrev = "", color = "#28724F", shortname = "",},
["Natural Culture"] = {abbrev = "", color = "#CE9A00", shortname = "",},
["Natural Law Party (Finland)"] = {abbrev = "", color = "turquoise", shortname = "",},
["Natural Law Party (Ireland)"] = {abbrev = "", color = "#FFE4E1", shortname = "Natural Law Party",},
["Natural Law Party (Spain)"] = {abbrev = "", color = "#A5A608", shortname = "",},
["Natural Law Party (US)"] = {abbrev = "", color = "NavajoWhite", shortname = "Natural Law",},
["Natural Law Party of New Zealand"] = {abbrev = "", color = "#333366", shortname = "Natural Law",},
["Natural Law Party"] = {abbrev = "", color = "#ffe4e1", shortname = "Natural Law",},
["Nauru First"] = {abbrev = "", color = "#002780", shortname = "",},
["Nava Sama Samaja Party"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Navarra Suma"] = {abbrev = "NA+", color = "#819DA3", shortname = "",},
["Navarre Platform"] = {abbrev = "PN", color = "#812217", shortname = "",},
["Navarrese and Spanish Right"] = {abbrev = "", color = "#E2001A", shortname = "",},
["Navarrese Foral Alliance"] = {abbrev = "", color = "#2A52BE", shortname = "",},
["Navarrese Freedom"] = {abbrev = "", color = "#E30019", shortname = "",},
["Navarrese Left Union"] = {abbrev = "", color = "#51345A", shortname = "",},
["Navarrese People's Union"] = {abbrev = "UPN", color = "#00599B", shortname = "",},
["Navbharat Nirman Party"] = {abbrev = "NBNP", color = "#F7BE81", shortname = "",},
["Nawa Janabadi Morcha"] = {abbrev = "", color = "purple", shortname = "Nav Janbadi Morcha",},
["Nawa Nepal Prajatantrik Dal"] = {abbrev = "", color = "#40E0D0", shortname = "Navnepal Prajatantrik Dal",},
["Nawan Punjab Party"] = {abbrev = "NPP", color = "#E1A95F", shortname = "",},
["Naya Daur Party"] = {abbrev = "NDP", color = "#3B0B0B", shortname = "",},
["Nazi Party"] = {abbrev = "NSDAP", color = "#964B00", shortname = "",},
["NBNP"] = {abbrev = "", color = "#3453CC", shortname = "",},
["NCCR–Mageuzi"] = {abbrev = "", color = "#025dc3", shortname = "",},
["Ne Tak"] = {abbrev = "", color = "#CC181E", shortname = "",},
["Nebraska Party"] = {abbrev = "", color = "#A356DE", shortname = "Nebraska",},
["NEE"] = {abbrev = "", color = "#000000", shortname = "",},
["Neighborhood Force"] = {abbrev = "", color = "#1F95D1", shortname = "",},
["Neighborhoods with Voice"] = {abbrev = "", color = "#994499", shortname = "",},
["Neighbors for Alicante"] = {abbrev = "", color = "#6699CC", shortname = "",},
["Neighbors for Benalmádena"] = {abbrev = "", color = "#32BAC9", shortname = "",},
["Neighbors for Burgos"] = {abbrev = "", color = "#C67607", shortname = "",},
["Neighbors for Llanes"] = {abbrev = "", color = "#969696", shortname = "",},
["Neighbors for Salamanca"] = {abbrev = "", color = "#F9B233", shortname = "",},
["Neighbors for Sestao"] = {abbrev = "", color = "#32A33B", shortname = "",},
["Neighbors for Torrejón"] = {abbrev = "", color = "#FFFF01", shortname = "",},
["Neighbors for Torrelodones"] = {abbrev = "", color = "#49AFE8", shortname = "",},
["Neighbors for Tudela"] = {abbrev = "", color = "#BDCCE3", shortname = "",},
["Neighbors Ponferrada"] = {abbrev = "", color = "#020181", shortname = "",},
["Neighbors' Alternative"] = {abbrev = "", color = "#FAF300", shortname = "",},
["Neighbors' Group of San Bartolomé de Tirajana"] = {abbrev = "", color = "#718FC1", shortname = "",},
["Neighbour Association of Gorraiz"] = {abbrev = "", color = "#FBC02E", shortname = "",},
["Neighbourhood Action Movement"] = {abbrev = "", color = "#187F36", shortname = "",},
["Neighbourhood and Worker's Service Centre"] = {abbrev = "NWSC", color = "#FFC500", shortname = "",},
["NELU"] = {abbrev = "", color = "#5658CC", shortname = "",},
["Neo Democrats"] = {abbrev = "", color = "#F9B924", shortname = "",},
["Neo-Democrats (Spain)"] = {abbrev = "", color = "#FFA608", shortname = "",},
["NEOS – The New Austria and Liberal Forum"] = {abbrev = "NEOS", color = "#CB1667", shortname = "",},
["Nepa Rastriya Party"] = {abbrev = "", color = "#e34234", shortname = "",},
["Nepal Communist Party"] = {abbrev = "NCP", color = "#DD232C", shortname = "",},
["Nepal Federal Socialist Party"] = {abbrev = "", color = "mediumvioletred", shortname = "",},
["Nepal Janata Party"] = {abbrev = "", color = "orange", shortname = "",},
["Nepal Loktantrik Samajbadi Dal"] = {abbrev = "", color = "#fbceb1", shortname = "Loktantrik Samajbadi Dal",},
["Nepal Pariwar Dal"] = {abbrev = "", color = "#87CEEB", shortname = "",},
["Nepal Rashtrabadi Gorkha Parishad"] = {abbrev = "", color = "#73A3DE", shortname = "Gorkha Parishad",},
["Nepal Rastriya Bikas Party"] = {abbrev = "", color = "#E6DBCF", shortname = "",},
["Nepal Rastriya Loktantrik Dal"] = {abbrev = "", color = "#E6DBCF", shortname = "Rastriya Loktantrik Dal",},
["Nepal Sadbhavana Party (Anandidevi)"] = {abbrev = "", color = "greenyellow", shortname = "Nepal Sadbhavana Party (A)",},
["Nepal Sadbhawana Party"] = {abbrev = "", color = "yellowgreen", shortname = "",},
["Nepal Samata Party"] = {abbrev = "", color = "#FFDAB9", shortname = "",},
["Nepal Samyabadi Party (Marksbadi-Leninbadi-Maobadi)"] = {abbrev = "", color = "crimson", shortname = "Nepal Samyabadi Party (MLM)",},
["Nepal Shanti Kshetra Parishad"] = {abbrev = "", color = "#98FB98", shortname = "",},
["Nepal Socialist Party"] = {abbrev = "", color = "#00B2B2", shortname = "",},
["Nepal Sukumbasi Party (Loktantrik)"] = {abbrev = "", color = "coral", shortname = "",},
["Nepal Workers Peasants Party"] = {abbrev = "NMKP", color = "#ff8080", shortname = "",},
["Nepali Congress (Rastrabadi)"] = {abbrev = "", color = "blue", shortname = "",},
["Nepali Congress sidebar"] = {abbrev = "", color = "green", shortname = "Nepali Congress",},
["Nepali Janata Dal"] = {abbrev = "", color = "#c21e56", shortname = "",},
["Network (Slovak party)"] = {abbrev = "", color = "#E5452E", shortname = "#Network",},
["Neuquén People's Movement"] = {abbrev = "MPN", color = "#0070B8", shortname = "",},
["Neutral Free Austria Federation"] = {abbrev = "NFÖ", color = "red", shortname = "",},
["Neutral Bulgaria"] = {abbrev = "", color = "#018340", shortname = "",},
["Neutral Democratic Party"] = {abbrev = "", color = "#FF0000", shortname = "Neutral Democratic",},
["Nevis Reformation Party"] = {abbrev = "NRP", color = "#4CAB2D", shortname = "",},
["Nevada Democratic Party"] = {abbrev = "NDP", color = "#3333FF", shortname = "",},
["Nevada Republican Party"] = {abbrev = "NRP", color = "#E81B23", shortname = "",},
["New Afghanistan Party"] = {abbrev = "", color = "#FFD800", shortname = "Naveen",},
["New Agreement"] = {abbrev = "", color = "#FFE647", shortname = "",},
["New Alajuelita Party"] = {abbrev = "PALNU", color = "yellow", shortname = "",},
["New Algeria Front"] = {abbrev = "FAN", color = "#88E040", shortname = "",},
["New Alliance (Denmark)"] = {abbrev = "", color = "#9B0059", shortname = "New Alliance",},
["New Alliance of Faso"] = {abbrev = "", color = "#ffdb58", shortname = "",},
["New Alliance Party (Cook Islands)"] = {abbrev = "", color = "#00A5AE", shortname = "New Alliance",},
["New Alliance Party (Mexico)"] = {abbrev = "PNA", color = "#00AAAA", shortname = "",},
["New Alliance Party"] = {abbrev = "", color = "#FF00FF", shortname = "New Alliance",},
["New Alternative (Venezuela)"] = {abbrev = "", color = "#FF0066", shortname = "",},
["New Alternative Party (Thailand)"] = {abbrev = "", color = "#1e90ff", shortname = "",},
["New Alternatives"] = {abbrev = "", color = "#236736", shortname = "",},
["New Andalusian Green Left"] = {abbrev = "", color = "#C6514A", shortname = "",},
["New Anticapitalist Party"] = {abbrev = "NPA", color = "#C0081F", shortname = "",},
["New Aspiration Party"] = {abbrev = "", color = "#FFFF00", shortname = "New Aspiration",},
["New Azerbaijan Party"] = {abbrev = "YAP", color = "#0075C1", shortname = "",},
["New Barbados Kingdom Alliance"] = {abbrev = "NBKA", color = "#9A4EAE", shortname = "",},
["New Belgian Front"] = {abbrev = "", color = "#FEFB00", shortname = "",},
["New Britain Party"] = {abbrev = "", color = "#999999", shortname = "New Britain",},
["New Canaries"] = {abbrev = "NCa", color = "#639E42", shortname = "",},
["New Catalan Left"] = {abbrev = "", color = "#947F62", shortname = "",},
["New Centre (Andorra)"] = {abbrev = "", color = "Black", shortname = "",},
["New Centre (Latvia)"] = {abbrev = "", color = "#89192F", shortname = "",},
["New Centre-Right"] = {abbrev = "", color = "#05517e", shortname = "",},
["New Century Forum"] = {abbrev = "", color = "#005F6B", shortname = "New Forum",},
["New Civic Power"] = {abbrev = "NPC", color = "#1DA768", shortname = "",},
["New Citizen Party"] = {abbrev = "", color = "#D0BA42", shortname = "New Citizen",},
["New coalition (Mongolia)"] = {abbrev = "", color = "#f26022", shortname = "",},
["New Communist Party of Britain"] = {abbrev = "NCP", color = "red", shortname = "New Communist",},
["New Communist Party of Georgia"] = {abbrev = "", color = "#B22222", shortname = "",},
["New Communist Party of the Netherlands"] = {abbrev = "", color = "#CC0000", shortname = "",},
["New Communist Party of Yugoslavia"] = {abbrev = "NKPJ", color = "red", shortname = "",},
["New Conservative Party (Japan)"] = {abbrev = "", color = "#2D6BA1", shortname = "New Conservative",},
["New Conservative Party (Japan, 2002)"] = {abbrev = "", color = "#BD0401", shortname = "New Conservative",},
["New Conservative Party (Latvia)"] = {abbrev = "JKP", color = "#182956", shortname = "",},
["New Conservative Party (New Zealand)"] = {abbrev = "", color = "#00AEEF", shortname = "New Conservative",},
["New Conservative Party (South Korea)"] = {abbrev = "", color = "#00A7E5", shortname = "",},
["New Conservative Party of New Zealand"] = {abbrev = "", color = "#00AEEF", shortname = "New Conservative",},
["New Course — Automobile Russia"] = {abbrev = "NCAR", color = "#004090", shortname = "",},
["New Croatian Initiative"] = {abbrev = "NHI", color = "#3BB9FF", shortname = "",},
["New Cyprus Party"] = {abbrev = "", color = "navy", shortname = "",},
["New Dawn (Algeria)"] = {abbrev = "", color = "#B0BF1A", shortname = "New Dawn",},
["New Dawn Party"] = {abbrev = "YDP", color = "#AE4855", shortname = "",},
["New Deal (Chile)"] = {abbrev = "", color = "#37B296", shortname = "",},
["New Deal (France)"] = {abbrev = "", color = "#D11677", shortname = "",},
["New Democracy (Andorra)"] = {abbrev = "ND", color = "#FFAC30", shortname = "",},
["New Democracy (Gabon)"] = {abbrev = "ND", color = "#B2804D", shortname = "",},
["New Democracy (Greece)"] = {abbrev = "ND", color = "#1b5cc7", shortname = "",},
["New Democracy (Sweden)"] = {abbrev = "", color = "yellow", shortname = "New Democracy",},
["New Democracy Electoral Union"] = {abbrev = "NDUE", color = "#F58220", shortname = "",},
["New Democracy Party (Guinea-Bissau)"] = {abbrev = "", color = "#ADD8E6", shortname = "",},
["New Democracy Party (Lithuania)"] = {abbrev = "", color = "#210083", shortname = "",},
["New Democracy Party (Portugal)"] = {abbrev = "", color = "#1F468B", shortname = "New Democracy",},
["New Democracy Party (Thailand)"] = {abbrev = "", color = "#FF9900", shortname = "New Democracy",},
["New Democratic Force (Montenegro)"] = {abbrev = "FORCA", color = "#06437A", shortname = "",},
["New Democratic Forces (Guinea)"] = {abbrev = "", color = "#D47E35", shortname = "",},
["New Democratic Front (Sri Lanka)"] = {abbrev = "NDF", color = "#008000", shortname = "",},
["New Democratic Generation"] = {abbrev = "", color = "#99B200", shortname = "",},
["New Democratic Initiative of Kosovo"] = {abbrev = "IRDK", color = "#CBAC6C", shortname = "",},
["New Democratic Macau Association"] = {abbrev = "ANMD", color = "#df7038", shortname = "",},
["New Democratic Party — Greens"] = {abbrev = "", color = "#E32636", shortname = "",},
["New Democratic Party of Canada"] = {abbrev = "NDP", color = "#F4A460", shortname = "New Democratic",},
["New Democratic Party of Serbia"] = {abbrev = "NDSS", color = "#126180", shortname = "",},
["New Democratic Party (Albania)"] = {abbrev = "PDR", color = "#000099", shortname = "",},
["New Democratic Party (Kosovo)"] = {abbrev = "NDS", color = "#FFFF00", shortname = "",},
["New Democratic Party (New Zealand)"] = {abbrev = "", color = "#B8860B", shortname = "New Democratic",},
["New Democratic Party (Saint Vincent and the Grenadines)"] = {abbrev = "", color = "#ffcc29", shortname = "New Democratic",},
["New Democratic Party (South Korea)"] = {abbrev = "NDP", color = "#DC352A", shortname = "New Democratic",},
["New Democratic Republican Party"] = {abbrev = "NDRP", color = "#59955E", shortname = "New Democratic Republican",},
["New Democratic Spirit"] = {abbrev = "NDS", color = "#082567", shortname = "",},
["New Democratic Union Party"] = {abbrev = "", color = "#FFA500", shortname = "",},
["New Democrats (France)"] = {abbrev = "ND", color = "#421787", shortname = "",},
["New Democrats (Kenya)"] = {abbrev = "", color = "#E23237", shortname = "New Democrats",},
["New Dimension Party"] = {abbrev = "", color = "#2E3192", shortname = "",},
["New Ecological and Social People's Union"] = {abbrev = "NUPÉS", color = "#642497", shortname = "",},
["New Economics Party (Thailand)"] = {abbrev = "", color = "#7c2d89", shortname = "New Economics",},
["New Encounter"] = {abbrev = "", color = "#008FC3", shortname = "",},
["New England Party"] = {abbrev = "", color = "#2F4F4F", shortname = "New England",},
["New Energies"] = {abbrev = "", color = "#BD3758", shortname = "",},
["New Era for Democracy"] = {abbrev = "", color = "#4393AD", shortname = "",},
["New Era Party"] = {abbrev = "", color = "#26395D", shortname = "New Era",},
["New Flemish Alliance"] = {abbrev = "N-VA", color = "#F9CE19", shortname = "",},
["New Force (Italy)"] = {abbrev = "", color = "#000000", shortname = "New Force",},
["New Force (Moldova)"] = {abbrev = "MFN", color = "#7AE600", shortname = "",},
["New Force (Spain)"] = {abbrev = "", color = "#37649D", shortname = "",},
["New Force Party"] = {abbrev = "", color = "#008000", shortname = "",},
["New Forum for the Restoration of Democracy–Kenya"] = {abbrev = "", color = "blue", shortname = "",},
["New Forum"] = {abbrev = "", color = "black", shortname = "",},
["New Front for Democracy and Development"] = {abbrev = "NFDO", color = "yellow", shortname = "",},
["New Frontier Party (Japan)"] = {abbrev = "", color = "#E2176A", shortname = "New Frontier",},
["New Fuerteventura"] = {abbrev = "", color = "#139115", shortname = "",},
["New Future Coalition Party"] = {abbrev = "", color = "yellow", shortname = "",},
["New Generation Movement"] = {abbrev = "NGM", color = "#FF681F", shortname = "",},
["New Generation Party (Costa Rica)"] = {abbrev = "PNG", color = "#0070B8", shortname = "",},
["New Generation Party (Fiji)"] = {abbrev = "", color = "#223FB7", shortname = "",},
["New Generation Party (Papua New Guinea)"] = {abbrev = "NGP", color = "#FFD700", shortname = "",},
["New Generation Party (Romania)"] = {abbrev = "", color = "green", shortname = "",},
["New Gibraltar Democracy"] = {abbrev = "", color = "#FDCD2F", shortname = "",},
["New Harmony (Latvia)"] = {abbrev = "", color = "#960019", shortname = "",},
["New Heritage Party"] = {abbrev = "", color = "#F0B300", shortname = "",},
["New Historical Option"] = {abbrev = "", color = "#2BB2C6", shortname = "",},
["New Hong Kong Alliance"] = {abbrev = "NHKA", color = "#ED6420", shortname = "",},
["New Hope (Israel)"] = {abbrev = "", color = "#0081B2", shortname = "New Hope",},
["New Hope (Macau)"] = {abbrev = "NE", color = "#7CFC00", shortname = "",},
["New Hope"] = {abbrev = "", color = "#7CFC00", shortname = "",},
["New Horizons (Cyprus)"] = {abbrev = "", color = "#002366", shortname = "",},
["New Ideas for Monaco"] = {abbrev = "NIM", color = "#FF00BA", shortname = "",},
["New Indonesia Party of Struggle"] = {abbrev = "", color = "#B32823", shortname = "",},
["New Italian Socialist Party"] = {abbrev = "", color = "Salmon", shortname = "New PSI",},
["New Jewel Movement"] = {abbrev = "", color = "#FFA500", shortname = "",},
["New Korean Democratic Party"] = {abbrev = "NKDP", color = "#E6573B", shortname = "New Korean Democratic",},
["New Korea Party"] = {abbrev = "NKP", color = "#003990", shortname = "New Korea",},
["New Korea Party of Hope"] = {abbrev = "NKPH", color = "#283C7B", shortname = "New Korea",},
["New Kosovo Alliance"] = {abbrev = "AKR", color = "#0000FF", shortname = "",},
["New Kōmeitō"] = {abbrev = "NK", color = "#0851A3", shortname = "",},
["New Labour"] = {abbrev = "", color = "#ED918F", shortname = "",},
["New Left (Croatia)"] = {abbrev = "", color = "#cc0000", shortname = "",},
["New Left (Luxembourg)"] = {abbrev = "", color = "green", shortname = "",},
["New Left (Poland)"] = {abbrev = "", color = "#EB2A48", shortname = "",},
["New Left Current"] = {abbrev = "", color = "#FF0000", shortname = "",},
["New Liberal Club"] = {abbrev = "", color = "#CF0006", shortname = "",},
["New Liberal Party (New Zealand)"] = {abbrev = "", color = "#DDBB00", shortname = "New Liberal",},
["New Liberalism (Colombia)"] = {abbrev = "", color = "#c91226", shortname = "",},
["New Liberals (Australia)"] = {abbrev = "", color = "#54C2BD", shortname = "",},
["New Liberals (Germany)"] = {abbrev = "", color = "#00758C", shortname = "",},
["New Macau Association"] = {abbrev = "ANM", color = "#006400", shortname = "",},
["New Macau Development Union"] = {abbrev = "NMDU", color = "#FFD700", shortname = "",},
["New Macau Liberals"] = {abbrev = "AMN", color = "#006400", shortname = "",},
["New Majority (Chile)"] = {abbrev = "", color = "#FF8000", shortname = "",},
["New Majority (coalition)"] = {abbrev = "", color = "orange", shortname = "New Majority",},
["New Majority (Peru)"] = {abbrev = "", color = "#FF7538", shortname = "",},
["New Majority for Chile"] = {abbrev = "", color = "#FF1493", shortname = "",},
["New Middle Party"] = {abbrev = "", color = "#0033EE", shortname = "",},
["New Millennium Bean Party"] = {abbrev = "", color = "white", shortname = "",},
["New Movement for the Future"] = {abbrev = "NBZ", color = "gold", shortname = "",},
["New Nation Alliance (Taiwan)"] = {abbrev = "NNA", color = "#5D2971", shortname = "",},
["New Nation Alternative"] = {abbrev = "", color = "red", shortname = "",},
["New Nation Party"] = {abbrev = "NNP", color = "#4646b2", shortname = "New Nation",},
["New Nation Party (Solomon Islands)"] = {abbrev = "NNP", color = "#C39E4D", shortname = "",},
["New National Democracy Party"] = {abbrev = "NNDP", color = "#FFFFFF", shortname = "",},
["New National Front"] = {abbrev = "", color = "#00008B", shortname = "",},
["New National Party (Grenada)"] = {abbrev = "NNP", color = "#026701", shortname = "",},
["New National Party (South Africa)"] = {abbrev = "NNP", color = "#ff9933", shortname = "",},
["New National Order"] = {abbrev = "", color = "#FEFF54", shortname = "",},
["New National Vision"] = {abbrev = "NNV", color = "#07944c", shortname = "",},
["New Nationalist Party (UK)"] = {abbrev = "", color = "black", shortname = "New Nationalist Party",},
["New Nigeria Peoples Party"] = {abbrev = "NNPP", color = "#049603", shortname = "",},
["New Order (Venezuela)"] = {abbrev = "", color = "#000000", shortname = "",},
["New Ossetia"] = {abbrev = "NO",color = "#F9D949", shortname = "",},
["New Palangdharma Party"] = {abbrev = "", color = "#1A4B8E", shortname = "New Palangdharma",},
["New Party (Brazil)"] = {abbrev = "NOVO", color = "#F3701B", shortname = "",},
["New Party (Corrientes)"] = {abbrev = "", color = "#FF7500", shortname = "",},
["New Party (Greece)"] = {abbrev = "", color = "#ADFF2F", shortname = "",},
["New Party (Greece, 1947)"] = {abbrev = "", color = "darkblue", shortname = "",},
["New Party (Latvia)"] = {abbrev = "", color = "#800080", shortname = "",},
["New Party (Serbia)"] = {abbrev = "", color = "#FFDF00", shortname = "Nova",},
["New Party (Taiwan)"] = {abbrev = "", color = "#FFD700", shortname = "New",},
["New Party (UK)"] = {abbrev = "", color = "black", shortname = "New Party",},
["New Party (Thailand)"] = {abbrev = "", color = "#172E58", shortname = "New Party",},
["New Party Daichi"] = {abbrev = "", color = "#008000", shortname = "",},
["New Party Nippon"] = {abbrev = "", color = "#ED1B23", shortname = "",},
["New Party Sakigake"] = {abbrev = "", color = "#2F5CD7", shortname = "",},
["New Party Taiwan"] = {abbrev = "", color = "#FFD306", shortname = "",},
["New Patriotic Party (Aruba)"] = {abbrev = "", color = "#7F7D9C", shortname = "",},
["New Patriotic Party"] = {abbrev = "NPP", color = "#132F7A", shortname = "",},
["New People (political party)"] = {abbrev = "", color = "#0AD1C9", shortname = "New People",},
["New People Party"] = {abbrev = "", color = "#ECF295", shortname = "",},
["New People's Alliance"] = {abbrev = "", color = "#EE1100", shortname = "",},
["New People's Left"] = {abbrev = "", color = "#0A8070", shortname = "",},
["New People's Party (Hong Kong)"] = {abbrev = "NPP", color = "#1C8BCD", shortname = "",},
["New People's Party (Norway)"] = {abbrev = "", color = "#CC00FF", shortname = "New People's",},
["New People's Party of Korea"] = {abbrev = "", color = "#FF0000", shortname = "",},
["New People's Party–Civil Force"] = {abbrev = "NPP/CF", color = "#1C8BCD", shortname = "",},
["New People's Party"] = {abbrev = "", color = "Orange", shortname = "",},
["New Political Center — Girchi"] = {abbrev = "", color = "#327F37", shortname = "Girchi",},
["New Political Reform Party (1992)"] = {abbrev = "", color = "#101299", shortname = "New Political Reform",},
["New Political Reform Party"] = {abbrev = "", color = "#317873", shortname = "New Political Reform",},
["New Politics (Ukraine)"] = {abbrev = "", color = "#FFCB08", shortname = "New Politics",},
["New Politics Alliance for Democracy"] = {abbrev = "NPAD", color = "#0099cc", shortname = "",},
["New Politics Alliance"] = {abbrev = "", color = "#00CCFF", shortname = "",},
["New Power Party"] = {abbrev = "NPP", color = "#FBBE01", shortname = "",},
["New Progressive Alliance"] = {abbrev = "", color = "#E43234", shortname = "",},
["New Progressive Party (Puerto Rico)"] = {abbrev = "PNP", color = "#161687", shortname = "",},
["New Progressive Party (South Korea)"] = {abbrev = "", color = "#E62020", shortname = "New Progressive",},
["New Progressive Party (US)"] = {abbrev = "", color = "#3333FF", shortname = "",},
["New Prospect for Hong Kong"] = {abbrev = "NPHK", color = "#30D5C8", shortname = "New Prospect",},
["New Region"] = {abbrev = "", color = "#377825", shortname = "",},
["New Renaissance Party"] = {abbrev = "", color = "#00B0EC", shortname = "New Renaissance",},
["New Republic Party (Costa Rica)"] = {abbrev = "PNR", color = "#87CEFA", shortname = "",},
["New Republic Party (South Africa)"] = {abbrev = "", color = "#FDB813", shortname = "New Republic",},
["New Republican Force"] = {abbrev = "NFR", color = "#8C479B", shortname = "",},
["New Right (Denmark)"] = {abbrev = "", color = "#00505B", shortname = "New Right",},
["New Right (Greece)"] = {abbrev = "", color = "#00366B", shortname = "",},
["New Right (Israel)"] = {abbrev = "", color = "#25ACE1", shortname = "New Right",},
["New Right (Netherlands)"] = {abbrev = "NR", color = "red", shortname = "",},
["New Rights Party"] = {abbrev = "", color = "#8CD309", shortname = "New Rights",},
["New Russia Party"] = {abbrev = "", color = "#D52B1E", shortname = "",},
["New Serb Democracy"] = {abbrev = "NSD", color = "#163868", shortname = "",},
["New Serbia (political party)"] = {abbrev = "NS", color = "#162243", shortname = "",},
["New Siam Party"] = {abbrev = "", color = "#FFA07A", shortname = "New Siam",},
["New Sinhala Heritage"] = {abbrev = "NSU", color = "maroon", shortname = "",},
["New Slovenia"] = {abbrev = "NSi", color = "#009AC7", shortname = "",},
["New Social Contract"] = {abbrev = "NSC", color = "#8DA6D6", shortname = "",},
["New Social Democratic Party"] = {abbrev = "", color = "#004F94", shortname = "New Social Democratic",},
["New Social Pact"] = {abbrev = "", color = "#800080", shortname = "",},
["New Social Power Party"] = {abbrev = "", color = "#2B934A", shortname = "",},
["New Socialism (political party)"] = {abbrev = "", color = "#EF8A39", shortname = "",},
["New Socialist Party (San Marino)"] = {abbrev = "NPS", color = "#0060B6", shortname = "",},
["New Socialist Party of Japan"] = {abbrev = "", color = "#6EB92B", shortname = "New Socialist",},
["New Space (Uruguay)"] = {abbrev = "", color = "#F34723", shortname = "New Space",},
["New Start (Hungary)"] = {abbrev = "", color = "#012E46", shortname = "New Start",},
["New Territories Association of Societies"] = {abbrev = "NTAS", color = "#2181FA", shortname = "",},
["New Time (Chile)"] = {abbrev = "", color = "#360170", shortname = "",},
["New Turkey Party (1961)"] = {abbrev = "YTP", color = "#00B0F0", shortname = "",},
["New Turkey Party (2002)"] = {abbrev = "YTP", color = "#FF0000", shortname = "",},
["New Turkey Party"] = {abbrev = "", color = "#0057A4", shortname = "",},
["New Union (Social Liberals)"] = {abbrev = "NS", color = "#2A3177", shortname = "",},
["New United Democratic Party"] = {abbrev = "NUDP", color = "#70BA86", shortname = "New United Democratic",},
["New Unity"] = {abbrev = "JV", color = "#6AB647", shortname = "",},
["New Vision (electoral alliance)"] = {abbrev = "", color = "#CC00FF", shortname = "New Vision",},
["New Wafd Party"] = {abbrev = "", color = "#1C6339", shortname = "New Wafd",},
["New Welfare Party"] = {abbrev = "YRP", color = "#E20613", shortname = "",},
["New World Order Party"] = {abbrev = "", color = "#CC66FF", shortname = "New World Order",},
["New World People's Party"] = {abbrev = "ÚVNP", color = "#e50081", shortname = "",},
["New York State Right to Life Party"] = {abbrev = "", color = "#F4C2C2", shortname = "Right to Life",},
["New Youth Forum"] = {abbrev = "", color = "#FF8C00", shortname = "Youth Forum",},
["New Youth of Macau"] = {abbrev = "", color = "#FF4F00", shortname = "",},
["New Zealand Conservative Party"] = {abbrev = "", color = "#0D0DFC", shortname = "Conservatives",},
["New Zealand Democrat Party (1934)"] = {abbrev = "", color = "#00AEEF", shortname = "Democrat",},
["New Zealand Democratic Party for Social Credit"] = {abbrev = "", color = "#339966", shortname = "Democrats",},
["New Zealand Family Rights Protection Party"] = {abbrev = "", color = "#65FFF0", shortname = "Family Rights",},
["New Zealand First"] = {abbrev = "", color = "#000000", shortname = "NZ First",},
["New Zealand Labour Party (1910)"] = {abbrev = "", color = "#DE2C34", shortname = "Labour",},
["New Zealand Labour Party"] = {abbrev = "", color = "#D82A20", shortname = "Labour",},
["New Zealand Legion"] = {abbrev = "", color = "#2E3B74", shortname = "Legion",},
["New Zealand Liberal Party (1962)"] = {abbrev = "", color = "#FFD700", shortname = "Liberal",},
["New Zealand Liberal Party (1991)"] = {abbrev = "", color = "#CC9900", shortname = "Liberal",},
["New Zealand Liberal Party (2008)"] = {abbrev = "", color = "#FFFFFF", shortname = "",},
["New Zealand Liberal Party"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal",},
["New Zealand Loyal"] = {abbrev = "", color = "#FDB813", shortname = "",},
["New Zealand Momentum Party"] = {abbrev = "", color = "#E11088", shortname = "Momentum",},
["New Zealand National Front"] = {abbrev = "", color = "#00008B", shortname = "National Front",},
["New Zealand National Party"] = {abbrev = "", color = "#00529F", shortname = "National",},
["New Zealand Pacific Party"] = {abbrev = "", color = "#531E8A", shortname = "Pacific",},
["New Zealand Party"] = {abbrev = "", color = "#43A2FF", shortname = "NZ Party",},
["New Zealand People's Party"] = {abbrev = "", color = "#22316C", shortname = "People's Party",},
["New Zealand Public Party"] = {abbrev = "", color = "#5BCAF4", shortname = "Public",},
["New Zealand Republican Party (1995)"] = {abbrev = "", color = "#FF0000", shortname = "Republican",},
["New Zealand Socialist Party"] = {abbrev = "", color = "#8B0000", shortname = "Socialist",},
["New Zealand Sovereignty Party"] = {abbrev = "", color = "#E2AB20", shortname = "Sovereignty",},
["New Zealand TEA Party"] = {abbrev = "TEA", color = "#5A276C", shortname = "",},
["New Zealand Women's Political Party"] = {abbrev = "", color = "#DF2B6A", shortname = "Women's",},
["Newcastle Independents"] = {abbrev = "", color = "#000000", shortname = "Newcastle Ind.",},
["Newham Independent"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["NewLabour Party (New Zealand)"] = {abbrev = "", color = "#FF4040", shortname = "NewLabour",},
["Newropeans"] = {abbrev = "", color = "#FF9000", shortname = "",},
["Newport Independents Party"] = {abbrev = "NIP", color = "#ffbb00", shortname = "Newport Ind.",},
["NewZeal"] = {abbrev = "", color = "#28CEDC", shortname = "",},
["Ngwane National Liberatory Congress"] = {abbrev = "", color = "#000000", shortname = "",},
["NHK Party"] = {abbrev = "", color = "#F8EA0D", shortname = "Anti-NHK",},
["NI21"] = {abbrev = "", color = "#008080", shortname = "",},
["Nicaraguan Liberal Alliance"] = {abbrev = "ALN", color = "#ed1b25", shortname = "",},
["Nicaraguan Party of the Christian Path"] = {abbrev = "CCN", color = "#00b1ec", shortname = "",},
["Nicaraguan Socialist Party"] = {abbrev = "", color = "red", shortname = "",},
["Nick Xenophon Team"] = {abbrev = "", color = "#ff6300", shortname = "Xenophon Team",},
["NIDA (political party)"] = {abbrev = "", color = "#76B729", shortname = "",},
["Nida El Watan"] = {abbrev = "NW", color = "#C96A2F", shortname = "",},
["Nidaa Tounes"] = {abbrev = "", color = "#ed1c24", shortname = "",},
["Nigerian People's Party"] = {abbrev = "", color = "#028c3b", shortname = "",},
["Nigerien Alliance for Democracy and Progress"] = {abbrev = "", color = "#FF8600", shortname = "ANDP-Zaman Lahiya",},
["Nigerien Democratic Movement for an African Federation"] = {abbrev = "", color = "#F79800", shortname = "",},
["Nigerien Democratic Front"] = {abbrev = "", color = "#4154B9", shortname = "",},
["Nigerien Party for Democracy and Socialism"] = {abbrev = "PNDS", color = "#FFAEC9", shortname = "",},
["Nigerien Patriotic Movement"] = {abbrev = "", color = "#EA1821", shortname = "",},
["Nigerien Progressive Party – African Democratic Rally"] = {abbrev = "PPN–RDA", color = "#000000", shortname = "",},
["Nigerien Self-Management Party"] = {abbrev = "", color = "blue", shortname = "",},
["Nine Per Cent Growth Party"] = {abbrev = "", color = "#008080", shortname = "",},
["Nippon Ishin no Kai"] = {abbrev = "", color = "#B8CE43", shortname = "Innovation",},
["Nippon Kaigi"] = {abbrev = "", color = "#A22041", shortname = "",},
["NISHAD Party"] = {abbrev = "", color = "#BA0005", shortname = "NISHAD",},
["Nisma Thurje"] = {abbrev = "", color = "#00798D", shortname = "",},
["Niue People's Party"] = {abbrev = "", color = "#228B22", shortname = "Niue People's",},
["Nivaria"] = {abbrev = "", color = "#006CB7", shortname = "",},
["Niz Goenkar Revolution Front"] = {abbrev = "NGRF", color = "#CCCCFF", shortname = "",},
["Nizam-e-Islam Party"] = {abbrev = "BNIP", color = "#D1F8AB", shortname = "",},
["NLHP"] = {abbrev = "", color = "#4678CC", shortname = "",},
["NMP (political party)"] = {abbrev = "NMP", color = "#FFFFC0", shortname = "",},
["No Candidate Deserves My Vote!"] = {abbrev = "NCDMV!", color = "white", shortname = "",},
["No overall control"] = {abbrev = "", color = "black", shortname = "",},
["No party preference (US)"] = {abbrev = "", color = "#FDFD7F", shortname = "No party preference",},
["No party preference"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["No to the EU – Yes to Democracy"] = {abbrev = "NO2EU", color = "darkgrey", shortname = "",},
["No2EU"] = {abbrev = "", color = "grey", shortname = "",},
["Nominated (India)"] = {abbrev = "", color = "black", shortname = "Nominated",},
["Non Partisan (Washington)"] = {abbrev = "", color = "#FCF5D9", shortname = "",},
["Non-affiliated members of the House of Lords"] = {abbrev = "", color = "darkgrey", shortname = "Non-affiliated",},
["Non-aligned Coalition"] = {abbrev = "", color = "#FFEF6A", shortname = "",},
["Non-Inscrits"] = {abbrev = "NI", color = "#999999", shortname = "",},
["Non-Neutral Independents"] = {abbrev = "", color = "#252D60", shortname = "",},
["Non-partisan democracy"] = {abbrev = "", color = "#808080", shortname = "Nonpartisan",},
["Non-Partisan Deputies"] = {abbrev = "", color = "#AAAAAA", shortname = "Non-Partisan",},
["Non-Partisan Solidarity Union"] = {abbrev = "NPSU", color = "#C20F51", shortname = "",},
["Non-Partisans"] = {abbrev = "NK", color = "grey", shortname = "",},
["Non-Political"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Non-Smokers' Party (Spain)"] = {abbrev = "", color = "#005D9C", shortname = "",},
["None of the above"] = {abbrev = "NOTA", color = "#FFFFFF", shortname = "",},
["Nonpartisan (US)"] = {abbrev = "", color = "#FDFD7F", shortname = "",},
["Nonpartisan Bloc for Cooperation with the Government"] = {abbrev = "BBWR", color = "#A9A9A9", shortname = "",},
["Nonpartisan Bloc for Support of Reforms"] = {abbrev = "BBWR", color = "#A9A9A9", shortname = "",},
["Nonpartisan League"] = {abbrev = "", color = "#FCF5D9", shortname = "",},
["Nonpartisan Local Government Activists"] = {abbrev = "", color = "#E6001A", shortname = "",},
["Nonpartisan politician"] = {abbrev = "", color = "#C0C0C0", shortname = "Nonpartisan",},
["Nordic Freedom"] = {abbrev = "", color = "#423F5F", shortname = "",},
["Nordic Green Left Alliance"] = {abbrev = "", color = "#00A172", shortname = "",},
["Nordic Resistance Movement"] = {abbrev = "NMR", color = "#00703c", shortname = "",},
["Nordkalottfolket"] = {abbrev = "NKF", color = "#2F358C", shortname = "",},
["Nork Residents' Association"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Norodom Ranariddh Party"] = {abbrev = "NRP", color = "#40E0D0", shortname = "",},
["Norrländska Coalition"] = {abbrev = "", color = "#feda00", shortname = "",},
["North Dakota Democratic–Nonpartisan League Party"] = {abbrev = "", color = "#0055AA", shortname = "Democratic–NPL",},
["North District Blueprint"] = {abbrev = "NDB", color = "#00609A", shortname = "",},
["North East India Development Party"] = {abbrev = "NEIDP", color = "#2a4b8d", shortname = "",},
["North East Party"] = {abbrev = "", color = "#800000", shortname = "North East",},
["North of the Rings"] = {abbrev = "NOTR", color = "#44C4DD", shortname = "",},
["North Queensland First"] = {abbrev = "", color = "#162659", shortname = "NQ First",},
["North Queensland Labor Party"] = {abbrev = "", color = "#CD5C5C", shortname = "North Queensland Labor",},
["North-East Project"] = {abbrev = "", color = "#FFA700", shortname = "",},
["Northern Country Party"] = {abbrev = "NCP", color = "#556B2F", shortname = "Northern Country",},
["Northern Elements Progressive Union"] = {abbrev = "", color = "#00AB00", shortname = "",},
["Northern Force"] = {abbrev = "", color = "#D2B48C", shortname = "",},
["Northern Independence Party"] = {abbrev = "NIP", color = "#9E1C34", shortname = "",},
["Northern Ireland Conservatives"] = {abbrev = "", color = "#0087DC", shortname = "NI Conservatives",},
["Northern Ireland Labour Party"] = {abbrev = "NILP", color = "#DC241f", shortname = "NI Labour",},
["Northern Ireland Labour Representation Committee"] = {abbrev = "", color = "#DC241f", shortname = "NI Labour",},
["Northern Ireland Unionist Party"] = {abbrev = "", color = "darkorange", shortname = "NI Unionist",},
["Northern Ireland Women's Coalition"] = {abbrev = "", color = "aqua", shortname = "NI Women's Coalition",},
["Northern Party"] = {abbrev = "", color = "#FF8C00", shortname = "Northern",},
["Northern Territory Greens"] = {abbrev = "", color = "#00a651", shortname = "Greens",},
["Northern Territory Nationals"] = {abbrev = "", color = "#006644", shortname = "Nationals",},
["Norway Democrats"] = {abbrev = "", color = "#001F5A", shortname = "",},
["Norwegian Agrarian Association"] = {abbrev = "", color = "#008542", shortname = "Agrarian",},
["Norwegian People's Party"] = {abbrev = "", color = "darkblue", shortname = "",},
["Norwegian Sámi Association"] = {abbrev = "NSR", color = "#f9b429", shortname = "",},
["Nós Galeguistas"] = {abbrev = "", color = "#5EC6FB", shortname = "",},
["Nós–Unidade Popular"] = {abbrev = "", color = "#ED1C24", shortname = "",},
["NOS"] = {abbrev = "", color = "#307FE2", shortname = "",},
["Nosotros (political party)"] = {abbrev = "PPN", color = "#cf152c", shortname = "",},
["Nottingham Independents"] = {abbrev = "NI", color = "#ffe4e1", shortname = "Nottingham Ind.",},
["Noua Dreaptă"] = {abbrev = "", color = "#143F2E", shortname = "",},
["Nous Citoyens"] = {abbrev = "", color = "#006992", shortname = "",},
["Nouvelle Action Royaliste"] = {abbrev = "", color = "yellow", shortname = "",},
["NOVA (Slovakia)"] = {abbrev = "NOVA", color = "#00599D", shortname = "",},
["Nova Alternativa"] = {abbrev = "", color = "#00A8C5", shortname = "",},
["NOW Platform DA and PAS"] = {abbrev = "ACUM", color = "#e6c300", shortname = "",},
["Now! (political party)"] = {abbrev = "", color = "#0B2232", shortname = "",},
["NTR Telugu Desam Party (Lakshmi Parvathi)"] = {abbrev = "NTRTDP(LP)", color = "#33CCCC", shortname = "",},
["Nuance Party"] = {abbrev = "PN", color = "#ee7d31", shortname = "",},
["Nuestro Tiempo (El Salvador)"] = {abbrev = "NT", color = "#93C97D", shortname = "",},
["Nuevas Ideas"] = {abbrev = "NI", color = "#00ADEF", shortname = "",},
["Nueva Mayoría"] = {abbrev = "", color = "orange", shortname = "",},
["Nullifier Party"] = {abbrev = "", color = "#0EBFB0", shortname = "Nullifier",},
["Nunatta Qitornai"] = {abbrev = "", color = "#A1359B", shortname = "",},
["Nur Otan"] = {abbrev = "", color = "#1CA9C9", shortname = "",},
["Nusantara Awakening Party"] = {abbrev = "PKN", color = "#FF2121", shortname = "",},
["Nykhaz"] = {abbrev = "", color = "#13193B", shortname = "",},
["Nyt Odsherred"] = {abbrev = "", color = "#027F9C", shortname = "",},
["NZ Economic Euthenics Party"] = {abbrev = "", color = "#AA6", shortname = "",},
["NZ Equal Rights Party"] = {abbrev = "", color = "#DC143C", shortname = "",},
["NZ Independent Coalition"] = {abbrev = "", color = "#349E9F", shortname = "Independent Coalition",},
["NZ Outdoors & Freedom Party"] = {abbrev = "", color = "#008000", shortname = "Outdoors",},
["NZ South Island Party"] = {abbrev = "", color = "#009900", shortname = "South Island",},
}
return {
full = full,
alternate = alternate,
}
caf31c03e52b9960006ac908a4a4eb9fac0983d3
Module:Political party/L
828
1576
2911
2023-09-27T17:18:28Z
w>Jvalienforce
0
Scribunto
text/plain
-- Constant data used by [[Module:Political party]]
local alternate = {
["La France insoumise"] = "La France Insoumise",
["Labor Front"] = "Labour Front",
["Labor Party (United States, 1996)"] = "Labor Party (US, 1996)",
["Labor Party (United States)"] = "Labor Party (US)",
["Labor Party (US, 19th century)"] = "Labor Party (United States, 19th century)",
["Labor Party"] = "Labour Party",
["Labour Party–GroenLinks"] = "GroenLinks–PvdA",
["Labor-Farm Party of Wisconsin"] = "Labor–Farm Party of Wisconsin",
["Labour '87"] = "Labour Party of Northern Ireland",
["Labour Co-operative"] = "Labour and Co-operative",
["Labour Coalition"] = "Labour coalition",
["Labour (Ireland)"] = "Labour Party (Ireland)",
["Labour Party (Mexico)"] = "Labor Party (Mexico)",
["Lakas Kampi CMD"] = "Lakas–Kampi",
["Lakas-Christian Muslim Democrats"] = "Lakas–CMD",
["Lakas-CMD"] = "Lakas–CMD",
["Lakas-CMD (1991)"] = "Lakas–CMD (1991)",
["Lakas-CMD (2009)"] = "Lakas–CMD",
["Lakas-Kampi-CMD"] = "Lakas–Kampi",
["Lakas-NUCD-UMDP"] = "Lakas–CMD (1991)",
["Lakas-NUCD"] = "Lakas–CMD (1991)",
["Lakas–Christian Muslim Democrats"] = "Lakas–CMD",
["Lakas–CMD (2009)"] = "Lakas–CMD",
["Lakas–Kampi–CMD"] = "Lakas–CMD",
["Lakas–NUCD–UMDP"] = "Lakas–CMD (1991)",
["Lakas–NUCD"] = "Lakas–CMD (1991)",
["Lalit"] = "Lalit (Mauritius)",
["Lanka Democratic Party"] = "Lanka Prajathanthravadi Pakshaya",
["Lantmannapartiet"] = "Lantmanna Party",
["LaRouche movement"] = "National Democratic Policy Committee",
["Latvian Centrist Party"] = "Centre Party (Latvia)",
["Latvian Social Democratic Alliance"] = "Latvian Social Democratic Workers' Party",
["Law and Order (Latvia)"] = "For Each and Every One",
["Law and Order Party (United States)"] = "Law and Order Party (US)",
["LDPR (political party)"] = "Liberal Democratic Party of Russia",
["Left for the Right to Decide"] = "Republican Left of Catalonia",
["Left Front (India)"] = "Left Front",
["Left Front (Sri Lanka)"] = "Left Liberation Front",
["Left of the Peoples (1987)"] = "Left of the Peoples",
["Left of the Peoples (1989)"] = "Left of the Peoples",
["Left Option"] = "Estonian Left Party",
["Left Party – Communists"] = "Left Party (Sweden)",
["Left Party-Communists"] = "Left Party (Sweden)",
["Left Radical Party"] = "Radical Party of the Left",
["Left Unity (European Parliament)"] = "European United Left–Nordic Green Left",
["Leftist Socialist Party of Japan"] = "Left Socialist Party of Japan",
["Leftist Workers and Farm Labourers"] = "Communist Party of Latvia",
["Lega per Salvini Premier"] = "Lega (political party)",
["Les Engagés"] = "Les Engagés (political party)",
["Libertarian Party (Alaska)"] = "Libertarian Party (US)",
["Liberal–Democratic List"] = "Liberal League (Luxembourg)",
["Liberal/Country Coalition"] = "Coalition (Australia)",
["Liberal-Country Coalition"] = "Coalition (Australia)",
["Liberal–Country Coalition"] = "Coalition (Australia)",
["Liberal/National Coalition"] = "Coalition (Australia)",
["Liberal-National Coalition"] = "Coalition (Australia)",
["Liberal–National Coalition"] = "Coalition (Australia)",
["Lib-Lab"] = "Liberal-Labour (UK)",
["Liberal Coalition Party"] = "Liberals (Sweden)",
["Liberal Constitutional Party (Italy)"] = "Historical Right (Italy)",
["Liberal Democratic Party (Chile)"] = "Liberal Democratic Party (Chile, 1893)",
["Liberal Democratic Party (Italy)"] = "Italian Democratic Liberal Party",
["Liberal Democratic Party (Lithuania)"] = "Order and Justice",
["Liberal Democratic Party (Serbia 2005)"] = "Liberal Democratic Party (Serbia)",
["Liberal Democratic Party (Spain)"] = "Liberal Democratic Party (Spain, 1982)",
["Liberal Democratic Party of Japan"] = "Liberal Democratic Party (Japan)",
["Liberal Democratic Party of Switzerland"] = "Liberal Party of Switzerland",
["Liberal Democrats"] = "Liberal Democrats (UK)",
["Liberal Movement"] = "Liberal Movement (Australia)",
["Liberal Movement (Lithuania)"] = "Liberals' Movement (Lithuania)",
["Liberal National Party (UK, 1931)"] = "National Liberal Party (UK, 1931)",
["Liberal Party (Japan, 1945)"] = "Liberal Party (Japan, 1950)",
["Liberal Party (Luxembourg)"] = "Liberal League (Luxembourg)",
["Liberal Party (Scotland)"] = "Scottish Liberal Party",
["Liberal Party (Serbia, 1989)"] = "Liberal Democratic Party (Serbia, 1989)",
["Liberal Party of Australia (Australian Capital Territory Division)"] = "Liberal Party of Australia (A.C.T. Division)",
["Liberal Party of New York"] = "Liberal Party (New York)",
["Liberal Party of Sweden"] = "Liberals (Sweden)",
["Liberal Party"] = "Democratic Liberal Party (Japan)",
["Liberal People's Party (Sweden)"] = "Liberals (Sweden)",
["Liberal People's Party"] = "Liberals (Sweden)",
["Liberal Reformist Party + Democratic Front of Francophones"] = "Reformist Movement",
["Liberal Reformist Party"] = "Liberal Reformist Party (Belgium)",
["Liberal Republican Party (United States)"] = "Liberal Republican Party (US)",
["Liberal Socialist Party"] = "Liberal Socialist Party (Singapore)",
["Liberal Socialists Party"] = "Liberal Socialists Party (Egypt)",
["Liberal Unionist"] = "Liberal Unionist Party",
["Liberal Unionist Party (UK)"] = "Liberal Unionist Party",
["Liberal-Labour (New Zealand)"] = "Liberal–Labour (New Zealand)",
["Liberals (Italy)"] = "Liberal Union (Italy)",
["Liberals–Democrats–Radicals"] = "Liberals, Democrats and Radicals",
["Liberals' Movement of the Republic of Lithuania"] = "Liberals' Movement (Lithuania)",
["Liberal Party of Andorra"] = "Liberals of Andorra",
["Libertad y Refundación"] = "Liberty and Refoundation",
["Libertarian, Direct, Democratic"] = "Libertair, Direct, Democratisch",
["Libertarian Party UK"] = "Libertarian Party (UK)",
["Libertarian Party (United Kingdom)"] = "Libertarian Party (UK)",
["Libertarian Party (United States)"] = "Libertarian Party (US)",
["Libertarian Party (Alaska)"] = "Libertarian Party (US)",
["Libertarian Party (Arizona)"] = "Libertarian Party (US)",
["Libertarian Party (California)"] = "Libertarian Party (US)",
["Libertarian Party (Colorado)"] = "Libertarian Party (US)",
["Libertarian Party (Connecticut)"] = "Libertarian Party (US)",
["Libertarian Party (Delaware)"] = "Libertarian Party (US)",
["Libertarian Party (Iowa)"] = "Libertarian Party (US)",
["Libertarian Party (Massachusetts)"] = "Libertarian Party (US)",
["Libertarian Party (Michigan)"] = "Libertarian Party (US)",
["Libertarian Party (Missouri)"] = "Libertarian Party (US)",
["Libertarian Party (Nevada)"] = "Libertarian Party (US)",
["Libertarian Party (New Mexico)"] = "Libertarian Party (US)",
["Libertarian Party (New York)"] = "Libertarian Party (US)",
["Libertarian Party (Oregon)"] = "Libertarian Party (US)",
["Libertarian Party (Vermont)"] = "Libertarian Party (US)",
["Libertarian Party (Washington)"] = "Libertarian Party (US)",
["Libertarian Party of Arizona"] = "Libertarian Party (US)",
["Libertarian Party of California"] = "Libertarian Party (US)",
["Libertarian Party of Colorado"] = "Libertarian Party (US)",
["Libertarian Party of Connecticut"] = "Libertarian Party (US)",
["Libertarian Party of Delaware"] = "Libertarian Party (US)",
["Libertarian Party of the District of Columbia"] = "Libertarian Party (US)",
["Libertarian Party of Florida"] = "Libertarian Party (US)",
["Libertarian Party of Georgia"] = "Libertarian Party (US)",
["Libertarian Party of Hawaii"] = "Libertarian Party (US)",
["Libertarian Party of Kentucky"] = "Libertarian Party (US)",
["Libertarian Party of Maryland"] = "Libertarian Party (US)",
["Libertarian Party of Massachusetts"] = "Libertarian Party (US)",
["Libertarian Party of Michigan"] = "Libertarian Party (US)",
["Libertarian Party of Minnesota"] = "Libertarian Party (US)",
["Libertarian Party of Missouri"] = "Libertarian Party (US)",
["Libertarian Party of Montana"] = "Libertarian Party (US)",
["Libertarian Party of Nevada"] = "Libertarian Party (US)",
["Libertarian Party of New Mexico"] = "Libertarian Party (US)",
["Libertarian Party of New York"] = "Libertarian Party (US)",
["Libertarian Party of North Carolina"] = "Libertarian Party (US)",
["Libertarian Party of North Dakota"] = "Libertarian Party (US)",
["Libertarian Party of Ohio"] = "Libertarian Party (US)",
["Libertarian Party of Oklahoma"] = "Libertarian Party (US)",
["Libertarian Party of Oregon"] = "Libertarian Party (US)",
["Libertarian Party of Pennsylvania"] = "Libertarian Party (US)",
["Libertarian Party of Texas"] = "Libertarian Party (US)",
["Libertarian Party of Utah"] = "Libertarian Party (US)",
["Libertarian Party of Washington"] = "Libertarian Party (US)",
["Libertarian Party of Wisconsin"] = "Libertarian Party (US)",
["Libertas (lobby group)"] = "Libertas.eu",
["Libertas Spain"] = "Libertas.eu",
["Liberty Forward Party"] = "Advancement Unification Party",
["Liberty Party (United States, 1840)"] = "Liberty Party (US)",
["Liberty Party (United States, 1932)"] = "Liberty Party (US)",
["Liberty Party (United States)"] = "Liberty Party (US)",
["Liberty Party (US, 1840)"] = "Liberty Party (US)",
["Liberty Party"] = "Liberty Party (US)",
["Liberal People's Party (Finland)"] = "Liberals (Finland)",
["Libra Party (Albania)"] = "Libra Party",
["Libyan Arab Socialist Union"] = "Arab Socialist Union (Libya)",
["LID"] = "Left and Democrats",
["Ligue du Midi"] = "Ligue du Sud",
["Local"] = "Localist",
["Lok Dal"] = "Lokdal",
["Lok Jan Shakti Party"] = "Lok Janshakti Party",
["Long Live Tunisia"] = "Tahya Tounes",
["Louisiana Democratic Party"] = "Democratic Party (United States)",
["LPHK"] = "Liberal Party (Hong Kong)",
["LPR"] = "League of Polish Families",
["LSSP"] = "Lanka Sama Samaja Party",
["Luxembourg Workers' Party"] = "Luxembourg Socialist Workers' Party",
["Luys Alliance"] = "Bright Alliance",
}
local full = {
["L'Alternativa c'è"] = {abbrev = "", color = "#FE9F07", shortname = "",},
["L'Hospitalet Left Alternative"] = {abbrev = "", color = "#42837D", shortname = "",},
["La Axarquía Progress"] = {abbrev = "", color = "#FF990E", shortname = "",},
["La España en Marcha"] = {abbrev = "", color = "#111011", shortname = "",},
["La Falange (1999)"] = {abbrev = "", color = "#29191E", shortname = "",},
["La France En Action"] = {abbrev = "", color = "#F8F1BB", shortname = "",},
["La France Insoumise"] = {abbrev = "LFI", color = "#E53D40", shortname = "",},
["La Fresneda Local Platform"] = {abbrev = "", color = "#004D21", shortname = "",},
["La Libertad Avanza"] = {abbrev = "LLA", color = "#6C4C99", shortname = "",},
["La Línea 100x100"] = {abbrev = "", color = "#FA5841", shortname = "",},
["La Palma Group of Independents"] = {abbrev = "", color = "#072357", shortname = "",},
["La République En Marche!"] = {abbrev = "LREM", color = "#FFD600", shortname = "",},
["Laban ng Demokratikong Pilipino"] = {abbrev = "LDP", color = "#0000CD", shortname = "",},
["Laban ng Makabayang Masang Pilipino"] = {abbrev = "LAMMP", color = "#ffa500", shortname = "",},
["Labor and Agrarian Party"] = {abbrev = "PALA", color = "royalblue", shortname = "",},
["Labor Party (Mexico)"] = {abbrev = "PT", color = "#DB2017", shortname = "",},
["Labor Party (South Korea)"] = {abbrev = "", color = "#DC143C", shortname = "Labor",},
["Labor Party (Taiwan)"] = {abbrev = "", color = "red", shortname = "",},
["Labor Party (United States, 19th century)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",},
["Labor Party (US, 1996)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",},
["Labor Party (US)"] = {abbrev = "", color = "#FF6347", shortname = "Labor",},
["Labor Party of the United States"] = {abbrev = "", color = "#FF6347", shortname = "Labor",},
["Labor Party Philippines"] = {abbrev = "WPP", color = "#00039F", shortname = "",},
["Labor Solidarity"] = {abbrev = "SL", color = "purple", shortname = "",},
["Labor Union of Games and Gambling in Macau"] = {abbrev = "", color = "#B2FFFF", shortname = "",},
["Labor–Farm Party of Wisconsin"] = {abbrev = "", color = "#17aa5c", shortname = "Labor–Farm",},
["Labor-Gesher-Meretz"] = {abbrev = "", color = "#ED1B25", shortname = "Emet",},
["Labor-Gesher"] = {abbrev = "", color = "#EE161F", shortname = "",},
["Labor"] = {abbrev = "", color = "#FF6347", shortname = "",},
["Laboring People's Party"] = {abbrev = "", color = "red", shortname = "",},
["Laborious Ukraine Electoral Bloc"] = {abbrev = "", color = "#872558", shortname = "Labour Ukraine",},
["Laborist Party (Mexico)"] = {abbrev = "", color = "#CE1126", shortname = "Laborist",},
["Laborista Party"] = {abbrev = "", color = "green", shortname = "Laborista",},
["Labour and Co-operative"] = {abbrev = "", color = "#E4003B", shortname = "Labour Co-op",},
["Labour and Equity Party"] = {abbrev = "", color = "#4e92d3", shortname = "",},
["Labour and Freedom Alliance"] = {abbrev = "", color = "#90268F", shortname = "Labour and Freedom",},
["Labour and Justice Party (Spain)"] = {abbrev = "", color = "#AD0000", shortname = "",},
["Labour and Social Justice – The Electoral Alternative"] = {abbrev = "WASG", color = "#FF8000", shortname = "Labour and Social Justice",},
["Labour and Solidarity Party"] = {abbrev = "", color = "#5963cf", shortname = "",},
["Labour and Trade Union Group"] = {abbrev = "", color = "#D44442", shortname = "Labour and Trade Union",},
["Labour Cause's Party"] = {abbrev = "", color = "#9F030A", shortname = "",},
["Labour coalition"] = {abbrev = "", color = "#cd5c5c", shortname = "",},
["Labour Democrat Party"] = {abbrev = "", color = "", shortname = "Labour Democrat",},
["Labour Democratic Party"] = {abbrev = "", color = "Pink", shortname = "Labour Democracy",},
["Labour Democrats"] = {abbrev = "", color = "#59A421", shortname = "",},
["Labour Electoral Association"] = {abbrev = "LEA", color = "#B22222", shortname = "",},
["Labour Faction (1937)"] = {abbrev = "SP", color = "#1693F4", shortname = "",},
["Labour Front"] = {abbrev = "LF", color = "#AA5634", shortname = "",},
["Labour Gathering Party"] = {abbrev = "", color = "#8B0000", shortname = "",},
["Labour Independent Group"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Labour Party (Argentina)"] = {abbrev = "PL", color = "#00708B", shortname = "Labour Party",},
["Labour Party (Greenland)"] = {abbrev = "", color = "pink", shortname = "Labour",},
["Labour Party (Hong Kong)"] = {abbrev = "", color = "#F7941E", shortname = "Labour",},
["Labour Party (Indonesia, 1949)"] = {abbrev = "", color = "red", shortname = "Labour",},
["Labour Party (Indonesia, 1998)"] = {abbrev = "", color = "#000080", shortname = "Labour",},
["Labour Party (Indonesia, 2021)"] = {abbrev = "", color = "#ff6800", shortname = "Labour",},
["Labour Party (Ireland)"] = {abbrev = "Lab", color = "#CC0000", shortname = "Labour",},
["Labour Party (Lithuania)"] = {abbrev = "DP", color = "#1D578C", shortname = "",},
["Labour Party (Malta)"] = {abbrev = "", color = "#EE3224", shortname = "Labour",},
["Labour Party (Mauritius)"] = {abbrev = "", color = "#FF0000", shortname = "Labour Party",},
["Labour Party (Morocco)"] = {abbrev = "", color = "#D04933", shortname = "",},
["Labour Party (Netherlands)"] = {abbrev = "PvdA", color = "#DF111A", shortname = "",},
["Labour Party (New Caledonia)"] = {abbrev = "PT", color = "#9A0000", shortname = "",},
["Labour Party (Nigeria)"] = {abbrev = "LP", color = "#DA251C", shortname = "",},
["Labour Party (Norway)"] = {abbrev = "", color = "#D70926", shortname = "Labour",},
["Labour Party (Poland)"] = {abbrev = "SP", color = "#083A7F", shortname = "",},
["Labour Party (Secular)"] = {abbrev = "LP(S)", color = "#2E64FE", shortname = "",},
["Labour Party (Singapore)"] = {abbrev = "", color = "#CC8955", shortname = "Labour Party",},
["Labour Party (Slovakia)"] = {abbrev = "SP", color = "#C31B3E", shortname = "",},
["Labour Party (South Africa, 1969)"] = {abbrev = "", color = "#8D0000", shortname = "Labour",},
["Labour Party (South Africa)"] = {abbrev = "", color = "#FF0000", shortname = "Labour",},
["Labour Party (Thailand)"] = {abbrev = "", color = "#FF0000", shortname = "Labour",},
["Labour Party (Turkey)"] = {abbrev = "", color = "#FFDE4D", shortname = "Labour",},
["Labour Party (UK)"] = {abbrev = "Lab", color = "#E4003B", shortname = "Labour",},
["Labour Party in Northern Ireland"] = {abbrev = "", color = "#DC241F", shortname = "",},
["Labour Party of Bosnia and Herzegovina"] = {abbrev = "", color = "#013971", shortname = "",},
["Labour Party of Brazil"] = {abbrev = "PTdoB", color = "#00FF00", shortname = "",},
["Labour Party of Hong Kong"] = {abbrev = "", color = "#DE2910", shortname = "Labour",},
["Labour Party of India (V V Prasad)"] = {abbrev = "LPI(V)", color = "#4C81B6", shortname = "",},
["Labour Party of India"] = {abbrev = "LPI", color = "#E0E6F8", shortname = "",},
["Labour Party of Malaya"] = {abbrev = "", color = "#FAAFBA", shortname = "",},
["Labour Party of Northern Ireland"] = {abbrev = "", color = "#DC241f", shortname = "Labour Party NI",},
["Labour Party of Serbia"] = {abbrev = "LPS", color = "#2274A5", shortname = "",},
["Labour Party Pakistan"] = {abbrev = "", color = "#FE2712", shortname = "",},
["Labour Party"] = {abbrev = "", color = "#FF0000", shortname = "Labour",},
["Labour Progressive"] = {abbrev = "", color = "red", shortname = "",},
["Labour Renewal Movement"] = {abbrev = "", color = "#23FF00", shortname = "",},
["Labour Representation Committee (1900)"] = {abbrev = "", color = "#b22222", shortname = "Labour Repr. Cmte.",},
["Labour Representation Committee"] = {abbrev = "", color = "#b22222", shortname = "Labour",},
["Labour Republican Party"] = {abbrev = "", color = "#FF9340", shortname = "",},
["Labour Solidarity"] = {abbrev = "SP", color = "#D33F49", shortname = "",},
["Labour Ukraine"] = {abbrev = "", color = "Purple", shortname = "",},
["Labour Union (Poland)"] = {abbrev = "UP", color = "#ED1C24", shortname = "",},
["Labour Unionist"] = {abbrev = "", color = "#DDEEFF", shortname = "",},
["Labour-Farmer Party"] = {abbrev = "", color = "#FF5C85", shortname = "",},
["Labour-Farmer Masses Party"] = {abbrev = "", color = "#FF5C85", shortname = "",},
["Labour, Co-operative and Trade Union"] = {abbrev = "", color = "white", shortname = "Labour, Co-op & Trade Union",},
["Labourers and Farmers Party"] = {abbrev = "", color = "#FE7580", shortname = "Labourers and Farmers",},
["Ladlad"] = {abbrev = "", color = "#FFC0CB", shortname = "",},
["Lahu National Development Party"] = {abbrev = "LHNDP", color = "#A66971", shortname = "",},
["Lakas ng Bansa"] = {abbrev = "LnB", color = "#0000CD", shortname = "",},
["Lakas ng Bayan Coalition"] = {abbrev = "LABAN", color = "#FFFF40", shortname = "",},
["Lakas ng Bayan"] = {abbrev = "LABAN", color = "#FFFF00", shortname = "",},
["Lakas–CMD (1991)"] = {abbrev = "", color = "#B0E0E6", shortname = "Lakas",},
["Lakas–CMD"] = {abbrev = "", color = "#B0E0E6", shortname = "Lakas",},
["Lakas–Kampi"] = {abbrev = "LKS-KAM", color = "#B0E0E6", shortname = "Lakas–Kampi",},
["Lakas-Laban Coalition"] = {abbrev = "L–L", color = "#B0E0E6", shortname = "Lakas–Laban",},
["Lalit (Mauritius)"] = {abbrev = "", color = "#F7CC06", shortname = "",},
["Land and Justice Party"] = {abbrev = "", color = "#DC261B", shortname = "Land & Justice",},
["Land development"] = {abbrev = "", color = "#CDB79E", shortname = "",},
["Land Justice League"] = {abbrev = "", color = "#73BC7C", shortname = "",},
["Land of Dharma Party"] = {abbrev = "", color = "#593012", shortname = "",},
["Land Party (South Africa)"] = {abbrev = "", color = "#7e803e", shortname = "Land Party",},
["Land Party"] = {abbrev = "", color = "#4898B9", shortname = "",},
["Landbund"] = {abbrev = "", color = "#385A38", shortname = "",},
["Landless People's Movement (Namibia)"] = {abbrev = "LPM", color = "#FC7B2C", shortname = "",},
["Lang Labor"] = {abbrev = "", color = "#E2725B", shortname = "",},
["Lanka Prajathanthravadi Pakshaya"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Lanka Sama Samaja Party"] = {abbrev = "LSSP", color = "#FF0000", shortname = "",},
["Lantmanna and Bourgeois Party"] = {abbrev = "", color = "#ff9933", shortname = "Lantmanna and Bourgeois",},
["Lantmanna Party"] = {abbrev = "", color = "#00529C", shortname = "Lantmanna",},
["Lanzarote Avanza"] = {abbrev = "", color = "#037468", shortname = "",},
["Lanzarote Independents Party"] = {abbrev = "", color = "#31B404", shortname = "",},
["Lanzarote Neighborhood Force"] = {abbrev = "", color = "#98CCFE", shortname = "",},
["Lao National Union Party"] = {abbrev = "", color = "#FFFFFF", shortname = "",},
["Lao Patriotic Front"] = {abbrev = "", color = "#CE1126", shortname = "",},
["Lao People's Revolutionary Party"] = {abbrev = "LPRP", color = "#CE1126", shortname = "",},
["Lapian ng Masang Pilipino"] = {abbrev = "LAMP", color = "#ffa500", shortname = "",},
["Lapiang Manggagawa"] = {abbrev = "LM", color = "#00039f", shortname = "",},
["LaPrimaire.org"] = {abbrev = "", color = "#800080", shortname = "",},
["Las Palmas de Gran Canaria Puede"] = {abbrev = "", color = "#96CA2D", shortname = "",},
["Latgale Party"] = {abbrev = "", color = "#004B84", shortname = "",},
["Latvia First"] = {abbrev = "LPV", color = "#A8343C", shortname = "",},
["Latvia's First Party"] = {abbrev = "", color = "#582B64", shortname = "",},
["Latvia's First Party/Latvian Way"] = {abbrev = "", color = "#682376", shortname = "",},
["Latvian Association of Regions"] = {abbrev = "LRA", color = "#0E3267", shortname = "",},
["Latvian Farmers' Union"] = {abbrev = "LZS", color = "#D5D900", shortname = "",},
["Latvian Green Party"] = {abbrev = "", color = "#00683A", shortname = "",},
["Latvian National Independence Movement"] = {abbrev = "", color = "#902E3B", shortname = "",},
["Latvian Nationalists"] = {abbrev = "", color = "#9E2B38", shortname = "",},
["Latvian Russian Union"] = {abbrev = "", color = "#3560A9", shortname = "",},
["Latvian Social Democratic Workers' Party"] = {abbrev = "LSDSP", color = "#830D30", shortname = "",},
["Latvian Unity Party"] = {abbrev = "", color = "#DC5356", shortname = "",},
["Latvian Way"] = {abbrev = "", color = "#FFE200", shortname = "",},
["Lauredian Union"] = {abbrev = "UL", color = "#000000", shortname = "",},
["Law and Justice (Georgia)"] = {abbrev = "", color = "#01FFFF", shortname = "",},
["Law and Justice"] = {abbrev = "PiS", color = "#263778", shortname = "",},
["Law and Order Party (US)"] = {abbrev = "", color = "#00DDDD", shortname = "Law and Order",},
["Law Preservation Party"] = {abbrev = "", color = "#FF00FF", shortname = "Law Preservation",},
["Le Trèfle"] = {abbrev = "", color = "#77FF77", shortname = "",},
["Leaders Party of Vanuatu"] = {abbrev = "", color = "#3DAB48", shortname = "Leaders Party",},
["Leading Thai Party"] = {abbrev = "", color = "#DEB887", shortname = "Leading Thai",},
["League Against Usury"] = {abbrev = "LCC", color = "lightgreen", shortname = "",},
["League for Democracy Party"] = {abbrev = "", color = "#3BB9FF", shortname = "",},
["League Nepal Shanti Ekta Party"] = {abbrev = "", color = "#E6DBCF", shortname = "",},
["League of Albanians of Romania"] = {abbrev = "LSR", color = "#444444", shortname = "",},
["League of Anti-Corruption Governors"] = {abbrev = "LIGA", color = "#F5EC49", shortname = "",},
["League of Catalonia–Catalan Liberal Party"] = {abbrev = "", color = "#99FF00", shortname = "",},
["League of Communists – Movement for Yugoslavia"] = {abbrev = "", color = "#FF0000", shortname = "",},
["League of Communists of Bosnia and Herzegovina"] = {abbrev = "SK BiH", color = "#DD0000", shortname = "",},
["League of Communists of Croatia"] = {abbrev = "SKH", color = "#DD0000", shortname = "",},
["League of Communists of Montenegro"] = {abbrev = "SKCG", color = "#DD0000", shortname = "",},
["League of Communists of Serbia"] = {abbrev = "SKS", color = "#DD0000", shortname = "",},
["League of Communists of Slovenia"] = {abbrev = "ZKS", color = "#DD0000", shortname = "",},
["League of Communists of Yugoslavia"] = {abbrev = "SKJ", color = "#DD0000", shortname = "",},
["League of Communists of Yugoslavia in Serbia"] = {abbrev = "SKJS", color = "red", shortname = "",},
["League of Democratic Socialists"] = {abbrev = "BDS", color = "red", shortname = "",},
["League of Free Liberals"] = {abbrev = "BVL", color = "#3399FF", shortname = "",},
["League of Polish Families"] = {abbrev = "LPR", color = "#2DA0D2", shortname = "",},
["League of Social Democrats of Vojvodina"] = {abbrev = "LSV", color = "#03C03C", shortname = "",},
["League of Social Democrats"] = {abbrev = "LSD", color = "#e0050d", shortname = "",},
["League of Socialist Youth of Bosnia and Herzegovina"] = {abbrev = "", color = "#FF6347", shortname = "",},
["League of Supporters of Indonesian Independence"] = {abbrev = "IPKI", color = "#D1E231", shortname = "",},
["League of the South (France)"] = {abbrev = "", color = "#C60B27", shortname = "",},
["League of West German Communists"] = {abbrev = "BWK", color = "red", shortname = "",},
["Lebanese Forces"] = {abbrev = "LF", color = "#ED2027", shortname = "Lebanese Forces",},
["Lecompton Democrat"] = {abbrev = "", color = "#ACCCFE", shortname = "Lecompton Democratic",},
["Leeds Left Alliance"] = {abbrev = "", color = "#00A86B", shortname = "",},
["Left (Austria)"] = {abbrev = "", color = "#FF0000", shortname = "Left",},
["Left Alliance (Finland)"] = {abbrev = "Vas.", color = "#F00A64", shortname = "Left Alliance",},
["Left Alternative"] = {abbrev = "", color = "red", shortname = "",},
["Left and Democrats"] = {abbrev = "LiD", color = "#D22833", shortname = "",},
["Left Andalusian Bloc"] = {abbrev = "", color = "#32754C", shortname = "",},
["Left Assembly of Tudela"] = {abbrev = "", color = "#CC7EAE", shortname = "",},
["Left Assembly–Initiative for Andalusia"] = {abbrev = "", color = "#ADA0A3", shortname = "",},
["Left Bloc (Portugal)"] = {abbrev = "BE", color = "#8B0000", shortname = "",},
["Left Bloc for National Liberation"] = {abbrev = "", color = "#FF9933", shortname = "",},
["Left Bloc"] = {abbrev = "", color = "#8B0000", shortname = "",},
["Left Camp of Israel"] = {abbrev = "Sheli", color = "#DC241F", shortname = "",},
["Left Centre"] = {abbrev = "", color = "#2CBFE3", shortname = "",},
["Left Coalition (Serbia)"] = {abbrev = "LK", color = "#A60C19", shortname = "",},
["Left Communists (Weimar Republic)"] = {abbrev = "LK", color = "red", shortname = "",},
["Left Democratic Front (Kerala)"] = {abbrev = "LDF", color = "#EE0000", shortname = "",},
["Left and Democratic Front (India)"] = {abbrev = "LDF", color = "#FF0000", shortname = "",},
["Left Ecology Freedom"] = {abbrev = "", color = "#C80815", shortname = "",},
["Left for Almería"] = {abbrev = "", color = "#037949", shortname = "",},
["Left for Independence"] = {abbrev = "", color = "#DAC125", shortname = "",},
["Left Front (Asturias)"] = {abbrev = "", color = "#76319B", shortname = "",},
["Left Front (France)"] = {abbrev = "FG", color = "#D6232B", shortname = "",},
["Left Front (Russia)"] = {abbrev = "Left Front", color = "#FF131C", shortname = "",},
["Left Front (West Bengal)"] = {abbrev = "LF", color = "#FF0000", shortname = "",},
["Left Front"] = {abbrev = "LF", color = "red", shortname = "",},
["Left in Positive"] = {abbrev = "", color = "#9B0F3B", shortname = "",},
["Left Independentists"] = {abbrev = "", color = "#AF1B1D", shortname = "",},
["Left Liberals"] = {abbrev = "", color = "#00FF00", shortname = "",},
["Left Liberation Front"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Left List"] = {abbrev = "", color = "red", shortname = "",},
["Left Movement"] = {abbrev = "", color = "#BD1928", shortname = "",},
["Left Nationalists"] = {abbrev = "", color = "#E53E13", shortname = "",},
["Left of Catalonia–Democratic Electoral Front"] = {abbrev = "", color = "#EFF24C", shortname = "",},
["Left of Galicia"] = {abbrev = "", color = "#E80810", shortname = "",},
["Left of the Peoples"] = {abbrev = "", color = "#D56545", shortname = "",},
["Left Party - Communists"] = {abbrev = "", color = "#b00000", shortname = "Left-Communist",},
["Left Party (France)"] = {abbrev = "", color = "#AA0000", shortname = "Left Party",},
["Left Party (Sweden)"] = {abbrev = "V", color = "#B00000", shortname = "Left",},
["Left Party (Turkey)"] = {abbrev = "", color = "#0069B4", shortname = "SOL",},
["Left Peraltese Union"] = {abbrev = "", color = "#A1138C", shortname = "",},
["Left Platform of Coslada"] = {abbrev = "", color = "#244E0E", shortname = "",},
["Left Republican Party (Spain)"] = {abbrev = "", color = "#7F1E6D", shortname = "",},
["Left Segovia"] = {abbrev = "", color = "#F53000", shortname = "",},
["Left Socialist Initiative"] = {abbrev = "", color = "#DE0929", shortname = "",},
["Left Socialist Party (Belgium)"] = {abbrev = "", color = "red", shortname = "",},
["Left Socialist Party (Sweden)"] = {abbrev = "", color = "red", shortname = "Left Socialist",},
["Left Socialists"] = {abbrev = "", color = "#E72240", shortname = "",},
["Left Socialist Party of Japan"] = {abbrev = "", color = "#C90F36", shortname = "Left Socialist",},
["Left Struggle"] = {abbrev = "MA", color = "red", shortname = "",},
["Left Together"] = {abbrev = "", color = "#870f57", shortname = "",},
["Left Union for a Clean and Holy Republic"] = {abbrev = "", color = "#F11928", shortname = "",},
["Left Unity (UK)"] = {abbrev = "", color = "red", shortname = "Left Unity",},
["Left Unity"] = {abbrev = "", color = "#990000", shortname = "",},
["Left-Green Movement"] = {abbrev = "", color = "#00B878", shortname = "Left-Green",},
["Left-wing Workers"] = {abbrev = "PTK", color = "#FF0000", shortname = "",},
["Left-wing Revolutionary Nationalist Movement"] = {abbrev = "MNRI", color = "#E34234", shortname = "",},
["Left-wing Revolutionary Nationalist Movement – 1"] = {abbrev = "MNRI-1", color = "#EF86B5", shortname = "",},
["Lega Alpina Lumbarda"] = {abbrev = "LAL", color = "green", shortname = "",},
["Lega Autonomia Veneta"] = {abbrev = "LAV", color = "gold", shortname = "",},
["Lega Lombarda"] = {abbrev = "", color = "green", shortname = "",},
["Lega Marche"] = {abbrev = "", color = "#008000", shortname = "",},
["Lega Nord"] = {abbrev = "", color = "#008000", shortname = "",},
["Lega Piemonte"] = {abbrev = "", color = "#008000", shortname = "",},
["Lega (political party)"] = {abbrev = "", color = "#008000", shortname = "Lega",},
["Legal Marijuana Now Party"] = {abbrev = "", color = "#50C878", shortname = "Legal Marijuana Now",},
["Legalise Cannabis Australia"] = {abbrev = "", color = "#6fc442", shortname = "",},
["Legalise Cannabis Alliance"] = {abbrev = "", color = "#669966", shortname = "Legalise Cannabis",},
["Legality Movement Party"] = {abbrev = "PLL", color = "#FFFF05", shortname = "",},
["Leganemos"] = {abbrev = "", color = "#8183D8", shortname = "",},
["Legitimists"] = {abbrev = "", color = "#1F497D", shortname = "",},
["Lelo for Georgia"] = {abbrev = "", color = "#F0CE0D", shortname = "Lelo",},
["Leighton Baker Party"] = {abbrev = "", color = "#26A805", shortname = "",},
["León Despierta"] = {abbrev = "", color = "#4B244C", shortname = "",},
["León en Común"] = {abbrev = "", color = "#9D181D", shortname = "",},
["Leonese Autonomist Party–Leonesist Unity"] = {abbrev = "", color = "#D44F0C", shortname = "",},
["Leonese Convergence"] = {abbrev = "", color = "#FFCBDB", shortname = "",},
["Leonese People's Union"] = {abbrev = "UPL", color = "#B41062", shortname = "",},
["Leonid Chernovetskyi Bloc"] = {abbrev = "", color = "Gold", shortname = "",},
["Lepsza Polska"] = {abbrev = "", color = "white", shortname = "",},
["Les Centristes"] = {abbrev = "LC", color = "#6F97CF", shortname = "",},
["Les Écologistes"] = {abbrev = "LE", color = "#1F7B52", shortname = "",},
["Les Engagés (political party)"] = {abbrev = "LE", color = "#02E5D2", shortname = "",},
["Les Verts Fraternels"] = {abbrev = "", color = "#32CD32", shortname = "",},
["Lesotho Congress for Democracy"] = {abbrev = "LCD", color = "#78a22c", shortname = "",},
["Lesotho People's Congress"] = {abbrev = "LPC", color = "", shortname = "",},
["Lesotho Workers' Party"] = {abbrev = "LWP", color = "", shortname = "",},
["Lespwa"] = {abbrev = "", color = "#30B700", shortname = "",},
["Let Every Child Have Both Parents"] = {abbrev = "", color = "#DAA520", shortname = "",},
["Let London Live"] = {abbrev = "", color = "#2d1e6d", shortname = "",},
["Let us Give the Change"] = {abbrev = "", color = "#F7D102", shortname = "",},
["Let's Connect Slovenia"] = {abbrev = "PoS", color = "#FDB92E", shortname = "",},
["Let's Go Peru"] = {abbrev = "", color = "#FA8072", shortname = "",},
["Letterkenny Residents Party"] = {abbrev = "", color = "#9900CC", shortname = "",},
["Levantemos El Puerto"] = {abbrev = "", color = "#93117E", shortname = "",},
["Leviathan Movement"] = {abbrev = "", color = "#000000", shortname = "",},
["Lewisham People Before Profit"] = {abbrev = "", color = "#9400d3", shortname = "People Before Profit",},
["Lewisham Peoples' Alliance"] = {abbrev = "", color = "#CCCCCC", shortname = "",},
["Liaison Committee for the Presidential Majority"] = {abbrev = "", color = "#0047AB", shortname = "Presidential Majority",},
["Libera San Marino"] = {abbrev = "", color = "#14AABC", shortname = "Libera",},
["Liberal (Costa Rica)"] = {abbrev = "", color = "#BF1313", shortname = "Liberal",},
["Liberal (South Korea)"] = {abbrev = "", color = "#004EA2", shortname = "",},
["Liberal Alliance (Brazil)"] = {abbrev = "AL", color = "#FF8C00", shortname = "",},
["Liberal Alliance (Chile)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Alliance (Denmark)"] = {abbrev = "", color = "#3FB2BE", shortname = "Liberal Alliance",},
["Liberal Alliance (Denmark, 2021)"] = {abbrev = "", color = "#18354B", shortname = "Liberal Alliance",},
["Liberal Alliance (Greece)"] = {abbrev = "FISY", color = "#800080", shortname = "",},
["Liberal Alliance (Spain)"] = {abbrev = "", color = "#99FF00", shortname = "",},
["Liberal Alliance of Montenegro"] = {abbrev = "LSCG", color = "#007F00", shortname = "",},
["Liberal Alternative for Manacor"] = {abbrev = "", color = "#291562", shortname = "",},
["Liberal Alternative"] = {abbrev = "", color = "#846394", shortname = "",},
["Liberal and Centre Union"] = {abbrev = "LiCS", color = "#FFD126", shortname = "",},
["Liberal and Country League (SA)"] = {abbrev = "", color = "#0095B6", shortname = "",},
["Liberal and Country League"] = {abbrev = "", color = "#0095B6", shortname = "",},
["Liberal and Country Party"] = {abbrev = "", color = "#080CAB", shortname = "Liberal and Country",},
["Liberal and Democratic Union"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Liberal and Social Alternative"] = {abbrev = "", color = "#4A4999", shortname = "",},
["Liberal Appeal"] = {abbrev = "", color = "#4A48CF", shortname = "",},
["Liberal bloc (Hong Kong)"] = {abbrev = "", color = "#297329", shortname = "Liberal",},
["Liberal Coalition (Spain)"] = {abbrev = "", color = "#ACAE34", shortname = "",},
["Liberal Centre (Spain)"] = {abbrev = "", color = "#0DB85E", shortname = "",},
["Liberal Centre"] = {abbrev = "", color = "#00CCA3", shortname = "",},
["Liberal Centrist Union (Spain)"] = {abbrev = "", color = "#3399FF", shortname = "",},
["Liberal Citizens Action"] = {abbrev = "", color = "#F96611", shortname = "",},
["Liberal Conservative Reformers"] = {abbrev = "LKR", color = "#F29200", shortname = "",},
["Liberal Constitutional Party (Egypt)"] = {abbrev = "", color = "#483D8B", shortname = "Liberal Constitutional",},
["Liberal Constitutionalist Party (Mexico)"] = {abbrev = "PLC", color = "#D4AA00", shortname = "",},
["Liberal Democracy (France)"] = {abbrev = "DL", color = "#004B8C", shortname = "",},
["Liberal Democracy of Slovenia"] = {abbrev = "LDS", color = "#00BBF0", shortname = "",},
["Liberal Democrat Party (Turkey)"] = {abbrev = "", color = "#00008B", shortname = "Liberal Democrat",},
["Liberal Democrat Party of Chile"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Democratic Alliance for Italy"] = {abbrev = "ALI", color = "#195385", shortname = "",},
["Liberal Democratic Centre"] = {abbrev = "", color = "#21A631", shortname = "",},
["Liberal Democratic Congress"] = {abbrev = "KLD", color = "#007FB2", shortname = "",},
["Liberal Democratic Federation of Hong Kong"] = {abbrev = "LDF", color = "#DC2A2A", shortname = "",},
["Liberal Democratic Focus Team"] = {abbrev = "", color = "#FDBB30", shortname = "Lib Dem Focus Team",},
["Liberal Democratic Party (Angola)"] = {abbrev = "PLD", color = "#FFCB48", shortname = "",},
["Liberal Democratic Party (Australia)"] = {abbrev = "", color = "#FEC327", shortname = "Liberal Democrats",},
["Liberal Democratic Party (Bangladesh)"] = {abbrev = "LDP", color = "#FFBF00", shortname = "",},
["Liberal Democratic Party (Bosnia and Herzegovina)"] = {abbrev = "LDS BiH", color = "#28166F", shortname = "",},
["Liberal Democratic Party (Cambodia)"] = {abbrev = "", color = "blue", shortname = "",},
["Liberal Democratic Party (Chile, 1893)"] = {abbrev = "", color = "#00CCCC", shortname = "Liberal Democratic",},
["Liberal Democratic Party (El Salvador)"] = {abbrev = "PDL", color = "#E7D055", shortname = "",},
["Liberal Democratic Party (France)"] = {abbrev = "PLD", color = "#0080FF", shortname = "",},
["Liberal Democratic Party (Iceland)"] = {abbrev = "", color = "#3466E4", shortname = "",},
["Liberal Democratic Party (Japan)"] = {abbrev = "LDP", color = "#3CA324", shortname = "Liberal Democratic",},
["Liberal Democratic Party (Japan, 2017)"] = {abbrev = "LDP", color = "#D7003A", shortname = "",},
["Liberal Democratic Party (Kenya)"] = {abbrev = "", color = "yellow", shortname = "",},
["Liberal Democratic Party (Malaysia)"] = {abbrev = "", color = "#FF7F00", shortname = "",},
["Liberal Democratic Party (Netherlands)"] = {abbrev = "", color = "#333399", shortname = "",},
["Liberal Democratic Party (North Macedonia)"] = {abbrev = "LDP", color = "#2B2F7D", shortname = "",},
["Liberal Democratic Party (Romania)"] = {abbrev = "PLD", color = "#ff6633", shortname = "",},
["Liberal Democratic Party (Serbia)"] = {abbrev = "LDP", color = "#6901d4", shortname = "",},
["Liberal Democratic Party (Serbia, 1989)"] = {abbrev = "LDS", color = "#D85313", shortname = "",},
["Liberal Democratic Party (Slovenia)"] = {abbrev = "LDS", color = "#139BEA", shortname = "",},
["Liberal Democratic Party (Spain, 1913)"] = {abbrev = "", color = "#009933", shortname = "Liberal Democratic",},
["Liberal Democratic Party (Spain, 1982)"] = {abbrev = "PDL", color = "#339CD5", shortname = "",},
["Liberal Democratic Party (Sri Lanka)"] = {abbrev = "LDP", color = "#FFDE17", shortname = "Liberal Democratic Party",},
["Liberal Democratic Party (Thailand)"] = {abbrev = "", color = "#ffd700", shortname = "Liberal Democratic",},
["Liberal Democratic Party (Turkey)"] = {abbrev = "LDP", color = "#000099", shortname = "",},
["Liberal Democratic Party of the Soviet Union"] = {abbrev = "LDPSU", color = "#7295DB", shortname = "",},
["Liberal Democratic Party of Belarus"] = {abbrev = "LDPB", color = "#011E41", shortname = "",},
["Liberal Democratic Party of Germany"] = {abbrev = "LDPD", color = "#FFA500", shortname = "",},
["Liberal Democratic Party of Moldova"] = {abbrev = "PLDM", color = "#0E8A4A", shortname = "",},
["Liberal Democratic Party of Russia"] = {abbrev = "LDPR", color = "#48C", shortname = "",},
["Liberal Democratic Party of Ukraine"] = {abbrev = "", color = "orange", shortname = "Liberal Democratic",},
["Liberal Democratic Republican Party"] = {abbrev = "", color = "#1DACD6", shortname = "",},
["Liberal Democratic Union (Albania)"] = {abbrev = "BLD", color = "#2EA5E9", shortname = "",},
["Liberal Democrats (Germany)"] = {abbrev = "LD", color = "#F98113", shortname = "",},
["Liberal Democrats (UK)"] = {abbrev = "Lib Dem", color = "#FAA61A", shortname = "Liberal Democrats",},
["Liberal Democrats' Rally for National Reconstruction – Vivoten"] = {abbrev = "", color = "yellow", shortname = "",},
["Liberal Egyptian Party"] = {abbrev = "", color = "#FF3333", shortname = "",},
["Liberal Federation"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Liberal Force"] = {abbrev = "FL", color = "#FFDD93", shortname = "",},
["Liberal Forum"] = {abbrev = "LiF", color = "#FFDC00", shortname = "",},
["Liberal Front Party"] = {abbrev = "PFL", color = "#8CC63E", shortname = "",},
["Liberal Group of Andratx"] = {abbrev = "", color = "#6699CC", shortname = "",},
["Liberal Group Sanxenxo"] = {abbrev = "", color = "#0078B3", shortname = "",},
["Liberal Independent Group"] = {abbrev = "", color = "#009B31", shortname = "",},
["Liberal Initiative"] = {abbrev = "IL", color = "#00ADEF", shortname = "",},
["Liberal Integrity Party"] = {abbrev = "", color = "#ff69b4", shortname = "Liberal Integrity",},
["Liberal League (Finland)"] = {abbrev = "", color = "mediumblue", shortname = "",},
["Liberal League (Japan)"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal League",},
["Liberal League (Luxembourg)"] = {abbrev = "", color = "yellow", shortname = "",},
["Liberal Left (France)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Left (Spain)"] = {abbrev = "", color = "#007138", shortname = "Liberal Left",},
["Liberal Left Coalition"] = {abbrev = "", color = "#6EBD57", shortname = "Liberal Left",},
["Liberal Movement (Australia)"] = {abbrev = "", color = "#8B008B", shortname = "Liberal Movement",},
["Liberal National Party of Queensland"] = {abbrev = "", color = "#1456F1", shortname = "Liberal National",},
["Liberal Opening Movement"] = {abbrev = "", color = "yellow", shortname = "",},
["Liberal Oppositionist"] = {abbrev = "", color = "#FFBF00", shortname = "Oppositionist",},
["Liberal Party – Freedom to Choose"] = {abbrev = "Lib.", color = "#F19321", shortname = "Liberal Party",},
["Liberal Party (Armenia)"] = {abbrev = "", color = "#EB5F10", shortname = "",},
["Liberal Party (Belgium)"] = {abbrev = "", color = "#3C40D2", shortname = "Liberal",},
["Liberal Party (Bolivia)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Party (Bourbon Restoration)"] = {abbrev = "", color = "#FDEE00", shortname = "",},
["Liberal Party (Brazil, 1831)"] = {abbrev = "", color = "#F7C100", shortname = "Liberal",},
["Liberal Party (Brazil, 1985)"] = {abbrev = "PL", color = "#080074", shortname = "",},
["Liberal Party (Brazil, 2006)"] = {abbrev = "PL", color = "#015AAA", shortname = "",},
["Liberal Party (Bulgaria)"] = {abbrev = "", color = "#EAC117", shortname = "",},
["Liberal Party (Cambodia)"] = {abbrev = "", color = "#FAAC58", shortname = "Liberal",},
["Liberal Party (Chile)"] = {abbrev = "", color = "#FFAE34", shortname = "",},
["Liberal Party (Chile, 1849)"] = {abbrev = "", color = "#FFD700", shortname = "Liberal",},
["Liberal Party (Chile, 1988)"] = {abbrev = "", color = "#F5D60A", shortname = "",},
["Liberal Party (Chile, 1998)"] = {abbrev = "", color = "#FFEE00", shortname = "",},
["Liberal Party (Croatia)"] = {abbrev = "", color = "#0303fa", shortname = "",},
["Liberal Party (East Timor)"] = {abbrev = "", color = "#2C43DB", shortname = "Liberal",},
["Liberal Party (Greece)"] = {abbrev = "", color = "#FFA500", shortname = "Liberal",},
["Liberal Party (Greece, modern)"] = {abbrev = "", color = "orange", shortname = "Liberal",},
["Liberal Party (Guatemala)"] = {abbrev = "", color = "#0000ff", shortname = "Liberal",},
["Liberal Party (Haiti)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Party (Hong Kong)"] = {abbrev = "", color = "#00aeef", shortname = "Liberal",},
["Liberal Party (Hungary)"] = {abbrev = "", color = "#AAD8E6", shortname = "Liberal",},
["Liberal Party (Iceland, historical)"] = {abbrev = "", color = "#00C6FF", shortname = "Liberal",},
["Liberal Party (Iceland)"] = {abbrev = "", color = "#406899", shortname = "Liberal",},
["Liberal Party (Israel)"] = {abbrev = "", color = "#FFCC00", shortname = "Liberal",},
["Liberal Party (Japan, 1890)"] = {abbrev = "", color = "#EFAB93", shortname = "Liberal",},
["Liberal Party (Japan, 1950)"] = {abbrev = "", color = "#128A45", shortname = "Liberal",},
["Liberal Party (Japan, 1998)"] = {abbrev = "", color = "#000099", shortname = "Liberal",},
["Liberal Party (Japan, 2016)"] = {abbrev = "", color = "#0950A0", shortname = "Liberal",},
["Liberal Party (Kingdom of Serbia)"] = {abbrev = "", color = "#FFDF00", shortname = "Liberal",},
["Liberal Party (Mexico)"] = {abbrev = "PL", color = "#FF3333", shortname = "Liberal",},
["Liberal Party (Moldova)"] = {abbrev = "PL", color = "#73C2FB", shortname = "",},
["Liberal Party (New York)"] = {abbrev = "", color = "#CC0000", shortname = "Liberal",},
["Liberal Party (Nicaragua)"] = {abbrev = "", color = "#800000", shortname = "Liberal",},
["Liberal Party (Norway)"] = {abbrev = "", color = "#006666", shortname = "Liberal",},
["Liberal Party (Panama)"] = {abbrev = "", color = "#FF0000", shortname = "Liberal",},
["Liberal Party (Paraguay)"] = {abbrev = "", color = "#0000FF", shortname = "Liberal",},
["Liberal Party (Philippines)"] = {abbrev = "LP", color = "#f0e68c", shortname = "Liberal",},
["Liberal Party (Radoslavists)"] = {abbrev = "", color = "maroon", shortname = "",},
["Liberal Party (Rwanda)"] = {abbrev = "PL", color = "#03b464", shortname = "",},
["Liberal Party (Serbia)"] = {abbrev = "", color = "#FAFC38", shortname = "",},
["Liberal Party (Slovenia)"] = {abbrev = "", color = "#FFCC00", shortname = "",},
["Liberal Party (South Korea)"] = {abbrev = "", color = "#254170", shortname = "Liberal",},
["Liberal Party (South Korea, 1963)"] = {abbrev = "", color = "#485142", shortname = "Liberal",},
["Liberal Party (Spain, 1880)"] = {abbrev = "", color = "#83C53A", shortname = "Liberal",},
["Liberal Party (Spain, 1976)"] = {abbrev = "", color = "#006C95", shortname = "",},
["Liberal Party (Thailand)"] = {abbrev = "", color = "#00008B", shortname = "Liberal",},
["Liberal Party (UK, 1989)"] = {abbrev = "", color = "#EB7A43", shortname = "Liberal",},
["Liberal Party (UK)"] = {abbrev = "Lib", color = "#FFD700", shortname = "Liberal",},
["Liberal Party (Uruguay)"] = {abbrev = "", color = "#1047a1", shortname = "Liberal",},
["Liberal Party (Venezuela)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Party–Hatoyama"] = {abbrev = "", color = "#8DA405", shortname = "",},
["Liberal Party Bangladesh"] = {abbrev = "", color = "#EA6D6A", shortname = "",},
["Liberal Party of Albania"] = {abbrev = "", color = "#F2D863", shortname = "",},
["Liberals of Andorra"] = {abbrev = "L'A", color = "#019DC5", shortname = "",},
["Liberal Party of Australia (A.C.T. Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (New South Wales Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (Queensland Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (South Australian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (Tasmanian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (Victorian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia (Western Australian Division)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Australia"] = {abbrev = "", color = "#0047AB", shortname = "Liberal",},
["Liberal Party of Chile (2013)"] = {abbrev = "", color = "#FF432C", shortname = "Liberal",},
["Liberal Party of Canada"] = {abbrev = "", color = "#D71920", shortname = "Liberal",},
["Liberal Party of Corrientes"] = {abbrev = "", color = "#35AAE0", shortname = "",},
["Liberal Party of Cuba"] = {abbrev = "", color = "#75AADB", shortname = "Liberal",},
["Liberal Party of Ghana"] = {abbrev = "", color = "#F96128", shortname = "",},
["Liberal Party of Gibraltar"] = {abbrev = "", color = "#DF424D", shortname = "Liberal",},
["Liberal Party of Honduras"] = {abbrev = "", color = "#CE2029", shortname = "Liberal",},
["Liberal Party of Ireland"] = {abbrev = "LPI", color = "#ADD8E6", shortname = "Liberal",},
["Liberal Party of Kosovo"] = {abbrev = "", color = "brown", shortname = "",},
["Liberal Party of Macedonia"] = {abbrev = "LPM", color = "#FFFF00", shortname = "",},
["Liberal Party of Montenegro"] = {abbrev = "LPCG", color = "#87CEEB", shortname = "",},
["Liberal Party of Norway"] = {abbrev = "", color = "#8CD600", shortname = "Liberal",},
["Liberal Party of South Africa"] = {abbrev = "", color = "#FED86F", shortname = "",},
["Liberal Party of Sri Lanka"] = {abbrev = "", color = "#FFDE17", shortname = "",},
["Liberal Party of State Employment and Housing"] = {abbrev = "", color = "#311829", shortname = "",},
["Liberal Party of Switzerland"] = {abbrev = "", color = "#134B94", shortname = "Liberals",},
["Liberal Party of the Right"] = {abbrev = "", color = "#4955A1", shortname = "",},
["Liberal Party of Ukraine"] = {abbrev = "", color = "blue", shortname = "Liberal",},
["Liberal People's Party (Norway)"] = {abbrev = "", color = "purple", shortname = "",},
["Liberal People's Party (Norway, 1972)"] = {abbrev = "", color = "red", shortname = "",},
["Liberal Poland – Entrepreneurs' Strike"] = {abbrev = "PL!SP", color = "#FFD900", shortname = "",},
["Liberal Popular Alliance"] = {abbrev = "", color = "#3366FF", shortname = "",},
["Liberal Progressive Party (Costa Rica)"] = {abbrev = "PLP", color = "#ff7300", shortname = "",},
["Liberal-Radical Party"] = {abbrev = "", color = "#ffcc00", shortname = "Liberal-Radical",},
["Liberal Reform Party (Australia)"] = {abbrev = "", color = "#00CED1", shortname = "Liberal Reform",},
["Liberal Reform Party (Czech Republic)"] = {abbrev = "LiRA", color = "yellow", shortname = "",},
["Liberal Reformist Party (Belgium)"] = {abbrev = "PRL", color = "blue", shortname = "",},
["Liberal Reformist Party (Dominican Republic)"] = {abbrev = "", color = "#32cd32", shortname = "",},
["Liberal Reformist Party (Puerto Rico)"] = {abbrev = "", color = "#B9245D", shortname = "",},
["Liberal Reformist Party (Romania)"] = {abbrev = "", color = "#1A92D0", shortname = "",},
["Liberal Reformist Party (Spain)"] = {abbrev = "", color = "#13CED2", shortname = "Liberal Reformist",},
["Liberal Regenerator Party"] = {abbrev = "", color = "#1935D0", shortname = "",},
["Liberal–Republican Coalition (Spain)"] = {abbrev = "", color = "#B1855B", shortname = "",},
["Liberal Republican Party (Turkey)"] = {abbrev = "", color = "#348AC9", shortname = "",},
["Liberal Republican Party (US)"] = {abbrev = "", color = "#FF69B4", shortname = "Liberal Republican",},
["Liberal Republican Right"] = {abbrev = "DLR", color = "#4EC766", shortname = "",},
["Liberal Samajbadi Party"] = {abbrev = "", color = "yellow", shortname = "",},
["Liberal Socialist Party (Singapore)"] = {abbrev = "LSP", color = "#EE5533", shortname = "",},
["Liberal Socialist Party (Switzerland)"] = {abbrev = "PLSS", color = "#F0D90B", shortname = "",},
["Liberal Socialists Party (Egypt)"] = {abbrev = "", color = "#00EE00", shortname = "",},
["Liberal State Party"] = {abbrev = "", color = "#5A5CBD", shortname = "",},
["Liberal Swedish Party"] = {abbrev = "", color = "Blue", shortname = "",},
["Liberal Unification Party"] = {abbrev = "", color = "#013792", shortname = "Liberal Unification",},
["Liberal Union (Australia)"] = {abbrev = "", color = "#0000FF", shortname = "Liberal Union",},
["Liberal Union (Germany)"] = {abbrev = "LV", color = "#EEDC82", shortname = "",},
["Liberal Union (Italy)"] = {abbrev = "", color = "#0047AB", shortname = "Liberal Union",},
["Liberal Union (Netherlands)"] = {abbrev = "LU", color = "#5873DF", shortname = "",},
["Liberal Union (Spain, 1983)"] = {abbrev = "", color = "#1E90FF", shortname = "",},
["Liberal Union (Spain)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Liberal Union–Brătianu"] = {abbrev = "UL–B", color = "#FFDD00", shortname = "",},
["Liberal Union of Lithuania"] = {abbrev = "LLS", color = "#E8CA58", shortname = "",},
["Liberal Unionist Party"] = {abbrev = "LibU", color = "#2061A2", shortname = "Liberal Unionist",},
["Liberal Unity"] = {abbrev = "", color = "#FFD300", shortname = "",},
["Liberal Vannin Party"] = {abbrev = "", color = "#FA8000", shortname = "Liberal Vannin",},
["Liberal-Labour (UK)"] = {abbrev = "Lib-Lab", color = "orange", shortname = "",},
["Liberal-Labour"] = {abbrev = "", color = "orange", shortname = "",},
["Liberal–Labour (New Zealand)"] = {abbrev = "", color = "#FFA500", shortname = "Liberal–Labour",},
["Liberal-Social Union"] = {abbrev = "LSU", color = "#50C878", shortname = "",},
["Liberal–Socialist Kartels"] = {abbrev = "", color = "#800080", shortname = "Liberal–Socialist",},
["Liberal/Country coalition"] = {abbrev = "", color = "#0047AB", shortname = "",},
["Liberal/National coalition"] = {abbrev = "", color = "#0047AB", shortname = "",},
["Liberal/NCP coalition"] = {abbrev = "", color = "#0047AB", shortname = "",},
["Liberal"] = {abbrev = "", color = "#FFFF00", shortname = "",}, -- Generic color, not a party color; specify the actual party
["Liberalism in the Netherlands"] = {abbrev = "", color = "#e7cf25", shortname = "",},
["Liberalism"] = {abbrev = "", color = "#FFFF00", shortname = "Liberal",},
["Liberals (Finland)"] = {abbrev = "", color = "gold", shortname = "Liberals",},
["Liberals (Sweden)"] = {abbrev = "L", color = "#006AB3", shortname = "Liberals",},
["Liberals for Åland"] = {abbrev = "", color = "#1F66CA", shortname = "",},
["Liberals for Forests"] = {abbrev = "LFF", color = "#05A593", shortname = "Liberals for Forests",},
["Liberals of Benidorm"] = {abbrev = "", color = "#359E74", shortname = "",},
["Liberals of Serbia"] = {abbrev = "LS", color = "#FF4F00", shortname = "",},
["Liberals' Movement (Lithuania)"] = {abbrev = "LRLS", color = "#F48100", shortname = "",},
["Liberals, Democrats and Radicals"] = {abbrev = "LDR", color = "Gold", shortname = "",},
["Liberate the People"] = {abbrev = "YAW", color = "#FF1493", shortname = "",},
["Liberation Rally"] = {abbrev = "", color = "#CD7F32", shortname = "",},
["Liberation Movement (Serbia)"] = {abbrev = "O", color = "#18478e", shortname = "",},
["Liberator Party (Brazil)"] = {abbrev = "", color = "#F9AF1E", shortname = "",},
["Liberia Destiny Party"] = {abbrev = "LDP", color = "#BEC2CB", shortname = "",},
["Liberia National Union"] = {abbrev = "LNU", color = "#2E7286", shortname = "",},
["Liberia Restoration Party"] = {abbrev = "LRP", color = "#008000", shortname = "",},
["Liberia Transformation Party"] = {abbrev = "LTP", color = "#330104", shortname = "",},
["Liberian Action Party"] = {abbrev = "LAP", color = "#00FFFF", shortname = "",},
["Liberian People's Party"] = {abbrev = "LPP", color = "#DC143C", shortname = "",},
["Libertair, Direct, Democratisch"] = {abbrev = "LDD", color = "#6DCFF6", shortname = "",},
["Libertarian Left (Chile)"] = {abbrev = "", color = "#451255", shortname = "",},
["Libertarian Movement (Costa Rica)"] = {abbrev = "PML", color = "#DC143C", shortname = "",},
["Libertarian Movement Party"] = {abbrev = "", color = "#BA151B", shortname = "",},
["Libertarian Party (Netherlands)"] = {abbrev = "", color = "#1170ce", shortname = "",},
["Libertarian Party (Spain)"] = {abbrev = "", color = "#C9A900", shortname = "",},
["Libertarian Party (Switzerland)"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Libertarian Party (US)"] = {abbrev = "LI", color = "#FED105", shortname = "Libertarian",},
["Libertarian Party (UK)"] = {abbrev = "", color = "#FCC820", shortname = "Libertarian",},
["Libertarian Party of Australia"] = {abbrev = "", color = "#E5C601", shortname = "",},
["Libertarian Party of Canada"] = {abbrev = "", color = "#F2BA00", shortname = "",},
["Libertarian Party of South Africa"] = {abbrev = "", color = "#BE9F4D", shortname = "",},
["Libertarianz"] = {abbrev = "", color = "#09296B", shortname = "",},
["Libertas Estonia"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Libertas France"] = {abbrev = "", color = "#003366", shortname = "Libertas",},
["Libertas Ireland"] = {abbrev = "", color = "#3333CC", shortname = "Libertas",},
["Libertas United Kingdom"] = {abbrev = "", color = "#900020", shortname = "Pro-Democracy: Libertas.eu",},
["Libertas.eu"] = {abbrev = "Lib.eu", color = "#2c296e", shortname = "",},
["Liberties, Independents, Overseas and Territories"] = {abbrev = "", color = "#38D4C7", shortname = "LIOT",},
["Liberty (political party, Palestine)"] = {abbrev = "", color = "#C69F14", shortname = "",},
["Liberty (political party)"] = {abbrev = "", color = "#1882C5", shortname = "Volia",},
["Liberty and Lawfulness"] = {abbrev = "WiP", color = "grey", shortname = "",},
["Liberty and Refoundation"] = {abbrev = "", color = "#8B0000", shortname = "Libre",},
["Liberty GB"] = {abbrev = "", color = "#000168", shortname = "",},
["Liberty Korea Party"] = {abbrev = "", color = "#C9151E", shortname = "Liberty Korea",},
["Liberty Party (Liberia)"] = {abbrev = "LP", color = "#FFD600", shortname = "",},
["Liberty Party (US, 1932)"] = {abbrev = "", color = "#00DDDD", shortname = "Liberty",},
["Liberty Party (US)"] = {abbrev = "", color = "#00DDDD", shortname = "Liberty",},
["Liberty Republican Party"] = {abbrev = "", color = "#009944", shortname = "",},
["Liberty Unification Party"] = {abbrev = "", color = "#E12F33", shortname = "Liberty Unification",},
["Liberty Union Party"] = {abbrev = "", color = "#D6FF33", shortname = "Liberty Union",},
["Liberty, Worth Voting For"] = {abbrev = "", color = "#DDDDDD", shortname = "Liberty",},
["Libra Party"] = {abbrev = "", color = "#F8D308", shortname = "",},
["Libre (Guatemala)"] = {abbrev = "", color = "#3467A1", shortname = "Libre",},
["Libres"] = {abbrev = "", color = "#194955", shortname = "",},
["Lider (political party)"] = {abbrev = "", color = "#00AFF0", shortname = "",},
["Liepāja Party"] = {abbrev = "", color = "#50A640", shortname = "",},
["Life – National Party"] = {abbrev = "Život–NS", color = "#032F67", shortname = "",},
["Life and Liberty Party"] = {abbrev = "", color = "black", shortname = "Life and Liberty",},
["Liga Veneta"] = {abbrev = "", color = "#0030AA", shortname = "",},
["LiGanDo"] = {abbrev = "", color = "#02A24A", shortname = "",},
["Light Blue and White Union"] = {abbrev = "", color = "blue", shortname = "",},
["Light of Faith (political party)"] = {abbrev = "", color = "#10C8DF", shortname = "Yiman Nuru",},
["Ligue du Sud"] = {abbrev = "LS", color = "#404040", shortname = "",},
["Likud Yisrael Beiteinu"] = {abbrev = "", color = "#1f5aa5", shortname = "",},
["Likud"] = {abbrev = "", color = "#1f5aa5", shortname = "",},
["Linares First"] = {abbrev = "", color = "#1F1715", shortname = "",},
["Lincoln Democratic Labour Association"] = {abbrev = "", color = "#FF6600", shortname = "Democratic Labour",},
["Lincolnshire Independents"] = {abbrev = "", color = "#000000", shortname = "Lincolnshire Independent",},
["Linese Alternative"] = {abbrev = "", color = "#0CB7F2", shortname = "",},
["Lingkod Taguig"] = {abbrev = "", color = "#0051B0", shortname = "",},
["Linyon Demokratik Seselwa"] = {abbrev = "", color = "#2C50A4", shortname = "",},
["List Burgenland"] = {abbrev = "", color = "#F8D323", shortname = "",},
["List Dedecker"] = {abbrev = "", color = "#000080", shortname = "",},
["List for Fiume"] = {abbrev = "", color = "#545AA7", shortname = "",},
["List for Sandžak"] = {abbrev = "LZS", color = "#307A4D", shortname = "",},
["List for Trieste"] = {abbrev = "", color = "#4CBB17", shortname = "",},
["List of Decency"] = {abbrev = "", color = "#CC00CC", shortname = "",},
["List of Marjan Šarec"] = {abbrev = "LMŠ", color = "#005AAB", shortname = "",},
["Lists of Slavs and Germans"] = {abbrev = "LST", color = "#B00000", shortname = "",},
["Lista del Apruebo"] = {abbrev = "", color = "#6F4D9A", shortname = "",},
["Lista Niun Paso Atras"] = {abbrev = "", color = "gold", shortname = "",},
["Lisu National Development Party"] = {abbrev = "LNDP", color = "#DC0723", shortname = "",},
["Lithuanian Centre Party"] = {abbrev = "", color = "#0CA13B", shortname = "",},
["Lithuanian Centre Union"] = {abbrev = "LCS", color = "#D6D40F", shortname = "",},
["Lithuanian Christian Democratic Party"] = {abbrev = "LKDP", color = "#3D6DBF", shortname = "",},
["Lithuanian Christian Democrats"] = {abbrev = "", color = "#3333CC", shortname = "",},
["Lithuanian Citizens' Alliance"] = {abbrev = "LPA", color = "#799B6F", shortname = "",},
["Lithuanian Democratic Party"] = {abbrev = "LDP", color = "#007272", shortname = "",},
["Lithuanian Farmers and Greens Union"] = {abbrev = "LVŽS", color = "#00A651", shortname = "",},
["Lithuanian Green Party"] = {abbrev = "LŽP", color = "#92C83E", shortname = "",},
["Lithuanian Labour Federation"] = {abbrev = "", color = "#2C6BC7", shortname = "Labour Federation",},
["Lithuanian Liberty Union"] = {abbrev = "LLS", color = "#FBB800", shortname = "",},
["Lithuanian List"] = {abbrev = "LS", color = "#810305", shortname = "",},
["Lithuanian Nationalist and Republican Union"] = {abbrev = "", color = "#FDC52A", shortname = "",},
["Lithuanian Nationalist Union"] = {abbrev = "LTS", color = "#FFD700", shortname = "",},
["Lithuanian Peasant Popular Union"] = {abbrev = "", color = "#BBFF02", shortname = "",},
["Lithuanian Peasants Party"] = {abbrev = "LVP", color = "#BAD759", shortname = "",},
["Lithuanian People's Party"] = {abbrev = "LLP", color = "#E6AD1E", shortname = "",},
["Lithuanian Popular Peasants' Union"] = {abbrev = "LVLS", color = "green", shortname = "",},
["Lithuanian Popular Socialist Democratic Party"] = {abbrev = "LSLDP", color = "", shortname = "",},
["Lithuanian Regions Party"] = {abbrev = "LRP", color = "#CE2C29", shortname = "",},
["Lithuanian Russian Union"] = {abbrev = "SRL", color = "red", shortname = "",},
["Lithuanian Social Democratic Union"] = {abbrev = "LSDS", color = "#901d78", shortname = "",},
["Lithuanian Union of Political Prisoners and Deportees"] = {abbrev = "LPKTS", color = "#216319", shortname = "",},
["Livable Netherlands"] = {abbrev = "LN", color = "#FF4400", shortname = "",},
["Liverpool Community Independents"] = {abbrev = "", color = "#800000", shortname = "Community Independents",},
["Liverpool Independent Party"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Liverpool Protestant Party"] = {abbrev = "", color = "#F88017", shortname = "Protestant",},
["Living Ourense"] = {abbrev = "", color = "#0082CD", shortname = "",},
["LIVRE"] = {abbrev = "", color = "#C2D216", shortname = "",},
["Llais Gwynedd"] = {abbrev = "", color = "#006400", shortname = "",},
["Llantwit First Independents"] = {abbrev = "", color = "#999999", shortname = "Llantwit First Independent",},
["Lliures"] = {abbrev = "", color = "#E75C73", shortname = "",},
["Lloc Espai Independent"] = {abbrev = "", color = "#E6302B", shortname = "",},
["LMP – Hungary's Green Party"] = {abbrev = "LMP", color = "#36CA8B", shortname = "",},
["Lower Hutt Citizens' Association"] = {abbrev = "", color = "#B8BFFE", shortname = "Citizens'",},
["Local Alliance"] = {abbrev = "", color = "#000000", shortname = "",},
["Local and Rural Issues"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Local Danish parties"] = {abbrev = "", color = "#C7C3BF", shortname = "",},
["Local Education Action by Parents"] = {abbrev = "", color = "#CCCCCC", shortname = "",},
["Local Option"] = {abbrev = "", color = "silver", shortname = "",},
["Local Progressive Party"] = {abbrev = "", color = "#FF4500", shortname = "",},
["Localist Bloc of Melilla"] = {abbrev = "", color = "#217118", shortname = "",},
["Localist"] = {abbrev = "", color = "#bb00bb", shortname = "",},
["Localist groups (Hong Kong)"] = {abbrev = "", color = "#002366", shortname = "Localist",},
["Loktantrik Morcha (Rajasthan)"] = {abbrev = "LM", color = "#FF1D15", shortname = "",},
["Lok Bhalai Party"] = {abbrev = "LBP", color = "#386059", shortname = "",},
["Lok Insaaf Party"] = {abbrev = "LIP", color = "Maroon", shortname = "",},
["Lok Janshakti Party (Ram Vilas)"] = {abbrev = "LJP(RV)", color = "#5B006A", shortname = "",},
["Lok Janshakti Party"] = {abbrev = "LJP", color = "#0093DD", shortname = "",},
["Lok Kalayankari Janata Party Nepal"] = {abbrev = "", color = "#FFEFD5", shortname = "Lok Kalayankari Janata Party",},
["Lok Paritran"] = {abbrev = "LKPT", color = "#f3c0f3", shortname = "",},
["Lok Raj Party Himachal Pradesh"] = {abbrev = "LRP", color = "indigo", shortname = "",},
["Lok Rajya Party"] = {abbrev = "", color = "#9900FF", shortname = "",},
["Lok Satta Party"] = {abbrev = "LSP", color = "#FF1493", shortname = "",},
["Lok Sewak Dal"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Lok Sewak Sangh"] = {abbrev = "", color = "#00FF00", shortname = "",},
["Lok Shakti"] = {abbrev = "", color = "#336600", shortname = "",},
["Lokdal"] = {abbrev = "LKD", color = "#00FF66", shortname = "",},
["Lokpriya Samaj Party"] = {abbrev = "LPSP", color = "#66FF99", shortname = "",},
["Loktanter Suraksha Party"] = {abbrev = "LSP", color = "#FF9900", shortname = "",},
["Loktantra Suraksha Party"] = {abbrev = "", color = "#FFFF00", shortname = "",},
["Loktantrik Jan Samta Party"] = {abbrev = "LJSP", color = "grey", shortname = "",},
["Loktantrik Janata Dal"] = {abbrev = "LJD", color = "#2E8B57", shortname = "",},
["Loktantrik Janata Party (Secular)"] = {abbrev = "LJP(S)", color = "pink", shortname = "",},
["Loktantrik Samajwadi Party, Nepal"] = {abbrev = "LSWP", color = "#c7f884 ", shortname = "Loktantrik Samajwadi",},
["Londependence Party"] = {abbrev = "", color = "#751056", shortname = "Londependence",},
["London Real Party"] = {abbrev = "", color = "#af0823", shortname = "London Real",},
["London Socialist Alliance"] = {abbrev = "", color = "red", shortname = "London Socialist",},
["Longthornton and Tamworth Residents Association"] = {abbrev = "", color = "#000000", shortname = "Longthornton and Tamworth Residents",},
["Lord Fusituʻa"] = {abbrev = "", color = "#D3D3D3", shortname = "",},
["Lord Nuku"] = {abbrev = "", color = "#D3D3D3", shortname = "",},
["Lord Speaker"] = {abbrev = "", color = "black", shortname = "",},
["Lord Tuʻiʻafitu"] = {abbrev = "", color = "#D3D3D3", shortname = "",},
["Lords Spiritual"] = {abbrev = "", color = "#7F00FF", shortname = "",},
["Loss"] = {abbrev = "", color = "#999999", shortname = "",},
["Loughton Residents Association"] = {abbrev = "", color = "#50C878", shortname = "Loughton Residents",},
["Love Malaysia Party"] = {abbrev = "", color = "#DAE2EA", shortname = "",},
["Love Party (Italy)"] = {abbrev = "", color = "#FF91AF", shortname = "",},
["Love Sabah Party"] = {abbrev = "", color = "#FB5B47", shortname = "",},
["Love, Faith, Hope"] = {abbrev = "", color = "#BC413C", shortname = "",},
["Lower Cinca Between Everyone"] = {abbrev = "ETXSBC", color = "#F57D02", shortname = "",},
["Lower Minho Independents"] = {abbrev = "", color = "#824941", shortname = "",},
["Loyalty and Dignity"] = {abbrev = "", color = "#1e90ff", shortname = "",},
["Luen Wo United"] = {abbrev = "", color = "#000000", shortname = "",},
["Lugonovo"] = {abbrev = "", color = "#E5432C", shortname = "",},
["Luhansk Economic Union"] = {abbrev = "LES", color = "#76C5F0", shortname = "",},
["Lung Mun Concern Group"] = {abbrev = "LMCG", color = "#11A0B4", shortname = "",},
["Lutte Ouvrière"] = {abbrev = "LO", color = "#AA0000", shortname = "",},
["Luxembourg Socialist Workers' Party"] = {abbrev = "LSAP", color = "#F10035", shortname = "",},
["LXE"] = {abbrev = "", color = "#47B9AF", shortname = "",},
["Lytvyn Bloc"] = {abbrev = "", color = "#01B8A4", shortname = "",},
["Lytyn Bloc"] = {abbrev = "", color = "Green", shortname = "",},
}
return {
full = full,
alternate = alternate,
}
a2f7777ecc352423e77ec55288d0f529e1eb84d3
Template:Organization infoboxes
10
1479
2814
2023-09-27T23:17:19Z
w>Jonesey95
0
fix redirect
wikitext
text/x-wiki
{{Navbox
| name = Organization infoboxes
| state = {{{state<includeonly>|expanded</includeonly>}}}
| bodyclass = hlist
| title = [[Wikipedia:Template index|Wikipedia templates]]: [[organization]] [[Template:Infobox|infoboxes]]
| above = [[Wikipedia:Manual of Style/Infoboxes]]
| group1 = General
| list1 =
* {{Tl|Infobox organization}}
* {{Tl|Infobox official post}}
* {{tl|Infobox criminal organization}}
* {{tl|Infobox fictional organisation}}
| group2 = {{longitem|Government<br/>and politics}}
| list2 =
* {{Tl|Infobox government}}
* {{Tl|Infobox government agency}}
* {{Tl|Infobox legislature}}
* {{Tl|Infobox political party}}
* {{Tl|Infobox court}}
* {{Tl|Infobox detention facility}}
* {{tl|Infobox fire department}}
* {{Tl|Infobox law enforcement agency}}
* {{Tl|Infobox space agency}}
| group3 = Military
| list3 =
* {{Tl|Infobox national military}}
* {{Tl|Infobox military unit}}
* {{tl|Infobox military rank}}
* {{Tl|Infobox military gear}}
| group4 = Religion
| list4 =
* {{Tl|Infobox religious group}}
* {{Tl|Infobox religion}}
* {{Tl|Infobox diocese}}
* {{Tl|Infobox church}}
* {{Tl|Infobox monastery}}
| group5 = People
| list5 =
* {{Tl|Infobox ethnic group}}
* {{Tl|Infobox caste}}
* {{Tl|Infobox clan}}
* {{Tl|Infobox family}}
* {{Tl|Infobox iwi}}
* {{Tl|Infobox hereditary title}}
* {{Tl|Infobox monarchy}}
* {{Tl|Infobox officeholder}}
* {{Tl|Infobox tribe}}
| group6 = {{longitem|Typically<br/>non-profit}}
| list6 =
* {{tl|Infobox hospital}}
* {{Tl|Infobox institute}}
* {{Tl|Infobox laboratory}}{{smallsup|1}}
* {{tl|Infobox museum}}
* {{Tl|Infobox observatory}}
* {{Tl|Infobox school}}
* {{tl|Infobox school district}}
* {{Tl|Infobox university}}{{smallsup|2}}
| group7 = Publications
| list7 =
* {{Tl|Infobox journal}}
* {{Tl|Infobox magazine}}
* {{Tl|Infobox newspaper}}
* {{Tl|Infobox publisher}}
| group8 = Business
| list8 =
* {{Tl|Infobox company}}
* {{tl|Infobox brewery}}
* {{Tl|Infobox law firm}}
* {{tl|Infobox restaurant}}
* {{tl|Infobox website}} – ''type of business or publication''
| group9 = Distinctions
| list9 =
* {{Tl|Infobox order}}
* {{Tl|Infobox fraternity}}
* {{Tl|Infobox Grand Lodge}}
| group10 = Subtemplates
| list10 =
* '''Coordinates''' {{Tl|coord}}
* '''Dates'''
** {{Tl|start date}}}—for {{para|established}}, {{para|founded}}, {{para|opened}} etc.
** {{Tl|end date}}}—for {{para|dissolved}}, {{para|defunct}}
* '''Lists'''
**{{tl|plainlist}}
** {{tl|flatlist}}
** {{tl|unbulleted list}}
* '''Non-English text''' {{Tl|lang}}
* '''Website'''
** {{tl|URL}}
** {{tl|Official URL}}
** {{tl|Official website}}
* '''Documentation'''
** {{Tl|mf-adr}}}—Address
** {{Tl|UF-hcard-org}}—[[Microformat]]/metadata
| below =
* {{smallsup|1}} or research institution
* {{smallsup|2}} or college
* [[:Category:Infobox templates|Category]]
* [[Help:Infobox|Help]]
* [[Wikipedia:List of infoboxes|List of infoboxes]]
}}<noinclude>{{documentation}}</noinclude>
8e81fe7179216c1823e098fa600be889f26cbeba
Template:Infobox school/doc
10
1482
2817
2023-09-28T04:19:43Z
w>Jonesey95
0
/* Basic syntax */ provide example
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories where indicated at the bottom of this page, please; interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use|demo={{ROOTPAGENAME}}}}
{{Auto short description}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Infobox mapframe|Module:Coordinates|Module:Check for clobbered parameters|Module:Check for unknown parameters}}
{{Tl|Infobox school}} can be used for adding at-a-glance comparative information to articles about schools, other than school districts, universities or colleges (see {{Tl|Infobox school district}}, {{Tl|Infobox university}} and [[:Category:Universities and colleges infobox templates|related infobox templates]] for higher-education facilities). Examples of use for this template would include primary and secondary schools.
== Usage ==
{{See also|Wikipedia:WikiProject Schools/Article advice#Selecting the correct Infobox}}
=== Basic syntax ===
To add an empty infobox with the most common options, you can copy and paste the blank template below, but be sure to remove any unused parameters. You can add more information by copying any relevant parameters available from the [[#Full syntax|full syntax]].
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox school
| name =
| native_name = <!-- {{lang|language code|name in native language}}-->
| image =
| alt =
| caption =
| motto = <!-- or | mottoes = -->
| motto_translation =
| location =
| country =
| coordinates = <!-- {{Coord|LAT|LON|display=inline,title}} -->
| other_name = <!-- or | other_names = -->
| former_name = <!-- or | former_names = -->
| type =
| religious_affiliation =
| established = <!-- {{Start date|YYYY|MM|DD|df=yes}} -->
| founder = <!-- or | founders = -->
| closed = <!-- {{End date|YYYY|MM|DD|df=yes}} -->
| school_board =
| district =
| authority = <!-- or | educational_authority = or | local_authority = -->
| oversight = <!-- use | oversight_label = to override the default label -->
| principal = <!-- use | principal_label = to override the default label -->
| head = <!-- use | head_label = to override the default label -->
| staff =
| faculty =
| grades = <!-- use | grades_label = to override the default label -->
| gender = <!-- use | gender_label = to override the default label -->
| age_range = <!-- or | lower_age = and | upper_age = -->
| enrollment = <!-- or | enrolment = or | students = or | pupils = or | roll = -->
| language =
| campus_size =
| campus_type =
| colors = <!-- or | colours = -->
| accreditation = <!-- or | accreditations = -->
| publication =
| newspaper =
| yearbook =
| affiliation = <!-- or | affiliations = -->
| website = <!-- {{URL|school.url}} or {{URL|1=school.url}} if the url contains an equals sign -->
| footnotes =
}}
</syntaxhighlight>
=== Additional principals ===
Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy", or "Vice".
<syntaxhighlight lang="wikitext" style="overflow:auto">
| principal1 = <!-- use | principal_label1 = to override the default label -->
| principal2 = <!-- use | principal_label2 = to override the default label -->
| principal3 = <!-- use | principal_label3 = to override the default label -->
| principal4 = <!-- use | principal_label4 = to override the default label -->
</syntaxhighlight>
<syntaxhighlight lang="wikitext" style="overflow:auto">
| head_name2 =
| head2 =
| r_head = <!-- use | r_head_label = to override the default label -->
</syntaxhighlight>
=== Additional free text fields ===
Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy", or "Vice".
<syntaxhighlight lang="wikitext" style="overflow:auto">
| free_label =
| free_text =
| free_label1 =
| free_text1 =
| free_label2 =
| free_text2 =
| free_label3 =
| free_text3 =
| free_label4 =
| free_text4 =
| free_label5 =
| free_text5 =
</syntaxhighlight>
=== Full syntax ===
{{Parameter names example | name | native_name | latin_name | logo | logo_size | logo_alt | seal_image | seal_size | seal_alt | image | image_size | alt | caption | motto | motto_translation | address | location | region | city | county | state | province | postcode={{{postcode}}} ''or'' {{{postalcode}}} ''or'' {{{zipcode}}} | country | country1 | coordinates={{Coord|0|0}} | coordinates_footnotes | mapframe-zoom=0 | other_name={{{other_name}}} ''or'' {{{other_names}}} | former_name={{{former_name}}} ''or'' {{{former_names}}} | type | religious_affiliation | denomination | patron | established={{{established}}} ''or'' {{{founded}}} ''or'' {{{opened}}} | founder={{{founder}}} ''or'' {{{founders}}} | status | closed | locale | sister_school | school_board | district | us_nces_district_id | local_authority | educational_authority={{{educational_authority}}} ''or'' {{{authority}}} | category_label | category | oversight_label | oversight | trust | authorizer | superintendent | trustee | specialist={{{specialist}}} ''or'' {{{specialists}}} | session | school_number | school_code | urn | MOE | ofsted | ceeb | us_nces_school_id | president | chair_label | chair | chairman_label | chairman | chairperson_label | chairperson | dean | administrator | rector | director | principal_label | principal | principal_label1 | principal1 | principal_label2 | principal2 | principal_label3 | principal3 | principal_label4 | principal4 | campus_director | headmistress | headmaster | head_of_school | head_teacher={{{head_teacher}}} ''or'' {{{headteacher}}} | executive_headteacher | acting_headteacher | head_label | head | head_name2 | head2 | r_head_label | r_head | officer_in_charge | chaplain | staff | faculty | teaching_staff | employees | key_people | grades_label | grades | years | years_taught | nursery_years_taught | primary_years_taught | secondary_years_taught | gender_label | gender | age_range={{{age_range}}} ''or'' {{{lower_age}}} to {{{upper_age}}} | enrollment={{{enrollment}}} ''or'' {{{enrolment}}} ''or'' {{{students}}} ''or'' {{{pupils}}} ''or'' {{{roll}}} | enrollment_as_of={{{enrollment_as_of}}} ''or'' {{{enrolment_as_of}}} ''or'' {{{students_as_of}}} ''or'' {{{pupils_as_of}}} | capacity | sixth_form_students | grade_preK | gradeK | grade1 | grade2 | grade3 | grade4 | grade5 | grade6 | grade7 | grade8 | grade9 | grade10 | grade11 | grade12 | grade13 | other | other_grade_label | other_grade_enrollment | other_grade_label_1 | other_grade_enrollment_1 | other_grade_label_2 | other_grade_enrollment_2 | international_students | classes | average_class_size | ratio | system | classes_offered | language | schedule_type | schedule | hours_in_day | classrooms | campuses | campus | campus_size | area | campus_type | houses | student_union_label | student_union | colors={{{colors}}} ''or'' {{{colours}}} | slogan | song | fight_song | athletics | athletics_conference | sports | mascot | nickname | teams_label | teams | team_name | rival={{{rival}}} ''or'' {{{rivals}}} | accreditation={{{accreditation}}} ''or'' {{{accreditations}}} | USNWR_ranking | national_ranking | test_name | test_average | bar_pass_rate | decile | publication | newspaper | yearbook | products | endowment | budget | fees | annual_tuition | tuition | revenue | communities | feeder_schools | feeder_to | graduates_year | graduates | affiliation={{{affiliation}}} ''or'' {{{affiliations}}} | alumni | alumni_name | nobel_laureates | information | free_label | free_text | free_label1 | free_text1 | free_label2 | free_text2 | free_label3 | free_text3 | free_label4 | free_text4 | free_label5 | free_text5 | website | footnotes | picture | picture_caption | picture2 | picture_caption2 | module | lastupdate }}
To add an empty infobox with all options, you can copy and paste the blank template below, but be sure to remove any unused parameters. Alternatively, it may be easier to use the [[#Basic syntax|basic syntax]] and then add more information by copying any relevant parameters from the template below. <small>(Note for new editors: '''this is a list of all parameters available in this template'''. Adding your own will not work and will flag up as an unsupported parameter. You can discuss any parameter concerns on the [[Template_talk:Infobox_school|talk page]]. Don't forget, you can make use of the [[#Additional free text fields|additional free text fields]])</small>
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox school
| name =
| native_name =
| latin_name =
| logo =
| logo_size =
| logo_alt =
| seal_image =
| seal_size =
| seal_alt =
| image =
| image_size =
| alt =
| caption =
| motto = <!-- or | mottoes = -->
| motto_translation =
| address =
| location =
| region =
| city = <!-- or | town = -->
| county =
| state =
| province =
| postcode = <!-- or | postalcode = -->
| zipcode =
| country =
| country1 =
| coordinates = <!-- {{Coord|LAT|LON|display=inline,title}} -->
| coordinates_footnotes =
| other_name = <!-- or | other_names = -->
| former_name = <!-- or | former_names = -->
| schooltype =
| fundingtype =
| type =
| religious_affiliation =
| denomination =
| patron =
| established = <!-- {{Start date|YYYY|MM|DD|df=yes}} -->
| founder = <!-- or | founders = -->
| status =
| closed = <!-- {{End date|YYYY|MM|DD|df=yes}} -->
| locale =
| sister_school =
| school_board =
| district =
| us_nces_district_id =
| local_authority =
| educational_authority = <!-- or | authority = -->
| category = <!-- use | category_label = to override the default label -->
| oversight = <!-- use | oversight_label = to override the default label -->
| trust =
| authorizer =
| superintendent =
| trustee =
| specialist = <!-- or | specialists = -->
| session =
| school_number =
| school_code =
| urn =
| MOE =
| ofsted =
| ceeb =
| us_nces_school_id =
| president =
| chair = <!-- use | chair_label = to override the default label -->
| chairman = <!-- use | chairman_label = to override the default label -->
| chairperson = <!-- use | chairperson_label = to override the default label -->
| dean =
| administrator =
| rector =
| director =
| principal = <!-- use | principal_label = to override the default label -->
| campus_director =
| headmistress =
| headmaster =
| head_of_school =
| head_teacher = <!-- or | headteacher = -->
| executive_headteacher =
| acting_headteacher =
| head = <!-- use | head_label = to override the default label -->
| r_head = <!-- use | r_head_label = to override the default label -->
| officer_in_charge =
| chaplain =
| staff =
| faculty =
| teaching_staff =
| employees =
| key_people =
| grades = <!-- use | grades_label = to override the default label -->
| years =
| years_taught = <!-- use | nursery_years_taught =, | primary_years_taught =, | secondary_years_taught = for additional information -->
| gender = <!-- use | gender_label = to override the default label -->
| age_range = <!-- or | lower_age = and | upper_age = -->
| lower_age = <!-- or | age_range = -->
| upper_age = <!-- or | age_range = -->
| enrollment = <!-- or | enrolment = or | students = or | pupils = or | roll = -->
| enrollment_as_of = <!-- or | enrolment_as_of = or | students_as_of = or | pupils_as_of = -->
| capacity =
| sixth_form_students =
| grade_preK =
| gradeK =
| grade1 =
| grade2 =
| grade3 =
| grade4 =
| grade5 =
| grade6 =
| grade7 =
| grade8 =
| grade9 =
| grade10 =
| grade11 =
| grade12 =
| grade13 =
| other = <!-- use | other_grade_label = to override the default label -->
| other_grade_label_1 =
| other_grade_enrollment_1 =
| other_grade_label_2 =
| other_grade_enrollment_2 =
| international_students =
| classes =
| average_class_size =
| ratio =
| system =
| classes_offered =
| language =
| schedule_type =
| schedule =
| hours_in_day =
| classrooms =
| campuses =
| campus =
| campus_size =
| area =
| campus_type =
| houses =
| student_union = <!-- use | student_union_label = to override the default label -->
| colors = <!-- or | colours = -->
| slogan =
| song =
| fight_song =
| athletics =
| athletics_conference =
| sports =
| mascot =
| nickname =
| teams = <!-- use | teams_label = to override the default label -->
| team_name =
| rival = <!-- or | rivals = -->
| accreditation = <!-- or | accreditations = -->
| USNWR_ranking =
| national_ranking =
| test_name =
| test_average =
| bar_pass_rate =
| decile =
| publication =
| newspaper =
| yearbook =
| products =
| endowment =
| budget =
| fees =
| tuition =
| annual_tuition =
| revenue =
| communities =
| feeder_schools =
| feeder_to =
| graduates =
| graduates_year =
| affiliation = <!-- or | affiliations = -->
| alumni =
| alumni_name =
| nobel_laureates =
| information = <!-- do not enter phone numbers or email addresses -->
| website = <!-- {{URL|school.url}} or {{URL|1=school.url}} if the url contains an equals sign -->
| footnotes =
| picture =
| picture_caption =
| picture2 =
| picture_caption2 =
}}
</syntaxhighlight>
=== Embedding ===
Any infobox which supports embedding can be embedded within infobox school, using the <code>module</code> parameter. For example, to embed {{Tl|Infobox NRHP}}, use the following syntax
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox school
| name = Wikipedia High School
| image = ...
...
| module =
{{Infobox NRHP
| embed = yes
| name = Wikipedia High School
| nrhp_type = nhl
| image =
| caption = ...
}}
}}
</syntaxhighlight>
{{Clear}}
== Parameters ==
<!-- explain what this template's parameters do -- if no params, delete the definition -->
{| class="wikitable" style="margin:auto; width:100%"
! style="text-align: left" | Parameter
! style="text-align: left" | Description
|-
! name
| Name of the school. If left blank, the pagename will display.
|-
! native_name
| Name of the school in its native language, if different from its English name.
|-
! latin_name
| Latin name of the school, if applicable.
|-
! logo
| rowspan=3 | Logo file name with no wikimarkup, e.g. ''Logo.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]].
|-
! logo_size
|-
! logo_alt
|-
! seal_image
| rowspan=3 | Seal file name with no wikimarkup, e.g. ''Seal.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]].
|-
! seal_size
|-
! seal_alt
|-
! image
| rowspan=4 | Image file name with no wikimarkup, e.g. ''MySchool.png'', size in pixels, e.g. ''150px'', alt text for visually impaired readers who cannot see it; see [[WP:ALT]], and caption text which is displayed below the image; see [[WP:CAPTION]].
|-
! image_size
|-
! alt
|-
! caption
|-
! address
| Street address on which the school is located. Causes the section heading to appear as "Address" instead of "Location".
|-
! location
| Location, could include address; separate lines with <nowiki><br /></nowiki>.
|-
! region
| Region in which the school is located.
|-
! city <br /> town
| City, town or village in which the school is located.
|-
! county
| County or Local Government Area in which the school is located.
|-
! state
| State in which the school is located.
|-
! province
| Province in which the school is located.
|-
! postcode <br /> postalcode
| The school's postcode. '''postalcode''' provides identical results.
|-
! zipcode
| The school's zip code.
|-
! country
| Country in which the school is located (plain text; do not use flag icons, do not wikilink; see [[WP:SCH/AG]] and [[WP:OVERLINK]]).
|-
<!--! country1
| Country, in [[ISO 3166-1 alpha-3]] form<br>Useful for stating a semi-autonomous area and the mother country
|AUS, GER, USA -->
! coordinates
| [[Geographic coordinate system|Geographic coordinates]]. Use {{Tl|Coord}} with ''display=inline,title''; for example: <code><nowiki>{{Coord|dd|mm|ss|N/S|dd|mm|ss|E/W|display=inline,title}}</nowiki></code>. <code>type:edu</code> is '''automatically added''', unless a different <code>type:</code> is specified.
|-
! coordinates_footnotes
| Footnotes for '''coordinates'''.
|-
! other_name <br /> other_names
| Alternate ''current'' name by which the school is known, such as acronyms and abbreviations. If there is more than one, use '''other_names''' instead.
|-
! former_name <br /> former_names
| Name by which the school used to be known. If there is more than one, use '''former_names''' instead.
|-
! schooltype
| Type of school. If entered with '''funding type''' or '''type''', will display as ''funding type'', ''schooltype'' or ''type schooltype''.
|-
! fundingtype
| Funding type of the school. If an article on "''fundingtype'' school" exists, will automatically be linked to it.
|-
! type
| Type of school; overridden by '''fundingtype'''.
|-
! motto <br /> mottoes
| The school's motto. If shown in foreign language then use appropriate language template (such as {{Tl|Lang-la}} template for Latin text). If there is more than one, use '''mottoes''' instead.
|-
! motto_translation
| English translation of the school's motto, if applicable.
|-
! religious_affiliation
| The school's religious affiliation.
|-
! denomination
| If a faith school, the [[Religious denomination|denomination]].
|-
! patron
| [[Patron saint]] of the school.
|-
! established <br /> founded <br /> opened
| Date of establishment/founding. Add c. before any approximate dates. Use {{Tl|Start date}} where possible.
|-
! founder <br /> founders
| Founder of the school. If there is more than one, use '''founders''' instead.
|-
! status
| Status of the school, if open or not. For US schools, attributes can also be included from the [http://nces.ed.gov/ccd/commonfiles/glossary.asp Common Core of Data (CCD) School and District Glossary] page on the [[National Center for Education Statistics]] (NCES) website.
|-
! closed
| Date the school closed. Use {{Tl|End date}} where possible.
|-
! locale
| Locale of the school.
|-
! sister_school
| The [[sister school]], if any. The main article should clarify the sister's relationship (same management, mutual agreement, other bonds, etc.), give the history of the arrangement and, of course, references.
|-
! school_board
| [[Board of education|Board]] the school comes under.
|-
! district
| The [[school district]] of the school.
|-
! {{Flagicon|United States}} us_nces_district_id
| For US schools only, the District ID which can be found by searching for the school district at the [http://nces.ed.gov/ccd/districtsearch/ Common Core of Data (CCD)] page on the NCES website. Also note that <nowiki>{{</nowiki>[[Template:NCES District ID|NCES District ID]]<nowiki>}}</nowiki> may be useful here.
|-
! {{Flagicon|United Kingdom}} local_authority
| For UK schools only, the [[local education authority|local authority]]. This can be found by searching for the school at the "[https://get-information-schools.service.gov.uk/ Get information about schools]" page on the [[Gov.uk|GOV.UK]] website for schools in [[England]] and [[Wales]] ("[http://mylocalschool.wales.gov.uk/ My Local School]" page on the [[Welsh Government|GOV.WALES]] website can also be used for schools in Wales), and "[https://education.gov.scot/parentzone/find-a-school Find a school]" page on the [[Scottish Government|GOV.SCOT]] website for schools in [[Scotland]].
|-
! authority
| rowspan=2 | Authority the school comes under.
|-
! educational_authority
|-
! category
| rowspan=2 | Category of school. Use '''category_label''' to override the default label "Category".
|-
! category_label
|-
! oversight
| rowspan=2 | Oversight the school comes under. Use '''oversight_label''' to override the default label "Oversight".
|-
! oversight_label
|-
! trust
| If the school is a sponsor led academy or a foundation school it may be part of a trust or foundation.
|-
! authorizer
| School authorizer.
|-
! superintendent
| Superintendent of the school.
|-
! trustee
| Area trustee of the school.
|-
! specialist <br /> specialists
| Specialist of the school. If there is more than one, use '''specialists''' instead.
|-
! session
| Session of the school.
|-
! school_number
| Official number (not for phone number).
|-
! school_code
| School code, if applicable.
|-
! {{Flagicon|England}}{{Flagicon|Wales}} urn
| The 6-digit [[Department for Education]] Unique Reference Number (URN) of a school in England and Wales, which can be found by searching for the school at the "[https://get-information-schools.service.gov.uk/ Get information about schools]" page on the [[Gov.uk|GOV.UK]] website ([https://www.gov.uk/government/organisations/ofsted Ofsted] and "[http://mylocalschool.wales.gov.uk/ My Local School]" page on the [[Welsh Government|GOV.WALES]] website can also be used). The field generates a link to the school's information and comparison pages on the GOV.UK website.
|-
! {{Flagicon|New Zealand}} MOE
| For New Zealand schools only, the [[Ministry of Education (New Zealand)|Ministry of Education]] Institution number.
|-
! {{Flagicon|England}} ofsted
| Any non-blank text in this field signifies that the school's teaching is inspected by [[Ofsted]], and causes a link to the Ofsted reports page for the school to be generated from the value of the '''urn''' field.
|-
! {{Flagicon|United States}} ceeb
| For US high schools and post secondary schools only, the [[College Board#CEEB Code|CEEB code]] which can be found at {{URL|http://sat.collegeboard.org/register/sat-code-search}}.
|-
! {{Flagicon|United States}} us_nces_school_id
| For US schools only, the School ID which can be found by searching for the school at the following respective pages on the NCES website:<br />{{Bulleted list |For public (government funded) schools, use the [http://nces.ed.gov/ccd/schoolsearch/ Common Core of Data (CCD)] page and consider using the <nowiki>{{</nowiki>[[Template:NCES School ID|NCES School ID]]<nowiki>}}</nowiki> template. |For private schools, use the [http://nces.ed.gov/surveys/pss/privateschoolsearch/ Private School Universe Survey (PSS)] page and consider using the <nowiki>{{</nowiki>[[Template:NCES Private School ID|NCES Private School ID]]<nowiki>}}</nowiki> template.}}
|-
! president
| "President" - first of various fields to describe the head and/or important officials of the school. Use only the parameters applicable to the school.
|-
! chair
| rowspan=2 | Oversight the school comes under. Use '''chair_label''' to override the default label "Chair".
|-
! chair_label
|-
! chairman
| rowspan=2 | Oversight the school comes under. Use '''chairman_label''' to override the default label "Chairman".
|-
! chairman_label
|-
! chairperson
| rowspan=2 | Oversight the school comes under. Use '''chairperson_label''' to override the default label "Chairperson".
|-
! chairperson_label
|-
! dean
| rowspan="4" | More fields to describe officials of the school. Use only the parameters applicable to the school.
|-
! administrator
|-
! rector
|-
! director
|-
! principal
| rowspan="10" | Principal(s) of the school. Use '''_label''' parameters to override the default label "Principal". (Per talk page consensus, do not use any of these fields to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice")
|-
! principal_label
|-
! principal1
|-
! principal_label1
|-
! principal2
|-
! principal_label2
|-
! principal3
|-
! principal_label3
|-
! principal4
|-
! principal_label4
|-
! campus_director
| rowspan="7" | More fields to describe officials of the school. Use only the parameters applicable to the school.
|-
! headmistress
|-
! headmaster
|-
! head_of_school
|-
! head_teacher <br /> headteacher
|-
! executive_headteacher
|-
! acting_headteacher
|-
! head
| rowspan=2 | The name of the school head. For use when the available parameters below aren't applicable to the school. Use '''head_label''' to override the default label "Head teacher". (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice")
|-
! head_label
|-
! head2
| rowspan=2 | The name of the school head. For use when the available parameters below aren't applicable to the school. Won't display unless '''head_name2''' is also specified. (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice")
|-
! head_name2
|-
! r_head
| rowspan=2 | The name of the religious head. Use '''r_head_label''' to override the default label "Religious head".
|-
! r_head_label
|-
! officer_in_charge
| rowspan="2" | More fields to describe officials of the school. Use only the parameters applicable to the school.
|-
! chaplain
|-
! staff
| Number of staff.
|-
! faculty
| Number of faculty.
|-
! teaching_staff
| Number of teaching staff, other alternative terms are '''employees''' and '''key_people'''.
|-
! employees
| Number of employees.
|-
! key_people
| Key people. (Per talk page consensus, do not use this field to add "Athletic Director" or titles starting with "Assistant", "Deputy, or "Vice")
|-
! grades
| rowspan=2 | Grade levels. Use '''grades_label''' to override the default label "Grades". Can also use '''years''' and '''years_taught'''.
|-
! grades_label
|-
! years
| Years offered.
|-
! years_taught
| Years taught.
|-
! nursery_years_taught
| Nursery years taught.
|-
! primary_years_taught
| Primary years taught.
|-
! secondary_years_taught
| Secondary years taught.
|-
! gender
| rowspan=2 | Gender of the students at the school. Use '''gender_label''' to override the default label "Gender".
|-
! gender_label
|-
! age_range
| Age range of students. As an alternative, use '''lower_age''' with or without '''upper_age'''.
|-
! lower_age
| The lowest age at which a pupil can enter the school. Displayed with or without '''upper_age'''.
|-
! upper_age
| The age at which students normally leave. Leave this undefined if there is no upper age limit, and the age field will be displayed as "{{{lower_age}}}+".
|-
! enrollment <br /> enrolment <br /> students <br /> pupils <br /> roll
| Number of the school's students. Use the appropriate term.
|-
! enrollment_as_of <br /> enrolment_as_of <br /> students_as_of <br /> pupils_as_of
| The date, year or academic year the enrollment/enrolment figure refers to.
|-
! capacity
| The schools capacity, in terms of the number of pupils.
|-
! sixth_form_students
| Number of [[Sixth form|sixth-form]] students.
|-
! grade_preK
| Pre-kindergarten enrollment.
|-
! gradeK
| Kindergarten enrollment.
|-
! grade1<br/>...<br/>grade13
| Enrollment for each grade.
|-
! other
| Other grade enrollment. Use this alone to get an entry simply labeled "Other" for enrollment figures of other grades.
|-
! other_grade_label <br /> other_grade_label_1 <br /> other_grade_label_2
| rowspan=2 | Other grade label. Use with '''other_grade_enrollment''' to get a custom labeled entry for enrollment figures of other grades.
|-
! other_grade_enrollment <br /> other_grade_enrollment_1 <br /> other_grade_enrollment_2
|-
! international_students
| International students.
|-
! classes
| Number of classes in the school.
|-
! average_class_size
| The average number of students in a classroom at the school.
|-
! ratio
| The student:teacher ratio at the school.
|-
! system
| The education system the school follows.
|-
! classes_offered
| Classes offered at the school.
|-
! language
| Language the school teaches in.
|-
! schedule_type
| Schedule type.
|-
! schedule
| Schedule.
|-
! hours_in_day
| Hours in school day.
|-
! classrooms
| Number of classrooms in the school.
|-
! campus
| rowspan="2" | The name or names of the school campus, may also use '''campuses'''.
|-
! campuses
|-
! campus_size
| The size of the school campus (see [[WP:OVERLINK]] for guidance of overlinking measurements).
|-
! area
| Area of school building(s).
|-
! campus_type
| Urban, suburban, etc.
|-
! houses
| The names of any [[House system|school houses]] the school might have. If the school has too many houses to fit into the infobox, give the number of houses with a [[Help:Link#Section_linking_.28anchors.29|link]] to the relevant section within the article (e.g. [[Uppingham School]]).
|-
! student_union
| rowspan=2 | Name of student union. Use '''student_union_label''' to override the default label "Student Union/Association".
|-
! student_union_label
|-
! colors <br /> colours
| The [[School colors|school colors/colours]] (use appropriate spelling; if using one parameter, delete other parameter, if present). There is no need to wikilink the colors. Use of <nowiki>{{</nowiki>[[Template:Color box|Color box]]<nowiki>}}</nowiki> will provide adequate illustration to the reader (e.g. [[Amador Valley High School]]).
|-
! slogan
| The school's slogan.
|-
! song
| Name of the [[School song|school's song]].
|-
! fight_song
| Name of the school's [[fight song]].
|-
! athletics
| What type of athletics are held at the school; or Yes or No.
|-
! athletics_conference
| Name of athletics conference.
|-
! sports
| Main sport(s) at the school; or Yes or No.
|-
! mascot
| Name of the school's mascot.
|-
! nickname
| The school's [[athletic nickname]].
|-
! teams
| rowspan=2 | Teams. Use '''teams_label''' to override the default label "Teams".
|-
! teams_label
|-
! team_name
| "Team name" - names of any athletic teams.
|-
! rival <br /> rivals
| Rival of the school. If there is more than one, use '''rivals''' instead.
|-
! accreditation <br /> accreditations
| Accreditation of the school. If there is more than one, use '''accreditations''' instead.
|-
! {{Flagicon|United States}} USNWR_ranking
| For US schools only, the [[U.S. News & World Report]] (USNWR) ranking in league tables.
|-
! national_ranking
| The school's national ranking.
|-
! test_average
| rowspan=2 | The school's average test score. Use '''test_name''' to override the default label "Test average".
|-
! test_name
|-
! bar_pass_rate
| If a law school, the most recent bar pass rate in percent.
|-
! {{Flagicon|New Zealand}} decile
| For New Zealand schools only, the [[socioeconomic decile]] of the school.
|-
! publication
| Name of the school publication.
|-
! newspaper
| Name of the school newspaper (template automatically italicizes it).
|-
! yearbook
| Name of the school yearbook (template automatically italicizes it).
|-
! products
| Any products the school produces.
|-
! endowment
| Endowment.
|-
! budget
| School budget.
|-
! fees
| rowspan=3 | School fees, may also use '''tuition''' and '''annual_tuition'''.
|-
! tuition
|-
! annual_tuition
|-
! revenue
| School revenue.
|-
! communities
| Communities the school serves.
|-
! feeder_schools
| Name(s) of schools which feed this school.
|-
! feeder_to
| Name(s) of schools which are fed by this school.
|-
! graduates
| rowspan=2 | Number of graduates, use with '''graduates_year''' to display the year.
|-
! graduates_year
|-
! affiliation <br /> affiliations
| Affiliation of the school. If there is more than one, use '''affiliations''' instead.
|-
! alumni
| Notable alumni of the school (wikilink all names).
|-
! alumni_name
| Name of the school's alumni.
|-
! nobel_laureates
| Number of or list of notable [[List of Nobel laureates|Nobel laureates]] from the school (wikilink all names).
|-
! information
| Information (do not enter phone numbers or email addresses).
|-
! free_label
| rowspan="12" | Additional free text fields. '''_label''' parameters must be defined (and non-blank) in order for the corresponding text to be shown.
|-
! free_text
|-
! free_label1
|-
! free_text1
|-
! free_label2
|-
! free_text2
|-
! free_label3
|-
! free_text3
|-
! free_label4
|-
! free_text4
|-
! free_label5
|-
! free_text5
|-
! website
| URL of the school's website. Use {{Tl|URL}}: '''<nowiki>{{URL|school.url}}</nowiki>'''. Note that if the URL contains an equals sign, then it must be written as '''<nowiki>{{URL|1=school.url}}</nowiki>'''.
|-
! footnotes
| Any footnotes.
|-
! picture
| rowspan=4 | Picture(s) of the school, displays at bottom. Use file name with no wikimarkup, e.g. ''MySchool.png'', and caption text which is displayed below the picture; see [[WP:CAPTION]].
|-
! picture_caption
|-
! picture2
|-
! picture_caption2
|-
! module
| See [[#Embedding]].
|-
! lastupdate
| Date of last update (use <nowiki>{{subst:Date}}</nowiki> or <nowiki>{{subst:Date|2=mdy}}</nowiki> for the current date).
|}
=== Map and coordinates ===
The mapframe map uses the values in the {{Para|coordinates}} parameter if specified, or else from Wikidata if available.
{{Infobox mapframe/doc/parameters|mapframe=yes|mapframe-zoom=13|mapframe-marker=school|mapframe-wikidata=yes}}
==== Map for multiple campuses ====
The mapframe map can be overridden using the {{Para|mapframe-custom}} parameter with the {{Tl|Maplink}} template for schools with multiple campuses. Simply add the following parameters below the {{Para|coordinates}} parameter:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| mapframe-custom = {{Maplink |frame=yes |plain=yes |frame-align=center |frame-width=270 |zoom=13
|type=point |coord={{Coord|LAT|LON}} |marker=school |title= |description=
|type2=point |coord2={{Coord|LAT|LON}} |marker2=school |title2= |description2=}}
</syntaxhighlight>
The above can be used for schools with two campuses (the zoom may have to be adjusted depending on how far apart the campuses are, as to ensure the markers can be seen). More campuses can be shown by adding the same parameter set with a sequential number to the end of the parameter name. For example, the third would start with {{Para|type3|point}}, and so on.
=== Deprecated parameters ===
* There are no deprecated parameters at this time.
== Examples ==
=== United Kingdom school example ===
{{Infobox school
| name = The Judd School
| logo = Andrew Judde Monument coat of arms.png
| logo_alt = The Judd School coat of arms
| motto = {{Lang-la|Deus Dat Incrementum}}
| motto_translation = God Gives Growth / God Gives Gifts
| address = Brook Street
| town = [[Tonbridge]]
| county = [[Kent]]
| postcode = TN9 2PN
| country = England
| coordinates = {{Coord|51.188115|0.264445|region:GB-KEN_dim:100|format=dms|display=inline<!--,title-->}}
| other_name = Judd
| type = [[Voluntary aided school|Voluntary aided]] [[grammar school]]
| established = {{Start date and age|1888}}
| founder = [[Worshipful Company of Skinners|The Skinners' Company]]
| local_authority = [[Kent County Council]]
| urn = 118843
| ofsted = Yes
| chairman = Charles Doyle<ref>{{cite web |title=Governors |url=https://www.judd.online/page/?title=Governors&pid=47 |website=The Judd School |accessdate=9 July 2020}}</ref>
| headteacher = Jonathan Wood<ref>{{cite web |title=About Us |url=http://www.judd.online/about-us |website=The Judd School |accessdate=8 November 2018}}</ref>
| gender = {{Unbulleted list|Boys (11 to 16)|Mixed (16 to 18)}}
| age_range = 11–18
| enrolment = 1,152 (2019)<ref name="GOV.UK">{{cite web |title=The Judd School |url=https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/118843 |website=Get information about schools |publisher=UK Government |accessdate=12 June 2019}}</ref>
| capacity = 1,095<ref name="GOV.UK" />
| houses = {{Hlist|Morgan|Starling|Rendall|Byrant|Taylor|Evans}}
| colours = Navy and maroon {{Color box|Navy}}{{Color box|Maroon}}
| alumni = Old Juddians
| website = {{URL|judd.online}}
| footnotes = Example of footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox school
| name = The Judd School
| logo = Andrew Judde Monument coat of arms.png
| logo_alt = The Judd School coat of arms
| motto = {{Lang-la|Deus Dat Incrementum}}
| motto_translation = God Gives Growth / God Gives Gifts
| address = Brook Street
| town = [[Tonbridge]]
| county = [[Kent]]
| postcode = TN9 2PN
| country = England
| coordinates = {{Coord|51.188115|0.264445|region:GB-KEN_dim:100|format=dms|display=inline,title}}
| other_name = Judd
| type = [[Voluntary aided school|Voluntary aided]] [[grammar school]]
| established = {{Start date and age|1888}}
| founder = [[Worshipful Company of Skinners|The Skinners' Company]]
| local_authority = [[Kent County Council]]
| urn = 118843
| ofsted = Yes
| chairman = Charles Doyle<ref>{{cite web |title=Governors |url=https://www.judd.online/page/?title=Governors&pid=47 |website=The Judd School |accessdate=9 July 2020}}</ref>
| headteacher = Jonathan Wood<ref>{{cite web |title=About Us |url=http://www.judd.online/about-us |website=The Judd School |accessdate=8 November 2018}}</ref>
| gender = {{Unbulleted list|Boys (11 to 16)|Mixed (16 to 18)}}
| age_range = 11–18
| enrolment = 1,152 (2019)<ref name="GOV.UK">{{cite web |title=The Judd School |url=https://get-information-schools.service.gov.uk/Establishments/Establishment/Details/118843 |website=Get information about schools |publisher=UK Government |accessdate=12 June 2019}}</ref>
| capacity = 1,095<ref name="GOV.UK" />
| houses = {{Hlist|Morgan|Starling|Rendall|Byrant|Taylor|Evans}}
| colours = Navy and maroon {{Color box|Navy}}{{Color box|Maroon}}
| alumni = Old Juddians
| website = {{URL|judd.online}}
| footnotes = Example of footnotes
}}
</syntaxhighlight>
'''References'''
{{Reflist}}
{{Clear}}
=== United States school example ===
{{Infobox school
| name = Amador Valley High School
| image = Amador Valley and Pleasanton Ridge.jpg
| alt = Amador Valley and Pleasanton Ridge
| motto = School of Champions
| address = 1155 Santa Rita Road
| city = [[Pleasanton, California|Pleasanton]]
| state = California
| zipcode = 94566
| country = United States
| coordinates = {{Coord|37.6681740|-121.8743425|format=dms|region:US-CA|display=inline<!--,title-->}}
| other_names = {{Hlist|Amador Valley|Amador|AVHS}}
| former_name = Amador Valley Joint Union High School
| type = [[State school|Public]] [[Secondary school|high school]]
| established = {{Start date|1922|03|14}}
| district = [[Pleasanton Unified School District]]
| us_nces_school_id = {{NCES School ID|060002009282|school_name=Amador Valley High School|access_date=8 November 2018|ref_name=NCES}}
| principal = Michael Williams
| teaching_staff = 105.75 {{FTE}}<ref name="NCES" />
| grades = 9–12
| enrollment = 2,628 (2015–2016)<ref name="NCES" />
| ratio = 24.85<ref name="NCES" />
| campus_size = {{Convert|39.27|acre|ha}}
| campus_type = Suburban
| colors = Purple and gold {{Color box|Purple}}{{Color box|Gold}}
| mascot = The [[Don (honorific)|Don]]
| rival = [[Foothill High School (Pleasanton, California)|Foothill High School]]<ref>{{cite news |last1=Bonagura |first1=Kyle |title=Foothill-Amador Valley rivalry runs deeper than just football |url=https://www.eastbaytimes.com/2009/11/12/foothill-amador-valley-rivalry-runs-deeper-than-just-football/ |accessdate=September 21, 2020 |work=[[East Bay Times]] |date=August 15, 2016 |orig-year=2009}}</ref>
| newspaper = The Amadon
| yearbook = The Book of Names and Faces
| website = {{URL|amador.pleasantonusd.net}}
| footnotes = Example of footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox school
| name = Amador Valley High School
| image = Amador Valley and Pleasanton Ridge.jpg
| alt = Amador Valley and Pleasanton Ridge
| motto = School of Champions
| address = 1155 Santa Rita Road
| city = [[Pleasanton, California|Pleasanton]]
| state = California
| zipcode = 94566
| country = United States
| coordinates = {{Coord|37.6681740|-121.8743425|format=dms|region:US-CA|display=inline,title}}
| other_names = {{Hlist|Amador Valley|Amador|AVHS}}
| former_name = Amador Valley Joint Union High School
| type = [[State school|Public]] [[Secondary school|high school]]
| established = {{Start date|1922|03|14}}
| district = [[Pleasanton Unified School District]]
| us_nces_school_id = {{NCES School ID|060002009282|school_name=Amador Valley High School|access_date=8 November 2018|ref_name=NCES}}
| principal = Michael Williams
| teaching_staff = 105.75 {{FTE}}<ref name="NCES" />
| grades = 9–12
| enrollment = 2,628 (2015–2016)<ref name="NCES" />
| ratio = 24.85<ref name="NCES" />
| campus_size = {{Convert|39.27|acre|ha}}
| campus_type = Suburban
| colors = Purple and gold {{Color box|Purple}}{{Color box|Gold}}
| mascot = The [[Don (honorific)|Don]]
| rival = [[Foothill High School (Pleasanton, California)|Foothill High School]]<ref>{{cite news |last1=Bonagura |first1=Kyle |title=Foothill-Amador Valley rivalry runs deeper than just football |url=https://www.eastbaytimes.com/2009/11/12/foothill-amador-valley-rivalry-runs-deeper-than-just-football/ |accessdate=September 21, 2020 |work=[[East Bay Times]] |date=August 15, 2016 |orig-year=2009}}</ref>
| newspaper = The Amadon
| yearbook = The Book of Names and Faces
| website = {{URL|amador.pleasantonusd.net}}
| footnotes = Example of footnotes
}}
</syntaxhighlight>
'''References'''
{{Reflist}}
{{Clear}}
=== Australia school example ===
{{Infobox school
| name = North Sydney Boys High School
| image = NSBHS front.jpg
| alt = North Sydney Boys High School front entrance
| caption = North Sydney Boys High School front entrance
| motto = {{Lang-la|Vincit qui se vincit}}
| motto_translation = He conquers who conquers himself
| city = [[Crows Nest, New South Wales|Crows Nest]]
| state = New South Wales
| country = Australia
| coordinates = {{Coord|33|49|46|S|151|12|27|E|region:AU-NSW|display=inline<!--,title-->}}
| type = [[State school|Public]] [[secondary school]]
| established = {{Start date|1912}}<ref name="NSBHS">{{cite web |title=School History |url=https://northsydbo-h.schools.nsw.gov.au/about-our-school/history.html |publisher=North Sydney Boys High School |accessdate=21 September 2020}}</ref>
| principal = Robyn Hughes
| teaching_staff = ~54
| grades = 7–12
| enrolment = ~915 (2019)<ref name=SchoolLocator>{{cite web |url=https://www.myschool.edu.au/school/41320 |title=North Sydney Boys High School |accessdate=21 September 2020 |work=My School |publisher=Australian Curriculum, Assessment and Reporting Authority}}</ref>
| campus_type = Suburban
| alumni = Old Falconians
| colours = Bismark, coral and gold {{Color box|#800000}}{{Color box|#FF7F50}}{{Color box|#FFD700}}
| website = {{URL|northsydbo-h.schools.nsw.gov.au}}
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox school
| name = North Sydney Boys High School
| image = NSBHS front.jpg
| alt = North Sydney Boys High School front entrance
| caption = North Sydney Boys High School front entrance
| motto = {{Lang-la|Vincit qui se vincit}}
| motto_translation = He conquers who conquers himself
| city = [[Crows Nest, New South Wales|Crows Nest]]
| state = New South Wales
| country = Australia
| coordinates = {{Coord|33|49|46|S|151|12|27|E|region:AU-NSW|display=inline,title}}
| type = [[State school|Public]] [[secondary school]]
| established = {{Start date|1912}}<ref name="NSBHS">{{cite web |title=School History |url=https://northsydbo-h.schools.nsw.gov.au/about-our-school/history.html |publisher=North Sydney Boys High School |accessdate=21 September 2020}}</ref>
| principal = Robyn Hughes
| teaching_staff = ~54
| grades = 7–12
| enrolment = ~915 (2019)<ref name=SchoolLocator>{{cite web |url=https://www.myschool.edu.au/school/41320 |title=North Sydney Boys High School |accessdate=21 September 2020 |work=My School |publisher=Australian Curriculum, Assessment and Reporting Authority}}</ref>
| campus_type = Suburban
| alumni = Old Falconians
| colours = Bismark, coral and gold {{Color box|#800000}}{{Color box|#FF7F50}}{{Color box|#FFD700}}
| website = {{URL|northsydbo-h.schools.nsw.gov.au}}
}}
</syntaxhighlight>
'''References'''
{{Reflist}}
{{Clear}}
== TemplateData ==
{{collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"params": {
"box_width": {
"label": "Infobox width",
"description": "Desired width of the infobox, can be expressed as percentage, pixels or em",
"type": "string",
"example": "280px",
"default": "250px"
},
"box_style": {
"label": "Infobox CSS",
"description": "CSS styling for the infobox",
"type": "string"
},
"name": {
"label": "Name",
"type": "string",
"description": "Name of the school",
"default": "{{PAGENAMEBASE}}"
},
"native_name": {
"label": "Native name",
"type": "string",
"description": "Name of the school in its native language"
},
"latin_name": {
"label": "Latin name",
"type": "string",
"description": "Latin name of the school, if any"
},
"logo": {
"label": "Logo filename",
"type": "wiki-file-name",
"description": "Filename of school logo image on Wikipedia or Wikimedia Commons"
},
"logo_alt": {
"label": "Logo accessibility text",
"type": "string",
"description": "Description of the elements in the logo suitable for a screen reader or other aid to the visually impaired"
},
"logo_size": {
"label": "Logo width",
"type": "number",
"description": "Desired display width of logo image in pixels, without 'px' suffix",
"example": "220"
},
"seal_image": {
"label": "Seal Image",
"type": "wiki-page-name",
"description": "Seal of the School"
},
"seal_alt": {
"label": "Seal alt",
"type": "string",
"description": "Alternative text for seal"
},
"seal_size": {
"label": "Seal size",
"type": "string"
},
"image": {
"label": "Image",
"type": "string",
"description": "Image file name with no wikimarkup",
"aliases": [
"image_name",
"imagewikilink"
]
},
"image_size": {
"label": "Image Size",
"type": "string",
"description": "Image width in pixels",
"aliases": [
"image size",
"imagesize",
"size"
]
},
"alt": {
"label": "Alternative",
"type": "string",
"description": "Alternative text for image"
},
"caption": {
"label": "Caption",
"type": "string",
"description": "Caption for image"
},
"motto": {
"label": "Official motto",
"type": "string",
"description": "Short phrase or sentence used by the school for branding self-identification",
"example": "Semper fidelis."
},
"motto_translation": {
"label": "Motto translation",
"type": "string",
"description": "English translation of the school motto, if needed"
},
"location": {
"label": "Location",
"type": "string",
"description": "Location, could include address"
},
"address": {
"label": "Street address",
"type": "string",
"description": "Street address in which the school is found",
"aliases": [
"streetaddress",
"street"
]
},
"region": {
"label": "Region",
"type": "string",
"description": "Region in which the school is found"
},
"city": {
"label": "City",
"type": "string",
"description": "City, town or village in which the school is found",
"aliases": [
"town",
"city/town"
]
},
"county": {
"label": "County",
"type": "string",
"description": "County or Local Government Area in which the school is found"
},
"state": {
"label": "State",
"type": "string",
"description": "State of in which the school is found"
},
"province": {
"label": "Province",
"type": "string",
"description": "Province in which the school is found"
},
"postcode": {
"label": "Post Code",
"type": "string",
"description": "The school's postcode",
"aliases": [
"postalcode"
]
},
"zipcode": {
"label": "Zip Code",
"type": "string",
"description": "The school's zip code; alternative term for postcode"
},
"pushpin_map": {
"label": "Pushpin map",
"type": "string",
"deprecated": true
},
"pushpin_label": {
"label": "Pushpin label",
"type": "string",
"deprecated": true
},
"pushpin_label_position": {
"label": "Pushpin label position",
"type": "string",
"deprecated": true
},
"pushpin_map_alt": {
"label": "Pushpin map alt",
"type": "string",
"deprecated": true
},
"pushpin_mapsize": {
"label": "Pushpin map size",
"type": "number",
"description": "Pushpin map width in pixels",
"default": "250",
"deprecated": true
},
"pushpin_image": {
"label": "Pushpin image",
"type": "wiki-file-name",
"deprecated": true
},
"pushpin_map_caption": {
"label": "Pushpin map caption",
"type": "string",
"deprecated": true
},
"country": {
"label": "Country",
"type": "string",
"description": "Country of the school"
},
"country1": {
"label": "Country 1",
"type": "string",
"description": "Country of the school"
},
"coordinates": {
"label": "Coordinates",
"type": "string",
"description": "Geographic coordinates"
},
"coordinates_footnotes": {
"label": "Coordinates footnotes",
"type": "string"
},
"other_name": {
"label": "Other name",
"type": "string",
"description": "Alternate name by which the school is known"
},
"other_names": {
"label": "Other names",
"type": "string",
"description": "Alternate names by which the school is known"
},
"former_name": {
"label": "Former name",
"type": "string",
"description": "Previous name of the school"
},
"former_names": {
"label": "Former names",
"type": "string",
"description": "Previous names of the school"
},
"schooltype": {
"label": "School Type",
"type": "string",
"description": "Type of school"
},
"fundingtype": {
"label": "Funding Type",
"type": "string",
"description": "Funding type of the school"
},
"type": {
"label": "Type",
"type": "string",
"description": "Type of the school"
},
"religious_affiliation": {
"label": "Religious affiliation",
"type": "string",
"description": "School's religious affiliation",
"aliases": [
"religion"
]
},
"denomination": {
"label": "Denomination",
"type": "string",
"description": "If a faith school, the denomination of the school"
},
"patron": {
"label": "Patron",
"type": "string",
"description": "Patron saint of the school"
},
"established": {
"label": "Established",
"type": "string",
"description": "Date of institution's establishment; if precise date is not available, add \"c. \" before the year.",
"suggested": true
},
"founded": {
"label": "Founded",
"type": "string",
"description": "Date of founding of the School"
},
"opened": {
"label": "Opened",
"type": "string",
"description": "Date when the first classes with enrolled students began"
},
"founder": {
"label": "Founder",
"type": "string",
"description": "Founder of the school"
},
"status": {
"label": "Status",
"type": "string",
"description": "Status of the school"
},
"closed": {
"label": "Closed",
"type": "string",
"description": "Date of closure of the school"
},
"locale": {
"label": "Locale",
"type": "string",
"description": "Locale of the School"
},
"sister_school": {
"label": "Sister School",
"type": "string",
"description": "The Sister School, if any"
},
"school_board": {
"label": "School Board",
"type": "string",
"description": "Board, the school comes under",
"aliases": [
"schoolboard"
]
},
"district": {
"label": "District",
"type": "string",
"description": "The school district of the school"
},
"us_nces_district_id": {
"label": "NCES District ID (US)",
"type": "string",
"description": "For US schools only, the District ID from the NCES CCD"
},
"authority": {
"label": "Authority",
"type": "string",
"description": "Authority, the school comes under"
},
"educational_authority": {
"label": "Educational authority",
"type": "string",
"aliases": [
"educational authority"
]
},
"category": {
"label": "Category",
"type": "string",
"description": "Category of the School"
},
"category_label": {
"label": "Category label",
"default": "Category"
},
"oversight": {
"label": "Oversight",
"type": "string",
"description": "Oversight, the school comes under"
},
"oversight_label": {
"label": "Oversight Label",
"type": "string",
"description": "Label of the oversight of the School"
},
"authorizer": {
"label": "Authorizer",
"type": "string",
"description": "Name of the Authorizer of the School"
},
"superintendent": {
"label": "Superintendent",
"type": "string",
"description": "Name of Superintendent of the school"
},
"trustee": {
"label": "Trustee",
"type": "string",
"description": "Name of Area trustee of the school"
},
"specialist": {
"label": "Specialist",
"type": "string",
"description": "Name of Specialist of the school"
},
"session": {
"label": "Session",
"type": "string",
"description": "Session of the school"
},
"school_number": {
"label": "School Number",
"type": "number",
"description": "Official number address of school",
"aliases": [
"schoolnumber",
"number"
]
},
"school_code": {
"label": "School Code",
"type": "number",
"description": "School code, if applicable",
"aliases": [
"school code"
]
},
"MOE": {
"label": "MOE (NZ)",
"type": "number",
"description": "Institution number, assigned by the Ministry of Education (New Zealand)"
},
"ofsted": {
"label": "Ofsted",
"type": "string",
"description": "Any value given for this parameter activates the display of a link to the school's latest report on the Ofsted website; leave blank to omit."
},
"ceeb": {
"label": "CEEB (US)",
"type": "number",
"description": "CEEB code, assigned by the College Board (United States)"
},
"us_nces_school_id": {
"label": "NCES School ID (US)",
"type": "string",
"description": "For US schools only, the School ID from the NCES websites"
},
"president": {
"label": "President",
"type": "string"
},
"chair": {
"label": "Chair",
"type": "string"
},
"chair_label": {
"label": "Chair label",
"type": "string",
"default": "Chair"
},
"chairman": {
"label": "Chairman",
"type": "string",
"description": "Name of Chairman of the School"
},
"chairman_label": {
"label": "Chairman label",
"type": "string",
"default": "Chairman"
},
"chairperson": {
"label": "Chairperson",
"type": "string",
"description": "Name of the chairperson of the School"
},
"chairperson_label": {
"label": "Chairperson label",
"type": "string",
"default": "Chairperson"
},
"dean": {
"label": "Dean",
"type": "string",
"description": "Name of the Dean of the School"
},
"administrator": {
"label": "Administrator",
"type": "string",
"description": "Name of the Administrator of the school"
},
"rector": {
"label": "Rector",
"type": "string",
"description": "Name of the Rector of the school"
},
"director": {
"label": "Director",
"type": "string",
"description": "Name of the Director of the school"
},
"principal": {
"label": "Principal",
"type": "string",
"description": "Name of the Principal of the school"
},
"principal_label": {
"label": "Principal label",
"type": "string",
"description": "Label for principal",
"default": "Principal"
},
"principal1": {
"label": "Principal 1",
"type": "string"
},
"principal_label1": {
"label": "Principal label 1",
"type": "string",
"description": "Label for principal 1",
"default": "Principal"
},
"principal2": {
"label": "Principal 2",
"type": "string"
},
"principal_label2": {
"label": "Principal label 2",
"type": "string",
"description": "Label for principal 2",
"default": "Principal"
},
"principal3": {
"label": "Principal 3",
"type": "string"
},
"principal_label3": {
"label": "Principal label 3",
"type": "string",
"description": "Label for principal 3",
"default": "Principal"
},
"principal4": {
"label": "Principal 4",
"type": "string"
},
"principal_label4": {
"label": "Principal label 4",
"type": "string",
"description": "Label for principal 4",
"default": "Principal"
},
"campus_director": {
"label": "Campus Director",
"type": "string",
"description": "Name of the Campus Director",
"aliases": [
"campus director"
]
},
"headmistress": {
"label": "Headmistress",
"type": "string",
"description": "Name of the Headmistress"
},
"headmaster": {
"label": "Headmaster",
"type": "string",
"description": "Name of the Headmaster"
},
"head_of_school": {
"label": "Head of School",
"type": "string",
"description": "Name of the Head of the school",
"aliases": [
"head of school"
]
},
"head_teacher": {
"label": "Head Teacher",
"type": "string",
"description": "Name of the Head Teacher",
"aliases": [
"headteacher"
]
},
"executive_headteacher": {
"label": "Executive Head Teacher",
"type": "string",
"description": "Name of the Executive Head Teacher"
},
"acting_headteacher": {
"label": "Acting Head Teacher",
"type": "string",
"description": "Name of the Acting Head Teacher"
},
"head": {
"label": "Head",
"type": "string",
"description": "Name of the Head"
},
"head_name": {
"label": "Head label",
"type": "string",
"description": "Label for head",
"default": "Head teacher",
"aliases": [
"head_label"
]
},
"head2": {
"label": "Head 2",
"type": "string"
},
"head_name2": {
"label": "Head label 2",
"type": "string",
"description": "Label for head2"
},
"r_head": {
"label": "R head",
"type": "string"
},
"r_head_label": {
"label": "R head label",
"type": "string",
"description": "Label for r_head"
},
"officer_in_charge": {
"label": "Officer in charge",
"type": "string"
},
"chaplain": {
"label": "Chaplain",
"type": "string",
"description": "Name of the Chaplain of the school"
},
"staff": {
"label": "Staff",
"type": "number",
"description": " Number of staff",
"aliases": [
"number_of_staff",
"number of staff"
]
},
"faculty": {
"label": "Faculty",
"type": "number",
"description": " Number of faculty of the school"
},
"teaching_staff": {
"label": "Teaching Staff",
"type": "number",
"description": "Number of the school's teaching staff"
},
"employees": {
"label": "Employees",
"type": "number",
"description": " Number of the school's employees staff",
"aliases": [
"num_employ"
]
},
"key_people": {
"label": "Key People",
"type": "number",
"description": " Number of the school's Key People"
},
"grades": {
"label": "Grades",
"type": "string",
"description": "Grade levels"
},
"grades_label": {
"label": "Grades label",
"type": "string",
"default": "Grades"
},
"years": {
"label": "Years",
"type": "number",
"description": "Years offered"
},
"years_taught": {
"label": "Years taught",
"type": "string",
"aliases": [
"years taught"
]
},
"nursery_years_taught": {
"label": "ECE levels",
"type": "string",
"aliases": [
"nursery years taught"
],
"description": "Early childhood education instruction levels offered",
"example": "24 months through Transitional Kindergarten"
},
"secondary_years_taught": {
"label": "Secondary education levels",
"type": "string",
"aliases": [
"secondary years taught"
],
"description": "Range of secondary education instruction levels offered",
"example": "6th through 9th grades"
},
"gender": {
"label": "Gender",
"type": "string",
"description": "Gender of the students at the school. "
},
"gender_label": {
"label": "Gender label",
"type": "string",
"default": "Gender"
},
"lower_age": {
"label": "Lower age",
"type": "string",
"description": "The youngest age at which a student can be enrolled at the school"
},
"upper_age": {
"label": "Upper age",
"type": "string",
"description": "The oldest age at which a student may be enrolled at the school"
},
"age_range": {
"label": "Age range",
"type": "string",
"description": "Age range of students",
"aliases": [
"age range"
]
},
"enrollment": {
"label": "Enrollment",
"type": "number",
"description": "Number of students in attendance during a specified academic term. Use the appropriate term; enrollment, enrolment, students, pupils or roll",
"aliases": [
"enrolment",
"students",
"pupils",
"school_roll",
"roll"
]
},
"sixth_form_students": {
"label": "Sixth form students",
"type": "string"
},
"grade_preK": {
"label": "Grade pre K",
"type": "string",
"description": "Pre-kindergarten enrollment"
},
"gradeK": {
"label": "Grade K",
"type": "string",
"description": "Kindergarten enrollment"
},
"grade1": {
"label": "Grade 1",
"type": "number",
"description": "Enrollment for this grade"
},
"grade2": {
"label": "Grade 2",
"type": "number",
"description": "Enrollment for this grade"
},
"grade3": {
"label": "Grade 3",
"type": "number",
"description": "Enrollment for this grade"
},
"grade4": {
"label": "Grade 4",
"type": "number",
"description": "Enrollment for this grade"
},
"grade5": {
"label": "Grade 5",
"type": "number",
"description": "Enrollment for this grade"
},
"grade6": {
"label": "Grade 6",
"type": "number",
"description": "Enrollment for this grade"
},
"grade7": {
"label": "Grade 7",
"type": "number",
"description": "Enrollment for this grade"
},
"grade8": {
"label": "Grade 8",
"type": "number",
"description": "Enrollment for this grade"
},
"grade9": {
"label": "Grade 9",
"type": "number",
"description": "Enrollment for this grade"
},
"grade10": {
"label": "Grade 10",
"type": "number",
"description": "Enrollment for this grade"
},
"grade11": {
"label": "Grade 11",
"type": "number",
"description": "Enrollment for this grade"
},
"grade12": {
"label": "Grade 12",
"type": "number",
"description": "Enrollment for this grade"
},
"grade13": {
"label": "Grade 13",
"type": "number",
"description": "Enrollment for this grade"
},
"other": {
"label": "Other",
"type": "number",
"description": "Other grade enrollment"
},
"other_grade_enrollment": {
"label": "Other grade enrollment",
"type": "string",
"aliases": [
"other_grade_enrolment"
]
},
"other_grade_label": {
"label": "Other grade enrollment label",
"type": "string",
"default": "Other"
},
"other_grade_enrollment_1": {
"label": "Other grade enrollment 1",
"type": "string",
"aliases": [
"other_grade_enrolment_1"
]
},
"other_grade_label_1": {
"label": "Other grade enrollment 1 label",
"type": "string",
"default": "Other"
},
"other_grade_enrollment_2": {
"label": "Other grade enrollment 2",
"type": "string",
"aliases": [
"other_grade_enrolment_2"
]
},
"other_grade_label_2": {
"label": "Other grade enrollment 2 label",
"type": "string",
"default": "Other"
},
"international_students": {
"label": "International Students",
"type": "number",
"description": "Number of International Students"
},
"classes": {
"label": "Classes",
"type": "number",
"description": " Number of classes in the school"
},
"average_class_size": {
"label": "Average class size",
"type": "number",
"description": "The average number of students in a classroom at the school",
"aliases": [
"avg_class_size",
"class"
]
},
"ratio": {
"label": "Ratio",
"type": "number",
"description": "The student: teacher ratio at the school"
},
"system": {
"label": "System",
"type": "string",
"description": " The education system the school follows"
},
"classes_offered": {
"label": "Classes offered",
"type": "number",
"description": "Classes offered at the school",
"aliases": [
"classes offered"
]
},
"schedule_type": {
"label": "Scheduled type",
"type": "string",
"description": "Type of Schedule of the School",
"aliases": [
"schedtyp"
]
},
"schedule": {
"label": "Schedule",
"type": "string",
"description": "Schedule of the School"
},
"hours_in_day": {
"label": "Hours in Day",
"type": "number",
"description": "Hours in the school day"
},
"classrooms": {
"label": "Classrooms",
"type": "number",
"description": "Number of classrooms in the school"
},
"campuses": {
"label": "Campuses",
"type": "string",
"description": "The names of the school campuses"
},
"campus": {
"label": "Campus",
"type": "string",
"description": "The name of the school campus"
},
"campus_size": {
"label": "Campus size",
"type": "number",
"description": "The size of the school campus",
"aliases": [
"campus size"
]
},
"area": {
"label": "Area",
"type": "string",
"description": "Total area of the school building(s)"
},
"campus_type": {
"label": "Campus type",
"type": "string",
"description": "Type of campus e.g. urban, suburb, etc",
"aliases": [
"campus type"
]
},
"houses": {
"label": "Houses",
"type": "string",
"description": "The names of any school houses the school might have"
},
"student_union": {
"label": "Student union",
"type": "string"
},
"student_union_label": {
"label": "Label for student union",
"type": "string",
"default": "Student Union/Association"
},
"colors": {
"label": "Colors",
"type": "string",
"description": "The school colors/colours (use appropriate spelling; if using one parameter, delete other parameter, if present)",
"aliases": [
"colours",
"school_colors",
"schoolcolors",
"school_colours",
"schoolcolours"
]
},
"slogan": {
"label": "Slogan",
"type": "string",
"description": "The school's slogan"
},
"song": {
"label": "Song",
"type": "string",
"description": "Name of the school's song"
},
"athletics": {
"label": "Athletics",
"type": "string",
"description": "What type of athletics are held at the school; or Yes or No"
},
"athletics_conference": {
"label": "Athletic conference",
"type": "string",
"description": "Athletic conference",
"aliases": [
"athletics conference",
"athletic_conference",
"athletic conference",
"conference"
]
},
"sports": {
"label": "Sports",
"type": "string",
"description": "Main sport(s) at the school; or Yes or No"
},
"mascot": {
"label": "Mascot",
"type": "string",
"description": "School mascot"
},
"nickname": {
"label": "Nickname",
"type": "string",
"description": "The school's athletic nickname"
},
"teams": {
"label": "Teams",
"type": "string"
},
"teams_label": {
"label": "Label for teams",
"type": "string",
"default": "Teams"
},
"team_name": {
"label": "Team name",
"type": "string",
"description": "Names of any teams",
"aliases": [
"team name",
"teamname"
]
},
"rival": {
"label": "Rival",
"type": "string",
"description": "Any rival schools",
"aliases": [
"rivals"
]
},
"accreditation": {
"label": "Accreditation",
"type": "string",
"description": "Accreditation of School education",
"aliases": [
"accreditations"
]
},
"USNWR_ranking": {
"label": "Ranking",
"type": "number",
"description": "The school's USNWR ranking in league tables",
"aliases": [
"ranking"
]
},
"national_ranking": {
"label": "National ranking",
"type": "number",
"description": "The school's national ranking"
},
"test_name": {
"label": "Test name",
"type": "string",
"description": "Name of the test in test average",
"aliases": [
"testname"
]
},
"test_average": {
"label": "Test average",
"type": "number",
"description": "Average test score",
"aliases": [
"testaverage"
]
},
"SAT": {
"label": "SAT",
"type": "number",
"description": "Most recent average SAT scores",
"deprecated": true
},
"SAT_year": {
"label": "SAT Year",
"type": "number",
"description": "Year of aforementioned SAT scores",
"deprecated": true
},
"ACT": {
"label": "ACT",
"type": "number",
"description": "Most recent average ACT scores",
"deprecated": true
},
"ACT_year": {
"label": "ACT Year",
"type": "number",
"description": "Year of aforementioned ACT scores",
"deprecated": true
},
"bar_pass_rate": {
"label": "Bar pass rate",
"type": "string",
"description": "Bar pass rate of the School",
"aliases": [
"bar pass rate"
]
},
"decile": {
"label": "Decile",
"type": "string",
"description": "The Socio-economic decile of the school, applicable to New Zealand schools"
},
"publication": {
"label": "Publication",
"type": "string",
"description": "Any publications that the school produces"
},
"newspaper": {
"label": "Newspaper",
"type": "string",
"description": "Name of the school newspaper"
},
"yearbook": {
"label": "Year book",
"type": "string",
"description": "Name of the school yearbook"
},
"products": {
"label": "Products",
"type": "string"
},
"endowment": {
"label": "Endowment",
"type": "string"
},
"budget": {
"label": "Budget",
"type": "number",
"description": "School budget"
},
"fees": {
"label": "Fees",
"type": "number",
"description": "Fees of the School"
},
"annual_tuition": {
"label": "Annual tuition",
"aliases": [
"annual tuition"
],
"type": "string"
},
"tuition": {
"label": "Tuition",
"type": "string"
},
"revenue": {
"label": "Revenue",
"type": "number",
"description": "Revenue of the School"
},
"communities": {
"label": "Communities",
"type": "string",
"description": "Communities served"
},
"feeder_schools": {
"label": "Feeders",
"type": "string",
"description": "Feeder schools",
"aliases": [
"main feeder schools",
"feeders"
]
},
"feeder_to": {
"label": "Feeder to",
"type": "string",
"description": "Feeder school for",
"aliases": [
"main feeder school for"
]
},
"graduates": {
"label": "Graduates",
"type": "number",
"description": "Number of graduates from the school"
},
"graduates_year": {
"label": "Graduates Year",
"type": "number",
"description": "Year of aforementioned number of graduates"
},
"affiliation": {
"label": "Affiliations",
"type": "string",
"description": "Any of the school's affiliations",
"aliases": [
"affiliations"
]
},
"alumni": {
"label": "Alumni",
"type": "string",
"description": "Any notable alumni of the school"
},
"alumni_name": {
"label": "Alumni name",
"type": "string"
},
"nobel_laureates": {
"label": "Nobel laureates",
"type": "string",
"description": "Any notable Nobel laureates from the school"
},
"information": {
"label": "Information",
"type": "string",
"description": "Any other information about the school, do not enter phone numbers or email addresses"
},
"free": {
"label": "Free text",
"type": "string",
"aliases": [
"free_text"
]
},
"free_label": {
"label": "Free label",
"type": "string",
"description": "Label for free text",
"default": "Other"
},
"free_1": {
"label": "Free text 1",
"type": "string",
"description": "Free text",
"aliases": [
"free_text1"
]
},
"free_label1": {
"label": "Free label 1",
"type": "string",
"description": "Label for free text 1",
"aliases": [
"free_label_1"
]
},
"free_2": {
"label": "Free text 2",
"type": "string",
"description": "Free text",
"aliases": [
"free_text2"
]
},
"free_label2": {
"label": "Free label 2",
"type": "string",
"description": "Label for free text 2",
"aliases": [
"free_label_2"
]
},
"free_3": {
"label": "Free text 3",
"type": "string",
"description": "Free text",
"aliases": [
"free_text3"
]
},
"free_label3": {
"label": "Free label 3",
"type": "string",
"description": "Label for free text 3",
"aliases": [
"free_label_3"
]
},
"free_4": {
"label": "Free text 4",
"type": "string",
"description": "Free text",
"aliases": [
"free_text4"
]
},
"free_label4": {
"label": "Free label 4",
"type": "string",
"description": "Label for free text 4",
"aliases": [
"free_label_4"
]
},
"free_5": {
"label": "Free text 5",
"type": "string",
"description": "Free text",
"aliases": [
"free_text5"
]
},
"free_label5": {
"label": "Free label 5",
"type": "string",
"description": "Label for free text 5",
"aliases": [
"free_label_5"
]
},
"website": {
"label": "Website",
"type": "string",
"description": "URL of the school website",
"aliases": [
"homepage",
"url"
]
},
"footnotes": {
"label": "Footnotes",
"type": "string",
"description": "Any footnotes"
},
"picture": {
"label": "Picture",
"type": "wiki-page-name",
"description": "Picture of the school"
},
"picture_caption": {
"label": "Picture caption",
"type": "string",
"description": "Caption for picture"
},
"picture2": {
"label": "Picture 2",
"type": "wiki-page-name",
"description": "Second picture"
},
"picture_caption2": {
"label": "Picture caption 2",
"type": "string",
"description": "Second picture caption"
},
"enrollment_as_of": {
"label": "Enrollment point in time",
"type": "string",
"aliases": [
"enrolment_as_of",
"students_as_of",
"pupils_as_of"
],
"description": "Specific academic term or date range from which the enrollment figure(s) were sourced",
"example": "2015-2016"
},
"module": {
"label": "Module",
"type": "content"
},
"lastupdate": {
"label": "Last update",
"type": "date",
"description": "Date the infobox was last updated"
},
"fight_song": {
"aliases": [
"fightsong"
],
"label": "Fight song",
"description": "Name of official fight song; use 'song' parameter for name of alma mater.",
"type": "string"
},
"trust": {
"label": "Trust",
"type": "string"
},
"local_authority": {
"aliases": [
"LEA"
],
"label": "Local ed. authority",
"description": "Name of local education authority (UK)",
"type": "string"
},
"urn": {
"label": "URN (UK)",
"description": "Unique Reference Number, assigned by the Department for Education (United Kingdom)",
"type": "number"
},
"capacity": {
"label": "Enrollment limit",
"description": "Maximum number of students a school is permitted to enroll at any given time",
"type": "number"
},
"mottoes": {
"label": "Official mottoes",
"description": "If a school has more than one official motto, use this parameter and place the mottoes within the {{Unbulleted indent list}} template",
"type": "wiki-template-name"
},
"founders": {
"label": "Founders",
"description": "If more than one founder, use this parameter and place all founders within {{Hlist}} template",
"type": "wiki-template-name"
},
"specialists": {
"label": "Specialists",
"description": "If school has more than one specialist, use this parameter and place all specialists within the {{Hlist}} template",
"type": "string"
},
"primary_years_taught": {
"aliases": [
"primary years taught"
],
"label": "Primary education levels",
"description": "Range of primary education instruction levels offered",
"example": "1st through 5th grades",
"type": "string"
},
"language": {
"aliases": [
"medium_of_language",
"medium of language",
"medium",
"mediums"
],
"label": "Language",
"description": "Language the school teaches in",
"type": "string"
}
},
"format": "{{_\n | _______________________ = _\n}}",
"paramOrder": [
"box_width",
"box_style",
"name",
"native_name",
"latin_name",
"logo",
"logo_size",
"logo_alt",
"seal_image",
"seal_size",
"seal_alt",
"image",
"image_size",
"alt",
"caption",
"pushpin_map",
"pushpin_label",
"pushpin_label_position",
"pushpin_map_alt",
"pushpin_map_caption",
"pushpin_mapsize",
"pushpin_image",
"motto",
"mottoes",
"motto_translation",
"location",
"address",
"region",
"city",
"county",
"state",
"province",
"postcode",
"zipcode",
"country",
"country1",
"coordinates",
"coordinates_footnotes",
"other_name",
"other_names",
"former_name",
"former_names",
"schooltype",
"fundingtype",
"type",
"religious_affiliation",
"denomination",
"patron",
"established",
"founded",
"opened",
"founder",
"founders",
"status",
"closed",
"locale",
"sister_school",
"school_board",
"district",
"us_nces_district_id",
"local_authority",
"authority",
"educational_authority",
"category_label",
"category",
"oversight_label",
"oversight",
"trust",
"authorizer",
"superintendent",
"trustee",
"specialist",
"specialists",
"session",
"school_number",
"school_code",
"urn",
"MOE",
"ofsted",
"ceeb",
"us_nces_school_id",
"president",
"chair_label",
"chair",
"chairman_label",
"chairman",
"chairperson_label",
"chairperson",
"dean",
"administrator",
"rector",
"director",
"principal_label",
"principal",
"principal_label1",
"principal1",
"principal_label2",
"principal2",
"principal_label3",
"principal3",
"principal_label4",
"principal4",
"campus_director",
"headmistress",
"headmaster",
"head_of_school",
"head_teacher",
"executive_headteacher",
"acting_headteacher",
"head_name",
"head",
"head_name2",
"head2",
"r_head_label",
"r_head",
"officer_in_charge",
"chaplain",
"staff",
"faculty",
"teaching_staff",
"employees",
"key_people",
"grades_label",
"grades",
"years",
"years_taught",
"nursery_years_taught",
"primary_years_taught",
"secondary_years_taught",
"gender_label",
"gender",
"age_range",
"lower_age",
"upper_age",
"enrollment",
"enrollment_as_of",
"capacity",
"sixth_form_students",
"grade_preK",
"gradeK",
"grade1",
"grade2",
"grade3",
"grade4",
"grade5",
"grade6",
"grade7",
"grade8",
"grade9",
"grade10",
"grade11",
"grade12",
"grade13",
"other",
"other_grade_label",
"other_grade_enrollment",
"other_grade_label_1",
"other_grade_enrollment_1",
"other_grade_label_2",
"other_grade_enrollment_2",
"international_students",
"classes",
"average_class_size",
"ratio",
"system",
"classes_offered",
"language",
"schedule_type",
"schedule",
"hours_in_day",
"classrooms",
"campuses",
"campus",
"campus_size",
"area",
"campus_type",
"houses",
"student_union_label",
"student_union",
"colors",
"slogan",
"song",
"fight_song",
"athletics",
"athletics_conference",
"sports",
"mascot",
"nickname",
"teams",
"teams_label",
"team_name",
"rival",
"accreditation",
"USNWR_ranking",
"national_ranking",
"test_name",
"test_average",
"SAT",
"SAT_year",
"ACT",
"ACT_year",
"bar_pass_rate",
"decile",
"publication",
"newspaper",
"yearbook",
"products",
"endowment",
"budget",
"fees",
"annual_tuition",
"tuition",
"revenue",
"communities",
"feeder_schools",
"feeder_to",
"graduates",
"graduates_year",
"affiliation",
"alumni",
"alumni_name",
"nobel_laureates",
"information",
"free",
"free_label",
"free_1",
"free_label1",
"free_2",
"free_label2",
"free_3",
"free_label3",
"free_4",
"free_label4",
"free_5",
"free_label5",
"website",
"footnotes",
"picture",
"picture_caption",
"picture2",
"picture_caption2",
"module",
"lastupdate"
],
"description": "Infobox for details of school organisations"
}
</templatedata>
{{collapse bottom}}
== Microformat ==
{{UF-hcard-geo}}
== Tracking categories ==
* {{clc|Pages using infobox school with a linked country}}
* {{clc|Pages using infobox school with an unknown country}}
* {{clc|Pages using infobox school with a linked country1}}
* {{clc|Pages using infobox school with an unknown country1}}
* {{clc|Pages using infobox school with a mascot image}}
* {{clc|Pages using infobox school with the module parameter}}
* {{clc|Pages using infobox school with unsupported parameters}}
* {{clc|Pages using infobox school with coordinates not using the Coord template}}
{{Organization infoboxes}}
{{Buildings and structures infobox templates}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Education infobox templates|School]]
[[Category:Buildings and structures infobox templates|School]]
[[Category:Infobox templates with module parameter|School]]
[[Category:Infobox templates with updated parameter|School]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
b72047531e265292f22b2bcfa61716331bc787bf
Module:Political party/A
828
1574
2909
2023-09-29T01:03:15Z
w>Krisgabwoosh
0
Added entry.
Scribunto
text/plain
-- Constant data used by [[Module:Political party]]
local alternate = {
["A test"] = {main = "Business and Professional Group", abbrev = "AT", shortname = "atest"},
["A Better Britain - Unionist Party"] = "British Unionist Party",
["A Better Britain – Unionist Party"] = "British Unionist Party",
["A Just Russia – For Truth"] = "A Just Russia — For Truth",
["A Public Party"] = "Other parties",
["Abolish the Welsh Assembly"] = "Abolish the Welsh Assembly Party",
["ABV"] = "Alternative for Bulgarian Revival",
["ACT Party"] = "ACT New Zealand",
["ACT Teachers"] = "ACT Teachers Partylist",
["Action Coalition for Thailand"] = "Action Coalition Party",
["Action Coalition for Thailand Party"] = "Action Coalition Party",
["Action Committee 5/6 Pensions for Everyone"] = "Alternative Democratic Reform Party",
["Action Committee for Democracy and Pensions Justice"] = "Alternative Democratic Reform Party",
["Action Party (Italy, 1848)"] = "Action Party (Italy, 1853)",
["Action (Italy)"] = "Action (Italian political party)",
["Adal (party)"] = "Adal (political party)",
["Adams Party (United States)"] = "Anti-Jacksonian Party",
["Adams-Clay Republican"] = "Anti-Jacksonian Party",
["Adelante Andalucía"] = "Adelante Andalucía (2018)",
["ADPL"] = "Hong Kong Association for Democracy and People's Livelihood",
["Advance NZ"] = "Advance New Zealand",
["African Independence Party of Guinea and Cape Verde"] = "African Party for the Independence of Guinea and Cape Verde",
["Aggrupation of Parties for Progress"] = "Aggrupation of Parties for Prosperity",
["Agrarian Party (Finland)"] = "Centre Party (Finland)",
["Agrarian Party (Tajikistan)"] = "Agrarian Party of Tajikistan",
["Agrarian Party of Albania"] = "Environmentalist Agrarian Party",
["Agreement for Catalonia Progress"] = "Catalan Agreement of Progress",
["Agreement of Left Nationalists"] = "Left Nationalists",
["Agreement of Nationalist Unity"] = "Canarian Coalition",
["AIADMK"] = "All India Anna Dravida Munnetra Kazhagam",
["Akbayan Citizens' Action Party"] = "Akbayan",
["Ak Zhol Democratic Party"] = "Aq Jol Democratic Party",
["Akhil Bharatiya Lok Tantrik Congress"] = "Akhil Bharatiya Loktantrik Congress",
["Aksyon Demokratiko"] = "Aksyon",
["Alabama Democratic Party"] = "Democratic Party (United States)",
["Alabama Republican Party"] = "Republican Party (United States)",
["Alaska Democratic Party"] = "Democratic Party (United States)",
["Alaska Libertarian Party"] = "Libertarian Party (US)",
["Alaska Republican Party"] = "Republican Party (United States)",
["Alaskan Independence Party"] = "Independence Party (US)",
["Albanian Fascist Party"] = "Fascist Party of Albania",
["Albanian Liberal Party"] = "Liberal Party of Albania",
["Alignment (political party)"] = "Alignment (Israel)",
["All"] = "Alleanza Bidla",
["All Ceylon Muslim Congress"] = "All Ceylon Makkal Congress",
["All India Majlis-E-Ittehadul Muslimeen"] = "All India Majlis-e-Ittehadul Muslimeen",
["All India Trinamool Congress"] = "Trinamool Congress",
["All-Ukrainian Union \"Fatherland\""] = "Batkivshchyna",
["All-Ukrainian Union \"Freedom\""] = "Svoboda (political party)",
["All-Ukrainian Union \"Svoboda\""] = "Svoboda (political party)",
["Alliance '90/The Greens"] = "Alliance 90/The Greens",
["Alliance (New Zealand)"] = "Alliance (New Zealand political party)",
["Alliance for Free Finland"] = "Independence Party (Finland)",
["Alliance for Human Rights, Animal and Environmental Protection"] = "Alliance for Human Rights, Animal and Nature Protection",
["Alliance for Progress and Renewal"] = "Liberal Conservative Reformers",
["Alliance for the Reliberation of Somalia"] = "Alliance for the Re-liberation of Somalia",
["Alliance of Alenka Bratušek"] = "Party of Alenka Bratušek",
["Alliance of Conservatives and Reformists in Europe"] = "Alliance of European Conservatives and Reformists",
["Alliance of Liberals and Democrats for Europe Group"] = "Alliance of Liberals and Democrats for Europe group",
["Alliance of Liberals and Democrats for Europe Party"] = "Alliance of Liberals and Democrats for Europe",
["Alliance Party"] = "Alliance Party (Fiji)",
["Alternativa (Italy)"] = "Alternativa (Italian political party)",
["Alternative List - Worth it"] = "Communist League of Luxemburg",
["American Independent Party (United States)"] = "American Independent Party",
["American Independent"] = "American Independent Party",
["American Party (United States)"] = "Know Nothing",
["American Party (US)"] = "Know Nothing",
["American Party (South Carolina)"] = "American Party of South Carolina",
["American Party"] = "Know Nothing",
["Amma Makkal Munnetra Kazhagam"] = "Amma Makkal Munnettra Kazhagam",
["Amma Makkal Munnettra Kazagam"] = "Amma Makkal Munnettra Kazhagam",
["Amplitude"] = "Amplitude (political party)",
["Amra Bangalee"] = "Amra Bangali",
["An Independence from Europe"] = "Independence from Europe",
["Anguilla United Front (2020)"] = "Anguilla United Front",
["Animals Count"] = "Animal Welfare Party",
["Anova-Nationalist Brotherhood"] = "Renewal–Nationalist Brotherhood",
["Anova–Nationalist Brotherhood"] = "Renewal–Nationalist Brotherhood",
["ANP"] = "Awami National Party",
["Anti-Partition of Ireland League"] = "Irish Anti-Partition League",
["Anti Revolutionary Party"] = "Anti-Revolutionary Party",
["Anti-Administration Party (United States)"] = "Anti-Administration Party (US)",
["Anti-Austerity Alliance-People Before Profit"] = "Anti-Austerity Alliance–People Before Profit",
["Anti-Jacksonian Party (United States)"] = "Anti-Jacksonian Party",
["Anti-Jacksonian Party (US)"] = "Anti-Jacksonian Party",
["Anti-Jacksonian"] = "Anti-Jacksonian Party",
["Anti-Lecompton Democratic Party (United States)"] = "Democratic Party (United States)",
["Anti-Masonic Party (United States)"] = "Anti-Masonic Party",
["Anti-Monopoly Party (United States)"] = "Anti-Monopoly Party (US)",
["Anti-Parnellite"] = "Irish National Federation",
["Aosta Valley"] = "Aosta Valley (political coalition)",
["AP–PDP–PDL–UCD"] = "People's Alliance (Spain)",
["Apna Dal (Soneylal)"] = "Apna Dal (Sonelal)",
["Arab Socialist Union (Syria)"] = "Arab Socialist Union Party (Syria)",
["AraCatalunya"] = "Ara Reus",
["Arise the Republic"] = "Debout la République",
["Arizona Democratic Party"] = "Democratic Party (United States)",
["Arizona Green Party"] = "Green Party (US)",
["Arizona Republican Party"] = "Republican Party (United States)",
["Armenian Democratic Liberal Party"] = "Ramgavar",
["Armenian Renaissance (party)"] = "Orinats Yerkir",
["Armenian Revolutionary Federation in Lebanon"] = "Armenian Revolutionary Federation",
["Article 1 – Democratic and Progressive Movement"] = "Article One (political party)",
["Article One (Italy)"] = "Article One (political party)",
["Article One"] = "Article One (political party)",
["Artikel 1"] = "BIJ1",
["Association for Democracy and People's Livelihood"] = "Hong Kong Association for Democracy and People's Livelihood",
["Association of Consumers and Taxpayers"] = "ACT New Zealand",
["Asturian Socialist Federation"] = "Spanish Socialist Workers' Party",
["Australian Country Party (1920)"] = "National Party of Australia",
["Australian Labour Party (Tasmanian Branch)"] = "Australian Labor Party (Tasmanian Branch)",
["Australian Labour Party"] = "Australian Labor Party",
["Authentic Party"] = "Partido Auténtico",
["Avante"] = "Avante (political party)",
["AWS"] = "Solidarity Electoral Action",
["Azerbaijan Democratic Party"] = "Azerbaijan Democrat Party",
["Azimio La Umoja"] = "Azimio la Umoja",
}
local full = {
["A test no values"] = {abbrev = "", color = "", shortname = "",},
["A Better Future For Our Children"] = {abbrev = "ABFFOC", color = "#5F9EA0", shortname = "",},
["A Change for Curaçao"] = {abbrev = "", color = "#368035", shortname = "",},
["A Connecticut Party"] = {abbrev = "", color = "#FFA500", shortname = "",},
["A Guadalajara Hay Que Quererla"] = {abbrev = "", color = "#47873F", shortname = "",},
["A here ia Porinetia"] = {abbrev = "", color = "#17996B", shortname = "A here",},
["A Just Costa Rica"] = {abbrev = "", color = "#02B2E3", shortname = "",},
["A Just Russia"] = {abbrev = "SR", color = "#FFC003", shortname = "",},
["A Just Russia — For Truth"] = {abbrev = "SRZP", color = "#FFC003", shortname = "",},
["A la valenciana"] = {abbrev = "", color = "#2AAB8C", shortname = "",},
["A New Era"] = {abbrev = "UNT", color = "#003399", shortname = "",},
["A Partnership for National Unity"] = {abbrev = "APNU", color = "#1C9F43", shortname = "",},
["A Worthy Extremadura"] = {abbrev = "UED", color = "#097565", shortname = "",},
["A-Combination"] = {abbrev = "AC", color = "#F1C40F", shortname = "",},
["A16 Alliance"] = {abbrev = "", color = "#F9AE3E", shortname = "",},
["Aam Aadmi Party"] = {abbrev = "AAP", color = "#0072B0", shortname = "",},
["Aama Odisha Party"] = {abbrev = "AOP", color = "#E1A95F", shortname = "",},
["Aapna Punjab Party"] = {abbrev = "APP", color = "#43DCFF", shortname = "",},
["Aarakashan Virodhi Party"] = {abbrev = "AVP", color = "#C171A1", shortname = "",},
["ABAKO"] = {abbrev = "", color = "#F9E99C", shortname = "",},
["Abantu Batho Congress"] = {abbrev = "", color = "#4EA338", shortname = "",},
["ABBA (Malta)"] = {abbrev = "ABBA", color = "#4C015E", shortname = "",},
["ABC (Cuba)"] = {abbrev = "", color = "#008000", shortname = "",},
["Abertzaleen Batasuna"] = {abbrev = "", color = "#800020", shortname = "",},
["Aberdeen Labour"] = {abbrev = "", color = "#ffbbbb", shortname = "",},
["Abolish the Scottish Parliament Party"] = {abbrev = "", color = "#1D8DFF", shortname = "Abolish the Scottish Parliament",},
["Abolish the Welsh Assembly Party"] = {abbrev = "", color = "#810000", shortname = "Abolish",},
["Abolition of Income Tax and Usury Party"] = {abbrev = "", color = "#99FF00", shortname = "",},
["Abono"] = {abbrev = "", color = "#B22222", shortname = "",},
["Abundant Nigeria Renewal Party"] = {abbrev = "ANRP", color = "#008000", shortname = "",},
["Academics In Support of Democracy"] = {abbrev = "", color = "#FFF100", shortname = "",},
["Accessibility without Exclusion"] = {abbrev = "PASE", color = "#4682B4", shortname = "",},
["Accion 21"] = {abbrev = "", color = "#0093D5", shortname = "",},
["Acción Chaqueña"] = {abbrev = "", color = "#000080", shortname = "",},
["Accord (Nigeria)"] = {abbrev = "A", color = "#99FF33", shortname = "",},
["Aceh Abode Party"] = {abbrev = "PDA", color = "#48C5FF", shortname = "",},
["Aceh Party"] = {abbrev = "PA", color = "#DA2625", shortname = "",},
["Achdus"] = {abbrev = "", color = "#7F51C7", shortname = "",},
["Acoma Party"] = {abbrev = "", color = "red", shortname = "",},
["Acord Ciutadà"] = {abbrev = "", color = "#A91C30", shortname = "",},
["Acord pes Mercadal i Fornells"] = {abbrev = "", color = "#EFAF50", shortname = "",},
["Act (Brazil)"] = {abbrev = "", color = "#025B97", shortname = "Agir",},
["ACT Greens"] = {abbrev = "", color = "#10C25B", shortname = "Greens",},
["ACT New Zealand"] = {abbrev = "ACT", color = "#FDE401", shortname = "",},
["Act to Stop the Decline"] = {abbrev = "", color = "#F00000", shortname = "",},
["Action (Italian political party)"] = {abbrev = "", color = "#0039AA", shortname = "Action",},
["Action – Italia Viva"] = {abbrev = "A-IV", color = "#283B87", shortname = "Action – Italia Viva",},
["Action (Serbia)"] = {abbrev = "", color = "#90C64A", shortname = "",},
["Action 18"] = {abbrev = "", color = "#1E5498", shortname = "",},
["Action 9"] = {abbrev = "", color = "#DBE767", shortname = "",},
["Action Alliance"] = {abbrev = "AA", color = "#3498DB", shortname = "",},
["Action and Renewal Movement"] = {abbrev = "MAR", color = "#F6881F", shortname = "",},
["Action Coalition Party"] = {abbrev = "", color = "#2A3994", shortname = "Action Coalition",},
["Action Coalition Party (2023)"] = {abbrev = "", color = "#591283", shortname = "Action Coalition",},
["Action Committee for Renewal"] = {abbrev = "", color = "#E4011C", shortname = "",},
["Action Congress of Nigeria"] = {abbrev = "", color = "#0080FF", shortname = "",},
["Action Democratic Party (Nigeria)"] = {abbrev = "ADP", color = "#000080", shortname = "",},
["Action for Andorra"] = {abbrev = "", color = "#95D9D4", shortname = "Acció",},
["Action for Change"] = {abbrev = "AC", color = "#FFE100", shortname = "",},
["Action for Córdoba"] = {abbrev = "", color = "#AD1140", shortname = "",},
["Action for Independence"] = {abbrev = "", color = "#00335A", shortname = "",},
["Action for the Republic (Argentina)"] = {abbrev = "AxR", color = "#3E5298", shortname = "Action for the Republic",},
["Action for the Republic (Catalonia)"] = {abbrev = "", color = "#EC008B", shortname = "",},
["Action Front for Renewal and Development"] = {abbrev = "", color = "#DC143C", shortname = "",},
["Action Group (Nigeria)"] = {abbrev = "", color = "red", shortname = "",},
["Action Party (Italy, 1853)"] = {abbrev = "", color = "#F0002B", shortname = "",},
["Action Party (Italy)"] = {abbrev = "", color = "#009246", shortname = "Action Party",},
["Action Party (Latvia)"] = {abbrev = "", color = "#266AAB", shortname = "",},
["Action Party (Morocco)"] = {abbrev = "", color = "#1E90FF", shortname = "",},
["Action Party (UK)"] = {abbrev = "", color = "#2F4F4F", shortname = "Action",},
["Action Peoples Party"] = {abbrev = "APP", color = "#2b2a29", shortname = "",},
["ActionSA"] = {abbrev = "", color = "#05B615", shortname = "",},
["Active and Social Participation for Cerdanyola"] = {abbrev = "", color = "#BB1816", shortname = "",},
["Active Citizenship"] = {abbrev = "CA", color = "#BB0011", shortname = "",},
["Active Xàtiva"] = {abbrev = "", color = "#F9C21D", shortname = "",},
["Activism for Democracy Association"] = {abbrev = "", color = "#9F8170", shortname = "",},
["Actúa Torrent"] = {abbrev = "", color = "#FE8D00", shortname = "",},
["Actúa"] = {abbrev = "", color = "#007776", shortname = "",},
["Actual Equality"] = {abbrev = "", color = "#2ABE9C", shortname = "",},
["AD+PD"] = {abbrev = "", color = "#FFE700", shortname = "",},
["Adal (political party)"] = {abbrev = "", color = "#26B173", shortname = "Adal",},
["Adarshwaadi Congress Party"] = {abbrev = "ACP", color = "#81F7BE", shortname = "",},
["Adelante Andalucía (2018)"] = {abbrev = "", color = "#4EB270", shortname = "Adelante Andalucía",},
["Adelante Andalucía (2021)"] = {abbrev = "", color = "#24C87E", shortname = "Adelante Andalucía",},
["Adelante Melilla"] = {abbrev = "", color = "#535D9B", shortname = "",},
["Adelante Ourense"] = {abbrev = "", color = "#FBC000", shortname = "",},
["Adelante Zamboanga Party"] = {abbrev = "AZAP", color = "#BE0032", shortname = "",},
["Adhaalath Party"] = {abbrev = "AP", color = "#31c642", shortname = "",},
["ADN Morvedre"] = {abbrev = "", color = "#A6489A", shortname = "",},
["ADÑ"] = {abbrev = "", color = "#FF7E00", shortname = "",},
["Advance (Ecuador)"] = {abbrev = "", color = "#017DB6", shortname = "",},
["Advance New Zealand (1995)"] = {abbrev = "", color = "#AADDCC", shortname = "Advance NZ",},
["Advance New Zealand"] = {abbrev = "", color = "#1987D1", shortname = "Advance NZ",},
["Advance SA"] = {abbrev = "", color = "#10294F", shortname = "",},
["Advance San Luis"] = {abbrev = "", color = "#24A1BD", shortname = "",},
["Advance Together"] = {abbrev = "", color = "#FF008F", shortname = "Advance",},
["Advance"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Advancement Unification Party"] = {abbrev = "AUP", color = "#0067A5", shortname = "Advancement Unification",},
["Afar Liberation Front"] = {abbrev = "", color = "#4189DD", shortname = "",},
["Afar National Democratic Party"] = {abbrev = "", color = "#1614BA", shortname = "",},
["Afek Tounes"] = {abbrev = "", color = "#FF9900", shortname = "",},
["Afghan Millat Party"] = {abbrev = "", color = "red", shortname = "",},
["Africa Moral Party"] = {abbrev = "", color = "#47852C", shortname = "",},
["Africa Muslim Party"] = {abbrev = "", color = "#009f00", shortname = "",},
["Africa Restoration Alliance"] = {abbrev = "", color = "hotpink", shortname = "",},
["African Action Congress"] = {abbrev = "AAC", color = "#6F4E37", shortname = "",},
["African Christian Democratic Party"] = {abbrev = "ACDP", color = "#ba0c2f", shortname = "",},
["African Congress of Democrats"] = {abbrev = "", color = "#D12626", shortname = "",},
["African Content Movement"] = {abbrev = "", color = "#5a2d8a", shortname = "",},
["African Covenant"] = {abbrev = "", color = "#164518", shortname = "",},
["African Democratic Change"] = {abbrev = "", color = "#ff9933", shortname = "",},
["African Democratic Congress"] = {abbrev = "ADC", color = "#00A86B", shortname = "",},
["African Democratic Rally (Burkina Faso)"] = {abbrev = "", color = "#000000", shortname = "",},
["African Democratic Rally"] = {abbrev = "", color = "#000000", shortname = "",},
["African Forum for Reconstruction"] = {abbrev = "FAR", color = "red", shortname = "",},
["African Independence Party – Renewal"] = {abbrev = "", color = "red", shortname = "",},
["African Independence Party (Burkina Faso)"] = {abbrev = "", color = "red", shortname = "",},
["African Independence Party (Touré)"] = {abbrev = "", color = "red", shortname = "",},
["African Independent Congress"] = {abbrev = "AIC", color = "#ffb543", shortname = "",},
["African National Congress"] = {abbrev = "ANC", color = "#006600", shortname = "",},
["African Party for the Independence of Cape Verde"] = {abbrev = "PAICV", color = "#FCD116", shortname = "",},
["African Party for the Independence of Guinea and Cape Verde"] = {abbrev = "PAIGC", color = "#FF0000", shortname = "",},
["African Patriots of Senegal for Work, Ethics and Fraternity"] = {abbrev = "PASTEF", color = "#B13131", shortname = "",},
["African People's Bloc"] = {abbrev = "BPA", color = "#F38C22", shortname = "",},
["African People's Convention"] = {abbrev = "", color = "#007500", shortname = "",},
["African People's Socialist Party"] = {abbrev = "", color = "#EA202C", shortname = "African People's Socialist",},
["African Regroupment Party – Senegal"] = {abbrev = "", color = "#5C96C4", shortname = "",},
["African Renaissance Unity Party"] = {abbrev = "", color = "#85251B", shortname = "",},
["African Security Congress"] = {abbrev = "", color = "#F21313", shortname = "",},
["African Socialist Movement"] = {abbrev = "", color = "#CD5C5C", shortname = "",},
["African Solidarity for Democracy and Independence"] = {abbrev = "", color = "#CC0707", shortname = "",},
["African Transformation Movement"] = {abbrev = "ATM", color = "#00ADEE", shortname = "",},
["Afrikan Alliance of Social Democrats"] = {abbrev = "", color = "#179123", shortname = "",},
["Afrikaner Party"] = {abbrev = "", color = "#007090", shortname = "",},
["Afrikaner self-determination Party"] = {abbrev = "", color = "#FF9900", shortname = "",},
["Afro-Shirazi Party"] = {abbrev = "", color = "#000000", shortname = "",},
["AFROVIDES"] = {abbrev = "", color = "#555555", shortname = "",},
["Against all"] = {abbrev = "", color = "#000000", shortname = "",},
["Agalev"] = {abbrev = "", color = "#1B7710", shortname = "",},
["Agang South Africa"] = {abbrev = "", color = "#008752", shortname = "Agang SA",},
["Agano Party"] = {abbrev = "", color = "Purple", shortname = "Agano",},
["Agar Jan Party"] = {abbrev = "AGRJP", color = "#B9C1C0", shortname = "",},
["Aggrupation of Parties for Prosperity"] = {abbrev = "APP", color = "#1325ae", shortname = "",},
["Agir (France)"] = {abbrev = "", color = "#43519E", shortname = "Agir",},
["Agora (Belgium)"] = {abbrev = "", color = "#4DBCB4", shortname = "",},
["Agrarian Alliance"] = {abbrev = "ASZ", color = "#EDED00", shortname = "",},
["Agrarian Bloc Electoral Group"] = {abbrev = "", color = "#32B2A3", shortname = "",},
["Agrarian Labor Party"] = {abbrev = "", color = "#008000", shortname = "",},
["Agrarian Labour Action Party"] = {abbrev = "PALA", color = "#8f5100", shortname = "",},
["Agrarian League (Finland)"] = {abbrev = "", color = "#74C365", shortname = "Agrarian",},
["Agrarian League (Spain)"] = {abbrev = "", color = "#124838", shortname = "",},
["Agrarian Liberal Party"] = {abbrev = "", color = "#548D54", shortname = "",},
["Agrarian Democratic Party"] = {abbrev = "ADS", color = "#30A741", shortname = "",},
["Agrarian Party (Chile)"] = {abbrev = "", color = "#9ACD32", shortname = "",},
["Agrarian Party (Italy)"] = {abbrev = "", color = "#006600", shortname = "Agrarian",},
["Agrarian Party (Yugoslavia)"] = {abbrev = "", color = "#3D863D", shortname = "",},
["Agrarian Party of Greece"] = {abbrev = "", color = "yellow", shortname = "Agrarian",},
["Agrarian Party of Moldova"] = {abbrev = "", color = "#16924C", shortname = "",},
["Agrarian Party of Russia"] = {abbrev = "APR", color = "#EED23C", shortname = "",},
["Agrarian Party of Tajikistan"] = {abbrev = "", color = "#FDDC1D", shortname = "",},
["Agrarian Party of Turkmenistan"] = {abbrev = "TAP", color = "#FFD700", shortname = "",},
["Agrarian Party of Ukraine"] = {abbrev = "APU", color = "#80AC4D", shortname = "",},
["Agrarian Patriotic Front"] = {abbrev = "FREPAB", color = "#F3D09C", shortname = "",},
["Agrarian People's Union"] = {abbrev = "", color = "#FF7212", shortname = "",},
["Agrarian Union (Poland)"] = {abbrev = "ZC", color = "#279B6A", shortname = "",},
["Agrarian Union \"Aleksandar Stamboliyski\""] = {abbrev = "", color = "#FE9901", shortname = "",},
["Agreement (political party)"] = {abbrev = "", color = "#230871", shortname = "",},
["Agreement for the Country"] = {abbrev = "IpP", color = "#0061A5", shortname = "",},
["Agreement of Independents for Badalona"] = {abbrev = "", color = "#4CC417", shortname = "",},
["Agreement of the Catalans"] = {abbrev = "", color = "#FFD901", shortname = "",},
["Agricultural and Labour Party"] = {abbrev = "AEK", color = "#ffb4a1", shortname = "",},
["Agricultural League"] = {abbrev = "RLB", color = "#52AE6F", shortname = "",},
["Agricultural Party of Greece"] = {abbrev = "", color = "yellow", shortname = "",},
["Agricultural Party"] = {abbrev = "", color = "#F4A460", shortname = "",},
["Agricultural Party (Costa Rica)"] = {abbrev = "", color = "#008000", shortname = "Agricultural",},
["Agricultural Party (Czech Republic)"] = {abbrev = "ZS", color = "#00B233", shortname = "",},
["Agricultural People's Front of Peru"] = {abbrev = "FREPAP", color = "#00009B", shortname = "",},
["Agriculturalist Party"] = {abbrev = "", color = "#B8D8C9", shortname = "Agriculturalist",},
["Agriculture and Development"] = {abbrev = "", color = "#AF0000", shortname = "",},
["Agriculture First"] = {abbrev = "", color = "#5FC099", shortname = "",},
["AGROunia"] = {abbrev = "", color = "#BBCB15", shortname = "",},
["Aguadulce en Marcha"] = {abbrev = "", color = "#00A0B0", shortname = "",},
["Agudas Israel (Latvia)"] = {abbrev = "", color = "lightblue", shortname = "Agudas Israel",},
["Agudat Yisrael"] = {abbrev = "", color = "#033669", shortname = "",},
["Ahd 54"] = {abbrev = "", color = "#2D5A20", shortname = "",},
["Ahdut HaAvoda"] = {abbrev = "", color = "#CE2029", shortname = "",},
["Ahora Almería"] = {abbrev = "", color = "#137776", shortname = "",},
["Ahora Arganda"] = {abbrev = "", color = "#00A58E", shortname = "",},
["Ahora Basauri Orain"] = {abbrev = "", color = "#016703", shortname = "",},
["Ahora Canarias"] = {abbrev = "", color = "#11865C", shortname = "",},
["Ahora Ciempozuelos"] = {abbrev = "", color = "#3F9D2F", shortname = "",},
["Ahora Decide"] = {abbrev = "", color = "#198100", shortname = "",},
["Ahora Estella"] = {abbrev = "", color = "#B21AAA", shortname = "",},
["Ahora Getafe"] = {abbrev = "", color = "#7F4098", shortname = "",},
["Ahora Guadalajara"] = {abbrev = "", color = "#810081", shortname = "",},
["Ahora Madrid"] = {abbrev = "", color = "#00A58E", shortname = "",},
["Ahora Patria"] = {abbrev = "", color = "#FFFF00", shortname = "",},
["Ahora Repúblicas"] = {abbrev = "", color = "#FCBC43", shortname = "",},
["Ahora Santa Cruz"] = {abbrev = "", color = "#6A205F", shortname = "",},
["Ahora Sí Torremolinos"] = {abbrev = "", color = "#BB9031", shortname = "",},
["Ailtirí na hAiséirghe"] = {abbrev = "AnaA", color = "#004400", shortname = "Ailtirí na hAiséirghe",},
["Aitaira"] = {abbrev = "", color = "#0000FF", shortname = "",},
["Ak Jol"] = {abbrev = "", color = "#FF7070", shortname = "",},
["Akali Dal"] = {abbrev = "", color = "#72474c", shortname = "",},
["Akali Dal – Sant Fateh Singh Group"] = {abbrev = "AD(SFS)", color = "#FF8000", shortname = "Akali Dal (SFS)",},
["Akbayan"] = {abbrev = "", color = "#FE0000", shortname = "Akbayan",},
["Akha National Development Party"] = {abbrev = "ANDP", color = "#374BA1", shortname = "",},
["Akhand Bharat Mahasang Sarvahara Krantikari Party"] = {abbrev = "ABMSKP", color = "#DFB43D", shortname = "",},
["Akhand Bharat Samaj Party"] = {abbrev = "ABSP", color = "#9AFE2E", shortname = "",},
["Akhand Bharti"] = {abbrev = "AB", color = "#9AFE2E", shortname = "",},
["Akhil Bharat Hindu Mahasabha"] = {abbrev = "ABHM", color = "#FFFF00", shortname = "",},
["Akhil Bharatiya Aman Committee"] = {abbrev = "ABAC", color = "#D2EFF0", shortname = "",},
["Akhil Bharatiya Congress Dal (Ambedkar)"] = {abbrev = "ABCD", color = "#FFCCCC", shortname = "",},
["Akhil Bharatiya Dalit Utthan Party"] = {abbrev = "ABDUP", color = "#F2F5A9", shortname = "",},
["Akhil Bharatiya Dharmnirpeksh Dal"] = {abbrev = "DND", color = "#EBD023", shortname = "",},
["Akhil Bharatiya Gorkha League"] = {abbrev = "ABGL", color = "#7E5692", shortname = "",},
["Akhil Bharatiya Hindu Mahasabha"] = {abbrev = "ABHM", color = "orange", shortname = "",},
["Akhil Bharatiya Jana Sangh"] = {abbrev = "ABJS", color = "#FF9933", shortname = "",},
["Akhil Bharatiya Janata Congress"] = {abbrev = "ABJC", color = "#08088A", shortname = "",},
["Akhil Bharatiya Janata Vikas Party"] = {abbrev = "BJVP", color = "#A9F5BC", shortname = "",},
["Akhil Bharatiya Loktantrik Congress"] = {abbrev = "ABLTC", color = "#93DE73", shortname = "",},
["Akhil Bharatiya Manav Adhikar Dal"] = {abbrev = "ABMAD", color = "#A264C1", shortname = "",},
["Akhil Bharatiya Ram Rajya Parishad"] = {abbrev = "RRP", color = "#330033", shortname = "",},
["Akhil Bharatiya Rashtriya Azad Hind Party"] = {abbrev = "ABRAHP", color = "#FFFF66", shortname = "",},
["Akhil Bharatiya Sena"] = {abbrev = "ABS", color = "#3060D0", shortname = "",},
["Akhil Bharatiya Shivsena Rashtrawadi"] = {abbrev = "SHS", color = "#A9F5A9", shortname = "",},
["Akhil Bharatiya Shoshit Samaj Dal"] = {abbrev = "SSD", color = "#F2F5A9", shortname = "",},
["Akhil Bharatiya Sudhar Party"] = {abbrev = "ABSP", color = "#8A4B08", shortname = "",},
["Akhil Bharatiya Vikas Congress Party"] = {abbrev = "ABVCP", color = "#F2F5A9", shortname = "",},
["Akhila India Jananayaka Makkal Katchi"] = {abbrev = "AIJMK", color = "Red", shortname = "",},
["Akhl Bharatiya Garib Mazdoor Kisan Party"] = {abbrev = "ABGMKP", color = "#ADEFE5", shortname = "",},
["Akila India Jananayaka Makkal Katchi"] = {abbrev = "AIJMK", color = "", shortname = "",},
["AKMA-PTM"] = {abbrev = "", color = "#fbe405", shortname = "",},
["Ako Bicol Political Party"] = {abbrev = "", color = "#ffff00", shortname = "Ako Bicol",},
["Akshumkar"] = {abbrev = "", color = "#3DBCCB", shortname = "",},
["Aksyon"] = {abbrev = "AD", color = "#9683EC", shortname = "Aksyon",},
["Aktsent"] = {abbrev = "", color = "#008DA2", shortname = "",},
["Al Asalah"] = {abbrev = "", color = "#00568B", shortname = "",},
["Al Jama-ah"] = {abbrev = "", color = "#1c9069", shortname = "",},
["Al Wefaq"] = {abbrev = "", color = "#0D4173", shortname = "",},
["Al-Ahbash"] = {abbrev = "", color = "#DDB531", shortname = "",},
["Al-Ahrar Bloc"] = {abbrev = "", color = "#000000", shortname = "al-Ahrar",},
["Al-Arabiya Coalition"] = {abbrev = "", color = "#57888D", shortname = "al-Arabiya",},
["Al-ʽAhd (Morocco)"] = {abbrev = "", color = "#915701", shortname = "",},
["Al-Irada"] = {abbrev = "", color = "#ACACAC", shortname = "",},
["Al-Islah (Yemen)"] = {abbrev = "", color = "#0463D1", shortname = "Al-Islah",},
["Al-Menber Islamic Society"] = {abbrev = "", color = "#E93230", shortname = "",},
["Al-Muthanna Club"] = {abbrev = "", color = "#000000", shortname = "",},
["Al-Muwatin"] = {abbrev = "", color = "#009933", shortname = "",},
["Al-Nour Party"] = {abbrev = "", color = "#000000", shortname = "al-Nour",},
["Al-Sadiqoun Bloc"] = {abbrev = "", color = "#B5CA7F", shortname = "",},
["Al-Wasat Party"] = {abbrev = "", color = "#A52A2A", shortname = "",},
["Al-Watan Party (Tunisia)"] = {abbrev = "", color = "#1E90FF", shortname = "",},
["Al-Wataniya"] = {abbrev = "", color = "#B5CA7F", shortname = "",},
["Alajuelense Democratic Action"] = {abbrev = "PADA", color = "#FF7E1C", shortname = "",},
["Alajuelense Solidarity Party"] = {abbrev = "PSA", color = "#D41C00", shortname = "",},
["Alanian Union"] = {abbrev = "AU", color = "#000000", shortname = "",},
["Alavese Unity"] = {abbrev = "", color = "#3159A5", shortname = "",},
["Alba Party"] = {abbrev = "", color = "#005EB8", shortname = "Alba",},
["Albanian Alternative"] = {abbrev = "ASH", color = "darkblue", shortname = "",},
["Albanian Christian Democratic Party of Kosovo"] = {abbrev = "", color = "#4775BF", shortname = "",},
["Albanian Coalition"] = {abbrev = "KSH", color = "#800000", shortname = "",},
["Albanian Coalition of Preševo Valley"] = {abbrev = "KSLP", color = "#0081CC", shortname = "",},
["Albanian Democratic Union Party"] = {abbrev = "PBDSH", color = "#6192ad", shortname = "",},
["Albanian List (Montenegro)"] = {abbrev = "LSh", color = "#E62927", shortname = "",},
["Albanian National Front Party"] = {abbrev = "PBK", color = "black", shortname = "",},
["Albanians Decisively"] = {abbrev = "AO", color = "#00aae5", shortname = "",},
["Alberta Independence Party"] = {abbrev = "", color = "#55ba47", shortname = "",},
["Alcalá 100%"] = {abbrev = "", color = "#1D88BE", shortname = "",},
["Alcalá Habitable"] = {abbrev = "", color = "#336F27", shortname = "",},
["Alcalá Puede"] = {abbrev = "", color = "#7F215F", shortname = "",},
["Alderney representatives"] = {abbrev = "", color = "#BABCDB", shortname = "",},
["Ale Yarok"] = {abbrev = "", color = "#799A00", shortname = "",},
["Aleksa and Dritan – Count Bravely!"] = {abbrev = "", color = "#69BD44", shortname = "Count Bravely!",},
["Alfarista Radical Front"] = {abbrev = "FRA", color = "#4169E1", shortname = "",},
["Algaida for the Development of Sanlúcar"] = {abbrev = "", color = "#94FF00", shortname = "",},
["Algeciras 100x100"] = {abbrev = "", color = "#E75200", shortname = "",},
["Algeciras Citizen Action"] = {abbrev = "", color = "#FFC800", shortname = "",},
["Algeciras Sí Se Puede"] = {abbrev = "", color = "#761B5E", shortname = "",},
["Algerian Communist Party"] = {abbrev = "", color = "#CD0000", shortname = "",},
["Algerian National Front"] = {abbrev = "FNA", color = "#406080", shortname = "",},
["Algerian Popular Movement"] = {abbrev = "MPA", color = "green", shortname = "",},
["Algerian Rally"] = {abbrev = "RA", color = "green", shortname = "",},
["Alliance Party for Progress"] = {abbrev = "APP", color = "#0E9345", shortname = "",},
["Alianza Puertorriqueña"] = {abbrev = "", color = "#F0DC82", shortname = "",},
["Alignment (Israel)"] = {abbrev = "", color = "#3DEAFD", shortname = "Alignment",},
["Alive Land Palencia Independent Group"] = {abbrev = "", color = "#FF9900", shortname = "",},
["All-Armenian National Statehood Party"] = {abbrev = "", color = "#0620FD", shortname = "",},
["All Basotho Convention"] = {abbrev = "ABC", color = "#F5D42D", shortname = "",},
["All Blended Party"] = {abbrev = "ABP", color = "#040A55", shortname = "",},
["All Ceylon Makkal Congress"] = {abbrev = "", color = "#9acd32", shortname = "",},
["All Ceylon Tamil Congress"] = {abbrev = "", color = "#FFFF00", shortname = "",},
["All-Democratic Agricultural Front"] = {abbrev = "PAME", color = "#FF0000", shortname = "",},
["All for Latvia!"] = {abbrev = "", color = "#5A0505", shortname = "",},
["All for Unity"] = {abbrev = "", color = "#2C5781", shortname = "",},
["All India Anna Dravida Munnetra Kazhagam"] = {abbrev = "AIADMK", color = "#009546", shortname = "",},
["All India Bahujan Samman Party"] = {abbrev = "AIBSP", color = "#A9F5D0", shortname = "",},
["All India Dalit Muslim Minorities Suraksha Mahasangh"] = {abbrev = "DMM", color = "#14D00D", shortname = "",},
["All India Forward Bloc (Marxist)"] = {abbrev = "FBL(M)", color = "#259268", shortname = "",},
["All India Forward Bloc"] = {abbrev = "AIFB", color = "#ac1313", shortname = "",},
["All India Ganatantra Parishad"] = {abbrev = "AIGP", color = "#FF33CC", shortname = "",},
["All India Indira Congress (Tiwari)"] = {abbrev = "AIIC(T)", color = "#00FFFF", shortname = "",},
["All India Jharkhand Party"] = {abbrev = "", color = "#CC9999", shortname = "",},
["All India Mahila Empowerment Party"] = {abbrev = "AIMEP", color = "#FFF", shortname = "",},
["All India Majlis-e-Ittehadul Muslimeen"] = {abbrev = "AIMIM", color = "#0c6b4b", shortname = "",},
["All India Minorities Front"] = {abbrev = "AIMF", color = "#00FFFF", shortname = "",},
["All India Moovendar Munnani Kazhagam"] = {abbrev = "", color = "Red", shortname = "",},
["All India Muslim Forum"] = {abbrev = "", color = "green", shortname = "",},
["All India N.R. Congress"] = {abbrev = "AINRC", color = "#FDA209", shortname = "",},
["All India Party for the Protection of Civil Rights"] = {abbrev = "AIPPCR", color = "mistyrose", shortname = "",},
["All India Rajiv Krantikari Congress"] = {abbrev = "AIRKC", color = "#417A81", shortname = "",},
["All India Rashtriya Janata Party"] = {abbrev = "AIRJP", color = "#9A5815", shortname = "",},
["All India Samathuva Makkal Katchi"] = {abbrev = "SMK", color = "#fe0000", shortname = "",},
["All India United Democratic Front"] = {abbrev = "AIUDF", color = "#348017", shortname = "",},
["All Jammu and Kashmir Muslim Conference"] = {abbrev = "AJKMC", color = "#F4A460", shortname = "",},
["All Jharkhand Students Union"] = {abbrev = "AJSU", color = "#6827B5", shortname = "",},
["All Liberia Coalition Party"] = {abbrev = "ALCP", color = "#000000", shortname = "",},
["All Liberian Party"] = {abbrev = "ALP", color = "#fd0f0d", shortname = "",},
["All Malaysian Indian Progressive Front"] = {abbrev = "", color = "#EC2029", shortname = "",},
["All Mon Region Democracy Party"] = {abbrev = "AMRDP", color = "#DC143C", shortname = "",},
["All Nigeria Peoples Party"] = {abbrev = "ANPP", color = "#0000CD", shortname = "",},
["All Pakistan Awami Muslim League"] = {abbrev = "", color = "#006a4e", shortname = "",},
["All Pakistan Muslim League"] = {abbrev = "APML", color = "#556B2F", shortname = "",},
["All Party Alliance"] = {abbrev = "", color = "#C19A6B", shortname = "",},
["All Party Hill Leaders Conference"] = {abbrev = "AHL", color = "#FFFF00", shortname = "",},
["All People Front"] = {abbrev = "PM", color = "red", shortname = "",},
["All Peoples Party"] = {abbrev = "", color = "#9e13c4", shortname = "",},
["All People's Congress (Ghana)"] = {abbrev = "", color = "#106338", shortname = "",},
["All People's Congress"] = {abbrev = "APC", color = "#FF0000", shortname = "",},
["All People's Party (Namibia)"] = {abbrev = "APP", color = "#D84F23", shortname = "",},
["All People's Party (UK)"] = {abbrev = "", color = "DarkOrange", shortname = "All People's Party",},
["All Progressives Congress"] = {abbrev = "APC", color = "#87BEEB", shortname = "",},
["All Progressives Grand Alliance"] = {abbrev = "APGA", color = "#00923F", shortname = "",},
["All Scotland Pensioners Party"] = {abbrev = "", color = "#BBD9DB", shortname = "",},
["All Together (Serbia)"] = {abbrev = "SZ", color = "brown", shortname = "",},
["All-for-Ireland League"] = {abbrev = "AFI", color = "#66FF99", shortname = "All-for-Ireland",},
["All-German Bloc/League of Expellees and Deprived of Rights"] = {abbrev = "GB/BHE", color = "#C3C318", shortname = "",},
["All-German People's Party"] = {abbrev = "GVP", color = "#FF7F00", shortname = "",},
["All-In Democracy"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["All-India Muslim League"] = {abbrev = "AIML", color = "#008000", shortname = "",},
["All-Ukrainian Political Movement \"State Independence of Ukraine\""] = {abbrev = "DSU", color = "#ff0080", shortname = "",},
["All-Ukrainian Union \"Cherkashchany\""] = {abbrev = "", color = "lightblue", shortname = "Cherkashchany",},
["All-Union Communist Party of Bolsheviks (1991)"] = {abbrev = "", color = "#881300", shortname = "",},
["Allah-o-Akbar Tehreek"] = {abbrev = "AAT", color = "#FFD700", shortname = "",},
["Alleanza Bidla"] = {abbrev = "", color = "purple", shortname = "",},
["Alleanza Lombarda Autonomia"] = {abbrev = "ALA", color = "green", shortname = "",},
["Allegiance Party (Papua New Guinea)"] = {abbrev = "AP", color = "#233F92", shortname = "",},
["Alliance (Argentina)"] = {abbrev = "", color = "#0AABDB", shortname = "Alianza",},
["Alliance (Chile)"] = {abbrev = "", color = "#4682B4", shortname = "Alliance",},
["Alliance (Kyrgyz political party)"] = {abbrev = "", color = "#25AAE2", shortname = "Alliance",},
["Alliance (New Zealand political party)"] = {abbrev = "", color = "#33CC66", shortname = "Alliance",},
["Alliance (Portugal)"] = {abbrev = "", color = "#6AD1E3", shortname = "",},
["Alliance (Norway)"] = {abbrev = "", color = "#f47b20", shortname = "Alliance",},
["Alliance (Slovak political party)"] = {abbrev = "", color = "#F48B24", shortname = "",},
["Alliance 21/RRP"] = {abbrev = "", color = "#C0C0C0", shortname = "",},
["Alliance 90"] = {abbrev = "B90", color = "green", shortname = "",},
["Alliance 90/Greens of Serbia"] = {abbrev = "S90", color = "#286019", shortname = "",},
["Alliance 90/The Greens"] = {abbrev = "", color = "#64A12D", shortname = "Greens",},
["Alliance C – Christians for Germany"] = {abbrev = "", color = "#00529C", shortname = "Bündnis C",},
["Alliance for a Triumphant Benin"] = {abbrev = "", color = "#CBE08F", shortname = "",},
["Alliance for Albanians"] = {abbrev = "AS", color = "#6D3D87", shortname = "",},
["Alliance for Barangay Concerns"] = {abbrev = "ABC", color = "#010066", shortname = "",},
["Alliance for Brazil"] = {abbrev = "", color = "#008000", shortname = "",},
["Alliance for Burgos"] = {abbrev = "", color = "#9F9152", shortname = "",},
["Alliance for Change"] = {abbrev = "", color = "#ED6C10", shortname = "",},
["Alliance for Change (Guyana)"] = {abbrev = "AFC", color = "#FFCC01", shortname = "",},
["Alliance for Change (Macau)"] = {abbrev = "MUDAR", color = "#00AB66", shortname = "",},
["Alliance for Change (Venezuela)"] = {abbrev = "", color = "#F50087", shortname = "",},
["Alliance for Change and Progress"] = {abbrev = "AMP", color = "#10B0E0", shortname = "",},
["Alliance for Change and Transparency"] = {abbrev = "", color = "#A03389", shortname = "ACT–Wazalendo",},
["Alliance for Commerce and Housing"] = {abbrev = "", color = "#FFED00", shortname = "",},
["Alliance for Croatia"] = {abbrev = "", color = "#5D93D3", shortname = "",},
["Alliance for Democracy (Dominican Republic)"] = {abbrev = "", color = "#80A7BF", shortname = "",},
["Alliance for Democracy (Malawi)"] = {abbrev = "AFORD", color = "#25D9FA", shortname = "",},
["Alliance for Democracy (Nigeria)"] = {abbrev = "AD", color = "#186315", shortname = "",},
["Alliance for Democracy and Federation – African Democratic Rally"] = {abbrev = "", color = "#FFEF00", shortname = "",},
["Alliance for Democracy and Freedom (UK)"] = {abbrev = "ADF", color = "#002182", shortname = "",},
["Alliance for Democracy and Reforms"] = {abbrev = "", color = "blue", shortname = "",},
["Alliance for Democracy in Mali"] = {abbrev = "ADEMA-PASJ", color = "#EB1D2A", shortname = "",},
["Alliance for Democratic Change"] = {abbrev = "", color = "navy", shortname = "",},
["Alliance for Democratic Renewal"] = {abbrev = "", color = "#D9BF08", shortname = "",},
["Alliance for Development and Nature"] = {abbrev = "", color = "#1D463B", shortname = "",},
["Alliance for Direct Democracy in Europe"] = {abbrev = "", color = "#800080", shortname = "",},
["Alliance for Equality and European Justice"] = {abbrev = "ABDE", color = "", shortname = "",},
["Alliance for Europe of the Nations"] = {abbrev = "AEN", color = "#00DDDD", shortname = "",},
["Alliance for Germany"] = {abbrev = "AFD", color = "#2483BB", shortname = "",},
["Alliance for Green Socialism"] = {abbrev = "", color = "#00A86B", shortname = "",},
["Alliance for Human Rights, Animal and Nature Protection"] = {abbrev = "", color = "#3d499a", shortname = "Tierschutzallianz",},
["Alliance for Innovation and Justice"] = {abbrev = "BIG", color = "orange", shortname = "",},
["Alliance for Italy"] = {abbrev = "", color = "#89CFF0", shortname = "",},
["Alliance for Justice and Democracy/Movement for Renewal"] = {abbrev = "AJD/MR", color = "#000000", shortname = "",},
["Alliance for Local Living"] = {abbrev = "ALL", color = "#11B4BB", shortname = "",},
["Alliance for National Transformation"] = {abbrev = "", color = "#9954AD", shortname = "",},
["Alliance for New Nigeria"] = {abbrev = "ANN", color = "#358C43", shortname = "",},
["Alliance for Patriotic Reorientation and Construction"] = {abbrev = "APRC", color = "#0D6F4A", shortname = "",},
["Alliance for Peace and Democracy (Liberia)"] = {abbrev = "", color = "#E1EC2C", shortname = "",},
["Alliance for Peace and Freedom"] = {abbrev = "", color = "#000000", shortname = "",},
["Alliance for Progress (Peru)"] = {abbrev = "APP", color = "#1155cc", shortname = "",},
["Alliance for Progressives"] = {abbrev = "AP", color = "#662E91", shortname = "",},
["Alliance for Real Change"] = {abbrev = "", color = "#730026", shortname = "",},
["Alliance for Romanian Unity"] = {abbrev = "AUR", color = "blue", shortname = "",},
["Alliance for Ronda"] = {abbrev = "", color = "#3E79BF", shortname = "",},
["Alliance for Social and Economic Advancement"] = {abbrev = "ASEA", color = "#009EE3", shortname = "",},
["Alliance for Tanzania Farmers Party"] = {abbrev = "AFP", color = "green", shortname = "",},
["Alliance for the Development of Macau"] = {abbrev = "", color = "#FFD700", shortname = "",},
["Alliance for the Fatherland"] = {abbrev = "", color = "#08099F", shortname = "",},
["Alliance for the Future (Czech Republic)"] = {abbrev = "", color = "#005094", shortname = "",},
["Alliance for the Future (Peru)"] = {abbrev = "", color = "#FF7F00", shortname = "",},
["Alliance for the Future of Austria"] = {abbrev = "BZÖ", color = "#F29400", shortname = "",},
["Alliance for the Future of Kosovo"] = {abbrev = "AAK", color = "#03112C", shortname = "",},
["Alliance for the Great Change"] = {abbrev = "", color = "#00B0F6", shortname = "",},
["Alliance for the Progress of Peru"] = {abbrev = "", color = "#1E5BA8", shortname = "",},
["Alliance for the Re-liberation of Somalia"] = {abbrev = "ARS", color = "#000000", shortname = "",},
["Alliance for the Republic (Nicaragua)"] = {abbrev = "APRE", color = "#800080", shortname = "",},
["Alliance for the Republic (Senegal)"] = {abbrev = "APR", color = "#704214", shortname = "",},
["Alliance for the Republic (Spain)"] = {abbrev = "", color = "#C00040", shortname = "",},
["Alliance for the Union of Romanians"] = {abbrev = "AUR", color = "#FCC224", shortname = "",},
["Alliance for Transformation for All"] = {abbrev = "", color = "#47A165", shortname = "",},
["Alliance for Workers' Liberty"] = {abbrev = "", color = "red", shortname = "",},
["Alliance Germany"] = {abbrev = "BD", color = "#ff1493", shortname = "",},
["Alliance of Builders of Islamic Iran"] = {abbrev = "ABII", color = "#3835ba", shortname = "",},
["Alliance of Chinese and Expatriates"] = {abbrev = "ACE", color = "#99221A", shortname = "",},
["ACT Teachers Partylist"] = {abbrev = "", color = "#ADD8E6", shortname = "ACT Teachers",},
["Alliance of Democrats (Lesotho)"] = {abbrev = "AD", color = "#7F0305", shortname = "",},
["Alliance of Democrats (Poland)"] = {abbrev = "SD", color = "#475196", shortname = "",},
["Alliance of European Conservatives and Reformists"] = {abbrev = "AECR", color = "#0054A5", shortname = "",},
["Alliance of European National Movements"] = {abbrev = "", color = "#000055", shortname = "",},
["Alliance of Free Democrats"] = {abbrev = "SZDSZ", color = "#1CA8E6", shortname = "",},
["Alliance of German Democrats"] = {abbrev = "ADD", color = "#1e5ea5", shortname = "",},
["Alliance of Independent Democrats in Europe"] = {abbrev = "ADIE", color = "#000066", shortname = "",},
["Alliance of Independent Social Democrats"] = {abbrev = "SNSD", color = "#990000", shortname = "",},
["Alliance of Independents"] = {abbrev = "LdU", color = "#019c3e", shortname = "",},
["Alliance of Liberals and Democrats (Romania)"] = {abbrev = "ALDE", color = "#005487", shortname = "",},
["Alliance of Liberals and Democrats for Europe group"] = {abbrev = "ALDE", color = "gold", shortname = "",},
["Alliance of Liberals and Democrats for Europe"] = {abbrev = "ALDE", color = "gold", shortname = "",},
["Alliance of Liberties"] = {abbrev = "", color = "#6FA293", shortname = "",},
["Alliance of Movements for the Emergence of Niger"] = {abbrev = "", color = "#01d9f2", shortname = "",},
["Alliance of National Forces (Czech Republic)"] = {abbrev = "", color = "#2D3092", shortname = "",},
["Alliance of Nationalist Left Forces of the MNR"] = {abbrev = "", color = "#EB737E", shortname = "",},
["Alliance of Patriots of Georgia"] = {abbrev = "APG", color = "#DB9F00", shortname = "",},
["Alliance of Primorje-Gorski Kotar"] = {abbrev = "", color = "#00c8c8", shortname = "",},
["Alliance of Progressives"] = {abbrev = "", color = "#D90000", shortname = "Progressives",},
["Alliance of Resuming British Sovereignty over Hong Kong and Independence"] = {abbrev = "", color = "#07263A", shortname = "",},
["Alliance of Social Democrats"] = {abbrev = "", color = "#B22222", shortname = "Social Democrats",},
["Alliance of the Centre (Italy)"] = {abbrev = "", color = "#89CFF0", shortname = "",},
["Alliance of the Christian Democratic Popular Front"] = {abbrev = "AFPCD", color = "#C1500C", shortname = "",},
["Alliance of the Democratic Centre (Spain)"] = {abbrev = "", color = "#00974A", shortname = "",},
["Alliance of the Forces of Progress (Senegal)"] = {abbrev = "AFP", color = "#000080", shortname = "",},
["Alliance of the Left"] = {abbrev = "", color = "#CD0F0F", shortname = "Alliance",},
["Alliance of the National Left"] = {abbrev = "", color = "#E5D03C", shortname = "",},
["Alliance of the New Citizen"] = {abbrev = "ANO", color = "#FFB200", shortname = "",},
["Alliance of the Spanish Republican Left"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Alliance of Vojvodina Hungarians"] = {abbrev = "VMSZ", color = "#00732B", shortname = "",},
["Alliance Party (Armenia)"] = {abbrev = "", color = "#0021C6", shortname = "",},
["Alliance Party (Cook Islands)"] = {abbrev = "", color = "#F2D030", shortname = "Alliance Party",},
["Alliance Party (Fiji)"] = {abbrev = "", color = "#6495ED", shortname = "Alliance",},
["Alliance Party (Malaysia)"] = {abbrev = "", color = "#000080", shortname = "Alliance",},
["Alliance Party (Panama)"] = {abbrev = "", color = "#E2211C", shortname = "",},
["Alliance Party (United States)"] = {abbrev = "", color = "#385AA3", shortname = "Alliance",},
["Alliance Party for the Sake of Azerbaijan"] = {abbrev = "", color = "#00AF68", shortname = "",},
["Alliance Party Guernsey"] = {abbrev = "", color = "#E60E29", shortname = "",},
["Alliance Party of Kenya"] = {abbrev = "APK", color = "#FBCC0C", shortname = "",},
["Alliance Party of Northern Ireland"] = {abbrev = "APNI", color = "#F6CB2F", shortname = "Alliance",},
["Alliance PSD+PC"] = {abbrev = "PSD+PC", color = "#ED2128", shortname = "",},
["Alliance Royale"] = {abbrev = "AR", color = "#EEC400", shortname = "",},
["Allied Peoples Movement"] = {abbrev = "APM", color = "#00FFFF", shortname = "",},
["ALLinHK"] = {abbrev = "", color = "#F4681D", shortname = "",},
["Almerian Neighborhood Union"] = {abbrev = "", color = "#244A91", shortname = "",},
["Almerian Regionalist Union"] = {abbrev = "", color = "#B59639", shortname = "",},
["Almerienses–Regionalists for Almería"] = {abbrev = "", color = "#043F63", shortname = "",},
["Aloha ʻĀina Party"] = {abbrev = "", color = "#ffd100", shortname = "Aloha ʻĀina",},
["Alsace d'Abord"] = {abbrev = "", color = "#80461B", shortname = "",},
["Alsace-Lorraine Party"] = {abbrev = "", color = "#000000", shortname = "",},
["Alsasua Group"] = {abbrev = "", color = "#73A745", shortname = "",},
["Alternatiba (Basque political party)"] = {abbrev = "", color = "#CE010C", shortname = "",},
["Alternativa (Italian political party)"] = {abbrev = "", color = "#EE7622", shortname = "Alternativa",},
["Alternativa de Govern"] = {abbrev = "", color = "#008E9C", shortname = "",},
["Alternativa Sí se puede"] = {abbrev = "", color = "#E00686", shortname = "",},
["Alternativas desde Abajo"] = {abbrev = "", color = "#33D100", shortname = "",},
["Alternative and Change Party"] = {abbrev = "", color = "#DBB84D", shortname = "",},
["Alternative Democratic Movement"] = {abbrev = "", color = "#ff7538", shortname = "",},
["Alternative Democratic Pole"] = {abbrev = "PDA", color = "#FEF71F", shortname = "",},
["Alternative Democratic Reform Party"] = {abbrev = "ADR", color = "#00AAE5", shortname = "",},
["Alternative Ecologists"] = {abbrev = "OE", color = "green", shortname = "",},
["Alternative Faso"] = {abbrev = "", color = "#DD198D", shortname = "",},
["Alternative for Arzúa"] = {abbrev = "", color = "#5A439B", shortname = "",},
["Alternative for Benalmádena"] = {abbrev = "", color = "#40287B", shortname = "",},
["Alternative for Benidorm"] = {abbrev = "", color = "#E9582C", shortname = "",},
["Alternative for Boadilla"] = {abbrev = "", color = "#37703E", shortname = "",},
["Alternative for Bulgarian Revival"] = {abbrev = "ABV", color = "#6A013A", shortname = "",},
["Alternative for Castile and León"] = {abbrev = "", color = "#808080", shortname = "",},
["Alternative for Change"] = {abbrev = "AC", color = "#87CEFA", shortname = "",},
["Alternative for Changes"] = {abbrev = "APN", color = "#1A70AB", shortname = "",},
["Alternative for Germany"] = {abbrev = "AfD", color = "#009EE0", shortname = "",},
["Alternative for Gran Canaria"] = {abbrev = "", color = "#A0A0A0", shortname = "",},
["Alternative for Social Advance"] = {abbrev = "", color = "#FF7F7F", shortname = "",},
["Alternative for Sweden"] = {abbrev = "", color = "#000095", shortname = "",},
["Alternative for Italy"] = {abbrev = "APLI", color = "#2A295C", shortname = "",},
["Alternative Forces for Renewal and Emergence"] = {abbrev = "", color = "#68B0E5", shortname = "",},
["Alternative Island"] = {abbrev = "", color = "#E57815", shortname = "",},
["Alternative League for Haitian Progress and Emancipation"] = {abbrev = "LAPEH", color = "#F3E601", shortname = "",},
["Alternative Left"] = {abbrev = "", color = "#960018", shortname = "",},
["Alternative List"] = {abbrev = "", color = "#ec018c", shortname = "",},
["Alternative Moroneran Assembly"] = {abbrev = "", color = "#55BA51", shortname = "",},
["Alternative National Congress"] = {abbrev = "ANC", color = "#D71800", shortname = "",},
["Alternative Party"] = {abbrev = "", color = "#E62E00", shortname = "",},
["Always Forward (Brazil)"] = {abbrev = "", color = "#00B7EB", shortname = "PSDB-Cidadania",},
["Amaiur (1979 coalition)"] = {abbrev = "", color = "#66669A", shortname = "Amaiur",},
["Amaiur"] = {abbrev = "", color = "#087178", shortname = "",},
["Amal Movement"] = {abbrev = "", color = "#008000", shortname = "Amal",},
["Amani Coalition"] = {abbrev = "", color = "#FFFF00", shortname = "",},
["Amanat (political party)"] = {abbrev = "", color = "#3AB4AD", shortname = "Amanat",},
["Amani National Congress"] = {abbrev = "", color = "brown", shortname = "Amani",},
["Amarillos por Chile"] = {abbrev = "AxCh", color = "#FAB700", shortname = "",},
["Ambedkar Kranti Dal"] = {abbrev = "AKD", color = "#B62559", shortname = "",},
["Ambedkar National Congress"] = {abbrev = "ANC", color = "#FFFFCC", shortname = "",},
["Ambedkar People's Movement"] = {abbrev = "APM", color = "tan", shortname = "",},
["Ambedkar Puratchikara Makkal Katchi"] = {abbrev = "APMK", color = "grey", shortname = "",},
["Ambedkar Samaj Party"] = {abbrev = "ASP", color = "#58D3F7", shortname = "",},
["Ambedkarite Party of India"] = {abbrev = "API", color = "blue", shortname = "",},
["America First Party (1943)"] = {abbrev = "", color = "Yellow", shortname = "America First",},
["America First Party (2002)"] = {abbrev = "", color = "#CC66FF", shortname = "",},
["American Constitution Party (Colorado)"] = {abbrev = "", color = "#A356DE", shortname = "American Constitution",},
["American Constitution Party"] = {abbrev = "", color = "transparent", shortname = "Constitution",},
["American Delta Party"] = {abbrev = "", color = "#355E39", shortname = "American Delta",},
["American Freedom Party"] = {abbrev = "", color = "#DDDDBB", shortname = "American Freedom",},
["American Independent Party"] = {abbrev = "AI", color = "#800080", shortname = "American Independent",},
["American Labor Party (1932)"] = {abbrev = "", color = "#0000CC", shortname = "American Labor",},
["American Labor Party"] = {abbrev = "", color = "#FF6347", shortname = "American Labor",},
["American Party (1924)"] = {abbrev = "", color = "#B340D1", shortname = "American",},
["American Party (1969)"] = {abbrev = "", color = "#CC66FF", shortname = "American",},
["American Party of South Carolina"] = {abbrev = "", color = "#DDDDDD", shortname = "American",},
["American Patriot Party"] = {abbrev = "", color = "orange", shortname = "",},
["American Popular Revolutionary Alliance"] = {abbrev = "APRA", color = "#DF0101", shortname = "",},
["American Reform Party"] = {abbrev = "", color = "#C80000", shortname = "",},
["American Republican"] = {abbrev = "", color = "#005B96", shortname = "",},
["American Shopping Party"] = {abbrev = "", color = "#e23292", shortname = "American Shopping",},
["American Solidarity Party"] = {abbrev = "", color = "#FF7F00", shortname = "American Solidarity",},
["American Third Position Party"] = {abbrev = "", color = "#0018A8", shortname = "American Third Position",},
["Americans Coming Together Party"] = {abbrev = "ACT", color = "#890200", shortname = "Americans Coming Together",},
["Americans Elect"] = {abbrev = "", color = "#FFFF88", shortname = "",},
["Ames Novo"] = {abbrev = "", color = "#0C8A43", shortname = "",},
["Amhara Democratic Party"] = {abbrev = "", color = "#597E09", shortname = "",},
["AMIGO Movement"] = {abbrev = "AMIGO", color = "#000000", shortname = "",},
["Amma Makkal Munnettra Kazhagam"] = {abbrev = "AMMK", color = "#034F38", shortname = "",},
["Amplitude (political party)"] = {abbrev = "", color = "#FCE883", shortname = "Amplitude",},
["Amra Bangali"] = {abbrev = "AMB", color = "#FF66CC", shortname = "",},
["Amsterdamska Koalicija"] = {abbrev = "", color = "#62ba49", shortname = "",},
["Amtsakhara"] = {abbrev = "", color = "#FE2726", shortname = "",},
["An Rabharta Glas"] = {abbrev = "ARG-GL", color = "#488A89", shortname = "An Rabharta Glas",},
["Anaithindia Dravidar Samudaya Munnetra Kazhagam"] = {abbrev = "ADSMK", color = "peru", shortname = "",},
["Anaithinthiya Thamizhaga Munnetra Kazhagam"] = {abbrev = "ATMK", color = "gray", shortname = "",},
["Anakpawis"] = {abbrev = "", color = "#DC143C", shortname = "",},
["Anarchist Pogo Party of Germany"] = {abbrev = "APPD", color = "#000000", shortname = "",},
["Anatolia Party"] = {abbrev = "", color = "#1575BF", shortname = "AnaParti",},
["Anchalik Gana Morcha"] = {abbrev = "AGM", color = "#FD5B78", shortname = "",},
["Ancestor Alliance"] = {abbrev = "ATA", color = "#373736", shortname = "",},
["And-Jëf/African Party for Democracy and Socialism"] = {abbrev = "", color = "red", shortname = "",},
["Andaluces Levantaos"] = {abbrev = "AL", color = "#69C188", shortname = "",},
["Andalucía por Sí"] = {abbrev = "", color = "#83C141", shortname = "",},
["Andalusia Assembly"] = {abbrev = "", color = "#088A00", shortname = "",},
["Andalusian Coalition"] = {abbrev = "", color = "#006633", shortname = "",},
["Andalusian Convergence"] = {abbrev = "", color = "#5AB600", shortname = "",},
["Andalusian Democratic Centre"] = {abbrev = "", color = "#0C8902", shortname = "",},
["Andalusian Federation of Independents"] = {abbrev = "", color = "#138B59", shortname = "",},
["Andalusian Forum"] = {abbrev = "", color = "#00AA29", shortname = "",},
["Andalusian Front of Liberation"] = {abbrev = "", color = "#567E64", shortname = "",},
["Andalusian Horticulture Party"] = {abbrev = "", color = "#314910", shortname = "",},
["Andalusian Left (2017)"] = {abbrev = "", color = "#86B81C", shortname = "",},
["Andalusian Left"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Andalusian Liberation"] = {abbrev = "", color = "#2FB461", shortname = "",},
["Andalusian Nation"] = {abbrev = "", color = "#008800", shortname = "",},
["Andalusian Nationalist People"] = {abbrev = "", color = "#00B252", shortname = "",},
["Andalusian Party"] = {abbrev = "PA", color = "#005931", shortname = "",},
["Andalusian People's Initiative"] = {abbrev = "", color = "#007735", shortname = "",},
["Andalusian Popular Unity"] = {abbrev = "", color = "#E20A19", shortname = "",},
["Andalusian Progress Party"] = {abbrev = "", color = "#4DCA8B", shortname = "",},
["Andalusian Regional Unity"] = {abbrev = "", color = "#546B23", shortname = "",},
["Andalusian Social Democratic Party"] = {abbrev = "", color = "#218A31", shortname = "",},
["Andalusian Social Liberal Party"] = {abbrev = "", color = "#2F7769", shortname = "",},
["Andalusian Solidary Independent Republican Party"] = {abbrev = "", color = "#6B6918", shortname = "",},
["Andalusian Spring"] = {abbrev = "", color = "#1EA24B", shortname = "",},
["Andalusian Unity"] = {abbrev = "", color = "#FEED01", shortname = "",},
["Andalusian Workers' Group"] = {abbrev = "", color = "#D03634", shortname = "",},
["Andalusians of Jaén United"] = {abbrev = "", color = "#00AC32", shortname = "",},
["Andecha Astur"] = {abbrev = "", color = "#A53042", shortname = "",},
["Anders Lange's Party"] = {abbrev = "", color = "#0047e0", shortname = "Anders Lange's",},
["Andorra Forward"] = {abbrev = "", color = "#2B2D84", shortname = "Endavant",},
["Andorra for Change"] = {abbrev = "", color = "#7A7A78", shortname = "",},
["Andover Alliance"] = {abbrev = "", color = "#bb00bb", shortname = "",},
["Andriy Baloha's Team"] = {abbrev = "KAB", color = "green", shortname = "",},
["A New and United Guyana"] = {abbrev = "ANUG", color = "#FFA500", shortname = "",},
["Ang Kapatiran"] = {abbrev = "", color = "#003C74", shortname = "",},
["Angkatan Perpaduan Ummah"] = {abbrev = "APU", color = "yellow", shortname = "",},
["Angolan Democratic Forum"] = {abbrev = "FDA", color = "#7DE8F4", shortname = "",},
["Angolan National Democratic Party"] = {abbrev = "PNDA", color = "#55FF63", shortname = "",},
["Angry Victorians Party"] = {abbrev = "AVP", color = "#BDAF77", shortname = "Angry Victorians",},
["Anguilla Democratic Party"] = {abbrev = "ADP", color = "#ffd700", shortname = "",},
["Anguilla for Good Government"] = {abbrev = "", color = "orange", shortname = "",},
["Anguilla National Alliance"] = {abbrev = "ANA", color = "#0087DC", shortname = "",},
["Anguilla Patriotic Movement"] = {abbrev = "APM", color = "#00008B", shortname = "",},
["Anguilla Progressive Movement"] = {abbrev = "APM", color = "#96CDEF", shortname = "",},
["Anguilla Progressive Party"] = {abbrev = "APP", color = "#FF6600", shortname = "",},
["Anguilla Strategic Alliance"] = {abbrev = "ANSA", color = "#FF1111", shortname = "",},
["Anguilla United Front (old)"] = {abbrev = "", color = "#095392", shortname = "",},
["Anguilla United Front"] = {abbrev = "AUF", color = "#ffc614", shortname = "",},
["Anguilla United Movement"] = {abbrev = "AUM", color = "#008000", shortname = "",},
["Anguilla United Party"] = {abbrev = "AUP", color = "#39944A", shortname = "",},
["Angus Independents Representatives"] = {abbrev = "", color = "#DDDDDD", shortname = "Angus Independents",},
["Anhui clique"] = {abbrev = "", color = "#a52a2a", shortname = "",},
["Animal Justice Auckland"] = {abbrev = "", color = "#A52A2A", shortname = "",},
["Animal Justice Party of Finland"] = {abbrev = "EOP", color = "#FCBB01", shortname = "",},
["Animal Justice Party"] = {abbrev = "", color = "#A52A2A", shortname = "",},
["Animal Justice Party Aotearoa New Zealand"] = {abbrev = "AJPANZ", color = "#5C558C", shortname = "Animal Justice",},
["Animal Party Cyprus"] = {abbrev = "", color = "#04d404", shortname = "",},
["Animal Protection Party of Canada"] = {abbrev = "", color = "#336033", shortname = "Animal Protection",},
["Animal Protection Party"] = {abbrev = "", color = "#e9e9e9", shortname = "Animal Protection",},
["Animal Rights Party"] = {abbrev = "TRP", color = "lightgreen", shortname = "",},
["Animal Welfare Party"] = {abbrev = "", color = "#EE3263", shortname = "Animal Welfare",},
["Animalist Party Against Mistreatment of Animals"] = {abbrev = "PACMA", color = "#ADBE18", shortname = "",},
["Animalist Party with the Environment"] = {abbrev = "PACMA", color = "#22D65D", shortname = "",},
["Animalist Party"] = {abbrev = "PA", color = "#9C0D99", shortname = "",},
["Animals First"] = {abbrev = "", color = "#FFFF00", shortname = "",},
["Anna Democratic Human Rights Movement Party of India"] = {abbrev = "", color = "#C0C0C0", shortname = "Anna DHRM",},
["ANO 2011"] = {abbrev = "ANO", color = "#261060", shortname = "",},
["Another Democracy is Possible"] = {abbrev = "", color = "#F75921", shortname = "",},
["Another Sant Cugat–Citizen Platform for Sant Cugat"] = {abbrev = "", color = "#9DC5C2", shortname = "",},
["Antarsya"] = {abbrev = "", color = "#800000", shortname = "",},
["Antequera Sí Se Puede"] = {abbrev = "", color = "#77BF59", shortname = "",},
["Anti Common Market and Free Trade Party"] = {abbrev = "ACMFT", color = "#e6e6fa", shortname = "",},
["Anti H-Block"] = {abbrev = "AHB", color = "#008800", shortname = "Anti H-Block",},
["Anti-Administration Party (US)"] = {abbrev = "", color = "#CCFF66", shortname = "Anti-Administration",},
["Anti-Austerity Alliance–People Before Profit"] = {abbrev = "AAA–PBP", color = "#E5E500", shortname = "",},
["Anti-Austerity Alliance"] = {abbrev = "AAA", color = "#FFFF00", shortname = "Anti-Austerity Alliance",},
["Anti-Capitalist Alliance"] = {abbrev = "", color = "#FF0066", shortname = "",},
["Anti-capitalists"] = {abbrev = "", color = "#62CC62", shortname = "",},
["Anti-Communist Bolivian Front"] = {abbrev = "", color = "#5866B1", shortname = "",},
["Anti-Corruption and Justice Party (Spain)"] = {abbrev = "", color = "#F7EA21", shortname = "",},
["Anti Corruption Dynamic Party"] = {abbrev = "ACDP", color = "#ba0c2f", shortname = "",},
["Anti-Corruption Foundation"] = {abbrev = "ACF", color = "#CC0000", shortname = "",},
["Anti-Corruption Ireland"] = {abbrev = "", color = "#00cc00", shortname = "",},
["Anti-Corruption Party"] = {abbrev = "PAC", color = "#8dade3", shortname = "",},
["Anti-Fascist People's Freedom League"] = {abbrev = "AFPFL", color = "#DB2916", shortname = "",},
["Anti-fascist Revolutionary Left"] = {abbrev = "", color = "#AE2D2D", shortname = "",},
["Anti-Federalist League"] = {abbrev = "", color = "#F6CB2F", shortname = "",},
["Anti-Imperialist National Democratic Front"] = {abbrev = "", color = "#007FFF", shortname = "",},
["Anti-Jacksonian Party"] = {abbrev = "", color = "#FFE6B0", shortname = "Anti-Jacksonian",},
["Anti-Jacksonian Party/Hold"] = {abbrev = "", color = "#FFF5D7", shortname = "",},
["Anti-Liberal Catholic Alliance"] = {abbrev = "ACA", color = "#34457E", shortname = "",},
["Anti-Masonic Party"] = {abbrev = "", color = "#FFFF99", shortname = "Anti-Masonic",},
["Anti-Masonic Party/Hold"] = {abbrev = "", color = "#FFFFE6", shortname = "",},
["Anti-Ministerialists"] = {abbrev = "", color = "red", shortname = "",},
["Anti-Monopoly Party (US)"] = {abbrev = "", color = "#66F500", shortname = "Anti-Monopoly",},
["Anti-Nebraska movement"] = {abbrev = "", color = "#E4D96F", shortname = "Anti-Nebraska",},
["Anti-PowerPoint Party"] = {abbrev = "", color = "#FF0000", shortname = "",},
["Antiprohibitionists on Drugs"] = {abbrev = "", color = "gold", shortname = "Antiprohibitionists",},
["Anti-Revolutionary Party"] = {abbrev = "ARP", color = "#008F90", shortname = "",},
["Anti-Socialist Party"] = {abbrev = "", color = "#BFFF00", shortname = "Anti-Socialist",},
["Anti-Trident Party"] = {abbrev = "ATP", color = "#CC0000", shortname = "",},
["Anti-Waste League"] = {abbrev = "", color = "lightblue", shortname = "",},
["Antigua and Barbuda Labour Party"] = {abbrev = "ABLP", color = "#EE3422", shortname = "",},
["Antigua Trades and Labour Union"] = {abbrev = "ATLU", color = "#BC353C", shortname = "",},
["Antipersonalist Radical Civic Union"] = {abbrev = "", color = "#641C34", shortname = "",},
["Aontacht Éireann"] = {abbrev = "AÉ", color = "#22FF00", shortname = "Aontacht Éireann",},
["Aontú"] = {abbrev = "Aon", color = "#44532A", shortname = "Aontú",},
["Aosta Valley (political coalition)"] = {abbrev = "", color = "#48D1CC", shortname = "Aosta Valley",},
["Aotearoa Legalise Cannabis Party"] = {abbrev = "", color = "#33CC33", shortname = "Legalise Cannabis",},
["Apna Dal"] = {abbrev = "AD", color = "#FF33CC", shortname = "",},
["Apna Dal (Kamerawadi)"] = {abbrev = "AD(K)", color = "#FF33CC", shortname = "",},
["Apna Dal (Sonelal)"] = {abbrev = "AD(S)", color = "#27176D", shortname = "",},
["Appointed"] = {abbrev = "", color = "#DDDDDD", shortname = "",},
["Approval Voting Party"] = {abbrev = "", color = "MidnightBlue", shortname = "Approval Voting",},
["April Fifth Action"] = {abbrev = "", color = "#FC0000", shortname = "",},
["Apruebo Dignidad"] = {abbrev = "", color = "#FC415C", shortname = "",},
["Aq Jol Democratic Party"] = {abbrev = "", color = "#043381", shortname = "Aq Jol",},
["Ar-Namys"] = {abbrev = "", color = "#0203FE", shortname = "",},
["Ara Eivissa"] = {abbrev = "", color = "#1FC6BC", shortname = "",},
["Ara Maó"] = {abbrev = "", color = "#39AFB1", shortname = "",},
["Ara Més"] = {abbrev = "", color = "#84BC87", shortname = "",},
["Ara Reus"] = {abbrev = "", color = "#71152C", shortname = "",},
["Arab Democratic Nasserist Party"] = {abbrev = "", color = "#305E30", shortname = "",},
["Arab Democratic Party (Israel)"] = {abbrev = "", color = "#009900", shortname = "Mada",},
["Arab Democratic Party (Lebanon)"] = {abbrev = "", color = "green", shortname = "",},
["ARAB Europeans for the Canaries"] = {abbrev = "", color = "#8BD4F7", shortname = "",},
["Arab Liberation Movement"] = {abbrev = "", color = "#CD7F32", shortname = "",},
["Arab Liberation Party"] = {abbrev = "", color = "#ff0000", shortname = "",},
["Arab List for Bedouin and Villagers"] = {abbrev = "", color = "#C61318", shortname = "",},
["Arab Socialist Ba'ath Party – Iraq Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",},
["Arab Socialist Ba'ath Party – Lebanon Region"] = {abbrev = "", color = "#017B48", shortname = "",},
["Arab Socialist Ba'ath Party – Syria Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",},
["Arab Socialist Ba'ath Party – Yemen Region"] = {abbrev = "", color = "#017B48", shortname = "Ba'ath Party",},
["Arab Socialist Movement"] = {abbrev = "", color = "red", shortname = "",},
["Arab Socialist Union (Egypt)"] = {abbrev = "ASU", color = "#F0001C", shortname = "",},
["Arab Socialist Union (Iraq)"] = {abbrev = "", color = "#F0001C", shortname = "",},
["Arab Socialist Union (Libya)"] = {abbrev = "", color = "#F0001C", shortname = "",},
["Arab Socialist Union Party (Syria)"] = {abbrev = "", color = "#F0001C", shortname = "",},
["Arabic Democratic Union Party"] = {abbrev = "", color = "green", shortname = "",},
["Aragón Existe"] = {abbrev = "", color = "#008050", shortname = "",},
["Aragón Sí Puede"] = {abbrev = "", color = "#690194", shortname = "",},
["Aragon United Citizens Party"] = {abbrev = "", color = "#084108", shortname = "",},
["Aragonese Autonomist Front"] = {abbrev = "", color = "#F93235", shortname = "",},
["Aragonese Bloc"] = {abbrev = "", color = "#2BAE20", shortname = "",},
["Aragonese Candidacy of Democratic Unity"] = {abbrev = "", color = "#473C38", shortname = "",},
["Aragonese Christian Democracy"] = {abbrev = "", color = "#1E90FF", shortname = "",},
["Aragonese Initiative"] = {abbrev = "", color = "#FFA500", shortname = "",},
["Aragonese Land"] = {abbrev = "", color = "#008300", shortname = "",},
["Aragonese Party"] = {abbrev = "PAR", color = "#FFCC66", shortname = "",},
["Aragonese Union (1917)"] = {abbrev = "", color = "#E67A4A", shortname = "",},
["Arakan Front Party"] = {abbrev = "AFP", color = "#FE0000", shortname = "",},
["Arakan League for Democracy"] = {abbrev = "", color = "#CC0000", shortname = "",},
["Arakan National Party"] = {abbrev = "ANP", color = "#EB1D27", shortname = "",},
["Aralar (Basque political party)"] = {abbrev = "", color = "#BD0000", shortname = "Aralar",},
["Aran Amassa"] = {abbrev = "", color = "#5B1408", shortname = "",},
["Aranese Democratic Convergence"] = {abbrev = "", color = "#E9960D", shortname = "",},
["Aranese Democratic Union"] = {abbrev = "", color = "#274737", shortname = "",},
["Arangkada San Joseño"] = {abbrev = "AR", color = "#FF8000", shortname = "",},
["Aranzadi"] = {abbrev = "", color = "#E61A74", shortname = "",},
["Archipelago Tomorrow"] = {abbrev = "", color = "#ED7F10", shortname = "",},
["Arcos en Común"] = {abbrev = "", color = "#AF084C", shortname = "",},
["Arganda Sí Puede"] = {abbrev = "", color = "#438D98", shortname = "",},
["Argentine People's Union"] = {abbrev = "UDELPA", color = "#00708B", shortname = "",},
["Argentine Socialist Party"] = {abbrev = "PSA", color = "#FF9900", shortname = "",},
["Arizona Libertarian Party"] = {abbrev = "", color = "#FED105", shortname = "Libertarian",},
["Arizona Progressive Democratic Party"] = {abbrev = "", color = "#87CEEB", shortname = "",},
["Armed Forces of Equatorial Guinea"] = {abbrev = "", color = "#C3B091", shortname = "",},
["Armed Forces Republic of Indonesia"] = {abbrev = "", color = "#FF0000", shortname = "Military",},
["Armenia Alliance"] = {abbrev = "", color = "#1D2E69", shortname = "",},
["Armenia is Our Home"] = {abbrev = "", color = "#E40510", shortname = "",},
["Armenian Communist Party"] = {abbrev = "", color = "red", shortname = "Communist",},
["Armenian National Congress"] = {abbrev = "ANC", color = "#0033A0", shortname = "",},
["Armenian Revolutionary Federation"] = {abbrev = "ARF", color = "#AA0000", shortname = "",},
["Aroha Ngia Tatou"] = {abbrev = "", color = "#FFFFFF", shortname = "",},
["Arona Independent Electoral Movement"] = {abbrev = "", color = "#3AA346", shortname = "",},
["Arrow Cross Party"] = {abbrev = "NYKP", color = "#964B00", shortname = "",},
["Article 45 Concern Group"] = {abbrev = "A45CG", color = "#2906CC", shortname = "",},
["Article 50 (political party)"] = {abbrev = "", color = "#ffa500", shortname = "",},
["Article One (political party)"] = {abbrev = "", color = "#D21B30", shortname = "",},
["Artsakh Freedom Party"] = {abbrev = "", color = "#020041", shortname = "",},
["Arts Party"] = {abbrev = "", color = "#800080", shortname = "",},
["Aruban Democratic Party"] = {abbrev = "PDA", color = "#59479C", shortname = "",},
["Aruban Liberal Organization"] = {abbrev = "OLA", color = "#00BFFF", shortname = "",},
["Aruban Patriotic Movement"] = {abbrev = "MPA", color = "#F70084", shortname = "",},
["Aruban Patriotic Party"] = {abbrev = "PPA", color = "#FF8C00", shortname = "",},
["Aruban People's Party"] = {abbrev = "AVP", color = "#65B22E", shortname = "",},
["Aruban Sovereignty Movement"] = {abbrev = "MAS", color = "#54C2E3", shortname = "",},
["Arunachal Congress"] = {abbrev = "", color = "#CCCCFF", shortname = "",},
["Asankhya Samaj Party"] = {abbrev = "ASP", color = "#D0A9F5", shortname = "",},
["Asar (political party)"]= {abbrev = "", color = "#FF0000", shortname = "Asar",},
["Asenso Abrenio"] = {abbrev = "", color = "#ED4B9E", shortname = "",},
["Asenso Manileño"] = {abbrev = "", color = "#2F358D", shortname = "",},
["Ashfield Independents"] = {abbrev = "", color = "pink", shortname = "Ashfield Ind.",},
["Ashford Independents"] = {abbrev = "AI", color = "#BDD005", shortname = "Ashford Ind.",},
["Ashkali Party for Integration"] = {abbrev = "PAI", color = "black", shortname = "",},
["Asia Pacific United Party"] = {abbrev = "", color = "#33FF99", shortname = "Asia Pacific",},
["Askatasuna"] = {abbrev = "", color = "#008229", shortname = "",},
["Asom Gana Parishad"] = {abbrev = "AGP", color = "#2B3F7B", shortname = "",},
["Aspire (political party)"] = {abbrev = "", color = "#FF5800", shortname = "Aspire",},
["Assam Jatiya Parishad"] = {abbrev = "AJP", color = "#0048BA", shortname = "",},
["Assam United Democratic Front"] = {abbrev = "AUDF", color = "green", shortname = "",},
["Assembleia do Povo Unido"] = {abbrev = "", color = "#CF1C3A", shortname = "",},
["Assembly for Asturias"] = {abbrev = "", color = "#A70E25", shortname = "",},
["Assembly for Cantabria"] = {abbrev = "", color = "#C1272F", shortname = "",},
["Assembly for Tarragona"] = {abbrev = "", color = "#793C8F", shortname = "",},
["Assembly for Unity"] = {abbrev = "", color = "#E30614", shortname = "",},
["Assembly of Alcalá"] = {abbrev = "", color = "#FFBD33", shortname = "",},
["Assembly of Greeks"] = {abbrev = "ES", color = "#007CC2", shortname = "",},
["Assembly of Independents"] = {abbrev = "", color = "#E5CC00", shortname = "Independents",},
["Assembly of People of Kazakhstan"] = {abbrev = "", color = "#1A4C96", shortname = "",},
["Assembly of the People United"] = {abbrev = "APU", color = "#094779", shortname = "",},
["Assembly to Energize Japan"] = {abbrev = "", color = "#F36F21", shortname = "",},
["Association for Somogy"] = {abbrev = "SE", color = "#404040", shortname = "",},
["Association for the Defense of Macau Interests"] = {abbrev = "ADIM", color = "#000080", shortname = "",},
["Association for Defence of Revolution Values"] = {abbrev = "ADRV", color = "#FFA500", shortname = "",},
["Association for Democracy Activism"] = {abbrev = "", color = "yellow", shortname = "",},
["Association for Democracy and Social Well-Being of Macau"] = {abbrev = "", color = "#FFFACD", shortname = "",},
["Association for Helping the Community and Engagement with the People"] = {abbrev = "", color = "#000000", shortname = "",},
["Association for Joint Efforts to Improve the Community"] = {abbrev = "", color = "#64B4B5", shortname = "",},
["Association for Justice and Equality"] = {abbrev = "", color = "#034626", shortname = "Justice & Equality",},
["Association for Promoting the Economy of Macau"] = {abbrev = "APPEM", color = "yellow", shortname = "",},
["Association for Promotion of Civic Rights"] = {abbrev = "", color = "#13241E", shortname = "",},
["Association for Promotion of Social Services and Education"] = {abbrev = "ARSEM", color = "#4F3286", shortname = "",},
["Association for Yugoslav Democratic Initiative"] = {abbrev = "UJDI", color = "#08FFFF", shortname = "",},
["Association for the Advancement of Civil Rights"] = {abbrev = "AACR", color = "#0047AB", shortname = "",},
["Association for the Promotion of Democracy, Freedom, Human Rights and Rule of Law of Macau (Macau Ideals)"] = {abbrev = "", color = "#822571", shortname = "",},
["Association for the Rebirth of Madagascar"] = {abbrev = "AREMA", color = "#FF0000", shortname = "",},
["Association of Candidates"] = {abbrev = "", color = "#FCF318", shortname = "Kattusseqatigiit",},
["Association of Combatant Clerics"] = {abbrev = "ACC", color = "#098CDC", shortname = "",},
["Association of Free Democrats"] = {abbrev = "BFD", color = "#FFED00", shortname = "",},
["Association of Independent Members of Parliament"] = {abbrev = "", color = "#DCDCDC", shortname = "",},
["Association of Islamic Revolution Loyalists"] = {abbrev = "AIRL", color = "#24b8fe", shortname = "",},
["Association of Italians of Romania"] = {abbrev = "RO.AS.IT", color = "blue", shortname = "",},
["Association of Macedonians of Romania"] = {abbrev = "DMR", color = "#660000", shortname = "",},
["Association of Poles in Lithuania"] = {abbrev = "ZPL", color = "#F23F43", shortname = "",},
["Association of Timorese Heroes"] = {abbrev = "", color = "#000000", shortname = "",},
["Associative Movement Italians Abroad"] = {abbrev = "MAIE", color = "#333B8E", shortname = "",},
["Associative Movement of Italians Abroad"] = {abbrev = "MAIE", color = "#333B8E", shortname = "",},
["Assyrian Democratic Movement"] = {abbrev = "", color = "#5f21a9", shortname = "",},
["Asturian Democratic Convergence"] = {abbrev = "", color = "#4ABAB5", shortname = "",},
["Asturian Left Bloc"] = {abbrev = "", color = "#B60006", shortname = "",},
["Asturian Left"] = {abbrev = "", color = "#FFCC00", shortname = "",},
["Asturian Nationalist Council"] = {abbrev = "", color = "#ADD8E6", shortname = "",},
["Asturian Nationalist Unity"] = {abbrev = "", color = "#0CACAD", shortname = "",},
["Asturian Renewal Union–Asturianist Party"] = {abbrev = "", color = "#106194", shortname = "",},
["Asturian Renewal Union"] = {abbrev = "URAS", color = "#155BC2", shortname = "",},
["Asturias Forum"] = {abbrev = "FAC", color = "#10286B", shortname = "",},
["Asturias Forum (2021)"] = {abbrev = "", color = "#4AC0FF", shortname = "Foro",},
["Ata Meken Socialist Party"] = {abbrev = "", color = "#D2161D", shortname = "Ata-Meken",},
["Ata-Jurt Kyrgyzstan"] = {abbrev = "", color = "#1f247b", shortname = "",},
["Ata-Zhurt"] = {abbrev = "", color = "#3173C9", shortname = "",},
["Atarrabia Taldea"] = {abbrev = "", color = "#FFAA01", shortname = "",},
["Atassut"] = {abbrev = "", color = "#2E2C7B", shortname = "",},
["Atassut (2019)"] = {abbrev = "", color = "#2B9996", shortname = "",},
["Atlantica Party"] = {abbrev = "", color = "#5073B8", shortname = "Atlantica",},
["Attack (political party)"] = {abbrev = "", color = "#344D28", shortname = "Ataka",},
["Attica Project"] = {abbrev = "", color = "#4BB8B3", shortname = "",},
["Atulya Bharat Party"] = {abbrev = "ABP", color = "#FEFEFE", shortname = "",},
["Auckland Future"] = {abbrev = "", color = "#00AEEF", shortname = "",},
["AUna Comunitat Valenciana"] = {abbrev = "", color = "#FE5D2F", shortname = "",},
["Auseva Red"] = {abbrev = "", color = "#515151", shortname = "",},
["Australia First Party"] = {abbrev = "AFP", color = "#5D8AA5", shortname = "Australia First",},
["Australia Party"] = {abbrev = "", color = "#7F007F", shortname = "Australia",},
["Australian Citizens Party"] = {abbrev = "", color = "#656600", shortname = "",},
["Australian Conservatives"] = {abbrev = "", color = "#00B9FB", shortname = "",},
["Australian Democrats"] = {abbrev = "", color = "#FFCD00", shortname = "Democrats",},
["Australian Federation Party"] = {abbrev = "", color = "#538a2e", shortname = "",},
["Australian Greens Victoria"] = {abbrev = "", color = "#10C25B", shortname = "Greens",},
["Australian Greens"] = {abbrev = "", color = "#00a651", shortname = "Greens",},
["Australian Labor Party (Australian Capital Territory Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (New South Wales Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (Northern Territory Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (NSW)"] = {abbrev = "", color = "#DE3533", shortname = "Labor (NSW)",},
["Australian Labor Party (Queensland Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (South Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (Tasmanian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (Victorian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party (Western Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labor",},
["Australian Labor Party"] = {abbrev = "ALP", color = "#DE3533", shortname = "Labor",},
["Australian Labour Party (Western Australian Branch)"] = {abbrev = "", color = "#DE3533", shortname = "Labour",},
["Australian Motoring Enthusiast Party"] = {abbrev = "AMEP", color = "#0528B6", shortname = "Motoring Enthusiasts",},
["Australian Party"] = {abbrev = "", color = "#FB607F", shortname = "",},
["Australian People's Party"] = {abbrev = "", color = "#800020", shortname = "",},
["Australian Progressive Coalition"] = {abbrev = "", color = "#ffb400", shortname = "",},
["Australian Sex Party"] = {abbrev = "", color = "#FFBF00", shortname = "",},
["Australian Sports Party"] = {abbrev = "ASP", color = "#0000FF", shortname = "Sports",},
["Australians Against Further Immigration"] = {abbrev = "AAFI", color = "#964B00", shortname = "",},
["Austraya Political Party"] = {abbrev = "", color = "#0099AA", shortname = "",},
["Austrian Nazism"] = {abbrev = "DNSAP", color = "#964B00", shortname = "",},
["Austrian People's Party (2017)"] = {abbrev = "ÖVP", color = "#63C3D0", shortname = "",},
["Austrian People's Party"] = {abbrev = "ÖVP", color = "#000000", shortname = "",},
["Authentic Croatian Party of Rights"] = {abbrev = "", color = "#000000", shortname = "",},
["Authentic Croatian Peasant Party"] = {abbrev = "", color = "darkgreen", shortname = "",},
["Authentic Democratic Christian Movement"] = {abbrev = "MCDA", color = "darkgreen", shortname = "",},
["Authentic Integral Development"] = {abbrev = "DIA", color = "#eb3213", shortname = "",},
["Authentic Liberal Party"] = {abbrev = "PLA", color = "darkred", shortname = "",},
["Authentic Limonense Party"] = {abbrev = "PAL", color = "#66CC33", shortname = "",},
["Authentic Party of the Mexican Revolution"] = {abbrev = "PARM", color = "Olive", shortname = "",},
["Authentic Puntarenense Party"] = {abbrev = "PAP", color = "#F1800E", shortname = "",},
["Authentic Radical Liberal Party"] = {abbrev = "PLRA", color = "#2E3092", shortname = "",},
["Authentic Renewal Organization"] = {abbrev = "", color = "#B8FEFC", shortname = "",},
["Authentic Revolutionary Nationalist Movement"] = {abbrev = "", color = "#8079CE", shortname = "",},
["Authentic Revolutionary Party (Panama)"] = {abbrev = "", color = "#00A859", shortname = "",},
["Authentic Revolutionary Party"] = {abbrev = "", color = "#5A4FCF", shortname = "",},
["Authentic Socialist Party (Argentina)"] = {abbrev = "PSA", color = "#DD2C1A", shortname = "Authentic Socialist Party",},
["Authentic Socialist Party (Chile)"] = {abbrev = "", color = "darkred", shortname = "",},
["Authenticity and Modernity Party"] = {abbrev = "PAM", color = "#0047AB", shortname = "",},
["Authenticity Party"] = {abbrev = "", color = "black", shortname = "",},
["Autodeterminaziorako Bilgunea"] = {abbrev = "", color = "#B0C50E", shortname = "",},
["Autonomies for Bolivia"] = {abbrev = "APB", color = "#004D00", shortname = "",},
["Autonomist Monarchist Federation"] = {abbrev = "", color = "#E4D27A", shortname = "",},
["Autonomist Party of Corrientes"] = {abbrev = "", color = "#F08080", shortname = "",},
["Autonomist Party"] = {abbrev = "", color = "#475f8a", shortname = "",},
["Autonomist Republican Bloc"] = {abbrev = "", color = "#CC734C", shortname = "",},
["Autonomist Republican Union Party"] = {abbrev = "", color = "#581768", shortname = "",},
["Autonomist–Liberal Pact"] = {abbrev = "", color = "#40e0d0", shortname = "",},
["Autonomous Agrarian Union"] = {abbrev = "AZS", color = "#EC5800", shortname = "",},
["Autonomous Front"] = {abbrev = "", color = "#04AD0F", shortname = "",},
["Autonomous Galician Republican Organization"] = {abbrev = "", color = "#0A70B8", shortname = "",},
["Autonomous Manacor People"] = {abbrev = "", color = "#8889B0", shortname = "",},
["Autonomous Nationalities for Change and Empowerment"] = {abbrev = "NACER", color = "#FFFF00", shortname = "",},
["Autonomous Nationalities for Change and Revolutionary Empowerment"] = {abbrev = "", color = "#026701", shortname = "",},
["Autonomous Party of Italy's Pensioners"] = {abbrev = "PAPI", color = "#0050AA", shortname = "",},
["Autonomous Socialist Party (Ticino)"] = {abbrev = "", color = "#8B1C62", shortname = "Autonomous Socialists",},
["Autonomous Socialist Party of South Jura"] = {abbrev = "", color = "#9E151C", shortname = "",},
["Autonomous State Demand Committee (United)"] = {abbrev = "ASDC(U)", color = "grey", shortname = "",},
["Autonomous State Demand Committee"] = {abbrev = "ASDC", color = "#ff0000", shortname = "",},
["Autonomy Liberty Democracy"] = {abbrev = "", color = "#E56717", shortname = "",},
["Autonomy South"] = {abbrev = "", color = "#273BE2", shortname = "",},
["Auyl People's Democratic Patriotic Party"] = {abbrev = "", color = "#0A5B2D", shortname = "Auyl",},
["Auzolan"] = {abbrev = "", color = "#F92D36", shortname = "",},
["Avant"] = {abbrev = "", color = "#211473", shortname = "",},
["Avante La Laguna"] = {abbrev = "", color = "#B14B7C", shortname = "",},
["Avante (political party)"] = {abbrev = "", color = "#088F8F", shortname = "Avante",},
["Avanza (Guatemala)"] = {abbrev = "", color = "#EF018D", shortname = "",},
["Avanza Libertad"] = {abbrev = "", color = "#3A3F92", shortname = "",},
["Avanzamos por ti"] = {abbrev = "", color = "#FFC60A", shortname = "",},
["Awakening (political party)"] = {abbrev = "", color = "#CF1F25", shortname = "",},
["Awami Jamhuri Ittehad Pakistan"] = {abbrev = "AJIP", color = "#5F9EA0", shortname = "",},
["Awami League"] = {abbrev = "AL", color = "#006a4e", shortname = "",},
["Awami Muslim League (Pakistan)"] = {abbrev = "AML", color = "#9ACD32", shortname = "",},
["Awami Muslim League"] = {abbrev = "", color = "#bcf55c", shortname = "",},
["Awami National Party"] = {abbrev = "ANP", color = "#c83737", shortname = "",},
["Awami Party"] = {abbrev = "AWP", color = "#DA81F5", shortname = "",},
["Awami Raj Party"] = {abbrev = "ARP", color = "#FFFF00", shortname = "",},
["Awami Vikas Party"] = {abbrev = "", color = "#1f7945", shortname = "",},
["Awami Workers Party"] = {abbrev = "AWP", color = "#DC143C", shortname = "",},
["Ayra"] = {abbrev = "", color = "#413B3D", shortname = "",},
["Azad Hind Fauz (Rajkiya)"] = {abbrev = "AHF", color = "#00FFCC", shortname = "",},
["Azanian People's Organisation"] = {abbrev = "", color = "#f9a510", shortname = "",},
["Azerbaijan Communist Party (1993)"] = {abbrev = "AKP", color = "red", shortname = "",},
["Azerbaijan Democrat Party"] = {abbrev = "", color = "#FBFB07", shortname = "",},
["Azerbaijan Democratic Enlightenment Party"] = {abbrev = "ADMP", color = "#7C8EBC", shortname = "",},
["Azerbaijan Liberal Party"] = {abbrev = "", color = "#8B0000", shortname = "",},
["Azerbaijan National Independence Party"] = {abbrev = "AMİP", color = "#0B94C2", shortname = "",},
["Azerbaijan Social Prosperity Party"] = {abbrev = "ASRP", color = "#0000CD", shortname = "",},
["Azerbaijani Popular Front Party"] = {abbrev = "APFP", color = "#5C5858", shortname = "",},
["Azerbaijani Social Democratic Party"] = {abbrev = "", color = "red", shortname = "",},
["Azimio la Umoja"] = {abbrev = "", color = "#011FB1", shortname = "Azimio",},
["Azir Moris"] = {abbrev = "", color = "#000000", shortname = "",},
}
return {
full = full,
alternate = alternate,
}
59aafc2e132f244b3642a5ea7bbd2a3030a523c1
Template:Pan-nationalist concepts
10
1110
2419
2023-09-29T21:28:05Z
wikipedia>Beshogur
0
this is not nationalism, even against
wikitext
text/x-wiki
{{Navbox
|name = Pan-nationalist concepts
|title = [[Pan-nationalism|Pan-nationalist concepts]]
|listclass = hlist
|group1 = Ideas
|list1 =
*[[Pan-Africanism]]
*[[Pan-Americanism]]
*[[Pan-Arabism]]
*[[Pan-Asianism]]
*[[Berberism]]
*[[Pan-Caucasianism]]
*[[Pan-Celticism]]
*[[Czechoslovakism]]
*[[Pan-Finnicism]]
*[[Pan-Germanism]]
*[[Eurasianism]]
*[[Pan-European nationalism]]
*[[Panhispanism]]
*[[Iberian federalism|Pan-Iberism]]
*[[Pan-Indianism]]
*[[Pan-Iranism]]
*[[Pan-Latinism]]
*[[Mediterraneanism]]
*[[Pan-Mongolism]]
*[[Pan-Oceanian|Pan-Oceanianism]]
*[[Scandinavism]]
*[[Greater Serbia|Pan-Serbism]]
*[[Pan-Slavism]]
*[[Rattachism]]
*{{ill|Pan-Tatarism|ru|Пантатаризм|tt|Пантатаризм}}
*[[Turanism]]
*[[Pan-Turkism]]
*[[Yugoslavism]]
|group2 = Territorial<br />concepts
|list2 =
*[[Greater Albania]]
*[[Basque Country (greater region)|Basque Country]]
*[[Greater Bosnia]]
*[[Unionism in the United Kingdom|British unionism]]
*[[Bulgarian irredentism]]
*[[Cambodian irredentism|Greater Cambodia]]
*[[Greater Antilles|Caribbean Antilles]]
*[[Catalan Countries]]
*[[Celtic union]]
*[[Gran Colombia]]
*[[Greater China]]
*[[Greater Croatia]]
*[[Eritrean nationalism|Eritrean national identity nationalism]]
*[[Ethiopian nationalism|Ethiopian national identity nationalism]]
*[[Greater Finland]]
*''[[Galicia irredenta]]''
*[[Hungarian irredentism|Greater Hungary]]
*[[Greater India]]
*[[Greater Indonesia]]
*[[Greater Iran]]
*[[Greater Iraq]]
*[[Greater Israel]]
*[[Italian imperialism under Fascism|Greater Italy]]
*[[Greater Mauritania]]
*[[Reconquista (Mexico)|Greater Mexico]]
*[[Greater Moldova]]
*[[Greater Morocco]]
*[[Greater Netherlands]]
*[[Greater Norway]]
*[[Greater Palestine]]
*[[Polish irredentism|Greater Poland]]
*{{ill|Portugaliza|lt=Greater Portugal|pt|Portugaliza}}
*[[Greater Romania]]
*[[Russian irredentism|Greater Russia]]
*[[Greater Serbia]]
*[[Greater Somalia]]
*[[Spanish irredentism|Greater Spain]]
*[[Greater Syria]]
*[[Ukrainian irredentism|Greater Ukraine]]
*[[Vietnamese irredentism|Greater Vietnam]]
*[[Yugoslav irredentism|Greater Yugoslavia]]
*[[Megali Idea|Megali Idea (Greece)]]
*[[Kurdish nationalism|Kurdistan]]
*[[Occitan nationalism|Occitania]]
*[[Padanian nationalism]]
*[[Patria Grande]]
*[[Tamazgha]]
*[[Misak-ı Millî|Misak-ı Millî (Turkey)]]
*[[United Armenia]]
*[[United Ireland]]
*[[United Macedonia]]
*[[Whole Azerbaijan]]
*[[Turan]]
|group3 = [[Panethnicity|Pan-ethnic]]<br />groups
|list3 =
*[[Hispanic and Latino Americans|Latinos]], [[Hispanic|Hispanic peoples]]
*[[Habesha peoples]]
}}<noinclude>
{{Documentation|content =
This template shows articles about pan-nationalist concepts.
==See also==
* [[:Category:Irredentism]]
[[Category:Political ideology navigational boxes]]
[[Category:Nationalism navigational boxes]]
}}</noinclude>
b8b566c0a1d134ef4baafdb951998c12e3cb04b2
Template:Script
10
1588
2923
2023-09-30T07:46:51Z
w>KLITE789
0
Adding support for Nag Mundari script
wikitext
text/x-wiki
{{#switch:{{{1|}}}
<!--scripts with dedicated templates-->
<!-- As of 2021-12-03, ISO 15924 and Unicode:
1. This list contains *all* ISO 15924 regular script IDs. By ISO pattern alpha4 = 'Abcd'.
2. Not included: Special codes (ISO number 900-999, e.g. symbols, unk scripts, private scripts):
Qaaa..Qabx, Zinh Zmth Zsye Zsym Zxxx Zyyy Zzzz
3. Totals: 204 regular alpha4 script IDs.
4. Depending on font handling, scripts can be commented out, i.e. will use regular fonts.
5. Scripts defined in Unicode: to be documented.
6. Scripts that have lang-specifier like 'fa-Arab': unchanged, not an ISO15924 topic -->
|Adlm = {{Script/Adlam|1={{{2}}}}}
<!--|Afak = {{Script/Afak|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Aghb = {{Script/Caucasian_Albanian|1={{{2}}}}}
|Ahom = {{Script/Ahom|1={{{2}}}}}
|Arab|Arabic = {{Script/Arabic|1={{{2}}}}}
|fa-Arab|az-Arab = {{Script/Nastaliq|1={{{2}}}|2=fa}}
|ps-Arab = {{Script/Nastaliq|1={{{2}}}|2=ps}}
|ur-Arab = {{Script/Nastaliq|1={{{2}}}}}
|Aran|Nastaliq = {{Script/Nastaliq|1={{{2}}}}}
|Armi = {{Script/Aramaic|1={{{2}}}}}
<!--|Armn = {{Script/Armenian|1={{{2}}}}} commonly supported, may not need transclusion-->
|Avst = {{Script/Avestan|1={{{2}}}}}
|Bali = {{Script/Bali|1={{{2}}}}}
|Bamu = {{Script/Bamum|1={{{2}}}}}
|Bass = {{Script/Bassa Vah|1={{{2}}}}}
|Batk = {{Script/Batak|1={{{2}}}}}
<!--|Beng = {{Script/Bengali|1={{{2}}}}} commonly supported, may not need transclusion-->
|Bhks = {{Script/Bhaiksuki|1={{{2}}}}}
<!--|Blis = {{Script/Blissymbols|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Bopo = {{Script/Bopomofo|1={{{2}}}}} commonly supported, may not need transclusion-->
|Brah = {{Script/Brahmi|1={{{2}}}}}
<!--|Brai|Braille = (Feb 2021: ISO 15924 code; in Unicode. Not a {{Script}} option) -->
|Bugi = {{Script/Lontara|2={{{2}}}}}
|Buhd = {{Script/Buhid|1={{{2}}}}}
|Cakm = {{Script/Chakma|1={{{2}}}}}
<!--|Cans = {{Script/Unified Canadian Aboriginal Syllabics|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Cari = {{Script/Carian|1={{{2}}}}} supported with Segoe UI Historic font-->
|Cham = {{Script/Cham|1={{{2}}}}}
<!--|Cher|Cherokee = (Feb 2021: ISO 15924 code; in Unicode. Not a {{Script}} option) -->
|Chrs = {{Script/Chorasmian|1={{{2}}}}}
<!--|Cirt = {{Script/Cirth|1={{{2}}}}} supported by CSUR-->
|Copt = {{Script/Coptic|1={{{2}}}}}
<!--|Cpmn = {{Script/Cypro-Minoan|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Cprt = {{Script/Cprt|1={{{2}}}}} see below-->
<!--|Cyrl = {{Script/Cyrillic|1={{{2}}}}} commonly supported, may not need transclusion-->
|Cyrs = {{Script/Slavonic|1={{{2}}}}}
<!--|Deva = {{Script/Devanagari|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Diak = {{Script/Dives_Akuru|1={{{2}}}}} pending font support-->
|Dogr = {{Script/Dogra|1={{{2}}}}}
<!--|Dsrt = {{Script/Deseret|1={{{2}}}}} supported with Segoe UI Symbol font-->
|Dupl = {{Script/Duployan|1={{{2}}}}}
<!--|Egyd = {{Script/Demotic|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Egyh = {{Script/Hieratic|1={{{2}}}}} combined with "Egyptian Hieroglyphs"-->
<!--|Egyp = {{Script/Egyptian_Hieroglyphs|1={{{2}}}}} supported with Segoe UI Historic font-->
|Elba = {{Script/Elbasan|1={{{2}}}}}
|Elym = {{Script/Elymaic|1={{{2}}}}}
|Ethi = {{Script/Ethiopic|1={{{2}}}}}
|Geok = {{Script/Khutsuri|1={{{2}}}}}
<!--|Geor = {{Script/Georgian|1={{{2}}}}} commonly supported, may not need transclusion-->
|Glag = {{Script/Glagolitic|1={{{2}}}}}
|Gong = {{Script/Gunjala Gondi|1={{{2}}}}}
|Gonm = {{Script/Masaram Gondi|1={{{2}}}}}
|Goth = {{Script/Gothic|1={{{2}}}}}
|Gran = {{Script/Grantha|1={{{2}}}}}
|Grek|Greek = {{Script/Greek|1={{{2}}}}}
<!--|Gujr = {{Script/Gujarati|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Guru = {{Script/Gurmukhi|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Hanb = (Hanzi with bopomofo) commonly supported, may not need transclusion-->
<!--|Hang = {{Script/Hangul|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Hani = commonly supported, may not need transclusion-->
|Hano|Hanunoo = {{Script/Hanunoo|1={{{2}}}}}
<!--|Hans = (Simplified Chinese) commonly supported, may not need transclusion-->
<!--|Hant = (Traditional Chinese) commonly supported, may not need transclusion-->
|Hatr = {{Script/Hatran|1={{{2}}}}}
|Hebr|Hebrew = {{Script/Hebrew|1={{{2}}}}}
<!--|Hira = (Japanese hiragana) commonly supported, may not need transclusion-->
|Hluw = {{Script/Anatolian Hieroglyphs|1={{{2}}}}}
|Hmng = {{Script/Pahawh Hmong|1={{{2}}}}}
|Hmnp = {{Script/Nyiakeng Puachue Hmong|1={{{2}}}}}
<!--|Hrkt = (Japanese kana) commonly supported, may not need transclusion-->
|Hung = {{Script/Old Hungarian|1={{{2}}}}}
<!--|Inds = {{Script/Indus|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Ital = {{Script/Old Italic|1={{{2}}}}}
<!--|Jamo = under Korean -->
|Java = {{Script/Java|1={{{2}}}}}
<!--|Jpan = (Japanese) commonly supported, may not need transclusion-->
<!--|Jurc = {{Script/Jurchen|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Kali = {{Script/Kayah Li|1={{{2}}}}}
<!--|Kana = (Japanese katakana) commonly supported, may not need transclusion-->
|Kawi = {{Script/Kawi|1={{{2}}}}}
<!--|Khar = {{Script/Kharosthi|1={{{2}}}}} supported with Segoe UI Historic font (RTL)-->
|Khmr = {{Script/Khmer|1={{{2}}}}}
|Khoj = {{Script/Khojki|1={{{2}}}}}
<!--|Kitl = {{Script/Khitan Large Script|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Kits = {{Script/Khitan Small Script|1={{{2}}}}}
<!--|Knda = {{Script/Kannada|1={{{2}}}}} commonly supported, may not need transclusion-->
|Kore = {{Script/Korean|1={{{2}}}}}
<!--|Kpel = {{Script/Kpelle|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Kthi = {{Script/Kaithi|1={{{2}}}}}
|Lana = {{Script/Tai Tham|1={{{2}}}}}
<!--|Laoo = {{Script/Lao|1={{{2}}}}} commonly supported, but transclusion may be needed to display Pali additional characters-->
<!--|Latf = {{Script/Fraktur blackletter|1={{{2}}}}} see below-->
<!--|en-Latf = {{Script/Textura blackletter|1={{{2}}}}} see below-->
<!--|it-Latf = {{Script/Rotunda blackletter|1={{{2}}}}} see below-->
|Latg = {{Script/Gaelic|1={{{2}}}}}
|Latn = {{Script/Classical and Medieval Latin|1={{{2}}}}}
<!--|Leke = {{Script/Leke|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Lepc = {{Script/Lepcha|1={{{2}}}}}
|Limb|Limbu = {{Script/Limbu|1={{{2}}}}}
<!--|Lina = {{Script/Linear A|1={{{2}}}}} see below-->
<!--|Linb = {{Script/Linear B|1={{{2}}}}} see below-->
|Lisu|Fraser = {{Script/Lisu|1={{{2}}}}}
<!--|Loma = {{Script/Loma|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Lyci = {{Script/Lycian|1={{{2}}}}}
<!--|Lydi = {{Script/Lydian|1={{{2}}}}} supported with Segoe UI Historic font-->
|Mahj|Mahajani = {{Script/Mahajani|1={{{2}}}}}
|Maka = {{Script/Makasar|1={{{2}}}}}
|Mand = {{Script/Mandaic|1={{{2}}}}}
|Mani = {{Script/Manichaean|1={{{2}}}}}
|Marc = {{Script/Marchen|1={{{2}}}}}
<!--|Maya = {{Script/Maya|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Medf = {{Script/Medefaidrin|1={{{2}}}}}
|Mend = {{Script/Mende Kikakui|1={{{2}}}}}
|Merc = {{Script/Meroitic Cursive|1={{{2}}}}}
|Mero = {{Script/Meroitic Hieroglyphs|1={{{2}}}}}
<!--|Mlym = {{Script/Malayalam|1={{{2}}}}} commonly supported, may not need transclusion-->
|Modi = {{Script/Modi|1={{{2}}}}}
<!--|Mong|Mongolian = use Template:MongolUnicode -->
<!--|Moon = {{Script/Moon Type|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Mroo|Mru = {{Script/Mro|1={{{2}}}}}
|Mtei|Meithei|Meetei Mayek = {{Script/Meetei Mayek|1={{{2}}}}}
|Mult = {{Script/Multani|1={{{2}}}}}
|Mymr|Myanmar = {{Script/Myanmar|1={{{2}}}}}
|Nagm = {{Script/Nag Mundari|1={{{2}}}}}
|Nand = {{Script/Nandinagari|1={{{2}}}}}
|Narb = {{Script/Old North Arabian|1={{{2}}}}}
|Nbat = {{Script/Nabataean|1={{{2}}}}}
|Newa = {{Script/Newa|1={{{2}}}}}
<!--|Nkdb = {{Script/Naxi Dongba|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Nkgb = {{Script/Naxi Geba|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Nkoo|Nko = {{Script/Nko|1={{{2}}}}}
|noto = {{Script/Noto|1={{{2}}}}}
|Nshu = {{Script/Nushu|1={{{2}}}}}
|Ogam = {{Script/Ogam|1={{{2}}}}}
<!--|Olck = {{Script/Ol Chiki|1={{{2}}}}} supported with Nirmala UI font-->
|Orkh = {{Script/Orkhon|1={{{2}}}}}
<!--|Orya = {{Script/Oriya|1={{{2}}}}} commonly supported, may not need transclusion-->
|Osge = {{Script/Osage|1={{{2}}}}} <!--supported with latest Gadugi font-->
|Osma = {{Script/Osmanya|1={{{2}}}}}
<!--|Ougr = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) -->
|Palm = {{Script/Palmyrene|1={{{2}}}}}
|Pauc = {{Script/Pau Cin Hau|1={{{2}}}}}
<!--|Pcun = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) -->
<!--|Pelm = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) -->
|Perm = {{Script/Old Permic|1={{{2}}}}}
<!--|Phag = {{Script/Phags-pa|1={{{2}}}}} supported with Microsoft PhagsPa font-->
|Phli = {{Script/Pahlavi|1={{{2}}}}}
|Phlp = {{Script/Psalter Pahlavi|1={{{2}}}}}
<!--|Phlv = {{Script/Book Pahlavi|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Phnx|Phoenician = {{Script/Phoenician|1={{{2}}}}}
|Piqd = {{Script/Klingon|1={{{2}}}}}
|Plrd|Pollard = {{Script/Pollard|1={{{2}}}}}
|Prti = {{Script/Pahlavi|1={{{2}}}}}
<!--|Psin = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) -->
<!--|Ranj = (Feb 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option) -->
|Rjng|Rejang = {{Script/Rejang|1={{{2}}}}}
|Rohg = {{Script/Hanifi Rohingya|1={{{2}}}}}
<!--|Roro = {{Script/Rongorongo|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Runr = {{Script/Runic|1={{{2}}}|2={{{3}}}}}
|Samr = {{Script/Samaritan|1={{{2}}}}}
<!--|Sara = {{Script/Sarati|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Sarb = {{Script/Old South Arabian|1={{{2}}}}} supported with Segoe UI Historic font-->
|Saur = {{Script/Saurashtra|1={{{2}}}}}
|serif = {{Script/Serif|1={{{2}}}}}
|Sgnw = {{Script/Sutton SignWriting|1={{{2}}}}}
<!--|Shaw = {{Script/Shavian|1={{{2}}}}} supported with Segoe UI Historic font-->
|Shrd = {{Script/Sharada|1={{{2}}}}}
<!--|Shui|Sui = {{Script/Shuishu|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Sidd = {{Script/Siddham|1={{{2}}}}}
|Sind = {{Script/Khudawadi|1={{{2}}}}}
<!--|Sinh = {{Script/Sinhala|1={{{2}}}}} commonly supported, may not need transclusion (vertical)-->
|Sogd = {{Script/Sogdian|1={{{2}}}}}
|Sogo = {{Script/Old Sogdian|1={{{2}}}}}
<!--|Sora = {{Script/Sorang Sompeng|1={{{2}}}}} supported with Nirmala UI font -->
|Soyo = {{Script/Soyombo|1={{{2}}}}}
|Sund|Sunda = {{Script/Sund|1={{{2}}}}}
<!--|Sunu = {{Script/Sunuwar|1={{{2}}}}} (Dec 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
|Sylo = {{Script/Syloti|1={{{2}}}}}
<!--|Syrc = {{Script/Syriac|1={{{2}}}}} commonly supported, may not need transclusion / ??? -->
|Syre = {{Script/Estrangelo Syriac|1={{{2}}}}}
|Syrj = {{Script/Western Syriac|1={{{2}}}}}
|Syrn = {{Script/Eastern Syriac|1={{{2}}}}}
|Tagb = {{Script/Tagbanwa|1={{{2}}}}}
|Takr = {{Script/Takri|1={{{2}}}}}
<!--|Tale = {{Script/Tai Le|1={{{2}}}}} supported with Microsoft Tai Le font-->
|Talu = {{Script/New Tai Lue|1={{{2}}}}}
<!--|Taml = {{Script/Tamil|1={{{2}}}}} commonly supported, may not need transclusion-->
|Tang = {{Script/Tangut|1={{{2}}}}}
|Tavt = {{Script/Tai Viet|1={{{2}}}}}
<!--|Telu = {{Script/Telugu|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Teng = {{Script/Tengwar|1={{{2}}}}} supported by CSUR-->
|Tfng = {{Script/Tifinagh|1={{{2}}}}}
|Tglg = {{Script/Baybayin|1={{{2}}}}}
<!--|Thaa = {{Script/Thaana|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Thai = {{Script/Thai|1={{{2}}}}} commonly supported, may not need transclusion-->
<!--|Tibt|Tibetan = {{Script/Tibetan|1={{{2}}}}} commonly supported, may not need transclusion /(Feb 2021: is ISO 15924 code, in Unicode) -->
|Tirh = {{Script/Tirhuta|1={{{2}}}}}
<!--|Toto = {{Script/Toto|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Ugar = {{Script/Ugaritic|1={{{2}}}}} see below: by class="..." -->
|Vaii|Vai = {{Script/Vai|1={{{2}}}}}
<!--|Visp = {{Script/Visible Speech|1={{{2}}}}} supported by CSUR-->
|Vith = {{Script/Vithkuqi|1={{{2}}}}}
|Wara = {{Script/Warang Citi|1={{{2}}}}}
|Wcho = {{Script/Wancho|1={{{2}}}}}
<!--|Wole = {{Script/Woleai|1={{{2}}}}} (Mar 2021: ISO 15924 code; not in Unicode. Not a {{Script}} option)-->
<!--|Xpeo = {{Script/Old Persian|1={{{2}}}}} see below: by class="..." -->
|Xsux = {{Script/Cuneiform|1={{{2}}}}}
|Yezi|Yezidi = {{Script/Yezidi|1={{{2}}}}}
|Yiii|Yi = {{Script/Yi|1={{{2}}}}}
|Zanb = {{Script/Zanabazar Square|1={{{2}}}}}
<!--other scripts use standard language spans-->
|#default =<!--
START SWITCH2
(resolving the switch1-#default. switch2 does envelop outer code, templatestyles & span)
-->{{{{{|safesubst:}}}ifsubst|1=|2=<templatestyles src="Script/styles.css" />}}<span {{#switch:{{{1}}}
<!-- tweaks which should be moved to global CSS classes, with fonts supported in the Universal Language Selector -->
|Cprt = class="script-Cprt"
<!-- |Hano|Hanunoo = class="script-Hano" Already catched above, uses {{Script/Hanunoo}} -->
|Latf|de-Latf = class="script-Latf"
|en-Latf = class="script-en-Latf"
|it-Latf = class="script-it-Latf"
|Lina = class="script-Lina"
|Linb = class="script-Linb"
|Ugar = class="script-Ugar"
|Xpeo = class="script-Xpeo"
|#default = class="Unicode"<!-- all-the-rest ends up here. BMP(?), use generic "Unicode" CSS class for all other scripts, including "Latn" for IPA -->
}}>{{{2}}}</span><!--
Tail job: analyse & categorise input-1 (script ID) not recognised
-->{{#switch:{{{1|}}}|Cprt|Hano|Hanunoo|Latf|de-Latf|en-Latf|it-Latf|Lina|Linb|Ugar|Xpeo=<!--
-->|#default={{Script/doc/id-unk|input1={{{1|<noinclude>Test</noinclude>}}}}}<!-- end Tail job
-->}}}}<!-- end switch2, switch1
--><noinclude>{{documentation}}</noinclude>
4bce235b6bfb4fdc94982ee252f126137dbe1b52
Template:Irredentism
10
1109
2417
2023-09-30T12:17:24Z
wikipedia>LukeWiller
0
Adding link
wikitext
text/x-wiki
{{Navbox
|name = Irredentism
|title = [[Irredentism]]
|listclass = hlist
|group1 = Africa
|list1 =
* [[Azawagh]]
* [[Beninese irredentism|Benin]]
* [[Burundian irredentism|Burundi]]
* [[Burkinabè irredentism|Burkina Faso]]
* [[Cameroonian irredentism|Cameroon]]
* [[Chadian irredentism|Chad]]
* [[Comorian irredentism|Comoros]]
* [[Congolese (Democratic Republic of the Congo) irredentism|Democratic Republic of the Congo]]
* [[Djiboutian irredentism|Djibouti]]
* [[East African Federation]]
* [[Ethiopian irredentism|Ethiopia]]
* [[Egyptian irredentism|Egypt]]
* [[Equatoguinean irredentism|Equatorial Guinea]]
* [[Gabonese irredentism|Gabon]]
* [[Guinean irredentism|Guinea]]
* [[Bundu dia Kongo|Kongo]]
* [[Libyan irredentism|Libya]]
* [[Malagasy irredentism|Madagascar]]
* [[Malawian irredentism|Malawi]]
* [[Greater Mauritania|Mauritania]]
* [[Mauritian irredentism|Mauritius]]
** [[Chagos Archipelago sovereignty dispute]]
* [[Greater Morocco|Morocco]]
** [[Western Sahara conflict|Western Sahara]]
* [[Nigerian irredentism|Nigeria]]
* [[Nubia]]
* [[Congolese (Republic of the Congo) irredentism|Republic of the Congo]]
* [[Rwandan irredentism|Rwanda]]
* [[Swazi irredentism|Eswatini]]
* [[Seychellois irredentism|Seychelles]]
* [[Greater Somalia|Somalia]]
* [[Greater South Africa|South Africa]]
* [[South Sudanese irredentism|South Sudan]]
* [[Sudanese irredentism|Sudan]]
* [[Union of Sahel States]]
* [[Ugandan irredentism|Uganda]]
* [[Zambian irredentism|Zambia]]
* [[Zimbabwean irredentism|Zimbabwe]]
|group2 = North America
|list2 =
* [[Proposed Canadian annexation of the Turks and Caicos Islands|Canada]]
* [[Belizean–Guatemalan territorial dispute|Guatemala]]
* [[Reconquista (Mexico)|Mexico]]
** [[Mexica Movement|Mexica]]
* [[Manifest destiny|United States]]
** [[51st state]]
** [[Movements for the annexation of Canada to the United States|movement for the annexation of Canada]]
* [[Saint Christopher-Nevis-Anguilla|Saint Kitts and Nevis]]
* [[Unification of Saint Martin|Saint Martin]]
|group3 = South America
|list3 =
* [[Argentine irredentism|Argentina]]
** [[United Provinces of the Río de la Plata|Gran La Plata]]
* [[Día del Mar|Bolivia]]
**[[Bolivian–Peruvian territorial dispute|Acre and Pando]]
* [[Chilean expansionism|Chile]]
** [[Tricontinental Chile|Tricontinental]]
* [[Gran Colombia|Colombia]]
** [[Colombian–Peruvian territorial dispute|Jaén and Maynas]]
* [[Ecuadorian–Peruvian territorial dispute|Ecuador]]
* [[Chilean–Peruvian territorial dispute|Peru]]
** [[Peru–Bolivian Confederation|Bolivia]]
* [[Borders of Suriname|Suriname]]
* [[Guayana Esequiba|Venezuela]]
|group4 = Western Asia
|list4 =
* [[United Armenia|Armenia]]
** [[Miatsum|Artsakh]]
** [[Javakheti]]
** [[Western Armenia]]
* [[Assyrian homeland|Assyria]]
* [[Whole Azerbaijan|Azerbaijan]]
** [[Western Azerbaijan (irredentist concept)|Western Azerbaijan]]
** [[Southern Azerbaijan National Awakening Movement|Southern Azerbaijan]]
* [[Annan Plan|Cyprus]]
* [[Kurdistan]]
** [[Iraqi Kurdistan]]
** [[Iranian Kurdistan]]
** [[Turkish Kurdistan]]
** [[Syrian Kurdistan]]
* [[Pan-Iranism|Iran]]
* [[Iraqi nationalism|Iraq]]
** [[Kuwait Governorate|Kuwait]]
* [[Greater Israel|Israel]]
* [[Lebanese nationalism|Lebanon]]
* [[Greater Palestine|Palestine]]
* [[Unification of Saudi Arabia|Saudi Arabia]]
* [[Greater Syria|Syria]]
** [[Hatay Province|Hatay]]
* [[Misak-ı Millî|Turkey]]
** [[Taksim (politics)|Cyprus]]
** [[Pan-Turkism]]
* [[Greater Yemen|Yemen]]
|group5 = Southern Asia
|list5 =
* [[Akhand Bharat|India]]
* [[Pashtunistan]]
|group6 = Central Asia
|list6 =
* [[Politics of Tajikistan#Tajiks in Uzbekistan|Tajikistan]]
|group7 = Eastern and Southeastern Asia
|list7 =
* [[Cambodian irredentism|Cambodia]]
* [[Chinese irredentism|China]]
** [[Senkaku Islands dispute|Diaoyu]]
** [[Chinese unification|Taiwan]]
* [[Korean reunification|Korea]]
** [[Korean claim to Tsushima Island|Daemado]]
** [[Jiandao|Gando]]
** [[Noktundo|Nokdundo]]
* [[Greater Indonesia|Indonesia]]
* [[Empire of Japan|Japan]]
** [[Kuril Islands dispute|Chishima]]
** [[Greater East Asia Co-Prosperity Sphere]]
** [[Liancourt Rocks dispute|Takeshima]]
* [[Pan-Mongolism|Mongolia]]
* [[Territories claimed by the Philippines|Philippines]]
** [[North Borneo dispute|Sabah]]
* [[Pan-Thaiism|Thailand]]
* [[Great Timor|Timor]]
* [[Vietnamese irredentism|Vietnam]]
|group8 = Central and Eastern Europe
|list8 =
* [[Belarusian Democratic Republic#Territory|Belarus]]
** [[Belastok Region]]
** [[Vilnius Region#Vilnius dispute|Vilnius Region]]
** [[Smolensk Governorate]]
* [[Czechoslovakia]]
** [[Carpathian Ruthenia#Subcarpathian Rus' (1928–1938)|Carpathian Ruthenia]]
** [[Kłodzko Land|Kłodzko]]
* [[Hungarian irredentism|Hungary]]
* [[Greater Moldova|Moldova]]
* [[Ossetia]]
** [[North Ossetia–Alania|North Ossetia]]
** [[South Ossetia]]
* [[Polish irredentism|Poland]]
** [[Kresy]]
** [[Trans-Olza]]
* [[Greater Romania|Romania]]
** [[Unification of Moldova and Romania|Moldova]]
* [[Russian irredentism|Russia]]
* [[United Slovenia|Slovenia]]
* [[Ukrainian irredentism|Ukraine]]
|group9 = Southern Europe
|list9 =
* [[Greater Albania|Albania]]
** [[Unification of Albania and Kosovo|Kosovo]]
** [[Albanian nationalism in North Macedonia|North Macedonia]]
* [[Greater Bosnia|Bosnia and Herzegovina]]
* [[Bulgarian irredentism|Bulgaria]]
* [[Greater Croatia|Croatia]]
** [[Croatian Republic of Herzeg-Bosnia|Bosnia]]
* [[Galicia irredenta|Galicia]]
* [[Megali Idea|Greece]]
** [[Enosis|Cyprus]]
* [[Italian irredentism|Italy]]
** [[Italian irredentism in Corsica|Corsica]]
** [[Italian irredentism in Dalmatia|Dalmatia]]
** [[Italian irredentism in Istria|Istria]]
** [[Italian irredentism in Switzerland|Italian Grisons]]
** [[Italian irredentism in Malta|Malta]]
** [[Italian irredentism in Nice|Nice]]
** [[Italian irredentism in Savoy|Savoy]]
** [[Italian irredentism in Switzerland|Ticino]]
* [[United Macedonia|North Macedonia]]
* [[Greater Serbia|Serbia]]
** [[Partition of Kosovo|Kosovo]]
** [[Proposed secession of Republika Srpska|Republika Srpska]]
* [[Spanish irredentism|Spain]]
** [[Status of Gibraltar|Gibraltar]]
** [[Iberian federalism|Portugal]]
* [[Yugoslav irredentism|Yugoslavia]]
|group10 = Northern Europe
|list10 =
* [[Lands of Denmark|Denmark]]
* [[Greater Finland|Finland]]
* [[Rockall Bank dispute|Iceland]]
* [[Historical Latvian Lands|Latvia]]
** [[Pytalovsky_District#History|Abrene]]
** [[Walk crisis#Runö question|Ruhnu]]
* [[Cultural regions of Lithuania|Lithuania]]
* [[Greater Norway#Former dependencies and homelands|Norway]]
* [[Lands of Sweden#Historical lands|Sweden]]
|group11 = Western Europe
|list11 =
* [[Greater Belgium|Belgium]]
* [[Celtic union|Celtics]]
* [[South Tyrolean secessionist movement|South Tyrol and Austria]]
* [[Natural borders of France|France]]
** [[Rattachism|Wallonia]]
* [[Pan-Germanism|Germany]]
** [[German nationalism in Austria|Austria]]
*** [[Annexation of Austria]]
** [[Greater Germanic Reich]]
** [[Lebensraum]]
* [[United Ireland|Ireland]]
* [[Greater Netherlands|Netherlands]]
* [[Enlargement of Switzerland|Switzerland]]
|group12 = Oceania
|list12 =
* [[List of proposed states of Australia|Australia]]
* [[Gilbert and Ellice Islands|Kiribati]]
* [[Papuan unification|Papua New Guinea]]
* [[Samoan unification|Samoa]]
* [[Matthew Island and Hunter Island|Vanuatu]]
|below =
''Related concepts:'' '''''[[List of national border changes since 1914|Border changes since 1914]] · [[Partition (politics)|Partitionism]] · [[Political union|Reunification]] · [[Revanchism]] · [[Revanchism|Revisionism]] · [[Rump state]]'''''
}}<noinclude>
{{Doc|content=
==See also==
* [[:Category:Irredentism]]
[[Category:Nationalism navigational boxes]]
}}</noinclude>
5723d28ede391007e2d337926eeffd7d136d803a
Main Page
0
1
1
2023-09-30T15:43:12Z
MediaWiki default
1
Create main page
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phab:|Phabricator]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
21236ac3f8d65e5563b6da6b70815ca6bf1e6616
File:AdamDressler.png
6
2
2
2023-09-30T18:16:33Z
Führerredux
2
Portrait of Adam Dressler
wikitext
text/x-wiki
== Summary ==
Portrait of Adam Dressler
f73893125736a7ad4c0d54b57e668b2b500cbffd
Das Deutsche Reich
0
3
3
2023-09-30T18:22:53Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Module:Yesno
828
6
8
7
2023-09-30T18:43:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Yesno]]
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:Arguments
828
7
10
9
2023-09-30T18:43:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Arguments]]
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Template:Tl
10
8
12
11
2023-09-30T18:43:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tl]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Redirect category shell|
{{R from move}}
}}
d6593bb3b4a866249f55d0f34b047a71fe1f1529
Template:Template link
10
9
14
13
2023-09-30T18:43:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link]]
wikitext
text/x-wiki
{{[[Template:{{{1}}}|{{{1}}}]]}}<noinclude>{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
eabbec62efe3044a98ebb3ce9e7d4d43c222351d
Module:Message box
828
10
16
15
2023-09-30T18:43:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Message_box]]
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
f2fb84f7b817d2d88747f57c40902a0d8be8158a
Module:Message box/configuration
828
11
18
17
2023-09-30T18:43:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Message_box/configuration]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox-license.svg'
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg',
imageNeedsLink = true
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
27f00af5cf3939613e9156acd5e62a3469d03d81
Template:Yesno
10
12
20
19
2023-09-30T18:43:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Yesno]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
629c2937bc5cf7cfe13cd2a598582af832782399
Template:Main other
10
13
22
21
2023-09-30T18:43:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Main_other]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}
| main
| other
}}
}}
| main = {{{1|}}}
| other
| #default = {{{2|}}}
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
86ad907ffeea3cc545159e00cd1f2d6433946450
Template:Nobold
10
14
24
23
2023-09-30T18:43:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Nobold]]
wikitext
text/x-wiki
<templatestyles src="Nobold/styles.css"/><span class="nobold">{{{1}}}</span><noinclude>
{{documentation}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
9c92b5951772bb26ca0fbe9256418b65e47700dd
Template:Nobold/styles.css
10
15
26
25
2023-09-30T18:43:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Nobold/styles.css]]
text
text/plain
/* {{pp-template}} */
/* Styling for Template:Nobold */
.nobold {
font-weight: normal;
}
83e5f0adacf8c7984251f1fd9d11ed82ebaadf03
Module:Check for unknown parameters
828
16
28
27
2023-09-30T18:43:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Check_for_unknown_parameters]]
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Module:String
828
17
30
29
2023-09-30T18:43:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:String]]
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:Infobox
828
18
32
31
2023-09-30T18:43:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Infobox]]
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Module:Infobox/styles.css
828
19
34
33
2023-09-30T18:43:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Infobox/styles.css]]
text
text/plain
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Module:List
828
20
36
35
2023-09-30T18:43:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:List]]
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
Module:TableTools
828
21
38
37
2023-09-30T18:43:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:TableTools]]
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Template:Tlx
10
22
40
39
2023-09-30T18:43:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tlx]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link expanded]]
{{Redirect category shell|
{{R from move}}
}}
1fec988ceb46cb324af228aac45d7cd25fcc9008
Template:Template link expanded
10
23
42
41
2023-09-30T18:43:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link_expanded]]
wikitext
text/x-wiki
{{#Invoke:Template link general|main|code=on}}<noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlx}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
6c99696fee02f1da368ed20d2504e19bc15b1c13
Module:Template link general
828
24
44
43
2023-09-30T18:43:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Template_link_general]]
Scribunto
text/plain
-- This implements Template:Tlg
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- Is a string non-empty?
local function _ne(s)
return s ~= nil and s ~= ""
end
local nw = mw.text.nowiki
local function addTemplate(s)
local i, _ = s:find(':', 1, true)
if i == nil then
return 'Template:' .. s
end
local ns = s:sub(1, i - 1)
if ns == '' or mw.site.namespaces[ns] then
return s
else
return 'Template:' .. s
end
end
local function trimTemplate(s)
local needle = 'template:'
if s:sub(1, needle:len()):lower() == needle then
return s:sub(needle:len() + 1)
else
return s
end
end
local function linkTitle(args)
if _ne(args.nolink) then
return args['1']
end
local titleObj
local titlePart = '[['
if args['1'] then
-- This handles :Page and other NS
titleObj = mw.title.new(args['1'], 'Template')
else
titleObj = mw.title.getCurrentTitle()
end
titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or
addTemplate(args['1']))
local textPart = args.alttext
if not _ne(textPart) then
if titleObj ~= nil then
textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText
else
-- redlink
textPart = args['1']
end
end
if _ne(args.subst) then
-- HACK: the ns thing above is probably broken
textPart = 'subst:' .. textPart
end
if _ne(args.brace) then
textPart = nw('{{') .. textPart .. nw('}}')
elseif _ne(args.braceinside) then
textPart = nw('{') .. textPart .. nw('}')
end
titlePart = titlePart .. '|' .. textPart .. ']]'
if _ne(args.braceinside) then
titlePart = nw('{') .. titlePart .. nw('}')
end
return titlePart
end
function p.main(frame)
local args = getArgs(frame, {
trim = true,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname)
local italic = _ne(args.italic) or _ne(args.italics)
local dontBrace = _ne(args.brace) or _ne(args.braceinside)
local code = _ne(args.code) or _ne(args.tt)
local show_result = _ne(args._show_result)
local expand = _ne(args._expand)
-- Build the link part
local titlePart = linkTitle(args)
if bold then titlePart = "'''" .. titlePart .. "'''" end
if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end
-- Build the arguments
local textPart = ""
local textPartBuffer = "|"
local codeArguments = {}
local codeArgumentsString = ""
local i = 2
local j = 1
while args[i] do
local val = args[i]
if val ~= "" then
if _ne(args.nowiki) then
-- Unstrip nowiki tags first because calling nw on something that already contains nowiki tags will
-- mangle the nowiki strip marker and result in literal UNIQ...QINU showing up
val = nw(mw.text.unstripNoWiki(val))
end
local k, v = string.match(val, "(.*)=(.*)")
if not k then
codeArguments[j] = val
j = j + 1
else
codeArguments[k] = v
end
codeArgumentsString = codeArgumentsString .. textPartBuffer .. val
if italic then
val = '<span style="font-style:italic;">' .. val .. '</span>'
end
textPart = textPart .. textPartBuffer .. val
end
i = i + 1
end
-- final wrap
local ret = titlePart .. textPart
if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end
if _ne(args.a) then ret = nw('*') .. ' ' .. ret end
if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end
if code then
ret = '<code>' .. ret .. '</code>'
elseif _ne(args.plaincode) then
ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>'
end
if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end
--[[ Wrap as html??
local span = mw.html.create('span')
span:wikitext(ret)
--]]
if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end
if show_result then
local result = mw.getCurrentFrame():expandTemplate{title = addTemplate(args[1]), args = codeArguments}
ret = ret .. " → " .. result
end
if expand then
local query = mw.text.encode('{{' .. addTemplate(args[1]) .. string.gsub(codeArgumentsString, textPartBuffer, "|") .. '}}')
local url = mw.uri.fullUrl('special:ExpandTemplates', 'wpInput=' .. query)
mw.log()
ret = ret .. " [" .. tostring(url) .. "]"
end
return ret
end
return p
c7307fa3959d308a2dd7fd2f5009c1ce6db3d122
Template:Template other
10
25
46
45
2023-09-30T18:43:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_other]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Template:Clear
10
26
48
47
2023-09-30T18:43:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Clear]]
wikitext
text/x-wiki
<div style="clear:{{{1|both}}};"></div><noinclude>
{{documentation}}
</noinclude>
38bab3e3d7fbd3d6800d46556e60bc6bac494d72
Template:Distinguish
10
27
50
49
2023-09-30T18:43:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Distinguish]]
wikitext
text/x-wiki
{{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. -->
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! -->
</noinclude>
f949a4cbfd6eb0ab77b832e69059a40a964b1fd8
Template:Sidebar
10
28
52
51
2023-09-30T18:43:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sidebar]]
wikitext
text/x-wiki
{{#invoke:Sidebar|sidebar}}<noinclude>
{{documentation}}</noinclude>
ab2498000a99daf324f656b0badd187b4a3e2b42
Module:Distinguish
828
29
54
53
2023-09-30T18:43:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Distinguish]]
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools --initialize lazily
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.distinguish(frame)
mArguments = require('Module:Arguments')
mTableTools = require('Module:TableTools')
local args = mArguments.getArgs(frame)
local selfref = args.selfref
local text = args.text
args = mTableTools.compressSparseArray(args)
return p._distinguish(args, text, selfref)
end
function p._distinguish(args, text, selfref)
checkType("_distinguish", 1, args, 'table')
if #args == 0 and not text then return '' end
local text = string.format(
'Not to be confused with %s.',
text or mHatlist.orList(args, true)
)
hnOptions = {selfref = selfref}
return mHatnote._hatnote(text, hnOptions)
end
return p
0364d14af01fc656ad1d898c5036fbd12a7ca938
Module:Effective protection expiry
828
30
56
55
2023-09-30T18:43:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Effective_protection_expiry]]
Scribunto
text/plain
local p = {}
-- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title)
return stabilitySettings and stabilitySettings.expiry or 'unknown'
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then
error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 )
end
local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename)
if rawExpiry == 'infinity' then
return 'infinity'
elseif rawExpiry == '' then
return 'unknown'
else
local year, month, day, hour, minute, second = rawExpiry:match(
'^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$'
)
if year then
return string.format(
'%s-%s-%sT%s:%s:%s',
year, month, day, hour, minute, second
)
else
error('internal error in Module:Effective protection expiry; malformed expiry timestamp')
end
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
9a8c58dc2667232ed08a9b206a5d89ca8150312b
Module:Effective protection level
828
31
58
57
2023-09-30T18:43:43Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Effective_protection_level]]
Scribunto
text/plain
local p = {}
-- Returns the permission required to perform a given action on a given title.
-- If no title is specified, the title of the page being displayed is used.
function p._main(action, pagename)
local title
if type(pagename) == 'table' and pagename.prefixedText then
title = pagename
elseif pagename then
title = mw.title.new(pagename)
else
title = mw.title.getCurrentTitle()
end
pagename = title.prefixedText
if action == 'autoreview' then
local level = mw.ext.FlaggedRevs.getStabilitySettings(title)
level = level and level.autoreview
if level == 'review' then
return 'reviewer'
elseif level ~= '' then
return level
else
return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review
end
elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then
error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 )
end
if title.namespace == 8 then -- MediaWiki namespace
if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page
return 'interfaceadmin'
else -- any non-JS/CSS MediaWiki page
return 'sysop'
end
elseif title.namespace == 2 and title.isSubpage then
if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page
return 'interfaceadmin'
elseif title.contentModel == 'json' then -- user JSON page
return 'sysop'
end
end
if action == 'undelete' then
return 'sysop'
end
local level = title.protectionLevels[action] and title.protectionLevels[action][1]
if level == 'sysop' or level == 'editprotected' then
return 'sysop'
elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page
return 'sysop'
elseif level == 'templateeditor' then
return 'templateeditor'
elseif action == 'move' then
local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move.
if blacklistentry and not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif title.namespace == 6 then
return 'filemover'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
end
local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename)
if blacklistentry then
if not blacklistentry.params.autoconfirmed then
return 'templateeditor'
elseif level == 'extendedconfirmed' then
return 'extendedconfirmed'
else
return 'autoconfirmed'
end
elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason
return 'autoconfirmed'
elseif level then
return level
elseif action == 'upload' then
return 'autoconfirmed'
elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts
return 'user'
else
return '*'
end
end
setmetatable(p, { __index = function(t, k)
return function(frame)
return t._main(k, frame.args[1])
end
end })
return p
70256a489edf6be9808031b14a7e3ef3e025da97
Module:File link
828
32
60
59
2023-09-30T18:43:43Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:File_link]]
Scribunto
text/plain
-- This module provides a library for formatting file wikilinks.
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local p = {}
function p._main(args)
checkType('_main', 1, args, 'table')
-- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our
-- own function to get the right error level.
local function checkArg(key, val, level)
if type(val) ~= 'string' then
error(string.format(
"type error in '%s' parameter of '_main' (expected string, got %s)",
key, type(val)
), level)
end
end
local ret = {}
-- Adds a positional parameter to the buffer.
local function addPositional(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = val
end
-- Adds a named parameter to the buffer. We assume that the parameter name
-- is the same as the argument key.
local function addNamed(key)
local val = args[key]
if not val then
return nil
end
checkArg(key, val, 4)
ret[#ret + 1] = key .. '=' .. val
end
-- Filename
checkArg('file', args.file, 3)
ret[#ret + 1] = 'File:' .. args.file
-- Format
if args.format then
checkArg('format', args.format)
if args.formatfile then
checkArg('formatfile', args.formatfile)
ret[#ret + 1] = args.format .. '=' .. args.formatfile
else
ret[#ret + 1] = args.format
end
end
-- Border
if yesno(args.border) then
ret[#ret + 1] = 'border'
end
addPositional('location')
addPositional('alignment')
addPositional('size')
addNamed('upright')
addNamed('link')
addNamed('alt')
addNamed('page')
addNamed('class')
addNamed('lang')
addNamed('start')
addNamed('end')
addNamed('thumbtime')
addPositional('caption')
return string.format('[[%s]]', table.concat(ret, '|'))
end
function p.main(frame)
local origArgs = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:File link'
})
if not origArgs.file then
error("'file' parameter missing from [[Template:File link]]", 0)
end
-- Copy the arguments that were passed to a new table to avoid looking up
-- every possible parameter in the frame object.
local args = {}
for k, v in pairs(origArgs) do
-- Make _BLANK a special argument to add a blank parameter. For use in
-- conditional templates etc. it is useful for blank arguments to be
-- ignored, but we still need a way to specify them so that we can do
-- things like [[File:Example.png|link=]].
if v == '_BLANK' then
v = ''
end
args[k] = v
end
return p._main(args)
end
return p
66925f088d11530f2482f04181a3baaaa0ad3d0c
Module:Format link
828
33
62
61
2023-09-30T18:43:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Format_link]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Format link
--
-- Makes a wikilink from the given link and display values. Links are escaped
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local mError -- lazily initialise [[Module:Error]]
local yesno -- lazily initialise [[Module:Yesno]]
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
local function maybeItalicize(s, shouldItalicize)
-- Italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return '<i>' .. s .. '</i>'
else
return s
end
end
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
link = prePipe or link
-- Find the page, if it exists.
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
-- Find the section, if it exists.
local section
if postHash and postHash ~= '' then
section = postHash
end
return {
link = link,
page = page,
section = section,
display = display,
}
end
local function formatDisplay(parsed, options)
-- Formats a display string based on a parsed link table (matching the
-- output of parseLink) and an options table (matching the input options for
-- _formatLink).
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if (not section) then
return page
elseif (not page) then
return mw.ustring.format('§ %s', section)
else
return mw.ustring.format('%s § %s', page, section)
end
end
local function missingArgError(target)
mError = require('Module:Error')
return mError.error{message =
'Error: no link or target specified! ([[' .. target .. '#Errors|help]])'
}
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local link = args[1] or args.link
local target = args[3] or args.target
if not (link or target) then
return missingArgError('Template:Format link')
end
return p._formatLink{
link = link,
display = args[2] or args.display,
target = target,
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
categorizeMissing = args.categorizemissing
}
end
function p._formatLink(options)
-- The formatLink export function, for use in modules.
checkType('_formatLink', 1, options, 'table')
local function check(key, expectedType) --for brevity
checkTypeForNamedArg(
'_formatLink', key, options[key], expectedType or 'string', true
)
end
check('link')
check('display')
check('target')
check('italicizePage', 'boolean')
check('italicizeSection', 'boolean')
check('categorizeMissing')
-- Normalize link and target and check that at least one is present
if options.link == '' then options.link = nil end
if options.target == '' then options.target = nil end
if not (options.link or options.target) then
return missingArgError('Module:Format link')
end
local parsed = parseLink(options.link)
local display = options.display or parsed.display
local catMissing = options.categorizeMissing
local category = ''
-- Find the display text
if not display then display = formatDisplay(parsed, options) end
-- Handle the target option if present
if options.target then
local parsedTarget = parseLink(options.target)
parsed.link = parsedTarget.link
parsed.page = parsedTarget.page
end
-- Test if page exists if a diagnostic category is specified
if catMissing and (mw.ustring.len(catMissing) > 0) then
local title = nil
if parsed.page then title = mw.title.new(parsed.page) end
if title and (not title.isExternal) then
local success, exists = pcall(function() return title.exists end)
if success and not exists then
category = mw.ustring.format('[[Category:%s]]', catMissing)
end
end
end
-- Format the result as a link
if parsed.link == display then
return mw.ustring.format('[[:%s]]%s', parsed.link, category)
else
return mw.ustring.format('[[:%s|%s]]%s', parsed.link, display, category)
end
end
--------------------------------------------------------------------------------
-- Derived convenience functions
--------------------------------------------------------------------------------
function p.formatPages(options, pages)
-- Formats an array of pages using formatLink and the given options table,
-- and returns it as an array. Nil values are not allowed.
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink{
link = page,
categorizeMissing = options.categorizeMissing,
italicizePage = options.italicizePage,
italicizeSection = options.italicizeSection
}
end
return ret
end
return p
1253bdd2683ee4badc33856bfd5499b09a7dca1f
Module:Hatnote
828
34
64
63
2023-09-30T18:43:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Hatnote]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local formatLink -- lazily initialise [[Module:Format link]] ._formatLink
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments = require('Module:Arguments')
return mArguments.getArgs(frame, {parentOnly = true})
end
local function removeInitialColon(s)
-- Removes the initial colon from a string, if present.
return s:match('^:?(.*)')
end
function p.defaultClasses(inline)
-- Provides the default hatnote classes as a space-separated string; useful
-- for hatnote-manipulation modules like [[Module:Hatnote group]].
return
(inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' ..
'navigation-not-searchable'
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return mw.ustring.format('%s (%s)', page, disambiguator)
end
function p.findNamespaceId(link, removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage -- Don't categorise talk pages
and title.namespace ~= 2 -- Don't categorise userspace
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return mw.ustring.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
local curNs = mw.title.getCurrentTitle().namespace
p.missingTargetCat =
--Default missing target category, exported for use in related modules
((curNs == 0) or (curNs == 14)) and
'Articles with hatnote templates targeting a nonexistent page' or nil
function p.quote(title)
--Wraps titles in quotation marks. If the title starts/ends with a quotation
--mark, kerns that side as with {{-'}}
local quotationMarks = {
["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true
}
local quoteLeft, quoteRight = -- Test if start/end are quotation marks
quotationMarks[string.sub(title, 1, 1)],
quotationMarks[string.sub(title, -1, -1)]
if quoteLeft or quoteRight then
title = mw.html.create("span"):wikitext(title)
end
if quoteLeft then title:css("padding-left", "0.15em") end
if quoteRight then title:css("padding-right", "0.15em") end
return '"' .. tostring(title) .. '"'
end
--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote#Errors',
args.category
)
end
return p._hatnote(s, {
extraclasses = args.extraclasses,
selfref = args.selfref
})
end
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local inline = options.inline
local hatnote = mw.html.create(inline == 1 and 'span' or 'div')
local extraclasses
if type(options.extraclasses) == 'string' then
extraclasses = options.extraclasses
end
hatnote
:attr('role', 'note')
:addClass(p.defaultClasses(inline))
:addClass(extraclasses)
:addClass(options.selfref and 'selfref' or nil)
:wikitext(s)
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' }
} .. tostring(hatnote)
end
return p
3ae1ed7094c5005ca0896395ec9a587287a0bef1
Module:Hatnote/styles.css
828
35
66
65
2023-09-30T18:43:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Hatnote/styles.css]]
text
text/plain
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
44680ffd6e888866df2cdfa0341af9c7b97da94c
Module:Hatnote list
828
36
68
67
2023-09-30T18:43:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Hatnote_list]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote list --
-- --
-- This module produces and formats lists for use in hatnotes. In particular, --
-- it implements the for-see list, i.e. lists of "For X, see Y" statements, --
-- as used in {{about}}, {{redirect}}, and their variants. Also introduced --
-- are andList & orList helpers for formatting lists with those conjunctions. --
--------------------------------------------------------------------------------
local mArguments --initialize lazily
local mFormatLink = require('Module:Format link')
local mHatnote = require('Module:Hatnote')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
--------------------------------------------------------------------------------
-- List stringification helper functions
--
-- These functions are used for stringifying lists, usually page lists inside
-- the "Y" portion of "For X, see Y" for-see items.
--------------------------------------------------------------------------------
--default options table used across the list stringification functions
local stringifyListDefaultOptions = {
conjunction = "and",
separator = ",",
altSeparator = ";",
space = " ",
formatted = false
}
--Searches display text only
local function searchDisp(haystack, needle)
return string.find(
string.sub(haystack, (string.find(haystack, '|') or 0) + 1), needle
)
end
-- Stringifies a list generically; probably shouldn't be used directly
local function stringifyList(list, options)
-- Type-checks, defaults, and a shortcut
checkType("stringifyList", 1, list, "table")
if #list == 0 then return nil end
checkType("stringifyList", 2, options, "table", true)
options = options or {}
for k, v in pairs(stringifyListDefaultOptions) do
if options[k] == nil then options[k] = v end
end
local s = options.space
-- Format the list if requested
if options.formatted then
list = mFormatLink.formatPages(
{categorizeMissing = mHatnote.missingTargetCat}, list
)
end
-- Set the separator; if any item contains it, use the alternate separator
local separator = options.separator
for k, v in pairs(list) do
if searchDisp(v, separator) then
separator = options.altSeparator
break
end
end
-- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§"
local conjunction = s .. options.conjunction .. s
if #list == 2 and searchDisp(list[1], "§") or #list > 2 then
conjunction = separator .. conjunction
end
-- Return the formatted string
return mw.text.listToText(list, separator .. s, conjunction)
end
--DRY function
function p.conjList (conj, list, fmt)
return stringifyList(list, {conjunction = conj, formatted = fmt})
end
-- Stringifies lists with "and" or "or"
function p.andList (...) return p.conjList("and", ...) end
function p.orList (...) return p.conjList("or", ...) end
--------------------------------------------------------------------------------
-- For see
--
-- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the
-- {{about}} and {{redirect}} templates and their variants.
--------------------------------------------------------------------------------
--default options table used across the forSee family of functions
local forSeeDefaultOptions = {
andKeyword = 'and',
title = mw.title.getCurrentTitle().text,
otherText = 'other uses',
forSeeForm = 'For %s, see %s.',
}
--Collapses duplicate punctuation
local function punctuationCollapse (text)
local replacements = {
["%.%.$"] = ".",
["%?%.$"] = "?",
["%!%.$"] = "!",
["%.%]%]%.$"] = ".]]",
["%?%]%]%.$"] = "?]]",
["%!%]%]%.$"] = "!]]"
}
for k, v in pairs(replacements) do text = string.gsub(text, k, v) end
return text
end
-- Structures arguments into a table for stringification, & options
function p.forSeeArgsToTable (args, from, options)
-- Type-checks and defaults
checkType("forSeeArgsToTable", 1, args, 'table')
checkType("forSeeArgsToTable", 2, from, 'number', true)
from = from or 1
checkType("forSeeArgsToTable", 3, options, 'table', true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- maxArg's gotten manually because getArgs() and table.maxn aren't friends
local maxArg = 0
for k, v in pairs(args) do
if type(k) == 'number' and k > maxArg then maxArg = k end
end
-- Structure the data out from the parameter list:
-- * forTable is the wrapper table, with forRow rows
-- * Rows are tables of a "use" string & a "pages" table of pagename strings
-- * Blanks are left empty for defaulting elsewhere, but can terminate list
local forTable = {}
local i = from
local terminated = false
-- If there is extra text, and no arguments are given, give nil value
-- to not produce default of "For other uses, see foo (disambiguation)"
if options.extratext and i > maxArg then return nil end
-- Loop to generate rows
repeat
-- New empty row
local forRow = {}
-- On blank use, assume list's ended & break at end of this loop
forRow.use = args[i]
if not args[i] then terminated = true end
-- New empty list of pages
forRow.pages = {}
-- Insert first pages item if present
table.insert(forRow.pages, args[i + 1])
-- If the param after next is "and", do inner loop to collect params
-- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3}
while args[i + 2] == options.andKeyword do
if args[i + 3] then
table.insert(forRow.pages, args[i + 3])
end
-- Increment to next "and"
i = i + 2
end
-- Increment to next use
i = i + 2
-- Append the row
table.insert(forTable, forRow)
until terminated or i > maxArg
return forTable
end
-- Stringifies a table as formatted by forSeeArgsToTable
function p.forSeeTableToString (forSeeTable, options)
-- Type-checks and defaults
checkType("forSeeTableToString", 1, forSeeTable, "table", true)
checkType("forSeeTableToString", 2, options, "table", true)
options = options or {}
for k, v in pairs(forSeeDefaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Stringify each for-see item into a list
local strList = {}
if forSeeTable then
for k, v in pairs(forSeeTable) do
local useStr = v.use or options.otherText
local pagesStr =
p.andList(v.pages, true) or
mFormatLink._formatLink{
categorizeMissing = mHatnote.missingTargetCat,
link = mHatnote.disambiguate(options.title)
}
local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr)
forSeeStr = punctuationCollapse(forSeeStr)
table.insert(strList, forSeeStr)
end
end
if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end
-- Return the concatenated list
return table.concat(strList, ' ')
end
-- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps
-- but not blank/whitespace values. Ignores named args and args < "from".
function p._forSee (args, from, options)
local forSeeTable = p.forSeeArgsToTable(args, from, options)
return p.forSeeTableToString(forSeeTable, options)
end
-- As _forSee, but uses the frame.
function p.forSee (frame, from, options)
mArguments = require('Module:Arguments')
return p._forSee(mArguments.getArgs(frame), from, options)
end
return p
d0828422b1aa0d0d0092d699d059c9e882260398
Module:Navbar
828
37
70
69
2023-09-30T18:43:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbar]]
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17
Module:Navbar/configuration
828
38
72
71
2023-09-30T18:43:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbar/configuration]]
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['hlist_templatestyles'] = 'Hlist/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
b007c336b17ec4bcd4d5a9dca9f8cba301662b55
Module:Navbar/styles.css
828
39
74
73
2023-09-30T18:43:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbar/styles.css]]
text
text/plain
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Module:Protection banner
828
40
76
75
2023-09-30T18:43:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Protection_banner]]
Scribunto
text/plain
-- This module implements {{pp-meta}} and its daughter templates such as
-- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
-- Initialise necessary modules.
require('strict')
local makeFileLink = require('Module:File link')._main
local effectiveProtectionLevel = require('Module:Effective protection level')._main
local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main
local yesno = require('Module:Yesno')
-- Lazily initialise modules and objects we don't always need.
local getArgs, makeMessageBox, lang
-- Set constants.
local CONFIG_MODULE = 'Module:Protection banner/config'
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function makeCategoryLink(cat, sort)
if cat then
return string.format(
'[[%s:%s|%s]]',
mw.site.namespaces[14].name,
cat,
sort
)
end
end
-- Validation function for the expiry and the protection date
local function validateDate(dateString, dateType)
if not lang then
lang = mw.language.getContentLanguage()
end
local success, result = pcall(lang.formatDate, lang, 'U', dateString)
if success then
result = tonumber(result)
if result then
return result
end
end
error(string.format(
'invalid %s: %s',
dateType,
tostring(dateString)
), 4)
end
local function makeFullUrl(page, query, display)
return string.format(
'[%s %s]',
tostring(mw.uri.fullUrl(page, query)),
display
)
end
-- Given a directed graph formatted as node -> table of direct successors,
-- get a table of all nodes reachable from a given node (though always
-- including the given node).
local function getReachableNodes(graph, start)
local toWalk, retval = {[start] = true}, {}
while true do
-- Can't use pairs() since we're adding and removing things as we're iterating
local k = next(toWalk) -- This always gets the "first" key
if k == nil then
return retval
end
toWalk[k] = nil
retval[k] = true
for _,v in ipairs(graph[k]) do
if not retval[v] then
toWalk[v] = true
end
end
end
end
--------------------------------------------------------------------------------
-- Protection class
--------------------------------------------------------------------------------
local Protection = {}
Protection.__index = Protection
Protection.supportedActions = {
edit = true,
move = true,
autoreview = true,
upload = true
}
Protection.bannerConfigFields = {
'text',
'explanation',
'tooltip',
'alt',
'link',
'image'
}
function Protection.new(args, cfg, title)
local obj = {}
obj._cfg = cfg
obj.title = title or mw.title.getCurrentTitle()
-- Set action
if not args.action then
obj.action = 'edit'
elseif Protection.supportedActions[args.action] then
obj.action = args.action
else
error(string.format(
'invalid action: %s',
tostring(args.action)
), 3)
end
-- Set level
obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title)
if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then
-- Users need to be autoconfirmed to move pages anyway, so treat
-- semi-move-protected pages as unprotected.
obj.level = '*'
end
-- Set expiry
local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title)
if effectiveExpiry == 'infinity' then
obj.expiry = 'indef'
elseif effectiveExpiry ~= 'unknown' then
obj.expiry = validateDate(effectiveExpiry, 'expiry date')
end
-- Set reason
if args[1] then
obj.reason = mw.ustring.lower(args[1])
if obj.reason:find('|') then
error('reasons cannot contain the pipe character ("|")', 3)
end
end
-- Set protection date
if args.date then
obj.protectionDate = validateDate(args.date, 'protection date')
end
-- Set banner config
do
obj.bannerConfig = {}
local configTables = {}
if cfg.banners[obj.action] then
configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason]
end
if cfg.defaultBanners[obj.action] then
configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level]
configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default
end
configTables[#configTables + 1] = cfg.masterBanner
for i, field in ipairs(Protection.bannerConfigFields) do
for j, t in ipairs(configTables) do
if t[field] then
obj.bannerConfig[field] = t[field]
break
end
end
end
end
return setmetatable(obj, Protection)
end
function Protection:isUserScript()
-- Whether the page is a user JavaScript or CSS page.
local title = self.title
return title.namespace == 2 and (
title.contentModel == 'javascript' or title.contentModel == 'css'
)
end
function Protection:isProtected()
return self.level ~= '*'
end
function Protection:shouldShowLock()
-- Whether we should output a banner/padlock
return self:isProtected() and not self:isUserScript()
end
-- Whether this page needs a protection category.
Protection.shouldHaveProtectionCategory = Protection.shouldShowLock
function Protection:isTemporary()
return type(self.expiry) == 'number'
end
function Protection:makeProtectionCategory()
if not self:shouldHaveProtectionCategory() then
return ''
end
local cfg = self._cfg
local title = self.title
-- Get the expiry key fragment.
local expiryFragment
if self.expiry == 'indef' then
expiryFragment = self.expiry
elseif type(self.expiry) == 'number' then
expiryFragment = 'temp'
end
-- Get the namespace key fragment.
local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace]
if not namespaceFragment and title.namespace % 2 == 1 then
namespaceFragment = 'talk'
end
-- Define the order that key fragments are tested in. This is done with an
-- array of tables containing the value to be tested, along with its
-- position in the cfg.protectionCategories table.
local order = {
{val = expiryFragment, keypos = 1},
{val = namespaceFragment, keypos = 2},
{val = self.reason, keypos = 3},
{val = self.level, keypos = 4},
{val = self.action, keypos = 5}
}
--[[
-- The old protection templates used an ad-hoc protection category system,
-- with some templates prioritising namespaces in their categories, and
-- others prioritising the protection reason. To emulate this in this module
-- we use the config table cfg.reasonsWithNamespacePriority to set the
-- reasons for which namespaces have priority over protection reason.
-- If we are dealing with one of those reasons, move the namespace table to
-- the end of the order table, i.e. give it highest priority. If not, the
-- reason should have highest priority, so move that to the end of the table
-- instead.
--]]
table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3))
--[[
-- Define the attempt order. Inactive subtables (subtables with nil "value"
-- fields) are moved to the end, where they will later be given the key
-- "all". This is to cut down on the number of table lookups in
-- cfg.protectionCategories, which grows exponentially with the number of
-- non-nil keys. We keep track of the number of active subtables with the
-- noActive parameter.
--]]
local noActive, attemptOrder
do
local active, inactive = {}, {}
for i, t in ipairs(order) do
if t.val then
active[#active + 1] = t
else
inactive[#inactive + 1] = t
end
end
noActive = #active
attemptOrder = active
for i, t in ipairs(inactive) do
attemptOrder[#attemptOrder + 1] = t
end
end
--[[
-- Check increasingly generic key combinations until we find a match. If a
-- specific category exists for the combination of key fragments we are
-- given, that match will be found first. If not, we keep trying different
-- key fragment combinations until we match using the key
-- "all-all-all-all-all".
--
-- To generate the keys, we index the key subtables using a binary matrix
-- with indexes i and j. j is only calculated up to the number of active
-- subtables. For example, if there were three active subtables, the matrix
-- would look like this, with 0 corresponding to the key fragment "all", and
-- 1 corresponding to other key fragments.
--
-- j 1 2 3
-- i
-- 1 1 1 1
-- 2 0 1 1
-- 3 1 0 1
-- 4 0 0 1
-- 5 1 1 0
-- 6 0 1 0
-- 7 1 0 0
-- 8 0 0 0
--
-- Values of j higher than the number of active subtables are set
-- to the string "all".
--
-- A key for cfg.protectionCategories is constructed for each value of i.
-- The position of the value in the key is determined by the keypos field in
-- each subtable.
--]]
local cats = cfg.protectionCategories
for i = 1, 2^noActive do
local key = {}
for j, t in ipairs(attemptOrder) do
if j > noActive then
key[t.keypos] = 'all'
else
local quotient = i / 2 ^ (j - 1)
quotient = math.ceil(quotient)
if quotient % 2 == 1 then
key[t.keypos] = t.val
else
key[t.keypos] = 'all'
end
end
end
key = table.concat(key, '|')
local attempt = cats[key]
if attempt then
return makeCategoryLink(attempt, title.text)
end
end
return ''
end
function Protection:isIncorrect()
local expiry = self.expiry
return not self:shouldHaveProtectionCategory()
or type(expiry) == 'number' and expiry < os.time()
end
function Protection:isTemplateProtectedNonTemplate()
local action, namespace = self.action, self.title.namespace
return self.level == 'templateeditor'
and (
(action ~= 'edit' and action ~= 'move')
or (namespace ~= 10 and namespace ~= 828)
)
end
function Protection:makeCategoryLinks()
local msg = self._cfg.msg
local ret = {self:makeProtectionCategory()}
if self:isIncorrect() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-incorrect'],
self.title.text
)
end
if self:isTemplateProtectedNonTemplate() then
ret[#ret + 1] = makeCategoryLink(
msg['tracking-category-template'],
self.title.text
)
end
return table.concat(ret)
end
--------------------------------------------------------------------------------
-- Blurb class
--------------------------------------------------------------------------------
local Blurb = {}
Blurb.__index = Blurb
Blurb.bannerTextFields = {
text = true,
explanation = true,
tooltip = true,
alt = true,
link = true
}
function Blurb.new(protectionObj, args, cfg)
return setmetatable({
_cfg = cfg,
_protectionObj = protectionObj,
_args = args
}, Blurb)
end
-- Private methods --
function Blurb:_formatDate(num)
-- Formats a Unix timestamp into dd Month, YYYY format.
lang = lang or mw.language.getContentLanguage()
local success, date = pcall(
lang.formatDate,
lang,
self._cfg.msg['expiry-date-format'] or 'j F Y',
'@' .. tostring(num)
)
if success then
return date
end
end
function Blurb:_getExpandedMessage(msgKey)
return self:_substituteParameters(self._cfg.msg[msgKey])
end
function Blurb:_substituteParameters(msg)
if not self._params then
local parameterFuncs = {}
parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter
parameterFuncs.EDITREQUEST = self._makeEditRequestParameter
parameterFuncs.EXPIRY = self._makeExpiryParameter
parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter
parameterFuncs.IMAGELINK = self._makeImageLinkParameter
parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter
parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter
parameterFuncs.PAGETYPE = self._makePagetypeParameter
parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter
parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter
parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter
parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter
parameterFuncs.TALKPAGE = self._makeTalkPageParameter
parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter
parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter
parameterFuncs.VANDAL = self._makeVandalTemplateParameter
self._params = setmetatable({}, {
__index = function (t, k)
local param
if parameterFuncs[k] then
param = parameterFuncs[k](self)
end
param = param or ''
t[k] = param
return param
end
})
end
msg = msg:gsub('${(%u+)}', self._params)
return msg
end
function Blurb:_makeCurrentVersionParameter()
-- A link to the page history or the move log, depending on the kind of
-- protection.
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'move' then
-- We need the move log link.
return makeFullUrl(
'Special:Log',
{type = 'move', page = pagename},
self:_getExpandedMessage('current-version-move-display')
)
else
-- We need the history link.
return makeFullUrl(
pagename,
{action = 'history'},
self:_getExpandedMessage('current-version-edit-display')
)
end
end
function Blurb:_makeEditRequestParameter()
local mEditRequest = require('Module:Submit an edit request')
local action = self._protectionObj.action
local level = self._protectionObj.level
-- Get the edit request type.
local requestType
if action == 'edit' then
if level == 'autoconfirmed' then
requestType = 'semi'
elseif level == 'extendedconfirmed' then
requestType = 'extended'
elseif level == 'templateeditor' then
requestType = 'template'
end
end
requestType = requestType or 'full'
-- Get the display value.
local display = self:_getExpandedMessage('edit-request-display')
return mEditRequest._link{type = requestType, display = display}
end
function Blurb:_makeExpiryParameter()
local expiry = self._protectionObj.expiry
if type(expiry) == 'number' then
return self:_formatDate(expiry)
else
return expiry
end
end
function Blurb:_makeExplanationBlurbParameter()
-- Cover special cases first.
if self._protectionObj.title.namespace == 8 then
-- MediaWiki namespace
return self:_getExpandedMessage('explanation-blurb-nounprotect')
end
-- Get explanation blurb table keys
local action = self._protectionObj.action
local level = self._protectionObj.level
local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject'
-- Find the message in the explanation blurb table and substitute any
-- parameters.
local explanations = self._cfg.explanationBlurbs
local msg
if explanations[action][level] and explanations[action][level][talkKey] then
msg = explanations[action][level][talkKey]
elseif explanations[action][level] and explanations[action][level].default then
msg = explanations[action][level].default
elseif explanations[action].default and explanations[action].default[talkKey] then
msg = explanations[action].default[talkKey]
elseif explanations[action].default and explanations[action].default.default then
msg = explanations[action].default.default
else
error(string.format(
'could not find explanation blurb for action "%s", level "%s" and talk key "%s"',
action,
level,
talkKey
), 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeImageLinkParameter()
local imageLinks = self._cfg.imageLinks
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if imageLinks[action][level] then
msg = imageLinks[action][level]
elseif imageLinks[action].default then
msg = imageLinks[action].default
else
msg = imageLinks.edit.default
end
return self:_substituteParameters(msg)
end
function Blurb:_makeIntroBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-blurb-expiry')
else
return self:_getExpandedMessage('intro-blurb-noexpiry')
end
end
function Blurb:_makeIntroFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('intro-fragment-expiry')
else
return self:_getExpandedMessage('intro-fragment-noexpiry')
end
end
function Blurb:_makePagetypeParameter()
local pagetypes = self._cfg.pagetypes
return pagetypes[self._protectionObj.title.namespace]
or pagetypes.default
or error('no default pagetype defined', 8)
end
function Blurb:_makeProtectionBlurbParameter()
local protectionBlurbs = self._cfg.protectionBlurbs
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionBlurbs[action][level] then
msg = protectionBlurbs[action][level]
elseif protectionBlurbs[action].default then
msg = protectionBlurbs[action].default
elseif protectionBlurbs.edit.default then
msg = protectionBlurbs.edit.default
else
error('no protection blurb defined for protectionBlurbs.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionDateParameter()
local protectionDate = self._protectionObj.protectionDate
if type(protectionDate) == 'number' then
return self:_formatDate(protectionDate)
else
return protectionDate
end
end
function Blurb:_makeProtectionLevelParameter()
local protectionLevels = self._cfg.protectionLevels
local action = self._protectionObj.action
local level = self._protectionObj.level
local msg
if protectionLevels[action][level] then
msg = protectionLevels[action][level]
elseif protectionLevels[action].default then
msg = protectionLevels[action].default
elseif protectionLevels.edit.default then
msg = protectionLevels.edit.default
else
error('no protection level defined for protectionLevels.edit.default', 8)
end
return self:_substituteParameters(msg)
end
function Blurb:_makeProtectionLogParameter()
local pagename = self._protectionObj.title.prefixedText
if self._protectionObj.action == 'autoreview' then
-- We need the pending changes log.
return makeFullUrl(
'Special:Log',
{type = 'stable', page = pagename},
self:_getExpandedMessage('pc-log-display')
)
else
-- We need the protection log.
return makeFullUrl(
'Special:Log',
{type = 'protect', page = pagename},
self:_getExpandedMessage('protection-log-display')
)
end
end
function Blurb:_makeTalkPageParameter()
return string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[self._protectionObj.title.namespace].talk.name,
self._protectionObj.title.text,
self._args.section or 'top',
self:_getExpandedMessage('talk-page-link-display')
)
end
function Blurb:_makeTooltipBlurbParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-blurb-expiry')
else
return self:_getExpandedMessage('tooltip-blurb-noexpiry')
end
end
function Blurb:_makeTooltipFragmentParameter()
if self._protectionObj:isTemporary() then
return self:_getExpandedMessage('tooltip-fragment-expiry')
else
return self:_getExpandedMessage('tooltip-fragment-noexpiry')
end
end
function Blurb:_makeVandalTemplateParameter()
return mw.getCurrentFrame():expandTemplate{
title="vandal-m",
args={self._args.user or self._protectionObj.title.baseText}
}
end
-- Public methods --
function Blurb:makeBannerText(key)
-- Validate input.
if not key or not Blurb.bannerTextFields[key] then
error(string.format(
'"%s" is not a valid banner config field',
tostring(key)
), 2)
end
-- Generate the text.
local msg = self._protectionObj.bannerConfig[key]
if type(msg) == 'string' then
return self:_substituteParameters(msg)
elseif type(msg) == 'function' then
msg = msg(self._protectionObj, self._args)
if type(msg) ~= 'string' then
error(string.format(
'bad output from banner config function with key "%s"'
.. ' (expected string, got %s)',
tostring(key),
type(msg)
), 4)
end
return self:_substituteParameters(msg)
end
end
--------------------------------------------------------------------------------
-- BannerTemplate class
--------------------------------------------------------------------------------
local BannerTemplate = {}
BannerTemplate.__index = BannerTemplate
function BannerTemplate.new(protectionObj, cfg)
local obj = {}
obj._cfg = cfg
-- Set the image filename.
local imageFilename = protectionObj.bannerConfig.image
if imageFilename then
obj._imageFilename = imageFilename
else
-- If an image filename isn't specified explicitly in the banner config,
-- generate it from the protection status and the namespace.
local action = protectionObj.action
local level = protectionObj.level
local namespace = protectionObj.title.namespace
local reason = protectionObj.reason
-- Deal with special cases first.
if (
namespace == 10
or namespace == 828
or reason and obj._cfg.indefImageReasons[reason]
)
and action == 'edit'
and level == 'sysop'
and not protectionObj:isTemporary()
then
-- Fully protected modules and templates get the special red "indef"
-- padlock.
obj._imageFilename = obj._cfg.msg['image-filename-indef']
else
-- Deal with regular protection types.
local images = obj._cfg.images
if images[action] then
if images[action][level] then
obj._imageFilename = images[action][level]
elseif images[action].default then
obj._imageFilename = images[action].default
end
end
end
end
return setmetatable(obj, BannerTemplate)
end
function BannerTemplate:renderImage()
local filename = self._imageFilename
or self._cfg.msg['image-filename-default']
or 'Transparent.gif'
return makeFileLink{
file = filename,
size = (self.imageWidth or 20) .. 'px',
alt = self._imageAlt,
link = self._imageLink,
caption = self.imageCaption
}
end
--------------------------------------------------------------------------------
-- Banner class
--------------------------------------------------------------------------------
local Banner = setmetatable({}, BannerTemplate)
Banner.__index = Banner
function Banner.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 40
obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip.
obj._reasonText = blurbObj:makeBannerText('text')
obj._explanationText = blurbObj:makeBannerText('explanation')
obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing.
return setmetatable(obj, Banner)
end
function Banner:__tostring()
-- Renders the banner.
makeMessageBox = makeMessageBox or require('Module:Message box').main
local reasonText = self._reasonText or error('no reason text set', 2)
local explanationText = self._explanationText
local mbargs = {
page = self._page,
type = 'protection',
image = self:renderImage(),
text = string.format(
"'''%s'''%s",
reasonText,
explanationText and '<br />' .. explanationText or ''
)
}
return makeMessageBox('mbox', mbargs)
end
--------------------------------------------------------------------------------
-- Padlock class
--------------------------------------------------------------------------------
local Padlock = setmetatable({}, BannerTemplate)
Padlock.__index = Padlock
function Padlock.new(protectionObj, blurbObj, cfg)
local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb.
obj.imageWidth = 20
obj.imageCaption = blurbObj:makeBannerText('tooltip')
obj._imageAlt = blurbObj:makeBannerText('alt')
obj._imageLink = blurbObj:makeBannerText('link')
obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action]
or cfg.padlockIndicatorNames.default
or 'pp-default'
return setmetatable(obj, Padlock)
end
function Padlock:__tostring()
local frame = mw.getCurrentFrame()
-- The nowiki tag helps prevent whitespace at the top of articles.
return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{
name = 'indicator',
args = {name = self._indicatorName},
content = self:renderImage()
}
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- This is used for testing purposes.
return {
Protection = Protection,
Blurb = Blurb,
BannerTemplate = BannerTemplate,
Banner = Banner,
Padlock = Padlock,
}
end
function p._main(args, cfg, title)
args = args or {}
cfg = cfg or require(CONFIG_MODULE)
local protectionObj = Protection.new(args, cfg, title)
local ret = {}
-- If a page's edit protection is equally or more restrictive than its
-- protection from some other action, then don't bother displaying anything
-- for the other action (except categories).
if not yesno(args.catonly) and (protectionObj.action == 'edit' or
args.demolevel or
not getReachableNodes(
cfg.hierarchy,
protectionObj.level
)[effectiveProtectionLevel('edit', protectionObj.title)])
then
-- Initialise the blurb object
local blurbObj = Blurb.new(protectionObj, args, cfg)
-- Render the banner
if protectionObj:shouldShowLock() then
ret[#ret + 1] = tostring(
(yesno(args.small) and Padlock or Banner)
.new(protectionObj, blurbObj, cfg)
)
end
end
-- Render the categories
if yesno(args.category) ~= false then
ret[#ret + 1] = protectionObj:makeCategoryLinks()
end
return table.concat(ret)
end
function p.main(frame, cfg)
cfg = cfg or require(CONFIG_MODULE)
-- Find default args, if any.
local parent = frame.getParent and frame:getParent()
local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')]
-- Find user args, and use the parent frame if we are being called from a
-- wrapper template.
getArgs = getArgs or require('Module:Arguments').getArgs
local userArgs = getArgs(frame, {
parentOnly = defaultArgs,
frameOnly = not defaultArgs
})
-- Build the args table. User-specified args overwrite default args.
local args = {}
for k, v in pairs(defaultArgs or {}) do
args[k] = v
end
for k, v in pairs(userArgs) do
args[k] = v
end
return p._main(args, cfg)
end
return p
894f0884d4c2da1ce19d385b96f59af654b0946a
Module:Protection banner/config
828
41
78
77
2023-09-30T18:43:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Protection_banner/config]]
Scribunto
text/plain
-- This module provides configuration data for [[Module:Protection banner]].
return {
--------------------------------------------------------------------------------
--
-- BANNER DATA
--
--------------------------------------------------------------------------------
--[[
-- Banner data consists of six fields:
-- * text - the main protection text that appears at the top of protection
-- banners.
-- * explanation - the text that appears below the main protection text, used
-- to explain the details of the protection.
-- * tooltip - the tooltip text you see when you move the mouse over a small
-- padlock icon.
-- * link - the page that the small padlock icon links to.
-- * alt - the alt text for the small padlock icon. This is also used as tooltip
-- text for the large protection banners.
-- * image - the padlock image used in both protection banners and small padlock
-- icons.
--
-- The module checks in three separate tables to find a value for each field.
-- First it checks the banners table, which has values specific to the reason
-- for the page being protected. Then the module checks the defaultBanners
-- table, which has values specific to each protection level. Finally, the
-- module checks the masterBanner table, which holds data for protection
-- templates to use if no data has been found in the previous two tables.
--
-- The values in the banner data can take parameters. These are specified
-- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name
-- enclosed in curly braces).
--
-- Available parameters:
--
-- ${CURRENTVERSION} - a link to the page history or the move log, with the
-- display message "current-version-edit-display" or
-- "current-version-move-display".
--
-- ${EDITREQUEST} - a link to create an edit request for the current page.
--
-- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes
-- on the talk page; you may submit a request to ask an administrator to make
-- an edit if it is minor or supported by consensus."
--
-- ${IMAGELINK} - a link to set the image to, depending on the protection
-- action and protection level.
--
-- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry
-- is set. E.g. "Editing of this page by new or unregistered users is currently
-- disabled until dd Month YYYY."
--
-- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation
-- so that it can be used in run-on sentences.
--
-- ${PAGETYPE} - the type of the page, e.g. "article" or "template".
-- Defined in the cfg.pagetypes table.
--
-- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g.
-- "Editing of this page by new or unregistered users is currently disabled"
--
-- ${PROTECTIONDATE} - the protection date, if it has been supplied to the
-- template.
--
-- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or
-- "semi-protected".
--
-- ${PROTECTIONLOG} - a link to the protection log or the pending changes log,
-- depending on the protection action.
--
-- ${TALKPAGE} - a link to the talk page. If a section is specified, links
-- straight to that talk page section.
--
-- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to
-- create a blurb like "This template is semi-protected", or "This article is
-- move-protected until DD Month YYYY".
--
-- ${VANDAL} - links for the specified username (or the root page name)
-- using Module:Vandal-m.
--
-- Functions
--
-- For advanced users, it is possible to use Lua functions instead of strings
-- in the banner config tables. Using functions gives flexibility that is not
-- possible just by using parameters. Functions take two arguments, the
-- protection object and the template arguments, and they must output a string.
--
-- For example:
--
-- text = function (protectionObj, args)
-- if protectionObj.level == 'autoconfirmed' then
-- return 'foo'
-- else
-- return 'bar'
-- end
-- end
--
-- Some protection object properties and methods that may be useful:
-- protectionObj.action - the protection action
-- protectionObj.level - the protection level
-- protectionObj.reason - the protection reason
-- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set
-- to indefinite, and the protection time in unix time if temporary.
-- protectionObj.protectionDate - the protection date in unix time, or nil if
-- unspecified.
-- protectionObj.bannerConfig - the banner config found by the module. Beware
-- of editing the config field used by the function, as it could create an
-- infinite loop.
-- protectionObj:isProtected - returns a boolean showing whether the page is
-- protected.
-- protectionObj:isTemporary - returns a boolean showing whether the expiry is
-- temporary.
-- protectionObj:isIncorrect - returns a boolean showing whether the protection
-- template is incorrect.
--]]
-- The master banner data, used if no values have been found in banners or
-- defaultBanners.
masterBanner = {
text = '${INTROBLURB}',
explanation = '${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPBLURB}',
link = '${IMAGELINK}',
alt = 'Page ${PROTECTIONLEVEL}'
},
-- The default banner data. This holds banner data for different protection
-- levels.
-- *required* - this table needs edit, move, autoreview and upload subtables.
defaultBanners = {
edit = {},
move = {},
autoreview = {
default = {
alt = 'Page protected with pending changes',
tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users',
image = 'Pending-protection-shackle.svg'
}
},
upload = {}
},
-- The banner data. This holds banner data for different protection reasons.
-- In fact, the reasons specified in this table control which reasons are
-- valid inputs to the first positional parameter.
--
-- There is also a non-standard "description" field that can be used for items
-- in this table. This is a description of the protection reason for use in the
-- module documentation.
--
-- *required* - this table needs edit, move, autoreview and upload subtables.
banners = {
edit = {
blp = {
description = 'For pages protected to promote compliance with the'
.. ' [[Wikipedia:Biographies of living persons'
.. '|biographies of living persons]] policy',
text = '${INTROFRAGMENT} to promote compliance with'
.. ' [[Wikipedia:Biographies of living persons'
.. "|Wikipedia's policy on the biographies"
.. ' of living people]].',
tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on'
.. ' biographies of living persons',
},
dmca = {
description = 'For pages protected by the Wikimedia Foundation'
.. ' due to [[Digital Millennium Copyright Act]] takedown requests',
explanation = function (protectionObj, args)
local ret = 'Pursuant to a rights owner notice under the Digital'
.. ' Millennium Copyright Act (DMCA) regarding some content'
.. ' in this article, the Wikimedia Foundation acted under'
.. ' applicable law and took down and restricted the content'
.. ' in question.'
if args.notice then
ret = ret .. ' A copy of the received notice can be found here: '
.. args.notice .. '.'
end
ret = ret .. ' For more information, including websites discussing'
.. ' how to file a counter-notice, please see'
.. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}."
.. "'''Do not remove this template from the article until the"
.. " restrictions are withdrawn'''."
return ret
end,
image = 'Office-protection-shackle.svg',
},
dispute = {
description = 'For pages protected due to editing disputes',
text = function (protectionObj, args)
-- Find the value of "disputes".
local display = 'disputes'
local disputes
if args.section then
disputes = string.format(
'[[%s:%s#%s|%s]]',
mw.site.namespaces[protectionObj.title.namespace].talk.name,
protectionObj.title.text,
args.section,
display
)
else
disputes = display
end
-- Make the blurb, depending on the expiry.
local msg
if type(protectionObj.expiry) == 'number' then
msg = '${INTROFRAGMENT} or until editing %s have been resolved.'
else
msg = '${INTROFRAGMENT} until editing %s have been resolved.'
end
return string.format(msg, disputes)
end,
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
tooltip = '${TOOLTIPFRAGMENT} due to editing disputes',
},
ecp = {
description = 'For articles in topic areas authorized by'
.. ' [[Wikipedia:Arbitration Committee|ArbCom]] or'
.. ' meets the criteria for community use',
tooltip = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
alt = 'Extended-protected ${PAGETYPE}',
},
mainpage = {
description = 'For pages protected for being displayed on the [[Main Page]]',
text = 'This file is currently'
.. ' [[Wikipedia:This page is protected|protected]] from'
.. ' editing because it is currently or will soon be displayed'
.. ' on the [[Main Page]].',
explanation = 'Images on the Main Page are protected due to their high'
.. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.'
.. '<br /><span style="font-size:90%;">'
.. "'''Administrators:''' Once this image is definitely off the Main Page,"
.. ' please unprotect this file, or reduce to semi-protection,'
.. ' as appropriate.</span>',
},
office = {
description = 'For pages protected by the Wikimedia Foundation',
text = function (protectionObj, args)
local ret = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.'
if protectionObj.protectionDate then
ret = ret .. ' It has been protected since ${PROTECTIONDATE}.'
end
return ret
end,
explanation = "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not remove protection from this"
.. " page unless you are authorized by the Wikimedia Foundation to do"
.. " so.'''",
image = 'Office-protection-shackle.svg',
},
reset = {
description = 'For pages protected by the Wikimedia Foundation and'
.. ' "reset" to a bare-bones version',
text = 'This ${PAGETYPE} is currently under the'
.. ' scrutiny of the'
.. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]'
.. ' and is protected.',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.protectionDate then
ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was'
else
ret = ret .. 'This ${PAGETYPE} has been'
end
ret = ret .. ' reduced to a'
.. ' simplified, "bare bones" version so that it may be completely'
.. ' rewritten to ensure it meets the policies of'
.. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].'
.. ' Standard Wikipedia policies will apply to its rewriting—which'
.. ' will eventually be open to all editors—and will be strictly'
.. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while'
.. ' it is being rebuilt.\n\n'
.. 'Any insertion of material directly from'
.. ' pre-protection revisions of the ${PAGETYPE} will be removed, as'
.. ' will any material added to the ${PAGETYPE} that is not properly'
.. ' sourced. The associated talk page(s) were also cleared on the'
.. " same date.\n\n"
.. "If you can edit this page, please discuss all changes and"
.. " additions on the ${TALKPAGE} first. '''Do not override"
.. " this action, and do not remove protection from this page,"
.. " unless you are authorized by the Wikimedia Foundation"
.. " to do so. No editor may remove this notice.'''"
return ret
end,
image = 'Office-protection-shackle.svg',
},
sock = {
description = 'For pages protected due to'
.. ' [[Wikipedia:Sock puppetry|sock puppetry]]',
text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of'
.. ' [[Wikipedia:Blocking policy|blocked]] or'
.. ' [[Wikipedia:Banning policy|banned users]]'
.. ' from editing it.',
tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from'
.. ' editing it',
},
template = {
description = 'For [[Wikipedia:High-risk templates|high-risk]]'
.. ' templates and Lua modules',
text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},'
.. ' as it is [[Wikipedia:High-risk templates|high-risk]].',
explanation = 'Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] or'
.. ' [[Wikipedia:Template editor|template editor]] to make an edit if'
.. ' it is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by'
.. ' [[Wikipedia:Consensus|consensus]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}'
.. ' to prevent vandalism',
alt = 'Permanently protected ${PAGETYPE}',
},
usertalk = {
description = 'For pages protected against disruptive edits by a'
.. ' particular user',
text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,'
.. ' such as abusing the'
.. ' {{[[Template:unblock|unblock]]}} template.',
explanation = 'If you cannot edit this user talk page and you need to'
.. ' make a change or leave a message, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for edits to a protected page'
.. '|request an edit]],'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]],'
.. ' [[Special:Userlogin|log in]],'
.. ' or [[Special:UserLogin/signup|create an account]].',
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism|vandalism]]',
text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].',
explanation = function (protectionObj, args)
local ret = ''
if protectionObj.level == 'sysop' then
ret = ret .. "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. '
end
return ret .. '${EXPLANATIONBLURB}'
end,
tooltip = '${TOOLTIPFRAGMENT} due to vandalism',
}
},
move = {
dispute = {
description = 'For pages protected against page moves due to'
.. ' disputes over the page title',
explanation = "This protection is '''not''' an endorsement of the"
.. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}',
image = 'Move-protection-shackle.svg'
},
vandalism = {
description = 'For pages protected against'
.. ' [[Wikipedia:Vandalism#Page-move vandalism'
.. ' |page-move vandalism]]'
}
},
autoreview = {},
upload = {}
},
--------------------------------------------------------------------------------
--
-- GENERAL DATA TABLES
--
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Protection blurbs
--------------------------------------------------------------------------------
-- This table produces the protection blurbs available with the
-- ${PROTECTIONBLURB} parameter. It is sorted by protection action and
-- protection level, and is checked by the module in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionBlurbs = {
edit = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|'
.. 'protected]] from editing',
autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access'
.. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered'
.. ' users|unregistered]] users is currently [[Help:Protection|disabled]]',
extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection',
},
move = {
default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]'
.. ' from [[Help:Moving a page|page moves]]'
},
autoreview = {
default = 'All edits made to this ${PAGETYPE} by'
.. ' [[Wikipedia:User access levels#New users|new]] or'
.. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]'
.. ' users are currently'
.. ' [[Wikipedia:Pending changes|subject to review]]'
},
upload = {
default = 'Uploading new versions of this ${PAGETYPE} is currently disabled'
}
},
--------------------------------------------------------------------------------
-- Explanation blurbs
--------------------------------------------------------------------------------
-- This table produces the explanation blurbs available with the
-- ${EXPLANATIONBLURB} parameter. It is sorted by protection action,
-- protection level, and whether the page is a talk page or not. If the page is
-- a talk page it will have a talk key of "talk"; otherwise it will have a talk
-- key of "subject". The table is checked in the following order:
-- 1. page's protection action, page's protection level, page's talk key
-- 2. page's protection action, page's protection level, default talk key
-- 3. page's protection action, default protection level, page's talk key
-- 4. page's protection action, default protection level, default talk key
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
explanationBlurbs = {
edit = {
autoconfirmed = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details. If you'
.. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].',
},
extendedconfirmed = {
default = 'Extended confirmed protection prevents edits from all unregistered editors'
.. ' and registered users with fewer than 30 days tenure and 500 edits.'
.. ' The [[Wikipedia:Protection policy#extended|policy on community use]]'
.. ' specifies that extended confirmed protection can be applied to combat'
.. ' disruption, if semi-protection has proven to be ineffective.'
.. ' Extended confirmed protection may also be applied to enforce'
.. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].'
.. ' Please discuss any changes on the ${TALKPAGE}; you may'
.. ' ${EDITREQUEST} to ask for uncontroversial changes supported by'
.. ' [[Wikipedia:Consensus|consensus]].'
},
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]]. You may also [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|request]] that this page be unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' You may [[Wikipedia:Requests for page'
.. ' protection#Current requests for edits to a protected page|request an'
.. ' edit]] to this page, or [[Wikipedia:Requests for'
.. ' page protection#Current requests for reduction in protection level'
.. '|ask]] for it to be unprotected.'
}
},
move = {
default = {
subject = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves on the'
.. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.',
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but cannot be moved'
.. ' until unprotected. Please discuss any suggested moves at'
.. ' [[Wikipedia:Requested moves]]. You can also'
.. ' [[Wikipedia:Requests for page protection|request]] that the page be'
.. ' unprotected.'
}
},
autoreview = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Edits to this ${PAGETYPE} by new and unregistered users'
.. ' will not be visible to readers until they are accepted by'
.. ' a reviewer. To avoid the need for your edits to be'
.. ' reviewed, you may'
.. ' [[Wikipedia:Requests for page protection'
.. '#Current requests for reduction in protection level'
.. '|request unprotection]], [[Special:Userlogin|log in]], or'
.. ' [[Special:UserLogin/signup|create an account]].'
},
},
upload = {
default = {
default = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' The page may still be edited but new versions of the file'
.. ' cannot be uploaded until it is unprotected. You can'
.. ' request that a new version be uploaded by using a'
.. ' [[Wikipedia:Edit requests|protected edit request]], or you'
.. ' can [[Wikipedia:Requests for page protection|request]]'
.. ' that the file be unprotected.'
}
}
},
--------------------------------------------------------------------------------
-- Protection levels
--------------------------------------------------------------------------------
-- This table provides the data for the ${PROTECTIONLEVEL} parameter, which
-- produces a short label for different protection levels. It is sorted by
-- protection action and protection level, and is checked in the following
-- order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
protectionLevels = {
edit = {
default = 'protected',
templateeditor = 'template-protected',
extendedconfirmed = 'extended-protected',
autoconfirmed = 'semi-protected',
},
move = {
default = 'move-protected'
},
autoreview = {
},
upload = {
default = 'upload-protected'
}
},
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- This table lists different padlock images for each protection action and
-- protection level. It is used if an image is not specified in any of the
-- banner data tables, and if the page does not satisfy the conditions for using
-- the ['image-filename-indef'] image. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
images = {
edit = {
default = 'Full-protection-shackle.svg',
templateeditor = 'Template-protection-shackle.svg',
extendedconfirmed = 'Extended-protection-shackle.svg',
autoconfirmed = 'Semi-protection-shackle.svg'
},
move = {
default = 'Move-protection-shackle.svg',
},
autoreview = {
default = 'Pending-protection-shackle.svg'
},
upload = {
default = 'Upload-protection-shackle.svg'
}
},
-- Pages with a reason specified in this table will show the special "indef"
-- padlock, defined in the 'image-filename-indef' message, if no expiry is set.
indefImageReasons = {
template = true
},
--------------------------------------------------------------------------------
-- Image links
--------------------------------------------------------------------------------
-- This table provides the data for the ${IMAGELINK} parameter, which gets
-- the image link for small padlock icons based on the page's protection action
-- and protection level. It is checked in the following order:
-- 1. page's protection action, page's protection level
-- 2. page's protection action, default protection level
-- 3. "edit" protection action, default protection level
--
-- It is possible to use banner parameters inside this table.
-- *required* - this table needs edit, move, autoreview and upload subtables.
imageLinks = {
edit = {
default = 'Wikipedia:Protection policy#full',
templateeditor = 'Wikipedia:Protection policy#template',
extendedconfirmed = 'Wikipedia:Protection policy#extended',
autoconfirmed = 'Wikipedia:Protection policy#semi'
},
move = {
default = 'Wikipedia:Protection policy#move'
},
autoreview = {
default = 'Wikipedia:Protection policy#pending'
},
upload = {
default = 'Wikipedia:Protection policy#upload'
}
},
--------------------------------------------------------------------------------
-- Padlock indicator names
--------------------------------------------------------------------------------
-- This table provides the "name" attribute for the <indicator> extension tag
-- with which small padlock icons are generated. All indicator tags on a page
-- are displayed in alphabetical order based on this attribute, and with
-- indicator tags with duplicate names, the last tag on the page wins.
-- The attribute is chosen based on the protection action; table keys must be a
-- protection action name or the string "default".
padlockIndicatorNames = {
autoreview = 'pp-autoreview',
default = 'pp-default'
},
--------------------------------------------------------------------------------
-- Protection categories
--------------------------------------------------------------------------------
--[[
-- The protection categories are stored in the protectionCategories table.
-- Keys to this table are made up of the following strings:
--
-- 1. the expiry date
-- 2. the namespace
-- 3. the protection reason (e.g. "dispute" or "vandalism")
-- 4. the protection level (e.g. "sysop" or "autoconfirmed")
-- 5. the action (e.g. "edit" or "move")
--
-- When the module looks up a category in the table, first it will will check to
-- see a key exists that corresponds to all five parameters. For example, a
-- user page semi-protected from vandalism for two weeks would have the key
-- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module
-- changes the first part of the key to "all" and checks the table again. It
-- keeps checking increasingly generic key combinations until it finds the
-- field, or until it reaches the key "all-all-all-all-all".
--
-- The module uses a binary matrix to determine the order in which to search.
-- This is best demonstrated by a table. In this table, the "0" values
-- represent "all", and the "1" values represent the original data (e.g.
-- "indef" or "file" or "vandalism").
--
-- expiry namespace reason level action
-- order
-- 1 1 1 1 1 1
-- 2 0 1 1 1 1
-- 3 1 0 1 1 1
-- 4 0 0 1 1 1
-- 5 1 1 0 1 1
-- 6 0 1 0 1 1
-- 7 1 0 0 1 1
-- 8 0 0 0 1 1
-- 9 1 1 1 0 1
-- 10 0 1 1 0 1
-- 11 1 0 1 0 1
-- 12 0 0 1 0 1
-- 13 1 1 0 0 1
-- 14 0 1 0 0 1
-- 15 1 0 0 0 1
-- 16 0 0 0 0 1
-- 17 1 1 1 1 0
-- 18 0 1 1 1 0
-- 19 1 0 1 1 0
-- 20 0 0 1 1 0
-- 21 1 1 0 1 0
-- 22 0 1 0 1 0
-- 23 1 0 0 1 0
-- 24 0 0 0 1 0
-- 25 1 1 1 0 0
-- 26 0 1 1 0 0
-- 27 1 0 1 0 0
-- 28 0 0 1 0 0
-- 29 1 1 0 0 0
-- 30 0 1 0 0 0
-- 31 1 0 0 0 0
-- 32 0 0 0 0 0
--
-- In this scheme the action has the highest priority, as it is the last
-- to change, and the expiry has the least priority, as it changes the most.
-- The priorities of the expiry, the protection level and the action are
-- fixed, but the priorities of the reason and the namespace can be swapped
-- through the use of the cfg.bannerDataNamespaceHasPriority table.
--]]
-- If the reason specified to the template is listed in this table,
-- namespace data will take priority over reason data in the protectionCategories
-- table.
reasonsWithNamespacePriority = {
vandalism = true,
},
-- The string to use as a namespace key for the protectionCategories table for each
-- namespace number.
categoryNamespaceKeys = {
[ 2] = 'user',
[ 3] = 'user',
[ 4] = 'project',
[ 6] = 'file',
[ 8] = 'mediawiki',
[ 10] = 'template',
[ 12] = 'project',
[ 14] = 'category',
[100] = 'portal',
[828] = 'module',
},
protectionCategories = {
['all|all|all|all|all'] = 'Wikipedia fully protected pages',
['all|all|office|all|all'] = 'Wikipedia Office-protected pages',
['all|all|reset|all|all'] = 'Wikipedia Office-protected pages',
['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages',
['all|all|mainpage|all|all'] = 'Wikipedia fully protected main page files',
['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages',
['all|template|all|all|edit'] = 'Wikipedia fully protected templates',
['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages',
['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages',
['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people',
['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people',
['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute',
['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users',
['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism',
['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories',
['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files',
['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals',
['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages',
['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages',
['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates',
['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages',
['all|all|all|templateeditor|edit'] = 'Wikipedia template-protected pages other than templates and modules',
['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates',
['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected templates
['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people',
['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people',
['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute',
['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users',
['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism',
['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories',
['all|file|all|sysop|edit'] = 'Wikipedia fully protected files',
['all|project|all|sysop|edit'] = 'Wikipedia fully protected project pages',
['all|talk|all|sysop|edit'] = 'Wikipedia fully protected talk pages',
['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates',
['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates',
['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages',
['all|module|all|all|edit'] = 'Wikipedia fully protected modules',
['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules',
['all|module|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected modules',
['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules',
['all|all|all|sysop|move'] = 'Wikipedia move-protected pages',
['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages',
['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute',
['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism',
['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals',
['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages',
['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages',
['all|template|all|sysop|move'] = 'Wikipedia move-protected templates',
['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages',
['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages',
['all|file|all|all|upload'] = 'Wikipedia upload-protected files',
},
--------------------------------------------------------------------------------
-- Expiry category config
--------------------------------------------------------------------------------
-- This table configures the expiry category behaviour for each protection
-- action.
-- * If set to true, setting that action will always categorise the page if
-- an expiry parameter is not set.
-- * If set to false, setting that action will never categorise the page.
-- * If set to nil, the module will categorise the page if:
-- 1) an expiry parameter is not set, and
-- 2) a reason is provided, and
-- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck
-- table.
expiryCheckActions = {
edit = nil,
move = false,
autoreview = true,
upload = false
},
reasonsWithoutExpiryCheck = {
blp = true,
template = true,
},
--------------------------------------------------------------------------------
-- Pagetypes
--------------------------------------------------------------------------------
-- This table produces the page types available with the ${PAGETYPE} parameter.
-- Keys are namespace numbers, or the string "default" for the default value.
pagetypes = {
[0] = 'article',
[6] = 'file',
[10] = 'template',
[14] = 'category',
[828] = 'module',
default = 'page'
},
--------------------------------------------------------------------------------
-- Strings marking indefinite protection
--------------------------------------------------------------------------------
-- This table contains values passed to the expiry parameter that mean the page
-- is protected indefinitely.
indefStrings = {
['indef'] = true,
['indefinite'] = true,
['indefinitely'] = true,
['infinite'] = true,
},
--------------------------------------------------------------------------------
-- Group hierarchy
--------------------------------------------------------------------------------
-- This table maps each group to all groups that have a superset of the original
-- group's page editing permissions.
hierarchy = {
sysop = {},
reviewer = {'sysop'},
filemover = {'sysop'},
templateeditor = {'sysop'},
extendedconfirmed = {'sysop'},
autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'},
user = {'autoconfirmed'},
['*'] = {'user'}
},
--------------------------------------------------------------------------------
-- Wrapper templates and their default arguments
--------------------------------------------------------------------------------
-- This table contains wrapper templates used with the module, and their
-- default arguments. Templates specified in this table should contain the
-- following invocation, and no other template content:
--
-- {{#invoke:Protection banner|main}}
--
-- If other content is desired, it can be added between
-- <noinclude>...</noinclude> tags.
--
-- When a user calls one of these wrapper templates, they will use the
-- default arguments automatically. However, users can override any of the
-- arguments.
wrappers = {
['Template:Pp'] = {},
['Template:Pp-extended'] = {'ecp'},
['Template:Pp-blp'] = {'blp'},
-- we don't need Template:Pp-create
['Template:Pp-dispute'] = {'dispute'},
['Template:Pp-main-page'] = {'mainpage'},
['Template:Pp-move'] = {action = 'move', catonly = 'yes'},
['Template:Pp-move-dispute'] = {'dispute', action = 'move', catonly = 'yes'},
-- we don't need Template:Pp-move-indef
['Template:Pp-move-vandalism'] = {'vandalism', action = 'move', catonly = 'yes'},
['Template:Pp-office'] = {'office'},
['Template:Pp-office-dmca'] = {'dmca'},
['Template:Pp-pc'] = {action = 'autoreview', small = true},
['Template:Pp-pc1'] = {action = 'autoreview', small = true},
['Template:Pp-reset'] = {'reset'},
['Template:Pp-semi-indef'] = {small = true},
['Template:Pp-sock'] = {'sock'},
['Template:Pp-template'] = {'template', small = true},
['Template:Pp-upload'] = {action = 'upload'},
['Template:Pp-usertalk'] = {'usertalk'},
['Template:Pp-vandalism'] = {'vandalism'},
},
--------------------------------------------------------------------------------
--
-- MESSAGES
--
--------------------------------------------------------------------------------
msg = {
--------------------------------------------------------------------------------
-- Intro blurb and intro fragment
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${INTROBLURB} and
-- ${INTROFRAGMENT} parameters. If the protection is temporary they use the
-- intro-blurb-expiry or intro-fragment-expiry, and if not they use
-- intro-blurb-noexpiry or intro-fragment-noexpiry.
-- It is possible to use banner parameters in these messages.
['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.',
['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.',
['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},',
['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}',
--------------------------------------------------------------------------------
-- Tooltip blurb
--------------------------------------------------------------------------------
-- These messages specify what is produced by the ${TOOLTIPBLURB} parameter.
-- If the protection is temporary the tooltip-blurb-expiry message is used, and
-- if not the tooltip-blurb-noexpiry message is used.
-- It is possible to use banner parameters in these messages.
['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.',
['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.',
['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},',
['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}',
--------------------------------------------------------------------------------
-- Special explanation blurb
--------------------------------------------------------------------------------
-- An explanation blurb for pages that cannot be unprotected, e.g. for pages
-- in the MediaWiki namespace.
-- It is possible to use banner parameters in this message.
['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|'
.. 'protection policy]] and ${PROTECTIONLOG} for more details.'
.. ' Please discuss any changes on the ${TALKPAGE}; you'
.. ' may ${EDITREQUEST} to ask an'
.. ' [[Wikipedia:Administrators|administrator]] to make an edit if it'
.. ' is [[Help:Minor edit#When to mark an edit as a minor edit'
.. '|uncontroversial]] or supported by [[Wikipedia:Consensus'
.. '|consensus]].',
--------------------------------------------------------------------------------
-- Protection log display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the protection log link
-- or the pending changes log link produced by the ${PROTECTIONLOG} parameter.
-- It is possible to use banner parameters in these messages.
['protection-log-display'] = 'protection log',
['pc-log-display'] = 'pending changes log',
--------------------------------------------------------------------------------
-- Current version display values
--------------------------------------------------------------------------------
-- These messages determine the display values for the page history link
-- or the move log link produced by the ${CURRENTVERSION} parameter.
-- It is possible to use banner parameters in these messages.
['current-version-move-display'] = 'current title',
['current-version-edit-display'] = 'current version',
--------------------------------------------------------------------------------
-- Talk page
--------------------------------------------------------------------------------
-- This message determines the display value of the talk page link produced
-- with the ${TALKPAGE} parameter.
-- It is possible to use banner parameters in this message.
['talk-page-link-display'] = 'talk page',
--------------------------------------------------------------------------------
-- Edit requests
--------------------------------------------------------------------------------
-- This message determines the display value of the edit request link produced
-- with the ${EDITREQUEST} parameter.
-- It is possible to use banner parameters in this message.
['edit-request-display'] = 'submit an edit request',
--------------------------------------------------------------------------------
-- Expiry date format
--------------------------------------------------------------------------------
-- This is the format for the blurb expiry date. It should be valid input for
-- the first parameter of the #time parser function.
['expiry-date-format'] = 'F j, Y "at" H:i e',
--------------------------------------------------------------------------------
-- Tracking categories
--------------------------------------------------------------------------------
-- These messages determine which tracking categories the module outputs.
['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates',
['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules',
--------------------------------------------------------------------------------
-- Images
--------------------------------------------------------------------------------
-- These are images that are not defined by their protection action and protection level.
['image-filename-indef'] = 'Full-protection-shackle.svg',
['image-filename-default'] = 'Transparent.gif',
--------------------------------------------------------------------------------
-- End messages
--------------------------------------------------------------------------------
}
--------------------------------------------------------------------------------
-- End configuration
--------------------------------------------------------------------------------
}
a20552ae38cb5253a4fa29aa126abc74215a589f
Module:Sidebar
828
42
80
79
2023-09-30T18:43:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Sidebar]]
Scribunto
text/plain
require('strict')
local cfg = mw.loadData('Module:Sidebar/configuration')
local p = {}
local getArgs = require('Module:Arguments').getArgs
--[[
Categorizes calling templates and modules with a 'style' parameter of any sort
for tracking to convert to TemplateStyles.
TODO after a long cleanup: Catch sidebars in other namespaces than Template and Module.
TODO would probably want to remove /log and /archive as CS1 does
]]
local function categorizeTemplatesWithInlineStyles(args)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 and title.namespace ~= 828 then return '' end
for _, pattern in ipairs (cfg.i18n.pattern.uncategorized_conversion_titles) do
if title.text:match(pattern) then return '' end
end
for key, _ in pairs(args) do
if mw.ustring.find(key, cfg.i18n.pattern.style_conversion) or key == 'width' then
return cfg.i18n.category.conversion
end
end
end
--[[
For compatibility with the original {{sidebar with collapsible lists}}
implementation, which passed some parameters through {{#if}} to trim their
whitespace. This also triggered the automatic newline behavior.
]]
-- See ([[meta:Help:Newlines and spaces#Automatic newline]])
local function trimAndAddAutomaticNewline(s)
s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1")
if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then
return '\n' .. s
else
return s
end
end
--[[
Finds whether a sidebar has a subgroup sidebar.
]]
local function hasSubgroup(s)
if mw.ustring.find(s, cfg.i18n.pattern.subgroup) then
return true
else
return false
end
end
local function has_navbar(navbar_mode, sidebar_name)
return navbar_mode ~= cfg.i18n.navbar_none and
navbar_mode ~= cfg.i18n.navbar_off and
(
sidebar_name or
mw.getCurrentFrame():getParent():getTitle():gsub(cfg.i18n.pattern.sandbox, '') ~=
cfg.i18n.title_not_to_add_navbar
)
end
local function has_list_class(args, htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, value in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles(args)
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(args, htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local plainlist_styles = add_list_templatestyles('plainlist', cfg.i18n.plainlist_templatestyles)
local hlist_styles = add_list_templatestyles('hlist', cfg.i18n.hlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar(args.navbar, args.name) and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.hlist_templatestyles}
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering. [hlist_note]
return hlist_styles .. plainlist_styles
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
--[[
Main sidebar function. Takes the frame, args, and an optional collapsibleClass.
The collapsibleClass is and should be used only for sidebars with collapsible
lists, as in p.collapsible.
]]
function p.sidebar(frame, args, collapsibleClass)
if not args then
args = getArgs(frame)
end
local hiding_templatestyles = table.concat(move_hiding_templatestyles(args))
local root = mw.html.create()
local child = args.child and mw.text.trim(args.child) == cfg.i18n.child_yes
root = root:tag('table')
if not child then
root
:addClass(cfg.i18n.class.sidebar)
-- force collapsibleclass to be sidebar-collapse otherwise output nothing
:addClass(collapsibleClass == cfg.i18n.class.collapse and cfg.i18n.class.collapse or nil)
:addClass('nomobile')
:addClass(args.float == cfg.i18n.float_none and cfg.i18n.class.float_none or nil)
:addClass(args.float == cfg.i18n.float_left and cfg.i18n.class.float_left or nil)
:addClass(args.wraplinks ~= cfg.i18n.wrap_true and cfg.i18n.class.wraplinks or nil)
:addClass(args.bodyclass or args.class)
:css('width', args.width or nil)
:cssText(args.bodystyle or args.style)
if args.outertitle then
root
:tag('caption')
:addClass(cfg.i18n.class.outer_title)
:addClass(args.outertitleclass)
:cssText(args.outertitlestyle)
:wikitext(args.outertitle)
end
if args.topimage then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.top_image)
:addClass(args.topimageclass)
:cssText(args.topimagestyle)
:wikitext(args.topimage)
if args.topcaption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.top_caption)
:cssText(args.topcaptionstyle)
:wikitext(args.topcaption)
end
end
if args.pretitle then
root
:tag('tr')
:tag('td')
:addClass(args.topimage and cfg.i18n.class.pretitle_with_top_image
or cfg.i18n.class.pretitle)
:addClass(args.pretitleclass)
:cssText(args.basestyle)
:cssText(args.pretitlestyle)
:wikitext(args.pretitle)
end
else
root
:addClass(cfg.i18n.class.subgroup)
:addClass(args.bodyclass or args.class)
:cssText(args.bodystyle or args.style)
end
if args.title then
if child then
root
:wikitext(args.title)
else
root
:tag('tr')
:tag('th')
:addClass(args.pretitle and cfg.i18n.class.title_with_pretitle
or cfg.i18n.class.title)
:addClass(args.titleclass)
:cssText(args.basestyle)
:cssText(args.titlestyle)
:wikitext(args.title)
end
end
if args.image then
local imageCell = root:tag('tr'):tag('td')
imageCell
:addClass(cfg.i18n.class.image)
:addClass(args.imageclass)
:cssText(args.imagestyle)
:wikitext(args.image)
if args.caption then
imageCell
:tag('div')
:addClass(cfg.i18n.class.caption)
:cssText(args.captionstyle)
:wikitext(args.caption)
end
end
if args.above then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.above)
:addClass(args.aboveclass)
:cssText(args.abovestyle)
:newline() -- newline required for bullet-points to work
:wikitext(args.above)
end
local rowNums = {}
for k, v in pairs(args) do
k = '' .. k
local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$')
if num then table.insert(rowNums, tonumber(num)) end
end
table.sort(rowNums)
-- remove duplicates from the list (e.g. 3 will be duplicated if both heading3
-- and content3 are specified)
for i = #rowNums, 1, -1 do
if rowNums[i] == rowNums[i - 1] then
table.remove(rowNums, i)
end
end
for i, num in ipairs(rowNums) do
local heading = args['heading' .. num]
if heading then
root
:tag('tr')
:tag('th')
:addClass(cfg.i18n.class.heading)
:addClass(args.headingclass)
:addClass(args['heading' .. num .. 'class'])
:cssText(args.basestyle)
:cssText(args.headingstyle)
:cssText(args['heading' .. num .. 'style'])
:newline()
:wikitext(heading)
end
local content = args['content' .. num]
if content then
root
:tag('tr')
:tag('td')
:addClass(hasSubgroup(content) and cfg.i18n.class.content_with_subgroup
or cfg.i18n.class.content)
:addClass(args.contentclass)
:addClass(args['content' .. num .. 'class'])
:cssText(args.contentstyle)
:cssText(args['content' .. num .. 'style'])
:newline()
:wikitext(content)
:done()
-- Without a linebreak after the </td>, a nested list like
-- "* {{hlist| ...}}" doesn't parse correctly.
:newline()
end
end
if args.below then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.below)
:addClass(args.belowclass)
:cssText(args.belowstyle)
:newline()
:wikitext(args.below)
end
if not child and has_navbar(args.navbar, args.name) then
root
:tag('tr')
:tag('td')
:addClass(cfg.i18n.class.navbar)
:cssText(args.navbarstyle)
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
fontstyle = args.navbarfontstyle
})
end
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.i18n.templatestyles }
}
local templatestyles = ''
if args['templatestyles'] and args['templatestyles'] ~= '' then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] and args['child templatestyles'] ~= '' then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] and args['grandchild templatestyles'] ~= '' then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
add_list_styles(args), -- see [hlist_note] above about ordering
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles,
hiding_templatestyles,
tostring(root),
(child and cfg.i18n.category.child or ''),
categorizeTemplatesWithInlineStyles(args)
})
end
local function list_title(args, is_centered_list_titles, num)
local title_text = trimAndAddAutomaticNewline(args['list' .. num .. 'title']
or cfg.i18n.default_list_title)
local title
if is_centered_list_titles then
-- collapsible can be finicky, so provide some CSS/HTML to support
title = mw.html.create('div')
:addClass(cfg.i18n.class.list_title_centered)
:wikitext(title_text)
else
title = mw.html.create()
:wikitext(title_text)
end
local title_container = mw.html.create('div')
:addClass(cfg.i18n.class.list_title)
-- don't /need/ a listnumtitleclass because you can do
-- .templateclass .listnumclass .sidebar-list-title
:addClass(args.listtitleclass)
:cssText(args.basestyle)
:cssText(args.listtitlestyle)
:cssText(args['list' .. num .. 'titlestyle'])
:node(title)
:done()
return title_container
end
--[[
Main entry point for sidebar with collapsible lists.
Does the work of creating the collapsible lists themselves and including them
into the args.
]]
function p.collapsible(frame)
local args = getArgs(frame)
if not args.name and
frame:getParent():getTitle():gsub(cfg.i18n.pattern.collapse_sandbox, '') ==
cfg.i18n.collapse_title_not_to_add_navbar then
args.navbar = cfg.i18n.navbar_none
end
local contentArgs = {}
local is_centered_list_titles = false
if args['centered list titles'] and args['centered list titles'] ~= '' then
is_centered_list_titles = true
end
for k, v in pairs(args) do
local num = string.match(k, '^list(%d+)$')
if num then
local expand = args.expanded and
(args.expanded == 'all' or args.expanded == args['list' .. num .. 'name'])
local row = mw.html.create('div')
row
:addClass(cfg.i18n.class.list)
:addClass('mw-collapsible')
:addClass((not expand) and 'mw-collapsed' or nil)
:addClass(args['list' .. num .. 'class'])
:cssText(args.listframestyle)
:cssText(args['list' .. num .. 'framestyle'])
:node(list_title(args, is_centered_list_titles, num))
:tag('div')
:addClass(cfg.i18n.class.list_content)
:addClass('mw-collapsible-content')
-- don't /need/ a listnumstyleclass because you can do
-- .templatename .listnumclass .sidebar-list
:addClass(args.listclass)
:cssText(args.liststyle)
:cssText(args['list' .. num .. 'style'])
:wikitext(trimAndAddAutomaticNewline(args['list' .. num]))
contentArgs['content' .. num] = tostring(row)
end
end
for k, v in pairs(contentArgs) do
args[k] = v
end
return p.sidebar(frame, args, cfg.i18n.class.collapse)
end
return p
71fe765846593e025ca2f94371315e9dbb5bb4d2
Module:Sidebar/configuration
828
43
82
81
2023-09-30T18:43:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Sidebar/configuration]]
Scribunto
text/plain
return {
i18n = {
child_yes = 'yes',
float_none = 'none',
float_left = 'left',
wrap_true = 'true',
navbar_none = 'none',
navbar_off = 'off',
default_list_title = 'List',
title_not_to_add_navbar = 'Template:Sidebar',
collapse_title_not_to_add_navbar = 'Template:Sidebar with collapsible lists',
templatestyles = 'Module:Sidebar/styles.css',
hlist_templatestyles = 'Hlist/styles.css',
plainlist_templatestyles = 'Plainlist/styles.css',
category = {
child = '[[Category:Pages using sidebar with the child parameter]]',
conversion = '[[Category:Sidebars with styles needing conversion]]'
},
pattern = {
collapse_sandbox = '/sandbox$',
sandbox = '/sandbox$',
subgroup = 'sidebar%-subgroup',
style_conversion = 'style$',
uncategorized_conversion_titles = {
'/[Ss]andbox',
'/[Tt]estcases',
'/[Dd]oc$'
}
},
class = {
sidebar = 'sidebar',
subgroup = 'sidebar-subgroup',
collapse = 'sidebar-collapse',
float_none = 'sidebar-none',
float_left = 'sidebar-left',
wraplinks = 'nowraplinks',
outer_title = 'sidebar-outer-title',
top_image = 'sidebar-top-image',
top_caption = 'sidebar-top-caption',
pretitle = 'sidebar-pretitle',
pretitle_with_top_image = 'sidebar-pretitle-with-top-image',
title = 'sidebar-title',
title_with_pretitle = 'sidebar-title-with-pretitle',
image = 'sidebar-image',
caption = 'sidebar-caption',
above = 'sidebar-above',
heading = 'sidebar-heading',
content = 'sidebar-content',
content_with_subgroup = 'sidebar-content-with-subgroup',
below = 'sidebar-below',
navbar = 'sidebar-navbar',
list = 'sidebar-list',
list_title = 'sidebar-list-title',
list_title_centered = 'sidebar-list-title-c',
list_content = 'sidebar-list-content'
}
}
}
dc2a980ac2162a898f7c21e6d6ba7e994dfeb315
Module:Sidebar/styles.css
828
44
84
83
2023-09-30T18:43:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Sidebar/styles.css]]
text
text/plain
/* {{pp-template}} */
/* TODO: Invert width design to be "mobile first" */
.sidebar {
/* TODO: Ask if we should have max-width 22em instead */
width: 22em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
/* @noflip */
margin: 0.5em 0 1em 1em;
background: #f8f9fa;
border: 1px solid #aaa;
padding: 0.2em;
text-align: center;
line-height: 1.4em;
font-size: 88%;
border-collapse: collapse;
/* Timeless has display: none on .nomobile at mobile resolutions, so we
* unhide it with display: table and let precedence and proximity win.
*/
display: table;
}
/* Unfortunately, so does Minerva desktop, except Minerva drops an
* !important on the declaration. So we have to be mean for Minerva users.
* Mobile removes the element entirely with `wgMFRemovableClasses` in
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/
wmf-config/InitialiseSettings.php#L16992
* which is why displaying it categorically with display: table works.
* We don't really want to expose the generic user in the wild on mobile to have
* to deal with sidebars. (Maybe the ones with collapsible lists, so that
* might be an improvement. That is blocked on [[:phab:T111565]].)
*/
body.skin-minerva .sidebar {
display: table !important;
/* also, minerva is way too aggressive about other stylings on tables.
* TODO remove when this template gets moved to a div. plans on talk page.
* We always float right on Minerva because that's a lot of extra CSS
* otherwise. */
float: right !important;
margin: 0.5em 0 1em 1em !important;
}
.sidebar-subgroup {
width: 100%;
margin: 0;
border-spacing: 0;
}
.sidebar-left {
/* @noflip */
float: left;
/* @noflip */
clear: left;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-none {
float: none;
clear: both;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-outer-title {
padding: 0 0.4em 0.2em;
font-size: 125%;
line-height: 1.2em;
font-weight: bold;
}
.sidebar-top-image {
padding: 0.4em;
}
.sidebar-top-caption,
.sidebar-pretitle-with-top-image,
.sidebar-caption {
padding: 0.2em 0.4em 0;
line-height: 1.2em;
}
.sidebar-pretitle {
padding: 0.4em 0.4em 0;
line-height: 1.2em;
}
.sidebar-title,
.sidebar-title-with-pretitle {
padding: 0.2em 0.8em;
font-size: 145%;
line-height: 1.2em;
}
.sidebar-title-with-pretitle {
padding: 0.1em 0.4em;
}
.sidebar-image {
padding: 0.2em 0.4em 0.4em;
}
.sidebar-heading {
padding: 0.1em 0.4em;
}
.sidebar-content {
padding: 0 0.5em 0.4em;
}
.sidebar-content-with-subgroup {
padding: 0.1em 0.4em 0.2em;
}
.sidebar-above,
.sidebar-below {
padding: 0.3em 0.8em;
font-weight: bold;
}
.sidebar-collapse .sidebar-above,
.sidebar-collapse .sidebar-below {
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.sidebar-navbar {
text-align: right;
font-size: 115%;
padding: 0 0.4em 0.4em;
}
.sidebar-list-title {
padding: 0 0.4em;
text-align: left;
font-weight: bold;
line-height: 1.6em;
font-size: 105%;
}
/* centered text with mw-collapsible headers is finicky */
.sidebar-list-title-c {
padding: 0 0.4em;
text-align: center;
margin: 0 3.3em;
}
@media (max-width: 720px) {
/* users have wide latitude to set arbitrary width and margin :(
"Super-specific" selector to prevent overriding this appearance by
lower level sidebars too */
body.mediawiki .sidebar {
width: 100% !important;
clear: both;
float: none !important; /* Remove when we div based; Minerva is dumb */
margin-left: 0 !important;
margin-right: 0 !important;
}
/* TODO: We might consider making all links wrap at small resolutions and then
* only introduce nowrap at higher resolutions. Do when we invert the media
* query.
*/
}
7d621b35a37807a103b59075851fe36201204ceb
Template:Div col
10
45
86
85
2023-09-30T18:43:52Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Div_col]]
wikitext
text/x-wiki
<includeonly><templatestyles src="Div col/styles.css"/><!--
--><div class="div-col {{#ifeq:{{{small|}}}|yes|div-col-small}} {{#ifeq:{{{rules|}}}|yes|div-col-rules}} {{{class|}}}" <!--
-->{{#if:{{{colwidth|}}}{{{gap|}}}{{{style|}}}|<!--
-->style="{{#if:{{{colwidth|}}}|column-width: {{{colwidth}}};}}{{#if:{{{gap|}}}|column-gap: {{{gap}}};}}{{#if:{{{style|}}}|{{{style}}}}}"<!--
-->}}><!--
-->{{#if:{{{content|}}}|{{{content}}}</div>}}<!-- Inventory how many pages use small=yes
-->{{#ifeq:{{{small|}}}|yes|[[Category:Pages using div col with small parameter]]}}<!--
--></includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using div col with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Div col]] with unknown parameter "_VALUE_"; use colwidth= to specify column size |ignoreblank=y | class | colwidth | content | gap | rules | small | style }}<noinclude>
{{Documentation}}
</noinclude>
6e84133dd867d6c701e7b161878cf66665bb7eb7
Template:Div col/styles.css
10
46
88
87
2023-09-30T18:43:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Div_col/styles.css]]
text
text/plain
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
/* Unbulleted lists */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
76c2c0a042b9164cff638cd44af5ab129702c141
Template:Div col end
10
47
90
89
2023-09-30T18:43:54Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Div_col_end]]
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Div col/doc}}
</noinclude>
78088d41c21d779e3722f220fcc9773dfbbc1e4f
Template:Yesno-no
10
48
92
91
2023-09-30T18:43:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Yesno-no]]
wikitext
text/x-wiki
{{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1ad7b7800da1b867ead8f6ff8cef76e6201b3b56
Template:Para
10
49
94
93
2023-09-30T18:43:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Para]]
wikitext
text/x-wiki
<code class="tpl-para" style="word-break:break-word;{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">|{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}=}}{{{2|}}}</code><noinclude>
{{Documentation}}
<!--Categories and interwikis go near the bottom of the /doc subpage.-->
</noinclude>
06006deea2ed5d552aab61b4332321ab749ae7e8
Template:Documentation
10
50
96
95
2023-09-30T18:43:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Documentation]]
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
170
96
2023-09-30T18:46:06Z
Führerredux
2
1 revision imported from [[:meta:Template:Documentation]]
wikitext
text/x-wiki
{{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>
<!-- Add categories to the /doc subpage -->
</noinclude>
9e62b964e96c4e3d478edecbfcb3c0338ae8a276
Module:Documentation
828
51
98
97
2023-09-30T18:43:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Documentation]]
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
local format = mw.ustring.format
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return format('[[%s|%s]]', page, display)
else
return format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return format(
'<span class="%s">(%s)</span>',
message('toolbar-class'),
table.concat(ret, ' | ')
)
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.canonicalUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
return {
title = title,
docTitle = docTitle,
-- View, display, edit, and purge links if /doc exists.
viewLinkDisplay = message('view-link-display'),
editLinkDisplay = message('edit-link-display'),
historyLinkDisplay = message('history-link-display'),
purgeLinkDisplay = message('purge-link-display'),
preload = preload,
createLinkDisplay = message('create-link-display')
}
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local docTitle = data.docTitle
-- yes, we do intend to purge the template page on which the documentation appears
local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay)
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay)
return "[" .. viewLink .. "] [" .. editLink .. "] [" .. historyLink .. "] [" .. purgeLink .. "]"
else
local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
return "[" .. createLink .. "] [" .. purgeLink .. "]"
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editDisplay = message('edit-link-display')
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay)
local historyDisplay = message('history-link-display')
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
268dc89480af10873bfbca5439ae8e61b404f770
172
98
2023-09-30T18:46:06Z
Führerredux
2
1 revision imported from [[:meta:Module:Documentation]]
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
local format = mw.ustring.format
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return format('[[%s|%s]]', page, display)
else
return format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return format(
'<span class="%s">(%s)</span>',
message('toolbar-class'),
table.concat(ret, ' | ')
)
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.canonicalUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
else
pagetype = message('sandbox-notice-pagetype-other')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(message('sandbox-category'))
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
return {
title = title,
docTitle = docTitle,
-- View, display, edit, and purge links if /doc exists.
viewLinkDisplay = message('view-link-display'),
editLinkDisplay = message('edit-link-display'),
historyLinkDisplay = message('history-link-display'),
purgeLinkDisplay = message('purge-link-display'),
preload = preload,
createLinkDisplay = message('create-link-display')
}
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local docTitle = data.docTitle
-- yes, we do intend to purge the template page on which the documentation appears
local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay)
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay)
return "[" .. viewLink .. "] [" .. editLink .. "] [" .. historyLink .. "] [" .. purgeLink .. "]"
else
local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
return "[" .. createLink .. "] [" .. purgeLink .. "]"
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editDisplay = message('edit-link-display')
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay)
local historyDisplay = message('history-link-display')
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
268dc89480af10873bfbca5439ae8e61b404f770
Module:Documentation/config
828
52
100
99
2023-09-30T18:43:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Documentation/config]]
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
71b68ed73088f1a59d61acf06bbee9fde6677f03
174
100
2023-09-30T18:46:07Z
Führerredux
2
1 revision imported from [[:meta:Module:Documentation/config]]
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category']
-- A category to add to all template sandboxes.
cfg['sandbox-category'] = 'Template sandboxes'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
71b68ed73088f1a59d61acf06bbee9fde6677f03
Module:Documentation/styles.css
828
53
102
101
2023-09-30T18:43:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Documentation/styles.css]]
text
text/plain
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
180
102
2023-09-30T18:46:08Z
Führerredux
2
1 revision imported from [[:meta:Module:Documentation/styles.css]]
text
text/plain
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Template:Sandbox other
10
54
104
103
2023-09-30T18:43:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sandbox_other]]
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:Documentation subpage
10
55
106
105
2023-09-30T18:44:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Documentation_subpage]]
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
41ca90af0945442788a2dbd08c8c54a61a23c057
182
106
2023-09-30T18:46:08Z
Führerredux
2
1 revision imported from [[:meta:Template:Documentation_subpage]]
wikitext
text/x-wiki
<includeonly><!--
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
| <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--
-->{{#ifeq:{{{doc-notice|show}}} |show
| {{Mbox
| type = notice
| style = margin-bottom:1.0em;
| image = [[File:Edit-copy green.svg|40px|alt=|link=]]
| text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It may contain usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
}}
}}<!--
-->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
-->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
| <includeonly><!--
-->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
| [[Category:Documentation subpages without corresponding pages]]
}}<!--
--></includeonly>
}}<!--
(completing initial #ifeq: at start of template:)
--><includeonly>
| <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
}}<!--
--></includeonly><noinclude>{{Documentation}}</noinclude>
41ca90af0945442788a2dbd08c8c54a61a23c057
Template:Template link with link off
10
56
108
107
2023-09-30T18:44:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link_with_link_off]]
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nowrap=yes|nolink=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlf}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
b099fea5d1f36b0b4b9cb253ad3a9f4e095f6851
Template:Tlf
10
57
110
109
2023-09-30T18:44:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tlf]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link with link off]]
{{Redirect category shell|
{{R from move}}
}}
52759e1d3f7c9aa4a03d0b7d4f84f4c6adf53edf
Template:High-use
10
58
112
111
2023-09-30T18:44:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:High-use]]
wikitext
text/x-wiki
{{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}|system={{{system|}}}}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! -->
</noinclude>
a3322d1bd47ac03df14fa2090855cff4fede9bc7
Template:TemplateData header
10
59
114
113
2023-09-30T18:44:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TemplateData_header]]
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage|based=y}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
ddfbb4ae793846b96d4c06330417fa6ed4da2adc
Template:Template parameter usage
10
60
116
115
2023-09-30T18:44:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_parameter_usage]]
wikitext
text/x-wiki
{{#switch:{{{label|}}}
|=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|C|c}}lick here] to see a monthly parameter usage report for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}} in articles{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
|for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{#ifeq:{{yesno-no|{{{lc}}}}}|no|P|p}}arameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}.
|#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}]{{#ifeq:{{yesno-no|{{{based}}}}}|yes| based on {{#if:{{{1|}}}|its|this}} TemplateData}}
}}<noinclude>
{{documentation}}
</noinclude>
10a89e6a4bc63a1427518ea21bf94b8f623a7391
Module:High-use
828
61
118
117
2023-09-30T18:44:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:High-use]]
Scribunto
text/plain
local p = {}
-- _fetch looks at the "demo" argument.
local _fetch = require('Module:Transclusion_count').fetch
local yesno = require('Module:Yesno')
function p.num(frame, count)
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
-- Build output string
local return_value = ""
if count == nil then
if frame.args[1] == "risk" then
return_value = "a very large number of"
else
return_value = "many"
end
else
-- Use 2 significant figures for smaller numbers and 3 for larger ones
local sigfig = 2
if count >= 100000 then
sigfig = 3
end
-- Prepare to round to appropriate number of sigfigs
local f = math.floor(math.log10(count)) - sigfig + 1
-- Round and insert "approximately" or "+" when appropriate
if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then
-- Round down
return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) )
else
-- Round to nearest
return_value = string.format("approximately %s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) )
end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes
if count and count > 250000 and not yesno (frame:getParent().args['no-percent']) then
local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5)
if percent >= 1 then
return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent)
end
end
end
return return_value
end
-- Actions if there is a large (greater than or equal to 100,000) transclusion count
function p.risk(frame)
local return_value = ""
if frame.args[1] == "risk" then
return_value = "risk"
else
local count = _fetch(frame)
if count and count >= 100000 then return_value = "risk" end
end
return return_value
end
function p.text(frame, count)
-- Only show the information about how this template gets updated if someone
-- is actually editing the page and maybe trying to update the count.
local bot_text = (frame:preprocess("{{REVISIONID}}") == "") and "\n\n----\n'''Preview message''': Transclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." or ''
if count == nil then
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
end
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" or title.subpageText == "sandbox" then
title = title.basePageTitle
end
local systemMessages = frame.args['system']
if frame.args['system'] == '' then
systemMessages = nil
end
-- This retrieves the project URL automatically to simplify localiation.
local templateCount = ('on [https://linkcount.toolforge.org/index.php?project=%s&page=%s %s pages]'):format(
mw.title.getCurrentTitle():fullUrl():gsub('//(.-)/.*', '%1'),
mw.uri.encode(title.fullText), p.num(frame, count))
local used_on_text = "'''This " .. (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template") .. ' is used ';
if systemMessages then
used_on_text = used_on_text .. systemMessages ..
((count and count > 2000) and ("''', and " .. templateCount) or ("'''"))
else
used_on_text = used_on_text .. templateCount .. "'''"
end
local sandbox_text = ("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages, or in your own [[%s]]. "):format(
(mw.title.getCurrentTitle().namespace == 828 and "module" or "template"),
title.fullText, title.fullText,
mw.title.getCurrentTitle().namespace == 828 and "Module:Sandbox|module sandbox" or "Wikipedia:User pages#SUB|user subpage"
)
local infoArg = frame.args["info"] ~= "" and frame.args["info"]
if (systemMessages or frame.args[1] == "risk" or (count and count >= 100000) ) then
local info = systemMessages and '.<br/>Changes to it can cause immediate changes to the Wikipedia user interface.' or '.'
if infoArg then
info = info .. "<br />" .. infoArg
end
sandbox_text = info .. '<br /> To avoid major disruption' ..
(count and count >= 100000 and ' and server load' or '') ..
', any changes should be tested in the ' .. sandbox_text ..
'The tested changes can be added to this page in a single edit. '
else
sandbox_text = (infoArg and ('.<br />' .. infoArg .. ' C') or ' and c') ..
'hanges may be widely noticed. Test changes in the ' .. sandbox_text
end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes '
if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then
discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"])
else
discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText )
end
return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_text
end
function p.main(frame)
local count = nil
if yesno(frame.args['fetch']) == false then
if (frame.args[1] or '') ~= '' then count = tonumber(frame.args[1]) end
else
count = _fetch(frame)
end
local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]"
local type_param = "style"
local epilogue = ''
if frame.args['system'] and frame.args['system'] ~= '' then
image = "[[File:Ambox important.svg|40px|alt=Warning|link=]]"
type_param = "content"
local nocat = frame:getParent().args['nocat'] or frame.args['nocat']
local categorise = (nocat == '' or not yesno(nocat))
if categorise then
epilogue = frame:preprocess('{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default=[[Category:Pages used in system messages needing protection]]}}}}')
end
elseif (frame.args[1] == "risk" or (count and count >= 100000)) then
image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]"
type_param = "content"
end
if frame.args["form"] == "editnotice" then
return frame:expandTemplate{
title = 'editnotice',
args = {
["image"] = image,
["text"] = p.text(frame, count),
["expiry"] = (frame.args["expiry"] or "")
}
} .. epilogue
else
return require('Module:Message box').main('ombox', {
type = type_param,
image = image,
text = p.text(frame, count),
expiry = (frame.args["expiry"] or "")
}) .. epilogue
end
end
return p
134551888e066954a89c109d2faa8af71a4454a4
Module:Transclusion count
828
62
120
119
2023-09-30T18:44:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count]]
Scribunto
text/plain
local p = {}
function p.fetch(frame)
local template = nil
local return_value = nil
-- Use demo parameter if it exists, otherswise use current template name
local namespace = mw.title.getCurrentTitle().namespace
if frame.args["demo"] and frame.args["demo"] ~= "" then
template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","")
elseif namespace == 10 then -- Template namespace
template = mw.title.getCurrentTitle().text
elseif namespace == 828 then -- Module namespace
template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text)
end
-- If in template or module namespace, look up count in /data
if template ~= nil then
namespace = mw.title.new(template, "Template").namespace
if namespace == 10 or namespace == 828 then
template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end
template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end
local index = mw.ustring.sub(mw.title.new(template).text,1,1)
local status, data = pcall(function ()
return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")))
end)
if status then
return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")])
end
end
end
-- If database value doesn't exist, use value passed to template
if return_value == nil and frame.args[1] ~= nil then
local arg1=mw.ustring.match(frame.args[1], '[%d,]+')
if arg1 and arg1 ~= '' then
return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R'))
end
end
return return_value
end
-- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]]
function p.tabulate(frame)
local list = {}
for i = 65, 91 do
local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i)))
for name, count in pairs(data) do
table.insert(list, {mw.title.new(name, "Template").fullText, count})
end
end
table.sort(list, function(a, b)
return (a[2] == b[2]) and (a[1] < b[1]) or (a[2] > b[2])
end)
local lang = mw.getContentLanguage();
for i = 1, #list do
list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2]))
end
return table.concat(list)
end
return p
000ef6bcbf7b66e727870b0c300c4009da300513
Module:Lua banner
828
63
122
121
2023-09-30T18:44:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lua_banner]]
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
190
122
2023-09-30T18:46:10Z
Führerredux
2
1 revision imported from [[:meta:Module:Lua_banner]]
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
Module:Parameter names example
828
64
124
123
2023-09-30T18:44:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Parameter_names_example]]
Scribunto
text/plain
-- This module implements {{parameter names example}}.
local p = {}
local function makeParam(s)
local lb = '{'
local rb = '}'
return lb:rep(3) .. s .. rb:rep(3)
end
local function italicize(s)
return "''" .. s .. "''"
end
local function plain(s)
return s
end
function p._main(args, frame)
-- Find how we want to format the arguments to the template.
local formatFunc
if args._display == 'italics' or args._display == 'italic' then
formatFunc = italicize
elseif args._display == 'plain' then
formatFunc = plain
else
formatFunc = makeParam
end
-- Build the table of template arguments.
local targs = {}
for k, v in pairs(args) do
if type(k) == 'number' then
targs[v] = formatFunc(v)
elseif not k:find('^_') then
targs[k] = v
end
end
--targs['nocat'] = 'yes';
--targs['categories'] = 'no';
--targs['demo'] = 'yes';
-- Find the template name.
local template
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end
-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
frame.expandTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Parameter names example'
})
return p._main(args, frame)
end
return p
fdf94fb7a5dc1fabf118d60488a02f1e65b0df24
Template:Lua
10
65
126
125
2023-09-30T18:44:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lua]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Parameter names example
10
66
128
127
2023-09-30T18:44:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Parameter_names_example]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
de1e29d6ebc113e9d1649ea6a976625885db8a2f
Template:Category link with count
10
67
130
129
2023-09-30T18:44:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Category_link_with_count]]
wikitext
text/x-wiki
[[:Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|<!--
-->{{#if:{{{name|}}}|{{{name}}}|Category:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}}}<!--
-->]] ({{PAGESINCATEGORY:{{#invoke:string|replace|1={{{1}}}|2=^:?[Cc]ategory:|3=|plain=false}}|{{{2|all}}}}})<noinclude>
{{Documentation}}
</noinclude>
f93f1540b8c157703bd6d24ae35c35bef745981d
Template:Suppress categories
10
68
132
131
2023-09-30T18:44:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Suppress_categories]]
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#invoke:Suppress categories|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
1f9c6065201d31d4c70f982129b5babbb809ae8c
Module:Suppress categories
828
69
134
133
2023-09-30T18:44:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Suppress_categories]]
Scribunto
text/plain
-- This is a simple module to strip categories from wikitext. It does
-- not support nested links or magic words like __TOC__, etc. Even so,
-- it should still handle most categories.
local p = {}
-- Detects if a category link is valid or not. If it is valid,
-- the function returns the blank string. If not, the input
-- is returned with no changes.
local function processCategory( all, submatch )
local beforePipe = mw.ustring.match( submatch, '^(.-)[%s_]*|[%s_]*.-$' )
beforePipe = beforePipe or submatch
if mw.ustring.match( beforePipe, '[%[%]<>{}%c\n]' ) then
return all
else
return ''
end
end
-- Preprocess the content if we aren't being called from #invoke,
-- and pass it to gsub to remove valid category links.
local function suppress( content, isPreprocessed )
if not isPreprocessed then
content = mw.getCurrentFrame():preprocess( content )
end
content = mw.ustring.gsub(
content,
'(%[%[[%s_]*[cC][aA][tT][eE][gG][oO][rR][yY][%s_]*:[%s_]*(.-)[%s_]*%]%])',
processCategory
)
return content
end
-- Get the content to suppress categories from, and find
-- whether the content has already been preprocessed. (If the
-- module is called from #invoke, it has been preprocessed already.)
function p.main( frame )
local content, isPreprocessed
if frame == mw.getCurrentFrame() then
content = frame:getParent().args[1]
if frame.args[1] then
content = frame.args[1]
end
isPreprocessed = true
else
content = frame
isPreprocessed = false
end
return suppress( content, isPreprocessed )
end
return p
0ec3903841c489357a879434c5dc23c11d182c78
Module:Transclusion count/data/I
828
70
136
135
2023-09-30T18:44:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]]
Scribunto
text/plain
return {
["IAAF_name"] = 2100,
["IAST"] = 6300,
["IBDB_name"] = 9100,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 153000,
["IMDb_title"] = 189000,
["IMO_Number"] = 4100,
["IMSLP"] = 8200,
["INA"] = 2100,
["IND"] = 7500,
["INR"] = 6500,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5200,
["IP"] = 2600,
["IPA"] = 142000,
["IPA-de"] = 8100,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 6000,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-ru"] = 2700,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 48000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7000,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3600,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 518000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8100,
["ISP"] = 5300,
["ISR"] = 4800,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9000,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Iaaf_name"] = 7200,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 17000,
["Icehockeystats"] = 12000,
["Icon"] = 581000,
["If"] = 271000,
["If_all"] = 6400,
["If_between"] = 3800,
["If_both"] = 155000,
["If_empty"] = 3660000,
["If_first_display_both"] = 73000,
["If_in_page"] = 9900,
["If_last_display_both"] = 30000,
["If_preview"] = 58000,
["If_then_show"] = 289000,
["Ifempty"] = 4000,
["Ifeq"] = 16000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1300000,
["Ifnotempty"] = 14000,
["Ifnumber"] = 36000,
["Ifsubst"] = 445000,
["Ih"] = 7500,
["Ill"] = 117000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 167000,
["Image_requested/Category_helper"] = 159000,
["Imbox"] = 917000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5620000,
["Importance/colour"] = 5640000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7100,
["Improve_documentation"] = 2400,
["In_class"] = 5900,
["In_lang"] = 357000,
["In_progress"] = 3200,
["In_string"] = 75000,
["In_title"] = 19000,
["Inactive_WikiProject_banner"] = 206000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 43000,
["Incumbent_pope"] = 4300,
["Indent"] = 4300,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4300,
["Inflation/UK/dataset"] = 4300,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6200,
["Inflation/year"] = 25000,
["Info"] = 7300,
["Infobox"] = 3230000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 147000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4600,
["Infobox_Indian_constituency/defaultdata"] = 4600,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7700,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4800,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3300,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8000,
["Infobox_UK_place/NoPostCode"] = 3100,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2600,
["Infobox_YouTube_personality/styles.css"] = 2600,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 191000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6800,
["Infobox_animanga/Header"] = 6800,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 28000,
["Infobox_artist_discography"] = 5900,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8400,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 27000,
["Infobox_character"] = 7600,
["Infobox_chess_biography"] = 3900,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5500,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 83000,
["Infobox_computing_device"] = 2300,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5400,
["Infobox_country"] = 6400,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6400,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2300,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_designation_list"] = 19000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 6900,
["Infobox_dim/core"] = 6900,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9700,
["Infobox_drug/chemical_formula"] = 9700,
["Infobox_drug/data_page_link"] = 9700,
["Infobox_drug/formatATC"] = 9600,
["Infobox_drug/formatCASnumber"] = 9700,
["Infobox_drug/formatChEBI"] = 9700,
["Infobox_drug/formatChEMBL"] = 9700,
["Infobox_drug/formatChemDBNIAID"] = 9700,
["Infobox_drug/formatChemSpider"] = 9700,
["Infobox_drug/formatCompTox"] = 9700,
["Infobox_drug/formatDrugBank"] = 9700,
["Infobox_drug/formatIUPHARBPS"] = 9700,
["Infobox_drug/formatJmol"] = 9700,
["Infobox_drug/formatKEGG"] = 9700,
["Infobox_drug/formatPDBligand"] = 9100,
["Infobox_drug/formatPubChemCID"] = 9700,
["Infobox_drug/formatPubChemSID"] = 9700,
["Infobox_drug/formatUNII"] = 9700,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9800,
["Infobox_drug/maintenance_categories"] = 9700,
["Infobox_drug/non-ref-space"] = 4200,
["Infobox_drug/pregnancy_category"] = 9800,
["Infobox_drug/title"] = 9700,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5400,
["Infobox_family"] = 2100,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 156000,
["Infobox_film/short_description"] = 152000,
["Infobox_film_awards"] = 2600,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2600,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 206000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8000,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2500,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3400,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8800,
["Infobox_islands/area"] = 9200,
["Infobox_islands/density"] = 9200,
["Infobox_islands/length"] = 8800,
["Infobox_islands/styles.css"] = 8800,
["Infobox_journal"] = 9700,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4300,
["Infobox_language"] = 9500,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9500,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3600,
["Infobox_library"] = 2100,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 80000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 423000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2000,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2000,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 121000,
["Infobox_musical_artist/color"] = 121000,
["Infobox_musical_artist/hCard_class"] = 313000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7400,
["Infobox_name_module"] = 7000,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2500,
["Infobox_noble"] = 7300,
["Infobox_officeholder"] = 219000,
["Infobox_officeholder/office"] = 224000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 2900,
["Infobox_park"] = 7400,
["Infobox_person"] = 473000,
["Infobox_person/Wikidata"] = 4800,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7100,
["Infobox_person/weight"] = 66000,
["Infobox_philosopher"] = 3400,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3000,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3800,
["Infobox_racing_driver_series_section"] = 2000,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6400,
["Infobox_religious_biography"] = 5200,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 2800,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 15000,
["Infobox_rugby_league_biography"] = 9900,
["Infobox_rugby_league_biography/PLAYER"] = 9800,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 48000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 561000,
["Infobox_settlement/areadisp"] = 235000,
["Infobox_settlement/columns"] = 94000,
["Infobox_settlement/columns/styles.css"] = 94000,
["Infobox_settlement/densdisp"] = 436000,
["Infobox_settlement/impus"] = 81000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 94000,
["Infobox_settlement/metric"] = 209000,
["Infobox_settlement/pref"] = 291000,
["Infobox_settlement/styles.css"] = 561000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3400,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2100,
["Infobox_sports_competition_event"] = 17000,
["Infobox_sports_competition_event/medalrow"] = 11000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5400,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 106000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3400,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 54000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2100,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 155000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 3600,
["Invalid_SVG/styles.css"] = 3600,
["Iptalk"] = 17000,
["IranCensus2006"] = 47000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 47000,
["Irc"] = 2100,
["Irish_place_name"] = 2600,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 141000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 6100,
["Is_italic_taxon"] = 478000,
["Is_redirect"] = 27000,
["Isbn"] = 7500,
["Isfdb_name"] = 3700,
["Isfdb_title"] = 4400,
["Isnumeric"] = 209000,
["Iso2continent"] = 35000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 226000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5200,
["Italic_title"] = 282000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4300,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 142000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 131000,
["Module:IPA"] = 142000,
["Module:IPA/data"] = 128000,
["Module:IPA/styles.css"] = 114000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 48000,
["Module:IPAc-en/data"] = 48000,
["Module:IPAc-en/phonemes"] = 48000,
["Module:IPAc-en/pronunciation"] = 48000,
["Module:IPAddress"] = 188000,
["Module:ISO_3166"] = 1030000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 7900,
["Module:ISO_3166/data/National"] = 1030000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 581000,
["Module:Icon/data"] = 581000,
["Module:If_empty"] = 3660000,
["Module:If_in_page"] = 9900,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 357000,
["Module:Indent"] = 4300,
["Module:Infobox"] = 4100000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4360000,
["Module:Infobox3cols"] = 296000,
["Module:InfoboxImage"] = 4410000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 404000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3000,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 63000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9000,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3300,
["Module:Is_infobox_in_lead"] = 377000,
["Module:Is_instance"] = 335000,
["Module:Italic_title"] = 1110000,
["Module:Italic_title2"] = 5200,
}
55575e31a45262bbf1b3a26b1bf96c3de6e0cacf
Help:Infobox/user style
12
72
140
139
2023-09-30T18:44:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Help:Infobox/user_style]]
wikitext
text/x-wiki
{{{heading|
==Infoboxes and user style ==
}}}
Users can have [[WP:User style|user CSS]] that hides<!--, moves, or makes collapsible--> any infoboxes in their own browsers.
To hide all infoboxes, add the following to [[Special:MyPage/common.css]] (for all [[WP:Skin|skins]], or [[Special:MyPage/skin.css]] for just the current skin), on a line by itself:
<syntaxhighlight lang="css">div.mw-parser-output .infobox { display: none; }</syntaxhighlight>
Alternatively, you can add the following code to [[Special:MyPage/common.js|your common.js]] or into a browser user script that is executed by an extension like [[Greasemonkey]]:
<syntaxhighlight lang="js">$('.infobox').hide();</syntaxhighlight>
Be aware that although{{#if:{{{guideline|}}}||, per [[WP:Manual of Style/Infoboxes]],}} all information in an infobox ideally should also be found in the main body of an article, there isn't perfect compliance with this guideline. For example, the full taxonomic hierarchy in {{tlx|Taxobox}}, and the OMIM and other medical database codes of {{tlx|Infobox disease}} are often not found in the main article content. The infobox is also often the location of the most significant, even only, image in an article. There is a userscript which removes infoboxes but moves the images contained to separate thumbnails: [[User:Maddy from Celeste/disinfobox.js]].<!--
Needs Special:Mypage/common.js options for:
* Making infoboxes collapsible
** Making them auto-collapsed
* Moving infoboxes to bottom of page
--><noinclude>
{{Documentation|content=
This documentation snippet is transcluded at [[Help:Infobox]], [[Template:Infobox/doc]], [[WP:Customisation#Hiding specific messages]], [[Help:User style]], [[WP:Manual of Style/Infoboxes]], and other places where this information is relevant.
As a template, this snippet takes a {{para|heading}} parameter to replace the level-2 <code>==Infoboxes and user style==</code> section heading code, as needed. E.g., for a <code>=== ... ===</code> level-3 heading: <code><nowiki>heading={{=}}{{=}}{{=}}Infoboxes and user style{{=}}{{=}}{{=}}</nowiki></code>
}}
</noinclude>
ba4dac68eb2bdc49a32f2a11b9afd52381bf06b5
Module:Message box/ombox.css
828
73
142
141
2023-09-30T18:44:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Message_box/ombox.css]]
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
188
142
2023-09-30T18:46:09Z
Führerredux
2
1 revision imported from [[:meta:Module:Message_box/ombox.css]]
text
text/plain
/* {{pp|small=y}} */
.ombox {
margin: 4px 0;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
/* For the "small=yes" option. */
.ombox.mbox-small {
font-size: 88%;
line-height: 1.25em;
}
.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ombox-delete {
border: 2px solid #b32424; /* Red */
}
.ombox-content {
border: 1px solid #f28500; /* Orange */
}
.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
.ombox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.9em;
width: 100%;
}
.ombox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.ombox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ombox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ombox .mbox-invalid-type {
text-align: center;
}
@media (min-width: 720px) {
.ombox {
margin: 4px 10%;
}
.ombox.mbox-small {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
width: 238px;
}
}
8fe3df4bb607e699eab2dbd23bd4a1a446391002
Template:Hlist/styles.css
10
74
144
143
2023-09-30T18:44:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hlist/styles.css]]
text
text/plain
/* {{pp-protected|reason=match parent|small=yes}} */
/*
* hlist styles are defined in core and Minerva and differ in Minerva. The
* current definitions here (2023-01-01) are sufficient to override Minerva
* without use of the hlist-separated class. The most problematic styles were
* related to margin, padding, and the bullet. Check files listed at
* [[MediaWiki talk:Common.css/to do#hlist-separated]]
*/
/*
* TODO: When the majority of readership supports it (or some beautiful world
* in which grade C support is above the minimum threshold), use :is()
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
/*
* don't trust the note that says margin doesn't work with inline
* removing margin: 0 makes dds have margins again
* We also want to reset margin-right in Minerva
*/
margin: 0;
display: inline;
}
/* Display requested top-level lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
/* Display nested lists inline */
.hlist dl dl,
.hlist dl ol,
.hlist dl ul,
.hlist ol dl,
.hlist ol ol,
.hlist ol ul,
.hlist ul dl,
.hlist ul ol,
.hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* TODO: :not() can maybe be used here to remove the later rule. naive test
* seems to work. more testing needed. like so:
*.hlist dt:not(:last-child)::after {
* content: ": ";
*}
*.hlist dd:not(:last-child)::after,
*.hlist li:not(:last-child)::after {
* content: " · ";
* font-weight: bold;
*}
*/
/* Generate interpuncts */
.hlist dt::after {
content: ": ";
}
.hlist dd::after,
.hlist li::after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child::after,
.hlist dt:last-child::after,
.hlist li:last-child::after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child::before,
.hlist dd dt:first-child::before,
.hlist dd li:first-child::before,
.hlist dt dd:first-child::before,
.hlist dt dt:first-child::before,
.hlist dt li:first-child::before,
.hlist li dd:first-child::before,
.hlist li dt:first-child::before,
.hlist li li:first-child::before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child::after,
.hlist dd dt:last-child::after,
.hlist dd li:last-child::after,
.hlist dt dd:last-child::after,
.hlist dt dt:last-child::after,
.hlist dt li:last-child::after,
.hlist li dd:last-child::after,
.hlist li dt:last-child::after,
.hlist li li:last-child::after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li::before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child::before,
.hlist dt ol > li:first-child::before,
.hlist li ol > li:first-child::before {
content: " (" counter(listitem) "\a0";
}
8c9dd9c9c00f30eead17fe10f51d183333e81f33
Module:Yesno
828
6
148
8
2023-09-30T18:46:02Z
Führerredux
2
1 revision imported from [[:meta:Module:Yesno]]
Scribunto
text/plain
-- Function allowing for consistent treatment of boolean-like wikitext input.
-- It works similarly to the template {{yesno}}.
return function (val, default)
-- If your wiki uses non-ascii characters for any of "yes", "no", etc., you
-- should replace "val:lower()" with "mw.ustring.lower(val)" in the
-- following line.
val = type(val) == 'string' and val:lower() or val
if val == nil then
return nil
elseif val == true
or val == 'yes'
or val == 'y'
or val == 'true'
or val == 't'
or val == 'on'
or tonumber(val) == 1
then
return true
elseif val == false
or val == 'no'
or val == 'n'
or val == 'false'
or val == 'f'
or val == 'off'
or tonumber(val) == 0
then
return false
else
return default
end
end
f767643e7d12126d020d88d662a3dd057817b9dc
Module:Arguments
828
7
150
10
2023-09-30T18:46:02Z
Führerredux
2
1 revision imported from [[:meta:Module:Arguments]]
Scribunto
text/plain
-- This module provides easy processing of arguments passed to Scribunto from
-- #invoke. It is intended for use by other Lua modules, and should not be
-- called from #invoke directly.
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local arguments = {}
-- Generate four different tidyVal functions, so that we don't have to check the
-- options every time we call it.
local function tidyValDefault(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
else
return val
end
else
return val
end
end
local function tidyValTrimOnly(key, val)
if type(val) == 'string' then
return val:match('^%s*(.-)%s*$')
else
return val
end
end
local function tidyValRemoveBlanksOnly(key, val)
if type(val) == 'string' then
if val:find('%S') then
return val
else
return nil
end
else
return val
end
end
local function tidyValNoChange(key, val)
return val
end
local function matchesTitle(given, title)
local tp = type( given )
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title
end
local translate_mt = { __index = function(t, k) return k end }
function arguments.getArgs(frame, options)
checkType('getArgs', 1, frame, 'table', true)
checkType('getArgs', 2, options, 'table', true)
frame = frame or {}
options = options or {}
--[[
-- Set up argument translation.
--]]
options.translate = options.translate or {}
if getmetatable(options.translate) == nil then
setmetatable(options.translate, translate_mt)
end
if options.backtranslate == nil then
options.backtranslate = {}
for k,v in pairs(options.translate) do
options.backtranslate[v] = k
end
end
if options.backtranslate and getmetatable(options.backtranslate) == nil then
setmetatable(options.backtranslate, {
__index = function(t, k)
if options.translate[k] ~= k then
return nil
else
return k
end
end
})
end
--[[
-- Get the argument tables. If we were passed a valid frame object, get the
-- frame arguments (fargs) and the parent frame arguments (pargs), depending
-- on the options set and on the parent frame's availability. If we weren't
-- passed a valid frame object, we are being called from another Lua module
-- or from the debug console, so assume that we were passed a table of args
-- directly, and assign it to a new variable (luaArgs).
--]]
local fargs, pargs, luaArgs
if type(frame.args) == 'table' and type(frame.getParent) == 'function' then
if options.wrappers then
--[[
-- The wrappers option makes Module:Arguments look up arguments in
-- either the frame argument table or the parent argument table, but
-- not both. This means that users can use either the #invoke syntax
-- or a wrapper template without the loss of performance associated
-- with looking arguments up in both the frame and the parent frame.
-- Module:Arguments will look up arguments in the parent frame
-- if it finds the parent frame's title in options.wrapper;
-- otherwise it will look up arguments in the frame object passed
-- to getArgs.
--]]
local parent = frame:getParent()
if not parent then
fargs = frame.args
else
local title = parent:getTitle():gsub('/sandbox$', '')
local found = false
if matchesTitle(options.wrappers, title) then
found = true
elseif type(options.wrappers) == 'table' then
for _,v in pairs(options.wrappers) do
if matchesTitle(v, title) then
found = true
break
end
end
end
-- We test for false specifically here so that nil (the default) acts like true.
if found or options.frameOnly == false then
pargs = parent.args
end
if not found or options.parentOnly == false then
fargs = frame.args
end
end
else
-- options.wrapper isn't set, so check the other options.
if not options.parentOnly then
fargs = frame.args
end
if not options.frameOnly then
local parent = frame:getParent()
pargs = parent and parent.args or nil
end
end
if options.parentFirst then
fargs, pargs = pargs, fargs
end
else
luaArgs = frame
end
-- Set the order of precedence of the argument tables. If the variables are
-- nil, nothing will be added to the table, which is how we avoid clashes
-- between the frame/parent args and the Lua args.
local argTables = {fargs}
argTables[#argTables + 1] = pargs
argTables[#argTables + 1] = luaArgs
--[[
-- Generate the tidyVal function. If it has been specified by the user, we
-- use that; if not, we choose one of four functions depending on the
-- options chosen. This is so that we don't have to call the options table
-- every time the function is called.
--]]
local tidyVal = options.valueFunc
if tidyVal then
if type(tidyVal) ~= 'function' then
error(
"bad value assigned to option 'valueFunc'"
.. '(function expected, got '
.. type(tidyVal)
.. ')',
2
)
end
elseif options.trim ~= false then
if options.removeBlanks ~= false then
tidyVal = tidyValDefault
else
tidyVal = tidyValTrimOnly
end
else
if options.removeBlanks ~= false then
tidyVal = tidyValRemoveBlanksOnly
else
tidyVal = tidyValNoChange
end
end
--[[
-- Set up the args, metaArgs and nilArgs tables. args will be the one
-- accessed from functions, and metaArgs will hold the actual arguments. Nil
-- arguments are memoized in nilArgs, and the metatable connects all of them
-- together.
--]]
local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}
setmetatable(args, metatable)
local function mergeArgs(tables)
--[[
-- Accepts multiple tables as input and merges their keys and values
-- into one table. If a value is already present it is not overwritten;
-- tables listed earlier have precedence. We are also memoizing nil
-- values, which can be overwritten if they are 's' (soft).
--]]
for _, t in ipairs(tables) do
for key, val in pairs(t) do
if metaArgs[key] == nil and nilArgs[key] ~= 'h' then
local tidiedVal = tidyVal(key, val)
if tidiedVal == nil then
nilArgs[key] = 's'
else
metaArgs[key] = tidiedVal
end
end
end
end
end
--[[
-- Define metatable behaviour. Arguments are memoized in the metaArgs table,
-- and are only fetched from the argument tables once. Fetching arguments
-- from the argument tables is the most resource-intensive step in this
-- module, so we try and avoid it where possible. For this reason, nil
-- arguments are also memoized, in the nilArgs table. Also, we keep a record
-- in the metatable of when pairs and ipairs have been called, so we do not
-- run pairs and ipairs on the argument tables more than once. We also do
-- not run ipairs on fargs and pargs if pairs has already been run, as all
-- the arguments will already have been copied over.
--]]
metatable.__index = function (t, key)
--[[
-- Fetches an argument when the args table is indexed. First we check
-- to see if the value is memoized, and if not we try and fetch it from
-- the argument tables. When we check memoization, we need to check
-- metaArgs before nilArgs, as both can be non-nil at the same time.
-- If the argument is not present in metaArgs, we also check whether
-- pairs has been run yet. If pairs has already been run, we return nil.
-- This is because all the arguments will have already been copied into
-- metaArgs by the mergeArgs function, meaning that any other arguments
-- must be nil.
--]]
if type(key) == 'string' then
key = options.translate[key]
end
local val = metaArgs[key]
if val ~= nil then
return val
elseif metatable.donePairs or nilArgs[key] then
return nil
end
for _, argTable in ipairs(argTables) do
local argTableVal = tidyVal(key, argTable[key])
if argTableVal ~= nil then
metaArgs[key] = argTableVal
return argTableVal
end
end
nilArgs[key] = 'h'
return nil
end
metatable.__newindex = function (t, key, val)
-- This function is called when a module tries to add a new value to the
-- args table, or tries to change an existing value.
if type(key) == 'string' then
key = options.translate[key]
end
if options.readOnly then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; the table is read-only',
2
)
elseif options.noOverwrite and args[key] ~= nil then
error(
'could not write to argument table key "'
.. tostring(key)
.. '"; overwriting existing arguments is not permitted',
2
)
elseif val == nil then
--[[
-- If the argument is to be overwritten with nil, we need to erase
-- the value in metaArgs, so that __index, __pairs and __ipairs do
-- not use a previous existing value, if present; and we also need
-- to memoize the nil in nilArgs, so that the value isn't looked
-- up in the argument tables if it is accessed again.
--]]
metaArgs[key] = nil
nilArgs[key] = 'h'
else
metaArgs[key] = val
end
end
local function translatenext(invariant)
local k, v = next(invariant.t, invariant.k)
invariant.k = k
if k == nil then
return nil
elseif type(k) ~= 'string' or not options.backtranslate then
return k, v
else
local backtranslate = options.backtranslate[k]
if backtranslate == nil then
-- Skip this one. This is a tail call, so this won't cause stack overflow
return translatenext(invariant)
else
return backtranslate, v
end
end
end
metatable.__pairs = function ()
-- Called when pairs is run on the args table.
if not metatable.donePairs then
mergeArgs(argTables)
metatable.donePairs = true
end
return translatenext, { t = metaArgs }
end
local function inext(t, i)
-- This uses our __index metamethod
local v = t[i + 1]
if v ~= nil then
return i + 1, v
end
end
metatable.__ipairs = function (t)
-- Called when ipairs is run on the args table.
return inext, t, 0
end
return args
end
return arguments
3134ecce8429b810d445e29eae115e2ae4c36c53
Module:Template translation
828
75
152
151
2023-09-30T18:46:03Z
Führerredux
2
1 revision imported from [[:meta:Module:Template_translation]]
Scribunto
text/plain
local this = {}
function this.checkLanguage(subpage, default)
--[[Check first if there's an any invalid character that would cause the
mw.language.isKnownLanguageTag function() to throw an exception:
- all ASCII controls in [\000-\031\127],
- double quote ("), sharp sign (#), ampersand (&), apostrophe ('),
- slash (/), colon (:), semicolon (;), lower than (<), greater than (>),
- brackets and braces ([, ], {, }), pipe (|), backslash (\\)
All other characters are accepted, including space and all non-ASCII
characters (including \192, which is invalid in UTF-8).
--]]
if mw.language.isValidCode(subpage) and mw.language.isKnownLanguageTag(subpage)
--[[However "SupportedLanguages" are too restrictive, as they discard many
valid BCP47 script variants (only because MediaWiki still does not
define automatic transliterators for them, e.g. "en-dsrt" or
"fr-brai" for French transliteration in Braille), and country variants,
(useful in localized data, even if they are no longer used for
translations, such as zh-cn, also useful for legacy codes).
We want to avoid matching subpagenames containing any uppercase letter,
(even if they are considered valid in BCP 47, in which they are
case-insensitive; they are not "SupportedLanguages" for MediaWiki, so
they are not "KnownLanguageTags" for MediaWiki).
To be more restrictive, we exclude tags
* for specific uses in template subpages and unusable as language tags;
* that is not ASCII and not a lowercase letter, minus-hyphen, or digit,
or does not start by a letter or does not finish by a letter or digit;
* or that has subtags with more than 8 characters between hyphens;
* or that has two hyphens.
--]]
or subpage ~= "doc"
and subpage ~= "layout"
and subpage ~= "button"
and subpage ~= "buttons"
and subpage ~= "sandbox"
and subpage ~= "testcase"
and subpage ~= "testcases"
and string.find(subpage, "^[%l][%-%d%l]*[%d%l]$") ~= nil
and string.find(subpage, "[%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l][%d%l]") == nil
and string.find(subpage, "%-%-") == nil then
return subpage
end
-- Otherwise there's currently no known language subpage
return default
end
--[[Get the last subpage of an arbitrary page if it is a translation.
To be used from templates.
]]
function this.getLanguageSubpage(frame)
local title = frame and frame.args[1]
if not title or title == '' then
title = mw.title.getCurrentTitle()
end
return this._getLanguageSubpage(title)
end
--[[Get the last subpage of an arbitrary page if it is a translation.
To be used from Lua.
]]
function this._getLanguageSubpage(title)
if type(title) == 'string' then
title = mw.title.new(title)
end
if not title then
-- invalid title
return nil
end
--[[This code does not work in all namespaces where the Translate tool works.
-- It works in the main namespace on Meta because it allows subpages there
-- It would not work in the main namespace of English Wikipedia (but the
-- articles are monolignual on that wiki).
-- On Meta-Wiki the main space uses subpages and its pages are translated.
-- The Translate tool allows translatng pages in all namespaces, even if
-- the namespace officially does not have subpages.
-- On Meta-Wiki the Category namespace still does not have subpages enabled,
-- even if they would be very useful for categorizing templates, that DO have
-- subpages (for documentatio and tstboxes pages). This is a misconfiguration
-- bug of Meta-Wiki. The work-around is to split the full title and then
-- get the last titlepart.
local subpage = title.subpageText
--]]
local titleparts = mw.text.split(title.fullText, '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, '')
end
--[[Get the last subpage of the current page if it is a translation.
]]
function this.getCurrentLanguageSubpage()
return this._getLanguageSubpage(mw.title.getCurrentTitle())
end
--[[Get the first part of the language code of the subpage, before the '-'.
--]]
function this.getMainLanguageSubpage()
parts = mw.text.split(this.getCurrentLanguageSubpage(), '-')
return parts[1]
end
--[[Get the last subpage of the current frame if it is a translation.
Not used locally.
--]]
function this.getFrameLanguageSubpage(frame)
return this._getLanguageSubpage(frame:getParent():getTitle())
end
--[[Get the language of the current page. Not used locally.
--]]
function this.getLanguage()
local subpage = mw.title.getCurrentTitle().subpageText
return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode())
end
--[[Get the language of the current frame. Not used locally.
--]]
function this.getFrameLanguage(frame)
local titleparts = mw.text.split(frame:getParent():getTitle(), '/')
local subpage = titleparts[#titleparts]
return this.checkLanguage(subpage, mw.language.getContentLanguage():getCode())
end
function this.title(namespace, basepagename, subpage)
local message, title
local pagename = basepagename
if (subpage or '') ~= '' then
pagename = pagename .. '/' .. subpage
end
local valid, title = xpcall(function()
return mw.title.new(pagename, namespace) -- costly
end, function(msg) -- catch undocumented exception (!?)
-- thrown when namespace does not exist. The doc still
-- says it should return a title, even in that case...
message = msg
end)
if valid and title ~= nil and (title.id or 0) ~= 0 then
return title
end
return { -- "pseudo" mw.title object with id = nil in case of error
prefixedText = pagename, -- the only property we need below
message = message -- only for debugging
}
end
--[[If on a translation subpage (like Foobar/de), this function returns
a given template in the same language, if the translation is available.
Otherwise, the template is returned in its default language, without
modification.
This is aimed at replacing the current implementation of Template:TNTN.
This version does not expand the returned template name: this solves the
problem of self-recursion in TNT when translatable templates need themselves
to transclude other translable templates (such as Tnavbar).
--]]
function this.getTranslatedTemplate(frame, withStatus)
local args = frame.args
local pagename = args['template']
--[[Check whether the pagename is actually in the Template namespace, or
if we're transcluding a main-namespace page.
(added for backward compatibility of Template:TNT)
]]
local namespace, title = args['tntns'] or ''
if namespace ~= '' then -- Checks for tntns parameter for custom ns.
title = this.title(namespace, pagename) -- Costly
else -- Supposes that set page is in ns10.
namespace = 'Template'
title = this.title(namespace, pagename) -- Costly
if title.id == nil then -- not found in the Template namespace, assume the main namespace (for backward compatibility)
namespace = ''
title = this.title(namespace, pagename) -- Costly
end
end
-- Get the last subpage and check if it matches a known language code.
local subpage = args['uselang'] or ''
if subpage == '' then
subpage = this.getCurrentLanguageSubpage()
end
if subpage == '' then
-- Check if a translation of the pagename exists in English
local newtitle = this.title(namespace, pagename, 'en') -- Costly
-- Use the translation when it exists
if newtitle.id ~= nil then
title = newtitle
end
else
-- Check if a translation of the pagename exists in that language
local newtitle = this.title(namespace, pagename, subpage) -- Costly
if newtitle.id == nil then
-- Check if a translation of the pagename exists in English
newtitle = this.title(namespace, pagename, 'en') -- Costly
end
-- Use the translation when it exists
if newtitle.id ~= nil then
title = newtitle
end
end
-- At this point the title should exist
if withStatus then
-- status returned to Lua function below
return title.prefixedText, title.id ~= nil
else
-- returned directly to MediaWiki
return title.prefixedText
end
end
--[[If on a translation subpage (like Foobar/de), this function renders
a given template in the same language, if the translation is available.
Otherwise, the template is rendered in its default language, without
modification.
This is aimed at replacing the current implementation of Template:TNT.
Note that translatable templates cannot transclude themselves other
translatable templates, as it will recurse on TNT. Use TNTN instead
to return only the effective template name to expand externally, with
template parameters also provided externally.
--]]
function this.renderTranslatedTemplate(frame)
local title, found = this.getTranslatedTemplate(frame, true)
-- At this point the title should exist prior to performing the expansion
-- of the template, otherwise render a red link to the missing page
-- (resolved in its assumed namespace). If we don't tet this here, a
-- script error would be thrown. Returning a red link is consistant with
-- MediaWiki behavior when attempting to transclude inexistant templates.
if not found then
return '[[' .. title .. ']]'
end
-- Copy args pseudo-table to a proper table so we can feed it to expandTemplate.
-- Then render the pagename.
local args = frame.args
local pargs = (frame:getParent() or {}).args
local arguments = {}
if (args['noshift'] or '') == '' then
for k, v in pairs(pargs) do
local n = tonumber(k) or 0
if n <= 0 then -- unnumbered args
arguments[k] = v
elseif n >= 2 then -- numbered args >= 2 need to be shifted
arguments[n - 1] = v
end
end
else -- special case where TNT is used as autotranslate
-- (don't shift again what is shifted in the invokation)
for k, v in pairs(pargs) do
arguments[k] = v
end
end
arguments['template'] = title -- override the existing parameter of the base template name supplied with the full name of the actual template expanded
arguments['tntns'] = nil -- discard the specified namespace override
arguments['uselang'] = args['uselang'] -- argument forwarded into parent frame
arguments['noshift'] = args['noshift'] -- argument forwarded into parent frame
return frame:expandTemplate{title = ':' .. title, args = arguments}
end
--[[A helper for mocking TNT in Special:TemplateSandbox. TNT breaks
TemplateSandbox; mocking it with this method means templates won't be
localized but at least TemplateSandbox substitutions will work properly.
Won't work with complex uses.
--]]
function this.mockTNT(frame)
local pargs = (frame:getParent() or {}).args
local arguments = {}
for k, v in pairs(pargs) do
local n = tonumber(k) or 0
if n <= 0 then -- unnumbered args
arguments[k] = v
elseif n >= 2 then -- numbered args >= 2 need to be shifted
arguments[n - 1] = v
end
end
if not pargs[1] then
return ''
end
return frame:expandTemplate{title = 'Template:' .. pargs[1], args = arguments}
end
return this
5d6ccce18a15ce0078fd1918b6afeb5b443f37ee
Module:Message box
828
10
154
16
2023-09-30T18:46:03Z
Führerredux
2
1 revision imported from [[:meta:Module:Message_box]]
Scribunto
text/plain
require('strict')
local getArgs
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local CONFIG_MODULE = 'Module:Message box/configuration'
local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitleObject(...)
-- Get the title object, passing the function through pcall
-- in case we are over the expensive function count limit.
local success, title = pcall(mw.title.new, ...)
if success then
return title
end
end
local function union(t1, t2)
-- Returns the union of two arrays.
local vals = {}
for i, v in ipairs(t1) do
vals[v] = true
end
for i, v in ipairs(t2) do
vals[v] = true
end
local ret = {}
for k in pairs(vals) do
table.insert(ret, k)
end
table.sort(ret)
return ret
end
local function getArgNums(args, prefix)
local nums = {}
for k, v in pairs(args) do
local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$')
if num then
table.insert(nums, tonumber(num))
end
end
table.sort(nums)
return nums
end
--------------------------------------------------------------------------------
-- Box class definition
--------------------------------------------------------------------------------
local MessageBox = {}
MessageBox.__index = MessageBox
function MessageBox.new(boxType, args, cfg)
args = args or {}
local obj = {}
-- Set the title object and the namespace.
obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()
-- Set the config for our box type.
obj.cfg = cfg[boxType]
if not obj.cfg then
local ns = obj.title.namespace
-- boxType is "mbox" or invalid input
if args.demospace and args.demospace ~= '' then
-- implement demospace parameter of mbox
local demospace = string.lower(args.demospace)
if DEMOSPACES[demospace] then
-- use template from DEMOSPACES
obj.cfg = cfg[DEMOSPACES[demospace]]
elseif string.find( demospace, 'talk' ) then
-- demo as a talk page
obj.cfg = cfg.tmbox
else
-- default to ombox
obj.cfg = cfg.ombox
end
elseif ns == 0 then
obj.cfg = cfg.ambox -- main namespace
elseif ns == 6 then
obj.cfg = cfg.imbox -- file namespace
elseif ns == 14 then
obj.cfg = cfg.cmbox -- category namespace
else
local nsTable = mw.site.namespaces[ns]
if nsTable and nsTable.isTalk then
obj.cfg = cfg.tmbox -- any talk namespace
else
obj.cfg = cfg.ombox -- other namespaces or invalid input
end
end
end
-- Set the arguments, and remove all blank arguments except for the ones
-- listed in cfg.allowBlankParams.
do
local newArgs = {}
for k, v in pairs(args) do
if v ~= '' then
newArgs[k] = v
end
end
for i, param in ipairs(obj.cfg.allowBlankParams or {}) do
newArgs[param] = args[param]
end
obj.args = newArgs
end
-- Define internal data structure.
obj.categories = {}
obj.classes = {}
-- For lazy loading of [[Module:Category handler]].
obj.hasCategories = false
return setmetatable(obj, MessageBox)
end
function MessageBox:addCat(ns, cat, sort)
if not cat then
return nil
end
if sort then
cat = string.format('[[Category:%s|%s]]', cat, sort)
else
cat = string.format('[[Category:%s]]', cat)
end
self.hasCategories = true
self.categories[ns] = self.categories[ns] or {}
table.insert(self.categories[ns], cat)
end
function MessageBox:addClass(class)
if not class then
return nil
end
table.insert(self.classes, class)
end
function MessageBox:setParameters()
local args = self.args
local cfg = self.cfg
-- Get type data.
self.type = args.type
local typeData = cfg.types[self.type]
self.invalidTypeError = cfg.showInvalidTypeError
and self.type
and not typeData
typeData = typeData or cfg.types[cfg.default]
self.typeClass = typeData.class
self.typeImage = typeData.image
self.typeImageNeedsLink = typeData.imageNeedsLink
-- Find if the box has been wrongly substituted.
self.isSubstituted = cfg.substCheck and args.subst == 'SUBST'
-- Find whether we are using a small message box.
self.isSmall = cfg.allowSmall and (
cfg.smallParam and args.small == cfg.smallParam
or not cfg.smallParam and yesno(args.small)
)
-- Add attributes, classes and styles.
self.id = args.id
self.name = args.name
if self.name then
self:addClass('box-' .. string.gsub(self.name,' ','_'))
end
if yesno(args.plainlinks) ~= false then
self:addClass('plainlinks')
end
for _, class in ipairs(cfg.classes or {}) do
self:addClass(class)
end
if self.isSmall then
self:addClass(cfg.smallClass or 'mbox-small')
end
self:addClass(self.typeClass)
self:addClass(args.class)
self.style = args.style
self.attrs = args.attrs
-- Set text style.
self.textstyle = args.textstyle
-- Find if we are on the template page or not. This functionality is only
-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory
-- and cfg.templateCategoryRequireName are set.
self.useCollapsibleTextFields = cfg.useCollapsibleTextFields
if self.useCollapsibleTextFields
or cfg.templateCategory
and cfg.templateCategoryRequireName
then
if self.name then
local templateName = mw.ustring.match(
self.name,
'^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$'
) or self.name
templateName = 'Template:' .. templateName
self.templateTitle = getTitleObject(templateName)
end
self.isTemplatePage = self.templateTitle
and mw.title.equals(self.title, self.templateTitle)
end
-- Process data for collapsible text fields. At the moment these are only
-- used in {{ambox}}.
if self.useCollapsibleTextFields then
-- Get the self.issue value.
if self.isSmall and args.smalltext then
self.issue = args.smalltext
else
local sect
if args.sect == '' then
sect = 'This ' .. (cfg.sectionDefault or 'page')
elseif type(args.sect) == 'string' then
sect = 'This ' .. args.sect
end
local issue = args.issue
issue = type(issue) == 'string' and issue ~= '' and issue or nil
local text = args.text
text = type(text) == 'string' and text or nil
local issues = {}
table.insert(issues, sect)
table.insert(issues, issue)
table.insert(issues, text)
self.issue = table.concat(issues, ' ')
end
-- Get the self.talk value.
local talk = args.talk
-- Show talk links on the template page or template subpages if the talk
-- parameter is blank.
if talk == ''
and self.templateTitle
and (
mw.title.equals(self.templateTitle, self.title)
or self.title:isSubpageOf(self.templateTitle)
)
then
talk = '#'
elseif talk == '' then
talk = nil
end
if talk then
-- If the talk value is a talk page, make a link to that page. Else
-- assume that it's a section heading, and make a link to the talk
-- page of the current page with that section heading.
local talkTitle = getTitleObject(talk)
local talkArgIsTalkPage = true
if not talkTitle or not talkTitle.isTalkPage then
talkArgIsTalkPage = false
talkTitle = getTitleObject(
self.title.text,
mw.site.namespaces[self.title.namespace].talk.id
)
end
if talkTitle and talkTitle.exists then
local talkText
if self.isSmall then
local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk)
talkText = string.format('([[%s|talk]])', talkLink)
else
talkText = 'Relevant discussion may be found on'
if talkArgIsTalkPage then
talkText = string.format(
'%s [[%s|%s]].',
talkText,
talk,
talkTitle.prefixedText
)
else
talkText = string.format(
'%s the [[%s#%s|talk page]].',
talkText,
talkTitle.prefixedText,
talk
)
end
end
self.talk = talkText
end
end
-- Get other values.
self.fix = args.fix ~= '' and args.fix or nil
local date
if args.date and args.date ~= '' then
date = args.date
elseif args.date == '' and self.isTemplatePage then
date = lang:formatDate('F Y')
end
if date then
self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date)
end
self.info = args.info
if yesno(args.removalnotice) then
self.removalNotice = cfg.removalNotice
end
end
-- Set the non-collapsible text field. At the moment this is used by all box
-- types other than ambox, and also by ambox when small=yes.
if self.isSmall then
self.text = args.smalltext or args.text
else
self.text = args.text
end
-- Set the below row.
self.below = cfg.below and args.below
-- General image settings.
self.imageCellDiv = not self.isSmall and cfg.imageCellDiv
self.imageEmptyCell = cfg.imageEmptyCell
-- Left image settings.
local imageLeft = self.isSmall and args.smallimage or args.image
if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none'
or not cfg.imageCheckBlank and imageLeft ~= 'none'
then
self.imageLeft = imageLeft
if not imageLeft then
local imageSize = self.isSmall
and (cfg.imageSmallSize or '30x30px')
or '40x40px'
self.imageLeft = string.format('[[File:%s|%s%s|alt=]]', self.typeImage
or 'Information icon4.svg', imageSize, self.typeImageNeedsLink and "" or "|link=" )
end
end
-- Right image settings.
local imageRight = self.isSmall and args.smallimageright or args.imageright
if not (cfg.imageRightNone and imageRight == 'none') then
self.imageRight = imageRight
end
-- set templatestyles
self.base_templatestyles = cfg.templatestyles
self.templatestyles = args.templatestyles
end
function MessageBox:setMainspaceCategories()
local args = self.args
local cfg = self.cfg
if not cfg.allowMainspaceCategories then
return nil
end
local nums = {}
for _, prefix in ipairs{'cat', 'category', 'all'} do
args[prefix .. '1'] = args[prefix]
nums = union(nums, getArgNums(args, prefix))
end
-- The following is roughly equivalent to the old {{Ambox/category}}.
local date = args.date
date = type(date) == 'string' and date
local preposition = 'from'
for _, num in ipairs(nums) do
local mainCat = args['cat' .. tostring(num)]
or args['category' .. tostring(num)]
local allCat = args['all' .. tostring(num)]
mainCat = type(mainCat) == 'string' and mainCat
allCat = type(allCat) == 'string' and allCat
if mainCat and date and date ~= '' then
local catTitle = string.format('%s %s %s', mainCat, preposition, date)
self:addCat(0, catTitle)
catTitle = getTitleObject('Category:' .. catTitle)
if not catTitle or not catTitle.exists then
self:addCat(0, 'Articles with invalid date parameter in template')
end
elseif mainCat and (not date or date == '') then
self:addCat(0, mainCat)
end
if allCat then
self:addCat(0, allCat)
end
end
end
function MessageBox:setTemplateCategories()
local args = self.args
local cfg = self.cfg
-- Add template categories.
if cfg.templateCategory then
if cfg.templateCategoryRequireName then
if self.isTemplatePage then
self:addCat(10, cfg.templateCategory)
end
elseif not self.title.isSubpage then
self:addCat(10, cfg.templateCategory)
end
end
-- Add template error categories.
if cfg.templateErrorCategory then
local templateErrorCategory = cfg.templateErrorCategory
local templateCat, templateSort
if not self.name and not self.title.isSubpage then
templateCat = templateErrorCategory
elseif self.isTemplatePage then
local paramsToCheck = cfg.templateErrorParamsToCheck or {}
local count = 0
for i, param in ipairs(paramsToCheck) do
if not args[param] then
count = count + 1
end
end
if count > 0 then
templateCat = templateErrorCategory
templateSort = tostring(count)
end
if self.categoryNums and #self.categoryNums > 0 then
templateCat = templateErrorCategory
templateSort = 'C'
end
end
self:addCat(10, templateCat, templateSort)
end
end
function MessageBox:setAllNamespaceCategories()
-- Set categories for all namespaces.
if self.invalidTypeError then
local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText
self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort)
end
if self.isSubstituted then
self:addCat('all', 'Pages with incorrectly substituted templates')
end
end
function MessageBox:setCategories()
if self.title.namespace == 0 then
self:setMainspaceCategories()
elseif self.title.namespace == 10 then
self:setTemplateCategories()
end
self:setAllNamespaceCategories()
end
function MessageBox:renderCategories()
if not self.hasCategories then
-- No categories added, no need to pass them to Category handler so,
-- if it was invoked, it would return the empty string.
-- So we shortcut and return the empty string.
return ""
end
-- Convert category tables to strings and pass them through
-- [[Module:Category handler]].
return require('Module:Category handler')._main{
main = table.concat(self.categories[0] or {}),
template = table.concat(self.categories[10] or {}),
all = table.concat(self.categories.all or {}),
nocat = self.args.nocat,
page = self.args.page
}
end
function MessageBox:export()
local root = mw.html.create()
-- Add the subst check error.
if self.isSubstituted and self.name then
root:tag('b')
:addClass('error')
:wikitext(string.format(
'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.',
mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}')
))
end
local frame = mw.getCurrentFrame()
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.base_templatestyles },
})
-- Add support for a single custom templatestyles sheet. Undocumented as
-- need should be limited and many templates using mbox are substed; we
-- don't want to spread templatestyles sheets around to arbitrary places
if self.templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles',
args = { src = self.templatestyles },
})
end
-- Create the box table.
local boxTable = root:tag('table')
boxTable:attr('id', self.id or nil)
for i, class in ipairs(self.classes or {}) do
boxTable:addClass(class or nil)
end
boxTable
:cssText(self.style or nil)
:attr('role', 'presentation')
if self.attrs then
boxTable:attr(self.attrs)
end
-- Add the left-hand image.
local row = boxTable:tag('tr')
if self.imageLeft then
local imageLeftCell = row:tag('td'):addClass('mbox-image')
if self.imageCellDiv then
-- If we are using a div, redefine imageLeftCell so that the image
-- is inside it. Divs use style="width: 52px;", which limits the
-- image width to 52px. If any images in a div are wider than that,
-- they may overlap with the text or cause other display problems.
imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div')
end
imageLeftCell:wikitext(self.imageLeft or nil)
elseif self.imageEmptyCell then
-- Some message boxes define an empty cell if no image is specified, and
-- some don't. The old template code in templates where empty cells are
-- specified gives the following hint: "No image. Cell with some width
-- or padding necessary for text cell to have 100% width."
row:tag('td')
:addClass('mbox-empty-cell')
end
-- Add the text.
local textCell = row:tag('td'):addClass('mbox-text')
if self.useCollapsibleTextFields then
-- The message box uses advanced text parameters that allow things to be
-- collapsible. At the moment, only ambox uses this.
textCell:cssText(self.textstyle or nil)
local textCellDiv = textCell:tag('div')
textCellDiv
:addClass('mbox-text-span')
:wikitext(self.issue or nil)
if (self.talk or self.fix) then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:wikitext(self.talk and (' ' .. self.talk) or nil)
:wikitext(self.fix and (' ' .. self.fix) or nil)
end
textCellDiv:wikitext(self.date and (' ' .. self.date) or nil)
if self.info and not self.isSmall then
textCellDiv
:tag('span')
:addClass('hide-when-compact')
:wikitext(self.info and (' ' .. self.info) or nil)
end
if self.removalNotice then
textCellDiv:tag('span')
:addClass('hide-when-compact')
:tag('i')
:wikitext(string.format(" (%s)", self.removalNotice))
end
else
-- Default text formatting - anything goes.
textCell
:cssText(self.textstyle or nil)
:wikitext(self.text or nil)
end
-- Add the right-hand image.
if self.imageRight then
local imageRightCell = row:tag('td'):addClass('mbox-imageright')
if self.imageCellDiv then
-- If we are using a div, redefine imageRightCell so that the image
-- is inside it.
imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div')
end
imageRightCell
:wikitext(self.imageRight or nil)
end
-- Add the below row.
if self.below then
boxTable:tag('tr')
:tag('td')
:attr('colspan', self.imageRight and '3' or '2')
:addClass('mbox-text')
:cssText(self.textstyle or nil)
:wikitext(self.below or nil)
end
-- Add error message for invalid type parameters.
if self.invalidTypeError then
root:tag('div')
:addClass('mbox-invalid-type')
:wikitext(string.format(
'This message box is using an invalid "type=%s" parameter and needs fixing.',
self.type or ''
))
end
-- Add categories.
root:wikitext(self:renderCategories() or nil)
return tostring(root)
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p, mt = {}, {}
function p._exportClasses()
-- For testing.
return {
MessageBox = MessageBox
}
end
function p.main(boxType, args, cfgTables)
local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))
box:setParameters()
box:setCategories()
return box:export()
end
function mt.__index(t, k)
return function (frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))
end
end
return setmetatable(p, mt)
f2fb84f7b817d2d88747f57c40902a0d8be8158a
Module:No globals
828
76
156
155
2023-09-30T18:46:04Z
Führerredux
2
1 revision imported from [[:meta:Module:No_globals]]
Scribunto
text/plain
local mt = getmetatable(_G) or {}
function mt.__index (t, k)
if k ~= 'arg' then
-- perf optimization here and below: do not load Module:TNT unless there is an error
error(require('Module:TNT').format('I18n/No globals', 'err-read', tostring(k)), 2)
end
return nil
end
function mt.__newindex(t, k, v)
if k ~= 'arg' then
error(require('Module:TNT').format('I18n/No globals', 'err-write', tostring(k)), 2)
end
rawset(t, k, v)
end
setmetatable(_G, mt)
efcb47c74e7e2bb9a4ad8764d99a0afce8fed410
Module:Message box/configuration
828
11
158
18
2023-09-30T18:46:04Z
Führerredux
2
1 revision imported from [[:meta:Module:Message_box/configuration]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Message box configuration --
-- --
-- This module contains configuration data for [[Module:Message box]]. --
--------------------------------------------------------------------------------
return {
ambox = {
types = {
speedy = {
class = 'ambox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ambox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ambox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ambox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ambox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ambox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ambox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},
allowSmall = true,
smallParam = 'left',
smallClass = 'mbox-small-left',
substCheck = true,
classes = {'metadata', 'ambox'},
imageEmptyCell = true,
imageCheckBlank = true,
imageSmallSize = '20x20px',
imageCellDiv = true,
useCollapsibleTextFields = true,
imageRightNone = true,
sectionDefault = 'article',
allowMainspaceCategories = true,
templateCategory = 'Article message templates',
templateCategoryRequireName = true,
templateErrorCategory = 'Article message templates with missing parameters',
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>',
templatestyles = 'Module:Message box/ambox.css'
},
cmbox = {
types = {
speedy = {
class = 'cmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'cmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'cmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'cmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'cmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'cmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'cmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'cmbox'},
imageEmptyCell = true,
templatestyles = 'Module:Message box/cmbox.css'
},
fmbox = {
types = {
warning = {
class = 'fmbox-warning',
image = 'Ambox warning pn.svg'
},
editnotice = {
class = 'fmbox-editnotice',
image = 'Information icon4.svg'
},
system = {
class = 'fmbox-system',
image = 'Information icon4.svg'
}
},
default = 'system',
showInvalidTypeError = true,
classes = {'fmbox'},
imageEmptyCell = false,
imageRightNone = false,
templatestyles = 'Module:Message box/fmbox.css'
},
imbox = {
types = {
speedy = {
class = 'imbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'imbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'imbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'imbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'imbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'imbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
license = {
class = 'imbox-license licensetpl',
image = 'Imbox-license.svg'
},
featured = {
class = 'imbox-featured',
image = 'Cscr-featured.svg',
imageNeedsLink = true
},
notice = {
class = 'imbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'imbox'},
imageEmptyCell = true,
below = true,
templateCategory = 'File message boxes',
templatestyles = 'Module:Message box/imbox.css'
},
ombox = {
types = {
speedy = {
class = 'ombox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'ombox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'ombox-content',
image = 'Ambox important.svg'
},
style = {
class = 'ombox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'ombox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'ombox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'ombox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'ombox'},
allowSmall = true,
imageEmptyCell = true,
imageRightNone = true,
templatestyles = 'Module:Message box/ombox.css'
},
tmbox = {
types = {
speedy = {
class = 'tmbox-speedy',
image = 'Ambox warning pn.svg'
},
delete = {
class = 'tmbox-delete',
image = 'Ambox warning pn.svg'
},
content = {
class = 'tmbox-content',
image = 'Ambox important.svg'
},
style = {
class = 'tmbox-style',
image = 'Edit-clear.svg'
},
move = {
class = 'tmbox-move',
image = 'Merge-split-transwiki default.svg'
},
protection = {
class = 'tmbox-protection',
image = 'Semi-protection-shackle-keyhole.svg'
},
notice = {
class = 'tmbox-notice',
image = 'Information icon4.svg'
}
},
default = 'notice',
showInvalidTypeError = true,
classes = {'tmbox'},
allowSmall = true,
imageRightNone = true,
imageEmptyCell = true,
templateCategory = 'Talk message boxes',
templatestyles = 'Module:Message box/tmbox.css'
}
}
27f00af5cf3939613e9156acd5e62a3469d03d81
Module:TableTools
828
21
160
38
2023-09-30T18:46:04Z
Führerredux
2
1 revision imported from [[:meta:Module:TableTools]]
Scribunto
text/plain
------------------------------------------------------------------------------------
-- TableTools --
-- --
-- This module includes a number of functions for dealing with Lua tables. --
-- It is a meta-module, meant to be called from other Lua modules, and should not --
-- be called directly from #invoke. --
------------------------------------------------------------------------------------
local libraryUtil = require('libraryUtil')
local p = {}
-- Define often-used variables and functions.
local floor = math.floor
local infinity = math.huge
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
------------------------------------------------------------------------------------
-- isPositiveInteger
--
-- This function returns true if the given value is a positive integer, and false
-- if not. Although it doesn't operate on tables, it is included here as it is
-- useful for determining whether a given table key is in the array part or the
-- hash part of a table.
------------------------------------------------------------------------------------
function p.isPositiveInteger(v)
return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity
end
------------------------------------------------------------------------------------
-- isNan
--
-- This function returns true if the given number is a NaN value, and false if
-- not. Although it doesn't operate on tables, it is included here as it is useful
-- for determining whether a value can be a valid table key. Lua will generate an
-- error if a NaN is used as a table key.
------------------------------------------------------------------------------------
function p.isNan(v)
return type(v) == 'number' and v ~= v
end
------------------------------------------------------------------------------------
-- shallowClone
--
-- This returns a clone of a table. The value returned is a new table, but all
-- subtables and functions are shared. Metamethods are respected, but the returned
-- table will have no metatable of its own.
------------------------------------------------------------------------------------
function p.shallowClone(t)
checkType('shallowClone', 1, t, 'table')
local ret = {}
for k, v in pairs(t) do
ret[k] = v
end
return ret
end
------------------------------------------------------------------------------------
-- removeDuplicates
--
-- This removes duplicate values from an array. Non-positive-integer keys are
-- ignored. The earliest value is kept, and all subsequent duplicate values are
-- removed, but otherwise the array order is unchanged.
------------------------------------------------------------------------------------
function p.removeDuplicates(arr)
checkType('removeDuplicates', 1, arr, 'table')
local isNan = p.isNan
local ret, exists = {}, {}
for _, v in ipairs(arr) do
if isNan(v) then
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence.
ret[#ret + 1] = v
else
if not exists[v] then
ret[#ret + 1] = v
exists[v] = true
end
end
end
return ret
end
------------------------------------------------------------------------------------
-- numKeys
--
-- This takes a table and returns an array containing the numbers of any numerical
-- keys that have non-nil values, sorted in numerical order.
------------------------------------------------------------------------------------
function p.numKeys(t)
checkType('numKeys', 1, t, 'table')
local isPositiveInteger = p.isPositiveInteger
local nums = {}
for k in pairs(t) do
if isPositiveInteger(k) then
nums[#nums + 1] = k
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- affixNums
--
-- This takes a table and returns an array containing the numbers of keys with the
-- specified prefix and suffix. For example, for the table
-- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will return
-- {1, 3, 6}.
------------------------------------------------------------------------------------
function p.affixNums(t, prefix, suffix)
checkType('affixNums', 1, t, 'table')
checkType('affixNums', 2, prefix, 'string', true)
checkType('affixNums', 3, suffix, 'string', true)
local function cleanPattern(s)
-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.
return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1')
end
prefix = prefix or ''
suffix = suffix or ''
prefix = cleanPattern(prefix)
suffix = cleanPattern(suffix)
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
local nums = {}
for k in pairs(t) do
if type(k) == 'string' then
local num = mw.ustring.match(k, pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
end
table.sort(nums)
return nums
end
------------------------------------------------------------------------------------
-- numData
--
-- Given a table with keys like {"foo1", "bar1", "foo2", "baz2"}, returns a table
-- of subtables in the format
-- {[1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'}}.
-- Keys that don't end with an integer are stored in a subtable named "other". The
-- compress option compresses the table so that it can be iterated over with
-- ipairs.
------------------------------------------------------------------------------------
function p.numData(t, compress)
checkType('numData', 1, t, 'table')
checkType('numData', 2, compress, 'boolean', true)
local ret = {}
for k, v in pairs(t) do
local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$')
if num then
num = tonumber(num)
local subtable = ret[num] or {}
if prefix == '' then
-- Positional parameters match the blank string; put them at the start of the subtable instead.
prefix = 1
end
subtable[prefix] = v
ret[num] = subtable
else
local subtable = ret.other or {}
subtable[k] = v
ret.other = subtable
end
end
if compress then
local other = ret.other
ret = p.compressSparseArray(ret)
ret.other = other
end
return ret
end
------------------------------------------------------------------------------------
-- compressSparseArray
--
-- This takes an array with one or more nil values, and removes the nil values
-- while preserving the order, so that the array can be safely traversed with
-- ipairs.
------------------------------------------------------------------------------------
function p.compressSparseArray(t)
checkType('compressSparseArray', 1, t, 'table')
local ret = {}
local nums = p.numKeys(t)
for _, num in ipairs(nums) do
ret[#ret + 1] = t[num]
end
return ret
end
------------------------------------------------------------------------------------
-- sparseIpairs
--
-- This is an iterator for sparse arrays. It can be used like ipairs, but can
-- handle nil values.
------------------------------------------------------------------------------------
function p.sparseIpairs(t)
checkType('sparseIpairs', 1, t, 'table')
local nums = p.numKeys(t)
local i = 0
local lim = #nums
return function ()
i = i + 1
if i <= lim then
local key = nums[i]
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- size
--
-- This returns the size of a key/value pair table. It will also work on arrays,
-- but for arrays it is more efficient to use the # operator.
------------------------------------------------------------------------------------
function p.size(t)
checkType('size', 1, t, 'table')
local i = 0
for _ in pairs(t) do
i = i + 1
end
return i
end
local function defaultKeySort(item1, item2)
-- "number" < "string", so numbers will be sorted before strings.
local type1, type2 = type(item1), type(item2)
if type1 ~= type2 then
return type1 < type2
elseif type1 == 'table' or type1 == 'boolean' or type1 == 'function' then
return tostring(item1) < tostring(item2)
else
return item1 < item2
end
end
------------------------------------------------------------------------------------
-- keysToList
--
-- Returns an array of the keys in a table, sorted using either a default
-- comparison function or a custom keySort function.
------------------------------------------------------------------------------------
function p.keysToList(t, keySort, checked)
if not checked then
checkType('keysToList', 1, t, 'table')
checkTypeMulti('keysToList', 2, keySort, {'function', 'boolean', 'nil'})
end
local arr = {}
local index = 1
for k in pairs(t) do
arr[index] = k
index = index + 1
end
if keySort ~= false then
keySort = type(keySort) == 'function' and keySort or defaultKeySort
table.sort(arr, keySort)
end
return arr
end
------------------------------------------------------------------------------------
-- sortedPairs
--
-- Iterates through a table, with the keys sorted using the keysToList function.
-- If there are only numerical keys, sparseIpairs is probably more efficient.
------------------------------------------------------------------------------------
function p.sortedPairs(t, keySort)
checkType('sortedPairs', 1, t, 'table')
checkType('sortedPairs', 2, keySort, 'function', true)
local arr = p.keysToList(t, keySort, true)
local i = 0
return function ()
i = i + 1
local key = arr[i]
if key ~= nil then
return key, t[key]
else
return nil, nil
end
end
end
------------------------------------------------------------------------------------
-- isArray
--
-- Returns true if the given value is a table and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArray(v)
if type(v) ~= 'table' then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- isArrayLike
--
-- Returns true if the given value is iterable and all keys are consecutive
-- integers starting at 1.
------------------------------------------------------------------------------------
function p.isArrayLike(v)
if not pcall(pairs, v) then
return false
end
local i = 0
for _ in pairs(v) do
i = i + 1
if v[i] == nil then
return false
end
end
return true
end
------------------------------------------------------------------------------------
-- invert
--
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} ->
-- {a = 1, b = 2, c = 3}. Duplicates are not supported (result values refer to
-- the index of the last duplicate) and NaN values are ignored.
------------------------------------------------------------------------------------
function p.invert(arr)
checkType("invert", 1, arr, "table")
local isNan = p.isNan
local map = {}
for i, v in ipairs(arr) do
if not isNan(v) then
map[v] = i
end
end
return map
end
------------------------------------------------------------------------------------
-- listToSet
--
-- Creates a set from the array part of the table. Indexing the set by any of the
-- values of the array returns true. For example, {"a", "b", "c"} ->
-- {a = true, b = true, c = true}. NaN values are ignored as Lua considers them
-- never equal to any value (including other NaNs or even themselves).
------------------------------------------------------------------------------------
function p.listToSet(arr)
checkType("listToSet", 1, arr, "table")
local isNan = p.isNan
local set = {}
for _, v in ipairs(arr) do
if not isNan(v) then
set[v] = true
end
end
return set
end
------------------------------------------------------------------------------------
-- deepCopy
--
-- Recursive deep copy function. Preserves identities of subtables.
------------------------------------------------------------------------------------
local function _deepCopy(orig, includeMetatable, already_seen)
-- Stores copies of tables indexed by the original table.
already_seen = already_seen or {}
local copy = already_seen[orig]
if copy ~= nil then
return copy
end
if type(orig) == 'table' then
copy = {}
for orig_key, orig_value in pairs(orig) do
copy[_deepCopy(orig_key, includeMetatable, already_seen)] = _deepCopy(orig_value, includeMetatable, already_seen)
end
already_seen[orig] = copy
if includeMetatable then
local mt = getmetatable(orig)
if mt ~= nil then
local mt_copy = _deepCopy(mt, includeMetatable, already_seen)
setmetatable(copy, mt_copy)
already_seen[mt] = mt_copy
end
end
else -- number, string, boolean, etc
copy = orig
end
return copy
end
function p.deepCopy(orig, noMetatable, already_seen)
checkType("deepCopy", 3, already_seen, "table", true)
return _deepCopy(orig, not noMetatable, already_seen)
end
------------------------------------------------------------------------------------
-- sparseConcat
--
-- Concatenates all values in the table that are indexed by a number, in order.
-- sparseConcat{a, nil, c, d} => "acd"
-- sparseConcat{nil, b, c, d} => "bcd"
------------------------------------------------------------------------------------
function p.sparseConcat(t, sep, i, j)
local arr = {}
local arr_i = 0
for _, v in p.sparseIpairs(t) do
arr_i = arr_i + 1
arr[arr_i] = v
end
return table.concat(arr, sep, i, j)
end
------------------------------------------------------------------------------------
-- length
--
-- Finds the length of an array, or of a quasi-array with keys such as "data1",
-- "data2", etc., using an exponential search algorithm. It is similar to the
-- operator #, but may return a different value when there are gaps in the array
-- portion of the table. Intended to be used on data loaded with mw.loadData. For
-- other tables, use #.
-- Note: #frame.args in frame object always be set to 0, regardless of the number
-- of unnamed template parameters, so use this function for frame.args.
------------------------------------------------------------------------------------
function p.length(t, prefix)
-- requiring module inline so that [[Module:Exponential search]] which is
-- only needed by this one function doesn't get millions of transclusions
local expSearch = require("Module:Exponential search")
checkType('length', 1, t, 'table')
checkType('length', 2, prefix, 'string', true)
return expSearch(function (i)
local key
if prefix then
key = prefix .. tostring(i)
else
key = i
end
return t[key] ~= nil
end) or 0
end
------------------------------------------------------------------------------------
-- inArray
--
-- Returns true if valueToFind is a member of the array, and false otherwise.
------------------------------------------------------------------------------------
function p.inArray(arr, valueToFind)
checkType("inArray", 1, arr, "table")
-- if valueToFind is nil, error?
for _, v in ipairs(arr) do
if v == valueToFind then
return true
end
end
return false
end
return p
085e7094ac84eb0132ee65822cf3f69cd8ba3d81
Module:Infobox
828
18
162
32
2023-09-30T18:46:05Z
Führerredux
2
1 revision imported from [[:meta:Module:Infobox]]
Scribunto
text/plain
local p = {}
local args = {}
local origArgs = {}
local root
local empty_row_categories = {}
local category_in_empty_row_pattern = '%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]'
local has_rows = false
local lists = {
plainlist_t = {
patterns = {
'^plainlist$',
'%splainlist$',
'^plainlist%s',
'%splainlist%s'
},
found = false,
styles = 'Plainlist/styles.css'
},
hlist_t = {
patterns = {
'^hlist$',
'%shlist$',
'^hlist%s',
'%shlist%s'
},
found = false,
styles = 'Hlist/styles.css'
}
}
local function has_list_class(args_to_check)
for _, list in pairs(lists) do
if not list.found then
for _, arg in pairs(args_to_check) do
for _, pattern in ipairs(list.patterns) do
if mw.ustring.find(arg or '', pattern) then
list.found = true
break
end
end
if list.found then break end
end
end
end
end
local function fixChildBoxes(sval, tt)
local function notempty( s ) return s and s:match( '%S' ) end
if notempty(sval) then
local marker = '<span class=special_infobox_marker>'
local s = sval
-- start moving templatestyles and categories inside of table rows
local slast = ''
while slast ~= s do
slast = s
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*%]%])', '%2%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>%s*)(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)', '%2%1')
end
-- end moving templatestyles and categories inside of table rows
s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1')
s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker)
if s:match(marker) then
s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '')
s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1')
s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1')
s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1')
s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1')
end
if s:match(marker) then
local subcells = mw.text.split(s, marker)
s = ''
for k = 1, #subcells do
if k == 1 then
s = s .. subcells[k] .. '</' .. tt .. '></tr>'
elseif k == #subcells then
local rowstyle = ' style="display:none"'
if notempty(subcells[k]) then rowstyle = '' end
s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' ..
subcells[k]
elseif notempty(subcells[k]) then
if (k % 2) == 0 then
s = s .. subcells[k]
else
s = s .. '<tr><' .. tt .. ' colspan=2>\n' ..
subcells[k] .. '</' .. tt .. '></tr>'
end
end
end
end
-- the next two lines add a newline at the end of lists for the PHP parser
-- [[Special:Diff/849054481]]
-- remove when [[:phab:T191516]] is fixed or OBE
s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n')
s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1')
s = mw.ustring.gsub(s, '^(%{%|)', '\n%1')
return s
else
return sval
end
end
-- Cleans empty tables
local function cleanInfobox()
root = tostring(root)
if has_rows == false then
root = mw.ustring.gsub(root, '<table[^<>]*>%s*</table>', '')
end
end
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
-- Adds a row to the infobox, with either a header cell
-- or a label/data cell combination.
local function addRow(rowArgs)
if rowArgs.header and rowArgs.header ~= '_BLANK_' then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class, args.headerclass })
root
:tag('tr')
:addClass(rowArgs.rowclass)
:cssText(rowArgs.rowstyle)
:tag('th')
:attr('colspan', '2')
:addClass('infobox-header')
:addClass(rowArgs.class)
:addClass(args.headerclass)
-- @deprecated next; target .infobox-<name> .infobox-header
:cssText(args.headerstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.header, 'th'))
if rowArgs.data then
root:wikitext(
'[[Category:Pages using infobox templates with ignored data cells]]'
)
end
elseif rowArgs.data and rowArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ rowArgs.rowclass, rowArgs.class })
local row = root:tag('tr')
row:addClass(rowArgs.rowclass)
row:cssText(rowArgs.rowstyle)
if rowArgs.label then
row
:tag('th')
:attr('scope', 'row')
:addClass('infobox-label')
-- @deprecated next; target .infobox-<name> .infobox-label
:cssText(args.labelstyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(rowArgs.label)
:done()
end
local dataCell = row:tag('td')
dataCell
:attr('colspan', not rowArgs.label and '2' or nil)
:addClass(not rowArgs.label and 'infobox-full-data' or 'infobox-data')
:addClass(rowArgs.class)
-- @deprecated next; target .infobox-<name> .infobox(-full)-data
:cssText(rowArgs.datastyle)
:cssText(rowArgs.rowcellstyle)
:wikitext(fixChildBoxes(rowArgs.data, 'td'))
else
table.insert(empty_row_categories, rowArgs.data or '')
end
end
local function renderTitle()
if not args.title then return end
has_rows = true
has_list_class({args.titleclass})
root
:tag('caption')
:addClass('infobox-title')
:addClass(args.titleclass)
-- @deprecated next; target .infobox-<name> .infobox-title
:cssText(args.titlestyle)
:wikitext(args.title)
end
local function renderAboveRow()
if not args.above then return end
has_rows = true
has_list_class({ args.aboveclass })
root
:tag('tr')
:tag('th')
:attr('colspan', '2')
:addClass('infobox-above')
:addClass(args.aboveclass)
-- @deprecated next; target .infobox-<name> .infobox-above
:cssText(args.abovestyle)
:wikitext(fixChildBoxes(args.above,'th'))
end
local function renderBelowRow()
if not args.below then return end
has_rows = true
has_list_class({ args.belowclass })
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-below')
:addClass(args.belowclass)
-- @deprecated next; target .infobox-<name> .infobox-below
:cssText(args.belowstyle)
:wikitext(fixChildBoxes(args.below,'td'))
end
local function addSubheaderRow(subheaderArgs)
if subheaderArgs.data and
subheaderArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ subheaderArgs.rowclass, subheaderArgs.class })
local row = root:tag('tr')
row:addClass(subheaderArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-subheader')
:addClass(subheaderArgs.class)
:cssText(subheaderArgs.datastyle)
:cssText(subheaderArgs.rowcellstyle)
:wikitext(fixChildBoxes(subheaderArgs.data, 'td'))
else
table.insert(empty_row_categories, subheaderArgs.data or '')
end
end
local function renderSubheaders()
if args.subheader then
args.subheader1 = args.subheader
end
if args.subheaderrowclass then
args.subheaderrowclass1 = args.subheaderrowclass
end
local subheadernums = getArgNums('subheader')
for k, num in ipairs(subheadernums) do
addSubheaderRow({
data = args['subheader' .. tostring(num)],
-- @deprecated next; target .infobox-<name> .infobox-subheader
datastyle = args.subheaderstyle,
rowcellstyle = args['subheaderstyle' .. tostring(num)],
class = args.subheaderclass,
rowclass = args['subheaderrowclass' .. tostring(num)]
})
end
end
local function addImageRow(imageArgs)
if imageArgs.data and
imageArgs.data:gsub(category_in_empty_row_pattern, ''):match('^%S') then
has_rows = true
has_list_class({ imageArgs.rowclass, imageArgs.class })
local row = root:tag('tr')
row:addClass(imageArgs.rowclass)
local dataCell = row:tag('td')
dataCell
:attr('colspan', '2')
:addClass('infobox-image')
:addClass(imageArgs.class)
:cssText(imageArgs.datastyle)
:wikitext(fixChildBoxes(imageArgs.data, 'td'))
else
table.insert(empty_row_categories, imageArgs.data or '')
end
end
local function renderImages()
if args.image then
args.image1 = args.image
end
if args.caption then
args.caption1 = args.caption
end
local imagenums = getArgNums('image')
for k, num in ipairs(imagenums) do
local caption = args['caption' .. tostring(num)]
local data = mw.html.create():wikitext(args['image' .. tostring(num)])
if caption then
data
:tag('div')
:addClass('infobox-caption')
-- @deprecated next; target .infobox-<name> .infobox-caption
:cssText(args.captionstyle)
:wikitext(caption)
end
addImageRow({
data = tostring(data),
-- @deprecated next; target .infobox-<name> .infobox-image
datastyle = args.imagestyle,
class = args.imageclass,
rowclass = args['imagerowclass' .. tostring(num)]
})
end
end
-- When autoheaders are turned on, preprocesses the rows
local function preprocessRows()
if not args.autoheaders then return end
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
local lastheader
for k, num in ipairs(rownums) do
if args['header' .. tostring(num)] then
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
lastheader = num
elseif args['data' .. tostring(num)] and
args['data' .. tostring(num)]:gsub(
category_in_empty_row_pattern, ''
):match('^%S') then
local data = args['data' .. tostring(num)]
if data:gsub(category_in_empty_row_pattern, ''):match('%S') then
lastheader = nil
end
end
end
if lastheader then
args['header' .. tostring(lastheader)] = nil
end
end
-- Gets the union of the header and data argument numbers,
-- and renders them all in order
local function renderRows()
local rownums = union(getArgNums('header'), getArgNums('data'))
table.sort(rownums)
for k, num in ipairs(rownums) do
addRow({
header = args['header' .. tostring(num)],
label = args['label' .. tostring(num)],
data = args['data' .. tostring(num)],
datastyle = args.datastyle,
class = args['class' .. tostring(num)],
rowclass = args['rowclass' .. tostring(num)],
-- @deprecated next; target .infobox-<name> rowclass
rowstyle = args['rowstyle' .. tostring(num)],
rowcellstyle = args['rowcellstyle' .. tostring(num)]
})
end
end
local function renderNavBar()
if not args.name then return end
has_rows = true
root
:tag('tr')
:tag('td')
:attr('colspan', '2')
:addClass('infobox-navbar')
:wikitext(require('Module:Navbar')._navbar{
args.name,
mini = 1,
})
end
local function renderItalicTitle()
local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
root:wikitext(require('Module:Italic title')._main({}))
end
end
-- Categories in otherwise empty rows are collected in empty_row_categories.
-- This function adds them to the module output. It is not affected by
-- args.decat because this module should not prevent module-external categories
-- from rendering.
local function renderEmptyRowCategories()
for _, s in ipairs(empty_row_categories) do
root:wikitext(s)
end
end
-- Render tracking categories. args.decat == turns off tracking categories.
local function renderTrackingCategories()
if args.decat == 'yes' then return end
if args.child == 'yes' then
if args.title then
root:wikitext(
'[[Category:Pages using embedded infobox templates with the title parameter]]'
)
end
elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
root:wikitext('[[Category:Articles using infobox templates with no data rows]]')
end
end
--[=[
Loads the templatestyles for the infobox.
TODO: FINISH loading base templatestyles here rather than in
MediaWiki:Common.css. There are 4-5000 pages with 'raw' infobox tables.
See [[Mediawiki_talk:Common.css/to_do#Infobox]] and/or come help :).
When we do this we should clean up the inline CSS below too.
Will have to do some bizarre conversion category like with sidebar.
]=]
local function loadTemplateStyles()
local frame = mw.getCurrentFrame()
local hlist_templatestyles = ''
if lists.hlist_t.found then
hlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.hlist_t.styles }
}
end
local plainlist_templatestyles = ''
if lists.plainlist_t.found then
plainlist_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = lists.plainlist_t.styles }
}
end
-- See function description
local base_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Infobox/styles.css' }
}
local templatestyles = ''
if args['templatestyles'] then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['templatestyles'] }
}
end
local child_templatestyles = ''
if args['child templatestyles'] then
child_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['child templatestyles'] }
}
end
local grandchild_templatestyles = ''
if args['grandchild templatestyles'] then
grandchild_templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = args['grandchild templatestyles'] }
}
end
return table.concat({
-- hlist -> plainlist -> base is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because the rows of interest invoking
-- each class may not be on a specific page
hlist_templatestyles,
plainlist_templatestyles,
base_templatestyles,
templatestyles,
child_templatestyles,
grandchild_templatestyles
})
end
-- common functions between the child and non child cases
local function structure_infobox_common()
renderSubheaders()
renderImages()
preprocessRows()
renderRows()
renderBelowRow()
renderNavBar()
renderItalicTitle()
renderEmptyRowCategories()
renderTrackingCategories()
cleanInfobox()
end
-- Specify the overall layout of the infobox, with special settings if the
-- infobox is used as a 'child' inside another infobox.
local function _infobox()
if args.child ~= 'yes' then
root = mw.html.create('table')
root
:addClass(args.subbox == 'yes' and 'infobox-subbox' or 'infobox')
:addClass(args.bodyclass)
-- @deprecated next; target .infobox-<name>
:cssText(args.bodystyle)
has_list_class({ args.bodyclass })
renderTitle()
renderAboveRow()
else
root = mw.html.create()
root
:wikitext(args.title)
end
structure_infobox_common()
return loadTemplateStyles() .. root
end
-- If the argument exists and isn't blank, add it to the argument table.
-- Blank arguments are treated as nil to match the behaviour of ParserFunctions.
local function preprocessSingleArg(argName)
if origArgs[argName] and origArgs[argName] ~= '' then
args[argName] = origArgs[argName]
end
end
-- Assign the parameters with the given prefixes to the args table, in order, in
-- batches of the step size specified. This is to prevent references etc. from
-- appearing in the wrong order. The prefixTable should be an array containing
-- tables, each of which has two possible fields, a "prefix" string and a
-- "depend" table. The function always parses parameters containing the "prefix"
-- string, but only parses parameters in the "depend" table if the prefix
-- parameter is present and non-blank.
local function preprocessArgs(prefixTable, step)
if type(prefixTable) ~= 'table' then
error("Non-table value detected for the prefix table", 2)
end
if type(step) ~= 'number' then
error("Invalid step value detected", 2)
end
-- Get arguments without a number suffix, and check for bad input.
for i,v in ipairs(prefixTable) do
if type(v) ~= 'table' or type(v.prefix) ~= "string" or
(v.depend and type(v.depend) ~= 'table') then
error('Invalid input detected to preprocessArgs prefix table', 2)
end
preprocessSingleArg(v.prefix)
-- Only parse the depend parameter if the prefix parameter is present
-- and not blank.
if args[v.prefix] and v.depend then
for j, dependValue in ipairs(v.depend) do
if type(dependValue) ~= 'string' then
error('Invalid "depend" parameter value detected in preprocessArgs')
end
preprocessSingleArg(dependValue)
end
end
end
-- Get arguments with number suffixes.
local a = 1 -- Counter variable.
local moreArgumentsExist = true
while moreArgumentsExist == true do
moreArgumentsExist = false
for i = a, a + step - 1 do
for j,v in ipairs(prefixTable) do
local prefixArgName = v.prefix .. tostring(i)
if origArgs[prefixArgName] then
-- Do another loop if any arguments are found, even blank ones.
moreArgumentsExist = true
preprocessSingleArg(prefixArgName)
end
-- Process the depend table if the prefix argument is present
-- and not blank, or we are processing "prefix1" and "prefix" is
-- present and not blank, and if the depend table is present.
if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then
for j,dependValue in ipairs(v.depend) do
local dependArgName = dependValue .. tostring(i)
preprocessSingleArg(dependArgName)
end
end
end
end
a = a + step
end
end
-- Parse the data parameters in the same order that the old {{infobox}} did, so
-- that references etc. will display in the expected places. Parameters that
-- depend on another parameter are only processed if that parameter is present,
-- to avoid phantom references appearing in article reference lists.
local function parseDataParameters()
preprocessSingleArg('autoheaders')
preprocessSingleArg('child')
preprocessSingleArg('bodyclass')
preprocessSingleArg('subbox')
preprocessSingleArg('bodystyle')
preprocessSingleArg('title')
preprocessSingleArg('titleclass')
preprocessSingleArg('titlestyle')
preprocessSingleArg('above')
preprocessSingleArg('aboveclass')
preprocessSingleArg('abovestyle')
preprocessArgs({
{prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}}
}, 10)
preprocessSingleArg('subheaderstyle')
preprocessSingleArg('subheaderclass')
preprocessArgs({
{prefix = 'image', depend = {'caption', 'imagerowclass'}}
}, 10)
preprocessSingleArg('captionstyle')
preprocessSingleArg('imagestyle')
preprocessSingleArg('imageclass')
preprocessArgs({
{prefix = 'header'},
{prefix = 'data', depend = {'label'}},
{prefix = 'rowclass'},
{prefix = 'rowstyle'},
{prefix = 'rowcellstyle'},
{prefix = 'class'}
}, 50)
preprocessSingleArg('headerclass')
preprocessSingleArg('headerstyle')
preprocessSingleArg('labelstyle')
preprocessSingleArg('datastyle')
preprocessSingleArg('below')
preprocessSingleArg('belowclass')
preprocessSingleArg('belowstyle')
preprocessSingleArg('name')
-- different behaviour for italics if blank or absent
args['italic title'] = origArgs['italic title']
preprocessSingleArg('decat')
preprocessSingleArg('templatestyles')
preprocessSingleArg('child templatestyles')
preprocessSingleArg('grandchild templatestyles')
end
-- If called via #invoke, use the args passed into the invoking template.
-- Otherwise, for testing purposes, assume args are being passed directly in.
function p.infobox(frame)
if frame == mw.getCurrentFrame() then
origArgs = frame:getParent().args
else
origArgs = frame
end
parseDataParameters()
return _infobox()
end
-- For calling via #invoke within a template
function p.infoboxTemplate(frame)
origArgs = {}
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
parseDataParameters()
return _infobox()
end
return p
0ddb7e5c8426d67cd589b710efb9912ddfb67fea
Module:Navbar
828
37
164
70
2023-09-30T18:46:05Z
Führerredux
2
1 revision imported from [[:meta:Module:Navbar]]
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = title:fullUrl('action=edit'), ['url'] = true },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = title:fullUrl('action=history'), ['url'] = true },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
79f907e59eaa8bbf8dd50bb751933ebeaaa7eb17
Module:Navbar/configuration
828
38
166
72
2023-09-30T18:46:05Z
Führerredux
2
1 revision imported from [[:meta:Module:Navbar/configuration]]
Scribunto
text/plain
return {
['templatestyles'] = 'Module:Navbar/styles.css',
['hlist_templatestyles'] = 'Hlist/styles.css',
['box_text'] = 'This box: ', -- default text box when not plain or mini
['title_namespace'] = 'Template', -- namespace to default to for title
['invalid_title'] = 'Invalid title ',
['classes'] = { -- set a line to nil if you don't want it
['navbar'] = 'navbar',
['plainlinks'] = 'plainlinks', -- plainlinks
['horizontal_list'] = 'hlist', -- horizontal list class
['mini'] = 'navbar-mini', -- class indicating small links in the navbar
['this_box'] = 'navbar-boxtext',
['brackets'] = 'navbar-brackets',
-- 'collapsible' is the key for a class to indicate the navbar is
-- setting up the collapsible element in addition to the normal
-- navbar.
['collapsible'] = 'navbar-collapse',
['collapsible_title_mini'] = 'navbar-ct-mini',
['collapsible_title_full'] = 'navbar-ct-full'
}
}
b007c336b17ec4bcd4d5a9dca9f8cba301662b55
Module:Infobox/styles.css
828
19
168
34
2023-09-30T18:46:05Z
Führerredux
2
1 revision imported from [[:meta:Module:Infobox/styles.css]]
text
text/plain
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Module:TNT
828
77
176
175
2023-09-30T18:46:07Z
Führerredux
2
1 revision imported from [[:meta:Module:TNT]]
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
params[k - 2] = mw.text.trim(v)
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in ipairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in ipairs(data.data) do
local newVal = {}
local name = nil
for pos, columnName in ipairs(names) do
if columnName == 'name' then
name = row[pos]
else
newVal[columnName] = row[pos]
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
2c570369c78089aef29c72768918373f61b7075d
Module:Documentation/i18n
828
78
178
177
2023-09-30T18:46:07Z
Führerredux
2
1 revision imported from [[:meta:Module:Documentation/i18n]]
Scribunto
text/plain
local format = require('Module:TNT').format
local i18n = {}
i18n['cfg-error-msg-type'] = format('I18n/Documentation', 'cfg-error-msg-type')
i18n['cfg-error-msg-empty'] = format('I18n/Documentation', 'cfg-error-msg-empty')
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
i18n['template-namespace-heading'] = format('I18n/Documentation', 'template-namespace-heading')
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
i18n['module-namespace-heading'] = format('I18n/Documentation', 'module-namespace-heading')
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
i18n['file-namespace-heading'] = format('I18n/Documentation', 'file-namespace-heading')
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
i18n['other-namespaces-heading'] = format('I18n/Documentation', 'other-namespaces-heading')
-- cfg['view-link-display']
-- The text to display for "view" links.
i18n['view-link-display'] = format('I18n/Documentation', 'view-link-display')
-- cfg['edit-link-display']
-- The text to display for "edit" links.
i18n['edit-link-display'] = format('I18n/Documentation', 'edit-link-display')
-- cfg['history-link-display']
-- The text to display for "history" links.
i18n['history-link-display'] = format('I18n/Documentation', 'history-link-display')
-- cfg['purge-link-display']
-- The text to display for "purge" links.
i18n['purge-link-display'] = format('I18n/Documentation', 'purge-link-display')
-- cfg['create-link-display']
-- The text to display for "create" links.
i18n['create-link-display'] = format('I18n/Documentation', 'create-link-display')
return i18n
9a9f234b177a424f1fc465eb25c484eff54905c0
Template:IsDocSubpage
10
79
184
183
2023-09-30T18:46:09Z
Führerredux
2
1 revision imported from [[:meta:Template:IsDocSubpage]]
wikitext
text/x-wiki
<onlyinclude><includeonly>{{#ifexpr: (
{{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or (
{{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}}
and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}}
)
)<!--
-->|{{{true|1}}}<!--
-->|{{{false|}}}<!--
-->}}</includeonly></onlyinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
e60f69b26953d441bf5b76229c9222f16c042ae6
Module:List
828
20
186
36
2023-09-30T18:46:09Z
Führerredux
2
1 revision imported from [[:meta:Module:List]]
Scribunto
text/plain
local libUtil = require('libraryUtil')
local checkType = libUtil.checkType
local mTableTools = require('Module:TableTools')
local p = {}
local listTypes = {
['bulleted'] = true,
['unbulleted'] = true,
['horizontal'] = true,
['ordered'] = true,
['horizontal_ordered'] = true
}
function p.makeListData(listType, args)
-- Constructs a data table to be passed to p.renderList.
local data = {}
-- Classes and TemplateStyles
data.classes = {}
data.templatestyles = ''
if listType == 'horizontal' or listType == 'horizontal_ordered' then
table.insert(data.classes, 'hlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Hlist/styles.css' }
}
elseif listType == 'unbulleted' then
table.insert(data.classes, 'plainlist')
data.templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Plainlist/styles.css' }
}
end
table.insert(data.classes, args.class)
-- Main div style
data.style = args.style
-- Indent for horizontal lists
if listType == 'horizontal' or listType == 'horizontal_ordered' then
local indent = tonumber(args.indent)
indent = indent and indent * 1.6 or 0
if indent > 0 then
data.marginLeft = indent .. 'em'
end
end
-- List style types for ordered lists
-- This could be "1, 2, 3", "a, b, c", or a number of others. The list style
-- type is either set by the "type" attribute or the "list-style-type" CSS
-- property.
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listStyleType = args.list_style_type or args['list-style-type']
data.type = args['type']
-- Detect invalid type attributes and attempt to convert them to
-- list-style-type CSS properties.
if data.type
and not data.listStyleType
and not tostring(data.type):find('^%s*[1AaIi]%s*$')
then
data.listStyleType = data.type
data.type = nil
end
end
-- List tag type
if listType == 'ordered' or listType == 'horizontal_ordered' then
data.listTag = 'ol'
else
data.listTag = 'ul'
end
-- Start number for ordered lists
data.start = args.start
if listType == 'horizontal_ordered' then
-- Apply fix to get start numbers working with horizontal ordered lists.
local startNum = tonumber(data.start)
if startNum then
data.counterReset = 'listitem ' .. tostring(startNum - 1)
end
end
-- List style
-- ul_style and ol_style are included for backwards compatibility. No
-- distinction is made for ordered or unordered lists.
data.listStyle = args.list_style
-- List items
-- li_style is included for backwards compatibility. item_style was included
-- to be easier to understand for non-coders.
data.itemStyle = args.item_style or args.li_style
data.items = {}
for _, num in ipairs(mTableTools.numKeys(args)) do
local item = {}
item.content = args[num]
item.style = args['item' .. tostring(num) .. '_style']
or args['item_style' .. tostring(num)]
item.value = args['item' .. tostring(num) .. '_value']
or args['item_value' .. tostring(num)]
table.insert(data.items, item)
end
return data
end
function p.renderList(data)
-- Renders the list HTML.
-- Return the blank string if there are no list items.
if type(data.items) ~= 'table' or #data.items < 1 then
return ''
end
-- Render the main div tag.
local root = mw.html.create('div')
for _, class in ipairs(data.classes or {}) do
root:addClass(class)
end
root:css{['margin-left'] = data.marginLeft}
if data.style then
root:cssText(data.style)
end
-- Render the list tag.
local list = root:tag(data.listTag or 'ul')
list
:attr{start = data.start, type = data.type}
:css{
['counter-reset'] = data.counterReset,
['list-style-type'] = data.listStyleType
}
if data.listStyle then
list:cssText(data.listStyle)
end
-- Render the list items
for _, t in ipairs(data.items or {}) do
local item = list:tag('li')
if data.itemStyle then
item:cssText(data.itemStyle)
end
if t.style then
item:cssText(t.style)
end
item
:attr{value = t.value}
:wikitext(t.content)
end
return data.templatestyles .. tostring(root)
end
function p.renderTrackingCategories(args)
local isDeprecated = false -- Tracks deprecated parameters.
for k, v in pairs(args) do
k = tostring(k)
if k:find('^item_style%d+$') or k:find('^item_value%d+$') then
isDeprecated = true
break
end
end
local ret = ''
if isDeprecated then
ret = ret .. '[[Category:List templates with deprecated parameters]]'
end
return ret
end
function p.makeList(listType, args)
if not listType or not listTypes[listType] then
error(string.format(
"bad argument #1 to 'makeList' ('%s' is not a valid list type)",
tostring(listType)
), 2)
end
checkType('makeList', 2, args, 'table')
local data = p.makeListData(listType, args)
local list = p.renderList(data)
local trackingCategories = p.renderTrackingCategories(args)
return list .. trackingCategories
end
for listType in pairs(listTypes) do
p[listType] = function (frame)
local mArguments = require('Module:Arguments')
local origArgs = mArguments.getArgs(frame, {
valueFunc = function (key, value)
if not value or not mw.ustring.find(value, '%S') then return nil end
if mw.ustring.find(value, '^%s*[%*#;:]') then
return value
else
return value:match('^%s*(.-)%s*$')
end
return nil
end
})
-- Copy all the arguments to a new table, for faster indexing.
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.makeList(listType, args)
end
end
return p
7a4f36a6e9cd56370bdd8207d23694124821dc1a
Module:Lua banner/config
828
80
192
191
2023-09-30T18:46:11Z
Führerredux
2
1 revision imported from [[:meta:Module:Lua_banner/config]]
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Allow wishes: whether wishes for conversion to Lua are allowed.
-- If true, calls with zero parameters are valid, and considered to be wishes:
-- The box’s text is “This template should use Lua”, and cfg['wish_category'] is
-- added. If false, such calls are invalid, an error message appears, and
-- cfg['error_category'] is added.
cfg['allow_wishes'] = false
-- Default category: this category is added if the module call contains errors
-- (e.g. no module listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Lua templates with errors'
-- Wish category: this category is added if no module is listed, and wishes are
-- allowed. (Not used if wishes are not allowed.) A category name without
-- namespace, or nil to disable categorization.
cfg['wish_category'] = nil
-- Default category: this category is added if none of the below module_categories
-- matches the first module listed. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Lua-based templates'
-- Module categories: one of these categories is added if the first listed module
-- is the listed module (e.g. {{Lua|Module:String}} adds
-- [[Category:Lua String-based templates]].) Format:
-- ['<module name>'] = '<category name>'
-- where neither <module name> nor <category name> contains namespace. An empty
-- table (i.e. no module-based categorization) will suffice on smaller wikis.
cfg['module_categories'] = {
['Citation'] = 'Lua-based citation templates',
['Citation/CS1'] = 'Lua-based citation templates',
}
return cfg -- Don’t touch this line.
96ff2360e00fa7bf1df8fa9bea988789b8a82cab
Template:Lua
10
65
194
126
2023-09-30T18:46:11Z
Führerredux
2
1 revision imported from [[:meta:Template:Lua]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude>
{{Lua|Module:Lua banner}}
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7
Template:Uses TemplateStyles
10
81
198
197
2023-09-30T18:46:12Z
Führerredux
2
1 revision imported from [[:meta:Template:Uses_TemplateStyles]]
wikitext
text/x-wiki
<div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;">
<p style="margin:0 3% 0 3%;text-align:center;font-size:94%">
[[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br />
{{{1|}}}
</p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude>
{{clr}}
{{Documentation}}</noinclude>
fed44ca463856190bcf6280438ed7ea020ad82c3
Template:Tlx
10
22
206
40
2023-09-30T18:58:45Z
Führerredux
2
1 revision imported from [[:meta:Template:Tlx]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link expanded]]
{{Redirect category shell|
{{R from move}}
}}
1fec988ceb46cb324af228aac45d7cd25fcc9008
Module:Infobox/doc
828
84
208
207
2023-09-30T18:58:47Z
Führerredux
2
1 revision imported from [[:meta:Module:Infobox/doc]]
wikitext
text/x-wiki
{{Lua|Module:Navbar}}
{{Uses TemplateStyles|Module:Infobox/styles.css}}
Implements {{tlx|Infobox}}
eb64e52082cc779b0e3e1c353702e778203cea42
Module:Message box/ombox.css
828
73
209
188
2023-09-30T19:04:14Z
Führerredux
2
text
text/plain
/**
* {{ombox}} (other pages message box) styles
*
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css
* @revision 2021-07-15
*/
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
/* Default "notice" gray */
border: 1px solid #a2a9b1;
background-color: #f8f9fa;
box-sizing: border-box;
}
/* An empty narrow cell */
.ombox td.mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* The message body cell(s) */
.ombox th.mbox-text,
.ombox td.mbox-text {
border: none;
/* 0.9em left/right */
padding: 0.25em 0.9em;
/* Make all mboxes the same width regardless of text length */
width: 100%;
}
/* The left image cell */
.ombox td.mbox-image {
border: none;
text-align: center;
/* 0.9em left, 0px right */
/* @noflip */
padding: 2px 0 2px 0.9em;
}
/* The right image cell */
.ombox td.mbox-imageright {
border: none;
text-align: center;
/* 0px left, 0.9em right */
/* @noflip */
padding: 2px 0.9em 2px 0;
}
table.ombox-notice {
/* Gray */
border-color: #a2a9b1;
}
table.ombox-speedy {
/* Pink */
background-color: #fee7e6;
}
table.ombox-speedy,
table.ombox-delete {
/* Red */
border-color: #b32424;
border-width: 2px;
}
table.ombox-content {
/* Orange */
border-color: #f28500;
}
table.ombox-style {
/* Yellow */
border-color: #fc3;
}
table.ombox-move {
/* Purple */
border-color: #9932cc;
}
table.ombox-protection {
/* Gray-gold */
border-color: #a2a9b1;
border-width: 2px;
}
/**
* {{ombox|small=1}} styles
*
* These ".mbox-small" classes must be placed after all other
* ".ombox" classes. "html body.mediawiki .ombox"
* is so they apply only to other page message boxes.
*
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css
* @revision 2021-07-15
*/
/* For the "small=yes" option. */
html body.mediawiki .ombox.mbox-small {
clear: right;
float: right;
margin: 4px 0 4px 1em;
box-sizing: border-box;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
e2c21da9b2e5ea3a68e2f5a7432cbfd3cfce80a8
210
209
2023-09-30T19:06:21Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Message box/ombox.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/**
* {{ombox}} (other pages message box) styles
*
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css
* @revision 2021-07-15
*/
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
/* Default "notice" gray */
border: 1px solid #a2a9b1;
background-color: #f8f9fa;
box-sizing: border-box;
}
/* An empty narrow cell */
.ombox td.mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
/* The message body cell(s) */
.ombox th.mbox-text,
.ombox td.mbox-text {
border: none;
/* 0.9em left/right */
padding: 0.25em 0.9em;
/* Make all mboxes the same width regardless of text length */
width: 100%;
}
/* The left image cell */
.ombox td.mbox-image {
border: none;
text-align: center;
/* 0.9em left, 0px right */
/* @noflip */
padding: 2px 0 2px 0.9em;
}
/* The right image cell */
.ombox td.mbox-imageright {
border: none;
text-align: center;
/* 0px left, 0.9em right */
/* @noflip */
padding: 2px 0.9em 2px 0;
}
table.ombox-notice {
/* Gray */
border-color: #a2a9b1;
}
table.ombox-speedy {
/* Pink */
background-color: #fee7e6;
}
table.ombox-speedy,
table.ombox-delete {
/* Red */
border-color: #b32424;
border-width: 2px;
}
table.ombox-content {
/* Orange */
border-color: #f28500;
}
table.ombox-style {
/* Yellow */
border-color: #fc3;
}
table.ombox-move {
/* Purple */
border-color: #9932cc;
}
table.ombox-protection {
/* Gray-gold */
border-color: #a2a9b1;
border-width: 2px;
}
/**
* {{ombox|small=1}} styles
*
* These ".mbox-small" classes must be placed after all other
* ".ombox" classes. "html body.mediawiki .ombox"
* is so they apply only to other page message boxes.
*
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css
* @revision 2021-07-15
*/
/* For the "small=yes" option. */
html body.mediawiki .ombox.mbox-small {
clear: right;
float: right;
margin: 4px 0 4px 1em;
box-sizing: border-box;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
e2c21da9b2e5ea3a68e2f5a7432cbfd3cfce80a8
Module:Infobox/styles.css
828
19
211
168
2023-09-30T19:10:34Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Infobox/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp|small=y}} */
/*
* This TemplateStyles sheet deliberately does NOT include the full set of
* infobox styles. We are still working to migrate all of the manual
* infoboxes. See [[MediaWiki talk:Common.css/to do#Infobox]]
* DO NOT ADD THEM HERE
*/
/*
* not strictly certain these styles are necessary since the modules now
* exclusively output infobox-subbox or infobox, not both
* just replicating the module faithfully
*/
.infobox-subbox {
padding: 0;
border: none;
margin: -3px;
width: auto;
min-width: 100%;
font-size: 100%;
clear: none;
float: none;
background-color: transparent;
}
.infobox-3cols-child {
margin: auto;
}
.infobox .navbar {
font-size: 100%;
}
/* T281642 */
body.skin-minerva .infobox-header,
body.skin-minerva .infobox-subheader,
body.skin-minerva .infobox-above,
body.skin-minerva .infobox-title,
body.skin-minerva .infobox-image,
body.skin-minerva .infobox-full-data,
body.skin-minerva .infobox-below {
text-align: center;
}
e8de6d96f4fde53afc4a6b0fed534405ab59b0a7
Template:Hlist/styles.css
10
74
212
144
2023-09-30T19:11:04Z
Führerredux
2
Führerredux changed the content model of the page [[Template:Hlist/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp-protected|reason=match parent|small=yes}} */
/*
* hlist styles are defined in core and Minerva and differ in Minerva. The
* current definitions here (2023-01-01) are sufficient to override Minerva
* without use of the hlist-separated class. The most problematic styles were
* related to margin, padding, and the bullet. Check files listed at
* [[MediaWiki talk:Common.css/to do#hlist-separated]]
*/
/*
* TODO: When the majority of readership supports it (or some beautiful world
* in which grade C support is above the minimum threshold), use :is()
*/
.hlist dl,
.hlist ol,
.hlist ul {
margin: 0;
padding: 0;
}
/* Display list items inline */
.hlist dd,
.hlist dt,
.hlist li {
/*
* don't trust the note that says margin doesn't work with inline
* removing margin: 0 makes dds have margins again
* We also want to reset margin-right in Minerva
*/
margin: 0;
display: inline;
}
/* Display requested top-level lists inline */
.hlist.inline,
.hlist.inline dl,
.hlist.inline ol,
.hlist.inline ul,
/* Display nested lists inline */
.hlist dl dl,
.hlist dl ol,
.hlist dl ul,
.hlist ol dl,
.hlist ol ol,
.hlist ol ul,
.hlist ul dl,
.hlist ul ol,
.hlist ul ul {
display: inline;
}
/* Hide empty list items */
.hlist .mw-empty-li {
display: none;
}
/* TODO: :not() can maybe be used here to remove the later rule. naive test
* seems to work. more testing needed. like so:
*.hlist dt:not(:last-child)::after {
* content: ": ";
*}
*.hlist dd:not(:last-child)::after,
*.hlist li:not(:last-child)::after {
* content: " · ";
* font-weight: bold;
*}
*/
/* Generate interpuncts */
.hlist dt::after {
content: ": ";
}
.hlist dd::after,
.hlist li::after {
content: " · ";
font-weight: bold;
}
.hlist dd:last-child::after,
.hlist dt:last-child::after,
.hlist li:last-child::after {
content: none;
}
/* Add parentheses around nested lists */
.hlist dd dd:first-child::before,
.hlist dd dt:first-child::before,
.hlist dd li:first-child::before,
.hlist dt dd:first-child::before,
.hlist dt dt:first-child::before,
.hlist dt li:first-child::before,
.hlist li dd:first-child::before,
.hlist li dt:first-child::before,
.hlist li li:first-child::before {
content: " (";
font-weight: normal;
}
.hlist dd dd:last-child::after,
.hlist dd dt:last-child::after,
.hlist dd li:last-child::after,
.hlist dt dd:last-child::after,
.hlist dt dt:last-child::after,
.hlist dt li:last-child::after,
.hlist li dd:last-child::after,
.hlist li dt:last-child::after,
.hlist li li:last-child::after {
content: ")";
font-weight: normal;
}
/* Put ordinals in front of ordered list items */
.hlist ol {
counter-reset: listitem;
}
.hlist ol > li {
counter-increment: listitem;
}
.hlist ol > li::before {
content: " " counter(listitem) "\a0";
}
.hlist dd ol > li:first-child::before,
.hlist dt ol > li:first-child::before,
.hlist li ol > li:first-child::before {
content: " (" counter(listitem) "\a0";
}
8c9dd9c9c00f30eead17fe10f51d183333e81f33
Module:Navbar/styles.css
828
39
213
74
2023-09-30T19:11:33Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Navbar/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp|small=yes}} */
.navbar {
display: inline;
font-size: 88%;
font-weight: normal;
}
.navbar-collapse {
float: left;
text-align: left;
}
.navbar-boxtext {
word-spacing: 0;
}
.navbar ul {
display: inline-block;
white-space: nowrap;
line-height: inherit;
}
.navbar-brackets::before {
margin-right: -0.125em;
content: '[ ';
}
.navbar-brackets::after {
margin-left: -0.125em;
content: ' ]';
}
.navbar li {
word-spacing: -0.125em;
}
.navbar a > span,
.navbar a > abbr {
text-decoration: inherit;
}
.navbar-mini abbr {
font-variant: small-caps;
border-bottom: none;
text-decoration: none;
cursor: inherit;
}
.navbar-ct-full {
font-size: 114%;
margin: 0 7em;
}
.navbar-ct-mini {
font-size: 114%;
margin: 0 4em;
}
9d4056f949b4f0b159e3d40dfb1a5f01e72f9571
Template:Extension DPL
10
85
214
2023-09-30T19:18:00Z
DynamicPageList3 extension
13
Autogenerated DynamicPageList3's necessary template for content inclusion.
wikitext
text/x-wiki
<noinclude>This page was automatically created. It serves as an anchor page for all '''[[Special:WhatLinksHere/Template:Extension_DPL|invocations]]''' of [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 Extension:DynamicPageList3].</noinclude>
087ffd4625ae7b1fea3436ec3f929e82ee739d29
Template:Infobox
10
86
216
215
2023-09-30T19:24:56Z
Führerredux
2
1 revision imported from [[:meta:Template:Infobox]]
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
adcda4ac544f8af340cf47833dc2960631593988
Module:Documentation/styles.css
828
53
217
180
2023-09-30T19:25:53Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Documentation/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp|small=yes}} */
.documentation,
.documentation-metadata {
border: 1px solid #a2a9b1;
background-color: #ecfcf4;
clear: both;
}
.documentation {
margin: 1em 0 0 0;
padding: 1em;
}
.documentation-metadata {
margin: 0.2em 0; /* same margin left-right as .documentation */
font-style: italic;
padding: 0.4em 1em; /* same padding left-right as .documentation */
}
.documentation-startbox {
padding-bottom: 3px;
border-bottom: 1px solid #aaa;
margin-bottom: 1ex;
}
.documentation-heading {
font-weight: bold;
font-size: 125%;
}
.documentation-clear { /* Don't want things to stick out where they shouldn't. */
clear: both;
}
.documentation-toolbar {
font-style: normal;
font-size: 85%;
}
ce0e629c92e3d825ab9fd927fe6cc37d9117b6cb
Module:Hatnote/styles.css
828
35
218
66
2023-09-30T19:26:08Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Hatnote/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp|small=y}} */
.hatnote {
font-style: italic;
}
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */
div.hatnote {
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
}
.hatnote i {
font-style: normal;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.hatnote + link + .hatnote {
margin-top: -0.5em;
}
44680ffd6e888866df2cdfa0341af9c7b97da94c
Template:Nobold/styles.css
10
15
219
26
2023-09-30T19:26:38Z
Führerredux
2
Führerredux changed the content model of the page [[Template:Nobold/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp-template}} */
/* Styling for Template:Nobold */
.nobold {
font-weight: normal;
}
83e5f0adacf8c7984251f1fd9d11ed82ebaadf03
Module:Sidebar/styles.css
828
44
220
84
2023-09-30T19:29:38Z
Führerredux
2
Führerredux changed the content model of the page [[Module:Sidebar/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp-template}} */
/* TODO: Invert width design to be "mobile first" */
.sidebar {
/* TODO: Ask if we should have max-width 22em instead */
width: 22em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
/* @noflip */
margin: 0.5em 0 1em 1em;
background: #f8f9fa;
border: 1px solid #aaa;
padding: 0.2em;
text-align: center;
line-height: 1.4em;
font-size: 88%;
border-collapse: collapse;
/* Timeless has display: none on .nomobile at mobile resolutions, so we
* unhide it with display: table and let precedence and proximity win.
*/
display: table;
}
/* Unfortunately, so does Minerva desktop, except Minerva drops an
* !important on the declaration. So we have to be mean for Minerva users.
* Mobile removes the element entirely with `wgMFRemovableClasses` in
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/
wmf-config/InitialiseSettings.php#L16992
* which is why displaying it categorically with display: table works.
* We don't really want to expose the generic user in the wild on mobile to have
* to deal with sidebars. (Maybe the ones with collapsible lists, so that
* might be an improvement. That is blocked on [[:phab:T111565]].)
*/
body.skin-minerva .sidebar {
display: table !important;
/* also, minerva is way too aggressive about other stylings on tables.
* TODO remove when this template gets moved to a div. plans on talk page.
* We always float right on Minerva because that's a lot of extra CSS
* otherwise. */
float: right !important;
margin: 0.5em 0 1em 1em !important;
}
.sidebar-subgroup {
width: 100%;
margin: 0;
border-spacing: 0;
}
.sidebar-left {
/* @noflip */
float: left;
/* @noflip */
clear: left;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-none {
float: none;
clear: both;
/* @noflip */
margin: 0.5em 1em 1em 0;
}
.sidebar-outer-title {
padding: 0 0.4em 0.2em;
font-size: 125%;
line-height: 1.2em;
font-weight: bold;
}
.sidebar-top-image {
padding: 0.4em;
}
.sidebar-top-caption,
.sidebar-pretitle-with-top-image,
.sidebar-caption {
padding: 0.2em 0.4em 0;
line-height: 1.2em;
}
.sidebar-pretitle {
padding: 0.4em 0.4em 0;
line-height: 1.2em;
}
.sidebar-title,
.sidebar-title-with-pretitle {
padding: 0.2em 0.8em;
font-size: 145%;
line-height: 1.2em;
}
.sidebar-title-with-pretitle {
padding: 0.1em 0.4em;
}
.sidebar-image {
padding: 0.2em 0.4em 0.4em;
}
.sidebar-heading {
padding: 0.1em 0.4em;
}
.sidebar-content {
padding: 0 0.5em 0.4em;
}
.sidebar-content-with-subgroup {
padding: 0.1em 0.4em 0.2em;
}
.sidebar-above,
.sidebar-below {
padding: 0.3em 0.8em;
font-weight: bold;
}
.sidebar-collapse .sidebar-above,
.sidebar-collapse .sidebar-below {
border-top: 1px solid #aaa;
border-bottom: 1px solid #aaa;
}
.sidebar-navbar {
text-align: right;
font-size: 115%;
padding: 0 0.4em 0.4em;
}
.sidebar-list-title {
padding: 0 0.4em;
text-align: left;
font-weight: bold;
line-height: 1.6em;
font-size: 105%;
}
/* centered text with mw-collapsible headers is finicky */
.sidebar-list-title-c {
padding: 0 0.4em;
text-align: center;
margin: 0 3.3em;
}
@media (max-width: 720px) {
/* users have wide latitude to set arbitrary width and margin :(
"Super-specific" selector to prevent overriding this appearance by
lower level sidebars too */
body.mediawiki .sidebar {
width: 100% !important;
clear: both;
float: none !important; /* Remove when we div based; Minerva is dumb */
margin-left: 0 !important;
margin-right: 0 !important;
}
/* TODO: We might consider making all links wrap at small resolutions and then
* only introduce nowrap at higher resolutions. Do when we invert the media
* query.
*/
}
7d621b35a37807a103b59075851fe36201204ceb
Category:Infobox templates
14
87
222
221
2023-09-30T19:32:41Z
Führerredux
2
1 revision imported from [[:meta:Category:Infobox_templates]]
wikitext
text/x-wiki
[[Category:Templates]]
06eecdec29f6cb215c99cf216d1e3bdc8c30a95e
Help:Infobox
12
88
224
223
2023-09-30T19:33:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Help:Infobox]]
wikitext
text/x-wiki
{{short description|Wikipedia help article}}
{{about||a list of infoboxes|Wikipedia:List of infoboxes|and|Category:Infobox templates|the style guide|Wikipedia:Manual of Style/Infoboxes|the project|Wikipedia:WikiProject Infoboxes}}
{{Wikipedia how to|H:IB}}
[[File:Lundehund.png|thumb|Example of an infobox]]
{{WikiProject Infoboxes sidebar}}
An [[infobox]] is a fixed-format table usually added to the top right-hand corner of articles to consistently present a summary of some unifying aspect that the articles share and sometimes to improve navigation to other interrelated articles. Many infoboxes also emit structured [[metadata]] which is sourced by [[DBpedia]] and other third party re-users. The generalized infobox feature grew out of the original [[Wikipedia:How to read a taxobox|taxoboxes]] (taxonomy infoboxes) that editors developed to visually express the scientific classification of organisms.
The use of infoboxes is neither required nor prohibited for any article. Whether to include an infobox, which infobox to include, and which parts of the infobox to use, is determined through [[Wikipedia:Consensus|discussion and consensus among the editors]] at each individual article.
==What infoboxes do==
Infobox templates contain important facts and statistics of a type which are common to related articles. For instance, all animals have a scientific classification (species, family and so on), as well as a conservation status. Adding a {{tlx|taxobox}} to articles on animals therefore makes it easier to quickly find such information and to compare it with that of other articles.
Infobox templates are like fact sheets, or sidebars, in magazine articles. They quickly summarize important points in an easy-to-read format. However, they are {{em|not}} "statistics" tables in that they (generally) only summarize material from an article<!--taxoboxes are an obvious exception, and so are element infoboxes -->—the information should still be present in the main text, partly because it may not be possible for some readers to access the contents of the infobox. In particular, if infobox templates hide long columns of data inside collapsing tables, then readers using [[screen reader|assistive technology]] may miss their presence entirely.
Many infoboxes also emit metadata such as [[microformat]]s {{crossref|printworthy=y|(see [[WP:WikiProject Microformats]])}}.
==What should an infobox contain?==
In general, data in infobox templates should be:
* '''Comparable.''' If a lot of different subjects all share a common attribute (for instance, all people have a name and a date of birth), then it is useful to be able to compare these across different pages. This also implies that where possible, material should be presented in a standard format.
* '''Concise.''' Infobox templates are "at-a-glance", and used for quickly checking facts.
* '''Materially relevant to the subject.'''
* '''Already cited elsewhere in the article.''' Infoboxes, like the [[Wikipedia:Manual of Style (lead section)|introduction to the article]], should primarily contain material that is expanded on and supported by citations to reliable sources elsewhere in the article. However, if necessary (e.g., because the article is currently incomplete), it is possible to include [[Wikipedia:Footnotes|footnotes]] in infoboxes.
==What should an infobox not contain?==
In general, data in infobox templates should not have:
* '''Excessive length.''' Long bodies of text, or very detailed statistics, belong in the article body.
* '''Trivial details.''' A common problem is including material in the infobox which is trivial and would not otherwise be included in the article body: for example, a fictional character's [[blood type]] may be referenced in passing in a work, but it is not especially useful to understanding the subject. Infobox templates should not be used for details that are too trivial to include in the article body (there are some exceptions, such as chemical properties).
* '''Flags.''' Flag icons should generally [[Wikipedia:Manual of Style/Icons#Avoid flag icons in infoboxes|not be used]] in infoboxes, even when there is a "country", "nationality" or equivalent field: they are unnecessarily distracting and give undue prominence to one field among many.
==Adding an infobox to an article==
There are two steps required to add an infobox to an article:
#Finding the infobox
#Editing the article
===Finding the infobox===
In order to use an infobox in an article, an editor must know its name, parameters, and how those parameters are intended to be used. Because infoboxes are kept in a [[Wikipedia:Namespace|namespace]] separate from articles, it takes some effort to identify an infobox by name. Once the editor has the name, however, it is straightforward to look up the infobox's documentation.
There are two ways in which an editor typically locates which infobox they want to use:
*By browsing the set of all infoboxes via [[Wikipedia:List of infoboxes]].
*By determining the name of a particular infobox used in a similar article.
For example, the article [[D-Terminal]] contains an infobox. To determine which one, simply edit the article:
<syntaxhighlight lang="wikitext">
{{Infobox connector
...
}}
</syntaxhighlight>
The "<CODE>{{Infobox connector</CODE>" identifies the markup between the enclosing braces as a use of the "<code>connector</code>" infobox. The editor can look up the documentation for the template, including a list of parameters, in the Template namespace under [[Template:Infobox connector]].
===Editing the target article===
In accordance with [[WP:LAYOUT|Wikipedia's Manual of Style]], infoboxes should be placed at the top of an article after any [[MOS:DABINT|disambiguation links]] and [[WP:TM/MAIN|maintenance tags]].
The infobox documentation page usually contains a convenient "blank" template that can be copied directly into the target article. The template consists of opening (<CODE>{{</CODE>) and closing (<CODE>}}</CODE>) double braces that contain the name of the infobox and a list of parameters without values. An editor then fills in the value for each of the parameters to the right of the corresponding equals sign.
For example:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name =
| image =
| caption =
...
| website =
}}
</syntaxhighlight>
might be filled out like this:
<syntaxhighlight lang="wikitext">
{{Infobox person
| name = Casanova
| image = Casanova self portrait.jpg
| caption = A self-portrait of Casanova
...
| website =
}}
</syntaxhighlight>
In this example, the names of the parameters ("<CODE>name</CODE>", "<CODE>image</CODE>", "<CODE>caption</CODE>", "<CODE>website</CODE>") are fixed in the design of the infobox and described in its documentation. A parameter that is misspelled, falsely capitalized, or is not supported by the infobox implementation does not display at all. To find out exactly which parameters are functional, look at the infobox's template page. Anything not listed there will be ignored, even if it works in some other infobox. If you believe that another parameter needs to be added to a given infobox template, then suggest that on the infobox's talk page.
The infobox documentation describes which parameters are required and which are optional. Required parameters display between triple braces (for example, <CODE>{{{requiredparametername}}}</CODE>) when previewed or published. Optional parameters may be left empty or omitted entirely.
===Troubleshooting===
If you added an infobox and it didn't display correctly, here are the common errors:
* You used a made-up or invalid parameter. You can only use parameters that have been pre-programmed into ''this'' infobox template.
* You misspelled the parameter name or omitted necessary punctuation (e.g., leaving out the [[underscore]] in <code>birth_place</code>).
* You capitalized the parameter name. Parameters are [[case sensitive]]. Nearly all infoboxes use lowercase parameter labels.
* You included the prefix <code>File:</code> before the image name (or you didn't, and it's one of the templates that requires it).
* You used the parameter name more than once: only the final instance displays.
==Adding an image to an infobox==
{{Main|Help:Infobox picture}}
Images are generally specified using the <CODE>image</CODE> and <CODE>caption</CODE> parameters. However, the template may use a different name for this parameter. For example, {{tp|Infobox album}} uses "Cover" instead of "image" and "Caption" instead of "caption".
The <CODE>image</CODE> parameter sometimes requires the [[Wikipedia:Extended image syntax]]; other times it requires only the image file name depending on the tastes of the editor who created the infobox. An editor can determine this either by experimenting (using the "preview" function) or by consulting the infobox template documentation.
Many images in infoboxes should have a [[WP:ALT|special text alternative]] for people who cannot see the image.
==Combining multiple infoboxes==
{{For|detailed guidance on how combine multiple infoboxes|Wikipedia:WikiProject Infoboxes/embed}}
If an article requires two or more infoboxes it is often possible to combine them into one,
by including the others as a module (or child-, or sub-template) of the first. Alternately, it can be useful to use {{tl|stack}} as a container for them to prevent layout problems with other images and floating elements in the article.
==Designing an infobox==
{{for|detailed guidance on how to design infoboxes|Help:Designing infoboxes}}
It is a good idea to seek the opinions of other editors before embarking on a design of a new infobox or redesign of an existing one. Most requirements are already met by an existing infobox and most of the remainder can be met with a tweak. Unnecessary duplication leads to clutter and article divergence. Prototype your new design in your own [[WP:USERPAGE|user space]]. Once prototyped, propose the infobox changes to the appropriate [[Wikipedia:WikiProject|WikiProject]] and gain [[Wikipedia:Consensus|consensus]] before deploying your new design in the [[WP:TMP|template namespace]].
==Deleting an infobox==
Requests to delete an infobox should be brought to the attention of [[Wikipedia:Templates for discussion]] and any [[Wikipedia:WikiProject|WikiProject]]s associated with the infobox. The WikiProject associated with the subject can usually be found at the top of the talk page of the article. A template may be merged with another rather than deleted outright.
{{Help:Infobox/user style}}
==See also==
{{Wikipedia glossary}}
*[[Wikipedia:How to read a color infobox]]
*[[Wikipedia:How to read a taxobox]]
*[[Wikipedia:Help desk]] – to ask questions about using infoboxes in articles if you weren't able to find the information you need on this help page.
*[[Wikipedia:Disinfoboxes]] – an essay expressing a particular viewpoint
*{{sectionlink|Infobox|Wikipedia}}
----
{{Offer help}}
{{Help navigation}}
[[Category:Wikipedia editor help]]
[[Category:Wikipedia infoboxes| ]]
[[Category:Wikipedia template help]]
746ed7695c517ae9f68decf92a18e8f37695ed5e
Template:Abbr
10
89
226
225
2023-09-30T19:33:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Abbr]]
wikitext
text/x-wiki
<abbr {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</abbr><noinclude>{{Documentation}}
</noinclude>
5fd53aa19ba927ce3eea9092a4fa31f881df0a6e
Template:Nowrap
10
90
228
227
2023-09-30T19:33:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Nowrap]]
wikitext
text/x-wiki
<span class="nowrap">{{{1}}}</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc page; interwikis go to Wikidata. -->
</noinclude>
5d0dc6b6d89b37f4356242404f46138a4017f015
Module:Redirect
828
91
230
229
2023-09-30T19:34:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Redirect]]
Scribunto
text/plain
-- This module provides functions for getting the target of a redirect page.
local p = {}
-- Gets a mw.title object, using pcall to avoid generating script errors if we
-- are over the expensive function count limit (among other possible causes).
local function getTitle(...)
local success, titleObj = pcall(mw.title.new, ...)
if success then
return titleObj
else
return nil
end
end
-- Gets the name of a page that a redirect leads to, or nil if it isn't a
-- redirect.
function p.getTargetFromText(text)
local target = string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]"
) or string.match(
text,
"^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]"
)
return target and mw.uri.decode(target, 'PATH')
end
-- Gets the target of a redirect. If the page specified is not a redirect,
-- returns nil.
function p.getTarget(page, fulltext)
-- Get the title object. Both page names and title objects are allowed
-- as input.
local titleObj
if type(page) == 'string' or type(page) == 'number' then
titleObj = getTitle(page)
elseif type(page) == 'table' and type(page.getContent) == 'function' then
titleObj = page
else
error(string.format(
"bad argument #1 to 'getTarget'"
.. " (string, number, or title object expected, got %s)",
type(page)
), 2)
end
if not titleObj then
return nil
end
local targetTitle = titleObj.redirectTarget
if targetTitle then
if fulltext then
return targetTitle.fullText
else
return targetTitle.prefixedText
end
else
return nil
end
end
--[[
-- Given a single page name determines what page it redirects to and returns the
-- target page name, or the passed page name when not a redirect. The passed
-- page name can be given as plain text or as a page link.
--
-- Returns page name as plain text, or when the bracket parameter is given, as a
-- page link. Returns an error message when page does not exist or the redirect
-- target cannot be determined for some reason.
--]]
function p.luaMain(rname, bracket, fulltext)
if type(rname) ~= "string" or not rname:find("%S") then
return nil
end
bracket = bracket and "[[%s]]" or "%s"
rname = rname:match("%[%[(.+)%]%]") or rname
local target = p.getTarget(rname, fulltext)
local ret = target or rname
ret = getTitle(ret)
if ret then
if fulltext then
ret = ret.fullText
else
ret = ret.prefixedText
end
return bracket:format(ret)
else
return nil
end
end
-- Provides access to the luaMain function from wikitext.
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
return p.luaMain(args[1], args.bracket, args.fulltext) or ''
end
-- Returns true if the specified page is a redirect, and false otherwise.
function p.luaIsRedirect(page)
local titleObj = getTitle(page)
if not titleObj then
return false
end
if titleObj.isRedirect then
return true
else
return false
end
end
-- Provides access to the luaIsRedirect function from wikitext, returning 'yes'
-- if the specified page is a redirect, and the blank string otherwise.
function p.isRedirect(frame)
local args = require('Module:Arguments').getArgs(frame, {frameOnly = true})
if p.luaIsRedirect(args[1]) then
return 'yes'
else
return ''
end
end
return p
a224c45940343d66f49a78b0a39b2045e2c45d20
Template:Pagetype
10
92
232
231
2023-09-30T19:34:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pagetype]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:pagetype|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b8e6aa66678cd57877ea2c607372a45070f030a7
Module:Pagetype
828
93
234
233
2023-09-30T19:34:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Pagetype]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- PAGETYPE --
-- --
-- This is a meta-module intended to replace {{pagetype}} and similar --
-- templates. It automatically detects namespaces, and allows for a --
-- great deal of customisation. It can easily be ported to other --
-- wikis by changing the values in the [[Module:Pagetype/config]]. --
-- --
--------------------------------------------------------------------------------
-- Load config.
local cfg = mw.loadData('Module:Pagetype/config')
-- Load required modules.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local mDisambiguation = require('Module:Disambiguation')
local p = {}
-- Look up a namespace argument in the args table.
local function lookUpNamespaceArg(args, key)
local arg = args[key]
-- Convert "yes", "1" etc. to true, "no", "0" etc. to false, and leave
-- other values the same.
return yesno(arg, arg)
end
-- Append multiple values to an array
local function appendMultiple(target, source)
for _, value in ipairs(source) do
table.insert(target, value)
end
end
-- Get argument keys for a title's namespace
local function getNamespaceArgKeys(title, cfg)
local nsInfo = mw.site.namespaces[title.namespace]
local customAliases = cfg.customNamespaceAliases[title.namespace] or {}
local keys = {}
if nsInfo.name ~= '' then
table.insert(keys, nsInfo.name)
end
if nsInfo.canonicalName ~= nsInfo.name and nsInfo.canonicalName ~= '' then
table.insert(keys, nsInfo.canonicalName)
end
appendMultiple(keys, nsInfo.aliases)
appendMultiple(keys, customAliases)
return keys
end
-- Get the argument for a title's namespace, if it was specified in the args
-- table.
local function getNamespaceArg(title, args, cfg)
if title.isTalkPage then
return lookUpNamespaceArg(args, cfg.talk)
end
for _, key in ipairs(getNamespaceArgKeys(title, cfg)) do
local arg = lookUpNamespaceArg(args, mw.ustring.lower(key))
if arg ~= nil then
return arg
end
end
return nil
end
-- Look up a page type specific to the title's namespace
local function getExplicitPageType(title, cfg)
if title.isTalkPage then
return cfg.talkDefault
else
return cfg.pagetypes[title.namespace]
end
end
-- Get a default page type that is not specific to the title's namespace
local function getDefaultPageType(args, cfg)
local other = lookUpNamespaceArg(args, cfg.other)
if type(other) == 'string' then
return other
else
return cfg.otherDefault
end
end
local function detectRedirects(title, args)
local redirect = lookUpNamespaceArg(args, cfg.redirect)
if redirect == false then
-- Don't detect redirects if they have been specifically disallowed.
return nil
end
-- Allow custom values for redirects.
if not title.isRedirect then
return nil
elseif type(redirect) == 'string' then
return redirect
else
return cfg.redirectDefault
end
end
local function detectDisambiguationPages(title, args, cfg)
if title.namespace ~= 0 then
-- Only detect disambiguation pages in mainspace
return nil
end
local dab = lookUpNamespaceArg(args, cfg.dab)
if dab == false then
-- Don't detect disambiguation pages if explicitly disallowed
return nil
end
if not mDisambiguation.isDisambiguation(title:getContent()) then
return nil
elseif type(dab) == 'string' then
return dab
else
return cfg.dabDefault
end
end
-- Gets the pagetype from a class specified from the first positional
-- parameter.
local function getPageTypeFromClass(args, class, key, aliasTable, default)
local arg = lookUpNamespaceArg(args, key)
if arg == false then
-- Don't check for this class if it is specifically disallowed.
return nil
end
if aliasTable[class] then
if type(arg) == 'string' then
return arg
else
return default
end
end
return nil
end
-- Get page types for mainspaces pages with an explicit class specified
local function getMainNamespaceClassPageType(title, args, cfg)
if title.namespace ~= 0 then
return nil
end
local class = args[1]
if type(class) == 'string' then
-- Put in lower case so e.g. "na" and "NA" will both match.
class = mw.ustring.lower(class)
end
return getPageTypeFromClass(
args,
class,
cfg.na,
cfg.naAliases,
cfg.naDefault
)
end
-- Get page type specified by an explicit namespace argument.
local function getNamespaceArgPageType(title, args, cfg)
local namespaceArg = getNamespaceArg(title, args, cfg)
if namespaceArg == true then
-- Namespace has been explicitly enabled, so return the default for
-- this namespace
return getExplicitPageType(title, cfg)
elseif namespaceArg == false then
-- Namespace has been explicitly disabled
return getDefaultPageType(args, cfg)
elseif namespaceArg then
-- This namespaces uses custom text
return namespaceArg
else
return nil
end
end
-- Whether the title is in the set of default active namespaces which are
-- looked up in cfg.pagetypes.
local function isInDefaultActiveNamespace(title, args, cfg)
local defaultNamespacesKey = args[cfg.defaultns]
if defaultNamespacesKey == cfg.defaultnsAll then
return true
end
local defaultNamespaces
if defaultNamespacesKey == cfg.defaultnsExtended then
defaultNamespaces = cfg.extendedNamespaces
elseif defaultNamespacesKey == cfg.defaultnsNone then
defaultNamespaces = {}
else
defaultNamespaces = cfg.defaultNamespaces
end
return defaultNamespaces[title.namespace] or false
end
-- Get page type not specified or detected by other means
local function getOtherPageType(title, args, cfg)
if isInDefaultActiveNamespace(title, args, cfg) then
return getExplicitPageType(title, cfg)
else
return getDefaultPageType(args, cfg)
end
end
local function getPageType(title, args, cfg)
return (
detectRedirects(title, args, cfg)
or detectDisambiguationPages(title, args, cfg)
or getMainNamespaceClassPageType(title, args, cfg)
or getNamespaceArgPageType(title, args, cfg)
or getOtherPageType(title, args, cfg)
)
end
local function shouldUseSubjectTitle(args, cfg)
return not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll
end
-- Get the Scribunto title object to fetch the page type of
local function getTitle(args, cfg)
local title
if args.page then
title = mw.title.new(args.page)
if not title then
return nil
end
else
title = mw.title.getCurrentTitle()
end
if shouldUseSubjectTitle(args, cfg) then
return title.subjectPageTitle
else
return title
end
end
local function pluralize(pageType, cfg)
if cfg.irregularPlurals[pageType] then
return cfg.irregularPlurals[pageType]
else
return pageType .. cfg.plural -- often 's'
end
end
local function capitalize(pageType)
local first = mw.ustring.sub(pageType, 1, 1)
local rest = mw.ustring.sub(pageType, 2)
return mw.ustring.upper(first) .. rest
end
function p._main(args)
local title = getTitle(args, cfg)
local pageType = getPageType(title, args, cfg)
if yesno(args.plural, false) then
pageType = pluralize(pageType, cfg)
end
if yesno(args.caps, false) then
pageType = capitalize(pageType)
end
return pageType
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
return p
ab72b17cbd3e423817484aedfd33b480e9ba3611
Module:Pagetype/config
828
94
236
235
2023-09-30T19:34:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Pagetype/config]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Pagetype configuration data --
-- This page holds localisation and configuration data for Module:Pagetype. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
-- This table holds the default page types for each namespace. Keys to this
-- table should be integers that can be used as keys to mw.site.namespaces.
cfg.pagetypes = {
[0] = 'article', -- Main namespace
[2] = 'user page',
[4] = 'project page',
[6] = 'file',
[8] = 'interface page', -- MediaWiki namespace
[10] = 'template',
[12] = 'help page',
[14] = 'category',
[100] = 'portal',
[118] = 'draft',
[710] = 'Timed Text page',
[828] = 'module',
[2300] = 'gadget',
[2302] = 'gadget definition',
[-1] = 'special page',
[-2] = 'file', -- Media namespace
}
-- This table holds the namespaces to be looked up from cfg.pagetypes by
-- default.
cfg.defaultNamespaces = {
[0] = true, -- main
[6] = true, -- file
[10] = true, -- template
[14] = true, -- category
[828] = true, -- module
}
-- This table holds the namespaces to be looked up from cfg.pagetypes if
-- cfg.defaultnsExtended is set.
cfg.extendedNamespaces = {
[0] = true, -- main
[2] = true, -- user
[4] = true, -- project
[6] = true, -- file
[8] = true, -- mediawiki
[10] = true, -- template
[12] = true, -- help
[14] = true, -- category
[100] = true, -- portal
[118] = true, -- draft
[828] = true, -- module
}
-- This table holds custom aliases for each namespace.
cfg.customNamespaceAliases = {
[0] = {'main'},
}
-- The parameter name to set which default namespace values to be looked up from
-- cfg.pagetypes.
cfg.defaultns = 'defaultns'
-- The value of cfg.defaultns to set all namespaces, including talk.
cfg.defaultnsAll = 'all'
-- The value of cfg.defaultns to set the namespaces listed in
-- cfg.extendedNamespaces
cfg.defaultnsExtended = 'extended'
-- The value of cfg.defaultns to set no default namespaces.
cfg.defaultnsNone = 'none'
-- The parameter name to use for talk pages.
cfg.talk = 'talk'
-- The default value for talk pages.
cfg.talkDefault = 'talk page'
-- The parameter name to use for disambiguation pages page.
cfg.dab = 'dab'
-- This table holds the different possible aliases for disambiguation-class
-- pages. These should be lower-case.
cfg.dabAliases = {
['disambiguation'] = true,
['disambig'] = true,
['disamb'] = true,
['dab'] = true,
}
-- The default value for disambiguation pages.
cfg.dabDefault = 'page'
-- The parameter name to use for N/A-class page.
cfg.na = 'na'
-- This table holds the different possible aliases for N/A-class pages. These
-- should be lower-case.
cfg.naAliases = {
['na'] = true,
['n/a'] = true,
}
-- The default value for N/A-class pages.
cfg.naDefault = 'page'
-- The parameter name to use for redirects.
cfg.redirect = 'redirect'
-- The default value to use for redirects.
cfg.redirectDefault = 'redirect'
-- The parameter name for undefined namespaces.
cfg.other = 'other'
-- The value used if the module detects an undefined namespace.
cfg.otherDefault = 'page'
-- The usual suffix denoting a plural.
cfg.plural = 's'
-- This table holds plurals not formed by a simple suffix.
cfg.irregularPlurals = {
["category"] = "categories"
}
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line
5360b93ef5fd7551e38026f1b8df00bed8b34b2d
Module:Namespace detect
828
95
238
237
2023-09-30T19:34:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Namespace_detect]]
Scribunto
text/plain
--[[
--------------------------------------------------------------------------------
-- --
-- NAMESPACE DETECT --
-- --
-- This module implements the {{namespace detect}} template in Lua, with a --
-- few improvements: all namespaces and all namespace aliases are supported, --
-- and namespace names are detected automatically for the local wiki. The --
-- module can also use the corresponding subject namespace value if it is --
-- used on a talk page. Parameter names can be configured for different wikis --
-- by altering the values in the "cfg" table in --
-- Module:Namespace detect/config. --
-- --
--------------------------------------------------------------------------------
--]]
local data = mw.loadData('Module:Namespace detect/data')
local argKeys = data.argKeys
local cfg = data.cfg
local mappings = data.mappings
local yesno = require('Module:Yesno')
local mArguments -- Lazily initialise Module:Arguments
local mTableTools -- Lazily initilalise Module:TableTools
local ustringLower = mw.ustring.lower
local p = {}
local function fetchValue(t1, t2)
-- Fetches a value from the table t1 for the first key in array t2 where
-- a non-nil value of t1 exists.
for i, key in ipairs(t2) do
local value = t1[key]
if value ~= nil then
return value
end
end
return nil
end
local function equalsArrayValue(t, value)
-- Returns true if value equals a value in the array t. Otherwise
-- returns false.
for i, arrayValue in ipairs(t) do
if value == arrayValue then
return true
end
end
return false
end
function p.getPageObject(page)
-- Get the page object, passing the function through pcall in case of
-- errors, e.g. being over the expensive function count limit.
if page then
local success, pageObject = pcall(mw.title.new, page)
if success then
return pageObject
else
return nil
end
else
return mw.title.getCurrentTitle()
end
end
-- Provided for backward compatibility with other modules
function p.getParamMappings()
return mappings
end
local function getNamespace(args)
-- This function gets the namespace name from the page object.
local page = fetchValue(args, argKeys.demopage)
if page == '' then
page = nil
end
local demospace = fetchValue(args, argKeys.demospace)
if demospace == '' then
demospace = nil
end
local subjectns = fetchValue(args, argKeys.subjectns)
local ret
if demospace then
-- Handle "demospace = main" properly.
if equalsArrayValue(argKeys.main, ustringLower(demospace)) then
ret = mw.site.namespaces[0].name
else
ret = demospace
end
else
local pageObject = p.getPageObject(page)
if pageObject then
if pageObject.isTalkPage then
-- Get the subject namespace if the option is set,
-- otherwise use "talk".
if yesno(subjectns) then
ret = mw.site.namespaces[pageObject.namespace].subject.name
else
ret = 'talk'
end
else
ret = pageObject.nsText
end
else
return nil -- return nil if the page object doesn't exist.
end
end
ret = ret:gsub('_', ' ')
return ustringLower(ret)
end
function p._main(args)
-- Check the parameters stored in the mappings table for any matches.
local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys
local params = mappings[namespace] or {}
local ret = fetchValue(args, params)
--[[
-- If there were no matches, return parameters for other namespaces.
-- This happens if there was no text specified for the namespace that
-- was detected or if the demospace parameter is not a valid
-- namespace. Note that the parameter for the detected namespace must be
-- completely absent for this to happen, not merely blank.
--]]
if ret == nil then
ret = fetchValue(args, argKeys.other)
end
return ret
end
function p.main(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {removeBlanks = false})
local ret = p._main(args)
return ret or ''
end
function p.table(frame)
--[[
-- Create a wikitable of all subject namespace parameters, for
-- documentation purposes. The talk parameter is optional, in case it
-- needs to be excluded in the documentation.
--]]
-- Load modules and initialise variables.
mTableTools = require('Module:TableTools')
local namespaces = mw.site.namespaces
local cfg = data.cfg
local useTalk = type(frame) == 'table'
and type(frame.args) == 'table'
and yesno(frame.args.talk) -- Whether to use the talk parameter.
-- Get the header names.
local function checkValue(value, default)
if type(value) == 'string' then
return value
else
return default
end
end
local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace')
local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases')
-- Put the namespaces in order.
local mappingsOrdered = {}
for nsname, params in pairs(mappings) do
if useTalk or nsname ~= 'talk' then
local nsid = namespaces[nsname].id
-- Add 1, as the array must start with 1; nsid 0 would be lost otherwise.
nsid = nsid + 1
mappingsOrdered[nsid] = params
end
end
mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered)
-- Build the table.
local ret = '{| class="wikitable"'
.. '\n|-'
.. '\n! ' .. nsHeader
.. '\n! ' .. aliasesHeader
for i, params in ipairs(mappingsOrdered) do
for j, param in ipairs(params) do
if j == 1 then
ret = ret .. '\n|-'
.. '\n| <code>' .. param .. '</code>'
.. '\n| '
elseif j == 2 then
ret = ret .. '<code>' .. param .. '</code>'
else
ret = ret .. ', <code>' .. param .. '</code>'
end
end
end
ret = ret .. '\n|-'
.. '\n|}'
return ret
end
return p
a4757000273064f151f0f22dc0e139092e5ff443
Module:Namespace detect/data
828
96
240
239
2023-09-30T19:34:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Namespace_detect/data]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect data --
-- This module holds data for [[Module:Namespace detect]] to be loaded per --
-- page, rather than per #invoke, for performance reasons. --
--------------------------------------------------------------------------------
local cfg = require('Module:Namespace detect/config')
local function addKey(t, key, defaultKey)
if key ~= defaultKey then
t[#t + 1] = key
end
end
-- Get a table of parameters to query for each default parameter name.
-- This allows wikis to customise parameter names in the cfg table while
-- ensuring that default parameter names will always work. The cfg table
-- values can be added as a string, or as an array of strings.
local defaultKeys = {
'main',
'talk',
'other',
'subjectns',
'demospace',
'demopage'
}
local argKeys = {}
for i, defaultKey in ipairs(defaultKeys) do
argKeys[defaultKey] = {defaultKey}
end
for defaultKey, t in pairs(argKeys) do
local cfgValue = cfg[defaultKey]
local cfgValueType = type(cfgValue)
if cfgValueType == 'string' then
addKey(t, cfgValue, defaultKey)
elseif cfgValueType == 'table' then
for i, key in ipairs(cfgValue) do
addKey(t, key, defaultKey)
end
end
cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more.
end
local function getParamMappings()
--[[
-- Returns a table of how parameter names map to namespace names. The keys
-- are the actual namespace names, in lower case, and the values are the
-- possible parameter names for that namespace, also in lower case. The
-- table entries are structured like this:
-- {
-- [''] = {'main'},
-- ['wikipedia'] = {'wikipedia', 'project', 'wp'},
-- ...
-- }
--]]
local mappings = {}
local mainNsName = mw.site.subjectNamespaces[0].name
mainNsName = mw.ustring.lower(mainNsName)
mappings[mainNsName] = mw.clone(argKeys.main)
mappings['talk'] = mw.clone(argKeys.talk)
for nsid, ns in pairs(mw.site.subjectNamespaces) do
if nsid ~= 0 then -- Exclude main namespace.
local nsname = mw.ustring.lower(ns.name)
local canonicalName = mw.ustring.lower(ns.canonicalName)
mappings[nsname] = {nsname}
if canonicalName ~= nsname then
table.insert(mappings[nsname], canonicalName)
end
for _, alias in ipairs(ns.aliases) do
table.insert(mappings[nsname], mw.ustring.lower(alias))
end
end
end
return mappings
end
return {
argKeys = argKeys,
cfg = cfg,
mappings = getParamMappings()
}
d224f42a258bc308ef3ad8cc8686cd7a4f47d005
Module:Namespace detect/config
828
97
242
241
2023-09-30T19:34:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Namespace_detect/config]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Namespace detect configuration data --
-- --
-- This module stores configuration data for Module:Namespace detect. Here --
-- you can localise the module to your wiki's language. --
-- --
-- To activate a configuration item, you need to uncomment it. This means --
-- that you need to remove the text "-- " at the start of the line. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. Values added --
-- here will work in addition to the default English parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- cfg.foo = 'parameter name' --
-- --
-- To add multiple names, you can use this format: --
-- --
-- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} --
--------------------------------------------------------------------------------
---- This parameter displays content for the main namespace:
-- cfg.main = 'main'
---- This parameter displays in talk namespaces:
-- cfg.talk = 'talk'
---- This parameter displays content for "other" namespaces (namespaces for which
---- parameters have not been specified):
-- cfg.other = 'other'
---- This parameter makes talk pages behave as though they are the corresponding
---- subject namespace. Note that this parameter is used with [[Module:Yesno]].
---- Edit that module to change the default values of "yes", "no", etc.
-- cfg.subjectns = 'subjectns'
---- This parameter sets a demonstration namespace:
-- cfg.demospace = 'demospace'
---- This parameter sets a specific page to compare:
cfg.demopage = 'page'
--------------------------------------------------------------------------------
-- Table configuration --
-- These configuration items allow customisation of the "table" function, --
-- used to generate a table of possible parameters in the module --
-- documentation. --
--------------------------------------------------------------------------------
---- The header for the namespace column in the wikitable containing the list of
---- possible subject-space parameters.
-- cfg.wikitableNamespaceHeader = 'Namespace'
---- The header for the wikitable containing the list of possible subject-space
---- parameters.
-- cfg.wikitableAliasesHeader = 'Aliases'
--------------------------------------------------------------------------------
-- End of configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
0e4ff08d13c4b664d66b32c232deb129b77c1a56
Template:Short description
10
98
244
243
2023-09-30T19:34:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Short_description]]
wikitext
text/x-wiki
{{#ifeq:{{lc:{{{1|}}}}}|none|<nowiki /><!--Prevents whitespace issues when used with adjacent newlines-->|<div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">{{{1|}}}{{SHORTDESC:{{{1|}}}|{{{2|}}}}}</div>}}<includeonly>{{#ifeq:{{{pagetype}}}|Disambiguation pages||{{#ifeq:{{pagetype |defaultns = all |user=exclude}}|exclude||{{#ifeq:{{#switch: {{NAMESPACENUMBER}} | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 100 | 101 | 118 | 119 | 828 | 829 | = exclude|#default=}}|exclude||[[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with short description]]}}}}}}</includeonly><!-- Start tracking
-->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using short description with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Short description]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | pagetype | bot |plural }}<!--
-->{{#ifexpr: {{#invoke:String|len|{{{1|}}}}}>100 | [[Category:{{{pagetype|{{pagetype |defaultns = extended |plural=y}}}}} with long short description]]}}<!--
--><includeonly>{{#if:{{{1|}}}||[[Category:Pages with empty short description]]}}</includeonly><!--
-->{{Short description/lowercasecheck|{{{1|}}}}}<!--
-->{{Main other |{{SDcat |sd={{{1|}}} }} }}<noinclude>
{{Documentation}}
</noinclude>
f175a6d61b40a87adb43e2dd4f73c7979759b34c
Template:Short description/lowercasecheck
10
99
246
245
2023-09-30T19:34:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Short_description/lowercasecheck]]
wikitext
text/x-wiki
{{#ifeq:<!--test first character for lower-case letter-->{{#invoke:string|find|1={{{1|}}}|2=^%l|plain=false}}|1
|<!-- first character is a lower case letter; test against whitelist
-->{{#switch: {{First word|{{{1|}}}}}<!--begin whitelist-->
|c. <!--for circa-->
|gTLD
|iMac
|iOS
|iOS,
|iPad
|iPhone
|iTunes
|macOS
|none
|pH
|pH-dependent=<!-- end whitelist; short description starts with an allowed lower-case string; whitelist matched; do nothing -->
|#default=<!-- apply category to track lower-case short descriptions -->{{main other|[[Category:Pages with lower-case short description|{{trim|{{{1|}}}}}]]}}{{Testcases other|{{red|CATEGORY APPLIED}}}}<!-- end whitelist test -->}}
|<!-- short description does not start with lower-case letter; do nothing; end lower-case test -->
}}<noinclude>
{{documentation}}
</noinclude>
9a6d4db14b74614625fd234b4f8ee3c8e1a235c0
Template:Edit
10
100
248
247
2023-09-30T19:34:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Edit]]
wikitext
text/x-wiki
<span class="noprint plainlinks" title="{{#if:{{{tooltip|}}}|{{{tooltip}}}|Edit {{{1}}}}}">[{{fullurl:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|action=edit{{#if:{{{section|}}}|§ion={{{section}}}}}{{#if:{{{editintro|}}}|&editintro={{urlencode:{{{editintro}}}|wiki}}}}{{#if:{{{preload|}}}|&preload={{urlencode:{{{preload}}}|wiki}}}}{{#if:{{{preloadtitle|}}}|&preloadtitle={{urlencode:{{{preloadtitle}}}}}}}}} {{{2|edit}}}]</span><noinclude>
{{documentation}}
</noinclude>
20ae9613e64bbdd279f1d1c7a3d2ddf64d1b1b48
Template:Namespace detect
10
101
250
249
2023-09-30T19:34:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Namespace_detect]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Namespace detect|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b4af86f91bea873fdb8145e7809511fed3a610ce
Template:Main
10
102
252
251
2023-09-30T19:34:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Main]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
99ebf54e265aa9354bc4861d3b0da913f1441ede
Template:Small
10
103
254
253
2023-09-30T19:34:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Small]]
wikitext
text/x-wiki
<span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude>
{{Documentation}}<!--Categories and interwikis go in the /doc sub-page.-->
</noinclude>
76d3535c2917cc3bfb1b032506073faa15e1a480
Template:Smaller
10
104
256
255
2023-09-30T19:34:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Smaller]]
wikitext
text/x-wiki
#REDIRECT [[Template:Small]]
{{r from merge}}
2209ecdc4a987eb3d73f648941a3daaed04cd5d5
Module:Labelled list hatnote
828
105
258
257
2023-09-30T19:34:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Labelled_list_hatnote]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Labelled list --
-- --
-- This module does the core work of creating a hatnote composed of a list --
-- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", --
-- for {{see also}} and similar templates. --
--------------------------------------------------------------------------------
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local yesno --initialize lazily
local p = {}
-- Defaults global to this module
local defaults = {
label = 'See also', --Final fallback for label argument
labelForm = '%s: %s',
prefixes = {'label', 'label ', 'l'},
template = 'Module:Labelled list hatnote'
}
-- Localizable message strings
local msg = {
errorSuffix = '#Errors',
noInputWarning = 'no page names specified',
noOutputWarning =
"'''[[%s]] — no output: none of the target pages exist.'''"
}
-- Helper function that pre-combines display parameters into page arguments.
-- Also compresses sparse arrays, as a desirable side-effect.
function p.preprocessDisplays (args, prefixes)
-- Prefixes specify which parameters, in order, to check for display options
-- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1'
prefixes = prefixes or defaults.prefixes
local indices = {}
local sparsePages = {}
for k, v in pairs(args) do
if type(k) == 'number' then
indices[#indices + 1] = k
local display
for i = 1, #prefixes do
display = args[prefixes[i] .. k]
if display then break end
end
sparsePages[k] = display and
string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v
end
end
table.sort(indices)
local pages = {}
for k, v in ipairs(indices) do pages[#pages + 1] = sparsePages[v] end
return pages
end
--Helper function to get a page target from a processed page string
--e.g. "Page|Label" → "Page" or "Target" → "Target"
local function getTarget(pagename)
local pipe = string.find(pagename, '|')
return string.sub(pagename, 0, pipe and pipe - 1 or nil)
end
-- Produces a labelled pages-list hatnote.
-- The main frame (template definition) takes 1 or 2 arguments, for a singular
-- and (optionally) plural label respectively:
-- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}}
-- The resulting template takes pagename & label parameters normally.
function p.labelledList (frame)
mArguments = require('Module:Arguments')
yesno = require('Module:Yesno')
local labels = {frame.args[1] or defaults.label}
labels[2] = frame.args[2] or labels[1]
labels[3] = frame.args[3] --no defaulting
labels[4] = frame.args[4] --no defaulting
local template = frame:getParent():getTitle()
local args = mArguments.getArgs(frame, {parentOnly = true})
local pages = p.preprocessDisplays(args)
local options = {
category = yesno(args.category),
extraclasses = frame.args.extraclasses,
ifexists = yesno(frame.args.ifexists),
namespace = frame.args.namespace or args.namespace,
selfref = yesno(frame.args.selfref or args.selfref),
template = template
}
return p._labelledList(pages, labels, options)
end
function p._labelledList (pages, labels, options)
if options.ifexists then
for k = #pages, 1, -1 do --iterate backwards to allow smooth removals
local v = pages[k]
local title = mw.title.new(getTarget(v), namespace)
if (v == '') or title == nil or not title.exists then
table.remove(pages, k)
end
end
end
labels = labels or {}
label = (#pages == 1 and labels[1] or labels[2]) or defaults.label
for k, v in pairs(pages) do
if mHatnote.findNamespaceId(v) ~= 0 then
label =
(
#pages == 1 and
(labels[3] or labels[1] or defaults.label) or
(labels[4] or labels[2] or defaults.label)
) or defaults.label
end
end
if #pages == 0 then
if options.ifexists then
mw.addWarning(
string.format(
msg.noOutputWarning, options.template or defaults.template
)
)
return ''
else
return mHatnote.makeWikitextError(
msg.noInputWarning,
(options.template or defaults.template) .. msg.errorSuffix,
options.category
)
end
end
local text = string.format(
options.labelForm or defaults.labelForm,
label,
mHatlist.andList(pages, true)
)
local hnOptions = {
extraclasses = options.extraclasses,
selfref = options.selfref
}
return mHatnote._hatnote(text, hnOptions)
end
return p
b7a8ba27cf6195e6427701b94e8d2acad3c40a21
Module:Navbox
828
106
260
259
2023-09-30T19:34:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbox]]
Scribunto
text/plain
require('strict')
local p = {}
local navbar = require('Module:Navbar')._navbar
local cfg = mw.loadData('Module:Navbox/configuration')
local getArgs -- lazily initialized
local args
local format = string.format
local function striped(wikitext, border)
-- Return wikitext with markers replaced for odd/even striping.
-- Child (subgroup) navboxes are flagged with a category that is removed
-- by parent navboxes. The result is that the category shows all pages
-- where a child navbox is not contained in a parent navbox.
local orphanCat = cfg.category.orphan
if border == cfg.keyword.border_subgroup and args[cfg.arg.orphan] ~= cfg.keyword.orphan_yes then
-- No change; striping occurs in outermost navbox.
return wikitext .. orphanCat
end
local first, second = cfg.class.navbox_odd_part, cfg.class.navbox_even_part
if args[cfg.arg.evenodd] then
if args[cfg.arg.evenodd] == cfg.keyword.evenodd_swap then
first, second = second, first
else
first = args[cfg.arg.evenodd]
second = first
end
end
local changer
if first == second then
changer = first
else
local index = 0
changer = function (code)
if code == '0' then
-- Current occurrence is for a group before a nested table.
-- Set it to first as a valid although pointless class.
-- The next occurrence will be the first row after a title
-- in a subgroup and will also be first.
index = 0
return first
end
index = index + 1
return index % 2 == 1 and first or second
end
end
local regex = orphanCat:gsub('([%[%]])', '%%%1')
return (wikitext:gsub(regex, ''):gsub(cfg.marker.regex, changer)) -- () omits gsub count
end
local function processItem(item, nowrapitems)
if item:sub(1, 2) == '{|' then
-- Applying nowrap to lines in a table does not make sense.
-- Add newlines to compensate for trim of x in |parm=x in a template.
return '\n' .. item ..'\n'
end
if nowrapitems == cfg.keyword.nowrapitems_yes then
local lines = {}
for line in (item .. '\n'):gmatch('([^\n]*)\n') do
local prefix, content = line:match('^([*:;#]+)%s*(.*)')
if prefix and not content:match(cfg.pattern.nowrap) then
line = format(cfg.nowrap_item, prefix, content)
end
table.insert(lines, line)
end
item = table.concat(lines, '\n')
end
if item:match('^[*:;#]') then
return '\n' .. item ..'\n'
end
return item
end
local function has_navbar()
return args[cfg.arg.navbar] ~= cfg.keyword.navbar_off
and args[cfg.arg.navbar] ~= cfg.keyword.navbar_plain
and (
args[cfg.arg.name]
or mw.getCurrentFrame():getParent():getTitle():gsub(cfg.pattern.sandbox, '')
~= cfg.pattern.navbox
)
end
local function renderNavBar(titleCell)
if has_navbar() then
titleCell:wikitext(navbar{
[cfg.navbar.name] = args[cfg.arg.name],
[cfg.navbar.mini] = 1,
[cfg.navbar.fontstyle] = (args[cfg.arg.basestyle] or '') .. ';' ..
(args[cfg.arg.titlestyle] or '') ..
';background:none transparent;border:none;box-shadow:none;padding:0;'
})
end
end
local function renderTitleRow(tbl)
if not args[cfg.arg.title] then return end
local titleRow = tbl:tag('tr')
local titleCell = titleRow:tag('th'):attr('scope', 'col')
local titleColspan = 2
if args[cfg.arg.imageleft] then titleColspan = titleColspan + 1 end
if args[cfg.arg.image] then titleColspan = titleColspan + 1 end
titleCell
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.titlestyle])
:addClass(cfg.class.navbox_title)
:attr('colspan', titleColspan)
renderNavBar(titleCell)
titleCell
:tag('div')
-- id for aria-labelledby attribute
:attr('id', mw.uri.anchorEncode(args[cfg.arg.title]))
:addClass(args[cfg.arg.titleclass])
:css('font-size', '114%')
:css('margin', '0 4em')
:wikitext(processItem(args[cfg.arg.title]))
end
local function getAboveBelowColspan()
local ret = 2
if args[cfg.arg.imageleft] then ret = ret + 1 end
if args[cfg.arg.image] then ret = ret + 1 end
return ret
end
local function renderAboveRow(tbl)
if not args[cfg.arg.above] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.aboveclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.abovestyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
-- id for aria-labelledby attribute, if no title
:attr('id', (not args[cfg.arg.title]) and mw.uri.anchorEncode(args[cfg.arg.above]) or nil)
:wikitext(processItem(args[cfg.arg.above], args[cfg.arg.nowrapitems]))
end
local function renderBelowRow(tbl)
if not args[cfg.arg.below] then return end
tbl:tag('tr')
:tag('td')
:addClass(cfg.class.navbox_abovebelow)
:addClass(args[cfg.arg.belowclass])
:cssText(args[cfg.arg.basestyle])
:cssText(args[cfg.arg.belowstyle])
:attr('colspan', getAboveBelowColspan())
:tag('div')
:wikitext(processItem(args[cfg.arg.below], args[cfg.arg.nowrapitems]))
end
local function renderListRow(tbl, index, listnum, listnums_size)
local row = tbl:tag('tr')
if index == 1 and args[cfg.arg.imageleft] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 2px 0 0')
:cssText(args[cfg.arg.imageleftstyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.imageleft]))
end
local group_and_num = format(cfg.arg.group_and_num, listnum)
local groupstyle_and_num = format(cfg.arg.groupstyle_and_num, listnum)
if args[group_and_num] then
local groupCell = row:tag('th')
-- id for aria-labelledby attribute, if lone group with no title or above
if listnum == 1 and not (args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group2]) then
groupCell
:attr('id', mw.uri.anchorEncode(args[cfg.arg.group1]))
end
groupCell
:attr('scope', 'row')
:addClass(cfg.class.navbox_group)
:addClass(args[cfg.arg.groupclass])
:cssText(args[cfg.arg.basestyle])
-- If groupwidth not specified, minimize width
:css('width', args[cfg.arg.groupwidth] or '1%')
groupCell
:cssText(args[cfg.arg.groupstyle])
:cssText(args[groupstyle_and_num])
:wikitext(args[group_and_num])
end
local listCell = row:tag('td')
if args[group_and_num] then
listCell
:addClass(cfg.class.navbox_list_with_group)
else
listCell:attr('colspan', 2)
end
if not args[cfg.arg.groupwidth] then
listCell:css('width', '100%')
end
local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing
if index % 2 == 1 then
rowstyle = args[cfg.arg.oddstyle]
else
rowstyle = args[cfg.arg.evenstyle]
end
local list_and_num = format(cfg.arg.list_and_num, listnum)
local listText = args[list_and_num]
local oddEven = cfg.marker.oddeven
if listText:sub(1, 12) == '</div><table' then
-- Assume list text is for a subgroup navbox so no automatic striping for this row.
oddEven = listText:find(cfg.pattern.navbox_title) and cfg.marker.restart or cfg.class.navbox_odd_part
end
local liststyle_and_num = format(cfg.arg.liststyle_and_num, listnum)
local listclass_and_num = format(cfg.arg.listclass_and_num, listnum)
listCell
:css('padding', '0')
:cssText(args[cfg.arg.liststyle])
:cssText(rowstyle)
:cssText(args[liststyle_and_num])
:addClass(cfg.class.navbox_list)
:addClass(cfg.class.navbox_part .. oddEven)
:addClass(args[cfg.arg.listclass])
:addClass(args[listclass_and_num])
:tag('div')
:css('padding',
(index == 1 and args[cfg.arg.list1padding]) or args[cfg.arg.listpadding] or '0 0.25em'
)
:wikitext(processItem(listText, args[cfg.arg.nowrapitems]))
if index == 1 and args[cfg.arg.image] then
row
:tag('td')
:addClass(cfg.class.noviewer)
:addClass(cfg.class.navbox_image)
:addClass(args[cfg.arg.imageclass])
:css('width', '1px') -- Minimize width
:css('padding', '0 0 0 2px')
:cssText(args[cfg.arg.imagestyle])
:attr('rowspan', listnums_size)
:tag('div')
:wikitext(processItem(args[cfg.arg.image]))
end
end
local function has_list_class(htmlclass)
local patterns = {
'^' .. htmlclass .. '$',
'%s' .. htmlclass .. '$',
'^' .. htmlclass .. '%s',
'%s' .. htmlclass .. '%s'
}
for arg, _ in pairs(args) do
if type(arg) == 'string' and mw.ustring.find(arg, cfg.pattern.class) then
for _, pattern in ipairs(patterns) do
if mw.ustring.find(args[arg] or '', pattern) then
return true
end
end
end
end
return false
end
-- there are a lot of list classes in the wild, so we add their TemplateStyles
local function add_list_styles()
local frame = mw.getCurrentFrame()
local function add_list_templatestyles(htmlclass, templatestyles)
if has_list_class(htmlclass) then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
else
return ''
end
end
local hlist_styles = add_list_templatestyles('hlist', cfg.hlist_templatestyles)
local plainlist_styles = add_list_templatestyles('plainlist', cfg.plainlist_templatestyles)
-- a second workaround for [[phab:T303378]]
-- when that issue is fixed, we can actually use has_navbar not to emit the
-- tag here if we want
if has_navbar() and hlist_styles == '' then
hlist_styles = frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
}
end
-- hlist -> plainlist is best-effort to preserve old Common.css ordering.
-- this ordering is not a guarantee because most navboxes will emit only
-- one of these classes [hlist_note]
return hlist_styles .. plainlist_styles
end
local function needsHorizontalLists(border)
if border == cfg.keyword.border_subgroup or args[cfg.arg.tracking] == cfg.keyword.tracking_no then
return false
end
return not has_list_class(cfg.pattern.hlist) and not has_list_class(cfg.pattern.plainlist)
end
local function hasBackgroundColors()
for _, key in ipairs({cfg.arg.titlestyle, cfg.arg.groupstyle,
cfg.arg.basestyle, cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('background', 1, true) then
return true
end
end
return false
end
local function hasBorders()
for _, key in ipairs({cfg.arg.groupstyle, cfg.arg.basestyle,
cfg.arg.abovestyle, cfg.arg.belowstyle}) do
if tostring(args[key]):find('border', 1, true) then
return true
end
end
return false
end
local function isIllegible()
local styleratio = require('Module:Color contrast')._styleratio
for key, style in pairs(args) do
if tostring(key):match(cfg.pattern.style) then
if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then
return true
end
end
end
return false
end
local function getTrackingCategories(border)
local cats = {}
if needsHorizontalLists(border) then table.insert(cats, cfg.category.horizontal_lists) end
if hasBackgroundColors() then table.insert(cats, cfg.category.background_colors) end
if isIllegible() then table.insert(cats, cfg.category.illegible) end
if hasBorders() then table.insert(cats, cfg.category.borders) end
return cats
end
local function renderTrackingCategories(builder, border)
local title = mw.title.getCurrentTitle()
if title.namespace ~= 10 then return end -- not in template space
local subpage = title.subpageText
if subpage == cfg.keyword.subpage_doc or subpage == cfg.keyword.subpage_sandbox
or subpage == cfg.keyword.subpage_testcases then return end
for _, cat in ipairs(getTrackingCategories(border)) do
builder:wikitext('[[Category:' .. cat .. ']]')
end
end
local function renderMainTable(border, listnums)
local tbl = mw.html.create('table')
:addClass(cfg.class.nowraplinks)
:addClass(args[cfg.arg.bodyclass])
local state = args[cfg.arg.state]
if args[cfg.arg.title] and state ~= cfg.keyword.state_plain and state ~= cfg.keyword.state_off then
if state == cfg.keyword.state_collapsed then
state = cfg.class.collapsed
end
tbl
:addClass(cfg.class.collapsible)
:addClass(state or cfg.class.autocollapse)
end
tbl:css('border-spacing', 0)
if border == cfg.keyword.border_subgroup or border == cfg.keyword.border_none then
tbl
:addClass(cfg.class.navbox_subgroup)
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
else -- regular navbox - bodystyle and style will be applied to the wrapper table
tbl
:addClass(cfg.class.navbox_inner)
:css('background', 'transparent')
:css('color', 'inherit')
end
tbl:cssText(args[cfg.arg.innerstyle])
renderTitleRow(tbl)
renderAboveRow(tbl)
local listnums_size = #listnums
for i, listnum in ipairs(listnums) do
renderListRow(tbl, i, listnum, listnums_size)
end
renderBelowRow(tbl)
return tbl
end
local function add_navbox_styles(hiding_templatestyles)
local frame = mw.getCurrentFrame()
-- This is a lambda so that it doesn't need the frame as a parameter
local function add_user_styles(templatestyles)
if templatestyles and templatestyles ~= '' then
return frame:extensionTag{
name = 'templatestyles', args = { src = templatestyles }
}
end
return ''
end
-- get templatestyles. load base from config so that Lua only needs to do
-- the work once of parser tag expansion
local base_templatestyles = cfg.templatestyles
local templatestyles = add_user_styles(args[cfg.arg.templatestyles])
local child_templatestyles = add_user_styles(args[cfg.arg.child_templatestyles])
-- The 'navbox-styles' div exists to wrap the styles to work around T200206
-- more elegantly. Instead of combinatorial rules, this ends up being linear
-- number of CSS rules.
return mw.html.create('div')
:addClass(cfg.class.navbox_styles)
:wikitext(
add_list_styles() .. -- see [hlist_note] applied to 'before base_templatestyles'
base_templatestyles ..
templatestyles ..
child_templatestyles ..
table.concat(hiding_templatestyles)
)
:done()
end
-- work around [[phab:T303378]]
-- for each arg: find all the templatestyles strip markers, insert them into a
-- table. then remove all templatestyles markers from the arg
local function move_hiding_templatestyles(args)
local gfind = string.gfind
local gsub = string.gsub
local templatestyles_markers = {}
local strip_marker_pattern = '(\127[^\127]*UNIQ%-%-templatestyles%-%x+%-QINU[^\127]*\127)'
for k, arg in pairs(args) do
for marker in gfind(arg, strip_marker_pattern) do
table.insert(templatestyles_markers, marker)
end
args[k] = gsub(arg, strip_marker_pattern, '')
end
return templatestyles_markers
end
function p._navbox(navboxArgs)
args = navboxArgs
local hiding_templatestyles = move_hiding_templatestyles(args)
local listnums = {}
for k, _ in pairs(args) do
if type(k) == 'string' then
local listnum = k:match(cfg.pattern.listnum)
if listnum then table.insert(listnums, tonumber(listnum)) end
end
end
table.sort(listnums)
local border = mw.text.trim(args[cfg.arg.border] or args[1] or '')
if border == cfg.keyword.border_child then
border = cfg.keyword.border_subgroup
end
-- render the main body of the navbox
local tbl = renderMainTable(border, listnums)
local res = mw.html.create()
-- render the appropriate wrapper for the navbox, based on the border param
if border == cfg.keyword.border_none then
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above] or (args[cfg.arg.group1]
and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(
args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1]
)
)
else
nav:attr('aria-label', cfg.aria_label)
end
elseif border == cfg.keyword.border_subgroup then
-- We assume that this navbox is being rendered in a list cell of a
-- parent navbox, and is therefore inside a div with padding:0em 0.25em.
-- We start with a </div> to avoid the padding being applied, and at the
-- end add a <div> to balance out the parent's </div>
res
:wikitext('</div>')
:node(tbl)
:wikitext('<div>')
else
res:node(add_navbox_styles(hiding_templatestyles))
local nav = res:tag('div')
:attr('role', 'navigation')
:addClass(cfg.class.navbox)
:addClass(args[cfg.arg.navboxclass])
:cssText(args[cfg.arg.bodystyle])
:cssText(args[cfg.arg.style])
:css('padding', '3px')
:node(tbl)
-- aria-labelledby title, otherwise above, otherwise lone group
if args[cfg.arg.title] or args[cfg.arg.above]
or (args[cfg.arg.group1] and not args[cfg.arg.group2]) then
nav:attr(
'aria-labelledby',
mw.uri.anchorEncode(args[cfg.arg.title] or args[cfg.arg.above] or args[cfg.arg.group1])
)
else
nav:attr('aria-label', cfg.aria_label)
end
end
if (args[cfg.arg.nocat] or cfg.keyword.nocat_false):lower() == cfg.keyword.nocat_false then
renderTrackingCategories(res, border)
end
return striped(tostring(res), border)
end
function p.navbox(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
args = getArgs(frame, {wrappers = {cfg.pattern.navbox}})
-- Read the arguments in the order they'll be output in, to make references
-- number in the right order.
local _
_ = args[cfg.arg.title]
_ = args[cfg.arg.above]
-- Limit this to 20 as covering 'most' cases (that's a SWAG) and because
-- iterator approach won't work here
for i = 1, 20 do
_ = args[format(cfg.arg.group_and_num, i)]
_ = args[format(cfg.arg.list_and_num, i)]
end
_ = args[cfg.arg.below]
return p._navbox(args)
end
return p
05be9a97c035ab3f0fac69423779e261949d473c
Module:Navbox/configuration
828
107
262
261
2023-09-30T19:34:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbox/configuration]]
Scribunto
text/plain
return {
aria_label = 'Navbox',
nowrap_item = '%s<span class="nowrap">%s</span>',
templatestyles = mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' }
},
hlist_templatestyles = 'Hlist/styles.css',
plainlist_templatestyles = 'Plainlist/styles.css',
-- do not localize marker table
marker = {
oddeven = '\127_ODDEVEN_\127',
restart = '\127_ODDEVEN0_\127',
regex = '\127_ODDEVEN(%d?)_\127'
},
category = {
orphan = '[[Category:Navbox orphans]]',
horizontal_lists = 'Navigational boxes without horizontal lists',
background_colors = 'Navboxes using background colours',
illegible = 'Potentially illegible navboxes',
borders = 'Navboxes using borders',
},
keyword = {
border_subgroup = 'subgroup',
border_child = 'child',
border_none = 'none',
evenodd_swap = 'swap',
navbar_off = 'off',
navbar_plain = 'plain',
nocat_false = 'false',
nowrapitems_yes = 'yes',
orphan_yes = 'yes',
state_collapsed = 'collapsed',
state_off = 'off',
state_plain = 'plain',
subpage_doc = 'doc',
subpage_sandbox = 'sandbox',
subpage_testcases = 'testcases',
tracking_no = 'no'
},
class = {
autocollapse = 'autocollapse',
collapsible = 'mw-collapsible',
collapsed = 'mw-collapsed',
-- Warning
navbox = 'navbox', -- WMF currently hides 'navbox' from mobile,
-- so you probably shouldn't change the navbox class.
navbox_abovebelow = 'navbox-abovebelow',
navbox_group = 'navbox-group',
navbox_image = 'navbox-image',
navbox_inner = 'navbox-inner',
navbox_list = 'navbox-list',
navbox_list_with_group = 'navbox-list-with-group',
navbox_part = 'navbox-', -- do not l10n
navbox_styles = 'navbox-styles',
navbox_subgroup = 'navbox-subgroup',
navbox_title = 'navbox-title', -- l10n only if you change pattern.navbox_title below
navbox_odd_part = 'odd', -- do not l10n
navbox_even_part = 'even', -- do not l10n
nomobile = 'nomobile',
nowraplinks = 'nowraplinks',
noviewer = 'noviewer' -- used to remove images from MediaViewer
},
pattern = {
listnum = '^list(%d+)$',
class = 'class',
sandbox = '/sandbox$',
navbox = 'Template:Navbox',
nowrap = '^<span class="nowrap">',
style = 'style$',
navbox_title = '<th[^>]*"navbox%-title"',
hlist = 'hlist',
plainlist = 'plainlist',
},
arg = {
above = 'above',
aboveclass = 'aboveclass',
abovestyle = 'abovestyle',
basestyle = 'basestyle',
bodyclass = 'bodyclass',
bodystyle = 'bodystyle',
border = 'border',
below = 'below',
belowclass = 'belowclass',
belowstyle = 'belowstyle',
evenodd = 'evenodd',
evenstyle = 'evenstyle',
group1 = 'group1',
group2 = 'group2',
group_and_num = 'group%d',
groupstyle_and_num = 'group%dstyle',
groupclass = 'groupclass',
groupstyle = 'groupstyle',
groupwidth = 'groupwidth',
innerstyle = 'innerstyle',
image = 'image',
imageclass = 'imageclass',
imageleft = 'imageleft',
imageleftstyle = 'imageleftstyle',
imagesetyle = 'imagestyle',
list_and_num = 'list%d',
listclass_and_num = 'list%dclass',
liststyle_and_num = 'list%dstyle',
list1padding = 'list1padding',
listclass = 'listclass',
listpadding = 'listpadding',
liststyle = 'liststyle',
name = 'name',
navbar = 'navbar',
navboxclass = 'navboxclass',
nocat = 'nocat',
nowrapitems = 'nowrapitems',
oddstyle = 'oddstyle',
orphan = 'orphan',
state = 'state',
style = 'style',
templatestyles = 'templatestyles',
child_templatestyles = 'child templatestyles',
title = 'title',
titleclass = 'titleclass',
titlestyle = 'titlestyle',
tracking = 'tracking'
},
-- names of navbar arguments
navbar = {
name = 1,
fontstyle = 'fontstyle',
mini = 'mini'
}
}
4148736fd32a93636c0413e73ed38afaef065ec9
Module:Navbox/styles.css
828
108
264
263
2023-09-30T19:34:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbox/styles.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.navbox {
box-sizing: border-box;
border: 1px solid #a2a9b1;
width: 100%;
clear: both;
font-size: 88%;
text-align: center;
padding: 1px;
margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */
}
.navbox .navbox {
margin-top: 0; /* No top margin for nested navboxes */
}
.navbox + .navbox, /* TODO: remove first line after transclusions have updated */
.navbox + .navbox-styles + .navbox {
margin-top: -1px; /* Single pixel border between adjacent navboxes */
}
.navbox-inner,
.navbox-subgroup {
width: 100%;
}
.navbox-group,
.navbox-title,
.navbox-abovebelow {
padding: 0.25em 1em;
line-height: 1.5em;
text-align: center;
}
.navbox-group {
white-space: nowrap;
/* @noflip */
text-align: right;
}
.navbox,
.navbox-subgroup {
background-color: #fdfdfd;
}
.navbox-list {
line-height: 1.5em;
border-color: #fdfdfd; /* Must match background color */
}
.navbox-list-with-group {
text-align: left;
border-left-width: 2px;
border-left-style: solid;
}
/* cell spacing for navbox cells */
/* Borders above 2nd, 3rd, etc. rows */
/* TODO: figure out how to replace tr as structure;
* with div structure it should be just a matter of first-child */
tr + tr > .navbox-abovebelow,
tr + tr > .navbox-group,
tr + tr > .navbox-image,
tr + tr > .navbox-list {
border-top: 2px solid #fdfdfd; /* Must match background color */
}
.navbox-title {
background-color: #ccf; /* Level 1 color */
}
.navbox-abovebelow,
.navbox-group,
.navbox-subgroup .navbox-title {
background-color: #ddf; /* Level 2 color */
}
.navbox-subgroup .navbox-group,
.navbox-subgroup .navbox-abovebelow {
background-color: #e6e6ff; /* Level 3 color */
}
.navbox-even {
background-color: #f7f7f7;
}
.navbox-odd {
background-color: transparent;
}
/* TODO: figure out how to remove reliance on td as structure */
.navbox .hlist td dl,
.navbox .hlist td ol,
.navbox .hlist td ul,
.navbox td.hlist dl,
.navbox td.hlist ol,
.navbox td.hlist ul {
padding: 0.125em 0;
}
.navbox .navbar {
display: block;
font-size: 100%;
}
.navbox-title .navbar {
/* @noflip */
float: left;
/* @noflip */
text-align: left;
/* @noflip */
margin-right: 0.5em;
}
e80b0d7a5770e6e105dab832deb6c37a5245ebc6
Module:Side box
828
109
266
265
2023-09-30T19:34:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Side_box]]
Scribunto
text/plain
local yesno = require('Module:Yesno')
local p = {}
local function makeData(args)
local data = {}
-- Main table classes
data.classes = {}
if yesno(args.metadata) ~= false then
table.insert(data.classes, 'metadata')
end
if args.position and args.position:lower() == 'left' then
table.insert(data.classes, 'side-box-left')
else
table.insert(data.classes, 'side-box-right')
end
if args.collapsible then
table.insert(data.classes, 'mw-collapsible')
if args.collapsible == "collapsed" then
table.insert(data.classes, 'mw-collapsed')
end
data.collapsible = true
end
table.insert(data.classes, args.class)
-- Image
if args.image and args.image ~= 'none' then
data.image = args.image
end
-- we have to check to see if a downstream use has plainlist like
-- Template:Sister_project. also it's the default. wikitext is :(
if args.textclass == 'plainlist' or not args.textclass then
data.textclass = 'plainlist'
data.plainlist_templatestyles = 'Plainlist/styles.css'
else
data.textclass = args.textclass
end
-- Copy over data that does not need adjusting
local argsToCopy = {
-- aria qualities
'role',
'labelledby',
-- Styles
'style',
'textstyle',
'templatestyles',
-- Above row
'above',
'abovestyle',
-- Body row
'text',
'imageright',
-- Below row
'below',
}
for i, key in ipairs(argsToCopy) do
data[key] = args[key]
end
return data
end
local function renderSidebox(data)
-- Renders the sidebox HTML.
-- Table root
local root = mw.html.create('div')
root:attr('role', data.role)
:attr('aria-labelledby', data.labelledby)
:addClass('side-box')
for i, class in ipairs(data.classes or {}) do
root:addClass(class)
end
if data.style then
root:cssText(data.style)
end
local frame = mw.getCurrentFrame()
if data.plainlist_templatestyles then
root:wikitext(frame:extensionTag{
name = 'templatestyles', args = { src = data.plainlist_templatestyles }
})
end
-- The "above" row
if data.above then
local above = root:newline():tag('div')
above:addClass('side-box-abovebelow')
:newline()
:wikitext(data.above)
if data.textstyle then
above:cssText(data.textstyle)
end
if data.abovestyle then
above:cssText(data.abovestyle)
end
end
-- The body row
local body = root:newline():tag('div')
body:addClass('side-box-flex')
:addClass(data.collapsible and 'mw-collapsible-content')
:newline()
if data.image then
body:tag('div')
:addClass('side-box-image')
:wikitext(data.image)
end
local text = body:newline():tag('div')
text:addClass('side-box-text')
:addClass(data.textclass)
if data.textstyle then
text:cssText(data.textstyle)
end
text:wikitext(data.text)
if data.imageright then
body:newline():tag('div')
:addClass('side-box-imageright')
:wikitext(data.imageright)
end
-- The below row
if data.below then
local below = root:newline():tag('div')
below
:addClass('side-box-abovebelow')
:wikitext(data.below)
if data.textstyle then
below:cssText(data.textstyle)
end
end
root:newline()
local templatestyles = ''
if data.templatestyles then
templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = data.templatestyles }
}
end
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:Side box/styles.css' }
} .. templatestyles .. tostring(root)
end
function p._main(args)
local data = makeData(args)
return renderSidebox(data)
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
096bef4a3721857fc16eb509a4f8d75973484485
Template:About
10
110
268
267
2023-09-30T19:34:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:About]]
wikitext
text/x-wiki
{{#invoke:about|about}}<noinclude>
{{Documentation}}
</noinclude>
34b07e47d9b8220bf56dd9882945ad464b21a731
Template:Ombox
10
111
270
269
2023-09-30T19:34:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ombox]]
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Module:About
828
112
272
271
2023-09-30T19:34:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:About]]
Scribunto
text/plain
local mArguments --initialize lazily
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local p = {}
function p.about (frame)
-- A passthrough that gets args from the frame and all
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
return p._about(args)
end
function p._about (args, options)
-- Produces "about" hatnote.
-- Type checks and defaults
checkType('_about', 1, args, 'table', true)
args = args or {}
checkType('_about', 2, options, 'table', true)
options = options or {}
local defaultOptions = {
aboutForm = 'This %s is about %s. ',
PageType = require('Module:Pagetype').main(),
otherText = nil, --included for complete list
sectionString = 'section'
}
for k, v in pairs(defaultOptions) do
if options[k] == nil then options[k] = v end
end
-- Set initial "about" string
local pageType = (args.section and options.sectionString) or options.PageType
local about = ''
if args[1] then
about = string.format(options.aboutForm, pageType, args[1])
end
--Allow passing through certain options
local fsOptions = {
otherText = options.otherText,
extratext = args.text
}
local hnOptions = {
selfref = args.selfref
}
-- Set for-see list
local forSee = mHatList._forSee(args, 2, fsOptions)
-- Concatenate and return
return mHatnote._hatnote(about .. forSee, hnOptions)
end
return p
1abb25315b25b63b97d98ecae17733cbea8fcc6a
Template:Side box
10
113
274
273
2023-09-30T19:34:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Side_box]]
wikitext
text/x-wiki
{{#invoke:Side box|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f02d48c7bd2f7bc64e2982d16b3578c99137d27e
Template:Mbox
10
115
277
276
2023-09-30T19:34:26Z
Führerredux
2
1 revision imported from [[:meta:Template:Mbox]]
wikitext
text/x-wiki
<templatestyles src="Template:Mbox/styles.css" />
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
728fa77a17d75dc95885aca4d53afc6ba121c503
Template:Em
10
114
278
275
2023-09-30T19:34:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Em]]
wikitext
text/x-wiki
<em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
e2fac6fb507a0dd72c4e79d02403049c7d857c8d
Template:Mbox/styles.css
10
117
281
280
2023-09-30T19:34:27Z
Führerredux
2
1 revision imported from [[:meta:Template:Mbox/styles.css]]
sanitized-css
text/css
/** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */
/** [[Module:Message box]] */
/*
* WARNING
* Some wikis use the styles located here in their local CSS with an import
* directive. Do not remove classes from this page until those wikis have
* transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does
* not load this gadget; see Module:Message box for more details.
*/
/** NOTE: These do not include .messagebox styles, which are long-deprecated. */
/* For old WikiProject banners inside banner shells. */
.mbox-inside .standard-talk {
border: 1px solid #c0c090;
background-color: #f8eaba;
width: 100%;
margin: 2px 0;
padding: 2px;
}
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
th.mbox-text, td.mbox-text { /* The message body cell(s) */
border: none;
/* @noflip */
padding: 0.25em 0.9em; /* 0.9em left/right */
width: 100%; /* Make all mboxes the same width regardless of text length */
}
td.mbox-image { /* The left image cell */
border: none;
/* @noflip */
padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */
text-align: center;
}
td.mbox-imageright { /* The right image cell */
border: none;
/* @noflip */
padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */
text-align: center;
}
td.mbox-empty-cell { /* An empty narrow cell */
border: none;
padding: 0;
width: 1px;
}
/* Article message box styles */
table.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
table.ambox + table.ambox { /* Single border between stacked boxes. */
margin-top: -1px;
}
.ambox th.mbox-text,
.ambox td.mbox-text { /* The message body cell(s) */
padding: 0.25em 0.5em; /* 0.5em left/right */
}
.ambox td.mbox-image { /* The left image cell */
/* @noflip */
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
}
.ambox td.mbox-imageright { /* The right image cell */
/* @noflip */
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
}
table.ambox-notice {
/* @noflip */
border-left: 10px solid #36c; /* Blue */
}
table.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
table.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
table.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
table.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
table.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
/* Image message box styles */
table.imbox {
margin: 4px 10%;
border-collapse: collapse;
border: 3px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */
margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */
display: block; /* Fix for webkit to force 100% width. */
}
.mbox-inside .imbox { /* For imboxes inside other templates. */
margin: 4px;
}
table.imbox-notice {
border: 3px solid #36c; /* Blue */
}
table.imbox-speedy {
border: 3px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.imbox-delete {
border: 3px solid #b32424; /* Red */
}
table.imbox-content {
border: 3px solid #f28500; /* Orange */
}
table.imbox-style {
border: 3px solid #fc3; /* Yellow */
}
table.imbox-move {
border: 3px solid #9932cc; /* Purple */
}
table.imbox-protection {
border: 3px solid #a2a9b1; /* Gray-gold */
}
table.imbox-license {
border: 3px solid #88a; /* Dark gray */
background-color: #f7f8ff; /* Light gray */
}
table.imbox-featured {
border: 3px solid #cba135; /* Brown-gold */
}
/* Category message box styles */
table.cmbox {
margin: 3px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1;
background-color: #dfe8ff; /* Default "notice" blue */
box-sizing: border-box;
}
table.cmbox-notice {
background-color: #d8e8ff; /* Blue */
}
table.cmbox-speedy {
margin-top: 4px;
margin-bottom: 4px;
border: 4px solid #b32424; /* Red */
background-color: #ffdbdb; /* Pink */
}
table.cmbox-delete {
background-color: #ffdbdb; /* Pink */
}
table.cmbox-content {
background-color: #ffe7ce; /* Orange */
}
table.cmbox-style {
background-color: #fff9db; /* Yellow */
}
table.cmbox-move {
background-color: #e4d8ff; /* Purple */
}
table.cmbox-protection {
background-color: #efefe1; /* Gray-gold */
}
/* Other pages message box styles */
table.ombox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #a2a9b1; /* Default "notice" gray */
background-color: #f8f9fa;
box-sizing: border-box;
}
table.ombox-notice {
border: 1px solid #a2a9b1; /* Gray */
}
table.ombox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.ombox-delete {
border: 2px solid #b32424; /* Red */
}
table.ombox-content {
border: 1px solid #f28500; /* Orange */
}
table.ombox-style {
border: 1px solid #fc3; /* Yellow */
}
table.ombox-move {
border: 1px solid #9932cc; /* Purple */
}
table.ombox-protection {
border: 2px solid #a2a9b1; /* Gray-gold */
}
/* Talk page message box styles */
table.tmbox {
margin: 4px 10%;
border-collapse: collapse;
border: 1px solid #c0c090; /* Default "notice" gray-brown */
background-color: #f8eaba;
min-width: 80%;
box-sizing: border-box;
}
.tmbox.mbox-small {
min-width: 0; /* reset the min-width of tmbox above */
}
.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */
width: 100%; /* For Safari and Opera */
}
.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */
line-height: 1.5em; /* also "nested", so reset styles that are */
font-size: 100%; /* set in "mbox-small" above. */
}
table.tmbox-speedy {
border: 2px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
table.tmbox-delete {
border: 2px solid #b32424; /* Red */
}
table.tmbox-content {
border: 2px solid #f28500; /* Orange */
}
table.tmbox-style {
border: 2px solid #fc3; /* Yellow */
}
table.tmbox-move {
border: 2px solid #9932cc; /* Purple */
}
table.tmbox-protection,
table.tmbox-notice {
border: 1px solid #c0c090; /* Gray-brown */
}
/* Disambig and set index box styles */
table.dmbox {
clear: both;
margin: 0.9em 1em;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
background: transparent;
}
/* Footer and header message box styles */
table.fmbox {
clear: both;
margin: 0.2em 0;
width: 100%;
border: 1px solid #a2a9b1;
background-color: #f8f9fa; /* Default "system" gray */
box-sizing: border-box;
}
table.fmbox-system {
background-color: #f8f9fa;
}
table.fmbox-warning {
border: 1px solid #bb7070; /* Dark pink */
background-color: #ffdbdb; /* Pink */
}
table.fmbox-editnotice {
background-color: transparent;
}
/* Div based "warning" style fmbox messages. */
div.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon,
div.titleblacklist-warning,
div.locked-warning {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* These mbox-small classes must be placed after all other
ambox/tmbox/ombox etc classes. "html body.mediawiki" is so
they override "table.ambox + table.ambox" above. */
html body.mediawiki .mbox-small { /* For the "small=yes" option. */
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin: 4px 0 4px 1em;
box-sizing: border-box;
width: 238px;
font-size: 88%;
line-height: 1.25em;
}
html body.mediawiki .mbox-small-left { /* For the "small=left" option. */
/* @noflip */
margin: 4px 1em 4px 0;
box-sizing: border-box;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
/* Style for compact ambox */
/* Hide the images */
.compact-ambox table .mbox-image,
.compact-ambox table .mbox-imageright,
.compact-ambox table .mbox-empty-cell {
display: none;
}
/* Remove borders, backgrounds, padding, etc. */
.compact-ambox table.ambox {
border: none;
border-collapse: collapse;
background-color: transparent;
margin: 0 0 0 1.6em !important;
padding: 0 !important;
width: auto;
display: block;
}
body.mediawiki .compact-ambox table.mbox-small-left {
font-size: 100%;
width: auto;
margin: 0;
}
/* Style the text cell as a list item and remove its padding */
.compact-ambox table .mbox-text {
padding: 0 !important;
margin: 0 !important;
}
/* Allow for hiding text in compact form */
.compact-ambox .hide-when-compact {
display: none;
}
70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31
Template:For
10
116
282
279
2023-09-30T19:34:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:For]]
wikitext
text/x-wiki
<includeonly>{{#invoke:For|For}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
3f70c0fa7cd736071e7c6e7dcd90ff3704df26bb
Template:Resize
10
118
284
283
2023-09-30T19:34:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Resize]]
wikitext
text/x-wiki
{{safesubst<noinclude />:#if:{{{2|}}}
|<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:{{{1|}}};">{{{2|}}}</{{#ifeq:{{{div|}}}|yes|div|span}}>
|<{{#ifeq:{{{div|}}}|yes|div|span}} style="font-size:90%;">{{{1}}}</{{#ifeq:{{{div|}}}|yes|div|span}}>
}}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
</noinclude>
3df5b1480eb04f48aa1e701ca895121b4cbb4ed3
Module:For
828
119
286
285
2023-09-30T19:34:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:For]]
Scribunto
text/plain
local mArguments --initialize lazily
local mHatlist = require('Module:Hatnote list')
local mHatnote = require('Module:Hatnote')
local yesNo = require('Module:Yesno')
local p = {}
--Implements {{For}} from the frame
--uses capitalized "For" to avoid collision with Lua reserved word "for"
function p.For (frame)
mArguments = require('Module:Arguments')
return p._For(mArguments.getArgs(frame))
end
--Implements {{For}} but takes a manual arguments table
function p._For (args)
local use = args[1]
if (not use) then
return mHatnote.makeWikitextError(
'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.',
'Template:For#Errors',
args.category
)
end
local pages = {}
function two (a, b) return a, b, 1 end --lets us run ipairs from 2
for k, v in two(ipairs(args)) do table.insert(pages, v) end
local title = mw.title.getCurrentTitle()
local skipCat = title.isTalkPage or title.namespace == 2 --don't categorise talk pages and userspace
local oddCat = skipCat and '' or '[[Category:Hatnote templates using unusual parameters]]'
local category = yesNo(args.category)
return mHatnote._hatnote(
mHatlist.forSeeTableToString({{use = use, pages = pages}}),
{selfref = args.selfref}
) .. (
(use == 'other uses') and ((category == true) or (category == nil)) and
oddCat or ''
)
end
return p
2faf1bd8c657f3425af829cbde9733a936d8d4f4
Template:Hatnote
10
120
288
287
2023-09-30T19:34:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hatnote]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
4a1d1028d07c9056022807a96051e1c82cf2a1c7
Template:Crossref
10
121
290
289
2023-09-30T19:34:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Crossref]]
wikitext
text/x-wiki
#REDIRECT [[Template:Crossreference]]
{{Rcat shell|
{{R from template shortcut}}
}}
dc4192593ccb8eaa34c0440c4aa712442a06c329
Template:Tl
10
8
293
12
2023-09-30T19:34:31Z
Führerredux
2
1 revision imported from [[:meta:Template:Tl]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Redirect category shell|
{{R from move}}
}}
d6593bb3b4a866249f55d0f34b047a71fe1f1529
Template:Crossreference
10
122
295
291
2023-09-30T19:34:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Crossreference]]
wikitext
text/x-wiki
<templatestyles src="Crossreference/styles.css" />{{Hatnote inline
|1={{{1|{{{text|{{{content|<noinclude>sample content</noinclude>}}}}}}}}}
|extraclasses=crossreference {{{class|{{{extraclasses|}}}}}}
|selfref={{#if:{{{selfref|{{{printworthy|{{{unprintworthy|}}}}}}}}}||yes}}
|inline={{{inline|true}}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
b8ac8a6a83bb08330ba0b9f31a7fcd8567217d0e
Template:Mbox/doc
10
123
297
294
2023-09-30T19:34:31Z
Führerredux
2
1 revision imported from [[:meta:Template:Mbox/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This is the {{tl|mbox}} or '''multi namespace message box''' meta-template.
This meta-template is used to build message box templates that are used on several types of pages and thus need to change style depending on what page they are used on. Based on page type detected it uses one of
{{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}}.
Note that this template should only be used for message boxes that really need to adapt their style. Most message boxes do not need this and should use one of {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}}, {{tl|cmbox}} or {{tl|ombox}} directly. Using those templates directly means that your template will look the same on its template page and at any other place you show it, which makes it clear on what kind of pages it is supposed to be used. It also gives you access to any extra features those templates offer, and it saves some server load.
=== Usage ===
This template takes the same parameters as {{tl|ambox}} and {{tl|imbox}} etc. See full documentation there.
Some of the boxes this template calls only handles images of max 52px width, thus that limitation also applies to this template or you will get ugly padding problems.
=== Demospace ===
This template optionally takes the "demospace" parameter as described at {{tl|namespace detect}}. That parameter is only for testing and demonstration purposes. If you want to lock your message box to one style then instead use one of the other mboxes directly.
Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was updated to understand both names well before that, thus it still works fine. For backwards compatibility it still understands "demospace = image" which means the same thing as "demospace = file". But using "demospace = image" is now deprecated.
Namespace "Book:" was added to the English Wikipedia on 28 December 2009. This template uses the {{tl|ombox}} style on "Book:" pages or when "demospace=book". And it uses the {{tl|tmbox}} style on "Book talk:" pages or when "demospace=talk". Note that "demospace=talk" means any talk space, there is no "demospace=book talk".
=== Parameters ===
List of all parameters:
<pre>
{{mbox
| demospace = {{{demospace|}}} / main / talk / file / category / other
| type = speedy / delete / content / style / notice / move / protection
| image = none / [[Image:Some image.svg|40px]]
| imageright = [[Image:Some image.svg|40px]]
| style = CSS values
| textstyle = CSS values
| text = The message body text.
| small = {{{small|}}} / left / yes
| smallimage = none / [[Image:Some image.svg|30px]]
| smallimageright = none / [[Image:Some image.svg|30px]]
| smalltext = A shorter message body text.
}}
</pre>
Note: The small parameters only have effect when the template is on an article, talk page or an "other" page. For documentation on the small parameters see {{tl|ambox}}, {{tl|tmbox}} and {{tl|ombox}}. Using the small parameters when they are not valid has no effect, but also does no harm.
==== Types ====
; speedy
{{mbox|type=speedy}}
; delete
{{mbox|type=delete}}
; content
{{mbox|type=content}}
; style
{{mbox|type=style}}
; notice
{{mbox|type=notice}}
; move
{{mbox|type=move}}
; protection
{{mbox|type=protection}}
278a7c9c87f273913737e59c5dd76ef6fb086ba8
Template:Crossreference/styles.css
10
124
298
296
2023-09-30T19:34:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Crossreference/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
/* This snippet just undoes the default "padding-left: 1.6em;" imposed by
div.hatnote, when Template:Crossreference is used in block (div) mode.
Ignore the dumb CSS editor's "Element (div.crossreference) is overqualified"
warning. It is wrong. We do not want to apply any CSS intended for block
mode when it is not in block mode. While it's unlikely our "padding-left: 0;"
does anything wrong in inline (span) mode, we can't guarantee it forever. */
div.crossreference {
padding-left: 0;
}
ae665603577c5dbafbdf190ec9e29f2ed1f7cd77
Template:Hatnote inline
10
125
300
299
2023-09-30T19:34:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hatnote_inline]]
wikitext
text/x-wiki
{{Hatnote inline/invoke
|1={{{1|{{{text|{{{content}}}}}}}}}
|extraclasses={{{class|{{{extraclasses|}}}}}}
|selfref={{#if:{{{printworthy|{{{selfref|}}}}}}||yes}}
|category={{{category|}}}
|inline={{{inline|true}}}
}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
257f3004ea74817011cab7b3bdfd0c87531d7e35
Template:Hatnote inline/invoke
10
126
302
301
2023-09-30T19:34:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hatnote_inline/invoke]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Hatnote inline|hatnote}}</includeonly><noinclude>
{{Documentation|content=This is an includeonly part of [[Template:Hatnote inline]].}}</noinclude>
bcceba0d964fb499427b81aef69b70f463221df3
Module:Hatnote inline
828
127
304
303
2023-09-30T19:34:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Hatnote_inline]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- Module:Hatnote-inline --
-- --
-- This module produces hatnote-style links, and links to related articles, --
-- but inside a <span>, instead of the <div> used by Module:Hatnote. It --
-- implements the {{hatnote-inline}} meta-template. --
--------------------------------------------------------------------------------
local mHatnote = require('Module:Hatnote')
local mArguments = require('Module:Arguments')
local yesno = require('Module:Yesno')
local p = {}
function p.hatnoteInline (frame)
local args = mArguments.getArgs(frame)
local hatnote = mHatnote.hatnote(frame)
if args.inline == nil or yesno(args.inline, true) then
local subs = {
['<div'] = '<span',
['</div>$'] = '</span>'
}
for k, v in pairs(subs) do hatnote = string.gsub(hatnote, k, v, 1) end
end
return hatnote
end
p.hatnote = p.hatnoteInline --alias
return p
b5000cd7910b7eae23206235b64880a775e4209b
Template:Section link
10
128
306
305
2023-09-30T19:34:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Section_link]]
wikitext
text/x-wiki
{{#invoke:Section link|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
8d047e5845f8a9b74a4655b5dd79ca7595a8f88b
Module:Section link
828
129
308
307
2023-09-30T19:34:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Section_link]]
Scribunto
text/plain
-- This module implements {{section link}}.
require('strict');
local checkType = require('libraryUtil').checkType
local p = {}
local function makeSectionLink(page, section, display)
display = display or section
page = page or ''
-- MediaWiki doesn't allow these in `page`, so only need to do for `section`
if type(section) == 'string' then
section = string.gsub(section, "{", "{")
section = string.gsub(section, "}", "}")
end
return string.format('[[%s#%s|%s]]', page, section, display)
end
local function normalizeTitle(title)
title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '')
title = mw.ustring.gsub(title, "%b<>", "")
return mw.title.new(title).prefixedText
end
function p._main(page, sections, options, title)
-- Validate input.
checkType('_main', 1, page, 'string', true)
checkType('_main', 3, options, 'table', true)
if sections == nil then
sections = {}
elseif type(sections) == 'string' then
sections = {sections}
elseif type(sections) ~= 'table' then
error(string.format(
"type error in argument #2 to '_main' " ..
"(string, table or nil expected, got %s)",
type(sections)
), 2)
end
options = options or {}
title = title or mw.title.getCurrentTitle()
-- Deal with blank page names elegantly
if page and not page:find('%S') then
page = nil
options.nopage = true
end
-- Make the link(s).
local isShowingPage = not options.nopage
if #sections <= 1 then
local linkPage = page or ''
local section = sections[1] or 'Notes'
local display = '§ ' .. section
if isShowingPage then
page = page or title.prefixedText
if options.display and options.display ~= '' then
if normalizeTitle(options.display) == normalizeTitle(page) then
display = options.display .. ' ' .. display
else
error(string.format(
'Display title "%s" was ignored since it is ' ..
"not equivalent to the page's actual title",
options.display
), 0)
end
else
display = page .. ' ' .. display
end
end
return makeSectionLink(linkPage, section, display)
else
-- Multiple sections. First, make a list of the links to display.
local ret = {}
for i, section in ipairs(sections) do
ret[i] = makeSectionLink(page, section)
end
-- Assemble the list of links into a string with mw.text.listToText.
-- We use the default separator for mw.text.listToText, but a custom
-- conjunction. There is also a special case conjunction if we only
-- have two links.
local conjunction
if #sections == 2 then
conjunction = '​ and '
else
conjunction = ', and '
end
ret = mw.text.listToText(ret, nil, conjunction)
-- Add the intro text.
local intro = '§§ '
if isShowingPage then
intro = (page or title.prefixedText) .. ' ' .. intro
end
ret = intro .. ret
return ret
end
end
function p.main(frame)
local yesno = require('Module:Yesno')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Section link',
valueFunc = function (key, value)
value = value:match('^%s*(.-)%s*$') -- Trim whitespace
-- Allow blank first parameters, as the wikitext template does this.
if value ~= '' or key == 1 then
return value
end
end
})
for k, v in pairs(args) do -- replace underscores in the positional parameter values
if 'number' == type(k) then
if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes
args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters
else
args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores
end
end
end
-- Sort the arguments.
local page
local sections, options = {}, {}
for k, v in pairs(args) do
if k == 1 then
-- Doing this in the loop because of a bug in [[Module:Arguments]]
-- when using pairs with deleted arguments.
page = mw.text.decode(v, true)
elseif type(k) == 'number' then
sections[k] = v
else
options[k] = v
end
end
options.nopage = yesno (options.nopage); -- make boolean
-- Extract section from page, if present
if page then
local p, s = page:match('^(.-)#(.*)$')
if p then page, sections[1] = p, s end
end
-- Compress the sections array.
local function compressArray(t)
local nums, ret = {}, {}
for num in pairs(t) do
nums[#nums + 1] = num
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[i] = t[num]
end
return ret
end
sections = compressArray(sections)
return p._main(page, sections, options)
end
return p
5cc61d43dc601ca43e9472500fc5cd09ca7cea44
Template:No redirect
10
130
310
309
2023-09-30T19:34:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:No_redirect]]
wikitext
text/x-wiki
{{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}}
| <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span>
| {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}}
}}<noinclude>
{{documentation}}
</noinclude>
1760035b1bed54ee08b810208ed3551b812dfe13
Template:Helpbox
10
131
312
311
2023-09-30T19:34:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Helpbox]]
wikitext
text/x-wiki
<includeonly>{{Sidebar
| name = {{#if:{{{templatename|}}} |{{{templatename}}} |{{{name|{{PAGENAME}}}}} }}
| templatestyles = Template:Helpbox/styles.css
| child templatestyles = {{{child templatestyles|}}}
| float = {{{float|}}}
| class = help-box noprint {{{class|{{{bodyclass|}}}}}}
| style = {{{1|}}}
| titlestyle = {{{titlestyle|}}}
| title = {{{title|{{{name|}}}}}}
| headingstyle = {{{headingstyle|}}}
| heading1 = {{{group1|}}}
| content1 = {{{list1|}}}
| heading2 = {{{group2|}}}
| content2 = {{{list2|}}}
| heading3 = {{{group3|}}}
| content3 = {{{list3|}}}
| heading4 = {{{group4|}}}
| content4 = {{{list4|}}}
| heading5 = {{{group5|}}}
| content5 = {{{list5|}}}
| heading6 = {{{group6|}}}
| content6 = {{{list6|}}}
| heading7 = {{{group7|}}}
| content7 = {{{list7|}}}
| heading8 = {{{group8|}}}
| content8 = {{{list8|}}}
| heading9 = {{{group9|}}}
| content9 = {{{list9|}}}
| heading10 = {{{group10|}}}
| content10 = {{{list10|}}}
| heading11 = {{{group11|}}}
| content11 = {{{list11|}}}
| heading12 = {{{group12|}}}
| content12 = {{{list12|}}}
| heading13 = {{{group13|}}}
| content13 = {{{list13|}}}
| heading14 = {{{group14|}}}
| content14 = {{{list14|}}}
| heading15 = {{{group15|}}}
| content15 = {{{list15|}}}
| heading16 = {{{group16|}}}
| content16 = {{{list16|}}}
| heading17 = {{{group17|}}}
| content17 = {{{list17|}}}
| heading18 = {{{group18|}}}
| content18 = {{{list18|}}}
| heading19 = {{{group19|}}}
| content19 = {{{list19|}}}
| heading20 = {{{group20|}}}
| content20 = {{{list20|}}}
| navbar = {{#if:{{{templatename|}}} |
| {{#if:{{{title|}}} |{{#if:{{{name|}}} | |none}}
| none
}}
}}
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
5509d0ec3a4e28588e980d97b41e6d36f114d139
Template:Helpbox/styles.css
10
132
314
313
2023-09-30T19:34:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Helpbox/styles.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.help-box {
background: #f5faff;
line-height: 1.6em;
}
.help-box .sidebar-title {
background: #cee0f2;
font-size: 130%;
padding-left: 0.4em;
padding-right: 0.4em; /* gap before first heading/content */
margin-bottom: 6px;
}
.help-box .sidebar-heading {
background: #cee0f2;
padding: 0.1em 0.7em 0.15em;
}
.help-box .sidebar-content,
/* conservatively target subgroups since we're working with a metatemplate */
.help-box .sidebar-content-with-subgroup {
padding-top: 0.15em;
}
@media all and (min-width: 720px) {
.help-box {
width: auto;
max-width: 22em;
}
}
e9436864978a21f55d6aa0b3e1fc6670c322c65d
Module:Disambiguation
828
133
316
315
2023-09-30T19:34:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Disambiguation]]
Scribunto
text/plain
local p = {}
local mRedirect = require('Module:Redirect')
local disambiguationTemplates = mw.loadData('Module:Disambiguation/templates')
local function capitalize(s)
-- This function only works on ASCII strings. If your wiki has
-- disambiguation templates that use Unicode strings, use the commented-out
-- line instead. Enwiki uses ASCII string manipulation only here to improve
-- performance.
return s:sub(1, 1):upper() .. s:sub(2, -1)
-- return mw.ustring.upper(mw.ustring.sub(1, 1)) .. mw.ustring.sub(2, -1)
end
local function isDisambiguationTemplate(template)
return disambiguationTemplates[capitalize(template)] or false
end
p.isDisambiguation = function(content)
-- false if there is no content
if content == nil then
return false
end
-- redirects are not disambiguation pages
if mRedirect.getTargetFromText(content) ~= nil then
return false
end
-- check for disambiguation templates in the content
local templateNames = {}
for template in string.gmatch(content, "{{%s*([^|}]-)%s*[|}]") do
if isDisambiguationTemplate(template) then
return true
end
end
-- check for magic word
if string.find(content, "__DISAMBIG__", 1, true) ~= nil then
return true
end
return false
end
p._isDisambiguationPage = function(page)
-- Look "(disambiguation)" in the title
if string.find(page, "(disambiguation)",0,true) ~= nil then
return true;
end
-- Look for disamiguation template in page content
local title = mw.title.new(page)
if not title then return false end
local content = title:getContent()
return p.isDisambiguation(content)
end
-- Entry points for templates
p.isDisambiguationPage = function(frame)
local title = frame.args[1]
return p._isDisambiguationPage(title) and "yes" or ""
end
return p
fedda4d3046080cab39fcd65ab9a9318912a8d57
Template:Raise
10
134
318
317
2023-09-30T19:34:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Raise]]
wikitext
text/x-wiki
<span style="position:relative; bottom:{{#if:{{{2|}}} |{{{1}}} |0.6em}};">{{{2|{{{1}}}}}}</span><noinclude>{{Documentation}}</noinclude>
da747eda753555e094baeeb84eeca1be020ee399
Template:Shortcut
10
135
320
319
2023-09-30T19:34:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Shortcut]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
2f2ccc402cde40b1ae056628bffa0852ee01653c
Module:Shortcut
828
136
322
321
2023-09-30T19:34:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Shortcut]]
Scribunto
text/plain
-- This module implements {{shortcut}}.
-- Set constants
local CONFIG_MODULE = 'Module:Shortcut/config'
-- Load required modules
local checkType = require('libraryUtil').checkType
local yesno = require('Module:Yesno')
local p = {}
local function message(msg, ...)
return mw.message.newRawMessage(msg, ...):plain()
end
local function makeCategoryLink(cat)
return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
end
function p._main(shortcuts, options, frame, cfg)
checkType('_main', 1, shortcuts, 'table')
checkType('_main', 2, options, 'table', true)
options = options or {}
frame = frame or mw.getCurrentFrame()
cfg = cfg or mw.loadData(CONFIG_MODULE)
local templateMode = options.template and yesno(options.template)
local redirectMode = options.redirect and yesno(options.redirect)
local isCategorized = not options.category or yesno(options.category) ~= false
-- Validate shortcuts
for i, shortcut in ipairs(shortcuts) do
if type(shortcut) ~= 'string' or #shortcut < 1 then
error(message(cfg['invalid-shortcut-error'], i), 2)
end
end
-- Make the list items. These are the shortcuts plus any extra lines such
-- as options.msg.
local listItems = {}
for i, shortcut in ipairs(shortcuts) do
local templatePath, prefix
if templateMode then
-- Namespace detection
local titleObj = mw.title.new(shortcut, 10)
if titleObj.namespace == 10 then
templatePath = titleObj.fullText
else
templatePath = shortcut
end
prefix = options['pre' .. i] or options.pre or ''
end
if options.target and yesno(options.target) then
listItems[i] = templateMode
and string.format("{{%s[[%s|%s]]}}", prefix, templatePath, shortcut)
or string.format("[[%s]]", shortcut)
else
listItems[i] = frame:expandTemplate{
title = 'No redirect',
args = templateMode and {templatePath, shortcut} or {shortcut, shortcut}
}
if templateMode then
listItems[i] = string.format("{{%s%s}}", prefix, listItems[i])
end
end
end
table.insert(listItems, options.msg)
-- Return an error if we have nothing to display
if #listItems < 1 then
local msg = cfg['no-content-error']
msg = string.format('<strong class="error">%s</strong>', msg)
if isCategorized and cfg['no-content-error-category'] then
msg = msg .. makeCategoryLink(cfg['no-content-error-category'])
end
return msg
end
local root = mw.html.create()
root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Shortcut/styles.css'} })
-- Anchors
local anchorDiv = root
:tag('div')
:addClass('module-shortcutanchordiv')
for i, shortcut in ipairs(shortcuts) do
local anchor = mw.uri.anchorEncode(shortcut)
anchorDiv:tag('span'):attr('id', anchor)
end
-- Shortcut heading
local shortcutHeading
do
local nShortcuts = #shortcuts
if nShortcuts > 0 then
local headingMsg = options['shortcut-heading'] or
redirectMode and cfg['redirect-heading'] or
cfg['shortcut-heading']
shortcutHeading = message(headingMsg, nShortcuts)
shortcutHeading = frame:preprocess(shortcutHeading)
end
end
-- Shortcut box
local shortcutList = root
:tag('div')
:addClass('module-shortcutboxplain noprint')
:attr('role', 'note')
if options.float and options.float:lower() == 'left' then
shortcutList:addClass('module-shortcutboxleft')
end
if options.clear and options.clear ~= '' then
shortcutList:css('clear', options.clear)
end
if shortcutHeading then
shortcutList
:tag('div')
:addClass('module-shortcutlist')
:wikitext(shortcutHeading)
end
local ubl = require('Module:List').unbulleted(listItems)
shortcutList:wikitext(ubl)
return tostring(root)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
-- Separate shortcuts from options
local shortcuts, options = {}, {}
for k, v in pairs(args) do
if type(k) == 'number' then
shortcuts[k] = v
else
options[k] = v
end
end
-- Compress the shortcut array, which may contain nils.
local function compressArray(t)
local nums, ret = {}, {}
for k in pairs(t) do
nums[#nums + 1] = k
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[i] = t[num]
end
return ret
end
shortcuts = compressArray(shortcuts)
return p._main(shortcuts, options, frame)
end
return p
03fd46a265e549852a9ed3d3a9249b247d84cb4f
Module:Shortcut/config
828
137
324
323
2023-09-30T19:34:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Shortcut/config]]
Scribunto
text/plain
-- This module holds configuration data for [[Module:Shortcut]].
return {
-- The heading at the top of the shortcut box. It accepts the following parameter:
-- $1 - the total number of shortcuts. (required)
['shortcut-heading'] = '[[Wikipedia:Shortcut|{{PLURAL:$1|Shortcut|Shortcuts}}]]',
-- The heading when |redirect=yes is given. It accepts the following parameter:
-- $1 - the total number of shortcuts. (required)
['redirect-heading'] = '[[Wikipedia:Redirect|{{PLURAL:$1|Redirect|Redirects}}]]',
-- The error message to display when a shortcut is invalid (is not a string, or
-- is the blank string). It accepts the following parameter:
-- $1 - the number of the shortcut in the argument list. (required)
['invalid-shortcut-error'] = 'shortcut #$1 was invalid (shortcuts must be ' ..
'strings of at least one character in length)',
-- The error message to display when no shortcuts or other displayable content
-- were specified. (required)
['no-content-error'] = 'Error: no shortcuts were specified and the ' ..
mw.text.nowiki('|msg=') ..
' parameter was not set.',
-- A category to add when the no-content-error message is displayed. (optional)
['no-content-error-category'] = 'Shortcut templates with missing parameters',
}
f9d1d94844d5953753eb19e30a3ce389eda3d319
Template:Sectionlink
10
138
326
325
2023-09-30T19:34:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sectionlink]]
wikitext
text/x-wiki
#REDIRECT[[Template:Section link]]
b1506aa42c4652e1f14405ccedd78d7061f91540
Template:Define
10
139
328
327
2023-09-30T19:34:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Define]]
wikitext
text/x-wiki
#REDIRECT [[Template:Abbr]]
{{Rcat shell|
{{R related}}
{{R tsh}}
}}
4ab7bdcf7ba10c7ef8ee30a9bf6600863997473d
Template:Tp
10
140
330
329
2023-09-30T19:34:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tp]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Rcat shell|{{R from template shortcut}}}}
59847a20c2c64a767694d7612bfc5d1130c96b9a
Template:Userbox
10
141
332
331
2023-09-30T19:34:43Z
Führerredux
2
1 revision imported from [[:meta:Template:Userbox]]
wikitext
text/x-wiki
{{#invoke:userbox|userbox}}<noinclude>
{{documentation}} [[Category:Userboxes]]</noinclude>
cef9fe752d7f8791d4317858904bde773db441a6
Module:Userbox
828
142
334
333
2023-09-30T19:34:43Z
Führerredux
2
1 revision imported from [[:meta:Module:Userbox]]
Scribunto
text/plain
-- This module implements {{userbox}}.
local categoryHandler = require('Module:Category handler').main
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function checkNum(val, default)
-- Checks whether a value is a number greater than or equal to zero. If so,
-- returns it as a number. If not, returns a default value.
val = tonumber(val)
if val and val >= 0 then
return val
else
return default
end
end
local function addSuffix(num, suffix)
-- Turns a number into a string and adds a suffix.
if num then
return tostring(num) .. suffix
else
return nil
end
end
local function checkNumAndAddSuffix(num, default, suffix)
-- Checks a value with checkNum and adds a suffix.
num = checkNum(num, default)
return addSuffix(num, suffix)
end
local function makeCat(cat, sort)
-- Makes a category link.
if sort then
return mw.ustring.format('[[Category:%s|%s]]', cat, sort)
else
return mw.ustring.format('[[Category:%s]]', cat)
end
end
--------------------------------------------------------------------------------
-- Argument processing
--------------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local origArgs = require('Module:Arguments').getArgs(frame)
local args = {}
for k, v in pairs(origArgs) do
args[k] = v
end
return p.main(funcName, args)
end
end
p.userbox = makeInvokeFunc('_userbox')
p['userbox-2'] = makeInvokeFunc('_userbox-2')
p['userbox-r'] = makeInvokeFunc('_userbox-r')
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.main(funcName, args)
local userboxData = p[funcName](args)
local userbox = p.render(userboxData)
local cats = p.categories(args)
return userbox .. (cats or '')
end
function p._userbox(args)
-- Does argument processing for {{userbox}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
data.infoClass = args['info-class']
-- Get id values.
local id = args.logo or args[3] or args.id
data.id = id
data.showId = id and true or false
data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.idTextAlign = args['id-a'] or 'center'
data.idFontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor
data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0'
data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.idOtherParams = args['logo-other-param'] or args['id-op']
data.idClass = args['id-class']
return data
end
p['_userbox-2'] = function (args)
-- Does argument processing for {{userbox-2}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args[9] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args[1] or args['border-c'] or args['id1-c'] or '#999999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args[2] or args['info-c'] or '#eeeeee'
-- Get info values.
data.info = args[4] or args.info or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt')
data.infoColor = args[8] or args['info-fc'] or 'black'
data.infoPadding = args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-lh'] or '1.25em'
data.infoOtherParams = args['info-op']
-- Get id values.
data.showId = true
data.id = args.logo or args[3] or args.id1 or 'id1'
data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px')
data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px')
data.idBackgroundColor = args[1] or args['id1-c'] or '#dddddd'
data.idTextAlign = 'center'
data.idFontSize = checkNumAndAddSuffix(args['id1-s'], 14, 'pt')
data.idLineHeight = args['id1-lh'] or '1.25em'
data.idColor = args['id1-fc'] or data.infoColor
data.idPadding = args['id1-p'] or '0 1px 0 0'
data.idOtherParams = args['id1-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[5] or args.id2 or 'id2'
data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px')
data.id2Height = data.idHeight
data.id2BackgroundColor = args[7] or args['id2-c'] or args[1] or '#dddddd'
data.id2TextAlign = 'center'
data.id2FontSize = checkNumAndAddSuffix(args['id2-s'], 14, 'pt')
data.id2LineHeight = args['id2-lh'] or '1.25em'
data.id2Color = args['id2-fc'] or data.infoColor
data.id2Padding = args['id2-p'] or '0 0 0 1px'
data.id2OtherParams = args['id2-op']
return data
end
p['_userbox-r'] = function (args)
-- Does argument processing for {{userbox-r}}.
local data = {}
-- Get div tag values.
data.float = args.float or 'left'
local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width.
data.borderWidth = addSuffix(borderWidthNum, 'px')
data.borderColor = args['border-color'] or args[1] or args['border-c'] or args['id-c'] or '#999'
data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag.
data.bodyClass = args.bodyclass
-- Get table tag values.
data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee'
-- Get id values.
data.showId = false -- We only show id2 in userbox-r.
-- Get info values.
data.info = args.info or args[4] or "<code>{{{info}}}</code>"
data.infoTextAlign = args['info-align'] or args['info-a'] or 'left'
data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt')
data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px'
data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em'
data.infoColor = args['info-color'] or args['info-fc'] or 'black'
data.infoOtherParams = args['info-other-param'] or args['info-op']
-- Get id2 values.
data.showId2 = true
data.id2 = args.logo or args[3] or args.id or 'id'
data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px')
data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px')
data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd'
data.id2TextAlign = args['id-a'] or 'center'
data.id2FontSize = checkNumAndAddSuffix(args['logo-size'] or args[5] or args['id-s'], 14, 'pt')
data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor
data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px'
data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em'
data.id2OtherParams = args['logo-other-param'] or args['id-op']
return data
end
function p.render(data)
-- Renders the userbox html using the content of the data table.
-- Render the div tag html.
local root = mw.html.create('div')
root
:css('float', data.float)
:css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or ''))
:css('margin', '1px')
:css('width', data.width)
:addClass('wikipediauserbox')
:addClass(data.bodyClass)
-- Render the table tag html.
local tableroot = root:tag('table')
tableroot
:css('border-collapse', 'collapse')
:css('width', data.width)
:css('margin-bottom', '0')
:css('margin-top', '0')
:css('background', data.backgroundColor)
-- Render the id html.
local tablerow = tableroot:tag('tr')
if data.showId then
tablerow:tag('th')
:css('border', '0')
:css('width', data.idWidth)
:css('height', data.idHeight)
:css('background', data.idBackgroundColor)
:css('text-align', data.idTextAlign)
:css('font-size', data.idFontSize)
:css('color', data.idColor)
:css('padding', data.idPadding)
:css('line-height', data.idLineHeight)
:css('vertical-align', 'middle')
:cssText(data.idOtherParams)
:addClass(data.idClass)
:wikitext(data.id)
end
-- Render the info html.
tablerow:tag('td')
:css('border', '0')
:css('text-align', data.infoTextAlign)
:css('font-size', data.infoFontSize)
:css('padding', data.infoPadding)
:css('height', data.infoHeight)
:css('line-height', data.infoLineHeight)
:css('color', data.infoColor)
:css('vertical-align', 'middle')
:cssText(data.infoOtherParams)
:addClass(data.infoClass)
:wikitext(data.info)
-- Render the second id html.
if data.showId2 then
tablerow:tag('th')
:css('border', '0')
:css('width', data.id2Width)
:css('height', data.id2Height)
:css('background', data.id2BackgroundColor)
:css('text-align', data.id2TextAlign)
:css('font-size', data.id2FontSize)
:css('color', data.id2Color)
:css('padding', data.id2Padding)
:css('line-height', data.id2LineHeight)
:css('vertical-align', 'middle')
:cssText(data.id2OtherParams)
:wikitext(data.id2)
end
local title = mw.title.getCurrentTitle()
if (title.namespace == 2) and not title.text:match("/") then
return tostring(root) -- regular user page
elseif title.namespace == 14 then
return tostring(root) -- category
elseif title.isTalkPage then
return tostring(root) -- talk page
end
local legible = true
local contrast = require('Module:Color contrast')._ratio
local function has_text(wikitext)
local function get_alt(text)
return text:match("|alt=([^|]*)") or ""
end
wikitext = wikitext:gsub("]]", "|]]")
wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", get_alt)
wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", get_alt)
return mw.text.trim(wikitext) ~= ""
end
if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then
legible = false
end
if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < 4.5 then
if has_text(data.id or "") then
legible = false
end
end
if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < 4.5 then
if has_text(data.id2 or "") then
legible = false
end
end
if not legible then
root:wikitext('[[Category:Potentially illegible userboxes]]')
end
return tostring(root)
end
function p.categories(args, page)
-- Gets categories from [[Module:Category handler]].
-- The page parameter makes the function act as though the module was being called from that page.
-- It is included for testing purposes.
local cats = {}
cats[#cats + 1] = args.usercategory
cats[#cats + 1] = args.usercategory2
cats[#cats + 1] = args.usercategory3
if #cats > 0 then
-- Get the title object
local title
if page then
title = mw.title.new(page)
else
title = mw.title.getCurrentTitle()
end
-- Build category handler arguments.
local chargs = {}
chargs.page = page
chargs.nocat = args.nocat
chargs.main = '[[Category:Pages with misplaced templates]]'
if args.notcatsubpages then
chargs.subpage = 'no'
end
-- User namespace.
local user = ''
for i, cat in ipairs(cats) do
user = user .. makeCat(cat)
end
chargs.user = user
-- Template namespace.
local basepage = title.baseText
local template = ''
for i, cat in ipairs(cats) do
template = template .. makeCat(cat, ' ' .. basepage)
end
chargs.template = template
return categoryHandler(chargs)
else
return nil
end
end
return p
1a6d5c3f5a72eb494c764796412b42184f714b7b
Module:Category handler
828
143
336
335
2023-09-30T19:34:44Z
Führerredux
2
1 revision imported from [[:meta:Module:Category_handler]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
b74dd63857b24904ac452429b11213f18647471f
Template:Offer help
10
144
338
337
2023-09-30T19:34:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Offer_help]]
wikitext
text/x-wiki
{{Hatnote|{{smaller|'''Find this page confusing? {{edit|Special:MyTalk|Just use this link to ask for help on your talk page|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}}; a volunteer will visit you there shortly!'''}}}}
<noinclude>
[[Category:Hatnote templates]]
[[Category:Wikipedia help templates]]
</noinclude>
081a2d2e563a98d43f291dc22865004902a44ce0
Template:Wikipedia help pages
10
145
340
339
2023-09-30T19:34:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikipedia_help_pages]]
wikitext
text/x-wiki
<noinclude>{{Notice |style=margin-bottom:1.5em; |1=<span style="font-size:large;color:purple;">Please do not post your requests or questions on this page. If you have questions about using Wikipedia, please ask at the '''[[Wikipedia:Help desk|Help desk]]''' or the '''[[Wikipedia:Teahouse|Teahouse]]'''. For questions about subjects and topics, please use the '''[[Wikipedia:Reference desk|Reference Desk]]'''. Volunteers at these locations will respond to your questions as soon as possible.</span>}}</noinclude><!--
-->{{#invoke:navbox|navbox
| name = Wikipedia help pages
| state ={{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}}
| bodyclass = hlist
| basestyle = text-align:center;
| title = [[Help:Directory|Wikipedia help pages]]
| above =
*'''Visit the ''[[Wikipedia:Teahouse|Teahouse]]'' or the ''[[Wikipedia:Help desk|Help desk]]'' for an interactive {{abbr|Q & A|questions and answers}} forum.'''
----
* '''[[Wikipedia:FAQ|FAQs]]''' '''{{Define|(?)|This is a list of frequently asked questions about using and contributing to Wikipedia.}}'''
* '''[[Wikipedia:Reference desk|Reference desks]]''' '''{{Define|(?)|Works like a library reference desk. Ask a question here and Wikipedia volunteers will try to answer it.}}'''
* '''[[Wikipedia:Noticeboards|Noticeboards]]''' '''{{Define|(?)|Pages where editors can ask questions and request assistance from people who are familiar with the policies and guidelines covered by each individual board.}}'''
* '''[[Help:Cheatsheet|Cheatsheet]]''' '''{{Define|(?)| For a list of the most commonly used Wiki markup and templates.}}'''
*''' [[Wikipedia:Directories and indexes|Directories]]''' '''{{Define|(?)|For a list of Wikipedia's directories and indexes.}}'''
| group1 = [[Wikipedia:About|About Wikipedia]] {{Define|(?)|Wikipedia's governess and customs}}
| list1 =
* [[Wikipedia:Administration|Administration]]
**[[Wikipedia:Purpose|Purpose]]
** [[Wikipedia:Five pillars|Principles]]
* [[Wikipedia:Policies and guidelines|Policies and guidelines]]
* [[Wikipedia:What Wikipedia is not|What Wikipedia is not]]
* [[Wikipedia:General disclaimer|Disclaimer]] ([[Wikipedia:Advice for parents|parental advice]])
* [[Wikipedia:Request directory|Making requests]]
* [[Wikipedia:Who writes Wikipedia?|Who writes Wikipedia?]]
| group2 = [[Wikipedia:Reader's index to Wikipedia|Help for readers]] {{Define|(?)|Concerns and questions readers may have about Wikipedia}}
| list2 =
*[[Wikipedia:FAQ/Readers|FAQ]]
*[[Wikipedia:Wikipedia book creator status|Books]]
* [[Help:Copyright|Copyright]]
* [[Help:Glossary|Glossary]]
* [[Help:Mobile access|Mobile access]]
* [[Help:Navigation|Navigation]]
* [[Help:Other languages|Other languages]]
* [[Help:Searching|Searching]]
* [[Help:Student help|Students]]
* [[Help:Viewing media|Viewing media]]
| group3 = [[Wikipedia:Contributing to Wikipedia|Contributing<br/>to Wikipedia]] {{Define|(?)|Overviews and resources needed to comprehend, comment on, and edit}}
| list3 =
* [[Wikipedia:Guidance for younger editors|Advice for young editors]]
* [[Wikipedia:Avoiding common mistakes|Avoiding common mistakes]]
* [[Wikipedia:Etiquette|Etiquette]]
* [[Wikipedia:Simplified Manual of Style|Simplified Manual of Style]]
* [[Wikipedia:Simplified ruleset|Simplified rule-set]]
** [[Wikipedia:Ignore all rules|"Ignore all rules"]]
** [[Wikipedia:The rules are principles|"The rules are principles"]]
*[[Wikipedia:Styletips|Style-tips]]
* [[Wikipedia:Tip of the day|Tip of the day]]
* [[Help:Your first article|Your first article]] ([[Wikipedia:Article wizard|article wizard]])
| group4 = [[Help:Getting started|Getting started]] {{Define|(?)|Introductions and tutorials}}
| list4 =
* [[Wikipedia:Why create an account?|Why create an account?]]
*[[Help:Introduction|Introductions by topic]]
* [[Wikipedia:Graphics tutorials|Graphics tutorials]]
** [[Help:Pictures|Picture tutorial]]
** [[Wikipedia:IRC/Tutorial|IRC {{smaller|(live chat)}} tutorial]]
* [[Wikipedia:VisualEditor/User guide|VisualEditor user guide]]
| group5 = [[Wikipedia:Dos and don'ts|Dos and don'ts]] {{Define|(?)|Wikipedia policies, guidelines, and formatting standards in bullet points}}
| list5 =
* [[Wikipedia:Accessibility dos and don'ts|Accessibility]]
* [[Wikipedia:Biography dos and don'ts|Biographies]]
* [[Wikipedia:Biographies of living persons dos and don'ts|Biographies (living)]]
* [[Wikipedia:Categorization dos and don'ts|Categorization]]
* [[Wikipedia:Consensus dos and don'ts|Consensus]]
* [[Wikipedia:Talk dos and don'ts|Discussions]]
* [[Wikipedia:Disambiguation dos and don'ts|Disambiguation]]
* [[Wikipedia:Image dos and don'ts|Images]]
* [[Wikipedia:Lead dos and don'ts|Leads]]
* [[Wikipedia:Linking dos and don'ts|Links]]
* [[Wikipedia:List dos and don'ts|Lists]]
* [[Wikipedia:References dos and don'ts|References]]
* [[Wikipedia:Table dos and don'ts|Tables]]
* [[Wikipedia:Article title dos and don'ts|Titles (of articles)]]
| group7 = [[:Category:Wikipedia how-to|How-to pages]] and<br/>[[:Category:Wikipedia information pages|information pages]] {{Define|(?)|Topic specific informative and instructional pages}}
| list7 =
* [[Wikipedia:Guide to appealing blocks|Appealing blocks]]
* [[Wikipedia:Guide to deletion|Article deletion]]
* [[Help:Category|Categories]]
* [[Help:Citations quick reference|Citations/references]]
** [[Help:Referencing for beginners|Referencing for beginners]]
** [[Help:Citation Style 1|Citation Style 1]]
** [[Help:Cite errors|Cite errors]]
** [[Help:References and page numbers|References and page numbers]]
* [[Help:Convert|Convert]]
* [[Help:Diff|Diff]]
* [[Help:Editing|Editing]]
** [[Help:Minor edit|Minor edit]]
** [[Help:Edit toolbar|toolbar]]
** [[Help:Edit conflict|edit conflict]]
* [[Help:Find sources|Find sources]]
* [[Help:Files|Files]]
* [[Help:Footnotes|Footnotes]]
* [[Wikipedia:Guide to image deletion|Image deletion]]
* [[Help:Infobox|Infoboxes]]
* [[Help:Link|Linking]] ([[Help:Link color|link color]])
* [[Help:Logging in|Logging in]]
* [[Wikipedia:Merging|Merging]]
* [[Help:Page name|Page name]]
** [[Help:How to move a page|Renaming pages]]
* [[Help:Redirect|Redirect]]
* [[Help:Reset password|Passwords]]
** [[Help:Email confirmation|Email confirmation]]
* [[Help:Reverting|Reverting]]
** [[Help:Simple guide to vandalism cleanup|Simple vandalism cleanup]]
* [[Help:Talk pages|Talk pages]] ([[Help:Archiving a talk page|archiving]]
*[[Help:Archiving (plain and simple)|simple archiving]])
* [[Help:User contributions|User contributions]]
* [[Help:WP search protocol|WP search protocol]]
| group8 = [[Wiki markup|Coding]] {{Define|(?)|Wikitext information consists of the syntax used to format a page}}
| list8 =
* [[Help:Wikitext|Wiki markup]]
* [[Help:Barchart|Barchart]]s
* [[Help:Calculation|Calculation]]s
* [[Help:Special characters|Characters]]
* [[Help:Columns|Column]]s
* [[Wikipedia:Manual of Style/Hidden text|Hidden text]]
* [[Help:HTML in wikitext|HTML]]
* [[Help:List|Lists]]
* [[Help:Magic words|Magic words]]
* [[Help:Musical symbols|Music symbols]]
* [[Help:Section|Sections]]
* [[Help:Sound file markup|Sounds]]
* [[Help:Table|Tables]]
* [[Help:Template|Template]]s
* [[Wikipedia:Transclusion|Transclusion]]
* [[Help:URL|URL]]
* [[Help:Visual file markup|Visual files]]
| group9 = [[Wikipedia:Directories and indexes|Directories]] {{Define|(?)|Wikipedia's directories and indexes}}
| list9 =
* [[Wikipedia:Wikipedia abbreviations|Abbreviations]]
*[[Wikipedia:Contents|Contents]] <small>(Encyclopedia proper)</small>
* [[Wikipedia:Department directory|Departments]]
* [[Wikipedia:Editor's index to Wikipedia|Editor's index]]
* [[Wikipedia:Essay directory|Essays]]
* [[Wikipedia:FAQ/Index|FAQs]]
* [[Wikipedia:Glossary|Glossary]]
* [[Wikipedia:List of guidelines|Guidelines]]
* [[Wikipedia:Manual of Style/Contents|Manual of Style ]]
* [[Wikipedia:List of policies|Policies]]
*[[Wikipedia:Maintenance|Tasks]]
* [[Wikipedia:Tips|Tips]]
* [[Wikipedia:Tools|Tools]]
| below =''' [[Help: Wikipedia: The Missing Manual|Missing Manual]]'''
----
{{edit|Special:MyTalk|'''Ask for help on your talk page'''|section=new|preload=Help:Contents/helpmepreload|preloadtitle=Help me!}} '''{{Define|(?)|
If you need help, you can use this link to ask a question on your talk page; a volunteer will visit you there shortly!}}'''
}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
</noinclude>
b936e44c69277aadf07ff0d3d227e49775c7d720
Template:Wikipedia how-to
10
146
342
341
2023-09-30T19:34:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikipedia_how-to]]
wikitext
text/x-wiki
{{ombox
| type = notice
| style = {{#if:{{{style|}}} |margin:0 auto;width:80%;{{{style}}} }}
| image = [[File:Twemoji 1f527.svg|30x30px]]
| imageright = {{#if:{{{shortcut|{{{shortcut1|{{{sc1|{{{1<includeonly>|</includeonly>}}}}}}}}}}}} |{{Shortcut|{{{shortcut|{{{shortcut1|{{{sc1|{{{1}}}}}}}}}}}}|{{{shortcut2|{{{sc2|{{{2|}}}}}}}}}||{{{shortcut3|{{{sc3|{{{3|}}}}}}}}}|{{{shortcut4|{{{sc4|{{{4|}}}}}}}}}||{{{shortcut5|{{{sc5|{{{5|}}}}}}}}}<noinclude>|category=no</noinclude>}} }}
| text = <div style="padding-top: 6px; padding-bottom: 5px;">'''This help page is a [[Wikipedia:Project namespace#Wikipedia how-to and information pages|how-to guide]].'''<br><div style="font-size: 90%;">It details processes or procedures of <!--
-->{{#if:{{{page|{{{pages|{{{interprets|}}}}}}}}}
| <!--doesn't handle multiple items--> {{#ifexist:{{{page|{{{pages|{{{interprets}}}}}}}}} |[[{{{page|{{{pages|{{{interprets}}}}}}}}}]] |{{{page|{{{pages|{{{interprets}}}}}}}}}}}
| some aspect(s) of Wikipedia's norms and practices
}}. It is not one of [[Wikipedia:Policies and guidelines|Wikipedia's policies or guidelines]], and may reflect varying levels of [[Wikipedia:Consensus|consensus]] and [[Wikipedia:Consensus#Achieving consensus|vetting]].</div></div>
}}{{#if: {{{nocat|{{{demo|}}}}}}||<includeonly>{{Namespace detect
| wikipedia = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}}
| help = {{{category|[[Category:Wikipedia how-to|{{#if:{{{sort-by|}}}|{{{sort-by}}}|{{PAGENAME}}}}]]}}}
| user = [[Category:User essays]]{{{category|}}}
}}
</includeonly>}}<noinclude>
{{Documentation|content=
{{Information page/doc |howto=y}}
}}
</noinclude>
f95ec6e4a0105cd44573344bb11ca768408c3862
Template:Wikipedia glossary
10
147
344
343
2023-09-30T19:34:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikipedia_glossary]]
wikitext
text/x-wiki
{{Side box
| imageright = [[File:Wiki letter w.svg]]
| text = This page is referenced in the {{#if:{{{1|}}}
|Wikipedia Glossary, under [[Wikipedia:Glossary#{{{1}}}|{{{1}}}]]
|{{nowrap|[[Wikipedia:Glossary|Wikipedia Glossary]]}}
}}.
| class = plainlinks
}}<includeonly>{{#switch:{{NAMESPACE}}
|Help|Wikipedia={{#if:{{{nocat|{{{category|}}}}}}||[[Category:Wikipedia glossary items]]}}
|User={{#ifeq:{{YesNo-No|{{{category}}}}}|yes|[[Category:Wikipedia glossary items]]}}
|#default=
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
4287695cf50f15b3de9f5acbe926e13d83cb1ef4
Module:Color contrast
828
148
347
345
2023-09-30T19:34:49Z
Führerredux
2
1 revision imported from [[:meta:Module:Color_contrast]]
Scribunto
text/plain
--
-- This module implements
-- {{Color contrast ratio}}
-- {{Greater color contrast ratio}}
-- {{ColorToLum}}
-- {{RGBColorToLum}}
--
local p = {}
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
local function sRGB (v)
if (v <= 0.03928) then
v = v / 12.92
else
v = math.pow((v+0.055)/1.055, 2.4)
end
return v
end
local function rgbdec2lum(R, G, B)
if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
else
return ''
end
end
local function hsl2lum(h, s, l)
if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
local c = (1 - math.abs(2*l - 1))*s
local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
local m = l - c/2
local r, g, b = m, m, m
if( 0 <= h and h < 60 ) then
r = r + c
g = g + x
elseif( 60 <= h and h < 120 ) then
r = r + x
g = g + c
elseif( 120 <= h and h < 180 ) then
g = g + c
b = b + x
elseif( 180 <= h and h < 240 ) then
g = g + x
b = b + c
elseif( 240 <= h and h < 300 ) then
r = r + x
b = b + c
elseif( 300 <= h and h < 360 ) then
r = r + c
b = b + x
end
return rgbdec2lum(255*r, 255*g, 255*b)
else
return ''
end
end
local function color2lum(c)
if (c == nil) then
return ''
end
-- html '#' entity
c = c:gsub("#", "#")
-- whitespace
c = c:match( '^%s*(.-)[%s;]*$' )
-- unstrip nowiki strip markers
c = mw.text.unstripNoWiki(c)
-- lowercase
c = c:lower()
-- first try to look it up
local L = HTMLcolor[c]
if (L ~= nil) then
return L
end
-- convert from hsl
if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)
end
-- convert from rgb
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$')
return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))
end
-- convert from rgb percent
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)
end
-- remove leading # (if there is one) and whitespace
c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$')
-- split into rgb
local cs = mw.text.split(c or '', '')
if( #cs == 6 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2])
local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4])
local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6])
return rgbdec2lum(R, G, B)
elseif ( #cs == 3 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1])
local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2])
local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3])
return rgbdec2lum(R, G, B)
end
-- failure, return blank
return ''
end
-- This exports the function for use in other modules.
-- The colour is passed as a string.
function p._lum(color)
return color2lum(color)
end
function p._greatercontrast(args)
local bias = tonumber(args['bias'] or '0') or 0
local css = (args['css'] and args['css'] ~= '') and true or false
local v1 = color2lum(args[1] or '')
local c2 = args[2] or '#FFFFFF'
local v2 = color2lum(c2)
local c3 = args[3] or '#000000'
local v3 = color2lum(c3)
local ratio1 = -1;
local ratio2 = -1;
if (type(v1) == 'number' and type(v2) == 'number') then
ratio1 = (v2 + 0.05)/(v1 + 0.05)
ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1
end
if (type(v1) == 'number' and type(v3) == 'number') then
ratio2 = (v3 + 0.05)/(v1 + 0.05)
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
end
if css then
local c1 = args[1] or ''
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c1 = '#' .. c1
end
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c2 = '#' .. c2
end
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c3 = '#' .. c3
end
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
end
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
end
function p._ratio(args)
local v1 = color2lum(args[1])
local v2 = color2lum(args[2])
if (type(v1) == 'number' and type(v2) == 'number') then
-- v1 should be the brighter of the two.
if v2 > v1 then
v1, v2 = v2, v1
end
return (v1 + 0.05)/(v2 + 0.05)
else
return args['error'] or '?'
end
end
function p._styleratio(args)
local style = (args[1] or ''):lower()
local bg, fg = 'white', 'black'
local lum_bg, lum_fg = 1, 0
if args[2] then
local lum = color2lum(args[2])
if lum ~= '' then bg, lum_bg = args[2], lum end
end
if args[3] then
local lum = color2lum(args[3])
if lum ~= '' then fg, lum_fg = args[3], lum end
end
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '#', '#'), ';')
for k = 1,#slist do
local s = slist[k]
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
k = k or ''
v = v or ''
if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_bg = v, lum end
elseif (k:match('^[%s]*(color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_fg = v, lum end
end
end
if lum_bg > lum_fg then
return (lum_bg + 0.05)/(lum_fg + 0.05)
else
return (lum_fg + 0.05)/(lum_bg + 0.05)
end
end
--[[
Use {{#invoke:Color contrast|somecolor}} directly or
{{#invoke:Color contrast}} from a wrapper template.
Parameters:
-- |1= — required; A color to check.
--]]
function p.lum(frame)
local color = frame.args[1] or frame:getParent().args[1]
return p._lum(color)
end
function p.ratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._ratio(args)
end
function p.styleratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._styleratio(args)
end
function p.greatercontrast(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._greatercontrast(args)
end
return p
1e399769117591366a63f62996c9a407077cc711
Template:Help navigation
10
149
348
346
2023-09-30T19:34:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Help_navigation]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wikipedia help pages]]
{{R from template shortcut}}
{{R from move}}
c8dc8546e49bfbe586503ce5abeeee1590843b2d
Module:Color contrast/colors
828
150
350
349
2023-09-30T19:34:49Z
Führerredux
2
1 revision imported from [[:meta:Module:Color_contrast/colors]]
Scribunto
text/plain
return {
aliceblue = 0.92880068253475,
antiquewhite = 0.84646951707754,
aqua = 0.7874,
aquamarine = 0.8078549208338,
azure = 0.97265264954166,
beige = 0.8988459998705,
bisque = 0.80732327372979,
black = 0,
blanchedalmond = 0.85084439608156,
blue = 0.0722,
blueviolet = 0.12622014321946,
brown = 0.098224287876511,
burlywood = 0.51559844533893,
cadetblue = 0.29424681085422,
chartreuse = 0.76032025902623,
chocolate = 0.23898526114557,
coral = 0.37017930872924,
cornflowerblue = 0.30318641994179,
cornsilk = 0.93562110372965,
crimson = 0.16042199953026,
cyan = 0.7874,
darkblue = 0.018640801980939,
darkcyan = 0.20329317839046,
darkgoldenrod = 0.27264703559993,
darkgray = 0.39675523072563,
darkgreen = 0.091143429047575,
darkgrey = 0.39675523072563,
darkkhaki = 0.45747326349994,
darkmagenta = 0.07353047651207,
darkolivegreen = 0.12651920884889,
darkorange = 0.40016167026524,
darkorchid = 0.13413142174857,
darkred = 0.054889674531132,
darksalmon = 0.40541471563381,
darkseagreen = 0.43789249325969,
darkslateblue = 0.065792846227988,
darkslategray = 0.067608151928044,
darkslategrey = 0.067608151928044,
darkturquoise = 0.4874606277449,
darkviolet = 0.10999048339343,
deeppink = 0.23866895828276,
deepskyblue = 0.44481603395575,
dimgray = 0.14126329114027,
dimgrey = 0.14126329114027,
dodgerblue = 0.27442536991456,
firebrick = 0.10724525535015,
floralwhite = 0.95922484825004,
forestgreen = 0.18920812076002,
fuchsia = 0.2848,
gainsboro = 0.71569350050648,
ghostwhite = 0.94311261886323,
gold = 0.69860877428159,
goldenrod = 0.41919977809569,
gray = 0.2158605001139,
green = 0.15438342968146,
greenyellow = 0.80609472611453,
grey = 0.2158605001139,
honeydew = 0.96336535554782,
hotpink = 0.34658438169715,
indianred = 0.21406134963884,
indigo = 0.03107561486337,
ivory = 0.99071270600615,
khaki = 0.77012343394121,
lavender = 0.80318750514521,
lavenderblush = 0.90172748631046,
lawngreen = 0.73905893124963,
lemonchiffon = 0.94038992245622,
lightblue = 0.63709141280807,
lightcoral = 0.35522120733135,
lightcyan = 0.94587293494829,
lightgoldenrodyellow = 0.93348351018297,
lightgray = 0.65140563741982,
lightgreen = 0.69091979956865,
lightgrey = 0.65140563741982,
lightpink = 0.58566152734898,
lightsalmon = 0.4780675225206,
lightseagreen = 0.35050145117042,
lightskyblue = 0.56195637618331,
lightslategray = 0.23830165007287,
lightslategrey = 0.23830165007287,
lightsteelblue = 0.53983888284666,
lightyellow = 0.98161818392882,
lime = 0.7152,
limegreen = 0.44571042246098,
linen = 0.88357340984379,
magenta = 0.2848,
maroon = 0.045891942324215,
mediumaquamarine = 0.49389703310801,
mediumblue = 0.044077780212328,
mediumorchid = 0.21639251153773,
mediumpurple = 0.22905858091648,
mediumseagreen = 0.34393112338131,
mediumslateblue = 0.20284629471622,
mediumspringgreen = 0.70704308194184,
mediumturquoise = 0.5133827926448,
mediumvioletred = 0.14371899849357,
midnightblue = 0.02071786635086,
mintcream = 0.97834604947588,
mistyrose = 0.82183047859185,
moccasin = 0.80083000991567,
navajowhite = 0.76519682342785,
navy = 0.015585128108224,
oldlace = 0.91900633405549,
olive = 0.20027537200568,
olivedrab = 0.22593150951929,
orange = 0.4817026703631,
orangered = 0.25516243753416,
orchid = 0.31348806761439,
palegoldenrod = 0.78792647887614,
palegreen = 0.77936759006353,
paleturquoise = 0.76436077921714,
palevioletred = 0.28754994117889,
papayawhip = 0.87797100199835,
peachpuff = 0.74905589878251,
peru = 0.30113074877936,
pink = 0.63271070702466,
plum = 0.45734221587969,
powderblue = 0.68254586500605,
purple = 0.061477070432439,
rebeccapurple = 0.07492341159447,
red = 0.2126,
rosybrown = 0.32319457649407,
royalblue = 0.16663210743188,
saddlebrown = 0.097922285020521,
salmon = 0.36977241527596,
sandybrown = 0.46628543696283,
seagreen = 0.19734199706275,
seashell = 0.92737862206922,
sienna = 0.13697631337098,
silver = 0.52711512570581,
skyblue = 0.55291668518184,
slateblue = 0.14784278062136,
slategray = 0.20896704076536,
slategrey = 0.20896704076536,
snow = 0.96533341834849,
springgreen = 0.73052306068529,
steelblue = 0.20562642207625,
tan = 0.48237604163921,
teal = 0.16996855778968,
thistle = 0.56818401093733,
tomato = 0.30638612719415,
turquoise = 0.5895536427578,
violet = 0.40315452986676,
wheat = 0.74909702820482,
white = 1,
whitesmoke = 0.91309865179342,
yellow = 0.9278,
yellowgreen = 0.50762957208707,
}
6ae47fdb24de4eed5ec26d203faf5341a388987b
Template:Wikipedia how to
10
151
352
351
2023-09-30T19:34:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikipedia_how_to]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wikipedia how-to]]
{{redirect category shell|{{R from move}}}}
a4dd8999d6f78f4bbc7d6222d0e3036a37cc6074
Module:Side box/styles.css
828
152
354
353
2023-09-30T19:34:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Side_box/styles.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.side-box {
margin: 4px 0;
box-sizing: border-box;
border: 1px solid #aaa;
font-size: 88%;
line-height: 1.25em;
background-color: #f9f9f9;
display: flow-root;
}
.side-box-abovebelow,
.side-box-text {
padding: 0.25em 0.9em;
}
.side-box-image {
/* @noflip */
padding: 2px 0 2px 0.9em;
text-align: center;
}
.side-box-imageright {
/* @noflip */
padding: 2px 0.9em 2px 0;
text-align: center;
}
/* roughly the skin's sidebar + size of side box */
@media (min-width: 500px) {
.side-box-flex {
display: flex;
align-items: center;
}
.side-box-text {
flex: 1;
}
}
@media (min-width: 720px) {
.side-box {
width: 238px;
}
.side-box-right {
/* @noflip */
clear: right;
/* @noflip */
float: right;
/* @noflip */
margin-left: 1em;
}
/* derives from mbox classes, which do not float left in mbox-small-left
* so far as I can tell, that was a deliberate decision, since only .ambox
* supports mbox-left
*/
.side-box-left {
/* @noflip */
margin-right: 1em;
}
}
5be55dbc33007e62deac23036c134ed064dbe603
Template:WikiProject Infoboxes sidebar
10
153
356
355
2023-09-30T19:34:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:WikiProject_Infoboxes_sidebar]]
wikitext
text/x-wiki
<includeonly>{{Helpbox
| name = WikiProject Infoboxes sidebar
| class = plainlist collapsible {{#ifeq:{{{1|}}}|collapsed |collapsed}}
| float = {{{float|right}}}
| titlestyle = font-size:100%;padding:0.5em;
| title = {{resize|130%|[[Wikipedia:WikiProject Infoboxes|WikiProject Infoboxes]]}}<!--(resized here otherwise [show/hide] link also resized)-->
| headingstyle = font-size:105%;
| list1 = {{raise|0.25em|[[Wikipedia:List of infoboxes|List of infoboxes]]}}
| group2 = Style and help
| list2 =
*[[Wikipedia:Manual of Style/Infoboxes|Manual of Style/Infoboxes]]
*[[Help:Infobox]]
| group3 = Cleanup
| list3 =
{{Sidebar |child=yes |navbar=off
| heading1 = Talk page
| content1 =
*{{tl|Cleanup infobox}}
*{{tl|New infobox}}
*{{tl|Infobox requested}}
| heading2 = Article
| content2 =
*{{tl|Missing-taxobox}}
}}
| group4 = Building
| list4 =
*{{tl|Infobox}}
*[[Wikipedia:List of infoboxes/Proposed|List of infoboxes/Proposed]]
| group5 = To do
| list5 =
* [[:Category:Wikipedia articles with an infobox request|Add infobox]]
* [[:Category:Pages needing an infobox conversion|Change template used]]
* [[:Category:Wikipedia infobox cleanup|Cleanup contents]]
* [[:Category:Templates suitable for conversion to use Template:Infobox|Convert to use <nowiki>{{</nowiki>Infobox}}]]
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
d2db05e6c97d88a0b4925b16966067694c2e84b8
Template:Plainlist/styles.css
10
154
358
357
2023-09-30T19:34:52Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Plainlist/styles.css]]
sanitized-css
text/css
/* {{pp-template|small=yes}} */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
padding: 0; /* Reset Minerva default */
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
51706efa229ff8794c0d94f260a208e7c5e6ec30
Module:Shortcut/styles.css
828
155
360
359
2023-09-30T19:34:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Shortcut/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.module-shortcutboxplain {
float: right;
margin: 0 0 0 1em;
border: 1px solid #aaa;
background: #fff;
padding: 0.3em 0.6em 0.2em 0.6em;
text-align: center;
font-size: 85%;
}
.module-shortcutboxleft {
float: left;
margin: 0 1em 0 0;
}
.module-shortcutlist {
display: inline-block;
border-bottom: 1px solid #aaa;
margin-bottom: 0.2em;
}
.module-shortcutboxplain ul {
font-weight: bold;
}
.module-shortcutanchordiv {
position: relative;
top: -3em;
}
li .module-shortcutanchordiv {
float: right; /* IE/Edge in list items */
}
.mbox-imageright .module-shortcutboxplain {
padding: 0.4em 1em 0.4em 1em;
line-height: 1.3;
margin: 0;
}
ccf3877e4b14726147d3b1d8a297fbecacdb2cf8
Module:Disambiguation/templates
828
156
362
361
2023-09-30T19:34:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Disambiguation/templates]]
Scribunto
text/plain
-- This page contains a table of all disambiguation templates and their
-- redirects. Templates names are capitalized, and the Template: prefix is
-- removed. Templates are grouped with the main template first, followed by
-- its redirects.
return {
['Disambiguation'] = true,
['Begriffsklärung'] = true,
['DAB'] = true,
['Dab'] = true,
['Dabpage'] = true,
['Dbig'] = true,
['Dis'] = true,
['Disam'] = true,
['Disamb'] = true,
['Disambig misspelling'] = true,
['Disambig'] = true,
['Disambig-plants'] = true,
['Disambiguation page'] = true,
['Meta disambig'] = true,
['Project disambiguation'] = true,
['Shortcut disambig'] = true,
['WP disambig'] = true,
['WP-disambig'] = true,
['Wikipedia disambiguation'] = true,
['Airport disambiguation'] = true,
['Airport disambig'] = true,
['Biology disambiguation'] = true,
['Call sign disambiguation'] = true,
['Callsigndis'] = true,
['Caselaw disambiguation'] = true,
['Case law disambiguation'] = true,
['Chinese title disambiguation'] = true,
['CJKVdab'] = true,
['Chinese title disambig'] = true,
['Disambig-Chinese-char-title'] = true,
['Disambiguation cleanup'] = true,
['Cleanup disambig'] = true,
['Cleanup disambiguation'] = true,
['CleanupDisambig'] = true,
['Dab cleanup'] = true,
['Dab-cleanup'] = true,
['Dabclean'] = true,
['Disamb-cleanup'] = true,
['Disambcleanup'] = true,
['Disambig cleanup'] = true,
['Disambig-CU'] = true,
['Disambig-cleanup'] = true,
['Disambig-cu'] = true,
['Disambigcleanup'] = true,
['Disambiguate-cleanup'] = true,
['Disambiguation-cleanup'] = true,
['Geodis-cleanup'] = true,
['Genus disambiguation'] = true,
['Genus disambig'] = true,
['Hospital disambiguation'] = true,
['Hospitaldis'] = true,
['Human name disambiguation'] = true,
['Bio-dab'] = true,
['HNDIS'] = true,
['HnDis'] = true,
['Hndab'] = true,
['Hndis'] = true,
['Hndisambig'] = true,
['Human name dab'] = true,
['Personal name disambiguation'] = true,
['Personal name'] = true,
['Human name disambiguation cleanup'] = true,
['Hndis-cleanup'] = true,
['Personal name disambiguation cleanup'] = true,
['Letter–number combination disambiguation'] = true,
['LNCD'] = true,
['Letter-Number Combination Disambiguation'] = true,
['Letter-Number combination disambiguation'] = true,
['Letter-NumberCombDisambig'] = true,
['Letter-NumberCombdisambig'] = true,
['Letter-NumberCombinationDisambiguation'] = true,
['Letter-number combination disambiguation'] = true,
['Mathematical disambiguation'] = true,
['Math dab'] = true,
['Math disambiguation'] = true,
['Mathdab'] = true,
['Mathematics disambiguation'] = true,
['Maths disambiguation'] = true,
['Military unit disambiguation'] = true,
['Mil-unit-dis'] = true,
['Mil-unit-disambig'] = true,
['Music disambiguation'] = true,
['Music disambig'] = true,
['Number disambiguation'] = true,
['Numberdis'] = true,
['Numdab'] = true,
['Numdisambig'] = true,
['Opus number disambiguation'] = true,
['Phonetics disambiguation'] = true,
['Place name disambiguation'] = true,
['DisambigG'] = true,
['DisambigGeo'] = true,
['Disambiggeo'] = true,
['Geo-dis'] = true,
['Geodab'] = true,
['Geodis'] = true,
['Geodisambig'] = true,
['Geographic disambiguation'] = true,
['Portal disambiguation'] = true,
['Portal disambig'] = true,
['Road disambiguation'] = true,
['Roaddis'] = true,
['School disambiguation'] = true,
['School disambig'] = true,
['Schooldab'] = true,
['Schooldis'] = true,
['Species Latin name abbreviation disambiguation'] = true,
['Species Latin name disambiguation'] = true,
['LatinNameDisambig'] = true,
['SpeciesLatinNameDisambig'] = true,
['Station disambiguation'] = true,
['Station dab'] = true,
['Synagogue disambiguation'] = true,
['Taxonomic authority disambiguation'] = true,
['Taxonomic authorities disambiguation'] = true,
['Taxonomy disambiguation'] = true,
['Species disambiguation'] = true,
['Template disambiguation'] = true,
['Template ambiguous'] = true,
['Template dab'] = true,
['Template disambig'] = true,
['WoO number disambiguation'] = true,
}
7af08129f9ba1d6305051d78ca21d8cd58a1bea9
Template:Mbox
10
115
366
277
2023-09-30T19:36:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Mbox]]
wikitext
text/x-wiki
<templatestyles src="Template:Mbox/styles.css" />
{{#invoke:Message box|mbox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
728fa77a17d75dc95885aca4d53afc6ba121c503
Template:Flatlist
10
157
368
367
2023-09-30T19:36:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flatlist]]
wikitext
text/x-wiki
<templatestyles src="Hlist/styles.css"/><div class="hlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
cf60aa4aef920d48fa394e786f72fe5f6dcd3169
Template:Infobox officeholder/office
10
158
370
369
2023-09-30T19:36:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_officeholder/office]]
wikitext
text/x-wiki
{{#if:{{{speaker|}}}{{{state_legislature|}}}{{{state_assembly|}}}{{{speaker_office|}}}{{{state_delegate|}}}{{{state_house|}}}{{{prior_term|}}}{{{nominee|}}}{{{candidate|}}}{{{termstart|}}}{{{election_date|}}}{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}{{{jr/sr|}}}{{{succeeding|}}}{{{assuming|}}}{{{state|}}}{{{jr/sr and state|}}}{{{state_senate|}}}{{{district|}}}{{{ambassador_from|}}}{{{minister_from|}}}{{{order|}}}{{{office|}}}{{{title|}}}{{{country|}}}{{{constituency_AM|}}}{{{constituency_MP|}}}{{{parliament|}}}{{{assembly|}}}{{{constituency_|}}}{{{riding|}}}{{{term|}}}{{{termend|}}}{{{alongside|}}}{{{co-leader|}}}
|{{#invoke:infobox|infoboxTemplate|child=yes|decat=yes
| headerstyle = background:{{{color|lavender}}};line-height:normal;padding:0.2em;
| datastyle = border-bottom:none
<!--------Speaker of the House--------->
| header1 = {{#if:{{{speaker|}}}|
{{{speaker}}} {{#if:{{{state_legislature|}}}
|[[Speaker of the {{{state_legislature}}} Legislature]]
|{{#if:{{{state_assembly|}}}
|[[Speaker of the {{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]
|{{#if:{{{speaker_office|}}}|{{{speaker_office}}}|[[Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|United States}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}|Speaker of the {{#if:{{{state_delegate|}}} |{{{state_delegate}}}|{{#if:{{{state_house|}}} |{{{state_house}}}|U.S.}}}} House of {{#if:{{{state_delegate|}}}|Delegates|Representatives}}]]}}
}}
}}{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}}
<!--------Office--------->
| header2 = {{#if:{{{nominee|}}}{{{candidate|}}}|
{{#if:{{{party_election|}}}{{{party|}}}
|{{#if:{{{party_election|}}}|{{{party_election}}}|{{{party}}}}} {{#if:{{{nominee|}}}|nominee for<br>{{{nominee}}}|candidate for<br>{{{candidate}}}}}
|{{#if:{{{nominee|}}}|Nominee for<br>{{{nominee}}}|Candidate for<br>{{{candidate}}}}}
}} }}
| data3 = {{#if:{{{nominee|}}}{{{candidate|}}}|
{{#if:{{{termstart|}}}{{{election_date|}}} | <span class="nowrap">'''Election date'''</span><br />{{#if:{{{election_date|}}}|{{{election_date}}}|{{{termstart}}}}}
}} }}
| header4 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{jr/sr|}}}|[[United States Senate|<!--Changed code to eliminate "Junior/Senior" distinction for U.S. Senators per [[Template talk:Infobox Officeholder/Archive 9#Senior/Junior U.S. Senators]]{{{jr/sr}}}-->United States Senator{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}}]]<br />from {{{state}}}
}} }}
| header5 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{{jr/sr and state|}}}
}}
| header6 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{state_senate|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_senate}}} Senate]]</span><br />from the {{{district}}} district{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}} }}
| header7 = {{#if:{{{majority_leader|}}}{{{minority_floor_leader|}}}{{{minority_leader|}}}{{{majority_floor_leader|}}}||
{{#if:{{{state_legislature|}}}|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_legislature}}} Legislature]]</span><br />from the {{{district}}} district
}} }}
| header8 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}||
{{#if:{{{order|}}}
|{{{order}}}{{#if:{{{office|}}} | [[{{{office}}}]]}}{{#if:{{{state|}}} | [[{{{state}}}]]}}{{#if:{{{title|}}} | {{{title}}}}}
|{{{office|}}}
}} }}
| header9 = {{#if:{{{ambassador_from|}}}{{{minister_from|}}}||
{{#if:{{{order|}}}
||{{{title|}}}
}} }}
<!--------Ambassador--------->
| header10 = {{#if:{{both|{{{ambassador_from|}}}{{{minister_from|}}}|{{{country|}}}}}
|{{#if:{{{order|}}}|{{{order}}}}} {{#if:{{{minister_from|}}}
|[[{{{minister_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{minister_from}}} Minister to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]]
|[[{{{ambassador_from}}} Ambassador to {{CountryPrefixThe|{{{country}}}}}|{{{ambassador_from}}} Ambassador to <span class="nowrap">{{CountryPrefixThe|{{{country}}}}}</span>]]
}} [[Category:Pages using infobox officeholder with ambassador from or minister from]]
}}
<!--------MP--------->
| header11 = {{#if:{{{constituency_AM|}}}{{{constituency_MP|}}}|
{{#switch:{{{parliament|}}}
|Australian = Member of the <span style="display: inline-block;">[[Australian House of Representatives|Australian Parliament]]</span>
|European = [[Member of the European Parliament]]
|Scottish = [[Member of the Scottish Parliament]]
|Sri Lanka|Sri Lankan = [[Member of Parliament (Sri Lanka)|Member of Parliament]]
|United Kingdom|UK = [[Member of Parliament (United Kingdom)|Member of Parliament]]
|#default = {{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{#ifeq:{{Title disambig text|{{{constituency_MP|}}}}}|UK Parliament constituency
|{{{constituency_MP|}}}
|{{#if:{{#switch:{{{parliament|}}} |United Kingdom|UK| = {{Linkless exists|{{delink|{{{constituency_MP|}}}}} (UK Parliament constituency)}} }}
|{{#if:{{Constlk|{{delink|{{{constituency_MP|}}}}}}}
|{{Constlk|{{delink|{{{constituency_MP|}}}}}}}
|{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}}
|{{{constituency_{{#if:{{{constituency_AM|}}}|AM|MP}}}}}}}
}}{{#if:{{{prior_term|}}}|
<div style="font-weight:normal;">{{{prior_term}}}</div>}}
}}
| header12 = {{#if:{{{riding|}}}|{{#if:{{{constituency_AM|}}}|{{#if:{{{assembly|}}}|Member of the <span style="display: inline-block;">[[{{{assembly}}} Assembly]]</span>|Assembly Member}}|
{{#switch:{{{parliament|}}}
|Canadian = [[Member of Parliament (Canada)|Member of Parliament]]
|#default = Member of {{#if:{{{parliament|}}}|the <span style="display: inline-block;">[[{{{parliament}}} Parliament]]</span>|Parliament}}}}}}<br />for {{{riding}}}
}}
<!--------Majority Leader (State Senate)--------->
| header13 = {{#if:{{{majority_leader|}}}|{{{majority_leader}}} {{#if:{{{state_senate|}}}|[[Majority Leader of the {{{state_senate}}} Senate]]|[[United States Senate Majority Leader]]}}
}}
<!--------Majority Floor Leader (State Senate)--------->
| header14 = {{#if:{{{majority_floor_leader|}}}|{{{majority_floor_leader}}} [[Majority Floor Leader of the {{{state_senate}}} Senate]]
}}
<!--------Minority Leader (State Senate)--------->
| header15 = {{#if:{{{minority_leader|}}}|{{{minority_leader}}} [[Minority Leader of the {{{state_senate}}} Senate]]
}}
<!--------Minority Floor Leader (State Senate)--------->
| header16 = {{#if:{{{minority_floor_leader|}}}|{{{minority_floor_leader}}} [[Minority Floor Leader of the {{{state_senate}}} Senate]]
}}
<!--------Congressman--------->
| header17 = {{#if:{{{state_legislature|}}}{{{state_senate|}}}{{{jr/sr|}}}{{{jr/sr and state|}}}||
{{#if:{{#if:{{{state|}}}|{{{constituency|}}}}}{{{district|}}}{{{state_house|}}}|{{#if:{{{state_assembly|}}}
|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{{state_assembly|}}} {{#ifeq:{{{state_assembly|}}}|Nevada||{{#ifeq:{{{state_assembly|}}}|New Jersey|General|State}}}} Assembly]]</span><br />from the
|Member{{#if:{{{succeeding|}}}{{{assuming|}}}|-elect}} of the <span style="display: inline-block;">[[{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|United States }}}} {{#if:{{{state_delegate|}}}|House of Delegates|House of Representatives}}|{{#if:{{{state_house|}}} |{{{state_house}}}|{{#if:{{{state_delegate|}}}|{{{state_delegate}}}|U.S.}}}} {{#if:{{{state_delegate|}}}|House of Delegates|{{#if:{{{state_house|}}}| }}House of Representatives}}]]</span>{{#if:{{{district|}}}{{{state|}}}{{{state_delegate|}}}{{{state_house|}}}|<br />from {{#if:{{{state_delegate|}}}|the |{{#if:{{{state_house|}}}|{{#if:{{{district|}}}|the|{{{state|}}}}}|{{{state|}}}{{#if:{{{district|}}}|'s}}}}}}
}}}} {{#if:{{{district|}}}|{{{district}}} district|{{#if:{{{state_house|}}}|{{{constituency|}}}}}}}{{#if:{{{prior_term|}}}|
<br />{{{prior_term}}}}}
}}
}}
<!--------Convocation--------->
| header18 = {{#if:{{{convocation|}}}|{{{convocation}}}}}
<!--------Term--------->
| data19 = {{#if:{{{termend|}}}{{{succeeding|}}}{{{assuming|}}}|
{{#if:{{{status|}}}
| <div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|}}|
}}
| data20 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
| <span class="nowrap">'''Assuming office'''</span><br />{{{termstart}}}{{#if:{{{term|}}}{{{termend|}}}|[[Category:Pages using infobox officeholder with succeeding and term or termend]]}}
| {{#if: {{{term|}}} | <span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{{term}}} }}
}} }}
| data21 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
|
|{{#if:{{{termstart|}}}
| {{#if:{{{termend|}}}
|<!--then: term has start and end:--><span class="nowrap">'''{{{termlabel|In office}}}'''</span><br />{{en dash range|{{{termstart}}}|{{{termend}}}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leading}} with {{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}}
|{{#if:{{{status|}}}|<div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''{{{status}}}'''</div>|<!--else: term is ongoing--><div style="width:100%; margin:0; background-color: {{{color|lavender}}}">'''[[Incumbent]]'''</div>}}
}}
}}
}} }}
| data22 = {{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{succeeding|}}}{{{assuming|}}}
|
|{{#if:{{{termstart|}}}
|{{#if:{{{termend|}}}
|<!--then nothing else; term has ended-->
|<!--else term is ongoing:--><span class="nowrap">'''{{#if:{{{termlabel|}}}|{{str rep|1={{{termlabel}}}|2=In office|3=Assumed office}}|Assumed office}}'''</span> <br />{{{termstart}}}{{#if:{{{alongside|}}}{{{co-leader|}}}|<div style="line-height:normal; padding-top:0.2em; padding-bottom:0.1em">{{#if:{{{alongside|}}}|Serving|Co-leader}} with {{#if:{{{alongside|}}}|{{{alongside}}}|{{{co-leader}}}}}</div>}}
}}
}}
}} }}
}} }}<!--
end infobox1 / start infobox2
-->{{#if:{{{monarch|}}}{{{president|}}}{{{governor-general|}}}{{{governor_general|}}}{{{primeminister|}}}{{{chancellor|}}}{{{minister|}}}{{{taoiseach|}}}{{{firstminister|}}}{{{chiefminister|}}}{{{premier|}}}{{{governor|}}}{{{lieutenant_governor|}}}{{{vicepresident|}}}{{{vicegovernor|}}}{{{viceprimeminister|}}}{{{vicepremier|}}}{{{deputy|}}}{{{leader|}}}{{{lieutenant|}}}{{{nominator|}}}{{{appointer|}}}{{{opponent|}}}{{{incumbent|}}}{{{succeeding|}}}{{{assuming|}}}{{{preceding|}}}{{{predecessor|}}}{{{preceded|}}}{{{successor|}}}{{{succeeded|}}}{{{parliamentarygroup|}}}{{{constituency|}}}{{{majority|}}}{{{suboffice|}}}{{{1namedata|}}}{{{2namedata|}}}{{{3namedata|}}}{{{4namedata|}}}{{{5namedata|}}}{{{runningmate|}}}|
{{#invoke:infobox|infoboxTemplate|child=yes
| labelstyle = text-align:left
| label1 = <span class="nowrap">Nominated by</span>
| data1 = {{{nominator|}}}
| label2 = <span class="nowrap">Appointed by</span>
| data2 = {{{appointer|}}}
<!--------President, Prime Minister, Governor--------->
| label3 = Monarch{{#if:{{detect singular|{{{monarch|}}}}}||s}}
| data3 = {{{monarch|}}}
| label4 = President
| data4 = {{{president|}}}
| label5 = {{#if:{{{governor_general|}}}|Governor{{#if:{{detect singular|{{{governor_general}}}}}||s}} General|Governor{{#if:{{detect singular|{{{governor-general}}}}}||s}}-General}}
| data5 = {{#if:{{{governor_general|}}}|{{{governor_general}}}|{{{governor-general|}}}}}
| label6 = <span class="nowrap">Prime Minister</span>
| data6 = {{{primeminister|}}}
| label7 = Chancellor
| data7 = {{{chancellor|}}}
| label8 = Minister
| data8 = {{{minister|}}}
| label9 = Taoiseach
| data9 = {{{taoiseach|}}}
| label10 = <span class="nowrap">First Minister</span>
| data10 = {{{firstminister|}}}
| label11 = <span class="nowrap">Chief Minister</span>
| data11 = {{{chiefminister|}}}
| label12 = Premier
| data12 = {{{premier|}}}
| label13 = Governor
| data13 = {{{governor|}}}
| label14 = Lieutenant Governor
| data14 = {{{lieutenant_governor|}}}
<!--------Vice president/s, Vice Prime Minister/s, Deputy/ies, Lieutenant/s--------->
| label15 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice President]]|Vice President}}|Vice President}}</span>
| data15 = {{{vicepresident|}}}
| label16 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Governor]]|Vice Governor}}|Vice Governor}}</span>
| data16 = {{{vicegovernor|}}}
| label17 = <span class="nowrap">{{#if:{{{office|}}}|[[Vice {{{office}}}|Vice PM]]|Vice [[Prime Minister|PM]]}}</span>
| data17 = {{{viceprimeminister|}}}
| label18 = <span class="nowrap">{{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Vice {{{office}}}}}|valid|[[Vice {{{office}}}|Vice Premier]]|Vice Premier}}|Vice Premier}}</span>
| data18 = {{{vicepremier|}}}
| label19 = {{#if:{{{office|}}}|{{#ifeq:{{isValidPageName|Deputy {{{office}}}}}|valid|[[Deputy {{{office}}}|Deputy]]|Deputy}}|Deputy}}
| data19 = {{{deputy|}}}
| label20 = Leader
| data20 = {{{leader|}}}
| label21 = {{#if:{{{office|}}}|[[Lieutenant {{{office}}}|Lieutenant]]|Lieutenant}}
| data21 = {{{lieutenant|}}}
| label22 = {{nowrap|{{{subterm|}}}}}
| data22 = {{{suboffice|}}}
<!--------Blank fields--------->
| label23 = {{{1blankname|}}}
| data23 = {{{1namedata|}}}
| label24 = {{{2blankname|}}}
| data24 = {{{2namedata|}}}
| label25 = {{{3blankname|}}}
| data25 = {{{3namedata|}}}
| label26 = {{{4blankname|}}}
| data26 = {{{4namedata|}}}
| label27 = {{{5blankname|}}}
| data27 = {{{5namedata|}}}
<!--------Predecessor/successor--------->
| label28 = <span class="nowrap">Running mate</span>
| data28 = {{{runningmate|}}}
| label29 = Opponent{{Pluralize from text|{{{opponent|}}}|likely=(s)|plural=s}}
| data29 = {{{opponent|}}}
| label30 = Incumbent
| data30 = {{{incumbent|}}}
| label31 = {{#if:{{{succeeding|}}}|Succeeding|Preceding}}
| data31 = {{#if:{{{succeeding|}}}|{{{succeeding|}}}|{{{preceding|}}}}}
| label32 = <span class="nowrap">Preceded by</span>
| data32 = {{#if:{{{succeeding|}}}||{{#if:{{{predecessor|}}}|{{{predecessor}}}|{{{preceded|}}}}}}}
| label33 = <span class="nowrap">Succeeded by</span>
| data33 = {{#if:{{{succeeding|}}}||{{#switch:{{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}}
| Incumbent
| '''Incumbent'''
| ''Incumbent''
| [[Incumbent]]
| incumbent
| '''incumbent'''
| ''incumbent''
| [[incumbent]] =
| #default = {{#if:{{{successor|}}}|{{{successor}}}|{{{succeeded|}}}}}
}}}}
<!--------Constituency/Majority--------->
| label34 = [[Parliamentary group]]
| data34 = {{{parliamentarygroup|}}}
| label35 = Constituency
| data35 = {{#if:{{{state_house|}}}||{{{constituency|}}}}}
| label36 = Majority
| data36 = {{{majority|}}}
}} }}<noinclude>{{documentation}}</noinclude>
78e1d0c6824133f19dbb0aa4c7571c928b233dbc
Template:Both
10
159
372
371
2023-09-30T19:36:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Both]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{SAFESUBST:<noinclude />#if:{{{2|}}}|1}}}}<noinclude>
{{documentation}}
</noinclude>
57c3c0ffa811a7f31c675b2d79aedf4382e9b88d
Template:Str rep
10
160
374
373
2023-09-30T19:36:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Str_rep]]
wikitext
text/x-wiki
{{#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|1}}<noinclude>
{{Documentation}}</noinclude>
4706daa3137857f2792cc7109ca24b6d58c78dee
Template:Title disambig text
10
161
376
375
2023-09-30T19:36:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Title_disambig_text]]
wikitext
text/x-wiki
{{safesubst<noinclude/>:#invoke:String|match|{{{1|{{PAGENAME}}}}}|%s%((.-%)?)%)||-1|ignore_errors=true}}<noinclude>
{{Documentation}}
</noinclude>
09be4d07c948b00ed15066030e4a7029dd966c0a
Template:Br separated entries
10
162
378
377
2023-09-30T19:36:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Br_separated_entries]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|br}}<noinclude>
{{documentation}}
</noinclude>
2019f7fc383259e70d66e43cbd97a43d20889f1b
Template:Unbulleted list
10
163
380
379
2023-09-30T19:36:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Unbulleted_list]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|unbulleted}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
89815a491d3e05b20af446e34cda13f13c25fb4f
Module:InfoboxImage
828
164
382
381
2023-09-30T19:36:43Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:InfoboxImage]]
Scribunto
text/plain
-- Inputs:
-- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link
-- page - page to display for multipage images (DjVu)
-- size - size to display the image
-- maxsize - maximum size for image
-- sizedefault - default size to display the image if size param is blank
-- alt - alt text for image
-- title - title text for image
-- border - set to yes if border
-- center - set to yes, if the image has to be centered
-- upright - upright image param
-- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it
-- link - page to visit when clicking on image
-- class - HTML classes to add to the image
-- Outputs:
-- Formatted image.
-- More details available at the "Module:InfoboxImage/doc" page
local i = {};
local placeholder_image = {
"Blue - Replace this image female.svg",
"Blue - Replace this image male.svg",
"Female no free image yet.png",
"Flag of None (square).svg",
"Flag of None.svg",
"Flag of.svg",
"Green - Replace this image female.svg",
"Green - Replace this image male.svg",
"Image is needed female.svg",
"Image is needed male.svg",
"Location map of None.svg",
"Male no free image yet.png",
"Missing flag.png",
"No flag.svg",
"No free portrait.svg",
"No portrait (female).svg",
"No portrait (male).svg",
"Red - Replace this image female.svg",
"Red - Replace this image male.svg",
"Replace this image female (blue).svg",
"Replace this image female.svg",
"Replace this image male (blue).svg",
"Replace this image male.svg",
"Silver - Replace this image female.svg",
"Silver - Replace this image male.svg",
"Replace this image.svg",
"Cricket no pic.png",
"CarersLogo.gif",
"Diagram Needed.svg",
"Example.jpg",
"Image placeholder.png",
"No male portrait.svg",
"Nocover-upload.png",
"NoDVDcover copy.png",
"Noribbon.svg",
"No portrait-BFD-test.svg",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Sin bandera.svg",
"Sin escudo.svg",
"Replace this image - temple.png",
"Replace this image butterfly.png",
"Replace this image.svg",
"Replace this image1.svg",
"Resolution angle.png",
"Image-No portrait-text-BFD-test.svg",
"Insert image here.svg",
"No image available.png",
"NO IMAGE YET square.png",
"NO IMAGE YET.png",
"No Photo Available.svg",
"No Screenshot.svg",
"No-image-available.jpg",
"Null.png",
"PictureNeeded.gif",
"Place holder.jpg",
"Unbenannt.JPG",
"UploadACopyrightFreeImage.svg",
"UploadAnImage.gif",
"UploadAnImage.svg",
"UploadAnImageShort.svg",
"CarersLogo.gif",
"Diagram Needed.svg",
"No male portrait.svg",
"NoDVDcover copy.png",
"Placeholder barnstar ribbon.png",
"Project Trains no image.png",
"Image-request.png",
"Noimage.gif",
}
function i.IsPlaceholder(image)
-- change underscores to spaces
image = mw.ustring.gsub(image, "_", " ");
assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil')
-- if image starts with [[ then remove that and anything after |
if mw.ustring.sub(image,1,2) == "[[" then
image = mw.ustring.sub(image,3);
image = mw.ustring.gsub(image, "([^|]*)|.*", "%1");
assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil')
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil")
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
-- Trim spaces
image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1');
-- capitalise first letter
image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2);
for i,j in pairs(placeholder_image) do
if image == j then
return true
end
end
return false
end
function i.InfoboxImage(frame)
local image = frame.args["image"];
if image == "" or image == nil then
return "";
end
if image == " " then
return image;
end
if frame.args["suppressplaceholder"] ~= "no" then
if i.IsPlaceholder(image) == true then
return "";
end
end
if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then
return "";
end
if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then
return "";
end
if mw.ustring.sub(image,1,2) == "[[" then
-- search for thumbnail images and add to tracking cat if found
local cat = "";
if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then
cat = "[[Category:Pages using infoboxes with thumbnail images]]";
end
return image .. cat;
elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then
return image;
elseif mw.ustring.sub(image,1,1) == "<" then
return image;
elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then
-- Found strip marker at begining, so pass don't process at all
return image;
elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then
-- Found strip marker at begining, so pass don't process at all
return image;
else
local result = "";
local page = frame.args["page"];
local size = frame.args["size"];
local maxsize = frame.args["maxsize"];
local sizedefault = frame.args["sizedefault"];
local alt = frame.args["alt"];
local link = frame.args["link"];
local title = frame.args["title"];
local border = frame.args["border"];
local upright = frame.args["upright"] or "";
local thumbtime = frame.args["thumbtime"] or "";
local center = frame.args["center"];
local class = frame.args["class"];
-- remove prefix if exists
local allNames = mw.site.namespaces[6].aliases
allNames[#allNames + 1] = mw.site.namespaces[6].name
allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName
for i, name in ipairs(allNames) do
if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then
image = mw.ustring.sub(image, mw.ustring.len(name) + 2);
break
end
end
if maxsize ~= "" and maxsize ~= nil then
-- if no sizedefault then set to maxsize
if sizedefault == "" or sizedefault == nil then
sizedefault = maxsize
end
-- check to see if size bigger than maxsize
if size ~= "" and size ~= nil then
local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0;
local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0;
if sizenumber>maxsizenumber and maxsizenumber>0 then
size = maxsize;
end
end
end
-- add px to size if just a number
if (tonumber(size) or 0) > 0 then
size = size .. "px";
end
-- add px to sizedefault if just a number
if (tonumber(sizedefault) or 0) > 0 then
sizedefault = sizedefault .. "px";
end
result = "[[File:" .. image;
if page ~= "" and page ~= nil then
result = result .. "|page=" .. page;
end
if size ~= "" and size ~= nil then
result = result .. "|" .. size;
elseif sizedefault ~= "" and sizedefault ~= nil then
result = result .. "|" .. sizedefault;
else
result = result .. "|frameless";
end
if center == "yes" then
result = result .. "|center"
end
if alt ~= "" and alt ~= nil then
result = result .. "|alt=" .. alt;
end
if link ~= "" and link ~= nil then
result = result .. "|link=" .. link;
end
if border == "yes" then
result = result .. "|border";
end
if upright == "yes" then
result = result .. "|upright";
elseif upright ~= "" then
result = result .. "|upright=" .. upright;
end
if thumbtime ~= "" then
result = result .. "|thumbtime=" .. thumbtime;
end
if class ~= nil and class ~= "" then
result = result .. "|class=" .. class;
end
-- if alt value is a keyword then do not use as a description
if alt == "thumbnail" or alt == "thumb" or alt == "frameless" or alt == "left" or alt == "center" or alt == "right" or alt == "upright" or alt == "border" or mw.ustring.match(alt or "", '^[0-9]*px$', 1) ~= nil then
alt = nil;
end
if title ~= "" and title ~= nil then
-- does title param contain any templatestyles? If yes then set to blank.
if mw.ustring.match(frame:preprocess(title), 'UNIQ%-%-templatestyles', 1) ~= nil then
title = nil;
end
end
if title ~= "" and title ~= nil then
result = result .. "|" .. title;
end
result = result .. "]]";
return result;
end
end
return i;
0ee5fe75ba239fc5c9cedc81ca11bdc0be068542
Module:Separated entries
828
165
384
383
2023-09-30T19:36:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Separated_entries]]
Scribunto
text/plain
-- This module takes positional parameters as input and concatenates them with
-- an optional separator. The final separator (the "conjunction") can be
-- specified independently, enabling natural-language lists like
-- "foo, bar, baz and qux". The starting parameter can also be specified.
local compressSparseArray = require('Module:TableTools').compressSparseArray
local p = {}
function p._main(args)
local separator = args.separator
-- Decode (convert to Unicode) HTML escape sequences, such as " " for space.
and mw.text.decode(args.separator) or ''
local conjunction = args.conjunction and mw.text.decode(args.conjunction) or separator
-- Discard values before the starting parameter.
local start = tonumber(args.start)
if start then
for i = 1, start - 1 do args[i] = nil end
end
-- Discard named parameters.
local values = compressSparseArray(args)
return mw.text.listToText(values, separator, conjunction)
end
local function makeInvokeFunction(separator, conjunction, first)
return function (frame)
local args = require('Module:Arguments').getArgs(frame)
args.separator = separator or args.separator
args.conjunction = conjunction or args.conjunction
args.first = first or args.first
return p._main(args)
end
end
p.main = makeInvokeFunction()
p.br = makeInvokeFunction('<br />')
p.comma = makeInvokeFunction(mw.message.new('comma-separator'):plain())
return p
e80231ff3de01afd7f62a94e0a34dc1e67504085
Template:Delink
10
166
386
385
2023-09-30T19:36:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Delink]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
ccf86b4255142fffb206ab8240f36ed22e029d6a
Module:Delink
828
167
388
387
2023-09-30T19:36:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Delink]]
Scribunto
text/plain
-- This module de-links most wikitext.
require("strict")
local p = {}
local getArgs
local function delinkReversePipeTrick(s)
if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes.
return s
end
return s:match("%[%[|(.*)%]%]")
end
local function delinkPipeTrick(s)
-- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]].
-- First, remove the text before the first colon, if any.
if s:match(":") then
s = s:match("%[%[.-:(.*)|%]%]")
-- If there are no colons, grab all of the text apart from the square brackets and the pipe.
else
s = s:match("%[%[(.*)|%]%]")
end
-- Next up, brackets and commas.
if s:match("%(.-%)$") then -- Brackets trump commas.
s = s:match("(.-) ?%(.-%)$")
elseif s:match(",") then -- If there are no brackets, display only the text before the first comma.
s = s:match("(.-),.*$")
end
return s
end
-- Return wikilink target |wikilinks=target
local function getDelinkedTarget(s)
local result = s
-- Deal with the reverse pipe trick.
if result:match("%[%[|") then
return delinkReversePipeTrick(result)
end
result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
result = mw.text.decode(result, true) -- decode HTML entities.
-- Check for bad titles. To do this we need to find the
-- title area of the link, i.e. the part before any pipes.
local target_area
if result:match("|") then -- Find if we're dealing with a piped link.
target_area = result:match("^%[%[(.-)|.*%]%]")
else
target_area = result:match("^%[%[(.-)%]%]")
end
-- Check for bad characters.
if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then
return s
end
return target_area
end
local function getDelinkedLabel(s)
local result = s
-- Deal with the reverse pipe trick.
if result:match("%[%[|") then
return delinkReversePipeTrick(result)
end
result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs.
result = mw.text.decode(result, true) -- decode HTML entities.
-- Check for bad titles. To do this we need to find the
-- title area of the link, i.e. the part before any pipes.
local target_area
if result:match("|") then -- Find if we're dealing with a piped link.
target_area = result:match("^%[%[(.-)|.*%]%]")
else
target_area = result:match("^%[%[(.-)%]%]")
end
-- Check for bad characters.
if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then
return s
end
-- Check for categories, interwikis, and files.
local colon_prefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon.
local ns = mw.site.namespaces[colon_prefix] -- see if this is a known namespace
if mw.language.isKnownLanguageTag(colon_prefix) or (ns and (ns.canonicalName == "File" or ns.canonicalName == "Category")) then
return ""
end
-- Remove the colon if the link is using the [[Help:Colon trick]].
if result:match("%[%[:") then
result = "[[" .. result:match("%[%[:(.*%]%])")
end
-- Deal with links using the [[Help:Pipe trick]].
if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then
return delinkPipeTrick(result)
end
-- Find the display area of the wikilink
if result:match("|") then -- Find if we're dealing with a piped link.
result = result:match("^%[%[.-|(.+)%]%]")
-- Remove new lines from the display of multiline piped links,
-- where the pipe is before the first new line.
result = result:gsub("\n", "")
else
result = result:match("^%[%[(.-)%]%]")
end
return result
end
local function delinkURL(s)
-- Assume we have already delinked internal wikilinks, and that
-- we have been passed some text between two square brackets [foo].
-- If the text contains a line break it is not formatted as a URL, regardless of other content.
if s:match("\n") then
return s
end
-- Check if the text has a valid URL prefix and at least one valid URL character.
local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"}
local url_prefix
for _ ,v in ipairs(valid_url_prefixes) do
if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then
url_prefix = v
break
end
end
-- Get display text
if not url_prefix then
return s
end
s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket.
s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ).
s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off.
local s_decoded = mw.text.decode(s, true)
if mw.ustring.match(s_decoded, "%c") then
return s
end
return s_decoded
end
local function delinkLinkClass(text, pattern, delinkFunction)
if type(text) ~= "string" then
error("Attempt to de-link non-string input.", 2)
end
if type(pattern) ~= "string" or mw.ustring.sub(pattern, 1, 1) ~= "^" then
error('Invalid pattern detected. Patterns must begin with "^".', 2)
end
-- Iterate over the text string, and replace any matched text. using the
-- delink function. We need to iterate character by character rather
-- than just use gsub, otherwise nested links aren't detected properly.
local result = ""
while text ~= "" do
-- Replace text using one iteration of gsub.
text = mw.ustring.gsub(text, pattern, delinkFunction, 1)
-- Append the left-most character to the result string.
result = result .. mw.ustring.sub(text, 1, 1)
text = mw.ustring.sub(text, 2, -1)
end
return result
end
function p._delink(args)
local text = args[1] or ""
if args.refs == "yes" then
-- Remove any [[Help:Strip markers]] representing ref tags. In most situations
-- this is not a good idea - only use it if you know what you are doing!
text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "")
end
if args.comments ~= "no" then
text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments.
end
if args.wikilinks ~= "no" and args.wikilinks ~= "target" then
-- De-link wikilinks and return the label portion of the wikilink.
text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedLabel)
elseif args.wikilinks == "target" then
-- De-link wikilinks and return the target portions of the wikilink.
text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedTarget)
end
if args.urls ~= "no" then
text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs.
end
if args.whitespace ~= "no" then
-- Replace single new lines with a single space, but leave double new lines
-- and new lines only containing spaces or tabs before a second new line.
text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2")
text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces.
end
return text
end
function p.delink(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return p._delink(getArgs(frame, {wrappers = 'Template:Delink'}))
end
return p
5b8e75ac750b5d3ed76cc4158aefcd1568a6a6fd
Template:En dash range
10
168
390
389
2023-09-30T19:36:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:En_dash_range]]
wikitext
text/x-wiki
{{{1}}}{{#ifeq:{{#invoke:String|find|source={{#invoke:Plain text|main|{{{1}}}{{{2}}}}}|target=[%s–—-]|plain=false}}|0|–| – }}{{{2}}}<noinclude>
{{Documentation}}
</noinclude>
4f0bde90a2efc3a10317f528ce19b0e0fd212808
Module:Plain text
828
169
392
391
2023-09-30T19:36:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Plain_text]]
Scribunto
text/plain
--converts text with wikilinks to plain text, e.g "[[foo|gah]] is [[bar]]" to "gah is bar"
--removes anything enclosed in tags that isn't nested, mediawiki strip markers (references etc), files, italic and bold markup
require[[strict]]
local p = {}
function p.main(frame)
local text = frame.args[1]
local encode = require('Module:yesno')(frame.args.encode)
return p._main(text, encode)
end
function p._main(text, encode)
if not text then return end
text = mw.text.killMarkers(text)
:gsub(' ', ' ') --replace nbsp spaces with regular spaces
:gsub('<br ?/?>', ', ') --replace br with commas
:gsub('<span.->(.-)</span>', '%1') --remove spans while keeping text inside
:gsub('<i.->(.-)</i>', '%1') --remove italics while keeping text inside
:gsub('<b.->(.-)</b>', '%1') --remove bold while keeping text inside
:gsub('<em.->(.-)</em>', '%1') --remove emphasis while keeping text inside
:gsub('<strong.->(.-)</strong>', '%1') --remove strong while keeping text inside
:gsub('<sub.->(.-)</sub>', '%1') --remove subscript markup; retain contents
:gsub('<sup.->(.-)</sup>', '%1') --remove superscript markup; retain contents
:gsub('<u.->(.-)</u>', '%1') --remove underline markup; retain contents
:gsub('<.->.-<.->', '') --strip out remaining tags and the text inside
:gsub('<.->', '') --remove any other tag markup
:gsub('%[%[%s*[Ff][Ii][Ll][Ee]%s*:.-%]%]', '') --strip out files
:gsub('%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:.-%]%]', '') --strip out use of image:
:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:.-%]%]', '') --strip out categories
:gsub('%[%[[^%]]-|', '') --strip out piped link text
:gsub('([^%[])%[[^%[%]][^%]]-%s', '%1') --strip out external link text
:gsub('^%[[^%[%]][^%]]-%s', '') --strip out external link text
:gsub('[%[%]]', '') --then strip out remaining [ and ]
:gsub("'''''", "") --strip out bold italic markup
:gsub("'''?", "") --not stripping out '''' gives correct output for bolded text in quotes
:gsub('----+', '') --remove ---- lines
:gsub("^%s+", "") --strip leading
:gsub("%s+$", "") --and trailing spaces
:gsub("%s+", " ") --strip redundant spaces
if encode then
return mw.text.encode(text)
else
return text
end
end
return p
8d406c43e8cf1dadf34be7d3b395f44ba4c48b75
Template:PAGENAMEBASE
10
170
394
393
2023-09-30T19:36:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:PAGENAMEBASE]]
wikitext
text/x-wiki
{{{{{|safesubst:}}}#Invoke:String|replace|{{{1|{{{{{|safesubst:}}}PAGENAME}}}}}|%s+%b()$||1|false}}<noinclude>
{{documentation}}
</noinclude>
f23a5d434cb5b0baac5e1f58e9ceef9118e6873f
Template:Refbegin
10
171
396
395
2023-09-30T19:36:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Refbegin]]
wikitext
text/x-wiki
<includeonly><templatestyles src="Refbegin/styles.css" /><!--
--><div class="refbegin <!--
-->{{#if: {{{indent|}}} | refbegin-hanging-indents }} <!--
-->{{#if: {{{1|}}}
| refbegin-columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }}
| references-column-width
| references-column-count references-column-count-{{#if:1|{{{1}}}}} }}
| {{#if: {{{colwidth|}}}
| references-column-width }} }}" style="<!--
-->{{#if: {{{1|}}}
| {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }}
| column-width: {{#if:1|{{{1|30em}}}}}
| column-count: {{#if:1|{{{1}}}}}; }}
| {{#if: {{{colwidth|}}}
| column-width: {{{colwidth|30em}}} }} }}"></includeonly><noinclude>
{{Documentation}}
</noinclude>
da42157a5c16164d1de140113dabd9e71ad03401
Template:Refbegin/styles.css
10
172
398
397
2023-09-30T19:36:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Refbegin/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.refbegin {
font-size: 90%;
margin-bottom: 0.5em;
}
.refbegin-hanging-indents > ul {
margin-left: 0;
}
.refbegin-hanging-indents > ul > li {
margin-left: 0;
padding-left: 3.2em;
text-indent: -3.2em;
}
.refbegin-hanging-indents ul,
.refbegin-hanging-indents ul li {
list-style: none;
}
@media (max-width: 720px) {
.refbegin-hanging-indents > ul > li {
padding-left: 1.6em;
text-indent: -1.6em;
}
}
.refbegin-columns {
margin-top: 0.3em;
}
/* Reset top margin for lists embedded in columns */
.refbegin-columns ul {
margin-top: 0;
}
/* Avoid elements breaking between columns */
.refbegin-columns li {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
287ba19370a7bfc842825711a05d34dae68d5f64
Template:Refend
10
173
400
399
2023-09-30T19:36:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Refend]]
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{template doc|Template:refbegin/doc}}
{{TemplateDataHeader}}
<templatedata>
{
"description": "Ends a reference lists started by {{refbegin}}.",
"params": {
}
}
</templatedata>
</noinclude>
ae41356c6aab3e8901a484fcb46ff4aa314f1bb9
Template:Pluralize from text
10
174
402
401
2023-09-30T19:36:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pluralize_from_text]]
wikitext
text/x-wiki
{{#invoke:Detect singular|pluralize}}<noinclude>{{documentation}}</noinclude>
305f4b531ea5639895c83cecd0fd809f7f5cf845
Module:Detect singular
828
175
404
403
2023-09-30T19:36:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Detect_singular]]
Scribunto
text/plain
local p = {}
local getArgs = require('Module:Arguments').getArgs
local yesNo = require('Module:Yesno')
local getPlain = require('Module:Text').Text().getPlain
-- function to determine whether "sub" occurs in "s"
local function plainFind(s, sub)
return mw.ustring.find(s, sub, 1, true)
end
-- function to count the number of times "pattern" (a regex) occurs in "s"
local function countMatches(s, pattern)
local _, count = mw.ustring.gsub(s, pattern, '')
return count
end
local singular = 1
local likelyPlural = 2
local plural = 3
-- Determine whether a string is singular or plural (i.e., it represents one
-- item or many)
-- Arguments:
-- origArgs[1]: string to process
-- origArgs.no_comma: if false, use commas to detect plural (default false)
-- origArgs.parse_links: if false, treat wikilinks as opaque singular objects (default false)
-- Returns:
-- singular, likelyPlural, or plural (see constants above), or nil for completely unknown
function p._main(origArgs)
origArgs = type(origArgs) == 'table' and origArgs or {}
local args = {}
-- canonicalize boolean arguments
for key, default in pairs({no_comma=false,parse_links=false,any_comma=false,no_and=false}) do
if origArgs[key] == nil then
args[key] = default
else
args[key] = yesNo(origArgs[key],default)
end
end
local checkComma = not args.no_comma
local checkAnd = not args.no_and
local rewriteLinks = not args.parse_links
local anyComma = args.any_comma
local s = origArgs[1] -- the input string
if not s then
return nil -- empty input returns nil
end
s = tostring(s)
s = mw.text.decode(s,true) --- replace HTML entities (to avoid spurious semicolons)
if plainFind(s,'data-plural="0"') then -- magic data string to return true
return singular
end
if plainFind(s,'data-plural="1"') then -- magic data string to return false
return plural
end
-- count number of list items
local numListItems = countMatches(s,'<%s*li')
-- if exactly one, then singular, if more than one, then plural
if numListItems == 1 then
return singular
end
if numListItems > 1 then
return plural
end
-- if "list of" occurs inside of wlink, then it's plural
if mw.ustring.find(s:lower(), '%[%[[^%]]*list of[^%]]+%]%]') then
return plural
end
-- fix for trailing br tags passed through [[template:marriage]]
s = mw.ustring.gsub(s, '<%s*br[^>]*>%s*(</div>)', '%1')
-- replace all wikilinks with fixed string
if rewriteLinks then
s = mw.ustring.gsub(s,'%b[]','WIKILINK')
end
-- Five conditions: any one of them can make the string a likely plural or plural
local hasBreak = mw.ustring.find(s,'<%s*br')
-- For the last 4, evaluate on string stripped of wikimarkup
s = getPlain(s)
local hasBullets = countMatches(s,'%*+') > 1
local multipleQids = mw.ustring.find(s,'Q%d+[%p%s]+Q%d+') -- has multiple QIDs in a row
if hasBullets or multipleQids then
return plural
end
local commaPattern = anyComma and '[,;]' or '%D[,;]%D' -- semi-colon similar to comma
local hasComma = checkComma and mw.ustring.find(s, commaPattern)
local hasAnd = checkAnd and mw.ustring.find(s,'[,%s]and%s')
if hasBreak or hasComma or hasAnd then
return likelyPlural
end
return singular
end
function p._pluralize(args)
args = type(args) == 'table' and args or {}
local singularForm = args[3] or args.singular or ""
local pluralForm = args[4] or args.plural or ""
local likelyForm = args.likely or pluralForm
local link = args[5] or args.link
if link then
link = tostring(link)
singularForm = '[['..link..'|'..singularForm..']]'
pluralForm = '[['..link..'|'..pluralForm..']]'
likelyForm = '[['..link..'|'..likelyForm..']]'
end
if args[2] then
return pluralForm
end
local detect = p._main(args)
if detect == nil then
return "" -- return blank on complete failure
end
if detect == singular then
return singularForm
elseif detect == likelyPlural then
return likelyForm
else
return pluralForm
end
end
function p.main(frame)
local args = getArgs(frame)
-- For template, return 1 if singular, blank if plural or empty
local result = p._main(args)
if result == nil then
return 1
end
return result == singular and 1 or ""
end
function p.pluralize(frame)
local args = getArgs(frame)
return p._pluralize(args)
end
return p
6afb2e8c0bd8ddff094e2861b836521ee4a5a779
Module:Text
828
176
406
405
2023-09-30T19:36:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Text]]
Scribunto
text/plain
local yesNo = require("Module:Yesno")
local Text = { serial = "2022-07-21",
suite = "Text" }
--[=[
Text utilities
]=]
-- local globals
local PatternCJK = false
local PatternCombined = false
local PatternLatin = false
local PatternTerminated = false
local QuoteLang = false
local QuoteType = false
local RangesLatin = false
local SeekQuote = false
local function initLatinData()
if not RangesLatin then
RangesLatin = { { 7, 687 },
{ 7531, 7578 },
{ 7680, 7935 },
{ 8194, 8250 } }
end
if not PatternLatin then
local range
PatternLatin = "^["
for i = 1, #RangesLatin do
range = RangesLatin[ i ]
PatternLatin = PatternLatin ..
mw.ustring.char( range[ 1 ], 45, range[ 2 ] )
end -- for i
PatternLatin = PatternLatin .. "]*$"
end
end
local function initQuoteData()
-- Create quote definitions
if not QuoteLang then
QuoteLang =
{ af = "bd",
ar = "la",
be = "labd",
bg = "bd",
ca = "la",
cs = "bd",
da = "bd",
de = "bd",
dsb = "bd",
et = "bd",
el = "lald",
en = "ld",
es = "la",
eu = "la",
-- fa = "la",
fi = "rd",
fr = "laSPC",
ga = "ld",
he = "ldla",
hr = "bd",
hsb = "bd",
hu = "bd",
hy = "labd",
id = "rd",
is = "bd",
it = "ld",
ja = "x300C",
ka = "bd",
ko = "ld",
lt = "bd",
lv = "bd",
nl = "ld",
nn = "la",
no = "la",
pl = "bdla",
pt = "lald",
ro = "bdla",
ru = "labd",
sk = "bd",
sl = "bd",
sq = "la",
sr = "bx",
sv = "rd",
th = "ld",
tr = "ld",
uk = "la",
zh = "ld",
["de-ch"] = "la",
["en-gb"] = "lsld",
["en-us"] = "ld",
["fr-ch"] = "la",
["it-ch"] = "la",
["pt-br"] = "ldla",
["zh-tw"] = "x300C",
["zh-cn"] = "ld" }
end
if not QuoteType then
QuoteType =
{ bd = { { 8222, 8220 }, { 8218, 8217 } },
bdla = { { 8222, 8220 }, { 171, 187 } },
bx = { { 8222, 8221 }, { 8218, 8217 } },
la = { { 171, 187 }, { 8249, 8250 } },
laSPC = { { 171, 187 }, { 8249, 8250 }, true },
labd = { { 171, 187 }, { 8222, 8220 } },
lald = { { 171, 187 }, { 8220, 8221 } },
ld = { { 8220, 8221 }, { 8216, 8217 } },
ldla = { { 8220, 8221 }, { 171, 187 } },
lsld = { { 8216, 8217 }, { 8220, 8221 } },
rd = { { 8221, 8221 }, { 8217, 8217 } },
x300C = { { 0x300C, 0x300D },
{ 0x300E, 0x300F } } }
end
end -- initQuoteData()
local function fiatQuote( apply, alien, advance )
-- Quote text
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code
-- advance -- number, with level 1 or 2
local r = apply and tostring(apply) or ""
alien = alien or "en"
advance = tonumber(advance) or 0
local suite
initQuoteData()
local slang = alien:match( "^(%l+)-" )
suite = QuoteLang[alien] or slang and QuoteLang[slang] or QuoteLang["en"]
if suite then
local quotes = QuoteType[ suite ]
if quotes then
local space
if quotes[ 3 ] then
space = " "
else
space = ""
end
quotes = quotes[ advance ]
if quotes then
r = mw.ustring.format( "%s%s%s%s%s",
mw.ustring.char( quotes[ 1 ] ),
space,
apply,
space,
mw.ustring.char( quotes[ 2 ] ) )
end
else
mw.log( "fiatQuote() " .. suite )
end
end
return r
end -- fiatQuote()
Text.char = function ( apply, again, accept )
-- Create string from codepoints
-- Parameter:
-- apply -- table (sequence) with numerical codepoints, or nil
-- again -- number of repetitions, or nil
-- accept -- true, if no error messages to be appended
-- Returns: string
local r = ""
apply = type(apply) == "table" and apply or {}
again = math.floor(tonumber(again) or 1)
if again < 1 then
return ""
end
local bad = { }
local codes = { }
for _, v in ipairs( apply ) do
local n = tonumber(v)
if not n or (n < 32 and n ~= 9 and n ~= 10) then
table.insert(bad, tostring(v))
else
table.insert(codes, math.floor(n))
end
end
if #bad > 0 then
if not accept then
r = tostring( mw.html.create( "span" )
:addClass( "error" )
:wikitext( "bad codepoints: " .. table.concat( bad, " " )) )
end
return r
end
if #codes > 0 then
r = mw.ustring.char( unpack( codes ) )
if again > 1 then
r = r:rep(again)
end
end
return r
end -- Text.char()
local function trimAndFormat(args, fmt)
local result = {}
if type(args) ~= 'table' then
args = {args}
end
for _, v in ipairs(args) do
v = mw.text.trim(tostring(v))
if v ~= "" then
table.insert(result,fmt and mw.ustring.format(fmt, v) or v)
end
end
return result
end
Text.concatParams = function ( args, apply, adapt )
-- Concat list items into one string
-- Parameter:
-- args -- table (sequence) with numKey=string
-- apply -- string (optional); separator (default: "|")
-- adapt -- string (optional); format including "%s"
-- Returns: string
local collect = { }
return table.concat(trimAndFormat(args,adapt), apply or "|")
end -- Text.concatParams()
Text.containsCJK = function ( s )
-- Is any CJK code within?
-- Parameter:
-- s -- string
-- Returns: true, if CJK detected
s = s and tostring(s) or ""
if not patternCJK then
patternCJK = mw.ustring.char( 91,
4352, 45, 4607,
11904, 45, 42191,
43072, 45, 43135,
44032, 45, 55215,
63744, 45, 64255,
65072, 45, 65103,
65381, 45, 65500,
131072, 45, 196607,
93 )
end
return mw.ustring.find( s, patternCJK ) ~= nil
end -- Text.containsCJK()
Text.removeDelimited = function (s, prefix, suffix)
-- Remove all text in s delimited by prefix and suffix (inclusive)
-- Arguments:
-- s = string to process
-- prefix = initial delimiter
-- suffix = ending delimiter
-- Returns: stripped string
s = s and tostring(s) or ""
prefix = prefix and tostring(prefix) or ""
suffix = suffix and tostring(suffix) or ""
local prefixLen = mw.ustring.len(prefix)
local suffixLen = mw.ustring.len(suffix)
if prefixLen == 0 or suffixLen == 0 then
return s
end
local i = s:find(prefix, 1, true)
local r = s
local j
while i do
j = r:find(suffix, i + prefixLen)
if j then
r = r:sub(1, i - 1)..r:sub(j+suffixLen)
else
r = r:sub(1, i - 1)
end
i = r:find(prefix, 1, true)
end
return r
end
Text.getPlain = function ( adjust )
-- Remove wikisyntax from string, except templates
-- Parameter:
-- adjust -- string
-- Returns: string
local r = Text.removeDelimited(adjust,"<!--","-->")
r = r:gsub( "(</?%l[^>]*>)", "" )
:gsub( "'''", "" )
:gsub( "''", "" )
:gsub( " ", " " )
return r
end -- Text.getPlain()
Text.isLatinRange = function (s)
-- Are characters expected to be latin or symbols within latin texts?
-- Arguments:
-- s = string to analyze
-- Returns: true, if valid for latin only
s = s and tostring(s) or "" --- ensure input is always string
initLatinData()
return mw.ustring.match(s, PatternLatin) ~= nil
end -- Text.isLatinRange()
Text.isQuote = function ( s )
-- Is this character any quotation mark?
-- Parameter:
-- s = single character to analyze
-- Returns: true, if s is quotation mark
s = s and tostring(s) or ""
if s == "" then
return false
end
if not SeekQuote then
SeekQuote = mw.ustring.char( 34, -- "
39, -- '
171, -- laquo
187, -- raquo
8216, -- lsquo
8217, -- rsquo
8218, -- sbquo
8220, -- ldquo
8221, -- rdquo
8222, -- bdquo
8249, -- lsaquo
8250, -- rsaquo
0x300C, -- CJK
0x300D, -- CJK
0x300E, -- CJK
0x300F ) -- CJK
end
return mw.ustring.find( SeekQuote, s, 1, true ) ~= nil
end -- Text.isQuote()
Text.listToText = function ( args, adapt )
-- Format list items similar to mw.text.listToText()
-- Parameter:
-- args -- table (sequence) with numKey=string
-- adapt -- string (optional); format including "%s"
-- Returns: string
return mw.text.listToText(trimAndFormat(args, adapt))
end -- Text.listToText()
Text.quote = function ( apply, alien, advance )
-- Quote text
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code, or nil
-- advance -- number, with level 1 or 2, or nil
-- Returns: quoted string
apply = apply and tostring(apply) or ""
local mode, slang
if type( alien ) == "string" then
slang = mw.text.trim( alien ):lower()
else
slang = mw.title.getCurrentTitle().pageLanguage
if not slang then
-- TODO FIXME: Introduction expected 2017-04
slang = mw.language.getContentLanguage():getCode()
end
end
if advance == 2 then
mode = 2
else
mode = 1
end
return fiatQuote( mw.text.trim( apply ), slang, mode )
end -- Text.quote()
Text.quoteUnquoted = function ( apply, alien, advance )
-- Quote text, if not yet quoted and not empty
-- Parameter:
-- apply -- string, with text
-- alien -- string, with language code, or nil
-- advance -- number, with level 1 or 2, or nil
-- Returns: string; possibly quoted
local r = mw.text.trim( apply and tostring(apply) or "" )
local s = mw.ustring.sub( r, 1, 1 )
if s ~= "" and not Text.isQuote( s, advance ) then
s = mw.ustring.sub( r, -1, 1 )
if not Text.isQuote( s ) then
r = Text.quote( r, alien, advance )
end
end
return r
end -- Text.quoteUnquoted()
Text.removeDiacritics = function ( adjust )
-- Remove all diacritics
-- Parameter:
-- adjust -- string
-- Returns: string; all latin letters should be ASCII
-- or basic greek or cyrillic or symbols etc.
local cleanup, decomposed
if not PatternCombined then
PatternCombined = mw.ustring.char( 91,
0x0300, 45, 0x036F,
0x1AB0, 45, 0x1AFF,
0x1DC0, 45, 0x1DFF,
0xFE20, 45, 0xFE2F,
93 )
end
decomposed = mw.ustring.toNFD( adjust and tostring(adjust) or "" )
cleanup = mw.ustring.gsub( decomposed, PatternCombined, "" )
return mw.ustring.toNFC( cleanup )
end -- Text.removeDiacritics()
Text.sentenceTerminated = function ( analyse )
-- Is string terminated by dot, question or exclamation mark?
-- Quotation, link termination and so on granted
-- Parameter:
-- analyse -- string
-- Returns: true, if sentence terminated
local r
if not PatternTerminated then
PatternTerminated = mw.ustring.char( 91,
12290,
65281,
65294,
65311 )
.. "!%.%?…][\"'%]‹›«»‘’“”]*$"
end
if mw.ustring.find( analyse, PatternTerminated ) then
r = true
else
r = false
end
return r
end -- Text.sentenceTerminated()
Text.ucfirstAll = function ( adjust)
-- Capitalize all words
-- Arguments:
-- adjust = string to adjust
-- Returns: string with all first letters in upper case
adjust = adjust and tostring(adjust) or ""
local r = mw.text.decode(adjust,true)
local i = 1
local c, j, m
m = (r ~= adjust)
r = " "..r
while i do
i = mw.ustring.find( r, "%W%l", i )
if i then
j = i + 1
c = mw.ustring.upper( mw.ustring.sub( r, j, j ) )
r = string.format( "%s%s%s",
mw.ustring.sub( r, 1, i ),
c,
mw.ustring.sub( r, i + 2 ) )
i = j
end
end -- while i
r = r:sub( 2 )
if m then
r = mw.text.encode(r)
end
return r
end -- Text.ucfirstAll()
Text.uprightNonlatin = function ( adjust )
-- Ensure non-italics for non-latin text parts
-- One single greek letter might be granted
-- Precondition:
-- adjust -- string
-- Returns: string with non-latin parts enclosed in <span>
local r
initLatinData()
if mw.ustring.match( adjust, PatternLatin ) then
-- latin only, horizontal dashes, quotes
r = adjust
else
local c
local j = false
local k = 1
local m = false
local n = mw.ustring.len( adjust )
local span = "%s%s<span dir='auto' style='font-style:normal'>%s</span>"
local flat = function ( a )
-- isLatin
local range
for i = 1, #RangesLatin do
range = RangesLatin[ i ]
if a >= range[ 1 ] and a <= range[ 2 ] then
return true
end
end -- for i
end -- flat()
local focus = function ( a )
-- char is not ambivalent
local r = ( a > 64 )
if r then
r = ( a < 8192 or a > 8212 )
else
r = ( a == 38 or a == 60 ) -- '&' '<'
end
return r
end -- focus()
local form = function ( a )
return string.format( span,
r,
mw.ustring.sub( adjust, k, j - 1 ),
mw.ustring.sub( adjust, j, a ) )
end -- form()
r = ""
for i = 1, n do
c = mw.ustring.codepoint( adjust, i, i )
if focus( c ) then
if flat( c ) then
if j then
if m then
if i == m then
-- single greek letter.
j = false
end
m = false
end
if j then
local nx = i - 1
local s = ""
for ix = nx, 1, -1 do
c = mw.ustring.sub( adjust, ix, ix )
if c == " " or c == "(" then
nx = nx - 1
s = c .. s
else
break -- for ix
end
end -- for ix
r = form( nx ) .. s
j = false
k = i
end
end
elseif not j then
j = i
if c >= 880 and c <= 1023 then
-- single greek letter?
m = i + 1
else
m = false
end
end
elseif m then
m = m + 1
end
end -- for i
if j and ( not m or m < n ) then
r = form( n )
else
r = r .. mw.ustring.sub( adjust, k )
end
end
return r
end -- Text.uprightNonlatin()
Text.test = function ( about )
local r
if about == "quote" then
initQuoteData()
r = { }
r.QuoteLang = QuoteLang
r.QuoteType = QuoteType
end
return r
end -- Text.test()
-- Export
local p = { }
for _, func in ipairs({'containsCJK','isLatinRange','isQuote','sentenceTerminated'}) do
p[func] = function (frame)
return Text[func]( frame.args[ 1 ] or "" ) and "1" or ""
end
end
for _, func in ipairs({'getPlain','removeDiacritics','ucfirstAll','uprightNonlatin'}) do
p[func] = function (frame)
return Text[func]( frame.args[ 1 ] or "" )
end
end
function p.char( frame )
local params = frame:getParent().args
local story = params[ 1 ]
local codes, lenient, multiple
if not story then
params = frame.args
story = params[ 1 ]
end
if story then
local items = mw.text.split( mw.text.trim(story), "%s+" )
if #items > 0 then
local j
lenient = (yesNo(params.errors) == false)
codes = { }
multiple = tonumber( params[ "*" ] )
for _, v in ipairs( items ) do
j = tonumber((v:sub( 1, 1 ) == "x" and "0" or "") .. v)
table.insert( codes, j or v )
end
end
end
return Text.char( codes, multiple, lenient )
end
function p.concatParams( frame )
local args
local template = frame.args.template
if type( template ) == "string" then
template = mw.text.trim( template )
template = ( template == "1" )
end
if template then
args = frame:getParent().args
else
args = frame.args
end
return Text.concatParams( args,
frame.args.separator,
frame.args.format )
end
function p.listToFormat(frame)
local lists = {}
local pformat = frame.args["format"]
local sep = frame.args["sep"] or ";"
-- Parameter parsen: Listen
for k, v in pairs(frame.args) do
local knum = tonumber(k)
if knum then lists[knum] = v end
end
-- Listen splitten
local maxListLen = 0
for i = 1, #lists do
lists[i] = mw.text.split(lists[i], sep)
if #lists[i] > maxListLen then maxListLen = #lists[i] end
end
-- Ergebnisstring generieren
local result = ""
local result_line = ""
for i = 1, maxListLen do
result_line = pformat
for j = 1, #lists do
result_line = mw.ustring.gsub(result_line, "%%s", lists[j][i], 1)
end
result = result .. result_line
end
return result
end
function p.listToText( frame )
local args
local template = frame.args.template
if type( template ) == "string" then
template = mw.text.trim( template )
template = ( template == "1" )
end
if template then
args = frame:getParent().args
else
args = frame.args
end
return Text.listToText( args, frame.args.format )
end
function p.quote( frame )
local slang = frame.args[2]
if type( slang ) == "string" then
slang = mw.text.trim( slang )
if slang == "" then
slang = false
end
end
return Text.quote( frame.args[ 1 ] or "",
slang,
tonumber( frame.args[3] ) )
end
function p.quoteUnquoted( frame )
local slang = frame.args[2]
if type( slang ) == "string" then
slang = mw.text.trim( slang )
if slang == "" then
slang = false
end
end
return Text.quoteUnquoted( frame.args[ 1 ] or "",
slang,
tonumber( frame.args[3] ) )
end
function p.zip(frame)
local lists = {}
local seps = {}
local defaultsep = frame.args["sep"] or ""
local innersep = frame.args["isep"] or ""
local outersep = frame.args["osep"] or ""
-- Parameter parsen
for k, v in pairs(frame.args) do
local knum = tonumber(k)
if knum then lists[knum] = v else
if string.sub(k, 1, 3) == "sep" then
local sepnum = tonumber(string.sub(k, 4))
if sepnum then seps[sepnum] = v end
end
end
end
-- sofern keine expliziten Separatoren angegeben sind, den Standardseparator verwenden
for i = 1, math.max(#seps, #lists) do
if not seps[i] then seps[i] = defaultsep end
end
-- Listen splitten
local maxListLen = 0
for i = 1, #lists do
lists[i] = mw.text.split(lists[i], seps[i])
if #lists[i] > maxListLen then maxListLen = #lists[i] end
end
local result = ""
for i = 1, maxListLen do
if i ~= 1 then result = result .. outersep end
for j = 1, #lists do
if j ~= 1 then result = result .. innersep end
result = result .. (lists[j][i] or "")
end
end
return result
end
function p.failsafe()
return Text.serial
end
p.Text = function ()
return Text
end -- p.Text
return p
07f1fc4d39342fd92bdae1c5463bbfede7eeda1a
Template:Infobox person/height
10
177
408
407
2023-09-30T19:36:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_person/height]]
wikitext
text/x-wiki
{{#invoke:person height|main}}<noinclude>
{{Documentation}}
</noinclude>
7e4749e2788885b5a8760fedb7cc278e9a60a85a
Template:IsValidPageName
10
178
410
409
2023-09-30T19:36:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:IsValidPageName]]
wikitext
text/x-wiki
{{#ifeq:{{{1}}}|-||{{#iferror:{{#invoke:Page|invalid|{{{1}}}}}||valid}}}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
df8eb681019823d4eba2df6f8d521bc95426d54e
Module:CallAssert
828
179
412
411
2023-09-30T19:36:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:CallAssert]]
Scribunto
text/plain
local function pack(...)
return {...}, select('#', ...)
end
local function mapArray(func, array, count)
local result = {}
for i = 1, count or #array do
result[i] = func(array[i])
end
return result
end
local function quote(value)
if type(value) == 'string' then
return (string.gsub(string.format('%q', value), '\\\n', '\\n')) -- Outer parentheses remove second value returned by gsub
end
local str = tostring(value)
if type(value) == 'table' and str ~= 'table' then
return '{' .. str .. '}'
end
return str
end
local function callAssert(func, funcName, ...)
local result, resultCount = pack(func(...))
if not result[1] then
local args, argsCount = pack(...)
args = mapArray(quote, args, argsCount)
local message = mw.ustring.format(
'%s(%s) failed',
funcName,
table.concat(args, ', ')
)
error(message, 2)
end
return unpack(result, 1, resultCount)
end
return callAssert
1f6b71105b007b84f1593a11438484f1ad94f68a
Module:Page
828
180
414
413
2023-09-30T19:36:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Page]]
Scribunto
text/plain
local callAssert = require('Module:CallAssert')
local function main(frame, field)
local args, pargs = frame.args, ( frame:getParent() or {} ).args or {}
local makeTitle=args.makeTitle or pargs.makeTitle
local namespace=args.namespace or pargs.namespace or ""
local fragment=args.fragment or pargs.fragment or ""
local interwiki=args.interwiki or pargs.interwiki or ""
local page=args.page or args[1] or pargs.page or pargs[1] or ""
local id= tonumber( args.id or pargs.id )
local pn = {}
local title -- holds the result of the mw.title.xxx call
for i = 1,9 do pn[i] = args['p'..i] or pargs['p'..i] end
if not id and not mw.ustring.match( page, '%S' ) then page = nil end
if id then
title = callAssert(mw.title.new, 'mw.title.new', id)
elseif not page then
title = callAssert(mw.title.getCurrentTitle, 'getCurrentTitle')
elseif makeTitle then
title = callAssert(mw.title.makeTitle, 'makeTitle', namespace, page, fragment, interwiki)
else
title = callAssert(mw.title.new, 'mw.title.new', page, namespace)
end
local result = title[field]
if type(result) == "function" then
result = result(title, unpack(pn))
end
return tostring(result or "")
end
-- handle all errors in main
main = require('Module:Protect')(main)
local p = {}
-- main function does all the work
local meta = {}
function meta.__index(self, key)
return function(frame)
return main(frame, key)
end
end
setmetatable(p, meta)
function p.getContent(frame)
local args, pargs = frame.args, ( frame:getParent() or {} ).args or {}
local fmt = args.as or pargs.as or "pre"
local text = main(frame, "getContent")
fmt = mw.text.split( fmt, ", ?" )
for _, how in ipairs( fmt ) do
if how == "pre" then
text = table.concat{ "<pre>", text, "</pre>" }
elseif how == "expand" then
text = frame:preprocess(text)
elseif how == "nowiki" then
text = mw.text.nowiki(text)
end
end
return text
end
return p
9b70f0ff53b1c20fd8667c9f3d80167653279cc4
Module:Person height
828
181
416
415
2023-09-30T19:37:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Person_height]]
Scribunto
text/plain
-- This module implements [[Template:Infobox person/height]]
local p = {}
local function splitsuffix(s)
local suffix = ''
if mw.ustring.match(s,'^(.-)(<sup.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(<sup.*)$', '%2')
s = a
suffix = b .. suffix
end
if mw.ustring.match(s,'^(.-)(%[%[[Cc]ategory:.*)$') then
local a = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%1')
local b = mw.ustring.gsub(s, '^(.-)(%[%[[Cc]ategory:.*)$', '%2')
s = a
suffix = b .. suffix
end
return s, suffix
end
local function clean(s)
s = mw.ustring.gsub(s, '[Mm]etre', 'm')
s = mw.ustring.gsub(s, '([^a])meter', '%1m') -- prevents "parameter" from being changed to "param"
s = mw.ustring.gsub(s, '[Cc]enti', 'c') -- changes "centim" to "cm"
s = mw.ustring.gsub(s, 'ms', 'm')
s = mw.ustring.gsub(s, 'm[%.,]', 'm')
s = mw.ustring.gsub(s, '[Ff]eet', 'ft')
s = mw.ustring.gsub(s, 'foot', 'ft')
s = mw.ustring.gsub(s, 'ft[%.,]', 'ft')
s = mw.ustring.gsub(s, '[Ii]nches', 'in')
s = mw.ustring.gsub(s, '[Ii]nch', 'in')
s = mw.ustring.gsub(s, 'ins', 'in')
s = mw.ustring.gsub(s, 'in[%.,]', 'in')
s = mw.ustring.gsub(s, '%[%[[Mm]%]%]s', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Mm]|[Mm]%]%]', '[[Metre|m]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m%]%]s', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]m|[Cc]m%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Cc]entim|cm%]%]', '[[Centimetre|cm]]')
s = mw.ustring.gsub(s, '%[%[[Ii]n|in%]%]', '[[inch|in]]')
s = mw.ustring.gsub(s, '(%d)%s+[Cc][Mm]', '%1 cm')
s = mw.ustring.gsub(s, '(%d)%s+[Mm]', '%1 m')
s = mw.ustring.gsub(s, '(%d)%s+[Ff][Tt]', '%1 ft')
s = mw.ustring.gsub(s, '(%d)%s+[Ii][Nn]', '%1 in')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Cc][Mm]', '%1cm')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Mm]', '%1m')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ff][Tt]', '%1ft')
s = mw.ustring.gsub(s, '(%d&[Nn][Bb][Ss][Pp];)[Ii][Nn]', '%1in')
s = mw.ustring.gsub(s, '(%d)%s*[′\']%s*([%d]%d*)%s*[\"″]', '%1 ft %2 in')
return s
end
local function isnumber(s)
if s then
s = mw.ustring.gsub(s, '%+%s*%d+%s*/%s*%d+%s*$', '')
s = mw.ustring.gsub(s, '%s*1%s*/%s*2%s*$', '0.5')
return tonumber(s)
end
return nil
end
local function trimspace(s)
if s then
s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')
end
return s
end
local function force_unit(s, t)
s = mw.ustring.gsub(s, '&[Nn][Bb][Ss][Pp];', '★')
if (t == 'cm') then
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)m', '%1%2.%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)(%d+[★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2.%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)m', '%1%2%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%2%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)m', '%1%20%3cm')
s = mw.ustring.gsub(s, '(%d*)%.(%d)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%1%20%3[[centimetre|cm]]')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)m', '%100.%2cm')
s = mw.ustring.gsub(s, '(%d*)%.([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100.%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)m', '%100%2cm')
s = mw.ustring.gsub(s, '^(%s*%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '([%(★%s]%d+)([★%s]+)%[%[[Mm]et[re][re]|m%]%]', '%100%2[[centimetre|cm]]')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+cm)', '%1')
s = mw.ustring.gsub(s, '0(%d+%.?%d*[★%s]+%[%[[Cc]entimet[re][re]|cm%]%])', '%1')
else
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)cm', '%1.%2%3m')
s = mw.ustring.gsub(s, '(%d)(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '%1.%2%3[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)%.(%d*[★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)cm', '0.%1%2m')
s = mw.ustring.gsub(s, '(%d%d)([★%s]+)%[%[[Cc]entimet[re][re]|cm%]%]', '0.%1%2[[metre|m]]')
end
s = mw.ustring.gsub(s, '★', ' ')
return s
end
local function get_convert_args(s, prefer, enforce, ri)
local prefer_m = (prefer or '') == 'm'
local force_m = (enforce or '') == 'm'
local prefer_cm = (prefer or '') == 'cm'
local force_cm = (enforce or '') == 'cm'
ri = (ri or '') == 'cmin' and 'cmin' or ''
unconverted = clean(s or '') -- basic unit cleaning
s = mw.ustring.gsub(unconverted, '&[Nn][Bb][Ss][Pp];', ' ')
local m = mw.ustring.find(s, 'm')
local c = mw.ustring.find(s, 'cm')
local f = mw.ustring.find(s, 'ft')
local i = mw.ustring.find(s, 'in')
if m == nil and f == nil and i == nil then
return '', unconverted
end
local adj = nil
if c ~= nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, c - 1)
if isnumber(n) then
if force_m then
local prec = require("Module:Math")._precision(trimspace(n))
adj = (prec == 1) and 'ri3' or 'ri2'
end
if ri ~= '' then
adj = force_m and 'ri2' or 'ri0'
end
return force_m
and {n/100,'m','ftin',0,['abbr']='on', ['adj']=adj}
or {n,'cm','ftin',0,['abbr']='on', ['adj']=adj}, mw.ustring.sub(s, c+2)
end
return '', unconverted
end
if m ~= nil and c == nil and f == nil and i == nil then
local n = mw.ustring.sub(s, 1, m - 1)
if ri ~= '' then
adj = force_cm and 'ri0' or 'ri2'
end
if isnumber(n) then
return force_cm
and {n*100,'cm','ftin',0,['abbr']='on',['adj']=adj}
or {n,'m','ftin',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, m+1)
end
return '', unconverted
end
if f ~= nil and i ~=nil and m == nil then
local n1 = mw.ustring.sub(s, 1, f - 1)
local n2 = mw.ustring.sub(s, f+2, i - 1)
if isnumber(n1) and isnumber(n2) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n1,'ft',n2,'in', 'm',2,['abbr']='on',['adj']=adj}
or {n1,'ft',n2,'in', 'cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if f ~= nil and i == nil and m == nil then
local n = mw.ustring.sub(s, 1, f - 1)
if isnumber(n) then
if ri ~= '' then
local n2 = 12*(n - math.floor(n))
adj = 'ri0'
return (force_m or prefer_m)
and {math.floor(n),'ft',n2, 'in','m',2,['abbr']='on',['adj']=adj}
or {math.floor(n),'ft',n2,'in','cm',0,['abbr']='on',['adj']=adj}, mw.ustring.sub(s, f+2)
end
return (force_m or prefer_m)
and {n,'ft','m',2,['abbr']='on'}
or {n,'ft','cm',0,['abbr']='on'}, mw.ustring.sub(s, f+2)
end
return '', unconverted
end
if i ~= nil and f == nil and m == nil then
local n = mw.ustring.sub(s, 1, i - 1)
if isnumber(n) then
if ri ~= '' then
adj = 'ri0'
end
return (force_m or prefer_m)
and {n,'in','m',2,['abbr']='on'}
or {n,'in','cm',0,['abbr']='on'}, mw.ustring.sub(s, i+2)
end
return '', unconverted
end
if force_cm and c == nil then
return '', force_unit(unconverted, 'cm')
end
if force_m and c ~= nil then
return '', force_unit(unconverted, 'm')
end
return '', unconverted
end
function convert(frame, args)
local str, suffix = splitsuffix(args[1] or '')
local targs, str = get_convert_args(str, args['prefer'] or '', args['enforce'] or '', args['ri'] or '')
str = str .. suffix
if type(targs) == 'table' then
return frame:expandTemplate{ title = 'convert', args = targs} .. str
else
return str
end
end
function p.main(frame)
return convert(frame, frame.args[1] and frame.args or frame:getParent().args)
end
return p
eae45d697c1881086eab11f622b4400e5c177c63
Module:Protect
828
182
418
417
2023-09-30T19:37:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Protect]]
Scribunto
text/plain
local function processResult(options, success, ...)
if not success then
local message = tostring(... or '(no message)')
if options.removeLocation then
message = string.gsub(message, '^Module:[^:]+:%d+: ', '', 1)
end
return string.format(options.errFormat, message)
end
return ...
end
local function protect(func, errFormat, options)
if type(errFormat) == 'table' then
options = options or errFormat
errFormat = nil
end
options = mw.clone(options) or {}
options.errFormat = errFormat or options.errFormat or 'Error: %s'
if not options.raw then
options.errFormat = '<strong class="error">' .. options.errFormat .. '</strong>'
end
options.removeLocation = options.removeLocation == nil or options.removeLocation
return function (...)
return processResult(options, pcall(func, ...))
end
end
return protect
b9ef98da3f3df35e58a7136f9a9c73a12aa8b35d
Template:Country2nationality
10
183
420
419
2023-09-30T19:37:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Country2nationality]]
wikitext
text/x-wiki
<includeonly>{{safesubst<noinclude/>:#ifeq:{{safesubst<noinclude/>:#invoke:String|len|s={{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}}}}|2|{{safesubst<noinclude/>:Iso2nationality| {{safesubst<noinclude/>:ISO 3166 code|{{{1}}}}} }}| {{safesubst<noinclude/>:#if:{{{1|}}}| {{safesubst<noinclude/>:#switch: {{{1}}} | England = English | Scotland = Scottish | Wales = Welsh | Catalonia = Catalan | Kosovo = Kosovan }}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9c6b20fc59b2033477fb4dea0ffd1984bd673368
Template:ISO 3166 code
10
184
422
421
2023-09-30T19:37:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:ISO_3166_code]]
wikitext
text/x-wiki
{{safesubst<noinclude/>:#invoke:ISO 3166|code|{{{1}}}|{{{2|}}}}}<noinclude>
{{Documentation|content={{ISO 3166 conversion template doc}}}}
</noinclude>
06f8325798ef5cb3ed4eb035d562ab9f8656cc6c
Template:Div col/styles.css
10
46
424
88
2023-09-30T19:37:02Z
Führerredux
2
Führerredux changed the content model of the page [[Template:Div col/styles.css]] from "plain text" to "Sanitized CSS"
sanitized-css
text/css
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
/* Unbulleted lists */
.plainlist ol,
.plainlist ul {
line-height: inherit;
list-style: none;
margin: 0;
}
.plainlist ol li,
.plainlist ul li {
margin-bottom: 0;
}
76c2c0a042b9164cff638cd44af5ab129702c141
Module:ISO 3166
828
185
425
423
2023-09-30T19:37:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:ISO_3166]]
Scribunto
text/plain
-- to enable us to replicate the current functioning of Country extract, we need to deal with:
-- 2 {{<name>}} DONE!
-- 3 [[<name>]] DONE!
-- 4 [[<name>|<junk>]] DONE!
-- 5 [[image:flag of <country>.[svg|gif|png|jpg]|\d+px]] DONE!
local p = {}
local getArgs = require("Module:Arguments").getArgs
local data = mw.loadData("Module:ISO 3166/data/National")
--[[----------F I N D N A M E----------]]-- -- Finds the name in the database
local function findname(code,cdata,qry)
local sqry = p.strip(qry)
if cdata["name"] and sqry==p.strip(cdata["name"])
or cdata["isoname"] and sqry==p.strip(cdata["isoname"])
or not cdata["nocode"] and sqry==code
or sqry==cdata["alpha3"] or sqry==cdata["numeric"]
then
return true
end
for _,tname in pairs(cdata["isonames"] or {}) do
if sqry==p.strip(tname) then
return true
end
end
for _,tname in pairs(cdata["altnames"] or {}) do
if sqry==p.strip(tname) then
return true
end
end
return false
end
--[[----------I S O N A M E----------]]-- -- Find the ISO name of a country/region
local function isoname(data,code,lang)
if data[code]["isonames"] then
local name = data[code]["isodisplaynames"] and data[code]["isodisplaynames"][lang]
or data[code]["isonames"][lang]
or data[code]["isodisplaynames"] and data[code]["isodisplaynames"][data[code]["defaultlang"] or data["defaultlang"]]
or data[code]["isonames"][data[code]["defaultlang"] or data["defaultlang"]]
or data[code]["isodisplaynames"] and data[code]["isodisplaynames"]["en"]
or data[code]["isonames"]["en"]
if name then return name end
for _,iname in pairs(data[code]["isonames"]) do return iname end
return data[code]["isodisplayname"] or data[code]["isoname"]
else
return data[code]["isodisplayname"] or data[code]["isoname"]
end
end
--[[----------S T R I P----------]]-- -- Removes junk from the input
function p.strip(text)
local accents = {["À"]="A",["Á"]="A",["Â"]="A",["Ã"]="A", -- accent list
["Ä"]="A",["Å"]="A",["Ç"]="C",["È"]="E",["É"]="E",
["Ê"]="E",["Ë"]="E",["Ì"]="I",["Í"]="I",["Î"]="I",
["Ï"]="I",["Ñ"]="N",["Ò"]="O",["Ó"]="O",["Ô"]="O",
["Õ"]="O",["Ö"]="O",["Ø"]="O",["Ù"]="U",["Ú"]="U",
["Û"]="U",["Ü"]="U",["Ý"]="Y"
}
local remove = {"NATION OF","COUNTRY OF","TERRITORY OF", -- text to be removed list
"FLAG OF","FLAG","KINGDOM OF","STATE OF"," STATE ",
"PROVINCE OF","PROVINCE","TERRITORY"
}
local patterns = {[".+:"]="",["|.+"]="",["%(.-%)"]="", -- patterns to follow (order may matter)
["%..*"]="",["^THE "]="",["%_"]=" ",["%-"]=" ",
["%d%d?%d?PX"]="",
}
text = mw.ustring.upper(text) -- Case insensitivity
text = mw.ustring.gsub(text,"[À-Ý]",accents) -- Deaccent
for pattern,value in pairs(patterns) do -- Follow patterns
text = mw.ustring.gsub(text,pattern,value)
end
for _,words in pairs(remove) do -- Remove unneeded words
text = mw.ustring.gsub(text,words,"")
end
text = mw.ustring.gsub(text,"%W","") -- Remove non alpha-numeric
return text
end
--[[----------P . C A L L S T R I P ---------]]-- -- Calls P.strip but using Module:Arguments
function p.callstrip(frame)
local args = getArgs(frame)
return p.strip(args[1]) or ""
end
--[[----------P . L U A C O D E---------]]-- -- Makes the ISO code of a country
function p.luacode(args)
if string.find(args[1] or '',"%-") then
args[1], args[2] = string.match(args[1] or '',"^([^%-]*)%-(.*)$")
end
if args[1] then args[1] = p.strip(args[1]) end
if args[2] then args[2] = p.strip(args[2]) end
if args["codetype"]=="3" then
args["codetype"]="alpha3"
end
local eot = args.error or ""
local catnocountry = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure country]]'
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure subdivision]]'
if not args[1] then
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry, '<span style="font-size:100%" class="error">"No parameter for the country given"</span>'
end
if not args[2] then --3166-1 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,args[1]) then
if args["codetype"]=="numeric" or args["codetype"]=="alpha3" then
return cdata[args["codetype"]]
else
return alpha2
end
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
else --3166-2 code
for alpha2,cdata in pairs(data) do
if findname(alpha2,cdata,args[1]) then
if mw.ustring.match(alpha2,"GB") then -- For England, Wales etc.
alpha2 = "GB"
end
local sdata = mw.loadData("Module:ISO 3166/data/"..alpha2)
local empty = true
for scode,scdata in pairs(sdata) do
if type(scdata)=="table" then
empty = false
if findname(scode,scdata,args[2]) then
return alpha2.."-"..scode
end
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnosubdivision = '' end
return catnosubdivision
end
end
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry = '' end
return catnocountry
end
end
--[[----------P . C O D E---------]]-- -- Calls P.Luacode but using Module:Arguments
function p.code(frame)
return p.luacode(getArgs(frame)) or ""
end
--[[----------P . N U M E R I C---------]]-- -- Calls P.Luacode but using Module:Arguments and setting it to output a numeric value
function p.numeric(frame)
local args = getArgs(frame)
args["codetype"]="numeric"
return p.luacode(args) or ""
end
--[[----------P . L U A N A M E---------]]-- -- Makes the ISO/common name of a country
function p.luaname(args)
local code1 = p.luacode(args)
local code2 = ''
if string.find(code1,"%-") then
code1, code2 = string.match(code1,"^([^%-]*)%-(.*)$")
end
if string.find(code1,"^%u%u$") then
if code2=="" then --3166-1 alpha-2 code
if data[code1] then
return (args.isoname or args.lang) and isoname(data,code1,args.lang)
or (data[code1]["displayname"] or data[code1]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
else --3166-2 code
local sdata
if data[code1] then
sdata = mw.loadData("Module:ISO 3166/data/"..code1)
else
return '[[Category:Wikipedia page with obscure country]]'
end
if sdata[code2] then
return (args.isoname or args.lang) and isoname(sdata,code2,args.lang)
or (sdata[code2]["displayname"] or sdata[code2]["name"])
else
return '[[Category:Wikipedia page with obscure country]]'
end
end
end
end
--[[----------P . N A M E---------]]-- -- Calls P.Luaname but using Module:Arguments
function p.name(frame)
return p.luaname(getArgs(frame)) or ""
end
--[[----------P . G E O C O O R D I N S E R T---------]]-- -- Wrapper for Module:Coordinates.coordinsert
function p.geocoordinsert(frame)
-- {{#invoke:ISO 3166|geocoordinsert|{{coord|...}}
-- |country=..|subdivision1=...|subdivision2=...
-- |type=...|scale=...|dim=...|source=...|globe=...
-- }}
local args = frame.args
local subdivisionqueried = false
local catnocountry = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure country]]'
local catnosubdivision = (args.nocat and args.nocat == 'true') and ''
or '[[Category:Wikipedia page with obscure subdivision]]' or ''
local tracking = ''
local targs = {}
targs[1] = args[1] or ''
for i, v in pairs(args) do
if i == 'country' and not mw.ustring.find(targs[1], 'region:') then
local country = v
local k, region = 1, ''
-- look for a valid subdivision
while region == '' and k < 3 do
local subdivision = args['subdivision' .. k] or ''
if subdivision ~= '' then
region = p.luacode({country, subdivision, nocat = 'true'})
subdivisionqueried = true
end
k = k + 1
end
-- subdivision lookup failed or never attempted, try country only
if region == '' then
region = p.luacode({country, nocat = 'true'})
if mw.title.getCurrentTitle().namespace ~= 0 then catnocountry, catnosubdivision = '', '' end
if region == '' then
tracking = tracking .. catnocountry
elseif subdivisionqueried == true then
tracking = tracking .. catnosubdivision
end
end
-- something worked, add it to the targs
if region ~= '' then
targs[#targs + 1] = 'region:' .. region
end
elseif i == 'type' or i == 'scale' or i == 'dim'
or i == 'source' or i == 'globe' then
targs[#targs + 1] = i .. ':' .. v
end
end
-- call Module:Coordinates.coordinsert if there is something to insert
if #targs > 1 then
local coordinsert = require('Module:Coordinates').coordinsert
return coordinsert({args = targs}) .. tracking
end
-- otherwise, just return the coordinates
return targs[1] .. tracking
end
return p
6bc354f2610f29e712065cbe3ea814144fa3a600
Module:ISO 3166/data/National
828
186
427
426
2023-09-30T19:37:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:ISO_3166/data/National]]
Scribunto
text/plain
return {
["AD"] = {alpha3="AND",numeric="020",name="Andorra"},
["AE"] = {alpha3="ARE",numeric="784",name="United Arab Emirates",altnames={"UAE"}},
["AF"] = {alpha3="AFG",numeric="004",name="Afghanistan"},
["AG"] = {alpha3="ATG",numeric="028",name="Antigua and Barbuda"},
["AI"] = {alpha3="AIA",numeric="660",name="Anguilla"},
["AL"] = {alpha3="ALB",numeric="008",name="Albania"},
["AM"] = {alpha3="ARM",numeric="051",name="Armenia"},
["AO"] = {alpha3="AGO",numeric="024",name="Angola"},
["AQ"] = {alpha3="ATA",numeric="010",name="Antarctica"},
["AR"] = {alpha3="ARG",numeric="032",name="Argentina"},
["AS"] = {alpha3="ASM",numeric="016",name="American Samoa"},
["AT"] = {alpha3="AUT",numeric="040",name="Austria"},
["AU"] = {alpha3="AUS",numeric="036",name="Australia"},
["AW"] = {alpha3="ABW",numeric="533",name="Aruba"},
["AX"] = {alpha3="ALA",numeric="248",name="Åland Islands",altnames={"Aland Islands","Åland","Aland"}},
["AZ"] = {alpha3="AZE",numeric="031",name="Azerbaijan"},
["BA"] = {alpha3="BIH",numeric="070",name="Bosnia and Herzegovina",altnames={"Bosnia"}},
["BB"] = {alpha3="BRB",numeric="052",name="Barbados"},
["BD"] = {alpha3="BGD",numeric="050",name="Bangladesh"},
["BE"] = {alpha3="BEL",numeric="056",name="Belgium"},
["BF"] = {alpha3="BFA",numeric="854",name="Burkina Faso"},
["BG"] = {alpha3="BGR",numeric="100",name="Bulgaria"},
["BH"] = {alpha3="BHR",numeric="048",name="Bahrain"},
["BI"] = {alpha3="BDI",numeric="108",name="Burundi"},
["BJ"] = {alpha3="BEN",numeric="204",name="Benin"},
["BL"] = {alpha3="BLM",numeric="652",name="Saint Barthélemy",altnames={"St Barthelemy"}},
["BM"] = {alpha3="BMU",numeric="060",name="Bermuda"},
["BN"] = {alpha3="BRN",numeric="096",name="Brunei",isoname="Brunei Darussalam"},
["BO"] = {alpha3="BOL",numeric="068",name="Bolivia",isoname="Bolivia (Plurinational State of)"},
["BQ"] = {alpha3="BES",numeric="535",name="Caribbean Netherlands",isoname="Bonaire, Sint Eustatius and Saba"},
["BR"] = {alpha3="BRA",numeric="076",name="Brazil"},
["BS"] = {alpha3="BHS",numeric="044",name="Bahamas"},
["BT"] = {alpha3="BTN",numeric="064",name="Bhutan"},
["BV"] = {alpha3="BVT",numeric="074",name="Bouvet Island"},
["BW"] = {alpha3="BWA",numeric="072",name="Botswana"},
["BY"] = {alpha3="BLR",numeric="112",name="Belarus"},
["BZ"] = {alpha3="BLZ",numeric="084",name="Belize"},
["CA"] = {alpha3="CAN",numeric="124",name="Canada"},
["CC"] = {alpha3="CCK",numeric="166",name="Cocos (Keeling) Islands",altnames={"Cocos Islands","Keeling Islands"}},
["CD"] = {alpha3="COD",numeric="180",name="Democratic Republic of the Congo",isoname="Congo, Democratic Republic of the",altnames={"Congo-Kinshasa","DRC","DR Congo"}},
["CF"] = {alpha3="CAF",numeric="140",name="Central African Republic",altnames={"CAR"}},
["CG"] = {alpha3="COG",numeric="178",name="Republic of the Congo",isoname="Congo",altnames={"Congo-Brazzaville"}},
["CH"] = {alpha3="CHE",numeric="756",name="Switzerland"},
["CI"] = {alpha3="CIV",numeric="384",name="Côte d'Ivoire",altnames={"Ivory Coast"}},
["CK"] = {alpha3="COK",numeric="184",name="Cook Islands"},
["CL"] = {alpha3="CHL",numeric="152",name="Chile"},
["CM"] = {alpha3="CMR",numeric="120",name="Cameroon"},
["CN"] = {alpha3="CHN",numeric="156",name="China",altnames={"People's Republic of China","PRC"}},
["CO"] = {alpha3="COL",numeric="170",name="Colombia"},
["CR"] = {alpha3="CRI",numeric="188",name="Costa Rica"},
["CU"] = {alpha3="CUB",numeric="192",name="Cuba"},
["CV"] = {alpha3="CPV",numeric="132",name="Cabo Verde",altnames={"Cape Verde"}},
["CW"] = {alpha3="CUW",numeric="531",name="Curaçao",altnames={"Curacao"}},
["CX"] = {alpha3="CXR",numeric="162",name="Christmas Island"},
["CY"] = {alpha3="CYP",numeric="196",name="Cyprus"},
["CZ"] = {alpha3="CZE",numeric="203",name="Czech Republic",isoname="Czechia"},
["DE"] = {alpha3="DEU",numeric="276",name="Germany"},
["DJ"] = {alpha3="DJI",numeric="262",name="Djibouti"},
["DK"] = {alpha3="DNK",numeric="208",name="Denmark"},
["DM"] = {alpha3="DMA",numeric="212",name="Dominica"},
["DO"] = {alpha3="DOM",numeric="214",name="Dominican Republic"},
["DZ"] = {alpha3="DZA",numeric="012",name="Algeria"},
["EC"] = {alpha3="ECU",numeric="218",name="Ecuador"},
["EE"] = {alpha3="EST",numeric="233",name="Estonia"},
["EG"] = {alpha3="EGY",numeric="818",name="Egypt"},
["EH"] = {alpha3="ESH",numeric="732",name="Western Sahara"},
["ER"] = {alpha3="ERI",numeric="232",name="Eritrea"},
["ES"] = {alpha3="ESP",numeric="724",name="Spain"},
["ET"] = {alpha3="ETH",numeric="231",name="Ethiopia"},
["FI"] = {alpha3="FIN",numeric="246",name="Finland"},
["FJ"] = {alpha3="FJI",numeric="242",name="Fiji"},
["FK"] = {alpha3="FLK",numeric="238",name="Falkland Islands",isoname="Falkland Islands (Malvinas)",altnames={"Falklands","Islas Malvinas","Malvinas","Malvinas Islands"}},
["FM"] = {alpha3="FSM",numeric="583",name="Federated States of Micronesia",isoname="Micronesia (Federated States of)",altnames={"Micronesia"}},
["FO"] = {alpha3="FRO",numeric="234",name="Faroe Islands",altnames={"Faroer","Faeroer"}},
["FR"] = {alpha3="FRA",numeric="250",name="France"},
["GA"] = {alpha3="GAB",numeric="266",name="Gabon"},
["GB"] = {alpha3="GBR",numeric="826",name="United Kingdom",isoname="United Kingdom of Great Britain and Northern Ireland",altnames={"UK","Great Britain"}},
["GB-ENG"] = {alpha3="ENG",numeric="000",name="England"}, --Considered to be a country
["GB-NIR"] = {alpha3="NIR",numeric="000",name="Northern Ireland"}, --Considered to be a country
["GB-SCT"] = {alpha3="SCT",numeric="000",name="Scotland"}, --Considered to be a country
["GB-WLS"] = {alpha3="WLS",numeric="000",name="Wales"}, --Considered to be a country
["GB-EAW"] = {alpha3="EAW",numeric="000",name="England and Wales"}, --Considered to be a country
["GD"] = {alpha3="GRD",numeric="308",name="Grenada"},
["GE"] = {alpha3="GEO",numeric="268",name="Georgia"},
["GF"] = {alpha3="GUF",numeric="254",name="French Guiana"},
["GG"] = {alpha3="GGY",numeric="831",name="Guernsey"},
["GH"] = {alpha3="GHA",numeric="288",name="Ghana"},
["GI"] = {alpha3="GIB",numeric="292",name="Gibraltar"},
["GL"] = {alpha3="GRL",numeric="304",name="Greenland"},
["GM"] = {alpha3="GMB",numeric="270",name="Gambia"},
["GN"] = {alpha3="GIN",numeric="324",name="Guinea"},
["GP"] = {alpha3="GLP",numeric="312",name="Guadeloupe"},
["GQ"] = {alpha3="GNQ",numeric="226",name="Equatorial Guinea"},
["GR"] = {alpha3="GRC",numeric="300",name="Greece"},
["GS"] = {alpha3="SGS",numeric="239",name="South Georgia and the South Sandwich Islands"},
["GT"] = {alpha3="GTM",numeric="320",name="Guatemala"},
["GU"] = {alpha3="GUM",numeric="316",name="Guam"},
["GW"] = {alpha3="GNB",numeric="624",name="Guinea-Bissau"},
["GY"] = {alpha3="GUY",numeric="328",name="Guyana"},
["HK"] = {alpha3="HKG",numeric="344",name="Hong Kong",altnames={"Hong Kong SAR","HKSAR"}},
["HM"] = {alpha3="HMD",numeric="334",name="Heard Island and McDonald Islands",altnames={"Heard and McDonald Islands"}},
["HN"] = {alpha3="HND",numeric="340",name="Honduras"},
["HR"] = {alpha3="HRV",numeric="191",name="Croatia"},
["HT"] = {alpha3="HTI",numeric="332",name="Haiti"},
["HU"] = {alpha3="HUN",numeric="348",name="Hungary"},
["ID"] = {alpha3="IDN",numeric="360",name="Indonesia"},
["IE"] = {alpha3="IRL",numeric="372",name="Ireland",altnames={"Republic of Ireland"}},
["IL"] = {alpha3="ISR",numeric="376",name="Israel"},
["IM"] = {alpha3="IMN",numeric="833",name="Isle of Man"},
["IN"] = {alpha3="IND",numeric="356",name="India"},
["IO"] = {alpha3="IOT",numeric="086",name="British Indian Ocean Territory"},
["IQ"] = {alpha3="IRQ",numeric="368",name="Iraq"},
["IR"] = {alpha3="IRN",numeric="364",name="Iran",isoname="Iran (Islamic Republic of)"},
["IS"] = {alpha3="ISL",numeric="352",name="Iceland"},
["IT"] = {alpha3="ITA",numeric="380",name="Italy"},
["JE"] = {alpha3="JEY",numeric="832",name="Jersey"},
["JM"] = {alpha3="JAM",numeric="388",name="Jamaica"},
["JO"] = {alpha3="JOR",numeric="400",name="Jordan"},
["JP"] = {alpha3="JPN",numeric="392",name="Japan"},
["KE"] = {alpha3="KEN",numeric="404",name="Kenya"},
["KG"] = {alpha3="KGZ",numeric="417",name="Kyrgyzstan"},
["KH"] = {alpha3="KHM",numeric="116",name="Cambodia"},
["KI"] = {alpha3="KIR",numeric="296",name="Kiribati"},
["KM"] = {alpha3="COM",numeric="174",name="Comoros"},
["KN"] = {alpha3="KNA",numeric="659",name="Saint Kitts and Nevis",altnames={"St Kitts and Nevis"}},
["KP"] = {alpha3="PRK",numeric="408",name="North Korea",isoname="Korea (Democratic People's Republic of)",altnames={"Democratic People's Republic of Korea"}},
["KR"] = {alpha3="KOR",numeric="410",name="South Korea",isoname="Korea, Republic of",altnames={"Republic of Korea"}},
["KW"] = {alpha3="KWT",numeric="414",name="Kuwait"},
["KY"] = {alpha3="CYM",numeric="136",name="Cayman Islands"},
["KZ"] = {alpha3="KAZ",numeric="398",name="Kazakhstan"},
["LA"] = {alpha3="LAO",numeric="418",name="Laos",isoname="Lao People's Democratic Republic"},
["LB"] = {alpha3="LBN",numeric="422",name="Lebanon"},
["LC"] = {alpha3="LCA",numeric="662",name="Saint Lucia",altnames={"St Lucia"}},
["LI"] = {alpha3="LIE",numeric="438",name="Liechtenstein"},
["LK"] = {alpha3="LKA",numeric="144",name="Sri Lanka"},
["LR"] = {alpha3="LBR",numeric="430",name="Liberia"},
["LS"] = {alpha3="LSO",numeric="426",name="Lesotho"},
["LT"] = {alpha3="LTU",numeric="440",name="Lithuania"},
["LU"] = {alpha3="LUX",numeric="442",name="Luxembourg"},
["LV"] = {alpha3="LVA",numeric="428",name="Latvia"},
["LY"] = {alpha3="LBY",numeric="434",name="Libya"},
["MA"] = {alpha3="MAR",numeric="504",name="Morocco"},
["MC"] = {alpha3="MCO",numeric="492",name="Monaco"},
["MD"] = {alpha3="MDA",numeric="498",name="Moldova",isoname="Moldova, Republic of"},
["ME"] = {alpha3="MNE",numeric="499",name="Montenegro"},
["MF"] = {alpha3="MAF",numeric="663",name="Saint-Martin",isoname="Saint Martin (French part)",altnames={"St Martin","St Martin (French part)","Collectivity of Saint Martin","Collectivity of St Martin"}},
["MG"] = {alpha3="MDG",numeric="450",name="Madagascar"},
["MH"] = {alpha3="MHL",numeric="584",name="Marshall Islands"},
["MK"] = {alpha3="MKD",numeric="807",name="North Macedonia",altnames={"Republic of North Macedonia","Macedonia","Republic of Macedonia","Macedonia, the former Yugoslav Republic of"}},
["ML"] = {alpha3="MLI",numeric="466",name="Mali"},
["MM"] = {alpha3="MMR",numeric="104",name="Myanmar",altnames={"Burma"}},
["MN"] = {alpha3="MNG",numeric="496",name="Mongolia"},
["MO"] = {alpha3="MAC",numeric="446",name="Macau",isoname="Macao",altnames={"Macau SAR","Macao SAR"}},
["MP"] = {alpha3="MNP",numeric="580",name="Northern Mariana Islands"},
["MQ"] = {alpha3="MTQ",numeric="474",name="Martinique"},
["MR"] = {alpha3="MRT",numeric="478",name="Mauritania"},
["MS"] = {alpha3="MSR",numeric="500",name="Montserrat"},
["MT"] = {alpha3="MLT",numeric="470",name="Malta"},
["MU"] = {alpha3="MUS",numeric="480",name="Mauritius"},
["MV"] = {alpha3="MDV",numeric="462",name="Maldives"},
["MW"] = {alpha3="MWI",numeric="454",name="Malawi"},
["MX"] = {alpha3="MEX",numeric="484",name="Mexico"},
["MY"] = {alpha3="MYS",numeric="458",name="Malaysia"},
["MZ"] = {alpha3="MOZ",numeric="508",name="Mozambique"},
["NA"] = {alpha3="NAM",numeric="516",name="Namibia"},
["NC"] = {alpha3="NCL",numeric="540",name="New Caledonia"},
["NE"] = {alpha3="NER",numeric="562",name="Niger"},
["NF"] = {alpha3="NFK",numeric="574",name="Norfolk Island"},
["NG"] = {alpha3="NGA",numeric="566",name="Nigeria"},
["NI"] = {alpha3="NIC",numeric="558",name="Nicaragua"},
["NL"] = {alpha3="NLD",numeric="528",name="Netherlands"},
["NO"] = {alpha3="NOR",numeric="578",name="Norway"},
["NP"] = {alpha3="NPL",numeric="524",name="Nepal"},
["NR"] = {alpha3="NRU",numeric="520",name="Nauru"},
["NU"] = {alpha3="NIU",numeric="570",name="Niue"},
["NZ"] = {alpha3="NZL",numeric="554",name="New Zealand",altnames={"Aotearoa"}},
["OM"] = {alpha3="OMN",numeric="512",name="Oman"},
["PA"] = {alpha3="PAN",numeric="591",name="Panama"},
["PE"] = {alpha3="PER",numeric="604",name="Peru"},
["PF"] = {alpha3="PYF",numeric="258",name="French Polynesia"},
["PG"] = {alpha3="PNG",numeric="598",name="Papua New Guinea"},
["PH"] = {alpha3="PHL",numeric="608",name="Philippines"},
["PK"] = {alpha3="PAK",numeric="586",name="Pakistan"},
["PL"] = {alpha3="POL",numeric="616",name="Poland"},
["PM"] = {alpha3="SPM",numeric="666",name="Saint Pierre and Miquelon",altnames={"St Pierre and Miquelon"}},
["PN"] = {alpha3="PCN",numeric="612",name="Pitcairn"},
["PR"] = {alpha3="PRI",numeric="630",name="Puerto Rico"},
["PS"] = {alpha3="PSE",numeric="275",name="Palestine",isoname="Palestine, State of",altnames={"State of Palestine"}},
["PT"] = {alpha3="PRT",numeric="620",name="Portugal"},
["PW"] = {alpha3="PLW",numeric="585",name="Palau"},
["PY"] = {alpha3="PRY",numeric="600",name="Paraguay"},
["QA"] = {alpha3="QAT",numeric="634",name="Qatar"},
["RE"] = {alpha3="REU",numeric="638",name="Réunion"},
["RO"] = {alpha3="ROU",numeric="642",name="Romania"},
["RS"] = {alpha3="SRB",numeric="688",name="Serbia"},
["RU"] = {alpha3="RUS",numeric="643",name="Russia",isoname="Russian Federation"},
["RW"] = {alpha3="RWA",numeric="646",name="Rwanda"},
["SA"] = {alpha3="SAU",numeric="682",name="Saudi Arabia"},
["SB"] = {alpha3="SLB",numeric="090",name="Solomon Islands"},
["SC"] = {alpha3="SYC",numeric="690",name="Seychelles"},
["SD"] = {alpha3="SDN",numeric="729",name="Sudan"},
["SE"] = {alpha3="SWE",numeric="752",name="Sweden"},
["SG"] = {alpha3="SGP",numeric="702",name="Singapore"},
["SH"] = {alpha3="SHN",numeric="654",name="Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {alpha3="SVN",numeric="705",name="Slovenia"},
["SJ"] = {alpha3="SJM",numeric="744",name="Svalbard and Jan Mayen"},
["SK"] = {alpha3="SVK",numeric="703",name="Slovakia"},
["SL"] = {alpha3="SLE",numeric="694",name="Sierra Leone"},
["SM"] = {alpha3="SMR",numeric="674",name="San Marino"},
["SN"] = {alpha3="SEN",numeric="686",name="Senegal"},
["SO"] = {alpha3="SOM",numeric="706",name="Somalia"},
["SR"] = {alpha3="SUR",numeric="740",name="Suriname"},
["SS"] = {alpha3="SSD",numeric="728",name="South Sudan"},
["ST"] = {alpha3="STP",numeric="678",name="São Tomé and Príncipe",isoname="Sao Tome and Principe",altnames={"Democratic Republic of Sao Tome and Principe"}},
["SV"] = {alpha3="SLV",numeric="222",name="El Salvador"},
["SX"] = {alpha3="SXM",numeric="534",name="Sint Maarten",isoname="Sint Maarten (Dutch part)",altnames={"St Maarten","Saint Martin (Dutch part)","St Martin (Dutch part)"}},
["SY"] = {alpha3="SYR",numeric="760",name="Syria",isoname="Syrian Arab Republic"},
["SZ"] = {alpha3="SWZ",numeric="748",name="Eswatini",altnames={"Swaziland"}},
["TC"] = {alpha3="TCA",numeric="796",name="Turks and Caicos Islands"},
["TD"] = {alpha3="TCD",numeric="148",name="Chad"},
["TF"] = {alpha3="ATF",numeric="260",name="French Southern and Antarctic Lands",isoname="French Southern Territories"},
["TG"] = {alpha3="TGO",numeric="768",name="Togo"},
["TH"] = {alpha3="THA",numeric="764",name="Thailand"},
["TJ"] = {alpha3="TJK",numeric="762",name="Tajikistan"},
["TK"] = {alpha3="TKL",numeric="772",name="Tokelau"},
["TL"] = {alpha3="TLS",numeric="626",name="Timor-Leste",altnames={"East Timor"}},
["TM"] = {alpha3="TKM",numeric="795",name="Turkmenistan"},
["TN"] = {alpha3="TUN",numeric="788",name="Tunisia"},
["TO"] = {alpha3="TON",numeric="776",name="Tonga"},
["TR"] = {alpha3="TUR",numeric="792",name="Turkey",isoname="Türkiye"},
["TT"] = {alpha3="TTO",numeric="780",name="Trinidad and Tobago"},
["TV"] = {alpha3="TUV",numeric="798",name="Tuvalu"},
["TW"] = {alpha3="TWN",numeric="158",name="Taiwan",isoname="Taiwan, Province of China",altnames={"Republic of China"}},
["TZ"] = {alpha3="TZA",numeric="834",name="Tanzania",isoname="Tanzania, United Republic of"},
["UA"] = {alpha3="UKR",numeric="804",name="Ukraine"},
["UG"] = {alpha3="UGA",numeric="800",name="Uganda"},
["UM"] = {alpha3="UMI",numeric="581",name="United States Minor Outlying Islands"},
["US"] = {alpha3="USA",numeric="840",name="United States",isoname="United States of America",altnames={"US","USA","U.S."}},
["UY"] = {alpha3="URY",numeric="858",name="Uruguay"},
["UZ"] = {alpha3="UZB",numeric="860",name="Uzbekistan"},
["VA"] = {alpha3="VAT",numeric="336",name="Vatican City",isoname="Holy See",altnames={"Holy See (Vatican City State)","Vatican City State"}},
["VC"] = {alpha3="VCT",numeric="670",name="Saint Vincent and the Grenadines",altnames={"St Vincent and the Grenadines"}},
["VE"] = {alpha3="VEN",numeric="862",name="Venezuela",isoname="Venezuela (Bolivarian Republic of)"},
["VG"] = {alpha3="VGB",numeric="092",name="British Virgin Islands",isoname="Virgin Islands (British)",altnames={"UK Virgin Islands","BVI"}},
["VI"] = {alpha3="VIR",numeric="850",name="United States Virgin Islands",isoname="Virgin Islands (U.S.)",altnames={"US Virgin Islands","USVI"}},
["VN"] = {alpha3="VNM",numeric="704",name="Vietnam",isoname="Viet Nam"},
["VU"] = {alpha3="VUT",numeric="548",name="Vanuatu"},
["WF"] = {alpha3="WLF",numeric="876",name="Wallis and Futuna"},
["WS"] = {alpha3="WSM",numeric="882",name="Samoa"},
["YE"] = {alpha3="YEM",numeric="887",name="Yemen"},
["YT"] = {alpha3="MYT",numeric="175",name="Mayotte"},
["ZA"] = {alpha3="ZAF",numeric="710",name="South Africa"},
["ZM"] = {alpha3="ZMB",numeric="894",name="Zambia"},
["ZW"] = {alpha3="ZWE",numeric="716",name="Zimbabwe"}
}
1ae753fe1fa53ce062b0a008dbc9778d589666f0
Template:Collapse top
10
187
429
428
2023-09-30T19:37:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Collapse_top]]
wikitext
text/x-wiki
<div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section -->
{| <!-- Template:Collapse top --> class="mw-collapsible mw-archivedtalk {{<includeonly>safesubst:</includeonly>#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{<includeonly>safesubst:</includeonly>#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;"
|-
! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}|left|{{<includeonly>safesubst:</includeonly>#if:{{{align|}}}|left|center}}}}; {{<includeonly>safesubst:</includeonly>#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="font-size:115%;{{<includeonly>safesubst:</includeonly>#if:{{{left|}}}||margin:0 4em}}">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div>
{{<includeonly>safesubst:</includeonly>#if:{{{warning|{{{2|}}}}}}
|{{<includeonly>safesubst:</includeonly>!}}-
{{<includeonly>safesubst:</includeonly>!}} style="text-align:center; font-style:italic;" {{<includeonly>safesubst:</includeonly>!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }}
|-
| style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{<includeonly>safesubst:</includeonly>!}}<noinclude>
{{lorem ipsum|3}}
{{Collapse bottom}}
{{Documentation}}
</noinclude>
247cc43d5198baf8804d0926529cbbdd7be91113
Template:Collapse bottom
10
188
431
430
2023-09-30T19:37:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Collapse_bottom]]
wikitext
text/x-wiki
<includeonly>|}</div></includeonly><noinclude>
{{Documentation|Template:Collapse top/doc}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
64b210e8ab0882b262da50e9fbccf2132bc34fab
Template:Linkless exists
10
189
433
432
2023-09-30T19:37:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Linkless_exists]]
wikitext
text/x-wiki
{{#if:{{PROTECTIONEXPIRY:edit|{{{1|}}}}}|{{{2|true}}}|{{{3|}}}}}<noinclude>{{documentation}}</noinclude>
1aa1e6e4f3589f452babd54a7c0bbc590dc2f96d
Template:Notice
10
190
435
434
2023-09-30T19:37:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Notice]]
wikitext
text/x-wiki
{{Mbox
| name = Notice
| demospace = {{{demospace|}}}
| style = {{#if:{{{style|}}} |{{{style}}} }}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = notice
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice|alt={{{imagealt|}}}]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice|alt={{{imagealt|}}}]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
2cbdbb721ca517005f6827650eef5b0f17537a43
Module:ParameterCount
828
191
437
436
2023-09-30T19:37:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:ParameterCount]]
Scribunto
text/plain
-- This module produces a count of all the arguments passed to it.
local yesno = require('Module:Yesno')
-- Trim a string
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
-- Test whether a string is blank
local function isBlank(s)
return not s:find('%S')
end
-- Tests whether a string is a valid positional key, and if so, returns it. If
-- the key is invalid, this returns nil.
local function isPositionalKey(s)
s = trim(s)
if s:find('^[1-9][0-9]*$') then
return tonumber(s)
end
end
-- Return the count of all arguments for which testFunc returns a truthy value.
local function count(args, testFunc)
local ret = 0
for key, val in pairs(args) do
if testFunc(key, val) then
ret = ret + 1
end
end
return ret
end
-- Check shared arguments and get the parent argument count.
local function main(frame, testFunc)
local blankifiedTestFunc
if yesno(frame.args.checkblanks) ~= false then
-- Extend the test function to check for blanks as well.
blankifiedTestFunc = function (key, val)
if not isBlank(val) then
return testFunc(key, val)
end
end
else
blankifiedTestFunc = testFunc
end
return count(frame:getParent().args, blankifiedTestFunc)
end
return {
-- Called with {{#invoke:ParameterCount|all}}
-- All specified parameters are counted, even those not supported by the
-- template.
all = function (frame)
return main(frame, function () return true end)
end,
-- Called with {{#invoke:ParameterCount|main}}
-- Users can specify a list of parameters to check, and a list of Lua
-- Ustring patterns to check each parameter against.
main = function (frame)
local args = frame.args
local keys, patterns = {}, {}
-- Get key list
for i, key in ipairs(args) do
local positionalKey = isPositionalKey(key)
if positionalKey then
keys[positionalKey] = true
else
keys[trim(key)] = true
end
end
-- Get patterns
do
local function getPattern(i)
local pattern = args['pattern' .. tostring(i)]
if pattern and pattern ~= '' then
return pattern
end
end
local i = 1
local pattern = getPattern(i)
while pattern do
patterns[i] = pattern
i = i + 1
pattern = getPattern(i)
end
end
-- Construct the test function
local testFunc = function (key, val)
if keys[key] then
return true
end
for i, pattern in ipairs(patterns) do
if mw.ustring.find(tostring(key), pattern) then
return true
end
end
return false
end
return main(frame, testFunc)
end
}
63e3811b7a17825c071b1920ce88af06bc1e778d
Template:Count
10
192
439
438
2023-09-30T19:37:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Count]]
wikitext
text/x-wiki
{{safesubst<noinclude/>:#ifexpr:{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}>0|{{safesubst<noinclude/>:#invoke:ParameterCount|main|pattern1=^[%d]+$}}|{{{base|0}}}}}<noinclude>{{documentation}}</noinclude>
ccdb0aa784669ceae716044a9267ac7c4dea7283
Template:Template link code
10
193
441
440
2023-09-30T19:37:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link_code]]
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes|nowrap=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tlc}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
044f00ca1bfc10cb967c32e893043ccc6f739764
Template:Tld
10
194
443
442
2023-09-30T19:37:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tld]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code]]
be5d6275ea41d83224503e05901f3405c82141f7
Template:CountryPrefixThe
10
195
445
444
2023-09-30T19:37:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:CountryPrefixThe]]
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#switch: {{{1|}}}
| Austrian Empire | Bahamas | Batavian Republic | Belgian Congo | British Antarctic Territory | British Empire | British Virgin Islands | Bukharan People's Soviet Republic | Cape Colony | Captaincy General of Chile | Caribbean | Cayman Islands | Central African Republic | Channel Islands | Collectivity of Saint Martin | Colony of Natal | Colony of Santiago | Comoros | Congo Free State | Cook Islands | Cossack Hetmanate | Crown Dependencies | Czech Republic | Danish colonial empire | Democratic Republic of the Congo | Dominican Republic | Dominion of Newfoundland | Donetsk People's Republic | Duchy of Nassau | Dutch Caribbean | Dutch East Indies | Dutch Empire | Dutch Republic | Empire of Brazil | Falkland Islands | Falkland Islands Dependencies | Faroe Islands | Federal Republic of Central America | Federated States of Micronesia | Federation of Rhodesia and Nyasaland | French Union | French colonial empire | Gambia | German Empire | German colonial empire | Greater Republic of Central America | Gilbert and Ellice Islands | Grand Duchy of Hesse | Grand Duchy of Tuscany | Habsburg monarchy | Habsburg Netherlands | Hawaiian Kingdom | Holy Roman Empire | Holy See | Inca civilization | Irish Free State | Isle of Man | Italian Empire | Japanese colonial empire | Kazakh Autonomous Socialist Soviet Republic | Kazakh Soviet Socialist Republic | Kingdom of Hanover | Kingdom of Hawaii | Kingdom of Jerusalem | Kingdom of Naples | Kingdom of Sardinia | Kingdom of Sicily | Kingdom of the Two Sicilies | Kirghiz Soviet Socialist Republic | Luhansk People's Republic | Maldives | Mamluk Sultanate | Maratha Empire | Marshall Islands | Moldavian Autonomous Soviet Socialist Republic | Moldavian Soviet Socialist Republic | Mongol Empire | Mughal Empire | Nagorno-Karabakh Republic | Netherlands | Netherlands Antilles | New Hebrides | Northern Mariana Islands | Orange Free State | Ottoman Empire | Palestinian territories | Papal States | Philippines | Pitcairn Islands | Polish–Lithuanian Commonwealth | Portuguese Empire | Province of Quebec (1763–1791) | Republic of Artsakh | Republic of Florence | Republic of Genoa | Republic of Ireland | Republic of Macedonia | Republic of New Granada | Republic of Texas | Republic of the Congo | Republic of Venice | Russian Empire | Sahrawi Arab Democratic Republic | Socialist Republic of Macedonia | Solomon Islands | South African Republic | Southern Nigeria Protectorate | Soviet Union | Spanish East Indies | Spanish Empire | Spanish West Indies | State of Palestine | Straits Settlements | Swedish colonial empire | Territory of Papua | Thirteen Colonies | Trucial States | Trust Territory of the Pacific Islands | Turkmen Soviet Socialist Republic | Turks and Caicos Islands | United Arab Emirates | United Kingdom | United States | United States Virgin Islands | Viceroyalty of New Granada | Viceroyalty of Peru | Viceroyalty of the Río de la Plata | Zulu Kingdom =<!--
-->{{#ifeq: {{Yesno-no|{{{capitalised|{{{capitalized|}}}}}}}}|yes|The|the}} {{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!--
-->|#default={{#ifeq: {{Yesno-no|{{{onlythe|}}}}}|yes||{{{1|}}}}}<!--
-->}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fed009e885630af9150708cf0df3d0f2e3938c43
Template:Strfind short
10
196
447
446
2023-09-30T19:37:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Strfind_short]]
wikitext
text/x-wiki
{{#Invoke:String|find|source={{{1|}}}|{{{2}}}}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f5475bb1d4bf09dc8dea7613cd4bc79847dafcbc
Template:Find country
10
197
449
448
2023-09-30T19:37:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Find_country]]
wikitext
text/x-wiki
<includeonly>{{#if: {{{1|}}}
| {{#invoke:Find country|main|string={{{1|}}}|match={{{match|}}}|nomatch={{{nomatch|}}}}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
87d8d8e45c6295e043512958d665ffbdf7819cc1
Module:Find country
828
198
451
450
2023-09-30T19:37:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Find_country]]
Scribunto
text/plain
--[[ v1.00
Test the string against the list of countries/continents.
Return the first word which matches a country/continent name ...
unless the "match=" parameter specifies a different match.
If there is no match, then return an empty string ... unless
the "nomatch" parameter specifies something different
]]
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- config
local nomatch = ""
local matchnum = 1
local countryList = {
'South Africa',
'the Central African Republic',
'Central African Republic',
'Africa',
'Antarctica',
'Central Asia',
'South Asia',
'South East Asia',
'Southeast Asia',
'Asia',
'the Caribbean',
'Caribbean',
'Eurasia',
'Europe',
'the Middle East',
'Middle East',
'Central America',
'North America',
'South America',
'Oceania',
'the Americas',
'Afghanistan',
'Albania',
'Algeria',
'American Samoa',
'Andorra',
'Angola',
'Anguilla',
'Antigua and Barbuda',
'Argentina',
'Armenia',
'Aruba',
'Australia',
'the Austrian Empire',
'Austrian Empire',
'Austria-Hungary',
'Austria',
'Azerbaijan',
'the Bahamas',
'Bahamas',
'Bahrain',
'Bangladesh',
'Barbados',
'Belarus',
'Belgium',
'Belize',
'Benin',
'Bermuda',
'Bhutan',
'Bolivia',
'Bosnia and Herzegovina',
'Botswana',
'Brazil',
'Brunei Darussalam',
'Brunei',
'Bulgaria',
'Burkina Faso',
'Burundi',
'Cambodia',
'Cameroon',
'Canada',
'Cape Verde',
'the Cayman Islands',
'Cayman Islands',
'Chad',
'Chile',
"the People's Republic of China",
"People's Republic of China",
'China PR',
'PR China',
'China',
'Colombia',
'Comoros',
'the Republic of the Congo',
'the Democratic Republic of the Congo',
'Democratic Republic of the Congo',
'Congo DR',
'DR Congo',
'DRC',
'the Congo',
'Congo',
'Cook Islands',
'Costa Rica',
'Croatia',
'Cuba',
'Curaçao',
'Curacao',
'Cyprus',
'the Czech Republic',
'Czech Republic',
'Czechia',
'Denmark',
'Djibouti',
'the Dominican Republic',
'Dominican Republic',
'Dominica',
'East Timor',
'Timor-Leste',
'Ecuador',
'Egypt',
'El Salvador',
'England',
'Eritrea',
'Estonia',
'Eswatini',
'Ethiopia',
'the Falkland Islands',
'Falkland Islands',
'the Faroe Islands',
'Faroe Islands',
'Fiji',
'Finland',
'France',
'Gabon',
'the Gambia',
'Gambia',
'Georgia',
'Germany',
'Ghana',
'Gibraltar',
'Great Britain',
'Britain',
'Greece',
'Grenada',
'Guam',
'Guatemala',
'Papua New Guinea',
'Equatorial Guinea',
'Guinea-Bissau',
'Guinea',
'Guyana',
'Haiti',
'Honduras',
'Hong Kong',
'Hungary',
'Iceland',
'India',
'Indonesia',
'Iran',
'Iraq',
'Northern Ireland',
'the Republic of Ireland',
'Republic of Ireland',
'Ireland',
'Israel',
'Italy',
'Ivory Coast',
"Côte d'Ivoire",
'Jamaica',
'Japan',
'Jordan',
'Kazakhstan',
'Kenya',
'Kiribati',
'Kosovo',
'the Republic of Kosovo',
'Republic of Kosovo',
'Kuwait',
'Kyrgyzstan',
'the Kyrgyz Republic',
'Kyrgyz Republic',
"the Lao People's Democratic Republic",
"Lao People's Democratic Republic",
'Laos',
'Latvia',
'Lebanon',
'Lesotho',
'Liberia',
'Libya',
'Liechtenstein',
'Lithuania',
'Luxembourg',
'Macau',
'the Republic of Macedonia',
'Republic of Macedonia',
'North Macedonia',
'Macedonia',
'Madagascar',
'Malawi',
'Malaysia',
'the Maldives',
'Maldives',
'Mali',
'Malta',
'the Marshall Islands',
'Marshall Islands',
'Mauritania',
'Mauritius',
'Mexico',
'the Federated States of Micronesia',
'Federated States of Micronesia',
'Micronesia',
'FSM',
'Moldova',
'Monaco',
'Mongolia',
'Montenegro',
'Montserrat',
'Morocco',
'Mozambique',
'Myanmar',
'Namibia',
'Nauru',
'Nepal',
'the Netherlands',
'Netherlands',
'New Caledonia',
'New Zealand',
'Nicaragua',
'Nigeria',
'Niger',
'North Korea',
"the People's Democratic Republic of Korea",
"the Democratic People's Republic of Korea",
"Democratic People's Republic of Korea",
"People's Democratic Republic of Korea",
'DPR Korea',
'Korea DPR',
'Norway',
'Oman',
'the Ottoman Empire',
'Ottoman Empire',
'Ottoman Egypt',
'Pakistan',
'Palau',
'Mandatory Palestine',
'Palestine',
'the Palestinian territories',
'Palestinian territories',
'Panama',
'Paraguay',
'Peru',
'the Philippines',
'Philippines',
'Poland',
'Portugal',
'Puerto Rico',
'the Spanish Virgin Islands',
'Spanish Virgin Islands',
'Qatar',
'Romania',
'the Russian Empire',
'Russian Empire',
'the Russian Federation',
'Russian Federation',
'Russia',
'Rwanda',
'Saint Kitts and Nevis',
'Saint Lucia',
'Saint Vincent and the Grenadines',
'Western Samoa',
'Samoa',
'San Marino',
'São Tomé and Príncipe',
'São Tomé and Príncipe',
'Sao Tome and Principe',
'Saudi Arabia',
'Scotland',
'Senegal',
'Serbia',
'Seychelles',
'Sierra Leone',
'Singapore',
'Slovakia',
'Slovenia',
'the Solomon Islands',
'Solomon Islands',
'Somalia',
'South Korea',
'the Republic of Korea',
'Korea Republic',
'South Sudan',
'Sudan',
'Spain',
'Sri Lanka',
'Suriname',
'Swaziland',
'Sweden',
'Switzerland',
'Syria',
'Tahiti',
'the Republic of China',
'Republic of China',
'Taiwan',
'Tajikistan',
'Tanzania',
'Thailand',
'Togo',
'Tonga',
'Trinidad and Tobago',
'Trinidad',
'Tobago',
'Tunisia',
'Turkey',
'Turkmenistan',
'Turks and Caicos Islands',
'Tuvalu',
'Uganda',
'Ukraine',
'the United Arab Emirates',
'the UAE',
'the U.A.E.',
'United Arab Emirates',
'UAE',
'U.A.E.',
'the United Kingdom',
'United Kingdom',
'the UK',
'the U.K.',
'UK',
'U.K.',
'the United States of America',
'the United States',
'the USA',
'the U.S.A.',
'United States of America',
'United States',
'US',
'U.S.',
'USA',
'U.S.A.',
'America',
'Uruguay',
'Uzbekistan',
'Vanuatu',
'Venezuela',
'Vietnam',
'the British Virgin Islands',
'British Virgin Islands',
'UK Virgin Islands',
'U.K. Virgin Islands',
'the United States Virgin Islands',
'the US Virgin Islands',
'the U.S. Virgin Islands',
'United States Virgin Islands',
'US Virgin Islands',
'U.S. Virgin Islands',
'the Virgin Islands',
'Virgin Islands',
'Wales',
'Yemen',
'Zambia',
'Zimbabwe',
'Find country/testcases'
}
-- returns the name of a country that is found in the string
-- ... or an empty string if there is no match
function findcountryinstring(str)
nMatches = 0
myMatches ={}
str=" " .. str:gsub("^%s*(.-)%s*$", "%1") .. " "
-- check agaist each country
-- if there is a match, then return that country
for i, thiscountry in ipairs(countryList) do
if mw.ustring.find(str, thiscountry) then
nMatches = nMatches + 1
myMatches[nMatches] = thiscountry
end
end
if (nMatches == 0) then
-- none of the title words matches a whole country
return nomatch
end
if ((matchnum >= 1) and (matchnum <= nMatches)) then
return myMatches[matchnum]
end
if (matchnum < 0) then
matchnum = matchnum + 1 -- so that -1 is the last match etc
if ((matchnum + nMatches) >= 1) then
return myMatches[matchnum + nMatches]
end
end
-- if we get here, we have not found a match at the position specified by "matchnum"
return nomatch
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
if (args['nomatch'] ~= nil) then
nomatch = args['nomatch']
end
-- by default, we return the first match
-- but the optional "C" paarmeter sets the "matchnum" variable, which
-- * for a positive matchnum "n", returns the nth match if it exists
-- * for a positive matchnum "n", returns (if it exists) the nth match
-- counting backwards from the end.
-- So "match=-1" returns the last match
-- and "match=-3" returns the 3rd-last match
if (args['match'] ~= nil) then
matchnum = tonumber(args['match'])
if ((matchnum == nil) or (matchnum == 0)) then
matchnum = 1
end
end
-- by default, we use the current page
-- but if the "string=" parameters is supplied, we use that
-- so we try the parameter first
thispagename = nil
if ((args['string'] ~= nil) and (args['string'] ~= "")) then
-- we have a non-empty "string" parameter, so we use it
thisstring = args['string']
else
-- get the page title
thispage = mw.title.getCurrentTitle()
thisstring = thispage.text;
end
-- now check the pagename to try to find a country
result = findcountryinstring(thisstring)
if (result == "") then
return nomatch
end
return result
end
return p
c15468102dad4b0bd85392d3ecf49bcb6e12c324
Template:Detect singular
10
199
453
452
2023-09-30T19:37:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Detect_singular]]
wikitext
text/x-wiki
{{#invoke:Detect singular|main}}<noinclude>
{{documentation}}
</noinclude>
0dd1507d935296f20a354173ba876d010a9ed72b
Template:Clc
10
200
455
454
2023-09-30T19:37:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Clc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Category link with count]]
02280e2ab57b544236e11f913e3759c5781ca9d5
Template:Generic template demo
10
201
457
456
2023-09-30T19:37:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Generic_template_demo]]
wikitext
text/x-wiki
#REDIRECT [[Template:Parameter names example]]
{{R semiprotected}}
[[Category:Wikipedia utility templates]]
[[Category:Template namespace templates]]
[[Category:Documentation assistance templates]]
22f645541f749cfd0eeffdee734b51b284103400
Template:UF-hcard-person
10
202
459
458
2023-09-30T19:37:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:UF-hcard-person]]
wikitext
text/x-wiki
The HTML markup produced by this template includes an [[HCard|hCard microformat]], which makes the person's details [[Parsing|parsable]] by computers, either acting automatically to catalogue articles across Wikipedia or via a browser tool operated by a reader, to (for example) add the subject to an address book or database. For more information about the use of [[microformat]]s on Wikipedia, please see [[Wikipedia:WikiProject Microformats|the microformat project]].
=== Sub-templates ===
Date-of-birth ("bday") information will only be included in the microformat if {{tl|birth date}}, or {{tl|birth date and age}} are used in the infobox. ([[Wikipedia:WikiProject Microformats/dates|Do not use these if the date is before 1583]]). Be cautious about using these if the person is still living, per [[WP:DOB]].
To include a URL, use {{Tl|URL}}.
'''Please do not remove instances of these sub-templates.'''
=== Classes ===
hCard uses HTML classes including:
{{Flatlist|
*adr
*agent
*bday
*birthplace
*category
*country-name
*deathdate
*deathplace
*extended-address
*family-name
*fn (required)
*given-name
*honorific-prefix
*honorific-suffix
*label
*locality
*n
*nickname
*note
*org
*role
*url
*vcard
}}
'''Please do not rename or remove these classes nor collapse nested elements which use them.'''<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCards]]}} }}</includeonly><noinclude>
[[Category:Templates generating hCards]]
[[Category:Microformat (uF) message templates]]
</noinclude>
cf7d7c17b9e4a925f11599e609ceb43d23ba29ea
Template:Infobox officeholder/doc
10
203
461
460
2023-09-30T19:37:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_officeholder/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Person infobox header}}
{{High-use|demo={{ROOTPAGENAME}}}}
{{Notice|Please note that in June 2017, the {{para|religion}} parameter was removed from Infobox officeholder as a result of [[Template talk:Infobox officeholder/Archive 21#Religion in officeholder infoboxes|this discussion]].}}
{{tl|Infobox officeholder}} is incorporated into the following templates (i.e. all the templates listed <span class="plainlinks">[{{fullurl:Special:WhatLinksHere/Template:Infobox officeholder|namespace=10&limit=1000&hidetrans=1&hidelinks=1}} here]</span>). Please use the most appropriate name when placing this template on a page.
{{collapse top |title= List of templates}}
{{refbegin|colwidth=20em}}
* {{Tld|Infobox AM}}
* {{Tld|Infobox Canadian MP}}
* {{Tld|Infobox Canadian senator}}
* {{Tld|Infobox candidate}}
* {{Tld|Infobox civil servant}}
* {{Tld|Infobox chancellor}}
* {{Tld|Infobox congressional candidate}}
* {{Tld|Infobox congressman}}
* {{Tld|Infobox defense minister}}
* {{Tld|Infobox deputy first minister}}
* {{Tld|Infobox deputy prime minister}}
* {{Tld|Infobox doge}}
* {{Tld|Infobox Eritrea cabinet official}}
* {{Tld|Infobox first lady}}
* {{Tld|Infobox first minister}}
* {{Tld|Infobox governor}}
* {{Tld|Infobox governor-elect}}
* {{Tld|Infobox governor general}}
* {{Tld|Infobox governor-general}}
* {{Tld|Infobox Indian politician}}
* {{Tld|Infobox judge}}
* {{Tld|Infobox lt governor}}
* {{Tld|Infobox mayor}}
* {{Tld|Infobox MEP}}
* {{Tld|Infobox minister}}
* {{Tld|Infobox MLA}}
* {{Tld|Infobox MP}}
* {{Tld|Infobox MSP}}
* {{Tld|Infobox PM}}
* {{Tld|Infobox politician}}
* {{Tld|Infobox politician (general)}}
* {{Tld|Infobox premier}}
* {{Tld|Infobox president}}
* {{Tld|Infobox president-elect}}
* {{Tld|Infobox prime minister}}
* {{Tld|Infobox prime minister-elect}}
* {{Tld|Infobox representative-elect}}
* {{Tld|Infobox SCC chief justice}}
* {{Tld|Infobox SCC puisne justice}}
* {{Tld|Infobox secretary-general}}
* {{Tld|Infobox senator}}
* {{Tld|Infobox senator-elect}}
* {{Tld|Infobox speaker}}
* {{Tld|Infobox state representative}}
* {{Tld|Infobox state SC associate justice}}
* {{Tld|Infobox state SC justice}}
* {{Tld|Infobox state senator}}
* {{Tld|Infobox US ambassador}}
* {{Tld|Infobox US associate justice}}
* {{Tld|Infobox US cabinet official}}
* {{Tld|Infobox US chief justice}}
* {{Tld|Infobox US territorial governor}}
* {{Tld|Infobox vice president}}
{{refend}}
{{collapse bottom}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}}
==Usage==
{{hatnote|Note: This template is for use on articles about '''individual people'''. For the infobox for use on articles about offices/positions, see [[Template:Infobox official post]].}}
Paste the code for the relevant office and then add the [[#Personal data|personal data]] to the bottom. There are no required fields and some fields will not appear when others are in use. For instructions on how to implement multiple terms, see [[Template:Infobox officeholder/example#Multiple terms|this page]]. For advice on alt text, see ''[[Wikipedia:Alternative text for images]]''.
The parameter {{para|order}} is used in conjunction with {{para|office}} to state that the officeholder is the ''n''th holder of the office, for example "42nd President of the United States". This should only be used when there is a well established use of such numbering in reliable sources. Do not add numbers simply based on a Wikipedia list of holders of the office, because (1) the list may not be accurate and (2) even with a definite list, different numbering systems could be applied (as to how various categories of "irregular" officeholders should be counted, and as to the counting of those serving for multiple non-consecutive periods) making the numbers arbitrary; and even where such issues are not yet present, they are bound to be in the future, making this unsustainable. Per [[WP:SEAOFBLUE]], it is not recommended to wikilink {{para|order}} to a list of officeholders, even if such a list exists.
If {{para|order}} is not specified, the value of {{para|office}} can be [[Help:Link#Wikilinks|wikilinked]] in the usual way, for example, "<code><nowiki>[[Ministry of Defence (Singapore)|Minister for Defence]]</nowiki></code>". However, if {{para|order}} is specified together with {{para|office}}, the value of {{para|office}} is automatically linked to a Wikipedia article of the same name, whether such an article exists or not. Wikilinking cannot be used to redirect the link elsewhere, but a [[Wikipedia:Piped link|piped link]] can be created like this: "<code><nowiki>Ministry of Defence (Singapore){{!}}Minister for Defence</nowiki></code>" (note that the double square brackets have been omitted).
When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc. This can be helpful for complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date).
Where a politician was redistricted into a new district, you can use {{para|prior_term}} to indicate which district(s) they were in before. This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the person who preceded the subject when the subject first took office and the person who succeeded the subject when the subject last left office. Where the use of "same district number" is used for determining "predecessor" and "successor" in any office, but where the area is so altered as to make such a "predecessor" or "successor" of little or no biographical value, the word "redistricted" should be used rather than using names of officeholders whose connection is accidental by virtue of district number, but unrelated to any election contests between officeholders.
Please do not re-purpose any fields to add decorative images, icons or flags. Template:Infobox viceroy styles or the like can be used for this. [[WP:INFOBOXFLAG]] applies here.
Per consensus in [[Wikipedia:Village pump (proposals)/Archive 175#RfC: Interim use of successor in Infobox officeholder|this RfC]], the infobox for an incumbent officeholder should not mention an [[-elect|elected or designated]] successor, or the end date of the term, until the successor takes office.
===General office===
{{For|examples of this code in use|Template:Infobox officeholder/example#General office}}
{{Generic template demo
| honorific_prefix
| name<!-- defaults to article title when left blank -->
| native_name
| native_name_lang
| honorific_suffix
| image
| image_size
| image_upright
| image name
| image_name_alt
| smallimage
| smallimage_alt
| alt
| caption
| order
| office
| status<!--If this is specified, overrides Incumbent.-->
| term_start
| term_end<!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) -->
| subterm
| suboffice
| alongside
| monarch
| president
| governor_general
| primeminister
| chancellor
| taoiseach
| governor
| co-leader
| vicepresident
| viceprimeminister
| deputy
| lieutenant
| parliamentarygroup
| constituency
| majority
| predecessor
| successor
| prior_term
| order2
| office2
| term_start2
| term_end2
| subterm2
| suboffice2
| alongside2
| monarch2
| president2
| governor_general2
| primeminister2
| chancellor2
| taoiseach2
| governor2
| co-leader2
| vicepresident2
| viceprimeminister2
| deputy2
| lieutenant2Z
| parliamentarygroup2
| constituency2
| predecessor2
| successor2
| majority2
| prior_term2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox officeholder
| honorific_prefix =
| name = <!-- defaults to article title when left blank -->
| native_name = <!--The person's name in their own language, if different.-->
| native_name_lang = <!--ISO 639-1 code, e.g., "fr" for French. If more than one, use {{lang}} in |native_name= instead.-->
| honorific_suffix =
| image =
| image_size =
| image_upright =
| smallimage = <!--If this is specified, "image" should not be.-->
| smallimage_alt =
| alt =
| caption =
| order =
| office =
| status = <!--If this is specified, overrides Incumbent.-->
| term_start =
| term_end = <!-- Add data only when the actual term has ended, not for terms which will end in the future. (Per usage guideline.) -->
| subterm =
| suboffice =
| alongside = <!--For two or more people serving in the same position from the same district. (e.g. United States senators.)-->
| monarch =
| president =
| governor_general =
| primeminister =
| taoiseach =
| chancellor =
| governor =
| co-leader =
| vicepresident =
| viceprimeminister =
| deputy =
| lieutenant =
| succeeding = <!--For President-elect or equivalent-->
| parliamentarygroup =
| constituency =
| majority =
| predecessor =
| successor = <!-- should not be filled until the successor takes office-->
| prior_term =
| order2 = <!--Can be repeated up to 16 times by changing the number-->
| office2 = <!--Can be repeated up to 16 times by changing the number-->
| term_start2 = <!--Can be repeated up to 16 times by changing the number-->
| term_end2 = <!--Can be repeated up to 16 times by changing the number-->
| subterm2 = <!--Can be repeated up to 16 times by changing the number-->
| suboffice2 = <!--Can be repeated up to 16 times by changing the number-->
| alongside2 = <!--Can be repeated up to 16 times by changing the number-->
| monarch2 = <!--Can be repeated up to 16 times by changing the number-->
| president2 = <!--Can be repeated up to 16 times by changing the number-->
| governor_general2 = <!--Can be repeated up to 16 times by changing the number-->
| primeminister2 = <!--Can be repeated up to 16 times by changing the number-->
| chancellor2 = <!--Can be repeated up to 16 times by changing the number-->
| taoiseach2 = <!--Can be repeated up to 16 times by changing the number-->
| governor2 = <!--Can be repeated up to 16 times by changing the number-->
| co-leader2 = <!--Can be repeated up to 16 times by changing the number-->
| vicepresident2 = <!--Can be repeated up to 16 times by changing the number-->
| viceprimeminister2 = <!--Can be repeated up to 16 times by changing the number-->
| deputy2 = <!--Can be repeated up to 16 times by changing the number-->
| lieutenant2 = <!--Can be repeated up to 16 times by changing the number-->
| succeeding2 = <!--Can be repeated up to 16 times by changing the number-->
| predecessor2 = <!--Can be repeated up to 16 times by changing the number-->
| successor2 = <!--Can be repeated up to 16 times by changing the number-->
| parliamentarygroup2= <!--Can be repeated up to 16 times by changing the number-->
| constituency2 = <!--Can be repeated up to 16 times by changing the number-->
| majority2 = <!--Can be repeated up to 16 times by changing the number-->
| prior_term2 = <!--Can be repeated up to 16 times by changing the number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Ambassador===
{{For|examples of this code in use|Template:Infobox officeholder/example#Ambassador}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| order
| ambassador_from
| country
| term_start
| term_end
| predecessor
| successor
| president
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox ambassador
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| order = <!--Can be repeated up to 16 times by adding a number-->
| ambassador_from = <!--Can be repeated up to 16 times by adding a number-->
| country = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| president = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Assembly member===
{{For|examples of this code in use|Template:Infobox officeholder/example#Assembly Member}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| constituency_AM
| assembly
| majority
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox AM
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| constituency_AM = <!--Can be repeated up to eight times by adding a number-->
| assembly = <!--Can be repeated up to 16 times by adding a number-->
| majority = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Governor===
{{For|examples of this code in use|Template:Infobox officeholder/example#Governor}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| order
| office
| term_start
| term_end
| lieutenant
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox governor
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| order = <!--Can be repeated up to 16 times by adding a number-->
| office = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| lieutenant = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If Governor was appointed by a President, add:
{{Generic template demo
| president
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| president = <!--name of president-->
</syntaxhighlight>
{{clear}}
If Governor appointed by other, add:
{{Generic template demo
| appointed
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| appointed = <!--name of appointer-->
</syntaxhighlight>
{{clear}}
===Judge===
{{For|examples of this code in use|Template:Infobox officeholder/example#Judge}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| office
| term_start
| term_end
| nominator
| appointer
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox judge
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| office = <!--Can be repeated up to 16 times by changing the number-->
| term_start = <!--Can be repeated up to 16 times by changing the number-->
| term_end = <!--Can be repeated up to 16 times by changing the number-->
| nominator = <!--Can be repeated up to 16 times by changing the number-->
| appointer = <!--Can be repeated up to 16 times by changing the number-->
| predecessor = <!--Can be repeated up to 16 times by changing the number-->
| successor = <!--Can be repeated up to 16 times by changing the number-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===Member of Parliament===
{{For|examples of this code in use|Template:Infobox officeholder/example#Member of Parliament}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| caption
| constituency_MP
| parliament
| majority
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox MP
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| caption =
| constituency_MP = <!--Can be repeated up to eight times by adding a number-->
| parliament = <!--Can be repeated up to 16 times by adding a number-->
| majority = <!--Can be repeated up to 16 times by adding a number-->
| term_start = <!--Can be repeated up to 16 times by adding a number-->
| term_end = <!--Can be repeated up to 16 times by adding a number-->
| predecessor = <!--Can be repeated up to 16 times by adding a number-->
| successor = <!--Can be repeated up to 16 times by adding a number-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
===U.S. Representatives===
====U.S. Congressperson====
{{For|examples of this code in use|Template:Infobox officeholder/example#US Congressperson}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Congressman
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_start = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_end = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| successor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If Congressperson served as Speaker of the House add:
{{Generic template demo
| speaker
| term_start2
| term_end2
| predecessor2
| successor2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| speaker = <!--number of office holder-->
| term_start2 =
| term_end2 =
| predecessor2 =
| successor2 =
</syntaxhighlight>
{{clear}}
If Congressman has been elected but not sworn in:
{{Generic template demo
| succeeding
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| succeeding = <!--the name of the incumbent congressman-->
</syntaxhighlight>
{{clear}}
====State Representative====
{{For|examples of this code in use|Template:Infobox officeholder/example#State Representative}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state_house
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox state representative
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state_house = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_start = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| term_end = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| predecessor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| successor = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
For Representative from states that have an Assembly, instead of state_house use:
{{Generic template demo
| state_assembly
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_assembly = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
For Representative from states that have a House of Delegates, instead of state_house use:
{{Generic template demo
| state_delegate
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_delegate = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
For Representative from states that have a Legislature, instead of state_house use:
{{Generic template demo
| state_legislature
| district
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state_legislature = <!--Can be repeated up to 16 times by adding a number, start at 3-->
| district = <!--Can be repeated up to 16 times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If Representative served as Speaker of the State House add:
{{Generic template demo
| speaker
| state_house
| term_start2
| term_end2
| predecessor2
| successor2
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| speaker = <!--number of office holder-->
| state_house =
| term_start2 =
| term_end2 =
| predecessor2 =
| successor2 =
</syntaxhighlight>
{{clear}}
===U.S. Senators===
====U.S. Senator====
{{For|examples of this code in use|Template:Infobox officeholder/example#US Senator}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| image_size
| image_upright
| alt
| jr/sr
| state
| term_start
| term_end
| predecessor
| successor
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox senator
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| image_size =
| image_upright =
| alt =
| jr/sr = <!--Can be repeated up to eight times by appending 2, 3, etc--> Set to any value to display the "United States Senator from" header. If this parameter is missing or empty, "United States Senator from" will not be displayed.
| state = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_start = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_end = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| successor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
{{Generic template demo
| term_start
| alongside
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| term_start =
| alongside = <!--the name of fellow senator-->
</syntaxhighlight>
{{clear}}
If Senator has just been elected and is a Senator-Elect:
{{Generic template demo
| succeeding
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| succeeding = <!--the name of the incumbent senator-->
</syntaxhighlight>
{{clear}}
If Senator served as Senate Majority Leader add:
{{Generic template demo
| majorityleader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majorityleader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If Senator served as Congressman add:
{{Generic template demo
| state3
| district3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| state3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| district3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
====State Senator====
{{For|examples of this code in use|Template:Infobox officeholder/example#State Senator}}
{{Generic template demo
| honorific_prefix
| name
| honorific_suffix
| image
| alt
| state_senate
| district
| term_start
| term_end
| predecessor
| successor
| prior_term
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox state senator
| honorific_prefix =
| name =
| honorific_suffix =
| image =
| alt =
| state_senate = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| district = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_start = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| term_end = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| predecessor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| successor = <!--Can be repeated up to eight times by appending 2, 3, etc-->
| prior_term =
</syntaxhighlight>
''add [[#Personal data|personal data]]''
{{clear}}
If State Senator served as Majority Leader of the State Senate add:
{{Generic template demo
| majority_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majority_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Minority Leader of the State Senate add:
{{Generic template demo
| minority_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| minority_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Majority Floor Leader of the State Senate add:
{{Generic template demo
| majority_floor_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| majority_floor_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
If State Senator served as Minority Floor Leader of the State Senate add:
{{Generic template demo
| minority_floor_leader3
| term_start3
| term_end3
| predecessor3
| successor3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| minority_floor_leader3 = <!--number of office holder-->
| term_start3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| term_end3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| predecessor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
| successor3 = <!--Can be repeated up to seven times by adding a number, start at 3-->
</syntaxhighlight>
{{clear}}
===Ukrainian legislative office===
{{For|examples of this code in use|Template:Infobox officeholder/example#Ukrainian legislative office}}
{{Generic template demo
| name
| native_name
| native_name_lang
| image
| caption
| office1
| convocation1
| constituency1
| term_start1
| term_end1
| convocation2
| constituency2
| term_start2
| term_end2
| office3
| convocation3
| constituency3
| term_start3
| term_end3
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox Ukrainian legislative office
| name =
| native_name =
| native_name_lang =
| image =
| caption =
| office1 =
| convocation1 =
| constituency1 =
| term_start1 =
| term_end1 =
| convocation2 =
| constituency2 =
| term_start2 =
| term_end2 =
| office3 = <!--Can be repeated up to 16 times by adding a number-->
| convocation3 = <!--Can be repeated up to 16 times by adding a number-->
| constituency3 = <!--Can be repeated up to 16 times by adding a number-->
| term_start3 = <!--Can be repeated up to 16 times by adding a number-->
| term_end3 = <!--Can be repeated up to 16 times by adding a number-->
</syntaxhighlight>
==Personal data==
Place this underneath the template
{{Generic template demo
| pronunciation
| birth_name <!-- only use if different from name -->
| birth_date
| birth_place
| death_date
| death_place
| death_cause <!-- should only be included when the cause of death has significance for the subject's notability -->
| resting_place
| resting_place_coordinates
| citizenship <!-- use only when necessary per [[WP:INFONAT]] -->
| nationality <!-- use only when necessary per [[WP:INFONAT]] -->
| party
| otherparty
| height
| spouse <!--Fill only if notable (reference required) or there is a WP article on this person-->
| partner <!--Fill only if notable (reference required) or there is a WP article on this person-->
| relations <!--Fill only if notable (reference required) or there is a WP article on this person-->
| children <!--Fill only if notable (reference required) or there is a WP article on this person-->
| parents <!--Fill only if notable (reference required) or there is a WP article on this person-->
| mother <!--Fill only if notable (reference required) or there is a WP article on this person-->
| father <!--Fill only if notable (reference required) or there is a WP article on this person-->
| relatives <!--Fill only if notable (reference required) or there is a WP article on this person-->
| residence
| education
| alma_mater
| occupation
| profession
| salary
| known_for
| cabinet
| committees
| portfolio
| awards
| blank1
| data1
| blank2
| data2
| blank3
| data3
| blank4
| data4
| blank5
| data5
| signature
| signature_alt
| website
| nickname
| allegiance
| branch
| serviceyears
| rank
| unit
| commands
| battles
| mawards
| military_blank1
| military_data1
| military_blank2
| military_data2
| military_blank3
| military_data3
| military_blank4
| military_data4
| military_blank5
| military_data5
| module
| module2
| module3
| module4
| module5
| footnotes
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
| pronunciation =
| birth_name = <!-- only use if different from name -->
| birth_date = <!-- {{Birth date and age|YYYY|MM|DD}} -->
| birth_place =
| death_date = <!-- {{Death date and age|YYYY|MM|DD|YYYY|MM|DD}} -->
| death_place =
| death_cause = <!-- should only be included when the cause of death has significance for the subject's notability -->
| resting_place =
| resting_place_coordinates =
| citizenship = <!-- use only when necessary per [[WP:INFONAT]] -->
| nationality = <!-- use only when necessary per [[WP:INFONAT]] -->
| party =
| otherparty = <!--For additional political affiliations-->
| height = <!-- "X cm", "X m" or "X ft Y in" plus optional reference (conversions are automatic) -->
| spouse =
| partner = <!--For those with a domestic partner and not married-->
| relations =
| children =
| parents = <!-- overrides mother and father parameters -->
| mother = <!-- may be used (optionally with father parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| father = <!-- may be used (optionally with mother parameter) in place of parents parameter (displays "Parent(s)" as label) -->
| relatives =
| residence =
| education =
| alma_mater =
| occupation =
| profession =
| known_for =
| salary =
| cabinet =
| committees =
| portfolio =
| awards = <!-- For civilian awards - appears as "Awards" if |mawards= is not set -->
| blank1 =
| data1 =
| blank2 =
| data2 =
| blank3 =
| data3 =
| blank4 =
| data4 =
| blank5 =
| data5 =
| signature =
| signature_alt =
| signature_size =
| website =
| nickname =
<!--Military service-->
| allegiance =
| branch =
| serviceyears =
| rank =
| unit =
| commands =
| battles =
| mawards = <!-- for military awards - appears as "Awards" if |awards= is not set -->
| military_blank1 =
| military_data1 =
| military_blank2 =
| military_data2 =
| military_blank3 =
| military_data3 =
| military_blank4 =
| military_data4 =
| military_blank5 =
| military_data5 =
<!--Embedded templates / Footnotes-->
| module =
| module2 =
| module3 =
| module4 =
| module5 =
| footnotes =
}}
</syntaxhighlight>
{{clear}}
<code>nationality</code> is [[Wikipedia:Manual of Style/Infoboxes#Nationality and citizenship|not displayed]] if the corresponding country is mentioned in <code>birth_place</code>, for example <code>|birth_place = Tokyo, Japan |nationality = Japanese</code>.
== Embedding other templates ==
The ''module'' parameters (module, module2, ... module5) may used to embed other templates into this infobox (see [[Wikipedia:Infobox modules]]).
<syntaxhighlight lang="wikitext" style="overflow: auto;">
{{Infobox officeholder
| name =
| <!-- etc. -->
| module =
{{Infobox football biography | embed = yes
| <!-- etc. -->
}}
}}
</syntaxhighlight>
== Embedding within a different infobox ==
Many officeholders are known for more than just their appointments (e.g., [[Clint Eastwood]]), and hence it may be desirable to merge this infobox with another one, like {{tl|Infobox person}}. By adding {{para|embed|yes}} to the first line of the infobox code, one can embed this infobox into another, creating the illusion of one continuous infobox. Though the process is a little complicated, it is possible to insert this infobox into most if not all other infoboxes. For {{tl|Infobox person}}, this infobox is passed as a "module" using the {{para|module}} syntax.
<syntaxhighlight lang="wikitext" style="overflow: auto">
{{Infobox person
| name = John Infobox
| image = Example.jpg
| caption = John Infobox in 2005
| birth_name = John Officeholder Person Infobox
| birth_date = {{Birth date|1950|5|25}}
| birth_place = Template City
| death_date = {{Death date and age|2010|10|22|1950|5|25}}
| occupation = Actor
| years_active = 1970–1990
| module =
{{Infobox officeholder | embed = yes
| office = Mayor of Wikipedia
| term_start = 1994
| term_end = 1998
}}
| website = {{URL|example.com}}
}}
</syntaxhighlight>
==Microformat==
{{UF-hcard-person}}
==TemplateData==
{{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<templatedata>
{
"description": "An infobox for office holders",
"format": "{{_\n| ___________________ = _\n}}\n",
"params": {
"name": {
"label": "Name",
"description": "Commonly-known name of person (defaults to article name, without disambiguation)",
"type": "line",
"default": "PAGENAME"
},
"office": {
"label": "office",
"description": "Office held",
"type": "string"
},
"order": {
"label": "order",
"description": "Used in conjunction with 'office' to state that the officeholder is the nth holder of the office",
"type": "string"
},
"bodyclass": {
"label": "bodyclass",
"type": "string"
},
"mainwidth": {
"label": "mainwidth",
"default": "22em",
"type": "string"
},
"native_name": {
"label": "Native name",
"type": "string",
"description": "Name in the person's native language",
"example": "Melquíades Rafael Martínez Ruiz"
},
"native_name_lang": {
"label": "Native name language",
"type": "string",
"description": "Language in which the person's native name is",
"example": "ca"
},
"image": {
"label": "Image",
"description": "Filename for the image (e.g. 'Example.jpg').",
"type": "wiki-file-name",
"required": false
},
"width": {
"label": "width",
"type": "string",
"aliases": [
"imagesize",
" image_size"
]
},
"alt": {
"label": "Alternative text",
"description": "Alternative text for the image.",
"type": "line"
},
"image name": {
"label": "image name",
"type": "string"
},
"smallimage": {
"label": "smallimage",
"type": "string"
},
"caption": {
"label": "Image caption",
"description": "Caption for the image.",
"type": "string",
"required": false
},
"alongside": {
"label": "alongside",
"description": "For two or more people serving in the same position from the same district. (e.g. United States senators.)",
"type": "string"
},
"ambassador_from": {
"label": "ambassador from",
"type": "string"
},
"appointer": {
"label": "appointer",
"type": "string"
},
"assembly": {
"label": "assembly",
"type": "string"
},
"chancellor": {
"label": "chancellor",
"type": "string"
},
"co-leader": {
"label": "co-leader",
"type": "string"
},
"constituency_AM": {
"label": "constituency AM",
"type": "string"
},
"constituency": {
"label": "constituency",
"type": "string"
},
"country": {
"label": "country",
"type": "string",
"example": "Israel"
},
"deputy": {
"label": "deputy",
"type": "string"
},
"district": {
"label": "district",
"type": "string"
},
"firstminister": {
"label": "first minister",
"type": "string"
},
"governor-general": {
"label": "governor-general",
"type": "string"
},
"leader": {
"label": "leader",
"type": "string"
},
"legislature": {
"label": "legislature",
"type": "wiki-page-name",
"example": "[[United States House of Representatives]]"
},
"lieutenant_governor": {
"label": "lieutenant governor",
"type": "string"
},
"lieutenant": {
"label": "lieutenant",
"type": "string"
},
"majorityleader": {
"label": "majority leader",
"type": "string"
},
"minister": {
"label": "minister",
"type": "string"
},
"minister_from": {
"label": "minister from",
"type": "string"
},
"minority_floor_leader": {
"label": "minority floor leader",
"type": "string"
},
"majority_floor_leader": {
"label": "majority floor leader",
"type": "string"
},
"minorityleader": {
"label": "minority leader",
"type": "string",
"example": "[[Chuck Shumer]]"
},
"monarch": {
"label": "monarch",
"type": "string"
},
"nominator": {
"label": "nominator",
"type": "string"
},
"parliament": {
"label": "parliament",
"type": "string"
},
"parliamentarygroup": {
"label": "parliamentary group",
"type": "string"
},
"predecessor": {
"label": "predecessor",
"type": "string"
},
"preceding": {
"label": "preceding",
"type": "string"
},
"preceded": {
"label": "preceded",
"type": "string"
},
"premier": {
"label": "premier",
"type": "string"
},
"president": {
"label": "president",
"type": "string"
},
"primeminister": {
"label": "primeminister",
"type": "string"
},
"riding": {
"label": "riding",
"type": "string"
},
"status": {
"label": "status",
"description": "If this is specified, overrides Incumbent.",
"type": "string"
},
"succeeded": {
"label": "succeeded",
"type": "string"
},
"succeeding": {
"label": "succeeding",
"description": "For President-elect or equivalent.",
"type": "string"
},
"successor": {
"label": "successor",
"type": "string"
},
"taoiseach": {
"label": "taoiseach",
"type": "string"
},
"term_start": {
"label": "term start",
"type": "string",
"description": "Date of the beginning of the person's term"
},
"term_end": {
"label": "term end",
"type": "string",
"description": "Date for the end of the person's term"
},
"title": {
"label": "title",
"type": "string"
},
"vicechair": {
"label": "vice chair",
"type": "string"
},
"vicegovernor": {
"label": "vice governor",
"type": "string"
},
"vicepresident": {
"label": "vice president",
"type": "string"
},
"vicepremier": {
"label": "vice premier",
"type": "string"
},
"viceprimeminister": {
"label": "vice prime minister",
"type": "string"
},
"speaker": {
"label": "speaker",
"type": "string"
},
"footnotes": {
"label": "footnotes",
"type": "string"
},
"date": {
"label": "date",
"type": "string"
},
"year": {
"label": "year",
"type": "string"
},
"source": {
"label": "source",
"type": "string"
},
"signature": {
"label": "signature",
"type": "wiki-file-name"
},
"signature_alt": {
"label": "signature alt text",
"type": "string"
},
"appointe": {
"label": "appointee",
"type": "string"
},
"alongside2": {
"label": "alongside 2",
"type": "string"
},
"peerage2": {
"label": "peerage 2",
"type": "string"
},
"ambassador_from2": {
"label": "ambassador from 2",
"type": "string"
},
"appointer2": {
"label": "appointer 2",
"type": "string"
},
"assembly2": {
"label": "assembly 2",
"type": "string"
},
"chancellor2": {
"label": "chancellor 2",
"type": "string"
},
"co-leader2": {
"label": "co-leader 2",
"type": "string"
},
"constituency_AM2": {
"label": "constituency AM 2",
"type": "string"
},
"country2": {
"label": "country 2",
"type": "string",
"example": "Malaya"
},
"deputy2": {
"label": "deputy 2",
"type": "string"
},
"district2": {
"label": "district 2",
"type": "string"
},
"firstminister2": {
"label": "first minister 2",
"type": "string"
},
"governor": {
"label": "governor",
"type": "string"
},
"governor-general2": {
"label": "governor-general 2",
"type": "string"
},
"governor2": {
"label": "governor 2",
"type": "string"
},
"leader2": {
"label": "leader 2",
"type": "string",
"example": "Donald Trump"
},
"legislature2": {
"label": "legislature 2",
"type": "wiki-page-name",
"example": "[[United States Senate]]"
},
"lieutenant_governor2": {
"label": "lieutenant governor 2",
"type": "string"
},
"lieutenant2": {
"label": "lieutenant2",
"type": "string"
},
"majority": {
"label": "majority",
"type": "string"
},
"majorityleader2": {
"label": "majority leader 2",
"type": "string",
"example": "Mitch McConnell"
},
"minister_from2": {
"label": "minister from 2",
"type": "string"
},
"minority_floor_leader2": {
"label": "minority floor leader 2",
"type": "string"
},
"majority_floor_leader2": {
"label": "majority floor leader 2",
"type": "string"
},
"majority2": {
"label": "majority 2",
"type": "string"
},
"minister2": {
"label": "minister 2",
"type": "string"
},
"minority": {
"label": "minority",
"type": "string"
},
"minorityleader2": {
"label": "minority leader 2",
"type": "string",
"example": "[[Chuck Shumer]]"
},
"monarch2": {
"label": "monarch 2",
"type": "string"
},
"nominator2": {
"label": "nominator 2",
"type": "string"
},
"office2": {
"label": "office 2",
"type": "string"
},
"order2": {
"label": "order 2",
"type": "string"
},
"parliament2": {
"label": "parliament2",
"type": "string"
},
"parliamentarygroup2": {
"label": "parliamentary group 2",
"type": "string"
},
"predecessor2": {
"label": "predecessor 2",
"type": "string"
},
"preceding2": {
"label": "preceding 2",
"type": "string"
},
"preceded2": {
"label": "preceded 2",
"type": "string"
},
"premier2": {
"label": "premier 2",
"type": "string"
},
"president2": {
"label": "president 2",
"type": "string"
},
"primeminister2": {
"label": "prime minister 2",
"type": "string"
},
"riding2": {
"label": "riding 2",
"type": "string"
},
"speaker_office": {
"label": "speaker office",
"type": "string"
},
"state_assembly": {
"label": "state assembly",
"type": "string"
},
"state_delegate": {
"label": "state delegate",
"type": "string"
},
"state_house": {
"label": "state house",
"type": "string"
},
"state_legislature": {
"label": "state legislature",
"type": "string"
},
"state_senate": {
"label": "state senate",
"type": "string"
},
"state": {
"label": "state",
"type": "string",
"description": "The state this officeholder represents or represented",
"example": "[[Alabama]]"
},
"term": {
"label": "term",
"type": "string"
},
"party": {
"label": "party",
"type": "string"
},
"prior_term": {
"label": "prior_term",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1blankname": {
"label": "1blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1namedata": {
"label": "1namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2blankname": {
"label": "2blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2namedata": {
"label": "2namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3blankname": {
"label": "3blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3namedata": {
"label": "3namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4blankname": {
"label": "4blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4namedata": {
"label": "4namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5blankname": {
"label": "5blankname",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5namedata": {
"label": "5namedata",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1blankname1": {
"label": "1blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"1namedata1": {
"label": "1namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2blankname1": {
"label": "2blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"2namedata1": {
"label": "2namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3blankname1": {
"label": "3blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"3namedata1": {
"label": "3namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4blankname1": {
"label": "4blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"4namedata1": {
"label": "4namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5blankname1": {
"label": "5blankname1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"5namedata1": {
"label": "5namedata1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"alongside1": {
"label": "alongside1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"ambassador_from1": {
"label": "ambassador_from1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"appointer1": {
"label": "appointer1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"assembly1": {
"label": "assembly1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"chair1": {
"label": "chair1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"chancellor1": {
"label": "chancellor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"co-leader1": {
"label": "co-leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"constituency_AM1": {
"label": "constituency_AM1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"constituency1": {
"label": "constituency1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"country1": {
"label": "country1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"deputy1": {
"label": "deputy1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"district1": {
"label": "district1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"firstminister1": {
"label": "firstminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"governor-general1": {
"label": "governor-general1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"governor1": {
"label": "governor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"leader1": {
"label": "leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"legislature1": {
"label": "legislature1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"lieutenant_governor1": {
"label": "lieutenant governor 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"lieutenant1": {
"label": "lieutenant 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minority_floor_leader1": {
"label": "minority floor leader 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minister_from1": {
"label": "minister from 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majority_floor_leader1": {
"label": "majority_floor_leader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majorityleader1": {
"label": "majorityleader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"majority1": {
"label": "majority1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minister1": {
"label": "minister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"minorityleader1": {
"label": "minorityleader1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"monarch1": {
"label": "monarch1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"nominator1": {
"label": "nominator1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"office1": {
"label": "office1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"order1": {
"label": "order1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"parliament1": {
"label": "parliament1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"parliamentarygroup1": {
"label": "parliamentary group 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"predecessor1": {
"label": "predecessor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"preceding1": {
"label": "preceding1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"preceded1": {
"label": "preceded1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"premier1": {
"label": "premier1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"president1": {
"label": "president1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"primeminister1": {
"label": "primeminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"riding1": {
"label": "riding 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_assembly1": {
"label": "state_assembly1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_delegate1": {
"label": "state_delegate1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_house1": {
"label": "state_house1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_legislature1": {
"label": "state_legislature1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_senate1": {
"label": "state_senate1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state1": {
"label": "state1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"succeeded1": {
"label": "succeeded1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"succeeding1": {
"label": "succeeding1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"successor1": {
"label": "successor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"taoiseach1": {
"label": "taoiseach1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termend1": {
"label": "termend1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termstart1": {
"label": "termstart1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"term1": {
"label": "term1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"title1": {
"label": "title1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicechair1": {
"label": "vicechair1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicegovernor1": {
"label": "vicegovernor1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicepresident1": {
"label": "vicepresident1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"vicepremier1": {
"label": "vicepremier1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"viceprimeminister1": {
"label": "viceprimeminister1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"prior_term1": {
"label": "prior term 1",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"termend2": {
"label": "term end 2",
"type": "string"
},
"termstart2": {
"label": "term start 2",
"type": "string"
},
"term2": {
"label": "term 2",
"type": "string"
},
"title2": {
"label": "title 2",
"type": "string"
},
"vicechair2": {
"label": "vice chair 2",
"type": "string"
},
"vicegovernor2": {
"label": "vice governor 2",
"type": "string"
},
"vicepresident2": {
"label": "vice president 2",
"type": "string"
},
"vicepremier2": {
"label": "vice premier 2",
"type": "string"
},
"viceprimeminister2": {
"label": "vice prime minister 2",
"type": "string"
},
"succeeded2": {
"label": "succeeded 2",
"type": "string"
},
"succeeding2": {
"label": "succeeding 2",
"type": "string"
},
"successor2": {
"label": "successor 2",
"type": "string"
},
"taoiseach2": {
"label": "taoiseach 2",
"type": "string"
},
"state_assembly2": {
"label": "state assembly2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_delegate2": {
"label": "state delegate2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_house2": {
"label": "state house 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_legislature2": {
"label": "state legislature 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state_senate2": {
"label": "state senate2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"state 2": {
"label": "state 2",
"description": "Additional fields numbered up to 14",
"type": "string",
"example": "[[Georgia (U.S. State)|Georgia]]"
},
"prior_term2": {
"label": "prior term 2",
"description": "Additional fields numbered up to 14",
"type": "string"
},
"birth_name": {
"label": "Birth name",
"description": "Name at birth, if different from 'name'.",
"type": "string",
"required": false,
"aliases": [
"birthname"
]
},
"birth_date": {
"label": "Birth date",
"description": "Date of birth. Use {{birth date and age}} (for living people) or {{birth date}} for the deceased.",
"type": "line",
"required": false
},
"birth_place": {
"label": "Birth place",
"description": "Place of birth.",
"type": "line"
},
"death_date": {
"label": "Death date",
"description": "Date of death. Use {{death date and age}}. Use {{death date}} if birth date unknown or incomplete.",
"type": "content"
},
"death_place": {
"label": "Death place",
"description": "The person's place of death, if deceased",
"type": "line",
"required": false,
"example": "[[Crown Heights]]"
},
"resting_place": {
"label": "Resting place",
"description": "Person's grave, etc.",
"type": "line",
"required": false
},
"resting_place_coordinates": {
"label": "Resting place",
"description": "Coordinates of grave, etc. Use {{Coord|LAT|LONG|type:landmark|display=inline}}",
"type": "line"
},
"citizenship": {
"label": "citizenship",
"type": "string",
"description": "The person's country of citizenship",
"example": "[[Germany]]"
},
"nationality": {
"label": "Nationality",
"description": "The person's nationality, use only when necessary per [[WP:INFONAT]]",
"type": "line",
"example": "Canadian"
},
"otherparty": {
"label": "other political party",
"type": "string"
},
"spouse": {
"label": "Spouse(s)",
"description": "Spouse(s), if notable",
"type": "line",
"required": false,
"aliases": [
"spouses"
]
},
"partner": {
"label": "Partner(s)",
"description": "Domestic partner(s), if notable",
"type": "line"
},
"relations": {
"label": "relations",
"type": "string"
},
"children": {
"label": "children",
"type": "string"
},
"parents": {
"label": "parents",
"type": "string"
},
"residence": {
"label": "Residence",
"description": "Where this person lives",
"type": "line"
},
"alma_mater": {
"label": "Alma mater",
"description": "The linked name of attended higher education institution(s).",
"type": "line"
},
"occupation": {
"label": "occupation",
"description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Politician, entrepreneur, businessman)",
"type": "string"
},
"profession": {
"label": "profession",
"description": " Please observe sentence case and capitalise only the first letter of the first item: (i.e. Attorney, accountant)",
"type": "string"
},
"cabinet": {
"label": "cabinet",
"type": "string"
},
"committees": {
"label": "committees",
"type": "string"
},
"portfolio": {
"label": "portfolio",
"type": "string"
},
"blank1": {
"label": "blank1",
"description": "Also blank2 ... blank5",
"type": "string"
},
"data1": {
"label": "data1",
"description": "Also data2 ... data5",
"type": "string"
},
"website": {
"label": "Official website",
"description": "Office holder's official website, using {{URL}}.",
"type": "line"
},
"nickname": {
"label": "nickname",
"type": "string"
},
"allegiance": {
"label": "allegiance",
"type": "string"
},
"branch": {
"label": "branch",
"type": "string"
},
"serviceyears": {
"label": "serviceyears",
"type": "string"
},
"rank": {
"label": "rank",
"type": "string"
},
"unit": {
"label": "unit",
"type": "string"
},
"commands": {
"label": "commands",
"type": "string"
},
"battles": {
"label": "battles fought",
"type": "string"
},
"military_blank1": {
"label": "military blank 1",
"description": "Also military_blank2 ... military_blank5",
"type": "string"
},
"military_data1": {
"label": "military data 1",
"description": "Also military_data2 ... military_data5",
"type": "string"
},
"1blankname2": {
"label": "1blankname2",
"type": "string"
},
"1namedata2": {
"label": "1namedata2",
"type": "string"
},
"2blankname2": {
"label": "2blankname2",
"type": "string"
},
"2namedata2": {
"label": "2namedata2",
"type": "string"
},
"3blankname2": {
"label": "3blankname2",
"type": "string"
},
"3namedata2": {
"label": "3namedata2",
"type": "string"
},
"4blankname2": {
"label": "4blankname2",
"type": "string"
},
"4namedata2": {
"label": "4namedata2",
"type": "string"
},
"5blankname2": {
"label": "5blankname2",
"type": "string"
},
"5namedata2": {
"label": "5namedata2",
"type": "string"
},
"pronunciation": {
"label": "Name pronunciation",
"type": "string"
},
"honorific_prefix": {
"label": "Honorific prefix",
"description": "Title such as 'The Honourable'",
"type": "wiki-page-name",
"required": false,
"aliases": [
"honorific prefix"
]
},
"honorific_suffix": {
"label": "Honorific suffix",
"description": "Initials such as 'OBE', 'FRSA'",
"type": "wiki-page-name",
"required": false,
"aliases": [
"honorific suffix"
]
},
"image_size": {
"label": "Image size",
"description": "Size of the image (e.g. '220px').",
"type": "line",
"default": "varies",
"required": false,
"aliases": [
"imagesize"
]
},
"education": {
"label": "Education",
"description": "Where or with whom the officeholder trained.",
"type": "line",
"required": false
},
"awards": {
"label": "Awards",
"description": "Awards won by the officeholder. Consider using {{awd}}.",
"type": "line",
"required": false
},
"image_name_alt": {},
"smallname_alt": {},
"net_worth": {
"label": "DEPRECATED: Net worth",
"description": "Current estimated net worth, if relevant. Please be sure to support with a citation from a reliable source, in the article body.",
"deprecated": "DEPRECATED: Use of this parameter is discouraged. Delete it when encountered."
}
}
}
</templatedata>
{{Collapse bottom}}
== Tracking categories ==
; Hidden tracking/maintenance categories (in main and supporting templates):
* {{clc|Biography template using pronunciation}}
* {{clc|Pages using infobox officeholder with ambassador from or minister from}}
* {{clc|Pages using infobox officeholder with both term and term_start or term_end}}
* {{clc|Pages using infobox officeholder with office0}}
* {{clc|Pages using infobox officeholder with speaker}}
* {{clc|Pages using infobox officeholder with succeeding and term or termend}}
* {{clc|Pages using infobox officeholder with unknown parameters}}
== See also ==
* [[Template:S-start]] ([[Wikipedia:WikiProject Succession Box Standardization|succession box standardization]])
; Supporting templates
* [[Template:Infobox officeholder/office]]
* <!-- [[Template:Infobox officeholder/Personal data]] -->
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates|Officeholder]]
[[Category:Politics and government infobox templates|Officeholder]]
[[Category:People and person infobox templates|Officeholder]]
[[Category:Infobox templates with module parameter|Officeholder]]
[[Category:Biographical templates usable as a module|Officeholder]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9f0aa9b1712a817a2411b7ffcf199709eb3a1b22
Template:Person infobox header
10
204
463
462
2023-09-30T19:37:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Person_infobox_header]]
wikitext
text/x-wiki
{{ombox|type=content|text=The design and content of biographical infoboxes must follow Wikipedia's [[Wikipedia:Verifiability|verifiability policy]], as well as [[Wikipedia:Manual of Style/Infoboxes|infobox]] and [[Wikipedia:Manual of Style/Biography|biographical style guideline]].
All content displayed in this template must adhere to the '''[[Wikipedia:Biographies of living persons|biographies of living persons]]''' policy if applicable. [[Wikipedia:Citing sources|Unsourced or poorly sourced]] contentious material '''must be removed immediately''' from the article and its infobox, especially if potentially [[Wikipedia:Libel|libellous]].}}
<noinclude>
{{documentation
|content=
{{no documentation}}
{{Uncat}}
}}
</noinclude>
9f982493e161c304a75d9b6b06d5b730ee1bb282
Template:Navbox
10
205
465
464
2023-09-30T19:38:34Z
Führerredux
2
1 revision imported from [[:meta:Template:Navbox]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fe9b964401f895918ee4fe078678f1722a3c41ec
Template:Ombox
10
111
469
270
2023-09-30T19:40:45Z
Führerredux
2
1 revision imported from [[:meta:Template:Ombox]]
wikitext
text/x-wiki
{{#invoke:Message box|ombox}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0e54065432d540737b9e56c4e3a8e7f74d4534ea
Template:Infobox/doc
10
207
471
470
2023-09-30T19:41:13Z
Führerredux
2
1 revision imported from [[:meta:Template:Infobox/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Infobox}}
{{Uses TemplateStyles|[[Module:Infobox/styles.css]]}}
==Usage==
c98286012fccf1f2eab447f27d4e51c9fb5aac2c
Template:Strong
10
208
473
472
2023-09-30T19:43:13Z
Führerredux
2
1 revision imported from [[:meta:Template:Strong]]
wikitext
text/x-wiki
<strong {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</strong><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
2b665c5a888ca8f341022ccbca66617352915475
Template:Ping
10
209
475
474
2023-09-30T19:43:14Z
Führerredux
2
1 revision imported from [[:meta:Template:Ping]]
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Reply to|replyto|<noinclude>example=Example</noinclude>|max=50}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
2a5b1c2046f67d2edc3c7b2dc5258b61310c2f02
Module:Reply to
828
210
477
476
2023-09-30T19:43:14Z
Führerredux
2
1 revision imported from [[:meta:Module:Reply_to]]
Scribunto
text/plain
local p = {}
local function makeError(msg)
msg ='Error in [[Template:Reply to]]: ' .. msg
return mw.text.tag('strong', {['class']='error'}, msg)
end
function p.replyto(frame)
local origArgs = frame:getParent().args
local args = {}
local maxArg = 1
local usernames = 0
for k, v in pairs(origArgs) do
if type(k) == 'number' then
if mw.ustring.match(v,'%S') then
if k > maxArg then maxArg = k end
usernames = usernames + 1
local title = mw.title.new(v)
if not title then return makeError('Input contains forbidden characters.') end
args[k] = title.rootText
end
elseif v == '' and k:sub(0,5) == 'label' then
args[k] = '​'
else
args[k] = v
end
end
if usernames > (tonumber(frame.args.max) or 50) then
return makeError(string.format(
'More than %s names specified.',
tostring(frame.args.max or 50)
))
else
if usernames < 1 then
if frame.args.example then args[1] = frame.args.example else return makeError('Username not given.') end
end
args['label1'] = args['label1'] or args['label']
local isfirst = true
local outStr = args['prefix'] or '@'
for i = 1, maxArg do
if args[i] then
if isfirst then
isfirst = false
else
if ( (usernames > 2) or ((usernames == 2) and (args['c'] == '')) ) then outStr = outStr..', ' end
if i == maxArg then outStr = outStr..' '..(args['c'] or 'and') .. ' ' end
end
outStr = string.format(
'%s[[User:%s|%s]]',
outStr,
args[i],
args['label'..tostring(i)] or args[i]
)
end
end
outStr = outStr..(args['p'] or ':')
return mw.text.tag('span', {['class']='template-ping'}, outStr)
end
end
return p
14f0cd73a8a9f122c0e0e15382219083c602c62a
Template:No ping
10
211
479
478
2023-09-30T19:43:16Z
Führerredux
2
1 revision imported from [[:meta:Template:No_ping]]
wikitext
text/x-wiki
{{#invoke:No ping|main}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
f562b06355eb8e61bec522fedc6a997feb68d7c8
Module:No ping
828
212
481
480
2023-09-30T19:43:17Z
Führerredux
2
1 revision imported from [[:meta:Module:No_ping]]
Scribunto
text/plain
-- This module implements {{noping}}.
local p = {}
function p.main(frame)
local args = frame:getParent().args
return p._main(args)
end
function p._main(args)
local ret = {}
local fullUrl = mw.uri.fullUrl
local format = string.format
for i, username in ipairs(args) do
local url = fullUrl(mw.site.namespaces.User.name .. ':' .. username)
url = tostring(url)
local label = args['label' .. tostring(i)]
url = format('[%s %s]', url, label or username)
ret[#ret + 1] = url
end
ret = mw.text.listToText(ret)
ret = '<span class="plainlinks">' .. ret .. '</span>'
return ret
end
return p
46a1de5db467e72a12dcd8726fa83fe2cc683780
Template:Color
10
213
483
482
2023-09-30T19:43:17Z
Führerredux
2
1 revision imported from [[:meta:Template:Color]]
wikitext
text/x-wiki
<span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e
Template:Green
10
214
485
484
2023-09-30T19:43:17Z
Führerredux
2
1 revision imported from [[:meta:Template:Green]]
wikitext
text/x-wiki
<span style="color: #00BA00;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
b52b710c69a84c2f5afa810e03f1c25ea5b33f78
Template:Template list
10
215
487
486
2023-09-30T19:43:21Z
Führerredux
2
1 revision imported from [[:meta:Template:Template_list]]
wikitext
text/x-wiki
__NOTOC__
== Utility templates ==
: ''Category: [[:Category:Utility templates|Utility templates]]''
<section begin=user-utility-templates/>
* {{tl|URL}}
<section end=user-utility-templates/>
== Archive templates ==
: ''Category: [[:Category:Archive templates|Archive templates]]''
<section begin=user-archive-templates/>
* {{tl|Autoarchive/config}}
* {{tl|Archives}}
* {{tl|Archive list}}
* {{tl|Archive header}}
* {{tl|Archive box collapsible}}
* {{tl|Archive}}
* {{tl|Archive2}}
* {{tl|Yearly archive list}}
<section end=user-archive-templates/>
== Maintenance templates ==
: ''Category: [[:Category:Maintenance templates|Maintenance templates]]''
<section begin=user-maintenance-templates/>
* {{tl|Delete}}
* {{tl|Db-spam}}
* {{tl|Db-vandalism}}
* {{tl|Db-test}}
* {{tl|Db-copyvio}}
* {{tl|Db-attack}}
<section end=user-maintenance-templates/>
== User notice templates ==
: ''Category: [[:Category:User notice templates|User notice templates]]''
<section begin=user-notice-templates/>
* {{tl|You've got mail}}
* {{tl|Welcome}}
* {{tl|Blocked}}
* {{tl|Blocked talk-revoked-notice}}
* {{tl|Unblocked}}
* {{tl|Translationadmin granted}}
* {{tl|Patroller granted}}
<section end=user-notice-templates/>
== User warning templates ==
: ''Category: [[:Category:User warning templates|User warning templates]]''
<section begin=user-warning-templates/>
;Testing
* {{tl|Uw-test1}}
* {{tl|Uw-test2}}
* {{tl|Uw-test3}}
* {{tl|Uw-test4}}
;Promotion
* {{tl|Uw-advert1}}
* {{tl|Uw-advert2}}
* {{tl|Uw-advert3}}
* {{tl|Uw-advert4}}
;Creation of off-topic pages
* {{tl|Uw-create1}}
* {{tl|Uw-create2}}
* {{tl|Uw-create3}}
* {{tl|Uw-create4}}
* {{tl|Uw-create4im}}
;Vandalism
* {{tl|Uw-vandalism1}}
* {{tl|Uw-vandalism2}}
* {{tl|Uw-vandalism3}}
* {{tl|Uw-vandalism4}}
* {{tl|Uw-vandalism4im}}
* {{tl|Vandalism1}}
* {{tl|Vandalism2}}
* {{tl|Vandalism3}}
* {{tl|Uw-npa}}
* {{tl|Uw-harass}}
* {{tl|Uw-sock}}
*
<section end=user-warning-templates/>
== Character-substitution templates ==
: ''Category: [[:Category:Character-substitution templates|Character-substitution templates]]''
<section begin=character-substitution-templates/>
* {{tl|!((}} - {{!((}}
* {{tl|))!}} - {{))!}}
* {{tl|!-}} - <nowiki>|-</nowiki>
* {{tl|1==}} - <nowiki>=</nowiki>
* {{tl|@}} - {{@}}
* {{tl|void}}
* {{tl|\}} - {{\}}
* {{tl|Col-3}}
* {{tl|Col-begin}}
* {{tl|Col-break}}
* {{tl|Col-end}}
* {{tl|Center}}
* {{tl|Sp}}
<section end=character-substitution-templates/>
== Utility templates ==
: ''Category: [[:Category:Utility templates|Utility templates]]''
<section begin=utility-templates/>
* {{tl|Lorem ipsum}}
* {{tl|Error}}
* {{tl|Please leave this line alone (sandbox heading)}}
* {{tl|Lua}}
* {{tl|Yesno}}
* {{tl|Whatisit}}
* {{tl|Lua}}
* {{tl|Flatlist}}
* {{tl|Edit filter warning}}
* {{tl|Edit}}
* {{tl|Editlink}}
* {{tl|Editlinktalk}}
<section end=utility-templates/>
== Other templates ==
: ''Category: [[:Category:Other templates|Other templates]]''
<section begin=other-templates/>
* {{tl|Server}}
<section end=other-templates/>
== Userpage header templates ==
: ''Category: [[:Category:Userpage header templates|Userpage header templates]]''
<section begin=userpage-header-templates/>
* {{tl|Globally banned}}
* {{tl|Locked}}
* {{tl|Bot}}
<section end=userpage-header-templates/>
== Header templates ==
: ''Category: [[:Category:Header templates|Header templates]]''
<section begin=header-templates/>
* {{tl|Global policy}}
* {{tl|Header}}
* {{tl|Guideline}}
* {{tl|Meta policy}}
* {{tl|English notice}}
* {{tl|Historical}}
* {{tl|Policy draft}}
* {{tl|WMFGadgets}}
<section end=header-templates/>
== Link templates ==
: ''Category: [[:Category:Link templates|Link templates]]''
<section begin=link-templates/>
* {{tl|Libera}} - {{Libera|miraheze}}
* {{tl|@}} - {{@|no-reply|google.com}}
* {{tl|At}} - {{At}}
<section end=link-templates/>
== Inline talk templates ==
: ''Category: [[:Category:Inline talk templates|Inline talk templates]]''
<section begin=inline-talk-templates/>
* {{tl|ping}} - {{ping|Example}}
* {{tl|No ping}} - {{no ping|Example}}
* {{tl|Hidden ping}}
* {{tl|Edit conflict}} - {{edit conflict}}
* {{tl|Pinged}} - {{pinged}}
* {{tl|Talk page stalker}} - {{Talk page stalker}}
* {{tl|Talk page watcher}} - {{Talk page watcher}}
* {{tl|Responding to ping}} - {{Responding to ping}}
* {{tl|To}} - {{To|Example}}
* {{tl|Not watching}} - {{Not watching}}
* {{tl|Non-admin comment}} - {{NACC}}
* {{tl|Non-admin closure}} - {{NAC}}
* {{tl|redacted}} - {{redacted}}
* {{tl|redacted2}} - {{redacted2}}
* {{tl|Code}} - {{code|Example text}}
* {{tl|Strong}} - {{Strong|Example text}}
* {{tl|Serif}} - {{serif|Example text}}
* {{tl|Outdent}} - <span style="color:gray">┌───────┘</span>
* {{tl|Clear}}
* {{tl|Big}} - {{big|Example text}}
* {{tl|Small}} - {{small|Example text}}
* {{tl|Red}} - {{red|Example text}}
* {{tl|Green}} - {{green|Example text}}
* {{tl|Cyan}} - {{cyan|Example text}}
* {{tl|Dark cyan}} - {{Dark cyan|Example text}}
* {{tl|Maroon}} - {{Maroon|Example text}}
* {{tl|Color}} - {{color|red|C}}{{color|orange|o}}{{color|yellow|l}}{{color|lime|o}}{{color|green|r}} {{color|cyan|t}}{{color|blue|e}}{{color|purple|x}}{{color|pink|t}}
<section end=inline-talk-templates/>
== Resolution templates ==
: ''Category: [[:Category:Resolution templates|Resolution templates]]''
<section begin=resolution-templates/>
* {{tl|done}} - {{done}}
* {{tl|partly done}} - {{partly done}}
* {{tl|resolved}} - {{resolved}}
* {{tl|not done}} - {{not done}}
* {{tl|doing}} - {{doing}}
* {{tl|comment}} - {{comment}}
* {{tl|on hold}} - {{on hold}}
* {{tl|agree}} - {{agree}}
* {{tl|withdrawn}} - {{withdrawn}}
* {{tl|working}} - {{working}}
* {{tl|idea}} - {{idea}}
* {{tl|reviewing}} - {{reviewing}}
* {{tl|note}} - {{note}}
* {{tl|question}} - {{question}}
* {{tl|high priority}} - {{high priority}}
* {{tl|thank you}} - {{thank you}}
* {{tl|custom resolution}} - {{custom resolution|Earth Western Hemisphere transparent background.png|What on earth?}}
<section end=resolution-templates/>
== Voting templates ==
: ''Category: [[:Category:Voting templates|Voting templates]]''
<section begin=voting-templates/>
* {{tl|support}} - {{support}}
* {{tl|oppose}} - {{oppose}}
* {{tl|abstain}} - {{abstain}}
* {{tl|neutral}} - {{neutral}}
* {{tl|support if}} - {{Support if}}
<section end=voting-templates/>
== Userboxes ==
* {{tl|Userbox}}
* {{tl|Userbox-2}}
* {{tl|Userbox-level}}
* {{tl|Userboxtop}}
* {{tl|Userboxbreak}}
* {{tl|Userboxbottom}}
=== Global permissions ===
: ''Category: [[:Category:Global permissions userboxes|Global permissions userboxes]]''
<section begin=global-permissions-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User CVT}} || {{User CVT|nocat=yes}}
|-
| {{tl|User global IP block exemption}} || {{User global IP block exemption|nocat=yes}}
|-
| {{tl|User global sysop}} || {{User global sysop|nocat=yes}}
|-
| {{tl|User global rollbacker}} || {{User global rollbacker|nocat=yes}}
|-
| {{tl|User interwiki administrator}} || {{User interwiki administrator|nocat=yes}}
|-
| {{tl|User steward}} || {{User steward|nocat=yes}}
|-
| {{tl|User system administrator}} || {{User system administrator|nocat=yes}}
|}
<section end=global-permissions-userboxes/>
=== Meta permissions ===
: ''Category: [[:Category:Meta permissions userboxes|Meta permissions userboxes]]''
<section begin=meta-permissions-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User administrator}} || {{User administrator|nocat=yes}}
|-
| {{tl|User autopatrolled}} || {{User autopatrolled|nocat=yes}}
|-
| {{tl|User autoconfirmed}} || {{User autoconfirmed|nocat=yes}}
|-
| {{tl|User confirmed}} || {{User confirmed|nocat=yes}}
|-
| {{tl|User interface administrator}} || {{User interface administrator|nocat=yes}}
|-
| {{tl|User translation administrator}} || {{User translation administrator|nocat=yes}}
|-
| {{tl|User wiki creator}} || {{User wiki creator|nocat=yes}}
|-
| {{tl|User bureaucrat}} || {{User bureaucrat|nocat=yes}}
|-
| {{tl|User patroller}} || {{User patroller|nocat=yes}}
|-
| {{tl|User rollbacker}} || {{User rollbacker|nocat=yes}}
|-
| {{tl|User central notice}} || {{User central notice|nocat=yes}}
|}
<section end=meta-permissions-userboxes/>
=== Social media userboxes ===
: ''Category: [[:Category:Social media userboxes|Social media userboxes]]''
<section begin=social-media-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User discord}} || {{User discord|nocat=yes}}
|-
| {{tl|User github}} || {{User github|nocat=yes}}
|-
| {{tl|User instagram}} || {{User instagram|nocat=yes}}
|-
| {{tl|User IRC}} || {{User IRC|nocat=yes}}
|-
| {{tl|User phabricator}} || {{User phabricator|nocat=yes}}
|-
| {{tl|User twitter}} || {{User twitter|nocat=yes}}
|-
| {{tl|User wikimedia}} || {{User wikimedia|nocat=yes}}
|}
<section end=social-media-userboxes/>
=== Human life userboxes ===
: ''Category: [[:Category:Human life userboxes|Human life userboxes]]''
<section begin=human-life-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User adult}} || {{User adult|nocat=yes}}
|-
| {{tl|User age}} || {{User age|nocat=yes}}
|-
| {{tl|User male}} || {{User male|nocat=yes}}
|-
| {{tl|User female}} || {{User female|nocat=yes}}
|-
| {{tl|User from}} || {{User from|nocat=yes}}
|-
| {{tl|User in}} || {{User in|nocat=yes}}
|}
<section end=human-life-userboxes/>
=== Other userboxes ===
: ''Category: [[:Category:Other userboxes|Other userboxes]]''
<section begin=other-userboxes/>
{| class="wikitable"
|-
<noinclude>! Template !! Result
|-</noinclude>
| {{tl|User likes thank button}} || {{User likes thank button|nocat=yes}}
|-
|}
<section end=other-userboxes/>
== Infoboxes ==
<section start=infoboxes/>
* {{tl|infobox}}
* {{tl|infobox Miraheze user}}
* {{tl|simpleboxtop}}
* {{tl|simpleboxdata}}
* {{tl|simpleboxsection}}
<section end=infoboxes/>
fbd7fdcdeb179582d6030802ed6d68b02dfb4cde
Template:Red
10
216
489
488
2023-09-30T19:43:22Z
Führerredux
2
1 revision imported from [[:meta:Template:Red]]
wikitext
text/x-wiki
<span style="color:red;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
776e0c4686c43abb83f7da74dfa1def9f58bea72
Template:Edit conflict
10
217
491
490
2023-09-30T19:43:22Z
Führerredux
2
1 revision imported from [[:meta:Template:Edit_conflict]]
wikitext
text/x-wiki
<small>([[w:Help:Edit conflict|edit conflict]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
eb558263ebad66e81bbdde9479c936ab789b4443
Template:Pinged
10
218
493
492
2023-09-30T19:43:23Z
Führerredux
2
1 revision imported from [[:meta:Template:Pinged]]
wikitext
text/x-wiki
<small>([[Wikipedia:Notifications|pinged]])</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
a0c3480990f212de7bdf6319a34ee21eaa63171e
Template:Talk page stalker
10
219
495
494
2023-09-30T19:43:23Z
Führerredux
2
1 revision imported from [[:meta:Template:Talk_page_stalker]]
wikitext
text/x-wiki
{{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|<small>}}([[:wikipedia:Wikipedia:Talk page stalker|{{safesubst:<noinclude />#switch:{{lc:{{{1}}}}}
|c = Talk page stalker
|cw = Talk page watcher
|ce = Talk page enjoyer
|cg = Talk page gnome
|cr = Talk page reader
|a = TPS
|aw = TPW
|ag = TPG
|ar = TPR
|v = stalking
|vw = watching
|vg = gnoming
|vr = reading
|b = by talk page stalker
|bw = by talk page watcher
|bg = by talk gnome
|br = by talk reader
|alc = tps
|alcw = tpw
|alcg = tpg
|alcr = tpr
|w=talk page watcher
|g=talk page gnome
|r = talk page reader
|#default=talk page stalker
}}]]){{safesubst:<noinclude />#ifeq:{{safesubst:<noinclude />Yesno|{{{small|yes}}}}}|yes|</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
e674d1371b451e6981f3786ceb6e4c4d2778e633
Template:Yesno
10
12
497
20
2023-09-30T19:43:23Z
Führerredux
2
1 revision imported from [[:meta:Template:Yesno]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }}
|no
|n
|f
|false
|off
|0 = {{{no|<!-- null -->}}}
| = {{{blank|{{{no|<!-- null -->}}}}}}
|¬ = {{{¬|}}}
|yes
|y
|t
|true
|on
|1 = {{{yes|yes}}}
|#default = {{{def|{{{yes|yes}}}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
629c2937bc5cf7cfe13cd2a598582af832782399
Template:Talk page watcher
10
220
499
498
2023-09-30T19:43:24Z
Führerredux
2
1 revision imported from [[:meta:Template:Talk_page_watcher]]
wikitext
text/x-wiki
{{safesubst:<noinclude />#ifeq:{{{small|}}}|no||<small>}}([[{{safesubst:<noinclude />#ifeq:{{{safe|}}}|yes|Help:Watchlist|wikipedia:Wikipedia:Talk page stalker}}|{{safesubst:<noinclude />#switch:{{safesubst:<noinclude />lc:{{{1}}}}}|c=Talk page watcher|a=TPW|v=watching|b=by talk page watcher|alc=tpw|#default=talk page watcher}}]]){{safesubst:<noinclude />#ifeq:{{{small|}}}|no||</small>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
e3ec255c54f7b6317bc81f5c9180959b494749de
Template:Responding to ping
10
221
501
500
2023-09-30T19:43:24Z
Führerredux
2
1 revision imported from [[:meta:Template:Responding_to_ping]]
wikitext
text/x-wiki
<small>(<span style="color:#555;">responding to [[Wikipedia:Notifications|ping]]</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
385a033181f51764191d1e0869a00c37e566e037
Template:To
10
222
503
502
2023-09-30T19:43:25Z
Führerredux
2
1 revision imported from [[:meta:Template:To]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#if:{{{1|<noinclude>$</noinclude>}}}
|<span class="template-ping">'''''<small>To</small>''''' [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{1|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label1|{{{1|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{2|}}}
|{{SAFESUBST:<noinclude />#if:{{{3|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{2|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label2|{{{2|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{3|}}}
|{{SAFESUBST:<noinclude />#if:{{{4|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{3|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label3|{{{3|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{4|}}}
|{{SAFESUBST:<noinclude />#if:{{{5|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{4|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label4|{{{4|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{5|}}}
|{{SAFESUBST:<noinclude />#if:{{{6|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{5|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label5|{{{5|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{6|}}}
|{{SAFESUBST:<noinclude />#if:{{{7|}}}|,| and}} [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{6|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label6|{{{6|Example}}}}}}}}]]{{SAFESUBST:<noinclude />#if:{{{7|}}}
| and [[:User:{{SAFESUBST:<noinclude />BASEPAGENAME:{{{7|Example}}}}}|{{SAFESUBST:<noinclude />BASEPAGENAME:{{{label7|{{{7|Example}}}}}}}}]]
}}
}}
}}
}}
}}
}}{{{p|:}}}</span>
|{{SAFESUBST:<noinclude />Error|Error in [[Template:To]]: Username not given.}}
}}<noinclude>
{{documentation}}
</noinclude>
9c0fea6f23b8ce7384dc9f1dcde0385ac8f6288e
Template:Not watching
10
223
505
504
2023-09-30T19:43:25Z
Führerredux
2
1 revision imported from [[:meta:Template:Not_watching]]
wikitext
text/x-wiki
<small>(I am not [[mediawikiwiki:Help:Watchlist|watching]] this page, so please [[Template:Ping/doc|ping me]] if you want my attention.)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
8cd9e9cb5cdc0597c26d6b827ad2a764272fc86e
Template:NACC
10
224
507
506
2023-09-30T19:43:25Z
Führerredux
2
1 revision imported from [[:meta:Template:NACC]]
wikitext
text/x-wiki
#REDIRECT [[Template:Non-admin comment]]
[[Category:Template redirects]]
1cd21d3bf7de101beb4306ce2af0275eae30628f
Template:Non-admin comment
10
225
509
508
2023-09-30T19:43:26Z
Führerredux
2
1 revision imported from [[:meta:Template:Non-admin_comment]]
wikitext
text/x-wiki
<small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}}
|admin
|sysop= administrator
|crat= bureaucrat
|cu= checkuser
|steward= steward
|sysadmin= system administrator
|#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} comment</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
74955aa8ac53710e3ce1e366be475275521360ac
Template:NAC
10
226
511
510
2023-09-30T19:43:26Z
Führerredux
2
1 revision imported from [[:meta:Template:NAC]]
wikitext
text/x-wiki
#REDIRECT [[Template:Non-admin closure]]
[[Category:Template redirects]]
e832ee229612e587cd776e14de78cad816d72d44
Template:Non-admin closure
10
227
513
512
2023-09-30T19:43:26Z
Führerredux
2
1 revision imported from [[:meta:Template:Non-admin_closure]]
wikitext
text/x-wiki
<small>(<span style="color:#555;">Non-{{{{{|safesubst:}}}#switch:{{{1}}}
|admin
|sysop= administrator
|crat= bureaucrat
|cu= checkuser
|steward= steward
|sysadmin= system administrator
|#default={{{{{|safesubst:}}}#if: {{{1|}}}|{{{1}}}|administrator}}}} closure</span>)</small><noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
d22fc6e8966962e37b3af6a3649df85fe7462c5c
Template:Redacted
10
228
515
514
2023-09-30T19:43:27Z
Führerredux
2
1 revision imported from [[:meta:Template:Redacted]]
wikitext
text/x-wiki
{{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; color: #565656; font-style: italic;" title="Content was removed{{#if:{{{1|}}}| for the following reason: {{{1}}} }}">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
2ef480268fdd5e2abc658ec6d80527fc6a624c8f
Template:Code
10
229
517
516
2023-09-30T19:43:27Z
Führerredux
2
1 revision imported from [[:meta:Template:Code]]
wikitext
text/x-wiki
{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf
Template:Serif
10
230
519
518
2023-09-30T19:43:27Z
Führerredux
2
1 revision imported from [[:meta:Template:Serif]]
wikitext
text/x-wiki
<span style="font-family: 'Georgia Pro', Georgia, 'DejaVu Serif', Times, 'Times New Roman', serif; {{{style|}}}" {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
1f36ee4412dd29b6f8065b6a8f4191905763d83e
Template:Big
10
231
521
520
2023-09-30T19:43:28Z
Führerredux
2
1 revision imported from [[:meta:Template:Big]]
wikitext
text/x-wiki
<span style="font-size: 120%;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
ccacbee62715b1977a9a2534a2cd4761ed5882f1
Template:Small
10
103
523
254
2023-09-30T19:43:28Z
Führerredux
2
1 revision imported from [[:meta:Template:Small]]
wikitext
text/x-wiki
<span style="font-size:85%;">{{{1}}}</span><includeonly>{{SAFESUBST:#if:{{{1|}}}||[[Category:Pages using small with an empty input parameter]]}}</includeonly><noinclude>
{{Documentation}}<!--Categories and interwikis go in the /doc sub-page.-->
</noinclude>
76d3535c2917cc3bfb1b032506073faa15e1a480
Template:Cyan
10
232
525
524
2023-09-30T19:43:28Z
Führerredux
2
1 revision imported from [[:meta:Template:Cyan]]
wikitext
text/x-wiki
<span style="color: #00cccc;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
0e41138de5432d774a72ac7f8607b5c8bb6e9d23
Template:Dark cyan
10
233
527
526
2023-09-30T19:43:31Z
Führerredux
2
1 revision imported from [[:meta:Template:Dark_cyan]]
wikitext
text/x-wiki
<span style="color: #008b8b;">{{{1}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
e9c0ab2752c4b605c80909eb5c6dc128971991c4
Template:Maroon
10
234
529
528
2023-09-30T19:43:34Z
Führerredux
2
1 revision imported from [[:meta:Template:Maroon]]
wikitext
text/x-wiki
<span style="color: Maroon;">{{{1}}}</span><noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}</noinclude>
ec7268d828ab5a3e2b2aea1613d331ff6ad7375f
Module:Unsubst
828
235
531
530
2023-09-30T19:43:34Z
Führerredux
2
1 revision imported from [[:meta:Module:Unsubst]]
Scribunto
text/plain
local p = {}
local specialParams = {
['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates
['$B'] = 'template content',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' )
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Build an equivalent template invocation
-- First, find the title to use
local titleobj = mw.title.new(frame:getParent():getTitle())
local title
if titleobj.namespace == 10 then -- NS_TEMPLATE
title = titleobj.text
elseif titleobj.namespace == 0 then -- NS_MAIN
title = ':' .. titleobj.text
else
title = titleobj.prefixedText
end
-- Build the invocation body with numbered args first, then named
local ret = '{{' .. title
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '')
end
end
return p
83a208bd98f5e78524b299923e5f6e6268a17c53
Template:Strong/doc
10
236
533
532
2023-09-30T19:43:35Z
Führerredux
2
1 revision imported from [[:meta:Template:Strong/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
== Usage ==
{| class="wikitable"
!Template !! Result
|-
|{{tlx|Strong}} || {{strong|Example text}}
|}
== See also ==
{{#lst:Template:Template list|inline-talk-templates}}
9f233bad1e32c07e57f879f52cefdf00fbbb245b
Template:Redacted2
10
237
535
534
2023-09-30T19:43:35Z
Führerredux
2
1 revision imported from [[:meta:Template:Redacted2]]
wikitext
text/x-wiki
{{safesubst:<noinclude/>#invoke:Unsubst||$B=<span style="text-decoration: line-through; text-decoration-style: double; color: #000000; font-style: italic;" title="redacted">(redacted)</span>}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
736f9e35456b9ccf7b7c7b423cb0d9c6b0342f55
Template:Infobox officeholder
10
238
536
2023-09-30T19:57:28Z
Führerredux
2
Created page with "{{#invoke:infobox|infoboxTemplate | bodyclass = vcard {{{bodyclass|}}} | bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}} | child = {{lc:{{{embed}}}}} | abovestyle = font-size: 100%; | above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!-- --><div class="fn" style="font-size:125%;">{{#if:..."
wikitext
text/x-wiki
{{#invoke:infobox|infoboxTemplate
| bodyclass = vcard {{{bodyclass|}}}
| bodystyle = {{#if:{{{mainwidth|}}}|width: {{{mainwidth}}}}}
| child = {{lc:{{{embed}}}}}
| abovestyle = font-size: 100%;
| above = {{#if:{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix|}}}}}}}}}|<div class="honorific-prefix" style="font-weight: normal;">{{{honorific prefix|{{{honorific_prefix|{{{honorific-prefix}}}}}}}}}</div>}}<!--
--><div class="fn" style="font-size:125%;">{{#if:{{{name|}}}|{{{name}}}|{{PAGENAMEBASE}}}}</div><!--
-->{{#if:{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix|}}}}}}}}}|<div class="honorific-suffix" style="font-weight: normal;">{{{honorific suffix|{{{honorific_suffix|{{{honorific-suffix}}}}}}}}}</div>}}
| subheaderstyle = font-size:125%; font-weight:bold;
| subheader = {{#ifeq:{{lc:{{{embed}}}}}|yes||{{#if:{{{native_name|}}}|{{#if:{{{native_name_lang|}}}|<div class="nickname" lang="{{{native_name_lang}}}">}}{{{native_name}}}{{#if:{{{native_name_lang|}}}|</div>}}}}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{alt|}}}|suppressplaceholder=yes}}
| image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image name|}}}|size={{{width|{{{imagesize|{{{image_size|}}}}}}}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{image_name_alt|}}}|suppressplaceholder=yes}}
| image3 = {{#invoke:InfoboxImage|InfoboxImage|image={{{smallimage|}}}|sizedefault=frameless|upright={{{image_upright|1}}}|alt={{{smallimage_alt|}}}|suppressplaceholder=yes}}
| captionstyle = line-height:normal;padding-top:0.2em;
| caption{{#if:{{{smallimage|}}}|3|{{#if:{{{image name|}}}|2}}}} = {{{caption|}}}
| headerstyle = {{#ifeq:{{lc:{{{embed}}}}}|yes|background:#eee|background:lavender}}
| data1 =
{{#if:{{{speaker|}}}|
{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname2|}}}
| 1namedata = {{{1namedata2|}}}
| 2blankname = {{{2blankname2|}}}
| 2namedata = {{{2namedata2|}}}
| 3blankname = {{{3blankname2|}}}
| 3namedata = {{{3namedata2|}}}
| 4blankname = {{{4blankname2|}}}
| 4namedata = {{{4namedata2|}}}
| 5blankname = {{{5blankname2|}}}
| 5namedata = {{{5namedata2|}}}
| alongside = {{{alongside2|}}}
| ambassador_from = {{{ambassador_from2|}}}
| appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }}
| assembly = {{{assembly2|}}}
| assuming = {{{assuming2|}}}
| chancellor = {{{chancellor2|}}}
| co-leader = {{{co-leader2|}}}
| constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }}
| constituency = {{{constituency2|}}}
| convocation = {{{convocation2|}}}
| country = {{{country2|}}}
| deputy = {{{deputy2|}}}
| district = {{{district2|}}}
| firstminister = {{{firstminister2|}}}
| governor-general = {{{governor-general2|}}}
| governor_general = {{{governor_general2|}}}
| governor = {{{governor2|}}}
| jr/sr = {{{jr/sr2|}}}
| jr/sr and state = {{{jr/sr and state2|}}}
| leader = {{{leader2|}}}
| legislature = {{{legislature2|}}}
| lieutenant_governor = {{{lieutenant_governor2|}}}
| lieutenant = {{{lieutenant2|}}}
| majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }}
| minister_from = {{{minister_from2|}}}
| minority_floor_leader = {{{minority_floor_leader2|}}}
| majority_floor_leader = {{{majority_floor_leader2|}}}
| majority = {{{majority2|}}}
| minister = {{{minister2|}}}
| minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }}
| monarch = {{{monarch2|}}}
| nominator = {{{nominator2|}}}
| office = {{{office2|}}}
| order = {{{order2|}}}
| parliament = {{{parliament2|}}}
| parliamentarygroup = {{{parliamentarygroup2|}}}
| predecessor = {{{predecessor2|}}}
| preceding = {{{preceding2|}}}
| preceded = {{{preceded2|}}}
| premier = {{{premier2|}}}
| president = {{{president2|}}}
| primeminister = {{{primeminister2|}}}
| riding = {{{riding2|}}}
| speaker = {{{speaker|}}}
| speaker_office = {{{speaker_office|}}}
| state_assembly = {{{state_assembly|}}}
| state_delegate = {{{state_delegate|}}}
| state_house = {{{state_house|}}}
| state_legislature = {{{state_legislature|}}}
| state_senate = {{{state_senate|}}}
| state = {{{state|}}}
| subterm = {{nobold|{{{subterm|}}}}}
| suboffice = {{{suboffice|}}}
| succeeded = {{{succeeded2|}}}
| succeeding = {{{succeeding2|}}}
| successor = {{{successor2|}}}
| taoiseach = {{{taoiseach2|}}}
| termlabel = {{{term_label2|{{{termlabel2|In office}}}}}}
| termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}}
| termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}}
| term = {{{term2|}}}
| title = {{{title2|}}}
| vicegovernor = {{{vicegovernor2|}}}
| vicepresident = {{{vicepresident2|}}}
| vicepremier = {{{vicepremier2|}}}
| viceprimeminister = {{{viceprimeminister2|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term|}}}
}}}}}}<!--
-->{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname|}}}
| 1namedata = {{{1namedata|}}}
| 2blankname = {{{2blankname|}}}
| 2namedata = {{{2namedata|}}}
| 3blankname = {{{3blankname|}}}
| 3namedata = {{{3namedata|}}}
| 4blankname = {{{4blankname|}}}
| 4namedata = {{{4namedata|}}}
| 5blankname = {{{5blankname|}}}
| 5namedata = {{{5namedata|}}}
| alongside = {{{alongside|}}}
| ambassador_from = {{{ambassador_from|}}}
| appointer = {{#if: {{{appointer|}}} | {{{appointer}}} | {{{appointed|}}} }}
| assembly = {{{assembly|}}}
| assuming = {{{assuming|}}}
| candidate = {{{candidate|}}}
| chancellor = {{{chancellor|}}}
| co-leader = {{{co-leader|}}}
| constituency_{{#if:{{{constituency_AM|}}}|AM|MP}} = {{#if: {{{constituency_AM|}}} | {{{constituency_AM}}} | {{{constituency_MP|}}} }}
| constituency = {{{constituency|}}}
| convocation = {{{convocation|}}}
| country = {{{country|}}}
| deputy = {{{deputy|}}}
| district = {{{district|}}}
| election_date = {{{election_date|}}}
| firstminister = {{{firstminister|}}}
| governor-general = {{{governor-general|}}}
| governor_general = {{{governor_general|}}}
| governor = {{{governor|}}}
| incumbent = {{{incumbent|}}}
| jr/sr = {{{jr/sr|}}}
| jr/sr and state = {{{jr/sr and state|}}}
| leader = {{{leader|}}}
| legislature = {{{legislature|}}}
| lieutenant_governor = {{{lieutenant_governor|}}}
| lieutenant = {{{lieutenant|}}}
| majority_leader = {{#if: {{{majorityleader|}}} | {{{majorityleader}}} | {{{majority_leader|}}} }}
| majority = {{{majority|}}}
| minister = {{{minister|}}}
| minister_from = {{{minister_from|}}}
| minority_floor_leader = {{{minority_floor_leader|}}}
| majority_floor_leader = {{{majority_floor_leader|}}}
| minority_leader = {{#if: {{{minorityleader|}}} | {{{minorityleader}}} | {{{minority_leader|}}} }}
| monarch = {{{monarch|}}}
| nominator = {{{nominator|}}}
| nominee = {{{nominee|}}}
| office = {{{office|}}}
| opponent = {{{opponent|}}}
| order = {{{order|}}}
| parliament = {{{parliament|}}}
| parliamentarygroup = {{{parliamentarygroup|}}}
| party_election = {{{party_election|}}}
| predecessor = {{{predecessor|}}}
| preceding = {{{preceding|}}}
| preceded = {{{preceded|}}}
| premier = {{{premier|}}}
| president = {{{president|}}}
| primeminister = {{{primeminister|}}}
| riding = {{{riding|}}}
| runningmate = {{{runningmate|}}}
| state_assembly = {{{state_assembly|}}}
| state_delegate = {{{state_delegate|}}}
| state_house = {{{state_house|}}}
| state_legislature = {{{state_legislature|}}}
| state_senate = {{{state_senate|}}}
| state = {{{state|}}}
| status = {{{status|}}}
| suboffice = {{{suboffice|}}}
| subterm = {{nobold|{{{subterm|}}}}}
| succeeded = {{{succeeded|}}}
| succeeding = {{{succeeding|}}}
| successor = {{{successor|}}}
| taoiseach = {{{taoiseach|}}}
| termlabel = {{{term_label|{{{termlabel|In office}}}}}}
| termend = {{#if: {{{termend|}}} | {{{termend}}} | {{{term_end|}}} }}
| termstart = {{#if: {{{termstart|}}} | {{{termstart}}} | {{{term_start|}}} }}
| term = {{{term|}}}
| title = {{{title|}}}
| vicegovernor = {{{vicegovernor|}}}
| vicepresident = {{{vicepresident|}}}
| vicepremier = {{{vicepremier|}}}
| viceprimeminister = {{{viceprimeminister|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term|}}}
}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname1|}}}
| 1namedata = {{{1namedata1|}}}
| 2blankname = {{{2blankname1|}}}
| 2namedata = {{{2namedata1|}}}
| 3blankname = {{{3blankname1|}}}
| 3namedata = {{{3namedata1|}}}
| 4blankname = {{{4blankname1|}}}
| 4namedata = {{{4namedata1|}}}
| 5blankname = {{{5blankname1|}}}
| 5namedata = {{{5namedata1|}}}
| alongside = {{{alongside1|}}}
| ambassador_from = {{{ambassador_from1|}}}
| appointer = {{#if: {{{appointer1|}}} | {{{appointer1}}} | {{{appointed1|}}} }}
| assembly = {{{assembly1|}}}
| assuming = {{{assuming1|}}}
| chancellor = {{{chancellor1|}}}
| co-leader = {{{co-leader1|}}}
| constituency_{{#if:{{{constituency_AM1|}}}|AM|MP}} = {{#if: {{{constituency_AM1|}}} | {{{constituency_AM1}}} | {{{constituency_MP1|}}} }}
| constituency = {{{constituency1|}}}
| convocation = {{{convocation1|}}}
| country = {{{country1|}}}
| deputy = {{{deputy1|}}}
| district = {{{district1|}}}
| firstminister = {{{firstminister1|}}}
| governor-general = {{{governor-general1|}}}
| governor_general = {{{governor_general1|}}}
| governor = {{{governor1|}}}
| jr/sr = {{{jr/sr1|}}}
| jr/sr and state = {{{jr/sr and state1|}}}
| leader = {{{leader1|}}}
| legislature = {{{legislature1|}}}
| lieutenant_governor = {{{lieutenant_governor1|}}}
| lieutenant = {{{lieutenant1|}}}
| minority_floor_leader = {{{minority_floor_leader1|}}}
| minister_from = {{{minister_from1|}}}
| majority_floor_leader = {{{majority_floor_leader1|}}}
| majority_leader = {{#if: {{{majorityleader1|}}} | {{{majorityleader1}}} | {{{majority_leader1|}}} }}
| majority = {{{majority1|}}}
| minister = {{{minister1|}}}
| minority_leader = {{#if: {{{minorityleader1|}}} | {{{minorityleader1}}} | {{{minority_leader1|}}} }}
| monarch = {{{monarch1|}}}
| nominator = {{{nominator1|}}}
| office = {{{office1|}}}
| order = {{{order1|}}}
| parliament = {{{parliament1|}}}
| parliamentarygroup = {{{parliamentarygroup1|}}}
| predecessor = {{{predecessor1|}}}
| preceding = {{{preceding1|}}}
| preceded = {{{preceded1|}}}
| premier = {{{premier1|}}}
| president = {{{president1|}}}
| primeminister = {{{primeminister1|}}}
| riding = {{{riding1|}}}
| state_assembly = {{{state_assembly1|}}}
| state_delegate = {{{state_delegate1|}}}
| state_house = {{{state_house1|}}}
| state_legislature = {{{state_legislature1|}}}
| state_senate = {{{state_senate1|}}}
| state = {{{state1|}}}
| status = {{{status1|}}}
| subterm = {{nobold|{{{subterm1|}}}}}
| suboffice = {{{suboffice1|}}}
| succeeded = {{{succeeded1|}}}
| succeeding = {{{succeeding1|}}}
| successor = {{{successor1|}}}
| taoiseach = {{{taoiseach1|}}}
| termlabel = {{{term_label1|{{{termlabel1|In office}}}}}}
| termend = {{#if:{{{termend1|}}}|{{{termend1}}}|{{{term_end1|}}}}}
| termstart = {{#if:{{{termstart1|}}}|{{{termstart1}}}|{{{term_start1|}}}}}
| term = {{{term1|}}}
| title = {{{title1|}}}
| vicegovernor = {{{vicegovernor1|}}}
| vicepresident = {{{vicepresident1|}}}
| vicepremier = {{{vicepremier1|}}}
| viceprimeminister = {{{viceprimeminister1|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term1|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{#if:{{{speaker|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname2|}}}
| 1namedata = {{{1namedata2|}}}
| 2blankname = {{{2blankname2|}}}
| 2namedata = {{{2namedata2|}}}
| 3blankname = {{{3blankname2|}}}
| 3namedata = {{{3namedata2|}}}
| 4blankname = {{{4blankname2|}}}
| 4namedata = {{{4namedata2|}}}
| 5blankname = {{{5blankname2|}}}
| 5namedata = {{{5namedata2|}}}
| alongside = {{{alongside2|}}}
| ambassador_from = {{{ambassador_from2|}}}
| appointer = {{#if: {{{appointer2|}}} | {{{appointer2}}} | {{{appointed2|}}} }}
| assembly = {{{assembly2|}}}
| assuming = {{{assuming2|}}}
| chancellor = {{{chancellor2|}}}
| co-leader = {{{co-leader2|}}}
| constituency_{{#if:{{{constituency_AM2|}}}|AM|MP}} = {{#if: {{{constituency_AM2|}}} | {{{constituency_AM2}}} | {{{constituency_MP2|}}} }}
| constituency = {{{constituency2|}}}
| convocation = {{{convocation2|}}}
| country = {{{country2|}}}
| deputy = {{{deputy2|}}}
| district = {{{district2|}}}
| firstminister = {{{firstminister2|}}}
| governor-general = {{{governor-general2|}}}
| governor_general = {{{governor_general2|}}}
| governor = {{{governor2|}}}
| jr/sr = {{{jr/sr2|}}}
| jr/sr and state = {{{jr/sr and state2|}}}
| leader = {{{leader2|}}}
| legislature = {{{legislature2|}}}
| lieutenant_governor = {{{lieutenant_governor2|}}}
| lieutenant = {{{lieutenant2|}}}
| majority_leader = {{#if: {{{majorityleader2|}}} | {{{majorityleader2}}} | {{{majority_leader2|}}} }}
| minister_from = {{{minister_from2|}}}
| minority_floor_leader = {{{minority_floor_leader2|}}}
| majority_floor_leader = {{{majority_floor_leader2|}}}
| majority = {{{majority2|}}}
| minister = {{{minister2|}}}
| minority_leader = {{#if: {{{minorityleader2|}}} | {{{minorityleader2}}} | {{{minority_leader2|}}} }}
| monarch = {{{monarch2|}}}
| nominator = {{{nominator2|}}}
| office = {{{office2|}}}
| order = {{{order2|}}}
| parliament = {{{parliament2|}}}
| parliamentarygroup = {{{parliamentarygroup2|}}}
| predecessor = {{{predecessor2|}}}
| preceding = {{{preceding2|}}}
| preceded = {{{preceded2|}}}
| premier = {{{premier2|}}}
| president = {{{president2|}}}
| primeminister = {{{primeminister2|}}}
| riding = {{{riding2|}}}
| state_assembly = {{{state_assembly2|}}}
| state_delegate = {{{state_delegate2|}}}
| state_house = {{{state_house2|}}}
| state_legislature = {{{state_legislature2|}}}
| state_senate = {{{state_senate2|}}}
| state = {{{state2|}}}
| status = {{{status2|}}}
| subterm = {{nobold|{{{subterm2|}}}}}
| suboffice = {{{suboffice2|}}}
| succeeded = {{{succeeded2|}}}
| succeeding = {{{succeeding2|}}}
| successor = {{{successor2|}}}
| taoiseach = {{{taoiseach2|}}}
| termlabel = {{{term_label2|{{{termlabel2|In office}}}}}}
| termend = {{#if:{{{termend2|}}}|{{{termend2}}}|{{{term_end2|}}}}}
| termstart = {{#if:{{{termstart2|}}}|{{{termstart2}}}|{{{term_start2|}}}}}
| term = {{{term2|}}}
| title = {{{title2|}}}
| vicegovernor = {{{vicegovernor2|}}}
| vicepresident = {{{vicepresident2|}}}
| vicepremier = {{{vicepremier2|}}}
| viceprimeminister = {{{viceprimeminister2|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term2|}}}
}}}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname3|}}}
| 1namedata = {{{1namedata3|}}}
| 2blankname = {{{2blankname3|}}}
| 2namedata = {{{2namedata3|}}}
| 3blankname = {{{3blankname3|}}}
| 3namedata = {{{3namedata3|}}}
| 4blankname = {{{4blankname3|}}}
| 4namedata = {{{4namedata3|}}}
| 5blankname = {{{5blankname3|}}}
| 5namedata = {{{5namedata3|}}}
| alongside = {{{alongside3|}}}
| ambassador_from = {{{ambassador_from3|}}}
| appointer = {{#if: {{{appointer3|}}} | {{{appointer3}}} | {{{appointed3|}}} }}
| assembly = {{{assembly3|}}}
| assuming = {{{assuming3|}}}
| chancellor = {{{chancellor3|}}}
| co-leader = {{{co-leader3|}}}
| constituency_{{#if:{{{constituency_AM3|}}}|AM|MP}} = {{#if: {{{constituency_AM3|}}} | {{{constituency_AM3}}} | {{{constituency_MP3|}}} }}
| constituency = {{{constituency3|}}}
| convocation = {{{convocation3|}}}
| country = {{{country3|}}}
| deputy = {{{deputy3|}}}
| district = {{{district3|}}}
| firstminister = {{{firstminister3|}}}
| governor-general = {{{governor-general3|}}}
| governor_general = {{{governor_general3|}}}
| governor = {{{governor3|}}}
| jr/sr = {{{jr/sr3|}}}
| jr/sr and state = {{{jr/sr and state3|}}}
| leader = {{{leader3|}}}
| legislature = {{{legislature3|}}}
| lieutenant_governor = {{{lieutenant_governor3|}}}
| lieutenant = {{{lieutenant3|}}}
| minority_floor_leader = {{{minority_floor_leader3|}}}
| minister_from = {{{minister_from3|}}}
| majority_floor_leader = {{{majority_floor_leader3|}}}
| majority_leader = {{#if: {{{majorityleader3|}}} | {{{majorityleader3}}} | {{{majority_leader3|}}} }}
| majority = {{{majority3|}}}
| minister = {{{minister3|}}}
| minority_leader = {{#if: {{{minorityleader3|}}} | {{{minorityleader3}}} | {{{minority_leader3|}}} }}
| monarch = {{{monarch3|}}}
| nominator = {{{nominator3|}}}
| office = {{{office3|}}}
| order = {{{order3|}}}
| parliament = {{{parliament3|}}}
| parliamentarygroup = {{{parliamentarygroup3|}}}
| predecessor = {{{predecessor3|}}}
| preceding = {{{preceding3|}}}
| preceded = {{{preceded3|}}}
| premier = {{{premier3|}}}
| president = {{{president3|}}}
| primeminister = {{{primeminister3|}}}
| riding = {{{riding3|}}}
| state_assembly = {{{state_assembly3|}}}
| state_delegate = {{{state_delegate3|}}}
| state_house = {{{state_house3|}}}
| state_legislature = {{{state_legislature3|}}}
| state_senate = {{{state_senate3|}}}
| state = {{{state3|}}}
| status = {{{status3|}}}
| subterm = {{nobold|{{{subterm3|}}}}}
| suboffice = {{{suboffice3|}}}
| succeeded = {{{succeeded3|}}}
| succeeding = {{{succeeding3|}}}
| successor = {{{successor3|}}}
| taoiseach = {{{taoiseach3|}}}
| termlabel = {{{term_label3|{{{termlabel3|In office}}}}}}
| termend = {{#if:{{{termend3|}}}|{{{termend3}}}|{{{term_end3|}}}}}
| termstart = {{#if:{{{termstart3|}}}|{{{termstart3}}}|{{{term_start3|}}}}}
| term = {{{term3|}}}
| title = {{{title3|}}}
| vicegovernor = {{{vicegovernor3|}}}
| vicepresident = {{{vicepresident3|}}}
| vicepremier = {{{vicepremier3|}}}
| viceprimeminister = {{{viceprimeminister3|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term3|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname4|}}}
| 1namedata = {{{1namedata4|}}}
| 2blankname = {{{2blankname4|}}}
| 2namedata = {{{2namedata4|}}}
| 3blankname = {{{3blankname4|}}}
| 3namedata = {{{3namedata4|}}}
| 4blankname = {{{4blankname4|}}}
| 4namedata = {{{4namedata4|}}}
| 5blankname = {{{5blankname4|}}}
| 5namedata = {{{5namedata4|}}}
| alongside = {{{alongside4|}}}
| ambassador_from = {{{ambassador_from4|}}}
| appointer = {{#if: {{{appointer4|}}} | {{{appointer4}}} | {{{appointed4|}}} }}
| assembly = {{{assembly4|}}}
| assuming = {{{assuming4|}}}
| chancellor = {{{chancellor4|}}}
| co-leader = {{{co-leader4|}}}
| constituency_{{#if:{{{constituency_AM4|}}}|AM|MP}} = {{#if: {{{constituency_AM4|}}} | {{{constituency_AM4}}} | {{{constituency_MP4|}}} }}
| constituency = {{{constituency4|}}}
| convocation = {{{convocation4|}}}
| country = {{{country4|}}}
| deputy = {{{deputy4|}}}
| district = {{{district4|}}}
| firstminister = {{{firstminister4|}}}
| governor-general = {{{governor-general4|}}}
| governor_general = {{{governor_general4|}}}
| governor = {{{governor4|}}}
| jr/sr = {{{jr/sr4|}}}
| jr/sr and state = {{{jr/sr and state4|}}}
| leader = {{{leader4|}}}
| legislature = {{{legislature4|}}}
| lieutenant_governor = {{{lieutenant_governor4|}}}
| lieutenant = {{{lieutenant4|}}}
| minister_from = {{{minister_from4|}}}
| minority_floor_leader = {{{minority_floor_leader4|}}}
| majority_floor_leader = {{{majority_floor_leader4|}}}
| majority_leader = {{#if: {{{majorityleader4|}}} | {{{majorityleader4}}} | {{{majority_leader4|}}} }}
| majority = {{{majority4|}}}
| minister = {{{minister4|}}}
| minority_leader = {{#if: {{{minorityleader4|}}} | {{{minorityleader4}}} | {{{minority_leader4|}}} }}
| monarch = {{{monarch4|}}}
| nominator = {{{nominator4|}}}
| office = {{{office4|}}}
| order = {{{order4|}}}
| parliament = {{{parliament4|}}}
| parliamentarygroup = {{{parliamentarygroup4|}}}
| predecessor = {{{predecessor4|}}}
| preceding = {{{preceding4|}}}
| preceded = {{{preceded4|}}}
| premier = {{{premier4|}}}
| president = {{{president4|}}}
| primeminister = {{{primeminister4|}}}
| riding = {{{riding4|}}}
| state_assembly = {{{state_assembly4|}}}
| state_delegate = {{{state_delegate4|}}}
| state_house = {{{state_house4|}}}
| state_legislature = {{{state_legislature4|}}}
| state_senate = {{{state_senate4|}}}
| state = {{{state4|}}}
| status = {{{status4|}}}
| subterm = {{nobold|{{{subterm4|}}}}}
| suboffice = {{{suboffice4|}}}
| succeeded = {{{succeeded4|}}}
| succeeding = {{{succeeding4|}}}
| successor = {{{successor4|}}}
| taoiseach = {{{taoiseach4|}}}
| termlabel = {{{term_label4|{{{termlabel4|In office}}}}}}
| termend = {{#if:{{{termend4|}}}|{{{termend4}}}|{{{term_end4|}}}}}
| termstart = {{#if:{{{termstart4|}}}|{{{termstart4}}}|{{{term_start4|}}}}}
| term = {{{term4|}}}
| title = {{{title4|}}}
| vicegovernor = {{{vicegovernor4|}}}
| vicepresident = {{{vicepresident4|}}}
| vicepremier = {{{vicepremier4|}}}
| viceprimeminister = {{{viceprimeminister4|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term4|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname5|}}}
| 1namedata = {{{1namedata5|}}}
| 2blankname = {{{2blankname5|}}}
| 2namedata = {{{2namedata5|}}}
| 3blankname = {{{3blankname5|}}}
| 3namedata = {{{3namedata5|}}}
| 4blankname = {{{4blankname5|}}}
| 4namedata = {{{4namedata5|}}}
| 5blankname = {{{5blankname5|}}}
| 5namedata = {{{5namedata5|}}}
| alongside = {{{alongside5|}}}
| ambassador_from = {{{ambassador_from5|}}}
| appointer = {{#if: {{{appointer5|}}} | {{{appointer5}}} | {{{appointed5|}}} }}
| assembly = {{{assembly5|}}}
| assuming = {{{assuming5|}}}
| chancellor = {{{chancellor5|}}}
| co-leader = {{{co-leader5|}}}
| constituency_{{#if:{{{constituency_AM5|}}}|AM|MP}} = {{#if: {{{constituency_AM5|}}} | {{{constituency_AM5}}} | {{{constituency_MP5|}}} }}
| constituency = {{{constituency5|}}}
| convocation = {{{convocation5|}}}
| country = {{{country5|}}}
| deputy = {{{deputy5|}}}
| district = {{{district5|}}}
| firstminister = {{{firstminister5|}}}
| governor-general = {{{governor-general5|}}}
| governor_general = {{{governor_general5|}}}
| governor = {{{governor5|}}}
| jr/sr = {{{jr/sr5|}}}
| jr/sr and state = {{{jr/sr and state5|}}}
| leader = {{{leader5|}}}
| legislature = {{{legislature5|}}}
| lieutenant_governor = {{{lieutenant_governor5|}}}
| lieutenant = {{{lieutenant5|}}}
| minister_from = {{{minister_from5|}}}
| minority_floor_leader = {{{minority_floor_leader5|}}}
| majority_floor_leader = {{{majority_floor_leader5|}}}
| majority_leader = {{#if: {{{majorityleader5|}}} | {{{majorityleader5}}} | {{{majority_leader5|}}} }}
| majority = {{{majority5|}}}
| minister = {{{minister5|}}}
| minority_leader = {{#if: {{{minorityleader5|}}} | {{{minorityleader5}}} | {{{minority_leader5|}}} }}
| monarch = {{{monarch5|}}}
| nominator = {{{nominator5|}}}
| office = {{{office5|}}}
| order = {{{order5|}}}
| parliament = {{{parliament5|}}}
| parliamentarygroup = {{{parliamentarygroup5|}}}
| predecessor = {{{predecessor5|}}}
| preceding = {{{preceding5|}}}
| preceded = {{{preceded5|}}}
| premier = {{{premier5|}}}
| president = {{{president5|}}}
| primeminister = {{{primeminister5|}}}
| riding = {{{riding5|}}}
| state_assembly = {{{state_assembly5|}}}
| state_delegate = {{{state_delegate5|}}}
| state_house = {{{state_house5|}}}
| state_legislature = {{{state_legislature5|}}}
| state_senate = {{{state_senate5|}}}
| state = {{{state5|}}}
| status = {{{status5|}}}
| subterm = {{nobold|{{{subterm5|}}}}}
| suboffice = {{{suboffice5|}}}
| succeeded = {{{succeeded5|}}}
| succeeding = {{{succeeding5|}}}
| successor = {{{successor5|}}}
| taoiseach = {{{taoiseach5|}}}
| termlabel = {{{term_label5|{{{termlabel5|In office}}}}}}
| termend = {{#if:{{{termend5|}}}|{{{termend5}}}|{{{term_end5|}}}}}
| termstart = {{#if:{{{termstart5|}}}|{{{termstart5}}}|{{{term_start5|}}}}}
| term = {{{term5|}}}
| title = {{{title5|}}}
| vicegovernor = {{{vicegovernor5|}}}
| vicepresident = {{{vicepresident5|}}}
| vicepremier = {{{vicepremier5|}}}
| viceprimeminister = {{{viceprimeminister5|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term5|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname6|}}}
| 1namedata = {{{1namedata6|}}}
| 2blankname = {{{2blankname6|}}}
| 2namedata = {{{2namedata6|}}}
| 3blankname = {{{3blankname6|}}}
| 3namedata = {{{3namedata6|}}}
| 4blankname = {{{4blankname6|}}}
| 4namedata = {{{4namedata6|}}}
| 5blankname = {{{5blankname6|}}}
| 5namedata = {{{5namedata6|}}}
| alongside = {{{alongside6|}}}
| ambassador_from = {{{ambassador_from6|}}}
| appointer = {{#if: {{{appointer6|}}} | {{{appointer6}}} | {{{appointed6|}}} }}
| assembly = {{{assembly6|}}}
| assuming = {{{assuming6|}}}
| chancellor = {{{chancellor6|}}}
| co-leader = {{{co-leader6|}}}
| constituency_{{#if:{{{constituency_AM6|}}}|AM|MP}} = {{#if: {{{constituency_AM6|}}} | {{{constituency_AM6}}} | {{{constituency_MP6|}}} }}
| constituency = {{{constituency6|}}}
| convocation = {{{convocation6|}}}
| country = {{{country6|}}}
| deputy = {{{deputy6|}}}
| district = {{{district6|}}}
| firstminister = {{{firstminister6|}}}
| governor-general = {{{governor-general6|}}}
| governor_general = {{{governor_general6|}}}
| governor = {{{governor6|}}}
| jr/sr = {{{jr/sr6|}}}
| jr/sr and state = {{{jr/sr and state6|}}}
| leader = {{{leader6|}}}
| legislature = {{{legislature6|}}}
| lieutenant_governor = {{{lieutenant_governor6|}}}
| lieutenant = {{{lieutenant6|}}}
| minority_floor_leader = {{{minority_floor_leader6|}}}
| minister_from = {{{minister_from6|}}}
| majority_floor_leader = {{{majority_floor_leader6|}}}
| majority_leader = {{#if: {{{majorityleader6|}}} | {{{majorityleader6}}} | {{{majority_leader6|}}} }}
| majority = {{{majority6|}}}
| minister = {{{minister6|}}}
| minority_leader = {{#if: {{{minorityleader6|}}} | {{{minorityleader6}}} | {{{minority_leader6|}}} }}
| monarch = {{{monarch6|}}}
| nominator = {{{nominator6|}}}
| office = {{{office6|}}}
| order = {{{order6|}}}
| parliament = {{{parliament6|}}}
| parliamentarygroup = {{{parliamentarygroup6|}}}
| predecessor = {{{predecessor6|}}}
| preceding = {{{preceding6|}}}
| preceded = {{{preceded6|}}}
| premier = {{{premier6|}}}
| president = {{{president6|}}}
| primeminister = {{{primeminister6|}}}
| riding = {{{riding6|}}}
| state_assembly = {{{state_assembly6|}}}
| state_delegate = {{{state_delegate6|}}}
| state_house = {{{state_house6|}}}
| state_legislature = {{{state_legislature6|}}}
| state_senate = {{{state_senate6|}}}
| state = {{{state6|}}}
| status = {{{status6|}}}
| subterm = {{nobold|{{{subterm6|}}}}}
| suboffice = {{{suboffice6|}}}
| succeeded = {{{succeeded6|}}}
| succeeding = {{{succeeding6|}}}
| successor = {{{successor6|}}}
| taoiseach = {{{taoiseach6|}}}
| termlabel = {{{term_label6|{{{termlabel6|In office}}}}}}
| termend = {{#if:{{{termend6|}}}|{{{termend6}}}|{{{term_end6|}}}}}
| termstart = {{#if:{{{termstart6|}}}|{{{termstart6}}}|{{{term_start6|}}}}}
| term = {{{term6|}}}
| title = {{{title6|}}}
| vicegovernor = {{{vicegovernor6|}}}
| vicepresident = {{{vicepresident6|}}}
| vicepremier = {{{vicepremier6|}}}
| viceprimeminister = {{{viceprimeminister6|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term6|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname7|}}}
| 1namedata = {{{1namedata7|}}}
| 2blankname = {{{2blankname7|}}}
| 2namedata = {{{2namedata7|}}}
| 3blankname = {{{3blankname7|}}}
| 3namedata = {{{3namedata7|}}}
| 4blankname = {{{4blankname7|}}}
| 4namedata = {{{4namedata7|}}}
| 5blankname = {{{5blankname7|}}}
| 5namedata = {{{5namedata7|}}}
| alongside = {{{alongside7|}}}
| ambassador_from = {{{ambassador_from7|}}}
| appointer = {{#if: {{{appointer7|}}} | {{{appointer7}}} | {{{appointed7|}}} }}
| assembly = {{{assembly7|}}}
| assuming = {{{assuming7|}}}
| chancellor = {{{chancellor7|}}}
| co-leader = {{{co-leader7|}}}
| constituency_{{#if:{{{constituency_AM7|}}}|AM|MP}} = {{#if: {{{constituency_AM7|}}} | {{{constituency_AM7}}} | {{{constituency_MP7|}}} }}
| constituency = {{{constituency7|}}}
| convocation = {{{convocation7|}}}
| country = {{{country7|}}}
| deputy = {{{deputy7|}}}
| district = {{{district7|}}}
| firstminister = {{{firstminister7|}}}
| governor-general = {{{governor-general7|}}}
| governor_general = {{{governor_general7|}}}
| governor = {{{governor7|}}}
| jr/sr = {{{jr/sr7|}}}
| jr/sr and state = {{{jr/sr and state7|}}}
| leader = {{{leader7|}}}
| legislature = {{{legislature7|}}}
| lieutenant_governor = {{{lieutenant_governor7|}}}
| lieutenant = {{{lieutenant7|}}}
| minister_from = {{{minister_from7|}}}
| minority_floor_leader = {{{minority_floor_leader7|}}}
| majority_floor_leader = {{{majority_floor_leader7|}}}
| majority_leader = {{#if: {{{majorityleader7|}}} | {{{majorityleader7}}} | {{{majority_leader7|}}} }}
| majority = {{{majority7|}}}
| minister = {{{minister7|}}}
| minority_leader = {{#if: {{{minorityleader7|}}} | {{{minorityleader7}}} | {{{minority_leader7|}}} }}
| monarch = {{{monarch7|}}}
| nominator = {{{nominator7|}}}
| office = {{{office7|}}}
| order = {{{order7|}}}
| parliament = {{{parliament7|}}}
| parliamentarygroup = {{{parliamentarygroup7|}}}
| predecessor = {{{predecessor7|}}}
| preceding = {{{preceding7|}}}
| preceded = {{{preceded7|}}}
| premier = {{{premier7|}}}
| president = {{{president7|}}}
| primeminister = {{{primeminister7|}}}
| riding = {{{riding7|}}}
| state_assembly = {{{state_assembly7|}}}
| state_delegate = {{{state_delegate7|}}}
| state_house = {{{state_house7|}}}
| state_legislature = {{{state_legislature7|}}}
| state_senate = {{{state_senate7|}}}
| state = {{{state7|}}}
| status = {{{status7|}}}
| subterm = {{nobold|{{{subterm7|}}}}}
| suboffice = {{{suboffice7|}}}
| succeeded = {{{succeeded7|}}}
| succeeding = {{{succeeding7|}}}
| successor = {{{successor7|}}}
| taoiseach = {{{taoiseach7|}}}
| termlabel = {{{term_label7|{{{termlabel7|In office}}}}}}
| termend = {{#if:{{{termend7|}}}|{{{termend7}}}|{{{term_end7|}}}}}
| termstart = {{#if:{{{termstart7|}}}|{{{termstart7}}}|{{{term_start7|}}}}}
| term = {{{term7|}}}
| title = {{{title7|}}}
| vicegovernor = {{{vicegovernor7|}}}
| vicepresident = {{{vicepresident7|}}}
| vicepremier = {{{vicepremier7|}}}
| viceprimeminister = {{{viceprimeminister7|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term7|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname8|}}}
| 1namedata = {{{1namedata8|}}}
| 2blankname = {{{2blankname8|}}}
| 2namedata = {{{2namedata8|}}}
| 3blankname = {{{3blankname8|}}}
| 3namedata = {{{3namedata8|}}}
| 4blankname = {{{4blankname8|}}}
| 4namedata = {{{4namedata8|}}}
| 5blankname = {{{5blankname8|}}}
| 5namedata = {{{5namedata8|}}}
| alongside = {{{alongside8|}}}
| ambassador_from = {{{ambassador_from8|}}}
| appointer = {{#if: {{{appointer8|}}} | {{{appointer8}}} | {{{appointed8|}}} }}
| assembly = {{{assembly8|}}}
| assuming = {{{assuming8|}}}
| chancellor = {{{chancellor8|}}}
| co-leader = {{{co-leader8|}}}
| constituency_{{#if:{{{constituency_AM8|}}}|AM|MP}} = {{#if: {{{constituency_AM8|}}} | {{{constituency_AM8}}} | {{{constituency_MP8|}}} }}
| constituency = {{{constituency8|}}}
| convocation = {{{convocation8|}}}
| country = {{{country8|}}}
| deputy = {{{deputy8|}}}
| district = {{{district8|}}}
| firstminister = {{{firstminister8|}}}
| governor-general = {{{governor-general8|}}}
| governor_general = {{{governor_general8|}}}
| governor = {{{governor8|}}}
| jr/sr = {{{jr/sr8|}}}
| jr/sr and state = {{{jr/sr and state8|}}}
| leader = {{{leader8|}}}
| legislature = {{{legislature8|}}}
| lieutenant_governor = {{{lieutenant_governor8|}}}
| lieutenant = {{{lieutenant8|}}}
| minister_from = {{{minister_from8|}}}
| minority_floor_leader = {{{minority_floor_leader8|}}}
| majority_floor_leader = {{{majority_floor_leader8|}}}
| majority_leader = {{#if: {{{majorityleader8|}}} | {{{majorityleader8}}} | {{{majority_leader8|}}} }}
| majority = {{{majority8|}}}
| minister = {{{minister8|}}}
| minority_leader = {{#if: {{{minorityleader8|}}} | {{{minorityleader8}}} | {{{minority_leader8|}}} }}
| monarch = {{{monarch8|}}}
| nominator = {{{nominator8|}}}
| office = {{{office8|}}}
| order = {{{order8|}}}
| parliament = {{{parliament8|}}}
| parliamentarygroup = {{{parliamentarygroup8|}}}
| predecessor = {{{predecessor8|}}}
| preceding = {{{preceding8|}}}
| preceded = {{{preceded8|}}}
| premier = {{{premier8|}}}
| president = {{{president8|}}}
| primeminister = {{{primeminister8|}}}
| riding = {{{riding8|}}}
| state_assembly = {{{state_assembly8|}}}
| state_delegate = {{{state_delegate8|}}}
| state_house = {{{state_house8|}}}
| state_legislature = {{{state_legislature8|}}}
| state_senate = {{{state_senate8|}}}
| state = {{{state8|}}}
| status = {{{status8|}}}
| subterm = {{nobold|{{{subterm8|}}}}}
| suboffice = {{{suboffice8|}}}
| succeeded = {{{succeeded8|}}}
| succeeding = {{{succeeding8|}}}
| successor = {{{successor8|}}}
| taoiseach = {{{taoiseach8|}}}
| termlabel = {{{term_label8|{{{termlabel8|In office}}}}}}
| termend = {{#if:{{{termend8|}}}|{{{termend8}}}|{{{term_end8|}}}}}
| termstart = {{#if:{{{termstart8|}}}|{{{termstart8}}}|{{{term_start8|}}}}}
| term = {{{term8|}}}
| title = {{{title8|}}}
| vicegovernor = {{{vicegovernor8|}}}
| vicepresident = {{{vicepresident8|}}}
| vicepremier = {{{vicepremier8|}}}
| viceprimeminister = {{{viceprimeminister8|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term8|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname9|}}}
| 1namedata = {{{1namedata9|}}}
| 2blankname = {{{2blankname9|}}}
| 2namedata = {{{2namedata9|}}}
| 3blankname = {{{3blankname9|}}}
| 3namedata = {{{3namedata9|}}}
| 4blankname = {{{4blankname9|}}}
| 4namedata = {{{4namedata9|}}}
| 5blankname = {{{5blankname9|}}}
| 5namedata = {{{5namedata9|}}}
| alongside = {{{alongside9|}}}
| ambassador_from = {{{ambassador_from9|}}}
| appointer = {{#if: {{{appointer9|}}} | {{{appointer9}}} | {{{appointed9|}}} }}
| assembly = {{{assembly9|}}}
| assuming = {{{assuming9|}}}
| chancellor = {{{chancellor9|}}}
| co-leader = {{{co-leader9|}}}
| constituency_{{#if:{{{constituency_AM9|}}}|AM|MP}} = {{#if: {{{constituency_AM9|}}} | {{{constituency_AM9}}} | {{{constituency_MP9|}}} }}
| constituency = {{{constituency9|}}}
| convocation = {{{convocation9|}}}
| country = {{{country9|}}}
| deputy = {{{deputy9|}}}
| district = {{{district9|}}}
| firstminister = {{{firstminister9|}}}
| governor-general = {{{governor-general9|}}}
| governor_general = {{{governor_general9|}}}
| governor = {{{governor9|}}}
| jr/sr = {{{jr/sr9|}}}
| jr/sr and state = {{{jr/sr and state9|}}}
| leader = {{{leader9|}}}
| legislature = {{{legislature9|}}}
| lieutenant_governor = {{{lieutenant_governor9|}}}
| lieutenant = {{{lieutenant9|}}}
| minister_from = {{{minister_from9|}}}
| minority_floor_leader = {{{minority_floor_leader9|}}}
| majority_floor_leader = {{{majority_floor_leader9|}}}
| majority_leader = {{#if: {{{majorityleader9|}}} | {{{majorityleader9}}} | {{{majority_leader9|}}} }}
| majority = {{{majority9|}}}
| minister = {{{minister9|}}}
| minority_leader = {{#if: {{{minorityleader9|}}} | {{{minorityleader9}}} | {{{minority_leader9|}}} }}
| monarch = {{{monarch9|}}}
| nominator = {{{nominator9|}}}
| office = {{{office9|}}}
| order = {{{order9|}}}
| parliament = {{{parliament9|}}}
| parliamentarygroup = {{{parliamentarygroup9|}}}
| predecessor = {{{predecessor9|}}}
| preceding = {{{preceding9|}}}
| preceded = {{{preceded9|}}}
| premier = {{{premier9|}}}
| president = {{{president9|}}}
| primeminister = {{{primeminister9|}}}
| riding = {{{riding9|}}}
| state_assembly = {{{state_assembly9|}}}
| state_delegate = {{{state_delegate9|}}}
| state_house = {{{state_house9|}}}
| state_legislature = {{{state_legislature9|}}}
| state_senate = {{{state_senate9|}}}
| state = {{{state9|}}}
| status = {{{status9|}}}
| subterm = {{nobold|{{{subterm9|}}}}}
| suboffice = {{{suboffice9|}}}
| succeeded = {{{succeeded9|}}}
| succeeding = {{{succeeding9|}}}
| successor = {{{successor9|}}}
| taoiseach = {{{taoiseach9|}}}
| termlabel = {{{term_label9|{{{termlabel9|In office}}}}}}
| termend = {{#if:{{{termend9|}}}|{{{termend9}}}|{{{term_end9|}}}}}
| termstart = {{#if:{{{termstart9|}}}|{{{termstart9}}}|{{{term_start9|}}}}}
| term = {{{term9|}}}
| title = {{{title9|}}}
| vicegovernor = {{{vicegovernor9|}}}
| vicepresident = {{{vicepresident9|}}}
| vicepremier = {{{vicepremier9|}}}
| viceprimeminister = {{{viceprimeminister9|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term9|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname10|}}}
| 1namedata = {{{1namedata10|}}}
| 2blankname = {{{2blankname10|}}}
| 2namedata = {{{2namedata10|}}}
| 3blankname = {{{3blankname10|}}}
| 3namedata = {{{3namedata10|}}}
| 4blankname = {{{4blankname10|}}}
| 4namedata = {{{4namedata10|}}}
| 5blankname = {{{5blankname10|}}}
| 5namedata = {{{5namedata10|}}}
| alongside = {{{alongside10|}}}
| ambassador_from = {{{ambassador_from10|}}}
| appointer = {{#if: {{{appointer10|}}} | {{{appointer10}}} | {{{appointed10|}}} }}
| assembly = {{{assembly10|}}}
| assuming = {{{assuming10|}}}
| chancellor = {{{chancellor10|}}}
| co-leader = {{{co-leader10|}}}
| constituency_{{#if:{{{constituency_AM10|}}}|AM|MP}} = {{#if: {{{constituency_AM10|}}} | {{{constituency_AM10}}} | {{{constituency_MP10|}}} }}
| constituency = {{{constituency10|}}}
| convocation = {{{convocation10|}}}
| country = {{{country10|}}}
| deputy = {{{deputy10|}}}
| district = {{{district10|}}}
| firstminister = {{{firstminister10|}}}
| governor-general = {{{governor-general10|}}}
| governor_general = {{{governor_general10|}}}
| governor = {{{governor10|}}}
| jr/sr = {{{jr/sr10|}}}
| jr/sr and state = {{{jr/sr and state10|}}}
| leader = {{{leader10|}}}
| legislature = {{{legislature10|}}}
| lieutenant_governor = {{{lieutenant_governor10|}}}
| lieutenant = {{{lieutenant10|}}}
| minister_from = {{{minister_from10|}}}
| minority_floor_leader = {{{minority_floor_leader10|}}}
| majority_floor_leader = {{{majority_floor_leader10|}}}
| majority_leader = {{#if: {{{majorityleader10|}}} | {{{majorityleader10}}} | {{{majority_leader10|}}} }}
| majority = {{{majority10|}}}
| minister = {{{minister10|}}}
| minority_leader = {{#if: {{{minorityleader10|}}} | {{{minorityleader10}}} | {{{minority_leader10|}}} }}
| monarch = {{{monarch10|}}}
| nominator = {{{nominator10|}}}
| office = {{{office10|}}}
| order = {{{order10|}}}
| parliament = {{{parliament10|}}}
| parliamentarygroup = {{{parliamentarygroup10|}}}
| predecessor = {{{predecessor10|}}}
| preceding = {{{preceding10|}}}
| preceded = {{{preceded10|}}}
| premier = {{{premier10|}}}
| president = {{{president10|}}}
| primeminister = {{{primeminister10|}}}
| riding = {{{riding10|}}}
| state_assembly = {{{state_assembly10|}}}
| state_delegate = {{{state_delegate10|}}}
| state_house = {{{state_house10|}}}
| state_legislature = {{{state_legislature10|}}}
| state_senate = {{{state_senate10|}}}
| state = {{{state10|}}}
| status = {{{status10|}}}
| subterm = {{nobold|{{{subterm10|}}}}}
| suboffice = {{{suboffice10|}}}
| succeeded = {{{succeeded10|}}}
| succeeding = {{{succeeding10|}}}
| successor = {{{successor10|}}}
| taoiseach = {{{taoiseach10|}}}
| termlabel = {{{term_label10|{{{termlabel10|In office}}}}}}
| termend = {{#if:{{{termend10|}}}|{{{termend10}}}|{{{term_end10|}}}}}
| termstart = {{#if:{{{termstart10|}}}|{{{termstart10}}}|{{{term_start10|}}}}}
| term = {{{term10|}}}
| title = {{{title10|}}}
| vicegovernor = {{{vicegovernor10|}}}
| vicepresident = {{{vicepresident10|}}}
| vicepremier = {{{vicepremier10|}}}
| viceprimeminister = {{{viceprimeminister10|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term10|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname11|}}}
| 1namedata = {{{1namedata11|}}}
| 2blankname = {{{2blankname11|}}}
| 2namedata = {{{2namedata11|}}}
| 3blankname = {{{3blankname11|}}}
| 3namedata = {{{3namedata11|}}}
| 4blankname = {{{4blankname11|}}}
| 4namedata = {{{4namedata11|}}}
| 5blankname = {{{5blankname11|}}}
| 5namedata = {{{5namedata11|}}}
| alongside = {{{alongside11|}}}
| ambassador_from = {{{ambassador_from11|}}}
| appointer = {{#if: {{{appointer11|}}} | {{{appointer11}}} | {{{appointed11|}}} }}
| assembly = {{{assembly11|}}}
| assuming = {{{assuming11|}}}
| chancellor = {{{chancellor11|}}}
| co-leader = {{{co-leader11|}}}
| constituency_{{#if:{{{constituency_AM11|}}}|AM|MP}} = {{#if: {{{constituency_AM11|}}} | {{{constituency_AM11}}} | {{{constituency_MP11|}}} }}
| constituency = {{{constituency11|}}}
| convocation = {{{convocation11|}}}
| country = {{{country11|}}}
| deputy = {{{deputy11|}}}
| district = {{{district11|}}}
| firstminister = {{{firstminister11|}}}
| governor-general = {{{governor-general11|}}}
| governor_general = {{{governor_general11|}}}
| governor = {{{governor11|}}}
| jr/sr = {{{jr/sr11|}}}
| jr/sr and state = {{{jr/sr and state11|}}}
| leader = {{{leader11|}}}
| legislature = {{{legislature11|}}}
| lieutenant_governor = {{{lieutenant_governor11|}}}
| lieutenant = {{{lieutenant11|}}}
| minister_from = {{{minister_from11|}}}
| minority_floor_leader = {{{minority_floor_leader11|}}}
| majority_floor_leader = {{{majority_floor_leader11|}}}
| majority_leader = {{#if: {{{majorityleader11|}}} | {{{majorityleader11}}} | {{{majority_leader11|}}} }}
| majority = {{{majority11|}}}
| minister = {{{minister11|}}}
| minority_leader = {{#if: {{{minorityleader11|}}} | {{{minorityleader11}}} | {{{minority_leader11|}}} }}
| monarch = {{{monarch11|}}}
| nominator = {{{nominator11|}}}
| office = {{{office11|}}}
| order = {{{order11|}}}
| parliament = {{{parliament11|}}}
| parliamentarygroup = {{{parliamentarygroup11|}}}
| predecessor = {{{predecessor11|}}}
| preceding = {{{preceding11|}}}
| preceded = {{{preceded11|}}}
| premier = {{{premier11|}}}
| president = {{{president11|}}}
| primeminister = {{{primeminister11|}}}
| riding = {{{riding11|}}}
| state_assembly = {{{state_assembly11|}}}
| state_delegate = {{{state_delegate11|}}}
| state_house = {{{state_house11|}}}
| state_legislature = {{{state_legislature11|}}}
| state_senate = {{{state_senate11|}}}
| state = {{{state11|}}}
| status = {{{status11|}}}
| subterm = {{nobold|{{{subterm11|}}}}}
| suboffice = {{{suboffice11|}}}
| succeeded = {{{succeeded11|}}}
| succeeding = {{{succeeding11|}}}
| successor = {{{successor11|}}}
| taoiseach = {{{taoiseach11|}}}
| termlabel = {{{term_label11|{{{termlabel11|In office}}}}}}
| termend = {{#if:{{{termend11|}}}|{{{termend11}}}|{{{term_end11|}}}}}
| termstart = {{#if:{{{termstart11|}}}|{{{termstart11}}}|{{{term_start11|}}}}}
| term = {{{term11|}}}
| title = {{{title11|}}}
| vicegovernor = {{{vicegovernor11|}}}
| vicepresident = {{{vicepresident11|}}}
| vicepremier = {{{vicepremier11|}}}
| viceprimeminister = {{{viceprimeminister11|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term11|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname12|}}}
| 1namedata = {{{1namedata12|}}}
| 2blankname = {{{2blankname12|}}}
| 2namedata = {{{2namedata12|}}}
| 3blankname = {{{3blankname12|}}}
| 3namedata = {{{3namedata12|}}}
| 4blankname = {{{4blankname12|}}}
| 4namedata = {{{4namedata12|}}}
| 5blankname = {{{5blankname12|}}}
| 5namedata = {{{5namedata12|}}}
| alongside = {{{alongside12|}}}
| ambassador_from = {{{ambassador_from12|}}}
| appointer = {{#if: {{{appointer12|}}} | {{{appointer12}}} | {{{appointed12|}}} }}
| assembly = {{{assembly12|}}}
| assuming = {{{assuming12|}}}
| chancellor = {{{chancellor12|}}}
| co-leader = {{{co-leader12|}}}
| constituency_{{#if:{{{constituency_AM12|}}}|AM|MP}} = {{#if: {{{constituency_AM12|}}} | {{{constituency_AM12}}} | {{{constituency_MP12|}}} }}
| constituency = {{{constituency12|}}}
| convocation = {{{convocation12|}}}
| country = {{{country12|}}}
| deputy = {{{deputy12|}}}
| district = {{{district12|}}}
| firstminister = {{{firstminister12|}}}
| governor-general = {{{governor-general12|}}}
| governor_general = {{{governor_general12|}}}
| governor = {{{governor12|}}}
| jr/sr = {{{jr/sr12|}}}
| jr/sr and state = {{{jr/sr and state12|}}}
| leader = {{{leader12|}}}
| legislature = {{{legislature12|}}}
| lieutenant_governor = {{{lieutenant_governor12|}}}
| lieutenant = {{{lieutenant12|}}}
| minister_from = {{{minister_from12|}}}
| minority_floor_leader = {{{minority_floor_leader12|}}}
| majority_floor_leader = {{{majority_floor_leader12|}}}
| majority_leader = {{#if: {{{majorityleader12|}}} | {{{majorityleader12}}} | {{{majority_leader12|}}} }}
| majority = {{{majority12|}}}
| minister = {{{minister12|}}}
| minority_leader = {{#if: {{{minorityleader12|}}} | {{{minorityleader12}}} | {{{minority_leader12|}}} }}
| monarch = {{{monarch12|}}}
| nominator = {{{nominator12|}}}
| office = {{{office12|}}}
| order = {{{order12|}}}
| parliament = {{{parliament12|}}}
| parliamentarygroup = {{{parliamentarygroup12|}}}
| predecessor = {{{predecessor12|}}}
| preceding = {{{preceding12|}}}
| preceded = {{{preceded12|}}}
| premier = {{{premier12|}}}
| president = {{{president12|}}}
| primeminister = {{{primeminister12|}}}
| riding = {{{riding12|}}}
| state_assembly = {{{state_assembly12|}}}
| state_delegate = {{{state_delegate12|}}}
| state_house = {{{state_house12|}}}
| state_legislature = {{{state_legislature12|}}}
| state_senate = {{{state_senate12|}}}
| state = {{{state12|}}}
| status = {{{status12|}}}
| subterm = {{nobold|{{{subterm12|}}}}}
| suboffice = {{{suboffice12|}}}
| succeeded = {{{succeeded12|}}}
| succeeding = {{{succeeding12|}}}
| successor = {{{successor12|}}}
| taoiseach = {{{taoiseach12|}}}
| termlabel = {{{term_label12|{{{termlabel12|In office}}}}}}
| termend = {{#if:{{{termend12|}}}|{{{termend12}}}|{{{term_end12|}}}}}
| termstart = {{#if:{{{termstart12|}}}|{{{termstart12}}}|{{{term_start12|}}}}}
| term = {{{term12|}}}
| title = {{{title12|}}}
| vicegovernor = {{{vicegovernor12|}}}
| vicepresident = {{{vicepresident12|}}}
| vicepremier = {{{vicepremier12|}}}
| viceprimeminister = {{{viceprimeminister12|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term12|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname13|}}}
| 1namedata = {{{1namedata13|}}}
| 2blankname = {{{2blankname13|}}}
| 2namedata = {{{2namedata13|}}}
| 3blankname = {{{3blankname13|}}}
| 3namedata = {{{3namedata13|}}}
| 4blankname = {{{4blankname13|}}}
| 4namedata = {{{4namedata13|}}}
| 5blankname = {{{5blankname13|}}}
| 5namedata = {{{5namedata13|}}}
| alongside = {{{alongside13|}}}
| ambassador_from = {{{ambassador_from13|}}}
| appointer = {{#if: {{{appointer13|}}} | {{{appointer13}}} | {{{appointed13|}}} }}
| assembly = {{{assembly13|}}}
| assuming = {{{assuming13|}}}
| chancellor = {{{chancellor13|}}}
| co-leader = {{{co-leader13|}}}
| constituency_{{#if:{{{constituency_AM13|}}}|AM|MP}} = {{#if: {{{constituency_AM13|}}} | {{{constituency_AM13}}} | {{{constituency_MP13|}}} }}
| constituency = {{{constituency13|}}}
| convocation = {{{convocation13|}}}
| country = {{{country13|}}}
| deputy = {{{deputy13|}}}
| district = {{{district13|}}}
| firstminister = {{{firstminister13|}}}
| governor-general = {{{governor-general13|}}}
| governor_general = {{{governor_general13|}}}
| governor = {{{governor13|}}}
| jr/sr = {{{jr/sr13|}}}
| jr/sr and state = {{{jr/sr and state13|}}}
| leader = {{{leader13|}}}
| legislature = {{{legislature13|}}}
| lieutenant_governor = {{{lieutenant_governor13|}}}
| lieutenant = {{{lieutenant13|}}}
| minister_from = {{{minister_from13|}}}
| minority_floor_leader = {{{minority_floor_leader13|}}}
| majority_floor_leader = {{{majority_floor_leader13|}}}
| majority_leader = {{#if: {{{majorityleader13|}}} | {{{majorityleader13}}} | {{{majority_leader13|}}} }}
| majority = {{{majority13|}}}
| minister = {{{minister13|}}}
| minority_leader = {{#if: {{{minorityleader13|}}} | {{{minorityleader13}}} | {{{minority_leader13|}}} }}
| monarch = {{{monarch13|}}}
| nominator = {{{nominator13|}}}
| office = {{{office13|}}}
| order = {{{order13|}}}
| parliament = {{{parliament13|}}}
| parliamentarygroup = {{{parliamentarygroup13|}}}
| predecessor = {{{predecessor13|}}}
| preceding = {{{preceding13|}}}
| preceded = {{{preceded13|}}}
| premier = {{{premier13|}}}
| president = {{{president13|}}}
| primeminister = {{{primeminister13|}}}
| riding = {{{riding13|}}}
| state_assembly = {{{state_assembly13|}}}
| state_delegate = {{{state_delegate13|}}}
| state_house = {{{state_house13|}}}
| state_legislature = {{{state_legislature13|}}}
| state_senate = {{{state_senate13|}}}
| state = {{{state13|}}}
| status = {{{status13|}}}
| subterm = {{nobold|{{{subterm13|}}}}}
| suboffice = {{{suboffice13|}}}
| succeeded = {{{succeeded13|}}}
| succeeding = {{{succeeding13|}}}
| successor = {{{successor13|}}}
| taoiseach = {{{taoiseach13|}}}
| termlabel = {{{term_label13|{{{termlabel13|In office}}}}}}
| termend = {{#if:{{{termend13|}}}|{{{termend13}}}|{{{term_end13|}}}}}
| termstart = {{#if:{{{termstart13|}}}|{{{termstart13}}}|{{{term_start13|}}}}}
| term = {{{term13|}}}
| title = {{{title13|}}}
| vicegovernor = {{{vicegovernor13|}}}
| vicepresident = {{{vicepresident13|}}}
| vicepremier = {{{vicepremier13|}}}
| viceprimeminister = {{{viceprimeminister13|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term13|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname14|}}}
| 1namedata = {{{1namedata14|}}}
| 2blankname = {{{2blankname14|}}}
| 2namedata = {{{2namedata14|}}}
| 3blankname = {{{3blankname14|}}}
| 3namedata = {{{3namedata14|}}}
| 4blankname = {{{4blankname14|}}}
| 4namedata = {{{4namedata14|}}}
| 5blankname = {{{5blankname14|}}}
| 5namedata = {{{5namedata14|}}}
| alongside = {{{alongside14|}}}
| ambassador_from = {{{ambassador_from14|}}}
| appointer = {{#if: {{{appointer14|}}} | {{{appointer14}}} | {{{appointed14|}}} }}
| assembly = {{{assembly14|}}}
| assuming = {{{assuming14|}}}
| chancellor = {{{chancellor14|}}}
| co-leader = {{{co-leader14|}}}
| constituency_{{#if:{{{constituency_AM14|}}}|AM|MP}} = {{#if: {{{constituency_AM14|}}} | {{{constituency_AM14}}} | {{{constituency_MP14|}}} }}
| constituency = {{{constituency14|}}}
| convocation = {{{convocation14|}}}
| country = {{{country14|}}}
| deputy = {{{deputy14|}}}
| district = {{{district14|}}}
| firstminister = {{{firstminister14|}}}
| governor-general = {{{governor-general14|}}}
| governor_general = {{{governor_general14|}}}
| governor = {{{governor14|}}}
| jr/sr = {{{jr/sr14|}}}
| jr/sr and state = {{{jr/sr and state14|}}}
| leader = {{{leader14|}}}
| legislature = {{{legislature14|}}}
| lieutenant_governor = {{{lieutenant_governor14|}}}
| lieutenant = {{{lieutenant14|}}}
| minister_from = {{{minister_from14|}}}
| minority_floor_leader = {{{minority_floor_leader14|}}}
| majority_floor_leader = {{{majority_floor_leader14|}}}
| majority_leader = {{#if: {{{majorityleader14|}}} | {{{majorityleader14}}} | {{{majority_leader14|}}} }}
| majority = {{{majority14|}}}
| minister = {{{minister14|}}}
| minority_leader = {{#if: {{{minorityleader14|}}} | {{{minorityleader14}}} | {{{minority_leader14|}}} }}
| monarch = {{{monarch14|}}}
| nominator = {{{nominator14|}}}
| office = {{{office14|}}}
| order = {{{order14|}}}
| parliament = {{{parliament14|}}}
| parliamentarygroup = {{{parliamentarygroup14|}}}
| predecessor = {{{predecessor14|}}}
| preceding = {{{preceding14|}}}
| preceded = {{{preceded14|}}}
| premier = {{{premier14|}}}
| president = {{{president14|}}}
| primeminister = {{{primeminister14|}}}
| riding = {{{riding14|}}}
| state_assembly = {{{state_assembly14|}}}
| state_delegate = {{{state_delegate14|}}}
| state_house = {{{state_house14|}}}
| state_legislature = {{{state_legislature14|}}}
| state_senate = {{{state_senate14|}}}
| state = {{{state14|}}}
| status = {{{status14|}}}
| subterm = {{nobold|{{{subterm14|}}}}}
| suboffice = {{{suboffice14|}}}
| succeeded = {{{succeeded14|}}}
| succeeding = {{{succeeding14|}}}
| successor = {{{successor14|}}}
| taoiseach = {{{taoiseach14|}}}
| termlabel = {{{term_label14|{{{termlabel14|In office}}}}}}
| termend = {{#if:{{{termend14|}}}|{{{termend14}}}|{{{term_end14|}}}}}
| termstart = {{#if:{{{termstart14|}}}|{{{termstart14}}}|{{{term_start14|}}}}}
| term = {{{term14|}}}
| title = {{{title14|}}}
| vicegovernor = {{{vicegovernor14|}}}
| vicepresident = {{{vicepresident14|}}}
| vicepremier = {{{vicepremier14|}}}
| viceprimeminister = {{{viceprimeminister14|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term14|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname15|}}}
| 1namedata = {{{1namedata15|}}}
| 2blankname = {{{2blankname15|}}}
| 2namedata = {{{2namedata15|}}}
| 3blankname = {{{3blankname15|}}}
| 3namedata = {{{3namedata15|}}}
| 4blankname = {{{4blankname15|}}}
| 4namedata = {{{4namedata15|}}}
| 5blankname = {{{5blankname15|}}}
| 5namedata = {{{5namedata15|}}}
| alongside = {{{alongside15|}}}
| ambassador_from = {{{ambassador_from15|}}}
| appointer = {{#if: {{{appointer15|}}} | {{{appointer15}}} | {{{appointed15|}}} }}
| assembly = {{{assembly15|}}}
| assuming = {{{assuming15|}}}
| chancellor = {{{chancellor15|}}}
| co-leader = {{{co-leader15|}}}
| constituency_{{#if:{{{constituency_AM15|}}}|AM|MP}} = {{#if: {{{constituency_AM15|}}} | {{{constituency_AM15}}} | {{{constituency_MP15|}}} }}
| constituency = {{{constituency15|}}}
| convocation = {{{convocation15|}}}
| country = {{{country15|}}}
| deputy = {{{deputy15|}}}
| district = {{{district15|}}}
| firstminister = {{{firstminister15|}}}
| governor-general = {{{governor-general15|}}}
| governor_general = {{{governor_general15|}}}
| governor = {{{governor15|}}}
| jr/sr = {{{jr/sr15|}}}
| jr/sr and state = {{{jr/sr and state15|}}}
| leader = {{{leader15|}}}
| legislature = {{{legislature15|}}}
| lieutenant_governor = {{{lieutenant_governor15|}}}
| lieutenant = {{{lieutenant15|}}}
| minister_from = {{{minister_from15|}}}
| minority_floor_leader = {{{minority_floor_leader15|}}}
| majority_floor_leader = {{{majority_floor_leader15|}}}
| majority_leader = {{#if: {{{majorityleader15|}}} | {{{majorityleader15}}} | {{{majority_leader15|}}} }}
| majority = {{{majority15|}}}
| minister = {{{minister15|}}}
| minority_leader = {{#if: {{{minorityleader15|}}} | {{{minorityleader15}}} | {{{minority_leader15|}}} }}
| monarch = {{{monarch15|}}}
| nominator = {{{nominator15|}}}
| office = {{{office15|}}}
| order = {{{order15|}}}
| parliament = {{{parliament15|}}}
| parliamentarygroup = {{{parliamentarygroup15|}}}
| predecessor = {{{predecessor15|}}}
| preceding = {{{preceding15|}}}
| preceded = {{{preceded15|}}}
| premier = {{{premier15|}}}
| president = {{{president15|}}}
| primeminister = {{{primeminister15|}}}
| riding = {{{riding15|}}}
| state_assembly = {{{state_assembly15|}}}
| state_delegate = {{{state_delegate15|}}}
| state_house = {{{state_house15|}}}
| state_legislature = {{{state_legislature15|}}}
| state_senate = {{{state_senate15|}}}
| state = {{{state15|}}}
| status = {{{status15|}}}
| subterm = {{nobold|{{{subterm15|}}}}}
| suboffice = {{{suboffice15|}}}
| succeeded = {{{succeeded15|}}}
| succeeding = {{{succeeding15|}}}
| successor = {{{successor15|}}}
| taoiseach = {{{taoiseach15|}}}
| termlabel = {{{term_label15|{{{termlabel15|In office}}}}}}
| termend = {{#if:{{{termend15|}}}|{{{termend15}}}|{{{term_end15|}}}}}
| termstart = {{#if:{{{termstart15|}}}|{{{termstart15}}}|{{{term_start15|}}}}}
| term = {{{term15|}}}
| title = {{{title15|}}}
| vicegovernor = {{{vicegovernor15|}}}
| vicepresident = {{{vicepresident15|}}}
| vicepremier = {{{vicepremier15|}}}
| viceprimeminister = {{{viceprimeminister15|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term15|}}}
}}}}<!--
-->{{#if:{{{nominee|}}}{{{candidate|}}}||
{{Infobox officeholder/office|color={{#ifeq:{{lc:{{{embed}}}}}|yes|#eee|lavender}}
| 1blankname = {{{1blankname16|}}}
| 1namedata = {{{1namedata16|}}}
| 2blankname = {{{2blankname16|}}}
| 2namedata = {{{2namedata16|}}}
| 3blankname = {{{3blankname16|}}}
| 3namedata = {{{3namedata16|}}}
| 4blankname = {{{4blankname16|}}}
| 4namedata = {{{4namedata16|}}}
| 5blankname = {{{5blankname16|}}}
| 5namedata = {{{5namedata16|}}}
| alongside = {{{alongside16|}}}
| ambassador_from = {{{ambassador_from16|}}}
| appointer = {{#if: {{{appointer16|}}} | {{{appointer16}}} | {{{appointed16|}}} }}
| assembly = {{{assembly16|}}}
| assuming = {{{assuming16|}}}
| chancellor = {{{chancellor16|}}}
| co-leader = {{{co-leader16|}}}
| constituency_{{#if:{{{constituency_AM16|}}}|AM|MP}} = {{#if: {{{constituency_AM16|}}} | {{{constituency_AM16}}} | {{{constituency_MP16|}}} }}
| constituency = {{{constituency16|}}}
| convocation = {{{convocation16|}}}
| country = {{{country16|}}}
| deputy = {{{deputy16|}}}
| district = {{{district16|}}}
| firstminister = {{{firstminister16|}}}
| governor-general = {{{governor-general16|}}}
| governor_general = {{{governor_general16|}}}
| governor = {{{governor16|}}}
| jr/sr = {{{jr/sr16|}}}
| jr/sr and state = {{{jr/sr and state16|}}}
| leader = {{{leader16|}}}
| legislature = {{{legislature16|}}}
| lieutenant_governor = {{{lieutenant_governor16|}}}
| lieutenant = {{{lieutenant16|}}}
| minister_from = {{{minister_from16|}}}
| minority_floor_leader = {{{minority_floor_leader16|}}}
| majority_floor_leader = {{{majority_floor_leader16|}}}
| majority_leader = {{#if: {{{majorityleader16|}}} | {{{majorityleader16}}} | {{{majority_leader16|}}} }}
| majority = {{{majority16|}}}
| minister = {{{minister16|}}}
| minority_leader = {{#if: {{{minorityleader16|}}} | {{{minorityleader16}}} | {{{minority_leader16|}}} }}
| monarch = {{{monarch16|}}}
| nominator = {{{nominator16|}}}
| office = {{{office16|}}}
| order = {{{order16|}}}
| parliament = {{{parliament16|}}}
| parliamentarygroup = {{{parliamentarygroup16|}}}
| predecessor = {{{predecessor16|}}}
| preceding = {{{preceding16|}}}
| preceded = {{{preceded16|}}}
| premier = {{{premier16|}}}
| president = {{{president16|}}}
| primeminister = {{{primeminister16|}}}
| riding = {{{riding16|}}}
| state_assembly = {{{state_assembly16|}}}
| state_delegate = {{{state_delegate16|}}}
| state_house = {{{state_house16|}}}
| state_legislature = {{{state_legislature16|}}}
| state_senate = {{{state_senate16|}}}
| state = {{{state16|}}}
| status = {{{status16|}}}
| subterm = {{nobold|{{{subterm16|}}}}}
| suboffice = {{{suboffice16|}}}
| succeeded = {{{succeeded16|}}}
| succeeding = {{{succeeding16|}}}
| successor = {{{successor16|}}}
| taoiseach = {{{taoiseach16|}}}
| termlabel = {{{term_label16|{{{termlabel16|In office}}}}}}
| termend = {{#if:{{{termend16|}}}|{{{termend16}}}|{{{term_end16|}}}}}
| termstart = {{#if:{{{termstart16|}}}|{{{termstart16}}}|{{{term_start16|}}}}}
| term = {{{term16|}}}
| title = {{{title16|}}}
| vicegovernor = {{{vicegovernor16|}}}
| vicepresident = {{{vicepresident16|}}}
| vicepremier = {{{vicepremier16|}}}
| viceprimeminister = {{{viceprimeminister16|}}}
| party = {{{party|}}}
| prior_term = {{{prior_term16|}}}
}}}}
| data2 = {{{module0|}}}
<!----------Personal data---------->
| header3 = {{#if:{{{pronunciation|}}}{{{birth_name|{{{birthname|}}}}}}{{{birth_date|}}}{{{birth_place|}}}{{{death_date|}}}{{{death_place|}}}{{{resting_place|{{{restingplace|}}}}}}{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}{{{citizenship|}}}{{{nationality|}}}{{{party|}}}{{{otherparty|}}}{{{spouse|}}}{{{spouses|}}}{{{partner|}}}{{{relations|}}}{{{children|}}}{{{parents|}}}{{{mother|}}}{{{father|}}}{{{relatives|}}}{{{residence|}}}{{{education|}}}{{{alma_mater|}}}{{{occupation|}}}{{{profession|}}}{{{known_for|}}}{{{salary|}}}{{{cabinet|}}}{{{committees|}}}{{{portfolio|}}}{{{awards|}}}{{{data1|}}}{{{data2|}}}{{{data3|}}}{{{data4|}}}{{{data5|}}}|Personal details}}
| label4 = Pronunciation
| data4 = {{{pronunciation|}}}
| label5 = Born
| data5 = {{br separated entries
|1 = {{#if:{{{birth_name|{{{birthname|}}}}}}|<div style="display:inline" class="nickname">{{{birth_name|{{{birthname}}}}}}</div>}}
|2 = {{{birth_date|}}}
|3 = {{{birth_place|}}}
}}
| label6 = Died
| data6 = {{br separated entries|{{{death_date|}}}|{{{death_place|}}}}}
| label7 = {{#ifexpr: {{strfind short|
{{{death_cause|}}}|Assassination}}
| Manner |{{#if:{{{death_manner|}}}|Manner|Cause}} }} of death
| data7 = {{#if:{{{death_manner|}}}|{{{death_manner|}}}|{{{death_cause|}}}}}
| label8 = Resting place
| class8 = label
| data8 = {{br separated entries|{{{resting_place|{{{restingplace|}}}}}}|{{{resting_place_coordinates|{{{restingplacecoordinates|}}}}}}}}
| label9 = Citizenship
| data9 = {{{citizenship|}}}
| label10 = Nationality
| data10 = {{#switch:{{Delink|{{{nationality|}}}}}
| {{#ifeq:{{Country2nationality|{{Find country|{{Delink|{{{birth_place|}}}}}}}}}|{{Delink|{{{nationality|}}}}}|{{Delink|{{{nationality|}}}}}}} =
| {{#ifeq:{{Find country|{{{birth_place|}}}}}|England|British}} =
| #default = {{{nationality|}}} }}
| label11 = Political party
| data11 = {{#switch:{{{party|}}}
| =
| [[United States Democratic Party|Democrat]]
| [[Democratic Party (United States)|Democratic]]
| [[Democratic Party (United States)|Democrat]] = [[Democratic Party (United States)|Democratic]]
| [[Republican Party (United States)|Republican]]
| [[United States Republican Party]]
| [[United States Republican Party|Republican]]
| [[Republican Party (United States)|Republican Party]] = [[Republican Party (United States)|Republican]]
| [[Conservative Party (UK)|Conservative Party]]
| [[Conservative Party (UK)|Conservative]] = [[Conservative Party (UK)|Conservative]]
| [[Labour Party (UK)|Labour Party]]
| [[Labour Party (UK)|Labour]] = [[Labour Party (UK)|Labour]]
| [[Conservative Party of Canada|Conservative Party]]
| [[Conservative Party of Canada|Conservative]] = [[Conservative Party of Canada|Conservative]]
| [[Liberal Party of Canada|Liberal Party]]
| [[Liberal Party of Canada|Liberal]] = [[Liberal Party of Canada|Liberal]]
| KMT
| Kuomintang
| [[KMT]]
| [[Kuomintang|KMT]]
| [[Kuomintang]]
| Kuomintang (KMT)
| [[Kuomintang]] (KMT) = [[Kuomintang]]
| DPP
| [[Democratic Progressive Party|DPP]]
| [[Democratic Progressive Party]] = [[Democratic Progressive Party]]
| #default = {{{party|}}} }}
| label12 = Other political<br />affiliations
| data12 = {{{otherparty|}}}
| label13 = Height
| data13 = {{#if:{{{height|}}}|{{infobox person/height|{{{height|}}}}}}}
| label14 = Spouse{{#if:{{{spouses|}}}|s|{{Pluralize from text|{{{spouse|{{{spouse(s)|}}}}}}|likely=(s)|plural=s}}}}
| data14 = {{{spouse|{{{spouses|{{{spouse(s)|}}}}}}}}}
| label15 = Domestic partner{{Pluralize from text|{{{partner|}}}|likely=(s)|plural=s}}
| data15 = {{{partner|}}}
| label16 = Relations
| data16 = {{{relations|}}}
| label17 = Children
| data17 = {{{children|}}}
| label18 = Parent{{#if:{{{parents|}}}|{{Pluralize from text|{{{parents|}}}|likely=(s)|plural=s}}|<!--
-->{{#ifexpr:{{count|{{{father|}}}|{{{mother|}}}}} > 1|s}}}}
| data18 = {{#if:{{{parents|}}}|{{{parents}}}|{{Unbulleted list|{{#if:{{{father|}}}|{{{father}}} (father)}}|{{#if:{{{mother|}}}|{{{mother}}} (mother)}}}}}}
| label19 = Relatives
| data19 = {{{relatives|}}}
| label20 = Residence{{Pluralize from text|{{{residence|}}}|likely=(s)|plural=s}}
| class20 = {{#if:{{{death_date|}}}{{{death_place|}}}||label}}
| data20 = {{{residence|}}}
| label21 = Education
| data21 = {{{education|}}}
| label22 = [[Alma mater]]
| data22 = {{{alma_mater|}}}
| label23 = Occupation
| data23 = {{{occupation|}}}
| label24 = Profession
| data24 = {{{profession|}}}
| label25 = Known for
| data25 = {{{known_for|}}}
| label26 = Salary
| data26 = {{{salary|}}}
| label27 = Cabinet
| data27 = {{{cabinet|}}}
| label28 = Committees
| data28 = {{{committees|}}}
| label29 = Portfolio
| data29 = {{{portfolio|}}}
| label30 = {{#if:{{{mawards|}}}|Civilian awards|Awards}}
| data30 = {{{awards|}}}
| label31 = {{{blank1}}}
| data31 = {{{data1|}}}
| label32 = {{{blank2}}}
| data32 = {{{data2|}}}
| label33 = {{{blank3}}}
| data33 = {{{data3|}}}
| label34 = {{{blank4}}}
| data34 = {{{data4|}}}
| label35 = {{{blank5}}}
| data35 = {{{data5|}}}
| label36 = Signature
| data36 = {{#if:{{{signature|}}}|[[File:{{{signature}}}|{{#if:{{{signature_size|}}}|{{{signature_size}}}|128x80px}}|alt={{{signature_alt|}}}|{{PAGENAME}}'s signature]]}}
| label37 = Website
| data37 = {{{website|}}}
| label38 = Nickname{{Pluralize from text|{{{nickname|}}}|likely=(s)|plural=s}}
| data38 = {{{nickname|}}}
| header39 = {{#if:{{{allegiance|}}}{{{branch|}}}{{{serviceyears|}}}{{{rank|}}}{{{unit|}}}{{{commands|}}}{{{battles|}}}{{{military_blank1|}}}|Military service}}
| label40 = Allegiance
| data40 = {{{allegiance|}}}
| label41 = {{#if:{{{branch_label|}}}|{{{branch_label|}}}|Branch/service}}
| data41 = {{{branch|}}}
| label42 = {{#if:{{{serviceyears_label|}}}|{{{serviceyears_label|}}}|Years of service}}
| data42 = {{{serviceyears|}}}
| label43 = {{#if:{{{rank_label|}}}|{{{rank_label|}}}|Rank}}
| data43 = {{{rank|}}}
| label44 = {{#if:{{{unit_label|}}}|{{{unit_label|}}}|Unit}}
| data44 = {{{unit|}}}
| label45 = Commands
| data45 = {{{commands|}}}
| label46 = {{#if:{{{battles_label|}}}|{{{battles_label|}}}|Battles/wars}}
| data46 = {{{battles|}}}
| label47 = {{#if:{{{awards|}}}|Military awards|Awards}}
| data47 = {{{mawards|}}}
| label48 = {{{military_blank1}}}
| data48 = {{{military_data1|}}}
| label49 = {{{military_blank2}}}
| data49 = {{{military_data2|}}}
| label50 = {{{military_blank3}}}
| data50 = {{{military_data3|}}}
| label51 = {{{military_blank4}}}
| data51 = {{{military_data4|}}}
| label52 = {{{military_blank5}}}
| data52 = {{{military_data5|}}}
| data53 = {{{module|}}}
| data54 = {{{module2|}}}
| data55 = {{{module3|}}}
| data56 = {{{module4|}}}
| data57 = {{{module5|}}}
| data58 = {{{footnotes|}}}
| belowstyle = border-top: 1px solid right; font-size: 95%
| below = <div>{{#if:{{{date|}}}| As of {{{date}}}{{#if:{{{year|}}}|, {{{year}}}}}}}</div>{{#if:{{{source|}}}|Source: [{{{source}}}]}}
}}{{#if:{{{pronunciation|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Biography template using pronunciation]]}}
}}{{#if:{{{1blankname0|}}}{{{1namedata0|}}}{{{2blankname0|}}}{{{2namedata0|}}}{{{3blankname0|}}}{{{3namedata0|}}}{{{4blankname0|}}}{{{4namedata0|}}}{{{5blankname0|}}}{{{5namedata0|}}}{{{alongside0|}}}{{{ambassador_from0|}}}{{{appointer0|}}}{{{assembly0|}}}{{{assuming0|}}}{{{chancellor0|}}}{{{co-leader0|}}}{{{constituency_AM0|}}}{{{constituency0|}}}{{{country0|}}}{{{deputy0|}}}{{{district0|}}}{{{firstminister0|}}}{{{governor-general0|}}}{{{governor0|}}}{{{jr/sr0|}}}{{{jr/sr and state0|}}}{{{leader0|}}}{{{legislature0|}}}{{{lieutenant_governor0|}}}{{{lieutenant0|}}}{{{minister_from0|}}}{{{minority_floor_leader0|}}}{{{majority_floor_leader0|}}}{{{majorityleader0|}}}{{{majority0|}}}{{{minister0|}}}{{{minorityleader0|}}}{{{monarch0|}}}{{{nominator0|}}}{{{office0|}}}{{{order0|}}}{{{parliament0|}}}{{{predecessor0|}}}{{{preceding0|}}}{{{preceded0|}}}{{{premier0|}}}{{{president0|}}}{{{primeminister0|}}}{{{riding0|}}}{{{state_assembly0|}}}{{{state_delegate0|}}}{{{state_house0|}}}{{{state_legislature0|}}}{{{state_senate0|}}}{{{state0|}}}{{{suboffice0|}}}{{{subterm0|}}}{{{succeeded0|}}}{{{succeeding0|}}}{{{successor0|}}}{{{taoiseach0|}}}{{{termend0|}}}{{{termstart0|}}}{{{term0|}}}{{{title0|}}}{{{vicegovernor0|}}}{{{vicepresident0|}}}{{{vicepremier0|}}}{{{viceprimeminister0|}}}{{{prior_term0|}}}{{{appointe0|}}}{{{constituency_0|}}}|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with office0]]}}
}}{{#if:{{{speaker|}}}|{{#if:{{{nominee|}}}{{{candidate|}}}||{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with speaker]]}}}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|{{#ifeq:{{{nocat|{{{demo|{{#ifeq:{{{categories|}}}|no|yes}}}}}}}}|yes||[[Category:Pages using infobox officeholder with unknown parameters|_VALUE_{{PAGENAME}}]]}}}}|preview=Page using [[Template:Infobox officeholder]] with unknown parameter "_VALUE_"|ignoreblank=y| regexp1 = 1blankname[%d]* | regexp2 = 1namedata[%d]* | regexp3 = 2blankname[%d]* | regexp4 = 2namedata[%d]* | regexp5 = 3blankname[%d]* | regexp6 = 3namedata[%d]* | regexp7 = 4blankname[%d]* | regexp8 = 4namedata[%d]* | regexp9 = 5blankname[%d]* | regexp10 = 5namedata[%d]* | allegiance | alma_mater | regexp11 = alongside[%d]* | alt | regexp12 = ambassador_from[%d]* | regexp13 = appointed[%d]* | regexp14 = appointer[%d]* | regexp15 = assembly[%d]* | awards | battles | battles_label | birth_date | birth_name | birth_place | birthname | regexp16 = blank[%d]* | bodyclass | branch | branch_label | cabinet | candidate | caption | categories | regexp17 = chancellor[%d]* | children | citizenship | regexp18 = co%-leader[%d]* | commands | committees | regexp19 = constituency[%d]* | regexp20 = constituency_AM[%d]* | regexp21 = constituency_MP[%d]* | regexp22 = convocation[%d]* | regexp23 = country[%d]* | regexp24 = data[%d]* | date | death_cause | death_date | death_manner | death_place | demo | regexp25 = deputy[%d]* | regexp26 = district[%d]* | education | election_date | embed | father | regexp28 = firstminister[%d]* | footnotes | regexp29 = governor[%d]* | regexp30 = governor_general[%d]* | regexp31 = governor%-general[%d]* | height | honorific_prefix | honorific-prefix | honorific_suffix | honorific-suffix | image | image name | image_name_alt | image_size | imagesize | image_upright | incumbent | regexp32 = jr/sr[%d]* | regexp33 = jr/sr and state[%d]* | known_for | regexp34 = leader[%d]* | regexp35 = legislature[%d]* | regexp36 = lieutenant[%d]* | regexp37 = lieutenant_governor[%d]* | mainwidth | regexp38 = majority[%d]* | regexp39 = majority_floor_leader[%d]* | regexp40 = majority_leader[%d]* | regexp41 = majorityleader[%d]* | mawards | regexp42 = military_blank[%d]* | regexp43 = military_data[%d]* | regexp44 = minister[%d]* | regexp45 = minister_from[%d]* | regexp46 = minority_floor_leader[%d]* | regexp47 = minority_leader[%d]* | regexp48 = minorityleader[%d]* | regexp49 = module[%d]* | regexp50 = monarch[%d]* | mother | name | nationality | native_name | native_name_lang | nickname | nocat | regexp51 = nominator[%d]* | nominee | occupation | regexp52 = office[%d]* | opponent | regexp53 = order[%d]* | otherparty | parents | regexp54 = parliament[%d]* | regexp55 = parliamentarygroup[%d]* | partner | party | party_election | portfolio | regexp56 = preceded[%d]* | regexp57 = preceding[%d]* | regexp58 = predecessor[%d]* | regexp59 = premier[%d]* | regexp60 = president[%d]* | regexp61 = primeminister[%d]* | regexp62 = prior_term[%d]* | profession | pronunciation | rank | rank_label | relations | relatives | residence | resting_place | resting_place_coordinates | restingplace | restingplacecoordinates | regexp63 = riding[%d]* | runningmate | salary | serviceyears | serviceyears_label | signature | signature_alt | signature_size | smallimage | smallimage_alt | source | speaker | speaker_office | spouse | spouses | regexp64 = state[%d]* | regexp65 = state_assembly[%d]* | regexp66 = state_delegate[%d]* | regexp67 = state_house[%d]* | regexp68 = state_legislature[%d]* | regexp69 = state_senate[%d]* | regexp70 = status[%d]* | regexp71 = suboffice[%d]* | regexp72 = subterm[%d]* | regexp73 = succeeded[%d]* | regexp74 = succeeding[%d]* | regexp75 = successor[%d]* | regexp76 = taoiseach[%d]* | regexp77 = term[%d]* | regexp78 = term_end[%d]* | regexp79 = term_label[%d]* | regexp80 = term_start[%d]* | regexp81 = termend[%d]* | regexp82 = termlabel[%d]* | regexp83 = termstart[%d]* | regexp84 = title[%d]* | unit | unit_label | regexp85 = vicegovernor[%d]* | regexp86 = vicepremier[%d]* | regexp87 = vicepresident[%d]* | regexp88 = viceprimeminister[%d]* | regexp89 = assuming[%d]* | website | width | year }}<noinclude>
{{Documentation}}
</noinclude>
a019277287dbb30717151685a827a955fb3d1c80
Template:Infobox officeholder/example
10
239
537
2023-09-30T19:59:34Z
Führerredux
2
Created page with "This page is to aid users in the application of {{tl|Infobox officeholder}}. ==General office== {{Infobox president | honorific-prefix = | name = Harry S. Truman | honorific-suffix = | image = Harry S. Truman.jpg | alt = | order = 33rd | office = President of the United States | election = | term_start = {{Start date|1945|4|12}} | term_end = {{End date|1953|1|20}} | vicepresident = Alb..."
wikitext
text/x-wiki
This page is to aid users in the application of {{tl|Infobox officeholder}}.
==General office==
{{Infobox president
| honorific-prefix =
| name = Harry S. Truman
| honorific-suffix =
| image = Harry S. Truman.jpg
| alt =
| order = 33rd
| office = President of the United States
| election =
| term_start = {{Start date|1945|4|12}}
| term_end = {{End date|1953|1|20}}
| vicepresident = [[Alben W. Barkley]] (1949–53)
| predecessor = [[Franklin D. Roosevelt]]
| successor = [[Dwight D. Eisenhower]]
| birth_date = {{Birth date|1884|5|8}}
| birth_place = [[Lamar, Missouri]], U.S.
| death_date = {{Death date and age|1972|12|26|1884|5|8}}
| death_place = [[Kansas City, Missouri|Kansas City]], U.S.
| spouse = [[Bess Truman|Bess Wallace Truman]]
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children = [[Margaret Truman]]
| residence =
| alma_mater =
| occupation =
| profession =
| signature = Harry S. Truman signature.png
| signature_alt = "Harry S. Truman" signature
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox president
| honorific-prefix =
| name = Harry S. Truman
| honorific-suffix =
| image = Harry S. Truman.jpg
| alt =
| order = 33rd
| office = President of the United States
| election =
| term_start = {{Start date|1945|4|12}}
| term_end = {{End date|1953|1|20}}
| vicepresident = [[Alben W. Barkley]] (1949–53)
| predecessor = [[Franklin D. Roosevelt]]
| successor = [[Dwight D. Eisenhower]]
| birth_date = {{Birth date|1884|5|8}}
| birth_place = [[Lamar, Missouri]], U.S.
| death_date = {{Death date and age|1972|12|26|1884|5|8}}
| death_place = [[Kansas City, Missouri]], U.S.
| spouse = [[Bess Truman|Bess Wallace Truman]]
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children = [[Margaret Truman]]
| residence =
| alma_mater =
| occupation =
| profession =
| signature = Harry S. Truman signature.png
| signature_alt = "Harry S. Truman" signature
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==Ambassador==
{{Infobox ambassador
| honorific-prefix =
| name = Whitelaw Reid
| honorific-suffix =
| image = Whitelaw Reid.jpg
| alt = Seated portrait of 60-ish man with beard, mustache, and receding hairline, in circa-1880 formal dress with high collar, with a book in his lap and a watch at the end of a chain suspended from his coat.
| order = 28th
| ambassador_from = United States
| country = France
| term_start = {{Start date|1889|3|23}}
| term_end = {{End date|1892|3|25}}
| predecessor = [[Robert Milligan McLane|Robert M. McLane]]
| successor = [[T. Jefferson Coolidge]]
| order2 = 35th
| ambassador_from2 = United States
| country2 = the United Kingdom
| term_start2 = {{Start date|1889|3|23}}
| term_end2 = {{End date|1912|12|15}}
| predecessor2 = [[Joseph Hodges Choate|Joseph H. Choate]]
| successor2 = [[Walter Hines Page]]
| birth_date = {{Birth date|1837|10|12}}
| birth_place = [[Cedarville, Ohio]], United States
| death_date = {{Death date and age|1912|12|15|1837|10|12}}
| death_place = [[London]], England, United Kingdom
| spouse =
| party = [[Republican Party (United States)|Republican]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician, editor
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox ambassador
| honorific-prefix =
| name = Whitelaw Reid
| honorific-suffix =
| image = Whitelaw Reid.jpg
| alt = Seated portrait of 60-ish man with beard, mustache, and receding hairline, in circa-1880 formal dress with high collar, with a book in his lap and a watch at the end of a chain suspended from his coat.
| order = 28th
| ambassador_from = United States
| country = France
| term_start = {{Start date|1889|3|23}}
| term_end = {{Death date|1892|3|25}}
| predecessor = [[Robert Milligan McLane|Robert M. McLane]]
| successor = [[T. Jefferson Coolidge]]
| order2 = 35th
| ambassador_from2 = United States
| country2 = the United Kingdom
| term_start2 = {{Start date|1889|3|23}}
| term_end2 = {{Death date|1912|12|15}}
| predecessor2 = [[Joseph Hodges Choate|Joseph H. Choate]]
| successor2 = [[Walter Hines Page]]
| birth_date = {{Birth date|1837|10|12}}
| birth_place = [[Cedarville, Ohio]], United States
| death_date = {{Death date and age|1912|12|15|1837|10|12}}
| death_place = [[London]], England, United Kingdom
| spouse =
| party = [[Republican Party (United States)|Republican]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician, editor
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==Assembly Member==
{{Infobox AM
| honorific-prefix =
| name = Nick Bourne
| honorific-suffix = [[Member of the National Assembly for Wales|AM]]
| smallimage =
| alt =
| caption =
| constituency_AM = [[Mid and West Wales (National Assembly for Wales electoral region)|Mid and West Wales]]
| assembly = Welsh
| majority =
| term_start = {{start date|1999|5|6|df=yes}}
| term_end =
| predecessor = ''(new constituency)''
| successor = Incumbent
| birth_date = {{birth date and age|1952|1|1}}
| birth_place =
| death_date =
| death_place =
| nationality = British
| spouse =
| party = [[Conservative Party (UK)|Conservative]]
| relations =
| children =
| residence =
| alma_mater = [[Aberystwyth University|University of Wales, Aberystwyth]]
| occupation =
| profession =
| signature =
| signature_alt =
| website = [http://blog.nickbourne.org.uk/ Nick Bourne's Blog]
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox AM
| honorific-prefix =
| name = Nick Bourne
| honorific-suffix = [[Member of the National Assembly for Wales|AM]]
| smallimage =
| alt =
| caption =
| constituency_AM = [[Mid and West Wales (National Assembly for Wales electoral region)|Mid and West Wales]]
| assembly = Welsh
| majority =
| term_start = {{start date|1999|5|6|df=yes}}
| term_end =
| predecessor = ''(new constituency)''
| successor = Incumbent
| birth_date = {{birth date and age|1952|1|1}}
| birth_place =
| death_date =
| death_place =
| nationality = British
| spouse =
| party = [[Conservative Party (UK)|Conservative]]
| relations =
| children =
| residence =
| alma_mater = [[Aberystwyth University|University of Wales]], Aberystwyth
| occupation =
| profession =
| signature =
| signature_alt =
| website = [http://blog.nickbourne.org.uk/ Nick Bourne's Blog]
| footnotes =
}}</syntaxhighlight>
{{-}}
==Governor==
{{Infobox governor
| honorific-prefix =
| name = Gray Davis
| honorific-suffix =
| image = Gray_Davis.jpg
| alt =
| caption =
| order = 37th
| office = Governor of California
| term_start = January 4, 1999
| term_end = November 17, 2003
| lieutenant = [[Cruz Bustamante]]
| predecessor = [[Pete Wilson]]
| successor = [[Arnold Schwarzenegger]]
| birth_date = {{birth date and age|1942|12|26}}
| birth_place = [[The Bronx]], [[New York (state)|New York]], U.S.
| death_date =
| death_place =
| spouse = Sharon Ryer Davis
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox governor
| honorific-prefix =
| name = Gray Davis
| honorific-suffix =
| image = Gray_Davis.jpg
| alt =
| caption =
| order = 37th
| office = Governor of California
| term_start = January 4, 1999
| term_end = November 17, 2003
| lieutenant = [[Cruz Bustamante]]
| predecessor = [[Pete Wilson]]
| successor = [[Arnold Schwarzenegger]]
| birth_date = {{birth date and age|1942|12|26}}
| birth_place = [[New York City]], New York, U.S.
| death_date =
| death_place =
| spouse = Sharon Ryer Davis
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
== Judge ==
{{Infobox judge
| honorific-prefix =
| name = William Hubbs Rehnquist
| honorific-suffix =
| image = William Rehnquist.jpg
| alt = Seated portrait, from waist up, of a man in black robes, coat, and tie. He wears glasses and has a receding hairline. His hands are folded.
| caption =
| order = 16th
| office = Chief Justice of the United States
| term_start = September 26, 1986
| term_end = September 3, 2005
| nominator = [[Ronald Reagan]]
| appointer =
| predecessor = [[Warren E. Burger]]
| successor = [[John Roberts]]
| office2 = [[Associate Justice of the Supreme Court of the United States|Associate Justice of the U.S. Supreme Court]]
| term_start2 = January 7, 1972
| term_end2 = September 26, 1986
| nominator2 = [[Richard Nixon]]
| appointer2 =
| predecessor2 = [[John Marshall Harlan II]]
| successor2 = [[Antonin Scalia]]
| birth_date = October 1, 1924
| birth_place = [[Milwaukee]], Wisconsin, U.S.
| death_date = September 3, 2005, age 80
| death_place = [[Arlington, Virginia|Arlington]], Virginia, U.S.
| spouse =
| party =
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox judge
| honorific-prefix =
| name = William Hubbs Rehnquist
| honorific-suffix =
| image = William Rehnquist.jpg
| alt = Seated portrait, from waist up, of a man in black robes, coat, and tie. He wears glasses and has a receding hairline. His hands are folded.
| caption =
| order = 16th
| office = Chief Justice of the United States
| term_start = September 26, 1986
| term_end = September 3, 2005
| nominator = [[Ronald Reagan]]
| appointer =
| predecessor = [[Warren E. Burger]]
| successor = [[John Roberts]]
| office2 = [[Associate Justice of the Supreme Court of the United States|Associate Justice of the U.S. Supreme Court]]
| term_start2 = January 7, 1972
| term_end2 = September 26, 1986
| nominator2 = [[Richard Nixon]]
| appointer2 =
| predecessor2 = [[John Marshall Harlan II]]
| successor2 = [[Antonin Scalia]]
| birth_date = October 1, 1924
| birth_place = [[Milwaukee]], Wisconsin, U.S.
| death_date = September 3, 2005, age 80
| death_place = [[Arlington, Virginia|Arlington]], Virginia, U.S.
| spouse =
| party =
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==Member of Parliament==
{{Infobox MP
| honorific-prefix =
| name = Diane Abbott
| honorific-suffix =
| image = Diane Abbott low quality.jpg
| alt = 50ish woman in black, with a bright red scarf, large black-and-white earrings and glasses, smiling and holding a microphone in one hand and a sheet of paper in the other
| constituency_MP = [[Hackney North and Stoke Newington]]
| parliament = United Kingdom
| majority = 7,427 (25%)
| predecessor = [[Ernie Roberts]]
| successor =
| term_start = 11 June 1987
| term_end =
| birth_date = {{birth date and age|1953|9|27}}
| birth_place = [[Paddington]], London
| death_date =
| death_place =
| spouse =
| party = [[Labour Party (UK)|Labour]]
| relations =
| children =
| residence =
| alma_mater = [[Newnham College, Cambridge]]
| occupation =
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox MP
| honorific-prefix =
| name = Diane Abbott
| honorific-suffix =
| image = Diane Abbott low quality.jpg
| alt = 50ish woman in black, with a bright red scarf, large black-and-white earrings and glasses, smiling and holding a microphone in one hand and a sheet of paper in the other
| constituency_MP = [[Hackney North and Stoke Newington]]
| parliament = United Kingdom
| majority = 7,427 (25.3%)
| predecessor = [[Ernie Roberts]]
| successor =
| term_start = 11 June 1987
| term_end =
| birth_date = {{birth date and age|1953|9|27|df=y}}
| birth_place = [[Paddington]], London
| death_date =
| death_place =
| spouse =
| party = [[Labour Party (UK)|Labour]]
| relations =
| children =
| residence =
| alma_mater = [[Newnham College, Cambridge]]
| occupation =
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==US Congressperson==
{{Infobox congressman
| honorific-prefix =
| name = Dennis Hastert
| honorific-suffix =
| image = Dennis Hastert 109th pictorial photo.jpg
| alt = Head of a 60sh plump man with gray hair, squinting through eyeglasses
| state = Illinois
| district = [[Illinois's 14th congressional district|14th]]
| term_start = January 6, 1987
| predecessor = [[John E. Grotberg]]
| successor = Incumbent
| speaker = 59th
| term_start2 = January 6, 1999
| term_end2 = January 3, 2007
| predecessor2 = [[Newt Gingrich]]
| successor2 = [[Nancy Pelosi]]
| birth_date = {{birth date and age|1942|1|2}}
| birth_place = [[Aurora, Illinois|Aurora]], Illinois, U.S.
| death_date =
| death_place =
| spouse = Jean Kahl
| party = [[Republican Party (United States)|Republican]]
| relations =
| children =
| residence =
| alma_mater =
| occupation = Mentoring
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox congressman
| honorific-prefix =
| name = Dennis Hastert
| honorific-suffix =
| image = Dennis Hastert 109th pictorial photo.jpg
| alt = Head of a 60sh plump man with gray hair, squinting through eyeglasses
| state = Illinois
| district = [[Illinois's 14th congressional district|14th]]
| term_start = January 6, 1987
| predecessor = [[John E. Grotberg]]
| successor = Incumbent
| speaker = 59th
| term_start2 = January 6, 1999
| term_end2 = January 3, 2007
| predecessor2 = [[Newt Gingrich]]
| successor2 = [[Nancy Pelosi]]
| birth_date = {{birth date and age|1942|1|2}}
| birth_place = [[Aurora, Illinois|Aurora]], Illinois, U.S.
| death_date =
| death_place =
| spouse = Jean Kahl
| party = [[Republican Party (United States)|Republican]]
| relations =
| children =
| residence =
| alma_mater =
| occupation = Mentoring
| profession =
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==State Representative==
{{Infobox state representative
| honorific-prefix =
| name = Fabian Núñez
| honorific-suffix =
| image = FabianNunez.jpg
| alt = Head and shoulders of a smiling 40ish man with dark hair
| state_assembly = California <!--more often use state_house -->
| district = [[California's 46th Assembly district|46th]]
| term_start = 2002
| term_end =
| predecessor = [[Gil Cedillo]]
| successor =
| speaker = 66th
| term_start2 = 2002
| term_end2 =
| predecessor2 = [[Herb Wesson]]
| successor2 = Termed out (2008)
| birth_date = December 22, 1966
| birth_place = [[San Diego]], California, U.S.
| death_date =
| death_place =
| spouse = Maria Robles
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox state representative
| honorific-prefix =
| name = Fabian Núñez
| honorific-suffix =
| image = FabianNunez.jpg
| alt = Head and shoulders of a smiling 40ish man with dark hair
| state_assembly = California <!--more often use state_house -->
| district = [[California's 46th Assembly district|46th]]
| term_start = 2002
| term_end =
| predecessor = [[Gil Cedillo]]
| successor =
| speaker = 66th
| term_start2 = 2002
| term_end2 =
| predecessor2 = [[Herb Wesson]]
| successor2 = Termed out (2008)
| birth_date = December 22, 1966
| birth_place = [[San Diego]], California, U.S.
| death_date =
| death_place =
| spouse = Maria Robles
| party = [[Democratic Party (United States)|Democratic]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = Politician
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==US Senator==
{{Infobox senator
| honorific-prefix =
| name = John Sidney McCain III
| honorific-suffix =
| image = John McCain official photo portrait.JPG
| alt = Half-length portrait of 70ish man with receding white hair and a square jaw
| jr/sr = Senior Senator
| state = [[Arizona]]
| alongside = Jon Kyl
| term_start = January 3, 1987
| term_end = August 25, 2018
| predecessor = [[Barry Goldwater]]
| successor = [[John Kyl]]
| state2 = Arizona
| district2 = [[Arizona's 1st congressional district|1st]]
| term_start2 = 1983
| term_end2 = 1987
| predecessor2 = [[John Jacob Rhodes]]
| successor2 = [[John Jacob Rhodes III]]
| birth_date = {{birth date and age|1936|08|29}}
| birth_place = [[Panama Canal Zone]] (U.S. Territory)
| death_date = {{death date and age|2018|8|25|1936|8|29}}
| death_place =
| party = [[Republican Party (United States)|Republican]]
| spouse = (1) Carol Shepp, divorced;
(2) [[Cindy Hensley McCain]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = [[United States Naval Aviator|Naval Aviator]]
| signature =
| signature_alt =
| website =
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox senator
| honorific-prefix =
| name = John Sidney McCain III
| honorific-suffix =
| image = John McCain official photo portrait.JPG
| alt = Half-length portrait of 70ish man with receding white hair and a square jaw
| jr/sr = Senior Senator
| state = [[Arizona]]
| alongside = Jon Kyl
| term_start = January 3, 1987
| predecessor = [[Barry Goldwater]]
| successor = [[John Kyl]]
| state2 = Arizona
| district2 = [[Arizona's 1st congressional district|1st]]
| term_start2 = 1983
| term_end2 = 1987
| predecessor2 = [[John Jacob Rhodes]]
| successor2 = [[John Jacob Rhodes III]]
| birth_date = {{birth date and age|1936|08|29}}
| birth_place = [[Panama Canal Zone]] (U.S. Territory)
| death_date = {{death date and age|2018|8|25|1936|8|29}}
| death_place =
| party = [[Republican Party (United States)|Republican]]
| spouse = (1) Carol Shepp, divorced;
(2) [[Cindy Hensley McCain]]
| relations =
| children =
| residence =
| alma_mater =
| occupation =
| profession = [[United States Naval Aviator|Naval Aviator]]
| signature =
| signature_alt =
| website =
| footnotes =
}}</syntaxhighlight>
{{-}}
==State Senator==
{{Infobox state senator
| honorific-prefix =
| name = Michael E. Gronstal
| honorific-suffix =
| image = Michael E. Gronstal - Official Portrait - 84th GA.jpg
| image_size =
| alt =
| state_senate = Iowa
| district = 8th
| prior_term = 50th (1985-1993) and (2003-2013)<br>42nd (1993–2003)
| term_start = January 8, 1985
| term_end =
| predecessor = [[Tom Slater (politician)|Tom Slater]]
| successor =
| birth_date = {{birth date and age|1950|1|29|mf=y}}
| birth_place = [[Council Bluffs, Iowa]], U.S.
| death_date =
| death_place =
| party = [[Iowa Democratic Party|Democrat]]
| spouse = Connie Meisenbach
| partner =
| relations =
| children = Kate, Sarah
| residence = [[Council Bluffs, Iowa]], U.S.
| alma_mater = BA [[Antioch College]]<br>attended [[Loyola University Chicago|Loyola University]]
| occupation =
| profession =
| signature =
| signature_alt =
| website = [http://www3.legis.state.ia.us/ga/member.do?id=142 Gronstal's website]
| footnotes =
}}
<syntaxhighlight lang="wikitext">{{Infobox state senator
| honorific-prefix =
| name = Michael E. Gronstal
| honorific-suffix =
| image = Michael E. Gronstal - Official Portrait - 84th GA.jpg
| image_size =
| alt =
| state_senate = Iowa
| district = 8th
| prior_term = 50th (1985–1993) and (2003–2013)<br>42nd (1993–2003)
| term_start = January 8, 1985
| term_end =
| predecessor = [[Tom Slater (politician)|Tom Slater]]
| successor =
| birth_date = {{birth date and age|1950|1|29|mf=y}}
| birth_place = [[Council Bluffs, Iowa]], U.S.
| death_date =
| death_place =
| party = [[Iowa Democratic Party|Democrat]]
| spouse = Connie Meisenbach
| partner =
| relations =
| children = Kate, Sarah
| residence = [[Council Bluffs, Iowa]], U.S.
| alma_mater = BA [[Antioch College]]<br>attended [[Loyola University Chicago|Loyola University]]
| occupation =
| profession =
| signature =
| signature_alt =
| website = [http://www3.legis.state.ia.us/ga/member.do?id=142 Gronstal's website]
| footnotes =
}}</syntaxhighlight>
{{-}}
==Ukrainian legislative office==
{{Infobox Ukrainian legislative office
|name = Vitali Klitschko
|native_name = Віта́лій Кличко́
|native_name_lang = uk
|office = [[Mayor of Kyiv]]
|image = Vitali Klitschko September 2014.jpg
|predecessor = Halyna Hereha (Acting)
|successor =
|signature = Vitali Klitschko signature.png
|party = [[Ukrainian Democratic Alliance for Reform|Ukrainian Democratic Alliance<br>for Reform]] (2010–2015)<br>[[Petro Poroshenko Bloc "Solidarity"|Petro Poroshenko Bloc]] (2014–present)
|office1 = Head of the [[Kyiv City State Administration]]
|predecessor1 = [[Volodymyr Bondarenko (politician)|Volodymyr Bondarenko]]
|successor1 =
|birth_name = Vitali Volodymyrovych Klitschko
|birth_date = {{birth date and age|1971|7|19|df=y}}
|birth_place = [[Belovodskoye]], [[Kirghiz Soviet Socialist Republic|Kirghiz SSR]], [[Soviet Union]] (now [[Kyrgyzstan]])
|spouse = Natalia Egorova (1996–present)
|children = Yegor-Daniel<br>Elizabeth-Victoria<br>Max
|alma_mater = Pereiaslav-Khmelnytsky Pedagogical Institute<br>[[Taras Shevchenko National University of Kyiv|Taras Shevchenko National<br>University]]<br>[[National University of Physical Education and Sport of Ukraine]]
|website = {{URL|klichko.org|Official website}}
|term_start = 5 June 2014
|term_end =
|term_start1 = 25 June 2014
|term_end1 =
|office2 = [[Kyiv City Council|Deputy of the Kyiv City Council]]
|convocation2 = [[Ukrainian local elections, 2006|5th session]]
|constituency2 = [[Ukrainian Democratic Alliance for Reform|Klitschko Bloc "PORA–ROP"]]
|term_start2 = April 2006
|term_end2 = June 2008
|convocation3 = [[Kyiv local election, 2008|6th session]]
|constituency3 = [[Ukrainian Democratic Alliance for Reform|Vitali Klitschko Bloc]]
|term_start3 = June 2008
|term_end3 = December 2012
|office4 = [[People's Deputy of Ukraine]]
|convocation4 = [[7th Ukrainian Verkhovna Rada|7th convocation]]
|constituency4 = [[Ukrainian Democratic Alliance for Reform|UDAR]], No.1<ref>{{cite web |title=People's Deputy of Ukraine of the VII convocation |url=http://gapp.rada.gov.ua/mps/info/expage/15664/8 |website=Official portal |publisher=Verkhovna Rada of Ukraine |access-date=22 December 2014 |language=uk}}</ref>
|term_start4 = 12 December 2012
|term_end4 = 5 June 2014
}}
<syntaxhighlight lang="wikitext">{{Infobox Ukrainian legislative office
|name = Vitali Klitschko
|native_name = Віта́лій Кличко́
|native_name_lang = uk
|image = Vitali Klitschko September 2014.jpg
|office = [[Mayor of Kyiv]]
|predecessor = Halyna Hereha (Acting)
|successor =
|term_start = 5 June 2014
|term_end =
|office1 = Head of the [[Kyiv City State Administration]]
|predecessor1 = [[Volodymyr Bondarenko (politician)|Volodymyr Bondarenko]]
|successor1 =
|term_start1 = 25 June 2014
|term_end1 =
|office2 = [[Kyiv City Council|Deputy of the Kyiv City Council]]
|convocation2 = [[Ukrainian local elections, 2006|5th session]]
|constituency2 = [[Ukrainian Democratic Alliance for Reform|Klitschko Bloc "PORA–ROP"]]
|term_start2 = April 2006
|term_end2 = June 2008
|convocation3 = [[Kyiv local election, 2008|6th session]]
|constituency3 = [[Ukrainian Democratic Alliance for Reform|Vitali Klitschko Bloc]]
|term_start3 = June 2008
|term_end3 = December 2012
|office4 = [[People's Deputy of Ukraine]]
|convocation4 = [[7th Ukrainian Verkhovna Rada|7th convocation]]
|constituency4 = [[Ukrainian Democratic Alliance for Reform|UDAR]], No.1<ref>{{cite web |title=People's Deputy of Ukraine of the VII convocation |url=http://gapp.rada.gov.ua/mps/info/expage/15664/8 |website=Official portal |publisher=Verkhovna Rada of Ukraine |access-date=22 December 2014 |language=uk}}</ref>
|term_start4 = 12 December 2012
|term_end4 = 5 June 2014
|party = [[Ukrainian Democratic Alliance for Reform|Ukrainian Democratic Alliance<br>for Reform]] (2010–2015)<br>[[Petro Poroshenko Bloc "Solidarity"|Petro Poroshenko Bloc]] (2014–present)
|birth_name = Vitali Volodymyrovych Klitschko
|birth_date = {{birth date and age|1971|7|19|df=y}}
|birth_place = [[Belovodskoye]], [[Kirghiz Soviet Socialist Republic|Kirghiz SSR]], [[Soviet Union]] (now [[Kyrgyzstan]])
|spouse = Natalia Egorova (1996–present)
|children = Yegor-Daniel<br>Elizabeth-Victoria<br>Max
|alma_mater = Pereiaslav-Khmelnytsky Pedagogical Institute<br>[[Taras Shevchenko National University of Kyiv|Taras Shevchenko National<br>University]]<br>[[National University of Physical Education and Sport of Ukraine]]
|signature = Vitali Klitschko signature.png
|website = {{URL|klichko.org|Official website}}
}}</syntaxhighlight>
{{-}}
==Multiple terms==
: Place the most recent terms at the top. When both a start and an end term are given, you can instead specify the complete term using the parameters {{para|term}}, {{para|term2}}, etc., as is done with {{para|term3}} in the example below. This can be helpful with complicated terms that cannot be given as simple starting or ending dates, or if you prefer something other than the default term separator (an en dash, with spaces around it if the start or end is not a simple integer date).
Where a politician is redistricted into a new district, use {{para|prior_term}} to indicate the previous district(s). This saves space in the infobox by not generating a completely new office each time redistricting happens. If you do this, it is recommended that you list the predecessor before the subject first took office and the successor after the subject last left office. If more complete documentation of the districts is desired, it can be done with succession boxes at the end of the article.
: Where a member has
{{Infobox officeholder
| name = Samuel Adams
| image = J S Copley - Samuel Adams.jpg
| alt = A stern middle-aged man with gray hair is wearing a dark red suit. He is standing behind a table, holding a rolled up document in one hand, and pointing with the other hand to a large document on the table.
| caption = In this 1772 portrait by [[John Singleton Copley]], Adams points at the [[Massachusetts Charter]], which he viewed as a constitution that protected the people's rights.
| order = 4th
| office = Governor of Massachusetts
| term_start = October 8, 1793
| term_end = June 2, 1797
| lieutenant = [[Moses Gill]]
| order2 = 3rd [[Lieutenant Governor of Massachusetts]]
| term_start2 = 1789
| term_end2 = 1793
| governor2 = [[John Hancock]]
| order3 = [[President of the Massachusetts Senate]]
| term3 = 1782–1785<br />1787–1788
| order4 = Delegate from Massachusetts to the [[Continental Congress]]
| term_start4 = 1774
| term_end4 = 1781
| order5 = Clerk of the [[Massachusetts House of Representatives]]
| term_start5 = 1766
| term_end5 = 1774
| birth_date = {{OldStyleDate|September 27|1722|September 16}}
| birth_place = [[Boston, Massachusetts]], U.S.
| death_date = {{death date and age|1803|10|2|1722|9|27|}}
| death_place = [[Cambridge, Massachusetts]], U.S.
| spouse = Elizabeth Checkley,<br />Elizabeth Wells
| party = [[Democratic-Republican Party|Democratic-Republican]] (1790s)
| signature = Samuel Adams Signature.svg
| signature_alt = Handwritten "Saml Adams", with the "l" a raised curlicue
}}
<syntaxhighlight lang="wikitext">{{Infobox officeholder
| name = Samuel Adams
| image = J S Copley - Samuel Adams.jpg
| alt = A stern middle-aged man with gray hair is wearing a dark red suit. He is standing behind a table, holding a rolled up document in one hand, and pointing with the other hand to a large document on the table.
| caption = In this 1772 portrait by [[John Singleton Copley]], Adams points at the [[Massachusetts Charter]], which he viewed as a constitution that protected the people's rights.
| order = 4th
| office = Governor of Massachusetts
| term_start = October 8, 1793
| term_end = June 2, 1797
| lieutenant = [[Moses Gill]]
| order2 = 3rd [[Lieutenant Governor of Massachusetts]]
| term_start2 = 1789
| term_end2 = 1793
| governor2 = [[John Hancock]]
| order3 = [[President of the Massachusetts Senate]]
| term3 = 1782–1785<br />1787–1788
| order4 = Delegate from Massachusetts to the [[Continental Congress]]
| term_start4 = 1774
| term_end4 = 1781
| order5 = Clerk of the [[Massachusetts House of Representatives]]
| term_start5 = 1766
| term_end5 = 1774
| birth_date = {{OldStyleDate|September 27|1722|September 16}}
| birth_place = [[Boston, Massachusetts]], U.S.
| death_date = {{death date and age|1803|10|2|1722|9|27|}}
| death_place = [[Cambridge, Massachusetts]], U.S.
| spouse = Elizabeth Checkley,<br />Elizabeth Wells
| party = [[Democratic-Republican Party|Democratic-Republican]] (1790s)
| signature = Samuel Adams Signature.svg
| signature_alt = Handwritten "Saml Adams", with the "l" a raised curlicue
}}</syntaxhighlight>
{{-}}
59c79e39d226b080a4ca38433fea12ee6b985f3a
Das Deutsche Reich
0
3
538
3
2023-09-30T20:10:40Z
Führerredux
2
added character
wikitext
text/x-wiki
{{Infobox officeholder
| honorific_prefix = Führer
| name = Adam Dressler
| image = AdamDressler.png
| office = [[Führer of Germany]]
| allegiance = Germany
}}
720da7f1f2c7e1c34447175ff37b3a4a5a6016b8
MediaWiki:Common.css
8
240
539
2023-09-30T20:18:37Z
Führerredux
2
Created page with "/* CSS placed here will be applied to all skins */ /* * Styling inside .mw-parser-output should generally use TemplateStyles. */ /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <su..."
css
text/css
/* CSS placed here will be applied to all skins */
/*
* Styling inside .mw-parser-output should generally use TemplateStyles.
*/
/* Reset italic styling set by user agent */
cite,
dfn {
font-style: inherit;
}
/* Straight quote marks for <q> */
q {
quotes: '"' '"' "'" "'";
}
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
/* Consistent size for <small>, <sub> and <sup> */
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup {
font-size: 80%;
}
/* Same spacing for indented and unindented paragraphs on talk pages */
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
/* Reduce page jumps by hiding collapsed/dismissed content */
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
/* Avoid FOUC/reflows on collapsed elements. */
/* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */
/* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */
/* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
/* Hide charinsert base for those not using the gadget */
#editpage-specialchars {
display: none;
}
/* Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
*/
ol.references {
font-size: 90%;
margin-bottom: 0.5em;
}
/* Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
*/
span[ rel="mw:referencedBy" ] {
counter-reset: mw-ref-linkback 0;
}
span[ rel='mw:referencedBy' ] > a::before {
content: counter( mw-ref-linkback, lower-alpha );
font-size: 80%;
font-weight: bold;
font-style: italic;
}
a[ rel="mw:referencedBy" ]::before {
font-weight: bold;
content: "^";
}
span[ rel="mw:referencedBy" ]::before {
content: "^ ";
}
.mw-ref > a[data-mw-group=lower-alpha]::after {
content: '[' counter( mw-Ref, lower-alpha ) ']';
}
.mw-ref > a[data-mw-group=upper-alpha]::after {
content: '[' counter( mw-Ref, upper-alpha ) ']';
}
.mw-ref > a[data-mw-group=decimal]::after {
content: '[' counter( mw-Ref, decimal ) ']';
}
.mw-ref > a[data-mw-group=lower-roman]::after {
content: '[' counter( mw-Ref, lower-roman ) ']';
}
.mw-ref > a[data-mw-group=upper-roman]::after {
content: '[' counter( mw-Ref, upper-roman ) ']';
}
.mw-ref > a[data-mw-group=lower-greek]::after {
content: '[' counter( mw-Ref, lower-greek ) ']';
}
/* Styling for jQuery makeCollapsible, matching that of collapseButton */
.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
font-weight: normal;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
/* @noflip */
float: left;
}
/* Lists in wikitable data cells are always left-aligned */
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
/* @noflip */
text-align: left;
}
/* Change the external link icon to a PDF icon for all PDF files */
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
/* @noflip */
padding: 8px 18px 8px 0;
}
/* System messages styled similarly to fmbox */
/* for .mw-warning-with-logexcerpt, behavior of this line differs between
* the edit-protected notice and the special:Contribs for blocked users
* The latter has specificity of 3 classes so we have to triple up here.
*/
.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* default colors for partial block message */
/* gotta get over the hump introduced by the triple class above */
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {
border-color: #fc3;
background-color: #fef6e7;
}
/* Minimum thumb width */
figure[typeof~='mw:File/Thumb'],
figure[typeof~='mw:File/Frame'],
.thumbinner {
min-width: 100px;
}
/* Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views. */
#mw-subcategories,
#mw-pages,
#mw-category-media,
#filehistory,
#wikiPreview,
#wikiDiff {
clear: both;
}
/* Styling for tags in changes pages */
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */
.checkuser-show,
.sysop-show,
.abusefilter-show,
.abusefilter-helper-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
/* Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive. */
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
/* Remove bullets when there are multiple edit page warnings */
ul.permissions-errors {
margin: 0;
}
ul.permissions-errors > li {
list-style: none;
}
/* larger inline math */
span.mwe-math-mathml-inline {
font-size: 118%;
}
/* Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
*/
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
@media screen {
/* Put a chequered background behind images, only visible if they have transparency,
* except on main, user, and portal namespaces
*/
body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
/* Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode */
#siteSub {
display: block;
}
}
/* Hide FlaggedRevs notice UI when there are no pending changes */
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced,
/* "Temporary" to remove links in sidebar T255381 */
#t-upload,
/* Hide broken download box on Special:Book pending T285400 */
.mw-special-Book #coll-downloadbox {
display: none;
}
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-above,
.infobox .infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
padding: 0.2em;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
/* Normal font styling for wikitable row headers with scope="row" tag */
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
/* @noflip */
text-align: left;
}
/* Remove underlines from certain links */
.nounderlines a,
.IPA a:link,
.IPA a:visited {
text-decoration: none !important;
}
/* Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a) */
.nowrap,
.nowraplinks a {
white-space: nowrap;
}
/* But allow wrapping where desired: */
.wrap,
.wraplinks a {
white-space: normal;
}
/* texhtml class for inline math (based on generic times-serif class) */
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
white-space: nowrap;
/* Force tabular and lining display for texhtml */
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
span.texhtml span.texhtml {
font-size: 100%;
}
@media screen {
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
/* Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
*/
acdf2322ca41c0260ca6f6177304d46e297d2a8e
Template:Infobox country
10
241
540
2023-09-30T20:22:59Z
Führerredux
2
Created page with "{{infobox |templatestyles = Template:Infobox country/styles.css | bodyclass = ib-country vcard | aboveclass = adr | above = {{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{conventional_long_name|}}} |<div class="fn org country-name">{{{conventional_long_name|}}}</div> }}{{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries..."
wikitext
text/x-wiki
{{infobox
|templatestyles = Template:Infobox country/styles.css
| bodyclass = ib-country vcard
| aboveclass = adr
| above =
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{conventional_long_name|}}}
|<div class="fn org country-name">{{{conventional_long_name|}}}</div>
}}{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
|<div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}}}</div>
}}<!--
-->{{#ifeq:{{{micronation|}}}|yes
|<span class="fn org">[[Micronation]]</span>
}}
}}
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
| class2 = anthem
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}
|'''Anthem:''' {{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}
}}{{#if:{{{anthems|}}}
|'''Anthems:''' {{{anthems}}}
}}{{#if:{{{royal_anthem|}}}
|
<div class="ib-country-anthem">'''[[Royal anthem]]:''' {{{royal_anthem}}}</div>
}}{{#if:{{{flag_anthem|}}}
|
<div class="ib-country-anthem">'''[[Flag anthem]]:''' {{{flag_anthem}}}</div>
}}{{#if:{{{national_march|}}}
|
<div class="ib-country-anthem">'''National march:''' {{{national_march}}}</div>
}}{{#if:{{{territorial_anthem|}}}
|
<div class="ib-country-anthem">'''Territorial anthem:''' {{{territorial_anthem}}}</div>
}}{{#if:{{{regional_anthem|}}}
|
<div class="ib-country-anthem">'''Regional anthem:''' {{{regional_anthem}}}</div>
}}{{#if:{{{state_anthem|}}}
|
<div class="ib-country-anthem">'''State anthem:''' {{{state_anthem}}}</div>
}}{{#if:{{{march|}}}
|
<div class="ib-country-anthem">'''March:''' {{{march}}}</div>
}}
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}
|{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}
| '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!--
-->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}
}}
| data4 = {{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }}
| data5 = {{#if:{{{image_map2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }}
| label6 = Status
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}
| label7 = Location
| data7 = {{{loctext|}}}
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!------------------------------------------
capital is largest_city/_settlement:
-------------------------------------------
--><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div>
}}
| data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}
| label9 = Capital-in-exile
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative center }}
| data10 = {{#switch:{{{admin_center|}}}
|capital | =
|[[{{{capital|}}}]] =
|{{{capital|}}} =
|#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}
| label11 = Largest {{{largest_settlement_type|city}}}
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!-- nothing already appears above -->
| {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}
}}
| rowclass12 = mergedtoprow
| label12 = Official languages
| data12 = {{{official_languages|}}}
| rowclass13 = mergedrow
| label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}} languages</span>
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}
| rowclass14 = mergedrow
| label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national languages</span>
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}
| rowclass15 = mergedrow
| label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional languages</span>
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}
| label16 = Common languages
| data16 = {{{common_languages|}}}
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes
|{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}
|{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}
| label17 ={{#ifeq:{{{languages_sub|}}}|yes
|<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other languages }}</div>
|{{if empty| {{{languages_type|}}} | Other languages }}
}}
| data17 = {{{languages|}}}
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes
|<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other languages }}</div>
|{{if empty|{{{languages2_type|}}} | Other languages }}
}}
| data18 = {{{languages2|}}}
| label19 = [[Ethnic group|Ethnic groups]] <!--
-->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}}
| data19 = {{{ethnic_groups|}}}
| label20 = Religion <!--
-->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}}
| data20 = {{{religion|}}}
| label21 = [[Demonym|Demonym(s)]]
| data21 = {{#if:{{{demonym|}}}
|{{#ifexist:{{{demonym}}} people
| [[{{{demonym}}} people|{{{demonym}}}]]
| {{{demonym}}}
}}
}}
| label22 = Type
| data22 = {{{org_type|}}}
| label23 = {{if empty|{{{membership_type|}}} | Membership }}
| data23 = {{{membership|}}}
| label24 = {{#if:{{{government_type|}}}
| {{#if:{{{politics_link|}}}
| [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!--
-->}}<!--
-->}}<!--
-->}}
| data24 = {{{government_type|}}}
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}
| {{#if:{{{name|}}}{{{membership|}}}
| <!--template being used for geopolitical org:-->Leaders
| <!--template being used for country/territory: -->Government
}}
}} }}
| rowclass26 = mergedrow
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}
| rowclass27 = mergedrow
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}
| data27 = {{#if:{{{title_leader|}}}| }}
| rowclass28 = mergedrow
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}
| rowclass29 = mergedrow
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}
| data29 = {{#if:{{{title_representative|}}}| }}
| rowclass30 = mergedrow
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}
| rowclass31 = mergedrow
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}
| data31 = {{#if:{{{title_deputy|}}}| }}
| rowclass32 = mergedrow
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}
| label40 = Legislature
| data40 = {{{legislature|}}}
| rowclass41 = mergedrow
| label41 = <div class="ib-country-fake-li">• {{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div>
| data41 = {{{upper_house|{{{house1|}}}}}}
| rowclass42 = mergedbottomrow
| label42 = <div class="ib-country-fake-li">• {{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div>
| data42 = {{{lower_house|{{{house2|}}}}}}
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}
|{{#if:{{{sovereignty_type|}}}
| {{{sovereignty_type}}}<!--
-->{{#if:{{{sovereignty_note|}}} | <div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}}
| {{#if:{{{established|}}}| | Establishment }}
}} }}
| label44 = Establishment
| data44 = {{#if:{{{sovereignty_type|}}}
|
|{{{established|}}}
}}
| label45 = {{#if:{{{era|}}}|Historical era|History}}
| data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}| }}}}
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }}
| rowclass60 = mergedtoprow
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}
| {{#if:{{{area_link|}}}
| [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!--
-->}}<!--
-->}} }}
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label61 = <div class="ib-country-fake-li">• {{{area_label|Total}}}{{{FR_foot4|}}}</div>
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}
|{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}
|{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_ha|}}}{{{area_acre|}}}
|{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}
}}
}}{{{area_footnote|}}}{{#if:{{{area_rank|}}} | ([[List of countries and dependencies by area|{{{area_rank}}}]]) }}
}}
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label62 = <div class="ib-country-fake-li">• Land</div>
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}
|{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}
|{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}
|{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}
}}
}}{{{area_land_footnote|}}}
}}
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label63 = <div class="ib-country-fake-li">• Water</div>
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}
|{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}
|{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}
|{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}
}}
}}{{{area_water_footnote|}}}
}}
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label64 = <div class="ib-country-fake-li">• Water (%)</div>
| data64 = {{{percent_water|}}}
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label65 = <div class="ib-country-fake-li">• {{{area_label2|}}}</div>
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label66 = <div class="ib-country-fake-li">• {{{area_label3|}}}</div>
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}
| rowclass72 = mergedrow
| label72 = <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }}
| rowclass73 = mergedrow
| label73 = <div class="ib-country-fake-li2">• [[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div>
| data73 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}
|{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}
}}
}}
| rowclass89 = mergedbottomrow
| label89 = <div class="ib-country-fake-li2">• [[Cadastre]]{{{FR_foot3|}}}</div>
| data89 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}
| {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}
}}
}}
| rowclass90 = mergedtoprow
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}
|{{#if:{{{population_link|}}}
| {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!--
-->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!--
-->| Population<!--
-->}}<!--
-->}} }}
| rowclass91 = mergedrow
| label91 = <div class="ib-country-fake-li">• {{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div>
| data91 = {{#if:{{{population_estimate|}}}
|{{{population_estimate}}}<!--
-->{{#if:{{{population_estimate_rank|}}} | ([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}
}}
| rowclass92 = mergedrow
| label92= <div class="ib-country-fake-li">• {{{population_label2|}}}</div>
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}
| rowclass93= mergedrow
| label93= <div class="ib-country-fake-li">• {{{population_label3|}}}</div>
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}
| rowclass94= mergedrow
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }}
| rowclass95= mergedrow
| label95= <div class="ib-country-fake-li">• {{#if:{{{population_census_year|}}} |{{{population_census_year}}} census|Census}}</div>
| data95= {{#if:{{{population_census|}}}
|{{{population_census}}}<!--
-->{{#if:{{{population_census_rank|}}} | ([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}
}}
| rowclass96= mergedrow
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1= ({{{FR_total_population_estimate_year}}})}}}}}}
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}}
| rowclass97 = mergedrow
| label97= <div class="ib-country-fake-li">• Total{{{FR_foot|}}}</div>
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}
|{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}| ([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}
}} }}
| rowclass98 = mergedrow
| label98= <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}
| ([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}
}}
| rowclass99 = mergedbottomrow
| label99= <div class="ib-country-fake-li">• Density{{{FR_foot5|}}}</div>
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}
| {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!--
-->{{#if:{{{population_density_rank|}}} | ([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}
}}
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}
| label100 = Membership
| data100= {{{nummembers|}}}
| rowclass101= mergedtoprow
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|([[Purchasing power parity|PPP]])}}
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}
|{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}} }}estimate
}}
| rowclass102= mergedrow
| label102= <div class="ib-country-fake-li">• Total</div>
| data102= {{#if:{{{GDP_PPP|}}}
|{{{GDP_PPP}}}<!--
-->{{#if:{{{GDP_PPP_rank|}}} | ([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}
}}
| rowclass103= mergedbottomrow
| label103= <div class="ib-country-fake-li">• Per capita</div>
| data103= {{#if:{{{GDP_PPP_per_capita|}}}
|{{{GDP_PPP_per_capita}}}<!--
-->{{#if:{{{GDP_PPP_per_capita_rank|}}} | ([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}
}}
| rowclass104= mergedtoprow
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|(nominal)}}
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}
|{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}} }}estimate
}}
| rowclass105= mergedrow
| label105= <div class="ib-country-fake-li">• Total</div>
| data105= {{#if:{{{GDP_nominal|}}}
|{{{GDP_nominal}}}<!--
-->{{#if:{{{GDP_nominal_rank|}}} | ([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}
}}
| rowclass106= mergedbottomrow
| label106= <div class="ib-country-fake-li">• Per capita</div>
| data106= {{#if:{{{GDP_nominal_per_capita|}}}
| {{{GDP_nominal_per_capita}}}<!--
-->{{#if:{{{GDP_nominal_per_capita_rank|}}} | ([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}
}}
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} | {{nobold|1=({{{Gini_year}}})}}}}
| data107= {{#if:{{{Gini|}}}
| {{#switch:{{{Gini_change|}}}
|increase = {{increaseNegative}} <!--
-->|decrease = {{decreasePositive}} <!--
-->|steady = {{steady}} <!--
-->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!--
---------Evaluate and add Gini category:----------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{Gini}}}>100 <!--
-->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=46 <!--
-->| {{color|darkred|high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=30 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{Gini}}}>=0 <!--
-->| {{color|forestgreen|low}}<!--
-->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
-----------Add Gini_rank (if supplied):----------
-->{{#if:{{{Gini_rank|}}}
| · [[List of countries by income equality|{{{Gini_rank}}}]]<!--
-->}}<!--
-->}}
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} | {{nobold|1=({{{HDI_year}}})}}}}
| data108= {{#if:{{{HDI|}}}
| {{#switch:{{{HDI_change|}}}
|increase = {{increase}} <!--
-->|decrease = {{decrease}} <!--
-->|steady = {{steady}} <!--
-->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!--
---------Evaluate and add HDI category:---------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{HDI}}}>1 <!--
-->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{HDI}}}>0.799 <!--
-->| {{color|darkgreen|very high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.699 <!--
-->| {{color|forestgreen|high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.549 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{HDI}}}>=0.000<!--
-->| {{color|red|low}}<!--
-->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
----------Add HDI_rank (if supplied):-----------
-->{{#if:{{{HDI_rank|}}}
| · [[List of countries by Human Development Index|{{{HDI_rank}}}]]<!--
-->}}<!--
-->}}
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}
| data109= {{#if:{{{currency|}}}
| {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}
}}
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}
| label119= Time zone
| data119= {{#if:{{{utc_offset|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}
|{{{time_zone|}}}
}}
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}
| label120= <div class="ib-country-fake-li">• Summer ([[Daylight saving time|DST]])</div>
| data120= {{#if:{{{utc_offset_DST|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}
|{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}
}}
| rowclass121= mergedbottomrow
| label121= <nowiki />
| data121= {{{DST_note|}}}
| label122 = [[Antipodes]]
| data122= {{{antipodes|}}}
| label123 = Date format
| data123= {{{date_format|}}}
| label125= [[Left- and right-hand traffic|Driving side]]
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}
| label126= {{#if:{{{calling_code|}}}
|{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]
| Calling code
}}
}}
| data126= {{{calling_code|}}}
| label127= [[ISO 3166|ISO 3166 code]]
| data127= {{#switch:{{{iso3166code|}}}
|omit = <!--(do nothing)-->
| = <!--if iso3166code is not supplied:
-->{{#if:{{{common_name|}}}
| {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}
| [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]
}}
}}
|#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]
}}
| label128= [[Country code top-level domain|Internet TLD]]
| data128= {{{cctld|}}}
| data129 = {{#if:{{{official_website|}}}
|<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div>
}}
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}
| {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}}
}}
| data134 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}}
}}
| label135 = Today part of
| data135 = {{{today|}}}
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-alpha">
{{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li>
}}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li>
}}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li>
}}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li>
}}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li>
}}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li>
}}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li>
}}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}}
</ol></div>}}
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-num">
{{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li>
}}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li>
}}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li>
}}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li>
}}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li>
}}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li>
}}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li>
}}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}}
</ol></div>}}
| data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}}
| belowclass = mergedtoprow noprint
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other|
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]
}}}}<!--
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.
-->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}
}}<!--End of former country tracking cats--><noinclude>
{{documentation}}
</noinclude>
be47d674190a41bd16abfd73bfb38394b5c704f2
Template:Infobox country/style.css
10
242
541
2023-09-30T20:23:43Z
Führerredux
2
Created page with "/* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .in..."
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-country {
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-country td,
.ib-country th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-country .mergedtoprow .infobox-header,
.ib-country .mergedtoprow .infobox-label,
.ib-country .mergedtoprow .infobox-data,
.ib-country .mergedtoprow .infobox-full-data,
.ib-country .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-country .mergedrow .infobox-label,
.ib-country .mergedrow .infobox-data,
.ib-country .mergedrow .infobox-full-data {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-country .mergedbottomrow .infobox-label,
.ib-country .mergedbottomrow .infobox-data,
.ib-country .mergedbottomrow .infobox-full-data {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-country .infobox-header {
text-align: left;
}
.ib-country .infobox-above {
font-size: 125%;
line-height: 1.2;
}
.ib-country-names {
padding-top: 0.25em;
font-weight: normal;
}
.ib-country-name-style {
display: inline;
}
.ib-country .infobox-image {
padding: 0.5em 0;
}
.ib-country-anthem {
border-top: 1px solid #a2a9b1;
padding-top: 0.5em;
margin-top: 0.5em;
}
.ib-country-map-caption {
position: relative;
top: 0.3em;
}
.ib-country-largest,
.ib-country-lang {
font-weight: normal;
}
.ib-country-ethnic,
.ib-country-religion,
.ib-country-sovereignty {
font-weight: normal;
display: inline;
}
.ib-country-fake-li {
text-indent: -0.9em;
margin-left: 1.2em;
font-weight: normal;
}
.ib-country-fake-li2 {
text-indent: 0.5em;
margin-left: 1em;
font-weight: normal;
}
.ib-country-website {
line-height: 11pt;
}
.ib-country-map-caption3 {
position: relative;
top: 0.3em;
}
.ib-country-fn {
text-align: left;
margin: 0 auto;
}
.ib-country-fn-alpha {
list-style-type: lower-alpha;
margin-left: 1em;
}
.ib-country-fn-num {
margin-left: 1em;
}
3112a323cf9739e86afd52812cd38e196abfae7d
Greece
0
243
542
2023-09-30T20:24:16Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Infobox country/styles.css
10
244
543
2023-09-30T20:25:07Z
Führerredux
2
Created page with "/* {{pp|small=y}} */ .ib-country { border-collapse: collapse; line-height: 1.2em; } /* TODO split definitions to appropriate class names when live from HTML element */ .ib-country td, .ib-country th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .ib-country .mergedtoprow .infobox-header, .ib-country .mergedtoprow .infobox-label, .ib-country .mergedtoprow .infobox-data, .ib-country .mergedtoprow .infobox-full-data, .ib-country .mergedtoprow .in..."
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-country {
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-country td,
.ib-country th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-country .mergedtoprow .infobox-header,
.ib-country .mergedtoprow .infobox-label,
.ib-country .mergedtoprow .infobox-data,
.ib-country .mergedtoprow .infobox-full-data,
.ib-country .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-country .mergedrow .infobox-label,
.ib-country .mergedrow .infobox-data,
.ib-country .mergedrow .infobox-full-data {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-country .mergedbottomrow .infobox-label,
.ib-country .mergedbottomrow .infobox-data,
.ib-country .mergedbottomrow .infobox-full-data {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-country .infobox-header {
text-align: left;
}
.ib-country .infobox-above {
font-size: 125%;
line-height: 1.2;
}
.ib-country-names {
padding-top: 0.25em;
font-weight: normal;
}
.ib-country-name-style {
display: inline;
}
.ib-country .infobox-image {
padding: 0.5em 0;
}
.ib-country-anthem {
border-top: 1px solid #a2a9b1;
padding-top: 0.5em;
margin-top: 0.5em;
}
.ib-country-map-caption {
position: relative;
top: 0.3em;
}
.ib-country-largest,
.ib-country-lang {
font-weight: normal;
}
.ib-country-ethnic,
.ib-country-religion,
.ib-country-sovereignty {
font-weight: normal;
display: inline;
}
.ib-country-fake-li {
text-indent: -0.9em;
margin-left: 1.2em;
font-weight: normal;
}
.ib-country-fake-li2 {
text-indent: 0.5em;
margin-left: 1em;
font-weight: normal;
}
.ib-country-website {
line-height: 11pt;
}
.ib-country-map-caption3 {
position: relative;
top: 0.3em;
}
.ib-country-fn {
text-align: left;
margin: 0 auto;
}
.ib-country-fn-alpha {
list-style-type: lower-alpha;
margin-left: 1em;
}
.ib-country-fn-num {
margin-left: 1em;
}
3112a323cf9739e86afd52812cd38e196abfae7d
Template:Infobox country/doc
10
245
544
2023-09-30T20:26:53Z
Führerredux
2
Created page with "{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}} {{High-use}} {{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}} {{Uses TemplateStyles|Template:Infobox country/styles.css}} This infobox template is used to generate an infobox for the right-hand side of two specific typ..."
wikitext
text/x-wiki
{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}}
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
{{Uses TemplateStyles|Template:Infobox country/styles.css}}
This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below.
__FORCETOC__
== Syntax ==
<!---------------------- Country/territory use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|micronation = <!--yes if a micronation-->
|conventional_long_name = <!--Formal or official full name of the country in English-->
|native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)-->
|common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)-->
|status = <!--Status of country, especially useful for micronations-->
|image_flag = <!--e.g. Flag of country.svg-->
|alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)-->
|flag_border = <!--set to no to disable border around the flag-->
|image_flag2 = <!--e.g. Second-flag of country.svg-->
|alt_flag2 = <!--alt text for second flag-->
|flag2_border = <!--set to no to disable border around the flag-->
|image_coat = <!--e.g. Coat of arms of country.svg-->
|alt_coat = <!--alt text for coat of arms-->
|symbol_type = <!--emblem, seal, etc (if not a coat of arms)-->
|national_motto = <!--in inverted commas and wikilinked if link exists-->
|englishmotto = <!--English language version of motto-->
|national_anthem = <!--in inverted commas and wikilinked if link exists-->
|royal_anthem = <!--in inverted commas and wikilinked if link exists-->
|other_symbol_type = <!--Use if a further symbol exists, e.g. hymn-->
|other_symbol =
|image_map = <!--e.g. LocationCountry.svg-->
|loctext = <!--text description of location of country-->
|alt_map = <!--alt text for map-->
|map_caption = <!--Caption to place below map-->
|image_map_size = <!--Map size in number of pixels-->
|image_map2 = <!--Another map, if required-->
|alt_map2 = <!--alt text for second map-->
|map_caption2 = <!--Caption to place below second map-->
|image_map2_size = <!--Map size in number of pixels-->
|capital = <!--Name of country/territory's capital, wikilinked if link exists-->
|coordinates = <!-- Coordinates for capital, using {{tl|coord}} -->
|largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.-->
|largest_settlement_type = <!--Type of settlement if largest settlement not a city-->
|largest_settlement = <!--Name of largest settlement-->
|official_languages = <!--Languages recognised in legislation, constitution, etc-->
|national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc-->
|regional_languages = <!--Languages recognised or associated with particular regions within the country/territory-->
|languages_type = <!--Use to specify a further type of language, if not official, national or regional-->
|languages = <!--Languages of the further type-->
|languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")-->
|languages2_type = <!--Another further type of language-->
|languages2 = <!--Languages of this second further type-->
|languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")-->
|ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory-->
|ethnic_groups_year = <!--Year of ethnic groups data (if provided)-->
|ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)-->
|religion = <!--Religion-->
|religion_year = <!--Year of religion data (if provided)-->
|religion_ref = <!--(for any ref/s to associate with religion data)-->
|demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)-->
|government_type = <!--Wikilinked if link exists-->
|leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")-->
|leader_name1 =
|leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)-->
|leader_name2 =
|leader_title14 = <!--(up to 14 distinct leaders may be included)-->
|leader_name14 =
|legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc-->
|upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")-->
|lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")-->
|sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)-->
|sovereignty_note =
|established_event1 = <!--First key event in history of country/territory's status or formation-->
|established_date1 = <!--Date of first key event-->
|established_event2 = <!--Second key event-->
|established_date2 = <!--Date of second key event-->
|established_event13 = <!--(up to 13 distinct events may be included)-->
|established_date13 =
|area_rank =
|area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)-->
|area_km2 = <!--Major area size (in square km)-->
|area_sq_mi = <!--Area in square mi (requires area_km2)-->
|area_footnote = <!--Optional footnote for area-->
|percent_water =
|area_label = <!--Label under "Area" (default is "Total")-->
|area_label2 = <!--Label below area_label (optional)-->
|area_data2 = <!--Text after area_label2 (optional)-->
|population_estimate =
|population_estimate_rank =
|population_estimate_year =
|population_census =
|population_census_year =
|population_density_km2 =
|population_density_sq_mi =
|population_density_rank =
|nummembers = <!--An alternative to population for micronation-->
|GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)-->
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_PPP_per_capita_rank =
|GDP_nominal =
|GDP_nominal_rank =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|GDP_nominal_per_capita_rank =
|Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)-->
|Gini_ref = <!--(for any ref/s to associate with Gini number)-->
|Gini_rank =
|Gini_year =
|HDI_year = <!-- Please use the year to which the data refers, not the publication year-->
|HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)-->
|HDI_change = <!--increase/decrease/steady; rank change from previous year-->
|HDI_rank =
|HDI_ref = <!--(for any ref/s to associate with HDI number)-->
|currency = <!--Name/s of currency/ies used in country/territory-->
|currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)-->
|time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)-->
|utc_offset = <!--in the form "+N", where N is number of hours offset-->
|time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty-->
|utc_offset_DST = <!--in the form "+N", where N is number of hours offset-->
|DST_note = <!--Optional note regarding DST use-->
|antipodes = <!--Place/s exactly on the opposite side of the world to country/territory-->
|date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) -->
|drives_on = <!--"right" or "left" (side of road)-->
|cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)-->
|iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".-->
|calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc-->
|patron_saint = <!--Use patron_saints for multiple-->
|image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it-->
|alt_map3 = <!--alt text for third map position-->
|footnote_a = <!--For any footnote <sup>a</sup> used above-->
|footnote_b = <!--For any footnote <sup>b</sup> used above-->
|footnote_h = <!--For any footnote <sup>h</sup> used above-->
|footnotes = <!--For any generic non-numbered footnotes-->
}}
</syntaxhighlight>
{{hidden end}}
{{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)-->
Note: Now redundant.
<syntaxhighlight lang="wikitext">
|metropole =
|metropole_area =
|metropole_area_rank =
|metropole_area_magnitude =
|metropole_areami² =
|metropole_population =
|metropole_population_estimate_rank =
|foot =
|foot2 =
|foot3 =
|foot4 =
|foot5 =
</syntaxhighlight>
<!--(France-specific parameters)-->
{{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}}
{{hidden end}}
<!------------------------- Geopolitical use -------------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name = <!-- (in English) -->
|native_name = <!-- Long-form name in native or any/all non-English languages -->
|linking_name = <!-- For wikilinks, if diff from name -->
|image_flag = <!-- Flag image's filename -->
|alt_flag = <!-- alt text for flag-->
|flag_border = <!--set to no to disable border around the flag-->
|symbol_type = <!-- Symbol, Emblem, Logo, etc. -->
|image_symbol = <!-- Symbol image's filename -->
|alt_symbol = <!-- alt text for symbol -->
|symbol_width = <!-- Symbol image's width (default 85px) -->
|motto = <!-- "[motto]" -->
|englishmotto = <!--English language version of motto-->
|anthem = <!-- ''[anthem name]'' -->
|text_symbol_type = <!-- for other types of text symbol -->
|text_symbol = <!-- e.g. ''[hymn name]'' -->
|image_map = <!-- Map image's filename -->
|loctext = <!--text description of location of organization-->
|alt_map = <!-- alt text for map image -->
|map_width = <!-- Map image's width (default 250px) -->
|map_caption =
|org_type = <!-- e.g. Trade bloc -->
|membership_type = <!-- (default "Membership") -->
|membership = <!-- Type/s and/or number/s of members -->
|admin_center_type = <!-- e.g. "Administrative center" (default) -->
|admin_center = <!-- Location/s of administrative center/s -->
|languages_type = <!-- e.g. "[[Official language]]s" (default) -->
|languages =
|leader_title1 = <!-- e.g. "Chair", "President", etc. -->
|leader_name1 =
|leader_title2 = <!-- e.g. "Deputy chair", etc. -->
|leader_name2 =
|leader_title14 =
|leader_name14 =
|established = <!-- Usually a date, in lieu of event/s hereafter -->
|established_event1 =
|established_date1 =
|established_event2 =
|established_date2 =
|established_event9 =
|established_date9 =
|official_website =
|area_km2 = <!-- major area size (in sq_km) -->
|area_sq_mi = <!-- area in square mi (requires area_km2) -->
|area_footnote = <!-- optional footnote for area -->
|percent_water =
|area_label = <!-- label under "Area" (default is "Total") -->
|area_label2 = <!-- label below area_label (optional) -->
|area_dabodyalign = <!-- text after area_label2 (optional) -->
|population_estimate =
|population_estimate_year =
|population_density_km2 =
|population_density_sq_mi =
|GDP_PPP =
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_nominal =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|Gini = <!-- number only, 0-100 -->
|Gini_ref = <!-- for any ref/s to associate with Gini number -->
|Gini_year =
|HDI = <!-- number only, 0-1 -->
|HDI_ref = <!-- for any ref/s to associate with HDI number -->
|HDI_year =
|currency =
|currency_code =
|time_zone =
|utc_offset = <!-- +N, where N is number of hours -->
|footnote1 =
|footnote2 =
|footnote7 =
|footnotes = <!-- For generic non-numbered footnotes -->
}}
</syntaxhighlight>
{{hidden end}}
<!-------------------- Former country use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English.
Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. -->
|conventional_long_name = <!-- Full name in English -->
|common_name = <!-- Name to be used in constructing links and category names; not for display -->
|iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166-->
|era = <!-- Use: "Napoleonic Wars", "Cold War", etc. -->
|status = <!-- Status: see Category list on template page -->
|status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. -->
|empire = <!-- The empire or country to which the entity was in a state of dependency -->
|government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories -->
<!-- Rise and fall, events, years and dates -->
<!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" -->
|event_start = <!-- Default: "Established" -->
|date_start = <!-- Optional: Date of establishment, in format 1 January (no year) -->
|year_start = <!-- Year of establishment -->
|event_end = <!-- Default: "Disestablished" -->
|date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) -->
|year_end = <!-- Year of disestablishment -->
|year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") -->
|year_exile_end = <!-- Year of end of exile (leave blank if still in exile) -->
|event1 = <!-- Optional: other events between "start" and "end" -->
|date_event1 =
|event2 =
|date_event2 =
|event3 =
|date_event3 =
|event4 =
|date_event4 =
|event5 =
|date_event5 =
|event6 =
|date_event6 =
|event_pre = <!-- Optional: A crucial event that took place before "event_start" -->
|date_pre =
|event_post = <!-- Optional: A crucial event that took place after "event_end" -->
|date_post =
<!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 -->
|p1 = <!-- Name of the article for preceding entity, numbered 1-5 -->
|flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) -->
|image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|p2 =
|flag_p2 =
|p3 =
|flag_p3 =
|p4 =
|flag_p4 =
|p5 =
|flag_p5 =
|s1 = <!-- Name of the article for succeeding entity, numbered 1-5 -->
|flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) -->
|image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|s2 =
|flag_s2 =
|s3 =
|flag_s3 =
|s4 =
|flag_s4 =
|s5 =
|flag_s5 =
|image_flag = <!-- Default: Flag of {{{common_name}}}.svg -->
|flag_alt = <!-- Alt text for flag -->
|image_flag2 = <!-- Second flag -->
|flag_alt2 = <!-- Alt text for second flag -->
|flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} -->
|flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} -->
|flag_type = <!-- Displayed text for link under flag. Default "Flag" -->
|flag2_type = <!-- Displayed text for link under flag2. Default "Flag" -->
|image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg -->
|coa_size = <!-- Size of coat of arms -->
|coat_alt = <!-- Alt text for coat of arms -->
|symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" -->
|symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} -->
|image_map =
|image_map_size = <!--Map size in number of pixels-->
|image_map_alt =
|image_map_caption =
|image_map2 = <!-- If second map is needed; does not appear by default -->
|image_map2_size = <!--Map size in number of pixels-->
|image_map2_alt =
|image_map2_caption =
|capital =
|capital_exile = <!-- If status="Exile" -->
|national_motto =
|national_anthem =
|common_languages =
|religion =
|demonym =
|currency =
<!-- Titles and names of the first and last leaders and their deputies -->
|leader1 = <!-- Name of king or president -->
|leader2 =
|leader3 =
|leader4 =
|leader21 = <!--(up to 21 distinct leaders may be included)-->
|year_leader1 = <!-- Years served -->
|year_leader2 =
|year_leader3 =
|year_leader4 =
|year_leader21 =
|title_leader = <!-- Default: "King" for monarchy, otherwise "President" -->
|representative1 = <!-- Name of representative of head of state (e.g. colonial governor) -->
|representative2 =
|representative3 =
|representative4 =
|representative5 =
|year_representative1 = <!-- Years served -->
|year_representative2 =
|year_representative3 =
|year_representative4 =
|year_representative5 =
|title_representative = <!-- Default: "Governor" -->
|deputy1 = <!-- Name of prime minister -->
|deputy2 =
|deputy3 =
|deputy4 =
|year_deputy1 = <!-- Years served -->
|year_deputy2 =
|year_deputy3 =
|year_deputy4 =
|title_deputy = <!-- Default: "Prime minister" -->
<!-- Legislature -->
|legislature = <!-- Name of legislature -->
|house1 = <!-- Name of first chamber -->
|type_house1 = <!-- Default: "Upper house" -->
|house2 = <!-- Name of second chamber -->
|type_house2 = <!-- Default: "Lower house" -->
<!-- Area and population of a given year -->
|stat_year1 = <!-- year of the statistic, specify either area, population or both -->
|stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated -->
|stat_pop1 = <!-- population (w/o commas or spaces) -->
|stat_year2 =
|stat_area2 =
|stat_pop2 =
|stat_year3 =
|stat_area3 =
|stat_pop3 =
|stat_year4 =
|stat_area4 =
|stat_pop4 =
|stat_year5 =
|stat_area5 =
|stat_pop5 =
|today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG -->
|footnote_a = <!-- Accepts wikilinks -->
|footnote_b = <!-- Accepts wikilinks -->
...
|footnote_h = <!-- Accepts wikilinks -->
|footnotes = <!-- Accepts wikilinks -->
}}
</syntaxhighlight>
{{hidden end}}
== Examples ==
<!------------------ Country/territory example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST =
|utc_offset_DST =
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST = not observed
|utc_offset_DST = +1
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
</syntaxhighlight>
{{hidden end}}
<!-------------- Geopolitical organization example --------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]" {{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]]
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607<!--same ref as above-->
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]'' {{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}}
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
</syntaxhighlight>
{{hidden end}}
<!------------------ Former country example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:49428470}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:64925993}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:41058792}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:41058792}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
</syntaxhighlight>
{{hidden end}}
== Errors ==
If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]].
== Microformat ==
{{UF-hcard-place}}
== Tracking categories ==
* {{clc|Country articles requiring maintenance}}
* {{clc|Pages using infobox country with unknown parameters}}
* {{clc|Pages using infobox country with syntax problems}}
* {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}}
* {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}}
* {{clc|Former country articles using status text with Colony or Exile}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.",
"format": "{{_\n| ______________________ = _\n}}\n",
"params": {
"conventional_long_name": {
"label": "Conventional long name",
"type": "string",
"required": false,
"description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.",
"example": "The United States of America"
},
"common_name": {},
"linking_name": {},
"native_name": {
"label": "Native name",
"type": "string",
"required": false,
"example": "{{native name|Bundesrepublik Deutschland}}",
"description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text."
},
"name": {
"label": "Geopolitical organisation name",
"type": "string",
"required": false,
"description": "Name of the geopolitical organisation in English."
},
"image_flag": {
"label": "Flag",
"type": "wiki-file-name",
"required": false,
"example": "Flag of Iceland.svg",
"description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:"
},
"flag_width": {
"label": "Flag width",
"type": "string",
"required": false,
"description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px."
},
"alt_flag": {
"label": "Flag alt text",
"type": "string",
"required": false,
"description": "Alternate text for flag (text shown when pointer hovers over flag)."
},
"flag_border": {
"label": "Flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"flag_caption": {
"label": "Flag caption",
"type": "string",
"required": false,
"description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.",
"example": "1992 version of the flag prior to the country's dissolution"
},
"image_flag2": {
"label": "Second flag",
"type": "wiki-file-name",
"required": false,
"example": "Secondflag of Namibia.svg",
"description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets."
},
"alt_flag2": {
"label": "Second flag alt text",
"type": "string",
"required": false,
"description": "Alt text for second flag (text shown when pointer hovers over flag)."
},
"flag2_border": {
"label": "Second flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"image_coat": {
"label": "Coat of arms",
"type": "wiki-file-name",
"aliases": [
"image_symbol"
],
"example": "Great Seal of the United States (obverse).svg"
},
"symbol_width": {
"label": "Symbol width",
"type": "string",
"required": false,
"description": "Symbol image's width.",
"default": "85px"
},
"alt_coat": {
"label": "Coat of arms alt text",
"type": "string",
"aliases": [
"alt_symbol",
"coat_alt"
],
"required": false,
"description": "Alt text for coat of arms."
},
"symbol_type": {
"label": "Symbol type",
"type": "string",
"required": false,
"description": "If not a coat of arms.",
"example": "emblem, seal, etc"
},
"symbol_type_article": {
"label": "Symbol type article",
"type": "string",
"description": "An article about the type of symbol of the country"
},
"text_symbol": {
"label": "Text symbol",
"type": "string",
"required": false,
"description": "For other types of text symbol.",
"example": "''[hymn name]''"
},
"text_symbol_type": {
"label": "Text symbol type",
"type": "string",
"required": false,
"description": "For other types of text symbol."
},
"other_symbol": {
"label": "Other symbol",
"type": "string",
"required": false,
"description": "Use if a further symbol exists."
},
"other_symbol_type": {
"label": "Other symbol type",
"type": "string",
"required": false
},
"national_motto": {
"label": "National motto",
"type": "string",
"required": false,
"example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}",
"description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English."
},
"motto": {
"label": "Motto",
"type": "string",
"required": false
},
"national_anthem": {
"label": "National anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"anthem": {
"label": "Anthem",
"type": "string",
"required": false
},
"royal_anthem": {
"label": "Royal anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"image_map": {
"label": "Map",
"type": "string",
"required": false,
"example": "LocationCountry.svg"
},
"map_width": {
"label": "Map width",
"type": "string",
"required": false,
"description": "Map image's width.",
"default": "250px"
},
"alt_map": {
"label": "Map alt text",
"type": "string",
"required": false
},
"map_caption": {
"label": "Map caption",
"type": "string",
"required": false,
"description": "Caption to place below map."
},
"image_map2": {
"label": "Map 2",
"type": "string",
"required": false,
"description": "Another map, if required."
},
"map2_width": {
"label": "Map 2 width",
"type": "string",
"required": false
},
"alt_map2": {
"label": "Map 2 alt text",
"type": "string",
"required": false
},
"map_caption2": {
"label": "Map 2 caption",
"type": "string",
"required": false,
"description": "Caption to place below second map."
},
"image_map3": {},
"map3_width": {},
"alt_map3": {},
"map_caption3": {},
"capital": {
"label": "Capital",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type": {
"label": "Capital type",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"type": "string",
"required": false,
"description": "The geographic coordinates of the capital."
},
"latd": {
"label": "Latitude degrees",
"type": "string",
"required": false,
"description": "The degrees of the capital's latitude."
},
"latm": {
"label": "Latitude minutes",
"type": "string",
"description": "The minutes of the capital's latitude."
},
"latNS": {
"label": "Latitude NS",
"type": "string",
"description": "The direction of the capital's latitude."
},
"longd": {
"label": "Longitude degrees",
"type": "string",
"description": "The degrees of the capital's longitude."
},
"longm": {
"label": "Longitude minutes",
"type": "string",
"description": "The minutes of the capital's longitude."
},
"longEW": {
"label": "Longitude EW",
"type": "string",
"description": "The direction of the capital's longitude."
},
"admin_center": {
"label": "Administrative center",
"type": "string",
"required": false,
"description": "Location/s of administrative center/s."
},
"admin_center_type": {
"label": "Administrative center type",
"type": "string",
"required": false,
"default": "Administrative center"
},
"capital2": {
"label": "Capital 2",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type2": {
"label": "Capital 2 type",
"type": "string",
"required": false
},
"admin_center2": {
"label": "Administrative center 2",
"type": "string",
"required": false
},
"admin_center_type2": {
"label": "Administrative center 2 type",
"type": "string",
"required": false
},
"largest_city": {
"label": "Largest city",
"type": "string",
"required": false,
"description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital."
},
"largest_settlement": {
"label": "Largest settlement",
"type": "string",
"required": false,
"description": "Name of largest settlement if not a city."
},
"largest_settlement_type": {
"label": "Largest settlement type",
"type": "string",
"required": false,
"description": "Type of settlement if largest settlement not a city."
},
"official_languages": {
"label": "Official languages",
"type": "string",
"required": false,
"description": "Languages recognised in legislation, constitution, etc."
},
"national_languages": {
"label": "National languages",
"type": "string",
"required": false,
"description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc."
},
"regional_languages": {
"label": "Regional languages",
"type": "string",
"required": false,
"description": "Languages recognised or associated with particular regions within the country/territory."
},
"languages_type": {
"label": "Languages type",
"type": "string",
"description": "Use to specify a further type of language, if not official, national or regional."
},
"languages_sub": {
"label": "Languages sub",
"type": "string",
"required": false,
"description": "Is this further type of language a sub-item of the previous non-sub type?",
"example": "'yes' or 'no'"
},
"languages": {
"label": "Languages",
"type": "string",
"required": false,
"description": "Languages of the further type."
},
"languages2_type": {
"label": "2nd languages type",
"type": "string",
"description": "Use to specify a 2nd further type of language, if not official, national or regional."
},
"languages2_sub": {
"label": "Languages 2 sub",
"type": "string",
"required": false,
"description": "Is the second alternative type of languages a sub-item of the previous non-sub type?",
"example": "'yes or 'no'"
},
"languages2": {
"label": "Languages 2",
"type": "string",
"required": false,
"description": "Languages of the second further type."
},
"ethnic_groups": {
"label": "Ethnic groups",
"type": "string",
"required": false,
"description": "The primary ethnic groups of the country",
"example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | 7.0% [[Malaysian Indian|Indian]] | 1.0% Others }}"
},
"ethnic_groups_ref": {
"label": "Ethnic groups reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of ethnic composition"
},
"ethnic_groups_year": {
"label": "Ethnic groups year",
"type": "number",
"required": false,
"description": "Year the ethnic group statistic is from",
"example": "2017"
},
"religion": {
"label": "Religions",
"type": "string",
"required": false,
"description": "List of religious affiliations in {{ublist}} format",
"example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}"
},
"religion_ref": {
"label": "Religions reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of religious composition"
},
"demonym": {
"label": "Demonym",
"type": "string",
"required": false,
"description": "Name of residents of this country",
"example": "Singaporean",
"suggested": true
},
"org_type": {
"label": "Organization type",
"type": "string",
"required": false
},
"membership": {
"label": "membership",
"type": "string",
"required": false
},
"membership_type": {
"label": "membership_type",
"type": "string",
"required": false
},
"government_type": {
"label": "Type of government",
"type": "string",
"required": false,
"description": "The type of government, e.g. federal republic",
"example": "[[Monarchy]]"
},
"politics_link": {
"label": "Politics link",
"type": "string",
"required": false
},
"leader_title1": {
"label": "Leader 1 title",
"type": "line",
"required": false,
"description": "Title of principal leader",
"example": "[[President of Singapore|President]]"
},
"leader_name1": {
"label": "Leader 1 name",
"type": "line",
"required": false,
"description": "Name of principal leader",
"example": "[[Halimah Yacob]]"
},
"leader_title2": {
"label": "Leader 2 title",
"type": "line",
"required": false,
"description": "Title of 2nd leader",
"example": "[[Prime Minister of Singapore|Prime Minister]]"
},
"leader_name2": {
"label": "Leader 2 name",
"type": "line",
"description": "Name of 2nd leader",
"example": "[[Lee Hsien Loong]]"
},
"leader_title3": {
"label": "Leader 3 title",
"type": "line",
"required": false,
"description": "Title of 3rd leader",
"example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]"
},
"leader_name3": {
"label": "Leader 3 name",
"type": "line",
"description": "Name of 3rd leader",
"example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]"
},
"leader_title4": {
"label": "Leader 4 title",
"type": "line",
"required": false,
"description": "Title of the 4th leader",
"example": "[[President pro tempore of the United States Senate|President pro tempore]]"
},
"leader_name4": {
"label": "Leader 4 name",
"type": "line",
"description": "Name of the 4th leader"
},
"leader_title5": {
"label": "leader_title5",
"type": "string",
"required": false
},
"leader_name5": {
"label": "Leader name 5",
"type": "string"
},
"leader_title6": {
"label": "Leader title 6",
"type": "string",
"required": false
},
"leader_name6": {
"label": "Leader name 6",
"type": "string"
},
"leader_title7": {
"label": "Leader title7",
"type": "string",
"required": false
},
"leader_name7": {
"label": "Leader name 7",
"type": "string"
},
"leader_title8": {
"label": "Leader title 8",
"type": "string",
"required": false
},
"leader_name8": {
"label": "Leader name 8",
"type": "string"
},
"leader_title9": {
"label": "Leader title 9",
"type": "string",
"required": false
},
"leader_name9": {
"label": "Leader name 9",
"type": "string"
},
"leader_title10": {
"label": "Leader title 10",
"type": "string",
"required": false
},
"leader_name10": {
"label": "Leader name 10",
"type": "string"
},
"leader_title11": {
"label": "Leader title 11",
"type": "string",
"required": false
},
"leader_name11": {
"label": "Leader name 11",
"type": "string"
},
"leader_title12": {
"label": "Leader title 12",
"type": "string",
"required": false
},
"leader_name12": {
"label": "Leader name 12",
"type": "string"
},
"leader_title13": {
"label": "Leader title 13",
"type": "string",
"required": false
},
"leader_name13": {
"label": "Leader name 13",
"type": "string"
},
"leader_title14": {
"label": "Leader title 14",
"type": "string",
"required": false
},
"leader_name14": {
"label": "Leader name 14",
"type": "string"
},
"legislature": {
"label": "Legislature",
"type": "line",
"description": "Name of, and link to, the country's national legislature",
"example": "[[Parliament of Singapore|Parliament]]"
},
"upper_house": {
"description": "Upper house of the country or organization's legislature",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"lower_house": {
"description": "Lower house of the country or organization's legislature",
"label": "Lower house",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"sovereignty_type": {
"label": "Sovereignty type",
"type": "line",
"required": false,
"description": "Type of sovereignty this country has",
"example": "Independence"
},
"sovereignty_note": {
"label": "Sovereignty note",
"type": "content",
"required": false,
"description": "Note about this country's sovereignty",
"example": "from the [[United Kingdom]]"
},
"established": {
"label": "established",
"type": "string",
"required": false
},
"established_event1": {
"label": "Establishment event 1",
"type": "string",
"required": false
},
"established_date1": {
"label": "Establishment date 1",
"type": "string",
"required": false
},
"established_event2": {
"label": "Establishment event 2",
"type": "string",
"required": false
},
"established_date2": {
"label": "Establishment date 2",
"type": "string",
"required": false
},
"established_event3": {
"label": "Establishment event 3",
"type": "string",
"required": false
},
"established_date3": {
"label": "Establishment date 3",
"type": "string",
"required": false
},
"established_event4": {
"label": "Establishment event 4",
"type": "string",
"required": false
},
"established_date4": {
"label": "established_date4",
"type": "string",
"required": false
},
"established_event5": {
"label": "Establishment event 5",
"type": "string",
"required": false
},
"established_date5": {
"label": "established_date5",
"type": "string",
"required": false
},
"established_event6": {
"label": "established_event6",
"type": "string",
"required": false
},
"established_date6": {
"label": "established_date6",
"type": "string",
"required": false
},
"established_event7": {
"label": "established_event7",
"type": "string",
"required": false
},
"established_date7": {
"label": "established_date7",
"type": "string",
"required": false
},
"established_event8": {
"label": "established_event8",
"type": "string",
"required": false
},
"established_date8": {
"label": "established_date8",
"type": "string",
"required": false
},
"established_event9": {
"label": "established_event9",
"type": "string",
"required": false
},
"established_date9": {
"label": "established_date9",
"type": "string",
"required": false
},
"established_event10": {
"label": "established_event10",
"type": "string",
"required": false
},
"established_date10": {
"label": "established_date10",
"type": "string",
"required": false
},
"established_event11": {
"label": "established_event11",
"type": "string",
"required": false
},
"established_date11": {
"label": "established_date11",
"type": "string",
"required": false
},
"established_event12": {
"label": "established_event12",
"type": "string",
"required": false
},
"established_date12": {
"label": "established_date12",
"type": "string",
"required": false
},
"area_km2": {
"label": "Land area (km²)",
"type": "number",
"required": false,
"description": "Land area of the country in square kilometers",
"example": "722.5",
"suggested": true
},
"area_link": {
"label": "area_link",
"type": "string",
"required": false
},
"area_label": {
"label": "area_label",
"type": "string",
"required": false
},
"FR_foot4": {
"label": "FR_foot4",
"type": "string",
"required": false,
"deprecated": true
},
"area_footnote": {
"label": "area_footnote",
"type": "string",
"required": false
},
"area_rank": {
"label": "Area rank",
"type": "string",
"required": false,
"description": "Rank among countries of land area",
"example": "174th",
"suggested": true
},
"area_sq_mi": {
"label": "Land area (mi²)",
"type": "number",
"required": false,
"description": "Land area of the country in square miles",
"example": "290"
},
"percent_water": {
"label": "percent_water",
"type": "string",
"required": false
},
"area_label2": {
"label": "area_label2",
"type": "string",
"required": false
},
"area_data2": {
"label": "area_data2",
"type": "string",
"required": false
},
"area_label3": {
"label": "area_label3",
"type": "string",
"required": false
},
"area_data3": {
"label": "area_data3",
"type": "string",
"required": false
},
"FR_metropole": {
"label": "FR_metropole",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot2": {
"label": "FR_foot2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_km2": {
"label": "FR_IGN_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_rank": {
"label": "FR_IGN_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_sq_mi": {
"label": "FR_IGN_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot3": {
"label": "FR_foot3",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_km2": {
"label": "FR_cadastre_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_rank": {
"label": "FR_cadastre_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_sq_mi": {
"label": "FR_cadastre_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"population_estimate": {
"label": "Population estimate",
"type": "number",
"required": false,
"description": "An estimate of the country's population",
"example": "24,000,000"
},
"population_census": {
"label": "Population census",
"type": "string"
},
"population_link": {
"label": "Population link",
"type": "url"
},
"population_estimate_year": {
"label": "Population estimate year",
"type": "number",
"description": "The year the population estimate is from",
"example": "2018"
},
"population_estimate_rank": {
"label": "Population estimate rank",
"type": "string",
"description": "Rank among countries in estimated population",
"example": "3rd"
},
"population_label2": {
"label": "population_label2",
"type": "string",
"required": false
},
"population_data2": {
"label": "Population data 2",
"type": "string",
"required": false
},
"population_label3": {
"label": "Population label 3",
"type": "string",
"required": false
},
"population_data3": {
"label": "Population data 3",
"type": "string",
"required": false
},
"population_census_year": {
"label": "Population census year",
"type": "number",
"required": false,
"description": "Year the population census statistics are from",
"example": "2010"
},
"population_census_rank": {
"label": "Population census rank",
"type": "string",
"description": "Rank among countries in census population",
"example": "3rd"
},
"population_density_km2": {
"label": "Population density per km²",
"type": "number",
"example": "20,212",
"description": "Population density per square kilometer"
},
"population_density_sq_mi": {
"label": "Population density per mi²",
"type": "number",
"description": "Population density per square mile",
"example": "20,212"
},
"pop_den_footnote": {
"label": "Population density footnote",
"type": "string",
"description": "footnote about the population density statistic"
},
"population_density_rank": {
"label": "Population density rank",
"type": "string",
"required": false,
"description": "Rank among countries in population density",
"example": "3rd"
},
"FR_metropole_population": {
"label": "FR_metropole_population",
"type": "string",
"required": false,
"deprecated": true
},
"FR_total_population_estimate_year": {
"label": "FR_total_population_estimate_year",
"type": "string",
"deprecated": true
},
"FR_foot": {
"label": "FR_foot",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate": {
"label": "FR_total_population_estimate",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate_rank": {
"label": "FR_total_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_metropole_population_estimate_rank": {
"label": "FR_metropole_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_foot5": {
"label": "FR_foot5",
"type": "string",
"required": false,
"deprecated": true
},
"GDP_PPP": {
"label": "GDP (PPP)",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity)",
"example": "$554.855 billion",
"suggested": true
},
"GDP_PPP_year": {
"label": "GDP (PPP) year cited",
"type": "number",
"required": false,
"description": "Year the GDP (PPP) statistic is cited from",
"example": "2018",
"suggested": true
},
"GDP_PPP_rank": {
"label": "GDP (PPP) rank",
"type": "string",
"required": false,
"description": "Rank among countries for GDP PPP",
"example": "39th"
},
"GDP_PPP_per_capita": {
"label": "GDP_PPP_per_capita",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity) per capita",
"example": "$98,014"
},
"GDP_PPP_per_capita_rank": {
"label": "GDP (PPP) per capita rank",
"type": "line",
"required": false,
"description": "Rank among countries for GDP PPP per capita",
"example": "3rd"
},
"GDP_nominal": {
"label": "GDP (nominal)",
"type": "string",
"required": false,
"description": "Nominal GDP of the country"
},
"GDP_nominal_year": {
"label": "GDP (nominal) year",
"type": "number",
"required": false,
"description": "Year cited for the country's nominal GDP statistic"
},
"GDP_nominal_rank": {
"label": "GDP (nominal) rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP",
"example": "41st"
},
"GDP_nominal_per_capita": {
"label": "GDP (nominal) per capita",
"type": "string",
"required": false,
"description": "Nominal GDP per capita in the country",
"example": "$61,766"
},
"GDP_nominal_per_capita_rank": {
"label": "GDP (nominal) per capita rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP per capita",
"example": "8th"
},
"Gini": {
"label": "Gini index",
"type": "number",
"required": false,
"description": "Gini index of the country",
"example": "46.4"
},
"Gini_year": {
"label": "Gini index year cited",
"type": "number",
"required": false,
"description": "Year the gini index statistic is cited for",
"example": "2014"
},
"Gini_change": {
"label": "Gini change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" (over last year)",
"example": "increase"
},
"Gini_ref": {
"label": "Gini index reference",
"type": "line",
"required": false,
"description": "Reference for cited Gini index statistic"
},
"Gini_rank": {
"label": "Gini rank",
"type": "string",
"required": false,
"description": "Rank of Gini indices",
"example": "30th"
},
"HDI": {
"label": "Human development index",
"type": "number",
"required": false,
"example": "0.932",
"suggested": true,
"description": "The country's human development index (HDI)"
},
"HDI_year": {
"label": "Human Development Index year",
"type": "number",
"required": false,
"description": "Year to which the HDI statistic refers",
"example": "2017",
"suggested": true
},
"HDI_change": {
"label": "HDI change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" from previous year",
"example": "increase"
},
"HDI_ref": {
"label": "Human Development Index reference",
"type": "line",
"required": false,
"description": "Reference for HDI statistic"
},
"HDI_rank": {
"label": "Human development index rank",
"type": "string",
"required": false,
"description": "Rank among countries for HDI score",
"example": "9th"
},
"currency": {
"label": "Currency",
"type": "line",
"required": false,
"description": "National/official currency name and article link",
"example": "[[Singapore dollar]]"
},
"currency_code": {
"label": "Currency code",
"type": "line",
"required": false,
"description": "Currency code of the official currency",
"example": "SGD"
},
"time_zone": {
"label": "Time zone",
"type": "line",
"required": false,
"description": "National time zone(s)",
"example": "[[Singapore Standard Time|SST]]"
},
"utc_offset": {
"label": "UTC offsets",
"type": "string",
"example": "−4 to −12, +10, +11"
},
"utc_offset_DST": {
"label": "UTF offsets (DST)",
"type": "string",
"example": "−4 to −10"
},
"DST_note": {
"label": "DST note",
"type": "string",
"example": "{{efn|name=\"time\"}}"
},
"time_zone_DST": {
"label": "Time zones (DST)",
"type": "string",
"required": false
},
"DST": {
"label": "Daylight savings time",
"type": "string",
"required": false
},
"antipodes": {
"label": "antipodes",
"type": "string",
"required": false
},
"date_format": {
"label": "Date format",
"type": "string",
"required": false
},
"drives_on": {
"label": "drives on",
"type": "string",
"required": false
},
"rail gauge": {
"label": "Rail gauge",
"type": "string",
"required": false
},
"calling_code": {
"label": "Calling code",
"type": "string",
"example": "+1"
},
"patron_saint": {
"label": "Patron saint",
"aliases": [
"patron_saints"
],
"type": "string",
"required": false
},
"iso3166code": {
"label": "ISO 3166 code",
"type": "string",
"description": "ISO 3166 code for the country",
"example": "US"
},
"cctld": {
"label": "Country code top level domain",
"type": "string",
"example": ".se"
},
"official_website": {
"label": "official_website",
"type": "string",
"required": false,
"description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])."
},
"footnote_a": {
"label": "footnote_a",
"type": "string",
"required": false
},
"footnote_b": {
"label": "footnote_b",
"type": "string",
"required": false
},
"footnote_c": {
"label": "footnote_c",
"type": "string",
"required": false
},
"footnote_d": {
"label": "footnote_d",
"type": "string",
"required": false
},
"footnote_e": {
"label": "footnote_e",
"type": "string",
"required": false
},
"footnote_f": {
"label": "footnote_f",
"type": "string",
"required": false
},
"footnote_g": {
"label": "footnote_g",
"type": "string",
"required": false
},
"footnote_h": {
"label": "footnote_h",
"type": "string",
"required": false
},
"footnote1": {
"label": "footnote1",
"type": "string",
"required": false
},
"footnote2": {
"label": "footnote2",
"type": "string",
"required": false
},
"footnote3": {
"label": "footnote3",
"type": "string",
"required": false
},
"footnote4": {
"label": "footnote4",
"type": "string",
"required": false
},
"footnote5": {
"label": "footnote5",
"type": "string",
"required": false
},
"footnote6": {
"label": "footnote6",
"type": "string",
"required": false
},
"footnote7": {
"label": "footnote7",
"type": "string",
"required": false
},
"footnote8": {
"label": "footnote8",
"type": "string",
"required": false
},
"footnotes": {
"label": "footnotes",
"type": "string",
"required": false
},
"navbar": {
"label": "navbar",
"type": "string",
"required": false
},
"micronation": {},
"status": {
"type": "line"
},
"status_text": {
"type": "line"
},
"empire": {},
"year_end": {
"type": "number"
},
"year_exile_start": {
"type": "number"
},
"year_exile_end": {
"type": "number"
},
"life_span": {
"type": "line"
},
"year_start": {
"type": "number"
},
"flag_size": {
"type": "line"
},
"flag_alt": {
"type": "string"
},
"flag_alt2": {
"type": "string"
},
"flag_type": {
"type": "string"
},
"coa_size": {
"type": "line"
},
"englishmotto": {
"type": "string",
"label": "Motto in English",
"description": "The country's motto translated into English"
},
"image_map_size": {
"type": "line"
},
"image_map_alt": {
"type": "string"
},
"image_map_caption": {
"type": "content"
},
"image_map2_size": {
"type": "line"
},
"image_map2_alt": {
"type": "string"
},
"image_map2_caption": {
"type": "content"
},
"loctext": {
"type": "string"
},
"capital_exile": {
"type": "string"
},
"recognized_languages": {
"aliases": [
"recognised_languages"
],
"type": "content",
"label": "Recognized languages",
"description": "Recognized languages of the country, possibly in list format"
},
"recognized_national_languages": {
"aliases": [
"recognised_national_languages"
],
"type": "content",
"label": "Recognized national languages",
"description": "Recognized national languages of the country, possibly in list format"
},
"recognized_regional_languages": {
"aliases": [
"recognised_regional_languages"
],
"type": "content",
"label": "Recognized regional languages",
"description": "Recognized regional languages of the country, possibly in list format"
},
"common_languages": {
"type": "content",
"label": "Common languages",
"description": "Common languages of the country, possibly in list format",
"example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}"
},
"religion_year": {
"type": "number",
"label": "Religion statistic year",
"description": "Year the religion statistic is from",
"example": "2015"
},
"leader_title15": {
"type": "line"
},
"leader_name15": {
"type": "line"
},
"title_leader": {
"type": "line",
"label": "Leader's title",
"description": "Title of the country's leader",
"example": "[[President of the United States|President]]"
},
"year_leader1": {
"type": "line",
"label": "Leader 1 years",
"description": "Years the first leader reigned",
"example": "1776-1795"
},
"leader1": {
"type": "line",
"label": "Leader 1",
"description": "The first leader of the country",
"example": "[[George Washington]]"
},
"year_leader2": {
"type": "line"
},
"leader2": {
"type": "line"
},
"year_leader3": {
"type": "line"
},
"leader3": {
"type": "line"
},
"year_leader4": {
"type": "line"
},
"leader4": {
"type": "line"
},
"year_leader5": {
"type": "line"
},
"leader5": {
"type": "line"
},
"year_leader6": {
"type": "line"
},
"leader6": {
"type": "line"
},
"year_leader7": {
"type": "line"
},
"leader7": {
"type": "line"
},
"year_leader8": {
"type": "line"
},
"leader8": {
"type": "line"
},
"year_leader9": {
"type": "line"
},
"leader9": {
"type": "line"
},
"year_leader10": {
"type": "line"
},
"leader10": {
"type": "line"
},
"year_leader11": {
"type": "line",
"label": "Leader 11 years",
"description": "Year of leader 11",
"example": "1980-1987"
},
"leader11": {
"type": "line"
},
"title_representative": {
"type": "line",
"label": "Representative title",
"description": "Title of the country's representative",
"example": "[[Governor General of Canada|Governor General]]"
},
"year_representative1": {
"type": "line",
"label": "Representative 1 years",
"description": "Year of representative 1",
"example": "1492-1506"
},
"representative1": {
"type": "line",
"label": "Representative 1",
"description": "First representative"
},
"year_representative2": {
"type": "line",
"label": "Representative 2 years",
"description": "Year of representative 2",
"example": "1552-1580"
},
"representative2": {
"type": "line"
},
"year_representative3": {
"type": "line",
"label": "Representative 3 years",
"description": "Year of representative 3",
"example": "1652-1666"
},
"representative3": {
"type": "line"
},
"year_representative4": {
"type": "line",
"label": "Representative 4 year",
"description": "Year of representative 4",
"example": "1652-1666"
},
"representative4": {
"type": "line"
},
"year_representative5": {
"type": "line",
"label": "Representative 5 years",
"description": "Year of representative 5",
"example": "1652-1666"
},
"representative5": {
"type": "line"
},
"title_deputy": {
"type": "line"
},
"year_deputy1": {
"type": "line",
"label": "Deputy 1 years",
"description": "Years of the 1st deputy",
"example": "2006-2009"
},
"deputy1": {
"type": "line",
"label": "Deputy 1",
"description": "First deputy"
},
"year_deputy2": {
"type": "line",
"label": "Deputy 2 years",
"description": "Years of the 2nd deputy",
"example": "2009-2011"
},
"deputy2": {
"type": "line"
},
"year_deputy3": {
"type": "line",
"label": "Deputy 3 years",
"description": "Years of the 3rd deputy",
"example": "2011-2013"
},
"deputy3": {
"type": "line"
},
"year_deputy4": {
"type": "line",
"label": "Deputy 4 years",
"description": "Years of the 4th deputy",
"example": "2013-2016"
},
"deputy4": {
"type": "line"
},
"year_deputy5": {
"type": "line",
"label": "Deputy 5 years",
"description": "Years of the 5th deputy",
"example": "2016-2018"
},
"deputy5": {
"type": "line"
},
"year_deputy6": {
"type": "line",
"label": "Deputy 6 years",
"description": "Years of the 6th deputy",
"example": "2018-"
},
"deputy6": {
"type": "line"
},
"type_house1": {
"type": "line"
},
"house1": {
"type": "line"
},
"type_house2": {
"type": "line"
},
"house2": {
"type": "line"
},
"event_pre": {
"type": "line"
},
"established_event13": {
"label": "Establishment event 13",
"type": "line"
},
"established_date13": {
"label": "Establishment date 13",
"type": "date"
},
"established_event14": {
"type": "line"
},
"established_date14": {
"type": "line"
},
"established_event15": {
"type": "line"
},
"established_date15": {
"type": "line"
},
"event_start": {
"label": "Starting event",
"description": "The foundational event of the country",
"example": "Established",
"type": "string"
},
"date_pre": {},
"date_start": {
"label": "Date established",
"description": "Date the country, dynasty or organization was established (date of event_start)",
"example": "601 CE",
"type": "string"
},
"event1": {
"label": "Event 1",
"description": "First significant event",
"example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]",
"type": "string"
},
"date_event1": {
"label": "Event 1 date",
"description": "Date of the first significant event",
"example": "601",
"type": "date"
},
"event2": {
"label": "Event 2",
"description": "Second significant event",
"example": "[[Alliance Conducted at Sea|Alliance with Jin]]",
"type": "string"
},
"date_event2": {
"label": "Event 2 date",
"description": "Date of the second significant event",
"type": "string"
},
"event3": {
"label": "Event 3",
"description": "Third significant event",
"example": "[[Jingkang Incident]]",
"type": "string"
},
"date_event3": {},
"event4": {
"label": "Event 4",
"description": "Fourth significant event",
"example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]",
"type": "string"
},
"date_event4": {},
"event5": {
"label": "Event 5",
"description": "Fifth significant event",
"example": "Fall of [[Hangzhou|Lin'an]]",
"type": "string"
},
"date_event5": {},
"event6": {
"label": "Event 6",
"description": "Sixth significant event",
"example": "[[Krystallnacht]]",
"type": "string"
},
"date_event6": {},
"event_end": {
"label": "Event ending the country",
"description": "The event that caused the country to stop existing or transition, if applicable",
"example": "[[Battle of Yamen]] (end of dynasty)",
"type": "string"
},
"date_end": {
"label": "End date",
"description": "Date the country stopped existing or transitioned, if applicable",
"example": "1433",
"type": "date"
},
"event_post": {},
"date_post": {},
"area_ha": {},
"area_acre": {},
"area_land_km2": {},
"area_land_ha": {},
"area_land_sq_mi": {},
"area_land_acre": {},
"area_water_km2": {},
"area_water_ha": {},
"area_water_sq_mi": {},
"area_water_acre": {},
"stat_area1": {},
"stat_area2": {},
"stat_area3": {},
"stat_area4": {},
"stat_area5": {},
"area_land_footnote": {},
"area_water_footnote": {},
"stat_year1": {},
"ref_area1": {},
"stat_year2": {},
"ref_area2": {},
"stat_year3": {},
"ref_area3": {},
"stat_year4": {},
"ref_area4": {},
"stat_year5": {
"label": "Statistic 5 year",
"description": "Year of statistic 5",
"example": "1933",
"type": "number"
},
"ref_area5": {},
"stat_pop1": {},
"stat_pop2": {},
"stat_pop3": {},
"stat_pop4": {},
"stat_pop5": {},
"ref_pop1": {},
"ref_pop2": {},
"ref_pop3": {},
"ref_pop4": {},
"ref_pop5": {},
"nummembers": {},
"p1": {},
"s1": {},
"flag_p1": {},
"image_p1": {},
"border_p1": {},
"flag_p2": {},
"image_p2": {},
"p2": {},
"border_p2": {},
"flag_p3": {},
"image_p3": {},
"p3": {},
"border_p3": {},
"flag_p4": {},
"image_p4": {},
"p4": {},
"border_p4": {},
"flag_p5": {},
"image_p5": {},
"p5": {},
"border_p5": {},
"flag_p6": {},
"image_p6": {},
"p6": {},
"border_p6": {},
"flag_p7": {},
"image_p7": {},
"p7": {},
"border_p7": {},
"flag_p8": {},
"image_p8": {},
"p8": {},
"border_p8": {},
"flag_p9": {},
"image_p9": {},
"p9": {},
"border_p9": {},
"flag_p10": {},
"image_p10": {},
"p10": {},
"border_p10": {},
"flag_p11": {},
"image_p11": {},
"p11": {},
"border_p11": {},
"flag_p12": {},
"image_p12": {},
"p12": {},
"border_p12": {},
"flag_p13": {},
"image_p13": {},
"p13": {},
"border_p13": {},
"flag_p14": {},
"image_p14": {},
"p14": {},
"border_p14": {},
"flag_p15": {},
"image_p15": {},
"p15": {},
"border_p15": {},
"flag_s1": {},
"image_s1": {},
"border_s1": {},
"flag_s2": {},
"image_s2": {},
"s2": {},
"border_s2": {},
"flag_s3": {},
"image_s3": {},
"s3": {},
"border_s3": {},
"flag_s4": {},
"image_s4": {},
"s4": {},
"border_s4": {},
"flag_s5": {},
"image_s5": {},
"s5": {},
"border_s5": {},
"flag_s6": {},
"image_s6": {},
"s6": {},
"border_s6": {},
"flag_s7": {},
"image_s7": {},
"s7": {},
"border_s7": {},
"flag_s8": {},
"image_s8": {},
"s8": {},
"border_s8": {},
"flag_s9": {},
"image_s9": {},
"s9": {},
"border_s9": {},
"flag_s10": {},
"image_s10": {},
"s10": {},
"border_s10": {},
"flag_s11": {},
"image_s11": {},
"s11": {},
"border_s11": {},
"flag_s12": {},
"image_s12": {},
"s12": {},
"border_s12": {},
"flag_s13": {},
"image_s13": {},
"s13": {},
"border_s13": {},
"flag_s14": {},
"image_s14": {},
"s14": {},
"border_s14": {},
"flag_s15": {},
"image_s15": {},
"s15": {},
"border_s15": {},
"today": {
"label": "Today part of",
"description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.",
"example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}",
"type": "content",
"suggested": true
},
"footnotes2": {},
"symbol_caption": {},
"nested": {}
},
"paramOrder": [
"conventional_long_name",
"common_name",
"linking_name",
"native_name",
"name",
"image_flag",
"flag_width",
"alt_flag",
"flag_border",
"flag_caption",
"image_flag2",
"alt_flag2",
"flag2_border",
"image_coat",
"symbol_width",
"alt_coat",
"symbol_type",
"symbol_type_article",
"text_symbol",
"text_symbol_type",
"other_symbol",
"other_symbol_type",
"national_motto",
"motto",
"national_anthem",
"anthem",
"royal_anthem",
"image_map",
"map_width",
"alt_map",
"map_caption",
"image_map2",
"map2_width",
"alt_map2",
"map_caption2",
"image_map3",
"map3_width",
"alt_map3",
"map_caption3",
"capital",
"capital_type",
"coordinates",
"latd",
"latm",
"latNS",
"longd",
"longm",
"longEW",
"admin_center",
"admin_center_type",
"capital2",
"capital_type2",
"admin_center2",
"admin_center_type2",
"largest_city",
"largest_settlement",
"largest_settlement_type",
"official_languages",
"national_languages",
"regional_languages",
"languages_type",
"languages_sub",
"languages",
"languages2_type",
"languages2_sub",
"languages2",
"ethnic_groups",
"ethnic_groups_ref",
"ethnic_groups_year",
"religion",
"religion_ref",
"demonym",
"org_type",
"membership",
"membership_type",
"government_type",
"politics_link",
"leader_title1",
"leader_name1",
"leader_title2",
"leader_name2",
"leader_title3",
"leader_name3",
"leader_title4",
"leader_name4",
"leader_title5",
"leader_name5",
"leader_title6",
"leader_name6",
"leader_title7",
"leader_name7",
"leader_title8",
"leader_name8",
"leader_title9",
"leader_name9",
"leader_title10",
"leader_name10",
"leader_title11",
"leader_name11",
"leader_title12",
"leader_name12",
"leader_title13",
"leader_name13",
"leader_title14",
"leader_name14",
"legislature",
"upper_house",
"lower_house",
"sovereignty_type",
"sovereignty_note",
"established",
"established_event1",
"established_date1",
"established_event2",
"established_date2",
"established_event3",
"established_date3",
"established_event4",
"established_date4",
"established_event5",
"established_date5",
"established_event6",
"established_date6",
"established_event7",
"established_date7",
"established_event8",
"established_date8",
"established_event9",
"established_date9",
"established_event10",
"established_date10",
"established_event11",
"established_date11",
"established_event12",
"established_date12",
"area_km2",
"area_link",
"area_label",
"FR_foot4",
"area_footnote",
"area_rank",
"area_sq_mi",
"percent_water",
"area_label2",
"area_data2",
"area_label3",
"area_data3",
"FR_metropole",
"FR_foot2",
"FR_IGN_area_km2",
"FR_IGN_area_rank",
"FR_IGN_area_sq_mi",
"FR_foot3",
"FR_cadastre_area_km2",
"FR_cadastre_area_rank",
"FR_cadastre_area_sq_mi",
"population_estimate",
"population_census",
"population_link",
"population_estimate_year",
"population_estimate_rank",
"population_label2",
"population_data2",
"population_label3",
"population_data3",
"population_census_year",
"population_census_rank",
"population_density_km2",
"population_density_sq_mi",
"pop_den_footnote",
"population_density_rank",
"FR_metropole_population",
"FR_total_population_estimate_year",
"FR_foot",
"FR_total_population_estimate",
"FR_total_population_estimate_rank",
"FR_metropole_population_estimate_rank",
"FR_foot5",
"GDP_PPP",
"GDP_PPP_year",
"GDP_PPP_rank",
"GDP_PPP_per_capita",
"GDP_PPP_per_capita_rank",
"GDP_nominal",
"GDP_nominal_year",
"GDP_nominal_rank",
"GDP_nominal_per_capita",
"GDP_nominal_per_capita_rank",
"Gini",
"Gini_year",
"Gini_change",
"Gini_ref",
"Gini_rank",
"HDI",
"HDI_year",
"HDI_change",
"HDI_ref",
"HDI_rank",
"currency",
"currency_code",
"time_zone",
"utc_offset",
"utc_offset_DST",
"DST_note",
"time_zone_DST",
"DST",
"antipodes",
"date_format",
"drives_on",
"rail gauge",
"calling_code",
"patron_saint",
"iso3166code",
"cctld",
"official_website",
"footnote_a",
"footnote_b",
"footnote_c",
"footnote_d",
"footnote_e",
"footnote_f",
"footnote_g",
"footnote_h",
"footnote1",
"footnote2",
"footnote3",
"footnote4",
"footnote5",
"footnote6",
"footnote7",
"footnote8",
"footnotes",
"navbar",
"micronation",
"status",
"status_text",
"empire",
"year_end",
"year_exile_start",
"year_exile_end",
"life_span",
"year_start",
"flag_size",
"flag_alt",
"flag_alt2",
"flag_type",
"coa_size",
"englishmotto",
"image_map_size",
"image_map_alt",
"image_map_caption",
"image_map2_size",
"image_map2_alt",
"image_map2_caption",
"loctext",
"capital_exile",
"recognized_languages",
"recognized_national_languages",
"recognized_regional_languages",
"common_languages",
"religion_year",
"leader_title15",
"leader_name15",
"title_leader",
"year_leader1",
"leader1",
"year_leader2",
"leader2",
"year_leader3",
"leader3",
"year_leader4",
"leader4",
"year_leader5",
"leader5",
"year_leader6",
"leader6",
"year_leader7",
"leader7",
"year_leader8",
"leader8",
"year_leader9",
"leader9",
"year_leader10",
"leader10",
"year_leader11",
"leader11",
"title_representative",
"year_representative1",
"representative1",
"year_representative2",
"representative2",
"year_representative3",
"representative3",
"year_representative4",
"representative4",
"year_representative5",
"representative5",
"title_deputy",
"year_deputy1",
"deputy1",
"year_deputy2",
"deputy2",
"year_deputy3",
"deputy3",
"year_deputy4",
"deputy4",
"year_deputy5",
"deputy5",
"year_deputy6",
"deputy6",
"type_house1",
"house1",
"type_house2",
"house2",
"established_event13",
"established_date13",
"established_event14",
"established_date14",
"established_event15",
"established_date15",
"event_pre",
"date_pre",
"event_start",
"date_start",
"event1",
"date_event1",
"event2",
"date_event2",
"event3",
"date_event3",
"event4",
"date_event4",
"event5",
"date_event5",
"event6",
"date_event6",
"event_end",
"date_end",
"event_post",
"date_post",
"area_ha",
"area_acre",
"area_land_km2",
"area_land_ha",
"area_land_sq_mi",
"area_land_acre",
"area_water_km2",
"area_water_ha",
"area_water_sq_mi",
"area_water_acre",
"stat_area1",
"stat_area2",
"stat_area3",
"stat_area4",
"stat_area5",
"area_land_footnote",
"area_water_footnote",
"stat_year1",
"ref_area1",
"stat_year2",
"ref_area2",
"stat_year3",
"ref_area3",
"stat_year4",
"ref_area4",
"stat_year5",
"ref_area5",
"stat_pop1",
"stat_pop2",
"stat_pop3",
"stat_pop4",
"stat_pop5",
"ref_pop1",
"ref_pop2",
"ref_pop3",
"ref_pop4",
"ref_pop5",
"nummembers",
"p1",
"s1",
"flag_p1",
"image_p1",
"border_p1",
"flag_p2",
"image_p2",
"p2",
"border_p2",
"flag_p3",
"image_p3",
"p3",
"border_p3",
"flag_p4",
"image_p4",
"p4",
"border_p4",
"flag_p5",
"image_p5",
"p5",
"border_p5",
"flag_p6",
"image_p6",
"p6",
"border_p6",
"flag_p7",
"image_p7",
"p7",
"border_p7",
"flag_p8",
"image_p8",
"p8",
"border_p8",
"flag_p9",
"image_p9",
"p9",
"border_p9",
"flag_p10",
"image_p10",
"p10",
"border_p10",
"flag_p11",
"image_p11",
"p11",
"border_p11",
"flag_p12",
"image_p12",
"p12",
"border_p12",
"flag_p13",
"image_p13",
"p13",
"border_p13",
"flag_p14",
"image_p14",
"p14",
"border_p14",
"flag_p15",
"image_p15",
"p15",
"border_p15",
"flag_s1",
"image_s1",
"border_s1",
"flag_s2",
"image_s2",
"s2",
"border_s2",
"flag_s3",
"image_s3",
"s3",
"border_s3",
"flag_s4",
"image_s4",
"s4",
"border_s4",
"flag_s5",
"image_s5",
"s5",
"border_s5",
"flag_s6",
"image_s6",
"s6",
"border_s6",
"flag_s7",
"image_s7",
"s7",
"border_s7",
"flag_s8",
"image_s8",
"s8",
"border_s8",
"flag_s9",
"image_s9",
"s9",
"border_s9",
"flag_s10",
"image_s10",
"s10",
"border_s10",
"flag_s11",
"image_s11",
"s11",
"border_s11",
"flag_s12",
"image_s12",
"s12",
"border_s12",
"flag_s13",
"image_s13",
"s13",
"border_s13",
"flag_s14",
"image_s14",
"s14",
"border_s14",
"flag_s15",
"image_s15",
"s15",
"border_s15",
"today",
"footnotes2",
"symbol_caption",
"nested"
]
}
</templatedata>
{{cob}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
965378ebc164be211eeb082cae05a1663a245efc
Valkism
0
246
545
2023-09-30T20:30:18Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Volkism
0
247
546
2023-09-30T20:30:54Z
Führerredux
2
Redirected page to [[Valkism]]
wikitext
text/x-wiki
#REDIRECT [[Valkism]]
1683a7c457e8da541c18c42526ce2350d6234bea
Main Page
0
1
547
1
2023-09-30T20:31:46Z
Führerredux
2
Replaced content with "__NOTOC__ == Welcome to {{SITENAME}}! =="
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
d2e365b2c1d927ca72b05c874d6ef5c1b7a0bd5e
548
547
2023-09-30T20:31:59Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
333c236e306a4538e312b13d2b5f86f58a3b2d5f
Template:Infobox/doc
10
207
549
471
2023-09-30T20:49:50Z
Führerredux
2
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{distinguish|Template:Userbox}}
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Lua|Module:Infobox}}
{{Parameter names example
|name={{PAGENAME}} <!--|child |subbox |decat--> |title |above |subheader |subheader1 |subheader2={{{subheader2}}}<br/>......
|image|caption |image1|caption1 |image2|caption2={{{caption2}}}<br/>......
|header1=<div style="border-top:1px dashed #ccc;">{{{header1}}}<br/>{{nobold|( ''or'' )}}</div>
|label2={{{label1}}} |data2={{{data1}}}
|data3=( ''or'' ) |data4=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data1}}}</div>
|header5={{{header2}}}<br/><div style="padding:0.75em 0 0.5em;">{{nobold|( ''or'' )}}</div>
|label6={{{label2}}} |data6={{{data2}}}
|data7=( ''or'' ) |data8=<div style="padding-bottom:0.25em;border-bottom:1px dashed #ccc;">{{{data2}}}</div>
|data9=<div style="padding:0.75em 0 0.5em;">( ''etc'' )</div>
|below
}}
This template is intended as a meta template: a template used for constructing other templates. '''Note''': In general, it is not meant for use directly in an article, but can be used on a one-off basis if required. [[Help:Infobox]] contains an introduction about the recommended content and design of infoboxes; [[Wikipedia:Manual of Style/Infoboxes]] contains additional style guidelines. See [[WP:List of infoboxes]] and [[:Category:Infobox templates]] for lists of prepared topic-specific infoboxes.
== Usage ==
{{tlf|Infobox}} is a meta-template: used to organise an actual <nowiki>{{Infobox sometopic}}</nowiki> template (like {{tl|Infobox building}}).
For <code><nowiki>[[Template:Infobox sometopic]]</nowiki></code>, template code then looks like this, simplified:
<syntaxhighlight lang="wikitext">
{{Infobox
| name = {{{name|{{PAGENAME}}}}}
| image = {{{image|}}}
| caption1 = {{{caption|}}}
| label1 = Former names
| data1 = {{{former_names|}}}
| header2 = General information
| label3 = Status
| data3 = {{{status|}}}
... <!-- etc. -->
}}
</syntaxhighlight>
== Optional control parameters ==
; name : If this parameter is present, "view/talk/edit" links will be added to the bottom of the infobox pointing to the named page, prefixed by <code>Template:</code> if no namespace is specified. You may use the value <nowiki>{{subst:PAGENAME}}</nowiki>; however, this is rarely what you want because it will send users clicking these links in an infobox to the template code rather than the data in the infobox they probably want to change.
; child : See the [[#Embedding|Embedding]] section for details. If this is set to "yes", this child infobox should be titled but have no name parameter. This parameter is empty by default, set it to "yes" to activate it.
; subbox : See the [[#Subboxes|Subboxes]] section for details. If this is set to "yes", this subbox should be titled but have no name parameter. This parameter is empty by default, set to "yes" to activate it. It has no effect if the '''child''' parameter is also set to "yes".
; decat : If this is set to "yes", the current page will not be autocategorized in a maintenance category when the generated infobox has some problems or no visible data section. Leave empty by default or set to "yes" to activate it.
; autoheaders: If this is set to any non-blank value, headers which are not followed by data fields are suppressed. See the "[[#Hiding headers when all its data fields are empty|hiding headers when all its data fields are empty]]" section for more details.
== Content parameters ==
=== Title ===
There are two different ways to put a title on an infobox. One contains the title inside the infobox's border in the uppermost cell of the table, the other puts it as a caption on top of the table. You can use them both together, or just one or the other, or neither (though this is not recommended):
; title : Text to put in the caption over the top of the table (or as section header before the whole content of this table, if this is a child infobox). For [[Wikipedia:Manual of Style/Accessibility#Tables|accessibility reasons]], this is the most recommended alternative.
; above : Text to put within the uppermost cell of the table.
; subheader(n) : additional title fields which fit below {{{title}}} and {{{above}}}, but before images.
Examples:
{{Infobox
| name = Infobox/doc
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| title = Text in caption over infobox
| subheader = Subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</syntaxhighlight>{{clear}}
{{Infobox
| name = Infobox/doc
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| above = Text in uppermost cell of infobox
| subheader = Subheader of the infobox
| subheader2 = Second subheader of the infobox
| header = (the rest of the infobox goes here)
}}
</syntaxhighlight>{{clear}}
=== Illustration images ===
; image(n) : images to display at the top of the template. Use full image syntax, for example <nowiki>[[File:example.png|200px|alt=Example alt text]]</nowiki>. Image is centered by default. See [[WP:ALT]] for more on alt text.
; caption(n) : Text to put underneath the images.
=== Main data ===
; header(n) : Text to use as a header in row n.
; label(n) : Text to use as a label in row n.
; data(n) : Text to display as data in row n.
Note: for any given value for (n), not all combinations of parameters are permitted. The presence of a {{para|header''(n)''}} will cause the corresponding {{para|data''(n)''}} (and {{para|rowclass''(n)''}} {{para|label''(n)''}}, see below) to be ignored; the absence of a {{para|data''(n)''}} will cause the corresponding {{para|label''(n)''}} to be ignored. Valid combinations for any single row are:
* {{para|class''(n)''}} {{para|header''(n)''}}
* {{para|rowclass''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
* {{para|rowclass''(n)''}} {{para|label''(n)''}} {{para|class''(n)''}} {{para|data''(n)''}}
See the rendering of header4, label4, and data4 in the [[#Examples|Examples]] section below.
==== Number ranges ====
To allow flexibility when the layout of an infobox is changed, it may be helpful when developing an infobox to use non-contiguous numbers for header and label/data rows. Parameters for new rows can then be inserted in future without having to renumber existing parameters. For example:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| header3 = Section 1
| label5 = Label A
| data5 = Data A
| label7 = Label C
| data7 = Data C
| header10 = Section 2
| label12 = Label D
| data12 = Data D
</syntaxhighlight>{{clear}}
It is also possible to automatically renumber parameter names by using [[User:Frietjes/infoboxgap.js]] or [[Module:IncrementParams]].
There is no upper limit on numbers but there must be at most 50 between each used number.
==== Making data fields optional ====
A row with a label but no data is not displayed. This allows for the easy creation of optional infobox content rows. To make a row optional use a parameter that defaults to an empty string, like so:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| label5 = Population
| data5 = {{{population|}}}
</syntaxhighlight>{{clear}}
This way if an article doesn't define the population parameter in its infobox the row won't be displayed.
For more complex fields with pre-formatted contents that would still be present even if the parameter wasn't set, you can wrap it all in an "#if" statement to make the whole thing vanish when the parameter is not used. For instance, the "#if" statement in the following example reads "#if:the parameter ''mass'' has been supplied |then display it, followed by 'kg'":
<syntaxhighlight lang="wikitext" style="overflow:auto">
| label6 = Mass
| data6 = {{ #if: {{{mass|}}} | {{{mass}}} kg }}
</syntaxhighlight>{{clear}}
For more on #if, see [[meta:ParserFunctions##if:|here]].
==== Hiding headers when all its data fields are empty ====
You can also make headers automatically hide when their section is empty (has no data-row showing).
Consider this situation:
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
If you want hide the header when no {{para|data''N''}} values are present, use '''{{para|autoheaders|y}}''':
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = Header5 with data below
| label6 = label6 text | data6 = Some value
}}
</syntaxhighlight>{{clear}}
So, header1 will be shown if any of item1, item2, or item3 is defined. If none of the three parameters are defined the header won't be shown and no empty row appears before the next visible content.
Note: if the data has empty css elements, like {{para|data|2=<span style="background:yellow;"></span>}}, this will be treated as non-empty (having data).
If {{para|autoheaders|y}} but there are items that you ''do not'' want to trigger a header, place {{para|headerX|_BLANK_}}. This will serve as an empty header and separate it from the subsequent items.
{{Infobox
| title = Example: blank header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Example: header with & without data
| autoheaders = y
| headerstyle = background:lightgrey
| header1 = Header1 with empty section
| label2 = label2 text | data2 =
| label3 = label3 text | data3 =
| label4 = label4 text | data4 =
| header5 = _BLANK_
| label6 = label6 text | data6 = Some value, but does not trigger header1 or show header5
}}
</syntaxhighlight>{{clear}}
=== Footer ===
; below : Text to put in the bottom cell. The bottom cell is intended for footnotes, see-also, and other such information.
== Presentation parameters ==
=== Italic titles ===
Titles of articles with infoboxes may be made italic, in line with [[WP:ITALICTITLE]], by passing the <code>italic title</code> parameter.
* Turn on italic titles by passing {{para|italic title|<nowiki>{{{italic title|}}}</nowiki>}} from the infobox.
* Turn off by default (notably because only Latin script may be safely rendered in this style and italic may be needed to distinguish foreign language from local English language only in that script, but would be difficult to read for other scripts) but allow some instances to be made italic by passing {{para|italic title|<nowiki>{{{italic title|no}}}</nowiki>}}
* Do not make any titles italic by not passing the parameter at all.
=== CSS styling ===
{{div col}}
; bodystyle : Applies to the infobox table as a whole
; titlestyle : Applies only to the title caption. Adding a background color is usually inadvisable since the text is rendered "outside" the infobox.
; abovestyle : Applies only to the "above" cell at the top. The default style has font-size:125%; since this cell is usually used for a title, if you want to use the above cell for regular-sized text include "font-size:100%;" in the abovestyle.
; imagestyle : Applies to the cell the image is in. This includes the text of the image caption, but you should set text properties with captionstyle instead of imagestyle in case the caption is moved out of this cell in the future.
; captionstyle : Applies to the text of the image caption.
; rowstyle(n) : This parameter is inserted into the <code>style</code> attribute for the specified row.
; headerstyle : Applies to all header cells
; subheaderstyle : Applies to all subheader cells
; labelstyle : Applies to all label cells
; datastyle : Applies to all data cells
; belowstyle : Applies only to the below cell
{{div col end}}
=== HTML classes and microformats ===
{{div col}}
; bodyclass : This parameter is inserted into the <code>class</code> attribute for the infobox as a whole.
; titleclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''title''' caption.
<!-- currently not implemented in Lua module
; aboverowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''above''' cell is on.
-->
; aboveclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''above''' cell.
; subheaderrowclass(n) : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''subheader''' is on.
; subheaderclass(n) : This parameter is inserted into the <code>class</code> attribute for the infobox's '''subheader'''.
; imagerowclass(n) : These parameters are inserted into the <code>class</code> attribute for the complete table row their respective '''image''' is on.
; imageclass : This parameter is inserted into the <code>class</code> attribute for the '''image'''.
; rowclass(n) : This parameter is inserted into the <code>class</code> attribute for the specified row including the '''label''' and '''data''' cells.
; class(n) : This parameter is inserted into the <code>class</code> attribute for the '''data''' cell of the specified row. If there's no '''data''' cell it has no effect.
<!-- currently not implemented in Lua module
; belowrowclass : This parameter is inserted into the <code>class</code> attribute for the complete table row the '''below''' cell is on.
-->
; belowclass : This parameter is inserted into the <code>class</code> attribute for the infobox's '''below''' cell.
{{div col end}}
This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. Multiple class names may be specified, separated by spaces, some of them being used as selectors for custom styling according to a project policy or to the skin selected in user preferences, others being used for microformats.
To flag an infobox as containing [[hCard]] information, for example, add the following parameter:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| bodyclass = vcard
</syntaxhighlight>{{clear}}
And for each row containing a data cell that's part of the vcard, add a corresponding class parameter:
<syntaxhighlight lang="wikitext" style="overflow:auto">
| class1 = fn
| class2 = org
| class3 = tel
</syntaxhighlight>{{clear}}
...and so forth. "above" and "title" can also be given classes, since these are usually used to display the name of the subject of the infobox.
See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general.
== Examples ==
Notice how the row doesn't appear in the displayed infobox when a '''label''' is defined without an accompanying '''data''' cell, and how all of them are displayed when a '''header''' is defined on the same row as a '''data''' cell. Also notice that '''subheaders''' are not bold by default like the '''headers''' used to split the main data section, because this role is meant to be for the '''above''' cell :
{{Suppress categories|
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
}}
<syntaxhighlight lang="wikitext">
{{Infobox
|name = Infobox/doc
|bodystyle =
|titlestyle =
|abovestyle = background:#cfc;
|subheaderstyle =
|title = Test Infobox
|above = Above text
|subheader = Subheader above image
|subheader2 = Second subheader
|imagestyle =
|captionstyle =
|image = [[File:Example-serious.jpg|200px|alt=Example alt text]]
|caption = Caption displayed below File:Example-serious.jpg
|headerstyle = background:#ccf;
|labelstyle = background:#ddf;
|datastyle =
|header1 = Header defined alone
| label1 =
| data1 =
|header2 =
| label2 = Label defined alone does not display (needs data, or is suppressed)
| data2 =
|header3 =
| label3 =
| data3 = Data defined alone
|header4 = All three defined (header, label, data, all with same number)
| label4 = does not display (same number as a header)
| data4 = does not display (same number as a header)
|header5 =
| label5 = Label and data defined (label)
| data5 = Label and data defined (data)
|belowstyle = background:#ddf;
|below = Below text
}}
</syntaxhighlight>
For this example, the {{para|bodystyle}} and {{para|labelstyle}} parameters are used to adjust the infobox width and define a default width for the column of labels:
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
<syntaxhighlight lang="wikitext">
{{Infobox
|name = Infobox/doc
|bodystyle = width:20em
|titlestyle =
|title = Test Infobox
|headerstyle =
|labelstyle = width:33%
|datastyle =
|header1 =
| label1 = Label 1
| data1 = Data 1
|header2 =
| label2 = Label 2
| data2 = Data 2
|header3 =
| label3 = Label 3
| data3 = Data 3
|header4 = Header 4
| label4 =
| data4 =
|header5 =
| label5 = Label 5
| data5 = Data 5: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
|belowstyle =
|below = Below text
}}
</syntaxhighlight>
== Embedding ==
<!--Linked from [[Template:Subinfobox bodystyle/doc]]-->
One infobox template can be embedded into another using the {{para|child}} parameter. This feature can be used to create a modular infobox, or to create better-defined logical sections. Long ago, it was necessary to use embedding in order to create infoboxes with more than 99 rows; but nowadays there's no limit to the number of rows that can be defined in a single instance of <code><nowiki>{{infobox}}</nowiki></code>.
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| data1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| data2 = {{Infobox | decat = yes | child = yes
|title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
Note, in the examples above, the child infobox is placed in a <code>data</code> field, not a <code>header</code> field. Notice that the section subheadings are not in bold font if bolding is not explicitly specified. To obtain bold section headings, place the child infobox in a '''header''' field (but not in a '''label''' field because it would not be displayed!), either using
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = {{Infobox | decat = yes | child = yes
| title = First subsection
| label1= Label 1.1
| data1 = Data 1.1
}}
| header2 = {{Infobox | decat = yes | child = yes
| title = Second subsection
| label1= Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
or,
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| title = Top level title
| header1 = First subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 1.1
| data1 = Data 1.1
}}
| header2 = Second subsection
{{Infobox | decat = yes | child = yes
| label1 = Label 2.1
| data1 = Data 2.1
}}
| belowstyle =
| below = Below text
}}
</syntaxhighlight>{{clear}}
Note that omitting the {{para|title}} parameter, and not including any text preceding the embedded infobox, may result in spurious blank table rows, creating gaps in the visual presentation. The garbage output can be suppressed using {{para|rowstyleN|display: none}}, replacing N with the data/header number.
[[Wikipedia:WikiProject Infoboxes/embed]] includes some links to Wikipedia articles which include infoboxes embedded within other infoboxes.
== Subboxes ==
An alternative method for embedding is to use {{para|subbox|yes}}, which removes the outer border from the infobox, but preserves the interior structure. One feature of this approach is that the parent and child boxes need not have the same structure, and the label and data fields are not aligned between the parent and child boxes because they are not in the same parent table.
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| headerstyle = background-color:#eee;
| labelstyle = background-color:#eee;
| header1 = Main 1
| header2 = Main 2
| data3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| data4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| label5 = Label 5 | data5 = Data 5
| header6 = Main 6
}}
</syntaxhighlight>{{clear}}
Similar embedding techniques may be used within content parameters of some other templates generating tables (such as [[:Template:Sidebar|Sidebar]]) :
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Sidebar
| navbar = off
| headingstyle = background-color:#eee;
| heading1 = Heading 1
| heading2 = Heading 2
| content3 = {{Infobox | subbox = yes
| headerstyle = background-color:#ccc;
| labelstyle = background-color:#ddd;
| header1 = Sub 3-1
| header2 = Sub 3-2
| label3 = Label 3-3 | data3 = Data 3-3
}}
| content4 = {{Infobox | subbox = yes
| labelstyle = background-color:#ccc;
| label1 = Label 4-1 | data1 = Data 4-1
}}
| heading5 = Heading 5
}}
</syntaxhighlight>{{clear}}
Note that the default padding of the parent data cell containing each subbox is still visible, so the subboxes are slightly narrower than the parent box and there's a higher vertical spacing between standard cells of the parent box than between cells of distinct subboxes.
== Controlling line-breaking in embedded bulletless lists ==
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in infoboxes (e.g. cast list in {{tlx|Infobox film}}), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Full blank syntax ==
(Note: there is no limit to the number of possible rows; only 20 are given below since infoboxes larger than that will be relatively rare. Just extend the numbering as needed. The microformat "class" parameters are also omitted as they are not commonly used.)
<syntaxhighlight lang="wikitext" style="overflow:auto">
{{Infobox
| name = {{subst:PAGENAME}}
| child = {{{child|}}}
| subbox = {{{subbox|}}}
| italic title = {{{italic title|no}}}
| templatestyles =
| child templatestyles =
| grandchild templatestyles =
| bodystyle =
| titlestyle =
| abovestyle =
| subheaderstyle =
| title =
| above =
| subheader =
| imagestyle =
| captionstyle =
| image =
| caption =
| image2 =
| caption2 =
| headerstyle =
| labelstyle =
| datastyle =
| header1 =
| label1 =
| data1 =
| header2 =
| label2 =
| data2 =
| header3 =
| label3 =
| data3 =
| header4 =
| label4 =
| data4 =
| header5 =
| label5 =
| data5 =
| header6 =
| label6 =
| data6 =
| header7 =
| label7 =
| data7 =
| header8 =
| label8 =
| data8 =
| header9 =
| label9 =
| data9 =
| header10 =
| label10 =
| data10 =
| header11 =
| label11 =
| data11 =
| header12 =
| label12 =
| data12 =
| header13 =
| label13 =
| data13 =
| header14 =
| label14 =
| data14 =
| header15 =
| label15 =
| data15 =
| header16 =
| label16 =
| data16 =
| header17 =
| label17 =
| data17 =
| header18 =
| label18 =
| data18 =
| header19 =
| label19 =
| data19 =
| header20 =
| label20 =
| data20 =
| belowstyle =
| below =
}}
</syntaxhighlight>{{clear}}
{{Help:Infobox/user style}}
== Porting to other MediaWikis ==
The infobox template requires the [[:mw:Extension:Scribunto|Scribunto]] and [[:mw:Extension:TemplateStyles|TemplateStyles]] extensions. [[Wikipedia:WikiProject Transwiki|WikiProject Transwiki]] has a version of this template that has been modified to work on other MediaWikis.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "This template is intended as a meta template, a template used for constructing other templates. In general, it is not meant for use directly in an article but can be used on a one-off basis if required.",
"format": "{{_\n| ________________ = _\n}}\n",
"params": {
"title": {
"label": "Title",
"description": "Title displayed above the infobox",
"type": "string",
"suggested": true
},
"image": {
"label": "Image",
"description": "Image illustrating the topic. Use full image syntax.",
"type": "content",
"suggested": true,
"example": "[[File:example.png|200px|alt=Example alt text]]"
},
"caption": {
"label": "Caption",
"description": "caption for the image",
"type": "content",
"suggested": true
}
},
"paramOrder": [
"title",
"image",
"caption"
]
}
</templatedata>
==Tracking categories==
* {{Category link with count|Articles with missing Wikidata information}}
* {{Category link with count|Articles using infobox templates with no data rows}}
* {{Category link with count|Pages using embedded infobox templates with the title parameter}}
==See also==
* [[Module:Infobox]], the [[WP:LUA|Lua]] module on which this template is based
* [[Module:Check for unknown parameters]]
* {{tl|Infobox3cols}}
* {{tl|Navbox}} and {{tl|Sidebar}}
* [[Wikipedia:List of infoboxes|List of infoboxes]]
* [[:Module:InfoboxImage]]
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Infobox templates| ]]
[[Category:Wikipedia metatemplates|Infobox]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates based on the Infobox Lua module]]
}}</includeonly>
b7ba187ea76ee960bbe295ad01c44c646eaedadb
Template:Terminate sentence
10
248
550
2023-09-30T20:50:48Z
Führerredux
2
Created page with "{{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude>"
wikitext
text/x-wiki
{{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude>
e4142b47b3d7959b82f582bab87ca10768d4d93b
Template:Terminate sentence/doc
10
249
551
2023-09-30T20:51:04Z
Führerredux
2
Created page with "{{Documentation subpage}} {{Lua|Module:Text}} This template returns its first argument, after adding a full stop (or its second argument) if the sentence was not finished. == Usage == * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|The rain in Spain}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|falls mainly on the plain.}} * {{#invoke:DemoTemplate|{{BASEPAGENAME}}|BANG|!}} <includeonly>{{sandbox other|| <!-- Categories below this line --> {{uncat}} }}</includeonly>"
wikitext
text/x-wiki
{{Documentation subpage}}
{{Lua|Module:Text}}
This template returns its first argument, after adding a full stop (or its second argument) if the sentence was not finished.
== Usage ==
* {{#invoke:DemoTemplate|{{BASEPAGENAME}}|The rain in Spain}}
* {{#invoke:DemoTemplate|{{BASEPAGENAME}}|falls mainly on the plain.}}
* {{#invoke:DemoTemplate|{{BASEPAGENAME}}|BANG|!}}
<includeonly>{{sandbox other||
<!-- Categories below this line -->
{{uncat}}
}}</includeonly>
db9d452de3f1bb665d5a8bcc447b1ab341dc711b
Template:Infobox
10
86
552
216
2023-09-30T20:52:30Z
Führerredux
2
wikitext
text/x-wiki
{{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go in the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
817a9f5b6524eced06a57bd1d5fd7179f9369bf2
Template:Hidden begin
10
250
553
2023-09-30T20:55:41Z
Führerredux
2
Created page with "<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!-- --><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}}..."
wikitext
text/x-wiki
<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!--
--><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!--
--><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!--
Content added after the template
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
be0f4e092203b931810fbff9ed6a1b7af51c025f
Template:Hidden begin/doc
10
251
554
2023-09-30T20:56:10Z
Führerredux
2
Created page with "{{Documentation subpage}} {{Uses TemplateStyles|Template:Hidden begin/styles.css}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{hatnote|This documentation is shared by {{tl|Hidden begin}} and {{tl|Hidden end}}.}} {{Collapse Templates}} {{High-use}} Do not use this template to hide content in articles. This violates the WP:Manual of Style#Scrolling lists and collapsible content|WP:Manual..."
wikitext
text/x-wiki
{{Documentation subpage}}
{{Uses TemplateStyles|Template:Hidden begin/styles.css}}
<!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{hatnote|This documentation is shared by {{tl|Hidden begin}} and {{tl|Hidden end}}.}}
{{Collapse Templates}}
{{High-use}}
Do not use this template to hide content in articles. This violates the [[WP:Manual of Style#Scrolling lists and collapsible content|WP:Manual of Style § Scrolling lists and collapsible content]] and [[WP:Accessibility]] guidelines. This template is intended for use in pages in [[Wikipedia:Namespaces|namespaces]] other than the article namespace.
'''Note''': This template does not hide anything for mobile users ([[phab:T111565]]).
==Syntax==
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin
| showhide = <!--"left", otherwise omit-->
| expanded = <!--"true", "on", yes", etc, otherwise omit-->
| class =
| width =
| border =
| bgcolor = <!--background color for both the title and content-->
| style =
| ta1 =
| titlebgcolor = <!--background color for the title-->
| titlestyle =
| title =
| ta2 =
| contentbgcolor = <!--background color for the content-->
| contentstyle =
}}
<!----[content to be hidden placed here]---->
{{Hidden end}}
</syntaxhighlight>
===Template data===
{{TemplateData header}}
<templatedata>
{
"params": {
"showhide": {
"aliases": [
"toggle"
],
"label": "Show / Hide",
"description": "Set to \"left\" (without speechmarks) to switch the [show/hide] link's position from the righthand end of the titlebar (default) to the left.",
"type": "string",
"suggestedvalues": [
"left"
]
},
"expanded": {
"label": "Expanded",
"description": "Set to any value (\"true\", \"yes\", etc.) to switch the hidden section's initial state from collapsed (hidden) to expanded (visible).",
"type": "string",
"suggestedvalues": [
"yes",
"true"
]
},
"class": {
"label": "Class",
"description": "Add additional class attributes affecting the entire template.",
"type": "string"
},
"width": {
"label": "Width",
"description": "Specify a width for the template.",
"example": "width=20%",
"type": "string",
"default": "100%"
},
"border": {
"label": "Border",
"description": "Add a border to the template",
"example": "1px solid black",
"type": "string"
},
"bgcolor": {
"label": "Background color",
"description": "Specify the background color for the template.",
"example": "#CCF",
"type": "string"
},
"style": {
"label": "Style",
"description": "Add additional style attributes affecting the entire template.",
"example": "font-size:110%;",
"type": "string"
},
"ta1": {
"label": "Title text align",
"description": "Specify the text-align property for the title.",
"example": "center",
"type": "string",
"suggestedvalues": [
"center",
"right",
"left"
],
"default": "left"
},
"titlebgcolor": {
"label": "Title background color",
"description": "Specify the background color for the title.",
"example": "#CCF",
"type": "string"
},
"titlestyle": {
"label": "Title style",
"description": "Add additional style attributes affecting the title.",
"example": "font-size:110%;",
"type": "string"
},
"title": {
"aliases": [
"header"
],
"label": "Title",
"description": "Text shown in titlebar.",
"type": "string"
},
"ta2": {
"label": "Content text align",
"description": "Specify the text-align property for the content.",
"example": "center",
"type": "string",
"suggestedvalues": [
"center",
"right",
"left"
],
"default": "left"
},
"contentbgcolor": {
"label": "Content background color",
"description": "Specify the background color for the content .",
"example": "#CCF",
"type": "string"
},
"contentstyle": {
"aliases": [
"bodystyle"
],
"label": "Content style",
"description": "Add additional style attributes affecting the content.",
"example": "font-size:110%;",
"type": "string"
}
},
"description": "This template creates a dynamic navigation box which is initially collapsed by default.",
"format": "inline"
}
</templatedata>
==Examples==
The following are examples with commonly used parameters
===Example 1===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title}}
* Example text 1
* Example text 2
{{Hidden end}}
===Example 2===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title|width=50%|border=1px solid black}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title|width=50%|border=1px solid black}}
* Example text 1
* Example text 2
{{Hidden end}}
===Example 3===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title|bgcolor=pink|titlebgcolor=#CCF|contentbgcolor=skyblue}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title|bgcolor=pink|titlebgcolor=#CCF|contentbgcolor=skyblue}}
* Example text 1
* Example text 2
{{Hidden end}}
===Example 4===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title|titlebgcolor=pink|ta1=center|ta2=right}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title|titlebgcolor=pink|ta1=center|ta2=right}}
* Example text 1
* Example text 2
{{Hidden end}}
===Example 5===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title|titlebgcolor=#98FB98|showhide=left}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title|titlebgcolor=#98FB98|showhide=left}}
* Example text 1
* Example text 2
{{Hidden end}}
===Example 6===
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Hidden begin|title=Example title|titlebgcolor=#FFEBCD|expanded=yes}}
* Example text 1
* Example text 2
{{Hidden end}}
</syntaxhighlight>
{{Hidden begin|title=Example title|titlebgcolor=#FFEBCD|expanded=yes}}
* Example text 1
* Example text 2
{{Hidden end}}
==See also==
* {{tl|Hidden}}
<includeonly>{{basepage subpage
| <!-- ADD CATEGORIES BELOW THIS LINE -->
[[Category:Collapse templates]]
}}</includeonly>
14b2eb2c9e24c4cbb04065cdcd586b5481831469
Template:Collapse Templates
10
252
555
2023-09-30T20:56:41Z
Führerredux
2
Created page with "{{Helpbox |templatename = Collapsible templates |name = Collapsible templates |bodyclass = vcard |list1 = {{aligned table|fullwidth=y|rightleft=y|col1style=font-weight:bold; |Help: |[[Help:Collapsing|Collapsing]] |Guideline:|[[MOS:COLLAPSE|Hidden content]] }} |group2 = [[WP:Mainspace|Article namespace]] |list2 = {{plainlist|1= * {{tl|collapse}} * {{tl|collapsible list}} * {{hlist|{{tl|collapse top}}|{{tl|collapse bottom}}}} * {{tl|hidden}} * {{hlist|{..."
wikitext
text/x-wiki
{{Helpbox
|templatename = Collapsible templates
|name = Collapsible templates
|bodyclass = vcard
|list1 = {{aligned table|fullwidth=y|rightleft=y|col1style=font-weight:bold;
|Help: |[[Help:Collapsing|Collapsing]]
|Guideline:|[[MOS:COLLAPSE|Hidden content]]
}}
|group2 = [[WP:Mainspace|Article namespace]]
|list2 = {{plainlist|1=
* {{tl|collapse}}
* {{tl|collapsible list}}
* {{hlist|{{tl|collapse top}}|{{tl|collapse bottom}}}}
* {{tl|hidden}}
* {{hlist|{{tl|hidden begin}}|{{tl|hidden end}}}}
}}
|group3 = [[Wikipedia:Infobox|Infoboxes]]
|list3 = {{plainlist|1=
* {{tl|collapsed infobox section begin}}
* {{tl|collapsed infobox section end}}
}}
|group4 = [[Wikipedia:Navigation template|Navigation templates]]
|list4 = {{plainlist|1=
* {{tl|sidebar with collapsible lists}}
* {{tl|navbox with collapsible groups}}
}}
|group5 = [[Help:Talk pages|Talk namespace]]
|list5 = {{plainlist|1=
* {{tl|hidden archive top}}
* {{tl|hidden archive bottom}}
}}
}}<noinclude>
[[Category:Collapse templates]]
</noinclude>
4b5763564eca710f1e59e1455fc4c236793d1808
Template:Hidden begin/styles.css
10
253
556
2023-09-30T20:57:44Z
Führerredux
2
Created page with "/* {{pp-template}} */ .hidden-begin { box-sizing: border-box; width: 100%; padding: 5px; border: none; font-size: 95%; } .hidden-title { font-weight: bold; line-height: 1.6; text-align: left; } .hidden-content { text-align: left; }"
sanitized-css
text/css
/* {{pp-template}} */
.hidden-begin {
box-sizing: border-box;
width: 100%;
padding: 5px;
border: none;
font-size: 95%;
}
.hidden-title {
font-weight: bold;
line-height: 1.6;
text-align: left;
}
.hidden-content {
text-align: left;
}
d4ab5680ca52bee10cfd2992f2adc45452c5ab37
Template:Lua/doc
10
254
557
2023-09-30T21:00:52Z
Führerredux
2
Created page with "{{Documentation subpage}} {{Template shortcut|Lua talk}} {{Lua|Module:Lua banner}} <!-- Categories go at the bottom of this page, and interwikis go on Wikidata. --> {{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}} This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a..."
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|Lua talk}}
{{Lua|Module:Lua banner}}
<!-- Categories go at the bottom of this page, and interwikis go on Wikidata. -->
{{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}}
This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories.
== Usage ==
; Basic : {{tlx|Lua|''module name''}}
; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}}
The first module name is required.
== Examples ==
* {{tlx|Lua|Module:Example}}
{{Lua|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua|Module:Example|Module:Example}}
{{Lua|Module:Example|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua}}
{{Lua|nocat=true}}
{{clear}}
== Categorisation ==
===Template category===
This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}.
Some modules have a default category other than [[:Category:Lua-based templates]]:
* [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]].
* [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]].
* [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]].
* [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]].
===Error category===
If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]].
===Category suppression===
To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.)
== TemplateData ==
{{Format TemplateData|TNT=Lua banner}}
== See also ==
* [[Wikipedia:Lua]]
* {{tl|module rating}}
* {{tl|Uses TemplateStyles}}
<includeonly>{{Sandbox other|
| <!-- Categories go here, and interwikis go on Wikidata. -->
[[Category:Lua-based templates| ]]
[[Category:Template namespace templates]]
}}</includeonly>
a0a237a34ba98213650e4c11064bd4c8f944fcc6
564
557
2023-09-30T21:14:08Z
Führerredux
2
1 revision imported from [[:meta:Template:Lua/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|Lua talk}}
{{Lua|Module:Lua banner}}
<!-- Categories go at the bottom of this page, and interwikis go on Wikidata. -->
{{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}}
This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories.
== Usage ==
; Basic : {{tlx|Lua|''module name''}}
; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}}
The first module name is required.
== Examples ==
* {{tlx|Lua|Module:Example}}
{{Lua|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua|Module:Example|Module:Example}}
{{Lua|Module:Example|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua}}
{{Lua|nocat=true}}
{{clear}}
== Categorisation ==
===Template category===
This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}.
Some modules have a default category other than [[:Category:Lua-based templates]]:
* [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]].
* [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]].
* [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]].
* [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]].
===Error category===
If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]].
===Category suppression===
To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.)
== TemplateData ==
{{Format TemplateData|TNT=Lua banner}}
== See also ==
* [[Wikipedia:Lua]]
* {{tl|module rating}}
* {{tl|Uses TemplateStyles}}
<includeonly>{{Sandbox other|
| <!-- Categories go here, and interwikis go on Wikidata. -->
[[Category:Lua-based templates| ]]
[[Category:Template namespace templates]]
}}</includeonly>
a0a237a34ba98213650e4c11064bd4c8f944fcc6
Template:Template shortcut
10
255
558
2023-09-30T21:01:31Z
Führerredux
2
Created page with "<includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>
bfb2889c4c0ec36294b7b667f5e03350d2df680e
Template:Template shortcut/doc
10
256
559
2023-09-30T21:01:47Z
Führerredux
2
Created page with "{{Documentation subpage}} {{tlr|clear=right|Template shortcuts|Templateshortcut}}{{tsh|tsh}} {{High-use}} {{lua|Module:Shortcut}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> This template displays one or more of a template's shortcuts (that is, redirects, also known as aliases, as in the box appearing at the right. {{tl|Tsh}} is a shortcut to this template, {{tlf|template shortcut}}, and can be used in its place, as it is in this documentatio..."
wikitext
text/x-wiki
{{Documentation subpage}}
{{tlr|clear=right|Template shortcuts|Templateshortcut}}{{tsh|tsh}}
{{High-use}}
{{lua|Module:Shortcut}}
<!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE -->
This template displays one or more of a template's shortcuts (that is, redirects, also known as aliases, as in the box appearing at the right. {{tl|Tsh}} is a shortcut to this template, {{tlf|template shortcut}}, and can be used in its place, as it is in this documentation's [[Wikipedia:View source|source]] [[wikitext]].
== Usage ==
Place this template and its list of few to one, carefully selected shortcut(s) at the top of the template documentation page's [[Wikipedia:Wikitext|wikitext]], right underneath {{tl|Documentation subpage}}. In the saved, rendered text, those shortcuts will appear in this template's Shortcut(s) box, whose title will reflect the number of list items by automatically being singular or plural in form.
=== Which ones to display here ===
Although the template can show up to ten shortcuts, you are ''encouraged to choose well'' which ones to display in this template's box. Even if many redirects exist, ''two or three at the most'' is almost always enough. By keeping the number of redirects presented in the Shortcut box small, it makes it easier to remember them, and the documentation is kept well organized.
=== Where to list any others ===
List others in the Redirects section of the [[Wikipedia:Template documentation|template documentation]]. Again, not all of them need to be listed; some shortcuts are there just for historical reasons, and others differ only in minor points such as white spaces or capitalization. Such shortcut-name variations are unnecessary to list at all—just list the standard, most common version of such a variation.
=== Optional parameters ===
This template has several optional parameters:
* '''float''' – if set to "left", then the box will float to the left of the page, instead of the default float "right".
* '''clear''' – if set to "right" (when float also is set to "right"), the box will be pushed to the right margin of the page, and {{clarify|text=prevent it from nest to the left of other right-floating elements.}} Similarly, if set to "left" (when float also is set to "left"), the box will be pushed to the left margin of the page.
* '''pre''' – can be used to show some text before the shortcut links, but within the braces. This is mostly used to add the text "subst:". This shows the proper syntax for using the template with [[Wikipedia:Substitution|substitution]].
* '''pre1, pre2 ...''' – like above, but adds the prefix only to the nth shortcut.
== Examples of basic code ==
To display one template shortcut named {{tl|uw-v1}}:
{{tlc|template shortcut|uw-v1}}
{{template shortcut|uw-v1}}
{{clear}}
To display three template shortcuts for {{tl|uw-vandalism1}} named {{tl|uw-v1}}, {{tl|uw-vand1}}, and {{tl|uw-vandal1}}:
{{tlc|template shortcut|uw-v1|uw-vand1|uw-vandal1}}
{{template shortcut|uw-v1|uw-vand1|uw-vandal1}}
{{clear}}
== Example with the float parameter ==
Using {{para|float|<var>left</var>}} makes this template flow to the left of the page:
<code><nowiki>{{template shortcut|float=left|uw-v1}}</nowiki></code>
{{template shortcut|float=left|uw-v1}}
{{clear}}
== Example with text ("subst:") within the braces ==
This is mostly used to add text to show how the template could be used with [[Wikipedia:Substitution|substitution]].
Use {{para|pre2|<var>subst:</var>}} and {{para|pre3|<var>subst:</var>}} to show "subst:" before the shortcut links, but within the braces:
<code><nowiki>{{template shortcut|uw-v1|pre2=subst:|uw-vand1|pre3=subst:|uw-vandal1}}</nowiki></code>
{{template shortcut|uw-v1|pre2=subst:|uw-vand1|pre3=subst:|uw-vandal1}}
{{clear}}
If you use {{para|pre|<var>subst:</var>}}, it applies to all of the shortcuts:
<code><nowiki>{{template shortcut|pre=subst:|uw-v1|uw-vand1|uw-vandal1}}</nowiki></code>
{{template shortcut|pre=subst:|uw-v1|uw-vand1|uw-vandal1}}
{{clear}}
== TemplateData ==
{{Format TemplateData|<templatedata>
{
"description": "This template displays one or more of a template's shortcuts.",
"format": "inline",
"params": {
"redirect": {
"label": "Redirect?",
"description": "Whether to refer to the \"shortcut/s\" as \"redirect/s\" instead.",
"default": "0",
"type": "boolean"
},
"target": {
"label": "Target?",
"description": "Whether to not add the <code>redirect=no</code> URL parameter.",
"default": "0",
"type": "boolean"
},
"float": {
"label": "Float",
"description": "The CSS <code>float</code> property value.",
"default": "right",
"suggestedvalues": [
"left",
"right"
],
"type": "string"
},
"clear": {
"label": "Clear",
"description": "The CSS <code>clear</code> property value.",
"suggestedvalues": [
"left",
"right",
"both"
],
"type": "string"
},
"category": {
"label": "Categorize",
"description": "Whether to add pages to the error category if no alias or <code>msg</code> is specified.",
"default": "1",
"type": "boolean"
},
"msg": {
"label": "Message",
"description": "An unlinked message that goes after the shortcut links.",
"type": "content"
},
"pre": {
"label": "Default prefix",
"description": "The default prefix",
"example": "subst:",
"type": "string"
},
"pre1": {
"label": "Prefix 1",
"description": "Prefix for template shortcut 1",
"example": "subst:",
"type": "string"
},
"1": {
"label": "Shortcut 1",
"description": "Template shortcut 1",
"required": true,
"type": "wiki-template-name"
},
"pre2": {
"label": "Prefix 2",
"description": "Prefix for template shortcut 2",
"example": "subst:",
"type": "string"
},
"2": {
"label": "Shortcut 2",
"description": "Template shortcut 2",
"type": "wiki-template-name"
},
"pre3": {
"label": "Prefix 3",
"description": "Prefix for template shortcut 3",
"example": "subst:",
"type": "string"
},
"3": {
"label": "Shortcut 3",
"description": "Template shortcut 3",
"type": "wiki-template-name"
},
"pre4": {
"label": "Prefix 4",
"description": "Prefix for template shortcut 4",
"example": "subst:",
"type": "string"
},
"4": {
"label": "Shortcut 4",
"description": "Template shortcut 4",
"type": "wiki-template-name"
},
"pre5": {
"label": "Prefix 5",
"description": "Prefix for template shortcut 5",
"example": "subst:",
"type": "string"
},
"5": {
"label": "Shortcut 5",
"description": "Template shortcut 5",
"type": "wiki-template-name"
},
"pre6": {
"label": "Prefix 6",
"description": "Prefix for template shortcut 6",
"example": "subst:",
"type": "string"
},
"6": {
"label": "Shortcut 6",
"description": "Template shortcut 6",
"type": "wiki-template-name"
},
"pre7": {
"label": "Prefix 7",
"description": "Prefix for template shortcut 7",
"example": "subst:",
"type": "string"
},
"7": {
"label": "Shortcut 7",
"description": "Template shortcut 7",
"type": "wiki-template-name"
},
"pre8": {
"label": "Prefix 8",
"description": "Prefix for template shortcut 8",
"example": "subst:",
"type": "string"
},
"8": {
"label": "Shortcut 8",
"description": "Template shortcut 8",
"type": "wiki-template-name"
},
"pre9": {
"label": "Prefix 9",
"description": "Prefix for template shortcut 9",
"example": "subst:",
"type": "string"
},
"9": {
"label": "Shortcut 9",
"description": "Template shortcut 9",
"type": "wiki-template-name"
}
}
}
</templatedata>}}
== See also ==
* {{tl|shortcut}}, the standard shortcut notice.
* {{tl|policy shortcut}}, for shortcuts to sections of policy pages.
* {{tl|R to redirect template}}, the [[WP:RCAT|rcat]] template for redirects to rcat templates
* {{tl|template redirect}}, automatically sets <code>redirect=yes</code>
<includeonly>{{Sandbox other||
<!----CATEGORIES BELOW THIS LINE, PLEASE:---->
[[Category:Shortcut templates]]
[[Category:Template documentation]]<!--Yes, this is intended for the template page – this template is used IN template docs.-->
}}</includeonly>
938a31a476c2941ffc6d6bc17533443d6d14c7a1
Module:Example
828
257
560
2023-09-30T21:02:53Z
Führerredux
2
Created page with "local p = {}; --All Lua modules on Wikipedia must begin by defining a variable --that will hold their externally accessible functions. --Such variables can have whatever name you want and may --also contain various data as well as functions. p.hello = function( frame ) --Add a function to "p". --Such functions are callable in Wikipedia..."
Scribunto
text/plain
local p = {}; --All Lua modules on Wikipedia must begin by defining a variable
--that will hold their externally accessible functions.
--Such variables can have whatever name you want and may
--also contain various data as well as functions.
p.hello = function( frame ) --Add a function to "p".
--Such functions are callable in Wikipedia
--via the #invoke command.
--"frame" will contain the data that Wikipedia
--sends this function when it runs.
-- 'Hello' is a name of your choice. The same name needs to be referred to when the module is used.
local str = "Hello World!" --Declare a local variable and set it equal to
--"Hello World!".
return str --This tells us to quit this function and send the information in
--"str" back to Wikipedia.
end -- end of the function "hello"
function p.hello_to(frame) -- Add another function
local name = frame.args[1] -- To access arguments passed to a module, use `frame.args`
-- `frame.args[1]` refers to the first unnamed parameter
-- given to the module
return "Hello, " .. name .. "!" -- `..` concatenates strings. This will return a customized
-- greeting depending on the name given, such as "Hello, Fred!"
end
function p.count_fruit(frame)
local num_bananas = tonumber(frame.args.bananas) or 0 -- Named arguments ({{#invoke:Example|count_fruit|foo=bar}})
local num_apples = tonumber(frame.args.apples) or 0 -- are likewise accessed by indexing `frame.args` by name (`frame.args["bananas"]`,
-- or equivalently `frame.args.bananas`.
local conj_bananas = num_bananas == 1 and 'banana' or 'bananas'
local conj_apples = num_apples == 1 and 'apple' or 'apples'
-- Ternary operators assign values based on a condition in a compact way.
-- Here, `conj_bananas` gets `'banana'` if `num_bananas` is 1, else `'bananas'`.
-- Similarly, `conj_apples` gets `'apple'` if `num_apples` is 1, else `'apples'`.
return 'I have ' .. num_bananas .. ' ' .. conj_bananas .. ' and ' .. num_apples .. ' ' .. conj_apples
-- Like above, concatenate a bunch of strings together to produce
-- a sentence based on the arguments given.
end
local function lucky(a, b) -- One can define custom functions for use. Here we define a function 'lucky' that has two inputs a and b. The names are of your choice.
if b == 'yeah' then -- Condition: if b is the string 'yeah'. Strings require quotes. Remember to include 'then'.
return a .. ' is my lucky number.' -- Outputs 'a is my lucky number.' if the above condition is met. The string concatenation operator is denoted by 2 dots.
else -- If no conditions are met, i.e. if b is anything else, output specified on the next line. 'else' should not have 'then'.
return a -- Simply output a.
end -- The 'if' section should end with 'end'.
end -- As should 'function'.
function p.Name2(frame)
-- The next five lines are mostly for convenience only and can be used as is for your module. The output conditions start on line 50.
local pf = frame:getParent().args -- This line allows template parameters to be used in this code easily. The equal sign is used to define variables. 'pf' can be replaced with a word of your choice.
local f = frame.args -- This line allows parameters from {{#invoke:}} to be used easily. 'f' can be replaced with a word of your choice.
local M = f[1] or pf[1] -- f[1] and pf[1], which we just defined, refer to the first parameter. This line shortens them as 'M' for convenience. You could use the original variable names.
local m = f[2] or pf[2] -- Second shortened as 'm'.
local l = f.lucky or pf.lucky -- A named parameter 'lucky' is shortend as l. Note that the syntax is different from unnamed parameters.
if m == nil then -- If the second parameter is not used.
return 'Lonely' -- Outputs the string 'Lonely' if the first condition is met.
elseif M > m then -- If the first condition is not met, this line tests a second condition: if M is greater than m.
return lucky(M - m, l) -- If the condition is met, the difference is calculated and passed to the self defined function along with l. The output depends on whether l is set to 'yeah'.
else
return 'Be positive!'
end
end
return p --All modules end by returning the variable containing their functions to Wikipedia.
-- Now we can use this module by calling {{#invoke: Example | hello }},
-- {{#invoke: Example | hello_to | foo }}, or {{#invoke:Example|count_fruit|bananas=5|apples=6}}
-- Note that the first part of the invoke is the name of the Module's wikipage,
-- and the second part is the name of one of the functions attached to the
-- variable that you returned.
-- The "print" function is not allowed in Wikipedia. All output is accomplished
-- via strings "returned" to Wikipedia.
a2009327c9930f7f552da030a5a56abe89631308
Module:Lua banner
828
63
561
190
2023-09-30T21:07:19Z
Führerredux
2
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local titleObj = mw.title.getCurrentTitle()
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
e3c39e2809f7555a22433e225094746a93924946
562
561
2023-09-30T21:08:06Z
Führerredux
2
Scribunto
text/plain
-- This module implements the {{lua}} template.
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local p = {}
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
function p._main(args)
local modules = mTableTools.compressSparseArray(args)
local box = p.renderBox(modules)
local trackingCategories = p.renderTrackingCategories(args, modules)
return box .. trackingCategories
end
function p.renderBox(modules)
local boxArgs = {}
if #modules < 1 then
boxArgs.text = '<strong class="error">Error: no modules specified</strong>'
else
local moduleLinks = {}
for i, module in ipairs(modules) do
moduleLinks[i] = string.format('[[:%s]]', module)
local maybeSandbox = mw.title.new(module .. '/sandbox')
if maybeSandbox.exists then
moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText)
end
end
local moduleList = mList.makeList('bulleted', moduleLinks)
local title = mw.title.getCurrentTitle()
if title.subpageText == "doc" then
title = title.basePageTitle
end
if title.contentModel == "Scribunto" then
boxArgs.text = 'This module depends on the following other modules:' .. moduleList
else
boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList
end
end
boxArgs.type = 'notice'
boxArgs.small = true
boxArgs.image = '[[File:Lua-Logo.svg|30px|alt=|link=]]'
return mMessageBox.main('mbox', boxArgs)
end
function p.renderTrackingCategories(args, modules, titleObj)
if yesno(args.nocat) then
return ''
end
local cats = {}
-- Error category
if #modules < 1 then
cats[#cats + 1] = 'Lua templates with errors'
end
-- Lua templates category
titleObj = titleObj or mw.title.getCurrentTitle()
local subpageBlacklist = {
doc = true,
sandbox = true,
sandbox2 = true,
testcases = true
}
if not subpageBlacklist[titleObj.subpageText] then
local protCatName
if titleObj.namespace == 10 then
local category = args.category
if not category then
local categories = {
['Module:String'] = 'Templates based on the String Lua module',
['Module:Math'] = 'Templates based on the Math Lua module',
['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module',
['Module:Citation/CS1'] = 'Templates based on the Citation/CS1 Lua module'
}
category = modules[1] and categories[modules[1]]
category = category or 'Lua-based templates'
end
cats[#cats + 1] = category
protCatName = "Templates using under-protected Lua modules"
elseif titleObj.namespace == 828 then
protCatName = "Modules depending on under-protected modules"
end
if not args.noprotcat and protCatName then
local protLevels = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
local currentProt
if titleObj.id ~= 0 then
-- id is 0 (page does not exist) if am previewing before creating a template.
currentProt = titleObj.protectionLevels["edit"][1]
end
if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end
for i, module in ipairs(modules) do
if module ~= "WP:libraryUtil" then
local moduleProt = mw.title.new(module).protectionLevels["edit"][1]
if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end
if moduleProt < currentProt then
cats[#cats + 1] = protCatName
break
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
return p
03ec1b34a40121efc562c0c64a67ebbf57d56dff
Greece
0
243
923
542
2023-09-30T21:31:12Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| image_coat = Coat of arms of Greece (1924–1935).svg
| national_motto = Ἐλευθερία ἢ Θάνατος
| motto =
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| demonym = Hellenes
| government_type = [[Presidential Republic]]
| currency = Drachmae
}}
30d6d6dd0d267dd01f45abd470c5ac2d0ce8c89e
931
923
2023-09-30T21:40:34Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| coordinates = {{Coord|37|58|N|23|43|E|type:city}}
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| leader_name3 = [[Aléxandros Zaímis]]
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| image_coat = Coat of arms of Greece (1924–1935).svg
| national_motto = Ἐλευθερία ἢ Θάνατος
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| demonym = {{hlist|[[Greeks|Greek]]|Hellene}}
| government_type = [[Presidential Republic]]
| leader_title1 = [[President of Greece|President]]
| leader_name1 = <span style=white-space:nowrap;>[[Katerina Sakellaropoulou]]</span>
| leader_title2 = [[Prime Minister of Greece|Prime Minister]]
| leader_title3 = [[Speaker of the Hellenic Parliament|Parliament Speaker]]
| legislature = [[Hellenic Parliament]]
| sovereignty_type = [[History of Greece|Establishment history]]
| established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST -->
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]])
| established_event2 = [[London Protocol (1830)|Recognised]]
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = [[Third Hellenic Republic]]
| established_date3 = 24 July 1974
| established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}}
| established_date4 = 11 June 1975
| currency = Drachmae
}}
fa808759142abea259bc0322b72dcac8d2158f6c
941
931
2023-09-30T21:59:59Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| image_coat = Coat of arms of Greece (1924–1935).svg
| coa_size = 90
| common_name = Greece
| national_motto = {{lang|el|Ελευθερία ή Θάνατος}}<br />{{transliteration|el|Elefthería í Thánatos}}<br />(English: "[[Eleftheria i thanatos|Freedom or Death]]")
| national_anthem = {{lang|el|Ύμνος εις την Ελευθερίαν}}<br />{{transliteration|el|Ímnos is tin Eleftherían}}<br />(English: "[[Hymn to Liberty]]")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Greece national anthem.ogg]]}}</div>
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| capital = [[Athens]]
| largest_city = capital
| languages = [[Greek language|Greek]]
| demonym = {{hlist|[[Greeks|Greek]]|Hellene}}
| government_type = [[Presidential Republic]]
| leader_title1 = [[President of Greece|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = [[Prime Minister of Greece|Prime Minister]]
| legislature = [[Hellenic Parliament]]
| currency = Drachmae
| sovereignty_type = [[History of Greece|Establishment history]]
| established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST -->
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]])
| established_event2 = [[London Protocol (1830)|Recognised]]
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}}
| established_date4 = 3 June 1927
}}
553feb8e4399e1068fda29e3ae974fc6db832789
944
941
2023-09-30T22:15:45Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| native_name = Η Ελληνική Δημοκρατία
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| image_coat = Coat of arms of Greece (1924–1935).svg
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = President of the Hellenic Republic
| conventional_long_name = The Hellenic Republic
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = Ύμνος εις την Ελευθερίαν<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Greece national anthem.ogg]]}}</div>
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| capital = [[Athens]]
| largest_city = capital
| languages = [[Greek language|Greek]]
| religion = Eastern Orthodox
| demonym = {{hlist|[[Greeks|Greek]]|Hellene}}
| government_type = [[Presidential Republic]]
| leader_title1 = [[President of Greece|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = [[Prime Minister of Greece|Prime Minister]]
| legislature = [[Hellenic Parliament]]
| currency = Drachmae
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = [[History of Greece|Establishment history]]
| established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST -->
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]])
| established_event2 = [[London Protocol (1830)|Recognised]]
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
871800b576b77c50fcf7084bafa7690a12d3b7f9
Template:If empty
10
425
925
924
2023-09-30T21:31:58Z
Führerredux
2
1 revision imported from [[:meta:Template:If_empty]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}
0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8
Module:If empty
828
426
927
926
2023-09-30T21:31:59Z
Führerredux
2
1 revision imported from [[:meta:Module:If_empty]]
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
-- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank,
-- even though there's really no legitimate use case for this. At some point, this will be removed.
local lowestNil = math.huge
for i = 8,1,-1 do
if args[i] == nil then
args[i] = ''
lowestNil = i
end
end
for k,v in ipairs(args) do
if v ~= '' then
if lowestNil < k then
-- If any uses of this template depend on the behavior above, add them to a tracking category.
-- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified
-- by it.
frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'})
frame:extensionTag('references', '', {group = 'TrackingCategory'})
end
return v
end
end
end
return p
39b83f8d043283ec767774d927e2f6f3fb3078b4
Template:Infobox country/imagetable
10
427
928
2023-09-30T21:33:22Z
Führerredux
2
Redirected page to [[Template:Infobox country]]
wikitext
text/x-wiki
#REDIRECT [[Template:Infobox_country]]
2cfc6112b68bfa9551e4bc68ea1f415e86c28e96
929
928
2023-09-30T21:34:03Z
Führerredux
2
Blanked the page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
930
929
2023-09-30T21:35:31Z
Führerredux
2
wikitext
text/x-wiki
{{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}|
<div class="noresize" style="display:table; width:100%;">
<div style="display:table-cell; vertical-align:middle; padding-left:5px;">
{{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}}
<div>{{{caption1|}}}</div>
</div>
<div style="display:table-cell; vertical-align:middle; padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2|}}}</div>
</div>
</div>
<!--else:-->|
{{#if:{{{image1a|}}}{{{image1b|}}}|
<div class="noresize" style="display:table; width:100%;">
{{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}}
</div>
<div>{{{caption1}}}</div>
}}
{{#if:{{{image2|}}}|
<div style="padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2}}}</div>
</div>
}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly.
}}</noinclude>
4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b
Template:Infobox country/multirow
10
428
932
2023-09-30T21:40:56Z
Führerredux
2
Created page with "{{infobox | child = yes | decat=yes | rowclass25 = mergedrow | label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{1|}}}</div> | data25 = {{{2|}}} | rowclass26 = mergedrow | label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{3|}}}</div> | data26 = {{{4|}}} | rowclass27 = mergedrow | label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{5|}}}</div> | data..."
wikitext
text/x-wiki
{{infobox | child = yes | decat=yes
| rowclass25 = mergedrow
| label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{1|}}}</div>
| data25 = {{{2|}}}
| rowclass26 = mergedrow
| label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{3|}}}</div>
| data26 = {{{4|}}}
| rowclass27 = mergedrow
| label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{5|}}}</div>
| data27 = {{{6|}}}
| rowclass28 = mergedrow
| label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{7|}}}</div>
| data28 = {{{8|}}}
| rowclass29 = mergedrow
| label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{9|}}}</div>
| data29 = {{{10|}}}
| rowclass30 = mergedrow
| label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{11|}}}</div>
| data30 = {{{12|}}}
| rowclass31 = mergedrow
| label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{13|}}}</div>
| data31 = {{{14|}}}
| rowclass32 = mergedrow
| label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{15|}}}</div>
| data32 = {{{16|}}}
| rowclass33 = mergedrow
| label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{17|}}}</div>
| data33 = {{{18|}}}
| rowclass34 = mergedrow
| label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{19|}}}</div>
| data34 = {{{20|}}}
| rowclass35 = mergedrow
| label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{21|}}}</div>
| data35 = {{{22|}}}
| rowclass36 = mergedrow
| label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{23|}}}</div>
| data36 = {{{24|}}}
| rowclass37 = mergedrow
| label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{25|}}}</div>
| data37 = {{{26|}}}
| rowclass38 = mergedrow
| label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{27|}}}</div>
| data38 = {{{28|}}}
| rowclass39 = mergedrow
| label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{29|}}}</div>
| data39 = {{{30|}}}
| rowclass40 = mergedrow
| label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{31|}}}</div>
| data40 = {{{32|}}}
| rowclass41 = mergedrow
| label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{33|}}}</div>
| data41 = {{{34|}}}
| rowclass42 = mergedrow
| label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{35|}}}</div>
| data42 = {{{36|}}}
| rowclass43 = mergedrow
| label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{37|}}}</div>
| data43 = {{{38|}}}
| rowclass44 = mergedrow
| label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{39|}}}</div>
| data44 = {{{40|}}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows.
}}</noinclude>
52b488ce963e6b79723ab148c9a82507ed2b4078
Template:Hlist
10
429
933
2023-09-30T21:41:55Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
935
933
2023-09-30T21:42:24Z
Führerredux
2
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
9e3824c2e3c0e0dbef2f37556ac0b994987fecf9
Template:Hlist/doc
10
430
934
2023-09-30T21:42:06Z
Führerredux
2
Created page with "{{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> {{used in system|in [[MediaWiki:Citethispage-content]]}} {{Lua|Module:List}} {{Uses TemplateStyles|Template:Hlist/styles.css}} {{tlr|clear=right|Horizontal list|dotlist|hlist1}} This template creates [[WP:HLIST|horizontal lists]]. Each item in the list may be individually styled with [[CSS]]. __TOC__ {{-}} == Usage == '''Basic usage''' {{pre|<nowiki>{{</nowiki>hl..."
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{used in system|in [[MediaWiki:Citethispage-content]]}}
{{Lua|Module:List}}
{{Uses TemplateStyles|Template:Hlist/styles.css}}
{{tlr|clear=right|Horizontal list|dotlist|hlist1}}
This template creates [[WP:HLIST|horizontal lists]]. Each item in the list may be individually styled with [[CSS]].
__TOC__
{{-}}
== Usage ==
'''Basic usage'''
{{pre|<nowiki>{{</nowiki>hlist<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...<nowiki>}}</nowiki>}}
'''All parameters'''
{{pre|
<nowiki>{{</nowiki>hlist
<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...
<nowiki>|class = </nowiki>''class for div tag''
<nowiki>|style = </nowiki>''style for div tag''
<nowiki>|list_style = </nowiki>''style for ul tag''
<nowiki>|item_style = </nowiki>''style for all li tags''
<nowiki>|item1_style = </nowiki>''style for first li tag''
<nowiki>|item2_style = </nowiki>''style for second li tag''
<nowiki>|</nowiki>...
<nowiki>|indent = </nowiki>''the number of tabs to indent''
<nowiki>}}</nowiki>
}}
== Parameters ==
* Positional parameters (<code>1</code>, <code>2</code>, <code>3</code>...): these are the list items. If no list items are present, the module will output nothing.
* <code>class</code>: a custom class for the {{tag|div}} tags surrounding the list. Set to <code>inline</code> when using {{tlf|hlist}} inside text.
* <code>style</code>: a custom CSS style for the {{tag|div}} tags surrounding the list, e.g. <code>font-size: 90%;</code>.
* <code>list_style</code>: a custom CSS style for the {{tag|ul}} tags around the list. The format is the same as for the {{para|style}} parameter.
* <code>item_style</code>: a custom CSS style for all of the list items (the {{tag|li}} tags). The format is the same as for the {{para|style}} parameter.
* <code>item1_style</code>, <code>item2_style</code>, <code>item3_style</code>...: custom CSS styles for each of the list items. The format is the same as for the {{para|style}} parameter.
* <code>indent</code>: the number of tabs to indent the list. Default value is 0.
== Examples ==
{{markup
| <nowiki>{{hlist|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}}</nowiki>
| {{hlist|entry1|entry2|entry3|entry4|entry5|entry6|entry7|entry8|entry9}}
| <nowiki>Giant planets ({{hlist|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).</nowiki>
| Giant planets ({{hlist|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).
| <nowiki>Giant planets ({{hlist|class=inline|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).</nowiki>
| Giant planets ({{hlist|class=inline|[[Jupiter|J]]|[[Saturn|S]]|[[Uranus|U]]|[[Neptune|N]]}}).
| <nowiki>{{hlist|Winner|Runner-up|Third place|indent=2}}</nowiki>
| {{hlist|Winner|Runner-up|Third place|indent=2}}
| <nowiki>{{hlist|Winner|Runner-up|Third place|item_style=color:blue;}}</nowiki>
| {{hlist|Winner|Runner-up|Third place|item_style=color:blue;}}
| <nowiki>{{hlist|Winner|Runner-up|Third place|item1_style=background-color:yellow;|item2_style=background-color:silver;}}</nowiki>
| {{hlist|Winner|Runner-up|Third place|item1_style=background-color:yellow;|item2_style=background-color:silver;}}
}}
== Avoiding Linter errors ==
{{tlf|hlist}} will produce [[Wikipedia:Linter|Linter]] [[Special:LintErrors/misc-tidy-replacement-issues|errors]] if placed inside a template that uses {{tag|span}} tags, such as {{tl|small}}, {{tl|larger}}, etc. To avoid this, use the substitutions from the table below:
{| {{table}}
! Incorrect markup !! Correct markup
|-
| <code><nowiki>{{small|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:85%}}</nowiki></code>
|-
| <code><nowiki>{{resize|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:90%}}</nowiki></code>
|-
| <code><nowiki>{{midsize|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:92%}}</nowiki></code>
|-
| <code><nowiki>{{larger|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:110%}}</nowiki></code>
|-
| <code><nowiki>{{big|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:120%}}</nowiki></code>
|-
| <code><nowiki>{{large|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:large}}</nowiki></code>
|-
| <code><nowiki>{{huge|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:180%}}</nowiki></code>
|-
| <code><nowiki>{{resize|x%|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:x%}}</nowiki></code>
|-
| <code><nowiki>{{font|size=x%|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=font-size:x%}}</nowiki></code>
|-
| <code><nowiki>{{nowrap|{{hlist|...}}}}</nowiki></code> || <code><nowiki>{{hlist|...|style=white-space: nowrap}}</nowiki></code>
|}
{{navbox lists}}
<includeonly>{{Sandbox other||
<!-- Categories go here, and interwikis go in Wikidata -->
[[Category:List formatting and function templates]]
}}</includeonly>
53a60ad328f2ec495bd209c2ef35941c2dff2323
Template:Center
10
431
937
936
2023-09-30T21:57:56Z
Führerredux
2
1 revision imported from [[:meta:Template:Center]]
wikitext
text/x-wiki
<includeonly><div class="center" style="width:auto; margin-left:auto; margin-right:auto;{{#if: {{{style|}}} | {{{style}}};}}">{{{1}}}</div>{{#if:{{{1|}}}||[[Category:Pages using center with no arguments]]}}</includeonly><noinclude>
{{documentation}}
</noinclude>
7bbd9f349458b75c72afaefd8f39f80b7903afc7
Template:Lang
10
432
938
2023-09-30T21:58:31Z
Führerredux
2
Created page with "<includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude> {{Documentation}} </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
ed35aafbfe8198c5ad80fd861124244d0c7f2742
Template:Lang/doc
10
433
939
2023-09-30T21:59:01Z
Führerredux
2
Created page with "{{High-use}} {{COinS safe|n}} {{Documentation subpage}} {{Lua|Module:Lang}} {{Language templates}} The purpose of this template is to indicate that a span of text belongs to a particular language. It often makes no visible changes to the text but can prompt [[web browsers]] to use a more appropriate font or screen readers to use a particular kind of pronunciation and so on. See {{section link||Rationale}} for more information. == Syntax and usage == {{in5}}{{tlx|lang|..."
wikitext
text/x-wiki
{{High-use}}
{{COinS safe|n}}
{{Documentation subpage}}
{{Lua|Module:Lang}}
{{Language templates}}
The purpose of this template is to indicate that a span of text belongs to a particular language. It often makes no visible changes to the text but can prompt [[web browsers]] to use a more appropriate font or screen readers to use a particular kind of pronunciation and so on. See {{section link||Rationale}} for more information.
== Syntax and usage ==
{{in5}}{{tlx|lang|{{var|language tag}}|{{var|text}}}}
The {{var|language tag}} should consist of an [[ISO-639]] language code. See the [[List of ISO 639-1 codes|list of ISO 639-1 codes]] for two-letter codes; if you don't find the language you seek, then refer to the [[List of ISO 639-3 codes|list of ISO 639-3 codes]].
The template also supports properly formatted [[IETF language tag]]s using subtags that identify the language's script, region, and/or variant. The ISO 639 language code is a two- or three-letter abbreviation, in lowercase, of the language's name. French, for example, has the code <code>fr</code>:
* <code><nowiki>She said: "{{lang|fr|Je suis française.}}"</nowiki></code> → She said: "{{lang|fr|Je suis française.}}"
Because all languages represented by two-letter codes in [[ISO 639-1]] can also be represented by their three-letter equivalents in [[ISO 639-2]] and above, it is recommended to use the shortest language tag possible that sufficiently describes the target language.<ref>[https://www.w3.org/International/articles/language-tags/index.en "Language tags in HTML and XML"] at [[World Wide Web Consortium]]</ref> So while French could be represented by ISO 639-2's <code>fra</code> code, use the ISO 639-1 code <code>fr</code> instead. Likewise, script, region, and variant information should be included only when they provide a necessary distinction. For an up-to-date list of available language, script, region, and variant codes, please refer to the [[Internet Assigned Numbers Authority|IANA]]'s [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language subtag registry].
By default, this template will place articles into the relevant subcategory of {{category link|Articles containing non-English-language text}}. To suppress this – e.g. when using {{tlf|lang}} within a [[Help:Link#Wikilinks|wikilink]] or the ''title'' parameter of a citation – add the parameter {{para|cat|no}}.
=== Formatting ===
==== Automatic italics ====
{{tld|lang}} automatically applies italic styling <span style="font-weight: normal;">when the text in <code><nowiki>{{{2}}}</nowiki></code> is written entirely in the <code>Latn</code> script (the Latin alphabet and its extensions), either when that is the default encoding for the language or when it is triggered by a <code>{{var|xx}}-Latn</code> language code{{colon}}</span>
* <code><nowiki>{{lang|fr|Je suis française.}}</nowiki></code> → {{lang|fr|Je suis française.}}
* <code><nowiki>''{{lang|fr|Je suis française.}}''</nowiki></code> → ''{{lang|fr|Je suis française.}}'' – external markup is ignored
* <code><nowiki>{{lang|he-Latn|la'az}} ({{lang|he|לעז}})</nowiki></code> → {{lang|he-Latn|la'az}} ({{lang|he|לעז}})
* <code><nowiki>''{{lang|he-Latn|la'az}}''</nowiki> ({{!mxt|<nowiki>''{{lang|he|לעז}}''</nowiki>}})</code> → ''{{lang|he-Latn|la'az}}'' ({{!mxt|''{{lang|he|לעז}}''}}) – external markup is ignored around the <code>he-Latn</code> text, but will incorrectly italicize the Hebrew-character material.
When <code>Latn</code> script should not be italicized, there are multiple approaches{{colon}}
{{para|italic|no}} <span style="font-weight: normal;">– renders <code><nowiki>{{{2}}}</nowiki></code> in upright font; italic markup around the template is ignored; italic markup inside the template causes an error message{{colon}}</span>
* <code><nowiki>{{lang|fr|Je suis française.|italic=no}}</nowiki></code> → {{lang|fr|Je suis française.|italic=no}}
* <code><nowiki>''{{lang|fr|Je suis française.|italic=no}}''</nowiki></code> → ''{{lang|fr|Je suis française.|italic=no}}''
* <code><nowiki>''{{lang|fr|Je suis ''française''.|italic=no}}''</nowiki></code> → ''{{lang|fr|Je suis ''française''.|italic=no|cat=no}}'' – italic markup in conflict with {{para|italic|no}}
{{para|italic|unset}} <span style="font-weight: normal;">– disables template-provided styling; <code><nowiki>{{{2}}}</nowiki></code> is styled according to external or internal wiki markup{{colon}}</span>
* <code><nowiki>{{lang|fr|Je suis française.|italic=unset}}</nowiki></code> → {{lang|fr|Je suis française.|italic=unset}}
* <code><nowiki>''{{lang|fr|Je suis française.|italic=unset}}''</nowiki></code> → ''{{lang|fr|Je suis française.|italic=unset}}''
* <code><nowiki>{{lang|fr|''Je suis'' English.|italic=unset}}</nowiki></code> → {{lang|fr|''Je suis'' English.|italic=unset}}
{{tlx|noitalic}} <span style="font-weight: normal;">can also be used{{colon}}</span>
* <code><nowiki>{{lang|fr|Je suis {{noitalic|English}}.}}</nowiki></code> → {{lang|fr|Je suis {{noitalic|English}}.}}
{{hatnote|{{crossreference|See table "[[#italic parameter|lang {{!}}italic{{=}} parameter operation]]".}}}}
==== Language-specific templates ====
There are language-specific versions of this template, such as {{tl|lang-fr}} and {{tl|lang-ru}}, which are intended to be used the first time a language appears in an article. These templates will print the language's name and, when appropriate, italicize their content:
* <code><nowiki>A '''kremlin''' ({{lang-ru|кремль}}, 'castle') is a major fortified central complex ...</nowiki></code> → A '''kremlin''' ({{lang-ru|кремль}}, 'castle') is a major fortified central complex ...
While {{tnull|lang-{{var|xx}}}} templates output text in italics for languages with Latin-based scripts, if plain text is required, such as for proper names, {{para|italic|no}} or {{tlx|noitalic}} may be used:
* <code><nowiki>the border town of Ventimiglia ({{lang-fr|Vintimille}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|Vintimille}})
* <code><nowiki>the border town of Ventimiglia ({{lang-fr|italic=no|Vintimille}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|italic=no|Vintimille}})
* <code><nowiki>the border town of Ventimiglia ({{lang-fr|{{noitalic|Vintimille}}}})</nowiki></code> → the border town of Ventimiglia ({{lang-fr|{{noitalic|Vintimille}}}})
When formatting foreign-language text to match style guidelines, it is best to exclude the styling markup from the template, so that any extraneous markup which is not from the foreign language does not receive incorrect metadata for that language. This includes: English-language quotation marks around titles of works in languages that use other quotation character glyphs; italicization of titles in languages which do not use that convention; and emphasis that is not found (in one style or another) in the original foreign text; among other cases. If in doubt, put such markup outside the template when possible.
{{See also|Wikipedia:Manual of Style/Text formatting#Foreign terms}}
=== Right-to-left languages ===
To embed a string of right-to-left text (such as [[Arabic]] or [[Hebrew language|Hebrew]]) within the usual left-to-right context, {{para|rtl|yes}} should be added to correctly communicate writing direction. To markup a whole paragraph of right-to-left text, {{tl|rtl-para}} should be used instead.
Any of these approaches will wrap the text in a container with the <code>dir="rtl"</code> attribute. In order to ensure correct rendering in browsers that do not fully support [[HTML5]] [[bidirectional text|bidirectional isolation]], a [[left-to-right mark]] is also added to the end of the text (see the [http://www.w3.org/International/articles/inline-bidi-markup W3C] for details).
Note that text direction does not need to be specified when using the {{tnull|lang-{{var|xx}}}} templates, as this is implied by the template's language.
== Parameters ==
{{#lst:Template:Lang-x/doc/parameters|lang_parameters}}
===the function selector parameter===
{{tlx|lang}} uses the Lua function <code>lang()</code> [[Module:Lang]]. That module also supports all of the {{tnull|lang-??}} templates using the Lua functions <code>lang_xx_inherit()</code> and <code>lang_xx_italic()</code>. The module has other functions that may be useful. The function selector parameter {{para|fn}} tells module:lang which function to execute. The available functions are:
*<code>is_ietf_tag</code> – returns <code>true</code> if the provided [[IETF language tag]] is valid; nil else
**<code><nowiki>{{lang|fn=is_ietf_tag|nv}}</nowiki></code> →{{lang|fn=is_ietf_tag|nv}}←
**<code><nowiki>{{lang|fn=is_ietf_tag|xx}}</nowiki></code> →{{lang|fn=is_ietf_tag|xx}}←
*<code>is_lang_name</code> – returns <code>true</code> if the provided language name is valid; nil else
**<code><nowiki>{{lang|fn=is_lang_name|navajo}}</nowiki></code> →{{lang|fn=is_lang_name|navajo}}←
**<code><nowiki>{{lang|fn=is_lang_name|xxxxx}}</nowiki></code> →{{lang|fn=is_lang_name|xxxxx}}←
*<code>lang</code> – the function that renders {{tlx|lang}}; listed here for completeness, this particular usage is more-or-less pointless
*<code>lang_xx_inherit</code> – the function that renders {{tnull|lang-??}} template where the text is not italicized; can be used when a {{tnull|lang-??}} template, for example {{tlx|lang-aao}}, does not exist for a particular language:
**<code><nowiki>{{lang|fn=lang_xx_inherit|code=aao|Algerian Saharan Arabic text}}</nowiki></code> → {{lang|fn=lang_xx_inherit|code=aao|Algerian Saharan Arabic text}}
*<code>lang_xx_italic</code> – the function that renders {{tnull|lang-??}} template where the text is italicized; can be used when a {{tnull|lang-??}} template, for example {{tlx|lang-svc}}, does not exist for a particular language:
**<code><nowiki>{{lang|fn=lang_xx_italic|code=svc|Vincentian Creole English text}}</nowiki></code> → {{lang|fn=lang_xx_italic|code=svc|Vincentian Creole English text}}
*<code>name_from_tag</code> – returns the language name associated with the provided IETF language tag:
**<code><nowiki>{{lang|fn=name_from_tag|apa}}</nowiki></code> → {{lang|fn=name_from_tag|apa}}
*<code>tag_from_name</code> – returns the ISO 639 language code (sometimes IETF language tag) associated with the provided language name:
**<code><nowiki>{{lang|fn=tag_from_name|havasupai}}</nowiki></code> → {{lang|fn=tag_from_name|havasupai}}
*<code>transl</code> – the function that renders {{tlx|transl}}; listed here for completeness, this particular usage is more-or-less pointless
**<code><nowiki>{{lang|fn=transl|ar|DIN|al-Ḫawārizmī}}</nowiki></code> → {{lang|fn=transl|ar|DIN|al-Ḫawārizmī}}
== Indicating writing script ==
If necessary, an [[List of ISO 15924 codes|ISO 15924]] script code can be appended to a language code to indicate the use of a specific script. For instance, [[Tajik language|Tajik]] (<code>tg</code>) is a language which can be found written in [[Arabic script|Arabic]] (<code>Arab</code>), [[Latin script|Latin]] (<code>Latn</code>), and [[Cyrillic script|Cyrillic]] (<code>Cyrl</code>) scripts, making it necessary to always specify which script is in use. In such a case, taking care to preserve the script code's capitalization, we could end up with the following code (language tags in bold):
* <code><nowiki>Tajik ({{lang|</nowiki>'''tg-Arab'''<nowiki>|تاجیکی}}, {{lang|</nowiki>'''tg-Latn'''<nowiki>|toçikī}}, {{lang|</nowiki>'''tg-Cyrl'''<nowiki>|тоҷикӣ}})</nowiki></code>
: Tajik ({{lang|tg-Arab|تاجیکی}}, {{lang|tg-Latn|toçikī}}, {{lang|tg-Cyrl|тоҷикӣ}})
Many languages, however, are so commonly written in one particular script that specifying the script is unnecessary. Russian, for instance, is almost exclusively written in Cyrillic, so there is no need to specify <code>ru-Cyrl</code>, just as <code>en-Latn</code> would be unnecessary for English. The [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry subtag registry] contains up-to-date information on which languages have common script codes that should be "suppressed".
=== Transliteration ===
To mark a language which has been [[transliteration|transliterated]] from one script into another, append the new script's code to the code of the original language. So if transliterating from Russian Cyrillic to a Latin script, the language tag on the transliteration would be <code>ru-Latn</code>. If the transliteration scheme is known, and listed as a "variant" in the [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry subtag registry], it can be appended after any script and region codes. For example, Chinese transliterated into a Latin script using the [[pinyin]] system would be <code>zh-Latn-pinyin</code>. As a convenience for transliterating to Latin scripts, and to work around browser styling issues with some language and script combinations, {{tl|transliteration}} may be used in place of {{tlf|lang}}:
* <code><nowiki>Moscow ({{lang|ru|Москва}}, {{transliteration|ru|Moskva}})</nowiki></code> → Moscow ({{lang|ru|Москва}}, {{transliteration|ru|Moskva}})
To specify a transliteration scheme, such as the [[ISO 9|ISO transliteration standard for Cyrillic]], use {{tlc|transliteration|ru|ISO|Moskva}}.
=== Undetermined language ===
The {{tlf|lang}} template is not only used to specify the language of foreign words, but can also be used to specify a single symbol or character in a script, unrelated to any specific language. Many times the character or symbol is used in several languages, but when the article refers to the [[grapheme]] itself, the [[ISO 639‑2]] language code <code>und</code>, for Undetermined language, should be used:
* <code><nowiki>The {{lang|und-Hani|字}} Han character has 6 strokes.</nowiki></code>
: The {{lang|und-Hani|字}} Han character has 6 strokes.
Han characters are used in Chinese, Japanese, sometimes Korean, and formerly Vietnamese, and in this case the character is not used for any specific language. Note that the script code used is <code>Hani</code>, which specifies generic Han characters (Hanzi, Kanji, Hanja).
Compare {{tl|script}} usage:
* <code><nowiki>The {{script|Hani|字}} Han character has 6 strokes.</nowiki></code>
: The {{script|Hani|字}} Han character has 6 strokes.
=== Languages with no code ===
Use the code "mis" (Miscellaneous) for any language not listed in ISO-639.
== Indicating regional variant ==
When it is necessary to indicate region-specific language, an [[ISO 3166-1 alpha-2]] country code, or [[UN M49]] region code, should be added to the language tag, taking care to preserve capitalization. For example, Portuguese (<code>pt</code>) as used in Brazil (<code>BR</code>) could be represented as <code>pt-BR</code>, and Spanish as used in Latin America as <code>es-419</code>.
Additionally, language, script, and region codes can all appear in the same tag. For instance, the code <code>zh-Hant-TW</code> should be used for Chinese text written with [[Traditional Chinese characters|Traditional Han characters]], containing words or expressions specific to [[Taiwan]]:
* <code><nowiki>Taiwan ({{lang|zh-Hant-TW|臺灣}}, {{transliteration|zh|Táiwān}})</nowiki></code>
: Taiwan ({{lang|zh-Hant-TW|臺灣}}, {{transliteration|zh|Táiwān}})
== Private-use language tags ==
This template supports various private-use [[IETF language tag]]s. Private-use tags contain the <code>-x-</code> singleton and are used by the template to identify languages that are different, for one reason or another, from the base language identified by the ISO 639 language tag.
{{#invoke:Lang/documentor tool|private_tags}}
== Links ==
If the {{tl|lang}} template will have to be combined with links one might be tempted to move the {{tl|lang}} template into the link so that it would only frame the link's text label, not the syntax elements of the links or other stylistic elements of some types of links. However, this does not work. The {{tl|lang}} will have to wrap the entire link, regardless of whether it is an internal or external link, or a link provided through a {{tl|ill}} interwiki link template:
Works:
* <code><nowiki>{{lang|en|[[Book of hours]]}}</nowiki></code> → {{lang|en|[[Book of hours]]}}
* <code><nowiki>{{lang|de|[[Book of hours|Stundenbuch]]}}</nowiki></code> → {{lang|de|[[Book of hours|Stundenbuch]]}}
* <code><nowiki>{{lang|he-LA|{{ill|Machsor Lipsiae|de}}}}</nowiki></code> → {{lang|he-LA|{{ill|Machsor Lipsiae|de}}}}
Does not work:
* <code><nowiki>[[{{lang|en|Book of hours}}]]</nowiki></code> → [[{{lang|en|Book of hours}}]] (never works)
* <code><nowiki>[[Book of hours|{{lang|de|Stundenbuch}}]]</nowiki></code> → [[Book of hours|{{lang|de|Stundenbuch}}]] (does not work in article space, works on talk and some other types of pages)
* <code><nowiki>{{ill|Machsor Lipsiae|de|lt={{lang|he-LA|Machsor Lipsiae}}}}</nowiki></code> → {{ill|Machsor Lipsiae|de|lt={{lang|he-LA|Machsor Lipsiae}}}} (does not work in article space, works on talk and some other types of pages)
== Rationale ==
{{section link|Wikipedia:Manual of Style/Text formatting|Foreign terms}} requires the use of {{tl|lang}} instead of manual <nowiki>''italics''</nowiki>. This is preferred for the following reasons:
* [[WWW|Web]] [[Web browser|browsers]] can use the information in such [[:Category:Wikipedia multilingual support templates|multilingual support templates]] to choose an appropriate font.
** This is great for [[CJK characters|CJK]] where a character can be given its language-specific shape but will fall back to another form if no appropriate font is found or if the preferred font lacks that character, for example because the language does not make use of that character: see {{section link|Han unification|Examples of language-dependent glyphs}} and [[User:Wikipeditor/CJK|these comparison tables with a screenshot]].
* For [[web accessibility|accessibility]] – [[screen reader]]s need language info to speak text in the correct language – and to satisfy [[Wikipedia:Accessibility#Text|Wikipedia accessibility guidelines]].<ref>{{cite web|url=https://developer.yahoo.com/blogs/ydn/yahoo-search-results-now-natural-language-support-7318.html|title=Yahoo! search results now with natural language support|date=13 Mar 2008|first= Chris |last= Heilmann|work=[[Yahoo! Developer Network]] Blog|accessdate=28 Feb 2015|archiveurl=https://web.archive.org/web/20090125024422/http://developer.yahoo.net/blog/archives/2008/03/yahoo_search_re.html|archivedate=25 Jan 2009|url-status=dead}}</ref>
* For [[spell checker]]s and grammar checkers, to match the text to the dictionary and syntax of the correct language.
* To prevent the page from showing up on the [[Wikipedia:Typo Team/moss/not English]] report, which flags articles needing translation.
* To help browsers choose appropriate [[quotation mark]]s,<ref name="qa-lang-why">{{cite web|url=http://www.w3.org/International/questions/qa-lang-why|title=Why use the language attribute?|date=18 November 2014|first= Richard |last= Ishida | publisher=World Wide Web Consortium | issue=Previously by Deborah Cawkwell, BBC World Service|accessdate=1 Mar 2015}}</ref> and make decisions about [[Hyphen|hyphenation]],<ref name="qa-lang-why"/> [[orthographic ligature|ligature]]s,<ref>{{cite web|url=http://www.w3.org/TR/css3-fonts/#font-variant-ligatures-prop|title=6.4 Ligatures: the font-variant-ligatures property|work=CSS Fonts Module Level 3 W3C Candidate Recommendation 3 October 2013}}</ref> and spacing.<ref name="qa-lang-why"/>
* Users can apply styles to languages in their [[style sheet (web development)|style sheet]]s (useful for editors).
* [[Web search engine|Search engine]]s can use this information when [[search engine indexing|indexing]] text.
* Facilitates better data-scraping, parsing and re-use.
* Useful for application developers who re-publish Wikipedia (also see {{section link|Wikipedia:Manual of Style/Accessibility|Other languages}}).
* Useful for research or compiling statistics about language use in Wikipedia.
== Applying styles ==
Registered users can apply custom [[Cascading Style Sheets|CSS]] styles to articles by placing style declarations in their user style sheet. The user style sheet can be created at [[Special:Mypage/common.css]]. For more information, see [[Help:User style]]. The following examples should work in most [[List of web browsers|modern browsers]].
To apply a specific font to all text marked as Russian of any script or region:
<syntaxhighlight lang="css">
[lang|=ru] { font-family: fonteskaya; }
/* or */
:lang(ru) { font-family: fonteskaya; }
</syntaxhighlight>
To apply a specific font to text marked simply as Russian:
<syntaxhighlight lang="css">
[lang=ru] { font-family: fonteskaya; }
</syntaxhighlight>
To apply a color to all text marked with any language:
<syntaxhighlight lang="css">
[lang] { color: green; }
</syntaxhighlight>
If a font name contains characters besides basic Latin letters or hyphens, it is a good idea to enclose it in quotation marks because some such characters have special meanings (the most common case needing quotation marks is a multi-word font name with space characters). Quotation marks are also required for font families containing generic-family keywords ('inherit', 'serif', 'sans-serif', 'monospace', 'fantasy', and 'cursive'). See the [http://www.w3.org/TR/CSS21/fonts.html#font-family-prop W3C] for more details.
You can combine this with font imports in your user stylesheet, for example, to show all German text in [[Fraktur]] and all Urdu in [[Noto fonts|Noto]] [[Nastaʿlīq script|Nastaliq]] Urdu Regular:
<syntaxhighlight lang="css">
@import url(https://fonts.googleapis.com/css?family=UnifrakturMaguntia);
@import url(http://fonts.googleapis.com/earlyaccess/notonastaliqurdudraft.css);
:lang(de) {
font-family: UnifrakturMaguntia;
font-style: normal;
font-weight: normal;
}
:lang(ur) {
font-family: "Noto Nastaliq Urdu Regular", "Noto Nastaliq Urdu";
}
</syntaxhighlight>
then the following wikitext will look like the image below:
<pre>
Victor jagt zwölf Boxkämpfer quer über den Sylter Deich
{{lang|de-Latf|Victor jagt zwölf Boxkämpfer quer über den Sylter Deich}}
ٹھنڈ میں، ایک قحط زدہ گاؤں سے گزرتے وقت ایک چڑچڑے، بااثر و فارغ شخص کو بعض جل پری نما اژدہے نظر آئے۔
{{lang|ur|ٹھنڈ میں، ایک قحط زدہ گاؤں سے گزرتے وقت ایک چڑچڑے، بااثر و فارغ شخص کو بعض جل پری نما اژدہے نظر آئے۔}}
</pre>
{{Wide image|Pangrams in DE and UR in Arial, UnifrakturMaguntia and Noto Nastaliq Urdu.png|1000px}}
== Tracking categories ==
* {{Category link with count|Lang and lang-xx template errors}}
* {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}}
* {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"description": "Indicate that a given span of text belongs to a particular language. Allows browsers to correctly present and pronounce foreign languages.",
"params": {
"1": {
"label": "Language tag",
"description": "A language tag, or an ISO 639 language code.",
"type": "string",
"required": true,
"example": "fr",
"aliases": [
"code"
]
},
"2": {
"label": "Text",
"description": "The text belonging to the language specified.",
"type": "string",
"required": true,
"example": "Je suis française.",
"aliases": [
"text"
]
},
"rtl": {
"label": "Right to left",
"description": "Indicates that the language should be displayed from right to left.",
"example": "yes",
"type": "string",
"default": "no"
},
"italic": {
"aliases": [
"italics",
"i"
],
"label": "Italicize",
"description": "Italicizes the text",
"default": "yes",
"example": "no",
"type": "boolean"
},
"size": {
"label": "Font-size",
"description": "sets font-size",
"example": "120%, 1.2em"
},
"cat": {},
"nocat": {}
},
"format": "inline"
}
</templatedata>
== See also ==
* {{tl|Lang-x}}
* {{tl|IPA}}
* {{tl|Title language}}
* [[:Category:Wikipedia multilingual support templates]]
* [[Lists of ISO 639 codes]] (language codes)
** {{tl|ISO 639 name}}
* [[List of ISO 15924 codes]] (script codes)
* [[List of ISO romanizations|List of ISO transliterations]] (transliteration codes)
* {{tl|cleanup lang}} (for articles which should use this template, but do not yet)
* {{tl|transliteration}} (for romanisation of languages not natively written in the Latin alphabet)
* {{tl|script}} (for specific characters)
* {{tl|wikt-lang}} (to simultaneously tag text as a language and link to Wiktionary)
* {{tl|in lang}} (for visually marking external links to foreign-language content)
* {{tl|mw lang}} (similar to <nowiki>{{ISO 639 name}}</nowiki> for MediaWiki-supported languages)
* {{tl|interlanguage link}}
== References ==
{{reflist}}
== External links ==
* [[World Wide Web Consortium|W3C]]
** [http://www.w3.org/International/articles/language-tags/Overview.en.php Language tags in HTML and XML] – Overview
** [https://www.w3.org/International/techniques/authoring-html#language Authoring Web pages]
** [http://www.w3.org/International/articles/bcp47/ Understanding the New Language Tags]
** [http://www.w3.org/International/questions/qa-css-lang FAQ: Styling using the lang attribute]
* [[Internet Assigned Numbers Authority|IANA]]
** [http://www.iana.org/assignments/language-subtag-registry IANA Language Subtag Registry]
** [http://www.rfc-editor.org/rfc/rfc4646.txt Tags for Identifying Languages] ({{IETF RFC|4646}})
** [http://www.rfc-editor.org/rfc/rfc4647.txt Matching of Language Tags] ({{IETF RFC|4647}})
** [http://www.iana.org/assignments/language-tags Language tags] (obsolete per {{IETF RFC|4646}})
* [[Mozilla Firefox]]
** [https://bugzilla.mozilla.org/show_bug.cgi?id=192636 Bug with script selection]
<includeonly>{{Sandbox other||
[[Category:Wikipedia multilingual support templates]]
[[Category:Templates that add a tracking category]]
[[Category:Language tag handling templates]]
}}</includeonly>
83043954ee499b4fcd6cfa80de7793c3e127bb1b
Module:Lang
828
434
940
2023-09-30T21:59:44Z
Führerredux
2
Created page with "--[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates. ]=] require('strict'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_n..."
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local content_lang = mw.language.getContentLanguage();
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transliteration' == template then
category = 'Transliteration';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------
makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in
html markup. This because the lang= attibute applies to the content of its enclosing tag.
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag
]]
local function title_wrapper_make (title_text, content_text, tag)
local wrapper_t = {};
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag
table.insert (wrapper_t, ' title=\"'); -- begin title attribute
table.insert (wrapper_t, title_text); -- add <title_text>
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag
table.insert (wrapper_t, content_text); -- add <content_text>
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag
return table.concat (wrapper_t); -- make a big string and done
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish
language text' is English:
<i lang="es" title="Spanish language text">casa</i>
should be:
<span title="Spanish language text"><i lang="es">casa</i></span>
or for <div>...</div>:
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div>
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html_t = {};
local style_added = '';
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div
if text:match ('^%*') then
table.insert (html_t, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages
end
if 'normal' == style then -- when |italic=no
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag
table.insert (html_t, text); -- insert the text
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div
local title_text;
if 'zxx' == code then -- special case for this tag 'no linguistic content'
title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text
elseif mw.ustring.find (language, 'languages', 1, true) then
title_text = table.concat ({language, ' collective text'}); -- for collective languages
else
title_text = table.concat ({language, '-language text'}); -- for individual languages
end
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);
else
return table.concat (html_t);
end
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if mw.ustring.find (language_name, 'languages', 1, true) then
return table.concat ({'[[Category:Articles with text in ', language_name, ']]'});
end
table.insert (cat, '[[Category:Articles containing ');
if this_wiki_lang_tag == code then
table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language
else
table.insert (cat, language_name);
end
table.insert (cat, '-language text]]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transliteration}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local out_t = {};
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local title_text = ''; -- tool tip text for title= attribute
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
title_text = language_name; -- write a generic tool tip
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_t[std] then -- and if standard is legitimate
if title_t[std][tscript] then -- and if script for that standard is legitimate
if script_table[tscript] then
title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_t[std] then return ''; end -- invalid standard, setup for error message
if title_t[std][code] then -- if language code is in the table (transl may not provide a language code)
title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip
else -- code doesn't match
title_text = title_text .. title_t[std]['default']; -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_t['no_std'][tscript] then
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set
elseif title_t['no_std'][code] then
title_text = title_text .. title_t['no_std'][code]; -- use language code
else
if is_set (tscript) then
title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip
elseif is_set (code) then
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' transliteration'; -- finish the tool tip
else
title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?)
end
end
end
local close_tag;
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}})
code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag
if not style then -- nil for the default italic style
table.insert (out_t, "<i lang=\""); -- so use <i> tag
close_tag = '</i>'; -- tag to be used when closing
else
table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
close_tag = '</span>'; -- tag to be used when closing
end
table.insert (out_t, code);
table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script
else
table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only)
close_tag = '</span>';
end
table.insert (out_t, translit); -- add the translit text
table.insert (out_t, close_tag); -- and add the appropriate </i> or </span>
if '' == title_text then -- when there is no need for a tool-tip
return table.concat (out_t); -- make a string and done
else
return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don
end
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div>
tags are used to wrap it, to prevent div/span inversion.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags
tag = 'div';
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf];
elseif override_table[code] then -- not there so try basic language tag
name = override_table[code];
elseif lang_table[code] then -- shift to iana active tag/name table
name = lang_table[code];
elseif lang_dep_table[code] then -- try the iana deprecated tag/name table
name = lang_dep_table[code];
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< T R A N S L A T I O N _ M A K E >----------------------------------------------
stand-alone function to create literal translation of main text
Also used by {{lang-x2}}
]]
local function translation_make (args_t)
local translation_t = {', '}; -- initialize output
if 'none' ~= args_t.label then -- if we want a label
table.insert (translation_t, '<small>'); -- open the <small> html tag
if 'no' == args_t.link then
table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form
else
table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form
end
table.insert (translation_t, " </small>"); -- close the <small> html tag
end
table.insert (translation_t, table.concat ({''', args_t.translation, '''})); -- use html entities to avoid wiki markup confusion
return table.concat (translation_t); -- make a big string and done
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if mw.ustring.find (language_name, 'languages', 1, true) then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink
end
end
table.insert (out, ': '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '<small>');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script']];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanized:'); -- else plain text
end
table.insert (out, ' </small>'); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, translation_make (args));
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame
end
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag>
is in the parent frame.
]]
local function is_ietf_tag_frame (frame)
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if mw.ustring.find (language_name, 'languages', 1, true) then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration');
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transliteration');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transliteration');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args_t)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args_t[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args_t.link; -- make a boolean
local label = args_t.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
if link then
return table.concat ({'[[:', category_name, ']]'});
else
return category_name;
end
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_ietf_tag_frame = is_ietf_tag_frame,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
_translation_make = translation_make,
};
b4bf37fa610695625e5f1ff5d33471dfaaf8af34
Template:Transliteration
10
435
942
2023-09-30T22:01:14Z
Führerredux
2
Created page with "<includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude> {{documentation}} </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Lang|transl}}</includeonly><noinclude>
{{documentation}}
</noinclude>
cf981ec0dfa428550086604e3a81e36da231f3df
Template:Transliteration/doc
10
436
943
2023-09-30T22:01:33Z
Führerredux
2
Created page with "{{Documentation subpage}} {{Redirect|Template:Transl|the template for translated text|Template:Translation}} {{High use}} {{COinS safe|n}} {{Lua|Module:Lang}} {{Language templates}} This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script. This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in..."
wikitext
text/x-wiki
{{Documentation subpage}}
{{Redirect|Template:Transl|the template for translated text|Template:Translation}}
{{High use}}
{{COinS safe|n}}
{{Lua|Module:Lang}}
{{Language templates}}
This template is used to mark up text '''[[transliteration|transliterated]] or [[romanisation|romanised]]''' from a non-Latin alphabet script to Latin alphabet script.
This template should only be used for the transliterations of non-Latin scripts; for non-English language text displayed in its native script (such as Greek, Cyrillic and Arabic), {{tl|lang}} should be used, which tags non-transliterated text (written in original script). Transliteration is often used alongside that template, to allow non-readers of the script to interpret the text.
This template adds a [[tooltip]] label naming the transliteration scheme, and renders text in [[italics]] by default. This template is important for [[MOS:ACCESSIBILITY]], as it invisibly tags text with the correct language, allowing for screenreaders to use the correct style of pronunciation.
It also displays text in an appropriate font; romanisations marked up in {{tl|lang}} may display in fonts designed for that language's native text, whereas the transl template displays text in the same font as the rest of the article.
Some languages, such as [[Chinese language|Chinese]], have more than one style of transliteration (such as [[Wade–Giles]], [[pinyin]], etc). This template can be used for these different transliteration schemes, though Wikipedia has a number of [[:Category:Wikipedia multilingual support templates|language-specific templates]], some of which support more than one transliteration styles in their parameters, that may be better suited for marking up transliterations.
==Example==
The following code tags a Ukrainian name and its transliteration according to the Ukrainian National scheme.
{{markup |
<nowiki>{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})</nowiki>
|
{{lang|uk|Ярослав Рудницький}} ({{transliteration|uk|ukrainian|Yaroslav Rudnytskyi}})
}}
==Rationale==
This template is intended to unify all "transliteration" templates, such as {{tl|IAST}} and {{tl|ISOtranslit}}. These templates are still usable, but they just transclude or are redirected back to <nowiki>{{transl}}</nowiki>. For example, (e.g. <code><nowiki>{{IAST|saṃskṛtam}}</nowiki></code> is a shortcut for <code><nowiki>{{transliteration|sa|IAST|saṃskṛtam}}</nowiki></code>. Other transliteration templates that once existed, such as {{tl|ArabDIN}}, are now handled natively by this template: <code><nowiki>{{transliteration|ar|DIN|...}}</nowiki></code>).
This template is kept separate from {{tl|lang}} to address formatting issues (via CSS classes) and identification of transliteration schemes used. Ultimately, if these concerns are smartly addressed in the CSS file and/or in {{tl|lang}}, using <code><nowiki>{{transliteration|xx|...}}</nowiki></code> should be equivalent to using <code><nowiki>{{lang|xx-Latn|...}}</nowiki></code>.
==Usage==
There are two ways of using this template: with or without specifying the [[romanization|transliteration scheme]] used:
*two parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|al-Khwarizmi}}</nowiki></code> means that "al-Khwarizmi" is a transliteration from the Arabic in a loose or unspecified scheme.
*two parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Ogam|MAQI}}</nowiki></code> means that "MAQI" transliterates an [[Ogham]] inscription without specifying the language. Potentially useful when writing systems themselves are under discussion, e.g. <code><nowiki>{{transliteration|Cyrl|š}}</nowiki></code>, not <code><nowiki>{{transliteration|cu|š}}</nowiki></code> or <code><nowiki>{{transliteration|ru|š}}</nowiki></code> when discussing the letter {{script|Cyrl|[[Ш]]}}.
*three parameters, with [[ISO 639]] language code: <code><nowiki>{{transliteration|ar|DIN|al-Ḫawārizmī}} / {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code> the second parameter specifies the scheme used (DIN vs. ALA).
*three parameters, with [[ISO 15924]] script code: <code><nowiki>{{transliteration|Arab|DIN|Ḫ}} vs {{transliteration|Arab|ALA|Kh}}</nowiki></code> for {{script|Arab|[[ﺥ]]}}.
{{para|italic|no}} can be added to suppress the default italicization of Latin scripts; however, proper nouns – the names of people and places – are typically not italicized, and as such, generally do not require the use of a transliteration template. Note that there is no need to add italic markup (<code><nowiki>''</nowiki></code>) to transliteration templates.
'''Note''': the language code is ISO 639 or IETF private-use tag (see [[Template:Lang#Private-use language tags]]); other forms of [[IETF BCP 47 language tag]]s are {{em|not}} supported.
===Transliteration scheme codes===
Codes for supported transliteration schemes can be seen by viewing the source of [[:Module:Lang/data]] – the {{code|translit_title_table}} data-structure lists for each such code the corresponding transliteration schemes. These may vary by language – e.g. code "ISO" means scheme [[ISO 233]] for Arabic but [[ISO 11940]] for Thai.
===Examples===
Inputting:
*<code><nowiki>{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}</nowiki></code>
*<code><nowiki>[[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>
*<code><nowiki>{{cuneiform|[[Sumerian language|𒅴𒂠]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}</nowiki></code>
Results in:
*{{transliteration|ar|[[al-Khwarizmi]]}} / [[DIN 31635]]: {{transliteration|ar|DIN|al-Ḫawārizmī}} / [[ISO 233]]: {{transliteration|ar|ISO|al-H̱awārizmī}} / [[ALA-LC Romanization|ALA]]: {{transliteration|ar|ALA|al-Khawārizmī}}
* [[Royal Thai General System of Transcription|RTGS]]: {{transliteration|th|phasa thai}} / [[ISO 11940]]: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}
*{{cuneiform|[[Sumerian language|𒅴𒂠]]}} {{transliteration|sux|EME.GIR<sub>15</sub>}} / {{cuneiform|6|[[Hittite language|𒉈𒅆𒇷]]}} {{transliteration|hit|ne-ši-li}}
'''ISO''':
*{{lang|ru|[[Russian language|русский]]}} <code><nowiki>{{transliteration|ru|ISO|russkij}}</nowiki></code>: {{transliteration|ru|ISO|russkij}}
*{{lang|ab|[[Abkhaz language|Аҧсуа]]}} <code><nowiki>{{transliteration|ab|ISO|aṗsua}}</nowiki></code>: {{transliteration|ab|ISO|aṗsua}}
*{{lang|ar|[[Arabic| عربي ]]}} <code><nowiki>{{transliteration|ar|ISO|ʿarabī}}</nowiki></code>: {{transliteration|ar|ISO|ʿarabī}}
*: ISO has huge issues transliterating {{transliteration|ar|alif}}, so it's better to use the Library of Congress transliteration, the [[DIN 31635|German Institute for Standardization]] or [[Hans Wehr transliteration]]; see [[Arabic transliteration]] and [[MOS:APOSTROPHE]]
*{{lang|ta|[[Tamil language|தமிழ் ]]}} <code><nowiki>{{transliteration|ta|ISO|tamiḻ}}</nowiki></code>: {{transliteration|ta|ISO|tamiḻ}}
*{{lang|bn|[[Bengali language|বাংলা ]]}} <code><nowiki>{{transliteration|bn|ISO|baṅla}}</nowiki></code>: {{transliteration|bn|ISO|baṅla}}
*{{lang|el|[[Greek language|ελληνικά ]]}} <code><nowiki>{{transliteration|el|ISO|ellēniká}}</nowiki></code>: {{transliteration|el|ISO|ellēniká}}
*{{lang|ka|[[Georgian language|ქართული]]}} <code><nowiki>{{transliteration|ka|ISO|k'art'uli}}</nowiki></code>: {{transliteration|ka|ISO|k'art'uli}}
*{{lang|zh|[[Pinyin|漢語拼音]]}} <code><nowiki>{{transliteration|zh|ISO|hànyǔ pīnyīn}}</nowiki></code>: {{transliteration|zh|ISO|hànyǔ pīnyīn}}
*{{lang|th|[[Thai language|ภาษาไทย]]}} <code><nowiki>{{transliteration|th|ISO|p̣hās̄ʹāthịy}}</nowiki></code>: {{transliteration|th|ISO|p̣hās̄ʹāthịy}}
==CSS==
In order to apply a style to all text marked as transliteration, use a CSS selector that chooses all text with <code>transliteration</code> in the title attribute (tooltip). For instance, if you add the following to [[Special:MyPage/common.css|your common.css]], all transliterations will be colored {{color|teal}}:
<syntaxhighlight lang="CSS">
[title~=transliteration] { color: teal; }
</syntaxhighlight>
==Tracking category==
* {{clc|Transliteration template errors}}
==TemplateData==
{{templatedata header}}
<templatedata>
{
"description": "Marks a text span transliterated from a particular language or writing system, and, optionally, according to a specific transliteration system.",
"params": {
"1": {
"label": "Language or script code",
"description": "ISO 639 language code (e.g., uk) or ISO 15924 script code (e.g., Cyrl)",
"required": true,
"type": "line"
},
"2": {
"label": "Text or transliteration scheme",
"description": "Latin-alphabet transliterated text, or, optionally, transliteration scheme (e.g., bgn/pcgn)",
"required": true,
"type": "string"
},
"3": {
"label": "Text",
"description": "Latin-alphabet transliterated text (required if a transliteration scheme is entered above)",
"required": false,
"suggested": true,
"type": "string"
}
}
}
</templatedata>
==See also==
*{{tl|lang}}, {{tl|language}}
*{{tl|script}}
* {{tl|trans}}, {{tl|translation}}
*[[Romanization]]
*[[List of ISO transliterations]]
{{ISO 15924 script codes and related Unicode data|state=collapsed}}
<includeonly>{{Sandbox other||
[[Category:Wikipedia multilingual support templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9eff20202df9880064bd01460f3d5f316b52a868
Philippines
0
437
945
2023-09-30T23:07:00Z
Führerredux
2
Created page with "{{Infobox country | name = The Commonwealth of the Philippines }}"
wikitext
text/x-wiki
{{Infobox country
| name = The Commonwealth of the Philippines
}}
96a089340cbe73c958118aa96774129bc53b983f
946
945
2023-09-30T23:12:50Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Ang Karaniwan ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| official_languages = Tagalog
| demonym = Filipino
| government_type = Puppet
}}
95cff0b2988c051bc9a28e57f228587fdad9a117
947
946
2023-09-30T23:16:36Z
Führerredux
2
Führerredux moved page [[Philipiness]] to [[Philippines]]
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Ang Karaniwan ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| official_languages = Tagalog
| demonym = Filipino
| government_type = Puppet
}}
95cff0b2988c051bc9a28e57f228587fdad9a117
949
947
2023-09-30T23:20:17Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Ang Karaniwan ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| official_languages = Tagalog
| demonym = Filipino
| government_type = Puppet
| overlord = [[The United States of America]]
}}
530b1000281d7cfb6eb9b7b85e1a30c635a29ed3
951
949
2023-10-01T03:51:51Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Komonwelt ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Puppet
| overlord = [[The United States of America]]
}}
403ede7b58a07f14173326c19372a20eab4f09e9
953
951
2023-10-01T03:58:33Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Komonwelt ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| englishmotto = For God, People, Nature, and Country
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Puppet
| overlord = [[The United States of America]]
}}
989f20870d647c3240d3e1921c226641644f0ea8
954
953
2023-10-01T03:59:10Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| native_name = Komonwelt ng Pilipinas
| capital = [[Manila]]
| largest_city = capital
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Puppet
| overlord = [[The United States of America]]
}}
b419072aac6fc247aa34d09736302c1409ac2da1
955
954
2023-10-01T04:03:10Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag of the Philippines.svg
| native_name = Komonwelt ng Pilipinas
| capital = [[Manila]]
| largest_city = [[Balintawak City (Quezon City OTL)]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Puppet
| overlord = [[The United States of America]]
}}
d855b0e95e2d196f50e4746135c4a07150f765c5
957
955
2023-10-01T04:09:15Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
12162d958ca1400efd3e5f7f664918cd73f01181
958
957
2023-10-01T04:11:29Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:Philippine_hymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
fd8b7da9490b2c652be721983d16b08718a8b639
959
958
2023-10-01T04:11:44Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[Media:Philippine_hymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
b76598c42043d4566873f528ffdbc35e231a7a5b
960
959
2023-10-01T04:12:27Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = Lupang Hinirang<br/><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
d38a633238b28000811bd95a4902ef557846f639
961
960
2023-10-01T04:13:19Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<italic>Lupang Hinirang</italic>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
1e551ac2bd300fbe84a6c8fc0bebdd6989a34209
962
961
2023-10-01T04:13:36Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
666c3419692de86e1f782d8549e1151d003e94df
963
962
2023-10-01T04:14:51Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
3a431a74dceb56a3785e10d1837b9f7c3841c614
964
963
2023-10-01T04:26:39Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| leader_name2 = [[Manuel Luis Quezon]]
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
86db0ea99db9fd4d1c2a83a460d35b0cb08b3b26
Philipiness
0
438
948
2023-09-30T23:16:36Z
Führerredux
2
Führerredux moved page [[Philipiness]] to [[Philippines]]
wikitext
text/x-wiki
#REDIRECT [[Philippines]]
d3a2186ad33203913e8f93c11ac0637678b842af
Template:Infobox country/doc
10
245
950
544
2023-09-30T23:29:17Z
Führerredux
2
wikitext
text/x-wiki
{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}}
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
{{Uses TemplateStyles|Template:Infobox country/styles.css}}
This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below.
__FORCETOC__
== Syntax ==
<!---------------------- Country/territory use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|micronation = <!--yes if a micronation-->
|conventional_long_name = <!--Formal or official full name of the country in English-->
|native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)-->
|common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)-->
|status = <!--Status of country, especially useful for micronations-->
|image_flag = <!--e.g. Flag of country.svg-->
|alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)-->
|flag_border = <!--set to no to disable border around the flag-->
|image_flag2 = <!--e.g. Second-flag of country.svg-->
|alt_flag2 = <!--alt text for second flag-->
|flag2_border = <!--set to no to disable border around the flag-->
|image_coat = <!--e.g. Coat of arms of country.svg-->
|alt_coat = <!--alt text for coat of arms-->
|symbol_type = <!--emblem, seal, etc (if not a coat of arms)-->
|national_motto = <!--in inverted commas and wikilinked if link exists-->
|englishmotto = <!--English language version of motto-->
|national_anthem = <!--in inverted commas and wikilinked if link exists-->
|royal_anthem = <!--in inverted commas and wikilinked if link exists-->
|other_symbol_type = <!--Use if a further symbol exists, e.g. hymn-->
|other_symbol =
|image_map = <!--e.g. LocationCountry.svg-->
|loctext = <!--text description of location of country-->
|alt_map = <!--alt text for map-->
|map_caption = <!--Caption to place below map-->
|image_map_size = <!--Map size in number of pixels-->
|image_map2 = <!--Another map, if required-->
|alt_map2 = <!--alt text for second map-->
|map_caption2 = <!--Caption to place below second map-->
|image_map2_size = <!--Map size in number of pixels-->
|capital = <!--Name of country/territory's capital, wikilinked if link exists-->
|coordinates = <!-- Coordinates for capital, using {{tl|coord}} -->
|largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.-->
|largest_settlement_type = <!--Type of settlement if largest settlement not a city-->
|largest_settlement = <!--Name of largest settlement-->
|overlord = <!--Name of Overlord wikilinked-->
|official_languages = <!--Languages recognised in legislation, constitution, etc-->
|national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc-->
|regional_languages = <!--Languages recognised or associated with particular regions within the country/territory-->
|languages_type = <!--Use to specify a further type of language, if not official, national or regional-->
|languages = <!--Languages of the further type-->
|languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")-->
|languages2_type = <!--Another further type of language-->
|languages2 = <!--Languages of this second further type-->
|languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")-->
|ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory-->
|ethnic_groups_year = <!--Year of ethnic groups data (if provided)-->
|ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)-->
|religion = <!--Religion-->
|religion_year = <!--Year of religion data (if provided)-->
|religion_ref = <!--(for any ref/s to associate with religion data)-->
|demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)-->
|government_type = <!--Wikilinked if link exists-->
|leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")-->
|leader_name1 =
|leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)-->
|leader_name2 =
|leader_title14 = <!--(up to 14 distinct leaders may be included)-->
|leader_name14 =
|legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc-->
|upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")-->
|lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")-->
|sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)-->
|sovereignty_note =
|established_event1 = <!--First key event in history of country/territory's status or formation-->
|established_date1 = <!--Date of first key event-->
|established_event2 = <!--Second key event-->
|established_date2 = <!--Date of second key event-->
|established_event13 = <!--(up to 13 distinct events may be included)-->
|established_date13 =
|area_rank =
|area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)-->
|area_km2 = <!--Major area size (in square km)-->
|area_sq_mi = <!--Area in square mi (requires area_km2)-->
|area_footnote = <!--Optional footnote for area-->
|percent_water =
|area_label = <!--Label under "Area" (default is "Total")-->
|area_label2 = <!--Label below area_label (optional)-->
|area_data2 = <!--Text after area_label2 (optional)-->
|population_estimate =
|population_estimate_rank =
|population_estimate_year =
|population_census =
|population_census_year =
|population_density_km2 =
|population_density_sq_mi =
|population_density_rank =
|nummembers = <!--An alternative to population for micronation-->
|GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)-->
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_PPP_per_capita_rank =
|GDP_nominal =
|GDP_nominal_rank =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|GDP_nominal_per_capita_rank =
|Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)-->
|Gini_ref = <!--(for any ref/s to associate with Gini number)-->
|Gini_rank =
|Gini_year =
|HDI_year = <!-- Please use the year to which the data refers, not the publication year-->
|HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)-->
|HDI_change = <!--increase/decrease/steady; rank change from previous year-->
|HDI_rank =
|HDI_ref = <!--(for any ref/s to associate with HDI number)-->
|currency = <!--Name/s of currency/ies used in country/territory-->
|currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)-->
|time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)-->
|utc_offset = <!--in the form "+N", where N is number of hours offset-->
|time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty-->
|utc_offset_DST = <!--in the form "+N", where N is number of hours offset-->
|DST_note = <!--Optional note regarding DST use-->
|antipodes = <!--Place/s exactly on the opposite side of the world to country/territory-->
|date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) -->
|drives_on = <!--"right" or "left" (side of road)-->
|cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)-->
|iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".-->
|calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc-->
|patron_saint = <!--Use patron_saints for multiple-->
|image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it-->
|alt_map3 = <!--alt text for third map position-->
|footnote_a = <!--For any footnote <sup>a</sup> used above-->
|footnote_b = <!--For any footnote <sup>b</sup> used above-->
|footnote_h = <!--For any footnote <sup>h</sup> used above-->
|footnotes = <!--For any generic non-numbered footnotes-->
}}
</syntaxhighlight>
{{hidden end}}
{{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)-->
Note: Now redundant.
<syntaxhighlight lang="wikitext">
|metropole =
|metropole_area =
|metropole_area_rank =
|metropole_area_magnitude =
|metropole_areami² =
|metropole_population =
|metropole_population_estimate_rank =
|foot =
|foot2 =
|foot3 =
|foot4 =
|foot5 =
</syntaxhighlight>
<!--(France-specific parameters)-->
{{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}}
{{hidden end}}
<!------------------------- Geopolitical use -------------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name = <!-- (in English) -->
|native_name = <!-- Long-form name in native or any/all non-English languages -->
|linking_name = <!-- For wikilinks, if diff from name -->
|image_flag = <!-- Flag image's filename -->
|alt_flag = <!-- alt text for flag-->
|flag_border = <!--set to no to disable border around the flag-->
|symbol_type = <!-- Symbol, Emblem, Logo, etc. -->
|image_symbol = <!-- Symbol image's filename -->
|alt_symbol = <!-- alt text for symbol -->
|symbol_width = <!-- Symbol image's width (default 85px) -->
|motto = <!-- "[motto]" -->
|englishmotto = <!--English language version of motto-->
|anthem = <!-- ''[anthem name]'' -->
|text_symbol_type = <!-- for other types of text symbol -->
|text_symbol = <!-- e.g. ''[hymn name]'' -->
|image_map = <!-- Map image's filename -->
|loctext = <!--text description of location of organization-->
|alt_map = <!-- alt text for map image -->
|map_width = <!-- Map image's width (default 250px) -->
|map_caption =
|org_type = <!-- e.g. Trade bloc -->
|membership_type = <!-- (default "Membership") -->
|membership = <!-- Type/s and/or number/s of members -->
|admin_center_type = <!-- e.g. "Administrative center" (default) -->
|admin_center = <!-- Location/s of administrative center/s -->
|languages_type = <!-- e.g. "[[Official language]]s" (default) -->
|languages =
|leader_title1 = <!-- e.g. "Chair", "President", etc. -->
|leader_name1 =
|leader_title2 = <!-- e.g. "Deputy chair", etc. -->
|leader_name2 =
|leader_title14 =
|leader_name14 =
|established = <!-- Usually a date, in lieu of event/s hereafter -->
|established_event1 =
|established_date1 =
|established_event2 =
|established_date2 =
|established_event9 =
|established_date9 =
|official_website =
|area_km2 = <!-- major area size (in sq_km) -->
|area_sq_mi = <!-- area in square mi (requires area_km2) -->
|area_footnote = <!-- optional footnote for area -->
|percent_water =
|area_label = <!-- label under "Area" (default is "Total") -->
|area_label2 = <!-- label below area_label (optional) -->
|area_dabodyalign = <!-- text after area_label2 (optional) -->
|population_estimate =
|population_estimate_year =
|population_density_km2 =
|population_density_sq_mi =
|GDP_PPP =
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_nominal =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|Gini = <!-- number only, 0-100 -->
|Gini_ref = <!-- for any ref/s to associate with Gini number -->
|Gini_year =
|HDI = <!-- number only, 0-1 -->
|HDI_ref = <!-- for any ref/s to associate with HDI number -->
|HDI_year =
|currency =
|currency_code =
|time_zone =
|utc_offset = <!-- +N, where N is number of hours -->
|footnote1 =
|footnote2 =
|footnote7 =
|footnotes = <!-- For generic non-numbered footnotes -->
}}
</syntaxhighlight>
{{hidden end}}
<!-------------------- Former country use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English.
Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. -->
|conventional_long_name = <!-- Full name in English -->
|common_name = <!-- Name to be used in constructing links and category names; not for display -->
|iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166-->
|era = <!-- Use: "Napoleonic Wars", "Cold War", etc. -->
|status = <!-- Status: see Category list on template page -->
|status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. -->
|empire = <!-- The empire or country to which the entity was in a state of dependency -->
|government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories -->
<!-- Rise and fall, events, years and dates -->
<!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" -->
|event_start = <!-- Default: "Established" -->
|date_start = <!-- Optional: Date of establishment, in format 1 January (no year) -->
|year_start = <!-- Year of establishment -->
|event_end = <!-- Default: "Disestablished" -->
|date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) -->
|year_end = <!-- Year of disestablishment -->
|year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") -->
|year_exile_end = <!-- Year of end of exile (leave blank if still in exile) -->
|event1 = <!-- Optional: other events between "start" and "end" -->
|date_event1 =
|event2 =
|date_event2 =
|event3 =
|date_event3 =
|event4 =
|date_event4 =
|event5 =
|date_event5 =
|event6 =
|date_event6 =
|event_pre = <!-- Optional: A crucial event that took place before "event_start" -->
|date_pre =
|event_post = <!-- Optional: A crucial event that took place after "event_end" -->
|date_post =
<!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 -->
|p1 = <!-- Name of the article for preceding entity, numbered 1-5 -->
|flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) -->
|image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|p2 =
|flag_p2 =
|p3 =
|flag_p3 =
|p4 =
|flag_p4 =
|p5 =
|flag_p5 =
|s1 = <!-- Name of the article for succeeding entity, numbered 1-5 -->
|flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) -->
|image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|s2 =
|flag_s2 =
|s3 =
|flag_s3 =
|s4 =
|flag_s4 =
|s5 =
|flag_s5 =
|image_flag = <!-- Default: Flag of {{{common_name}}}.svg -->
|flag_alt = <!-- Alt text for flag -->
|image_flag2 = <!-- Second flag -->
|flag_alt2 = <!-- Alt text for second flag -->
|flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} -->
|flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} -->
|flag_type = <!-- Displayed text for link under flag. Default "Flag" -->
|flag2_type = <!-- Displayed text for link under flag2. Default "Flag" -->
|image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg -->
|coa_size = <!-- Size of coat of arms -->
|coat_alt = <!-- Alt text for coat of arms -->
|symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" -->
|symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} -->
|image_map =
|image_map_size = <!--Map size in number of pixels-->
|image_map_alt =
|image_map_caption =
|image_map2 = <!-- If second map is needed; does not appear by default -->
|image_map2_size = <!--Map size in number of pixels-->
|image_map2_alt =
|image_map2_caption =
|capital =
|capital_exile = <!-- If status="Exile" -->
|national_motto =
|national_anthem =
|common_languages =
|religion =
|demonym =
|currency =
<!-- Titles and names of the first and last leaders and their deputies -->
|leader1 = <!-- Name of king or president -->
|leader2 =
|leader3 =
|leader4 =
|leader21 = <!--(up to 21 distinct leaders may be included)-->
|year_leader1 = <!-- Years served -->
|year_leader2 =
|year_leader3 =
|year_leader4 =
|year_leader21 =
|title_leader = <!-- Default: "King" for monarchy, otherwise "President" -->
|representative1 = <!-- Name of representative of head of state (e.g. colonial governor) -->
|representative2 =
|representative3 =
|representative4 =
|representative5 =
|year_representative1 = <!-- Years served -->
|year_representative2 =
|year_representative3 =
|year_representative4 =
|year_representative5 =
|title_representative = <!-- Default: "Governor" -->
|deputy1 = <!-- Name of prime minister -->
|deputy2 =
|deputy3 =
|deputy4 =
|year_deputy1 = <!-- Years served -->
|year_deputy2 =
|year_deputy3 =
|year_deputy4 =
|title_deputy = <!-- Default: "Prime minister" -->
<!-- Legislature -->
|legislature = <!-- Name of legislature -->
|house1 = <!-- Name of first chamber -->
|type_house1 = <!-- Default: "Upper house" -->
|house2 = <!-- Name of second chamber -->
|type_house2 = <!-- Default: "Lower house" -->
<!-- Area and population of a given year -->
|stat_year1 = <!-- year of the statistic, specify either area, population or both -->
|stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated -->
|stat_pop1 = <!-- population (w/o commas or spaces) -->
|stat_year2 =
|stat_area2 =
|stat_pop2 =
|stat_year3 =
|stat_area3 =
|stat_pop3 =
|stat_year4 =
|stat_area4 =
|stat_pop4 =
|stat_year5 =
|stat_area5 =
|stat_pop5 =
|today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG -->
|footnote_a = <!-- Accepts wikilinks -->
|footnote_b = <!-- Accepts wikilinks -->
...
|footnote_h = <!-- Accepts wikilinks -->
|footnotes = <!-- Accepts wikilinks -->
}}
</syntaxhighlight>
{{hidden end}}
== Examples ==
<!------------------ Country/territory example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST =
|utc_offset_DST =
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST = not observed
|utc_offset_DST = +1
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
</syntaxhighlight>
{{hidden end}}
<!-------------- Geopolitical organization example --------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]" {{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]]
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607<!--same ref as above-->
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]'' {{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}}
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
</syntaxhighlight>
{{hidden end}}
<!------------------ Former country example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:49428470}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:64925993}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:41058792}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:41058792}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
</syntaxhighlight>
{{hidden end}}
== Errors ==
If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]].
== Microformat ==
{{UF-hcard-place}}
== Tracking categories ==
* {{clc|Country articles requiring maintenance}}
* {{clc|Pages using infobox country with unknown parameters}}
* {{clc|Pages using infobox country with syntax problems}}
* {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}}
* {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}}
* {{clc|Former country articles using status text with Colony or Exile}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.",
"format": "{{_\n| ______________________ = _\n}}\n",
"params": {
"conventional_long_name": {
"label": "Conventional long name",
"type": "string",
"required": false,
"description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.",
"example": "The United States of America"
},
"common_name": {},
"linking_name": {},
"native_name": {
"label": "Native name",
"type": "string",
"required": false,
"example": "{{native name|Bundesrepublik Deutschland}}",
"description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text."
},
"name": {
"label": "Geopolitical organisation name",
"type": "string",
"required": false,
"description": "Name of the geopolitical organisation in English."
},
"overlord" : {
"label": "Overlord",
"type": "string",
"required": false,
"description": "Name of the Overlord if any, wiki-linked"
},
"image_flag": {
"label": "Flag",
"type": "wiki-file-name",
"required": false,
"example": "Flag of Iceland.svg",
"description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:"
},
"flag_width": {
"label": "Flag width",
"type": "string",
"required": false,
"description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px."
},
"alt_flag": {
"label": "Flag alt text",
"type": "string",
"required": false,
"description": "Alternate text for flag (text shown when pointer hovers over flag)."
},
"flag_border": {
"label": "Flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"flag_caption": {
"label": "Flag caption",
"type": "string",
"required": false,
"description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.",
"example": "1992 version of the flag prior to the country's dissolution"
},
"image_flag2": {
"label": "Second flag",
"type": "wiki-file-name",
"required": false,
"example": "Secondflag of Namibia.svg",
"description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets."
},
"alt_flag2": {
"label": "Second flag alt text",
"type": "string",
"required": false,
"description": "Alt text for second flag (text shown when pointer hovers over flag)."
},
"flag2_border": {
"label": "Second flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"image_coat": {
"label": "Coat of arms",
"type": "wiki-file-name",
"aliases": [
"image_symbol"
],
"example": "Great Seal of the United States (obverse).svg"
},
"symbol_width": {
"label": "Symbol width",
"type": "string",
"required": false,
"description": "Symbol image's width.",
"default": "85px"
},
"alt_coat": {
"label": "Coat of arms alt text",
"type": "string",
"aliases": [
"alt_symbol",
"coat_alt"
],
"required": false,
"description": "Alt text for coat of arms."
},
"symbol_type": {
"label": "Symbol type",
"type": "string",
"required": false,
"description": "If not a coat of arms.",
"example": "emblem, seal, etc"
},
"symbol_type_article": {
"label": "Symbol type article",
"type": "string",
"description": "An article about the type of symbol of the country"
},
"text_symbol": {
"label": "Text symbol",
"type": "string",
"required": false,
"description": "For other types of text symbol.",
"example": "''[hymn name]''"
},
"text_symbol_type": {
"label": "Text symbol type",
"type": "string",
"required": false,
"description": "For other types of text symbol."
},
"other_symbol": {
"label": "Other symbol",
"type": "string",
"required": false,
"description": "Use if a further symbol exists."
},
"other_symbol_type": {
"label": "Other symbol type",
"type": "string",
"required": false
},
"national_motto": {
"label": "National motto",
"type": "string",
"required": false,
"example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}",
"description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English."
},
"motto": {
"label": "Motto",
"type": "string",
"required": false
},
"national_anthem": {
"label": "National anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"anthem": {
"label": "Anthem",
"type": "string",
"required": false
},
"royal_anthem": {
"label": "Royal anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"image_map": {
"label": "Map",
"type": "string",
"required": false,
"example": "LocationCountry.svg"
},
"map_width": {
"label": "Map width",
"type": "string",
"required": false,
"description": "Map image's width.",
"default": "250px"
},
"alt_map": {
"label": "Map alt text",
"type": "string",
"required": false
},
"map_caption": {
"label": "Map caption",
"type": "string",
"required": false,
"description": "Caption to place below map."
},
"image_map2": {
"label": "Map 2",
"type": "string",
"required": false,
"description": "Another map, if required."
},
"map2_width": {
"label": "Map 2 width",
"type": "string",
"required": false
},
"alt_map2": {
"label": "Map 2 alt text",
"type": "string",
"required": false
},
"map_caption2": {
"label": "Map 2 caption",
"type": "string",
"required": false,
"description": "Caption to place below second map."
},
"image_map3": {},
"map3_width": {},
"alt_map3": {},
"map_caption3": {},
"capital": {
"label": "Capital",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type": {
"label": "Capital type",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"type": "string",
"required": false,
"description": "The geographic coordinates of the capital."
},
"latd": {
"label": "Latitude degrees",
"type": "string",
"required": false,
"description": "The degrees of the capital's latitude."
},
"latm": {
"label": "Latitude minutes",
"type": "string",
"description": "The minutes of the capital's latitude."
},
"latNS": {
"label": "Latitude NS",
"type": "string",
"description": "The direction of the capital's latitude."
},
"longd": {
"label": "Longitude degrees",
"type": "string",
"description": "The degrees of the capital's longitude."
},
"longm": {
"label": "Longitude minutes",
"type": "string",
"description": "The minutes of the capital's longitude."
},
"longEW": {
"label": "Longitude EW",
"type": "string",
"description": "The direction of the capital's longitude."
},
"admin_center": {
"label": "Administrative center",
"type": "string",
"required": false,
"description": "Location/s of administrative center/s."
},
"admin_center_type": {
"label": "Administrative center type",
"type": "string",
"required": false,
"default": "Administrative center"
},
"capital2": {
"label": "Capital 2",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type2": {
"label": "Capital 2 type",
"type": "string",
"required": false
},
"admin_center2": {
"label": "Administrative center 2",
"type": "string",
"required": false
},
"admin_center_type2": {
"label": "Administrative center 2 type",
"type": "string",
"required": false
},
"largest_city": {
"label": "Largest city",
"type": "string",
"required": false,
"description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital."
},
"largest_settlement": {
"label": "Largest settlement",
"type": "string",
"required": false,
"description": "Name of largest settlement if not a city."
},
"largest_settlement_type": {
"label": "Largest settlement type",
"type": "string",
"required": false,
"description": "Type of settlement if largest settlement not a city."
},
"official_languages": {
"label": "Official languages",
"type": "string",
"required": false,
"description": "Languages recognised in legislation, constitution, etc."
},
"national_languages": {
"label": "National languages",
"type": "string",
"required": false,
"description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc."
},
"regional_languages": {
"label": "Regional languages",
"type": "string",
"required": false,
"description": "Languages recognised or associated with particular regions within the country/territory."
},
"languages_type": {
"label": "Languages type",
"type": "string",
"description": "Use to specify a further type of language, if not official, national or regional."
},
"languages_sub": {
"label": "Languages sub",
"type": "string",
"required": false,
"description": "Is this further type of language a sub-item of the previous non-sub type?",
"example": "'yes' or 'no'"
},
"languages": {
"label": "Languages",
"type": "string",
"required": false,
"description": "Languages of the further type."
},
"languages2_type": {
"label": "2nd languages type",
"type": "string",
"description": "Use to specify a 2nd further type of language, if not official, national or regional."
},
"languages2_sub": {
"label": "Languages 2 sub",
"type": "string",
"required": false,
"description": "Is the second alternative type of languages a sub-item of the previous non-sub type?",
"example": "'yes or 'no'"
},
"languages2": {
"label": "Languages 2",
"type": "string",
"required": false,
"description": "Languages of the second further type."
},
"ethnic_groups": {
"label": "Ethnic groups",
"type": "string",
"required": false,
"description": "The primary ethnic groups of the country",
"example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | 7.0% [[Malaysian Indian|Indian]] | 1.0% Others }}"
},
"ethnic_groups_ref": {
"label": "Ethnic groups reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of ethnic composition"
},
"ethnic_groups_year": {
"label": "Ethnic groups year",
"type": "number",
"required": false,
"description": "Year the ethnic group statistic is from",
"example": "2017"
},
"religion": {
"label": "Religions",
"type": "string",
"required": false,
"description": "List of religious affiliations in {{ublist}} format",
"example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}"
},
"religion_ref": {
"label": "Religions reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of religious composition"
},
"demonym": {
"label": "Demonym",
"type": "string",
"required": false,
"description": "Name of residents of this country",
"example": "Singaporean",
"suggested": true
},
"org_type": {
"label": "Organization type",
"type": "string",
"required": false
},
"membership": {
"label": "membership",
"type": "string",
"required": false
},
"membership_type": {
"label": "membership_type",
"type": "string",
"required": false
},
"government_type": {
"label": "Type of government",
"type": "string",
"required": false,
"description": "The type of government, e.g. federal republic",
"example": "[[Monarchy]]"
},
"politics_link": {
"label": "Politics link",
"type": "string",
"required": false
},
"leader_title1": {
"label": "Leader 1 title",
"type": "line",
"required": false,
"description": "Title of principal leader",
"example": "[[President of Singapore|President]]"
},
"leader_name1": {
"label": "Leader 1 name",
"type": "line",
"required": false,
"description": "Name of principal leader",
"example": "[[Halimah Yacob]]"
},
"leader_title2": {
"label": "Leader 2 title",
"type": "line",
"required": false,
"description": "Title of 2nd leader",
"example": "[[Prime Minister of Singapore|Prime Minister]]"
},
"leader_name2": {
"label": "Leader 2 name",
"type": "line",
"description": "Name of 2nd leader",
"example": "[[Lee Hsien Loong]]"
},
"leader_title3": {
"label": "Leader 3 title",
"type": "line",
"required": false,
"description": "Title of 3rd leader",
"example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]"
},
"leader_name3": {
"label": "Leader 3 name",
"type": "line",
"description": "Name of 3rd leader",
"example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]"
},
"leader_title4": {
"label": "Leader 4 title",
"type": "line",
"required": false,
"description": "Title of the 4th leader",
"example": "[[President pro tempore of the United States Senate|President pro tempore]]"
},
"leader_name4": {
"label": "Leader 4 name",
"type": "line",
"description": "Name of the 4th leader"
},
"leader_title5": {
"label": "leader_title5",
"type": "string",
"required": false
},
"leader_name5": {
"label": "Leader name 5",
"type": "string"
},
"leader_title6": {
"label": "Leader title 6",
"type": "string",
"required": false
},
"leader_name6": {
"label": "Leader name 6",
"type": "string"
},
"leader_title7": {
"label": "Leader title7",
"type": "string",
"required": false
},
"leader_name7": {
"label": "Leader name 7",
"type": "string"
},
"leader_title8": {
"label": "Leader title 8",
"type": "string",
"required": false
},
"leader_name8": {
"label": "Leader name 8",
"type": "string"
},
"leader_title9": {
"label": "Leader title 9",
"type": "string",
"required": false
},
"leader_name9": {
"label": "Leader name 9",
"type": "string"
},
"leader_title10": {
"label": "Leader title 10",
"type": "string",
"required": false
},
"leader_name10": {
"label": "Leader name 10",
"type": "string"
},
"leader_title11": {
"label": "Leader title 11",
"type": "string",
"required": false
},
"leader_name11": {
"label": "Leader name 11",
"type": "string"
},
"leader_title12": {
"label": "Leader title 12",
"type": "string",
"required": false
},
"leader_name12": {
"label": "Leader name 12",
"type": "string"
},
"leader_title13": {
"label": "Leader title 13",
"type": "string",
"required": false
},
"leader_name13": {
"label": "Leader name 13",
"type": "string"
},
"leader_title14": {
"label": "Leader title 14",
"type": "string",
"required": false
},
"leader_name14": {
"label": "Leader name 14",
"type": "string"
},
"legislature": {
"label": "Legislature",
"type": "line",
"description": "Name of, and link to, the country's national legislature",
"example": "[[Parliament of Singapore|Parliament]]"
},
"upper_house": {
"description": "Upper house of the country or organization's legislature",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"lower_house": {
"description": "Lower house of the country or organization's legislature",
"label": "Lower house",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"sovereignty_type": {
"label": "Sovereignty type",
"type": "line",
"required": false,
"description": "Type of sovereignty this country has",
"example": "Independence"
},
"sovereignty_note": {
"label": "Sovereignty note",
"type": "content",
"required": false,
"description": "Note about this country's sovereignty",
"example": "from the [[United Kingdom]]"
},
"established": {
"label": "established",
"type": "string",
"required": false
},
"established_event1": {
"label": "Establishment event 1",
"type": "string",
"required": false
},
"established_date1": {
"label": "Establishment date 1",
"type": "string",
"required": false
},
"established_event2": {
"label": "Establishment event 2",
"type": "string",
"required": false
},
"established_date2": {
"label": "Establishment date 2",
"type": "string",
"required": false
},
"established_event3": {
"label": "Establishment event 3",
"type": "string",
"required": false
},
"established_date3": {
"label": "Establishment date 3",
"type": "string",
"required": false
},
"established_event4": {
"label": "Establishment event 4",
"type": "string",
"required": false
},
"established_date4": {
"label": "established_date4",
"type": "string",
"required": false
},
"established_event5": {
"label": "Establishment event 5",
"type": "string",
"required": false
},
"established_date5": {
"label": "established_date5",
"type": "string",
"required": false
},
"established_event6": {
"label": "established_event6",
"type": "string",
"required": false
},
"established_date6": {
"label": "established_date6",
"type": "string",
"required": false
},
"established_event7": {
"label": "established_event7",
"type": "string",
"required": false
},
"established_date7": {
"label": "established_date7",
"type": "string",
"required": false
},
"established_event8": {
"label": "established_event8",
"type": "string",
"required": false
},
"established_date8": {
"label": "established_date8",
"type": "string",
"required": false
},
"established_event9": {
"label": "established_event9",
"type": "string",
"required": false
},
"established_date9": {
"label": "established_date9",
"type": "string",
"required": false
},
"established_event10": {
"label": "established_event10",
"type": "string",
"required": false
},
"established_date10": {
"label": "established_date10",
"type": "string",
"required": false
},
"established_event11": {
"label": "established_event11",
"type": "string",
"required": false
},
"established_date11": {
"label": "established_date11",
"type": "string",
"required": false
},
"established_event12": {
"label": "established_event12",
"type": "string",
"required": false
},
"established_date12": {
"label": "established_date12",
"type": "string",
"required": false
},
"area_km2": {
"label": "Land area (km²)",
"type": "number",
"required": false,
"description": "Land area of the country in square kilometers",
"example": "722.5",
"suggested": true
},
"area_link": {
"label": "area_link",
"type": "string",
"required": false
},
"area_label": {
"label": "area_label",
"type": "string",
"required": false
},
"FR_foot4": {
"label": "FR_foot4",
"type": "string",
"required": false,
"deprecated": true
},
"area_footnote": {
"label": "area_footnote",
"type": "string",
"required": false
},
"area_rank": {
"label": "Area rank",
"type": "string",
"required": false,
"description": "Rank among countries of land area",
"example": "174th",
"suggested": true
},
"area_sq_mi": {
"label": "Land area (mi²)",
"type": "number",
"required": false,
"description": "Land area of the country in square miles",
"example": "290"
},
"percent_water": {
"label": "percent_water",
"type": "string",
"required": false
},
"area_label2": {
"label": "area_label2",
"type": "string",
"required": false
},
"area_data2": {
"label": "area_data2",
"type": "string",
"required": false
},
"area_label3": {
"label": "area_label3",
"type": "string",
"required": false
},
"area_data3": {
"label": "area_data3",
"type": "string",
"required": false
},
"FR_metropole": {
"label": "FR_metropole",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot2": {
"label": "FR_foot2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_km2": {
"label": "FR_IGN_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_rank": {
"label": "FR_IGN_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_sq_mi": {
"label": "FR_IGN_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot3": {
"label": "FR_foot3",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_km2": {
"label": "FR_cadastre_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_rank": {
"label": "FR_cadastre_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_sq_mi": {
"label": "FR_cadastre_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"population_estimate": {
"label": "Population estimate",
"type": "number",
"required": false,
"description": "An estimate of the country's population",
"example": "24,000,000"
},
"population_census": {
"label": "Population census",
"type": "string"
},
"population_link": {
"label": "Population link",
"type": "url"
},
"population_estimate_year": {
"label": "Population estimate year",
"type": "number",
"description": "The year the population estimate is from",
"example": "2018"
},
"population_estimate_rank": {
"label": "Population estimate rank",
"type": "string",
"description": "Rank among countries in estimated population",
"example": "3rd"
},
"population_label2": {
"label": "population_label2",
"type": "string",
"required": false
},
"population_data2": {
"label": "Population data 2",
"type": "string",
"required": false
},
"population_label3": {
"label": "Population label 3",
"type": "string",
"required": false
},
"population_data3": {
"label": "Population data 3",
"type": "string",
"required": false
},
"population_census_year": {
"label": "Population census year",
"type": "number",
"required": false,
"description": "Year the population census statistics are from",
"example": "2010"
},
"population_census_rank": {
"label": "Population census rank",
"type": "string",
"description": "Rank among countries in census population",
"example": "3rd"
},
"population_density_km2": {
"label": "Population density per km²",
"type": "number",
"example": "20,212",
"description": "Population density per square kilometer"
},
"population_density_sq_mi": {
"label": "Population density per mi²",
"type": "number",
"description": "Population density per square mile",
"example": "20,212"
},
"pop_den_footnote": {
"label": "Population density footnote",
"type": "string",
"description": "footnote about the population density statistic"
},
"population_density_rank": {
"label": "Population density rank",
"type": "string",
"required": false,
"description": "Rank among countries in population density",
"example": "3rd"
},
"FR_metropole_population": {
"label": "FR_metropole_population",
"type": "string",
"required": false,
"deprecated": true
},
"FR_total_population_estimate_year": {
"label": "FR_total_population_estimate_year",
"type": "string",
"deprecated": true
},
"FR_foot": {
"label": "FR_foot",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate": {
"label": "FR_total_population_estimate",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate_rank": {
"label": "FR_total_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_metropole_population_estimate_rank": {
"label": "FR_metropole_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_foot5": {
"label": "FR_foot5",
"type": "string",
"required": false,
"deprecated": true
},
"GDP_PPP": {
"label": "GDP (PPP)",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity)",
"example": "$554.855 billion",
"suggested": true
},
"GDP_PPP_year": {
"label": "GDP (PPP) year cited",
"type": "number",
"required": false,
"description": "Year the GDP (PPP) statistic is cited from",
"example": "2018",
"suggested": true
},
"GDP_PPP_rank": {
"label": "GDP (PPP) rank",
"type": "string",
"required": false,
"description": "Rank among countries for GDP PPP",
"example": "39th"
},
"GDP_PPP_per_capita": {
"label": "GDP_PPP_per_capita",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity) per capita",
"example": "$98,014"
},
"GDP_PPP_per_capita_rank": {
"label": "GDP (PPP) per capita rank",
"type": "line",
"required": false,
"description": "Rank among countries for GDP PPP per capita",
"example": "3rd"
},
"GDP_nominal": {
"label": "GDP (nominal)",
"type": "string",
"required": false,
"description": "Nominal GDP of the country"
},
"GDP_nominal_year": {
"label": "GDP (nominal) year",
"type": "number",
"required": false,
"description": "Year cited for the country's nominal GDP statistic"
},
"GDP_nominal_rank": {
"label": "GDP (nominal) rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP",
"example": "41st"
},
"GDP_nominal_per_capita": {
"label": "GDP (nominal) per capita",
"type": "string",
"required": false,
"description": "Nominal GDP per capita in the country",
"example": "$61,766"
},
"GDP_nominal_per_capita_rank": {
"label": "GDP (nominal) per capita rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP per capita",
"example": "8th"
},
"Gini": {
"label": "Gini index",
"type": "number",
"required": false,
"description": "Gini index of the country",
"example": "46.4"
},
"Gini_year": {
"label": "Gini index year cited",
"type": "number",
"required": false,
"description": "Year the gini index statistic is cited for",
"example": "2014"
},
"Gini_change": {
"label": "Gini change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" (over last year)",
"example": "increase"
},
"Gini_ref": {
"label": "Gini index reference",
"type": "line",
"required": false,
"description": "Reference for cited Gini index statistic"
},
"Gini_rank": {
"label": "Gini rank",
"type": "string",
"required": false,
"description": "Rank of Gini indices",
"example": "30th"
},
"HDI": {
"label": "Human development index",
"type": "number",
"required": false,
"example": "0.932",
"suggested": true,
"description": "The country's human development index (HDI)"
},
"HDI_year": {
"label": "Human Development Index year",
"type": "number",
"required": false,
"description": "Year to which the HDI statistic refers",
"example": "2017",
"suggested": true
},
"HDI_change": {
"label": "HDI change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" from previous year",
"example": "increase"
},
"HDI_ref": {
"label": "Human Development Index reference",
"type": "line",
"required": false,
"description": "Reference for HDI statistic"
},
"HDI_rank": {
"label": "Human development index rank",
"type": "string",
"required": false,
"description": "Rank among countries for HDI score",
"example": "9th"
},
"currency": {
"label": "Currency",
"type": "line",
"required": false,
"description": "National/official currency name and article link",
"example": "[[Singapore dollar]]"
},
"currency_code": {
"label": "Currency code",
"type": "line",
"required": false,
"description": "Currency code of the official currency",
"example": "SGD"
},
"time_zone": {
"label": "Time zone",
"type": "line",
"required": false,
"description": "National time zone(s)",
"example": "[[Singapore Standard Time|SST]]"
},
"utc_offset": {
"label": "UTC offsets",
"type": "string",
"example": "−4 to −12, +10, +11"
},
"utc_offset_DST": {
"label": "UTF offsets (DST)",
"type": "string",
"example": "−4 to −10"
},
"DST_note": {
"label": "DST note",
"type": "string",
"example": "{{efn|name=\"time\"}}"
},
"time_zone_DST": {
"label": "Time zones (DST)",
"type": "string",
"required": false
},
"DST": {
"label": "Daylight savings time",
"type": "string",
"required": false
},
"antipodes": {
"label": "antipodes",
"type": "string",
"required": false
},
"date_format": {
"label": "Date format",
"type": "string",
"required": false
},
"drives_on": {
"label": "drives on",
"type": "string",
"required": false
},
"rail gauge": {
"label": "Rail gauge",
"type": "string",
"required": false
},
"calling_code": {
"label": "Calling code",
"type": "string",
"example": "+1"
},
"patron_saint": {
"label": "Patron saint",
"aliases": [
"patron_saints"
],
"type": "string",
"required": false
},
"iso3166code": {
"label": "ISO 3166 code",
"type": "string",
"description": "ISO 3166 code for the country",
"example": "US"
},
"cctld": {
"label": "Country code top level domain",
"type": "string",
"example": ".se"
},
"official_website": {
"label": "official_website",
"type": "string",
"required": false,
"description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])."
},
"footnote_a": {
"label": "footnote_a",
"type": "string",
"required": false
},
"footnote_b": {
"label": "footnote_b",
"type": "string",
"required": false
},
"footnote_c": {
"label": "footnote_c",
"type": "string",
"required": false
},
"footnote_d": {
"label": "footnote_d",
"type": "string",
"required": false
},
"footnote_e": {
"label": "footnote_e",
"type": "string",
"required": false
},
"footnote_f": {
"label": "footnote_f",
"type": "string",
"required": false
},
"footnote_g": {
"label": "footnote_g",
"type": "string",
"required": false
},
"footnote_h": {
"label": "footnote_h",
"type": "string",
"required": false
},
"footnote1": {
"label": "footnote1",
"type": "string",
"required": false
},
"footnote2": {
"label": "footnote2",
"type": "string",
"required": false
},
"footnote3": {
"label": "footnote3",
"type": "string",
"required": false
},
"footnote4": {
"label": "footnote4",
"type": "string",
"required": false
},
"footnote5": {
"label": "footnote5",
"type": "string",
"required": false
},
"footnote6": {
"label": "footnote6",
"type": "string",
"required": false
},
"footnote7": {
"label": "footnote7",
"type": "string",
"required": false
},
"footnote8": {
"label": "footnote8",
"type": "string",
"required": false
},
"footnotes": {
"label": "footnotes",
"type": "string",
"required": false
},
"navbar": {
"label": "navbar",
"type": "string",
"required": false
},
"micronation": {},
"status": {
"type": "line"
},
"status_text": {
"type": "line"
},
"empire": {},
"year_end": {
"type": "number"
},
"year_exile_start": {
"type": "number"
},
"year_exile_end": {
"type": "number"
},
"life_span": {
"type": "line"
},
"year_start": {
"type": "number"
},
"flag_size": {
"type": "line"
},
"flag_alt": {
"type": "string"
},
"flag_alt2": {
"type": "string"
},
"flag_type": {
"type": "string"
},
"coa_size": {
"type": "line"
},
"englishmotto": {
"type": "string",
"label": "Motto in English",
"description": "The country's motto translated into English"
},
"image_map_size": {
"type": "line"
},
"image_map_alt": {
"type": "string"
},
"image_map_caption": {
"type": "content"
},
"image_map2_size": {
"type": "line"
},
"image_map2_alt": {
"type": "string"
},
"image_map2_caption": {
"type": "content"
},
"loctext": {
"type": "string"
},
"capital_exile": {
"type": "string"
},
"recognized_languages": {
"aliases": [
"recognised_languages"
],
"type": "content",
"label": "Recognized languages",
"description": "Recognized languages of the country, possibly in list format"
},
"recognized_national_languages": {
"aliases": [
"recognised_national_languages"
],
"type": "content",
"label": "Recognized national languages",
"description": "Recognized national languages of the country, possibly in list format"
},
"recognized_regional_languages": {
"aliases": [
"recognised_regional_languages"
],
"type": "content",
"label": "Recognized regional languages",
"description": "Recognized regional languages of the country, possibly in list format"
},
"common_languages": {
"type": "content",
"label": "Common languages",
"description": "Common languages of the country, possibly in list format",
"example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}"
},
"religion_year": {
"type": "number",
"label": "Religion statistic year",
"description": "Year the religion statistic is from",
"example": "2015"
},
"leader_title15": {
"type": "line"
},
"leader_name15": {
"type": "line"
},
"title_leader": {
"type": "line",
"label": "Leader's title",
"description": "Title of the country's leader",
"example": "[[President of the United States|President]]"
},
"year_leader1": {
"type": "line",
"label": "Leader 1 years",
"description": "Years the first leader reigned",
"example": "1776-1795"
},
"leader1": {
"type": "line",
"label": "Leader 1",
"description": "The first leader of the country",
"example": "[[George Washington]]"
},
"year_leader2": {
"type": "line"
},
"leader2": {
"type": "line"
},
"year_leader3": {
"type": "line"
},
"leader3": {
"type": "line"
},
"year_leader4": {
"type": "line"
},
"leader4": {
"type": "line"
},
"year_leader5": {
"type": "line"
},
"leader5": {
"type": "line"
},
"year_leader6": {
"type": "line"
},
"leader6": {
"type": "line"
},
"year_leader7": {
"type": "line"
},
"leader7": {
"type": "line"
},
"year_leader8": {
"type": "line"
},
"leader8": {
"type": "line"
},
"year_leader9": {
"type": "line"
},
"leader9": {
"type": "line"
},
"year_leader10": {
"type": "line"
},
"leader10": {
"type": "line"
},
"year_leader11": {
"type": "line",
"label": "Leader 11 years",
"description": "Year of leader 11",
"example": "1980-1987"
},
"leader11": {
"type": "line"
},
"title_representative": {
"type": "line",
"label": "Representative title",
"description": "Title of the country's representative",
"example": "[[Governor General of Canada|Governor General]]"
},
"year_representative1": {
"type": "line",
"label": "Representative 1 years",
"description": "Year of representative 1",
"example": "1492-1506"
},
"representative1": {
"type": "line",
"label": "Representative 1",
"description": "First representative"
},
"year_representative2": {
"type": "line",
"label": "Representative 2 years",
"description": "Year of representative 2",
"example": "1552-1580"
},
"representative2": {
"type": "line"
},
"year_representative3": {
"type": "line",
"label": "Representative 3 years",
"description": "Year of representative 3",
"example": "1652-1666"
},
"representative3": {
"type": "line"
},
"year_representative4": {
"type": "line",
"label": "Representative 4 year",
"description": "Year of representative 4",
"example": "1652-1666"
},
"representative4": {
"type": "line"
},
"year_representative5": {
"type": "line",
"label": "Representative 5 years",
"description": "Year of representative 5",
"example": "1652-1666"
},
"representative5": {
"type": "line"
},
"title_deputy": {
"type": "line"
},
"year_deputy1": {
"type": "line",
"label": "Deputy 1 years",
"description": "Years of the 1st deputy",
"example": "2006-2009"
},
"deputy1": {
"type": "line",
"label": "Deputy 1",
"description": "First deputy"
},
"year_deputy2": {
"type": "line",
"label": "Deputy 2 years",
"description": "Years of the 2nd deputy",
"example": "2009-2011"
},
"deputy2": {
"type": "line"
},
"year_deputy3": {
"type": "line",
"label": "Deputy 3 years",
"description": "Years of the 3rd deputy",
"example": "2011-2013"
},
"deputy3": {
"type": "line"
},
"year_deputy4": {
"type": "line",
"label": "Deputy 4 years",
"description": "Years of the 4th deputy",
"example": "2013-2016"
},
"deputy4": {
"type": "line"
},
"year_deputy5": {
"type": "line",
"label": "Deputy 5 years",
"description": "Years of the 5th deputy",
"example": "2016-2018"
},
"deputy5": {
"type": "line"
},
"year_deputy6": {
"type": "line",
"label": "Deputy 6 years",
"description": "Years of the 6th deputy",
"example": "2018-"
},
"deputy6": {
"type": "line"
},
"type_house1": {
"type": "line"
},
"house1": {
"type": "line"
},
"type_house2": {
"type": "line"
},
"house2": {
"type": "line"
},
"event_pre": {
"type": "line"
},
"established_event13": {
"label": "Establishment event 13",
"type": "line"
},
"established_date13": {
"label": "Establishment date 13",
"type": "date"
},
"established_event14": {
"type": "line"
},
"established_date14": {
"type": "line"
},
"established_event15": {
"type": "line"
},
"established_date15": {
"type": "line"
},
"event_start": {
"label": "Starting event",
"description": "The foundational event of the country",
"example": "Established",
"type": "string"
},
"date_pre": {},
"date_start": {
"label": "Date established",
"description": "Date the country, dynasty or organization was established (date of event_start)",
"example": "601 CE",
"type": "string"
},
"event1": {
"label": "Event 1",
"description": "First significant event",
"example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]",
"type": "string"
},
"date_event1": {
"label": "Event 1 date",
"description": "Date of the first significant event",
"example": "601",
"type": "date"
},
"event2": {
"label": "Event 2",
"description": "Second significant event",
"example": "[[Alliance Conducted at Sea|Alliance with Jin]]",
"type": "string"
},
"date_event2": {
"label": "Event 2 date",
"description": "Date of the second significant event",
"type": "string"
},
"event3": {
"label": "Event 3",
"description": "Third significant event",
"example": "[[Jingkang Incident]]",
"type": "string"
},
"date_event3": {},
"event4": {
"label": "Event 4",
"description": "Fourth significant event",
"example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]",
"type": "string"
},
"date_event4": {},
"event5": {
"label": "Event 5",
"description": "Fifth significant event",
"example": "Fall of [[Hangzhou|Lin'an]]",
"type": "string"
},
"date_event5": {},
"event6": {
"label": "Event 6",
"description": "Sixth significant event",
"example": "[[Krystallnacht]]",
"type": "string"
},
"date_event6": {},
"event_end": {
"label": "Event ending the country",
"description": "The event that caused the country to stop existing or transition, if applicable",
"example": "[[Battle of Yamen]] (end of dynasty)",
"type": "string"
},
"date_end": {
"label": "End date",
"description": "Date the country stopped existing or transitioned, if applicable",
"example": "1433",
"type": "date"
},
"event_post": {},
"date_post": {},
"area_ha": {},
"area_acre": {},
"area_land_km2": {},
"area_land_ha": {},
"area_land_sq_mi": {},
"area_land_acre": {},
"area_water_km2": {},
"area_water_ha": {},
"area_water_sq_mi": {},
"area_water_acre": {},
"stat_area1": {},
"stat_area2": {},
"stat_area3": {},
"stat_area4": {},
"stat_area5": {},
"area_land_footnote": {},
"area_water_footnote": {},
"stat_year1": {},
"ref_area1": {},
"stat_year2": {},
"ref_area2": {},
"stat_year3": {},
"ref_area3": {},
"stat_year4": {},
"ref_area4": {},
"stat_year5": {
"label": "Statistic 5 year",
"description": "Year of statistic 5",
"example": "1933",
"type": "number"
},
"ref_area5": {},
"stat_pop1": {},
"stat_pop2": {},
"stat_pop3": {},
"stat_pop4": {},
"stat_pop5": {},
"ref_pop1": {},
"ref_pop2": {},
"ref_pop3": {},
"ref_pop4": {},
"ref_pop5": {},
"nummembers": {},
"p1": {},
"s1": {},
"flag_p1": {},
"image_p1": {},
"border_p1": {},
"flag_p2": {},
"image_p2": {},
"p2": {},
"border_p2": {},
"flag_p3": {},
"image_p3": {},
"p3": {},
"border_p3": {},
"flag_p4": {},
"image_p4": {},
"p4": {},
"border_p4": {},
"flag_p5": {},
"image_p5": {},
"p5": {},
"border_p5": {},
"flag_p6": {},
"image_p6": {},
"p6": {},
"border_p6": {},
"flag_p7": {},
"image_p7": {},
"p7": {},
"border_p7": {},
"flag_p8": {},
"image_p8": {},
"p8": {},
"border_p8": {},
"flag_p9": {},
"image_p9": {},
"p9": {},
"border_p9": {},
"flag_p10": {},
"image_p10": {},
"p10": {},
"border_p10": {},
"flag_p11": {},
"image_p11": {},
"p11": {},
"border_p11": {},
"flag_p12": {},
"image_p12": {},
"p12": {},
"border_p12": {},
"flag_p13": {},
"image_p13": {},
"p13": {},
"border_p13": {},
"flag_p14": {},
"image_p14": {},
"p14": {},
"border_p14": {},
"flag_p15": {},
"image_p15": {},
"p15": {},
"border_p15": {},
"flag_s1": {},
"image_s1": {},
"border_s1": {},
"flag_s2": {},
"image_s2": {},
"s2": {},
"border_s2": {},
"flag_s3": {},
"image_s3": {},
"s3": {},
"border_s3": {},
"flag_s4": {},
"image_s4": {},
"s4": {},
"border_s4": {},
"flag_s5": {},
"image_s5": {},
"s5": {},
"border_s5": {},
"flag_s6": {},
"image_s6": {},
"s6": {},
"border_s6": {},
"flag_s7": {},
"image_s7": {},
"s7": {},
"border_s7": {},
"flag_s8": {},
"image_s8": {},
"s8": {},
"border_s8": {},
"flag_s9": {},
"image_s9": {},
"s9": {},
"border_s9": {},
"flag_s10": {},
"image_s10": {},
"s10": {},
"border_s10": {},
"flag_s11": {},
"image_s11": {},
"s11": {},
"border_s11": {},
"flag_s12": {},
"image_s12": {},
"s12": {},
"border_s12": {},
"flag_s13": {},
"image_s13": {},
"s13": {},
"border_s13": {},
"flag_s14": {},
"image_s14": {},
"s14": {},
"border_s14": {},
"flag_s15": {},
"image_s15": {},
"s15": {},
"border_s15": {},
"today": {
"label": "Today part of",
"description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.",
"example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}",
"type": "content",
"suggested": true
},
"footnotes2": {},
"symbol_caption": {},
"nested": {}
},
"paramOrder": [
"conventional_long_name",
"common_name",
"linking_name",
"native_name",
"name",
"image_flag",
"flag_width",
"alt_flag",
"flag_border",
"flag_caption",
"image_flag2",
"alt_flag2",
"flag2_border",
"image_coat",
"symbol_width",
"alt_coat",
"symbol_type",
"symbol_type_article",
"text_symbol",
"text_symbol_type",
"other_symbol",
"other_symbol_type",
"national_motto",
"motto",
"national_anthem",
"anthem",
"royal_anthem",
"image_map",
"map_width",
"alt_map",
"map_caption",
"image_map2",
"map2_width",
"alt_map2",
"map_caption2",
"image_map3",
"map3_width",
"alt_map3",
"map_caption3",
"capital",
"capital_type",
"overlord",
"coordinates",
"latd",
"latm",
"latNS",
"longd",
"longm",
"longEW",
"admin_center",
"admin_center_type",
"capital2",
"capital_type2",
"admin_center2",
"admin_center_type2",
"largest_city",
"largest_settlement",
"largest_settlement_type",
"official_languages",
"national_languages",
"regional_languages",
"languages_type",
"languages_sub",
"languages",
"languages2_type",
"languages2_sub",
"languages2",
"ethnic_groups",
"ethnic_groups_ref",
"ethnic_groups_year",
"religion",
"religion_ref",
"demonym",
"org_type",
"membership",
"membership_type",
"government_type",
"politics_link",
"leader_title1",
"leader_name1",
"leader_title2",
"leader_name2",
"leader_title3",
"leader_name3",
"leader_title4",
"leader_name4",
"leader_title5",
"leader_name5",
"leader_title6",
"leader_name6",
"leader_title7",
"leader_name7",
"leader_title8",
"leader_name8",
"leader_title9",
"leader_name9",
"leader_title10",
"leader_name10",
"leader_title11",
"leader_name11",
"leader_title12",
"leader_name12",
"leader_title13",
"leader_name13",
"leader_title14",
"leader_name14",
"legislature",
"upper_house",
"lower_house",
"sovereignty_type",
"sovereignty_note",
"established",
"established_event1",
"established_date1",
"established_event2",
"established_date2",
"established_event3",
"established_date3",
"established_event4",
"established_date4",
"established_event5",
"established_date5",
"established_event6",
"established_date6",
"established_event7",
"established_date7",
"established_event8",
"established_date8",
"established_event9",
"established_date9",
"established_event10",
"established_date10",
"established_event11",
"established_date11",
"established_event12",
"established_date12",
"area_km2",
"area_link",
"area_label",
"FR_foot4",
"area_footnote",
"area_rank",
"area_sq_mi",
"percent_water",
"area_label2",
"area_data2",
"area_label3",
"area_data3",
"FR_metropole",
"FR_foot2",
"FR_IGN_area_km2",
"FR_IGN_area_rank",
"FR_IGN_area_sq_mi",
"FR_foot3",
"FR_cadastre_area_km2",
"FR_cadastre_area_rank",
"FR_cadastre_area_sq_mi",
"population_estimate",
"population_census",
"population_link",
"population_estimate_year",
"population_estimate_rank",
"population_label2",
"population_data2",
"population_label3",
"population_data3",
"population_census_year",
"population_census_rank",
"population_density_km2",
"population_density_sq_mi",
"pop_den_footnote",
"population_density_rank",
"FR_metropole_population",
"FR_total_population_estimate_year",
"FR_foot",
"FR_total_population_estimate",
"FR_total_population_estimate_rank",
"FR_metropole_population_estimate_rank",
"FR_foot5",
"GDP_PPP",
"GDP_PPP_year",
"GDP_PPP_rank",
"GDP_PPP_per_capita",
"GDP_PPP_per_capita_rank",
"GDP_nominal",
"GDP_nominal_year",
"GDP_nominal_rank",
"GDP_nominal_per_capita",
"GDP_nominal_per_capita_rank",
"Gini",
"Gini_year",
"Gini_change",
"Gini_ref",
"Gini_rank",
"HDI",
"HDI_year",
"HDI_change",
"HDI_ref",
"HDI_rank",
"currency",
"currency_code",
"time_zone",
"utc_offset",
"utc_offset_DST",
"DST_note",
"time_zone_DST",
"DST",
"antipodes",
"date_format",
"drives_on",
"rail gauge",
"calling_code",
"patron_saint",
"iso3166code",
"cctld",
"official_website",
"footnote_a",
"footnote_b",
"footnote_c",
"footnote_d",
"footnote_e",
"footnote_f",
"footnote_g",
"footnote_h",
"footnote1",
"footnote2",
"footnote3",
"footnote4",
"footnote5",
"footnote6",
"footnote7",
"footnote8",
"footnotes",
"navbar",
"micronation",
"status",
"status_text",
"empire",
"year_end",
"year_exile_start",
"year_exile_end",
"life_span",
"year_start",
"flag_size",
"flag_alt",
"flag_alt2",
"flag_type",
"coa_size",
"englishmotto",
"image_map_size",
"image_map_alt",
"image_map_caption",
"image_map2_size",
"image_map2_alt",
"image_map2_caption",
"loctext",
"capital_exile",
"recognized_languages",
"recognized_national_languages",
"recognized_regional_languages",
"common_languages",
"religion_year",
"leader_title15",
"leader_name15",
"title_leader",
"year_leader1",
"leader1",
"year_leader2",
"leader2",
"year_leader3",
"leader3",
"year_leader4",
"leader4",
"year_leader5",
"leader5",
"year_leader6",
"leader6",
"year_leader7",
"leader7",
"year_leader8",
"leader8",
"year_leader9",
"leader9",
"year_leader10",
"leader10",
"year_leader11",
"leader11",
"title_representative",
"year_representative1",
"representative1",
"year_representative2",
"representative2",
"year_representative3",
"representative3",
"year_representative4",
"representative4",
"year_representative5",
"representative5",
"title_deputy",
"year_deputy1",
"deputy1",
"year_deputy2",
"deputy2",
"year_deputy3",
"deputy3",
"year_deputy4",
"deputy4",
"year_deputy5",
"deputy5",
"year_deputy6",
"deputy6",
"type_house1",
"house1",
"type_house2",
"house2",
"established_event13",
"established_date13",
"established_event14",
"established_date14",
"established_event15",
"established_date15",
"event_pre",
"date_pre",
"event_start",
"date_start",
"event1",
"date_event1",
"event2",
"date_event2",
"event3",
"date_event3",
"event4",
"date_event4",
"event5",
"date_event5",
"event6",
"date_event6",
"event_end",
"date_end",
"event_post",
"date_post",
"area_ha",
"area_acre",
"area_land_km2",
"area_land_ha",
"area_land_sq_mi",
"area_land_acre",
"area_water_km2",
"area_water_ha",
"area_water_sq_mi",
"area_water_acre",
"stat_area1",
"stat_area2",
"stat_area3",
"stat_area4",
"stat_area5",
"area_land_footnote",
"area_water_footnote",
"stat_year1",
"ref_area1",
"stat_year2",
"ref_area2",
"stat_year3",
"ref_area3",
"stat_year4",
"ref_area4",
"stat_year5",
"ref_area5",
"stat_pop1",
"stat_pop2",
"stat_pop3",
"stat_pop4",
"stat_pop5",
"ref_pop1",
"ref_pop2",
"ref_pop3",
"ref_pop4",
"ref_pop5",
"nummembers",
"p1",
"s1",
"flag_p1",
"image_p1",
"border_p1",
"flag_p2",
"image_p2",
"p2",
"border_p2",
"flag_p3",
"image_p3",
"p3",
"border_p3",
"flag_p4",
"image_p4",
"p4",
"border_p4",
"flag_p5",
"image_p5",
"p5",
"border_p5",
"flag_p6",
"image_p6",
"p6",
"border_p6",
"flag_p7",
"image_p7",
"p7",
"border_p7",
"flag_p8",
"image_p8",
"p8",
"border_p8",
"flag_p9",
"image_p9",
"p9",
"border_p9",
"flag_p10",
"image_p10",
"p10",
"border_p10",
"flag_p11",
"image_p11",
"p11",
"border_p11",
"flag_p12",
"image_p12",
"p12",
"border_p12",
"flag_p13",
"image_p13",
"p13",
"border_p13",
"flag_p14",
"image_p14",
"p14",
"border_p14",
"flag_p15",
"image_p15",
"p15",
"border_p15",
"flag_s1",
"image_s1",
"border_s1",
"flag_s2",
"image_s2",
"s2",
"border_s2",
"flag_s3",
"image_s3",
"s3",
"border_s3",
"flag_s4",
"image_s4",
"s4",
"border_s4",
"flag_s5",
"image_s5",
"s5",
"border_s5",
"flag_s6",
"image_s6",
"s6",
"border_s6",
"flag_s7",
"image_s7",
"s7",
"border_s7",
"flag_s8",
"image_s8",
"s8",
"border_s8",
"flag_s9",
"image_s9",
"s9",
"border_s9",
"flag_s10",
"image_s10",
"s10",
"border_s10",
"flag_s11",
"image_s11",
"s11",
"border_s11",
"flag_s12",
"image_s12",
"s12",
"border_s12",
"flag_s13",
"image_s13",
"s13",
"border_s13",
"flag_s14",
"image_s14",
"s14",
"border_s14",
"flag_s15",
"image_s15",
"s15",
"border_s15",
"today",
"footnotes2",
"symbol_caption",
"nested"
]
}
</templatedata>
{{cob}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
6cf8d40662e9a8e4feb40f6ccdc86098e875743c
File:Flag of the Philippines (1936–1985, 1986–1998).svg.png
6
439
952
2023-10-01T03:55:59Z
Dax0102
32
wikitext
text/x-wiki
Flag of the Philippines
188cc2a29c8c7032b15bb39308e0ec87cc10151e
File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg.png
6
440
956
2023-10-01T04:05:27Z
Dax0102
32
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Manuel Luis Quezon.png
6
441
965
2023-10-01T04:28:28Z
Dax0102
32
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Manuel Luis Quezon
0
442
966
2023-10-01T04:29:23Z
Dax0102
32
Created page with "{{Infobox officeholder | honorific_prefix = His Excellency, | name = Manuel Luis Quezon | image = Manuel Luis Quezon.png | office = [[President of the Philippines]] | allegiance = Philippines }}"
wikitext
text/x-wiki
{{Infobox officeholder
| honorific_prefix = His Excellency,
| name = Manuel Luis Quezon
| image = Manuel Luis Quezon.png
| office = [[President of the Philippines]]
| allegiance = Philippines
}}
99ac37d8542384515a0d6932d49279d858aaa9ae
Module:Transclusion count/data/A
828
1073
2344
2023-10-01T05:36:36Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["A-Class"] = 5500,
["AARTalk"] = 8900,
["ACArt"] = 5300,
["AFB_game_box_end"] = 2500,
["AFB_game_box_start"] = 2500,
["AFC_comment"] = 14000,
["AFC_submission"] = 24000,
["AFC_submission_category_header"] = 4600,
["AFD_help"] = 108000,
["AFD_help/styles.css"] = 108000,
["AFI/Picture_box/show_picture"] = 3700,
["AFI_film"] = 8100,
["AFL_Car"] = 2600,
["AFL_Col"] = 2500,
["AFL_Ess"] = 2500,
["AFL_Gee"] = 2500,
["AFL_Haw"] = 2400,
["AFL_Mel"] = 2700,
["AFL_NM"] = 2300,
["AFL_Ric"] = 2400,
["AFL_StK"] = 2900,
["AFL_Tables"] = 12000,
["AFL_Year"] = 2500,
["ALG"] = 2500,
["AMARB"] = 4400,
["AML"] = 4500,
["AMQ"] = 4500,
["AM_station_data"] = 4400,
["ARG"] = 6400,
["ASIN"] = 4600,
["ASN"] = 3400,
["ATP"] = 5000,
["AUS"] = 14000,
["AUT"] = 9500,
["AZE"] = 2600,
["A_note"] = 4300,
["A_or_an"] = 29000,
["Aan"] = 48000,
["Abbr"] = 796000,
["Abbreviation"] = 2300,
["Abbrlink"] = 18000,
["Abot"] = 12000,
["About"] = 152000,
["Absolute_page_title"] = 3900,
["Acad"] = 6500,
["Access_icon"] = 2900,
["According_to_whom"] = 4300,
["AchievementTable"] = 10000,
["Active_politician"] = 20000,
["AdSenseSummary"] = 4100,
["Added"] = 2400,
["Adjacent_communities"] = 26000,
["Adjacent_stations"] = 38000,
["Adjacent_stations/styles.css"] = 38000,
["Adjacent_stations_doc"] = 2000,
["Adjstn"] = 2200,
["Admin"] = 14000,
["Administrator_note"] = 6500,
["Adminnote"] = 3500,
["Advert"] = 18000,
["Aet"] = 5200,
["AfC_age_category"] = 3500,
["AfC_comment"] = 14000,
["AfC_date_category"] = 196000,
["AfC_status/age"] = 3600,
["AfC_status/backlog"] = 4100,
["AfC_submission"] = 37000,
["AfC_submission/comments"] = 23000,
["AfC_submission/declined"] = 23000,
["AfC_submission/declinedivbox"] = 23000,
["AfC_submission/draft"] = 16000,
["AfC_submission/helptools"] = 39000,
["AfC_submission/pending"] = 3500,
["AfC_submission/tools"] = 3600,
["AfC_submission_category_header"] = 5700,
["AfC_submission_category_header/day"] = 5500,
["AfC_submission_category_header/td"] = 5500,
["AfC_talk/C_percentage"] = 3300,
["AfC_topic"] = 25000,
["AfD_categories_horizontal_shortnames"] = 4400,
["AfD_count_link"] = 3800,
["Afd-merged-from"] = 8000,
["AfricaProject"] = 28000,
["Africa_topic"] = 6200,
["After_extra_time"] = 5200,
["Age"] = 37000,
["Age_in_days"] = 4400,
["Age_in_years"] = 3700,
["Age_in_years,_months,_weeks_and_days"] = 4100,
["Age_in_years,_months_and_days"] = 17000,
["Age_in_years_and_days"] = 4000,
["Age_in_years_and_days_nts"] = 3100,
["Agree"] = 2100,
["Ahnentafel"] = 8300,
["Ahnentafel/styles.css"] = 8300,
["Air_Force_Historical_Research_Agency"] = 4300,
["Air_force"] = 5900,
["Air_force/core"] = 5900,
["Aircontent"] = 9400,
["Aircraft_specs"] = 12000,
["Aircraft_specs/convert"] = 12000,
["Aircraft_specs/eng"] = 12000,
["Aircraft_specs/length"] = 12000,
["Aircraft_specs/range"] = 12000,
["Aircraft_specs/speed"] = 12000,
["Airport-dest-list"] = 3600,
["Airport_codes"] = 15000,
["Airport_destination_list"] = 4900,
["Aka"] = 2100,
["Al"] = 66000,
["Album"] = 204000,
["Album_chart"] = 29000,
["Album_chart/chartnote"] = 29000,
["Album_cover_fur"] = 53000,
["Album_label_category"] = 2200,
["Album_label_category/core"] = 2200,
["Album_ratings"] = 76000,
["Album_reviews"] = 5600,
["Albums"] = 7600,
["Albums_category"] = 24000,
["Albums_category/core"] = 24000,
["Albums_category/type/default"] = 24000,
["Align"] = 174000,
["Aligned_table"] = 13000,
["AllIrelandByCountyCatNav"] = 3100,
["AllMovie_name"] = 5800,
["AllMovie_title"] = 28000,
["AllMusic"] = 77000,
["Allcaps"] = 9000,
["Allcaps/styles.css"] = 9000,
["Allmovie"] = 4200,
["Allmovie_title"] = 2200,
["Allmusic"] = 17000,
["Allow_wrap"] = 19000,
["Alumni"] = 2400,
["Always_substitute"] = 8400,
["Ambox"] = 1460000,
["Ambox_globe"] = 36000,
["Ambox_globe_current_red"] = 34000,
["American_English"] = 18000,
["American_football_roster/Footer"] = 3200,
["American_football_roster/Header"] = 3200,
["American_football_roster/Player"] = 3200,
["Americanfootballbox"] = 3300,
["Amg_movie"] = 11000,
["Amg_name"] = 3200,
["Anarchism_announcements"] = 3100,
["Anarchism_announcements/shell"] = 3100,
["Anchor"] = 80000,
["Angbr"] = 2100,
["Angle_bracket"] = 3100,
["Anglican_navbox_titlestyle"] = 14000,
["Anglicise_rank"] = 569000,
["Animal_tasks"] = 19000,
["Anime_News_Network"] = 11000,
["Ann"] = 4700,
["Annotated_link"] = 7900,
["Annual_readership"] = 51000,
["Anonblock"] = 33000,
["Antonym_of_(dis)establish"] = 8700,
["Apostrophe"] = 77000,
["ArbCom_Arab-Israeli_editnotice"] = 2200,
["ArbCom_Arab-Israeli_enforcement"] = 3000,
["Arbitration_Committee_candidate/data"] = 76000,
["Archive"] = 155000,
["Archive-nav"] = 5800,
["Archive_bottom"] = 46000,
["Archive_box"] = 18000,
["Archive_list"] = 73000,
["Archive_navigation"] = 7400,
["Archive_top"] = 28000,
["Archive_top/styles.css"] = 28000,
["Archive_top_green"] = 3000,
["Archivebottom"] = 3600,
["Archivebox"] = 2600,
["Archives"] = 50000,
["Archivetop"] = 3600,
["Army"] = 15000,
["Army/core"] = 15000,
["Art_UK_bio"] = 2400,
["Art_UK_bio/plural"] = 2400,
["Article"] = 2900,
["ArticleHistory"] = 29000,
["Article_alerts_box"] = 3600,
["Article_alerts_box/styles.css"] = 3600,
["Article_for_improvement_banner/Picture_box"] = 3700,
["Article_for_improvement_banner/Picture_box/show_picture"] = 3700,
["Article_history"] = 47000,
["Articles_by_Quality"] = 2300,
["Articles_by_Quality/down"] = 2300,
["Articles_by_Quality/total"] = 2400,
["Articles_by_Quality/up"] = 2300,
["As_of"] = 79000,
["Asbox"] = 2390000,
["Asbox/styles.css"] = 2390000,
["Asia_topic"] = 9900,
["Asof"] = 7200,
["Assessed-Class"] = 18000,
["Assignment"] = 6300,
["Assignment_milestones"] = 5600,
["AstDys"] = 2900,
["Asterisk"] = 2200,
["AthAbbr"] = 4600,
["Atnhead"] = 6000,
["Atop"] = 4700,
["Atopg"] = 2600,
["Attached_KML"] = 14000,
["Au"] = 2500,
["AuEduNewbie"] = 2500,
["Audio"] = 27000,
["Audio_sample"] = 2900,
["AustralianFootball"] = 7400,
["Australian_Dictionary_of_Biography"] = 2400,
["Australian_English"] = 2800,
["Australian_party_style"] = 6000,
["Australian_politics/name"] = 4200,
["Australian_politics/party_colours"] = 6100,
["Austria_metadata_Wikidata"] = 2100,
["Austria_population_Wikidata"] = 2100,
["Aut"] = 8200,
["Authority_control"] = 2020000,
["Authority_control_(arts)"] = 16000,
["Auto_link"] = 79000,
["Autobiography"] = 2100,
["Automated_tools"] = 85000,
["Automated_tools/core"] = 85000,
["Automatic_Taxobox"] = 2500,
["Automatic_archive_navigator"] = 133000,
["Automatic_taxobox"] = 75000,
["Aviation_accidents_and_incidents"] = 2300,
["Awaiting_admin"] = 2600,
["Awaitingadmin"] = 2500,
["Award2"] = 2400,
["Awards"] = 2400,
["Awards_table"] = 5600,
["Awards_table/styles.css"] = 5600,
["Ayd"] = 3000,
["Aye"] = 26000,
["Module:A_or_an"] = 29000,
["Module:A_or_an/words"] = 29000,
["Module:About"] = 153000,
["Module:Adjacent_stations"] = 74000,
["Module:Adjacent_stations/Amtrak"] = 2600,
["Module:Adjacent_stations/Indian_Railways"] = 3200,
["Module:Adjacent_stations/JR_East"] = 2200,
["Module:Adjacent_stations/i18n"] = 74000,
["Module:Administrators'_noticeboard_archives"] = 2000,
["Module:AfC_submission_catcheck"] = 376000,
["Module:AfC_topic"] = 25000,
["Module:Age"] = 1190000,
["Module:Ahnentafel"] = 8300,
["Module:Airport_destination_list"] = 4900,
["Module:Aligned_dates_list"] = 2300,
["Module:Aligned_table"] = 13000,
["Module:Anchor"] = 80000,
["Module:Ancient_Egypt_era"] = 2800,
["Module:Ancient_Egypt_era/data"] = 2800,
["Module:Ancient_Egypt_kings"] = 2800,
["Module:Ancient_Egypt_kings/data"] = 2800,
["Module:Ancient_Olympiads"] = 2800,
["Module:Ancient_Olympiads/data"] = 2800,
["Module:Annotated_link"] = 7900,
["Module:Archive_list"] = 75000,
["Module:Arguments"] = 31900000,
["Module:Armenian"] = 2800,
["Module:Article_history"] = 47000,
["Module:Article_history/Category"] = 47000,
["Module:Article_history/config"] = 47000,
["Module:Article_history/styles.css"] = 47000,
["Module:Asbox"] = 2390000,
["Module:Asbox_stubtree"] = 36000,
["Module:Attached_KML"] = 14000,
["Module:Attached_KML/styles.css"] = 14000,
["Module:Australian_place_map"] = 16000,
["Module:Authority_control"] = 2040000,
["Module:Authority_control/auxiliary"] = 575000,
["Module:Authority_control/config"] = 2040000,
["Module:Automated_taxobox"] = 369000,
["Module:Automatic_archive_navigator"] = 133000,
["Module:Automatic_archive_navigator/config"] = 133000,
["Module:Autotaxobox"] = 569000,
}
a8ee40712bf0669ff0e9be9f1b4924a5abda651e
Module:Transclusion count/data/C
828
595
1338
2023-10-01T05:36:56Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["C"] = 657000,
["C-Class"] = 17000,
["C-SPAN"] = 12000,
["C-cmn"] = 2300,
["C-pl"] = 51000,
["C."] = 4200,
["CAN"] = 20000,
["CANelec"] = 14000,
["CANelec/gain"] = 2600,
["CANelec/hold"] = 4900,
["CANelec/source"] = 7100,
["CANelec/top"] = 6400,
["CANelec/total"] = 6200,
["CAS"] = 3800,
["CBB_Standings_End"] = 15000,
["CBB_Standings_Entry"] = 15000,
["CBB_Standings_Start"] = 15000,
["CBB_Yearly_Record_End"] = 3100,
["CBB_Yearly_Record_Entry"] = 3100,
["CBB_Yearly_Record_Start"] = 3000,
["CBB_Yearly_Record_Subhead"] = 3700,
["CBB_Yearly_Record_Subtotal"] = 2900,
["CBB_roster/Footer"] = 8100,
["CBB_roster/Header"] = 8100,
["CBB_roster/Player"] = 8000,
["CBB_schedule_end"] = 11000,
["CBB_schedule_entry"] = 11000,
["CBB_schedule_start"] = 11000,
["CBB_standings_end"] = 16000,
["CBB_standings_entry"] = 16000,
["CBB_standings_start"] = 16000,
["CBB_yearly_record_end"] = 4100,
["CBB_yearly_record_end/legend"] = 3700,
["CBB_yearly_record_entry"] = 4100,
["CBB_yearly_record_start"] = 4000,
["CBB_yearly_record_subhead"] = 3800,
["CBB_yearly_record_subtotal"] = 3800,
["CBSB_Standings_End"] = 4300,
["CBSB_Standings_Entry"] = 4300,
["CBSB_Standings_Start"] = 4300,
["CBSB_link"] = 3500,
["CBSB_standings_end"] = 4400,
["CBSB_standings_entry"] = 4500,
["CBSB_standings_start"] = 4500,
["CC0"] = 3800,
["CENTURY"] = 16000,
["CFB_Standings_End"] = 34000,
["CFB_Standings_Entry"] = 34000,
["CFB_Standings_Start"] = 34000,
["CFB_Yearly_Record_End"] = 6900,
["CFB_Yearly_Record_End/legend"] = 2400,
["CFB_Yearly_Record_Entry"] = 6900,
["CFB_Yearly_Record_Start"] = 6900,
["CFB_Yearly_Record_Subhead"] = 6900,
["CFB_Yearly_Record_Subtotal"] = 6800,
["CFB_schedule"] = 26000,
["CFB_schedule_entry"] = 19000,
["CFB_standings_end"] = 34000,
["CFB_standings_entry"] = 34000,
["CFB_standings_start"] = 34000,
["CFL_Year"] = 5700,
["CGF_year"] = 2600,
["CHE"] = 10000,
["CHI"] = 2800,
["CHL"] = 3600,
["CHN"] = 11000,
["CN"] = 3400,
["CO2"] = 3300,
["COI"] = 14000,
["COIUL"] = 129000,
["COI_editnotice"] = 6700,
["COL"] = 5000,
["COLON"] = 13000,
["CRI"] = 2200,
["CRO"] = 5600,
["CSK"] = 2800,
["CSS_image_crop"] = 4700,
["CUB"] = 3700,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2100,
["CZE"] = 15000,
["Calendar"] = 2400,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 23000,
["CanProvName"] = 14000,
["CanadaByProvinceCatNav"] = 8400,
["CanadaProvinceThe"] = 4000,
["Canadian_English"] = 7000,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 14000,
["Canadian_election_result/gain"] = 2700,
["Canadian_election_result/hold"] = 5000,
["Canadian_election_result/source"] = 8200,
["Canadian_election_result/top"] = 14000,
["Canadian_election_result/total"] = 11000,
["Canadian_party_colour"] = 8200,
["Canadian_party_colour/colour"] = 18000,
["Canadian_party_colour/colour/default"] = 18000,
["Canadian_party_colour/name"] = 15000,
["Canadian_party_colour/name/default"] = 6900,
["Canned_search"] = 5800,
["Cascite"] = 15000,
["Caselaw_source"] = 4000,
["Cassini-Ehess"] = 2600,
["Cast_listing"] = 16000,
["Castlist"] = 2500,
["Cat"] = 356000,
["CatAutoTOC"] = 661000,
["CatAutoTOC/core"] = 660000,
["CatRel"] = 3800,
["CatTrack"] = 3100,
["Cat_class"] = 6800,
["Cat_in_use"] = 50000,
["Cat_main"] = 200000,
["Cat_more"] = 102000,
["Cat_more_if_exists"] = 40000,
["Cat_see_also"] = 3500,
["Catalog_lookup_link"] = 516000,
["Category-Class"] = 14000,
["Category-inline"] = 8700,
["Category_TOC"] = 72000,
["Category_TOC/tracking"] = 72000,
["Category_U.S._State_elections_by_year"] = 7300,
["Category_U.S._State_elections_by_year/core"] = 7300,
["Category_class"] = 36000,
["Category_class/column"] = 36000,
["Category_class/second_row_column"] = 36000,
["Category_described_in_year"] = 5700,
["Category_diffuse"] = 7900,
["Category_disambiguation"] = 2400,
["Category_disambiguation/category_link"] = 2400,
["Category_explanation"] = 273000,
["Category_handler"] = 3360000,
["Category_ifexist"] = 5100,
["Category_importance"] = 10000,
["Category_importance/column"] = 10000,
["Category_importance/second_row_column"] = 10000,
["Category_link"] = 136000,
["Category_link_with_count"] = 7000,
["Category_more"] = 112000,
["Category_more_if_exists"] = 40000,
["Category_ordered_by_date"] = 11000,
["Category_other"] = 906000,
["Category_redirect"] = 109000,
["Category_see_also"] = 39000,
["Category_see_also/Category_pair_check"] = 39000,
["Category_see_also_if_exists"] = 73000,
["Category_see_also_if_exists_2"] = 88000,
["Category_title"] = 2400,
["Catexp"] = 7900,
["CathEncy"] = 2200,
["Catholic"] = 4000,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 28000,
["Catmore"] = 9400,
["Cbb_link"] = 8700,
["Cbignore"] = 100000,
["Cbsb_link"] = 2100,
["Cc-by-2.5"] = 3700,
["Cc-by-3.0"] = 8500,
["Cc-by-sa-2.5"] = 2500,
["Cc-by-sa-2.5,2.0,1.0"] = 2600,
["Cc-by-sa-3.0"] = 25000,
["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200,
["Cc-by-sa-3.0-migrated"] = 23000,
["Cc-by-sa-4.0"] = 10000,
["Cc-zero"] = 3700,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 6900,
["Cent"] = 5800,
["Center"] = 288000,
["Centralized_discussion"] = 6100,
["Centralized_discussion/core"] = 6100,
["Centralized_discussion/styles.css"] = 6100,
["Centre"] = 3200,
["Century"] = 2100,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 77000,
["Century_name_from_title_decade"] = 7600,
["Century_name_from_title_year"] = 7600,
["Certification_Cite/Title"] = 30000,
["Certification_Cite/URL"] = 34000,
["Certification_Cite/archivedate"] = 6100,
["Certification_Cite/archiveurl"] = 6100,
["Certification_Cite_Ref"] = 30000,
["Certification_Table_Bottom"] = 29000,
["Certification_Table_Entry"] = 30000,
["Certification_Table_Entry/Foot"] = 29000,
["Certification_Table_Entry/Foot/helper"] = 29000,
["Certification_Table_Entry/Region"] = 30000,
["Certification_Table_Entry/Sales"] = 29000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100,
["Certification_Table_Entry/Sales/DanishPeriod"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4000,
["Certification_Table_Entry/Sales/ItalianHelper"] = 3300,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100,
["Certification_Table_Separator"] = 2400,
["Certification_Table_Top"] = 30000,
["Cfb_link"] = 24000,
["Cfd_result"] = 2400,
["Cfdend"] = 4000,
["Chart"] = 4600,
["Chart/end"] = 4700,
["Chart/start"] = 4700,
["Chart_bottom"] = 3500,
["Chart_top"] = 3500,
["Check_completeness_of_transclusions"] = 39000,
["Check_talk"] = 31000,
["Check_talk_wp"] = 1420000,
["Check_winner_by_scores"] = 13000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 13000,
["Checkuser"] = 76000,
["Checkuserblock-account"] = 18000,
["Chem"] = 5800,
["Chem/atom"] = 5800,
["Chem/link"] = 5800,
["Chem2"] = 5100,
["Chem_molar_mass"] = 18000,
["Chem_molar_mass/format"] = 18000,
["Chembox"] = 14000,
["Chembox/styles.css"] = 14000,
["Chembox_3DMet"] = 14000,
["Chembox_3DMet/format"] = 14000,
["Chembox_AllOtherNames"] = 13000,
["Chembox_AllOtherNames/format"] = 13000,
["Chembox_Appearance"] = 6100,
["Chembox_BoilingPt"] = 3800,
["Chembox_CASNo"] = 14000,
["Chembox_CASNo/format"] = 14000,
["Chembox_CalcTemperatures"] = 6700,
["Chembox_ChEBI"] = 14000,
["Chembox_ChEBI/format"] = 14000,
["Chembox_ChEMBL"] = 14000,
["Chembox_ChEMBL/format"] = 14000,
["Chembox_ChemSpiderID"] = 14000,
["Chembox_ChemSpiderID/format"] = 14000,
["Chembox_CompTox"] = 14000,
["Chembox_CompTox/format"] = 14000,
["Chembox_Datapage_check"] = 14000,
["Chembox_Density"] = 4900,
["Chembox_DrugBank"] = 14000,
["Chembox_DrugBank/format"] = 14000,
["Chembox_ECHA"] = 7600,
["Chembox_ECNumber"] = 14000,
["Chembox_ECNumber/format"] = 14000,
["Chembox_Elements"] = 14000,
["Chembox_Elements/molecular_formula"] = 18000,
["Chembox_Footer"] = 14000,
["Chembox_Footer/tracking"] = 14000,
["Chembox_GHS_(set)"] = 3500,
["Chembox_Hazards"] = 12000,
["Chembox_IUPHAR_ligand"] = 14000,
["Chembox_IUPHAR_ligand/format"] = 14000,
["Chembox_Identifiers"] = 14000,
["Chembox_InChI"] = 13000,
["Chembox_InChI/format"] = 13000,
["Chembox_Indexlist"] = 14000,
["Chembox_Jmol"] = 14000,
["Chembox_Jmol/format"] = 14000,
["Chembox_KEGG"] = 14000,
["Chembox_KEGG/format"] = 14000,
["Chembox_MeltingPt"] = 5900,
["Chembox_Properties"] = 14000,
["Chembox_PubChem"] = 14000,
["Chembox_PubChem/format"] = 14000,
["Chembox_RTECS"] = 14000,
["Chembox_RTECS/format"] = 14000,
["Chembox_Related"] = 3400,
["Chembox_SMILES"] = 13000,
["Chembox_SMILES/format"] = 13000,
["Chembox_SolubilityInWater"] = 3900,
["Chembox_Structure"] = 2100,
["Chembox_UNII"] = 14000,
["Chembox_UNII/format"] = 14000,
["Chembox_headerbar"] = 14000,
["Chembox_image"] = 13000,
["Chembox_image_cell"] = 12000,
["Chembox_image_sbs"] = 13000,
["Chembox_parametercheck"] = 13000,
["Chembox_setDatarow"] = 4500,
["Chembox_setHeader"] = 4500,
["Chembox_templatePar/formatPreviewMessage"] = 14000,
["Chembox_verification"] = 7100,
["Chemicals"] = 7300,
["Chemistry"] = 3100,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3700,
["Chinese"] = 7000,
["Chr"] = 9100,
["ChristianityWikiProject"] = 5700,
["Circa"] = 73000,
["Circular_reference"] = 4600,
["Citation"] = 411000,
["Citation/make_link"] = 6100,
["Citation/styles.css"] = 46000,
["Citation_needed"] = 548000,
["Citation_needed_span"] = 3500,
["Citation_style"] = 4200,
["Cite_AV_media"] = 43000,
["Cite_AV_media_notes"] = 26000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 3300,
["Cite_Catholic_Encyclopedia"] = 8300,
["Cite_Colledge2006"] = 3100,
["Cite_DCB"] = 2800,
["Cite_DNB"] = 18000,
["Cite_EB1911"] = 25000,
["Cite_GNIS"] = 2300,
["Cite_Gaia_DR2"] = 2100,
["Cite_Google_Maps"] = 15000,
["Cite_IUCN"] = 58000,
["Cite_Instagram"] = 2200,
["Cite_Jewish_Encyclopedia"] = 3000,
["Cite_NIE"] = 3600,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2600,
["Cite_ODNB"] = 18000,
["Cite_POWO"] = 2000,
["Cite_Q"] = 48000,
["Cite_QHR"] = 3000,
["Cite_QPN"] = 4000,
["Cite_Rotten_Tomatoes"] = 2000,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3200,
["Cite_Sports-Reference"] = 54000,
["Cite_USGov"] = 24000,
["Cite_WoRMS"] = 5500,
["Cite_act"] = 2700,
["Cite_arXiv"] = 5000,
["Cite_bcgnis"] = 3200,
["Cite_book"] = 1600000,
["Cite_certification"] = 34000,
["Cite_cgndb"] = 3300,
["Cite_comic"] = 2100,
["Cite_conference"] = 16000,
["Cite_court"] = 5400,
["Cite_court/styles.css"] = 5400,
["Cite_dictionary"] = 3500,
["Cite_encyclopedia"] = 205000,
["Cite_episode"] = 17000,
["Cite_gnis"] = 33000,
["Cite_interview"] = 7900,
["Cite_iucn"] = 58000,
["Cite_journal"] = 965000,
["Cite_magazine"] = 277000,
["Cite_map"] = 41000,
["Cite_news"] = 1520000,
["Cite_newspaper_The_Times"] = 6600,
["Cite_patent"] = 5500,
["Cite_patent/authors"] = 4500,
["Cite_patent/core"] = 5800,
["Cite_peakbagger"] = 4600,
["Cite_podcast"] = 3900,
["Cite_press_release"] = 66000,
["Cite_report"] = 36000,
["Cite_rowlett"] = 2500,
["Cite_simbad"] = 4500,
["Cite_sports-reference"] = 59000,
["Cite_thesis"] = 32000,
["Cite_tweet"] = 37000,
["Cite_video"] = 12000,
["Cite_video_game"] = 3100,
["Cite_web"] = 4600000,
["Cite_wikisource"] = 5700,
["Cite_wikisource/make_link"] = 58000,
["Civil_navigation"] = 2800,
["Cl"] = 134000,
["Clade"] = 7600,
["Clade/styles.css"] = 7700,
["Clarify"] = 41000,
["Class"] = 42000,
["Class/colour"] = 9180000,
["Class/icon"] = 21000,
["Class_mask"] = 6420000,
["Class_mask/b"] = 287000,
["Classical"] = 6900,
["Classicon"] = 4800,
["Clc"] = 6100,
["Cleanup"] = 10000,
["Cleanup_bare_URLs"] = 26000,
["Cleanup_reorganize"] = 2500,
["Cleanup_rewrite"] = 5900,
["Clear"] = 2970000,
["Clear-left"] = 4100,
["Clear_left"] = 31000,
["Clear_right"] = 2600,
["Clerk-Note"] = 9900,
["Clerk_Request"] = 2000,
["Clerknote"] = 7500,
["Clickable_button"] = 17000,
["Clickable_button_2"] = 967000,
["Closed_access"] = 4600,
["Closed_rfc_top"] = 2300,
["Clr"] = 3500,
["Clubplayerscat"] = 8600,
["Cmbox"] = 423000,
["Cn"] = 95000,
["Cnote2"] = 2300,
["Cnote2_Begin"] = 2300,
["Cnote2_End"] = 2300,
["Coat_of_arms"] = 4800,
["Cob"] = 12000,
["Code"] = 51000,
["Col-1-of-2"] = 2400,
["Col-2"] = 171000,
["Col-2-of-2"] = 2300,
["Col-3"] = 10000,
["Col-4"] = 3700,
["Col-begin"] = 214000,
["Col-break"] = 212000,
["Col-end"] = 212000,
["Col-float"] = 2700,
["Col-float-break"] = 2600,
["Col-float-end"] = 2700,
["Col-float/styles.css"] = 2700,
["Col-start"] = 18000,
["Colbegin"] = 21000,
["Colend"] = 23000,
["Collapse"] = 9800,
["Collapse_bottom"] = 51000,
["Collapse_top"] = 51000,
["Collapsebottom"] = 3800,
["Collapsetop"] = 3800,
["Collapsible_list"] = 52000,
["Collapsible_option"] = 135000,
["College"] = 8900,
["CollegePrimaryHeader"] = 6100,
["CollegePrimaryStyle"] = 97000,
["CollegeSecondaryStyle"] = 3700,
["College_Athlete_Recruit_End"] = 2900,
["College_Athlete_Recruit_Entry"] = 3100,
["College_Athlete_Recruit_Start"] = 3000,
["College_athlete_recruit_end"] = 4100,
["College_athlete_recruit_entry"] = 4200,
["College_athlete_recruit_start"] = 4300,
["College_color_list"] = 3900,
["Colon"] = 18000,
["Color"] = 472000,
["Color_box"] = 74000,
["Colorbox"] = 3500,
["Colorbull"] = 4800,
["Colored_link"] = 63000,
["Colors"] = 3800,
["Colour"] = 5800,
["Colour_box"] = 2000,
["Coloured_link"] = 7000,
["Column"] = 2400,
["Column/styles.css"] = 2500,
["Columns-end"] = 2200,
["Columns-list"] = 97000,
["Columns-start"] = 2200,
["Comedy"] = 2600,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3500,
["Comics-replaceability"] = 2900,
["Comics_infobox_sec/creator_nat"] = 2800,
["Comics_infobox_sec/formcat"] = 3300,
["Comics_infobox_sec/genre"] = 4100,
["Comics_infobox_sec/genrecat"] = 3700,
["Comics_infobox_sec/styles.css"] = 8200,
["Comicsproj"] = 28000,
["Comma_separated_entries"] = 432000,
["Comma_separated_values"] = 48000,
["Comment"] = 5200,
["Committed_identity"] = 3000,
["Committed_identity/styles.css"] = 3000,
["Commons"] = 66000,
["Commons-inline"] = 20000,
["Commons_cat"] = 48000,
["Commons_category"] = 847000,
["Commons_category-inline"] = 149000,
["Commons_category_inline"] = 6100,
["Commonscat"] = 64000,
["Commonscat-inline"] = 17000,
["Commonscat_inline"] = 2400,
["Commonscatinline"] = 6800,
["Compact_TOC"] = 7000,
["Compact_ToC"] = 4700,
["Compare"] = 5300,
["Compare_image_with_Wikidata"] = 10000,
["Composition_bar"] = 10000,
["Confirmed"] = 17000,
["Confused"] = 2800,
["Confusing"] = 2300,
["CongBio"] = 9600,
["CongLinks"] = 4600,
["Connected_contributor"] = 18000,
["Connected_contributor_(paid)"] = 6900,
["Constellation_navbox"] = 6800,
["Container"] = 11000,
["Container_cat"] = 7600,
["Container_category"] = 43000,
["Containercat"] = 2600,
["Contains_special_characters"] = 4200,
["Contains_special_characters/core"] = 4200,
["Contains_special_characters/styles.css"] = 4200,
["Content_category"] = 7600,
["Contentious_topics/list"] = 13000,
["Contentious_topics/page_restriction_editnotice_base"] = 2600,
["Contentious_topics/page_restriction_talk_notice_base"] = 3600,
["Contentious_topics/talk_notice"] = 6900,
["Context"] = 2700,
["Continent2continental"] = 16000,
["Continent_adjective_to_noun"] = 2200,
["Controversial"] = 3300,
["Convert"] = 1180000,
["Convinfobox"] = 206000,
["Convinfobox/2"] = 17000,
["Convinfobox/3"] = 119000,
["Convinfobox/pri2"] = 64000,
["Convinfobox/prisec2"] = 3300,
["Convinfobox/prisec3"] = 26000,
["Convinfobox/sec2"] = 9300,
["Coord"] = 1330000,
["Coord_missing"] = 94000,
["Coord_missing/CheckCat"] = 93000,
["Coords"] = 7600,
["Copied"] = 19000,
["Copy_edit"] = 2400,
["Copy_to_Wikimedia_Commons"] = 108000,
["Copyvios"] = 4000,
["Cospar"] = 2600,
["Cot"] = 12000,
["Count"] = 669000,
["Country2continent"] = 36000,
["Country2continental"] = 2400,
["Country2nationality"] = 347000,
["CountryPrefixThe"] = 109000,
["Country_abbreviation"] = 89000,
["Country_alias"] = 16000,
["Country_at_games_navbox"] = 2700,
["Country_at_games_navbox/below"] = 2700,
["Country_data"] = 7200,
["Country_data_AFG"] = 2300,
["Country_data_ALB"] = 6800,
["Country_data_ALG"] = 9600,
["Country_data_AND"] = 3100,
["Country_data_ANG"] = 4000,
["Country_data_ARG"] = 48000,
["Country_data_ARM"] = 7600,
["Country_data_AUS"] = 77000,
["Country_data_AUT"] = 46000,
["Country_data_AZE"] = 9400,
["Country_data_Afghanistan"] = 12000,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 20000,
["Country_data_Alberta"] = 3700,
["Country_data_Algeria"] = 25000,
["Country_data_American_Samoa"] = 2900,
["Country_data_Andorra"] = 8200,
["Country_data_Angola"] = 12000,
["Country_data_Anguilla"] = 2500,
["Country_data_Antigua_and_Barbuda"] = 6200,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 81000,
["Country_data_Arizona"] = 2300,
["Country_data_Armenia"] = 22000,
["Country_data_Aruba"] = 3700,
["Country_data_Australia"] = 128000,
["Country_data_Austria"] = 79000,
["Country_data_Azerbaijan"] = 28000,
["Country_data_BAH"] = 4100,
["Country_data_BAN"] = 4000,
["Country_data_BAR"] = 2400,
["Country_data_BEL"] = 52000,
["Country_data_BER"] = 2300,
["Country_data_BHR"] = 4800,
["Country_data_BIH"] = 13000,
["Country_data_BLR"] = 24000,
["Country_data_BOL"] = 5900,
["Country_data_BOT"] = 2500,
["Country_data_BRA"] = 58000,
["Country_data_BUL"] = 26000,
["Country_data_Bahamas"] = 9800,
["Country_data_Bahrain"] = 12000,
["Country_data_Bangladesh"] = 19000,
["Country_data_Barbados"] = 8100,
["Country_data_Belarus"] = 44000,
["Country_data_Belgium"] = 90000,
["Country_data_Belize"] = 5300,
["Country_data_Benin"] = 7500,
["Country_data_Bermuda"] = 5800,
["Country_data_Bhutan"] = 4700,
["Country_data_Bolivia"] = 15000,
["Country_data_Bosnia_and_Herzegovina"] = 29000,
["Country_data_Botswana"] = 9400,
["Country_data_Brazil"] = 103000,
["Country_data_British_Columbia"] = 3500,
["Country_data_British_Raj"] = 2300,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6400,
["Country_data_Bulgaria"] = 53000,
["Country_data_Burkina_Faso"] = 10000,
["Country_data_Burma"] = 2700,
["Country_data_Burundi"] = 6200,
["Country_data_CAM"] = 2200,
["Country_data_CAN"] = 59000,
["Country_data_CGO"] = 2500,
["Country_data_CHE"] = 4900,
["Country_data_CHI"] = 18000,
["Country_data_CHL"] = 2100,
["Country_data_CHN"] = 42000,
["Country_data_CIV"] = 8300,
["Country_data_CMR"] = 8900,
["Country_data_COD"] = 3300,
["Country_data_COL"] = 25000,
["Country_data_CPV"] = 2100,
["Country_data_CRC"] = 6700,
["Country_data_CRO"] = 34000,
["Country_data_CUB"] = 10000,
["Country_data_CYP"] = 9300,
["Country_data_CZE"] = 47000,
["Country_data_California"] = 5900,
["Country_data_Cambodia"] = 9100,
["Country_data_Cameroon"] = 18000,
["Country_data_Canada"] = 123000,
["Country_data_Cape_Verde"] = 6400,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3100,
["Country_data_Cayman_Islands"] = 4200,
["Country_data_Central_African_Republic"] = 5100,
["Country_data_Chad"] = 5600,
["Country_data_Chile"] = 41000,
["Country_data_China"] = 85000,
["Country_data_Chinese_Taipei"] = 20000,
["Country_data_Colombia"] = 47000,
["Country_data_Colorado"] = 5600,
["Country_data_Comoros"] = 4500,
["Country_data_Confederate_States_of_America"] = 3000,
["Country_data_Connecticut"] = 3200,
["Country_data_Cook_Islands"] = 3900,
["Country_data_Costa_Rica"] = 18000,
["Country_data_Croatia"] = 57000,
["Country_data_Cuba"] = 23000,
["Country_data_Curaçao"] = 3600,
["Country_data_Cyprus"] = 23000,
["Country_data_Czech_Republic"] = 82000,
["Country_data_Czechoslovakia"] = 19000,
["Country_data_DEN"] = 35000,
["Country_data_DEU"] = 8900,
["Country_data_DNK"] = 3700,
["Country_data_DOM"] = 7400,
["Country_data_DRC"] = 2000,
["Country_data_Democratic_Republic_of_the_Congo"] = 13000,
["Country_data_Denmark"] = 70000,
["Country_data_Djibouti"] = 4700,
["Country_data_Dominica"] = 4300,
["Country_data_Dominican_Republic"] = 18000,
["Country_data_ECU"] = 12000,
["Country_data_EGY"] = 14000,
["Country_data_ENG"] = 47000,
["Country_data_ESA"] = 2300,
["Country_data_ESP"] = 74000,
["Country_data_EST"] = 15000,
["Country_data_ETH"] = 3700,
["Country_data_EU"] = 3700,
["Country_data_East_Germany"] = 14000,
["Country_data_East_Timor"] = 5100,
["Country_data_Ecuador"] = 25000,
["Country_data_Egypt"] = 32000,
["Country_data_El_Salvador"] = 13000,
["Country_data_Empire_of_Japan"] = 4000,
["Country_data_England"] = 97000,
["Country_data_Equatorial_Guinea"] = 5200,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 35000,
["Country_data_Eswatini"] = 5100,
["Country_data_Ethiopia"] = 13000,
["Country_data_Europe"] = 2400,
["Country_data_European_Union"] = 7400,
["Country_data_FIJ"] = 3900,
["Country_data_FIN"] = 35000,
["Country_data_FRA"] = 100000,
["Country_data_FRG"] = 15000,
["Country_data_FRO"] = 2100,
["Country_data_FR_Yugoslavia"] = 4000,
["Country_data_Faroe_Islands"] = 5500,
["Country_data_Federated_States_of_Micronesia"] = 3100,
["Country_data_Fiji"] = 12000,
["Country_data_Finland"] = 69000,
["Country_data_Florida"] = 6600,
["Country_data_France"] = 195000,
["Country_data_French_Guiana"] = 2100,
["Country_data_French_Polynesia"] = 3800,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2100,
["Country_data_GBR"] = 56000,
["Country_data_GDR"] = 8500,
["Country_data_GEO"] = 14000,
["Country_data_GER"] = 83000,
["Country_data_GHA"] = 10000,
["Country_data_GRE"] = 26000,
["Country_data_GUA"] = 5100,
["Country_data_GUI"] = 3300,
["Country_data_GUY"] = 2300,
["Country_data_Gabon"] = 7700,
["Country_data_Gambia"] = 7000,
["Country_data_Georgia"] = 10000,
["Country_data_Georgia_(U.S._state)"] = 2800,
["Country_data_Georgia_(country)"] = 29000,
["Country_data_German_Empire"] = 5400,
["Country_data_Germany"] = 153000,
["Country_data_Ghana"] = 24000,
["Country_data_Gibraltar"] = 5000,
["Country_data_Great_Britain"] = 75000,
["Country_data_Greece"] = 58000,
["Country_data_Greenland"] = 2900,
["Country_data_Grenada"] = 5400,
["Country_data_Guadeloupe"] = 2800,
["Country_data_Guam"] = 4800,
["Country_data_Guatemala"] = 13000,
["Country_data_Guernsey"] = 2200,
["Country_data_Guinea"] = 8500,
["Country_data_Guinea-Bissau"] = 5100,
["Country_data_Guyana"] = 7500,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 13000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 38000,
["Country_data_Haiti"] = 8900,
["Country_data_Honduras"] = 12000,
["Country_data_Hong_Kong"] = 26000,
["Country_data_Hungary"] = 71000,
["Country_data_IDN"] = 5100,
["Country_data_INA"] = 11000,
["Country_data_IND"] = 31000,
["Country_data_IRE"] = 11000,
["Country_data_IRI"] = 5600,
["Country_data_IRL"] = 22000,
["Country_data_IRN"] = 6500,
["Country_data_IRQ"] = 4300,
["Country_data_ISL"] = 8800,
["Country_data_ISR"] = 21000,
["Country_data_ITA"] = 87000,
["Country_data_Iceland"] = 23000,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 110000,
["Country_data_Indiana"] = 2700,
["Country_data_Indonesia"] = 37000,
["Country_data_Iowa"] = 2900,
["Country_data_Iran"] = 92000,
["Country_data_Iraq"] = 14000,
["Country_data_Ireland"] = 35000,
["Country_data_Isle_of_Man"] = 2900,
["Country_data_Israel"] = 46000,
["Country_data_Italy"] = 146000,
["Country_data_Ivory_Coast"] = 18000,
["Country_data_JAM"] = 10000,
["Country_data_JOR"] = 4200,
["Country_data_JP"] = 8200,
["Country_data_JPN"] = 60000,
["Country_data_Jamaica"] = 21000,
["Country_data_Japan"] = 120000,
["Country_data_Jersey"] = 2600,
["Country_data_Jordan"] = 12000,
["Country_data_KAZ"] = 20000,
["Country_data_KEN"] = 7600,
["Country_data_KGZ"] = 3900,
["Country_data_KOR"] = 32000,
["Country_data_KOS"] = 2500,
["Country_data_KSA"] = 6300,
["Country_data_KUW"] = 4200,
["Country_data_Kazakhstan"] = 34000,
["Country_data_Kenya"] = 20000,
["Country_data_Kingdom_of_France"] = 2100,
["Country_data_Kingdom_of_Great_Britain"] = 4800,
["Country_data_Kingdom_of_Italy"] = 4200,
["Country_data_Kiribati"] = 3000,
["Country_data_Kosovo"] = 9100,
["Country_data_Kuwait"] = 11000,
["Country_data_Kyrgyzstan"] = 9600,
["Country_data_LAT"] = 15000,
["Country_data_LBN"] = 2400,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3200,
["Country_data_LIT"] = 3100,
["Country_data_LTU"] = 13000,
["Country_data_LUX"] = 11000,
["Country_data_LVA"] = 2600,
["Country_data_Laos"] = 7600,
["Country_data_Latvia"] = 33000,
["Country_data_Lebanon"] = 15000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7300,
["Country_data_Libya"] = 8900,
["Country_data_Liechtenstein"] = 7900,
["Country_data_Lithuania"] = 32000,
["Country_data_Luxembourg"] = 24000,
["Country_data_MAC"] = 2500,
["Country_data_MAD"] = 2100,
["Country_data_MAR"] = 12000,
["Country_data_MAS"] = 11000,
["Country_data_MDA"] = 7800,
["Country_data_MEX"] = 31000,
["Country_data_MGL"] = 3000,
["Country_data_MKD"] = 7700,
["Country_data_MLI"] = 4500,
["Country_data_MLT"] = 5700,
["Country_data_MNE"] = 8000,
["Country_data_MON"] = 3800,
["Country_data_MOZ"] = 2300,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3100,
["Country_data_MYS"] = 3800,
["Country_data_Macau"] = 6400,
["Country_data_Macedonia"] = 4900,
["Country_data_Madagascar"] = 9300,
["Country_data_Malawi"] = 5800,
["Country_data_Malaysia"] = 37000,
["Country_data_Maldives"] = 6400,
["Country_data_Mali"] = 13000,
["Country_data_Malta"] = 17000,
["Country_data_Manitoba"] = 2600,
["Country_data_Marshall_Islands"] = 3800,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3000,
["Country_data_Massachusetts"] = 3000,
["Country_data_Mauritania"] = 5900,
["Country_data_Mauritius"] = 8200,
["Country_data_Mexico"] = 67000,
["Country_data_Michigan"] = 4300,
["Country_data_Minnesota"] = 3800,
["Country_data_Missouri"] = 2000,
["Country_data_Moldova"] = 19000,
["Country_data_Monaco"] = 10000,
["Country_data_Mongolia"] = 10000,
["Country_data_Montana"] = 2100,
["Country_data_Montenegro"] = 18000,
["Country_data_Montserrat"] = 2500,
["Country_data_Morocco"] = 28000,
["Country_data_Mozambique"] = 7500,
["Country_data_Myanmar"] = 14000,
["Country_data_NAM"] = 3600,
["Country_data_NED"] = 61000,
["Country_data_NEP"] = 2900,
["Country_data_NGA"] = 8400,
["Country_data_NGR"] = 8200,
["Country_data_NIR"] = 10000,
["Country_data_NLD"] = 6300,
["Country_data_NOR"] = 30000,
["Country_data_NZ"] = 3200,
["Country_data_NZL"] = 33000,
["Country_data_Namibia"] = 10000,
["Country_data_Nauru"] = 2500,
["Country_data_Nazi_Germany"] = 9900,
["Country_data_Nepal"] = 17000,
["Country_data_Netherlands"] = 115000,
["Country_data_Netherlands_Antilles"] = 2300,
["Country_data_New_Brunswick"] = 2500,
["Country_data_New_Caledonia"] = 3400,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 5800,
["Country_data_New_York"] = 4900,
["Country_data_New_York_(state)"] = 7000,
["Country_data_New_Zealand"] = 67000,
["Country_data_Newfoundland_and_Labrador"] = 2300,
["Country_data_Nicaragua"] = 8400,
["Country_data_Niger"] = 6000,
["Country_data_Nigeria"] = 33000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 14000,
["Country_data_North_Macedonia"] = 18000,
["Country_data_Northern_Ireland"] = 15000,
["Country_data_Northern_Mariana_Islands"] = 2900,
["Country_data_Norway"] = 73000,
["Country_data_Nova_Scotia"] = 2300,
["Country_data_OMA"] = 2800,
["Country_data_Ohio"] = 4800,
["Country_data_Oman"] = 9000,
["Country_data_Ontario"] = 3900,
["Country_data_Ottoman_Empire"] = 2500,
["Country_data_PAK"] = 8100,
["Country_data_PAN"] = 5800,
["Country_data_PAR"] = 10000,
["Country_data_PER"] = 12000,
["Country_data_PHI"] = 12000,
["Country_data_PHL"] = 2600,
["Country_data_PNG"] = 2700,
["Country_data_POL"] = 51000,
["Country_data_POR"] = 32000,
["Country_data_PRC"] = 2200,
["Country_data_PRK"] = 4600,
["Country_data_PRT"] = 2900,
["Country_data_PUR"] = 7400,
["Country_data_Pakistan"] = 29000,
["Country_data_Palau"] = 3000,
["Country_data_Palestine"] = 6900,
["Country_data_Panama"] = 16000,
["Country_data_Papua_New_Guinea"] = 8000,
["Country_data_Paraguay"] = 21000,
["Country_data_Pennsylvania"] = 3700,
["Country_data_People's_Republic_of_China"] = 3200,
["Country_data_Peru"] = 31000,
["Country_data_Philippines"] = 35000,
["Country_data_Poland"] = 151000,
["Country_data_Portugal"] = 69000,
["Country_data_Prussia"] = 2600,
["Country_data_Puerto_Rico"] = 17000,
["Country_data_QAT"] = 8000,
["Country_data_Qatar"] = 18000,
["Country_data_Quebec"] = 4200,
["Country_data_ROM"] = 13000,
["Country_data_ROU"] = 27000,
["Country_data_RSA"] = 32000,
["Country_data_RUS"] = 63000,
["Country_data_RWA"] = 2100,
["Country_data_Republic_of_China"] = 5700,
["Country_data_Republic_of_Ireland"] = 26000,
["Country_data_Republic_of_the_Congo"] = 7800,
["Country_data_Romania"] = 69000,
["Country_data_Russia"] = 115000,
["Country_data_Russian_Empire"] = 4900,
["Country_data_Rwanda"] = 7800,
["Country_data_SAM"] = 3100,
["Country_data_SCG"] = 3100,
["Country_data_SCO"] = 26000,
["Country_data_SEN"] = 8200,
["Country_data_SER"] = 3600,
["Country_data_SGP"] = 2900,
["Country_data_SIN"] = 7000,
["Country_data_SLO"] = 19000,
["Country_data_SLV"] = 3100,
["Country_data_SMR"] = 3200,
["Country_data_SPA"] = 4800,
["Country_data_SRB"] = 27000,
["Country_data_SRI"] = 4800,
["Country_data_SUI"] = 43000,
["Country_data_SUR"] = 2100,
["Country_data_SVK"] = 29000,
["Country_data_SVN"] = 6800,
["Country_data_SWE"] = 57000,
["Country_data_SWI"] = 4800,
["Country_data_SYR"] = 3700,
["Country_data_Saint_Kitts_and_Nevis"] = 4800,
["Country_data_Saint_Lucia"] = 5000,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 4900,
["Country_data_Samoa"] = 7800,
["Country_data_San_Marino"] = 8600,
["Country_data_Saskatchewan"] = 2900,
["Country_data_Saudi_Arabia"] = 20000,
["Country_data_Scotland"] = 52000,
["Country_data_Senegal"] = 18000,
["Country_data_Serbia"] = 55000,
["Country_data_Serbia_and_Montenegro"] = 5100,
["Country_data_Seychelles"] = 5600,
["Country_data_Sierra_Leone"] = 7500,
["Country_data_Singapore"] = 27000,
["Country_data_Slovakia"] = 51000,
["Country_data_Slovenia"] = 43000,
["Country_data_Solomon_Islands"] = 4700,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 70000,
["Country_data_South_Carolina"] = 3200,
["Country_data_South_Korea"] = 67000,
["Country_data_South_Sudan"] = 4300,
["Country_data_Soviet_Union"] = 37000,
["Country_data_Spain"] = 134000,
["Country_data_Sri_Lanka"] = 19000,
["Country_data_Sudan"] = 8300,
["Country_data_Suriname"] = 6500,
["Country_data_Sweden"] = 102000,
["Country_data_Switzerland"] = 84000,
["Country_data_Syria"] = 16000,
["Country_data_São_Tomé_and_Príncipe"] = 3400,
["Country_data_TAN"] = 2600,
["Country_data_TCH"] = 11000,
["Country_data_THA"] = 22000,
["Country_data_TJK"] = 2800,
["Country_data_TKM"] = 2900,
["Country_data_TOG"] = 2100,
["Country_data_TPE"] = 16000,
["Country_data_TRI"] = 4800,
["Country_data_TUN"] = 11000,
["Country_data_TUR"] = 28000,
["Country_data_Taiwan"] = 13000,
["Country_data_Tajikistan"] = 9200,
["Country_data_Tanzania"] = 13000,
["Country_data_Texas"] = 5300,
["Country_data_Thailand"] = 45000,
["Country_data_Togo"] = 7100,
["Country_data_Tonga"] = 6500,
["Country_data_Trinidad_and_Tobago"] = 14000,
["Country_data_Tunisia"] = 22000,
["Country_data_Turkey"] = 72000,
["Country_data_Turkmenistan"] = 8100,
["Country_data_Turks_and_Caicos_Islands"] = 2700,
["Country_data_Tuvalu"] = 2900,
["Country_data_U.S."] = 2100,
["Country_data_U.S._Virgin_Islands"] = 4800,
["Country_data_UAE"] = 9500,
["Country_data_UGA"] = 4300,
["Country_data_UK"] = 19000,
["Country_data_UKGBI"] = 3100,
["Country_data_UKR"] = 38000,
["Country_data_URS"] = 14000,
["Country_data_URU"] = 15000,
["Country_data_US"] = 4900,
["Country_data_USA"] = 135000,
["Country_data_USSR"] = 4500,
["Country_data_UZB"] = 12000,
["Country_data_Uganda"] = 13000,
["Country_data_Ukraine"] = 74000,
["Country_data_United_Arab_Emirates"] = 20000,
["Country_data_United_Kingdom"] = 89000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4400,
["Country_data_United_Nations"] = 4000,
["Country_data_United_States"] = 284000,
["Country_data_United_States_of_America"] = 5000,
["Country_data_Uruguay"] = 29000,
["Country_data_Uzbekistan"] = 21000,
["Country_data_VEN"] = 17000,
["Country_data_VIE"] = 6600,
["Country_data_Vanuatu"] = 5200,
["Country_data_Vatican_City"] = 2300,
["Country_data_Venezuela"] = 33000,
["Country_data_Vietnam"] = 23000,
["Country_data_Virginia"] = 2900,
["Country_data_WAL"] = 17000,
["Country_data_Wales"] = 34000,
["Country_data_Washington"] = 3400,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3600,
["Country_data_West_Germany"] = 24000,
["Country_data_West_Indies"] = 2600,
["Country_data_Wisconsin"] = 5200,
["Country_data_YUG"] = 9900,
["Country_data_Yemen"] = 7900,
["Country_data_Yugoslavia"] = 18000,
["Country_data_ZAF"] = 4700,
["Country_data_ZAM"] = 3400,
["Country_data_ZIM"] = 8300,
["Country_data_Zambia"] = 9800,
["Country_data_Zimbabwe"] = 18000,
["Country_flagbio"] = 28000,
["Country_name"] = 23000,
["Country_showdata"] = 6200,
["Country_topics"] = 22000,
["County"] = 7900,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 6400,
["Course_instructor"] = 2500,
["Cquote"] = 37000,
["Cr"] = 4300,
["Cr-rt"] = 2100,
["Create_taxonomy/link"] = 108000,
["Cref2"] = 2300,
["Cricinfo"] = 24000,
["Cricketarchive"] = 3100,
["Crime_opentask"] = 49000,
["Croatian_Census_2021"] = 3600,
["Cross"] = 3100,
["Crossreference"] = 2600,
["Crossreference/styles.css"] = 2600,
["Csv"] = 3000,
["Ct"] = 12000,
["Curlie"] = 6800,
["Currency"] = 3600,
["Current_events"] = 8300,
["Current_events/styles.css"] = 8300,
["Currentdate"] = 23000,
["Cvt"] = 105000,
["Cycling_Archives"] = 4300,
["Cycling_archives"] = 2500,
["Cycling_data_LTD"] = 2100,
["Cycling_data_MOV_men"] = 2000,
["Cycling_data_TJV"] = 2100,
["Cycling_team_link"] = 12000,
["Module:CFB_schedule"] = 26000,
["Module:CallAssert"] = 245000,
["Module:CanadaByProvinceCatNav"] = 8400,
["Module:Cat_main"] = 200000,
["Module:Catalog_lookup_link"] = 516000,
["Module:Category_described_in_year"] = 5700,
["Module:Category_described_in_year/conf"] = 5700,
["Module:Category_handler"] = 4580000,
["Module:Category_handler/blacklist"] = 4580000,
["Module:Category_handler/config"] = 4580000,
["Module:Category_handler/data"] = 4580000,
["Module:Category_handler/shared"] = 4580000,
["Module:Category_more_if_exists"] = 40000,
["Module:Category_pair"] = 6100,
["Module:Category_see_also"] = 39000,
["Module:Celestial_object_quadrangle"] = 2300,
["Module:Check_DYK_hook"] = 115000,
["Module:Check_for_clobbered_parameters"] = 1220000,
["Module:Check_for_deprecated_parameters"] = 60000,
["Module:Check_for_unknown_parameters"] = 19200000,
["Module:Check_isxn"] = 481000,
["Module:Check_winner_by_scores"] = 13000,
["Module:Checkuser"] = 76000,
["Module:Chem2"] = 5100,
["Module:Chem2/styles.css"] = 5100,
["Module:Citation/CS1"] = 5630000,
["Module:Citation/CS1/COinS"] = 5630000,
["Module:Citation/CS1/Configuration"] = 5630000,
["Module:Citation/CS1/Date_validation"] = 5630000,
["Module:Citation/CS1/Identifiers"] = 5630000,
["Module:Citation/CS1/Suggestions"] = 25000,
["Module:Citation/CS1/Utilities"] = 5630000,
["Module:Citation/CS1/Whitelist"] = 5630000,
["Module:Citation/CS1/styles.css"] = 5770000,
["Module:Cite_IUCN"] = 58000,
["Module:Cite_Q"] = 48000,
["Module:Cite_tweet"] = 37000,
["Module:Cite_web"] = 40000,
["Module:Clade"] = 7700,
["Module:Class"] = 10300000,
["Module:Class/definition.json"] = 10300000,
["Module:Class/styles.css"] = 9380000,
["Module:Class_mask"] = 10600000,
["Module:Clickable_button_2"] = 967000,
["Module:Collapsible_list"] = 54000,
["Module:College_color"] = 129000,
["Module:College_color/data"] = 129000,
["Module:Color_contrast"] = 503000,
["Module:Color_contrast/colors"] = 505000,
["Module:Commons_link"] = 259000,
["Module:Complex_date"] = 66000,
["Module:Convert"] = 1240000,
["Module:Convert/data"] = 1240000,
["Module:Convert/helper"] = 8700,
["Module:Convert/text"] = 1240000,
["Module:Convert/wikidata"] = 3300,
["Module:Convert/wikidata/data"] = 3300,
["Module:ConvertNumeric"] = 15000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1340000,
["Module:Coordinates/styles.css"] = 1340000,
["Module:Copied"] = 19000,
["Module:Count_banners"] = 48000,
["Module:CountryAdjectiveDemonym"] = 45000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 45000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 45000,
["Module:CountryAdjectiveDemonym/The"] = 45000,
["Module:CountryData"] = 143000,
["Module:CountryData/cacheA"] = 12000,
["Module:CountryData/cacheB"] = 8400,
["Module:CountryData/cacheC"] = 12000,
["Module:CountryData/cacheD"] = 4600,
["Module:CountryData/cacheE"] = 2800,
["Module:CountryData/cacheF"] = 2600,
["Module:CountryData/cacheG"] = 2700,
["Module:CountryData/summary"] = 143000,
["Module:Country_adjective"] = 4300,
["Module:Country_alias"] = 53000,
["Module:Country_alias/data"] = 53000,
["Module:Currency"] = 3700,
["Module:Currency/Presentation"] = 3700,
}
aced898b85e10a9ce468c2d9ace38513eb8d4392
Module:Transclusion count/data/D
828
1586
2921
2023-10-01T05:37:06Z
w>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["D&D"] = 3900,
["D&D_to-do"] = 5600,
["D-da"] = 2600,
["DANFS"] = 8400,
["DC-Comics-trademark-copyright"] = 2100,
["DCS_Sri_Lanka"] = 2100,
["DDR"] = 2800,
["DEC"] = 8700,
["DECADE"] = 283000,
["DEN"] = 6800,
["DEU"] = 17000,
["DMC"] = 58000,
["DMCA"] = 2350000,
["DNB"] = 8800,
["DNB-Portal"] = 2100,
["DNB_portal"] = 3800,
["DNK"] = 7800,
["DNZB"] = 3600,
["DOM"] = 2100,
["DOWs"] = 2700,
["DRV_links"] = 3600,
["DWT"] = 2300,
["DYKC"] = 6700,
["DYKF"] = 2100,
["DYK_blue"] = 3400,
["DYK_checklist"] = 14000,
["DYK_conditions"] = 67000,
["DYK_files"] = 2100,
["DYK_header"] = 34000,
["DYK_nompage_links"] = 79000,
["DYK_talk"] = 103000,
["DYK_talk/date"] = 103000,
["DYK_tools"] = 52000,
["DYK_tools/styles.css"] = 52000,
["DYKfile"] = 12000,
["DZA"] = 2800,
["Dab"] = 18000,
["Dagger"] = 18000,
["Dashboard.wikiedu.org_assignment"] = 14000,
["Dashboard.wikiedu.org_bibliography/guide"] = 6700,
["Dashboard.wikiedu.org_course_header"] = 6200,
["Dashboard.wikiedu.org_course_header/edit-note"] = 6200,
["Dashboard.wikiedu.org_draft_template/about_this_sandbox"] = 10000,
["Dashboard.wikiedu.org_evaluate_article/guide"] = 8200,
["Dashboard.wikiedu.org_peer_review/guide"] = 12000,
["Dashboard.wikiedu.org_sandbox"] = 96000,
["Dashboard.wikiedu.org_student_editor"] = 84000,
["Dashboard.wikiedu.org_student_program_sandbox"] = 95000,
["Dashboard.wikiedu.org_talk_course_link"] = 85000,
["Dashboard.wikiedu.org_user_talk"] = 2200,
["Date"] = 42000,
["Date-mf"] = 39000,
["Date_table_sorting"] = 39000,
["Dated_maintenance_category"] = 2410000,
["Dated_maintenance_category_(articles)"] = 2350000,
["Dated_maintenance_category_by_type_(articles)"] = 22000,
["Davis_Cup_player"] = 2500,
["Day+1"] = 6900,
["Day-1"] = 8300,
["Dbox"] = 3000,
["Dda"] = 5200,
["Dead_YouTube_link"] = 2700,
["Dead_Youtube_links"] = 2200,
["Dead_link"] = 287000,
["Deadlink"] = 3100,
["Death-date"] = 11000,
["Death-date_and_age"] = 10000,
["Death_date"] = 9200,
["Death_date_and_age"] = 389000,
["Death_date_and_given_age"] = 2700,
["Death_date_text"] = 11000,
["Death_year_and_age"] = 16000,
["Death_year_category_header"] = 2000,
["Decade"] = 2100,
["Decade_link"] = 32000,
["Decimals"] = 3100,
["Decline"] = 2500,
["Declined"] = 3200,
["Decrease"] = 35000,
["Define"] = 4400,
["Deg2DMS"] = 3400,
["Deletion_review_log_header"] = 5700,
["Deletion_review_log_header/Core"] = 5700,
["Delink"] = 1990000,
["Delink_question_hyphen-minus"] = 295000,
["Delrevxfd"] = 3600,
["Democratic_Party_(US)/meta/shading"] = 15000,
["Description_missing"] = 7100,
["Designation/abbreviation"] = 8300,
["Designation/color"] = 76000,
["Designation/colour"] = 79000,
["Designation/colour2"] = 18000,
["Designation/divbox"] = 30000,
["Designation/text"] = 42000,
["Designation_list"] = 5400,
["Details"] = 4500,
["DetailsLink"] = 5900,
["Detect_singular"] = 202000,
["Deutsche_Bahn_station_codes"] = 2200,
["DfE_performance_tables"] = 4500,
["Diff"] = 30000,
["Diff2"] = 12000,
["Digits"] = 21000,
["Directories_box"] = 3200,
["Disamb"] = 2200,
["Disambig"] = 63000,
["Disambig-Class"] = 12000,
["DisambigProj"] = 12000,
["DisambigProject"] = 150000,
["Disambigproject"] = 5800,
["Disambiguation"] = 218000,
["Disambiguation/cat"] = 218000,
["Disambiguation_page_short_description"] = 354000,
["Discogs_artist"] = 17000,
["Discogs_master"] = 12000,
["Discogs_release"] = 3100,
["Discussion_bottom"] = 12000,
["Discussion_top"] = 13000,
["DisestcatCountry"] = 9500,
["DisestcatCountry/core"] = 9500,
["DisestcatCountryDecade"] = 2600,
["DisestcatUSstate"] = 4900,
["DisestcatUSstate/core"] = 4900,
["Disputed"] = 2200,
["Distinguish"] = 98000,
["Disused_Rail_Start"] = 3900,
["Disused_rail_start"] = 4300,
["Disused_style"] = 4700,
["Div_col"] = 400000,
["Div_col/styles.css"] = 401000,
["Div_col_end"] = 302000,
["Div_col_start"] = 2900,
["Div_end"] = 2700,
["Divbox"] = 347000,
["Divbox/styles.css"] = 370000,
["Dividing_line"] = 4000,
["Dmbox"] = 461000,
["Dmbox/styles.css"] = 461000,
["Do_not_move_to_Commons"] = 16000,
["Doc"] = 3600,
["Documentation"] = 121000,
["Documentation_subpage"] = 95000,
["Dog_opentask"] = 3500,
["Doi"] = 26000,
["Doing"] = 3600,
["Don't_edit_this_line"] = 108000,
["Don't_edit_this_line_always_display"] = 479000,
["Don't_edit_this_line_extinct"] = 479000,
["Don't_edit_this_line_link_target"] = 479000,
["Don't_edit_this_line_link_text"] = 479000,
["Don't_edit_this_line_parent"] = 479000,
["Don't_edit_this_line_rank"] = 479000,
["Don't_edit_this_line_refs"] = 108000,
["Don't_edit_this_line_same_as"] = 479000,
["Done"] = 103000,
["Doppelganger"] = 2800,
["Double+single"] = 2800,
["Double-dagger"] = 19000,
["Dr"] = 3400,
["Dr-logno"] = 3400,
["Dr-make"] = 3500,
["Dr-yr"] = 3400,
["Draft"] = 4300,
["Draft_article"] = 6400,
["Draft_article_check"] = 6500,
["Draft_categories"] = 8100,
["Draft_other"] = 112000,
["Draft_topics"] = 24000,
["Drafts_moved_from_mainspace"] = 8700,
["Draw"] = 3900,
["Draw_key"] = 18000,
["Draw_links"] = 13000,
["Drep"] = 3500,
["Drugbankcite"] = 4300,
["Drugbox"] = 7600,
["Drugs.com"] = 3800,
["Ds/talk_notice"] = 6400,
["Dts"] = 38000,
["Dubious"] = 8100,
["Duck"] = 2900,
["Dummytab"] = 5000,
["Duration"] = 38000,
["Dutch_municipality"] = 2700,
["Dyktalk"] = 42000,
["Dynamic_list"] = 10000,
["Module:DYK_checklist"] = 14000,
["Module:DYK_checklist/data"] = 14000,
["Module:DYK_nompage_links"] = 79000,
["Module:Data"] = 149000,
["Module:Date"] = 1380000,
["Module:DateI18n"] = 66000,
["Module:Date_table_sorting"] = 39000,
["Module:DecodeEncode"] = 117000,
["Module:Delink"] = 2080000,
["Module:Detect_singular"] = 1530000,
["Module:Disambiguation"] = 15800000,
["Module:Disambiguation/templates"] = 15400000,
["Module:Distinguish"] = 98000,
["Module:Documentation"] = 167000,
["Module:Documentation/config"] = 167000,
["Module:Documentation/styles.css"] = 167000,
["Module:Draft_topics"] = 24000,
["Module:Duration"] = 238000,
}
8f683619a2978bf72bfba8daad66e905645f9921
Module:Transclusion count/data/E
828
585
1318
2023-10-01T05:37:16Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["EB1911"] = 12000,
["EB1911_poster"] = 3500,
["ECU"] = 2300,
["EC_number"] = 4000,
["EGY"] = 3300,
["EHAK"] = 3300,
["ENFA"] = 3600,
["ENG"] = 8600,
["ENGLs"] = 3100,
["EOL"] = 2500,
["ER_to_list_entry"] = 5800,
["ESP"] = 15000,
["ESPNcricinfo"] = 3500,
["EST"] = 4200,
["Earthquake_magnitude"] = 2100,
["Eastern_name_order"] = 4400,
["Ebicite"] = 7100,
["Ec"] = 28000,
["Ed"] = 5900,
["Ed_right"] = 3000,
["Edit"] = 702000,
["EditAtWikidata"] = 763000,
["EditOnWikidata"] = 36000,
["Edit_COI"] = 8100,
["Edit_COI/answered"] = 5100,
["Edit_COI/declined"] = 3200,
["Edit_a_taxon"] = 108000,
["Edit_conflict"] = 31000,
["Edit_count_link"] = 7800,
["Edit_extended-protected"] = 3600,
["Edit_fully-protected"] = 7300,
["Edit_on_Wikidata"] = 41000,
["Edit_protected"] = 3300,
["Edit_semi-protected"] = 35000,
["Edit_summary_field"] = 9900,
["Edit_summary_field/OOUI"] = 11000,
["Edit_taxonomy"] = 371000,
["Edit_template-protected"] = 4100,
["Editcount"] = 3000,
["Editnotice"] = 16000,
["Editnotice/notice"] = 13000,
["Editnotice_for_lists_of_people"] = 2500,
["EduBase"] = 4500,
["Educational_assignment"] = 4000,
["Efn"] = 181000,
["Efn-lr"] = 2600,
["Efn-ua"] = 4300,
["Efs_player"] = 5400,
["Efs_start"] = 5500,
["Election_box_2-party-preferred"] = 2300,
["Election_box_2pp"] = 2300,
["Election_box_begin"] = 31000,
["Election_box_begin_no_change"] = 14000,
["Election_box_candidate"] = 7000,
["Election_box_candidate_AU_party"] = 3500,
["Election_box_candidate_no_change"] = 2700,
["Election_box_candidate_with_party_link"] = 26000,
["Election_box_candidate_with_party_link_no_change"] = 14000,
["Election_box_end"] = 44000,
["Election_box_formal"] = 3500,
["Election_box_gain_with_party_link"] = 11000,
["Election_box_gain_with_party_link_no_swing"] = 2100,
["Election_box_hold_AU_party"] = 2900,
["Election_box_hold_with_party_link"] = 15000,
["Election_box_hold_with_party_link_no_change"] = 4700,
["Election_box_hold_with_party_link_no_swing"] = 4300,
["Election_box_hold_with_party_link_without_swing"] = 2100,
["Election_box_informal"] = 3900,
["Election_box_majority"] = 19000,
["Election_box_new_seat_win"] = 5000,
["Election_box_registered_electors"] = 6100,
["Election_box_total"] = 3200,
["Election_box_total_no_change"] = 12000,
["Election_box_turnout"] = 25000,
["Election_box_turnout_no_change"] = 2200,
["Election_box_winning_candidate_with_party_link"] = 18000,
["Election_box_winning_candidate_with_party_link_no_change"] = 14000,
["Election_results"] = 8000,
["Election_summary_begin"] = 4000,
["Election_summary_party"] = 4000,
["Election_table"] = 2500,
["Election_table/category"] = 2500,
["Elo_ranking"] = 3900,
["Elo_rating"] = 3900,
["Em"] = 1450000,
["Em_dash"] = 13000,
["Emblem_table"] = 3600,
["Emdash"] = 3000,
["Emmy_Awards/color"] = 4300,
["Empty_category"] = 3600,
["Empty_section"] = 30000,
["En"] = 3500,
["En_dash"] = 31000,
["En_dash_range"] = 177000,
["Encodefirst"] = 700000,
["End"] = 107000,
["End_box"] = 14000,
["End_date"] = 82000,
["End_date_and_age"] = 6700,
["End_of_course_week"] = 6300,
["End_of_students_table"] = 5300,
["Endangered_Languages_Project"] = 11000,
["Endash"] = 7600,
["Endflatlist"] = 305000,
["Endorse"] = 5100,
["Endplainlist"] = 34000,
["English_anime_licensee"] = 4200,
["English_football_updater"] = 3200,
["English_manga_publisher"] = 2300,
["Engvar"] = 9500,
["EngvarB"] = 105000,
["Ensure_AAA_contrast_ratio"] = 15000,
["Ensure_AA_contrast_ratio"] = 5000,
["Enum"] = 39000,
["Enzymes"] = 6200,
["Episode_list"] = 20000,
["Episode_list/sublist"] = 5500,
["Episode_table"] = 18000,
["Error"] = 22000,
["Error-small"] = 13000,
["ErrorBar2"] = 4600,
["Esc"] = 2400,
["Esccnty"] = 2700,
["Esoteric_file"] = 3400,
["Essay"] = 5100,
["Essay-like"] = 4500,
["EstcatContinent"] = 3200,
["EstcatContinent/core"] = 3200,
["EstcatCountry"] = 28000,
["EstcatCountry/core"] = 28000,
["EstcatCountryDecade"] = 5500,
["EstcatCountryDecade/core"] = 5500,
["EstcatUSstate"] = 10000,
["EstcatUSstate/core"] = 10000,
["Estonia_To-do"] = 22000,
["Ethnologue18"] = 3800,
["Europe_topic"] = 9900,
["Excerpt"] = 6300,
["Excerpt/styles.css"] = 6300,
["ExistNotRedirect"] = 50000,
["Expand_French"] = 17000,
["Expand_German"] = 16000,
["Expand_Italian"] = 4300,
["Expand_Japanese"] = 3700,
["Expand_Russian"] = 3600,
["Expand_Spanish"] = 7300,
["Expand_language"] = 78000,
["Expand_list"] = 11000,
["Expand_section"] = 38000,
["Expand_wikitext"] = 102000,
["Explain"] = 2700,
["Extended_football_squad_player"] = 6400,
["Extended_football_squad_start"] = 6400,
["External_links"] = 3600,
["External_media"] = 11000,
["External_music_video"] = 23000,
["Extinct"] = 12000,
["Extra_album_cover"] = 8300,
["Extra_chronology"] = 15000,
["Extract"] = 8200,
["Module:EditAtWikidata"] = 1930000,
["Module:Effective_protection_expiry"] = 54000,
["Module:Effective_protection_level"] = 56000,
["Module:Election_results"] = 8000,
["Module:Endangered_Languages_Project"] = 11000,
["Module:English_variant_notice"] = 57000,
["Module:Engvar"] = 11000,
["Module:Episode_list"] = 26000,
["Module:Episode_table"] = 19000,
["Module:Error"] = 40000,
["Module:Escape"] = 11000,
["Module:Excerpt"] = 6300,
["Module:Excerpt/config"] = 6300,
["Module:Excerpt/portals"] = 4600,
["Module:ExistNotRedirect"] = 50000,
["Module:Expand_wikitext"] = 102000,
["Module:Exponential_search"] = 617000,
["Module:External_links"] = 66000,
["Module:External_links/conf"] = 66000,
["Module:External_links/conf/Sports"] = 66000,
}
bdca9b06054258d1db712dc02d21aa4fa46d74c2
Module:Transclusion count/data/I
828
70
1093
136
2023-10-01T05:37:56Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["IAAF_name"] = 2100,
["IAST"] = 6400,
["IBDB_name"] = 9100,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 154000,
["IMDb_title"] = 189000,
["IMO_Number"] = 4100,
["IMSLP"] = 8300,
["INA"] = 2100,
["IND"] = 7600,
["INR"] = 6500,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5200,
["IP"] = 2600,
["IPA"] = 142000,
["IPA-de"] = 8100,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 6000,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-ru"] = 2700,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 48000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7100,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3600,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 519000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8100,
["ISP"] = 5300,
["ISR"] = 4900,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9000,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Iaaf_name"] = 7200,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 17000,
["Icehockeystats"] = 12000,
["Icon"] = 581000,
["If"] = 272000,
["If_all"] = 6400,
["If_between"] = 3800,
["If_both"] = 155000,
["If_empty"] = 3660000,
["If_first_display_both"] = 73000,
["If_in_page"] = 10000,
["If_last_display_both"] = 30000,
["If_preview"] = 58000,
["If_then_show"] = 289000,
["Ifempty"] = 4000,
["Ifeq"] = 16000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1300000,
["Ifnotempty"] = 14000,
["Ifnumber"] = 36000,
["Ifsubst"] = 446000,
["Ih"] = 7500,
["Ill"] = 117000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 167000,
["Image_requested/Category_helper"] = 159000,
["Imbox"] = 917000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5640000,
["Importance/colour"] = 5660000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7000,
["Improve_documentation"] = 2400,
["In_class"] = 5900,
["In_lang"] = 356000,
["In_progress"] = 3200,
["In_string"] = 75000,
["In_title"] = 19000,
["Inactive_WikiProject_banner"] = 205000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 43000,
["Incumbent_pope"] = 4300,
["Indent"] = 4400,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4400,
["Inflation/UK/dataset"] = 4400,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6200,
["Inflation/year"] = 25000,
["Info"] = 7300,
["Infobox"] = 3230000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 147000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4700,
["Infobox_Indian_constituency/defaultdata"] = 4700,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7700,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4800,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3300,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8000,
["Infobox_UK_place/NoPostCode"] = 3100,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2700,
["Infobox_YouTube_personality/styles.css"] = 2700,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 192000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6800,
["Infobox_animanga/Header"] = 6800,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 28000,
["Infobox_artist_discography"] = 5900,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8400,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 27000,
["Infobox_character"] = 7600,
["Infobox_chess_biography"] = 3900,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5500,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 83000,
["Infobox_computing_device"] = 2300,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5400,
["Infobox_country"] = 6400,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6500,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2300,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_designation_list"] = 20000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 6900,
["Infobox_dim/core"] = 6900,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9800,
["Infobox_drug/chemical_formula"] = 9800,
["Infobox_drug/data_page_link"] = 9800,
["Infobox_drug/formatATC"] = 9600,
["Infobox_drug/formatCASnumber"] = 9800,
["Infobox_drug/formatChEBI"] = 9800,
["Infobox_drug/formatChEMBL"] = 9800,
["Infobox_drug/formatChemDBNIAID"] = 9800,
["Infobox_drug/formatChemSpider"] = 9800,
["Infobox_drug/formatCompTox"] = 9800,
["Infobox_drug/formatDrugBank"] = 9800,
["Infobox_drug/formatIUPHARBPS"] = 9800,
["Infobox_drug/formatJmol"] = 9800,
["Infobox_drug/formatKEGG"] = 9800,
["Infobox_drug/formatPDBligand"] = 9100,
["Infobox_drug/formatPubChemCID"] = 9800,
["Infobox_drug/formatPubChemSID"] = 9800,
["Infobox_drug/formatUNII"] = 9800,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9800,
["Infobox_drug/maintenance_categories"] = 9800,
["Infobox_drug/non-ref-space"] = 4200,
["Infobox_drug/pregnancy_category"] = 9800,
["Infobox_drug/title"] = 9800,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5400,
["Infobox_family"] = 2100,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 156000,
["Infobox_film/short_description"] = 152000,
["Infobox_film_awards"] = 2600,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2600,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 206000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8000,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2600,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3400,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8800,
["Infobox_islands/area"] = 9300,
["Infobox_islands/density"] = 9300,
["Infobox_islands/length"] = 8900,
["Infobox_islands/styles.css"] = 8800,
["Infobox_journal"] = 9700,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4200,
["Infobox_language"] = 9500,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9500,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3600,
["Infobox_library"] = 2200,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 80000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 423000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2000,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2000,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 121000,
["Infobox_musical_artist/color"] = 121000,
["Infobox_musical_artist/hCard_class"] = 313000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7400,
["Infobox_name_module"] = 7000,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2500,
["Infobox_noble"] = 7300,
["Infobox_officeholder"] = 219000,
["Infobox_officeholder/office"] = 224000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 2900,
["Infobox_park"] = 7500,
["Infobox_person"] = 474000,
["Infobox_person/Wikidata"] = 4700,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7000,
["Infobox_person/weight"] = 66000,
["Infobox_philosopher"] = 3400,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3000,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3900,
["Infobox_racing_driver_series_section"] = 2000,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6400,
["Infobox_religious_biography"] = 5300,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 2900,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 15000,
["Infobox_rugby_league_biography"] = 9900,
["Infobox_rugby_league_biography/PLAYER"] = 9800,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 48000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 562000,
["Infobox_settlement/areadisp"] = 238000,
["Infobox_settlement/columns"] = 94000,
["Infobox_settlement/columns/styles.css"] = 94000,
["Infobox_settlement/densdisp"] = 437000,
["Infobox_settlement/impus"] = 82000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 94000,
["Infobox_settlement/metric"] = 210000,
["Infobox_settlement/pref"] = 293000,
["Infobox_settlement/styles.css"] = 562000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3500,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2200,
["Infobox_sports_competition_event"] = 17000,
["Infobox_sports_competition_event/medalrow"] = 11000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5400,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 106000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3400,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 54000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2100,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inline_block"] = 4500,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 155000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 3600,
["Invalid_SVG/styles.css"] = 3600,
["Iptalk"] = 17000,
["IranCensus2006"] = 47000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 47000,
["Irc"] = 2100,
["Irish_place_name"] = 2600,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 142000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 6100,
["Is_italic_taxon"] = 479000,
["Is_redirect"] = 27000,
["Isbn"] = 7500,
["Isfdb_name"] = 3700,
["Isfdb_title"] = 4400,
["Isnumeric"] = 210000,
["Iso2continent"] = 35000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 227000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5300,
["Italic_title"] = 285000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4300,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 142000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 131000,
["Module:IPA"] = 142000,
["Module:IPA/data"] = 128000,
["Module:IPA/styles.css"] = 114000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 48000,
["Module:IPAc-en/data"] = 48000,
["Module:IPAc-en/phonemes"] = 48000,
["Module:IPAc-en/pronunciation"] = 48000,
["Module:IPAddress"] = 188000,
["Module:ISO_3166"] = 1040000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 8200,
["Module:ISO_3166/data/National"] = 1040000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 581000,
["Module:Icon/data"] = 581000,
["Module:If_empty"] = 3660000,
["Module:If_in_page"] = 10000,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 357000,
["Module:Indent"] = 4400,
["Module:Infobox"] = 4110000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4360000,
["Module:Infobox3cols"] = 297000,
["Module:InfoboxImage"] = 4420000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 404000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3000,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 63000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9000,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3300,
["Module:Is_infobox_in_lead"] = 377000,
["Module:Is_instance"] = 335000,
["Module:Italic_title"] = 1120000,
["Module:Italic_title2"] = 5300,
}
96976089c1e9db8d200dbe641eaed9ec564df70a
Module:Transclusion count/data/L
828
1008
2212
2023-10-01T05:38:26Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["LASTYEAR"] = 711000,
["LAT"] = 3600,
["LCAuth"] = 3400,
["LDSproject"] = 2800,
["LTU"] = 4300,
["LUX"] = 2300,
["LVA"] = 4200,
["La"] = 453000,
["Label"] = 6300,
["LabourProject"] = 3100,
["Lafc"] = 5500,
["Lake_project"] = 5200,
["Lang"] = 354000,
["Lang-ar"] = 42000,
["Lang-az"] = 4500,
["Lang-ba"] = 3400,
["Lang-be"] = 4300,
["Lang-bg"] = 10000,
["Lang-bn"] = 7600,
["Lang-cs"] = 3600,
["Lang-cy"] = 3800,
["Lang-da"] = 3600,
["Lang-de"] = 41000,
["Lang-el"] = 23000,
["Lang-en"] = 17000,
["Lang-es"] = 19000,
["Lang-et"] = 2200,
["Lang-fa"] = 76000,
["Lang-fi"] = 3000,
["Lang-fr"] = 24000,
["Lang-ga"] = 7600,
["Lang-gd"] = 3800,
["Lang-gr"] = 2700,
["Lang-grc"] = 7300,
["Lang-he"] = 16000,
["Lang-hr"] = 3000,
["Lang-hu"] = 9500,
["Lang-hy"] = 6700,
["Lang-id"] = 2200,
["Lang-it"] = 12000,
["Lang-ja"] = 4500,
["Lang-ka"] = 5400,
["Lang-kk"] = 2600,
["Lang-ko"] = 3700,
["Lang-ku"] = 4200,
["Lang-la"] = 12000,
["Lang-lt"] = 2200,
["Lang-lv"] = 2100,
["Lang-mk"] = 3600,
["Lang-ms"] = 2600,
["Lang-my"] = 4700,
["Lang-ne"] = 3400,
["Lang-nl"] = 4900,
["Lang-no"] = 6100,
["Lang-oc"] = 7100,
["Lang-pl"] = 8600,
["Lang-pt"] = 6800,
["Lang-ro"] = 3800,
["Lang-ru"] = 92000,
["Lang-rus"] = 3100,
["Lang-sa"] = 2300,
["Lang-si"] = 2000,
["Lang-sl"] = 3900,
["Lang-sq"] = 3500,
["Lang-sr"] = 4900,
["Lang-sr-Cyrl"] = 13000,
["Lang-sr-cyr"] = 5400,
["Lang-sr-cyrl"] = 3000,
["Lang-sv"] = 6500,
["Lang-ta"] = 2600,
["Lang-th"] = 11000,
["Lang-tr"] = 7600,
["Lang-uk"] = 19000,
["Lang-ur"] = 9300,
["Lang-zh"] = 72000,
["Lang2iso"] = 5400,
["Language_with_name"] = 9200,
["Languages"] = 2700,
["Large"] = 229000,
["Large_category_TOC"] = 11000,
["Large_category_TOC/tracking"] = 11000,
["Last_edited_by"] = 68000,
["Last_word"] = 20000,
["LaunchesByYear_footer"] = 3300,
["LaunchesByYear_header"] = 3300,
["Lc"] = 8900,
["Lcfirstletter"] = 2500,
["Lead_too_short"] = 8900,
["League_icon"] = 3300,
["Leagueicon"] = 3100,
["Leave_feedback/link"] = 75000,
["Left"] = 8600,
["Legend"] = 31000,
["Legend/styles.css"] = 129000,
["Legend0"] = 8100,
["Legend2"] = 18000,
["Legend_inline"] = 21000,
["LepIndex"] = 12000,
["LepidopteraTalk"] = 56000,
["Letter-NumberCombDisambig"] = 3700,
["Letter–number_combination_disambiguation"] = 4900,
["Libera.Chat"] = 11000,
["Library_link_about"] = 3900,
["Library_resources_box"] = 4000,
["Librivox_author"] = 6700,
["Librivox_book"] = 3600,
["License_migration"] = 52000,
["License_migration_complete"] = 23000,
["License_migration_is_redundant"] = 7600,
["License_migration_not_eligible"] = 6700,
["License_migration_redundant"] = 22000,
["Like"] = 2400,
["Like_resume"] = 3700,
["Likely"] = 4500,
["Line_link"] = 10000,
["Linescore_Amfootball"] = 2300,
["LinkCatIfExists2"] = 58000,
["LinkStatusLocal"] = 44000,
["LinkSummary"] = 241000,
["LinkSummaryLive"] = 8100,
["Link_if_exists"] = 75000,
["Link_note"] = 64000,
["Link_summary"] = 254000,
["Link_target"] = 14000,
["Linkcolor"] = 2300,
["Linkless_exists"] = 15000,
["Linksummarylive"] = 4000,
["Linktext"] = 22000,
["List-Class"] = 16000,
["Listen"] = 14000,
["Listen_live"] = 2300,
["Lists_of_people_editnotice"] = 2600,
["Lit"] = 5000,
["Literal_translation"] = 10000,
["Lnl"] = 8100,
["LoMP"] = 4200,
["Location_map"] = 711000,
["Location_map+"] = 25000,
["Location_map_data_documentation"] = 6400,
["Location_map_many"] = 4100,
["Location_map~"] = 24000,
["Log"] = 3600,
["Logo_fur"] = 30000,
["Logo_requested"] = 3500,
["London_Gazette"] = 33000,
["Long_plot"] = 3900,
["Longitem"] = 660000,
["Longlink"] = 6400,
["Look_from"] = 9300,
["Lookfrom"] = 4900,
["Loop"] = 104000,
["Loss"] = 3000,
["Low-Class"] = 15000,
["Low-importance"] = 15000,
["Lower"] = 8000,
["Lowercase"] = 5200,
["Lowercase_title"] = 15000,
["Lowercasetitle"] = 2400,
["Lt"] = 2400,
["Lua"] = 9800,
["Lx"] = 22000,
["Module:Labelled_list_hatnote"] = 545000,
["Module:Lang"] = 1470000,
["Module:Lang-zh"] = 72000,
["Module:Lang/ISO_639_synonyms"] = 1470000,
["Module:Lang/data"] = 1470000,
["Module:Lang/documentor_tool"] = 3900,
["Module:Lang/tag_from_name"] = 3000,
["Module:Language"] = 2900,
["Module:Language/data"] = 2900,
["Module:Language/data/ISO_639-1"] = 9300,
["Module:Language/data/ISO_639-2"] = 2900,
["Module:Language/data/ISO_639-3_(dep)"] = 20000,
["Module:Language/data/ISO_639_deprecated"] = 20000,
["Module:Language/data/ISO_639_name_to_code"] = 5400,
["Module:Language/data/ISO_639_override"] = 20000,
["Module:Language/data/iana_languages"] = 1470000,
["Module:Language/data/iana_regions"] = 1470000,
["Module:Language/data/iana_scripts"] = 1470000,
["Module:Language/data/iana_suppressed_scripts"] = 1470000,
["Module:Language/data/iana_variants"] = 1470000,
["Module:Large_category_TOC"] = 11000,
["Module:Large_category_TOC/styles.css"] = 11000,
["Module:Latin"] = 8300,
["Module:Librivox_book"] = 3600,
["Module:Lighthouse_tracking"] = 2600,
["Module:List"] = 2140000,
["Module:Listen"] = 14000,
["Module:Listen/styles.css"] = 13000,
["Module:Location_map"] = 745000,
["Module:Location_map/data/Antarctica"] = 2700,
["Module:Location_map/data/Arkansas"] = 3300,
["Module:Location_map/data/Australia"] = 2200,
["Module:Location_map/data/Australia_New_South_Wales"] = 3600,
["Module:Location_map/data/Australia_Queensland"] = 6000,
["Module:Location_map/data/Australia_South_Australia"] = 2400,
["Module:Location_map/data/Austria"] = 3400,
["Module:Location_map/data/Azerbaijan"] = 4900,
["Module:Location_map/data/Bangladesh"] = 2000,
["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400,
["Module:Location_map/data/Brazil"] = 4800,
["Module:Location_map/data/California"] = 6000,
["Module:Location_map/data/Canada"] = 4600,
["Module:Location_map/data/Canada_Alberta"] = 2400,
["Module:Location_map/data/Canada_British_Columbia"] = 3100,
["Module:Location_map/data/Canada_Ontario"] = 2400,
["Module:Location_map/data/China"] = 2900,
["Module:Location_map/data/Croatia"] = 3500,
["Module:Location_map/data/Czech_Republic"] = 6800,
["Module:Location_map/data/Estonia"] = 3000,
["Module:Location_map/data/Europe"] = 4300,
["Module:Location_map/data/Florida"] = 2600,
["Module:Location_map/data/France"] = 40000,
["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400,
["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900,
["Module:Location_map/data/France_Grand_Est"] = 5300,
["Module:Location_map/data/France_Hauts-de-France"] = 3900,
["Module:Location_map/data/France_Normandy"] = 3400,
["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800,
["Module:Location_map/data/France_Occitanie"] = 4700,
["Module:Location_map/data/Germany"] = 17000,
["Module:Location_map/data/Germany_Bavaria"] = 2900,
["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600,
["Module:Location_map/data/Greece"] = 4000,
["Module:Location_map/data/Hungary"] = 2800,
["Module:Location_map/data/Illinois"] = 3400,
["Module:Location_map/data/India"] = 23000,
["Module:Location_map/data/India3"] = 2900,
["Module:Location_map/data/India_Andhra_Pradesh"] = 2500,
["Module:Location_map/data/India_Karnataka"] = 2100,
["Module:Location_map/data/India_Kerala"] = 2700,
["Module:Location_map/data/India_Maharashtra"] = 2700,
["Module:Location_map/data/India_Punjab"] = 2200,
["Module:Location_map/data/India_Tamil_Nadu"] = 3100,
["Module:Location_map/data/India_Uttar_Pradesh"] = 3200,
["Module:Location_map/data/India_West_Bengal"] = 3300,
["Module:Location_map/data/Indiana"] = 3400,
["Module:Location_map/data/Iowa"] = 3000,
["Module:Location_map/data/Iran"] = 50000,
["Module:Location_map/data/Ireland"] = 3600,
["Module:Location_map/data/Italy"] = 12000,
["Module:Location_map/data/Japan"] = 14000,
["Module:Location_map/data/Maine"] = 2000,
["Module:Location_map/data/Massachusetts"] = 4700,
["Module:Location_map/data/Mexico"] = 3400,
["Module:Location_map/data/Michigan"] = 3800,
["Module:Location_map/data/Minnesota"] = 4600,
["Module:Location_map/data/Nepal"] = 4600,
["Module:Location_map/data/Netherlands"] = 3000,
["Module:Location_map/data/New_York"] = 8100,
["Module:Location_map/data/North_Carolina"] = 3500,
["Module:Location_map/data/Norway"] = 4400,
["Module:Location_map/data/Ohio"] = 2200,
["Module:Location_map/data/Pakistan"] = 2800,
["Module:Location_map/data/Pennsylvania"] = 5900,
["Module:Location_map/data/Peru"] = 2900,
["Module:Location_map/data/Philippines"] = 3100,
["Module:Location_map/data/Poland"] = 52000,
["Module:Location_map/data/Queensland"] = 2200,
["Module:Location_map/data/Romania"] = 5900,
["Module:Location_map/data/Russia"] = 26000,
["Module:Location_map/data/Russia_Bashkortostan"] = 4500,
["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200,
["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800,
["Module:Location_map/data/Serbia"] = 4000,
["Module:Location_map/data/Slovakia"] = 2100,
["Module:Location_map/data/Slovenia"] = 6700,
["Module:Location_map/data/South_Africa"] = 3200,
["Module:Location_map/data/Spain"] = 7700,
["Module:Location_map/data/Sweden"] = 2800,
["Module:Location_map/data/Switzerland"] = 6200,
["Module:Location_map/data/Syria"] = 2200,
["Module:Location_map/data/Texas"] = 3400,
["Module:Location_map/data/Turkey"] = 18000,
["Module:Location_map/data/USA"] = 110000,
["Module:Location_map/data/USA_Alabama"] = 2300,
["Module:Location_map/data/USA_Alaska"] = 2100,
["Module:Location_map/data/USA_Arizona"] = 2100,
["Module:Location_map/data/USA_Arkansas"] = 3500,
["Module:Location_map/data/USA_California"] = 7700,
["Module:Location_map/data/USA_Colorado"] = 2200,
["Module:Location_map/data/USA_Florida"] = 3300,
["Module:Location_map/data/USA_Georgia"] = 2000,
["Module:Location_map/data/USA_Illinois"] = 3700,
["Module:Location_map/data/USA_Indiana"] = 3600,
["Module:Location_map/data/USA_Iowa"] = 3200,
["Module:Location_map/data/USA_Kentucky"] = 3200,
["Module:Location_map/data/USA_Maine"] = 2200,
["Module:Location_map/data/USA_Maryland"] = 2500,
["Module:Location_map/data/USA_Massachusetts"] = 5000,
["Module:Location_map/data/USA_Michigan"] = 4200,
["Module:Location_map/data/USA_Minnesota"] = 5000,
["Module:Location_map/data/USA_Missouri"] = 2100,
["Module:Location_map/data/USA_New_Jersey"] = 2900,
["Module:Location_map/data/USA_New_York"] = 9100,
["Module:Location_map/data/USA_North_Carolina"] = 4300,
["Module:Location_map/data/USA_Ohio"] = 2500,
["Module:Location_map/data/USA_Oregon"] = 2600,
["Module:Location_map/data/USA_Pennsylvania"] = 7000,
["Module:Location_map/data/USA_Texas"] = 3800,
["Module:Location_map/data/USA_Virginia"] = 5100,
["Module:Location_map/data/USA_Washington"] = 2900,
["Module:Location_map/data/USA_West_Virginia"] = 4400,
["Module:Location_map/data/USA_Wisconsin"] = 2700,
["Module:Location_map/data/Ukraine"] = 3200,
["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200,
["Module:Location_map/data/Virginia"] = 4000,
["Module:Location_map/data/Washington"] = 2200,
["Module:Location_map/data/West_Virginia"] = 4100,
["Module:Location_map/data/Wisconsin"] = 2300,
["Module:Location_map/data/doc"] = 6400,
["Module:Location_map/info"] = 6400,
["Module:Location_map/multi"] = 29000,
["Module:Location_map/styles.css"] = 740000,
["Module:London_Gazette_util"] = 33000,
["Module:Lua_banner"] = 9800,
}
10610ced68ec302961944d7f5a685ac098e736e5
Module:Transclusion count/data/M
828
991
2178
2023-10-01T05:38:36Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 3900,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 829000,
["MONTHNUMBER"] = 846000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3700,
["MacTutor"] = 2000,
["Main"] = 341000,
["Main_article"] = 30000,
["Main_other"] = 9560000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9500,
["Main_page_image/ITN/styles.css"] = 2600,
["Main_page_image/TFA"] = 4800,
["Maintenance_category"] = 39000,
["Malay_name"] = 2300,
["Map_requested"] = 8700,
["Map_requested/Category_helper"] = 8600,
["Maplink"] = 29000,
["Maplink-road"] = 6000,
["Marriage"] = 73000,
["Marriage/doc"] = 72000,
["Marriage/styles.css"] = 73000,
["Math"] = 9600,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 248000,
["Maybe_free_media"] = 12000,
["Mbox"] = 2970000,
["Mdash"] = 8800,
["MeSH_name"] = 6100,
["Medal"] = 113000,
["MedalBottom"] = 17000,
["MedalBronze"] = 54000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3100,
["MedalCountry"] = 78000,
["MedalGold"] = 53000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3500,
["Merged-from"] = 16000,
["Merged-to"] = 18000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7300,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2100,
["MilHist"] = 4800,
["Military_navigation"] = 83000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5400,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 15000,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3500,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7200,
["Monthyear"] = 75000,
["Monthyear-1"] = 72000,
["MoreInfo"] = 2000,
["More_citations_needed"] = 367000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2200,
["More_references"] = 3200,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7300,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 211000,
["Multiple_image"] = 50000,
["Multiple_image/styles.css"] = 50000,
["Multiple_issues"] = 124000,
["Multiple_issues/styles.css"] = 124000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5100,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 95000,
["Mvar"] = 6900,
["Mw_lang"] = 79000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 429000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18000000,
["Module:Message_box/ambox.css"] = 3110000,
["Module:Message_box/cmbox.css"] = 424000,
["Module:Message_box/configuration"] = 9500000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 924000,
["Module:Message_box/ombox.css"] = 1580000,
["Module:Message_box/tmbox.css"] = 12300000,
["Module:Military_navigation"] = 83000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1260000,
["Module:Multiple_image"] = 50000,
["Module:Music_ratings"] = 95000,
["Module:Mw_lang"] = 79000,
}
d6618357c3b12c8b70e8e96c698bc6bb513282ef
Module:Transclusion count/data/N
828
1297
2632
2023-10-01T05:38:46Z
w>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["N"] = 17000,
["N.b."] = 2200,
["N/A"] = 24000,
["N/a"] = 55000,
["NA-Class"] = 14000,
["NASTRO_comment"] = 30000,
["NBA_Draft_template_list"] = 3400,
["NBA_Year"] = 5700,
["NBA_color"] = 3700,
["NBA_color_cell"] = 4300,
["NBA_color_cell2"] = 3400,
["NBA_player_statistics_legend"] = 4400,
["NBA_player_statistics_start"] = 3800,
["NBbox"] = 3400,
["NCAA_color_cell"] = 10000,
["NCAA_secondary_color_cell"] = 4200,
["NCES_District_ID"] = 2600,
["NED"] = 9700,
["NEXTYEAR"] = 8100,
["NFLAltPrimaryStyle"] = 2200,
["NFLPrimaryStyle"] = 27000,
["NFLSecondaryColor"] = 18000,
["NFL_Roster_navbox_template_list"] = 2500,
["NFL_Year"] = 24000,
["NFL_predraft"] = 6200,
["NFL_predraft/check"] = 6200,
["NFL_predraft/ftin"] = 6200,
["NFLplayer"] = 2100,
["NFT"] = 6800,
["NFT_player"] = 30000,
["NGA"] = 3200,
["NGR"] = 2400,
["NHLE"] = 18000,
["NHLS_url"] = 2200,
["NLD"] = 11000,
["NLM_content"] = 2800,
["NOINDEX"] = 453000,
["NOMIS2011"] = 2300,
["NOR"] = 9400,
["NPG_name"] = 2000,
["NRDB_species"] = 6900,
["NRHP-PA"] = 2600,
["NRHPGoogleMapFootnote"] = 2500,
["NRHP_Focus"] = 76000,
["NRHP_color"] = 3700,
["NRHP_date_for_lists"] = 3100,
["NRHP_date_for_lists/dates"] = 3100,
["NRHP_header"] = 3300,
["NRHP_navigation_box"] = 8300,
["NRHP_row"] = 3400,
["NRHP_style"] = 70000,
["NRHP_url"] = 29000,
["NRHP_url/core"] = 31000,
["NRISref"] = 73000,
["NSWcity"] = 2100,
["NSWcity/core"] = 2100,
["NUMBEROFSECTIONS"] = 3600,
["NYCS_br"] = 2700,
["NYCS_time_2"] = 3100,
["NZL"] = 6800,
["NZ_electorate_link"] = 2300,
["Na"] = 2500,
["Nac"] = 2800,
["Namespace_detect"] = 570000,
["Namespace_detect_showall"] = 10000,
["Nastaliq"] = 11000,
["Nat_fs_end"] = 2500,
["National_Film_Awards/style"] = 2000,
["National_Heritage_List_for_England"] = 22000,
["National_Rail_style"] = 5700,
["National_Register_of_Historic_Places"] = 29000,
["National_Register_of_Historic_Places_in_Massachusetts"] = 4400,
["National_Register_of_Historic_Places_in_New_York"] = 5600,
["National_Register_of_Historic_Places_in_North_Carolina"] = 2900,
["National_Register_of_Historic_Places_in_Pennsylvania"] = 3200,
["National_Register_of_Historic_Places_in_Virginia"] = 3100,
["National_basketball_squad"] = 3300,
["National_field_hockey_squad"] = 4000,
["National_football_squad_end"] = 3000,
["National_football_squad_start/styles.css"] = 2400,
["National_rugby_union_team"] = 3600,
["National_squad"] = 41000,
["National_squad_no_numbers"] = 17000,
["Native_name"] = 18000,
["Native_name_checker"] = 81000,
["Naval"] = 3200,
["Naval/core"] = 3200,
["Navbar"] = 37000,
["Navbar-collapsible"] = 3400,
["Navbar-header"] = 16000,
["Navbar-header/styles.css"] = 16000,
["Navbox"] = 3080000,
["Navbox_GR_munic"] = 3500,
["Navbox_Musical_artist"] = 9800,
["Navbox_bottom"] = 15000,
["Navbox_decade_list"] = 11000,
["Navbox_documentation"] = 32000,
["Navbox_ice_hockey"] = 3100,
["Navbox_musical_artist"] = 222000,
["Navbox_musical_artist/color"] = 222000,
["Navbox_rugby_league_squad"] = 5000,
["Navbox_season_by_team"] = 3100,
["Navbox_top"] = 15000,
["Navbox_with_collapsible_groups"] = 131000,
["Navbox_with_collapsible_sections"] = 2300,
["Navbox_with_columns"] = 25000,
["Navboxes"] = 56000,
["Navboxes_colour"] = 5000,
["Navseasoncats"] = 484000,
["Navseasoncats_with_centuries_below_decade"] = 6700,
["Navseasoncats_with_decades_below_year"] = 18000,
["Navsource"] = 2500,
["Navy"] = 19000,
["Navy/core"] = 19000,
["Nay"] = 20000,
["Nbay"] = 5600,
["Nbsp"] = 490000,
["Nbsp_to_space"] = 20000,
["Ndash"] = 21000,
["Nee"] = 9700,
["NeilBrownPlayers"] = 3100,
["New_user_bar"] = 57000,
["Newbot"] = 4200,
["Next_period"] = 21000,
["Nfly"] = 2200,
["Nihongo"] = 103000,
["Nihongo2"] = 12000,
["Nihongo_foot"] = 2600,
["No"] = 8600,
["No."] = 14000,
["No2"] = 10000,
["NoSpam"] = 3900,
["NoSpamEmail"] = 17000,
["No_col_break"] = 2300,
["No_col_break/styles.css"] = 2300,
["No_documentation"] = 2200,
["No_footnotes"] = 51000,
["No_ping"] = 378000,
["No_plot"] = 6200,
["No_redirect"] = 581000,
["No_spam"] = 309000,
["No_wrap"] = 2400,
["Nobold"] = 388000,
["Nobold/styles.css"] = 389000,
["Nobr"] = 5000,
["Nobreak"] = 655000,
["Nochange"] = 2500,
["Noindex"] = 4800,
["Noitalic"] = 4600,
["Noitalic/styles.css"] = 4600,
["Nom"] = 41000,
["Nominated"] = 7300,
["Non-English-language_text_category"] = 2600,
["Non-admin_closure"] = 3000,
["Non-admin_closure_(requested_moves)"] = 4600,
["Non-admin_comment"] = 2100,
["Non-diffusing_subcategory"] = 15000,
["Non-free_2D_art"] = 7300,
["Non-free_3D_art"] = 2500,
["Non-free_album_cover"] = 207000,
["Non-free_audio_sample"] = 8500,
["Non-free_biog-pic"] = 26000,
["Non-free_book_cover"] = 55000,
["Non-free_character"] = 2300,
["Non-free_comic"] = 11000,
["Non-free_fair_use"] = 17000,
["Non-free_fair_use_in"] = 14000,
["Non-free_film_poster"] = 26000,
["Non-free_film_screenshot"] = 5000,
["Non-free_game_cover"] = 7700,
["Non-free_game_screenshot"] = 4700,
["Non-free_historic_image"] = 16000,
["Non-free_image_data"] = 8600,
["Non-free_image_rationale"] = 9700,
["Non-free_logo"] = 162000,
["Non-free_magazine_cover"] = 7700,
["Non-free_media"] = 740000,
["Non-free_media_data"] = 9800,
["Non-free_media_rationale"] = 11000,
["Non-free_movie_poster"] = 23000,
["Non-free_newspaper_image"] = 2000,
["Non-free_poster"] = 80000,
["Non-free_promotional"] = 8800,
["Non-free_school_logo"] = 2400,
["Non-free_seal"] = 4900,
["Non-free_symbol"] = 6000,
["Non-free_television_screenshot"] = 16000,
["Non-free_title-card"] = 5800,
["Non-free_use_rationale"] = 466000,
["Non-free_use_rationale/styles.css"] = 692000,
["Non-free_use_rationale_2"] = 216000,
["Non-free_use_rationale_album_cover"] = 139000,
["Non-free_use_rationale_biog"] = 2000,
["Non-free_use_rationale_book_cover"] = 19000,
["Non-free_use_rationale_logo"] = 94000,
["Non-free_use_rationale_poster"] = 52000,
["Non-free_use_rationale_title-card"] = 2800,
["Non-free_use_rationale_video_cover"] = 5900,
["Non-free_use_rationale_video_game_cover"] = 10000,
["Non-free_video_cover"] = 16000,
["Non-free_video_game_cover"] = 22000,
["Non-free_video_game_cover/platform"] = 21000,
["Non-free_video_game_screenshot"] = 10000,
["Non-free_video_game_screenshot/platform"] = 9700,
["Non-free_with_NC"] = 2700,
["Non-free_with_permission"] = 2100,
["Nonspecific"] = 2200,
["Nonumtoc"] = 2700,
["Nonumtoc/styles.css"] = 2700,
["Noping"] = 368000,
["Noprint"] = 2900,
["Noredirect"] = 8300,
["Normal"] = 6000,
["Normalwraplink"] = 4100,
["NorthAmNative"] = 2000,
["North_America_topic"] = 3600,
["Nospam"] = 23000,
["Not-PD-US-expired-min-year"] = 26000,
["Not_a_ballot"] = 7800,
["Not_a_forum"] = 7700,
["Not_a_typo"] = 11000,
["Not_around"] = 3100,
["Not_done"] = 20000,
["Notability"] = 62000,
["Notavote"] = 2100,
["Notdone"] = 5500,
["Note"] = 25000,
["NoteFoot"] = 4200,
["NoteTag"] = 4300,
["Note_label"] = 9100,
["Notelist"] = 193000,
["Notelist-lr"] = 3500,
["Notelist-ua"] = 7000,
["Notes"] = 5800,
["Noteslist"] = 3500,
["Notice"] = 114000,
["NovelsWikiProject"] = 19000,
["Nowiki_="] = 2300,
["Nowrap"] = 1470000,
["Np"] = 3100,
["Npby"] = 2500,
["Nq"] = 3800,
["Nrut"] = 3600,
["Ns"] = 2700,
["Ns0"] = 108000,
["Ns_has_subpages"] = 2430000,
["Nts"] = 20000,
["Ntsh"] = 3400,
["Number_of_defined_parameters"] = 5000,
["Number_table_sorting"] = 35000,
["Number_table_sorting_hidden"] = 3400,
["Numero"] = 3600,
["Nutshell"] = 4000,
["Nw="] = 2300,
["Née"] = 2100,
["Module:NUMBEROFSECTIONS"] = 3600,
["Module:Namespace_detect"] = 716000,
["Module:Namespace_detect/config"] = 5000000,
["Module:Namespace_detect/data"] = 5000000,
["Module:National_squad"] = 54000,
["Module:Native_name"] = 94000,
["Module:Navbar"] = 5450000,
["Module:Navbar/configuration"] = 5450000,
["Module:Navbar/styles.css"] = 4810000,
["Module:Navbox"] = 4460000,
["Module:Navbox/configuration"] = 4460000,
["Module:Navbox/styles.css"] = 4460000,
["Module:Navbox_ice_hockey"] = 3100,
["Module:Navbox_top_and_bottom"] = 15000,
["Module:Navbox_with_collapsible_groups"] = 139000,
["Module:Navboxes"] = 57000,
["Module:Navseasoncats"] = 484000,
["Module:Nihongo"] = 105000,
["Module:No_ping"] = 450000,
["Module:Noinclude"] = 3700,
["Module:Ns_has_subpages"] = 2430000,
["Module:Number_table_sorting"] = 38000,
}
4a8b1586045a4416c7b3b87b3c63ddc94607eae0
Module:Transclusion count/data/P
828
626
1412
2023-10-01T05:39:06Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["P"] = 6100,
["P-phrases"] = 3300,
["P."] = 3700,
["P1"] = 143000,
["P2"] = 293000,
["PAGENAMEBASE"] = 1570000,
["PAGENAMEU"] = 76000,
["PAK"] = 3000,
["PD-US"] = 11000,
["PD-US-1923"] = 2300,
["PD-US-1923-abroad"] = 5900,
["PD-US-expired"] = 4500,
["PD-US-expired-abroad"] = 7100,
["PD-art"] = 3500,
["PD-ineligible-USonly"] = 5200,
["PD-notice"] = 21000,
["PD-old-100"] = 5000,
["PD-self"] = 36000,
["PD-textlogo"] = 6600,
["PDB_Gallery"] = 2900,
["PDanube"] = 3200,
["PER"] = 3100,
["PHI"] = 2500,
["PHL"] = 3500,
["PLANTS"] = 4000,
["PM20"] = 3300,
["PMID"] = 7000,
["POL"] = 53000,
["POR"] = 4900,
["POTD_default"] = 11000,
["POTD_image"] = 2700,
["POTD_navigation"] = 6800,
["POTDlink"] = 7200,
["POV"] = 7300,
["PR/header"] = 3100,
["PR/heading"] = 7200,
["PRT"] = 5700,
["PR_link"] = 102000,
["PS"] = 2900,
["Pad"] = 55000,
["Page"] = 4100,
["Page_name_sub"] = 46000,
["Page_needed"] = 18000,
["Page_tabs"] = 3500,
["Page_tabs/styles.css"] = 3500,
["Page_views"] = 2300,
["Pagelinks"] = 42000,
["Pagelist"] = 4700,
["Pagetype"] = 12200000,
["Paid"] = 9300,
["Para"] = 2630000,
["Parabr"] = 2700,
["Paragraph_break"] = 1240000,
["Param_value"] = 135000,
["Parameter_names_example"] = 2400,
["ParmPart"] = 13000,
["Partial"] = 2100,
["Partial_minor_planet_designation"] = 5800,
["Partly_done"] = 2600,
["Party_color"] = 73000,
["Party_color_cell"] = 4400,
["Party_name_with_color"] = 7600,
["Party_name_with_colour"] = 3200,
["Party_shading/Democratic"] = 15000,
["Party_shading/Independent"] = 2200,
["Party_shading/Republican"] = 14000,
["Party_stripe"] = 18000,
["Pass"] = 2700,
["Pb"] = 1220000,
["Pbox"] = 3100,
["Pbox/1"] = 3100,
["Peacock"] = 3400,
["Pedigree"] = 3900,
["Peer_review/heading"] = 10000,
["Peer_review_tools"] = 8300,
["Pending"] = 3400,
["Pengoal"] = 9500,
["Penmiss"] = 11000,
["Percentage"] = 13000,
["Performance_key"] = 2500,
["Period_color"] = 23000,
["Period_end"] = 21000,
["Period_id"] = 23000,
["Period_start"] = 23000,
["PeruTasks"] = 16000,
["Phab"] = 5600,
["Phanerozoic_220px"] = 21000,
["PharmNavFootnote"] = 5300,
["Philippine_name"] = 2900,
["Philosophy"] = 3600,
["Photo_montage"] = 4500,
["Photo_requested"] = 104000,
["Photograph_requested"] = 3000,
["Photomontage"] = 4400,
["Physics"] = 9300,
["Picture_of_the_day"] = 7200,
["Pie_chart"] = 5800,
["Pie_chart/slice"] = 5800,
["Ping"] = 229000,
["Pipe"] = 115000,
["Place_name_disambiguation"] = 40000,
["Plain_link"] = 161000,
["Plain_list"] = 13000,
["Plain_text"] = 40000,
["Plainlink"] = 80000,
["Plainlist"] = 347000,
["Plainlist/styles.css"] = 2920000,
["Player"] = 3600,
["Player2"] = 2700,
["Please_check_ISSN"] = 14000,
["Plural"] = 105000,
["Pluralize_from_text"] = 1510000,
["Poem_quote"] = 3000,
["Poemquote"] = 2300,
["Politician_icon"] = 33000,
["Politician_icon2"] = 33000,
["Politics_sidebar_below"] = 19000,
["Politics_sidebar_title"] = 19000,
["Poll_top"] = 2000,
["Polluted_category"] = 2200,
["Polparty"] = 27000,
["Pop_density"] = 9200,
["Population_Germany"] = 14000,
["Portal"] = 9310000,
["Portal-Class"] = 7600,
["Portal-inline"] = 218000,
["Portal_bar"] = 113000,
["Portal_box"] = 2700,
["Portalbar"] = 12000,
["Portuguese_name"] = 8700,
["PosMapFS"] = 4300,
["Possible"] = 3400,
["Possibly_empty_category"] = 69000,
["Post-nominals"] = 51000,
["Post-nominals/AUS"] = 7400,
["Post-nominals/CAN"] = 9100,
["Post-nominals/GBR"] = 27000,
["Post-nominals/NZL"] = 4000,
["Postnominals"] = 9200,
["Pp"] = 14000,
["Pp-book-cover"] = 52000,
["Pp-extended"] = 2200,
["Pp-move"] = 8000,
["Pp-move-indef"] = 3400,
["Pp-pc"] = 3700,
["Pp-pc1"] = 2400,
["Pp-protected"] = 6500,
["Pp-semi-indef"] = 4400,
["Pp-template"] = 2600,
["Pp-vandalism"] = 2500,
["Precision"] = 270000,
["PresFoot"] = 2900,
["PresHead"] = 3300,
["PresRow"] = 3300,
["Press"] = 4700,
["Preview_warning"] = 29000,
["Primary_source_inline"] = 5800,
["Primary_sources"] = 30000,
["Principal_rank"] = 479000,
["Prl"] = 102000,
["Pro-wrestling"] = 5500,
["ProCyclingStats"] = 2500,
["ProQuest"] = 16000,
["Professional_wrestling_profiles"] = 2100,
["Professional_wrestling_results_table"] = 2600,
["Profit"] = 3600,
["Progress_box"] = 17000,
["Project-Class"] = 12000,
["Project_Catholicism"] = 2000,
["Project_other"] = 16000,
["Proper_name"] = 2400,
["Prose"] = 3300,
["Proxy_block"] = 2200,
["Pso"] = 3700,
["Purge"] = 378000,
["Purge_button"] = 17000,
["Module:Page"] = 245000,
["Module:PageLinks"] = 42000,
["Module:Page_tabs"] = 3500,
["Module:Pagelist"] = 4700,
["Module:Pagetype"] = 15900000,
["Module:Pagetype/config"] = 15900000,
["Module:ParameterCount"] = 770000,
["Module:Parameter_names_example"] = 2400,
["Module:Parameter_validation"] = 131000,
["Module:Parameter_validation/default_config"] = 131000,
["Module:Party_name_with_color"] = 8500,
["Module:Percentage"] = 13000,
["Module:Person_height"] = 258000,
["Module:Person_length"] = 7000,
["Module:Person_weight"] = 78000,
["Module:Photo_montage"] = 4500,
["Module:Plain_text"] = 1490000,
["Module:Political_party"] = 114000,
["Module:Political_party/A"] = 20000,
["Module:Political_party/B"] = 15000,
["Module:Political_party/C"] = 39000,
["Module:Political_party/D"] = 48000,
["Module:Political_party/E"] = 5500,
["Module:Political_party/F"] = 11000,
["Module:Political_party/G"] = 16000,
["Module:Political_party/H"] = 4900,
["Module:Political_party/I"] = 48000,
["Module:Political_party/J"] = 6900,
["Module:Political_party/K"] = 3600,
["Module:Political_party/L"] = 37000,
["Module:Political_party/M"] = 11000,
["Module:Political_party/N"] = 29000,
["Module:Political_party/O"] = 5000,
["Module:Political_party/P"] = 25000,
["Module:Political_party/R"] = 46000,
["Module:Political_party/S"] = 28000,
["Module:Political_party/T"] = 10000,
["Module:Political_party/U"] = 17000,
["Module:Political_party/V"] = 7100,
["Module:Political_party/W"] = 11000,
["Module:Pop_density"] = 9200,
["Module:PopulationFromWikidata"] = 6200,
["Module:Portal"] = 9620000,
["Module:Portal-inline"] = 218000,
["Module:Portal/images/a"] = 1620000,
["Module:Portal/images/aliases"] = 170000,
["Module:Portal/images/b"] = 2760000,
["Module:Portal/images/c"] = 1540000,
["Module:Portal/images/d"] = 102000,
["Module:Portal/images/e"] = 403000,
["Module:Portal/images/f"] = 801000,
["Module:Portal/images/g"] = 617000,
["Module:Portal/images/h"] = 422000,
["Module:Portal/images/i"] = 1070000,
["Module:Portal/images/j"] = 264000,
["Module:Portal/images/k"] = 69000,
["Module:Portal/images/l"] = 416000,
["Module:Portal/images/m"] = 619000,
["Module:Portal/images/n"] = 718000,
["Module:Portal/images/o"] = 399000,
["Module:Portal/images/other"] = 124000,
["Module:Portal/images/p"] = 837000,
["Module:Portal/images/q"] = 3000,
["Module:Portal/images/r"] = 366000,
["Module:Portal/images/s"] = 1560000,
["Module:Portal/images/t"] = 614000,
["Module:Portal/images/u"] = 986000,
["Module:Portal/images/v"] = 282000,
["Module:Portal/images/w"] = 166000,
["Module:Portal/images/y"] = 32000,
["Module:Portal/images/z"] = 5300,
["Module:Portal/styles.css"] = 9310000,
["Module:Portal_bar"] = 132000,
["Module:Portal_bar/styles.css"] = 132000,
["Module:Professional_wrestling_profiles"] = 2200,
["Module:Professional_wrestling_results_table"] = 2600,
["Module:Progress_box"] = 17000,
["Module:Progress_box/config"] = 17000,
["Module:Progress_box/styles.css"] = 17000,
["Module:Protect"] = 248000,
["Module:Protected_edit_request"] = 47000,
["Module:Protection_banner"] = 54000,
["Module:Protection_banner/config"] = 54000,
["Module:Purge"] = 397000,
}
e1e50a2f5ca745d5b0897049a35f3a7e635a999a
Module:Transclusion count/data/S
828
759
1693
2023-10-01T05:39:36Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["S"] = 3500,
["S-aca"] = 6400,
["S-ach"] = 16000,
["S-aft"] = 218000,
["S-aft/check"] = 218000,
["S-aft/filter"] = 218000,
["S-bef"] = 223000,
["S-bef/check"] = 223000,
["S-bef/filter"] = 223000,
["S-break"] = 5000,
["S-civ"] = 2600,
["S-dip"] = 5300,
["S-end"] = 246000,
["S-gov"] = 7900,
["S-hon"] = 3800,
["S-hou"] = 9500,
["S-inc"] = 13000,
["S-legal"] = 9400,
["S-mil"] = 12000,
["S-new"] = 16000,
["S-non"] = 10000,
["S-npo"] = 4100,
["S-off"] = 41000,
["S-par"] = 50000,
["S-par/en"] = 3200,
["S-par/gb"] = 3300,
["S-par/uk"] = 12000,
["S-par/us-hs"] = 11000,
["S-par/us-sen"] = 2000,
["S-ppo"] = 13000,
["S-prec"] = 3200,
["S-rail"] = 6400,
["S-rail-start"] = 6200,
["S-rail/lines"] = 6400,
["S-reg"] = 20000,
["S-rel"] = 18000,
["S-roy"] = 2700,
["S-s"] = 3600,
["S-sports"] = 10000,
["S-start"] = 240000,
["S-ttl"] = 230000,
["S-ttl/check"] = 230000,
["S-vac"] = 6500,
["SCO"] = 3700,
["SDcat"] = 5460000,
["SECOND"] = 2300,
["SGP"] = 2600,
["SIA"] = 2600,
["SIPA"] = 2600,
["SLO"] = 4300,
["SMS"] = 7200,
["SMU"] = 2100,
["SPI_archive_notice"] = 71000,
["SPIarchive_notice"] = 71000,
["SPIcat"] = 3800,
["SPIclose"] = 3300,
["SPIpriorcases"] = 65000,
["SR/Olympics_profile"] = 3100,
["SRB"] = 3700,
["SS"] = 20000,
["SSPa"] = 2600,
["STN"] = 13000,
["SUBJECTSPACE_formatted"] = 42000,
["SUI"] = 8500,
["SVG"] = 3200,
["SVG-Logo"] = 17000,
["SVG-Res"] = 15000,
["SVG-logo"] = 2900,
["SVG_logo"] = 2000,
["SVK"] = 5900,
["SVN"] = 5200,
["SWE"] = 12000,
["Sandbox_other"] = 236000,
["Saturday"] = 2700,
["Saved_book"] = 52000,
["Sc"] = 3300,
["Scholia"] = 2700,
["School_block"] = 13000,
["School_disambiguation"] = 3400,
["Schoolblock"] = 6700,
["Schooldis"] = 2700,
["Schoolip"] = 10000,
["Scientist_icon"] = 15000,
["Scientist_icon2"] = 15000,
["Sclass"] = 31000,
["Sclass2"] = 10000,
["Screen_reader-only"] = 61000,
["Screen_reader-only/styles.css"] = 61000,
["Script"] = 5900,
["Script/Arabic"] = 2200,
["Script/Hebrew"] = 4700,
["Script/Nastaliq"] = 14000,
["Script/doc/id-unk"] = 3000,
["Script/doc/id-unk/core"] = 3000,
["Script/doc/id-unk/is-iso-alpha4"] = 2800,
["Script/doc/id-unk/name-to-alpha4"] = 3000,
["Script/styles.css"] = 3100,
["Script/styles_arabic.css"] = 2200,
["Script/styles_hebrew.css"] = 4700,
["Sdash"] = 3100,
["Search_box"] = 52000,
["Search_link"] = 16000,
["Section_link"] = 57000,
["Section_sizes"] = 2500,
["See"] = 10000,
["See_also"] = 184000,
["Seealso"] = 6600,
["Select_skin"] = 4300,
["Selected_article"] = 2700,
["Selected_picture"] = 2500,
["Self"] = 48000,
["Self-published_inline"] = 3900,
["Self-published_source"] = 6600,
["Self-reference"] = 2400,
["Self-reference_tool"] = 5400,
["Self/migration"] = 33000,
["Self2"] = 2100,
["Sent_off"] = 13000,
["Sentoff"] = 4400,
["Separated_entries"] = 181000,
["Sequence"] = 3500,
["Serial_killer_opentask"] = 3600,
["Series_overview"] = 7800,
["Serif"] = 2800,
["Set_category"] = 35000,
["Set_index_article"] = 5800,
["Sets_taxobox_colour"] = 90000,
["Sfn"] = 155000,
["SfnRef"] = 133000,
["Sfnm"] = 3600,
["Sfnp"] = 18000,
["Sfnref"] = 11000,
["Sfrac"] = 4200,
["Sfrac/styles.css"] = 4200,
["SharedIPEDU"] = 3200,
["Shared_IP"] = 11000,
["Shared_IP_advice"] = 16000,
["Shared_IP_corp"] = 5100,
["Shared_IP_edu"] = 131000,
["Shared_IP_gov"] = 3000,
["Sharedip"] = 3300,
["Sharedipedu"] = 3600,
["Sherdog"] = 2600,
["Ship"] = 85000,
["Ship/maintenancecategory"] = 85000,
["Ship_index"] = 7000,
["Shipboxflag"] = 20000,
["Shipboxflag/core"] = 20000,
["Shipwrecks_navbox_footer"] = 10000,
["Shipwrecks_navbox_footer/link"] = 10000,
["Short_description"] = 5570000,
["Short_description/lowercasecheck"] = 5570000,
["Short_pages_monitor"] = 10000,
["Short_pages_monitor/maximum_length"] = 10000,
["Shortcut"] = 20000,
["Should_be_SVG"] = 9000,
["Show_button"] = 2150000,
["Sic"] = 33000,
["Sica"] = 3000,
["Side_box"] = 1130000,
["Sidebar"] = 257000,
["Sidebar_games_events"] = 37000,
["Sidebar_person"] = 2300,
["Sidebar_person/styles.css"] = 2300,
["Sidebar_with_collapsible_lists"] = 93000,
["Sigfig"] = 3800,
["Significant_figures"] = 5100,
["Significant_figures/rnd"] = 4700,
["Signpost-subscription"] = 2100,
["Sildb_prim"] = 2000,
["Silver02"] = 16000,
["Silver2"] = 48000,
["Silver_medal"] = 5600,
["Similar_names"] = 2200,
["Single+double"] = 6900,
["Single+space"] = 14000,
["Single-innings_cricket_match"] = 3200,
["Single_chart"] = 37000,
["Single_chart/chartnote"] = 37000,
["Single_namespace"] = 203000,
["Singlechart"] = 20000,
["Singles"] = 41000,
["Sister-inline"] = 189000,
["Sister_project"] = 1040000,
["Sister_project_links"] = 11000,
["Sisterlinks"] = 2600,
["Skip_to_talk"] = 12000,
["Skip_to_talk/styles.css"] = 12000,
["Sky"] = 2700,
["Sky/styles.css"] = 2700,
["Slink"] = 14000,
["Small"] = 601000,
["Small_Solar_System_bodies"] = 3600,
["Smallcaps"] = 17000,
["Smallcaps/styles.css"] = 17000,
["Smallcaps_all"] = 3400,
["Smalldiv"] = 22000,
["Smaller"] = 73000,
["Smallsup"] = 21000,
["Smiley"] = 44000,
["Snd"] = 167000,
["Snds"] = 6300,
["Soccer_icon"] = 130000,
["Soccer_icon2"] = 130000,
["Soccer_icon4"] = 5100,
["Soccerbase"] = 13000,
["Soccerbase_season"] = 6800,
["Soccerway"] = 76000,
["Sock"] = 47000,
["Sock_list"] = 4300,
["Sockcat"] = 2000,
["Sockmaster"] = 9400,
["Sockpuppet"] = 239000,
["Sockpuppet/altmaster"] = 2100,
["Sockpuppet/categorise"] = 239000,
["SockpuppetCheckuser"] = 5500,
["Sockpuppet_category"] = 46000,
["Sockpuppet_category/confirmed"] = 24000,
["Sockpuppet_category/suspected"] = 22000,
["Sockpuppetcheckuser"] = 3600,
["Sockpuppeteer"] = 25000,
["Soft_redirect"] = 6100,
["Soft_redirect_protection"] = 8200,
["Softredirect"] = 3200,
["Solar_luminosity"] = 4500,
["Solar_mass"] = 5300,
["Solar_radius"] = 4300,
["Soldier_icon"] = 3900,
["Soldier_icon2"] = 3900,
["Song"] = 8300,
["Songs"] = 19000,
["Songs_category"] = 8400,
["Songs_category/core"] = 8400,
["Sort"] = 117000,
["Sortname"] = 53000,
["Source-attribution"] = 28000,
["Source_check"] = 964000,
["Sourcecheck"] = 964000,
["Sources"] = 2500,
["South_America_topic"] = 2500,
["Sp"] = 172000,
["Space"] = 55000,
["Space+double"] = 18000,
["Space+single"] = 13000,
["Spaced_en_dash"] = 199000,
["Spaced_en_dash_space"] = 6400,
["Spaced_ndash"] = 23000,
["Spaces"] = 2710000,
["Spain_metadata_Wikidata"] = 7500,
["Spamlink"] = 13000,
["Species_Latin_name_abbreviation_disambiguation"] = 2200,
["Species_list"] = 15000,
["Speciesbox"] = 292000,
["Speciesbox/getGenus"] = 292000,
["Speciesbox/getSpecies"] = 292000,
["Speciesbox/name"] = 292000,
["Speciesbox/parameterCheck"] = 292000,
["Speciesbox/trim"] = 292000,
["Specieslist"] = 5600,
["Split_article"] = 3600,
["Spnd"] = 4100,
["Spoken_Wikipedia"] = 2200,
["Sport_icon"] = 14000,
["Sport_icon2"] = 15000,
["SportsYearCatUSstate"] = 6500,
["SportsYearCatUSstate/core"] = 6500,
["Sports_links"] = 66000,
["Sports_reference"] = 7300,
["Squad_maintenance"] = 3500,
["Sronly"] = 59000,
["Srt"] = 5300,
["Stack"] = 25000,
["Stack/styles.css"] = 34000,
["Stack_begin"] = 9000,
["Stack_end"] = 9000,
["StaleIP"] = 3200,
["Standings_table_end"] = 54000,
["Standings_table_entry"] = 54000,
["Standings_table_entry/record"] = 54000,
["Standings_table_start"] = 54000,
["Standings_table_start/colheader"] = 54000,
["Standings_table_start/colspan"] = 54000,
["Standings_table_start/styles.css"] = 54000,
["Starbox_astrometry"] = 5100,
["Starbox_begin"] = 5300,
["Starbox_catalog"] = 5200,
["Starbox_character"] = 5100,
["Starbox_detail"] = 5000,
["Starbox_end"] = 5300,
["Starbox_image"] = 2900,
["Starbox_observe"] = 5100,
["Starbox_reference"] = 5200,
["Start-Class"] = 18000,
["Start-date"] = 3700,
["Start_and_end_dates"] = 3800,
["Start_box"] = 8000,
["Start_date"] = 437000,
["Start_date_and_age"] = 140000,
["Start_date_and_years_ago"] = 6500,
["Start_date_text"] = 3800,
["Start_of_course_timeline"] = 6200,
["Start_of_course_week"] = 6300,
["Start_tab"] = 5000,
["Startflatlist"] = 144000,
["Static_IP"] = 6000,
["Station"] = 7700,
["Station_link"] = 16000,
["Stdinchicite"] = 11000,
["Steady"] = 14000,
["Stl"] = 14000,
["Stn"] = 7300,
["Stn_art_lnk"] = 2000,
["Stnlnk"] = 30000,
["Storm_colour"] = 5200,
["Storm_path"] = 2100,
["StoryTeleplay"] = 3500,
["Str_endswith"] = 201000,
["Str_find"] = 115000,
["Str_index"] = 13000,
["Str_left"] = 909000,
["Str_len"] = 19000,
["Str_letter"] = 175000,
["Str_letter/trim"] = 20000,
["Str_number"] = 8000,
["Str_number/trim"] = 170000,
["Str_rep"] = 313000,
["Str_trim"] = 5300,
["Str_≠_len"] = 35000,
["Str_≥_len"] = 73000,
["Strfind_short"] = 226000,
["Strikethrough"] = 16000,
["String_split"] = 2800,
["Strip_tags"] = 38000,
["Strong"] = 862000,
["Structurae"] = 2100,
["Stub-Class"] = 17000,
["Stub_Category"] = 13000,
["Stub_category"] = 18000,
["Stub_documentation"] = 36000,
["Student_editor"] = 27000,
["Student_sandbox"] = 4500,
["Student_table_row"] = 5300,
["Students_table"] = 5300,
["Su"] = 9800,
["Su-census1989"] = 4500,
["Sub"] = 4100,
["Subinfobox_bodystyle"] = 36000,
["Subject_bar"] = 19000,
["Suboff"] = 6200,
["Subon"] = 6300,
["Subpage_other"] = 291000,
["Subscription"] = 4200,
["Subscription_required"] = 34000,
["Subsidebar_bodystyle"] = 6400,
["Subst_only"] = 4600,
["Substituted_comment"] = 19000,
["Succession_box"] = 118000,
["Succession_box/check"] = 118000,
["Succession_links"] = 164000,
["Summer_Olympics_by_year_category_navigation"] = 2400,
["Summer_Olympics_by_year_category_navigation/core"] = 2400,
["Sunday"] = 2700,
["Sup"] = 59000,
["Suppress_categories"] = 5300,
["Surname"] = 66000,
["Swiss_populations"] = 2400,
["Swiss_populations_NC"] = 3000,
["Swiss_populations_YM"] = 2300,
["Swiss_populations_ref"] = 2400,
["Switcher"] = 3000,
["Module:SDcat"] = 5460000,
["Module:SPI_archive_notice"] = 33000,
["Module:Science_redirect"] = 256000,
["Module:Science_redirect/conf"] = 256000,
["Module:Section_link"] = 57000,
["Module:Section_sizes"] = 3600,
["Module:See_also_if_exists"] = 73000,
["Module:Separated_entries"] = 2300000,
["Module:Series_overview"] = 7900,
["Module:Settlement_short_description"] = 712000,
["Module:Shortcut"] = 24000,
["Module:Shortcut/config"] = 24000,
["Module:Shortcut/styles.css"] = 24000,
["Module:Side_box"] = 1160000,
["Module:Side_box/styles.css"] = 1160000,
["Module:Sidebar"] = 339000,
["Module:Sidebar/configuration"] = 339000,
["Module:Sidebar/styles.css"] = 345000,
["Module:Sidebar_games_events"] = 37000,
["Module:Sidebar_games_events/styles.css"] = 37000,
["Module:Singles"] = 41000,
["Module:Sister_project_links"] = 14000,
["Module:Sister_project_links/bar/styles.css"] = 3500,
["Module:Sister_project_links/styles.css"] = 11000,
["Module:Sock_list"] = 4300,
["Module:Sort_title"] = 18000,
["Module:Sortkey"] = 199000,
["Module:Split_article"] = 3600,
["Module:Spoken_Wikipedia"] = 2200,
["Module:Spoken_Wikipedia/configuration"] = 2200,
["Module:Spoken_Wikipedia/styles.css"] = 2200,
["Module:Sports_career"] = 19000,
["Module:Sports_color"] = 68000,
["Module:Sports_color/baseball"] = 34000,
["Module:Sports_color/basketball"] = 22000,
["Module:Sports_color/ice_hockey"] = 3100,
["Module:Sports_rbr_table"] = 12000,
["Module:Sports_rbr_table/styles.css"] = 12000,
["Module:Sports_reference"] = 7300,
["Module:Sports_results"] = 15000,
["Module:Sports_results/styles.css"] = 9500,
["Module:Sports_table"] = 58000,
["Module:Sports_table/WDL"] = 51000,
["Module:Sports_table/WDL_OT"] = 2700,
["Module:Sports_table/WL"] = 4000,
["Module:Sports_table/WL_OT"] = 2000,
["Module:Sports_table/argcheck"] = 58000,
["Module:Sports_table/styles.css"] = 58000,
["Module:Sports_table/sub"] = 58000,
["Module:Sports_table/totalscheck"] = 42000,
["Module:Stock_tickers/NYSE"] = 2100,
["Module:Storm_categories"] = 5200,
["Module:Storm_categories/categories"] = 5200,
["Module:Storm_categories/colors"] = 5200,
["Module:Storm_categories/icons"] = 5200,
["Module:String"] = 11300000,
["Module:String2"] = 2290000,
["Module:Su"] = 12000,
["Module:Subject_bar"] = 19000,
["Module:Suppress_categories"] = 5300,
}
abf587d8a0323a9d0aca3263b2ad8df6ad840fd9
Module:Transclusion count/data/T
828
1624
2959
2023-10-01T05:39:46Z
w>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["T"] = 280000,
["T1"] = 8700,
["T:TDYK"] = 2700,
["TAFI/Picture_box"] = 2800,
["TBA"] = 6000,
["TCH"] = 2400,
["TCMDb_name"] = 2300,
["TCMDb_title"] = 13000,
["TDMCA"] = 22000,
["TFAFULL"] = 12000,
["TFAIMAGE"] = 3000,
["TFAfooter"] = 8700,
["TFArecentlist"] = 4300,
["THA"] = 4100,
["TOC_bottom"] = 77000,
["TOC_left"] = 3200,
["TOC_left/styles.css"] = 3200,
["TOC_limit"] = 22000,
["TOC_limit/styles.css"] = 24000,
["TOC_right"] = 47000,
["TOC_right/styles.css"] = 47000,
["TOC_top"] = 77000,
["TOC_top/styles.css"] = 77000,
["TOClimit"] = 3400,
["TOCright"] = 6400,
["TPE"] = 2100,
["TUN"] = 2100,
["TUR"] = 7200,
["TVDebutsEndingsAntonym"] = 6600,
["TWA/Logo/3"] = 66000,
["TWA/Navigation2"] = 5200,
["TWA_nav_inner_black"] = 33000,
["TWP"] = 4400,
["Tab"] = 5000,
["TableTBA"] = 2200,
["Tag"] = 6000,
["Talk"] = 4400,
["Talk_archive"] = 36000,
["Talk_archive_navigation"] = 19000,
["Talk_header"] = 711000,
["Talk_header/styles.css"] = 711000,
["Talk_other"] = 3020000,
["Talk_page"] = 6900,
["Talk_page_header"] = 3700,
["Talk_page_of_a_redirect"] = 3200,
["Talk_page_of_redirect"] = 22000,
["Talk_page_stalker"] = 12000,
["Talk_page_watcher"] = 2900,
["Talk_quote_block"] = 14000,
["Talk_quote_block/styles.css"] = 14000,
["Talk_quote_inline"] = 114000,
["Talk_quote_inline/styles.css"] = 114000,
["Talkarchive"] = 108000,
["Talkarchivenav"] = 29000,
["Talkback"] = 65000,
["Talkheader"] = 133000,
["Talkpage"] = 6800,
["Talkquote"] = 7800,
["Talkref"] = 2700,
["Talkspace_detect"] = 252000,
["Tallyho"] = 2100,
["Tan"] = 4400,
["Tasks"] = 740000,
["Taxobox"] = 90000,
["Taxobox/Error_colour"] = 461000,
["Taxobox/core"] = 461000,
["Taxobox/species"] = 74000,
["Taxobox_colour"] = 569000,
["Taxobox_name"] = 62000,
["Taxon_info"] = 400000,
["Taxon_italics"] = 292000,
["Taxonbar"] = 457000,
["Taxonbar/candidate"] = 457000,
["Taxonomy"] = 385000,
["Taxonomy/Acalyptratae"] = 5100,
["Taxonomy/Acanthomorpha"] = 16000,
["Taxonomy/Acanthopterygii"] = 15000,
["Taxonomy/Actinobacteria_(phylum)"] = 2300,
["Taxonomy/Actinomycetia"] = 2200,
["Taxonomy/Actinomycetota"] = 2300,
["Taxonomy/Actinopteri"] = 29000,
["Taxonomy/Actinopterygii"] = 29000,
["Taxonomy/Aculeata"] = 3700,
["Taxonomy/Adephaga"] = 11000,
["Taxonomy/Afrophidia"] = 4100,
["Taxonomy/Agaricales"] = 2100,
["Taxonomy/Agaricomycetes"] = 3900,
["Taxonomy/Agaricomycetidae"] = 2600,
["Taxonomy/Agaricomycotina"] = 4100,
["Taxonomy/Alethinophidia"] = 4500,
["Taxonomy/Amastigomycota"] = 12000,
["Taxonomy/Amniota"] = 60000,
["Taxonomy/Amorphea"] = 365000,
["Taxonomy/Amphibia"] = 9200,
["Taxonomy/Amphiesmenoptera"] = 79000,
["Taxonomy/Anartioptera"] = 4900,
["Taxonomy/Angiosperms"] = 93000,
["Taxonomy/Animalia"] = 352000,
["Taxonomy/Anthophila"] = 3400,
["Taxonomy/Anthozoa"] = 2100,
["Taxonomy/Antliophora"] = 19000,
["Taxonomy/Anura"] = 7300,
["Taxonomy/Apocrita"] = 10000,
["Taxonomy/Apoditrysia"] = 72000,
["Taxonomy/Apoidea"] = 4000,
["Taxonomy/Arachnida"] = 20000,
["Taxonomy/Arachnomorpha"] = 20000,
["Taxonomy/Arachnopulmonata"] = 15000,
["Taxonomy/Araneae"] = 15000,
["Taxonomy/Araneoidea"] = 2600,
["Taxonomy/Araneomorphae"] = 13000,
["Taxonomy/Archaeplastida"] = 101000,
["Taxonomy/Archosauria"] = 24000,
["Taxonomy/Archosauria/skip"] = 23000,
["Taxonomy/Arctiinae"] = 6800,
["Taxonomy/Arctiini"] = 4000,
["Taxonomy/Arthropoda"] = 197000,
["Taxonomy/Artiodactyla"] = 2400,
["Taxonomy/Artiofabula"] = 2100,
["Taxonomy/Aschiza"] = 2200,
["Taxonomy/Ascomycota"] = 7800,
["Taxonomy/Asilomorpha"] = 3300,
["Taxonomy/Asparagales"] = 11000,
["Taxonomy/Asteraceae"] = 7800,
["Taxonomy/Asterales"] = 9000,
["Taxonomy/Asterids"] = 28000,
["Taxonomy/Asteroideae"] = 6000,
["Taxonomy/Auchenorrhyncha"] = 2200,
["Taxonomy/Australaves"] = 10000,
["Taxonomy/Avebrevicauda"] = 18000,
["Taxonomy/Avemetatarsalia"] = 23000,
["Taxonomy/Averostra"] = 19000,
["Taxonomy/Aves"] = 18000,
["Taxonomy/Avetheropoda"] = 19000,
["Taxonomy/Avialae"] = 18000,
["Taxonomy/BOP_clade"] = 2000,
["Taxonomy/Bacteria"] = 6300,
["Taxonomy/Basidiomycota"] = 4600,
["Taxonomy/Batrachia"] = 8200,
["Taxonomy/Batrachomorpha"] = 9200,
["Taxonomy/Bilateria"] = 346000,
["Taxonomy/Bivalvia"] = 2500,
["Taxonomy/Bombycoidea"] = 3100,
["Taxonomy/Boreoeutheria"] = 14000,
["Taxonomy/Brachycera"] = 17000,
["Taxonomy/Bromeliaceae"] = 2300,
["Taxonomy/Caenogastropoda"] = 17000,
["Taxonomy/Caenophidia"] = 4100,
["Taxonomy/Caesalpinioideae"] = 2100,
["Taxonomy/Calyptratae"] = 4500,
["Taxonomy/Campanulids"] = 12000,
["Taxonomy/Carabidae"] = 8700,
["Taxonomy/Caraboidea"] = 9400,
["Taxonomy/Caryophyllales"] = 4600,
["Taxonomy/Cephalopoda"] = 3700,
["Taxonomy/Cerambycidae"] = 9100,
["Taxonomy/Chelicerata"] = 20000,
["Taxonomy/Chondrichthyes"] = 2000,
["Taxonomy/Chordata"] = 101000,
["Taxonomy/Chrysomelidae"] = 2900,
["Taxonomy/Chrysomeloidea"] = 12000,
["Taxonomy/Cladotheria"] = 16000,
["Taxonomy/Clupeocephala"] = 9800,
["Taxonomy/Cnidaria"] = 3600,
["Taxonomy/Coelolepida"] = 78000,
["Taxonomy/Coelurosauria"] = 19000,
["Taxonomy/Coleoptera"] = 38000,
["Taxonomy/Colubridae"] = 2700,
["Taxonomy/Colubroidea"] = 2700,
["Taxonomy/Colubroides"] = 4100,
["Taxonomy/Commelinids"] = 11000,
["Taxonomy/Conchifera"] = 4000,
["Taxonomy/Condylognatha"] = 7100,
["Taxonomy/Conoidea"] = 7000,
["Taxonomy/Core_eudicots"] = 62000,
["Taxonomy/Crambidae"] = 8900,
["Taxonomy/Crambinae"] = 2200,
["Taxonomy/Cucujiformia"] = 19000,
["Taxonomy/Curculionidae"] = 2400,
["Taxonomy/Curculionoidea"] = 2900,
["Taxonomy/Cyclorrhapha"] = 9700,
["Taxonomy/Cyperaceae"] = 2200,
["Taxonomy/Cyprinidae"] = 3700,
["Taxonomy/Cypriniformes"] = 4900,
["Taxonomy/Cypriniphysae"] = 4900,
["Taxonomy/Cyprinoidea"] = 3700,
["Taxonomy/Decapoda"] = 2800,
["Taxonomy/Dendrobiinae"] = 2000,
["Taxonomy/Depressariidae"] = 2700,
["Taxonomy/Deuterostomia"] = 103000,
["Taxonomy/Diaphoretickes"] = 101000,
["Taxonomy/Diaphoretickes/displayed"] = 2500,
["Taxonomy/Diapsida"] = 18000,
["Taxonomy/Dicondylia"] = 166000,
["Taxonomy/Dictyoptera"] = 2100,
["Taxonomy/Dikarya"] = 12000,
["Taxonomy/Dinosauria"] = 22000,
["Taxonomy/Dinosauriformes"] = 22000,
["Taxonomy/Dinosauromorpha"] = 22000,
["Taxonomy/Diptera"] = 19000,
["Taxonomy/Ditrysia"] = 76000,
["Taxonomy/Dothideomyceta"] = 5900,
["Taxonomy/Dracohors"] = 22000,
["Taxonomy/Ecdysozoa"] = 199000,
["Taxonomy/Elateriformia"] = 2200,
["Taxonomy/Embryophytes"] = 98000,
["Taxonomy/Embryophytes/Plantae"] = 98000,
["Taxonomy/Endopterygota"] = 148000,
["Taxonomy/Entelegynae"] = 3100,
["Taxonomy/Epidendroideae"] = 5300,
["Taxonomy/Erebidae"] = 10000,
["Taxonomy/Eremoneura"] = 9700,
["Taxonomy/Ericales"] = 3500,
["Taxonomy/Euarchontoglires"] = 5800,
["Taxonomy/Euavialae"] = 18000,
["Taxonomy/Eucarida"] = 2900,
["Taxonomy/Eudicots"] = 66000,
["Taxonomy/Eufalconimorphae"] = 10000,
["Taxonomy/Eugnathostomata"] = 100000,
["Taxonomy/Eukaryota"] = 469000,
["Taxonomy/Eukaryota/displayed"] = 368000,
["Taxonomy/Eulepidoptera"] = 77000,
["Taxonomy/Eumalacostraca"] = 4600,
["Taxonomy/Eumaniraptora"] = 18000,
["Taxonomy/Eumetabola"] = 156000,
["Taxonomy/Eumetazoa"] = 350000,
["Taxonomy/Euornithes"] = 18000,
["Taxonomy/Eupasseres"] = 9500,
["Taxonomy/Eupulmonata"] = 3100,
["Taxonomy/Eureptilia"] = 18000,
["Taxonomy/Eusaurischia"] = 21000,
["Taxonomy/Eutheria"] = 15000,
["Taxonomy/Euthyneura"] = 7900,
["Taxonomy/Euungulata"] = 3500,
["Taxonomy/Fabaceae"] = 5900,
["Taxonomy/Fabales"] = 6200,
["Taxonomy/Fabids"] = 16000,
["Taxonomy/Faboideae"] = 3200,
["Taxonomy/Ferungulata"] = 5500,
["Taxonomy/Filozoa"] = 352000,
["Taxonomy/Formicidae"] = 2300,
["Taxonomy/Formicoidea"] = 2300,
["Taxonomy/Fungi"] = 13000,
["Taxonomy/Gastropoda"] = 30000,
["Taxonomy/Geadephaga"] = 9400,
["Taxonomy/Gekkomorpha"] = 2200,
["Taxonomy/Gekkonoidea"] = 2200,
["Taxonomy/Gekkonomorpha"] = 2600,
["Taxonomy/Gekkota"] = 2600,
["Taxonomy/Gelechiidae"] = 5400,
["Taxonomy/Gelechiinae"] = 2700,
["Taxonomy/Gelechioidea"] = 16000,
["Taxonomy/Gentianales"] = 4400,
["Taxonomy/Geometridae"] = 6100,
["Taxonomy/Geometroidea"] = 6200,
["Taxonomy/Glires"] = 4200,
["Taxonomy/Gliriformes"] = 4200,
["Taxonomy/Glossata"] = 78000,
["Taxonomy/Gnathostomata"] = 101000,
["Taxonomy/Graminid_clade"] = 3600,
["Taxonomy/Helicina_(suborder)"] = 2600,
["Taxonomy/Hemiptera"] = 7100,
["Taxonomy/Heterobranchia"] = 8000,
["Taxonomy/Heteroneura"] = 78000,
["Taxonomy/Heteroptera"] = 4000,
["Taxonomy/Hexapoda"] = 168000,
["Taxonomy/Holodonata"] = 2100,
["Taxonomy/Holomycota"] = 13000,
["Taxonomy/Holozoa"] = 352000,
["Taxonomy/Hyloidea"] = 2500,
["Taxonomy/Hymenoptera"] = 11000,
["Taxonomy/Hymenopterida"] = 11000,
["Taxonomy/Iguania"] = 2500,
["Taxonomy/Iguanomorpha"] = 2500,
["Taxonomy/Insecta"] = 166000,
["Taxonomy/Lamiales"] = 6200,
["Taxonomy/Lamiids"] = 13000,
["Taxonomy/Lamiinae"] = 6100,
["Taxonomy/Larentiinae"] = 3000,
["Taxonomy/Laurasiatheria"] = 8200,
["Taxonomy/Lecanoromycetes"] = 3200,
["Taxonomy/Lecanoromycetidae"] = 2100,
["Taxonomy/Leotiomyceta"] = 7200,
["Taxonomy/Lepidoptera"] = 79000,
["Taxonomy/Lepidosauria"] = 15000,
["Taxonomy/Lepidosauromorpha"] = 15000,
["Taxonomy/Life"] = 478000,
["Taxonomy/Lissamphibia"] = 8500,
["Taxonomy/Littorinimorpha"] = 3400,
["Taxonomy/Lophotrochozoa"] = 41000,
["Taxonomy/Lycaenidae"] = 3000,
["Taxonomy/Macroheterocera"] = 26000,
["Taxonomy/Magnoliids"] = 2400,
["Taxonomy/Malacostraca"] = 4800,
["Taxonomy/Malaxideae"] = 2100,
["Taxonomy/Malpighiales"] = 4500,
["Taxonomy/Malvales"] = 2500,
["Taxonomy/Malvids"] = 12000,
["Taxonomy/Mammalia"] = 17000,
["Taxonomy/Mammalia/skip"] = 17000,
["Taxonomy/Maniraptora"] = 19000,
["Taxonomy/Maniraptoriformes"] = 19000,
["Taxonomy/Maniraptoromorpha"] = 19000,
["Taxonomy/Mesostigmata"] = 2000,
["Taxonomy/Metapterygota"] = 163000,
["Taxonomy/Mollusca"] = 37000,
["Taxonomy/Monocots"] = 24000,
["Taxonomy/Multicrustacea"] = 6100,
["Taxonomy/Muroidea"] = 2500,
["Taxonomy/Muscomorpha"] = 12000,
["Taxonomy/Myoglossata"] = 78000,
["Taxonomy/Myomorpha"] = 2600,
["Taxonomy/Myrtaceae"] = 3000,
["Taxonomy/Myrtales"] = 4400,
["Taxonomy/Myrtoideae"] = 3000,
["Taxonomy/Nematocera"] = 2000,
["Taxonomy/Neoaves"] = 16000,
["Taxonomy/Neobatrachia"] = 5600,
["Taxonomy/Neocoelurosauria"] = 19000,
["Taxonomy/Neodiapsida"] = 18000,
["Taxonomy/Neogastropoda"] = 13000,
["Taxonomy/Neognathae"] = 18000,
["Taxonomy/Neolepidoptera"] = 78000,
["Taxonomy/Neoptera"] = 163000,
["Taxonomy/Neopterygii"] = 29000,
["Taxonomy/Neotheropoda"] = 20000,
["Taxonomy/Nephrozoa"] = 346000,
["Taxonomy/Noctuidae"] = 4100,
["Taxonomy/Noctuoidea"] = 16000,
["Taxonomy/Nymphalidae"] = 3400,
["Taxonomy/Obazoa"] = 365000,
["Taxonomy/Obtectomera"] = 47000,
["Taxonomy/Odonata"] = 2100,
["Taxonomy/Odonatoptera"] = 2200,
["Taxonomy/Oestroidea"] = 4100,
["Taxonomy/Olfactores"] = 101000,
["Taxonomy/Ophidia"] = 4900,
["Taxonomy/Opisthokonta"] = 365000,
["Taxonomy/Opisthothelae"] = 15000,
["Taxonomy/Orchidaceae"] = 7600,
["Taxonomy/Orchidoideae"] = 2100,
["Taxonomy/Orionides"] = 19000,
["Taxonomy/Ornithodira"] = 23000,
["Taxonomy/Ornithothoraces"] = 18000,
["Taxonomy/Ornithurae"] = 18000,
["Taxonomy/Ornithuromorpha"] = 18000,
["Taxonomy/Orthoptera"] = 3800,
["Taxonomy/Orthopterida"] = 4500,
["Taxonomy/Ostariophysi"] = 9400,
["Taxonomy/Osteichthyes"] = 29000,
["Taxonomy/Otocephala"] = 9800,
["Taxonomy/Otophysi"] = 9300,
["Taxonomy/Ovalentaria"] = 4800,
["Taxonomy/Palaeoptera"] = 2700,
["Taxonomy/Pan-Euungulata"] = 3500,
["Taxonomy/Panarthropoda"] = 198000,
["Taxonomy/Pancrustacea"] = 175000,
["Taxonomy/Panorpida"] = 99000,
["Taxonomy/Panorthoptera"] = 3800,
["Taxonomy/Panpulmonata"] = 5300,
["Taxonomy/Pantetrapulmonata"] = 15000,
["Taxonomy/Papilionoidea"] = 10000,
["Taxonomy/ParaHoxozoa"] = 350000,
["Taxonomy/Paraneoptera"] = 8200,
["Taxonomy/Parasitiformes"] = 2200,
["Taxonomy/Paraves"] = 19000,
["Taxonomy/Paraxonia"] = 2400,
["Taxonomy/Passerea"] = 15000,
["Taxonomy/Passeri"] = 7500,
["Taxonomy/Passerida"] = 4500,
["Taxonomy/Passeriformes"] = 9600,
["Taxonomy/Pennaraptora"] = 19000,
["Taxonomy/Perciformes"] = 2500,
["Taxonomy/Percoidei"] = 2100,
["Taxonomy/Percomorpha"] = 13000,
["Taxonomy/Pezizomycotina"] = 7600,
["Taxonomy/Phytophaga"] = 15000,
["Taxonomy/Placentalia"] = 15000,
["Taxonomy/Plantae"] = 99000,
["Taxonomy/Pleocyemata"] = 2700,
["Taxonomy/Poaceae"] = 3600,
["Taxonomy/Poales"] = 8600,
["Taxonomy/Polyneoptera"] = 7300,
["Taxonomy/Polyorthoptera"] = 4500,
["Taxonomy/Polyphaga"] = 27000,
["Taxonomy/Polysporangiophytes"] = 96000,
["Taxonomy/Polysporangiophytes/Plantae"] = 96000,
["Taxonomy/Protostomia"] = 243000,
["Taxonomy/Prototribosphenida"] = 16000,
["Taxonomy/Psittacopasserae"] = 10000,
["Taxonomy/Pterygota"] = 166000,
["Taxonomy/Pygostylia"] = 18000,
["Taxonomy/Pyralidae"] = 2300,
["Taxonomy/Pyraloidea"] = 11000,
["Taxonomy/Pyramidellidae"] = 2200,
["Taxonomy/Pyramidelloidea"] = 2200,
["Taxonomy/Ranoidea"] = 2800,
["Taxonomy/Reptantia"] = 2100,
["Taxonomy/Reptilia"] = 19000,
["Taxonomy/Reptiliomorpha"] = 60000,
["Taxonomy/Rodentia"] = 4000,
["Taxonomy/Romeriida"] = 18000,
["Taxonomy/Rosales"] = 3100,
["Taxonomy/Rosids"] = 28000,
["Taxonomy/Rouphozoa"] = 2100,
["Taxonomy/Rubiaceae"] = 2400,
["Taxonomy/SAR"] = 2400,
["Taxonomy/Saccharomyceta"] = 7700,
["Taxonomy/Salientia"] = 7300,
["Taxonomy/Salticidae"] = 2500,
["Taxonomy/Salticinae"] = 2300,
["Taxonomy/Sapindales"] = 2900,
["Taxonomy/Sauria"] = 18000,
["Taxonomy/Saurischia"] = 21000,
["Taxonomy/Sauropsida"] = 41000,
["Taxonomy/Scarabaeiformia"] = 2200,
["Taxonomy/Scarabaeoidea"] = 2200,
["Taxonomy/Schizophora"] = 9700,
["Taxonomy/Scincidae"] = 2100,
["Taxonomy/Scincogekkonomorpha"] = 2600,
["Taxonomy/Scincoidea"] = 2200,
["Taxonomy/Scincomorpha"] = 2300,
["Taxonomy/Scleroglossa"] = 2600,
["Taxonomy/Scrotifera"] = 7500,
["Taxonomy/Serpentes"] = 4900,
["Taxonomy/Siluriformes"] = 3300,
["Taxonomy/Simplicidentata"] = 4000,
["Taxonomy/Spermatophyta"] = 94000,
["Taxonomy/Spermatophytes/Plantae"] = 94000,
["Taxonomy/Spilomelinae"] = 2900,
["Taxonomy/Spiralia"] = 44000,
["Taxonomy/Squamata"] = 14000,
["Taxonomy/Staphyliniformia"] = 2200,
["Taxonomy/Streptophyta"] = 98000,
["Taxonomy/Stylommatophora"] = 3000,
["Taxonomy/Superasterids"] = 33000,
["Taxonomy/Superrosids"] = 29000,
["Taxonomy/Symbiomycota"] = 12000,
["Taxonomy/TSAR"] = 2400,
["Taxonomy/Tachinidae"] = 3600,
["Taxonomy/Tactopoda"] = 197000,
["Taxonomy/Tectipleura"] = 5500,
["Taxonomy/Teleocephala"] = 9800,
["Taxonomy/Teleostei"] = 28000,
["Taxonomy/Teleostomi"] = 98000,
["Taxonomy/Telluraves"] = 13000,
["Taxonomy/Tenebrionoidea"] = 2700,
["Taxonomy/Tephritidae"] = 2800,
["Taxonomy/Tephritinae"] = 2300,
["Taxonomy/Tephritoidea"] = 3400,
["Taxonomy/Terrabacteria"] = 3500,
["Taxonomy/Tetanurae"] = 19000,
["Taxonomy/Tetrapoda"] = 69000,
["Taxonomy/Tetrapulmonata"] = 15000,
["Taxonomy/Theria"] = 16000,
["Taxonomy/Theriiformes"] = 17000,
["Taxonomy/Theriimorpha"] = 17000,
["Taxonomy/Theropoda"] = 20000,
["Taxonomy/Tortricidae"] = 4600,
["Taxonomy/Tortricinae"] = 3200,
["Taxonomy/Tortricoidea"] = 4600,
["Taxonomy/Toxicofera"] = 8000,
["Taxonomy/Tracheophyta"] = 96000,
["Taxonomy/Tracheophytes/Plantae"] = 96000,
["Taxonomy/Trechnotheria"] = 16000,
["Taxonomy/Tribosphenida"] = 16000,
["Taxonomy/Trochida"] = 2400,
["Taxonomy/Trochoidea"] = 2400,
["Taxonomy/Tyranni"] = 2000,
["Taxonomy/Tyrannoraptora"] = 19000,
["Taxonomy/Unicalcarida"] = 10000,
["Taxonomy/Vertebrata"] = 101000,
["Taxonomy/Vetigastropoda"] = 4100,
["Taxonomy/Virus"] = 2800,
["Taxonomy/Zatheria"] = 16000,
["Taxonomy_key"] = 108000,
["Taxonomy_preload"] = 108000,
["Tb"] = 13000,
["Tcmdb_title"] = 9500,
["Team_roster_navbox"] = 35000,
["Technical"] = 4000,
["Technically_indistinguishable"] = 2200,
["TelevisionWikiProject"] = 4600,
["Television_episode_redirect_handler"] = 5100,
["Television_episode_short_description"] = 11000,
["Template"] = 3800,
["Template-Class"] = 14000,
["TemplateData_header"] = 15000,
["Template_category"] = 32000,
["Template_display"] = 32000,
["Template_for_discussion/dated"] = 3300,
["Template_link"] = 6740000,
["Template_link_code"] = 921000,
["Template_link_expanded"] = 2540000,
["Template_link_expanded_with_subst"] = 4000,
["Template_link_general"] = 20000,
["Template_link_no_redirect"] = 111000,
["Template_link_null"] = 5200,
["Template_link_universal"] = 12000,
["Template_link_with_alternate_text"] = 2200,
["Template_link_with_link_off"] = 10000,
["Template_link_with_linked_braces"] = 8300,
["Template_link_with_parameters"] = 69000,
["Template_link_with_subst"] = 50000,
["Template_other"] = 4240000,
["Template_parameter_usage"] = 16000,
["Template_reference_list"] = 6000,
["Template_shortcut"] = 3600,
["TennisEventInfo"] = 6300,
["TennisEvents"] = 2100,
["Tennis_events"] = 10000,
["Tennis_icon"] = 2700,
["Tennis_icon2"] = 2700,
["Tennis_record"] = 2600,
["Tennis_win_percentage"] = 3200,
["Terminate_sentence"] = 49000,
["Testcases_notice"] = 3900,
["Testcases_other"] = 2200,
["Tfd_links"] = 5800,
["Thank"] = 2200,
["Thank_you"] = 4600,
["The_Africa_Destubathon_banner"] = 2000,
["The_edit-summary_field"] = 9900,
["The_edit-summary_field/OOUI"] = 11000,
["Their"] = 12000,
["They"] = 2300,
["They_have"] = 28000,
["Thin_space"] = 12000,
["Thinsp"] = 10000,
["Third-party"] = 8900,
["Thirteen_Colonies_article_name"] = 2000,
["This_is_a_new_user"] = 6300,
["Thoroughbred_racing"] = 4800,
["Thursday"] = 2700,
["Tick"] = 76000,
["Ticket_confirmation"] = 3200,
["Time/JST_offset"] = 113000,
["Time_ago"] = 166000,
["Time_signature"] = 2100,
["Title_case"] = 5700,
["Title_century"] = 2700,
["Title_country"] = 12000,
["Title_decade"] = 26000,
["Title_disambig_text"] = 233000,
["Title_monthname"] = 14000,
["Title_number"] = 3200,
["Title_without_disambig"] = 3500,
["Title_year"] = 194000,
["Title_year_range"] = 3500,
["Tl"] = 6550000,
["Tl-r"] = 111000,
["Tl2"] = 8300,
["Tlc"] = 809000,
["Tld"] = 113000,
["Tlf"] = 10000,
["Tlg"] = 19000,
["Tlp"] = 69000,
["Tls"] = 43000,
["Tlsc"] = 20000,
["Tlsp"] = 8300,
["Tlu"] = 11000,
["Tlx"] = 2540000,
["Tlxs"] = 2300,
["Tmbox"] = 2440000,
["Tn"] = 8300,
["Tnull"] = 5100,
["To"] = 2600,
["To_do"] = 7700,
["Tocright"] = 7300,
["Todo"] = 2900,
["Tomorrow"] = 5600,
["Tone"] = 8000,
["Tone-cmn"] = 2300,
["Toolbar"] = 320000,
["Tooltip"] = 279000,
["Tooltip/styles.css"] = 279000,
["Top-Class"] = 15000,
["Top-importance"] = 15000,
["Top_25_Report"] = 3100,
["Top_25_report"] = 4400,
["Top_icon"] = 72000,
["Totd"] = 4300,
["Totd_nav"] = 5400,
["Tp"] = 2500,
["Tpr"] = 2100,
["Tps"] = 11000,
["Tpw"] = 2800,
["Tq"] = 111000,
["Tq2"] = 2900,
["Tqq"] = 2500,
["Track_gauge"] = 24000,
["Track_listing"] = 107000,
["Tracking_category"] = 4100,
["Tracklist"] = 30000,
["Trademark"] = 6900,
["Trademarked"] = 4100,
["TrainsWikiProject"] = 34000,
["Trans"] = 2800,
["Transclude"] = 22000,
["Transclude_lead_excerpt"] = 3300,
["Transcluded_section"] = 3900,
["Transclusionless"] = 4100,
["Transl"] = 45000,
["Translated"] = 21000,
["Translated_page"] = 89000,
["Translation"] = 15000,
["Translation/Base"] = 2400,
["Translation/Information"] = 2100,
["Translation/Summary"] = 2100,
["Transliteration"] = 54000,
["Tree_chart"] = 9100,
["Tree_chart/end"] = 9100,
["Tree_chart/start"] = 9100,
["Tree_list"] = 5300,
["Tree_list/end"] = 5300,
["Tree_list/styles.css"] = 5300,
["Trim"] = 1430000,
["Trim_brackets"] = 3100,
["Trim_quotes"] = 24000,
["Tsp"] = 2100,
["Tuesday"] = 2700,
["TuttoCalciatori"] = 2200,
["Twitter"] = 20000,
["Two-digit_year"] = 5500,
["TwoLegResult"] = 5300,
["TwoLegStart"] = 4200,
["TwoLeg_start"] = 5400,
["Two_digit_year"] = 5500,
["Module:TNT"] = 7500,
["Module:TableTools"] = 5770000,
["Module:Table_empty_cell"] = 26000,
["Module:TaxonItalics"] = 570000,
["Module:TaxonList"] = 16000,
["Module:Taxonbar"] = 457000,
["Module:Taxonbar/candidate"] = 457000,
["Module:Taxonbar/conf"] = 457000,
["Module:Taxonbar/exists"] = 457000,
["Module:Taxonbar/whitelist"] = 457000,
["Module:Team_appearances_list"] = 15000,
["Module:Team_appearances_list/data"] = 15000,
["Module:Team_bracket"] = 46000,
["Module:Team_bracket_tracking"] = 2600,
["Module:Team_roster_navbox"] = 35000,
["Module:Television_episode_redirect_handler"] = 5100,
["Module:Television_episode_short_description"] = 16000,
["Module:Television_infoboxes_disambiguation_check"] = 63000,
["Module:TemplatePar"] = 52000,
["Module:Template_invocation"] = 2500,
["Module:Template_link_general"] = 3470000,
["Module:Template_parameter_value"] = 10100000,
["Module:Template_redirect_regex"] = 791000,
["Module:Template_test_case"] = 2500,
["Module:Template_test_case/config"] = 2500,
["Module:Template_test_case/data"] = 2500,
["Module:Template_wrapper"] = 579000,
["Module:Tennis_events_nav"] = 19000,
["Module:Text"] = 1580000,
["Module:Tfd_links"] = 5800,
["Module:Time"] = 2100,
["Module:Time/data"] = 2100,
["Module:Time_ago"] = 166000,
["Module:Title_monthname"] = 14000,
["Module:Toolbar"] = 1220000,
["Module:Top_25_report"] = 4400,
["Module:Track_gauge"] = 24000,
["Module:Track_gauge/data"] = 24000,
["Module:Track_listing"] = 107000,
["Module:Track_listing/configuration"] = 107000,
["Module:Track_listing/styles.css"] = 107000,
["Module:Transcluder"] = 18000,
["Module:Transclusion_count"] = 51000,
["Module:Transclusion_count/data/A"] = 3000,
["Module:Transclusion_count/data/B"] = 2300,
["Module:Transclusion_count/data/C"] = 10000,
["Module:Transclusion_count/data/I"] = 2300,
["Module:Transclusion_count/data/L"] = 2500,
["Module:Transclusion_count/data/M"] = 2600,
["Module:Transclusion_count/data/N"] = 2200,
["Module:Transclusion_count/data/P"] = 2500,
["Module:Transclusion_count/data/S"] = 4000,
["Module:Transclusion_count/data/U"] = 2100,
["Module:Tree_chart"] = 9100,
["Module:Tree_chart/data"] = 9100,
["Module:Trim_quotes"] = 62000,
["Module:TwitterSnowflake"] = 37000,
["Module:Type_in_location"] = 154000,
}
bb73deb1704e3fd116b40a561b3e6b04a4e980c0
Module:Transclusion count/data/U
828
863
1914
2023-10-01T05:39:56Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["U"] = 233000,
["U.S._Roads_WikiProject"] = 11000,
["UAF_player"] = 2500,
["UEFA_player"] = 5100,
["UK"] = 4400,
["UKR"] = 12000,
["UK_legislation"] = 2300,
["URL"] = 379000,
["URL2"] = 10000,
["URS"] = 7100,
["URY"] = 2100,
["US$"] = 11000,
["US50_Invite"] = 3700,
["USA"] = 41000,
["USBill"] = 2300,
["USCGC"] = 2600,
["USCongRep-end"] = 5000,
["USCongRep-row"] = 5500,
["USCongRep-start"] = 5000,
["USCongressOrdinal"] = 5900,
["USCongressOrdinal/code"] = 5900,
["USD"] = 5100,
["USGS_gazetteer"] = 11000,
["USNS"] = 2800,
["USN_flag"] = 10000,
["USPL"] = 2000,
["USRD"] = 5000,
["USS"] = 36000,
["USSR"] = 2200,
["USStat"] = 2300,
["US_Census_population"] = 38000,
["US_Census_population/styles.css"] = 38000,
["US_House_succession_box"] = 8700,
["US_State_Abbrev"] = 16000,
["US_county_navigation_box"] = 99000,
["US_government_sources"] = 2500,
["US_patent"] = 2700,
["US_state_navigation_box"] = 16000,
["UTRS"] = 7900,
["UTRS-unblock-user"] = 4900,
["UTZ"] = 2600,
["UZB"] = 2400,
["Ubl"] = 136000,
["Ublist"] = 4900,
["Ubx"] = 12000,
["Ucat"] = 38000,
["Ucfirstletter"] = 5100,
["Uir"] = 28000,
["Ukrainian_oblast"] = 2000,
["Ul"] = 5500,
["Ulist"] = 6500,
["Umbox"] = 78000,
["Unassessed-Class"] = 11000,
["Unassessed_class"] = 320000,
["Unblock-auto_reviewed"] = 5300,
["Unblock-spamun_reviewed"] = 2900,
["Unblock-un_reviewed"] = 16000,
["Unblock_reviewed"] = 68000,
["Unbulleted_list"] = 1230000,
["Uncategorized"] = 2700,
["Under_construction"] = 2400,
["Underline"] = 3600,
["Undisclosed_paid"] = 2900,
["Unindent"] = 4300,
["UnitedStatesCode"] = 3400,
["United_States_presidential_election_results_table_footer"] = 2900,
["United_States_presidential_election_results_table_header"] = 3300,
["United_States_presidential_election_results_table_row"] = 3300,
["United_States_topic"] = 5900,
["Unknown"] = 2700,
["Unknown-Class"] = 10000,
["Unlink"] = 21000,
["Unreferenced"] = 162000,
["Unreferenced_section"] = 36000,
["Unreferenced_stub"] = 2100,
["Unrelated"] = 5500,
["Unreliable_source?"] = 11000,
["Unreliable_sources"] = 8100,
["Unsourced"] = 5000,
["Update"] = 30000,
["Update_after"] = 5100,
["Update_inline"] = 5800,
["Update_inline_span"] = 2600,
["Update_section"] = 3900,
["Update_span"] = 2600,
["Updated"] = 57000,
["UploadCampaignLink"] = 2100,
["Uploader_information"] = 222000,
["Url"] = 83000,
["Use_American_English"] = 73000,
["Use_Australian_English"] = 125000,
["Use_Bangladeshi_English"] = 3000,
["Use_British_English"] = 258000,
["Use_Canadian_English"] = 37000,
["Use_Ghanaian_English"] = 2400,
["Use_Hiberno-English"] = 32000,
["Use_Hong_Kong_English"] = 4000,
["Use_Indian_English"] = 158000,
["Use_Irish_English"] = 17000,
["Use_Kenyan_English"] = 2400,
["Use_New_Zealand_English"] = 21000,
["Use_Nigerian_English"] = 4800,
["Use_Oxford_spelling"] = 2400,
["Use_Pakistani_English"] = 5600,
["Use_Philippine_English"] = 9500,
["Use_South_African_English"] = 8700,
["Use_dmy_dates"] = 1670000,
["Use_first_nonempty"] = 16000,
["Use_list-defined_references"] = 4000,
["Use_mdy_dates"] = 552000,
["Use_shortened_footnotes"] = 2300,
["User"] = 557000,
["User-generated_source"] = 5700,
["User-multi"] = 335000,
["User0"] = 18000,
["User19"] = 11000,
["User2"] = 3900,
["User21"] = 53000,
["User3"] = 242000,
["User4"] = 3200,
["User5"] = 7000,
["UserSummary"] = 115000,
["User_American"] = 2300,
["User_COI"] = 28000,
["User_Copy_Edit"] = 2200,
["User_Firefox"] = 5900,
["User_HTML"] = 3000,
["User_OS:Dos/style.css"] = 2100,
["User_QAIbox"] = 5700,
["User_QAIbox/auto"] = 3800,
["User_Translator"] = 2400,
["User_UN"] = 2400,
["User_WP"] = 19000,
["User_WP/switch"] = 19000,
["User_Wikipedia"] = 2300,
["User_Wikipedia_reference"] = 2900,
["User_Wikipedian_For"] = 10000,
["User_Wikipedian_for"] = 15000,
["User_Wikipediholic"] = 2200,
["User_category_header"] = 2200,
["User_committed_identity"] = 2500,
["User_contrib"] = 5100,
["User_current_age"] = 2500,
["User_current_age/days"] = 2500,
["User_current_age/months"] = 2500,
["User_current_age/years"] = 2500,
["User_de"] = 5600,
["User_de-1"] = 7700,
["User_de-2"] = 4400,
["User_de-3"] = 2300,
["User_en"] = 39000,
["User_en-1"] = 2500,
["User_en-2"] = 7700,
["User_en-3"] = 15000,
["User_en-4"] = 8900,
["User_en-5"] = 6500,
["User_en-N"] = 4900,
["User_es"] = 3800,
["User_es-1"] = 7200,
["User_es-2"] = 4700,
["User_es-3"] = 2600,
["User_fr"] = 4000,
["User_fr-1"] = 9100,
["User_fr-2"] = 6500,
["User_fr-3"] = 3800,
["User_html"] = 2700,
["User_in_region"] = 28000,
["User_in_the_United_Kingdom"] = 2000,
["User_in_the_United_States"] = 4200,
["User_infobox"] = 3000,
["User_instrument"] = 2800,
["User_invitation"] = 5800,
["User_iso15924"] = 2400,
["User_iso15924/level-text"] = 2800,
["User_iso15924/user_script_catlink"] = 2700,
["User_it-1"] = 2800,
["User_ja-1"] = 2900,
["User_la-1"] = 2800,
["User_link"] = 238000,
["User_lives_in"] = 7000,
["User_male"] = 2300,
["User_oops"] = 2100,
["User_other"] = 590000,
["User_page"] = 44000,
["User_proud"] = 5100,
["User_rights"] = 5000,
["User_ru"] = 3000,
["User_ru-1"] = 2100,
["User_sandbox"] = 293000,
["User_summary"] = 115000,
["User_talk_other"] = 68000,
["User_time_zone"] = 4100,
["User_visited"] = 6400,
["User_wikipedia"] = 2000,
["User_wikipedia/RC_Patrol"] = 3700,
["User_wikipedia/Rollback"] = 2300,
["User_wikipedia/WikiGnome"] = 2700,
["User_wishes_to_visit"] = 6000,
["User_zh"] = 2200,
["Userbox"] = 301000,
["Userbox-2"] = 33000,
["Userbox-level"] = 102000,
["Userbox-r"] = 6100,
["UserboxCOI"] = 28000,
["Userbox_table_bottom"] = 11000,
["Userbox_table_category"] = 2400,
["Userbox_table_top"] = 11000,
["Userbox_table_userbox"] = 11000,
["Userboxbottom"] = 52000,
["Userboxtop"] = 57000,
["Usercheck-short"] = 3600,
["Userlinks"] = 29000,
["Userpage"] = 30000,
["Userpage_blanked"] = 8400,
["Userspace_draft"] = 41000,
["Usgs-gazetteer"] = 11000,
["Ushr"] = 15000,
["Ussc"] = 5200,
["Usurped"] = 5300,
["Utrs"] = 5200,
["Module:URL"] = 577000,
["Module:Unicode_data"] = 1470000,
["Module:Unicode_data/scripts"] = 486000,
["Module:Unstrip"] = 45000,
["Module:Unsubst"] = 11700000,
["Module:Unsubst-infobox"] = 191000,
["Module:Urldecode"] = 4500,
["Module:User"] = 557000,
["Module:UserLinks"] = 874000,
["Module:UserLinks/config"] = 874000,
["Module:UserLinks/extra"] = 23000,
["Module:UserLinks/shared"] = 874000,
["Module:User_contrib"] = 5100,
["Module:Userbox"] = 307000,
["Module:Uses_Wikidata"] = 3200,
["Module:Ustring"] = 739000,
}
a2d476eb5b0ea9ca4a67bec8b21989ea55e3530f
Philippines
0
437
967
964
2023-10-01T08:15:00Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| native_name = Komonwelt ng Pilipinas
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| overlord = [[The United States of America]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
914a084e2117770b7778ba421f98e914e7e0ede9
968
967
2023-10-01T08:18:29Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
d6379a9da42704eba7e13c6fe21ec48db75350ac
976
968
2023-10-01T08:36:43Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President|Head of Government]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
ba5a037dba5134c38b96bfda44bfda2acea53292
977
976
2023-10-01T08:37:10Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[High Commissioner of the Philippines]]
| leader_name2 = <span style="white-space:nowrap;">[[Paul V. McNutt]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
d6379a9da42704eba7e13c6fe21ec48db75350ac
978
977
2023-10-01T08:40:10Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Trade and Industries Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
66496340695e4693ed29861fab361bfe0402b8b3
979
978
2023-10-01T08:40:46Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| ruling_party = Partido Nacionalista
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
240219671b91d71563f0a729c5747cc1bedcdb2e
980
979
2023-10-01T08:41:03Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| demonym = Filipino
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
fdb45894b0c0705f2ea2ac2c1dc6640156fa0a87
981
980
2023-10-01T08:41:55Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% [[Visayans|Visayan]]
| 24.4% [[Tagalog people|Tagalog]]
| 8.4% [[Ilocano people|Ilocano]]
| 6.8% [[Bicolano people|Bicolano]]
| 26.2% [[Ethnic groups in the Philippines|other]]
}}
| demonym = [[Filipinos|Filipino]]<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
[[Pinoy]]<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
3b6d3b5405377d6175972d63ee25c84011c5a74c
982
981
2023-10-01T08:46:33Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = [[Filipinos|Filipino]]<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
[[Pinoy]]<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
6498ee83613a78ea9a83416d378afe59ef0086cd
983
982
2023-10-01T08:46:53Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
267a3d1eb4b94fd47af182d3db4c025d9b35478a
984
983
2023-10-01T08:56:14Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History ==
=== Pre-Colonial Period (pre-1521) ===
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
=== Spanish Colonial Period (1521-1898) ===
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
=== Filipino-American War and American Colonial Period (1898-1936) ===
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
7b6ca6875fd3487adfbf1589b40212221cbe9d44
985
984
2023-10-01T08:59:03Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = Komonwelt ng Pilipinas
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History ==
=== Pre-Colonial Period (pre-1521) ===
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
=== Spanish Colonial Period (1521-1898) ===
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
=== Filipino-American War and American Colonial Period (1898-1936) ===
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
dda288c8db6cf53e7ff55e2215c2a976db03113f
Module:Lang/doc
828
443
969
2023-10-01T08:19:41Z
Führerredux
2
Created page with "{{High-use}} {{Language templates}} {{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}} This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {..."
wikitext
text/x-wiki
{{High-use}}
{{Language templates}}
{{Lua|Module:Lang/data|Module:Lang/ISO 639 synonyms|Module:Lang/tag from name|Module:Unicode data|Module:Yesno|Module:Arguments}}
This module exists primarily to provide correct html markup for non–English language text where that text is used in the English Wikipedia. It has a secondary purpose of providing correct visual rendering for this non-English text. The module was developed to consolidate processing for {{tlx|Lang}}, the {{cl|Lang-x templates|{{tld|lang-??}}}} (most), and {{tlx|Transl}} templates into a single source and to use a clearly defined data set extracted from international standards. It provides error checking and reporting to ensure that the html rendered is correct for browsers and screen readers.
Other templates that get language name support from this module are:
* {{tlx|Native name}}
==Data set==
The data set is specified in [[Module:Lang/data]] and its included data modules:
* language tag-and-name data
** [[Module:Language/data/iana languages]] – from IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]
* language script data
** [[Module:Language/data/iana scripts]] – from IANA language-subtag-registry file
* language region data
** [[Module:Language/data/iana regions]] – from IANA language-subtag-registry file
* language variant data
** [[Module:Language/data/iana variants]] – from IANA language-subtag-registry file
* suppressed-script data
** [[Module:Language/data/iana suppressed scripts]] – from IANA language-subtag-registry file
The data set also includes supplementary data modules:
* override and other non-standard data
** [[Module:Lang/ISO 639 synonyms]] – maps three character ISO 639-2, -2T, -3 codes to two character ISO 639-1 codes – from [https://www.loc.gov/standards/iso639-2/php/English_list.php Codes for the Representation of Names of Languages]
** [[Module:Lang/tag from name]] – reversed language tag-and-name data so that the language name is the key and the language tag is the value
== Testcases ==
* [[Module:Lang/testcases]] ([[Module talk:Lang/testcases|run]])
* category_from_tag()
** [[Module:Lang/testcases/ISO 639-1 category from tag]] ([[Module talk:Lang/testcases/ISO 639-1 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-1 category from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-2 category from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 category from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-3 category from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 category from tag|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override category from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override category from tag|run]])
* name_from_tag()
** [[Module:Lang/testcases/ISO 639-1 name from tag]] ([[Module talk:Lang/testcases/ISO 639-1 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-1 name from tag]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-2 name from tag]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 name from tag|run]])
** [[Module:Lang/testcases/ISO 639-3-3 name from tag]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 name from tag|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override name from tag]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override name from tag|run]])
* tag_from_name()
** [[Module:Lang/testcases/ISO 639-1 tag from name]] ([[Module talk:Lang/testcases/ISO 639-1 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-1 tag from name]] (A–H) ([[Module talk:Lang/testcases/ISO 639-3-1 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-2 tag from name]] (I–N) ([[Module talk:Lang/testcases/ISO 639-3-2 tag from name|run]])
** [[Module:Lang/testcases/ISO 639-3-3 tag from name]] (O–Z) ([[Module talk:Lang/testcases/ISO 639-3-3 tag from name|run]])
** [[Module:Lang/testcases/ISO 639 deprecated and override tag from name]] ([[Module talk:Lang/testcases/ISO 639 deprecated and override tag from name|run]])
==Tracking categories==
* {{Category link with count|Lang and lang-xx template errors}}
* {{Category link with count|Transliteration template errors}}
* {{Category link with count|Lang and lang-xx code promoted to ISO 639-1}}
* {{Category link with count|Lang and lang-xx using deprecated ISO 639 codes}}
==See also==
MoS on foreign words:
* {{Section link|Wikipedia:Manual of Style/Text formatting#Foreign terms}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
86fdcd32c33e0452c7598425e985cf3163a09016
Template:Language templates
10
444
970
2023-10-01T08:20:31Z
Führerredux
2
Created page with "{{Sidebar | name = Language templates | width = 238px | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titlestyle = background:#ccccff; | title = Language templates | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | navbarstyle = background:#fdfdfd;padding:0 5px | heading1 = Language names ([[ISO 639]]) | content1 = * {{tl|ISO 639 name}} | heading2 = Interwiki links | content..."
wikitext
text/x-wiki
{{Sidebar
| name = Language templates
| width = 238px
| bodystyle = border-spacing:0;background:#f7f7f7;padding:2px;
| titlestyle = background:#ccccff;
| title = Language templates
| contentclass = plainlist
| contentstyle = padding:0.25em;background:#fdfdfd;
| navbarstyle = background:#fdfdfd;padding:0 5px
| heading1 = Language names ([[ISO 639]])
| content1 =
* {{tl|ISO 639 name}}
| heading2 = Interwiki links
| content2 =
* {{tl|Wikt-lang}}
* [[Module:Language]]
* {{tl|Interlanguage link}}
| heading5 = Foreign-language text
| content5 =
* {{tl|Lang}}
* [[Module:Lang]]
* {{tl|Transliteration}}
* {{tl|Title language}}
* {{tl|PIE}}
| heading6 = Other
| content6 =
* {{tl|IPA}}
* [[Module:Language/data]]
* [[:Category:Wikipedia multilingual support templates]]
}}<noinclude>
{{Documentation|content=
[[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]].
}}
[[Category:Documentation see also templates]]
</noinclude>
f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7
Module:Language
828
445
971
2023-10-01T08:21:58Z
Führerredux
2
Created page with "require('strict') local m_data = mw.loadData("Module:Language/data") local langData = m_data.languages or m_data local p = {} local function ifNotEmpty(value) if value == "" then return nil else return value end end local function makeLinkedName(languageCode) local data = langData[languageCode] local article = data["article"] local name = data["Wikipedia_name"] or data["name"] return "[[" .. article .. "|" .. name .. "]]: " end local function makeEntr..."
Scribunto
text/plain
require('strict')
local m_data = mw.loadData("Module:Language/data")
local langData = m_data.languages or m_data
local p = {}
local function ifNotEmpty(value)
if value == "" then
return nil
else
return value
end
end
local function makeLinkedName(languageCode)
local data = langData[languageCode]
local article = data["article"]
local name = data["Wikipedia_name"] or data["name"]
return "[[" .. article .. "|" .. name .. "]]: "
end
local function makeEntryName(word, languageCode)
local data = langData[languageCode]
local ugsub = mw.ustring.gsub
word = tostring(word)
if word == nil then
error("The function makeEntryName requires a string argument")
elseif word == "" then
return ""
else
-- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping.
word = word:gsub("\'\'\'", "")
word = word:gsub("\'\'", "")
if data == nil then
return word
else
local replacements = data and data["replacements"]
if replacements == nil then
return word
else
-- Decompose so that the diacritics of characters such
-- as á can be removed in one go.
-- No need to compose at the end, because the MediaWiki software
-- will handle that.
if replacements.decompose then
word = mw.ustring.toNFD(word)
for i, from in ipairs(replacements.from) do
word = ugsub(
word,
from,
replacements.to and replacements.to[i] or "")
end
else
for regex, replacement in pairs(replacements) do
word = ugsub(word, regex, replacement)
end
end
return word
end
end
end
end
p.makeEntryName = makeEntryName
local function fixScriptCode(firstLetter, threeLetters)
return string.upper(firstLetter) .. string.lower(threeLetters)
end
local function getCodes(codes, text)
local languageCode, scriptCode, invalidCode
local errorText
if codes == nil or codes == "" then
errorText = 'no language or script code provided'
elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then
-- A three- or two-letter lowercase sequence at beginning of first parameter
languageCode =
codes:find("^%a%a%a?") and (
codes:match("^(%l%l%l?)")
or codes:match("^(%a%a%a?)")
:gsub("(%a%a%a?)", string.lower, 1)
)
-- One uppercase and three lowercase letters at the end of the first parameter
scriptCode =
codes:find("%a%a%a%a$") and (
codes:match("(%u%l%l%l)$")
or gsub(
codes:match("(%a%a%a%a)$"),
"(%a)(%a%a%a)",
fixScriptCode,
1
)
)
elseif codes:find("^%a%a%a?%-%a%a%a?$")
or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then
languageCode = codes
-- Private-use subtag: x followed by one or more sequences of 1-8 lowercase
-- letters separated by hyphens. This only allows for one sequence, as it is
-- needed for proto-languages such as ine-x-proto (Proto-Indo-European).
elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then
languageCode, scriptCode =
codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$")
if not languageCode then
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then
errorText = '<code>'..scriptCode..'</code> is not a valid script code.'
else
scriptCode = scriptCode:gsub(
"(%a)(%a%a%a)",
fixScriptCode,
1
)
end
elseif codes:find("^%a%a%a?") then
languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)")
languageCode = string.lower(languageCode)
errorText = '<code>'..invalidCode..'</code> is not a valid script code.'
elseif codes:find("%-?%a%a%a%a$") then
invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$")
scriptCode = gsub(
scriptCode,
"(%a)(%a%a%a)",
fixScriptCode
)
errorText = '<code>'..invalidCode..'</code> is not a valid language code.'
else
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
end
if not scriptCode or scriptCode == "" then
scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown"
end
if errorText then
errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>'
else
errorText = ""
end
languageCode = m_data.redirects[languageCode] or languageCode
return languageCode, scriptCode, errorText
end
local function tag(text, languageCode, script, italics)
local data = langData[languageCode]
-- Use Wikipedia code if it has been given: for instance,
-- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia
-- code "ine-x-proto".
languageCode = data and data.Wikipedia_code or languageCode
local italicize = script == "Latn" and italics
if not text then text = "[text?]" end
local textDirectionMarkers = { "", "", "" }
if data and data["direction"] == "rtl" then
textDirectionMarkers = { ' dir="rtl"', '‏', '‎' }
end
local out = { textDirectionMarkers[2] }
if italicize then
table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>")
else
table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>")
end
table.insert(out, textDirectionMarkers[3])
return table.concat(out)
end
function p.lang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local text = args[2] or error("Provide text in the second parameter")
local languageCode, scriptCode, errorText = getCodes(codes, text)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
return tag(text, languageCode, scriptCode, italics) .. errorText
end
local function linkToWiktionary(entry, linkText, languageCode)
local data = langData[languageCode]
local name
if languageCode then
if data and data.name then
name = data.name
else
-- On other languages' wikis, use mw.getContentLanguage():getCode(),
-- or replace 'en' with that wiki's language code.
name = mw.language.fetchLanguageName(languageCode, 'en')
if name == "" then
error("Name for the language code " .. ("%q"):format(languageCode or nil)
.. " could not be retrieved with mw.language.fetchLanguageName, "
.. "so it should be added to [[Module:Language/data]]")
end
end
if entry:sub(1, 1) == "*" then
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry:sub(2)
else
error("Language name is empty")
end
elseif data and data.type == "reconstructed" then
mw.log("Reconstructed language without asterisk:", languageCode, name, entry)
local frame = mw.getCurrentFrame()
-- Track reconstructed entries with no asterisk by transcluding
-- a nonexistent template. This technique is used in Wiktionary:
-- see [[wikt:Module:debug]].
-- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]]
pcall(frame.expandTemplate, frame,
{ title = 'tracking/wikt-lang/reconstructed with no asterisk' })
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry
else
error("Language name is empty")
end
elseif data and data.type == "appendix" then
if name ~= "" then
entry = "Appendix:" .. name .. "/" .. entry
else
error("Language name is empty")
end
end
if entry and linkText then
return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]"
else
error("linkToWiktionary needs a Wiktionary entry or link text, or both")
end
else
return "[[wikt:" .. entry .. "|" .. linkText .. "]]"
end
end
function p.wiktlang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not args[2] then
error("Parameter 2 is required")
end
local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out .. errorText
else
return errorText or error("The function wiktlang generated nothing")
end
end
function p.wikt(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not word1 then
error("Provide a word in parameter 2.")
end
local languageCode, scriptCode, errorText = getCodes(codes, word1)
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = linkToWiktionary(entry, linkText, languageCode)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out and out .. errorText
else
return errorText or error("The function wikt generated nothing")
end
end
return p
51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6
Module:Language/doc
828
446
972
2023-10-01T08:22:26Z
Führerredux
2
Created page with "{{Module rating|beta}} {{Language templates}} {{Lua|Module:Language/data|Module:Unicode data}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that lin..."
wikitext
text/x-wiki
{{Module rating|beta}}
{{Language templates}}
{{Lua|Module:Language/data|Module:Unicode data}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added.
The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module.
===Examples===
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre>
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}
====Invalid codes====
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}</pre>
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}
====Errors====
<pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre>
* {{#invoke:Language|wikt|en-Latin|language}}
== Tracking categories ==
* {{Category link with count|Language module errors}}
* {{Category link with count|Language module reconstructed with no asterisk}}
* {{Category link with count|Language module using redirect code}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4
Module:Language/data
828
447
973
2023-10-01T08:22:57Z
Führerredux
2
Created page with "local U = mw.ustring.char -- Diacritics, from the [[Combining Diacritical Marks]] block. local grave = U(0x300) local acute = U(0x301) local circumflex = U(0x302) local tilde = U(0x303) local macron = U(0x304) local breve = U(0x306) local dot = U(0x307) local diaeresis = U(0x308) local double_acute = U(0x30B) local caron = U(0x30C) local double_grave = U(0x30F) local invbreve = U(0x311) local dot_below = U(0x..."
Scribunto
text/plain
local U = mw.ustring.char
-- Diacritics, from the [[Combining Diacritical Marks]] block.
local grave = U(0x300)
local acute = U(0x301)
local circumflex = U(0x302)
local tilde = U(0x303)
local macron = U(0x304)
local breve = U(0x306)
local dot = U(0x307)
local diaeresis = U(0x308)
local double_acute = U(0x30B)
local caron = U(0x30C)
local double_grave = U(0x30F)
local invbreve = U(0x311)
local dot_below = U(0x323)
local undertie = U(0x35C)
--[[
This is a table of Wiktionary language codes with data belonging to them.
Name is the "canonical name" used on Wiktionary.
Article is the Wikipedia article.
Script is the ISO 15924 code.
]]
local data = {
["languages"] = {
["aaq"] = {
["name"] = "Penobscot",
},
["ab"] = {
["name"] = "Abkhaz",
},
["abe"] = {
["name"] = "Abenaki",
},
["ang"] = {
["name"] = "Old English",
["article"] = {"Old English"},
-- Remove macrons, acutes, and overdots
["replacements"] = {
decompose = true,
from = { "[" .. macron .. acute .. dot .. "]" },
},
},
["ar"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ara"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arb"] = {
["name"] = "Modern Standard Arabic",
["article"] = "Modern Standard Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["apc"] = {
["name"] = "North Levantine Arabic",
["article"] = "North Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ajp"] = {
["name"] = "South Levantine Arabic",
["article"] = "South Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arz"] = {
["name"] = "Egyptian Arabic",
["article"] = "Egyptian Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["av"] = {
["name"] = "Avar"
},
["be"] = {
["article"] = "Belarusian language",
["replacements"] = { [acute] = "", },
},
["bn"] = {
["name"] = "Bengali",
["article"] = "Bengali language",
},
["bua"] = {
["name"] = "Buryat",
},
["cel-pro"] = { -- Incorrect tag
["name"] = "Proto-Celtic",
["Wikipedia_code"] = "cel-x-proto",
},
["cel-x-proto"] = {
["name"] = "Proto-Celtic",
},
["cel-bry-pro"] = { -- Incorrect tag
["name"] = "Proto-Brythonic",
["article"] = "Common Brittonic",
["type"] = "reconstructed",
},
["cu"] = {
["name"] = "Old Church Slavonic",
["article"] = "Old Church Slavonic",
},
["de"] = {
["name"] = "German",
["article"] = "German language",
},
["en"] = {
["name"] = "English",
["article"] = "English language",
},
["es"] = {
["name"] = "Spanish",
["article"] = "Spanish language",
},
["egy"] = {
["name"] = "Egyptian",
},
["evn"] = {
["name"] = "Evenki",
["article"] = "Evenki language",
},
["fr"] = {
["name"] = "French",
["article"] = "French language",
},
["frm"] = {
["name"] = "Middle French",
["article"] = "Middle French",
},
["frp"] = {
["name"] = "Franco-Provençal",
},
["ff"] = {
["name"] = "Fula",
},
["gem-pro"] = { -- Incorrect tag
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["gem-x-proto"] = {
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gml"] = {
["name"] = "Middle Low German",
},
["gmw-ecg"] = {
["name"] = "East Central German",
},
["gmw-x-proto"] = {
["name"] = "Proto-West Germanic",
["article"] = "Proto-West Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gmq-x-gut"] = {
["name"] = "Gutnish",
["article"] = "Gutnish",
},
["goh"] = {
["replacements"] = {
decompose = true,
from = {
"[" .. macron .. circumflex .. diaeresis .. "]",
},
},
},
["got"] = {
["name"] = "Gothic",
["article"] = "Gothic language",
["replacements"] = {
-- Latin to Gothic since people will not want to have to copy
-- and paste Gothic letters in
["[AÁaáĀā]"] = "𐌰",
["[Bb]"] = "𐌱",
["[Gg]"] = "𐌲",
["[Dd]"] = "𐌳",
["[EeĒē]"] = "𐌴",
["[Qq]"] = "𐌵",
["[Zz]"] = "𐌶",
["[Hh]"] = "𐌷",
["[Þþ]"] = "𐌸",
["[IiÍí]"] = "𐌹",
["[Kk]"] = "𐌺",
["[Ll]"] = "𐌻",
["[Mm]"] = "𐌼",
["[Nn]"] = "𐌽",
["[Jj]"] = "𐌾",
["[UuÚúŪū]"] = "𐌿",
["[Pp]"] = "𐍀",
["[Rr]"] = "𐍂",
["[Ss]"] = "𐍃",
["[Tt]"] = "𐍄",
["[WwYy]"] = "𐍅",
["[Ff]"] = "𐍆",
["[Xx]"] = "𐍇",
["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted
["[OoŌō]"] = "𐍉",
},
},
["gsw"] = {
["name"] = "Alemannic German",
},
["grc"] = {
["name"] = "Ancient Greek",
["article"] = "Ancient Greek",
["replacements"] = {
decompose = true,
from = {
-- Replace variant letterforms with standard ones.
"ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ",
-- Remove macrons and breves.
"[" .. macron .. breve .. undertie .. "]"
},
to = {
"β", "ε", "θ", "κ", "ρ", "σ", "φ",
}
},
},
["grk-pro"] = { -- Incorrect tag
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["grk-x-proto"] = {
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
},
["grt"] = {
["name"] = "Garo",
},
["ha"] = {
["name"] = "Hausa",
-- remove tilde, grave, acute, macron, circumflex
["replacements"] = {
decompose = true,
from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" },
},
},
["hi"] = {
["name"] = "Hindi",
["article"] = "Hindi",
},
["ine-bsl-pro"] = {
["name"] = "Proto-Balto-Slavic",
["article"] = "Proto-Balto-Slavic language",
["type"] = "reconstructed",
},
["ine-pro"] = { -- Incorrect tag
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "ine-x-proto",
},
["ine-x-proto"] = {
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
},
["ja"] = {
["name"] = "Japanese",
["article"] = "Japanese language",
},
["jbo"] = { -- Lojban
["type"] = "appendix",
},
["ksk"] = {
["name"] = "Kansa",
["article"] = "Kansa language",
},
["la"] = {
["name"] = "Latin",
["article"] = "Latin",
["replacements"] = {
decompose = true,
from = { "[" .. macron .. breve .. diaeresis .. "]" },
},
},
["lt"] = {
["name"] = "Lithuanian",
-- remove acute, tilde, grave
["replacements"] = {
decompose = true,
from = { "[" .. acute .. tilde .. grave .. "]" },
},
},
["moe"] = {
["name"] = "Cree",
},
["mul"] = {
["name"] = "Translingual",
["article"] = "",
},
["nci"] = {
["name"] = "Classical Nahuatl",
["article"] = "Classical Nahuatl",
-- Remove macrons, acutes, circumflexes and graves
["replacements"] = {
decompose = true,
-- Remove macrons, acutes, circumflexes, graves, and saltillo;
-- see [[Saltillo (linguistics)]].
from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" },
},
},
["nds-de"] = {
["name"] = "German Low German",
},
["odt"] = {
["name"] = "Old Dutch",
},
["oge"] = {
["name"] = "Old Georgian",
},
["oj"] = {
["name"] = "Ojibwe",
},
["orv"] = {
["name"] = "Old East Slavic",
["article"] = "Old East Slavic",
["replacements"] = {
[U(0x484)] = "",
},
},
["osx"] = {
["name"] = "Old Saxon",
},
["pt"] = {
["name"] = "Portuguese",
["article"] = "Portuguese language",
-- ["scripts"] = { "Latn" },
},
["pa"] = {
["name"] = "Punjabi",
["article"] = "Punjabi language",
},
["pis"] = {
["name"] = "Pijin",
["article"] = "Pijin language",
},
["poz-x-poly-proto"] = {
["name"] = "Proto-Nuclear Polynesian",
["article"] = "Proto-Polynesian language",
["type"] = "reconstructed",
},
["rap"] = {
["name"] = "Rapa Nui",
["article"] = "Rapa Nui language",
},
["ru"] = {
["name"] = "Russian",
["article"] = "Russian language",
["replacements"] = { [acute] = "", },
},
["rw"] = {
["name"] = "Rwanda-Rundi",
},
["se"] = {
["replacements"] = {
["([đflmnŋrsšŧv])'%1"] = "%1%1",
},
},
["sem-pro"] = {
["name"] = "Proto-Semitic",
["article"] = "Proto-Semitic",
["type"] = "reconstructed",
},
["sh"] = {
["article"] = "Serbo-Croatian language",
["replacements"] = {
decompose = true,
from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave
.. grave .. invbreve .. acute .. macron .. tilde .. "]" },
to = { "%1" },
},
},
["sl"] = {
["name"] = "Slovene",
["replacements"] = {
decompose = true,
-- remove tonal orthography
from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"},
to = {"l"},
},
},
["sla-pro"] = {
["name"] = "Proto-Slavic", -- also Common Slavic
["type"] = "reconstructed",
["replacements"] = {
["[ÀÁÃĀȀȂ]"] = "A",
["[àáãāȁȃ]"] = "a",
["[ÈÉẼĒȄȆ]"] = "E",
["[èéẽēȅȇ]"] = "e",
["[ÌÍĨĪȈȊ]"] = "I",
["[ìíĩīȉȋ]"] = "i",
["[ÒÓÕŌȌȎŐ]"] = "O",
["[òóõōȍȏő]"] = "o",
["[ÙÚŨŪȔȖŰ]"] = "U",
["[ùúũūȕȗű]"] = "u",
["[ỲÝỸȲ]"] = "Y",
["[ỳýỹȳ]"] = "y",
["Ǭ"] = "Ǫ",
["ǭ"] = "ǫ",
["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "",
["ĭ"] = "ь",
["ŭ"] = "ъ",
},
},
["tts"] = {
["name"] = "Isan", -- also "Northeastern Thai"
["article"] = "Isan language",
},
["ug"] = {
["name"] = "Uyghur", --also less commonly "Uighur"
["article"] = "Uyghur language",
},
["uk"] = {
["article"] = "Ukrainian language",
["replacements"] = { [acute] = "", }
},
["ur"] = {
["name"] = "Urdu",
["article"] = "Urdu",
},
["xcl"] = {
["name"] = "Old Armenian",
["article"] = "Classical Armenian",
["replacements"] = {
["[՞՜՛՟]"] = "",
["և"] = "եւ",
},
},
["xgf"] = {
["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño"
["article"] = "Tongva language",
["replacements"] = {
["['`ʔ]"] = "ʼ",
},
},
["xlu"] = {
["name"] = "Luwian", -- not ISO name "Cuneiform Luwian"
["article"] = "Cuneiform Luwian"
},
["xpq"] = {
["name"] = "Mohegan-Pequot",
},
["xxt"] = {
["name"] = "Tambora",
["article"] = "Tambora language",
},
["xvn"] = {
["name"] = "Vandalic",
["article"] = "Vandalic language",
},
["yua"] = {
["name"] = "Yucatec Maya",
["article"] = "Yucatec Maya language",
},
["zh"] = {
["name"] = "Chinese",
["article"] = "Chinese language",
-- ["scripts"] = { "Hani" },
},
},
-- Here, keys (for example, "gem") are Wikipedia language codes used in
-- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary
-- code.
-- Subtags are not currently supported.
["redirects"] = {
["aae"] = "sq",
["aiq"] = "fa",
["aln"] = "sq",
["als"] = "sq",
["azb"] = "az",
["azj"] = "az",
["bgn"] = "bal",
["bs"] = "sh",
["bxr"] = "bua",
["ciw"] = "oj",
["cnr"] = "sh",
["fil"] = "tl",
["fuf"] = "ff",
["gem"] = "gem-pro", -- Not correct, but is commonly used.
["hak"] = "zh",
["hbo"] = "he",
["hr"] = "sh",
["ine"] = "ine-pro", -- Not correct, but might be commonly used.
["kjv"] = "sh",
["nan"] = "zh",
["prs"] = "fa",
["rn"] = "rw",
["sli"] = "gmw-ecg",
["sr"] = "sh",
["src"] = "sc",
["sro"] = "sc",
["tw"] = "ak",
["wae"] = "gsw",
["wep"] = "nds-de",
["yue"] = "zh",
["xno"] = "fro",
},
}
return data
3e1cbaa2d45dde581a9e11f0ad142ed7dd116100
Module:Language/data/doc
828
448
974
2023-10-01T08:23:29Z
Führerredux
2
Created page with "{{language templates}} The <code>redirects</code> table in [[Module:Language/data]] connects Wikipedia language codes to the corresponding code used on the English Wiktionary. [[wikt:Wiktionary:Language treatment]] records this relationship for ISO codes. For instance, all of <code>bs</code> (Bosnian), <code>hr</code> (Croatian), <code>sr</code> (Serbian), <code>cnr</code> (Montenegrin), <code>kjv</code> (Kajkavian) are placed under the header for <code>sh</code> (Serbo..."
wikitext
text/x-wiki
{{language templates}}
The <code>redirects</code> table in [[Module:Language/data]] connects Wikipedia language codes to the corresponding code used on the English Wiktionary. [[wikt:Wiktionary:Language treatment]] records this relationship for ISO codes. For instance, all of <code>bs</code> (Bosnian), <code>hr</code> (Croatian), <code>sr</code> (Serbian), <code>cnr</code> (Montenegrin), <code>kjv</code> (Kajkavian) are placed under the header for <code>sh</code> (Serbo-Croatian) in Wiktionary entries. See for instance [[wikt:kaj#Serbo-Croatian]], the word that Kajkavian is named after. The subsumed codes should still be used in language-tagging on Wikipedia.
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
fc130aa4315edd4bf458ccee9c56720b39a45bf2
Template:More citations needed/doc
10
1043
2284
2023-10-01T08:25:16Z
wikipedia>BilCat
0
Reverted edit by [[Special:Contribs/Diktatorship|Diktatorship]] ([[User talk:Diktatorship|talk]]) to last version by DB1729
wikitext
text/x-wiki
{{Documentation subpage}}
{{redirect-distinguish|Template:Additional citations|Template:Additional citation needed}}
{{redirect-distinguish|Template:Not verified|Template:Failed verification}}
{{redirect|Template:Verify|the template used to request clarification of the preceding sentence|Template:Clarify}}
{{redirect-distinguish|Template:Mcn|Template:Medical citation needed}}
{{High-use}}
{{Twinkle standard installation}}
{{AWB standard installation}}
{{Template shortcut|rip|mcn|verify}}
{{Template redirect|Additional citations|Not verified}}
==Usage==
===When to use===
This [[Wikipedia:Templates|template]] indicates that the article needs additional inline citations. This template should be used only for articles where there are some, but insufficient, inline citations to support the material currently in the article. Don't use this tag for articles that contain no unreferenced material, even if all the material is supported by a single citation.
Some editors understand this template to be redundant when it is used on articles clearly marked as [[Wikipedia:Stub|stubs]], since by definition stubs are unlikely to be well referenced.
For articles that have no inline citations at all, but contain some sources, use [[:Template:No footnotes]]. Only use [[:Template:Unreferenced]] for articles that have no references at all.
* For articles about living persons, the more specific template {{tl|BLP sources}} should be used instead.
* For articles containing biomedical information, the more specific template {{tl|More medical citations needed}} should be used instead.
* Please consider marking individual unreferenced statements with the {{tl|Citation needed}} inline template, instead of placing this template.
* If most of an article is supported by inline citations and a few of those use unreliable sources, use {{tlx|Unreliable source?|date{{=}}{{#time:F Y}}}} and if you are certain, then add the parameters {{tlx|Unreliable source|certain{{=}}y|reason{{=}}{{var|1=your WP:RS-based reason here.}}|date{{=}}{{#time:F Y}}}}
'''Placement'''
: According to [[MOS:LAYOUT]], maintenance templates, such as this one, should (except when section-specific) be placed after hatnotes, at the start of the article. That placement is supported by consensus obtained in an RfC at {{section link|Template talk:More citations needed/Archive 4|RfC: Location of Tag}}.
'''User warning'''
: A user warning template, {{tl|uw-refimprove}}, is available to notify contributors that an article they created needs its referencing improved.
'''Auto-categorization'''
: This template adds the article to [[:Category:Articles needing additional references from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]], and [[:Category:All articles needing additional references]], both [[Wikipedia:HIDDENCAT|hidden categories]].
== Parameters ==
There are six parameters, one positional, and five named parameters. All parameters are optional.
* {{para|1}}{{snd}}scope of notification (e.g., 'section', 'article') default: 'article'.
* {{para|date}}{{snd}}month name and year; e.g. '{{CURRENTMONTHNAME}} {{CURRENTYEAR}}' (no default)
* {{para|find}}{{snd}}search keywords for {{tl|find sources}} param 1 (double-quoted search); default: page title. See details [[#Details|below]].
* {{para|find2}}{{snd}}search keywords for {{tl|find sources}} param 2 (unquoted search). Alias: <code>unquoted</code>. See [[#Details|below]].
* {{para|small}}{{snd}}set to <code>left</code> or <code>no</code>; see details at [[Template:Ambox/doc#small|Ambox]]. Default: standard-width banner.
* {{para|talk}}{{snd}}title of talk page section where discussion can be found
=== Details ===
'''Talk parameter'''
: A {{para|talk}} parameter is allowed; setting this to any value will result in the message "See talk page for details." being included in the tag. If the value is a valid anchor on the talk page (e.g., the title of a section or subsection heading), then the talk page link will go directly to that anchor; if not, then to the top of the page.
'''Date parameter'''
: This template also includes support for using the {{para|date}} parameter. Adding this parameter sorts the article into subcategories of [[:Category:Articles needing additional references]] and out of the parent category, allowing the oldest problems to be identified and dealt with first. A [[Wikipedia:Bot policy|bot]] will add this parameter, if it is omitted. Be careful '''''not''''' to abbreviate the date, because then it will automatically add a redlinked category instead of the correct category. The simplest way to use this parameter manually is <code><nowiki>{{More citations needed|{{subst:DATE}}}}</nowiki></code>, but it can be done more explicitly as <code><nowiki>{{More citations needed|date=</nowiki>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> (both result in the same output). Do ''not'' use <code><nowiki>{{More citations needed|date={{subst:DATE}}}}</nowiki></code> because <code><nowiki>{{subst:DATE}}</nowiki></code> already includes the leading <code>date=</code> code.
'''Find parameters:'''
: There are two 'find' parameters available to control the presentation and operation of the {{tl|find sources}} links optionally displayed by the {{tl|Unreferenced}} template. By default, the template displays {{tl|find sources}} with a quoted search query equivalent to the exact article title. Sometimes, especially if the article has a long, [[WP:NDESC|descriptive title]], or if it includes [[WP:PARENDIS|parenthetical disambiguation terms]], this may not give useful results. The find parameters can be used to provide the search keywords of your choice to the {{tl|find sources}} links. Use:
:* {{para|find}} to specify keywords for an exact search (double-quoted query); this corresponds to {{tl|find sources}} positional param <code>|1</code>.
:* {{para|find2}} to specify keywords for an unquoted search; this corresponds to {{tl|find sources}} param <code>|2</code>. The alias {{para|unquoted}} may be used instead.
The value "none" may be passed to 'find' ({{para|find|none}}) to suppress display of ''find sources'' links. (Note that specifying {{para|find|none}} and a nonempty value for {{para|find2}} is not a valid combination.)
== Examples ==
Listed below are several examples of usage:
:{{tlc|More citations needed|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or the common redirect: {{tlc|Refimprove|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
:{{tlc|More citations needed|2=section|3=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or use the alternative template: {{tlx|More citations needed section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
::The template can be made smaller with {{tlc|More citations needed|section|small{{=}}y}} or use the alternative template {{tlx|More citations needed section|small{{=}}y}}
:{{tlc|More citations needed|section|<nowiki>{{subst:DATE}}</nowiki>|talk{{=}}{{var|Talk page section name}}|small{{=}}y}}
The optional {{para|find}} parameter is available, for modifying the operation of the {{tl|find sources mainspace}} links displayed by the template:
{{tlc|More citations needed|find{{=}}search keyword(s)|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
==Differences from related templates==
==={{tl|BLP sources}}===
* Use ''BLP sources'' in [[WP:BLP|articles about living persons]] that need additional references. If the article needs additional references but is not about a living or recently deceased subject, then use ''More citations needed''.
==={{Tl|More footnotes needed}}===
* Use ''More footnotes needed'' when the article includes a list of sources, perhaps in a "Bibliography" or "Works" appendix, but its sources remain unclear because there are [[WP:INLINECITE|insufficient inline citations]]. The ''More citations needed'' tag is more specific than ''More footnotes needed'', and should be used preferentially to that template.
==={{Tl|Unreferenced}} and {{Tl|Citation needed}}===
* Use ''Unreferenced'' when there are no citations of any kind in an article. If citations have been added to an article, but they are insufficient, then use ''More citations needed''.
* Alternatively, if an article has sufficient inline citations, but lacks citations covering specific information (such as [[WP:PROVEIT|missing a citation on a quotation]]), then use the inline citation template {{Tl|Citation needed}} to indicate more precisely where additional citations are needed. Unlike the inline ''Citation needed'', ''More citations needed'' is placed as a general banner at the top of an article.
* The {{Tl|More citations needed section}} and {{tl|Unreferenced section}} templates are available to use for problems that are not article-wide.
* If you decide to change a tag from ''Unreferenced'' to ''More citations needed'', don't forget to update the date stamp in the tag, if necessary.
==={{Tl|Primary sources}}===
* If an article has a sufficient amount of inline citations, but the citations are from primary sources (see [[WP:USEPRIMARY]]), then use ''{{tl|Primary sources}}''.
==={{Tl|Third-party}}===
* If an article has sufficient inline citations, but the citations are from sources affiliated with the subject (see [[WP:INDY]]), then use ''{{tl|Third-party}}''.
==={{Tl|One source}}===
* If an article has exactly one source '''and''' that single source is likely to result in bias or other problems in the article (e.g., it cites one fringe-y book instead of a good textbook), then use ''{{tl|One source}}''.
==={{Tl|More medical citations needed}}===
* If the article contains biomedical information, sources must meet the standards of [[WP:MEDRS]] ("it is vital that the biomedical information in articles be based on reliable, third-party, published sources and accurately reflect current medical knowledge"). If there are inline citations for biomedical information, but they do not meet the required standards, then use ''{{Tl|More medical citations needed}}''.
==={{Tl|Citation style}}===
* The ''More citations needed'' template is intended for use in articles that need additional citations, while the ''citation style'' template is used to request consistency within the citations present in an article (see [[WP:CITEVAR]]). For example, use ''citation style'' when there is a mixture of [[WP:CITE#Footnotes|footnotes]] and [[WP:CITE#Parenthetical referencing|parenthetical references]].
==={{Tl|No footnotes}} and {{Tl|More footnotes needed}}===
* ''More citations needed'' can be used when there are no "References" or "Further reading" sections present in the article.
==={{Tl|Sources exist}}===
* ''Sources exist'' is similar to ''More citations needed'', because both templates indicate the need for more references. However, {{tlx|Sources exist}} indicates that a user has already checked that reliable sources are available to be cited, but has not yet added them to the article. By using this template, the assertion is made that the article is notable, but needs more citations.
==<span id="Template data"></span>TemplateData==
{{TemplateData header}}
<templatedata>
{
"description": "This template generates a tag to indicate that the article needs additional inline citations.",
"format": "inline",
"params": {
"1": {
"label": "Affected area",
"description": "Text to replace the word \"article\", usually \"section\"",
"type": "line",
"example": "section"
},
"date": {
"label": "Month and year",
"description": "The month and year that the template was placed (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.",
"type": "line",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"example": "June 2013",
"suggested": true
},
"talk": {
"label": "Talk page section",
"description": "Section name on the talk page for further discussion",
"type": "line"
},
"small": {
"label": "Make template small",
"description": "Enter any text here to make the template box small and aligned to the left.",
"type": "line",
"autovalue": "y",
"example": "y"
},
"find": {
"label": "Find",
"description": "Search keywords for double-quoted search to pass to 'find sources'.",
"type": "line"
},
"find2": {
"label": "Find2",
"aliases": ["Unquoted"],
"description": "Search keywords for unquoted search to pass to 'find sources'.",
"type": "line"
},
"name": {}
},
"paramOrder": [
"1",
"talk",
"small",
"find",
"find2",
"date",
"name"
]
}
</templatedata>
==Redirects==
<!-- regex (Ri|RI|tl|Additional|Cite[ _]+sources|Cleanup-cite|Cleanup-verify|Cleanup[ _]+cite|DisputeCheck|Fact-check|Fact[ _]+check|Factual|Few[ _]+references|Fewreferences|Improve-references|Improve-refs|Improve[ _]+references|Improve[ _]+refs|Improvereferences|Improverefs|More[ _]+references|More[ _]+sources|Moreref|Morereferences|Morerefs|Moresources|Not[ _]+verified|Notverified|Ref-improve|Ref[ _]+improve|Reference-improve|Refimprove|Sources|Unreliable|Verification|Verify) -->
Include:
{{columns-list|colwidth=15em|
#{{Tl|+r}}
#{{Tl|+R}}
#{{tl|Add references}}
#{{tl|Additional citations}}
#{{Tl|Citations missing}}
#{{Tl|Citations needed}}
#{{Tl|Cite sources}}
#{{Tl|Cleanup-cite}}
#{{Tl|Cleanup-verify}}
#{{Tl|Few references}}
#{{Tl|Few refs}}
#{{tl|Few sources}}
#{{Tl|Improve-refs}}
#{{Tl|Improve references}}
#{{tl|Improve sources}}
#{{Tl|Missing citations}}
#{{tl|More citations}}
#{{tl|More cn}}
#{{Tl|More references}}
#{{tl|More references needed}}
#{{tl|More refs}}
#{{Tl|More sources}}
#{{tl|More sources needed}}
#{{tl|Needs additional citations}}
#{{tl|Needs more citations}}
#{{tl|Needs more references}}
#{{tl|Needs more sources}}
#{{Tl|Not verified}}
#{{Tl|Ref-improve}}
#{{Tl|Ref improve}}
#{{tl|Reference improve}}
#{{tl|Referenced}}
#{{Tl|Refimprove}}
#{{Tl|Sources}}
#{{tl|Sources needed}}
#{{Tl|Verification}}
#{{Tl|Verify}}
}}
==See also==
* {{Tl|Refbegin}}
* {{Tl|Refend}}
* {{Tl|Reflist}}
* {{Tl|Verify source}}
* [[:Template:Citation needed/doc#Inline templates]]
* [[Wikipedia:Template index/Cleanup/Verifiability and sources]]
{{Citation and verifiability article maintenance templates}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Citation and verifiability maintenance templates]]
}}</includeonly>
1774ccdf3cf6159e006865ed3f0a94a770bba1f2
MediaWiki:Common.js
8
449
975
2023-10-01T08:31:19Z
Führerredux
2
Created page with "/** * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally * loaded for all users on every wiki page. If possible create a gadget that is * enabled by default instead of adding it here (since gadgets are fully * optimized ResourceLoader modules with possibility to add dependencies etc.) * * Since Common.js isn't a gadget, there is no place to declare its * dependencies, so we have to lazy load them with mw.loader.using on demand and * then execu..."
javascript
text/javascript
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
d70a02c105be156bd0815623d6d289069c3e157e
Germany
0
450
986
2023-10-01T09:23:40Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Das Deutsche Reich
0
3
987
538
2023-10-01T09:24:30Z
Führerredux
2
Redirected page to [[Germany]]
wikitext
text/x-wiki
#REDIRECT [[Germany]]
cca3af3c93a1dec893b3ab38ac1c4d0ef51942fb
Valkism
0
246
988
545
2023-10-01T09:29:08Z
Führerredux
2
wikitext
text/x-wiki
== Valkism ==
''Valkism''' is a political ideology that emerged in early 20th-century Germany, emphasizing the organic unity of the German people based on shared ethnicity, culture, and history. It incorporates several key concepts and principles, shaping various aspects of German political thought during its time.
=== Volksgemeinschaft ===
{{Main article|Volksgemeinschaft}}
''Volksgemeinschaft'' is a central concept in Valkism, denoting the organic union of the German people rooted in romantic ethnic ideals. It emphasizes local community solidarity and cooperation, often at the expense of individualism. This ideology advocates for a collective societal goal and a natural hierarchy, considering individuals valuable only as part of the Volk.
=== Ständestaat ===
{{Main article|Ständestaat}}
''Ständestaat'' refers to the organic state structure proposed by Valkism. It is organized into organic corporations within a natural hierarchy, fostering anti-liberal and anti-individualist principles. Social mobility is ensured through a meritocratic system, with people grouped into Stände based on their professions. These Stände are overseen by a Ständeministerium, forming Corporations led by a merit-based elite.
=== Legalistic Authoritarianism ===
{{Main article|Legalistic Authoritarianism}}
Valkism's approach to governance is characterized by ''Legalistic Authoritarianism.'' This concept emphasizes a formal constitution and strong executive powers, often under a dictator. The leading legal theorist of Valkism, Carl Schmitt, played a significant role in shaping this ideology. The regime aims to prevent party politics and liberalism, focusing on existential distinctions between friends and enemies in political conflicts.
=== Technophilia ===
{{Main article|Technophilia}}
''Technophilia'' in Valkism represents the ideology's acceptance of modernism and technology as tools for societal advancement. Valkists view technology as a means to achieve their goals, subordinating it to their ideological objectives. This perspective, sometimes referred to as reactionary modernism, underscores the ideology's adaptability to contemporary technological and social realities.
=== Trenchocracy ===
{{Main article|Trenchocracy}}
''Trenchocracy'' is a concept within Valkism, advocating for the empowerment of a young intellectual elite that emerged from the trenches of World War I. This aristocracy of the trenches unites veterans across social classes, fostering a shared nationalist revolutionary spirit and transcending traditional class struggles.
=== Frontline Socialism/Mixed Economy ===
{{Main article|Frontline Socialism}}
Valkism incorporates elements of ''Frontline Socialism'' or a mixed economy approach, transcending traditional left-right political categories. Rejecting the excesses of capitalism, Valkists seek an ultra-nationalist form of socialism rooted in Völkisch extremism. Egalitarian ideas are rejected, promoting natural hierarchies and corporatist social models within a strong state framework.
95468047e3a02968a1b20ba9547a926aa7b23335
Template:Main
10
102
990
252
2023-10-01T09:31:13Z
Führerredux
2
1 revision imported from [[:meta:Template:Main]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|Main article|Main articles|Main page|Main pages}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
99ebf54e265aa9354bc4861d3b0da913f1441ede
Template:Sandbox other
10
54
992
104
2023-10-01T09:31:17Z
Führerredux
2
1 revision imported from [[:meta:Template:Sandbox_other]]
wikitext
text/x-wiki
{{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!--
--><noinclude>{{documentation}}</noinclude>
91e4ae891d6b791615152c1fbc971414961ba872
Template:TemplateData header
10
59
994
114
2023-10-01T09:31:18Z
Führerredux
2
1 revision imported from [[:meta:Template:TemplateData_header]]
wikitext
text/x-wiki
<div class="templatedata-header">{{#if:{{{noheader|}}}|<!--
noheader:
-->{{Template parameter usage|based=y}}|<!--
+header:
-->This is the {{#if:{{{nolink|}}}|<!--
+header, nolink TD
-->TemplateData|<!--
+header, +link [[TD]]; DEFAULT:
-->[[Wikipedia:TemplateData|TemplateData]]}}<!--
e.o. #if:nolink; DEFAULT:
--> for this template used by [[mw:Extension:TemplateWizard|TemplateWizard]], [[Wikipedia:VisualEditor|VisualEditor]] and other tools. {{Template parameter usage|based=y}}<!--
e.o. #if:noheader
-->}}
'''TemplateData for {{{1|{{BASEPAGENAME}}}}}'''
</div><includeonly><!--
check parameters
-->{{#invoke:Check for unknown parameters|check
|unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}}
|template=Template:TemplateData header
|1 |nolink |noheader
|preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div>
}}<!--
-->{{template other|{{sandbox other||
[[Category:Templates using TemplateData]]
}}}}</includeonly><!--
--><noinclude>{{Documentation}}</noinclude>
ddfbb4ae793846b96d4c06330417fa6ed4da2adc
Template:Template other
10
25
996
46
2023-10-01T09:31:18Z
Führerredux
2
1 revision imported from [[:meta:Template:Template_other]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Template}}
| template
| other
}}
}}
| template = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
06fb13d264df967b5232141067eb7d2b67372d76
Module:String
828
17
998
30
2023-10-01T09:31:19Z
Führerredux
2
1 revision imported from [[:meta:Module:String]]
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The fist index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
6df794dd52434e0f6a372c9918f5a9dedd15f579
Module:Check for unknown parameters
828
16
1000
28
2023-10-01T09:31:19Z
Führerredux
2
1 revision imported from [[:meta:Module:Check_for_unknown_parameters]]
Scribunto
text/plain
-- This module may be used to compare the arguments passed to the parent
-- with a list of arguments, returning a specified result if an argument is
-- not on the list
local p = {}
local function trim(s)
return s:match('^%s*(.-)%s*$')
end
local function isnotempty(s)
return s and s:match('%S')
end
local function clean(text)
-- Return text cleaned for display and truncated if too long.
-- Strip markers are replaced with dummy text representing the original wikitext.
local pos, truncated
local function truncate(text)
if truncated then
return ''
end
if mw.ustring.len(text) > 25 then
truncated = true
text = mw.ustring.sub(text, 1, 25) .. '...'
end
return mw.text.nowiki(text)
end
local parts = {}
for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do
pos = remainder
table.insert(parts, truncate(before) .. '<' .. tag .. '>...</' .. tag .. '>')
end
table.insert(parts, truncate(text:sub(pos or 1)))
return table.concat(parts)
end
function p._check(args, pargs)
if type(args) ~= "table" or type(pargs) ~= "table" then
-- TODO: error handling
return
end
-- create the list of known args, regular expressions, and the return string
local knownargs = {}
local regexps = {}
for k, v in pairs(args) do
if type(k) == 'number' then
v = trim(v)
knownargs[v] = 1
elseif k:find('^regexp[1-9][0-9]*$') then
table.insert(regexps, '^' .. v .. '$')
end
end
-- loop over the parent args, and make sure they are on the list
local ignoreblank = isnotempty(args['ignoreblank'])
local showblankpos = isnotempty(args['showblankpositional'])
local values = {}
for k, v in pairs(pargs) do
if type(k) == 'string' and knownargs[k] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(k, regexp) then
knownflag = true
break
end
end
if not knownflag and ( not ignoreblank or isnotempty(v) ) then
table.insert(values, clean(k))
end
elseif type(k) == 'number' and knownargs[tostring(k)] == nil then
local knownflag = false
for _, regexp in ipairs(regexps) do
if mw.ustring.match(tostring(k), regexp) then
knownflag = true
break
end
end
if not knownflag and ( showblankpos or isnotempty(v) ) then
table.insert(values, k .. ' = ' .. clean(v))
end
end
end
-- add results to the output tables
local res = {}
if #values > 0 then
local unknown_text = args['unknown'] or 'Found _VALUE_, '
if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then
local preview_text = args['preview']
if isnotempty(preview_text) then
preview_text = require('Module:If preview')._warning({preview_text})
elseif preview == nil then
preview_text = unknown_text
end
unknown_text = preview_text
end
for _, v in pairs(values) do
-- Fix odd bug for | = which gets stripped to the empty string and
-- breaks category links
if v == '' then v = ' ' end
-- avoid error with v = 'example%2' ("invalid capture index")
local r = unknown_text:gsub('_VALUE_', {_VALUE_ = v})
table.insert(res, r)
end
end
return table.concat(res)
end
function p.check(frame)
local args = frame.args
local pargs = frame:getParent().args
return p._check(args, pargs)
end
return p
93db6d115d4328d2a5148bb42959105e367b663e
Template:Main/doc
10
451
1002
1001
2023-10-01T09:31:20Z
Führerredux
2
1 revision imported from [[:meta:Template:Main/doc]]
wikitext
text/x-wiki
==Description==
This template is used at the start of a section to link to the main article on that subject.
==Syntax==
Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives...
:{{main|Help:Contents}}
You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives...
:{{Main|One|Two|Three|Four|Five}}
==Credits==
This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki.
<includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly>
<noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude>
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Page 1",
"description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.",
"type": "string"
},
"2": {
"label": "Page 2",
"description": "The name of the second page you want to link to.",
"type": "string"
},
"3": {
"label": "Page 3",
"description": "The name of the third page you want to link to.",
"type": "string"
},
"4": {
"label": "Page 4",
"description": "The name of the fourth page you want to link to.",
"type": "string"
},
"5": {
"label": "Page 5",
"description": "The name of the fifth page you want to link to.",
"type": "string"
},
"6": {
"label": "Page 6",
"description": "The name of the sixth page you want to link to.",
"type": "string"
}
},
"description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".",
"paramOrder": [
"1",
"2",
"3",
"4",
"5",
"6"
]
}
</templatedata>
06d3a43cfa1555d654afcc6d7860e3f8a1006194
Template:Main article
10
452
1003
2023-10-01T09:32:38Z
Führerredux
2
Redirected page to [[Template:Main]]
wikitext
text/x-wiki
#REDIRECT [[Template:Main]]
81c4c9d69c597268c25c0627aa680309ad900ab3
Module:If preview
828
453
1004
2023-10-01T09:34:51Z
Führerredux
2
Created page with "local p = {} local cfg = mw.loadData('Module:If preview/configuration') --[[ main This function returns either the first argument or second argument passed to this module, depending on whether the page is being previewed. ]] function p.main(frame) if cfg.preview then return frame.args[1] or '' else return frame.args[2] or '' end end --[[ pmain This function returns either the first argument or second argument passed to this module's parent (i.e. template usi..."
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:If preview/configuration')
--[[
main
This function returns either the first argument or second argument passed to
this module, depending on whether the page is being previewed.
]]
function p.main(frame)
if cfg.preview then
return frame.args[1] or ''
else
return frame.args[2] or ''
end
end
--[[
pmain
This function returns either the first argument or second argument passed to
this module's parent (i.e. template using this module), depending on whether it
is being previewed.
]]
function p.pmain(frame)
return p.main(frame:getParent())
end
local function warning_text(warning)
return mw.ustring.format(
cfg.warning_infrastructure,
cfg.templatestyles,
warning
)
end
function p._warning(args)
local warning = args[1] and args[1]:match('^%s*(.-)%s*$') or ''
if warning == '' then
return warning_text(cfg.missing_warning)
end
if not cfg.preview then return '' end
return warning_text(warning)
end
--[[
warning
This function returns a "preview warning", which is the first argument marked
up with HTML and some supporting text, depending on whether the page is being previewed.
disabled since we'll implement the template version in general
]]
--function p.warning(frame)
-- return p._warning(frame.args)
--end
--[[
warning, but for pass-through templates like {{preview warning}}
]]
function p.pwarning(frame)
return p._warning(frame:getParent().args)
end
return p
9a92196d0001b8016f2501aedfadcc3adcb974ef
Module:If preview/doc
828
454
1005
2023-10-01T09:35:17Z
Führerredux
2
Created page with "{{Module rating|protected}} {{High-use}} {{Lua|Module:If preview/configuration}} {{Uses TemplateStyles|Module:If preview/styles.css}} This module implements {{Tl|If preview}} and {{Tl|Preview warning}}. It helps templates/modules determine if they are being previewed. Prefer implementing the template versions in other templates. In a module to use the <code>main()</code>, you need to pass a frame table with an args table. For the preview warning, use <code>_warning()..."
wikitext
text/x-wiki
{{Module rating|protected}}
{{High-use}}
{{Lua|Module:If preview/configuration}}
{{Uses TemplateStyles|Module:If preview/styles.css}}
This module implements {{Tl|If preview}} and {{Tl|Preview warning}}. It helps templates/modules determine if they are being previewed.
Prefer implementing the template versions in other templates.
In a module to use the <code>main()</code>, you need to pass a frame table with an args table.
For the preview warning, use <code>_warning()</code>.
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Please, categories below this line and interwikis at Wikidata -->
}}</includeonly><noinclude>
[[pt:Módulo:If preview/doc]]
</noinclude>
8613bb2e7c8b53a722e4eef105b36b82ab20037d
Module:If preview/configuration
828
455
1006
2023-10-01T09:35:46Z
Führerredux
2
Created page with "--[[ We perform the actual check for whether this is a preview here since preprocessing is relatively expensive. ]] local frame = mw.getCurrentFrame() local function is_preview() local revision_id = frame:preprocess('{{REVISIONID}}') -- {{REVISIONID}} is usually the empty string when previewed. -- I don't know why we're checking for nil but hey, maybe someday things -- would have broken return revision_id == nil or revision_id == '' end local function templatestyl..."
Scribunto
text/plain
--[[
We perform the actual check for whether this is a preview here since
preprocessing is relatively expensive.
]]
local frame = mw.getCurrentFrame()
local function is_preview()
local revision_id = frame:preprocess('{{REVISIONID}}')
-- {{REVISIONID}} is usually the empty string when previewed.
-- I don't know why we're checking for nil but hey, maybe someday things
-- would have broken
return revision_id == nil or revision_id == ''
end
local function templatestyles()
return frame:extensionTag{
name = 'templatestyles', args = { src = 'Module:If preview/styles.css' }
}
end
return {
preview = is_preview(),
templatestyles = templatestyles(),
warning_infrastructure = '%s<div class="preview-warning"><strong>Preview warning:</strong> %s</div>',
missing_warning = 'The template has no warning text. Please add a warning.'
}
3edc8897c51a61b9e710b2a4d9eb657b3c2f1034
Module:If preview/styles.css
828
456
1007
2023-10-01T09:36:04Z
Führerredux
2
Created page with "/* {{pp|small=yes}} */ .preview-warning { font-style: italic; /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; color: red; } /* The templatestyles element inserts a link element before hatnotes. * TODO: Remove link if/when WMF resolves T200206 */ .preview-warning + link + .preview-warning { margin-top: -0.5em; }"
sanitized-css
text/css
/* {{pp|small=yes}} */
.preview-warning {
font-style: italic;
/* @noflip */
padding-left: 1.6em;
margin-bottom: 0.5em;
color: red;
}
/* The templatestyles element inserts a link element before hatnotes.
* TODO: Remove link if/when WMF resolves T200206 */
.preview-warning + link + .preview-warning {
margin-top: -0.5em;
}
8b79ffc4853d424a805b084de00030e04bbd573e
Template:If preview
10
457
1008
2023-10-01T09:36:59Z
Führerredux
2
Created page with "{{#invoke:If preview|pmain}}<noinclude> {{documentation}} </noinclude>"
wikitext
text/x-wiki
{{#invoke:If preview|pmain}}<noinclude>
{{documentation}}
</noinclude>
39c389b968c39be0b920af321b146f212ea3a1c3
Template:If preview/doc
10
458
1009
2023-10-01T09:37:10Z
Führerredux
2
Created page with "{{Documentation subpage}} {{High-use}} {{Lua|Module:If preview}} This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly. == Usage == <code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code> The first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty. ==Examples=..."
wikitext
text/x-wiki
{{Documentation subpage}}
{{High-use}}
{{Lua|Module:If preview}}
This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly.
== Usage ==
<code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code>
The first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty.
==Examples==
Preview this page to see the effect of previewing on the 'Example' column.
{|class=wikitable
!Code
!Value when previewed
!Value when saved
!Example
|-
|<code><nowiki>{{If preview|Yes|No}}</nowiki></code>
|Yes
|No
|{{If preview|Yes|No}}
|-
|<code><nowiki>{{If preview|Red}}</nowiki></code>
|Red
|
|{{If preview|Red}}
|-
|<code><nowiki>{{If preview||Blue}}</nowiki></code>
|
|Blue
|{{If preview||Blue}}
|}
==See also==
* {{Tl|Preview warning}}
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:If-then-else templates]]
}}</includeonly><noinclude>
[[pt:Predefinição:If preview/doc]]
</noinclude>
b9ffc1a62b876db536b126e923a82e89dbee8038
Module:Unicode data
828
459
1010
2023-10-01T09:45:47Z
Führerredux
2
Created page with "local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range =..."
Scribunto
text/plain
local p = {}
local floor = math.floor
local function errorf(level, ...)
if type(level) == "number" then
return error(string.format(...), level + 1)
else -- level is actually the format string.
return error(string.format(level, ...), 2)
end
end
local function binary_range_search(codepoint, ranges)
local low, mid, high
low, high = 1, ranges.length or require "Module:TableTools".length(ranges)
while low <= high do
mid = floor((low + high) / 2)
local range = ranges[mid]
if codepoint < range[1] then
high = mid - 1
elseif codepoint <= range[2] then
return range, mid
else
low = mid + 1
end
end
return nil, mid
end
p.binary_range_search = binary_range_search
--[[
local function linear_range_search(codepoint, ranges)
for i, range in ipairs(ranges) do
if range[1] <= codepoint and codepoint <= range[2] then
return range
end
end
end
--]]
-- Load a module by indexing "loader" with the name of the module minus the
-- "Module:Unicode data/" part. For instance, loader.blocks returns
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be
-- returned.
local loader = setmetatable({}, {
__index = function (self, key)
local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key)
if not success then
data = false
end
self[key] = data
return data
end
})
-- For the algorithm used to generate Hangul Syllable names,
-- see "Hangul Syllable Name Generation" in section 3.12 of the
-- Unicode Specification:
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf
local name_hooks = {
{ 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters
{ 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters
{ 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A
{ 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph
{ 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables
local Hangul_data = loader.Hangul
local syllable_index = codepoint - 0xAC00
return ("HANGUL SYLLABLE %s%s%s"):format(
Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],
Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)
/ Hangul_data.trail_count)],
Hangul_data.trails[syllable_index % Hangul_data.trail_count]
)
end },
-- High Surrogates, High Private Use Surrogates, Low Surrogates
{ 0xD800, 0xDFFF, "<surrogate-%04X>" },
{ 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use
-- CJK Compatibility Ideographs
{ 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph
{ 0x18800, 0x18AFF, function (codepoint)
return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF)
end },
{ 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement
{ 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu
{ 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B
{ 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C
{ 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D
{ 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E
{ 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F
-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)
{ 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement
return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17)
end},
{ 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G
{ 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H
{ 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I
{ 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use
{ 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use
}
name_hooks.length = #name_hooks
local name_range_cache
local function generate_name(data, codepoint)
if type(data) == "string" then
return data:format(codepoint)
else
return data(codepoint)
end
end
--[[
-- Checks that the code point is a number and in range.
-- Does not check whether code point is an integer.
-- Not used
local function check_codepoint(funcName, argIdx, val)
require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')
if codepoint < 0 or 0x10FFFF < codepoint then
errorf("Codepoint %04X out of range", codepoint)
end
end
--]]
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8
function p.lookup_name(codepoint)
-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned
-- (Cn) and specifically noncharacters:
-- https://www.unicode.org/faq/private_use.html#nonchar4
if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF
or floor(codepoint % 0x10000) >= 0xFFFE) then
return ("<noncharacter-%04X>"):format(codepoint)
end
if name_range_cache -- Check if previously used "name hook" applies to this code point.
and codepoint >= name_range_cache[1]
and codepoint <= name_range_cache[2] then
return generate_name(name_range_cache[3], codepoint)
end
local range = binary_range_search(codepoint, name_hooks)
if range then
name_range_cache = range
return generate_name(range[3], codepoint)
end
local data = loader[('names/%03X'):format(codepoint / 0x1000)]
if data and data[codepoint] then
return data[codepoint]
-- Unassigned (Cn) consists of noncharacters and reserved characters.
-- The character has been established not to be a noncharacter,
-- and if it were assigned, its name would already been retrieved,
-- so it must be reserved.
else
return ("<reserved-%04X>"):format(codepoint)
end
end
--[[
-- No image data modules on Wikipedia yet.
function p.lookup_image(codepoint)
local data = loader[('images/%03X'):format(codepoint / 0x1000)]
if data then
return data[codepoint]
end
end
--]]
local planes = {
[ 0] = "Basic Multilingual Plane";
[ 1] = "Supplementary Multilingual Plane";
[ 2] = "Supplementary Ideographic Plane";
[ 3] = "Tertiary Ideographic Plane";
[14] = "Supplementary Special-purpose Plane";
[15] = "Supplementary Private Use Area-A";
[16] = "Supplementary Private Use Area-B";
}
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.
local blocks
local function block_iter(blocks, i)
i = i + 1
local data = blocks[i]
if data then
-- Unpack doesn't work on tables loaded with mw.loadData.
return i, data[1], data[2], data[3]
end
end
-- An ipairs-type iterator generator for the list of blocks.
function p.enum_blocks()
local blocks = loader.blocks
return block_iter, blocks, 0
end
function p.lookup_plane(codepoint)
local i = floor(codepoint / 0x10000)
return planes[i] or ("Plane %u"):format(i)
end
function p.lookup_block(codepoint)
local blocks = loader.blocks
local range = binary_range_search(codepoint, blocks)
if range then
return range[3]
else
return "No Block"
end
end
function p.get_block_info(name)
for i, block in ipairs(loader.blocks) do
if block[3] == name then
return block
end
end
end
function p.is_valid_pagename(pagename)
local has_nonws = false
for cp in mw.ustring.gcodepoint(pagename) do
if (cp == 0x0023) -- #
or (cp == 0x005B) -- [
or (cp == 0x005D) -- ]
or (cp == 0x007B) -- {
or (cp == 0x007C) -- |
or (cp == 0x007D) -- }
or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR
or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block
or (cp == 0xFFFD) -- REPLACEMENT CHARACTER
then
return false
end
local printable, result = p.is_printable(cp)
if not printable then
return false
end
if result ~= "space-separator" then
has_nonws = true
end
end
return has_nonws
end
local function manual_unpack(what, from)
if what[from + 1] == nil then
return what[from]
end
local result = {}
from = from or 1
for i, item in ipairs(what) do
if i >= from then
table.insert(result, item)
end
end
return unpack(result)
end
local function compare_ranges(range1, range2)
return range1[1] < range2[1]
end
-- Creates a function to look up data in a module that contains "singles" (a
-- code point-to-data map) and "ranges" (an array containing arrays that contain
-- the low and high code points of a range and the data associated with that
-- range).
-- "loader" loads and returns the "singles" and "ranges" tables.
-- "match_func" is passed the code point and either the data or the "dots", and
-- generates the final result of the function.
-- The varargs ("dots") describes the default data to be returned if there wasn't
-- a match.
-- In case the function is used more than once, "cache" saves ranges that have
-- already been found to match, or a range whose data is the default if there
-- was no match.
local function memo_lookup(data_module_subpage, match_func, ...)
local dots = { ... }
local cache = {}
local singles, ranges
return function (codepoint)
if not singles then
local data_module = loader[data_module_subpage]
singles, ranges = data_module.singles, data_module.ranges
end
if singles[codepoint] then
return match_func(codepoint, singles[codepoint])
end
local range = binary_range_search(codepoint, cache)
if range then
return match_func(codepoint, manual_unpack(range, 3))
end
local range, index = binary_range_search(codepoint, ranges)
if range then
table.insert(cache, range)
table.sort(cache, compare_ranges)
return match_func(codepoint, manual_unpack(range, 3))
end
if ranges[index] then
local dots_range
if codepoint > ranges[index][2] then
dots_range = {
ranges[index][2] + 1,
ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,
unpack(dots)
}
else -- codepoint < range[index][1]
dots_range = {
ranges[index - 1] and ranges[index - 1][2] + 1 or 0,
ranges[index][1] - 1,
unpack(dots)
}
end
table.sort(cache, compare_ranges)
end
return match_func(codepoint)
end
end
-- Get a code point's combining class value in [[Module:Unicode data/combining]],
-- and return whether this value is not zero. Zero is assigned as the default
-- if the combining class value is not found in this data module.
-- That is, return true if character is combining, or false if it is not.
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for
-- more information.
p.is_combining = memo_lookup(
"combining",
function (codepoint, combining_class)
return combining_class and combining_class ~= 0 or false
end,
0)
function p.add_dotted_circle(str)
return (mw.ustring.gsub(str, ".",
function(char)
if p.is_combining(mw.ustring.codepoint(char)) then
return '◌' .. char
end
end))
end
local lookup_control = memo_lookup(
"control",
function (codepoint, ccc)
return ccc or "assigned"
end,
"assigned")
p.lookup_control = lookup_control
function p.is_assigned(codepoint)
return lookup_control(codepoint) ~= "unassigned"
end
function p.is_printable(codepoint)
local result = lookup_control(codepoint)
return (result == "assigned") or (result == "space-separator"), result
end
function p.is_whitespace(codepoint)
local result = lookup_control(codepoint)
return (result == "space-separator"), result
end
p.lookup_category = memo_lookup(
"category",
function (codepoint, category)
return category
end,
"Cn")
local lookup_script = memo_lookup(
"scripts",
function (codepoint, script_code)
return script_code or 'Zzzz'
end,
"Zzzz")
p.lookup_script = lookup_script
function p.get_best_script(str)
-- Check type of argument, because mw.text.decode coerces numbers to strings!
require "libraryUtil".checkType("get_best_script", 1, str, "string")
-- Convert HTML character references (including named character references,
-- or character entities) to characters.
str = mw.text.decode(str, true)
local scripts = {}
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
-- Ignore "Inherited", "Undetermined", or "Uncoded" scripts.
if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then
scripts[script] = true
end
end
-- If scripts does not contain two or more keys,
-- return first and only key (script code) in table.
if not next(scripts, next(scripts)) then
return next(scripts)
end -- else return majority script, or else "Zzzz"?
end
function p.is_Latin(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0340-U+10FFFF. If they are not found and there is at least
-- one Latin-script character, the string counts as Latin, because the rest
-- of the characters can only be Zyyy, Zinh, and Zzzz.
-- The only scripts found below U+0370 (the first code point of the Greek
-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.
-- See the codepage in the [[UTF-8]] article.
if not str:find "[\205-\244]" then
for codepoint in mw.ustring.gcodepoint(str) do
if lookup_script(codepoint) == "Latn" then
return true
end
end
end
local Latn = false
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if script == "Latn" then
Latn = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return Latn
end
-- Checks that a string contains only characters belonging to right-to-left
-- scripts, or characters of ignorable scripts.
function p.is_rtl(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0580-U+10FFFF. If they are not found, the string can only
-- have characters from a left-to-right script, because the first code point
-- in a right-to-left script is U+0591, in the Hebrew block.
if not str:find "[\214-\244]" then
return false
end
local result = false
local rtl = loader.scripts.rtl
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if rtl[script] then
result = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return result
end
--[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------
external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so
that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text
has <br /> tags.
]]
function p.is_rtl_frame (frame)
local str = frame.args[1]; -- get the string from the {{#invoke:}} frame
str = str:gsub ('%b<>', ''); -- strip any html and html-like tags
return p.is_rtl (str); -- return if whatever remains rtl; false else
end
local function get_codepoint(args, arg)
local codepoint_string = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
local codepoint = tonumber(codepoint_string, 16)
or errorf(2, "Parameter %s is not a code point in hexadecimal base",
tostring(arg))
if not (0 <= codepoint and codepoint <= 0x10FFFF) then
errorf(2, "code point in parameter %s out of range", tostring(arg))
end
return codepoint
end
local function get_func(args, arg, prefix)
local suffix = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
suffix = mw.text.trim(suffix)
local func_name = prefix .. suffix
local func = p[func_name]
or errorf(2, "There is no function '%s'", func_name)
return func
end
-- This function allows any of the "lookup" functions to be invoked. The first
-- parameter is the word after "lookup_"; the second parameter is the code point
-- in hexadecimal base.
function p.lookup(frame)
local func = get_func(frame.args, 1, "lookup_")
local codepoint = get_codepoint(frame.args, 2)
local result = func(codepoint)
if func == p.lookup_name then
-- Prevent code point labels such as <control-0000> from being
-- interpreted as HTML tags.
result = result:gsub("<", "<")
end
return result
end
function p.is(frame)
local func = get_func(frame.args, 1, "is_")
-- is_Latin and is_valid_pagename take strings.
if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then
return (func(frame.args[2]))
else -- The rest take code points.
local codepoint = get_codepoint(frame.args, 2)
return (func(codepoint)) -- Adjust to one result.
end
end
return p
898b5f0689e2646f633acbbd08143920c87abef2
Module:Unicode data/doc
828
460
1011
2023-10-01T09:46:12Z
Führerredux
2
Created page with "<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{#ifeq: {{SUBPAGENAME}} | sandbox | {{#invoke: Unicode_data/testcases | run_tests}} | {{high risk|952513}} }} == Usage == This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the [https://www.unicode.org/Public/UNIDATA/ Unicode Character Database]..."
wikitext
text/x-wiki
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{#ifeq: {{SUBPAGENAME}} | sandbox
| {{#invoke: Unicode_data/testcases | run_tests}}
| {{high risk|952513}}
}}
== Usage ==
This module provides functions that access information on Unicode code points. The information is retrieved from data modules generated from the [https://www.unicode.org/Public/UNIDATA/ Unicode Character Database], or derived by rules given in the [https://www.unicode.org/versions/Unicode11.0.0/UnicodeStandard-11.0.pdf Unicode Specification]. It and its submodules were copied from English Wiktionary and then modified; see [[wikt:Module:Unicode data|there]] for more information.
==Parameters and functions==
===code point===
The code point is to be entered as '''hexadecimal value'''. For example, {{unichar|A9|COPYRIGHT SIGN}}:
:{{mono|1={{!}}A9<sub>hex</sub>}}
:{{mono|1={{!}}0xA9<sub>hex</sub>}}
:{{mono|1={{!}}0x00A9<sub>hex</sub>}}
:{{mono|1={{!}}0x00a9<sub>hex</sub>}}
:<code><nowiki>{{#invoke:Unicode data|lookup|name|0x00A9}}</nowiki></code> → {{#invoke:Unicode data|lookup|name|0x00A9}}
Incorrect or unintended results:
:{{mono|1=169<sub>dec</sub>}}: <code><nowiki>{{#invoke:Unicode data|lookup|name|169}}</nowiki></code> → {{#invoke:Unicode data|lookup|name|169}} {{nay}} —"U+00A9" {{code|1=©}} expected; but is read as {{mono|1=00A9<sub>hex</sub>}} (that is, {{mono|1={{hex2dec|169}}<sub>dec</sub>}}
:{{mono|1=U+00A9}} <code><nowiki>{{#invoke:Unicode data|lookup|name|U+00A9}}</nowiki></code> {{nay}} —do not use "U+" prefix
:{{mono|1=غ}} <code><nowiki>{{#invoke:Unicode data|lookup|name|غ}}</nowiki></code> {{nay}} —cannot enter a character as codepoint
==="{{mono|lookup}}" and "{{mono|1=is}}" functions===
; {{code|lang=lua|lookup, is}}: Template-invokable functions that allow access to the functions starting with <code>lookup</code> and <code>is</code>.For most of the functions, add the code point in hexadecimal base as the next parameter. For <code>is"{{!}}Latin</code>, <code>is{{!}}rtl</code>, and <code>is{{!}}valid_pagename</code>, add character string. [[HTML character references]] in the text are decoded by the module into code points.
:For example, {{tnull|#invoke:Unicode data|is|Latin|àzàhàr̃iyyā̀}} → {{#invoke:Unicode data|is|Latin|àzàhàr̃iyyā̀}}.
:Internally, in modules, these functions are named using underscore: {{code|lang=lua|lookup_name{{!}}code point}} ← {{code|lang=lua|lookup_name}}
:For <code>&A9;</code> <big>©</big>: {{tnull|#invoke:Unicode data|lookup|name|A9}} → {{#invoke:Unicode data|lookup|name|A9}}
==Functions overview==
{{Module:Unicode data/overview/doc}}
==Data modules==
The data used by functions in this module is found in [[Special:PrefixIndex/Module:Unicode data/|submodules]]. Some are generated by [[AWK]] scripts shown at [[wikt:User:Kephir/Unicode|User:Kephir/Unicode]] on English Wiktionary, others by Lua scripts on the <code>/make</code> subpages of the submodules.
* [[Module:Unicode data/age]]: 'Age' of a character, that is: version introduction number.
* [[Module:Unicode data/aliases]]: the formal name aliases for characters (from [https://www.unicode.org/Public/UNIDATA/NameAliases.txt NameAliases.txt])
* [[Module:Unicode data/blocks]]: the list of Unicode blocks (from [https://www.unicode.org/Public/UNIDATA/Blocks.txt Blocks.txt])
* [[Module:Unicode data/category]]: data mapping characters to their General Category (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt DerivedGeneralCategory.txt])
* [[Module:Unicode data/combining]]: data mapping characters to their Combining Classes (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedCombiningClass.txt DerivedCombiningClass.txt])
* [[Module:Unicode data/control]]: data for identifying characters that belong to the General Categories of Separator and Other (from [https://www.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt DerivedGeneralCategory.txt])
* [[Module:Unicode data/derived core properties]]:
* [[Module:Unicode data/Hangul]]: data used to generate the names of [[Hangul]] syllables (from [https://www.unicode.org/Public/UNIDATA/Jamo.txt Jamo.txt])
* [[Special:PrefixIndex/Module:Unicode data/names|Module:Unicode data/names/<nowiki>*</nowiki>]] ({{mono|000hh, .., 0E0hh}}; eg [[:Module:Unicode data/names/000|../names/000]]): names
* [[Module:Unicode data/scripts]]: data mapping characters to their Unicode script properties (from [https://www.unicode.org/Public/UNIDATA/Scripts.txt Scripts.txt]).
The name data modules ([[Special:PrefixIndex/Module:Unicode data/names/|Module:Unicode data/names/<var>xxx</var>]]) were compiled from [https://www.unicode.org/Public/UNIDATA/UnicodeData.txt UnicodeData.txt]. Each one contains, at maximum, code points U+xxx000 to U+xxxFFF.
{{#invoke:Unicode data/documentation functions|show_modules}}
==Copyright==
The Unicode database is released by Unicode Inc. under the following terms:
<blockquote>
Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
</blockquote>
==Known issues==
* Reading data like <code>[[:Module:Unicode data/aliases]]</code> not provided nor documented
* Test fail: <code>lookup_category</code> {{mono|U+FFFF}} (<noncharacter-FFFF>) expected: Cn.
::<code><nowiki>{{#invoke:Unicode data|lookup|category|0xFFFF}}</nowiki></code> → {{#invoke:Unicode data|lookup|category|0xFFFF}} [Nil]
==See also==
* '''Named entities''': for example, {{unichar|22C1|N-ARY LOGICAL OR}}: <code><nowiki>{{#</nowiki>invoke:[[:Module:LoadData|LoadData]]|[[:Module:Numcr2namecr|Numcr2namecr]]|0x22C1}}</code> → {{#invoke:LoadData|Numcr2namecr|0x22C1}}
<includeonly>{{sandbox other| |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Unicode character modules|Data]]
[[Category:Lua metamodules]]
}}</includeonly>
59b6592feea5de24aa4a406900a3f9be340c3c76
Template:Mono
10
461
1012
2023-10-01T09:47:10Z
Führerredux
2
Created page with "{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude>"
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
800f06823c02b03f8b9cf1e245ad8c4829cfe931
Template:Mono/doc
10
462
1013
2023-10-01T09:47:31Z
Führerredux
2
Created page with "{{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE --> {{tlr|clear=right|monospace}}{{tsh|clear=right|tt|ttt}} {{high-use}} {{Uses TemplateStyles |Template:Mono/styles.css}} {{COinS safe|n}} {{-}} == Usage == {{tlx|mono|<var>text to format here</var>}} renders as: {{mono|text to format here}} This template is for formatting short bits of content (the only parameter) as monospaced (nonproportional) text. It is simply a quick shorthand for..."
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{tlr|clear=right|monospace}}{{tsh|clear=right|tt|ttt}}
{{high-use}}
{{Uses TemplateStyles |Template:Mono/styles.css}}
{{COinS safe|n}}
{{-}}
== Usage ==
{{tlx|mono|<var>text to format here</var>}}
renders as:
{{mono|text to format here}}
This template is for formatting short bits of content (the only parameter) as monospaced (nonproportional) text. It is simply a quick shorthand for the necessary [[Cascading Style Sheets|CSS]] code. It is a replacement for {{tag|tt}}, which is an obsolete element under HTML5. ([http://www.w3.org/TR/html5/obsolete.html#non-conforming-features Non-conforming features])
This template {{em|should}} be used where the content is being rendered in monospaced text for purely stylistic/display reasons, where this display has no particular semantic significance.
It {{em|should not}} be used to indicate information with these semantics:
* source code, use {{tl|code}} or {{tag|code}} instead
* variables or variable input, use {{tl|var}} or {{tag|var}} instead
* keyboard input, use {{tl|kbd}} or {{tag|kbd}} instead
* sample output, use {{tl|samp}} or {{tag|samp}} instead
It {{em|cannot}} be used to mark up multiple paragraphs, sections or other block elements, as it uses {{tag|span|o}}, which is an inline element. Use {{tl|monodiv}} and {{tl|pre}} for multiple blocks of text, or use multiple instances of {{tl|Mono}} for each individual line.
When the content ends with a single closing curly brace (<code><nowiki>}</nowiki></code>), the content should be followed by <code><nowiki><nowiki/></nowiki></code>, for example, to mark up <code><nowiki>{foo}</nowiki></code>, use {{tlc|mono|<nowiki>{foo}<nowiki/></nowiki>}} or {{tlc|mono|<nowiki><nowiki>{foo}</nowiki></nowiki>}}.
If the content contains pipe characters (<code>|</code>) not surrounded by {{tag|nowiki}}, they must be escaped with <code>&#124;</code> or <code><nowiki>{{!}}</nowiki></code>.
=== Parameters ===
There are two parameters:
;{{para|1}} or unnamed
: The content to format as monospaced. If the content contains a <code>=</code> character, the parameter must be numbered or the template will break. (The parameter does not need to be numbered if the <code>=</code> character is surrounded by {{tag|nowiki}}, or if it is escaped as <code>&#61;</code>.) For backward compatibility with an old, merged-in template, this parameter can also be called {{para|2}}.
;{{para|needs_review|yes}}
: Used (e.g. by [[WP:Bot|bots]] or [[WP:AWB|AWB]] scripts) to indicate replacement of now-obsolete {{tag|tt}} markup with {{tnull|mono|...}} markup. This template displays nothing and presently does no categorization, though a cleanup category can be created if necessary. It indicates that the markup may need to be changed to something more semantically meaningful, such as {{tag|code}}, {{tag|samp}}, or {{tag|kbd}}.
== TemplateData ==
{{Format TemplateData|<templatedata>
{
"description": "This template is for formatting short bits of content as monospaced text.",
"format": "inline",
"params": {
"1": {
"aliases": [
"2"
],
"label": "Content",
"description": "The content to format as monospaced.",
"required": true,
"type": "line"
},
"needs_review": {
"label": "Needs Review?",
"description": "Used (e.g. by [[WP:Bot|bots]] or [[WP:AWB|AWB]] scripts) to indicate replacement of now-obsolete <code><!--nostrip--><tt>...</tt></code><!--nostrip--> markup with <code><!--nostrip-->{{mono|...}}</code><!--nostrip--> markup. This template displays nothing and presently does no categorization, though a cleanup category can be created if necessary. It indicates that the markup may need to be changed to something more semantically meaningful, such as <code><!--nostrip--><code>...</code></code><!--nostrip-->, <code><!--nostrip--><samp>...</samp></code><!--nostrip-->, or <code><!--nostrip--><kbd>...</kbd></code><!--nostrip-->.",
"autovalue": "yes",
"type": "boolean"
}
}
}
</templatedata>}}
== See also ==
* {{tl|pre}}
* {{tl|code}}
* {{tl|kbd}}
* {{tl|syntaxhighlight}}
* {{tl|samp}}
* {{tl|var}}
* {{tl|param value}}
{{Semantic markup templates|show}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:Typing-aid templates|{{PAGENAME}}]]
}}</includeonly>
b7b11addf00bef5846e19a048612034ff9df51fc
Template:Mono/styles.css
10
463
1014
2023-10-01T09:47:55Z
Führerredux
2
Created page with "/* {{pp-template}} */ .monospaced { /* "monospace, monospace" per [[WP:MONO]] */ font-family: monospace, monospace; }"
sanitized-css
text/css
/* {{pp-template}} */
.monospaced {
/* "monospace, monospace" per [[WP:MONO]] */
font-family: monospace, monospace;
}
cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4
Module:Infobox/doc
828
84
1015
208
2023-10-01T09:49:21Z
Führerredux
2
wikitext
text/x-wiki
{{High-use|3308957|all-pages = yes}}
{{module rating|protected}}
{{Lua|Module:Navbar|Module:Italic title}}
{{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}}
'''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions.
== Tracking categories ==
* {{clc|Pages using infobox templates with ignored data cells}}
* {{clc|Articles using infobox templates with no data rows}}
* {{clc|Pages using embedded infobox templates with the title parameter}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Modules that add a tracking category]]
[[Category:Wikipedia infoboxes]]
[[Category:Infobox modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
936ad219eb263a6f3293d62f667bd7b5db1059c1
Adam Dressler
0
464
1016
2023-10-01T09:49:57Z
Führerredux
2
Created page with "{{Infobox officeholder | name = Adam Dressler | image = File:AdamDressler.png | office = Führer of Germany | order = 1st | native_name = Adam Dressler | native_name_lang = de | alt = Portrait of Adam Dressler | country = Das Deutsche Reich | party = Valkistische Deutsche Volkspartei | cabinet = [[Dressler's Cabinet]] | allegiance = {{Unbullet..."
wikitext
text/x-wiki
{{Infobox officeholder
| name = Adam Dressler
| image = File:AdamDressler.png
| office = Führer of Germany
| order = 1st
| native_name = Adam Dressler
| native_name_lang = de
| alt = Portrait of Adam Dressler
| country = Das Deutsche Reich
| party = Valkistische Deutsche Volkspartei
| cabinet = [[Dressler's Cabinet]]
| allegiance = {{Unbulleted list|[[German Empire]]|[[Weimar Republic]]}}
| branch_label = Branch
| branch = {{Tree list}}
* [[Imperial German Army]]
** [[Bavarian Army]]
* ''[[Reichswehr]]''
{{Tree list/end}}
| serviceyears = 1914–1920
| rank = {{lang|de|[[Gefreiter]]}}
| unit = 16th Bavarian Reserve Regiment
| battles_label = Wars
| battles = {{Tree list}}
* [[World War I]]
** [[Western Front (World War I)|Western Front]]
*** [[First Battle of Ypres]]
*** [[Battle of the Somme]] {{WIA}}
*** [[Battle of Arras (1917)|Battle of Arras]]
*** [[Battle of Passchendaele]]
{{Tree list/end}}
| mawards = {{Unbulleted list|[[Iron Cross First Class]]|Iron Cross Second Class|[[Wound Badge]]}}
}}
30af05def96ada878a3cff3cb4edcd88d4bdfcea
Module:Lang/data
828
465
1017
2023-10-01T09:50:22Z
Führerredux
2
Created page with "local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their assoc..."
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage();
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table_t = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------
For internationalization; not used at en.wiki
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki
language list for the local language.
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens
add an appropriate entry to the override table below.
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply
spelling differences:
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym
dv: IANA: Dhivehi MW: Divehi
el: IANA: Modern Greek MW: Greek
ht: IANA: Haitian MW: Haitian Creole
ky: IANA: Kirghiz MW: Kyrgyz
li: IANA: Limburgan MW: Limburgish
or: IANA: Oriya MW: Odia
os: IANA: Ossetian MW: Ossetic
"pa: IANA: Panjabi MW: Punjabi
"ps: IANA: Pushto MW: Pashto
"to: IANA: Tonga MW: Tongan
"ug: IANA: Uighur MW: Uyghur
use the override table to override language names that are incorrect for your project
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))
(replacing <tag> with the language tag for your language)
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.
]]
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all
if true == media_wiki_override_enable then
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list
if lang_name_table_t.lang[tag] then -- if the tag is in the main list
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki
end
end
end
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------
["ab"] = "Abkhaz", -- to match en.wiki article name
["ca-valencia"] = "Valencian",
["cu"] = "Church Slavonic", -- 2nd IANA name;
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names
["de-ch"] = "Swiss Standard German",
["en-au"] = "Australian English",
["en-ca"] = "Canadian English",
["en-emodeng"] = "Early Modern English",
["en-gb"] = "British English",
["en-ie"] = "Irish English",
["en-in"] = "Indian English",
["en-nz"] = "New Zealand English",
["en-us"] = "American English",
["en-za"] = "South African English",
["fy"] = "West Frisian", -- Western Frisian
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title
["nl-be"] = "Flemish", -- match MediaWiki
["oc-provenc"] = "Provençal",
["ps"] = "Pashto", -- Pushto
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki
["tw-asante"] = "Asante Twi",
["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["av"] = "Avar", -- Avaric
["bo"] = "Standard Tibetan", -- Tibetan
["el"] = "Greek", -- Modern Greek
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa
["ff"] = "Fula", -- Fulah
["ht"] = "Haitian Creole", -- Haitian
["hz"] = "Otjiherero", -- Herero
["ii"] = "Yi", -- Sichuan Yi
["ki"] = "Gikuyu", -- Kikuyu
["kl"] = "Greenlandic", -- Kalaallisut
["ky"] = "Kyrgyz", -- Kirghiz
["lg"] = "Luganda", -- Ganda
["li"] = "Limburgish", -- Limburgan
["mi"] = "Māori", -- Maori
["na"] = "Nauruan", -- Nauru
["nb"] = "Bokmål", -- Norwegian Bokmål
["nd"] = "Northern Ndebele", -- North Ndebele
["nn"] = "Nynorsk", -- Norwegian Nynorsk
["nr"] = "Southern Ndebele", -- South Ndebele
["ny"] = "Chichewa", -- Nyanja
["oj"] = "Ojibwe", -- Ojibwa
["or"] = "Odia", -- Oriya
["pa"] = "Punjabi", -- Panjabi
["rn"] = "Kirundi", -- Rundi
["sl"] = "Slovene", -- Slovenian
["ss"] = "Swazi", -- Swati
["st"] = "Sotho", -- Southern Sotho
["to"] = "Tongan", -- Tonga
--<end do-not-edit except to comment out>--
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)
["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name
["art"] = "constructed", -- to match en.wiki article; lowercase for category name
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat
["bxr"] = "Russian Buryat", -- Russia Buriat;
["bxu"] = "Chinese Buryat", -- China Buriat;
["byr"] = "Yipma", -- Baruya, Yipma
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)
["frr"] = "North Frisian", -- Northern Frisian
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian
["gsw-fr"] = "Alsatian", -- match MediaWiki
["haa"] = "Hän", -- Han; to match en.wiki article title
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title
["jam"] = "Jamaican Patois", -- Jamaican Creole English
["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo
["mhr"] = "Meadow Mari", -- Eastern Mari
["mid"] = "Modern Mandaic", -- Mandaic
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)
["mla"] = "Tamambo", -- Malo
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text
["nrf-gg"] = "Guernésiais", -- match MediaWiki
["nrf-je"] = "Jèrriais", -- match MediaWiki
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)
["orv"] = "Old East Slavic", -- Old Russian
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title
["stq"] = "Saterland Frisian", -- Saterfriesisch
["und"] = "undetermined", -- capitalization to match existing category
["wrg"] = "Warrongo", -- Warungu
["xal-ru"] = "Kalmyk", -- to match en.wiki article title
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title
["zxx"] = "no linguistic content", -- capitalization
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["ace"] = "Acehnese", -- Achinese
["aec"] = "Sa'idi Arabic", -- Saidi Arabic
["akl"] = "Aklan", -- Aklanon
["alt"] = "Altay", -- Southern Altai
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache
["bal"] = "Balochi", -- Baluchi
-- ["bcl"] = "Central Bicolano", -- Central Bikol
["bin"] = "Edo", -- Bini
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya
["chg"] = "Chagatay", -- Chagatai
["ckb"] = "Sorani Kurdish", -- Central Kurdish
["cnu"] = "Shenwa", -- Chenoua
["coc"] = "Cocopah", -- Cocopa
["diq"] = "Zazaki", -- Dimli
["fit"] = "Meänkieli", -- Tornedalen Finnish
["fkv"] = "Kven", -- Kven Finnish
["frk"] = "Old Frankish", -- Frankish
["gez"] = "Ge'ez", -- Geez
["gju"] = "Gujari", -- Gujari
["gsw"] = "Alemannic German", -- Swiss German
["gul"] = "Gullah", -- Sea Island Creole English
["hak"] = "Hakka", -- Hakka Chinese
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew
["hnd"] = "Hindko", -- Southern Hindko
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun
["kaa"] = "Karakalpak", -- Kara-Kalpak
["khb"] = "Tai Lü", -- Lü
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish
["kpo"] = "Kposo", -- Ikposo
["krj"] = "Kinaray-a", -- Kinaray-A
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan
["lez"] = "Lezgian", -- Lezghian
["liv"] = "Livonian", -- Liv
["lng"] = "Lombardic", -- Langobardic
["mia"] = "Miami-Illinois", -- Miami
["miq"] = "Miskito", -- Mískito
["mix"] = "Mixtec", -- Mixtepec Mixtec
["mni"] = "Meitei", -- Manipuri
["mrj"] = "Hill Mari", -- Western Mari
["mww"] = "White Hmong", -- Hmong Daw
["nds-nl"] = "Dutch Low Saxon", -- Low German
-- ["new"] = "Nepal Bhasa", -- Newari
["nso"] = "Northern Sotho", -- Pedi
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari
["ood"] = "O'odham", -- Tohono O'odham
["otk"] = "Old Turkic", -- Old Turkish
["pal"] = "Middle Persian", -- Pahlavi
["pam"] = "Kapampangan", -- Pampanga
["phr"] = "Potwari", -- Pahari-Potwari
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit
-- ["pnb"] = "Punjabi", -- Western Panjabi
["psu"] = "Shauraseni", -- Sauraseni Prākrit
["rap"] = "Rapa Nui", -- Rapanui
["rar"] = "Cook Islands Māori", -- Rarotongan
["rmu"] = "Scandoromani", -- Tavringer Romani
["rom"] = "Romani", -- Romany
["rup"] = "Aromanian", -- Macedo-Romanian
["ryu"] = "Okinawan", -- Central Okinawan
["sdc"] = "Sassarese", -- Sassarese Sardinian
["sdn"] = "Gallurese", -- Gallurese Sardinian
["shp"] = "Shipibo", -- Shipibo-Conibo
["src"] = "Logudorese", -- Logudorese Sardinian
["sro"] = "Campidanese", -- Campidanese Sardinian
["tkl"] = "Tokelauan", -- Tokelau
["tvl"] = "Tuvaluan", -- Tuvalu
["tyv"] = "Tuvan", -- Tuvinian
["vls"] = "West Flemish", -- Vlaams
["wep"] = "Westphalian", -- Westphalien
["xal"] = "Oirat", -- Kalmyk
["xcl"] = "Old Armenian", -- Classical Armenian
["yua"] = "Yucatec Maya", -- Yucateco
--<end do-not-edit except to comment out>--
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------
["akk-x-latbabyl"] = "Late Babylonian",
["akk-x-midassyr"] = "Middle Assyrian Akkadian",
["akk-x-midbabyl"] = "Middle Babylonian Akkadian",
["akk-x-neoassyr"] = "Neo-Assyrian Akkadian",
["akk-x-neobabyl"] = "Neo-Babylonian Akkadian",
["akk-x-old"] = "Old Akkadian",
["akk-x-oldassyr"] = "Old Assyrian Akkadian",
["akk-x-oldbabyl"] = "Old Babylonian Akkadian",
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages
["ca-x-old"] = "Old Catalan",
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages
["egy-x-demotic"] = "Demotic Egyptian",
["egy-x-late"] = "Late Egyptian",
["egy-x-middle"] = "Middle Egyptian",
["egy-x-old"] = "Old Egyptian",
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages
["gmw-x-ecg"] = "East Central German",
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
["grc-x-attic"] = "Attic Greek",
["grc-x-biblical"] = "Biblical Greek",
["grc-x-byzant"] = "Byzantine Greek",
["grc-x-classic"] = "Classical Greek",
["grc-x-doric"] = "Doric Greek",
["grc-x-hellen"] = "Hellenistic Greek",
["grc-x-ionic"] = "Ionic Greek",
["grc-x-koine"] = "Koinē Greek",
["grc-x-medieval"] = "Medieval Greek",
["grc-x-patris"] = "Patristic Greek",
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages
["ine-x-proto"] = "Proto-Indo-European",
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there
["la-x-medieval"] = "Medieval Latin",
["la-x-new"] = "New Latin",
["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages
["prg-x-old"] = "Old Prussian",
["sem-x-ammonite"] = "Ammonite",
["sem-x-aramaic"] = "Aramaic",
["sem-x-canaan"] = "Canaanite languages",
["sem-x-dumaitic"] = "Dumaitic",
["sem-x-egurage"] = "Eastern Gurage",
["sem-x-hatran"] = "Hatran Aramaic",
["sem-x-oldsoara"] = "Old South Arabian",
["sem-x-palmyren"] = "Palmyrene Aramaic",
["sem-x-proto"] = "Proto-Semitic",
["sem-x-taymanit"] = "Taymanitic",
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai
["yuf-x-wal"] = "Walapai",
["yuf-x-yav"] = "Yavapai",
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon)
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page
["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon)
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo)
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['hno'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['pnb'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['skr'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
this_wiki_lang_tag = this_wiki_lang_tag,
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction
article_name = article_name,
lang_name_table = lang_name_table_t,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};
44981b3b66900e816590946e3e049c421ebecc80
Module:Lang/data/doc
828
466
1018
2023-10-01T09:50:42Z
Führerredux
2
Created page with "{{High-use}} {{Lua|Module:Language/data/iana languages|Module:Language/data/iana scripts|Module:Language/data/iana regions|Module:Language/data/iana variants|Module:Language/data/iana suppressed scripts}} This module holds various support tables used by [[Module:Lang]] * <code>lang_name_table</code> – this table provides language name data used in the creation of categories and, for the {{tld|lang-??}} templates, the language name annotation * <code>override</code>..."
wikitext
text/x-wiki
{{High-use}}
{{Lua|Module:Language/data/iana languages|Module:Language/data/iana scripts|Module:Language/data/iana regions|Module:Language/data/iana variants|Module:Language/data/iana suppressed scripts}}
This module holds various support tables used by [[Module:Lang]]
* <code>lang_name_table</code> – this table provides language name data used in the creation of categories and, for the {{tld|lang-??}} templates, the language name annotation
* <code>override</code> – this table overrides data in <code>lang_name_table</code>; commonly used when an en.wiki article title differs from the name for the standard's language
* <code>rtl_scripts</code> – a list of ISO 15924 scripts that are written right-to-left; data taken from the table at [[ISO 15924#List of codes]]
* <code>translit_title_table</code> – a table of tables that is used in the creation of the <code>title=</code> attribute of the {{tag|i}} tags that wrap transliterated text; data adapted from {{tlx|transl}}
* <code>article_name</code> – this table overrides <code>lang_name_table</code> and <code>override</code> for (typically) disambiguated en.wiki article names
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
9cb8bc52153d53723d14da46dfed95b6176460ff
Module:Lua banner/doc
828
467
1019
2023-10-01T09:51:39Z
Führerredux
2
Created page with "{{high use}} {{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}} This module implements the {{tl|lua}} template. == Usage from wikitext == This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation. == Usage from Lua modules == To use this module from other Lua modules, first load the module. <syntaxhighlight lang="lua"> local mLuaBanner = require('Module:Lu..."
wikitext
text/x-wiki
{{high use}}
{{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}}
This module implements the {{tl|lua}} template.
== Usage from wikitext ==
This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation.
== Usage from Lua modules ==
To use this module from other Lua modules, first load the module.
<syntaxhighlight lang="lua">
local mLuaBanner = require('Module:Lua banner')
</syntaxhighlight>
You can then generate a side box using the _main function.
<syntaxhighlight lang="lua">
mLuaBanner._main(args)
</syntaxhighlight>
The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation.
== Tracking category ==
* {{clc|Lua templates with errors}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Modules that add a tracking category]]
}}</includeonly>
864df985eac89c7dc7d6168d9235ff11b9f13b47
Module:Language/data/iana languages
828
468
1020
2023-10-01T09:54:04Z
Führerredux
2
Created page with "-- File-Date: 2023-08-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["..."
Scribunto
text/plain
-- File-Date: 2023-08-02
local active = {
["aa"] = {"Afar"},
["ab"] = {"Abkhazian"},
["ae"] = {"Avestan"},
["af"] = {"Afrikaans"},
["ak"] = {"Akan"},
["am"] = {"Amharic"},
["an"] = {"Aragonese"},
["ar"] = {"Arabic"},
["as"] = {"Assamese"},
["av"] = {"Avaric"},
["ay"] = {"Aymara"},
["az"] = {"Azerbaijani"},
["ba"] = {"Bashkir"},
["be"] = {"Belarusian"},
["bg"] = {"Bulgarian"},
["bh"] = {"Bihari languages"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengali", "Bangla"},
["bo"] = {"Tibetan"},
["br"] = {"Breton"},
["bs"] = {"Bosnian"},
["ca"] = {"Catalan", "Valencian"},
["ce"] = {"Chechen"},
["ch"] = {"Chamorro"},
["co"] = {"Corsican"},
["cr"] = {"Cree"},
["cs"] = {"Czech"},
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},
["cv"] = {"Chuvash"},
["cy"] = {"Welsh"},
["da"] = {"Danish"},
["de"] = {"German"},
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Modern Greek (1453-)"},
["en"] = {"English"},
["eo"] = {"Esperanto"},
["es"] = {"Spanish", "Castilian"},
["et"] = {"Estonian"},
["eu"] = {"Basque"},
["fa"] = {"Persian"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faroese"},
["fr"] = {"French"},
["fy"] = {"Western Frisian"},
["ga"] = {"Irish"},
["gd"] = {"Scottish Gaelic", "Gaelic"},
["gl"] = {"Galician"},
["gn"] = {"Guarani"},
["gu"] = {"Gujarati"},
["gv"] = {"Manx"},
["ha"] = {"Hausa"},
["he"] = {"Hebrew"},
["hi"] = {"Hindi"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croatian"},
["ht"] = {"Haitian", "Haitian Creole"},
["hu"] = {"Hungarian"},
["hy"] = {"Armenian"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indonesian"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Icelandic"},
["it"] = {"Italian"},
["iu"] = {"Inuktitut"},
["ja"] = {"Japanese"},
["jv"] = {"Javanese"},
["ka"] = {"Georgian"},
["kg"] = {"Kongo"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kazakh"},
["kl"] = {"Kalaallisut", "Greenlandic"},
["km"] = {"Khmer", "Central Khmer"},
["kn"] = {"Kannada"},
["ko"] = {"Korean"},
["kr"] = {"Kanuri"},
["ks"] = {"Kashmiri"},
["ku"] = {"Kurdish"},
["kv"] = {"Komi"},
["kw"] = {"Cornish"},
["ky"] = {"Kirghiz", "Kyrgyz"},
["la"] = {"Latin"},
["lb"] = {"Luxembourgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgan", "Limburger", "Limburgish"},
["ln"] = {"Lingala"},
["lo"] = {"Lao"},
["lt"] = {"Lithuanian"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvian"},
["mg"] = {"Malagasy"},
["mh"] = {"Marshallese"},
["mi"] = {"Maori"},
["mk"] = {"Macedonian"},
["ml"] = {"Malayalam"},
["mn"] = {"Mongolian"},
["mr"] = {"Marathi"},
["ms"] = {"Malay (macrolanguage)"},
["mt"] = {"Maltese"},
["my"] = {"Burmese"},
["na"] = {"Nauru"},
["nb"] = {"Norwegian Bokmål"},
["nd"] = {"North Ndebele"},
["ne"] = {"Nepali (macrolanguage)"},
["ng"] = {"Ndonga"},
["nl"] = {"Dutch", "Flemish"},
["nn"] = {"Norwegian Nynorsk"},
["no"] = {"Norwegian"},
["nr"] = {"South Ndebele"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Occitan (post 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromo"},
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},
["os"] = {"Ossetian", "Ossetic"},
["pa"] = {"Panjabi", "Punjabi"},
["pi"] = {"Pali"},
["pl"] = {"Polish"},
["ps"] = {"Pushto", "Pashto"},
["pt"] = {"Portuguese"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh"},
["rn"] = {"Rundi"},
["ro"] = {"Romanian", "Moldavian", "Moldovan"},
["ru"] = {"Russian"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardinian"},
["sd"] = {"Sindhi"},
["se"] = {"Northern Sami"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Croatian"},
["si"] = {"Sinhala", "Sinhalese"},
["sk"] = {"Slovak"},
["sl"] = {"Slovenian"},
["sm"] = {"Samoan"},
["sn"] = {"Shona"},
["so"] = {"Somali"},
["sq"] = {"Albanian"},
["sr"] = {"Serbian"},
["ss"] = {"Swati"},
["st"] = {"Southern Sotho"},
["su"] = {"Sundanese"},
["sv"] = {"Swedish"},
["sw"] = {"Swahili (macrolanguage)"},
["ta"] = {"Tamil"},
["te"] = {"Telugu"},
["tg"] = {"Tajik"},
["th"] = {"Thai"},
["ti"] = {"Tigrinya"},
["tk"] = {"Turkmen"},
["tl"] = {"Tagalog"},
["tn"] = {"Tswana"},
["to"] = {"Tonga (Tonga Islands)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsonga"},
["tt"] = {"Tatar"},
["tw"] = {"Twi"},
["ty"] = {"Tahitian"},
["ug"] = {"Uighur", "Uyghur"},
["uk"] = {"Ukrainian"},
["ur"] = {"Urdu"},
["uz"] = {"Uzbek"},
["ve"] = {"Venda"},
["vi"] = {"Vietnamese"},
["vo"] = {"Volapük"},
["wa"] = {"Walloon"},
["wo"] = {"Wolof"},
["xh"] = {"Xhosa"},
["yi"] = {"Yiddish"},
["yo"] = {"Yoruba"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Chinese"},
["zu"] = {"Zulu"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Arbëreshë Albanian"},
["aaf"] = {"Aranadan"},
["aag"] = {"Ambrak"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Algerian Saharan Arabic"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Eastern Abnaki"},
["aas"] = {"Aasáx"},
["aat"] = {"Arvanitika Albanian"},
["aau"] = {"Abau"},
["aav"] = {"Austro-Asiatic languages"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasi"},
["aba"] = {"Abé"},
["abb"] = {"Bankon"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Western Abnaki"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Tajiki Arabic"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinese"},
["acf"] = {"Saint Lucian Creole French"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Mesopotamian Arabic"},
["acn"] = {"Achang"},
["acp"] = {"Eastern Acipa"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Hijazi Arabic"},
["acx"] = {"Omani Arabic"},
["acy"] = {"Cypriot Arabic"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Dhofari Arabic"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Adamorobe Sign Language"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Amdo Tibetan"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"Tunisian Arabic"},
["aec"] = {"Saidi Arabic"},
["aed"] = {"Argentine Sign Language"},
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Armenian Sign Language"},
["aeq"] = {"Aer"},
["aer"] = {"Eastern Arrernte"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"Afro-Asiatic languages"},
["afb"] = {"Gulf Arabic"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Afghan Sign Language"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Afro-Seminole Creole"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Central Cagayan Agta"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Southern Alta"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (China)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Antigua and Barbuda Creole English"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Assyrian Neo-Aramaic"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (Japan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (South Sudan)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleut"},
["alf"] = {"Alege"},
["alg"] = {"Algonquian languages"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Gheg Albanian"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutor"},
["als"] = {"Tosk Albanian"},
["alt"] = {"Southern Altai"},
["alu"] = {"'Are'are"},
["alv"] = {"Atlantic-Congo languages"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papua New Guinea)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Southern Amami-Oshima"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Western Neo-Aramaic"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Old English (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (India)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (India)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"Apache languages"},
["apb"] = {"Sa'a"},
["apc"] = {"Levantine Arabic"},
["apd"] = {"Sudanese Arabic"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Jicarilla Apache"},
["apk"] = {"Kiowa Apache"},
["apl"] = {"Lipan Apache"},
["apm"] = {"Mescalero-Chiricahua Apache"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatani"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Western Apache"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"Alacalufan languages"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"Algic languages"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Northern Alta"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Standard Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["ard"] = {"Arabana"},
["are"] = {"Western Arrarnta"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungun", "Mapuche"},
["aro"] = {"Araona"},
["arp"] = {"Arapaho"},
["arq"] = {"Algerian Arabic"},
["arr"] = {"Karo (Brazil)"},
["ars"] = {"Najdi Arabic"},
["art"] = {"Artificial languages"},
["aru"] = {"Aruá (Amazonas State)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Rodonia State)"},
["ary"] = {"Moroccan Arabic"},
["arz"] = {"Egyptian Arabic"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"American Sign Language"},
["asf"] = {"Auslan", "Australian Sign Language"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Algerian Sign Language"},
["asq"] = {"Austrian Sign Language"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Australian Aborigines Sign Language"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"Athapascan languages"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Northern Altai"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"Arauan languages"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (Nigeria)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"Australian languages"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Uzbeki Arabic"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Eastern Egyptian Bedawi Arabic"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papua New Guinea)"},
["awc"] = {"Cicipu"},
["awd"] = {"Arawakan languages"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"South Awyu"},
["awt"] = {"Araweté"},
["awu"] = {"Central Awyu"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Central African Republic)"},
["axl"] = {"Lower Southern Aranda"},
["axm"] = {"Middle Armenian"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Southern Aymara"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Hadrami Arabic"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Libyan Arabic"},
["ayn"] = {"Sanaani Arabic"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"North Mesopotamian Arabic"},
["ayq"] = {"Ayi (Papua New Guinea)"},
["ayr"] = {"Central Aymara"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"South Azerbaijani"},
["azc"] = {"Uto-Aztecan languages"},
["azd"] = {"Eastern Durango Nahuatl"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"North Azerbaijani"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Western Durango Nahuatl"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Highland Puebla Nahuatl"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"Banda languages"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Bahamas Creole English"},
["bai"] = {"Bamileke languages"},
["baj"] = {"Barakai"},
["bal"] = {"Baluchi"},
["ban"] = {"Balinese"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Bavarian"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"Baltic languages"},
["bau"] = {"Bada (Nigeria)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},
["bbp"] = {"West Central Banda"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (Nigeria)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Central Bai"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Southern Balochi"},
["bcd"] = {"North Babar"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Central Bikol"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (Nigeria)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Democratic Republic of Congo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (South Sudan)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (South Sudan)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Indonesian Bajau"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"West Coast Bajau"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (Zambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"Berber languages"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papua New Guinea)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Northern Bai"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"British Sign Language"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Ban Khor Sign Language"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Southern Bai"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (Laos)"},
["bgn"] = {"Western Balochi"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Eastern Balochi"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Balkan Gagauz Turkish"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Bohtan Neo-Aramaic"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (Indonesia)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Southern Birifor"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papua New Guinea)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Mid-Southern Banda"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Democratic Republic of Congo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Northern Sorsoganon"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (South Sudan)"},
["bln"] = {"Southern Catanduanes Bikol"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Northern Betsimisaraka Malagasy"},
["bmn"] = {"Bina (Papua New Guinea)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (Indonesia)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Eastern Tawbuid"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"Bantu languages"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Bamako Sign Language"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Central African Republic)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Banda Malay"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papua New Guinea)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Bulgarian Sign Language"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (Nigeria)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Bengkala Sign Language"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Berbice Creole Dutch"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Eastern Bru"},
["brv"] = {"Western Bru"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (India)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardi"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Bacanese Malay"},
["btk"] = {"Batak languages"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buriat"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginese"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Berau Malay"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Bolivian Sign Language"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (Indonesia)"},
["bvu"] = {"Bukit Malay"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Southern Bobo Madaré"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (Ghana)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Mongolia Buriat"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Russia Buriat"},
["bxs"] = {"Busam"},
["bxu"] = {"China Buriat"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (Nigeria)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Southern Betsimisaraka Malagasy"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Belize Kriol English"},
["bzk"] = {"Nicaragua Creole English"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (Indonesia)"},
["bzr"] = {"Biri"},
["bzs"] = {"Brazilian Sign Language"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (Nigeria)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifuna"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Southern Carrier"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"Central American Indian languages"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinian"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Galibi Carib"},
["cas"] = {"Tsimané"},
["cau"] = {"Caucasian languages"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"Chibchan languages"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalian"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Cafundo Creole"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Malaccan Creole Malay"},
["ccn"] = {"North Caucasian languages"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"South Caucasian languages"},
["cda"] = {"Choni"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Min Dong Chinese"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Chadian Sign Language"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Lower Chehalis"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Eastern Khumi Chin"},
["cel"] = {"Celtic languages"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Highland Oaxaca Chontal"},
["chf"] = {"Tabasco Chontal"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Mari (Russia)"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chq"] = {"Quiotepec Chinantec"},
["chr"] = {"Cherokee"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Ozumacín Chinantec"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasaw"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrian"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Western Cham"},
["cje"] = {"Chru"},
["cjh"] = {"Upper Chehalis"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Eastern Cham"},
["cjn"] = {"Chenapian"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Jinyu Chinese"},
["ckb"] = {"Central Kurdish"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavian"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Chukot"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Chaldean Neo-Aramaic"},
["cle"] = {"Lealao Chinantec"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Lowland Oaxaca Chontal"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Eastern Highland Chatino"},
["cma"] = {"Maa"},
["cmc"] = {"Chamic languages"},
["cme"] = {"Cerma"},
["cmg"] = {"Classical Mongolian"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Mandarin Chinese"},
["cmo"] = {"Central Mnong"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Northern Qiang"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrin"},
["cns"] = {"Central Asmat"},
["cnt"] = {"Tepetotutla Chinantec"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Middle Cornish"},
["coa"] = {"Cocos Islands Malay"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comanche"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptic"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"English-based creoles and pidgins"},
["cpf"] = {"French-based creoles and pidgins"},
["cpg"] = {"Cappadocian Greek"},
["cpi"] = {"Chinese Pidgin English"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"Portuguese-based creoles and pidgins"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Pu-Xian Chinese"},
["cpy"] = {"South Ucayali Ashéninka"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Island Carib"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["cri"] = {"Sãotomense"},
["crj"] = {"Southern East Cree"},
["crk"] = {"Plains Cree"},
["crl"] = {"Northern East Cree"},
["crm"] = {"Moose Cree"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crow"},
["crp"] = {"Creoles and pidgins"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Carolina Algonquian"},
["crs"] = {"Seselwa Creole French"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chiltepec Chinantec"},
["csb"] = {"Kashubian"},
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Chiangmai Sign Language"},
["cse"] = {"Czech Sign Language"},
["csf"] = {"Cuba Sign Language"},
["csg"] = {"Chilean Sign Language"},
["csh"] = {"Asho Chin"},
["csi"] = {"Coast Miwok"},
["csj"] = {"Songlai Chin"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Chinese Sign Language"},
["csm"] = {"Central Sierra Miwok"},
["csn"] = {"Colombian Sign Language"},
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},
["csq"] = {"Croatia Sign Language"},
["csr"] = {"Costa Rican Sign Language"},
["css"] = {"Southern Ohlone"},
["cst"] = {"Northern Ohlone"},
["csu"] = {"Central Sudanic languages"},
["csv"] = {"Sumtu Chin"},
["csw"] = {"Swampy Cree"},
["csx"] = {"Cambodian Sign Language"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Tedim Chin"},
["cte"] = {"Tepinapa Chinantec"},
["ctg"] = {"Chittagonian"},
["cth"] = {"Thaiphum Chin"},
["ctl"] = {"Tlacoatzintepec Chinantec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Western Highland Chatino"},
["cts"] = {"Northern Catanduanes Bikol"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Zacatepec Chatino"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"Cushitic languages"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Woods Cree"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Huizhou Chinese"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Min Zhong Chinese"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"Land Dayak languages"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slave (Athapascan)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Central African Republic)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Southern Dagaare"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Northern Dagara"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (individual language)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"South Central Dinka"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Southwestern Dinka"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Northeastern Dinka"},
["diq"] = {"Dimli (individual language)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Northwestern Dinka"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Southeastern Dinka"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmatian"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Upper Kinabatangan"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"Mande languages"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"East Damar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Upper Grand Valley Dani"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Lower Grand Valley Dani"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Northern Lendu"},
["dnr"] = {"Danaru"},
["dnt"] = {"Mid Grand Valley Dani"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Western Dani"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Northern Dong"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (macrolanguage)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papua New Guinea)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Dominican Sign Language"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"Dravidian languages"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"West Damar"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Lower Sorbian"},
["dse"] = {"Dutch Sign Language"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Danish Sign Language"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Mardin Sign Language"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Central Dusun"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Middle Dutch (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyula"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Eastern Bontok"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Ecuadorian Sign Language"},
["ecy"] = {"Eteocypriot"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilian"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"Egyptian languages"},
["egy"] = {"Egyptian (Ancient)"},
["ehs"] = {"Miyakubo Sign Language"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Standard Estonian"},
["ekl"] = {"Kol (Bangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Eastern Kayah"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamite"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Eastern Meohang"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Eastern Maninkakan"},
["emm"] = {"Mamulique"},
["emn"] = {"Eman"},
["emp"] = {"Northern Emberá"},
["emq"] = {"Eastern Minyag"},
["ems"] = {"Pacific Gulf Yupik"},
["emu"] = {"Eastern Muria"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Epigraphic Mayan"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Forest Enets"},
["enh"] = {"Tundra Enets"},
["enl"] = {"Enlhet"},
["enm"] = {"Middle English (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Edo State)"},
["enw"] = {"Enwan (Akwa Ibom State)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (Côte d'Ivoire)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"South Efate"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"North Alaskan Inupiatun"},
["esk"] = {"Northwest Alaska Inupiatun"},
["esl"] = {"Egypt Sign Language"},
["esm"] = {"Esuma"},
["esn"] = {"Salvadoran Sign Language"},
["eso"] = {"Estonian Sign Language"},
["esq"] = {"Esselen"},
["ess"] = {"Central Siberian Yupik"},
["esu"] = {"Central Yupik"},
["esx"] = {"Eskimo-Aleut languages"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Ethiopian Sign Language"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscan"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Basque (family)"},
["eve"] = {"Even"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenki"},
["ewo"] = {"Ewondo"},
["ext"] = {"Extremaduran"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"South Fali"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Equatorial Guinea)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Southwestern Fars"},
["faz"] = {"Northwestern Fars"},
["fbl"] = {"West Albay Bikol"},
["fcs"] = {"Quebec Sign Language"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Filipino", "Pilipino"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Tornedalen Finnish", "Meänkieli"},
["fiu"] = {"Finno-Ugrian languages"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Kven Finnish"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"North Fali"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Far Western Muria"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"Formosan languages"},
["fpe"] = {"Fernando Po Creole English"},
["fqs"] = {"Fas"},
["frc"] = {"Cajun French"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Middle French (ca. 1400-1600)"},
["fro"] = {"Old French (842-ca. 1400)"},
["frp"] = {"Arpitan", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["frt"] = {"Fortsenal"},
["fse"] = {"Finnish Sign Language"},
["fsl"] = {"French Sign Language"},
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaar"},
["fud"] = {"East Futuna"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["fuh"] = {"Western Niger Fulfulde"},
["fui"] = {"Bagirmi Fulfulde"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Central-Eastern Niger Fulfulde"},
["fur"] = {"Friulian"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Nigerian Fulfulde"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Mixed Great Andamanese"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauz"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Gan Chinese"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"West Central Oromo"},
["gba"] = {"Gbaya (Central African Republic)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Northern Grebo"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Eastern Xwla Gbe"},
["gby"] = {"Gbari"},
["gbz"] = {"Zoroastrian Dari"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Guadeloupean Creole French"},
["gcl"] = {"Grenadian Creole English"},
["gcn"] = {"Gaina"},
["gcr"] = {"Guianese Creole French"},
["gct"] = {"Colonia Tovar German"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Ghandruk Sign Language"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Hutterite German", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"Germanic languages"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Hiberno-Scottish Gaelic"},
["ghe"] = {"Southern Ghale"},
["ghh"] = {"Northern Ghale"},
["ghk"] = {"Geko Karen"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertese"},
["gim"] = {"Gimi (Eastern Highlands)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (West New Britain)"},
["giq"] = {"Green Gelao"},
["gir"] = {"Red Gelao"},
["gis"] = {"North Giziga"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"White Gelao"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"South Giziga"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Gurindji Kriol"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Madang Province)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Guinea Kpelle"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Chad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"East Germanic languages"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Middle High German (ca. 1050-1500)"},
["gml"] = {"Middle Low German"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"North Germanic languages"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"West Germanic languages"},
["gmx"] = {"Magoma"},
["gmy"] = {"Mycenaean Greek"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guanche"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Northern Gondi"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Western Bolivian Guaraní"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Old High German (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothic"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Ghanaian Pidgin English"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (Brazil)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Rajput Garasia"},
["grb"] = {"Grebo"},
["grc"] = {"Ancient Greek (to 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Southern Grebo"},
["grk"] = {"Greek languages"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Central Grebo"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Barclayville Grebo"},
["grz"] = {"Guramalum"},
["gse"] = {"Ghanaian Sign Language"},
["gsg"] = {"German Sign Language"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Guatemalan Sign Language"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Southwest Gbaya"},
["gsp"] = {"Wasembo"},
["gss"] = {"Greek Sign Language"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Paraguayan Guaraní"},
["guh"] = {"Guahibo"},
["gui"] = {"Eastern Bolivian Guaraní"},
["guk"] = {"Gumuz"},
["gul"] = {"Sea Island Creole English"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Guinean Sign Language"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (Paraguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Southern"},
["gya"] = {"Northwest Gbaya"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Guyanese Creole English"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Hanoi Sign Language"},
["hac"] = {"Gurani"},
["had"] = {"Hatam"},
["hae"] = {"Eastern Oromo"},
["haf"] = {"Haiphong Sign Language"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Hakka Chinese"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiian"},
["hax"] = {"Southern Haida"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Ancient Hebrew"},
["hbu"] = {"Habu"},
["hca"] = {"Andaman Creole Hindi"},
["hch"] = {"Huichol"},
["hdn"] = {"Northern Haida"},
["hds"] = {"Honduras Sign Language"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Northern Qiandong Miao"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Fiji Hindi"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hinduri"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittite"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Hieroglyphic Luwian"},
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},
["hmf"] = {"Hmong Don"},
["hmg"] = {"Southwestern Guiyang Hmong"},
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},
["hmn"] = {"Hmong", "Mong"},
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},
["hmq"] = {"Eastern Qiandong Miao"},
["hmr"] = {"Hmar"},
["hms"] = {"Southern Qiandong Miao"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},
["hmx"] = {"Hmong-Mien languages"},
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},
["hmz"] = {"Hmong Shua", "Sinicized Miao"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Southern Hindko"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Northern Hindko"},
["hns"] = {"Caribbean Hindustani"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Mari (Madang Province)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothi", "Haroti"},
["hok"] = {"Hokan languages"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Ho Chi Minh City Sign Language"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Horned Miao"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrik"},
["hrz"] = {"Harzani"},
["hsb"] = {"Upper Sorbian"},
["hsh"] = {"Hungarian Sign Language"},
["hsl"] = {"Hausa Sign Language"},
["hsn"] = {"Xiang Chinese"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Middle Hittite"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastec"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzib"},
["hvc"] = {"Haitian Vodoun Culture Language"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Western Armenian"},
["hyx"] = {"Armenian (family)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Icelandic Sign Language"},
["icr"] = {"Islander Creole English"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Indo-Portuguese"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Based Pidgin"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"Indo-Iranian languages"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"Ijo languages"},
["ijs"] = {"Southeast Ijo"},
["ike"] = {"Eastern Canadian Inuktitut"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Inuit Sign Language"},
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (Malaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (Philippines)"},
["ils"] = {"International Sign"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsian"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingush"},
["inj"] = {"Jungle Inga"},
["inl"] = {"Indonesian Sign Language"},
["inm"] = {"Minaean"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Indian Sign Language"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"Iranian languages"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"Iroquoian languages"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Italian Sign Language"},
["isg"] = {"Irish Sign Language"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Israeli Sign Language"},
["ist"] = {"Istriot"},
["isu"] = {"Isu (Menchum Division)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"Italic languages"},
["itd"] = {"Southern Tidung"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Judeo-Italian"},
["itl"] = {"Itelmen"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatec"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (Congo)"},
["izh"] = {"Ingrian"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Jamaican Creole English"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"New Caledonian Javanese"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Jambi Malay"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Judeo-Berber"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Jamaican Country Sign Language"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Judeo-Tat"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Judeo-Georgian"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Jhankot Sign Language"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Kaduna State)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Youle Jinuo"},
["jiv"] = {"Shuar"},
["jiy"] = {"Buyuan Jinuo"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Mobwa Karen"},
["jko"] = {"Kubo"},
["jkp"] = {"Paku Karen"},
["jkr"] = {"Koro (India)"},
["jks"] = {"Amami Koniya Sign Language"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Jamaican Sign Language"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (Nigeria)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (Nigeria)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Western Juxtlahuaca Mixtec"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Jordanian Sign Language"},
["jow"] = {"Jowulu"},
["jpa"] = {"Jewish Palestinian Aramaic"},
["jpr"] = {"Judeo-Persian"},
["jpx"] = {"Japanese (family)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Judeo-Arabic"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Japanese Sign Language"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Jumla Sign Language"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Caribbean Javanese"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Judeo-Yemeni Arabic"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpak", "Karakalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Central African Republic)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (Kenya)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"Karen languages"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardian"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Central African Republic)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (Indonesia)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantan"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},
["kcm"] = {"Gula (Central African Republic)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"Kordofanian languages"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaim"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Eastern Keres"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Democratic Republic of Congo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"West Kewa"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Northwestern Kolami"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (India)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kannada Kurumba"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnauri"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsari"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (Côte d'Ivoire)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhi", "Kutchi"},
["kfs"] = {"Bilaspuri"},
["kft"] = {"Kanjari"},
["kfu"] = {"Katkari"},
["kfv"] = {"Kurmukar"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Selangor Sign Language"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"Khoisan languages"},
["khj"] = {"Kuturmi"},
["khk"] = {"Halh Mongolian"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanese", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Democratic Republic of Congo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Eastern Parbate Kham"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (individual language)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Northeast Kiwai"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Coastal Konjo"},
["kjd"] = {"Southern Kiwai"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Highland Konjo"},
["kjl"] = {"Western Parbate Kham"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Harijan Kinnauri"},
["kjp"] = {"Pwo Eastern Karen"},
["kjq"] = {"Western Keres"},
["kjr"] = {"Kurudu"},
["kjs"] = {"East Kewa"},
["kjt"] = {"Phrae Pwo Karen"},
["kju"] = {"Kashaya"},
["kjv"] = {"Kaikavian Literary Language"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Mabaka Valley Kalinga"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (Nigeria)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Southern Dong"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papua New Guinea)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (Nigeria)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (India)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Northern Kurdish"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Karipúna Creole French"},
["kmw"] = {"Komo (Democratic Republic of Congo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Khorasani Turkish"},
["kna"] = {"Dera (Nigeria)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Central Kanuri"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Western Kanjobal"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (individual language)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (Guinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komi-Permyak"},
["kok"] = {"Konkani (macrolanguage)"},
["kol"] = {"Kol (Papua New Guinea)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraean"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komi-Zyrian"},
["kpw"] = {"Kobon"},
["kpx"] = {"Mountain Koiali"},
["kpy"] = {"Koryak"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Eastern Krahn"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Northern Kissi"},
["kqt"] = {"Klias River Kadazan"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karachay-Balkar"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelian"},
["krn"] = {"Sapo"},
["kro"] = {"Kru languages"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (Sudan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Western Krahn"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Southern Kalinga"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Southern Kisi"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"S'gaw Karen"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"North Muyu"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"South Muyu"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kituba (Democratic Republic of Congo)"},
["ktv"] = {"Eastern Katu"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Bas-Uélé District)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papua New Guinea)"},
["kuf"] = {"Western Katu"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumyk"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Upper Kuskokwim"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (Indonesia)"},
["kve"] = {"Kalabakan"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Korean Sign Language"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Geba Karen"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Lahta Karen", "Lahta"},
["kvu"] = {"Yinbaw Karen"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Yintale Karen", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["kwx"] = {"Khirwar"},
["kwy"] = {"San Salvador Kongo"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (Ethiopia)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Zayein Karen"},
["kxm"] = {"Northern Khmer"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papua New Guinea)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Northern Binukidnon"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Western Kayah"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Western Karaboro"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Tshopo District)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Southern Subanen"},
["lab"] = {"Linear A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladino"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Uganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Chad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lak"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Central Bontok"},
["lbl"] = {"Libon Bikol"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Libyan Sign Language"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Western Lawa"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Luri"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Democratic Republic of Congo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papua New Guinea)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lezghian"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (South Sudan)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (Indonesia)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"West-Central Limba"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligurian"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Liberian English"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (Guinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papua New Guinea)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Chad)"},
["llp"] = {"North Efate"},
["llq"] = {"Lolak"},
["lls"] = {"Lithuanian Sign Language"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"East Limba"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"South Lembata"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"West Lembata"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombard"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardic"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"South Central Banda"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (Côte d'Ivoire)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (Liberia)"},
["lon"] = {"Malawi Lomwe"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Louisiana Creole"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozi"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Northern Luri"},
["lre"] = {"Laurentian"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Southern Yamphu"},
["lrt"] = {"Larantuka Malay"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},
["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Latvian Sign Language"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Tibetan Sign Language"},
["lso"] = {"Laos Sign Language"},
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Trinidad and Tobago Sign Language"},
["lsv"] = {"Sivia Sign Language"},
["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Mauritian Sign Language"},
["ltc"] = {"Late Middle Chinese"},
["ltg"] = {"Latgalian"},
["lth"] = {"Thur"},
["lti"] = {"Leti (Indonesia)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludian"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Southern Luri"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Standard Latvian"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"White Lachi"},
["lwl"] = {"Eastern Lawa"},
["lwm"] = {"Laomian"},
["lwo"] = {"Luwo"},
["lws"] = {"Malawian Sign Language"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Literary Chinese"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"San Jerónimo Tecóatl Mazatec"},
["mab"] = {"Yutanduchi Mixtec"},
["mad"] = {"Madurese"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithili"},
["maj"] = {"Jalapa De Díaz Mazatec"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"Austronesian languages"},
["maq"] = {"Chiquihuitlán Mazatec"},
["mas"] = {"Masai"},
["mat"] = {"San Francisco Matlatzinca"},
["mau"] = {"Huautla Mazatec"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"North Moluccan Malay"},
["maz"] = {"Central Mazahua"},
["mba"] = {"Higaonon"},
["mbb"] = {"Western Bukidnon Manobo"},
["mbc"] = {"Macushi"},
["mbd"] = {"Dibabawon Manobo"},
["mbe"] = {"Molale"},
["mbf"] = {"Baba Malay"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Ilianen Manobo"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Sarangani Manobo"},
["mbt"] = {"Matigsalug Manobo"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (East Sepik Province)"},
["mby"] = {"Memoni"},
["mbz"] = {"Amoltepec Mixtec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Itundujia Mixtec"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Malaccan Creole Portuguese"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Cameroon Mambila"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Chad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"South Watut"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (Nigeria)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papua New Guinea)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Chad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Maltese Sign Language"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papua New Guinea)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Santa Lucía Monteverde Mixtec"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (Ethiopia)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Southwestern Tlaxiaco Mixtec"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Central Melanau"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Kedah Malay"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"North Mofu"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi South"},
["mfn"] = {"Cross River Mbembe"},
["mfo"] = {"Mbe"},
["mfp"] = {"Makassar Malay"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Mexican Sign Language"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Middle Irish (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Eastern Magar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (India)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (Zambia)"},
["mhp"] = {"Balinese Malay"},
["mhq"] = {"Mandan"},
["mhr"] = {"Eastern Mari"},
["mhs"] = {"Buru (Indonesia)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Mor Islands)"},
["mia"] = {"Miami"},
["mib"] = {"Atatláhuca Mixtec"},
["mic"] = {"Mi'kmaq", "Micmac"},
["mid"] = {"Mandaic"},
["mie"] = {"Ocotepec Mixtec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"San Miguel El Grande Mixtec"},
["mih"] = {"Chayuco Mixtec"},
["mii"] = {"Chigmecatitlán Mixtec"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Peñoles Mixtec"},
["mim"] = {"Alacatlatzala Mixtec"},
["min"] = {"Minangkabau"},
["mio"] = {"Pinotepa Nacional Mixtec"},
["mip"] = {"Apasco-Apoala Mixtec"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"Uncoded languages"},
["mit"] = {"Southern Puebla Mixtec"},
["miu"] = {"Cacaloxtepec Mixtec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtepec Mixtec"},
["miy"] = {"Ayutla Mixtec"},
["miz"] = {"Coatzospan Mixtec"},
["mjb"] = {"Makalero"},
["mjc"] = {"San Juan Colorado Mixtec"},
["mjd"] = {"Northwest Maidu"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papua New Guinea)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mahican"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (China)"},
["mkh"] = {"Mon-Khmer languages"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilese"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Kupang Malay"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Silacayoapan Mixtec"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kituba (Congo)"},
["mkx"] = {"Kinamiging Manobo"},
["mky"] = {"East Makian"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Western Maninkakan"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Michoacán Mazahua"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"North Ambrym"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Western Xiangxi Miao"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Manchu"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundani"},
["mng"] = {"Eastern Mnong"},
["mnh"] = {"Mono (Democratic Republic of Congo)"},
["mni"] = {"Manipuri"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinka"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Southern Mnong"},
["mno"] = {"Manobo languages"},
["mnp"] = {"Min Bei Chinese"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (USA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilian"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawk"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mopán Maya"},
["moq"] = {"Mor (Bomberai Peninsula)"},
["mor"] = {"Moro"},
["mos"] = {"Mossi"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Chad)"},
["mpl"] = {"Middle Watut"},
["mpm"] = {"Yosondúa Mixtec"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidian"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (Indonesia)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Kota Bangun Kutai Malay"},
["mqh"] = {"Tlazoyaltepec Mixtec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"South Marquesan"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"West Makian"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Western Magar"},
["mre"] = {"Martha's Vineyard Sign Language"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Western Mari"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockese"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"North Marquesan"},
["mrr"] = {"Maria (India)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Central"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Yucatec Maya Sign Language"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Masikoro Malagasy"},
["msi"] = {"Sabah Malay"},
["msj"] = {"Ma (Democratic Republic of Congo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Mongolian Sign Language"},
["mss"] = {"West Masela"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Cotabato Manobo"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Solomon Islands)"},
["mtf"] = {"Murik (Papua New Guinea)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papua New Guinea)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Tututepec Mixtec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Southern Binukidnon"},
["mtx"] = {"Tidaá Mixtec"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Mednyj Aleut"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Multiple languages"},
["mum"] = {"Maiwala"},
["mun"] = {"Munda languages"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Eastern Xiangxi Miao"},
["mur"] = {"Murle"},
["mus"] = {"Creek"},
["mut"] = {"Western Muria"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (Pakistan)"},
["mvf"] = {"Peripheral Mongolian"},
["mvg"] = {"Yucuañe Mixtec"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (Australia)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Indus Kohistani"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Kita Maninkakan"},
["mwl"] = {"Mirandese"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Central Maewo"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Northwest Oaxaca Mixtec"},
["mxb"] = {"Tezoatlán Mixtec"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabic"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (Indonesia)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (Malaysia)"},
["mxs"] = {"Huitepec Mixtec"},
["mxt"] = {"Jamiltepec Mixtec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Metlatónoc Mixtec"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Southeastern Nochixtlán Mixtec"},
["mxz"] = {"Central Masela"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"Mayan languages"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Classical Mandaic"},
["mza"] = {"Santa María Zacatepec Mixtec"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Madagascar Sign Language"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Monastic Sign Language"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Ixcatlán Mazatec"},
["mzj"] = {"Manya"},
["mzk"] = {"Nigeria Mambila"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderani"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanese"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Mozambican Sign Language"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Southern Nambikuára"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Pidgin"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Min Nan Chinese"},
["nao"] = {"Naaba"},
["nap"] = {"Neapolitan"},
["naq"] = {"Khoekhoe", "Nama (Namibia)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Coatepec Nahuatl"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Namibian Sign Language"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Southern Ngbandi"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Central Nicobarese"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Central Huasteca Nahuatl"},
["nci"] = {"Classical Nahuatl"},
["ncj"] = {"Northern Puebla Nahuatl"},
["nck"] = {"Na-kara"},
["ncl"] = {"Michoacán Nahuatl"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Northern Katang"},
["ncr"] = {"Ncane"},
["ncs"] = {"Nicaraguan Sign Language"},
["nct"] = {"Chothe Naga"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Central Puebla Nahuatl"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndau"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvian"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Low German", "Low Saxon"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Eastern Ngad'a"},
["neb"] = {"Toura (Côte d'Ivoire)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Neo-Hittite"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"North Central Mixe"},
["ner"] = {"Yahadian"},
["nes"] = {"Bhoti Kinnauri"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Northern Ngbandi"},
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},
["ngd"] = {"Ngando (Central African Republic)"},
["nge"] = {"Ngemba"},
["ngf"] = {"Trans-New Guinea languages"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Ngatik Men's Creole"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Guerrero Nahuatl"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Tabasco Nahuatl"},
["nhd"] = {"Chiripá", "Ava Guaraní"},
["nhe"] = {"Eastern Huasteca Nahuatl"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Tetelcingo Nahuatl"},
["nhh"] = {"Nahari"},
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},
["nhm"] = {"Morelos Nahuatl"},
["nhn"] = {"Central Nahuatl"},
["nho"] = {"Takuu"},
["nhp"] = {"Isthmus-Pajapan Nahuatl"},
["nhq"] = {"Huaxcaleca Nahuatl"},
["nhr"] = {"Naro"},
["nht"] = {"Ometepec Nahuatl"},
["nhu"] = {"Noone"},
["nhv"] = {"Temascaltepec Nahuatl"},
["nhw"] = {"Western Huasteca Nahuatl"},
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},
["nhy"] = {"Northern Oaxaca Nahuatl"},
["nhz"] = {"Santa María La Alta Nahuatl"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"Niger-Kordofanian languages"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Southern Nicobarese"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasan"},
["niq"] = {"Nandi"},
["nir"] = {"Nimboran"},
["nis"] = {"Nimi"},
["nit"] = {"Southeastern Kolami"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyak"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Nocte Naga"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Lotha Naga"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Liangmai Naga"},
["njo"] = {"Ao Naga"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Pidgin"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Khoibu Naga"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Inpui Naga"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Khezha Naga"},
["nki"] = {"Thangal Naga"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"North Asmat"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi and Zambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"East Nyala"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Lao Naga"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Maram Naga"},
["nmb"] = {"Big Nambas", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Mzieme Naga"},
["nmf"] = {"Tangkhul Naga (India)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Monsang Naga"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Central African Republic)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Moyon Naga"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Northeast Maidu"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papua New Guinea)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"West Ambae"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Maring Naga"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"North Nuaulu"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Northern Rengma Naga"},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Wancho Naga"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (Australia)"},
["nnw"] = {"Southern Nuni"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Northern Thai"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogai"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Old Norse"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Eastern Nisu"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Ponyo-Gongwang Naga"},
["nph"] = {"Phom Naga"},
["npi"] = {"Nepali (individual language)"},
["npl"] = {"Southeastern Puebla Nahuatl"},
["npn"] = {"Mondropolon"},
["npo"] = {"Pochuri Naga"},
["nps"] = {"Nipsan"},
["npu"] = {"Puimei Naga"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Southern Nago"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Kyan-Karyaw Naga"},
["nqt"] = {"Nteng"},
["nqy"] = {"Akyaung Ari Naga"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Noric"},
["nre"] = {"Southern Rengma Naga"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Chokri Naga"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Norn"},
["nrp"] = {"North Picene"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Northern Kalapuya"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Sangtam Naga"},
["nsb"] = {"Lower Nossob"},
["nsc"] = {"Nshi"},
["nsd"] = {"Southern Nisu"},
["nse"] = {"Nsenga"},
["nsf"] = {"Northwestern Nisu"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Nigerian Sign Language"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Norwegian Sign Language"},
["nsm"] = {"Sumi Naga"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},
["nsp"] = {"Nepalese Sign Language"},
["nsq"] = {"Northern Sierra Miwok"},
["nsr"] = {"Maritime Sign Language"},
["nss"] = {"Nali"},
["nst"] = {"Tase Naga"},
["nsu"] = {"Sierra Negra Nahuatl"},
["nsv"] = {"Southwestern Nisu"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Northern Tidung"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Northern Tepehuan"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Tangkhul Naga (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"Nubian languages"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Northern Nuni"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Tlamacazapa Nahuatl"},
["nvh"] = {"Nasarian"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Southwest Tanna"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Middle Newar"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Democratic Republic of Congo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Koki Naga"},
["nxl"] = {"South Nuaulu"},
["nxm"] = {"Numidian"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (Sudan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"New Zealand Sign Language"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},
["oav"] = {"Old Avar"},
["obi"] = {"Obispeño"},
["obk"] = {"Southern Bontok"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Old Burmese"},
["obt"] = {"Old Breton"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Old Chinese"},
["ocm"] = {"Old Cham"},
["oco"] = {"Old Cornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Old Dutch"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Old Frisian"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Old Georgian"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Old Hittite"},
["ohu"] = {"Old Hungarian"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"Northwestern Ojibwa"},
["ojc"] = {"Central Ojibwa"},
["ojg"] = {"Eastern Ojibwa"},
["ojp"] = {"Old Japanese"},
["ojs"] = {"Severn Ojibwa"},
["ojv"] = {"Ontong Java"},
["ojw"] = {"Western Ojibwa"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Southwestern Edo)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Old Kentish Sign Language"},
["okm"] = {"Middle Korean (10th-16th cent.)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Old Korean (3rd-9th cent.)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Northwestern Edo)"},
["okz"] = {"Old Khmer"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvi"},
["olr"] = {"Olrat"},
["olt"] = {"Old Lithuanian"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"East Ambae"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Old Manipuri"},
["omq"] = {"Oto-Manguean languages"},
["omr"] = {"Old Marathi"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"Omotic languages"},
["omw"] = {"South Tairora"},
["omx"] = {"Old Mon"},
["omy"] = {"Old Malay"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"Northern One"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Old Nubian"},
["onx"] = {"Onin Based Pidgin"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Old Ossetic"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Old Russian"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Old Sundanese"},
["oso"] = {"Ososo"},
["osp"] = {"Old Spanish"},
["ost"] = {"Osatu"},
["osu"] = {"Southern One"},
["osx"] = {"Old Saxon"},
["ota"] = {"Ottoman Turkish (1500-1928)"},
["otb"] = {"Old Tibetan"},
["otd"] = {"Ot Danum"},
["ote"] = {"Mezquital Otomi"},
["oti"] = {"Oti"},
["otk"] = {"Old Turkish"},
["otl"] = {"Tilapa Otomi"},
["otm"] = {"Eastern Highland Otomi"},
["otn"] = {"Tenango Otomi"},
["oto"] = {"Otomian languages"},
["otq"] = {"Querétaro Otomi"},
["otr"] = {"Otoro"},
["ots"] = {"Estado de México Otomi"},
["ott"] = {"Temoaya Otomi"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Texcatepec Otomi"},
["oty"] = {"Old Tamil"},
["otz"] = {"Ixtenco Otomi"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Old Uighur"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalian", "Övdalian"},
["owi"] = {"Owiniga"},
["owl"] = {"Old Welsh"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"Papuan languages"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Northern Paiute"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauan"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawnee"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Mezontla Popoloca"},
["pbf"] = {"Coyotepec Popoloca"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (Nigeria)"},
["pbm"] = {"Puebla Mazatec"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Central Pame"},
["pbt"] = {"Southern Pashto"},
["pbu"] = {"Northern Pashto"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papua New Guinea)"},
["pca"] = {"Santa Inés Ahuatempan Popoloca"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picard"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Nigerian Pidgin"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Pennsylvania German"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Peranakan Indonesian"},
["peb"] = {"Eastern Pomo"},
["ped"] = {"Mala (Papua New Guinea)"},
["pee"] = {"Taje"},
["pef"] = {"Northeastern Pomo"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Northern Pomo"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},
["pep"] = {"Kunja"},
["peq"] = {"Southern Pomo"},
["pes"] = {"Iranian Persian"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Eastern Penan"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Sudanese Creole Arabic"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Primitive Irish"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Papua New Guinean Sign Language"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"Philippine languages"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"Phoenician"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Phu Thai"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavani"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapese"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatan"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Pakistan Sign Language"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Central Palawano"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"Central Malayo-Polynesian languages"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Kohistani Shina"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Oluta Popoluca"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},
["plt"] = {"Plateau Malagasy"},
["plu"] = {"Palikúr"},
["plv"] = {"Southwest Palawano"},
["plw"] = {"Brooke's Point Palawano"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Northern Pumi"},
["pmj"] = {"Southern Pumi"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Northern Pame"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piemontese"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Plains Miwok"},
["pmx"] = {"Poumei Naga"},
["pmy"] = {"Papuan Malay"},
["pmz"] = {"Southern Pame"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Western Panjabi"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Western Penan"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontic"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Central African Republic)"},
["poc"] = {"Poqomam"},
["poe"] = {"San Juan Atzingo Popoloca"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Highland Popoluca"},
["pok"] = {"Pokangá"},
["pom"] = {"Southeastern Pomo"},
["pon"] = {"Pohnpeian"},
["poo"] = {"Central Pomo"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Texistepec Popoluca"},
["pos"] = {"Sayula Popoluca"},
["pot"] = {"Potawatomi"},
["pov"] = {"Upper Guinea Crioulo"},
["pow"] = {"San Felipe Otlaltepec Popoloca"},
["pox"] = {"Polabian"},
["poy"] = {"Pogolo"},
["poz"] = {"Malayo-Polynesian languages"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"San Luís Temalacayuca Popoloca"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["prc"] = {"Parachi"},
["prd"] = {"Parsi-Dari"},
["pre"] = {"Principense"},
["prf"] = {"Paranan"},
["prg"] = {"Prussian"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Peruvian Sign Language"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Dari", "Afghan Persian"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Providencia Sign Language"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Iranian Sign Language", "Persian Sign Language"},
["psd"] = {"Plains Indian Sign Language"},
["pse"] = {"Central Malay"},
["psg"] = {"Penang Sign Language"},
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},
["psl"] = {"Puerto Rican Sign Language"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Polish Sign Language"},
["psp"] = {"Philippine Sign Language"},
["psq"] = {"Pasi"},
["psr"] = {"Portuguese Sign Language"},
["pss"] = {"Kaulong"},
["pst"] = {"Central Pashto"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patani"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Western Highland Purepecha"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatese"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Pwo Western Karen"},
["pwr"] = {"Powari"},
["pww"] = {"Pwo Northern Karen"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Huallaga Huánuco Quechua"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Calderón Highland Quichua"},
["quf"] = {"Lambayeque Quechua"},
["qug"] = {"Chimborazo Highland Quichua"},
["quh"] = {"South Bolivian Quechua"},
["qui"] = {"Quileute"},
["quk"] = {"Chachapoyas Quechua"},
["qul"] = {"North Bolivian Quechua"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Southern Pastaza Quechua"},
["quq"] = {"Quinqui"},
["qur"] = {"Yanahuanca Pasco Quechua"},
["qus"] = {"Santiago del Estero Quichua"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Tena Lowland Quichua"},
["qux"] = {"Yauyos Quechua"},
["quy"] = {"Ayacucho Quechua"},
["quz"] = {"Cusco Quechua"},
["qva"] = {"Ambo-Pasco Quechua"},
["qvc"] = {"Cajamarca Quechua"},
["qve"] = {"Eastern Apurímac Quechua"},
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},
["qvi"] = {"Imbabura Highland Quichua"},
["qvj"] = {"Loja Highland Quichua"},
["qvl"] = {"Cajatambo North Lima Quechua"},
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},
["qvn"] = {"North Junín Quechua"},
["qvo"] = {"Napo Lowland Quechua"},
["qvp"] = {"Pacaraos Quechua"},
["qvs"] = {"San Martín Quechua"},
["qvw"] = {"Huaylla Wanca Quechua"},
["qvy"] = {"Queyu"},
["qvz"] = {"Northern Pastaza Quichua"},
["qwa"] = {"Corongo Ancash Quechua"},
["qwc"] = {"Classical Quechua"},
["qwe"] = {"Quechuan (family)"},
["qwh"] = {"Huaylas Ancash Quechua"},
["qwm"] = {"Kuman (Russia)"},
["qws"] = {"Sihuas Ancash Quechua"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Chiquián Ancash Quechua"},
["qxc"] = {"Chincha Quechua"},
["qxh"] = {"Panao Huánuco Quechua"},
["qxl"] = {"Salasaca Highland Quichua"},
["qxn"] = {"Northern Conchucos Ancash Quechua"},
["qxo"] = {"Southern Conchucos Ancash Quechua"},
["qxp"] = {"Puno Quechua"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Cañar Highland Quichua"},
["qxs"] = {"Southern Qiang"},
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},
["qxu"] = {"Arequipa-La Unión Quechua"},
["qxw"] = {"Jauja Wanca Quechua"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Western Meohang"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthani"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Northern Bontok"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Réunion Creole French"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Romano-Greek"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnol"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Southern Roglai"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (India)"},
["rib"] = {"Bribri Sign Language"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Carpathian Romani"},
["rmd"] = {"Traveller Danish"},
["rme"] = {"Angloromani"},
["rmf"] = {"Kalo Finnish Romani"},
["rmg"] = {"Traveller Norwegian"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Baltic Romani"},
["rmm"] = {"Roma"},
["rmn"] = {"Balkan Romani"},
["rmo"] = {"Sinte Romani"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Romanian Sign Language"},
["rmt"] = {"Domari"},
["rmu"] = {"Tavringer Romani"},
["rmv"] = {"Romanova"},
["rmw"] = {"Welsh Romani"},
["rmx"] = {"Romam"},
["rmy"] = {"Vlax Romani"},
["rmz"] = {"Marma"},
["rnb"] = {"Brunca Sign Language"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"Romance languages"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Northern Roglai"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romany"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Romano-Serbian"},
["rsk"] = {"Ruthenian", "Rusnak"},
["rsl"] = {"Russian Sign Language"},
["rsm"] = {"Miriwoong Sign Language"},
["rsn"] = {"Rwandan Sign Language"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yurats"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusyn"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro Romanian"},
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},
["ruq"] = {"Megleno Romanian"},
["rut"] = {"Rutul"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (Nigeria)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Uganda)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (India)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Northern Amami-Oshima"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Central Okinawan"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papua New Guinea)"},
["sbd"] = {"Southern Samo"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"San Miguel Creole French"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Sri Lankan Creole Malay"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Sicilian"},
["sco"] = {"Scots"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"North Slavey"},
["sct"] = {"Southern Katang"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sassarese Sardinian"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Southern Kurdish"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Saudi Arabian Sign Language"},
["sdn"] = {"Gallurese Sardinian"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"Eastern Sudanic languages"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},
["sfe"] = {"Eastern Subanen"},
["sfm"] = {"Small Flowery Miao"},
["sfs"] = {"South African Sign Language"},
["sfw"] = {"Sehwi"},
["sga"] = {"Old Irish (to 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Swiss-German Sign Language"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Sign languages"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitian"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Sierra Leone Sign Language"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Chadian Arabic"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Akkala Sami"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papua New Guinea)"},
["sio"] = {"Siouan languages"},
["sip"] = {"Sikkimese"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"Sino-Tibetan languages"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Kildin Sami"},
["sje"] = {"Pite Sami"},
["sjg"] = {"Assangori"},
["sjk"] = {"Kemi Sami"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Ter Sami"},
["sju"] = {"Ume Sami"},
["sjw"] = {"Shawnee"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Southern Sierra Miwok"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Sakalava Malagasy"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Skepi Creole Dutch"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"Slavic languages"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Swiss-Italian Sign Language"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Southern Puget Sound Salish"},
["sli"] = {"Lower Silesian"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Singapore Sign Language"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Southern Sami"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smk"] = {"Bolinao"},
["sml"] = {"Central Sama"},
["smm"] = {"Musasa"},
["smn"] = {"Inari Sami"},
["smp"] = {"Samaritan"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Skolt Sami"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Democratic Republic of Congo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Southern Ma'di"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Thai Song"},
["sob"] = {"Sobei"},
["soc"] = {"So (Democratic Republic of Congo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdian"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"Songhai languages"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Southern Thai"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (Indonesia)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papua New Guinea)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Loreto-Ucayali Spanish"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"South Picene"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"Albanian languages"},
["sqk"] = {"Albanian Sign Language"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Siculo Arabic"},
["sqs"] = {"Sri Lankan Sign Language"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Logudorese Sardinian"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Campidanese Sardinian"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Southern Sorsoganon"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"Nilo-Saharan languages"},
["ssb"] = {"Southern Sama"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Shihhi Arabic"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Western Sisaala"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Spanish Sign Language"},
["ssq"] = {"So'a"},
["ssr"] = {"Swiss-French Sign Language"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Northern Subanen"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stoney"},
["stp"] = {"Southeastern Tepehuan"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Straits Salish"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalese"},
["sty"] = {"Siberian Tatar"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Western Subanon"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerian"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Vincentian Creole English"},
["sve"] = {"Serili"},
["svk"] = {"Slovakian Sign Language"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvian"},
["swb"] = {"Maore Comorian"},
["swc"] = {"Congo Swahili"},
["swf"] = {"Sere"},
["swg"] = {"Swabian"},
["swh"] = {"Swahili (individual language)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Swedish Sign Language"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanian"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Southern Kalapuya"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptic"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Upper Saxon"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Central Subanen"},
["syc"] = {"Classical Syriac"},
["syd"] = {"Samoyedic languages"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Syriac"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Al-Sayyid Bedouin Sign Language"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Silesian"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Solomon Islands Sign Language"},
["szv"] = {"Isu (Fako Division)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Lower Tanana"},
["tab"] = {"Tabassaran"},
["tac"] = {"Lowland Tarahumara"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"Tai languages"},
["taj"] = {"Eastern Tamang"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Central Tarahumara"},
["tas"] = {"Tay Boi"},
["tau"] = {"Upper Tanana"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"North Tairora"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"Tibeto-Burman languages"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Southern Tutchone"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Turks And Caicos Creole English"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Torres Strait Creole", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Southeastern Tarahumara"},
["tcw"] = {"Tecpatlán Totonac"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Thado Chin"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Western Tamang"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Tandroy-Mahafaly Malagasy"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelche"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (Colombia)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (USA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Eastern Gorkha Tamang"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Tobagonian Creole English"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Central Tagbanwa"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Northern Tarahumara"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tidikelt Tamazight"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Southern Tiwa"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Northern Tujia"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Temacine Tamazight"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Southern Tujia"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Tesaka Malagasy"},
["tkl"] = {"Tokelau"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhur"},
["tks"] = {"Takestani"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Upper Necaxa Totonac"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Southwestern Tepehuan"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Yecuatla Totonac"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Chad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (Indonesia)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Western Tunebo"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"North Tanna"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Coyutla Totonac"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (Zambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Xicotepec De Juárez Totonac"},
["top"] = {"Papantla Totonac"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Highland Totonac"},
["tou"] = {"Tho"},
["tov"] = {"Upper Taromi"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Pisaflores Tepehua"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tlachichilco Tepehua"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Western Totonac"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"East Tarangan"},
["trf"] = {"Trinidadian Creole English"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"Turkic languages"},
["trl"] = {"Traveller Scottish"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"San Martín Itunyoso Triqui"},
["trr"] = {"Taushiro"},
["trs"] = {"Chicahuaxtla Triqui"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Tringgus-Sembaan Bidayuh"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonian"},
["tse"] = {"Tunisian Sign Language"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},
["tsp"] = {"Northern Toussian"},
["tsq"] = {"Thai Sign Language"},
["tsr"] = {"Akei"},
["tss"] = {"Taiwan Sign Language"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Tebul Sign Language"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Upper Ta'oih"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Northern Tutchone"},
["ttn"] = {"Towei"},
["tto"] = {"Lower Ta'oih"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tawallammat Tamajaq"},
["ttr"] = {"Tera"},
["tts"] = {"Northeastern Thai"},
["ttt"] = {"Muslim Tat"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Central Tunebo"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbuka"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"Tupi languages"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"Altaic languages"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"Tungus languages"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Southeast Ambrym"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Tutsa Naga"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timor Pidgin"},
["twa"] = {"Twana"},
["twb"] = {"Western Tawbuid"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (Indonesia)"},
["twf"] = {"Northern Tiwa"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Southwestern Tarahumara"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharian B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thracian"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"West Tarangan"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessian"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Tanosy Malagasy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvinian"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Tanzanian Sign Language"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Central Atlas Tamazight"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykh"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurt"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Ugaritic"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Ugandan Sign Language"},
["ugo"] = {"Ugong"},
["ugy"] = {"Uruguayan Sign Language"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (India)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Ukrainian Sign Language"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithian"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinian"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"North Watut"},
["und"] = {"Undetermined"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"Uralic languages"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papua New Guinea)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Southern Paiute"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Solomon Islands)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"West Uvean", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Northern Uzbek"},
["uzs"] = {"Southern Uzbek"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Southeast Babar"},
["vbk"] = {"Southwestern Bontok"},
["vec"] = {"Venetian"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Veps"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},
["vic"] = {"Virgin Islands Creole English"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Korlai Creole Portuguese"},
["vkt"] = {"Tenggarong Kutai Malay"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Juxtlahuaca Mixtec"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"East Masela"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Ixtayutla Mixtec"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mitlatongo Mixtec"},
["vmp"] = {"Soyaltepec Mazatec"},
["vmq"] = {"Soyaltepec Mixtec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Valley Maidu"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Tamazola Mixtec"},
["vmy"] = {"Ayautla Mazatec"},
["vmz"] = {"Mazatlán Mazatec"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voro"},
["vot"] = {"Votic"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Moldova Sign Language"},
["vsl"] = {"Venezuelan Sign Language"},
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (China)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (Philippines)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"West Bengal Sign Language"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Western"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"Sorbian languages"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroon Pidgin"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"North Wahgi"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Southern Toussian"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Mwali Comorian"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (Sudan)"},
["wlm"] = {"Middle Welsh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisian"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (Ghana)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (Nigeria)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Western Minyag"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (Indonesia)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papua New Guinea)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Ndzwani Comorian"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Northern"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaian"},
["wof"] = {"Gambian Wolof"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (Nigeria)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hanga Hundi"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (Australia)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Wu Chinese"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Western Fijian"},
["xaa"] = {"Andalusian Arabic"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequian"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmyk", "Oirat"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalachee"},
["xaq"] = {"Aquitanian"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Lower Burdekin"},
["xbc"] = {"Bactrian"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Middle Breton"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarian"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbric"},
["xcc"] = {"Camunic"},
["xce"] = {"Celtiberian"},
["xcg"] = {"Cisalpine Gaulish"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Classical Armenian"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmian"},
["xcr"] = {"Carian"},
["xct"] = {"Classical Tibetan"},
["xcu"] = {"Curonian"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dacian"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomite"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Malayic Dayak"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscan"},
["xga"] = {"Galatian"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"Mongolian languages"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Harami"},
["xhc"] = {"Hunnic"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Middle Khmer (1400 to 1850 CE)"},
["xhr"] = {"Hernican"},
["xht"] = {"Hattic"},
["xhu"] = {"Hurrian"},
["xhv"] = {"Khua"},
["xib"] = {"Iberian"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrian"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Indus Valley Language"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Northern Nago"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Mendalam Kayan"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Kenyan Sign Language"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Mainstream Kenyah"},
["xkn"] = {"Kayan River Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lycian"},
["xld"] = {"Lydian"},
["xle"] = {"Lemnian"},
["xlg"] = {"Ligurian (Ancient)"},
["xli"] = {"Liburnian"},
["xln"] = {"Alanic"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontic"},
["xls"] = {"Lusitanian"},
["xlu"] = {"Cuneiform Luwian"},
["xly"] = {"Elymian"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Median"},
["xmf"] = {"Mingrelian"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Ancient Macedonian"},
["xml"] = {"Malaysian Sign Language"},
["xmm"] = {"Manado Malay"},
["xmn"] = {"Manichaean Middle Persian"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitic"},
["xms"] = {"Moroccan Sign Language"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},
["xmw"] = {"Tsimihety Malagasy"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Ancient North Arabian"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"Na-Dene languages"},
["xng"] = {"Middle Mongolian"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Northern Kankanay"},
["xno"] = {"Anglo-Norman"},
["xnq"] = {"Ngoni (Mozambique)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (Sudan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Oyster Bay Tasmanian"},
["xpe"] = {"Liberia Kpelle"},
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},
["xpg"] = {"Phrygian"},
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Port Sorell Tasmanian"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Mohegan-Pequot"},
["xpr"] = {"Parthian"},
["xps"] = {"Pisidian"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punic"},
["xpv"] = {"Northern Tasmanian", "Tommeginne"},
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},
["xpx"] = {"Southwestern Tasmanian", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Bruny Island Tasmanian"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Eastern Karaboro"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazic"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetic"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythian"},
["xsd"] = {"Sidetic"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"South Slavey"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (Nigeria)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovian"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Alcozauca Mixtec"},
["xtb"] = {"Chazumba Mixtec"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Diuxi-Tilantongo Mixtec"},
["xte"] = {"Ketengban"},
["xtg"] = {"Transalpine Gaulish"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Sinicahua Mixtec"},
["xtj"] = {"San Juan Teita Mixtec"},
["xtl"] = {"Tijaltepec Mixtec"},
["xtm"] = {"Magdalena Peñasco Mixtec"},
["xtn"] = {"Northern Tlaxiaco Mixtec"},
["xto"] = {"Tokharian A"},
["xtp"] = {"San Miguel Piedras Mixtec"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Early Tripuri"},
["xts"] = {"Sindihui Mixtec"},
["xtt"] = {"Tacahua Mixtec"},
["xtu"] = {"Cuyamecalco Mixtec"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Yoloxochitl Mixtec"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrian"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Upper Umpqua"},
["xur"] = {"Urartian"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetic"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalic"},
["xvo"] = {"Volscian"},
["xvs"] = {"Vestinian"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Western Xwla Gbe"},
["xwo"] = {"Written Oirat"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (Ghana)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalian"},
["xzp"] = {"Ancient Zapotec"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Pass Valley Yali"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Democratic Republic of Congo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"West Yugur"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Yilan Creole"},
["yda"] = {"Yanda"},
["ydd"] = {"Eastern Yiddish"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanic"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Yolŋu Sign Language"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Judeo-Iraqi Arabic"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Yan-nhaŋu Sign Language"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Western Yiddish"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Yimchungru Naga"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"North Awyu"},
["yis"] = {"Yis"},
["yit"] = {"Eastern Lalu"},
["yiu"] = {"Awu"},
["yiv"] = {"Northern Nisu"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Northern Yukaghir"},
["ykh"] = {"Khamnigan Mongol"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Angguruk Yali"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Southern Muji"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysian"},
["ymx"] = {"Northern Muji"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Naukan Yupik"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"Yupik languages"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenets"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassic"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Yugoslavian Sign Language"},
["ysm"] = {"Myanmar Sign Language"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (China)"},
["ysp"] = {"Southern Lolopo"},
["ysr"] = {"Sirenik Yupik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Yucatec Maya"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Judeo-Tripolitanian Arabic"},
["yue"] = {"Yue Chinese", "Cantonese"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (Nigeria)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Morobe Province)"},
["yux"] = {"Southern Yukaghir"},
["yuy"] = {"East Yugur"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Western Lalu"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Central Lalo"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Sandaun Province)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Sierra de Juárez Zapotec"},
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},
["zac"] = {"Ocotlán Zapotec"},
["zad"] = {"Cajonos Zapotec"},
["zae"] = {"Yareni Zapotec"},
["zaf"] = {"Ayoquesco Zapotec"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Isthmus Zapotec"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Miahuatlán Zapotec"},
["zao"] = {"Ozolotepec Zapotec"},
["zap"] = {"Zapotec"},
["zaq"] = {"Aloápam Zapotec"},
["zar"] = {"Rincón Zapotec"},
["zas"] = {"Santo Domingo Albarradas Zapotec"},
["zat"] = {"Tabaa Zapotec"},
["zau"] = {"Zangskari"},
["zav"] = {"Yatzachi Zapotec"},
["zaw"] = {"Mitla Zapotec"},
["zax"] = {"Xadani Zapotec"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Central Berawan"},
["zbe"] = {"East Berawan"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Bauchi State)"},
["zbw"] = {"West Berawan"},
["zca"] = {"Coatecas Altas Zapotec"},
["zcd"] = {"Las Delicias Zapotec"},
["zch"] = {"Central Hongshuihe Zhuang"},
["zdj"] = {"Ngazidja Comorian"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Eastern Hongshuihe Zhuang"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Guibei Zhuang"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zgm"] = {"Minz Zhuang"},
["zgn"] = {"Guibian Zhuang"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Dai Zhuang"},
["zhi"] = {"Zhire"},
["zhn"] = {"Nong Zhuang"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Chinese (family)"},
["zia"] = {"Zia"},
["zib"] = {"Zimbabwe Sign Language"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmian"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"São Paulo Kaingáng"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinian"},
["zkz"] = {"Khazar"},
["zla"] = {"Zula"},
["zle"] = {"East Slavic languages"},
["zlj"] = {"Liujiang Zhuang"},
["zlm"] = {"Malay (individual language)"},
["zln"] = {"Lianshan Zhuang"},
["zlq"] = {"Liuqian Zhuang"},
["zls"] = {"South Slavic languages"},
["zlu"] = {"Zul"},
["zlw"] = {"West Slavic languages"},
["zma"] = {"Manda (Australia)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Negeri Sembilan Malay"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Democratic Republic of Congo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"Zande languages"},
["zne"] = {"Zande (individual language)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Copainalá Zoque"},
["zoh"] = {"Chimalapa Zoque"},
["zom"] = {"Zou"},
["zoo"] = {"Asunción Mixtepec Zapotec"},
["zoq"] = {"Tabasco Zoque"},
["zor"] = {"Rayón Zoque"},
["zos"] = {"Francisco León Zoque"},
["zpa"] = {"Lachiguiri Zapotec"},
["zpb"] = {"Yautepec Zapotec"},
["zpc"] = {"Choapan Zapotec"},
["zpd"] = {"Southeastern Ixtlán Zapotec"},
["zpe"] = {"Petapa Zapotec"},
["zpf"] = {"San Pedro Quiatoni Zapotec"},
["zpg"] = {"Guevea De Humboldt Zapotec"},
["zph"] = {"Totomachapan Zapotec"},
["zpi"] = {"Santa María Quiegolani Zapotec"},
["zpj"] = {"Quiavicuzas Zapotec"},
["zpk"] = {"Tlacolulita Zapotec"},
["zpl"] = {"Lachixío Zapotec"},
["zpm"] = {"Mixtepec Zapotec"},
["zpn"] = {"Santa Inés Yatzechi Zapotec"},
["zpo"] = {"Amatlán Zapotec"},
["zpp"] = {"El Alto Zapotec"},
["zpq"] = {"Zoogocho Zapotec"},
["zpr"] = {"Santiago Xanica Zapotec"},
["zps"] = {"Coatlán Zapotec"},
["zpt"] = {"San Vicente Coatlán Zapotec"},
["zpu"] = {"Yalálag Zapotec"},
["zpv"] = {"Chichicapan Zapotec"},
["zpw"] = {"Zaniza Zapotec"},
["zpx"] = {"San Baltazar Loxicha Zapotec"},
["zpy"] = {"Mazaltepec Zapotec"},
["zpz"] = {"Texmelucan Zapotec"},
["zqe"] = {"Qiubei Zhuang"},
["zra"] = {"Kara (Korea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatic"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskean"},
["zsl"] = {"Zambian Sign Language"},
["zsm"] = {"Standard Malay"},
["zsr"] = {"Southern Rincon Zapotec"},
["zsu"] = {"Sukurum"},
["zte"] = {"Elotepec Zapotec"},
["ztg"] = {"Xanaguía Zapotec"},
["ztl"] = {"Lapaguía-Guivini Zapotec"},
["ztm"] = {"San Agustín Mixtepec Zapotec"},
["ztn"] = {"Santa Catarina Albarradas Zapotec"},
["ztp"] = {"Loxicha Zapotec"},
["ztq"] = {"Quioquitani-Quierí Zapotec"},
["zts"] = {"Tilquiapan Zapotec"},
["ztt"] = {"Tejalapan Zapotec"},
["ztu"] = {"Güilá Zapotec"},
["ztx"] = {"Zaachila Zapotec"},
["zty"] = {"Yatee Zapotec"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzari"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zyb"] = {"Yongbei Zhuang"},
["zyg"] = {"Yang Zhuang"},
["zyj"] = {"Youjiang Zhuang"},
["zyn"] = {"Yongnan Zhuang"},
["zyp"] = {"Zyphe Chin"},
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},
["zzj"] = {"Zuojiang Zhuang"}
}
local deprecated = {
["in"] = {"Indonesian"},
["iw"] = {"Hebrew"},
["ji"] = {"Yiddish"},
["jw"] = {"Javanese"},
["mo"] = {"Moldavian", "Moldovan"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"South Levantine Arabic"},
["ajt"] = {"Judeo-Tunisian Arabic"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (China)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Babalia Creole Arabic"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Southern Betsimisaraka Malagasy"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Democratic Republic of Congo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Democratic Republic of Congo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Chilean Quechua"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (India)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (India)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Eastern Karnic"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Eastern Gurung"},
["ggo"] = {"Southern Gondi"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (Nigeria)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Upper Tanudan Kalinga"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Indo-Iranian]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Paku Karen"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Nepali Kurux"},
["kxu"] = {"Kui (India)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (Nigeria)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (South Sudan)"},
["lsg"] = {"Lyons Sign Language"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Pidgin"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (India)"},
["myq"] = {"Forest Maninka"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Durango Nahuatl"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Mirpur Panjabi"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Rennellese Sign Language"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"South Wemale"},
["tmk"] = {"Northwestern Tamang"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Southwestern Tamang"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (Brazil)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmanian"},
["ybd"] = {"Yangbye"},
["yds"] = {"Yiddish Sign Language"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
d2b8387b798a45d93230d1c1b7b22a80714751a1
1036
1020
2023-10-01T09:58:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_languages]]
Scribunto
text/plain
-- File-Date: 2023-08-02
local active = {
["aa"] = {"Afar"},
["ab"] = {"Abkhazian"},
["ae"] = {"Avestan"},
["af"] = {"Afrikaans"},
["ak"] = {"Akan"},
["am"] = {"Amharic"},
["an"] = {"Aragonese"},
["ar"] = {"Arabic"},
["as"] = {"Assamese"},
["av"] = {"Avaric"},
["ay"] = {"Aymara"},
["az"] = {"Azerbaijani"},
["ba"] = {"Bashkir"},
["be"] = {"Belarusian"},
["bg"] = {"Bulgarian"},
["bh"] = {"Bihari languages"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengali", "Bangla"},
["bo"] = {"Tibetan"},
["br"] = {"Breton"},
["bs"] = {"Bosnian"},
["ca"] = {"Catalan", "Valencian"},
["ce"] = {"Chechen"},
["ch"] = {"Chamorro"},
["co"] = {"Corsican"},
["cr"] = {"Cree"},
["cs"] = {"Czech"},
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},
["cv"] = {"Chuvash"},
["cy"] = {"Welsh"},
["da"] = {"Danish"},
["de"] = {"German"},
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Modern Greek (1453-)"},
["en"] = {"English"},
["eo"] = {"Esperanto"},
["es"] = {"Spanish", "Castilian"},
["et"] = {"Estonian"},
["eu"] = {"Basque"},
["fa"] = {"Persian"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faroese"},
["fr"] = {"French"},
["fy"] = {"Western Frisian"},
["ga"] = {"Irish"},
["gd"] = {"Scottish Gaelic", "Gaelic"},
["gl"] = {"Galician"},
["gn"] = {"Guarani"},
["gu"] = {"Gujarati"},
["gv"] = {"Manx"},
["ha"] = {"Hausa"},
["he"] = {"Hebrew"},
["hi"] = {"Hindi"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croatian"},
["ht"] = {"Haitian", "Haitian Creole"},
["hu"] = {"Hungarian"},
["hy"] = {"Armenian"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indonesian"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Icelandic"},
["it"] = {"Italian"},
["iu"] = {"Inuktitut"},
["ja"] = {"Japanese"},
["jv"] = {"Javanese"},
["ka"] = {"Georgian"},
["kg"] = {"Kongo"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kazakh"},
["kl"] = {"Kalaallisut", "Greenlandic"},
["km"] = {"Khmer", "Central Khmer"},
["kn"] = {"Kannada"},
["ko"] = {"Korean"},
["kr"] = {"Kanuri"},
["ks"] = {"Kashmiri"},
["ku"] = {"Kurdish"},
["kv"] = {"Komi"},
["kw"] = {"Cornish"},
["ky"] = {"Kirghiz", "Kyrgyz"},
["la"] = {"Latin"},
["lb"] = {"Luxembourgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgan", "Limburger", "Limburgish"},
["ln"] = {"Lingala"},
["lo"] = {"Lao"},
["lt"] = {"Lithuanian"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvian"},
["mg"] = {"Malagasy"},
["mh"] = {"Marshallese"},
["mi"] = {"Maori"},
["mk"] = {"Macedonian"},
["ml"] = {"Malayalam"},
["mn"] = {"Mongolian"},
["mr"] = {"Marathi"},
["ms"] = {"Malay (macrolanguage)"},
["mt"] = {"Maltese"},
["my"] = {"Burmese"},
["na"] = {"Nauru"},
["nb"] = {"Norwegian Bokmål"},
["nd"] = {"North Ndebele"},
["ne"] = {"Nepali (macrolanguage)"},
["ng"] = {"Ndonga"},
["nl"] = {"Dutch", "Flemish"},
["nn"] = {"Norwegian Nynorsk"},
["no"] = {"Norwegian"},
["nr"] = {"South Ndebele"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Occitan (post 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromo"},
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},
["os"] = {"Ossetian", "Ossetic"},
["pa"] = {"Panjabi", "Punjabi"},
["pi"] = {"Pali"},
["pl"] = {"Polish"},
["ps"] = {"Pushto", "Pashto"},
["pt"] = {"Portuguese"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh"},
["rn"] = {"Rundi"},
["ro"] = {"Romanian", "Moldavian", "Moldovan"},
["ru"] = {"Russian"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardinian"},
["sd"] = {"Sindhi"},
["se"] = {"Northern Sami"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Croatian"},
["si"] = {"Sinhala", "Sinhalese"},
["sk"] = {"Slovak"},
["sl"] = {"Slovenian"},
["sm"] = {"Samoan"},
["sn"] = {"Shona"},
["so"] = {"Somali"},
["sq"] = {"Albanian"},
["sr"] = {"Serbian"},
["ss"] = {"Swati"},
["st"] = {"Southern Sotho"},
["su"] = {"Sundanese"},
["sv"] = {"Swedish"},
["sw"] = {"Swahili (macrolanguage)"},
["ta"] = {"Tamil"},
["te"] = {"Telugu"},
["tg"] = {"Tajik"},
["th"] = {"Thai"},
["ti"] = {"Tigrinya"},
["tk"] = {"Turkmen"},
["tl"] = {"Tagalog"},
["tn"] = {"Tswana"},
["to"] = {"Tonga (Tonga Islands)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsonga"},
["tt"] = {"Tatar"},
["tw"] = {"Twi"},
["ty"] = {"Tahitian"},
["ug"] = {"Uighur", "Uyghur"},
["uk"] = {"Ukrainian"},
["ur"] = {"Urdu"},
["uz"] = {"Uzbek"},
["ve"] = {"Venda"},
["vi"] = {"Vietnamese"},
["vo"] = {"Volapük"},
["wa"] = {"Walloon"},
["wo"] = {"Wolof"},
["xh"] = {"Xhosa"},
["yi"] = {"Yiddish"},
["yo"] = {"Yoruba"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Chinese"},
["zu"] = {"Zulu"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Arbëreshë Albanian"},
["aaf"] = {"Aranadan"},
["aag"] = {"Ambrak"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Algerian Saharan Arabic"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Eastern Abnaki"},
["aas"] = {"Aasáx"},
["aat"] = {"Arvanitika Albanian"},
["aau"] = {"Abau"},
["aav"] = {"Austro-Asiatic languages"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasi"},
["aba"] = {"Abé"},
["abb"] = {"Bankon"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Western Abnaki"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Tajiki Arabic"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinese"},
["acf"] = {"Saint Lucian Creole French"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Mesopotamian Arabic"},
["acn"] = {"Achang"},
["acp"] = {"Eastern Acipa"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Hijazi Arabic"},
["acx"] = {"Omani Arabic"},
["acy"] = {"Cypriot Arabic"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Dhofari Arabic"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Adamorobe Sign Language"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Amdo Tibetan"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"Tunisian Arabic"},
["aec"] = {"Saidi Arabic"},
["aed"] = {"Argentine Sign Language"},
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Armenian Sign Language"},
["aeq"] = {"Aer"},
["aer"] = {"Eastern Arrernte"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"Afro-Asiatic languages"},
["afb"] = {"Gulf Arabic"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Afghan Sign Language"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Afro-Seminole Creole"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Central Cagayan Agta"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Southern Alta"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (China)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Antigua and Barbuda Creole English"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Assyrian Neo-Aramaic"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (Japan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (South Sudan)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleut"},
["alf"] = {"Alege"},
["alg"] = {"Algonquian languages"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Gheg Albanian"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutor"},
["als"] = {"Tosk Albanian"},
["alt"] = {"Southern Altai"},
["alu"] = {"'Are'are"},
["alv"] = {"Atlantic-Congo languages"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papua New Guinea)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Southern Amami-Oshima"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Western Neo-Aramaic"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Old English (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (India)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (India)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"Apache languages"},
["apb"] = {"Sa'a"},
["apc"] = {"Levantine Arabic"},
["apd"] = {"Sudanese Arabic"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Jicarilla Apache"},
["apk"] = {"Kiowa Apache"},
["apl"] = {"Lipan Apache"},
["apm"] = {"Mescalero-Chiricahua Apache"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatani"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Western Apache"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"Alacalufan languages"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"Algic languages"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Northern Alta"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Standard Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["ard"] = {"Arabana"},
["are"] = {"Western Arrarnta"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungun", "Mapuche"},
["aro"] = {"Araona"},
["arp"] = {"Arapaho"},
["arq"] = {"Algerian Arabic"},
["arr"] = {"Karo (Brazil)"},
["ars"] = {"Najdi Arabic"},
["art"] = {"Artificial languages"},
["aru"] = {"Aruá (Amazonas State)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Rodonia State)"},
["ary"] = {"Moroccan Arabic"},
["arz"] = {"Egyptian Arabic"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"American Sign Language"},
["asf"] = {"Auslan", "Australian Sign Language"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Algerian Sign Language"},
["asq"] = {"Austrian Sign Language"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Australian Aborigines Sign Language"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"Athapascan languages"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Northern Altai"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"Arauan languages"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (Nigeria)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"Australian languages"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Uzbeki Arabic"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Eastern Egyptian Bedawi Arabic"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papua New Guinea)"},
["awc"] = {"Cicipu"},
["awd"] = {"Arawakan languages"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"South Awyu"},
["awt"] = {"Araweté"},
["awu"] = {"Central Awyu"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Central African Republic)"},
["axl"] = {"Lower Southern Aranda"},
["axm"] = {"Middle Armenian"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Southern Aymara"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Hadrami Arabic"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Libyan Arabic"},
["ayn"] = {"Sanaani Arabic"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"North Mesopotamian Arabic"},
["ayq"] = {"Ayi (Papua New Guinea)"},
["ayr"] = {"Central Aymara"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"South Azerbaijani"},
["azc"] = {"Uto-Aztecan languages"},
["azd"] = {"Eastern Durango Nahuatl"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"North Azerbaijani"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Western Durango Nahuatl"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Highland Puebla Nahuatl"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"Banda languages"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Bahamas Creole English"},
["bai"] = {"Bamileke languages"},
["baj"] = {"Barakai"},
["bal"] = {"Baluchi"},
["ban"] = {"Balinese"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Bavarian"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"Baltic languages"},
["bau"] = {"Bada (Nigeria)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},
["bbp"] = {"West Central Banda"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (Nigeria)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Central Bai"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Southern Balochi"},
["bcd"] = {"North Babar"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Central Bikol"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (Nigeria)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Democratic Republic of Congo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (South Sudan)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (South Sudan)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Indonesian Bajau"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"West Coast Bajau"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (Zambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"Berber languages"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papua New Guinea)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Northern Bai"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"British Sign Language"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Ban Khor Sign Language"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Southern Bai"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (Laos)"},
["bgn"] = {"Western Balochi"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Eastern Balochi"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Balkan Gagauz Turkish"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Bohtan Neo-Aramaic"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (Indonesia)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Southern Birifor"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papua New Guinea)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Mid-Southern Banda"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Democratic Republic of Congo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Northern Sorsoganon"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (South Sudan)"},
["bln"] = {"Southern Catanduanes Bikol"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Northern Betsimisaraka Malagasy"},
["bmn"] = {"Bina (Papua New Guinea)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (Indonesia)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Eastern Tawbuid"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"Bantu languages"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Bamako Sign Language"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Central African Republic)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Banda Malay"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papua New Guinea)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Bulgarian Sign Language"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (Nigeria)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Bengkala Sign Language"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Berbice Creole Dutch"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Eastern Bru"},
["brv"] = {"Western Bru"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (India)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardi"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Bacanese Malay"},
["btk"] = {"Batak languages"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buriat"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginese"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Berau Malay"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Bolivian Sign Language"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (Indonesia)"},
["bvu"] = {"Bukit Malay"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Southern Bobo Madaré"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (Ghana)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Mongolia Buriat"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Russia Buriat"},
["bxs"] = {"Busam"},
["bxu"] = {"China Buriat"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (Nigeria)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Southern Betsimisaraka Malagasy"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Belize Kriol English"},
["bzk"] = {"Nicaragua Creole English"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (Indonesia)"},
["bzr"] = {"Biri"},
["bzs"] = {"Brazilian Sign Language"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (Nigeria)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifuna"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Southern Carrier"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"Central American Indian languages"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinian"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Galibi Carib"},
["cas"] = {"Tsimané"},
["cau"] = {"Caucasian languages"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"Chibchan languages"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalian"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Cafundo Creole"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Malaccan Creole Malay"},
["ccn"] = {"North Caucasian languages"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"South Caucasian languages"},
["cda"] = {"Choni"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Min Dong Chinese"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Chadian Sign Language"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Lower Chehalis"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Eastern Khumi Chin"},
["cel"] = {"Celtic languages"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Highland Oaxaca Chontal"},
["chf"] = {"Tabasco Chontal"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Mari (Russia)"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chq"] = {"Quiotepec Chinantec"},
["chr"] = {"Cherokee"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Ozumacín Chinantec"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasaw"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrian"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Western Cham"},
["cje"] = {"Chru"},
["cjh"] = {"Upper Chehalis"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Eastern Cham"},
["cjn"] = {"Chenapian"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Jinyu Chinese"},
["ckb"] = {"Central Kurdish"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavian"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Chukot"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Chaldean Neo-Aramaic"},
["cle"] = {"Lealao Chinantec"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Lowland Oaxaca Chontal"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Eastern Highland Chatino"},
["cma"] = {"Maa"},
["cmc"] = {"Chamic languages"},
["cme"] = {"Cerma"},
["cmg"] = {"Classical Mongolian"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Mandarin Chinese"},
["cmo"] = {"Central Mnong"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Northern Qiang"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrin"},
["cns"] = {"Central Asmat"},
["cnt"] = {"Tepetotutla Chinantec"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Middle Cornish"},
["coa"] = {"Cocos Islands Malay"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comanche"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptic"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"English-based creoles and pidgins"},
["cpf"] = {"French-based creoles and pidgins"},
["cpg"] = {"Cappadocian Greek"},
["cpi"] = {"Chinese Pidgin English"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"Portuguese-based creoles and pidgins"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Pu-Xian Chinese"},
["cpy"] = {"South Ucayali Ashéninka"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Island Carib"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["cri"] = {"Sãotomense"},
["crj"] = {"Southern East Cree"},
["crk"] = {"Plains Cree"},
["crl"] = {"Northern East Cree"},
["crm"] = {"Moose Cree"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crow"},
["crp"] = {"Creoles and pidgins"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Carolina Algonquian"},
["crs"] = {"Seselwa Creole French"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chiltepec Chinantec"},
["csb"] = {"Kashubian"},
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Chiangmai Sign Language"},
["cse"] = {"Czech Sign Language"},
["csf"] = {"Cuba Sign Language"},
["csg"] = {"Chilean Sign Language"},
["csh"] = {"Asho Chin"},
["csi"] = {"Coast Miwok"},
["csj"] = {"Songlai Chin"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Chinese Sign Language"},
["csm"] = {"Central Sierra Miwok"},
["csn"] = {"Colombian Sign Language"},
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},
["csq"] = {"Croatia Sign Language"},
["csr"] = {"Costa Rican Sign Language"},
["css"] = {"Southern Ohlone"},
["cst"] = {"Northern Ohlone"},
["csu"] = {"Central Sudanic languages"},
["csv"] = {"Sumtu Chin"},
["csw"] = {"Swampy Cree"},
["csx"] = {"Cambodian Sign Language"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Tedim Chin"},
["cte"] = {"Tepinapa Chinantec"},
["ctg"] = {"Chittagonian"},
["cth"] = {"Thaiphum Chin"},
["ctl"] = {"Tlacoatzintepec Chinantec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Western Highland Chatino"},
["cts"] = {"Northern Catanduanes Bikol"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Zacatepec Chatino"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"Cushitic languages"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Woods Cree"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Huizhou Chinese"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Min Zhong Chinese"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"Land Dayak languages"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slave (Athapascan)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Central African Republic)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Southern Dagaare"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Northern Dagara"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (individual language)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"South Central Dinka"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Southwestern Dinka"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Northeastern Dinka"},
["diq"] = {"Dimli (individual language)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Northwestern Dinka"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Southeastern Dinka"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmatian"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Upper Kinabatangan"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"Mande languages"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"East Damar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Upper Grand Valley Dani"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Lower Grand Valley Dani"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Northern Lendu"},
["dnr"] = {"Danaru"},
["dnt"] = {"Mid Grand Valley Dani"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Western Dani"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Northern Dong"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (macrolanguage)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papua New Guinea)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Dominican Sign Language"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"Dravidian languages"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"West Damar"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Lower Sorbian"},
["dse"] = {"Dutch Sign Language"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Danish Sign Language"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Mardin Sign Language"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Central Dusun"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Middle Dutch (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyula"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Eastern Bontok"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Ecuadorian Sign Language"},
["ecy"] = {"Eteocypriot"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilian"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"Egyptian languages"},
["egy"] = {"Egyptian (Ancient)"},
["ehs"] = {"Miyakubo Sign Language"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Standard Estonian"},
["ekl"] = {"Kol (Bangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Eastern Kayah"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamite"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Eastern Meohang"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Eastern Maninkakan"},
["emm"] = {"Mamulique"},
["emn"] = {"Eman"},
["emp"] = {"Northern Emberá"},
["emq"] = {"Eastern Minyag"},
["ems"] = {"Pacific Gulf Yupik"},
["emu"] = {"Eastern Muria"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Epigraphic Mayan"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Forest Enets"},
["enh"] = {"Tundra Enets"},
["enl"] = {"Enlhet"},
["enm"] = {"Middle English (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Edo State)"},
["enw"] = {"Enwan (Akwa Ibom State)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (Côte d'Ivoire)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"South Efate"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"North Alaskan Inupiatun"},
["esk"] = {"Northwest Alaska Inupiatun"},
["esl"] = {"Egypt Sign Language"},
["esm"] = {"Esuma"},
["esn"] = {"Salvadoran Sign Language"},
["eso"] = {"Estonian Sign Language"},
["esq"] = {"Esselen"},
["ess"] = {"Central Siberian Yupik"},
["esu"] = {"Central Yupik"},
["esx"] = {"Eskimo-Aleut languages"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Ethiopian Sign Language"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscan"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Basque (family)"},
["eve"] = {"Even"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenki"},
["ewo"] = {"Ewondo"},
["ext"] = {"Extremaduran"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"South Fali"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Equatorial Guinea)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Southwestern Fars"},
["faz"] = {"Northwestern Fars"},
["fbl"] = {"West Albay Bikol"},
["fcs"] = {"Quebec Sign Language"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Filipino", "Pilipino"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Tornedalen Finnish", "Meänkieli"},
["fiu"] = {"Finno-Ugrian languages"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Kven Finnish"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"North Fali"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Far Western Muria"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"Formosan languages"},
["fpe"] = {"Fernando Po Creole English"},
["fqs"] = {"Fas"},
["frc"] = {"Cajun French"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Middle French (ca. 1400-1600)"},
["fro"] = {"Old French (842-ca. 1400)"},
["frp"] = {"Arpitan", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["frt"] = {"Fortsenal"},
["fse"] = {"Finnish Sign Language"},
["fsl"] = {"French Sign Language"},
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaar"},
["fud"] = {"East Futuna"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["fuh"] = {"Western Niger Fulfulde"},
["fui"] = {"Bagirmi Fulfulde"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Central-Eastern Niger Fulfulde"},
["fur"] = {"Friulian"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Nigerian Fulfulde"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Mixed Great Andamanese"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauz"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Gan Chinese"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"West Central Oromo"},
["gba"] = {"Gbaya (Central African Republic)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Northern Grebo"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Eastern Xwla Gbe"},
["gby"] = {"Gbari"},
["gbz"] = {"Zoroastrian Dari"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Guadeloupean Creole French"},
["gcl"] = {"Grenadian Creole English"},
["gcn"] = {"Gaina"},
["gcr"] = {"Guianese Creole French"},
["gct"] = {"Colonia Tovar German"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Ghandruk Sign Language"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Hutterite German", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"Germanic languages"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Hiberno-Scottish Gaelic"},
["ghe"] = {"Southern Ghale"},
["ghh"] = {"Northern Ghale"},
["ghk"] = {"Geko Karen"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertese"},
["gim"] = {"Gimi (Eastern Highlands)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (West New Britain)"},
["giq"] = {"Green Gelao"},
["gir"] = {"Red Gelao"},
["gis"] = {"North Giziga"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"White Gelao"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"South Giziga"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Gurindji Kriol"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Madang Province)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Guinea Kpelle"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Chad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"East Germanic languages"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Middle High German (ca. 1050-1500)"},
["gml"] = {"Middle Low German"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"North Germanic languages"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"West Germanic languages"},
["gmx"] = {"Magoma"},
["gmy"] = {"Mycenaean Greek"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guanche"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Northern Gondi"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Western Bolivian Guaraní"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Old High German (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothic"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Ghanaian Pidgin English"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (Brazil)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Rajput Garasia"},
["grb"] = {"Grebo"},
["grc"] = {"Ancient Greek (to 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Southern Grebo"},
["grk"] = {"Greek languages"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Central Grebo"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Barclayville Grebo"},
["grz"] = {"Guramalum"},
["gse"] = {"Ghanaian Sign Language"},
["gsg"] = {"German Sign Language"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Guatemalan Sign Language"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Southwest Gbaya"},
["gsp"] = {"Wasembo"},
["gss"] = {"Greek Sign Language"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Paraguayan Guaraní"},
["guh"] = {"Guahibo"},
["gui"] = {"Eastern Bolivian Guaraní"},
["guk"] = {"Gumuz"},
["gul"] = {"Sea Island Creole English"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Guinean Sign Language"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (Paraguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Southern"},
["gya"] = {"Northwest Gbaya"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Guyanese Creole English"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Hanoi Sign Language"},
["hac"] = {"Gurani"},
["had"] = {"Hatam"},
["hae"] = {"Eastern Oromo"},
["haf"] = {"Haiphong Sign Language"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Hakka Chinese"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiian"},
["hax"] = {"Southern Haida"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Ancient Hebrew"},
["hbu"] = {"Habu"},
["hca"] = {"Andaman Creole Hindi"},
["hch"] = {"Huichol"},
["hdn"] = {"Northern Haida"},
["hds"] = {"Honduras Sign Language"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Northern Qiandong Miao"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Fiji Hindi"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hinduri"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittite"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Hieroglyphic Luwian"},
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},
["hmf"] = {"Hmong Don"},
["hmg"] = {"Southwestern Guiyang Hmong"},
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},
["hmn"] = {"Hmong", "Mong"},
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},
["hmq"] = {"Eastern Qiandong Miao"},
["hmr"] = {"Hmar"},
["hms"] = {"Southern Qiandong Miao"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},
["hmx"] = {"Hmong-Mien languages"},
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},
["hmz"] = {"Hmong Shua", "Sinicized Miao"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Southern Hindko"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Northern Hindko"},
["hns"] = {"Caribbean Hindustani"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Mari (Madang Province)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothi", "Haroti"},
["hok"] = {"Hokan languages"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Ho Chi Minh City Sign Language"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Horned Miao"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrik"},
["hrz"] = {"Harzani"},
["hsb"] = {"Upper Sorbian"},
["hsh"] = {"Hungarian Sign Language"},
["hsl"] = {"Hausa Sign Language"},
["hsn"] = {"Xiang Chinese"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Middle Hittite"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastec"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzib"},
["hvc"] = {"Haitian Vodoun Culture Language"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Western Armenian"},
["hyx"] = {"Armenian (family)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Icelandic Sign Language"},
["icr"] = {"Islander Creole English"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Indo-Portuguese"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Based Pidgin"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"Indo-Iranian languages"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"Ijo languages"},
["ijs"] = {"Southeast Ijo"},
["ike"] = {"Eastern Canadian Inuktitut"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Inuit Sign Language"},
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (Malaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (Philippines)"},
["ils"] = {"International Sign"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsian"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingush"},
["inj"] = {"Jungle Inga"},
["inl"] = {"Indonesian Sign Language"},
["inm"] = {"Minaean"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Indian Sign Language"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"Iranian languages"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"Iroquoian languages"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Italian Sign Language"},
["isg"] = {"Irish Sign Language"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Israeli Sign Language"},
["ist"] = {"Istriot"},
["isu"] = {"Isu (Menchum Division)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"Italic languages"},
["itd"] = {"Southern Tidung"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Judeo-Italian"},
["itl"] = {"Itelmen"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatec"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (Congo)"},
["izh"] = {"Ingrian"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Jamaican Creole English"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"New Caledonian Javanese"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Jambi Malay"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Judeo-Berber"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Jamaican Country Sign Language"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Judeo-Tat"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Judeo-Georgian"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Jhankot Sign Language"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Kaduna State)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Youle Jinuo"},
["jiv"] = {"Shuar"},
["jiy"] = {"Buyuan Jinuo"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Mobwa Karen"},
["jko"] = {"Kubo"},
["jkp"] = {"Paku Karen"},
["jkr"] = {"Koro (India)"},
["jks"] = {"Amami Koniya Sign Language"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Jamaican Sign Language"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (Nigeria)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (Nigeria)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Western Juxtlahuaca Mixtec"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Jordanian Sign Language"},
["jow"] = {"Jowulu"},
["jpa"] = {"Jewish Palestinian Aramaic"},
["jpr"] = {"Judeo-Persian"},
["jpx"] = {"Japanese (family)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Judeo-Arabic"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Japanese Sign Language"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Jumla Sign Language"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Caribbean Javanese"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Judeo-Yemeni Arabic"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpak", "Karakalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Central African Republic)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (Kenya)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"Karen languages"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardian"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Central African Republic)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (Indonesia)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantan"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},
["kcm"] = {"Gula (Central African Republic)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"Kordofanian languages"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaim"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Eastern Keres"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Democratic Republic of Congo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"West Kewa"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Northwestern Kolami"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (India)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kannada Kurumba"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnauri"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsari"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (Côte d'Ivoire)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhi", "Kutchi"},
["kfs"] = {"Bilaspuri"},
["kft"] = {"Kanjari"},
["kfu"] = {"Katkari"},
["kfv"] = {"Kurmukar"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Selangor Sign Language"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"Khoisan languages"},
["khj"] = {"Kuturmi"},
["khk"] = {"Halh Mongolian"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanese", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Democratic Republic of Congo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Eastern Parbate Kham"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (individual language)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Northeast Kiwai"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Coastal Konjo"},
["kjd"] = {"Southern Kiwai"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Highland Konjo"},
["kjl"] = {"Western Parbate Kham"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Harijan Kinnauri"},
["kjp"] = {"Pwo Eastern Karen"},
["kjq"] = {"Western Keres"},
["kjr"] = {"Kurudu"},
["kjs"] = {"East Kewa"},
["kjt"] = {"Phrae Pwo Karen"},
["kju"] = {"Kashaya"},
["kjv"] = {"Kaikavian Literary Language"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Mabaka Valley Kalinga"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (Nigeria)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Southern Dong"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papua New Guinea)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (Nigeria)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (India)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Northern Kurdish"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Karipúna Creole French"},
["kmw"] = {"Komo (Democratic Republic of Congo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Khorasani Turkish"},
["kna"] = {"Dera (Nigeria)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Central Kanuri"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Western Kanjobal"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (individual language)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (Guinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komi-Permyak"},
["kok"] = {"Konkani (macrolanguage)"},
["kol"] = {"Kol (Papua New Guinea)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraean"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komi-Zyrian"},
["kpw"] = {"Kobon"},
["kpx"] = {"Mountain Koiali"},
["kpy"] = {"Koryak"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Eastern Krahn"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Northern Kissi"},
["kqt"] = {"Klias River Kadazan"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karachay-Balkar"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelian"},
["krn"] = {"Sapo"},
["kro"] = {"Kru languages"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (Sudan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Western Krahn"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Southern Kalinga"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Southern Kisi"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"S'gaw Karen"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"North Muyu"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"South Muyu"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kituba (Democratic Republic of Congo)"},
["ktv"] = {"Eastern Katu"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Bas-Uélé District)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papua New Guinea)"},
["kuf"] = {"Western Katu"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumyk"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Upper Kuskokwim"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (Indonesia)"},
["kve"] = {"Kalabakan"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Korean Sign Language"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Geba Karen"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Lahta Karen", "Lahta"},
["kvu"] = {"Yinbaw Karen"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Yintale Karen", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["kwx"] = {"Khirwar"},
["kwy"] = {"San Salvador Kongo"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (Ethiopia)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Zayein Karen"},
["kxm"] = {"Northern Khmer"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papua New Guinea)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Northern Binukidnon"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Western Kayah"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Western Karaboro"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Tshopo District)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Southern Subanen"},
["lab"] = {"Linear A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladino"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Uganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Chad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lak"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Central Bontok"},
["lbl"] = {"Libon Bikol"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Libyan Sign Language"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Western Lawa"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Luri"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Democratic Republic of Congo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papua New Guinea)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lezghian"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (South Sudan)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (Indonesia)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"West-Central Limba"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligurian"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Liberian English"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (Guinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papua New Guinea)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Chad)"},
["llp"] = {"North Efate"},
["llq"] = {"Lolak"},
["lls"] = {"Lithuanian Sign Language"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"East Limba"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"South Lembata"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"West Lembata"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombard"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardic"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"South Central Banda"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (Côte d'Ivoire)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (Liberia)"},
["lon"] = {"Malawi Lomwe"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Louisiana Creole"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozi"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Northern Luri"},
["lre"] = {"Laurentian"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Southern Yamphu"},
["lrt"] = {"Larantuka Malay"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},
["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Latvian Sign Language"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Tibetan Sign Language"},
["lso"] = {"Laos Sign Language"},
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Trinidad and Tobago Sign Language"},
["lsv"] = {"Sivia Sign Language"},
["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Mauritian Sign Language"},
["ltc"] = {"Late Middle Chinese"},
["ltg"] = {"Latgalian"},
["lth"] = {"Thur"},
["lti"] = {"Leti (Indonesia)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludian"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Southern Luri"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Standard Latvian"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"White Lachi"},
["lwl"] = {"Eastern Lawa"},
["lwm"] = {"Laomian"},
["lwo"] = {"Luwo"},
["lws"] = {"Malawian Sign Language"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Literary Chinese"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"San Jerónimo Tecóatl Mazatec"},
["mab"] = {"Yutanduchi Mixtec"},
["mad"] = {"Madurese"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithili"},
["maj"] = {"Jalapa De Díaz Mazatec"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"Austronesian languages"},
["maq"] = {"Chiquihuitlán Mazatec"},
["mas"] = {"Masai"},
["mat"] = {"San Francisco Matlatzinca"},
["mau"] = {"Huautla Mazatec"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"North Moluccan Malay"},
["maz"] = {"Central Mazahua"},
["mba"] = {"Higaonon"},
["mbb"] = {"Western Bukidnon Manobo"},
["mbc"] = {"Macushi"},
["mbd"] = {"Dibabawon Manobo"},
["mbe"] = {"Molale"},
["mbf"] = {"Baba Malay"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Ilianen Manobo"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Sarangani Manobo"},
["mbt"] = {"Matigsalug Manobo"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (East Sepik Province)"},
["mby"] = {"Memoni"},
["mbz"] = {"Amoltepec Mixtec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Itundujia Mixtec"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Malaccan Creole Portuguese"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Cameroon Mambila"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Chad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"South Watut"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (Nigeria)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papua New Guinea)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Chad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Maltese Sign Language"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papua New Guinea)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Santa Lucía Monteverde Mixtec"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (Ethiopia)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Southwestern Tlaxiaco Mixtec"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Central Melanau"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Kedah Malay"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"North Mofu"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi South"},
["mfn"] = {"Cross River Mbembe"},
["mfo"] = {"Mbe"},
["mfp"] = {"Makassar Malay"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Mexican Sign Language"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Middle Irish (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Eastern Magar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (India)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (Zambia)"},
["mhp"] = {"Balinese Malay"},
["mhq"] = {"Mandan"},
["mhr"] = {"Eastern Mari"},
["mhs"] = {"Buru (Indonesia)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Mor Islands)"},
["mia"] = {"Miami"},
["mib"] = {"Atatláhuca Mixtec"},
["mic"] = {"Mi'kmaq", "Micmac"},
["mid"] = {"Mandaic"},
["mie"] = {"Ocotepec Mixtec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"San Miguel El Grande Mixtec"},
["mih"] = {"Chayuco Mixtec"},
["mii"] = {"Chigmecatitlán Mixtec"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Peñoles Mixtec"},
["mim"] = {"Alacatlatzala Mixtec"},
["min"] = {"Minangkabau"},
["mio"] = {"Pinotepa Nacional Mixtec"},
["mip"] = {"Apasco-Apoala Mixtec"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"Uncoded languages"},
["mit"] = {"Southern Puebla Mixtec"},
["miu"] = {"Cacaloxtepec Mixtec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtepec Mixtec"},
["miy"] = {"Ayutla Mixtec"},
["miz"] = {"Coatzospan Mixtec"},
["mjb"] = {"Makalero"},
["mjc"] = {"San Juan Colorado Mixtec"},
["mjd"] = {"Northwest Maidu"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papua New Guinea)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mahican"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (China)"},
["mkh"] = {"Mon-Khmer languages"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilese"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Kupang Malay"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Silacayoapan Mixtec"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kituba (Congo)"},
["mkx"] = {"Kinamiging Manobo"},
["mky"] = {"East Makian"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Western Maninkakan"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Michoacán Mazahua"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"North Ambrym"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Western Xiangxi Miao"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Manchu"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundani"},
["mng"] = {"Eastern Mnong"},
["mnh"] = {"Mono (Democratic Republic of Congo)"},
["mni"] = {"Manipuri"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinka"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Southern Mnong"},
["mno"] = {"Manobo languages"},
["mnp"] = {"Min Bei Chinese"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (USA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilian"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawk"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mopán Maya"},
["moq"] = {"Mor (Bomberai Peninsula)"},
["mor"] = {"Moro"},
["mos"] = {"Mossi"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Chad)"},
["mpl"] = {"Middle Watut"},
["mpm"] = {"Yosondúa Mixtec"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidian"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (Indonesia)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Kota Bangun Kutai Malay"},
["mqh"] = {"Tlazoyaltepec Mixtec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"South Marquesan"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"West Makian"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Western Magar"},
["mre"] = {"Martha's Vineyard Sign Language"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Western Mari"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockese"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"North Marquesan"},
["mrr"] = {"Maria (India)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Central"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Yucatec Maya Sign Language"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Masikoro Malagasy"},
["msi"] = {"Sabah Malay"},
["msj"] = {"Ma (Democratic Republic of Congo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Mongolian Sign Language"},
["mss"] = {"West Masela"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Cotabato Manobo"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Solomon Islands)"},
["mtf"] = {"Murik (Papua New Guinea)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papua New Guinea)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Tututepec Mixtec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Southern Binukidnon"},
["mtx"] = {"Tidaá Mixtec"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Mednyj Aleut"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Multiple languages"},
["mum"] = {"Maiwala"},
["mun"] = {"Munda languages"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Eastern Xiangxi Miao"},
["mur"] = {"Murle"},
["mus"] = {"Creek"},
["mut"] = {"Western Muria"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (Pakistan)"},
["mvf"] = {"Peripheral Mongolian"},
["mvg"] = {"Yucuañe Mixtec"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (Australia)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Indus Kohistani"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Kita Maninkakan"},
["mwl"] = {"Mirandese"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Central Maewo"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Northwest Oaxaca Mixtec"},
["mxb"] = {"Tezoatlán Mixtec"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabic"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (Indonesia)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (Malaysia)"},
["mxs"] = {"Huitepec Mixtec"},
["mxt"] = {"Jamiltepec Mixtec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Metlatónoc Mixtec"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Southeastern Nochixtlán Mixtec"},
["mxz"] = {"Central Masela"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"Mayan languages"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Classical Mandaic"},
["mza"] = {"Santa María Zacatepec Mixtec"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Madagascar Sign Language"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Monastic Sign Language"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Ixcatlán Mazatec"},
["mzj"] = {"Manya"},
["mzk"] = {"Nigeria Mambila"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderani"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanese"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Mozambican Sign Language"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Southern Nambikuára"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Pidgin"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Min Nan Chinese"},
["nao"] = {"Naaba"},
["nap"] = {"Neapolitan"},
["naq"] = {"Khoekhoe", "Nama (Namibia)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Coatepec Nahuatl"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Namibian Sign Language"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Southern Ngbandi"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Central Nicobarese"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Central Huasteca Nahuatl"},
["nci"] = {"Classical Nahuatl"},
["ncj"] = {"Northern Puebla Nahuatl"},
["nck"] = {"Na-kara"},
["ncl"] = {"Michoacán Nahuatl"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Northern Katang"},
["ncr"] = {"Ncane"},
["ncs"] = {"Nicaraguan Sign Language"},
["nct"] = {"Chothe Naga"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Central Puebla Nahuatl"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndau"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvian"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Low German", "Low Saxon"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Eastern Ngad'a"},
["neb"] = {"Toura (Côte d'Ivoire)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Neo-Hittite"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"North Central Mixe"},
["ner"] = {"Yahadian"},
["nes"] = {"Bhoti Kinnauri"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Northern Ngbandi"},
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},
["ngd"] = {"Ngando (Central African Republic)"},
["nge"] = {"Ngemba"},
["ngf"] = {"Trans-New Guinea languages"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Ngatik Men's Creole"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Guerrero Nahuatl"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Tabasco Nahuatl"},
["nhd"] = {"Chiripá", "Ava Guaraní"},
["nhe"] = {"Eastern Huasteca Nahuatl"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Tetelcingo Nahuatl"},
["nhh"] = {"Nahari"},
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},
["nhm"] = {"Morelos Nahuatl"},
["nhn"] = {"Central Nahuatl"},
["nho"] = {"Takuu"},
["nhp"] = {"Isthmus-Pajapan Nahuatl"},
["nhq"] = {"Huaxcaleca Nahuatl"},
["nhr"] = {"Naro"},
["nht"] = {"Ometepec Nahuatl"},
["nhu"] = {"Noone"},
["nhv"] = {"Temascaltepec Nahuatl"},
["nhw"] = {"Western Huasteca Nahuatl"},
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},
["nhy"] = {"Northern Oaxaca Nahuatl"},
["nhz"] = {"Santa María La Alta Nahuatl"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"Niger-Kordofanian languages"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Southern Nicobarese"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasan"},
["niq"] = {"Nandi"},
["nir"] = {"Nimboran"},
["nis"] = {"Nimi"},
["nit"] = {"Southeastern Kolami"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyak"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Nocte Naga"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Lotha Naga"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Liangmai Naga"},
["njo"] = {"Ao Naga"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Pidgin"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Khoibu Naga"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Inpui Naga"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Khezha Naga"},
["nki"] = {"Thangal Naga"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"North Asmat"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi and Zambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"East Nyala"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Lao Naga"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Maram Naga"},
["nmb"] = {"Big Nambas", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Mzieme Naga"},
["nmf"] = {"Tangkhul Naga (India)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Monsang Naga"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Central African Republic)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Moyon Naga"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Northeast Maidu"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papua New Guinea)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"West Ambae"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Maring Naga"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"North Nuaulu"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Northern Rengma Naga"},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Wancho Naga"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (Australia)"},
["nnw"] = {"Southern Nuni"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Northern Thai"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogai"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Old Norse"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Eastern Nisu"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Ponyo-Gongwang Naga"},
["nph"] = {"Phom Naga"},
["npi"] = {"Nepali (individual language)"},
["npl"] = {"Southeastern Puebla Nahuatl"},
["npn"] = {"Mondropolon"},
["npo"] = {"Pochuri Naga"},
["nps"] = {"Nipsan"},
["npu"] = {"Puimei Naga"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Southern Nago"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Kyan-Karyaw Naga"},
["nqt"] = {"Nteng"},
["nqy"] = {"Akyaung Ari Naga"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Noric"},
["nre"] = {"Southern Rengma Naga"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Chokri Naga"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Norn"},
["nrp"] = {"North Picene"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Northern Kalapuya"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Sangtam Naga"},
["nsb"] = {"Lower Nossob"},
["nsc"] = {"Nshi"},
["nsd"] = {"Southern Nisu"},
["nse"] = {"Nsenga"},
["nsf"] = {"Northwestern Nisu"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Nigerian Sign Language"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Norwegian Sign Language"},
["nsm"] = {"Sumi Naga"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},
["nsp"] = {"Nepalese Sign Language"},
["nsq"] = {"Northern Sierra Miwok"},
["nsr"] = {"Maritime Sign Language"},
["nss"] = {"Nali"},
["nst"] = {"Tase Naga"},
["nsu"] = {"Sierra Negra Nahuatl"},
["nsv"] = {"Southwestern Nisu"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Northern Tidung"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Northern Tepehuan"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Tangkhul Naga (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"Nubian languages"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Northern Nuni"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Tlamacazapa Nahuatl"},
["nvh"] = {"Nasarian"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Southwest Tanna"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Middle Newar"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Democratic Republic of Congo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Koki Naga"},
["nxl"] = {"South Nuaulu"},
["nxm"] = {"Numidian"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (Sudan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"New Zealand Sign Language"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},
["oav"] = {"Old Avar"},
["obi"] = {"Obispeño"},
["obk"] = {"Southern Bontok"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Old Burmese"},
["obt"] = {"Old Breton"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Old Chinese"},
["ocm"] = {"Old Cham"},
["oco"] = {"Old Cornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Old Dutch"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Old Frisian"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Old Georgian"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Old Hittite"},
["ohu"] = {"Old Hungarian"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"Northwestern Ojibwa"},
["ojc"] = {"Central Ojibwa"},
["ojg"] = {"Eastern Ojibwa"},
["ojp"] = {"Old Japanese"},
["ojs"] = {"Severn Ojibwa"},
["ojv"] = {"Ontong Java"},
["ojw"] = {"Western Ojibwa"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Southwestern Edo)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Old Kentish Sign Language"},
["okm"] = {"Middle Korean (10th-16th cent.)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Old Korean (3rd-9th cent.)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Northwestern Edo)"},
["okz"] = {"Old Khmer"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvi"},
["olr"] = {"Olrat"},
["olt"] = {"Old Lithuanian"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"East Ambae"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Old Manipuri"},
["omq"] = {"Oto-Manguean languages"},
["omr"] = {"Old Marathi"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"Omotic languages"},
["omw"] = {"South Tairora"},
["omx"] = {"Old Mon"},
["omy"] = {"Old Malay"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"Northern One"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Old Nubian"},
["onx"] = {"Onin Based Pidgin"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Old Ossetic"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Old Russian"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Old Sundanese"},
["oso"] = {"Ososo"},
["osp"] = {"Old Spanish"},
["ost"] = {"Osatu"},
["osu"] = {"Southern One"},
["osx"] = {"Old Saxon"},
["ota"] = {"Ottoman Turkish (1500-1928)"},
["otb"] = {"Old Tibetan"},
["otd"] = {"Ot Danum"},
["ote"] = {"Mezquital Otomi"},
["oti"] = {"Oti"},
["otk"] = {"Old Turkish"},
["otl"] = {"Tilapa Otomi"},
["otm"] = {"Eastern Highland Otomi"},
["otn"] = {"Tenango Otomi"},
["oto"] = {"Otomian languages"},
["otq"] = {"Querétaro Otomi"},
["otr"] = {"Otoro"},
["ots"] = {"Estado de México Otomi"},
["ott"] = {"Temoaya Otomi"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Texcatepec Otomi"},
["oty"] = {"Old Tamil"},
["otz"] = {"Ixtenco Otomi"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Old Uighur"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalian", "Övdalian"},
["owi"] = {"Owiniga"},
["owl"] = {"Old Welsh"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"Papuan languages"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Northern Paiute"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauan"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawnee"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Mezontla Popoloca"},
["pbf"] = {"Coyotepec Popoloca"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (Nigeria)"},
["pbm"] = {"Puebla Mazatec"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Central Pame"},
["pbt"] = {"Southern Pashto"},
["pbu"] = {"Northern Pashto"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papua New Guinea)"},
["pca"] = {"Santa Inés Ahuatempan Popoloca"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picard"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Nigerian Pidgin"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Pennsylvania German"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Peranakan Indonesian"},
["peb"] = {"Eastern Pomo"},
["ped"] = {"Mala (Papua New Guinea)"},
["pee"] = {"Taje"},
["pef"] = {"Northeastern Pomo"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Northern Pomo"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},
["pep"] = {"Kunja"},
["peq"] = {"Southern Pomo"},
["pes"] = {"Iranian Persian"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Eastern Penan"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Sudanese Creole Arabic"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Primitive Irish"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Papua New Guinean Sign Language"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"Philippine languages"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"Phoenician"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Phu Thai"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavani"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapese"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatan"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Pakistan Sign Language"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Central Palawano"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"Central Malayo-Polynesian languages"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Kohistani Shina"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Oluta Popoluca"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},
["plt"] = {"Plateau Malagasy"},
["plu"] = {"Palikúr"},
["plv"] = {"Southwest Palawano"},
["plw"] = {"Brooke's Point Palawano"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Northern Pumi"},
["pmj"] = {"Southern Pumi"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Northern Pame"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piemontese"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Plains Miwok"},
["pmx"] = {"Poumei Naga"},
["pmy"] = {"Papuan Malay"},
["pmz"] = {"Southern Pame"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Western Panjabi"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Western Penan"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontic"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Central African Republic)"},
["poc"] = {"Poqomam"},
["poe"] = {"San Juan Atzingo Popoloca"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Highland Popoluca"},
["pok"] = {"Pokangá"},
["pom"] = {"Southeastern Pomo"},
["pon"] = {"Pohnpeian"},
["poo"] = {"Central Pomo"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Texistepec Popoluca"},
["pos"] = {"Sayula Popoluca"},
["pot"] = {"Potawatomi"},
["pov"] = {"Upper Guinea Crioulo"},
["pow"] = {"San Felipe Otlaltepec Popoloca"},
["pox"] = {"Polabian"},
["poy"] = {"Pogolo"},
["poz"] = {"Malayo-Polynesian languages"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"San Luís Temalacayuca Popoloca"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["prc"] = {"Parachi"},
["prd"] = {"Parsi-Dari"},
["pre"] = {"Principense"},
["prf"] = {"Paranan"},
["prg"] = {"Prussian"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Peruvian Sign Language"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Dari", "Afghan Persian"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Providencia Sign Language"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Iranian Sign Language", "Persian Sign Language"},
["psd"] = {"Plains Indian Sign Language"},
["pse"] = {"Central Malay"},
["psg"] = {"Penang Sign Language"},
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},
["psl"] = {"Puerto Rican Sign Language"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Polish Sign Language"},
["psp"] = {"Philippine Sign Language"},
["psq"] = {"Pasi"},
["psr"] = {"Portuguese Sign Language"},
["pss"] = {"Kaulong"},
["pst"] = {"Central Pashto"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patani"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Western Highland Purepecha"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatese"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Pwo Western Karen"},
["pwr"] = {"Powari"},
["pww"] = {"Pwo Northern Karen"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Huallaga Huánuco Quechua"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Calderón Highland Quichua"},
["quf"] = {"Lambayeque Quechua"},
["qug"] = {"Chimborazo Highland Quichua"},
["quh"] = {"South Bolivian Quechua"},
["qui"] = {"Quileute"},
["quk"] = {"Chachapoyas Quechua"},
["qul"] = {"North Bolivian Quechua"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Southern Pastaza Quechua"},
["quq"] = {"Quinqui"},
["qur"] = {"Yanahuanca Pasco Quechua"},
["qus"] = {"Santiago del Estero Quichua"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Tena Lowland Quichua"},
["qux"] = {"Yauyos Quechua"},
["quy"] = {"Ayacucho Quechua"},
["quz"] = {"Cusco Quechua"},
["qva"] = {"Ambo-Pasco Quechua"},
["qvc"] = {"Cajamarca Quechua"},
["qve"] = {"Eastern Apurímac Quechua"},
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},
["qvi"] = {"Imbabura Highland Quichua"},
["qvj"] = {"Loja Highland Quichua"},
["qvl"] = {"Cajatambo North Lima Quechua"},
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},
["qvn"] = {"North Junín Quechua"},
["qvo"] = {"Napo Lowland Quechua"},
["qvp"] = {"Pacaraos Quechua"},
["qvs"] = {"San Martín Quechua"},
["qvw"] = {"Huaylla Wanca Quechua"},
["qvy"] = {"Queyu"},
["qvz"] = {"Northern Pastaza Quichua"},
["qwa"] = {"Corongo Ancash Quechua"},
["qwc"] = {"Classical Quechua"},
["qwe"] = {"Quechuan (family)"},
["qwh"] = {"Huaylas Ancash Quechua"},
["qwm"] = {"Kuman (Russia)"},
["qws"] = {"Sihuas Ancash Quechua"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Chiquián Ancash Quechua"},
["qxc"] = {"Chincha Quechua"},
["qxh"] = {"Panao Huánuco Quechua"},
["qxl"] = {"Salasaca Highland Quichua"},
["qxn"] = {"Northern Conchucos Ancash Quechua"},
["qxo"] = {"Southern Conchucos Ancash Quechua"},
["qxp"] = {"Puno Quechua"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Cañar Highland Quichua"},
["qxs"] = {"Southern Qiang"},
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},
["qxu"] = {"Arequipa-La Unión Quechua"},
["qxw"] = {"Jauja Wanca Quechua"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Western Meohang"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthani"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Northern Bontok"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Réunion Creole French"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Romano-Greek"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnol"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Southern Roglai"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (India)"},
["rib"] = {"Bribri Sign Language"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Carpathian Romani"},
["rmd"] = {"Traveller Danish"},
["rme"] = {"Angloromani"},
["rmf"] = {"Kalo Finnish Romani"},
["rmg"] = {"Traveller Norwegian"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Baltic Romani"},
["rmm"] = {"Roma"},
["rmn"] = {"Balkan Romani"},
["rmo"] = {"Sinte Romani"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Romanian Sign Language"},
["rmt"] = {"Domari"},
["rmu"] = {"Tavringer Romani"},
["rmv"] = {"Romanova"},
["rmw"] = {"Welsh Romani"},
["rmx"] = {"Romam"},
["rmy"] = {"Vlax Romani"},
["rmz"] = {"Marma"},
["rnb"] = {"Brunca Sign Language"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"Romance languages"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Northern Roglai"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romany"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Romano-Serbian"},
["rsk"] = {"Ruthenian", "Rusnak"},
["rsl"] = {"Russian Sign Language"},
["rsm"] = {"Miriwoong Sign Language"},
["rsn"] = {"Rwandan Sign Language"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yurats"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusyn"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro Romanian"},
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},
["ruq"] = {"Megleno Romanian"},
["rut"] = {"Rutul"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (Nigeria)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Uganda)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (India)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Northern Amami-Oshima"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Central Okinawan"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papua New Guinea)"},
["sbd"] = {"Southern Samo"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"San Miguel Creole French"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Sri Lankan Creole Malay"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Sicilian"},
["sco"] = {"Scots"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"North Slavey"},
["sct"] = {"Southern Katang"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sassarese Sardinian"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Southern Kurdish"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Saudi Arabian Sign Language"},
["sdn"] = {"Gallurese Sardinian"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"Eastern Sudanic languages"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},
["sfe"] = {"Eastern Subanen"},
["sfm"] = {"Small Flowery Miao"},
["sfs"] = {"South African Sign Language"},
["sfw"] = {"Sehwi"},
["sga"] = {"Old Irish (to 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Swiss-German Sign Language"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Sign languages"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitian"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Sierra Leone Sign Language"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Chadian Arabic"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Akkala Sami"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papua New Guinea)"},
["sio"] = {"Siouan languages"},
["sip"] = {"Sikkimese"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"Sino-Tibetan languages"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Kildin Sami"},
["sje"] = {"Pite Sami"},
["sjg"] = {"Assangori"},
["sjk"] = {"Kemi Sami"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Ter Sami"},
["sju"] = {"Ume Sami"},
["sjw"] = {"Shawnee"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Southern Sierra Miwok"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Sakalava Malagasy"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Skepi Creole Dutch"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"Slavic languages"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Swiss-Italian Sign Language"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Southern Puget Sound Salish"},
["sli"] = {"Lower Silesian"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Singapore Sign Language"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Southern Sami"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smk"] = {"Bolinao"},
["sml"] = {"Central Sama"},
["smm"] = {"Musasa"},
["smn"] = {"Inari Sami"},
["smp"] = {"Samaritan"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Skolt Sami"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Democratic Republic of Congo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Southern Ma'di"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Thai Song"},
["sob"] = {"Sobei"},
["soc"] = {"So (Democratic Republic of Congo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdian"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"Songhai languages"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Southern Thai"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (Indonesia)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papua New Guinea)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Loreto-Ucayali Spanish"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"South Picene"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"Albanian languages"},
["sqk"] = {"Albanian Sign Language"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Siculo Arabic"},
["sqs"] = {"Sri Lankan Sign Language"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Logudorese Sardinian"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Campidanese Sardinian"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Southern Sorsoganon"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"Nilo-Saharan languages"},
["ssb"] = {"Southern Sama"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Shihhi Arabic"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Western Sisaala"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Spanish Sign Language"},
["ssq"] = {"So'a"},
["ssr"] = {"Swiss-French Sign Language"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Northern Subanen"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stoney"},
["stp"] = {"Southeastern Tepehuan"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Straits Salish"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalese"},
["sty"] = {"Siberian Tatar"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Western Subanon"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerian"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Vincentian Creole English"},
["sve"] = {"Serili"},
["svk"] = {"Slovakian Sign Language"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvian"},
["swb"] = {"Maore Comorian"},
["swc"] = {"Congo Swahili"},
["swf"] = {"Sere"},
["swg"] = {"Swabian"},
["swh"] = {"Swahili (individual language)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Swedish Sign Language"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanian"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Southern Kalapuya"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptic"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Upper Saxon"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Central Subanen"},
["syc"] = {"Classical Syriac"},
["syd"] = {"Samoyedic languages"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Syriac"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Al-Sayyid Bedouin Sign Language"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Silesian"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Solomon Islands Sign Language"},
["szv"] = {"Isu (Fako Division)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Lower Tanana"},
["tab"] = {"Tabassaran"},
["tac"] = {"Lowland Tarahumara"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"Tai languages"},
["taj"] = {"Eastern Tamang"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Central Tarahumara"},
["tas"] = {"Tay Boi"},
["tau"] = {"Upper Tanana"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"North Tairora"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"Tibeto-Burman languages"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Southern Tutchone"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Turks And Caicos Creole English"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Torres Strait Creole", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Southeastern Tarahumara"},
["tcw"] = {"Tecpatlán Totonac"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Thado Chin"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Western Tamang"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Tandroy-Mahafaly Malagasy"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelche"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (Colombia)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (USA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Eastern Gorkha Tamang"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Tobagonian Creole English"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Central Tagbanwa"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Northern Tarahumara"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tidikelt Tamazight"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Southern Tiwa"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Northern Tujia"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Temacine Tamazight"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Southern Tujia"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Tesaka Malagasy"},
["tkl"] = {"Tokelau"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhur"},
["tks"] = {"Takestani"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Upper Necaxa Totonac"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Southwestern Tepehuan"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Yecuatla Totonac"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Chad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (Indonesia)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Western Tunebo"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"North Tanna"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Coyutla Totonac"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (Zambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Xicotepec De Juárez Totonac"},
["top"] = {"Papantla Totonac"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Highland Totonac"},
["tou"] = {"Tho"},
["tov"] = {"Upper Taromi"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Pisaflores Tepehua"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tlachichilco Tepehua"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Western Totonac"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"East Tarangan"},
["trf"] = {"Trinidadian Creole English"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"Turkic languages"},
["trl"] = {"Traveller Scottish"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"San Martín Itunyoso Triqui"},
["trr"] = {"Taushiro"},
["trs"] = {"Chicahuaxtla Triqui"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Tringgus-Sembaan Bidayuh"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonian"},
["tse"] = {"Tunisian Sign Language"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},
["tsp"] = {"Northern Toussian"},
["tsq"] = {"Thai Sign Language"},
["tsr"] = {"Akei"},
["tss"] = {"Taiwan Sign Language"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Tebul Sign Language"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Upper Ta'oih"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Northern Tutchone"},
["ttn"] = {"Towei"},
["tto"] = {"Lower Ta'oih"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tawallammat Tamajaq"},
["ttr"] = {"Tera"},
["tts"] = {"Northeastern Thai"},
["ttt"] = {"Muslim Tat"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Central Tunebo"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbuka"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"Tupi languages"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"Altaic languages"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"Tungus languages"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Southeast Ambrym"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Tutsa Naga"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timor Pidgin"},
["twa"] = {"Twana"},
["twb"] = {"Western Tawbuid"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (Indonesia)"},
["twf"] = {"Northern Tiwa"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Southwestern Tarahumara"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharian B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thracian"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"West Tarangan"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessian"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Tanosy Malagasy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvinian"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Tanzanian Sign Language"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Central Atlas Tamazight"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykh"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurt"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Ugaritic"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Ugandan Sign Language"},
["ugo"] = {"Ugong"},
["ugy"] = {"Uruguayan Sign Language"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (India)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Ukrainian Sign Language"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithian"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinian"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"North Watut"},
["und"] = {"Undetermined"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"Uralic languages"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papua New Guinea)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Southern Paiute"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Solomon Islands)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"West Uvean", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Northern Uzbek"},
["uzs"] = {"Southern Uzbek"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Southeast Babar"},
["vbk"] = {"Southwestern Bontok"},
["vec"] = {"Venetian"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Veps"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},
["vic"] = {"Virgin Islands Creole English"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Korlai Creole Portuguese"},
["vkt"] = {"Tenggarong Kutai Malay"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Juxtlahuaca Mixtec"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"East Masela"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Ixtayutla Mixtec"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mitlatongo Mixtec"},
["vmp"] = {"Soyaltepec Mazatec"},
["vmq"] = {"Soyaltepec Mixtec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Valley Maidu"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Tamazola Mixtec"},
["vmy"] = {"Ayautla Mazatec"},
["vmz"] = {"Mazatlán Mazatec"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voro"},
["vot"] = {"Votic"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Moldova Sign Language"},
["vsl"] = {"Venezuelan Sign Language"},
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (China)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (Philippines)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"West Bengal Sign Language"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Western"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"Sorbian languages"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroon Pidgin"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"North Wahgi"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Southern Toussian"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Mwali Comorian"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (Sudan)"},
["wlm"] = {"Middle Welsh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisian"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (Ghana)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (Nigeria)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Western Minyag"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (Indonesia)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papua New Guinea)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Ndzwani Comorian"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Northern"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaian"},
["wof"] = {"Gambian Wolof"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (Nigeria)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hanga Hundi"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (Australia)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Wu Chinese"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Western Fijian"},
["xaa"] = {"Andalusian Arabic"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequian"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmyk", "Oirat"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalachee"},
["xaq"] = {"Aquitanian"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Lower Burdekin"},
["xbc"] = {"Bactrian"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Middle Breton"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarian"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbric"},
["xcc"] = {"Camunic"},
["xce"] = {"Celtiberian"},
["xcg"] = {"Cisalpine Gaulish"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Classical Armenian"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmian"},
["xcr"] = {"Carian"},
["xct"] = {"Classical Tibetan"},
["xcu"] = {"Curonian"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dacian"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomite"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Malayic Dayak"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscan"},
["xga"] = {"Galatian"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"Mongolian languages"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Harami"},
["xhc"] = {"Hunnic"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Middle Khmer (1400 to 1850 CE)"},
["xhr"] = {"Hernican"},
["xht"] = {"Hattic"},
["xhu"] = {"Hurrian"},
["xhv"] = {"Khua"},
["xib"] = {"Iberian"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrian"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Indus Valley Language"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Northern Nago"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Mendalam Kayan"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Kenyan Sign Language"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Mainstream Kenyah"},
["xkn"] = {"Kayan River Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lycian"},
["xld"] = {"Lydian"},
["xle"] = {"Lemnian"},
["xlg"] = {"Ligurian (Ancient)"},
["xli"] = {"Liburnian"},
["xln"] = {"Alanic"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontic"},
["xls"] = {"Lusitanian"},
["xlu"] = {"Cuneiform Luwian"},
["xly"] = {"Elymian"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Median"},
["xmf"] = {"Mingrelian"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Ancient Macedonian"},
["xml"] = {"Malaysian Sign Language"},
["xmm"] = {"Manado Malay"},
["xmn"] = {"Manichaean Middle Persian"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitic"},
["xms"] = {"Moroccan Sign Language"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},
["xmw"] = {"Tsimihety Malagasy"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Ancient North Arabian"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"Na-Dene languages"},
["xng"] = {"Middle Mongolian"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Northern Kankanay"},
["xno"] = {"Anglo-Norman"},
["xnq"] = {"Ngoni (Mozambique)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (Sudan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Oyster Bay Tasmanian"},
["xpe"] = {"Liberia Kpelle"},
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},
["xpg"] = {"Phrygian"},
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Port Sorell Tasmanian"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Mohegan-Pequot"},
["xpr"] = {"Parthian"},
["xps"] = {"Pisidian"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punic"},
["xpv"] = {"Northern Tasmanian", "Tommeginne"},
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},
["xpx"] = {"Southwestern Tasmanian", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Bruny Island Tasmanian"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Eastern Karaboro"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazic"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetic"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythian"},
["xsd"] = {"Sidetic"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"South Slavey"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (Nigeria)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovian"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Alcozauca Mixtec"},
["xtb"] = {"Chazumba Mixtec"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Diuxi-Tilantongo Mixtec"},
["xte"] = {"Ketengban"},
["xtg"] = {"Transalpine Gaulish"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Sinicahua Mixtec"},
["xtj"] = {"San Juan Teita Mixtec"},
["xtl"] = {"Tijaltepec Mixtec"},
["xtm"] = {"Magdalena Peñasco Mixtec"},
["xtn"] = {"Northern Tlaxiaco Mixtec"},
["xto"] = {"Tokharian A"},
["xtp"] = {"San Miguel Piedras Mixtec"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Early Tripuri"},
["xts"] = {"Sindihui Mixtec"},
["xtt"] = {"Tacahua Mixtec"},
["xtu"] = {"Cuyamecalco Mixtec"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Yoloxochitl Mixtec"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrian"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Upper Umpqua"},
["xur"] = {"Urartian"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetic"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalic"},
["xvo"] = {"Volscian"},
["xvs"] = {"Vestinian"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Western Xwla Gbe"},
["xwo"] = {"Written Oirat"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (Ghana)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalian"},
["xzp"] = {"Ancient Zapotec"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Pass Valley Yali"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Democratic Republic of Congo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"West Yugur"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Yilan Creole"},
["yda"] = {"Yanda"},
["ydd"] = {"Eastern Yiddish"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanic"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Yolŋu Sign Language"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Judeo-Iraqi Arabic"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Yan-nhaŋu Sign Language"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Western Yiddish"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Yimchungru Naga"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"North Awyu"},
["yis"] = {"Yis"},
["yit"] = {"Eastern Lalu"},
["yiu"] = {"Awu"},
["yiv"] = {"Northern Nisu"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Northern Yukaghir"},
["ykh"] = {"Khamnigan Mongol"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Angguruk Yali"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Southern Muji"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysian"},
["ymx"] = {"Northern Muji"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Naukan Yupik"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"Yupik languages"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenets"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassic"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Yugoslavian Sign Language"},
["ysm"] = {"Myanmar Sign Language"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (China)"},
["ysp"] = {"Southern Lolopo"},
["ysr"] = {"Sirenik Yupik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Yucatec Maya"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Judeo-Tripolitanian Arabic"},
["yue"] = {"Yue Chinese", "Cantonese"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (Nigeria)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Morobe Province)"},
["yux"] = {"Southern Yukaghir"},
["yuy"] = {"East Yugur"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Western Lalu"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Central Lalo"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Sandaun Province)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Sierra de Juárez Zapotec"},
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},
["zac"] = {"Ocotlán Zapotec"},
["zad"] = {"Cajonos Zapotec"},
["zae"] = {"Yareni Zapotec"},
["zaf"] = {"Ayoquesco Zapotec"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Isthmus Zapotec"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Miahuatlán Zapotec"},
["zao"] = {"Ozolotepec Zapotec"},
["zap"] = {"Zapotec"},
["zaq"] = {"Aloápam Zapotec"},
["zar"] = {"Rincón Zapotec"},
["zas"] = {"Santo Domingo Albarradas Zapotec"},
["zat"] = {"Tabaa Zapotec"},
["zau"] = {"Zangskari"},
["zav"] = {"Yatzachi Zapotec"},
["zaw"] = {"Mitla Zapotec"},
["zax"] = {"Xadani Zapotec"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Central Berawan"},
["zbe"] = {"East Berawan"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Bauchi State)"},
["zbw"] = {"West Berawan"},
["zca"] = {"Coatecas Altas Zapotec"},
["zcd"] = {"Las Delicias Zapotec"},
["zch"] = {"Central Hongshuihe Zhuang"},
["zdj"] = {"Ngazidja Comorian"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Eastern Hongshuihe Zhuang"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Guibei Zhuang"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zgm"] = {"Minz Zhuang"},
["zgn"] = {"Guibian Zhuang"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Dai Zhuang"},
["zhi"] = {"Zhire"},
["zhn"] = {"Nong Zhuang"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Chinese (family)"},
["zia"] = {"Zia"},
["zib"] = {"Zimbabwe Sign Language"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmian"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"São Paulo Kaingáng"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinian"},
["zkz"] = {"Khazar"},
["zla"] = {"Zula"},
["zle"] = {"East Slavic languages"},
["zlj"] = {"Liujiang Zhuang"},
["zlm"] = {"Malay (individual language)"},
["zln"] = {"Lianshan Zhuang"},
["zlq"] = {"Liuqian Zhuang"},
["zls"] = {"South Slavic languages"},
["zlu"] = {"Zul"},
["zlw"] = {"West Slavic languages"},
["zma"] = {"Manda (Australia)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Negeri Sembilan Malay"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Democratic Republic of Congo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"Zande languages"},
["zne"] = {"Zande (individual language)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Copainalá Zoque"},
["zoh"] = {"Chimalapa Zoque"},
["zom"] = {"Zou"},
["zoo"] = {"Asunción Mixtepec Zapotec"},
["zoq"] = {"Tabasco Zoque"},
["zor"] = {"Rayón Zoque"},
["zos"] = {"Francisco León Zoque"},
["zpa"] = {"Lachiguiri Zapotec"},
["zpb"] = {"Yautepec Zapotec"},
["zpc"] = {"Choapan Zapotec"},
["zpd"] = {"Southeastern Ixtlán Zapotec"},
["zpe"] = {"Petapa Zapotec"},
["zpf"] = {"San Pedro Quiatoni Zapotec"},
["zpg"] = {"Guevea De Humboldt Zapotec"},
["zph"] = {"Totomachapan Zapotec"},
["zpi"] = {"Santa María Quiegolani Zapotec"},
["zpj"] = {"Quiavicuzas Zapotec"},
["zpk"] = {"Tlacolulita Zapotec"},
["zpl"] = {"Lachixío Zapotec"},
["zpm"] = {"Mixtepec Zapotec"},
["zpn"] = {"Santa Inés Yatzechi Zapotec"},
["zpo"] = {"Amatlán Zapotec"},
["zpp"] = {"El Alto Zapotec"},
["zpq"] = {"Zoogocho Zapotec"},
["zpr"] = {"Santiago Xanica Zapotec"},
["zps"] = {"Coatlán Zapotec"},
["zpt"] = {"San Vicente Coatlán Zapotec"},
["zpu"] = {"Yalálag Zapotec"},
["zpv"] = {"Chichicapan Zapotec"},
["zpw"] = {"Zaniza Zapotec"},
["zpx"] = {"San Baltazar Loxicha Zapotec"},
["zpy"] = {"Mazaltepec Zapotec"},
["zpz"] = {"Texmelucan Zapotec"},
["zqe"] = {"Qiubei Zhuang"},
["zra"] = {"Kara (Korea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatic"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskean"},
["zsl"] = {"Zambian Sign Language"},
["zsm"] = {"Standard Malay"},
["zsr"] = {"Southern Rincon Zapotec"},
["zsu"] = {"Sukurum"},
["zte"] = {"Elotepec Zapotec"},
["ztg"] = {"Xanaguía Zapotec"},
["ztl"] = {"Lapaguía-Guivini Zapotec"},
["ztm"] = {"San Agustín Mixtepec Zapotec"},
["ztn"] = {"Santa Catarina Albarradas Zapotec"},
["ztp"] = {"Loxicha Zapotec"},
["ztq"] = {"Quioquitani-Quierí Zapotec"},
["zts"] = {"Tilquiapan Zapotec"},
["ztt"] = {"Tejalapan Zapotec"},
["ztu"] = {"Güilá Zapotec"},
["ztx"] = {"Zaachila Zapotec"},
["zty"] = {"Yatee Zapotec"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzari"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zyb"] = {"Yongbei Zhuang"},
["zyg"] = {"Yang Zhuang"},
["zyj"] = {"Youjiang Zhuang"},
["zyn"] = {"Yongnan Zhuang"},
["zyp"] = {"Zyphe Chin"},
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},
["zzj"] = {"Zuojiang Zhuang"}
}
local deprecated = {
["in"] = {"Indonesian"},
["iw"] = {"Hebrew"},
["ji"] = {"Yiddish"},
["jw"] = {"Javanese"},
["mo"] = {"Moldavian", "Moldovan"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"South Levantine Arabic"},
["ajt"] = {"Judeo-Tunisian Arabic"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (China)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Babalia Creole Arabic"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Southern Betsimisaraka Malagasy"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Democratic Republic of Congo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Democratic Republic of Congo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Chilean Quechua"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (India)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (India)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Eastern Karnic"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Eastern Gurung"},
["ggo"] = {"Southern Gondi"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (Nigeria)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Upper Tanudan Kalinga"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Indo-Iranian]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Paku Karen"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Nepali Kurux"},
["kxu"] = {"Kui (India)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (Nigeria)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (South Sudan)"},
["lsg"] = {"Lyons Sign Language"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Pidgin"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (India)"},
["myq"] = {"Forest Maninka"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Durango Nahuatl"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Mirpur Panjabi"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Rennellese Sign Language"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"South Wemale"},
["tmk"] = {"Northwestern Tamang"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Southwestern Tamang"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (Brazil)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmanian"},
["ybd"] = {"Yangbye"},
["yds"] = {"Yiddish Sign Language"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
d2b8387b798a45d93230d1c1b7b22a80714751a1
Module:Language/data/iana languages/doc
828
469
1021
2023-10-01T09:54:19Z
Führerredux
2
Created page with "{{High-use}} This module contains data taken directly from a local copy of an IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file]. The table in this module was created using the awb script at [[User:Trappist_the_monk/IANA_subtag_registry_file_update|IANA subtag registry file update]] or by [[Module:Language/data/iana languages/make]]. There should be no need to hand edit this table, so please do not d..."
wikitext
text/x-wiki
{{High-use}}
This module contains data taken directly from a local copy of an IANA [https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry language-subtag-registry file].
The table in this module was created using the awb script at [[User:Trappist_the_monk/IANA_subtag_registry_file_update|IANA subtag registry file update]] or by [[Module:Language/data/iana languages/make]]. There should be no need to hand edit this table, so please do not do so except to reflect changes that are actually present in the source (in which case it is probably better to re-run one of the tools on a new data file).
The data in this table come from records that are not 'Deprecated', do not have a 'Preferred-Value', and are not 'Private use'.
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
27c2fc0deab1aa916963bd078ff2af934a9d7ecd
Module:Language/data/iana scripts
828
470
1022
2023-10-01T09:54:55Z
Führerredux
2
Created page with "-- File-Date: 2023-08-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] =..."
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Adlm"] = {"Adlam"},
["Afak"] = {"Afaka"},
["Aghb"] = {"Caucasian Albanian"},
["Ahom"] = {"Ahom", "Tai Ahom"},
["Arab"] = {"Arabic"},
["Aran"] = {"Arabic (Nastaliq variant)"},
["Armi"] = {"Imperial Aramaic"},
["Armn"] = {"Armenian"},
["Avst"] = {"Avestan"},
["Bali"] = {"Balinese"},
["Bamu"] = {"Bamum"},
["Bass"] = {"Bassa Vah"},
["Batk"] = {"Batak"},
["Beng"] = {"Bengali", "Bangla"},
["Bhks"] = {"Bhaiksuki"},
["Blis"] = {"Blissymbols"},
["Bopo"] = {"Bopomofo"},
["Brah"] = {"Brahmi"},
["Brai"] = {"Braille"},
["Bugi"] = {"Buginese"},
["Buhd"] = {"Buhid"},
["Cakm"] = {"Chakma"},
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},
["Cari"] = {"Carian"},
["Cham"] = {"Cham"},
["Cher"] = {"Cherokee"},
["Chrs"] = {"Chorasmian"},
["Cirt"] = {"Cirth"},
["Copt"] = {"Coptic"},
["Cpmn"] = {"Cypro-Minoan"},
["Cprt"] = {"Cypriot syllabary"},
["Cyrl"] = {"Cyrillic"},
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},
["Deva"] = {"Devanagari", "Nagari"},
["Diak"] = {"Dives Akuru"},
["Dogr"] = {"Dogra"},
["Dsrt"] = {"Deseret", "Mormon"},
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},
["Egyd"] = {"Egyptian demotic"},
["Egyh"] = {"Egyptian hieratic"},
["Egyp"] = {"Egyptian hieroglyphs"},
["Elba"] = {"Elbasan"},
["Elym"] = {"Elymaic"},
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},
["Glag"] = {"Glagolitic"},
["Gong"] = {"Gunjala Gondi"},
["Gonm"] = {"Masaram Gondi"},
["Goth"] = {"Gothic"},
["Gran"] = {"Grantha"},
["Grek"] = {"Greek"},
["Gujr"] = {"Gujarati"},
["Guru"] = {"Gurmukhi"},
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},
["Hano"] = {"Hanunoo", "Hanunóo"},
["Hans"] = {"Han (Simplified variant)"},
["Hant"] = {"Han (Traditional variant)"},
["Hatr"] = {"Hatran"},
["Hebr"] = {"Hebrew"},
["Hira"] = {"Hiragana"},
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},
["Hmng"] = {"Pahawh Hmong"},
["Hmnp"] = {"Nyiakeng Puachue Hmong"},
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},
["Hung"] = {"Old Hungarian", "Hungarian Runic"},
["Inds"] = {"Indus", "Harappan"},
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},
["Java"] = {"Javanese"},
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},
["Jurc"] = {"Jurchen"},
["Kali"] = {"Kayah Li"},
["Kana"] = {"Katakana"},
["Kawi"] = {"Kawi"},
["Khar"] = {"Kharoshthi"},
["Khmr"] = {"Khmer"},
["Khoj"] = {"Khojki"},
["Kitl"] = {"Khitan large script"},
["Kits"] = {"Khitan small script"},
["Knda"] = {"Kannada"},
["Kore"] = {"Korean (alias for Hangul + Han)"},
["Kpel"] = {"Kpelle"},
["Kthi"] = {"Kaithi"},
["Lana"] = {"Tai Tham", "Lanna"},
["Laoo"] = {"Lao"},
["Latf"] = {"Latin (Fraktur variant)"},
["Latg"] = {"Latin (Gaelic variant)"},
["Latn"] = {"Latin"},
["Leke"] = {"Leke"},
["Lepc"] = {"Lepcha", "Róng"},
["Limb"] = {"Limbu"},
["Lina"] = {"Linear A"},
["Linb"] = {"Linear B"},
["Lisu"] = {"Lisu", "Fraser"},
["Loma"] = {"Loma"},
["Lyci"] = {"Lycian"},
["Lydi"] = {"Lydian"},
["Mahj"] = {"Mahajani"},
["Maka"] = {"Makasar"},
["Mand"] = {"Mandaic", "Mandaean"},
["Mani"] = {"Manichaean"},
["Marc"] = {"Marchen"},
["Maya"] = {"Mayan hieroglyphs"},
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},
["Mend"] = {"Mende Kikakui"},
["Merc"] = {"Meroitic Cursive"},
["Mero"] = {"Meroitic Hieroglyphs"},
["Mlym"] = {"Malayalam"},
["Modi"] = {"Modi", "Moḍī"},
["Mong"] = {"Mongolian"},
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},
["Mroo"] = {"Mro", "Mru"},
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},
["Mult"] = {"Multani"},
["Mymr"] = {"Myanmar", "Burmese"},
["Nagm"] = {"Nag Mundari"},
["Nand"] = {"Nandinagari"},
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},
["Nbat"] = {"Nabataean"},
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},
["Nkoo"] = {"N’Ko", "N'Ko"},
["Nshu"] = {"Nüshu"},
["Ogam"] = {"Ogham"},
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},
["Orkh"] = {"Old Turkic", "Orkhon Runic"},
["Orya"] = {"Oriya", "Odia"},
["Osge"] = {"Osage"},
["Osma"] = {"Osmanya"},
["Ougr"] = {"Old Uyghur"},
["Palm"] = {"Palmyrene"},
["Pauc"] = {"Pau Cin Hau"},
["Pcun"] = {"Proto-Cuneiform"},
["Pelm"] = {"Proto-Elamite"},
["Perm"] = {"Old Permic"},
["Phag"] = {"Phags-pa"},
["Phli"] = {"Inscriptional Pahlavi"},
["Phlp"] = {"Psalter Pahlavi"},
["Phlv"] = {"Book Pahlavi"},
["Phnx"] = {"Phoenician"},
["Piqd"] = {"Klingon (KLI pIqaD)"},
["Plrd"] = {"Miao", "Pollard"},
["Prti"] = {"Inscriptional Parthian"},
["Psin"] = {"Proto-Sinaitic"},
["Ranj"] = {"Ranjana"},
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},
["Rohg"] = {"Hanifi Rohingya"},
["Roro"] = {"Rongorongo"},
["Runr"] = {"Runic"},
["Samr"] = {"Samaritan"},
["Sara"] = {"Sarati"},
["Sarb"] = {"Old South Arabian"},
["Saur"] = {"Saurashtra"},
["Sgnw"] = {"SignWriting"},
["Shaw"] = {"Shavian", "Shaw"},
["Shrd"] = {"Sharada", "Śāradā"},
["Shui"] = {"Shuishu"},
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},
["Sind"] = {"Khudawadi", "Sindhi"},
["Sinh"] = {"Sinhala"},
["Sogd"] = {"Sogdian"},
["Sogo"] = {"Old Sogdian"},
["Sora"] = {"Sora Sompeng"},
["Soyo"] = {"Soyombo"},
["Sund"] = {"Sundanese"},
["Sunu"] = {"Sunuwar"},
["Sylo"] = {"Syloti Nagri"},
["Syrc"] = {"Syriac"},
["Syre"] = {"Syriac (Estrangelo variant)"},
["Syrj"] = {"Syriac (Western variant)"},
["Syrn"] = {"Syriac (Eastern variant)"},
["Tagb"] = {"Tagbanwa"},
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},
["Tale"] = {"Tai Le"},
["Talu"] = {"New Tai Lue"},
["Taml"] = {"Tamil"},
["Tang"] = {"Tangut"},
["Tavt"] = {"Tai Viet"},
["Telu"] = {"Telugu"},
["Teng"] = {"Tengwar"},
["Tfng"] = {"Tifinagh", "Berber"},
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},
["Thaa"] = {"Thaana"},
["Thai"] = {"Thai"},
["Tibt"] = {"Tibetan"},
["Tirh"] = {"Tirhuta"},
["Tnsa"] = {"Tangsa"},
["Toto"] = {"Toto"},
["Ugar"] = {"Ugaritic"},
["Vaii"] = {"Vai"},
["Visp"] = {"Visible Speech"},
["Vith"] = {"Vithkuqi"},
["Wara"] = {"Warang Citi", "Varang Kshiti"},
["Wcho"] = {"Wancho"},
["Wole"] = {"Woleai"},
["Xpeo"] = {"Old Persian"},
["Xsux"] = {"Sumero-Akkadian cuneiform"},
["Yezi"] = {"Yezidi"},
["Yiii"] = {"Yi"},
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},
["Zinh"] = {"Code for inherited script"},
["Zmth"] = {"Mathematical notation"},
["Zsye"] = {"Symbols (Emoji variant)"},
["Zsym"] = {"Symbols"},
["Zxxx"] = {"Code for unwritten documents"},
["Zyyy"] = {"Code for undetermined script"},
["Zzzz"] = {"Code for uncoded script"}
}
441e9d6e54b88bea137b8945819732a90106bd4d
1038
1022
2023-10-01T09:58:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_scripts]]
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Adlm"] = {"Adlam"},
["Afak"] = {"Afaka"},
["Aghb"] = {"Caucasian Albanian"},
["Ahom"] = {"Ahom", "Tai Ahom"},
["Arab"] = {"Arabic"},
["Aran"] = {"Arabic (Nastaliq variant)"},
["Armi"] = {"Imperial Aramaic"},
["Armn"] = {"Armenian"},
["Avst"] = {"Avestan"},
["Bali"] = {"Balinese"},
["Bamu"] = {"Bamum"},
["Bass"] = {"Bassa Vah"},
["Batk"] = {"Batak"},
["Beng"] = {"Bengali", "Bangla"},
["Bhks"] = {"Bhaiksuki"},
["Blis"] = {"Blissymbols"},
["Bopo"] = {"Bopomofo"},
["Brah"] = {"Brahmi"},
["Brai"] = {"Braille"},
["Bugi"] = {"Buginese"},
["Buhd"] = {"Buhid"},
["Cakm"] = {"Chakma"},
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},
["Cari"] = {"Carian"},
["Cham"] = {"Cham"},
["Cher"] = {"Cherokee"},
["Chrs"] = {"Chorasmian"},
["Cirt"] = {"Cirth"},
["Copt"] = {"Coptic"},
["Cpmn"] = {"Cypro-Minoan"},
["Cprt"] = {"Cypriot syllabary"},
["Cyrl"] = {"Cyrillic"},
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},
["Deva"] = {"Devanagari", "Nagari"},
["Diak"] = {"Dives Akuru"},
["Dogr"] = {"Dogra"},
["Dsrt"] = {"Deseret", "Mormon"},
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},
["Egyd"] = {"Egyptian demotic"},
["Egyh"] = {"Egyptian hieratic"},
["Egyp"] = {"Egyptian hieroglyphs"},
["Elba"] = {"Elbasan"},
["Elym"] = {"Elymaic"},
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},
["Glag"] = {"Glagolitic"},
["Gong"] = {"Gunjala Gondi"},
["Gonm"] = {"Masaram Gondi"},
["Goth"] = {"Gothic"},
["Gran"] = {"Grantha"},
["Grek"] = {"Greek"},
["Gujr"] = {"Gujarati"},
["Guru"] = {"Gurmukhi"},
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},
["Hano"] = {"Hanunoo", "Hanunóo"},
["Hans"] = {"Han (Simplified variant)"},
["Hant"] = {"Han (Traditional variant)"},
["Hatr"] = {"Hatran"},
["Hebr"] = {"Hebrew"},
["Hira"] = {"Hiragana"},
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},
["Hmng"] = {"Pahawh Hmong"},
["Hmnp"] = {"Nyiakeng Puachue Hmong"},
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},
["Hung"] = {"Old Hungarian", "Hungarian Runic"},
["Inds"] = {"Indus", "Harappan"},
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},
["Java"] = {"Javanese"},
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},
["Jurc"] = {"Jurchen"},
["Kali"] = {"Kayah Li"},
["Kana"] = {"Katakana"},
["Kawi"] = {"Kawi"},
["Khar"] = {"Kharoshthi"},
["Khmr"] = {"Khmer"},
["Khoj"] = {"Khojki"},
["Kitl"] = {"Khitan large script"},
["Kits"] = {"Khitan small script"},
["Knda"] = {"Kannada"},
["Kore"] = {"Korean (alias for Hangul + Han)"},
["Kpel"] = {"Kpelle"},
["Kthi"] = {"Kaithi"},
["Lana"] = {"Tai Tham", "Lanna"},
["Laoo"] = {"Lao"},
["Latf"] = {"Latin (Fraktur variant)"},
["Latg"] = {"Latin (Gaelic variant)"},
["Latn"] = {"Latin"},
["Leke"] = {"Leke"},
["Lepc"] = {"Lepcha", "Róng"},
["Limb"] = {"Limbu"},
["Lina"] = {"Linear A"},
["Linb"] = {"Linear B"},
["Lisu"] = {"Lisu", "Fraser"},
["Loma"] = {"Loma"},
["Lyci"] = {"Lycian"},
["Lydi"] = {"Lydian"},
["Mahj"] = {"Mahajani"},
["Maka"] = {"Makasar"},
["Mand"] = {"Mandaic", "Mandaean"},
["Mani"] = {"Manichaean"},
["Marc"] = {"Marchen"},
["Maya"] = {"Mayan hieroglyphs"},
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},
["Mend"] = {"Mende Kikakui"},
["Merc"] = {"Meroitic Cursive"},
["Mero"] = {"Meroitic Hieroglyphs"},
["Mlym"] = {"Malayalam"},
["Modi"] = {"Modi", "Moḍī"},
["Mong"] = {"Mongolian"},
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},
["Mroo"] = {"Mro", "Mru"},
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},
["Mult"] = {"Multani"},
["Mymr"] = {"Myanmar", "Burmese"},
["Nagm"] = {"Nag Mundari"},
["Nand"] = {"Nandinagari"},
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},
["Nbat"] = {"Nabataean"},
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},
["Nkoo"] = {"N’Ko", "N'Ko"},
["Nshu"] = {"Nüshu"},
["Ogam"] = {"Ogham"},
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},
["Orkh"] = {"Old Turkic", "Orkhon Runic"},
["Orya"] = {"Oriya", "Odia"},
["Osge"] = {"Osage"},
["Osma"] = {"Osmanya"},
["Ougr"] = {"Old Uyghur"},
["Palm"] = {"Palmyrene"},
["Pauc"] = {"Pau Cin Hau"},
["Pcun"] = {"Proto-Cuneiform"},
["Pelm"] = {"Proto-Elamite"},
["Perm"] = {"Old Permic"},
["Phag"] = {"Phags-pa"},
["Phli"] = {"Inscriptional Pahlavi"},
["Phlp"] = {"Psalter Pahlavi"},
["Phlv"] = {"Book Pahlavi"},
["Phnx"] = {"Phoenician"},
["Piqd"] = {"Klingon (KLI pIqaD)"},
["Plrd"] = {"Miao", "Pollard"},
["Prti"] = {"Inscriptional Parthian"},
["Psin"] = {"Proto-Sinaitic"},
["Ranj"] = {"Ranjana"},
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},
["Rohg"] = {"Hanifi Rohingya"},
["Roro"] = {"Rongorongo"},
["Runr"] = {"Runic"},
["Samr"] = {"Samaritan"},
["Sara"] = {"Sarati"},
["Sarb"] = {"Old South Arabian"},
["Saur"] = {"Saurashtra"},
["Sgnw"] = {"SignWriting"},
["Shaw"] = {"Shavian", "Shaw"},
["Shrd"] = {"Sharada", "Śāradā"},
["Shui"] = {"Shuishu"},
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},
["Sind"] = {"Khudawadi", "Sindhi"},
["Sinh"] = {"Sinhala"},
["Sogd"] = {"Sogdian"},
["Sogo"] = {"Old Sogdian"},
["Sora"] = {"Sora Sompeng"},
["Soyo"] = {"Soyombo"},
["Sund"] = {"Sundanese"},
["Sunu"] = {"Sunuwar"},
["Sylo"] = {"Syloti Nagri"},
["Syrc"] = {"Syriac"},
["Syre"] = {"Syriac (Estrangelo variant)"},
["Syrj"] = {"Syriac (Western variant)"},
["Syrn"] = {"Syriac (Eastern variant)"},
["Tagb"] = {"Tagbanwa"},
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},
["Tale"] = {"Tai Le"},
["Talu"] = {"New Tai Lue"},
["Taml"] = {"Tamil"},
["Tang"] = {"Tangut"},
["Tavt"] = {"Tai Viet"},
["Telu"] = {"Telugu"},
["Teng"] = {"Tengwar"},
["Tfng"] = {"Tifinagh", "Berber"},
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},
["Thaa"] = {"Thaana"},
["Thai"] = {"Thai"},
["Tibt"] = {"Tibetan"},
["Tirh"] = {"Tirhuta"},
["Tnsa"] = {"Tangsa"},
["Toto"] = {"Toto"},
["Ugar"] = {"Ugaritic"},
["Vaii"] = {"Vai"},
["Visp"] = {"Visible Speech"},
["Vith"] = {"Vithkuqi"},
["Wara"] = {"Warang Citi", "Varang Kshiti"},
["Wcho"] = {"Wancho"},
["Wole"] = {"Woleai"},
["Xpeo"] = {"Old Persian"},
["Xsux"] = {"Sumero-Akkadian cuneiform"},
["Yezi"] = {"Yezidi"},
["Yiii"] = {"Yi"},
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},
["Zinh"] = {"Code for inherited script"},
["Zmth"] = {"Mathematical notation"},
["Zsye"] = {"Symbols (Emoji variant)"},
["Zsym"] = {"Symbols"},
["Zxxx"] = {"Code for unwritten documents"},
["Zyyy"] = {"Code for undetermined script"},
["Zzzz"] = {"Code for uncoded script"}
}
441e9d6e54b88bea137b8945819732a90106bd4d
Module:Language/data/iana scripts/doc
828
471
1023
2023-10-01T09:55:12Z
Führerredux
2
Redirected page to [[Module:Language/data/iana languages/doc]]
wikitext
text/x-wiki
#REDIRECT [[Module:Language/data/iana languages/doc]]
13159077b79f554e092c40048ba1263e0508cdd9
Module:Language/data/iana regions
828
472
1024
2023-10-01T09:55:43Z
Führerredux
2
Created page with "-- File-Date: 2023-08-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azer..."
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["AC"] = {"Ascension Island"},
["AD"] = {"Andorra"},
["AE"] = {"United Arab Emirates"},
["AF"] = {"Afghanistan"},
["AG"] = {"Antigua and Barbuda"},
["AI"] = {"Anguilla"},
["AL"] = {"Albania"},
["AM"] = {"Armenia"},
["AO"] = {"Angola"},
["AQ"] = {"Antarctica"},
["AR"] = {"Argentina"},
["AS"] = {"American Samoa"},
["AT"] = {"Austria"},
["AU"] = {"Australia"},
["AW"] = {"Aruba"},
["AX"] = {"Åland Islands"},
["AZ"] = {"Azerbaijan"},
["BA"] = {"Bosnia and Herzegovina"},
["BB"] = {"Barbados"},
["BD"] = {"Bangladesh"},
["BE"] = {"Belgium"},
["BF"] = {"Burkina Faso"},
["BG"] = {"Bulgaria"},
["BH"] = {"Bahrain"},
["BI"] = {"Burundi"},
["BJ"] = {"Benin"},
["BL"] = {"Saint Barthélemy"},
["BM"] = {"Bermuda"},
["BN"] = {"Brunei Darussalam"},
["BO"] = {"Bolivia"},
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},
["BR"] = {"Brazil"},
["BS"] = {"Bahamas"},
["BT"] = {"Bhutan"},
["BV"] = {"Bouvet Island"},
["BW"] = {"Botswana"},
["BY"] = {"Belarus"},
["BZ"] = {"Belize"},
["CA"] = {"Canada"},
["CC"] = {"Cocos (Keeling) Islands"},
["CD"] = {"The Democratic Republic of the Congo"},
["CF"] = {"Central African Republic"},
["CG"] = {"Congo"},
["CH"] = {"Switzerland"},
["CI"] = {"Côte d'Ivoire"},
["CK"] = {"Cook Islands"},
["CL"] = {"Chile"},
["CM"] = {"Cameroon"},
["CN"] = {"China"},
["CO"] = {"Colombia"},
["CP"] = {"Clipperton Island"},
["CQ"] = {"Sark"},
["CR"] = {"Costa Rica"},
["CU"] = {"Cuba"},
["CV"] = {"Cabo Verde", "Cape Verde"},
["CW"] = {"Curaçao"},
["CX"] = {"Christmas Island"},
["CY"] = {"Cyprus"},
["CZ"] = {"Czechia", "Czech Republic"},
["DE"] = {"Germany"},
["DG"] = {"Diego Garcia"},
["DJ"] = {"Djibouti"},
["DK"] = {"Denmark"},
["DM"] = {"Dominica"},
["DO"] = {"Dominican Republic"},
["DZ"] = {"Algeria"},
["EA"] = {"Ceuta, Melilla"},
["EC"] = {"Ecuador"},
["EE"] = {"Estonia"},
["EG"] = {"Egypt"},
["EH"] = {"Western Sahara"},
["ER"] = {"Eritrea"},
["ES"] = {"Spain"},
["ET"] = {"Ethiopia"},
["EU"] = {"European Union"},
["EZ"] = {"Eurozone"},
["FI"] = {"Finland"},
["FJ"] = {"Fiji"},
["FK"] = {"Falkland Islands (Malvinas)"},
["FM"] = {"Federated States of Micronesia"},
["FO"] = {"Faroe Islands"},
["FR"] = {"France"},
["GA"] = {"Gabon"},
["GB"] = {"United Kingdom"},
["GD"] = {"Grenada"},
["GE"] = {"Georgia"},
["GF"] = {"French Guiana"},
["GG"] = {"Guernsey"},
["GH"] = {"Ghana"},
["GI"] = {"Gibraltar"},
["GL"] = {"Greenland"},
["GM"] = {"Gambia"},
["GN"] = {"Guinea"},
["GP"] = {"Guadeloupe"},
["GQ"] = {"Equatorial Guinea"},
["GR"] = {"Greece"},
["GS"] = {"South Georgia and the South Sandwich Islands"},
["GT"] = {"Guatemala"},
["GU"] = {"Guam"},
["GW"] = {"Guinea-Bissau"},
["GY"] = {"Guyana"},
["HK"] = {"Hong Kong"},
["HM"] = {"Heard Island and McDonald Islands"},
["HN"] = {"Honduras"},
["HR"] = {"Croatia"},
["HT"] = {"Haiti"},
["HU"] = {"Hungary"},
["IC"] = {"Canary Islands"},
["ID"] = {"Indonesia"},
["IE"] = {"Ireland"},
["IL"] = {"Israel"},
["IM"] = {"Isle of Man"},
["IN"] = {"India"},
["IO"] = {"British Indian Ocean Territory"},
["IQ"] = {"Iraq"},
["IR"] = {"Islamic Republic of Iran"},
["IS"] = {"Iceland"},
["IT"] = {"Italy"},
["JE"] = {"Jersey"},
["JM"] = {"Jamaica"},
["JO"] = {"Jordan"},
["JP"] = {"Japan"},
["KE"] = {"Kenya"},
["KG"] = {"Kyrgyzstan"},
["KH"] = {"Cambodia"},
["KI"] = {"Kiribati"},
["KM"] = {"Comoros"},
["KN"] = {"Saint Kitts and Nevis"},
["KP"] = {"Democratic People's Republic of Korea"},
["KR"] = {"Republic of Korea"},
["KW"] = {"Kuwait"},
["KY"] = {"Cayman Islands"},
["KZ"] = {"Kazakhstan"},
["LA"] = {"Lao People's Democratic Republic"},
["LB"] = {"Lebanon"},
["LC"] = {"Saint Lucia"},
["LI"] = {"Liechtenstein"},
["LK"] = {"Sri Lanka"},
["LR"] = {"Liberia"},
["LS"] = {"Lesotho"},
["LT"] = {"Lithuania"},
["LU"] = {"Luxembourg"},
["LV"] = {"Latvia"},
["LY"] = {"Libya"},
["MA"] = {"Morocco"},
["MC"] = {"Monaco"},
["MD"] = {"Moldova"},
["ME"] = {"Montenegro"},
["MF"] = {"Saint Martin (French part)"},
["MG"] = {"Madagascar"},
["MH"] = {"Marshall Islands"},
["MK"] = {"North Macedonia"},
["ML"] = {"Mali"},
["MM"] = {"Myanmar"},
["MN"] = {"Mongolia"},
["MO"] = {"Macao"},
["MP"] = {"Northern Mariana Islands"},
["MQ"] = {"Martinique"},
["MR"] = {"Mauritania"},
["MS"] = {"Montserrat"},
["MT"] = {"Malta"},
["MU"] = {"Mauritius"},
["MV"] = {"Maldives"},
["MW"] = {"Malawi"},
["MX"] = {"Mexico"},
["MY"] = {"Malaysia"},
["MZ"] = {"Mozambique"},
["NA"] = {"Namibia"},
["NC"] = {"New Caledonia"},
["NE"] = {"Niger"},
["NF"] = {"Norfolk Island"},
["NG"] = {"Nigeria"},
["NI"] = {"Nicaragua"},
["NL"] = {"Netherlands"},
["NO"] = {"Norway"},
["NP"] = {"Nepal"},
["NR"] = {"Nauru"},
["NU"] = {"Niue"},
["NZ"] = {"New Zealand"},
["OM"] = {"Oman"},
["PA"] = {"Panama"},
["PE"] = {"Peru"},
["PF"] = {"French Polynesia"},
["PG"] = {"Papua New Guinea"},
["PH"] = {"Philippines"},
["PK"] = {"Pakistan"},
["PL"] = {"Poland"},
["PM"] = {"Saint Pierre and Miquelon"},
["PN"] = {"Pitcairn"},
["PR"] = {"Puerto Rico"},
["PS"] = {"State of Palestine"},
["PT"] = {"Portugal"},
["PW"] = {"Palau"},
["PY"] = {"Paraguay"},
["QA"] = {"Qatar"},
["RE"] = {"Réunion"},
["RO"] = {"Romania"},
["RS"] = {"Serbia"},
["RU"] = {"Russian Federation"},
["RW"] = {"Rwanda"},
["SA"] = {"Saudi Arabia"},
["SB"] = {"Solomon Islands"},
["SC"] = {"Seychelles"},
["SD"] = {"Sudan"},
["SE"] = {"Sweden"},
["SG"] = {"Singapore"},
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {"Slovenia"},
["SJ"] = {"Svalbard and Jan Mayen"},
["SK"] = {"Slovakia"},
["SL"] = {"Sierra Leone"},
["SM"] = {"San Marino"},
["SN"] = {"Senegal"},
["SO"] = {"Somalia"},
["SR"] = {"Suriname"},
["SS"] = {"South Sudan"},
["ST"] = {"Sao Tome and Principe"},
["SV"] = {"El Salvador"},
["SX"] = {"Sint Maarten (Dutch part)"},
["SY"] = {"Syrian Arab Republic"},
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},
["TA"] = {"Tristan da Cunha"},
["TC"] = {"Turks and Caicos Islands"},
["TD"] = {"Chad"},
["TF"] = {"French Southern Territories"},
["TG"] = {"Togo"},
["TH"] = {"Thailand"},
["TJ"] = {"Tajikistan"},
["TK"] = {"Tokelau"},
["TL"] = {"Timor-Leste"},
["TM"] = {"Turkmenistan"},
["TN"] = {"Tunisia"},
["TO"] = {"Tonga"},
["TR"] = {"Türkiye", "Turkey"},
["TT"] = {"Trinidad and Tobago"},
["TV"] = {"Tuvalu"},
["TW"] = {"Taiwan, Province of China"},
["TZ"] = {"United Republic of Tanzania"},
["UA"] = {"Ukraine"},
["UG"] = {"Uganda"},
["UM"] = {"United States Minor Outlying Islands"},
["UN"] = {"United Nations"},
["US"] = {"United States"},
["UY"] = {"Uruguay"},
["UZ"] = {"Uzbekistan"},
["VA"] = {"Holy See (Vatican City State)"},
["VC"] = {"Saint Vincent and the Grenadines"},
["VE"] = {"Venezuela"},
["VG"] = {"British Virgin Islands"},
["VI"] = {"U.S. Virgin Islands"},
["VN"] = {"Viet Nam"},
["VU"] = {"Vanuatu"},
["WF"] = {"Wallis and Futuna"},
["WS"] = {"Samoa"},
["YE"] = {"Yemen"},
["YT"] = {"Mayotte"},
["ZA"] = {"South Africa"},
["ZM"] = {"Zambia"},
["ZW"] = {"Zimbabwe"},
["001"] = {"World"},
["002"] = {"Africa"},
["003"] = {"North America"},
["005"] = {"South America"},
["009"] = {"Oceania"},
["011"] = {"Western Africa"},
["013"] = {"Central America"},
["014"] = {"Eastern Africa"},
["015"] = {"Northern Africa"},
["017"] = {"Middle Africa"},
["018"] = {"Southern Africa"},
["019"] = {"Americas"},
["021"] = {"Northern America"},
["029"] = {"Caribbean"},
["030"] = {"Eastern Asia"},
["034"] = {"Southern Asia"},
["035"] = {"South-Eastern Asia"},
["039"] = {"Southern Europe"},
["053"] = {"Australia and New Zealand"},
["054"] = {"Melanesia"},
["057"] = {"Micronesia"},
["061"] = {"Polynesia"},
["142"] = {"Asia"},
["143"] = {"Central Asia"},
["145"] = {"Western Asia"},
["150"] = {"Europe"},
["151"] = {"Eastern Europe"},
["154"] = {"Northern Europe"},
["155"] = {"Western Europe"},
["202"] = {"Sub-Saharan Africa"},
["419"] = {"Latin America and the Caribbean"}
}
08de6963e81994fd00a9f7b5a76b5ed63c543989
1040
1024
2023-10-01T09:58:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_regions]]
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["AC"] = {"Ascension Island"},
["AD"] = {"Andorra"},
["AE"] = {"United Arab Emirates"},
["AF"] = {"Afghanistan"},
["AG"] = {"Antigua and Barbuda"},
["AI"] = {"Anguilla"},
["AL"] = {"Albania"},
["AM"] = {"Armenia"},
["AO"] = {"Angola"},
["AQ"] = {"Antarctica"},
["AR"] = {"Argentina"},
["AS"] = {"American Samoa"},
["AT"] = {"Austria"},
["AU"] = {"Australia"},
["AW"] = {"Aruba"},
["AX"] = {"Åland Islands"},
["AZ"] = {"Azerbaijan"},
["BA"] = {"Bosnia and Herzegovina"},
["BB"] = {"Barbados"},
["BD"] = {"Bangladesh"},
["BE"] = {"Belgium"},
["BF"] = {"Burkina Faso"},
["BG"] = {"Bulgaria"},
["BH"] = {"Bahrain"},
["BI"] = {"Burundi"},
["BJ"] = {"Benin"},
["BL"] = {"Saint Barthélemy"},
["BM"] = {"Bermuda"},
["BN"] = {"Brunei Darussalam"},
["BO"] = {"Bolivia"},
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},
["BR"] = {"Brazil"},
["BS"] = {"Bahamas"},
["BT"] = {"Bhutan"},
["BV"] = {"Bouvet Island"},
["BW"] = {"Botswana"},
["BY"] = {"Belarus"},
["BZ"] = {"Belize"},
["CA"] = {"Canada"},
["CC"] = {"Cocos (Keeling) Islands"},
["CD"] = {"The Democratic Republic of the Congo"},
["CF"] = {"Central African Republic"},
["CG"] = {"Congo"},
["CH"] = {"Switzerland"},
["CI"] = {"Côte d'Ivoire"},
["CK"] = {"Cook Islands"},
["CL"] = {"Chile"},
["CM"] = {"Cameroon"},
["CN"] = {"China"},
["CO"] = {"Colombia"},
["CP"] = {"Clipperton Island"},
["CQ"] = {"Sark"},
["CR"] = {"Costa Rica"},
["CU"] = {"Cuba"},
["CV"] = {"Cabo Verde", "Cape Verde"},
["CW"] = {"Curaçao"},
["CX"] = {"Christmas Island"},
["CY"] = {"Cyprus"},
["CZ"] = {"Czechia", "Czech Republic"},
["DE"] = {"Germany"},
["DG"] = {"Diego Garcia"},
["DJ"] = {"Djibouti"},
["DK"] = {"Denmark"},
["DM"] = {"Dominica"},
["DO"] = {"Dominican Republic"},
["DZ"] = {"Algeria"},
["EA"] = {"Ceuta, Melilla"},
["EC"] = {"Ecuador"},
["EE"] = {"Estonia"},
["EG"] = {"Egypt"},
["EH"] = {"Western Sahara"},
["ER"] = {"Eritrea"},
["ES"] = {"Spain"},
["ET"] = {"Ethiopia"},
["EU"] = {"European Union"},
["EZ"] = {"Eurozone"},
["FI"] = {"Finland"},
["FJ"] = {"Fiji"},
["FK"] = {"Falkland Islands (Malvinas)"},
["FM"] = {"Federated States of Micronesia"},
["FO"] = {"Faroe Islands"},
["FR"] = {"France"},
["GA"] = {"Gabon"},
["GB"] = {"United Kingdom"},
["GD"] = {"Grenada"},
["GE"] = {"Georgia"},
["GF"] = {"French Guiana"},
["GG"] = {"Guernsey"},
["GH"] = {"Ghana"},
["GI"] = {"Gibraltar"},
["GL"] = {"Greenland"},
["GM"] = {"Gambia"},
["GN"] = {"Guinea"},
["GP"] = {"Guadeloupe"},
["GQ"] = {"Equatorial Guinea"},
["GR"] = {"Greece"},
["GS"] = {"South Georgia and the South Sandwich Islands"},
["GT"] = {"Guatemala"},
["GU"] = {"Guam"},
["GW"] = {"Guinea-Bissau"},
["GY"] = {"Guyana"},
["HK"] = {"Hong Kong"},
["HM"] = {"Heard Island and McDonald Islands"},
["HN"] = {"Honduras"},
["HR"] = {"Croatia"},
["HT"] = {"Haiti"},
["HU"] = {"Hungary"},
["IC"] = {"Canary Islands"},
["ID"] = {"Indonesia"},
["IE"] = {"Ireland"},
["IL"] = {"Israel"},
["IM"] = {"Isle of Man"},
["IN"] = {"India"},
["IO"] = {"British Indian Ocean Territory"},
["IQ"] = {"Iraq"},
["IR"] = {"Islamic Republic of Iran"},
["IS"] = {"Iceland"},
["IT"] = {"Italy"},
["JE"] = {"Jersey"},
["JM"] = {"Jamaica"},
["JO"] = {"Jordan"},
["JP"] = {"Japan"},
["KE"] = {"Kenya"},
["KG"] = {"Kyrgyzstan"},
["KH"] = {"Cambodia"},
["KI"] = {"Kiribati"},
["KM"] = {"Comoros"},
["KN"] = {"Saint Kitts and Nevis"},
["KP"] = {"Democratic People's Republic of Korea"},
["KR"] = {"Republic of Korea"},
["KW"] = {"Kuwait"},
["KY"] = {"Cayman Islands"},
["KZ"] = {"Kazakhstan"},
["LA"] = {"Lao People's Democratic Republic"},
["LB"] = {"Lebanon"},
["LC"] = {"Saint Lucia"},
["LI"] = {"Liechtenstein"},
["LK"] = {"Sri Lanka"},
["LR"] = {"Liberia"},
["LS"] = {"Lesotho"},
["LT"] = {"Lithuania"},
["LU"] = {"Luxembourg"},
["LV"] = {"Latvia"},
["LY"] = {"Libya"},
["MA"] = {"Morocco"},
["MC"] = {"Monaco"},
["MD"] = {"Moldova"},
["ME"] = {"Montenegro"},
["MF"] = {"Saint Martin (French part)"},
["MG"] = {"Madagascar"},
["MH"] = {"Marshall Islands"},
["MK"] = {"North Macedonia"},
["ML"] = {"Mali"},
["MM"] = {"Myanmar"},
["MN"] = {"Mongolia"},
["MO"] = {"Macao"},
["MP"] = {"Northern Mariana Islands"},
["MQ"] = {"Martinique"},
["MR"] = {"Mauritania"},
["MS"] = {"Montserrat"},
["MT"] = {"Malta"},
["MU"] = {"Mauritius"},
["MV"] = {"Maldives"},
["MW"] = {"Malawi"},
["MX"] = {"Mexico"},
["MY"] = {"Malaysia"},
["MZ"] = {"Mozambique"},
["NA"] = {"Namibia"},
["NC"] = {"New Caledonia"},
["NE"] = {"Niger"},
["NF"] = {"Norfolk Island"},
["NG"] = {"Nigeria"},
["NI"] = {"Nicaragua"},
["NL"] = {"Netherlands"},
["NO"] = {"Norway"},
["NP"] = {"Nepal"},
["NR"] = {"Nauru"},
["NU"] = {"Niue"},
["NZ"] = {"New Zealand"},
["OM"] = {"Oman"},
["PA"] = {"Panama"},
["PE"] = {"Peru"},
["PF"] = {"French Polynesia"},
["PG"] = {"Papua New Guinea"},
["PH"] = {"Philippines"},
["PK"] = {"Pakistan"},
["PL"] = {"Poland"},
["PM"] = {"Saint Pierre and Miquelon"},
["PN"] = {"Pitcairn"},
["PR"] = {"Puerto Rico"},
["PS"] = {"State of Palestine"},
["PT"] = {"Portugal"},
["PW"] = {"Palau"},
["PY"] = {"Paraguay"},
["QA"] = {"Qatar"},
["RE"] = {"Réunion"},
["RO"] = {"Romania"},
["RS"] = {"Serbia"},
["RU"] = {"Russian Federation"},
["RW"] = {"Rwanda"},
["SA"] = {"Saudi Arabia"},
["SB"] = {"Solomon Islands"},
["SC"] = {"Seychelles"},
["SD"] = {"Sudan"},
["SE"] = {"Sweden"},
["SG"] = {"Singapore"},
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {"Slovenia"},
["SJ"] = {"Svalbard and Jan Mayen"},
["SK"] = {"Slovakia"},
["SL"] = {"Sierra Leone"},
["SM"] = {"San Marino"},
["SN"] = {"Senegal"},
["SO"] = {"Somalia"},
["SR"] = {"Suriname"},
["SS"] = {"South Sudan"},
["ST"] = {"Sao Tome and Principe"},
["SV"] = {"El Salvador"},
["SX"] = {"Sint Maarten (Dutch part)"},
["SY"] = {"Syrian Arab Republic"},
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},
["TA"] = {"Tristan da Cunha"},
["TC"] = {"Turks and Caicos Islands"},
["TD"] = {"Chad"},
["TF"] = {"French Southern Territories"},
["TG"] = {"Togo"},
["TH"] = {"Thailand"},
["TJ"] = {"Tajikistan"},
["TK"] = {"Tokelau"},
["TL"] = {"Timor-Leste"},
["TM"] = {"Turkmenistan"},
["TN"] = {"Tunisia"},
["TO"] = {"Tonga"},
["TR"] = {"Türkiye", "Turkey"},
["TT"] = {"Trinidad and Tobago"},
["TV"] = {"Tuvalu"},
["TW"] = {"Taiwan, Province of China"},
["TZ"] = {"United Republic of Tanzania"},
["UA"] = {"Ukraine"},
["UG"] = {"Uganda"},
["UM"] = {"United States Minor Outlying Islands"},
["UN"] = {"United Nations"},
["US"] = {"United States"},
["UY"] = {"Uruguay"},
["UZ"] = {"Uzbekistan"},
["VA"] = {"Holy See (Vatican City State)"},
["VC"] = {"Saint Vincent and the Grenadines"},
["VE"] = {"Venezuela"},
["VG"] = {"British Virgin Islands"},
["VI"] = {"U.S. Virgin Islands"},
["VN"] = {"Viet Nam"},
["VU"] = {"Vanuatu"},
["WF"] = {"Wallis and Futuna"},
["WS"] = {"Samoa"},
["YE"] = {"Yemen"},
["YT"] = {"Mayotte"},
["ZA"] = {"South Africa"},
["ZM"] = {"Zambia"},
["ZW"] = {"Zimbabwe"},
["001"] = {"World"},
["002"] = {"Africa"},
["003"] = {"North America"},
["005"] = {"South America"},
["009"] = {"Oceania"},
["011"] = {"Western Africa"},
["013"] = {"Central America"},
["014"] = {"Eastern Africa"},
["015"] = {"Northern Africa"},
["017"] = {"Middle Africa"},
["018"] = {"Southern Africa"},
["019"] = {"Americas"},
["021"] = {"Northern America"},
["029"] = {"Caribbean"},
["030"] = {"Eastern Asia"},
["034"] = {"Southern Asia"},
["035"] = {"South-Eastern Asia"},
["039"] = {"Southern Europe"},
["053"] = {"Australia and New Zealand"},
["054"] = {"Melanesia"},
["057"] = {"Micronesia"},
["061"] = {"Polynesia"},
["142"] = {"Asia"},
["143"] = {"Central Asia"},
["145"] = {"Western Asia"},
["150"] = {"Europe"},
["151"] = {"Eastern Europe"},
["154"] = {"Northern Europe"},
["155"] = {"Western Europe"},
["202"] = {"Sub-Saharan Africa"},
["419"] = {"Latin America and the Caribbean"}
}
08de6963e81994fd00a9f7b5a76b5ed63c543989
Module:Language/data/iana variants
828
473
1025
2023-10-01T09:56:07Z
Führerredux
2
Created page with "-- File-Date: 2023-08-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"},..."
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["1606nict"] = {
["descriptions"] = {"Late Middle French (to 1606)"},
["prefixes"] = {"frm"},
},
["1694acad"] = {
["descriptions"] = {"Early Modern French"},
["prefixes"] = {"fr"},
},
["1901"] = {
["descriptions"] = {"Traditional German orthography"},
["prefixes"] = {"de"},
},
["1959acad"] = {
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},
["prefixes"] = {"be"},
},
["1994"] = {
["descriptions"] = {"Standardized Resian orthography"},
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},
},
["1996"] = {
["descriptions"] = {"German orthography of 1996"},
["prefixes"] = {"de"},
},
["abl1943"] = {
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},
["prefixes"] = {"pt-br"},
},
["akuapem"] = {
["descriptions"] = {"Akuapem Twi"},
["prefixes"] = {"tw"},
},
["alalc97"] = {
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},
["prefixes"] = {},
},
["aluku"] = {
["descriptions"] = {"Aluku dialect", "Boni dialect"},
["prefixes"] = {"djk"},
},
["ao1990"] = {
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},
["prefixes"] = {"pt", "gl"},
},
["aranes"] = {
["descriptions"] = {"Aranese"},
["prefixes"] = {"oc"},
},
["arkaika"] = {
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},
["prefixes"] = {"eo"},
},
["asante"] = {
["descriptions"] = {"Asante Twi", "Ashanti Twi"},
["prefixes"] = {"tw"},
},
["auvern"] = {
["descriptions"] = {"Auvergnat"},
["prefixes"] = {"oc"},
},
["baku1926"] = {
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},
},
["balanka"] = {
["descriptions"] = {"The Balanka dialect of Anii"},
["prefixes"] = {"blo"},
},
["barla"] = {
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["basiceng"] = {
["descriptions"] = {"Basic English"},
["prefixes"] = {"en"},
},
["bauddha"] = {
["descriptions"] = {"Buddhist Hybrid Sanskrit"},
["prefixes"] = {"sa"},
},
["bciav"] = {
["descriptions"] = {"BCI Blissymbolics AV"},
["prefixes"] = {"zbl"},
},
["bcizbl"] = {
["descriptions"] = {"BCI Blissymbolics"},
["prefixes"] = {"zbl"},
},
["biscayan"] = {
["descriptions"] = {"Biscayan dialect of Basque"},
["prefixes"] = {"eu"},
},
["biske"] = {
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["blasl"] = {
["descriptions"] = {"Black American Sign Language dialect"},
["prefixes"] = {"ase", "sgn-ase"},
},
["bohoric"] = {
["descriptions"] = {"Slovene in Bohorič alphabet"},
["prefixes"] = {"sl"},
},
["boont"] = {
["descriptions"] = {"Boontling"},
["prefixes"] = {"en"},
},
["bornholm"] = {
["descriptions"] = {"Bornholmsk"},
["prefixes"] = {"da"},
},
["cisaup"] = {
["descriptions"] = {"Cisalpine"},
["prefixes"] = {"oc"},
},
["colb1945"] = {
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},
["prefixes"] = {"pt"},
},
["cornu"] = {
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},
["prefixes"] = {"en"},
},
["creiss"] = {
["descriptions"] = {"Occitan variants of the Croissant area"},
["prefixes"] = {"oc"},
},
["dajnko"] = {
["descriptions"] = {"Slovene in Dajnko alphabet"},
["prefixes"] = {"sl"},
},
["ekavsk"] = {
["descriptions"] = {"Serbian with Ekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["emodeng"] = {
["descriptions"] = {"Early Modern English (1500-1700)"},
["prefixes"] = {"en"},
},
["fonipa"] = {
["descriptions"] = {"International Phonetic Alphabet"},
["prefixes"] = {},
},
["fonkirsh"] = {
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},
["prefixes"] = {},
},
["fonnapa"] = {
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},
["prefixes"] = {},
},
["fonupa"] = {
["descriptions"] = {"Uralic Phonetic Alphabet"},
["prefixes"] = {},
},
["fonxsamp"] = {
["descriptions"] = {"X-SAMPA transcription"},
["prefixes"] = {},
},
["gallo"] = {
["descriptions"] = {"Gallo"},
["prefixes"] = {"fr"},
},
["gascon"] = {
["descriptions"] = {"Gascon"},
["prefixes"] = {"oc"},
},
["grclass"] = {
["descriptions"] = {"Classical Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["grital"] = {
["descriptions"] = {"Italian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},
},
["grmistr"] = {
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["hepburn"] = {
["descriptions"] = {"Hepburn romanization"},
["prefixes"] = {"ja-latn"},
},
["hognorsk"] = {
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},
["prefixes"] = {"nn"},
},
["hsistemo"] = {
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
},
["ijekavsk"] = {
["descriptions"] = {"Serbian with Ijekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["itihasa"] = {
["descriptions"] = {"Epic Sanskrit"},
["prefixes"] = {"sa"},
},
["ivanchov"] = {
["descriptions"] = {"Bulgarian in 1899 orthography"},
["prefixes"] = {"bg"},
},
["jauer"] = {
["descriptions"] = {"Jauer dialect of Romansh"},
["prefixes"] = {"rm"},
},
["jyutping"] = {
["descriptions"] = {"Jyutping Cantonese Romanization"},
["prefixes"] = {"yue"},
},
["kkcor"] = {
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["kociewie"] = {
["descriptions"] = {"The Kociewie dialect of Polish"},
["prefixes"] = {"pl"},
},
["kscor"] = {
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},
["prefixes"] = {"kw"},
},
["laukika"] = {
["descriptions"] = {"Classical Sanskrit"},
["prefixes"] = {"sa"},
},
["lemosin"] = {
["descriptions"] = {"Limousin"},
["prefixes"] = {"oc"},
},
["lengadoc"] = {
["descriptions"] = {"Languedocien"},
["prefixes"] = {"oc"},
},
["lipaw"] = {
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["ltg1929"] = {
["descriptions"] = {"The Latgalian language orthography codified in 1929"},
["prefixes"] = {"ltg"},
},
["ltg2007"] = {
["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"},
["prefixes"] = {"ltg"},
},
["luna1918"] = {
["descriptions"] = {"Post-1917 Russian orthography"},
["prefixes"] = {"ru"},
},
["metelko"] = {
["descriptions"] = {"Slovene in Metelko alphabet"},
["prefixes"] = {"sl"},
},
["monoton"] = {
["descriptions"] = {"Monotonic Greek"},
["prefixes"] = {"el"},
},
["ndyuka"] = {
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},
["prefixes"] = {"djk"},
},
["nedis"] = {
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},
["prefixes"] = {"sl"},
},
["newfound"] = {
["descriptions"] = {"Newfoundland English"},
["prefixes"] = {"en-ca"},
},
["nicard"] = {
["descriptions"] = {"Niçard"},
["prefixes"] = {"oc"},
},
["njiva"] = {
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["nulik"] = {
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},
["prefixes"] = {"vo"},
},
["osojs"] = {
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["oxendict"] = {
["descriptions"] = {"Oxford English Dictionary spelling"},
["prefixes"] = {"en"},
},
["pahawh2"] = {
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh3"] = {
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh4"] = {
["descriptions"] = {"Pahawh Hmong Final Version orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pamaka"] = {
["descriptions"] = {"Pamaka dialect"},
["prefixes"] = {"djk"},
},
["peano"] = {
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},
["prefixes"] = {"la"},
},
["petr1708"] = {
["descriptions"] = {"Petrine orthography"},
["prefixes"] = {"ru"},
},
["pinyin"] = {
["descriptions"] = {"Pinyin romanization"},
["prefixes"] = {"zh-latn", "bo-latn"},
},
["polyton"] = {
["descriptions"] = {"Polytonic Greek"},
["prefixes"] = {"el"},
},
["provenc"] = {
["descriptions"] = {"Provençal"},
["prefixes"] = {"oc"},
},
["puter"] = {
["descriptions"] = {"Puter idiom of Romansh"},
["prefixes"] = {"rm"},
},
["rigik"] = {
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},
["prefixes"] = {"vo"},
},
["rozaj"] = {
["descriptions"] = {"Resian", "Resianic", "Rezijan"},
["prefixes"] = {"sl"},
},
["rumgr"] = {
["descriptions"] = {"Rumantsch Grischun"},
["prefixes"] = {"rm"},
},
["scotland"] = {
["descriptions"] = {"Scottish Standard English"},
["prefixes"] = {"en"},
},
["scouse"] = {
["descriptions"] = {"Scouse"},
["prefixes"] = {"en"},
},
["simple"] = {
["descriptions"] = {"Simplified form"},
["prefixes"] = {},
},
["solba"] = {
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["sotav"] = {
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["spanglis"] = {
["descriptions"] = {"Spanglish"},
["prefixes"] = {"en", "es"},
},
["surmiran"] = {
["descriptions"] = {"Surmiran idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sursilv"] = {
["descriptions"] = {"Sursilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sutsilv"] = {
["descriptions"] = {"Sutsilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["synnejyl"] = {
["descriptions"] = {"Synnejysk", "South Jutish"},
["prefixes"] = {"da"},
},
["tarask"] = {
["descriptions"] = {"Belarusian in Taraskievica orthography"},
["prefixes"] = {"be"},
},
["tongyong"] = {
["descriptions"] = {"Tongyong Pinyin romanization"},
["prefixes"] = {"zh-latn"},
},
["tunumiit"] = {
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},
["prefixes"] = {"kl"},
},
["uccor"] = {
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ucrcor"] = {
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ulster"] = {
["descriptions"] = {"Ulster dialect of Scots"},
["prefixes"] = {"sco"},
},
["unifon"] = {
["descriptions"] = {"Unifon phonetic alphabet"},
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},
},
["vaidika"] = {
["descriptions"] = {"Vedic Sanskrit"},
["prefixes"] = {"sa"},
},
["valencia"] = {
["descriptions"] = {"Valencian"},
["prefixes"] = {"ca"},
},
["vallader"] = {
["descriptions"] = {"Vallader idiom of Romansh"},
["prefixes"] = {"rm"},
},
["vecdruka"] = {
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},
["prefixes"] = {"lv"},
},
["vivaraup"] = {
["descriptions"] = {"Vivaro-Alpine"},
["prefixes"] = {"oc"},
},
["wadegile"] = {
["descriptions"] = {"Wade-Giles romanization"},
["prefixes"] = {"zh-latn"},
},
["xsistemo"] = {
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
}
}
36f89cd82969f3b0f948034eba0fa2c149ee65c2
1042
1025
2023-10-01T09:58:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_variants]]
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["1606nict"] = {
["descriptions"] = {"Late Middle French (to 1606)"},
["prefixes"] = {"frm"},
},
["1694acad"] = {
["descriptions"] = {"Early Modern French"},
["prefixes"] = {"fr"},
},
["1901"] = {
["descriptions"] = {"Traditional German orthography"},
["prefixes"] = {"de"},
},
["1959acad"] = {
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},
["prefixes"] = {"be"},
},
["1994"] = {
["descriptions"] = {"Standardized Resian orthography"},
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},
},
["1996"] = {
["descriptions"] = {"German orthography of 1996"},
["prefixes"] = {"de"},
},
["abl1943"] = {
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},
["prefixes"] = {"pt-br"},
},
["akuapem"] = {
["descriptions"] = {"Akuapem Twi"},
["prefixes"] = {"tw"},
},
["alalc97"] = {
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},
["prefixes"] = {},
},
["aluku"] = {
["descriptions"] = {"Aluku dialect", "Boni dialect"},
["prefixes"] = {"djk"},
},
["ao1990"] = {
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},
["prefixes"] = {"pt", "gl"},
},
["aranes"] = {
["descriptions"] = {"Aranese"},
["prefixes"] = {"oc"},
},
["arkaika"] = {
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},
["prefixes"] = {"eo"},
},
["asante"] = {
["descriptions"] = {"Asante Twi", "Ashanti Twi"},
["prefixes"] = {"tw"},
},
["auvern"] = {
["descriptions"] = {"Auvergnat"},
["prefixes"] = {"oc"},
},
["baku1926"] = {
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},
},
["balanka"] = {
["descriptions"] = {"The Balanka dialect of Anii"},
["prefixes"] = {"blo"},
},
["barla"] = {
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["basiceng"] = {
["descriptions"] = {"Basic English"},
["prefixes"] = {"en"},
},
["bauddha"] = {
["descriptions"] = {"Buddhist Hybrid Sanskrit"},
["prefixes"] = {"sa"},
},
["bciav"] = {
["descriptions"] = {"BCI Blissymbolics AV"},
["prefixes"] = {"zbl"},
},
["bcizbl"] = {
["descriptions"] = {"BCI Blissymbolics"},
["prefixes"] = {"zbl"},
},
["biscayan"] = {
["descriptions"] = {"Biscayan dialect of Basque"},
["prefixes"] = {"eu"},
},
["biske"] = {
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["blasl"] = {
["descriptions"] = {"Black American Sign Language dialect"},
["prefixes"] = {"ase", "sgn-ase"},
},
["bohoric"] = {
["descriptions"] = {"Slovene in Bohorič alphabet"},
["prefixes"] = {"sl"},
},
["boont"] = {
["descriptions"] = {"Boontling"},
["prefixes"] = {"en"},
},
["bornholm"] = {
["descriptions"] = {"Bornholmsk"},
["prefixes"] = {"da"},
},
["cisaup"] = {
["descriptions"] = {"Cisalpine"},
["prefixes"] = {"oc"},
},
["colb1945"] = {
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},
["prefixes"] = {"pt"},
},
["cornu"] = {
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},
["prefixes"] = {"en"},
},
["creiss"] = {
["descriptions"] = {"Occitan variants of the Croissant area"},
["prefixes"] = {"oc"},
},
["dajnko"] = {
["descriptions"] = {"Slovene in Dajnko alphabet"},
["prefixes"] = {"sl"},
},
["ekavsk"] = {
["descriptions"] = {"Serbian with Ekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["emodeng"] = {
["descriptions"] = {"Early Modern English (1500-1700)"},
["prefixes"] = {"en"},
},
["fonipa"] = {
["descriptions"] = {"International Phonetic Alphabet"},
["prefixes"] = {},
},
["fonkirsh"] = {
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},
["prefixes"] = {},
},
["fonnapa"] = {
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},
["prefixes"] = {},
},
["fonupa"] = {
["descriptions"] = {"Uralic Phonetic Alphabet"},
["prefixes"] = {},
},
["fonxsamp"] = {
["descriptions"] = {"X-SAMPA transcription"},
["prefixes"] = {},
},
["gallo"] = {
["descriptions"] = {"Gallo"},
["prefixes"] = {"fr"},
},
["gascon"] = {
["descriptions"] = {"Gascon"},
["prefixes"] = {"oc"},
},
["grclass"] = {
["descriptions"] = {"Classical Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["grital"] = {
["descriptions"] = {"Italian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},
},
["grmistr"] = {
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["hepburn"] = {
["descriptions"] = {"Hepburn romanization"},
["prefixes"] = {"ja-latn"},
},
["hognorsk"] = {
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},
["prefixes"] = {"nn"},
},
["hsistemo"] = {
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
},
["ijekavsk"] = {
["descriptions"] = {"Serbian with Ijekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["itihasa"] = {
["descriptions"] = {"Epic Sanskrit"},
["prefixes"] = {"sa"},
},
["ivanchov"] = {
["descriptions"] = {"Bulgarian in 1899 orthography"},
["prefixes"] = {"bg"},
},
["jauer"] = {
["descriptions"] = {"Jauer dialect of Romansh"},
["prefixes"] = {"rm"},
},
["jyutping"] = {
["descriptions"] = {"Jyutping Cantonese Romanization"},
["prefixes"] = {"yue"},
},
["kkcor"] = {
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["kociewie"] = {
["descriptions"] = {"The Kociewie dialect of Polish"},
["prefixes"] = {"pl"},
},
["kscor"] = {
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},
["prefixes"] = {"kw"},
},
["laukika"] = {
["descriptions"] = {"Classical Sanskrit"},
["prefixes"] = {"sa"},
},
["lemosin"] = {
["descriptions"] = {"Limousin"},
["prefixes"] = {"oc"},
},
["lengadoc"] = {
["descriptions"] = {"Languedocien"},
["prefixes"] = {"oc"},
},
["lipaw"] = {
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["ltg1929"] = {
["descriptions"] = {"The Latgalian language orthography codified in 1929"},
["prefixes"] = {"ltg"},
},
["ltg2007"] = {
["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"},
["prefixes"] = {"ltg"},
},
["luna1918"] = {
["descriptions"] = {"Post-1917 Russian orthography"},
["prefixes"] = {"ru"},
},
["metelko"] = {
["descriptions"] = {"Slovene in Metelko alphabet"},
["prefixes"] = {"sl"},
},
["monoton"] = {
["descriptions"] = {"Monotonic Greek"},
["prefixes"] = {"el"},
},
["ndyuka"] = {
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},
["prefixes"] = {"djk"},
},
["nedis"] = {
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},
["prefixes"] = {"sl"},
},
["newfound"] = {
["descriptions"] = {"Newfoundland English"},
["prefixes"] = {"en-ca"},
},
["nicard"] = {
["descriptions"] = {"Niçard"},
["prefixes"] = {"oc"},
},
["njiva"] = {
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["nulik"] = {
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},
["prefixes"] = {"vo"},
},
["osojs"] = {
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["oxendict"] = {
["descriptions"] = {"Oxford English Dictionary spelling"},
["prefixes"] = {"en"},
},
["pahawh2"] = {
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh3"] = {
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh4"] = {
["descriptions"] = {"Pahawh Hmong Final Version orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pamaka"] = {
["descriptions"] = {"Pamaka dialect"},
["prefixes"] = {"djk"},
},
["peano"] = {
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},
["prefixes"] = {"la"},
},
["petr1708"] = {
["descriptions"] = {"Petrine orthography"},
["prefixes"] = {"ru"},
},
["pinyin"] = {
["descriptions"] = {"Pinyin romanization"},
["prefixes"] = {"zh-latn", "bo-latn"},
},
["polyton"] = {
["descriptions"] = {"Polytonic Greek"},
["prefixes"] = {"el"},
},
["provenc"] = {
["descriptions"] = {"Provençal"},
["prefixes"] = {"oc"},
},
["puter"] = {
["descriptions"] = {"Puter idiom of Romansh"},
["prefixes"] = {"rm"},
},
["rigik"] = {
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},
["prefixes"] = {"vo"},
},
["rozaj"] = {
["descriptions"] = {"Resian", "Resianic", "Rezijan"},
["prefixes"] = {"sl"},
},
["rumgr"] = {
["descriptions"] = {"Rumantsch Grischun"},
["prefixes"] = {"rm"},
},
["scotland"] = {
["descriptions"] = {"Scottish Standard English"},
["prefixes"] = {"en"},
},
["scouse"] = {
["descriptions"] = {"Scouse"},
["prefixes"] = {"en"},
},
["simple"] = {
["descriptions"] = {"Simplified form"},
["prefixes"] = {},
},
["solba"] = {
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["sotav"] = {
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["spanglis"] = {
["descriptions"] = {"Spanglish"},
["prefixes"] = {"en", "es"},
},
["surmiran"] = {
["descriptions"] = {"Surmiran idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sursilv"] = {
["descriptions"] = {"Sursilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sutsilv"] = {
["descriptions"] = {"Sutsilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["synnejyl"] = {
["descriptions"] = {"Synnejysk", "South Jutish"},
["prefixes"] = {"da"},
},
["tarask"] = {
["descriptions"] = {"Belarusian in Taraskievica orthography"},
["prefixes"] = {"be"},
},
["tongyong"] = {
["descriptions"] = {"Tongyong Pinyin romanization"},
["prefixes"] = {"zh-latn"},
},
["tunumiit"] = {
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},
["prefixes"] = {"kl"},
},
["uccor"] = {
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ucrcor"] = {
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ulster"] = {
["descriptions"] = {"Ulster dialect of Scots"},
["prefixes"] = {"sco"},
},
["unifon"] = {
["descriptions"] = {"Unifon phonetic alphabet"},
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},
},
["vaidika"] = {
["descriptions"] = {"Vedic Sanskrit"},
["prefixes"] = {"sa"},
},
["valencia"] = {
["descriptions"] = {"Valencian"},
["prefixes"] = {"ca"},
},
["vallader"] = {
["descriptions"] = {"Vallader idiom of Romansh"},
["prefixes"] = {"rm"},
},
["vecdruka"] = {
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},
["prefixes"] = {"lv"},
},
["vivaraup"] = {
["descriptions"] = {"Vivaro-Alpine"},
["prefixes"] = {"oc"},
},
["wadegile"] = {
["descriptions"] = {"Wade-Giles romanization"},
["prefixes"] = {"zh-latn"},
},
["xsistemo"] = {
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
}
}
36f89cd82969f3b0f948034eba0fa2c149ee65c2
Module:Language/data/iana suppressed scripts
828
474
1026
2023-10-01T09:56:38Z
Führerredux
2
Created page with "-- File-Date: 2023-08-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo..."
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Arab"] = {"ar", "fa", "ps", "ur"},
["Armn"] = {"hy"},
["Beng"] = {"as", "bn"},
["Blis"] = {"zbl"},
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},
["Ethi"] = {"am", "ti"},
["Geor"] = {"ka"},
["Grek"] = {"el"},
["Gujr"] = {"gu"},
["Guru"] = {"pa"},
["Hebr"] = {"he", "iw", "yi"},
["Jpan"] = {"ja"},
["Khmr"] = {"km"},
["Knda"] = {"kn"},
["Kore"] = {"ko"},
["Laoo"] = {"lo"},
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",
"tpi", "tvl"},
["Mlym"] = {"ml"},
["Mymr"] = {"my"},
["Nkoo"] = {"nqo"},
["Orya"] = {"or"},
["Sinh"] = {"si"},
["Taml"] = {"ta"},
["Telu"] = {"te"},
["Thaa"] = {"dv"},
["Thai"] = {"th"},
["Tibt"] = {"dz"}
}
e2c364560ccc050dacdd276ebab1758584b937ad
1044
1026
2023-10-01T09:58:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_suppressed_scripts]]
Scribunto
text/plain
-- File-Date: 2023-08-02
return {
["Arab"] = {"ar", "fa", "ps", "ur"},
["Armn"] = {"hy"},
["Beng"] = {"as", "bn"},
["Blis"] = {"zbl"},
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},
["Ethi"] = {"am", "ti"},
["Geor"] = {"ka"},
["Grek"] = {"el"},
["Gujr"] = {"gu"},
["Guru"] = {"pa"},
["Hebr"] = {"he", "iw", "yi"},
["Jpan"] = {"ja"},
["Khmr"] = {"km"},
["Knda"] = {"kn"},
["Kore"] = {"ko"},
["Laoo"] = {"lo"},
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",
"tpi", "tvl"},
["Mlym"] = {"ml"},
["Mymr"] = {"my"},
["Nkoo"] = {"nqo"},
["Orya"] = {"or"},
["Sinh"] = {"si"},
["Taml"] = {"ta"},
["Telu"] = {"te"},
["Thaa"] = {"dv"},
["Thai"] = {"th"},
["Tibt"] = {"dz"}
}
e2c364560ccc050dacdd276ebab1758584b937ad
Module:Lang/ISO 639 synonyms
828
475
1028
1027
2023-10-01T09:57:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lang/ISO_639_synonyms]]
Scribunto
text/plain
-- File-Date: 2013-01-11
return {
["aar"] = "aa",
["abk"] = "ab",
["afr"] = "af",
["aka"] = "ak",
["amh"] = "am",
["ara"] = "ar",
["arg"] = "an",
["asm"] = "as",
["ava"] = "av",
["ave"] = "ae",
["aym"] = "ay",
["aze"] = "az",
["bak"] = "ba",
["bam"] = "bm",
["bel"] = "be",
["ben"] = "bn",
["bih"] = "bh",
["bis"] = "bi",
["bod"] = "bo",
["bos"] = "bs",
["bre"] = "br",
["bul"] = "bg",
["cat"] = "ca",
["ces"] = "cs",
["cha"] = "ch",
["che"] = "ce",
["chu"] = "cu",
["chv"] = "cv",
["cor"] = "kw",
["cos"] = "co",
["cre"] = "cr",
["cym"] = "cy",
["dan"] = "da",
["deu"] = "de",
["div"] = "dv",
["dzo"] = "dz",
["ell"] = "el",
["eng"] = "en",
["epo"] = "eo",
["est"] = "et",
["eus"] = "eu",
["ewe"] = "ee",
["fao"] = "fo",
["fas"] = "fa",
["fij"] = "fj",
["fin"] = "fi",
["fra"] = "fr",
["fry"] = "fy",
["ful"] = "ff",
["gla"] = "gd",
["gle"] = "ga",
["glg"] = "gl",
["glv"] = "gv",
["grn"] = "gn",
["guj"] = "gu",
["hat"] = "ht",
["hau"] = "ha",
["heb"] = "he",
["her"] = "hz",
["hin"] = "hi",
["hmo"] = "ho",
["hrv"] = "hr",
["hun"] = "hu",
["hye"] = "hy",
["ibo"] = "ig",
["ido"] = "io",
["iii"] = "ii",
["iku"] = "iu",
["ile"] = "ie",
["ina"] = "ia",
["ind"] = "id",
["ipk"] = "ik",
["isl"] = "is",
["ita"] = "it",
["jav"] = "jv",
["jpn"] = "ja",
["kal"] = "kl",
["kan"] = "kn",
["kas"] = "ks",
["kat"] = "ka",
["kau"] = "kr",
["kaz"] = "kk",
["khm"] = "km",
["kik"] = "ki",
["kin"] = "rw",
["kir"] = "ky",
["kom"] = "kv",
["kon"] = "kg",
["kor"] = "ko",
["kua"] = "kj",
["kur"] = "ku",
["lao"] = "lo",
["lat"] = "la",
["lav"] = "lv",
["lim"] = "li",
["lin"] = "ln",
["lit"] = "lt",
["ltz"] = "lb",
["lub"] = "lu",
["lug"] = "lg",
["mah"] = "mh",
["mal"] = "ml",
["mar"] = "mr",
["mkd"] = "mk",
["mlg"] = "mg",
["mlt"] = "mt",
["mon"] = "mn",
["mri"] = "mi",
["msa"] = "ms",
["mya"] = "my",
["nau"] = "na",
["nav"] = "nv",
["nbl"] = "nr",
["nde"] = "nd",
["ndo"] = "ng",
["nep"] = "ne",
["nld"] = "nl",
["nno"] = "nn",
["nob"] = "nb",
["nor"] = "no",
["nya"] = "ny",
["oci"] = "oc",
["oji"] = "oj",
["ori"] = "or",
["orm"] = "om",
["oss"] = "os",
["pan"] = "pa",
["pli"] = "pi",
["pol"] = "pl",
["por"] = "pt",
["pus"] = "ps",
["que"] = "qu",
["roh"] = "rm",
["ron"] = "ro",
["run"] = "rn",
["rus"] = "ru",
["sag"] = "sg",
["san"] = "sa",
["sin"] = "si",
["slk"] = "sk",
["slv"] = "sl",
["sme"] = "se",
["smo"] = "sm",
["sna"] = "sn",
["snd"] = "sd",
["som"] = "so",
["sot"] = "st",
["spa"] = "es",
["sqi"] = "sq",
["srd"] = "sc",
["srp"] = "sr",
["ssw"] = "ss",
["sun"] = "su",
["swa"] = "sw",
["swe"] = "sv",
["tah"] = "ty",
["tam"] = "ta",
["tat"] = "tt",
["tel"] = "te",
["tgk"] = "tg",
["tgl"] = "tl",
["tha"] = "th",
["tir"] = "ti",
["ton"] = "to",
["tsn"] = "tn",
["tso"] = "ts",
["tuk"] = "tk",
["tur"] = "tr",
["twi"] = "tw",
["uig"] = "ug",
["ukr"] = "uk",
["urd"] = "ur",
["uzb"] = "uz",
["ven"] = "ve",
["vie"] = "vi",
["vol"] = "vo",
["wln"] = "wa",
["wol"] = "wo",
["xho"] = "xh",
["yid"] = "yi",
["yor"] = "yo",
["zha"] = "za",
["zho"] = "zh",
["zul"] = "zu"
}
f3fb5374c9e0fdef6ce6ea22736b79468358ca19
Module:Language
828
445
1030
971
2023-10-01T09:57:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language]]
Scribunto
text/plain
require('strict')
local m_data = mw.loadData("Module:Language/data")
local langData = m_data.languages or m_data
local p = {}
local function ifNotEmpty(value)
if value == "" then
return nil
else
return value
end
end
local function makeLinkedName(languageCode)
local data = langData[languageCode]
local article = data["article"]
local name = data["Wikipedia_name"] or data["name"]
return "[[" .. article .. "|" .. name .. "]]: "
end
local function makeEntryName(word, languageCode)
local data = langData[languageCode]
local ugsub = mw.ustring.gsub
word = tostring(word)
if word == nil then
error("The function makeEntryName requires a string argument")
elseif word == "" then
return ""
else
-- Remove bold and italics, so that words that contain bolding or emphasis can be linked without piping.
word = word:gsub("\'\'\'", "")
word = word:gsub("\'\'", "")
if data == nil then
return word
else
local replacements = data and data["replacements"]
if replacements == nil then
return word
else
-- Decompose so that the diacritics of characters such
-- as á can be removed in one go.
-- No need to compose at the end, because the MediaWiki software
-- will handle that.
if replacements.decompose then
word = mw.ustring.toNFD(word)
for i, from in ipairs(replacements.from) do
word = ugsub(
word,
from,
replacements.to and replacements.to[i] or "")
end
else
for regex, replacement in pairs(replacements) do
word = ugsub(word, regex, replacement)
end
end
return word
end
end
end
end
p.makeEntryName = makeEntryName
local function fixScriptCode(firstLetter, threeLetters)
return string.upper(firstLetter) .. string.lower(threeLetters)
end
local function getCodes(codes, text)
local languageCode, scriptCode, invalidCode
local errorText
if codes == nil or codes == "" then
errorText = 'no language or script code provided'
elseif codes:find("^%a%a%a?$") or codes:find("^%a%a%a?%-%a%a%a%a$") then
-- A three- or two-letter lowercase sequence at beginning of first parameter
languageCode =
codes:find("^%a%a%a?") and (
codes:match("^(%l%l%l?)")
or codes:match("^(%a%a%a?)")
:gsub("(%a%a%a?)", string.lower, 1)
)
-- One uppercase and three lowercase letters at the end of the first parameter
scriptCode =
codes:find("%a%a%a%a$") and (
codes:match("(%u%l%l%l)$")
or gsub(
codes:match("(%a%a%a%a)$"),
"(%a)(%a%a%a)",
fixScriptCode,
1
)
)
elseif codes:find("^%a%a%a?%-%a%a%a?$")
or codes:find("^%a%a%a%-%a%a%a%-%a%a%a$") then
languageCode = codes
-- Private-use subtag: x followed by one or more sequences of 1-8 lowercase
-- letters separated by hyphens. This only allows for one sequence, as it is
-- needed for proto-languages such as ine-x-proto (Proto-Indo-European).
elseif codes:find("^%a%a%a?%-x%-%a%a?%a?%a?%a?%a?%a?%a?$") then
languageCode, scriptCode =
codes:match("^(%a%a%a%-x%-%a%a?%a?%a?%a?%a?%a?%a?)%-?(.*)$")
if not languageCode then
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
elseif scriptCode ~= "" and not scriptCode:find("%a%a%a%a") then
errorText = '<code>'..scriptCode..'</code> is not a valid script code.'
else
scriptCode = scriptCode:gsub(
"(%a)(%a%a%a)",
fixScriptCode,
1
)
end
elseif codes:find("^%a%a%a?") then
languageCode, invalidCode = codes:match("^(%a%a%a?)%-?(.*)")
languageCode = string.lower(languageCode)
errorText = '<code>'..invalidCode..'</code> is not a valid script code.'
elseif codes:find("%-?%a%a%a%a$") then
invalidCode, scriptCode = codes:match("(.*)%-?(%a%a%a%a)$")
scriptCode = gsub(
scriptCode,
"(%a)(%a%a%a)",
fixScriptCode
)
errorText = '<code>'..invalidCode..'</code> is not a valid language code.'
else
errorText = '<code>'..codes..'</code> is not a valid language or script code.'
end
if not scriptCode or scriptCode == "" then
scriptCode = require("Module:Unicode data").is_Latin(text) and "Latn" or "unknown"
end
if errorText then
errorText = ' <span style="font-size: smaller">[' .. errorText .. ']</span>'
else
errorText = ""
end
languageCode = m_data.redirects[languageCode] or languageCode
return languageCode, scriptCode, errorText
end
local function tag(text, languageCode, script, italics)
local data = langData[languageCode]
-- Use Wikipedia code if it has been given: for instance,
-- Proto-Indo-European has the Wiktionary code "ine-pro" but the Wikipedia
-- code "ine-x-proto".
languageCode = data and data.Wikipedia_code or languageCode
local italicize = script == "Latn" and italics
if not text then text = "[text?]" end
local textDirectionMarkers = { "", "", "" }
if data and data["direction"] == "rtl" then
textDirectionMarkers = { ' dir="rtl"', '‏', '‎' }
end
local out = { textDirectionMarkers[2] }
if italicize then
table.insert(out, "<i lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</i>")
else
table.insert(out, "<span lang=\"" .. languageCode .. "\"" .. textDirectionMarkers[1] .. ">" .. text .. "</span>")
end
table.insert(out, textDirectionMarkers[3])
return table.concat(out)
end
function p.lang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local text = args[2] or error("Provide text in the second parameter")
local languageCode, scriptCode, errorText = getCodes(codes, text)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
return tag(text, languageCode, scriptCode, italics) .. errorText
end
local function linkToWiktionary(entry, linkText, languageCode)
local data = langData[languageCode]
local name
if languageCode then
if data and data.name then
name = data.name
else
-- On other languages' wikis, use mw.getContentLanguage():getCode(),
-- or replace 'en' with that wiki's language code.
name = mw.language.fetchLanguageName(languageCode, 'en')
if name == "" then
error("Name for the language code " .. ("%q"):format(languageCode or nil)
.. " could not be retrieved with mw.language.fetchLanguageName, "
.. "so it should be added to [[Module:Language/data]]")
end
end
if entry:sub(1, 1) == "*" then
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry:sub(2)
else
error("Language name is empty")
end
elseif data and data.type == "reconstructed" then
mw.log("Reconstructed language without asterisk:", languageCode, name, entry)
local frame = mw.getCurrentFrame()
-- Track reconstructed entries with no asterisk by transcluding
-- a nonexistent template. This technique is used in Wiktionary:
-- see [[wikt:Module:debug]].
-- [[Special:WhatLinksHere/tracking/wikt-lang/reconstructed with no asterisk]]
pcall(frame.expandTemplate, frame,
{ title = 'tracking/wikt-lang/reconstructed with no asterisk' })
if name ~= "" then
entry = "Reconstruction:" .. name .. "/" .. entry
else
error("Language name is empty")
end
elseif data and data.type == "appendix" then
if name ~= "" then
entry = "Appendix:" .. name .. "/" .. entry
else
error("Language name is empty")
end
end
if entry and linkText then
return "[[wikt:" .. entry .. "#" .. name .. "|" .. linkText .. "]]"
else
error("linkToWiktionary needs a Wiktionary entry or link text, or both")
end
else
return "[[wikt:" .. entry .. "|" .. linkText .. "]]"
end
end
function p.wiktlang(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not args[2] then
error("Parameter 2 is required")
end
local languageCode, scriptCode, errorText = getCodes(codes, word2 or word1)
local italics = args.italics or args.i or args.italic
italics = not (italics == "n" or italics == "-" or italics == "no")
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = tag(linkToWiktionary(entry, linkText, languageCode), languageCode, scriptCode, italics)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out .. errorText
else
return errorText or error("The function wiktlang generated nothing")
end
end
function p.wikt(frame)
local parent = frame:getParent()
local args = parent.args[1] and parent.args or frame.args
local codes = args[1] and mw.text.trim(args[1])
local word1 = ifNotEmpty(args[2])
local word2 = ifNotEmpty(args[3])
if not word1 then
error("Provide a word in parameter 2.")
end
local languageCode, scriptCode, errorText = getCodes(codes, word1)
local entry, linkText
if word2 and word1 then
entry = makeEntryName(word1, languageCode)
linkText = word2
elseif word1 then
entry = makeEntryName(word1, languageCode)
linkText = word1
end
local out
if languageCode and entry and linkText then
out = linkToWiktionary(entry, linkText, languageCode)
elseif entry and linkText then
out = linkToWiktionary(entry, linkText)
else
out = '<span style="font-size: smaller;">[text?]</span>'
end
if out and errorText then
return out and out .. errorText
else
return errorText or error("The function wikt generated nothing")
end
end
return p
51c30e9deeb315db9939fc27a0cb4cb41cfc1ed6
Module:Unicode data
828
459
1032
1010
2023-10-01T09:58:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Unicode_data]]
Scribunto
text/plain
local p = {}
local floor = math.floor
local function errorf(level, ...)
if type(level) == "number" then
return error(string.format(...), level + 1)
else -- level is actually the format string.
return error(string.format(level, ...), 2)
end
end
local function binary_range_search(codepoint, ranges)
local low, mid, high
low, high = 1, ranges.length or require "Module:TableTools".length(ranges)
while low <= high do
mid = floor((low + high) / 2)
local range = ranges[mid]
if codepoint < range[1] then
high = mid - 1
elseif codepoint <= range[2] then
return range, mid
else
low = mid + 1
end
end
return nil, mid
end
p.binary_range_search = binary_range_search
--[[
local function linear_range_search(codepoint, ranges)
for i, range in ipairs(ranges) do
if range[1] <= codepoint and codepoint <= range[2] then
return range
end
end
end
--]]
-- Load a module by indexing "loader" with the name of the module minus the
-- "Module:Unicode data/" part. For instance, loader.blocks returns
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be
-- returned.
local loader = setmetatable({}, {
__index = function (self, key)
local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key)
if not success then
data = false
end
self[key] = data
return data
end
})
-- For the algorithm used to generate Hangul Syllable names,
-- see "Hangul Syllable Name Generation" in section 3.12 of the
-- Unicode Specification:
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf
local name_hooks = {
{ 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters
{ 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters
{ 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A
{ 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph
{ 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables
local Hangul_data = loader.Hangul
local syllable_index = codepoint - 0xAC00
return ("HANGUL SYLLABLE %s%s%s"):format(
Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],
Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)
/ Hangul_data.trail_count)],
Hangul_data.trails[syllable_index % Hangul_data.trail_count]
)
end },
-- High Surrogates, High Private Use Surrogates, Low Surrogates
{ 0xD800, 0xDFFF, "<surrogate-%04X>" },
{ 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use
-- CJK Compatibility Ideographs
{ 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph
{ 0x18800, 0x18AFF, function (codepoint)
return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF)
end },
{ 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement
{ 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu
{ 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B
{ 0x2A700, 0x2B739, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C
{ 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D
{ 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E
{ 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F
-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)
{ 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" },
{ 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement
return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17)
end},
{ 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G
{ 0x31350, 0x323AF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension H
{ 0x2EBF0, 0x2EE5D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension I
{ 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use
{ 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use
}
name_hooks.length = #name_hooks
local name_range_cache
local function generate_name(data, codepoint)
if type(data) == "string" then
return data:format(codepoint)
else
return data(codepoint)
end
end
--[[
-- Checks that the code point is a number and in range.
-- Does not check whether code point is an integer.
-- Not used
local function check_codepoint(funcName, argIdx, val)
require 'libraryUtil'.checkType(funcName, argIdx, val, 'number')
if codepoint < 0 or 0x10FFFF < codepoint then
errorf("Codepoint %04X out of range", codepoint)
end
end
--]]
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8
function p.lookup_name(codepoint)
-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned
-- (Cn) and specifically noncharacters:
-- https://www.unicode.org/faq/private_use.html#nonchar4
if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF
or floor(codepoint % 0x10000) >= 0xFFFE) then
return ("<noncharacter-%04X>"):format(codepoint)
end
if name_range_cache -- Check if previously used "name hook" applies to this code point.
and codepoint >= name_range_cache[1]
and codepoint <= name_range_cache[2] then
return generate_name(name_range_cache[3], codepoint)
end
local range = binary_range_search(codepoint, name_hooks)
if range then
name_range_cache = range
return generate_name(range[3], codepoint)
end
local data = loader[('names/%03X'):format(codepoint / 0x1000)]
if data and data[codepoint] then
return data[codepoint]
-- Unassigned (Cn) consists of noncharacters and reserved characters.
-- The character has been established not to be a noncharacter,
-- and if it were assigned, its name would already been retrieved,
-- so it must be reserved.
else
return ("<reserved-%04X>"):format(codepoint)
end
end
--[[
-- No image data modules on Wikipedia yet.
function p.lookup_image(codepoint)
local data = loader[('images/%03X'):format(codepoint / 0x1000)]
if data then
return data[codepoint]
end
end
--]]
local planes = {
[ 0] = "Basic Multilingual Plane";
[ 1] = "Supplementary Multilingual Plane";
[ 2] = "Supplementary Ideographic Plane";
[ 3] = "Tertiary Ideographic Plane";
[14] = "Supplementary Special-purpose Plane";
[15] = "Supplementary Private Use Area-A";
[16] = "Supplementary Private Use Area-B";
}
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.
local blocks
local function block_iter(blocks, i)
i = i + 1
local data = blocks[i]
if data then
-- Unpack doesn't work on tables loaded with mw.loadData.
return i, data[1], data[2], data[3]
end
end
-- An ipairs-type iterator generator for the list of blocks.
function p.enum_blocks()
local blocks = loader.blocks
return block_iter, blocks, 0
end
function p.lookup_plane(codepoint)
local i = floor(codepoint / 0x10000)
return planes[i] or ("Plane %u"):format(i)
end
function p.lookup_block(codepoint)
local blocks = loader.blocks
local range = binary_range_search(codepoint, blocks)
if range then
return range[3]
else
return "No Block"
end
end
function p.get_block_info(name)
for i, block in ipairs(loader.blocks) do
if block[3] == name then
return block
end
end
end
function p.is_valid_pagename(pagename)
local has_nonws = false
for cp in mw.ustring.gcodepoint(pagename) do
if (cp == 0x0023) -- #
or (cp == 0x005B) -- [
or (cp == 0x005D) -- ]
or (cp == 0x007B) -- {
or (cp == 0x007C) -- |
or (cp == 0x007D) -- }
or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR
or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block
or (cp == 0xFFFD) -- REPLACEMENT CHARACTER
then
return false
end
local printable, result = p.is_printable(cp)
if not printable then
return false
end
if result ~= "space-separator" then
has_nonws = true
end
end
return has_nonws
end
local function manual_unpack(what, from)
if what[from + 1] == nil then
return what[from]
end
local result = {}
from = from or 1
for i, item in ipairs(what) do
if i >= from then
table.insert(result, item)
end
end
return unpack(result)
end
local function compare_ranges(range1, range2)
return range1[1] < range2[1]
end
-- Creates a function to look up data in a module that contains "singles" (a
-- code point-to-data map) and "ranges" (an array containing arrays that contain
-- the low and high code points of a range and the data associated with that
-- range).
-- "loader" loads and returns the "singles" and "ranges" tables.
-- "match_func" is passed the code point and either the data or the "dots", and
-- generates the final result of the function.
-- The varargs ("dots") describes the default data to be returned if there wasn't
-- a match.
-- In case the function is used more than once, "cache" saves ranges that have
-- already been found to match, or a range whose data is the default if there
-- was no match.
local function memo_lookup(data_module_subpage, match_func, ...)
local dots = { ... }
local cache = {}
local singles, ranges
return function (codepoint)
if not singles then
local data_module = loader[data_module_subpage]
singles, ranges = data_module.singles, data_module.ranges
end
if singles[codepoint] then
return match_func(codepoint, singles[codepoint])
end
local range = binary_range_search(codepoint, cache)
if range then
return match_func(codepoint, manual_unpack(range, 3))
end
local range, index = binary_range_search(codepoint, ranges)
if range then
table.insert(cache, range)
table.sort(cache, compare_ranges)
return match_func(codepoint, manual_unpack(range, 3))
end
if ranges[index] then
local dots_range
if codepoint > ranges[index][2] then
dots_range = {
ranges[index][2] + 1,
ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,
unpack(dots)
}
else -- codepoint < range[index][1]
dots_range = {
ranges[index - 1] and ranges[index - 1][2] + 1 or 0,
ranges[index][1] - 1,
unpack(dots)
}
end
table.sort(cache, compare_ranges)
end
return match_func(codepoint)
end
end
-- Get a code point's combining class value in [[Module:Unicode data/combining]],
-- and return whether this value is not zero. Zero is assigned as the default
-- if the combining class value is not found in this data module.
-- That is, return true if character is combining, or false if it is not.
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for
-- more information.
p.is_combining = memo_lookup(
"combining",
function (codepoint, combining_class)
return combining_class and combining_class ~= 0 or false
end,
0)
function p.add_dotted_circle(str)
return (mw.ustring.gsub(str, ".",
function(char)
if p.is_combining(mw.ustring.codepoint(char)) then
return '◌' .. char
end
end))
end
local lookup_control = memo_lookup(
"control",
function (codepoint, ccc)
return ccc or "assigned"
end,
"assigned")
p.lookup_control = lookup_control
function p.is_assigned(codepoint)
return lookup_control(codepoint) ~= "unassigned"
end
function p.is_printable(codepoint)
local result = lookup_control(codepoint)
return (result == "assigned") or (result == "space-separator"), result
end
function p.is_whitespace(codepoint)
local result = lookup_control(codepoint)
return (result == "space-separator"), result
end
p.lookup_category = memo_lookup(
"category",
function (codepoint, category)
return category
end,
"Cn")
local lookup_script = memo_lookup(
"scripts",
function (codepoint, script_code)
return script_code or 'Zzzz'
end,
"Zzzz")
p.lookup_script = lookup_script
function p.get_best_script(str)
-- Check type of argument, because mw.text.decode coerces numbers to strings!
require "libraryUtil".checkType("get_best_script", 1, str, "string")
-- Convert HTML character references (including named character references,
-- or character entities) to characters.
str = mw.text.decode(str, true)
local scripts = {}
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
-- Ignore "Inherited", "Undetermined", or "Uncoded" scripts.
if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then
scripts[script] = true
end
end
-- If scripts does not contain two or more keys,
-- return first and only key (script code) in table.
if not next(scripts, next(scripts)) then
return next(scripts)
end -- else return majority script, or else "Zzzz"?
end
function p.is_Latin(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0340-U+10FFFF. If they are not found and there is at least
-- one Latin-script character, the string counts as Latin, because the rest
-- of the characters can only be Zyyy, Zinh, and Zzzz.
-- The only scripts found below U+0370 (the first code point of the Greek
-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.
-- See the codepage in the [[UTF-8]] article.
if not str:find "[\205-\244]" then
for codepoint in mw.ustring.gcodepoint(str) do
if lookup_script(codepoint) == "Latn" then
return true
end
end
end
local Latn = false
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if script == "Latn" then
Latn = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return Latn
end
-- Checks that a string contains only characters belonging to right-to-left
-- scripts, or characters of ignorable scripts.
function p.is_rtl(str)
require "libraryUtil".checkType("get_best_script", 1, str, "string")
str = mw.text.decode(str, true)
-- Search for the leading bytes that introduce the UTF-8 encoding of the
-- code points U+0580-U+10FFFF. If they are not found, the string can only
-- have characters from a left-to-right script, because the first code point
-- in a right-to-left script is U+0591, in the Hebrew block.
if not str:find "[\214-\244]" then
return false
end
local result = false
local rtl = loader.scripts.rtl
for codepoint in mw.ustring.gcodepoint(str) do
local script = lookup_script(codepoint)
if rtl[script] then
result = true
elseif not (script == "Zyyy" or script == "Zinh"
or script == "Zzzz") then
return false
end
end
return result
end
--[[--------------------------< I S _ R T L _ F R A M E >------------------------------------------------------
external entry from an {{#invoke:}} to determine if a string of text is rtl. Strips html and html-like tags so
that those tags don't corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text
has <br /> tags.
]]
function p.is_rtl_frame (frame)
local str = frame.args[1]; -- get the string from the {{#invoke:}} frame
str = str:gsub ('%b<>', ''); -- strip any html and html-like tags
return p.is_rtl (str); -- return if whatever remains rtl; false else
end
local function get_codepoint(args, arg)
local codepoint_string = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
local codepoint = tonumber(codepoint_string, 16)
or errorf(2, "Parameter %s is not a code point in hexadecimal base",
tostring(arg))
if not (0 <= codepoint and codepoint <= 0x10FFFF) then
errorf(2, "code point in parameter %s out of range", tostring(arg))
end
return codepoint
end
local function get_func(args, arg, prefix)
local suffix = args[arg]
or errorf(2, "Parameter %s is required", tostring(arg))
suffix = mw.text.trim(suffix)
local func_name = prefix .. suffix
local func = p[func_name]
or errorf(2, "There is no function '%s'", func_name)
return func
end
-- This function allows any of the "lookup" functions to be invoked. The first
-- parameter is the word after "lookup_"; the second parameter is the code point
-- in hexadecimal base.
function p.lookup(frame)
local func = get_func(frame.args, 1, "lookup_")
local codepoint = get_codepoint(frame.args, 2)
local result = func(codepoint)
if func == p.lookup_name then
-- Prevent code point labels such as <control-0000> from being
-- interpreted as HTML tags.
result = result:gsub("<", "<")
end
return result
end
function p.is(frame)
local func = get_func(frame.args, 1, "is_")
-- is_Latin and is_valid_pagename take strings.
if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then
return (func(frame.args[2]))
else -- The rest take code points.
local codepoint = get_codepoint(frame.args, 2)
return (func(codepoint)) -- Adjust to one result.
end
end
return p
898b5f0689e2646f633acbbd08143920c87abef2
Module:Lang/data
828
465
1034
1017
2023-10-01T09:58:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lang/data]]
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage();
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table_t = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------
For internationalization; not used at en.wiki
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki
language list for the local language.
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens
add an appropriate entry to the override table below.
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply
spelling differences:
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym
dv: IANA: Dhivehi MW: Divehi
el: IANA: Modern Greek MW: Greek
ht: IANA: Haitian MW: Haitian Creole
ky: IANA: Kirghiz MW: Kyrgyz
li: IANA: Limburgan MW: Limburgish
or: IANA: Oriya MW: Odia
os: IANA: Ossetian MW: Ossetic
"pa: IANA: Panjabi MW: Punjabi
"ps: IANA: Pushto MW: Pashto
"to: IANA: Tonga MW: Tongan
"ug: IANA: Uighur MW: Uyghur
use the override table to override language names that are incorrect for your project
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))
(replacing <tag> with the language tag for your language)
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.
]]
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all
if true == media_wiki_override_enable then
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list
if lang_name_table_t.lang[tag] then -- if the tag is in the main list
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki
end
end
end
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------
["ab"] = "Abkhaz", -- to match en.wiki article name
["ca-valencia"] = "Valencian",
["cu"] = "Church Slavonic", -- 2nd IANA name;
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names
["de-ch"] = "Swiss Standard German",
["en-au"] = "Australian English",
["en-ca"] = "Canadian English",
["en-emodeng"] = "Early Modern English",
["en-gb"] = "British English",
["en-ie"] = "Irish English",
["en-in"] = "Indian English",
["en-nz"] = "New Zealand English",
["en-us"] = "American English",
["en-za"] = "South African English",
["fy"] = "West Frisian", -- Western Frisian
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title
["nl-be"] = "Flemish", -- match MediaWiki
["oc-provenc"] = "Provençal",
["ps"] = "Pashto", -- Pushto
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki
["tw-asante"] = "Asante Twi",
["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["av"] = "Avar", -- Avaric
["bo"] = "Standard Tibetan", -- Tibetan
["el"] = "Greek", -- Modern Greek
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa
["ff"] = "Fula", -- Fulah
["ht"] = "Haitian Creole", -- Haitian
["hz"] = "Otjiherero", -- Herero
["ii"] = "Yi", -- Sichuan Yi
["ki"] = "Gikuyu", -- Kikuyu
["kl"] = "Greenlandic", -- Kalaallisut
["ky"] = "Kyrgyz", -- Kirghiz
["lg"] = "Luganda", -- Ganda
["li"] = "Limburgish", -- Limburgan
["mi"] = "Māori", -- Maori
["na"] = "Nauruan", -- Nauru
["nb"] = "Bokmål", -- Norwegian Bokmål
["nd"] = "Northern Ndebele", -- North Ndebele
["nn"] = "Nynorsk", -- Norwegian Nynorsk
["nr"] = "Southern Ndebele", -- South Ndebele
["ny"] = "Chichewa", -- Nyanja
["oj"] = "Ojibwe", -- Ojibwa
["or"] = "Odia", -- Oriya
["pa"] = "Punjabi", -- Panjabi
["rn"] = "Kirundi", -- Rundi
["sl"] = "Slovene", -- Slovenian
["ss"] = "Swazi", -- Swati
["st"] = "Sotho", -- Southern Sotho
["to"] = "Tongan", -- Tonga
--<end do-not-edit except to comment out>--
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)
["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name
["art"] = "constructed", -- to match en.wiki article; lowercase for category name
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat
["bxr"] = "Russian Buryat", -- Russia Buriat;
["bxu"] = "Chinese Buryat", -- China Buriat;
["byr"] = "Yipma", -- Baruya, Yipma
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)
["frr"] = "North Frisian", -- Northern Frisian
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian
["gsw-fr"] = "Alsatian", -- match MediaWiki
["haa"] = "Hän", -- Han; to match en.wiki article title
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title
["jam"] = "Jamaican Patois", -- Jamaican Creole English
["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo
["mhr"] = "Meadow Mari", -- Eastern Mari
["mid"] = "Modern Mandaic", -- Mandaic
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)
["mla"] = "Tamambo", -- Malo
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text
["nrf-gg"] = "Guernésiais", -- match MediaWiki
["nrf-je"] = "Jèrriais", -- match MediaWiki
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)
["orv"] = "Old East Slavic", -- Old Russian
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title
["stq"] = "Saterland Frisian", -- Saterfriesisch
["und"] = "undetermined", -- capitalization to match existing category
["wrg"] = "Warrongo", -- Warungu
["xal-ru"] = "Kalmyk", -- to match en.wiki article title
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title
["zxx"] = "no linguistic content", -- capitalization
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["ace"] = "Acehnese", -- Achinese
["aec"] = "Sa'idi Arabic", -- Saidi Arabic
["akl"] = "Aklan", -- Aklanon
["alt"] = "Altay", -- Southern Altai
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache
["bal"] = "Balochi", -- Baluchi
-- ["bcl"] = "Central Bicolano", -- Central Bikol
["bin"] = "Edo", -- Bini
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya
["chg"] = "Chagatay", -- Chagatai
["ckb"] = "Sorani Kurdish", -- Central Kurdish
["cnu"] = "Shenwa", -- Chenoua
["coc"] = "Cocopah", -- Cocopa
["diq"] = "Zazaki", -- Dimli
["fit"] = "Meänkieli", -- Tornedalen Finnish
["fkv"] = "Kven", -- Kven Finnish
["frk"] = "Old Frankish", -- Frankish
["gez"] = "Ge'ez", -- Geez
["gju"] = "Gujari", -- Gujari
["gsw"] = "Alemannic German", -- Swiss German
["gul"] = "Gullah", -- Sea Island Creole English
["hak"] = "Hakka", -- Hakka Chinese
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew
["hnd"] = "Hindko", -- Southern Hindko
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun
["kaa"] = "Karakalpak", -- Kara-Kalpak
["khb"] = "Tai Lü", -- Lü
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish
["kpo"] = "Kposo", -- Ikposo
["krj"] = "Kinaray-a", -- Kinaray-A
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan
["lez"] = "Lezgian", -- Lezghian
["liv"] = "Livonian", -- Liv
["lng"] = "Lombardic", -- Langobardic
["mia"] = "Miami-Illinois", -- Miami
["miq"] = "Miskito", -- Mískito
["mix"] = "Mixtec", -- Mixtepec Mixtec
["mni"] = "Meitei", -- Manipuri
["mrj"] = "Hill Mari", -- Western Mari
["mww"] = "White Hmong", -- Hmong Daw
["nds-nl"] = "Dutch Low Saxon", -- Low German
-- ["new"] = "Nepal Bhasa", -- Newari
["nso"] = "Northern Sotho", -- Pedi
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari
["ood"] = "O'odham", -- Tohono O'odham
["otk"] = "Old Turkic", -- Old Turkish
["pal"] = "Middle Persian", -- Pahlavi
["pam"] = "Kapampangan", -- Pampanga
["phr"] = "Potwari", -- Pahari-Potwari
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit
-- ["pnb"] = "Punjabi", -- Western Panjabi
["psu"] = "Shauraseni", -- Sauraseni Prākrit
["rap"] = "Rapa Nui", -- Rapanui
["rar"] = "Cook Islands Māori", -- Rarotongan
["rmu"] = "Scandoromani", -- Tavringer Romani
["rom"] = "Romani", -- Romany
["rup"] = "Aromanian", -- Macedo-Romanian
["ryu"] = "Okinawan", -- Central Okinawan
["sdc"] = "Sassarese", -- Sassarese Sardinian
["sdn"] = "Gallurese", -- Gallurese Sardinian
["shp"] = "Shipibo", -- Shipibo-Conibo
["src"] = "Logudorese", -- Logudorese Sardinian
["sro"] = "Campidanese", -- Campidanese Sardinian
["tkl"] = "Tokelauan", -- Tokelau
["tvl"] = "Tuvaluan", -- Tuvalu
["tyv"] = "Tuvan", -- Tuvinian
["vls"] = "West Flemish", -- Vlaams
["wep"] = "Westphalian", -- Westphalien
["xal"] = "Oirat", -- Kalmyk
["xcl"] = "Old Armenian", -- Classical Armenian
["yua"] = "Yucatec Maya", -- Yucateco
--<end do-not-edit except to comment out>--
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------
["akk-x-latbabyl"] = "Late Babylonian",
["akk-x-midassyr"] = "Middle Assyrian Akkadian",
["akk-x-midbabyl"] = "Middle Babylonian Akkadian",
["akk-x-neoassyr"] = "Neo-Assyrian Akkadian",
["akk-x-neobabyl"] = "Neo-Babylonian Akkadian",
["akk-x-old"] = "Old Akkadian",
["akk-x-oldassyr"] = "Old Assyrian Akkadian",
["akk-x-oldbabyl"] = "Old Babylonian Akkadian",
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages
["ca-x-old"] = "Old Catalan",
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages
["egy-x-demotic"] = "Demotic Egyptian",
["egy-x-late"] = "Late Egyptian",
["egy-x-middle"] = "Middle Egyptian",
["egy-x-old"] = "Old Egyptian",
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages
["gmw-x-ecg"] = "East Central German",
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
["grc-x-attic"] = "Attic Greek",
["grc-x-biblical"] = "Biblical Greek",
["grc-x-byzant"] = "Byzantine Greek",
["grc-x-classic"] = "Classical Greek",
["grc-x-doric"] = "Doric Greek",
["grc-x-hellen"] = "Hellenistic Greek",
["grc-x-ionic"] = "Ionic Greek",
["grc-x-koine"] = "Koinē Greek",
["grc-x-medieval"] = "Medieval Greek",
["grc-x-patris"] = "Patristic Greek",
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages
["ine-x-proto"] = "Proto-Indo-European",
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there
["la-x-medieval"] = "Medieval Latin",
["la-x-new"] = "New Latin",
["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages
["prg-x-old"] = "Old Prussian",
["sem-x-ammonite"] = "Ammonite",
["sem-x-aramaic"] = "Aramaic",
["sem-x-canaan"] = "Canaanite languages",
["sem-x-dumaitic"] = "Dumaitic",
["sem-x-egurage"] = "Eastern Gurage",
["sem-x-hatran"] = "Hatran Aramaic",
["sem-x-oldsoara"] = "Old South Arabian",
["sem-x-palmyren"] = "Palmyrene Aramaic",
["sem-x-proto"] = "Proto-Semitic",
["sem-x-taymanit"] = "Taymanitic",
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai
["yuf-x-wal"] = "Walapai",
["yuf-x-yav"] = "Yavapai",
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon)
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page
["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon)
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo)
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['hno'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['pnb'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['skr'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
this_wiki_lang_tag = this_wiki_lang_tag,
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction
article_name = article_name,
lang_name_table = lang_name_table_t,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};
44981b3b66900e816590946e3e049c421ebecc80
Module:Exponential search
828
476
1046
1045
2023-10-01T09:58:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Exponential_search]]
Scribunto
text/plain
-- This module provides a generic exponential search algorithm.
require[[strict]]
local checkType = require('libraryUtil').checkType
local floor = math.floor
local function midPoint(lower, upper)
return floor(lower + (upper - lower) / 2)
end
local function search(testFunc, i, lower, upper)
if testFunc(i) then
if i + 1 == upper then
return i
end
lower = i
if upper then
i = midPoint(lower, upper)
else
i = i * 2
end
return search(testFunc, i, lower, upper)
else
upper = i
i = midPoint(lower, upper)
return search(testFunc, i, lower, upper)
end
end
return function (testFunc, init)
checkType('Exponential search', 1, testFunc, 'function')
checkType('Exponential search', 2, init, 'number', true)
if init and (init < 1 or init ~= floor(init) or init == math.huge) then
error(string.format(
"invalid init value '%s' detected in argument #2 to " ..
"'Exponential search' (init value must be a positive integer)",
tostring(init)
), 2)
end
init = init or 2
if not testFunc(1) then
return nil
end
return search(testFunc, init, 1, nil)
end
a9037be0c44536be79b2d7a26155bfb907368ae7
Module:Unicode data/scripts
828
477
1048
1047
2023-10-01T09:58:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Unicode_data/scripts]]
Scribunto
text/plain
--[=[
-- Official Unicode script values for individual codepoints and ranges of
-- codepoints.
-- https://www.unicode.org/Public/UNIDATA/Scripts.txt provided
-- the script names, and https://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt
-- provided script codes corresponding to the names (see [[Script (Unicode)]]).
--]=]
local data = {
singles = {
[0x000AA] = "Latn",
[0x000BA] = "Latn",
[0x000D7] = "Zyyy",
[0x000F7] = "Zyyy",
[0x00374] = "Zyyy",
[0x0037E] = "Zyyy",
[0x0037F] = "Grek",
[0x00384] = "Grek",
[0x00385] = "Zyyy",
[0x00386] = "Grek",
[0x00387] = "Zyyy",
[0x0038C] = "Grek",
[0x00605] = "Zyyy",
[0x0060C] = "Zyyy",
[0x0061B] = "Zyyy",
[0x0061F] = "Zyyy",
[0x00640] = "Zyyy",
[0x00670] = "Zinh",
[0x006DD] = "Zyyy",
[0x0085E] = "Mand",
[0x008E2] = "Zyyy",
[0x009B2] = "Beng",
[0x009D7] = "Beng",
[0x00A3C] = "Guru",
[0x00A51] = "Guru",
[0x00A5E] = "Guru",
[0x00AD0] = "Gujr",
[0x00B9C] = "Taml",
[0x00BD0] = "Taml",
[0x00BD7] = "Taml",
[0x00C5D] = "Telu",
[0x00DBD] = "Sinh",
[0x00DCA] = "Sinh",
[0x00DD6] = "Sinh",
[0x00E3F] = "Zyyy",
[0x00E84] = "Laoo",
[0x00EA5] = "Laoo",
[0x00EC6] = "Laoo",
[0x010C7] = "Geor",
[0x010CD] = "Geor",
[0x010FB] = "Zyyy",
[0x01258] = "Ethi",
[0x012C0] = "Ethi",
[0x0171F] = "Tglg",
[0x01804] = "Mong",
[0x01805] = "Zyyy",
[0x01940] = "Limb",
[0x01CD3] = "Zyyy",
[0x01CE1] = "Zyyy",
[0x01CED] = "Zinh",
[0x01CF4] = "Zinh",
[0x01CFA] = "Zyyy",
[0x01D2B] = "Cyrl",
[0x01D78] = "Cyrl",
[0x01DBF] = "Grek",
[0x01F59] = "Grek",
[0x01F5B] = "Grek",
[0x01F5D] = "Grek",
[0x02071] = "Latn",
[0x0207F] = "Latn",
[0x02126] = "Grek",
[0x02132] = "Latn",
[0x0214E] = "Latn",
[0x02D27] = "Geor",
[0x02D2D] = "Geor",
[0x02D7F] = "Tfng",
[0x03005] = "Hani",
[0x03006] = "Zyyy",
[0x03007] = "Hani",
[0x030A0] = "Zyyy",
[0x031EF] = "Zyyy",
[0x032FF] = "Zyyy",
[0x0A7D3] = "Latn",
[0x0A92E] = "Zyyy",
[0x0A92F] = "Kali",
[0x0A95F] = "Rjng",
[0x0A9CF] = "Zyyy",
[0x0AB5B] = "Zyyy",
[0x0AB65] = "Grek",
[0x0FB3E] = "Hebr",
[0x0FDCF] = "Arab",
[0x0FEFF] = "Zyyy",
[0x0FF70] = "Zyyy",
[0x101A0] = "Grek",
[0x101FD] = "Zinh",
[0x102E0] = "Zinh",
[0x1039F] = "Ugar",
[0x1056F] = "Aghb",
[0x10808] = "Cprt",
[0x1083C] = "Cprt",
[0x1083F] = "Cprt",
[0x1091F] = "Phnx",
[0x1093F] = "Lydi",
[0x1107F] = "Brah",
[0x110CD] = "Kthi",
[0x11288] = "Mult",
[0x1133B] = "Zinh",
[0x11350] = "Gran",
[0x11357] = "Gran",
[0x118FF] = "Wara",
[0x11909] = "Diak",
[0x11D3A] = "Gonm",
[0x11FB0] = "Lisu",
[0x11FFF] = "Taml",
[0x16FE0] = "Tang",
[0x16FE1] = "Nshu",
[0x16FE4] = "Kits",
[0x1B000] = "Kana",
[0x1B132] = "Hira",
[0x1B155] = "Kana",
[0x1D4A2] = "Zyyy",
[0x1D4BB] = "Zyyy",
[0x1D546] = "Zyyy",
[0x1E08F] = "Cyrl",
[0x1E2FF] = "Wcho",
[0x1EE24] = "Arab",
[0x1EE27] = "Arab",
[0x1EE39] = "Arab",
[0x1EE3B] = "Arab",
[0x1EE42] = "Arab",
[0x1EE47] = "Arab",
[0x1EE49] = "Arab",
[0x1EE4B] = "Arab",
[0x1EE54] = "Arab",
[0x1EE57] = "Arab",
[0x1EE59] = "Arab",
[0x1EE5B] = "Arab",
[0x1EE5D] = "Arab",
[0x1EE5F] = "Arab",
[0x1EE64] = "Arab",
[0x1EE7E] = "Arab",
[0x1F200] = "Hira",
[0x1F7F0] = "Zyyy",
[0xE0001] = "Zyyy",
},
ranges = {
{ 0x00000, 0x00040, "Zyyy" },
{ 0x00041, 0x0005A, "Latn" },
{ 0x0005B, 0x00060, "Zyyy" },
{ 0x00061, 0x0007A, "Latn" },
{ 0x0007B, 0x000A9, "Zyyy" },
{ 0x000AB, 0x000B9, "Zyyy" },
{ 0x000BB, 0x000BF, "Zyyy" },
{ 0x000C0, 0x000D6, "Latn" },
{ 0x000D8, 0x000F6, "Latn" },
{ 0x000F8, 0x002B8, "Latn" },
{ 0x002B9, 0x002DF, "Zyyy" },
{ 0x002E0, 0x002E4, "Latn" },
{ 0x002E5, 0x002E9, "Zyyy" },
{ 0x002EA, 0x002EB, "Bopo" },
{ 0x002EC, 0x002FF, "Zyyy" },
{ 0x00300, 0x0036F, "Zinh" },
{ 0x00370, 0x00373, "Grek" },
{ 0x00375, 0x00377, "Grek" },
{ 0x0037A, 0x0037D, "Grek" },
{ 0x00388, 0x0038A, "Grek" },
{ 0x0038E, 0x003A1, "Grek" },
{ 0x003A3, 0x003E1, "Grek" },
{ 0x003E2, 0x003EF, "Copt" },
{ 0x003F0, 0x003FF, "Grek" },
{ 0x00400, 0x00484, "Cyrl" },
{ 0x00485, 0x00486, "Zinh" },
{ 0x00487, 0x0052F, "Cyrl" },
{ 0x00531, 0x00556, "Armn" },
{ 0x00559, 0x0058A, "Armn" },
{ 0x0058D, 0x0058F, "Armn" },
{ 0x00591, 0x005C7, "Hebr" },
{ 0x005D0, 0x005EA, "Hebr" },
{ 0x005EF, 0x005F4, "Hebr" },
{ 0x00600, 0x00604, "Arab" },
{ 0x00606, 0x0060B, "Arab" },
{ 0x0060D, 0x0061A, "Arab" },
{ 0x0061C, 0x0061E, "Arab" },
{ 0x00620, 0x0063F, "Arab" },
{ 0x00641, 0x0064A, "Arab" },
{ 0x0064B, 0x00655, "Zinh" },
{ 0x00656, 0x0066F, "Arab" },
{ 0x00671, 0x006DC, "Arab" },
{ 0x006DE, 0x006FF, "Arab" },
{ 0x00700, 0x0070D, "Syrc" },
{ 0x0070F, 0x0074A, "Syrc" },
{ 0x0074D, 0x0074F, "Syrc" },
{ 0x00750, 0x0077F, "Arab" },
{ 0x00780, 0x007B1, "Thaa" },
{ 0x007C0, 0x007FA, "Nkoo" },
{ 0x007FD, 0x007FF, "Nkoo" },
{ 0x00800, 0x0082D, "Samr" },
{ 0x00830, 0x0083E, "Samr" },
{ 0x00840, 0x0085B, "Mand" },
{ 0x00860, 0x0086A, "Syrc" },
{ 0x00870, 0x0088E, "Arab" },
{ 0x00890, 0x00891, "Arab" },
{ 0x00898, 0x008E1, "Arab" },
{ 0x008E3, 0x008FF, "Arab" },
{ 0x00900, 0x00950, "Deva" },
{ 0x00951, 0x00954, "Zinh" },
{ 0x00955, 0x00963, "Deva" },
{ 0x00964, 0x00965, "Zyyy" },
{ 0x00966, 0x0097F, "Deva" },
{ 0x00980, 0x00983, "Beng" },
{ 0x00985, 0x0098C, "Beng" },
{ 0x0098F, 0x00990, "Beng" },
{ 0x00993, 0x009A8, "Beng" },
{ 0x009AA, 0x009B0, "Beng" },
{ 0x009B6, 0x009B9, "Beng" },
{ 0x009BC, 0x009C4, "Beng" },
{ 0x009C7, 0x009C8, "Beng" },
{ 0x009CB, 0x009CE, "Beng" },
{ 0x009DC, 0x009DD, "Beng" },
{ 0x009DF, 0x009E3, "Beng" },
{ 0x009E6, 0x009FE, "Beng" },
{ 0x00A01, 0x00A03, "Guru" },
{ 0x00A05, 0x00A0A, "Guru" },
{ 0x00A0F, 0x00A10, "Guru" },
{ 0x00A13, 0x00A28, "Guru" },
{ 0x00A2A, 0x00A30, "Guru" },
{ 0x00A32, 0x00A33, "Guru" },
{ 0x00A35, 0x00A36, "Guru" },
{ 0x00A38, 0x00A39, "Guru" },
{ 0x00A3E, 0x00A42, "Guru" },
{ 0x00A47, 0x00A48, "Guru" },
{ 0x00A4B, 0x00A4D, "Guru" },
{ 0x00A59, 0x00A5C, "Guru" },
{ 0x00A66, 0x00A76, "Guru" },
{ 0x00A81, 0x00A83, "Gujr" },
{ 0x00A85, 0x00A8D, "Gujr" },
{ 0x00A8F, 0x00A91, "Gujr" },
{ 0x00A93, 0x00AA8, "Gujr" },
{ 0x00AAA, 0x00AB0, "Gujr" },
{ 0x00AB2, 0x00AB3, "Gujr" },
{ 0x00AB5, 0x00AB9, "Gujr" },
{ 0x00ABC, 0x00AC5, "Gujr" },
{ 0x00AC7, 0x00AC9, "Gujr" },
{ 0x00ACB, 0x00ACD, "Gujr" },
{ 0x00AE0, 0x00AE3, "Gujr" },
{ 0x00AE6, 0x00AF1, "Gujr" },
{ 0x00AF9, 0x00AFF, "Gujr" },
{ 0x00B01, 0x00B03, "Orya" },
{ 0x00B05, 0x00B0C, "Orya" },
{ 0x00B0F, 0x00B10, "Orya" },
{ 0x00B13, 0x00B28, "Orya" },
{ 0x00B2A, 0x00B30, "Orya" },
{ 0x00B32, 0x00B33, "Orya" },
{ 0x00B35, 0x00B39, "Orya" },
{ 0x00B3C, 0x00B44, "Orya" },
{ 0x00B47, 0x00B48, "Orya" },
{ 0x00B4B, 0x00B4D, "Orya" },
{ 0x00B55, 0x00B57, "Orya" },
{ 0x00B5C, 0x00B5D, "Orya" },
{ 0x00B5F, 0x00B63, "Orya" },
{ 0x00B66, 0x00B77, "Orya" },
{ 0x00B82, 0x00B83, "Taml" },
{ 0x00B85, 0x00B8A, "Taml" },
{ 0x00B8E, 0x00B90, "Taml" },
{ 0x00B92, 0x00B95, "Taml" },
{ 0x00B99, 0x00B9A, "Taml" },
{ 0x00B9E, 0x00B9F, "Taml" },
{ 0x00BA3, 0x00BA4, "Taml" },
{ 0x00BA8, 0x00BAA, "Taml" },
{ 0x00BAE, 0x00BB9, "Taml" },
{ 0x00BBE, 0x00BC2, "Taml" },
{ 0x00BC6, 0x00BC8, "Taml" },
{ 0x00BCA, 0x00BCD, "Taml" },
{ 0x00BE6, 0x00BFA, "Taml" },
{ 0x00C00, 0x00C0C, "Telu" },
{ 0x00C0E, 0x00C10, "Telu" },
{ 0x00C12, 0x00C28, "Telu" },
{ 0x00C2A, 0x00C39, "Telu" },
{ 0x00C3C, 0x00C44, "Telu" },
{ 0x00C46, 0x00C48, "Telu" },
{ 0x00C4A, 0x00C4D, "Telu" },
{ 0x00C55, 0x00C56, "Telu" },
{ 0x00C58, 0x00C5A, "Telu" },
{ 0x00C60, 0x00C63, "Telu" },
{ 0x00C66, 0x00C6F, "Telu" },
{ 0x00C77, 0x00C7F, "Telu" },
{ 0x00C80, 0x00C8C, "Knda" },
{ 0x00C8E, 0x00C90, "Knda" },
{ 0x00C92, 0x00CA8, "Knda" },
{ 0x00CAA, 0x00CB3, "Knda" },
{ 0x00CB5, 0x00CB9, "Knda" },
{ 0x00CBC, 0x00CC4, "Knda" },
{ 0x00CC6, 0x00CC8, "Knda" },
{ 0x00CCA, 0x00CCD, "Knda" },
{ 0x00CD5, 0x00CD6, "Knda" },
{ 0x00CDD, 0x00CDE, "Knda" },
{ 0x00CE0, 0x00CE3, "Knda" },
{ 0x00CE6, 0x00CEF, "Knda" },
{ 0x00CF1, 0x00CF3, "Knda" },
{ 0x00D00, 0x00D0C, "Mlym" },
{ 0x00D0E, 0x00D10, "Mlym" },
{ 0x00D12, 0x00D44, "Mlym" },
{ 0x00D46, 0x00D48, "Mlym" },
{ 0x00D4A, 0x00D4F, "Mlym" },
{ 0x00D54, 0x00D63, "Mlym" },
{ 0x00D66, 0x00D7F, "Mlym" },
{ 0x00D81, 0x00D83, "Sinh" },
{ 0x00D85, 0x00D96, "Sinh" },
{ 0x00D9A, 0x00DB1, "Sinh" },
{ 0x00DB3, 0x00DBB, "Sinh" },
{ 0x00DC0, 0x00DC6, "Sinh" },
{ 0x00DCF, 0x00DD4, "Sinh" },
{ 0x00DD8, 0x00DDF, "Sinh" },
{ 0x00DE6, 0x00DEF, "Sinh" },
{ 0x00DF2, 0x00DF4, "Sinh" },
{ 0x00E01, 0x00E3A, "Thai" },
{ 0x00E40, 0x00E5B, "Thai" },
{ 0x00E81, 0x00E82, "Laoo" },
{ 0x00E86, 0x00E8A, "Laoo" },
{ 0x00E8C, 0x00EA3, "Laoo" },
{ 0x00EA7, 0x00EBD, "Laoo" },
{ 0x00EC0, 0x00EC4, "Laoo" },
{ 0x00EC8, 0x00ECE, "Laoo" },
{ 0x00ED0, 0x00ED9, "Laoo" },
{ 0x00EDC, 0x00EDF, "Laoo" },
{ 0x00F00, 0x00F47, "Tibt" },
{ 0x00F49, 0x00F6C, "Tibt" },
{ 0x00F71, 0x00F97, "Tibt" },
{ 0x00F99, 0x00FBC, "Tibt" },
{ 0x00FBE, 0x00FCC, "Tibt" },
{ 0x00FCE, 0x00FD4, "Tibt" },
{ 0x00FD5, 0x00FD8, "Zyyy" },
{ 0x00FD9, 0x00FDA, "Tibt" },
{ 0x01000, 0x0109F, "Mymr" },
{ 0x010A0, 0x010C5, "Geor" },
{ 0x010D0, 0x010FA, "Geor" },
{ 0x010FC, 0x010FF, "Geor" },
{ 0x01100, 0x011FF, "Hang" },
{ 0x01200, 0x01248, "Ethi" },
{ 0x0124A, 0x0124D, "Ethi" },
{ 0x01250, 0x01256, "Ethi" },
{ 0x0125A, 0x0125D, "Ethi" },
{ 0x01260, 0x01288, "Ethi" },
{ 0x0128A, 0x0128D, "Ethi" },
{ 0x01290, 0x012B0, "Ethi" },
{ 0x012B2, 0x012B5, "Ethi" },
{ 0x012B8, 0x012BE, "Ethi" },
{ 0x012C2, 0x012C5, "Ethi" },
{ 0x012C8, 0x012D6, "Ethi" },
{ 0x012D8, 0x01310, "Ethi" },
{ 0x01312, 0x01315, "Ethi" },
{ 0x01318, 0x0135A, "Ethi" },
{ 0x0135D, 0x0137C, "Ethi" },
{ 0x01380, 0x01399, "Ethi" },
{ 0x013A0, 0x013F5, "Cher" },
{ 0x013F8, 0x013FD, "Cher" },
{ 0x01400, 0x0167F, "Cans" },
{ 0x01680, 0x0169C, "Ogam" },
{ 0x016A0, 0x016EA, "Runr" },
{ 0x016EB, 0x016ED, "Zyyy" },
{ 0x016EE, 0x016F8, "Runr" },
{ 0x01700, 0x01715, "Tglg" },
{ 0x01720, 0x01734, "Hano" },
{ 0x01735, 0x01736, "Zyyy" },
{ 0x01740, 0x01753, "Buhd" },
{ 0x01760, 0x0176C, "Tagb" },
{ 0x0176E, 0x01770, "Tagb" },
{ 0x01772, 0x01773, "Tagb" },
{ 0x01780, 0x017DD, "Khmr" },
{ 0x017E0, 0x017E9, "Khmr" },
{ 0x017F0, 0x017F9, "Khmr" },
{ 0x01800, 0x01801, "Mong" },
{ 0x01802, 0x01803, "Zyyy" },
{ 0x01806, 0x01819, "Mong" },
{ 0x01820, 0x01878, "Mong" },
{ 0x01880, 0x018AA, "Mong" },
{ 0x018B0, 0x018F5, "Cans" },
{ 0x01900, 0x0191E, "Limb" },
{ 0x01920, 0x0192B, "Limb" },
{ 0x01930, 0x0193B, "Limb" },
{ 0x01944, 0x0194F, "Limb" },
{ 0x01950, 0x0196D, "Tale" },
{ 0x01970, 0x01974, "Tale" },
{ 0x01980, 0x019AB, "Talu" },
{ 0x019B0, 0x019C9, "Talu" },
{ 0x019D0, 0x019DA, "Talu" },
{ 0x019DE, 0x019DF, "Talu" },
{ 0x019E0, 0x019FF, "Khmr" },
{ 0x01A00, 0x01A1B, "Bugi" },
{ 0x01A1E, 0x01A1F, "Bugi" },
{ 0x01A20, 0x01A5E, "Lana" },
{ 0x01A60, 0x01A7C, "Lana" },
{ 0x01A7F, 0x01A89, "Lana" },
{ 0x01A90, 0x01A99, "Lana" },
{ 0x01AA0, 0x01AAD, "Lana" },
{ 0x01AB0, 0x01ACE, "Zinh" },
{ 0x01B00, 0x01B4C, "Bali" },
{ 0x01B50, 0x01B7E, "Bali" },
{ 0x01B80, 0x01BBF, "Sund" },
{ 0x01BC0, 0x01BF3, "Batk" },
{ 0x01BFC, 0x01BFF, "Batk" },
{ 0x01C00, 0x01C37, "Lepc" },
{ 0x01C3B, 0x01C49, "Lepc" },
{ 0x01C4D, 0x01C4F, "Lepc" },
{ 0x01C50, 0x01C7F, "Olck" },
{ 0x01C80, 0x01C88, "Cyrl" },
{ 0x01C90, 0x01CBA, "Geor" },
{ 0x01CBD, 0x01CBF, "Geor" },
{ 0x01CC0, 0x01CC7, "Sund" },
{ 0x01CD0, 0x01CD2, "Zinh" },
{ 0x01CD4, 0x01CE0, "Zinh" },
{ 0x01CE2, 0x01CE8, "Zinh" },
{ 0x01CE9, 0x01CEC, "Zyyy" },
{ 0x01CEE, 0x01CF3, "Zyyy" },
{ 0x01CF5, 0x01CF7, "Zyyy" },
{ 0x01CF8, 0x01CF9, "Zinh" },
{ 0x01D00, 0x01D25, "Latn" },
{ 0x01D26, 0x01D2A, "Grek" },
{ 0x01D2C, 0x01D5C, "Latn" },
{ 0x01D5D, 0x01D61, "Grek" },
{ 0x01D62, 0x01D65, "Latn" },
{ 0x01D66, 0x01D6A, "Grek" },
{ 0x01D6B, 0x01D77, "Latn" },
{ 0x01D79, 0x01DBE, "Latn" },
{ 0x01DC0, 0x01DFF, "Zinh" },
{ 0x01E00, 0x01EFF, "Latn" },
{ 0x01F00, 0x01F15, "Grek" },
{ 0x01F18, 0x01F1D, "Grek" },
{ 0x01F20, 0x01F45, "Grek" },
{ 0x01F48, 0x01F4D, "Grek" },
{ 0x01F50, 0x01F57, "Grek" },
{ 0x01F5F, 0x01F7D, "Grek" },
{ 0x01F80, 0x01FB4, "Grek" },
{ 0x01FB6, 0x01FC4, "Grek" },
{ 0x01FC6, 0x01FD3, "Grek" },
{ 0x01FD6, 0x01FDB, "Grek" },
{ 0x01FDD, 0x01FEF, "Grek" },
{ 0x01FF2, 0x01FF4, "Grek" },
{ 0x01FF6, 0x01FFE, "Grek" },
{ 0x02000, 0x0200B, "Zyyy" },
{ 0x0200C, 0x0200D, "Zinh" },
{ 0x0200E, 0x02064, "Zyyy" },
{ 0x02066, 0x02070, "Zyyy" },
{ 0x02074, 0x0207E, "Zyyy" },
{ 0x02080, 0x0208E, "Zyyy" },
{ 0x02090, 0x0209C, "Latn" },
{ 0x020A0, 0x020C0, "Zyyy" },
{ 0x020D0, 0x020F0, "Zinh" },
{ 0x02100, 0x02125, "Zyyy" },
{ 0x02127, 0x02129, "Zyyy" },
{ 0x0212A, 0x0212B, "Latn" },
{ 0x0212C, 0x02131, "Zyyy" },
{ 0x02133, 0x0214D, "Zyyy" },
{ 0x0214F, 0x0215F, "Zyyy" },
{ 0x02160, 0x02188, "Latn" },
{ 0x02189, 0x0218B, "Zyyy" },
{ 0x02190, 0x02426, "Zyyy" },
{ 0x02440, 0x0244A, "Zyyy" },
{ 0x02460, 0x027FF, "Zyyy" },
{ 0x02800, 0x028FF, "Brai" },
{ 0x02900, 0x02B73, "Zyyy" },
{ 0x02B76, 0x02B95, "Zyyy" },
{ 0x02B97, 0x02BFF, "Zyyy" },
{ 0x02C00, 0x02C5F, "Glag" },
{ 0x02C60, 0x02C7F, "Latn" },
{ 0x02C80, 0x02CF3, "Copt" },
{ 0x02CF9, 0x02CFF, "Copt" },
{ 0x02D00, 0x02D25, "Geor" },
{ 0x02D30, 0x02D67, "Tfng" },
{ 0x02D6F, 0x02D70, "Tfng" },
{ 0x02D80, 0x02D96, "Ethi" },
{ 0x02DA0, 0x02DA6, "Ethi" },
{ 0x02DA8, 0x02DAE, "Ethi" },
{ 0x02DB0, 0x02DB6, "Ethi" },
{ 0x02DB8, 0x02DBE, "Ethi" },
{ 0x02DC0, 0x02DC6, "Ethi" },
{ 0x02DC8, 0x02DCE, "Ethi" },
{ 0x02DD0, 0x02DD6, "Ethi" },
{ 0x02DD8, 0x02DDE, "Ethi" },
{ 0x02DE0, 0x02DFF, "Cyrl" },
{ 0x02E00, 0x02E5D, "Zyyy" },
{ 0x02E80, 0x02E99, "Hani" },
{ 0x02E9B, 0x02EF3, "Hani" },
{ 0x02F00, 0x02FD5, "Hani" },
{ 0x02FF0, 0x03004, "Zyyy" },
{ 0x03008, 0x03020, "Zyyy" },
{ 0x03021, 0x03029, "Hani" },
{ 0x0302A, 0x0302D, "Zinh" },
{ 0x0302E, 0x0302F, "Hang" },
{ 0x03030, 0x03037, "Zyyy" },
{ 0x03038, 0x0303B, "Hani" },
{ 0x0303C, 0x0303F, "Zyyy" },
{ 0x03041, 0x03096, "Hira" },
{ 0x03099, 0x0309A, "Zinh" },
{ 0x0309B, 0x0309C, "Zyyy" },
{ 0x0309D, 0x0309F, "Hira" },
{ 0x030A1, 0x030FA, "Kana" },
{ 0x030FB, 0x030FC, "Zyyy" },
{ 0x030FD, 0x030FF, "Kana" },
{ 0x03105, 0x0312F, "Bopo" },
{ 0x03131, 0x0318E, "Hang" },
{ 0x03190, 0x0319F, "Zyyy" },
{ 0x031A0, 0x031BF, "Bopo" },
{ 0x031C0, 0x031E3, "Zyyy" },
{ 0x031F0, 0x031FF, "Kana" },
{ 0x03200, 0x0321E, "Hang" },
{ 0x03220, 0x0325F, "Zyyy" },
{ 0x03260, 0x0327E, "Hang" },
{ 0x0327F, 0x032CF, "Zyyy" },
{ 0x032D0, 0x032FE, "Kana" },
{ 0x03300, 0x03357, "Kana" },
{ 0x03358, 0x033FF, "Zyyy" },
{ 0x03400, 0x04DBF, "Hani" },
{ 0x04DC0, 0x04DFF, "Zyyy" },
{ 0x04E00, 0x09FFF, "Hani" },
{ 0x0A000, 0x0A48C, "Yiii" },
{ 0x0A490, 0x0A4C6, "Yiii" },
{ 0x0A4D0, 0x0A4FF, "Lisu" },
{ 0x0A500, 0x0A62B, "Vaii" },
{ 0x0A640, 0x0A69F, "Cyrl" },
{ 0x0A6A0, 0x0A6F7, "Bamu" },
{ 0x0A700, 0x0A721, "Zyyy" },
{ 0x0A722, 0x0A787, "Latn" },
{ 0x0A788, 0x0A78A, "Zyyy" },
{ 0x0A78B, 0x0A7CA, "Latn" },
{ 0x0A7D0, 0x0A7D1, "Latn" },
{ 0x0A7D5, 0x0A7D9, "Latn" },
{ 0x0A7F2, 0x0A7FF, "Latn" },
{ 0x0A800, 0x0A82C, "Sylo" },
{ 0x0A830, 0x0A839, "Zyyy" },
{ 0x0A840, 0x0A877, "Phag" },
{ 0x0A880, 0x0A8C5, "Saur" },
{ 0x0A8CE, 0x0A8D9, "Saur" },
{ 0x0A8E0, 0x0A8FF, "Deva" },
{ 0x0A900, 0x0A92D, "Kali" },
{ 0x0A930, 0x0A953, "Rjng" },
{ 0x0A960, 0x0A97C, "Hang" },
{ 0x0A980, 0x0A9CD, "Java" },
{ 0x0A9D0, 0x0A9D9, "Java" },
{ 0x0A9DE, 0x0A9DF, "Java" },
{ 0x0A9E0, 0x0A9FE, "Mymr" },
{ 0x0AA00, 0x0AA36, "Cham" },
{ 0x0AA40, 0x0AA4D, "Cham" },
{ 0x0AA50, 0x0AA59, "Cham" },
{ 0x0AA5C, 0x0AA5F, "Cham" },
{ 0x0AA60, 0x0AA7F, "Mymr" },
{ 0x0AA80, 0x0AAC2, "Tavt" },
{ 0x0AADB, 0x0AADF, "Tavt" },
{ 0x0AAE0, 0x0AAF6, "Mtei" },
{ 0x0AB01, 0x0AB06, "Ethi" },
{ 0x0AB09, 0x0AB0E, "Ethi" },
{ 0x0AB11, 0x0AB16, "Ethi" },
{ 0x0AB20, 0x0AB26, "Ethi" },
{ 0x0AB28, 0x0AB2E, "Ethi" },
{ 0x0AB30, 0x0AB5A, "Latn" },
{ 0x0AB5C, 0x0AB64, "Latn" },
{ 0x0AB66, 0x0AB69, "Latn" },
{ 0x0AB6A, 0x0AB6B, "Zyyy" },
{ 0x0AB70, 0x0ABBF, "Cher" },
{ 0x0ABC0, 0x0ABED, "Mtei" },
{ 0x0ABF0, 0x0ABF9, "Mtei" },
{ 0x0AC00, 0x0D7A3, "Hang" },
{ 0x0D7B0, 0x0D7C6, "Hang" },
{ 0x0D7CB, 0x0D7FB, "Hang" },
{ 0x0F900, 0x0FA6D, "Hani" },
{ 0x0FA70, 0x0FAD9, "Hani" },
{ 0x0FB00, 0x0FB06, "Latn" },
{ 0x0FB13, 0x0FB17, "Armn" },
{ 0x0FB1D, 0x0FB36, "Hebr" },
{ 0x0FB38, 0x0FB3C, "Hebr" },
{ 0x0FB40, 0x0FB41, "Hebr" },
{ 0x0FB43, 0x0FB44, "Hebr" },
{ 0x0FB46, 0x0FB4F, "Hebr" },
{ 0x0FB50, 0x0FBC2, "Arab" },
{ 0x0FBD3, 0x0FD3D, "Arab" },
{ 0x0FD3E, 0x0FD3F, "Zyyy" },
{ 0x0FD40, 0x0FD8F, "Arab" },
{ 0x0FD92, 0x0FDC7, "Arab" },
{ 0x0FDF0, 0x0FDFF, "Arab" },
{ 0x0FE00, 0x0FE0F, "Zinh" },
{ 0x0FE10, 0x0FE19, "Zyyy" },
{ 0x0FE20, 0x0FE2D, "Zinh" },
{ 0x0FE2E, 0x0FE2F, "Cyrl" },
{ 0x0FE30, 0x0FE52, "Zyyy" },
{ 0x0FE54, 0x0FE66, "Zyyy" },
{ 0x0FE68, 0x0FE6B, "Zyyy" },
{ 0x0FE70, 0x0FE74, "Arab" },
{ 0x0FE76, 0x0FEFC, "Arab" },
{ 0x0FF01, 0x0FF20, "Zyyy" },
{ 0x0FF21, 0x0FF3A, "Latn" },
{ 0x0FF3B, 0x0FF40, "Zyyy" },
{ 0x0FF41, 0x0FF5A, "Latn" },
{ 0x0FF5B, 0x0FF65, "Zyyy" },
{ 0x0FF66, 0x0FF6F, "Kana" },
{ 0x0FF71, 0x0FF9D, "Kana" },
{ 0x0FF9E, 0x0FF9F, "Zyyy" },
{ 0x0FFA0, 0x0FFBE, "Hang" },
{ 0x0FFC2, 0x0FFC7, "Hang" },
{ 0x0FFCA, 0x0FFCF, "Hang" },
{ 0x0FFD2, 0x0FFD7, "Hang" },
{ 0x0FFDA, 0x0FFDC, "Hang" },
{ 0x0FFE0, 0x0FFE6, "Zyyy" },
{ 0x0FFE8, 0x0FFEE, "Zyyy" },
{ 0x0FFF9, 0x0FFFD, "Zyyy" },
{ 0x10000, 0x1000B, "Linb" },
{ 0x1000D, 0x10026, "Linb" },
{ 0x10028, 0x1003A, "Linb" },
{ 0x1003C, 0x1003D, "Linb" },
{ 0x1003F, 0x1004D, "Linb" },
{ 0x10050, 0x1005D, "Linb" },
{ 0x10080, 0x100FA, "Linb" },
{ 0x10100, 0x10102, "Zyyy" },
{ 0x10107, 0x10133, "Zyyy" },
{ 0x10137, 0x1013F, "Zyyy" },
{ 0x10140, 0x1018E, "Grek" },
{ 0x10190, 0x1019C, "Zyyy" },
{ 0x101D0, 0x101FC, "Zyyy" },
{ 0x10280, 0x1029C, "Lyci" },
{ 0x102A0, 0x102D0, "Cari" },
{ 0x102E1, 0x102FB, "Zyyy" },
{ 0x10300, 0x10323, "Ital" },
{ 0x1032D, 0x1032F, "Ital" },
{ 0x10330, 0x1034A, "Goth" },
{ 0x10350, 0x1037A, "Perm" },
{ 0x10380, 0x1039D, "Ugar" },
{ 0x103A0, 0x103C3, "Xpeo" },
{ 0x103C8, 0x103D5, "Xpeo" },
{ 0x10400, 0x1044F, "Dsrt" },
{ 0x10450, 0x1047F, "Shaw" },
{ 0x10480, 0x1049D, "Osma" },
{ 0x104A0, 0x104A9, "Osma" },
{ 0x104B0, 0x104D3, "Osge" },
{ 0x104D8, 0x104FB, "Osge" },
{ 0x10500, 0x10527, "Elba" },
{ 0x10530, 0x10563, "Aghb" },
{ 0x10570, 0x1057A, "Vith" },
{ 0x1057C, 0x1058A, "Vith" },
{ 0x1058C, 0x10592, "Vith" },
{ 0x10594, 0x10595, "Vith" },
{ 0x10597, 0x105A1, "Vith" },
{ 0x105A3, 0x105B1, "Vith" },
{ 0x105B3, 0x105B9, "Vith" },
{ 0x105BB, 0x105BC, "Vith" },
{ 0x10600, 0x10736, "Lina" },
{ 0x10740, 0x10755, "Lina" },
{ 0x10760, 0x10767, "Lina" },
{ 0x10780, 0x10785, "Latn" },
{ 0x10787, 0x107B0, "Latn" },
{ 0x107B2, 0x107BA, "Latn" },
{ 0x10800, 0x10805, "Cprt" },
{ 0x1080A, 0x10835, "Cprt" },
{ 0x10837, 0x10838, "Cprt" },
{ 0x10840, 0x10855, "Armi" },
{ 0x10857, 0x1085F, "Armi" },
{ 0x10860, 0x1087F, "Palm" },
{ 0x10880, 0x1089E, "Nbat" },
{ 0x108A7, 0x108AF, "Nbat" },
{ 0x108E0, 0x108F2, "Hatr" },
{ 0x108F4, 0x108F5, "Hatr" },
{ 0x108FB, 0x108FF, "Hatr" },
{ 0x10900, 0x1091B, "Phnx" },
{ 0x10920, 0x10939, "Lydi" },
{ 0x10980, 0x1099F, "Mero" },
{ 0x109A0, 0x109B7, "Merc" },
{ 0x109BC, 0x109CF, "Merc" },
{ 0x109D2, 0x109FF, "Merc" },
{ 0x10A00, 0x10A03, "Khar" },
{ 0x10A05, 0x10A06, "Khar" },
{ 0x10A0C, 0x10A13, "Khar" },
{ 0x10A15, 0x10A17, "Khar" },
{ 0x10A19, 0x10A35, "Khar" },
{ 0x10A38, 0x10A3A, "Khar" },
{ 0x10A3F, 0x10A48, "Khar" },
{ 0x10A50, 0x10A58, "Khar" },
{ 0x10A60, 0x10A7F, "Sarb" },
{ 0x10A80, 0x10A9F, "Narb" },
{ 0x10AC0, 0x10AE6, "Mani" },
{ 0x10AEB, 0x10AF6, "Mani" },
{ 0x10B00, 0x10B35, "Avst" },
{ 0x10B39, 0x10B3F, "Avst" },
{ 0x10B40, 0x10B55, "Prti" },
{ 0x10B58, 0x10B5F, "Prti" },
{ 0x10B60, 0x10B72, "Phli" },
{ 0x10B78, 0x10B7F, "Phli" },
{ 0x10B80, 0x10B91, "Phlp" },
{ 0x10B99, 0x10B9C, "Phlp" },
{ 0x10BA9, 0x10BAF, "Phlp" },
{ 0x10C00, 0x10C48, "Orkh" },
{ 0x10C80, 0x10CB2, "Hung" },
{ 0x10CC0, 0x10CF2, "Hung" },
{ 0x10CFA, 0x10CFF, "Hung" },
{ 0x10D00, 0x10D27, "Rohg" },
{ 0x10D30, 0x10D39, "Rohg" },
{ 0x10E60, 0x10E7E, "Arab" },
{ 0x10E80, 0x10EA9, "Yezi" },
{ 0x10EAB, 0x10EAD, "Yezi" },
{ 0x10EB0, 0x10EB1, "Yezi" },
{ 0x10EFD, 0x10EFF, "Arab" },
{ 0x10F00, 0x10F27, "Sogo" },
{ 0x10F30, 0x10F59, "Sogd" },
{ 0x10F70, 0x10F89, "Ougr" },
{ 0x10FB0, 0x10FCB, "Chrs" },
{ 0x10FE0, 0x10FF6, "Elym" },
{ 0x11000, 0x1104D, "Brah" },
{ 0x11052, 0x11075, "Brah" },
{ 0x11080, 0x110C2, "Kthi" },
{ 0x110D0, 0x110E8, "Sora" },
{ 0x110F0, 0x110F9, "Sora" },
{ 0x11100, 0x11134, "Cakm" },
{ 0x11136, 0x11147, "Cakm" },
{ 0x11150, 0x11176, "Mahj" },
{ 0x11180, 0x111DF, "Shrd" },
{ 0x111E1, 0x111F4, "Sinh" },
{ 0x11200, 0x11211, "Khoj" },
{ 0x11213, 0x11241, "Khoj" },
{ 0x11280, 0x11286, "Mult" },
{ 0x1128A, 0x1128D, "Mult" },
{ 0x1128F, 0x1129D, "Mult" },
{ 0x1129F, 0x112A9, "Mult" },
{ 0x112B0, 0x112EA, "Sind" },
{ 0x112F0, 0x112F9, "Sind" },
{ 0x11300, 0x11303, "Gran" },
{ 0x11305, 0x1130C, "Gran" },
{ 0x1130F, 0x11310, "Gran" },
{ 0x11313, 0x11328, "Gran" },
{ 0x1132A, 0x11330, "Gran" },
{ 0x11332, 0x11333, "Gran" },
{ 0x11335, 0x11339, "Gran" },
{ 0x1133C, 0x11344, "Gran" },
{ 0x11347, 0x11348, "Gran" },
{ 0x1134B, 0x1134D, "Gran" },
{ 0x1135D, 0x11363, "Gran" },
{ 0x11366, 0x1136C, "Gran" },
{ 0x11370, 0x11374, "Gran" },
{ 0x11400, 0x1145B, "Newa" },
{ 0x1145D, 0x11461, "Newa" },
{ 0x11480, 0x114C7, "Tirh" },
{ 0x114D0, 0x114D9, "Tirh" },
{ 0x11580, 0x115B5, "Sidd" },
{ 0x115B8, 0x115DD, "Sidd" },
{ 0x11600, 0x11644, "Modi" },
{ 0x11650, 0x11659, "Modi" },
{ 0x11660, 0x1166C, "Mong" },
{ 0x11680, 0x116B9, "Takr" },
{ 0x116C0, 0x116C9, "Takr" },
{ 0x11700, 0x1171A, "Ahom" },
{ 0x1171D, 0x1172B, "Ahom" },
{ 0x11730, 0x11746, "Ahom" },
{ 0x11800, 0x1183B, "Dogr" },
{ 0x118A0, 0x118F2, "Wara" },
{ 0x11900, 0x11906, "Diak" },
{ 0x1190C, 0x11913, "Diak" },
{ 0x11915, 0x11916, "Diak" },
{ 0x11918, 0x11935, "Diak" },
{ 0x11937, 0x11938, "Diak" },
{ 0x1193B, 0x11946, "Diak" },
{ 0x11950, 0x11959, "Diak" },
{ 0x119A0, 0x119A7, "Nand" },
{ 0x119AA, 0x119D7, "Nand" },
{ 0x119DA, 0x119E4, "Nand" },
{ 0x11A00, 0x11A47, "Zanb" },
{ 0x11A50, 0x11AA2, "Soyo" },
{ 0x11AB0, 0x11ABF, "Cans" },
{ 0x11AC0, 0x11AF8, "Pauc" },
{ 0x11B00, 0x11B09, "Deva" },
{ 0x11C00, 0x11C08, "Bhks" },
{ 0x11C0A, 0x11C36, "Bhks" },
{ 0x11C38, 0x11C45, "Bhks" },
{ 0x11C50, 0x11C6C, "Bhks" },
{ 0x11C70, 0x11C8F, "Marc" },
{ 0x11C92, 0x11CA7, "Marc" },
{ 0x11CA9, 0x11CB6, "Marc" },
{ 0x11D00, 0x11D06, "Gonm" },
{ 0x11D08, 0x11D09, "Gonm" },
{ 0x11D0B, 0x11D36, "Gonm" },
{ 0x11D3C, 0x11D3D, "Gonm" },
{ 0x11D3F, 0x11D47, "Gonm" },
{ 0x11D50, 0x11D59, "Gonm" },
{ 0x11D60, 0x11D65, "Gong" },
{ 0x11D67, 0x11D68, "Gong" },
{ 0x11D6A, 0x11D8E, "Gong" },
{ 0x11D90, 0x11D91, "Gong" },
{ 0x11D93, 0x11D98, "Gong" },
{ 0x11DA0, 0x11DA9, "Gong" },
{ 0x11EE0, 0x11EF8, "Maka" },
{ 0x11F00, 0x11F10, "Kawi" },
{ 0x11F12, 0x11F3A, "Kawi" },
{ 0x11F3E, 0x11F59, "Kawi" },
{ 0x11FC0, 0x11FF1, "Taml" },
{ 0x12000, 0x12399, "Xsux" },
{ 0x12400, 0x1246E, "Xsux" },
{ 0x12470, 0x12474, "Xsux" },
{ 0x12480, 0x12543, "Xsux" },
{ 0x12F90, 0x12FF2, "Cpmn" },
{ 0x13000, 0x13455, "Egyp" },
{ 0x14400, 0x14646, "Hluw" },
{ 0x16800, 0x16A38, "Bamu" },
{ 0x16A40, 0x16A5E, "Mroo" },
{ 0x16A60, 0x16A69, "Mroo" },
{ 0x16A6E, 0x16A6F, "Mroo" },
{ 0x16A70, 0x16ABE, "Tnsa" },
{ 0x16AC0, 0x16AC9, "Tnsa" },
{ 0x16AD0, 0x16AED, "Bass" },
{ 0x16AF0, 0x16AF5, "Bass" },
{ 0x16B00, 0x16B45, "Hmng" },
{ 0x16B50, 0x16B59, "Hmng" },
{ 0x16B5B, 0x16B61, "Hmng" },
{ 0x16B63, 0x16B77, "Hmng" },
{ 0x16B7D, 0x16B8F, "Hmng" },
{ 0x16E40, 0x16E9A, "Medf" },
{ 0x16F00, 0x16F4A, "Plrd" },
{ 0x16F4F, 0x16F87, "Plrd" },
{ 0x16F8F, 0x16F9F, "Plrd" },
{ 0x16FE2, 0x16FE3, "Hani" },
{ 0x16FF0, 0x16FF1, "Hani" },
{ 0x17000, 0x187F7, "Tang" },
{ 0x18800, 0x18AFF, "Tang" },
{ 0x18B00, 0x18CD5, "Kits" },
{ 0x18D00, 0x18D08, "Tang" },
{ 0x1AFF0, 0x1AFF3, "Kana" },
{ 0x1AFF5, 0x1AFFB, "Kana" },
{ 0x1AFFD, 0x1AFFE, "Kana" },
{ 0x1B001, 0x1B11F, "Hira" },
{ 0x1B120, 0x1B122, "Kana" },
{ 0x1B150, 0x1B152, "Hira" },
{ 0x1B164, 0x1B167, "Kana" },
{ 0x1B170, 0x1B2FB, "Nshu" },
{ 0x1BC00, 0x1BC6A, "Dupl" },
{ 0x1BC70, 0x1BC7C, "Dupl" },
{ 0x1BC80, 0x1BC88, "Dupl" },
{ 0x1BC90, 0x1BC99, "Dupl" },
{ 0x1BC9C, 0x1BC9F, "Dupl" },
{ 0x1BCA0, 0x1BCA3, "Zyyy" },
{ 0x1CF00, 0x1CF2D, "Zinh" },
{ 0x1CF30, 0x1CF46, "Zinh" },
{ 0x1CF50, 0x1CFC3, "Zyyy" },
{ 0x1D000, 0x1D0F5, "Zyyy" },
{ 0x1D100, 0x1D126, "Zyyy" },
{ 0x1D129, 0x1D166, "Zyyy" },
{ 0x1D167, 0x1D169, "Zinh" },
{ 0x1D16A, 0x1D17A, "Zyyy" },
{ 0x1D17B, 0x1D182, "Zinh" },
{ 0x1D183, 0x1D184, "Zyyy" },
{ 0x1D185, 0x1D18B, "Zinh" },
{ 0x1D18C, 0x1D1A9, "Zyyy" },
{ 0x1D1AA, 0x1D1AD, "Zinh" },
{ 0x1D1AE, 0x1D1EA, "Zyyy" },
{ 0x1D200, 0x1D245, "Grek" },
{ 0x1D2C0, 0x1D2D3, "Zyyy" },
{ 0x1D2E0, 0x1D2F3, "Zyyy" },
{ 0x1D300, 0x1D356, "Zyyy" },
{ 0x1D360, 0x1D378, "Zyyy" },
{ 0x1D400, 0x1D454, "Zyyy" },
{ 0x1D456, 0x1D49C, "Zyyy" },
{ 0x1D49E, 0x1D49F, "Zyyy" },
{ 0x1D4A5, 0x1D4A6, "Zyyy" },
{ 0x1D4A9, 0x1D4AC, "Zyyy" },
{ 0x1D4AE, 0x1D4B9, "Zyyy" },
{ 0x1D4BD, 0x1D4C3, "Zyyy" },
{ 0x1D4C5, 0x1D505, "Zyyy" },
{ 0x1D507, 0x1D50A, "Zyyy" },
{ 0x1D50D, 0x1D514, "Zyyy" },
{ 0x1D516, 0x1D51C, "Zyyy" },
{ 0x1D51E, 0x1D539, "Zyyy" },
{ 0x1D53B, 0x1D53E, "Zyyy" },
{ 0x1D540, 0x1D544, "Zyyy" },
{ 0x1D54A, 0x1D550, "Zyyy" },
{ 0x1D552, 0x1D6A5, "Zyyy" },
{ 0x1D6A8, 0x1D7CB, "Zyyy" },
{ 0x1D7CE, 0x1D7FF, "Zyyy" },
{ 0x1D800, 0x1DA8B, "Sgnw" },
{ 0x1DA9B, 0x1DA9F, "Sgnw" },
{ 0x1DAA1, 0x1DAAF, "Sgnw" },
{ 0x1DF00, 0x1DF1E, "Latn" },
{ 0x1DF25, 0x1DF2A, "Latn" },
{ 0x1E000, 0x1E006, "Glag" },
{ 0x1E008, 0x1E018, "Glag" },
{ 0x1E01B, 0x1E021, "Glag" },
{ 0x1E023, 0x1E024, "Glag" },
{ 0x1E026, 0x1E02A, "Glag" },
{ 0x1E030, 0x1E06D, "Cyrl" },
{ 0x1E100, 0x1E12C, "Hmnp" },
{ 0x1E130, 0x1E13D, "Hmnp" },
{ 0x1E140, 0x1E149, "Hmnp" },
{ 0x1E14E, 0x1E14F, "Hmnp" },
{ 0x1E290, 0x1E2AE, "Toto" },
{ 0x1E2C0, 0x1E2F9, "Wcho" },
{ 0x1E4D0, 0x1E4F9, "Nagm" },
{ 0x1E7E0, 0x1E7E6, "Ethi" },
{ 0x1E7E8, 0x1E7EB, "Ethi" },
{ 0x1E7ED, 0x1E7EE, "Ethi" },
{ 0x1E7F0, 0x1E7FE, "Ethi" },
{ 0x1E800, 0x1E8C4, "Mend" },
{ 0x1E8C7, 0x1E8D6, "Mend" },
{ 0x1E900, 0x1E94B, "Adlm" },
{ 0x1E950, 0x1E959, "Adlm" },
{ 0x1E95E, 0x1E95F, "Adlm" },
{ 0x1EC71, 0x1ECB4, "Zyyy" },
{ 0x1ED01, 0x1ED3D, "Zyyy" },
{ 0x1EE00, 0x1EE03, "Arab" },
{ 0x1EE05, 0x1EE1F, "Arab" },
{ 0x1EE21, 0x1EE22, "Arab" },
{ 0x1EE29, 0x1EE32, "Arab" },
{ 0x1EE34, 0x1EE37, "Arab" },
{ 0x1EE4D, 0x1EE4F, "Arab" },
{ 0x1EE51, 0x1EE52, "Arab" },
{ 0x1EE61, 0x1EE62, "Arab" },
{ 0x1EE67, 0x1EE6A, "Arab" },
{ 0x1EE6C, 0x1EE72, "Arab" },
{ 0x1EE74, 0x1EE77, "Arab" },
{ 0x1EE79, 0x1EE7C, "Arab" },
{ 0x1EE80, 0x1EE89, "Arab" },
{ 0x1EE8B, 0x1EE9B, "Arab" },
{ 0x1EEA1, 0x1EEA3, "Arab" },
{ 0x1EEA5, 0x1EEA9, "Arab" },
{ 0x1EEAB, 0x1EEBB, "Arab" },
{ 0x1EEF0, 0x1EEF1, "Arab" },
{ 0x1F000, 0x1F02B, "Zyyy" },
{ 0x1F030, 0x1F093, "Zyyy" },
{ 0x1F0A0, 0x1F0AE, "Zyyy" },
{ 0x1F0B1, 0x1F0BF, "Zyyy" },
{ 0x1F0C1, 0x1F0CF, "Zyyy" },
{ 0x1F0D1, 0x1F0F5, "Zyyy" },
{ 0x1F100, 0x1F1AD, "Zyyy" },
{ 0x1F1E6, 0x1F1FF, "Zyyy" },
{ 0x1F201, 0x1F202, "Zyyy" },
{ 0x1F210, 0x1F23B, "Zyyy" },
{ 0x1F240, 0x1F248, "Zyyy" },
{ 0x1F250, 0x1F251, "Zyyy" },
{ 0x1F260, 0x1F265, "Zyyy" },
{ 0x1F300, 0x1F6D7, "Zyyy" },
{ 0x1F6DC, 0x1F6EC, "Zyyy" },
{ 0x1F6F0, 0x1F6FC, "Zyyy" },
{ 0x1F700, 0x1F776, "Zyyy" },
{ 0x1F77B, 0x1F7D9, "Zyyy" },
{ 0x1F7E0, 0x1F7EB, "Zyyy" },
{ 0x1F800, 0x1F80B, "Zyyy" },
{ 0x1F810, 0x1F847, "Zyyy" },
{ 0x1F850, 0x1F859, "Zyyy" },
{ 0x1F860, 0x1F887, "Zyyy" },
{ 0x1F890, 0x1F8AD, "Zyyy" },
{ 0x1F8B0, 0x1F8B1, "Zyyy" },
{ 0x1F900, 0x1FA53, "Zyyy" },
{ 0x1FA60, 0x1FA6D, "Zyyy" },
{ 0x1FA70, 0x1FA7C, "Zyyy" },
{ 0x1FA80, 0x1FA88, "Zyyy" },
{ 0x1FA90, 0x1FABD, "Zyyy" },
{ 0x1FABF, 0x1FAC5, "Zyyy" },
{ 0x1FACE, 0x1FADB, "Zyyy" },
{ 0x1FAE0, 0x1FAE8, "Zyyy" },
{ 0x1FAF0, 0x1FAF8, "Zyyy" },
{ 0x1FB00, 0x1FB92, "Zyyy" },
{ 0x1FB94, 0x1FBCA, "Zyyy" },
{ 0x1FBF0, 0x1FBF9, "Zyyy" },
{ 0x20000, 0x2A6DF, "Hani" },
{ 0x2A700, 0x2B739, "Hani" },
{ 0x2B740, 0x2B81D, "Hani" },
{ 0x2B820, 0x2CEA1, "Hani" },
{ 0x2CEB0, 0x2EBE0, "Hani" },
{ 0x2EBF0, 0x2EE5D, "Hani" },
{ 0x2F800, 0x2FA1D, "Hani" },
{ 0x30000, 0x3134A, "Hani" },
{ 0x31350, 0x323AF, "Hani" },
{ 0xE0020, 0xE007F, "Zyyy" },
{ 0xE0100, 0xE01EF, "Zinh" },
},
-- Scripts.txt gives full names; here we consider them aliases to save space.
aliases = {
Adlm = "Adlam",
Aghb = "Caucasian Albanian",
Ahom = "Ahom",
Arab = "Arabic",
Armi = "Imperial Aramaic",
Armn = "Armenian",
Avst = "Avestan",
Bali = "Balinese",
Bamu = "Bamum",
Bass = "Bassa Vah",
Batk = "Batak",
Beng = "Bengali",
Bhks = "Bhaiksuki",
Bopo = "Bopomofo",
Brah = "Brahmi",
Brai = "Braille",
Bugi = "Buginese",
Buhd = "Buhid",
Cakm = "Chakma",
Cans = "Canadian Aboriginal",
Cari = "Carian",
Cham = "Cham",
Cher = "Cherokee",
Chrs = "Chorasmian",
Copt = "Coptic",
Cpmn = "Cypro Minoan",
Cprt = "Cypriot",
Cyrl = "Cyrillic",
Deva = "Devanagari",
Diak = "Dives Akuru",
Dogr = "Dogra",
Dsrt = "Deseret",
Dupl = "Duployan",
Egyp = "Egyptian Hieroglyphs",
Elba = "Elbasan",
Elym = "Elymaic",
Ethi = "Ethiopic",
Geor = "Georgian",
Glag = "Glagolitic",
Gong = "Gunjala Gondi",
Gonm = "Masaram Gondi",
Goth = "Gothic",
Gran = "Grantha",
Grek = "Greek",
Gujr = "Gujarati",
Guru = "Gurmukhi",
Hang = "Hangul",
Hani = "Han",
Hano = "Hanunoo",
Hatr = "Hatran",
Hebr = "Hebrew",
Hira = "Hiragana",
Hluw = "Anatolian Hieroglyphs",
Hmng = "Pahawh Hmong",
Hmnp = "Nyiakeng Puachue Hmong",
Hrkt = "Katakana Or Hiragana",
Hung = "Old Hungarian",
Ital = "Old Italic",
Java = "Javanese",
Kali = "Kayah Li",
Kana = "Katakana",
Kawi = "Kawi",
Khar = "Kharoshthi",
Khmr = "Khmer",
Khoj = "Khojki",
Kits = "Khitan Small Script",
Knda = "Kannada",
Kthi = "Kaithi",
Lana = "Tai Tham",
Laoo = "Lao",
Latn = "Latin",
Lepc = "Lepcha",
Limb = "Limbu",
Lina = "Linear A",
Linb = "Linear B",
Lisu = "Lisu",
Lyci = "Lycian",
Lydi = "Lydian",
Mahj = "Mahajani",
Maka = "Makasar",
Mand = "Mandaic",
Mani = "Manichaean",
Marc = "Marchen",
Medf = "Medefaidrin",
Mend = "Mende Kikakui",
Merc = "Meroitic Cursive",
Mero = "Meroitic Hieroglyphs",
Mlym = "Malayalam",
Modi = "Modi",
Mong = "Mongolian",
Mroo = "Mro",
Mtei = "Meetei Mayek",
Mult = "Multani",
Mymr = "Myanmar",
Nagm = "Nag Mundari",
Nand = "Nandinagari",
Narb = "Old North Arabian",
Nbat = "Nabataean",
Newa = "Newa",
Nkoo = "NKo",
Nshu = "Nushu",
Ogam = "Ogham",
Olck = "Ol Chiki",
Orkh = "Old Turkic",
Orya = "Oriya",
Osge = "Osage",
Osma = "Osmanya",
Ougr = "Old Uyghur",
Palm = "Palmyrene",
Pauc = "Pau Cin Hau",
Perm = "Old Permic",
Phag = "Phags Pa",
Phli = "Inscriptional Pahlavi",
Phlp = "Psalter Pahlavi",
Phnx = "Phoenician",
Plrd = "Miao",
Prti = "Inscriptional Parthian",
Rjng = "Rejang",
Rohg = "Hanifi Rohingya",
Runr = "Runic",
Samr = "Samaritan",
Sarb = "Old South Arabian",
Saur = "Saurashtra",
Sgnw = "SignWriting",
Shaw = "Shavian",
Shrd = "Sharada",
Sidd = "Siddham",
Sind = "Khudawadi",
Sinh = "Sinhala",
Sogd = "Sogdian",
Sogo = "Old Sogdian",
Sora = "Sora Sompeng",
Soyo = "Soyombo",
Sund = "Sundanese",
Sylo = "Syloti Nagri",
Syrc = "Syriac",
Tagb = "Tagbanwa",
Takr = "Takri",
Tale = "Tai Le",
Talu = "New Tai Lue",
Taml = "Tamil",
Tang = "Tangut",
Tavt = "Tai Viet",
Telu = "Telugu",
Tfng = "Tifinagh",
Tglg = "Tagalog",
Thaa = "Thaana",
Thai = "Thai",
Tibt = "Tibetan",
Tirh = "Tirhuta",
Tnsa = "Tangsa",
Toto = "Toto",
Ugar = "Ugaritic",
Vaii = "Vai",
Vith = "Vithkuqi",
Wara = "Warang Citi",
Wcho = "Wancho",
Xpeo = "Old Persian",
Xsux = "Cuneiform",
Yezi = "Yezidi",
Yiii = "Yi",
Zanb = "Zanabazar Square",
Zinh = "Inherited",
Zyyy = "Common",
Zzzz = "Unknown",
},
}
-- Required for binary search function in [[Module:Language/scripts]].
-- Cannot get length of module loaded with mw.loadData.
data.ranges.length = #data.ranges
data.rtl = {}
for _, script in ipairs(mw.loadData "Module:Lang/data".rtl_scripts) do
-- [[Module:Lang/data]] has script codes in lowercase;
-- this module has script codes with the first letter capitalized.
data.rtl[script:gsub("^%a", string.upper)] = true
end
return data
6afbaa9e21efd3898f0ff056b5456c0cd5813400
Module:Language/data
828
447
1050
973
2023-10-01T09:58:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data]]
Scribunto
text/plain
local U = mw.ustring.char
-- Diacritics, from the [[Combining Diacritical Marks]] block.
local grave = U(0x300)
local acute = U(0x301)
local circumflex = U(0x302)
local tilde = U(0x303)
local macron = U(0x304)
local breve = U(0x306)
local dot = U(0x307)
local diaeresis = U(0x308)
local double_acute = U(0x30B)
local caron = U(0x30C)
local double_grave = U(0x30F)
local invbreve = U(0x311)
local dot_below = U(0x323)
local undertie = U(0x35C)
--[[
This is a table of Wiktionary language codes with data belonging to them.
Name is the "canonical name" used on Wiktionary.
Article is the Wikipedia article.
Script is the ISO 15924 code.
]]
local data = {
["languages"] = {
["aaq"] = {
["name"] = "Penobscot",
},
["ab"] = {
["name"] = "Abkhaz",
},
["abe"] = {
["name"] = "Abenaki",
},
["ang"] = {
["name"] = "Old English",
["article"] = {"Old English"},
-- Remove macrons, acutes, and overdots
["replacements"] = {
decompose = true,
from = { "[" .. macron .. acute .. dot .. "]" },
},
},
["ar"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ara"] = {
["name"] = "Arabic",
["article"] = "Arabic language",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arb"] = {
["name"] = "Modern Standard Arabic",
["article"] = "Modern Standard Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["apc"] = {
["name"] = "North Levantine Arabic",
["article"] = "North Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["ajp"] = {
["name"] = "South Levantine Arabic",
["article"] = "South Levantine Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["arz"] = {
["name"] = "Egyptian Arabic",
["article"] = "Egyptian Arabic",
["direction"] = "rtl", -- Should be in the script data module.
["replacements"] = {
-- ālif with wasla is replaced by ālif;
[U(0x0671)] = U(0x0627),
-- taṭwīl, fatḥatan, ḍammatan, kasratan,
-- fatḥa, ḍamma, kasra,
-- shadda, sukūn, and superscript (dagger) ālif are removed.
["["..U(0x0640)..U(0x064B)..U(0x064C)..U(0x064D)
..U(0x064E)..U(0x064F)..U(0x0650)
..U(0x0651)..U(0x0652)..U(0x0670).."]"] = "",
},
},
["av"] = {
["name"] = "Avar"
},
["be"] = {
["article"] = "Belarusian language",
["replacements"] = { [acute] = "", },
},
["bn"] = {
["name"] = "Bengali",
["article"] = "Bengali language",
},
["bua"] = {
["name"] = "Buryat",
},
["cel-pro"] = { -- Incorrect tag
["name"] = "Proto-Celtic",
["Wikipedia_code"] = "cel-x-proto",
},
["cel-x-proto"] = {
["name"] = "Proto-Celtic",
},
["cel-bry-pro"] = { -- Incorrect tag
["name"] = "Proto-Brythonic",
["article"] = "Common Brittonic",
["type"] = "reconstructed",
},
["cu"] = {
["name"] = "Old Church Slavonic",
["article"] = "Old Church Slavonic",
},
["de"] = {
["name"] = "German",
["article"] = "German language",
},
["en"] = {
["name"] = "English",
["article"] = "English language",
},
["es"] = {
["name"] = "Spanish",
["article"] = "Spanish language",
},
["egy"] = {
["name"] = "Egyptian",
},
["evn"] = {
["name"] = "Evenki",
["article"] = "Evenki language",
},
["fr"] = {
["name"] = "French",
["article"] = "French language",
},
["frm"] = {
["name"] = "Middle French",
["article"] = "Middle French",
},
["frp"] = {
["name"] = "Franco-Provençal",
},
["ff"] = {
["name"] = "Fula",
},
["gem-pro"] = { -- Incorrect tag
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["gem-x-proto"] = {
["name"] = "Proto-Germanic",
["article"] = "Proto-Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gml"] = {
["name"] = "Middle Low German",
},
["gmw-ecg"] = {
["name"] = "East Central German",
},
["gmw-x-proto"] = {
["name"] = "Proto-West Germanic",
["article"] = "Proto-West Germanic language",
["type"] = "reconstructed",
["replacements"] = {},
},
["gmq-x-gut"] = {
["name"] = "Gutnish",
["article"] = "Gutnish",
},
["goh"] = {
["replacements"] = {
decompose = true,
from = {
"[" .. macron .. circumflex .. diaeresis .. "]",
},
},
},
["got"] = {
["name"] = "Gothic",
["article"] = "Gothic language",
["replacements"] = {
-- Latin to Gothic since people will not want to have to copy
-- and paste Gothic letters in
["[AÁaáĀā]"] = "𐌰",
["[Bb]"] = "𐌱",
["[Gg]"] = "𐌲",
["[Dd]"] = "𐌳",
["[EeĒē]"] = "𐌴",
["[Qq]"] = "𐌵",
["[Zz]"] = "𐌶",
["[Hh]"] = "𐌷",
["[Þþ]"] = "𐌸",
["[IiÍí]"] = "𐌹",
["[Kk]"] = "𐌺",
["[Ll]"] = "𐌻",
["[Mm]"] = "𐌼",
["[Nn]"] = "𐌽",
["[Jj]"] = "𐌾",
["[UuÚúŪū]"] = "𐌿",
["[Pp]"] = "𐍀",
["[Rr]"] = "𐍂",
["[Ss]"] = "𐍃",
["[Tt]"] = "𐍄",
["[WwYy]"] = "𐍅",
["[Ff]"] = "𐍆",
["[Xx]"] = "𐍇",
["[Ƕƕ]"] = "𐍈", -- Not sure if "hw" and "hv" can safely be converted
["[OoŌō]"] = "𐍉",
},
},
["gsw"] = {
["name"] = "Alemannic German",
},
["grc"] = {
["name"] = "Ancient Greek",
["article"] = "Ancient Greek",
["replacements"] = {
decompose = true,
from = {
-- Replace variant letterforms with standard ones.
"ϐ", "ϵ", "ϑ", "ϰ", "ϱ", "ϲ", "ϕ",
-- Remove macrons and breves.
"[" .. macron .. breve .. undertie .. "]"
},
to = {
"β", "ε", "θ", "κ", "ρ", "σ", "φ",
}
},
},
["grk-pro"] = { -- Incorrect tag
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "gem-x-proto",
},
["grk-x-proto"] = {
["name"] = "Proto-Hellenic",
["Wikipedia_name"] = "Proto-Greek",
["article"] = "Proto-Greek language",
["type"] = "reconstructed",
["replacements"] = {},
},
["grt"] = {
["name"] = "Garo",
},
["ha"] = {
["name"] = "Hausa",
-- remove tilde, grave, acute, macron, circumflex
["replacements"] = {
decompose = true,
from = { "[" .. grave .. circumflex .. macron .. acute .. tilde .. "]" },
},
},
["hi"] = {
["name"] = "Hindi",
["article"] = "Hindi",
},
["ine-bsl-pro"] = {
["name"] = "Proto-Balto-Slavic",
["article"] = "Proto-Balto-Slavic language",
["type"] = "reconstructed",
},
["ine-pro"] = { -- Incorrect tag
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
["Wikipedia_code"] = "ine-x-proto",
},
["ine-x-proto"] = {
["name"] = "Proto-Indo-European",
["article"] = "Proto-Indo-European language",
["type"] = "reconstructed",
["replacements"] = {},
},
["ja"] = {
["name"] = "Japanese",
["article"] = "Japanese language",
},
["jbo"] = { -- Lojban
["type"] = "appendix",
},
["ksk"] = {
["name"] = "Kansa",
["article"] = "Kansa language",
},
["la"] = {
["name"] = "Latin",
["article"] = "Latin",
["replacements"] = {
decompose = true,
from = { "[" .. macron .. breve .. diaeresis .. "]" },
},
},
["lt"] = {
["name"] = "Lithuanian",
-- remove acute, tilde, grave
["replacements"] = {
decompose = true,
from = { "[" .. acute .. tilde .. grave .. "]" },
},
},
["moe"] = {
["name"] = "Cree",
},
["mul"] = {
["name"] = "Translingual",
["article"] = "",
},
["nci"] = {
["name"] = "Classical Nahuatl",
["article"] = "Classical Nahuatl",
-- Remove macrons, acutes, circumflexes and graves
["replacements"] = {
decompose = true,
-- Remove macrons, acutes, circumflexes, graves, and saltillo;
-- see [[Saltillo (linguistics)]].
from = { "[" .. grave .. acute .. macron .. circumflex .. "Ꞌꞌʻʼ'ʔ]" },
},
},
["nds-de"] = {
["name"] = "German Low German",
},
["odt"] = {
["name"] = "Old Dutch",
},
["oge"] = {
["name"] = "Old Georgian",
},
["oj"] = {
["name"] = "Ojibwe",
},
["orv"] = {
["name"] = "Old East Slavic",
["article"] = "Old East Slavic",
["replacements"] = {
[U(0x484)] = "",
},
},
["osx"] = {
["name"] = "Old Saxon",
},
["pt"] = {
["name"] = "Portuguese",
["article"] = "Portuguese language",
-- ["scripts"] = { "Latn" },
},
["pa"] = {
["name"] = "Punjabi",
["article"] = "Punjabi language",
},
["pis"] = {
["name"] = "Pijin",
["article"] = "Pijin language",
},
["poz-x-poly-proto"] = {
["name"] = "Proto-Nuclear Polynesian",
["article"] = "Proto-Polynesian language",
["type"] = "reconstructed",
},
["rap"] = {
["name"] = "Rapa Nui",
["article"] = "Rapa Nui language",
},
["ru"] = {
["name"] = "Russian",
["article"] = "Russian language",
["replacements"] = { [acute] = "", },
},
["rw"] = {
["name"] = "Rwanda-Rundi",
},
["se"] = {
["replacements"] = {
["([đflmnŋrsšŧv])'%1"] = "%1%1",
},
},
["sem-pro"] = {
["name"] = "Proto-Semitic",
["article"] = "Proto-Semitic",
["type"] = "reconstructed",
},
["sh"] = {
["article"] = "Serbo-Croatian language",
["replacements"] = {
decompose = true,
from = { "([AaEeIiOoUuRrАаЕеИиОоУуРр])[" .. double_grave
.. grave .. invbreve .. acute .. macron .. tilde .. "]" },
to = { "%1" },
},
},
["sl"] = {
["name"] = "Slovene",
["replacements"] = {
decompose = true,
-- remove tonal orthography
from = {"ł", "[" .. grave .. acute .. macron .. double_grave .. invbreve .. circumflex .. dot_below .. "]"},
to = {"l"},
},
},
["sla-pro"] = {
["name"] = "Proto-Slavic", -- also Common Slavic
["type"] = "reconstructed",
["replacements"] = {
["[ÀÁÃĀȀȂ]"] = "A",
["[àáãāȁȃ]"] = "a",
["[ÈÉẼĒȄȆ]"] = "E",
["[èéẽēȅȇ]"] = "e",
["[ÌÍĨĪȈȊ]"] = "I",
["[ìíĩīȉȋ]"] = "i",
["[ÒÓÕŌȌȎŐ]"] = "O",
["[òóõōȍȏő]"] = "o",
["[ÙÚŨŪȔȖŰ]"] = "U",
["[ùúũūȕȗű]"] = "u",
["[ỲÝỸȲ]"] = "Y",
["[ỳýỹȳ]"] = "y",
["Ǭ"] = "Ǫ",
["ǭ"] = "ǫ",
["[" .. grave .. acute .. double_acute .. tilde .. macron .. double_grave .. invbreve .. "]"] = "",
["ĭ"] = "ь",
["ŭ"] = "ъ",
},
},
["tts"] = {
["name"] = "Isan", -- also "Northeastern Thai"
["article"] = "Isan language",
},
["ug"] = {
["name"] = "Uyghur", --also less commonly "Uighur"
["article"] = "Uyghur language",
},
["uk"] = {
["article"] = "Ukrainian language",
["replacements"] = { [acute] = "", }
},
["ur"] = {
["name"] = "Urdu",
["article"] = "Urdu",
},
["xcl"] = {
["name"] = "Old Armenian",
["article"] = "Classical Armenian",
["replacements"] = {
["[՞՜՛՟]"] = "",
["և"] = "եւ",
},
},
["xgf"] = {
["name"] = "Tongva", -- not ISO name "Gabrielino-Fernandeño"
["article"] = "Tongva language",
["replacements"] = {
["['`ʔ]"] = "ʼ",
},
},
["xlu"] = {
["name"] = "Luwian", -- not ISO name "Cuneiform Luwian"
["article"] = "Cuneiform Luwian"
},
["xpq"] = {
["name"] = "Mohegan-Pequot",
},
["xxt"] = {
["name"] = "Tambora",
["article"] = "Tambora language",
},
["xvn"] = {
["name"] = "Vandalic",
["article"] = "Vandalic language",
},
["yua"] = {
["name"] = "Yucatec Maya",
["article"] = "Yucatec Maya language",
},
["zh"] = {
["name"] = "Chinese",
["article"] = "Chinese language",
-- ["scripts"] = { "Hani" },
},
},
-- Here, keys (for example, "gem") are Wikipedia language codes used in
-- {{lang}}, and values (for example, "gem-pro") are the equivalent Wiktionary
-- code.
-- Subtags are not currently supported.
["redirects"] = {
["aae"] = "sq",
["aiq"] = "fa",
["aln"] = "sq",
["als"] = "sq",
["azb"] = "az",
["azj"] = "az",
["bgn"] = "bal",
["bs"] = "sh",
["bxr"] = "bua",
["ciw"] = "oj",
["cnr"] = "sh",
["fil"] = "tl",
["fuf"] = "ff",
["gem"] = "gem-pro", -- Not correct, but is commonly used.
["hak"] = "zh",
["hbo"] = "he",
["hr"] = "sh",
["ine"] = "ine-pro", -- Not correct, but might be commonly used.
["kjv"] = "sh",
["nan"] = "zh",
["prs"] = "fa",
["rn"] = "rw",
["sli"] = "gmw-ecg",
["sr"] = "sh",
["src"] = "sc",
["sro"] = "sc",
["tw"] = "ak",
["wae"] = "gsw",
["wep"] = "nds-de",
["yue"] = "zh",
["xno"] = "fro",
},
}
return data
3e1cbaa2d45dde581a9e11f0ad142ed7dd116100
Template:T
10
478
1052
1051
2023-10-01T09:58:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:T]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
{{Rcat shell|
{{R from template shortcut}}
}}
<!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta -->
bb10dbc83695404528dbc095ea267429142c7f05
Template:((
10
479
1054
1053
2023-10-01T09:58:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:((]]
wikitext
text/x-wiki
{{<noinclude>
{{documentation}}
</noinclude>
3f1af626705a06bc9cdea766736e292d321af5a3
Template:))
10
480
1056
1055
2023-10-01T09:58:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:))]]
wikitext
text/x-wiki
}}<noinclude>
{{documentation}}
</noinclude>
85ca77d4d6ff71d8e6396ebd798f87fa7f45dc02
Template:Module other
10
481
1058
1057
2023-10-01T09:58:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Module_other]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{ns:Module}}
| module
| other
}}
}}
| module = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
503694836c1b07142e63fd35d8be69ec8bb9ffe7
Template:Module rating
10
482
1060
1059
2023-10-01T09:58:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Module_rating]]
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc|<!--do not show protection level of the module on the doc page, use the second and optionally third parameter if the doc page is also protected -->{{#if:{{{2|}}}|{{Pp|{{{2}}}|action={{{3|}}}}}}}|{{Module other|{{ombox
| type = notice
| image = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]]
| alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]]
| beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]]
| release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]]
| protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]]
| semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]]
}}
| style =
| textstyle =
| text = {{#switch: {{{1|}}}
| pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }}
}}
| alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }}
}}
| beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }}
}}
| release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be relatively bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }}
}}
| protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!--
-->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages -->
| {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }}
}}
| #default = {{error|Module rating is invalid or not specified.}}
}}
}}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}}}</includeonly><noinclude>
{{module rating|release|nocat=true|demospace=module}}
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go in Wikidata. -->
</noinclude>
bbd244b3ea2e13ec4c1c810ae44f2f3789a93efc
Template:Language templates
10
444
1062
970
2023-10-01T09:58:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Language_templates]]
wikitext
text/x-wiki
{{Sidebar
| name = Language templates
| width = 238px
| bodystyle = border-spacing:0;background:#f7f7f7;padding:2px;
| titlestyle = background:#ccccff;
| title = Language templates
| contentclass = plainlist
| contentstyle = padding:0.25em;background:#fdfdfd;
| navbarstyle = background:#fdfdfd;padding:0 5px
| heading1 = Language names ([[ISO 639]])
| content1 =
* {{tl|ISO 639 name}}
| heading2 = Interwiki links
| content2 =
* {{tl|Wikt-lang}}
* [[Module:Language]]
* {{tl|Interlanguage link}}
| heading5 = Foreign-language text
| content5 =
* {{tl|Lang}}
* [[Module:Lang]]
* {{tl|Transliteration}}
* {{tl|Title language}}
* {{tl|PIE}}
| heading6 = Other
| content6 =
* {{tl|IPA}}
* [[Module:Language/data]]
* [[:Category:Wikipedia multilingual support templates]]
}}<noinclude>
{{Documentation|content=
[[WP:SIDEBAR|Sidebar]] listing language [[WP:templates|templates]].
}}
[[Category:Documentation see also templates]]
</noinclude>
f329063cbc1e51e9ff27b6f2cbb366cdee87c7e7
Module:Language/doc
828
446
1064
972
2023-10-01T09:58:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/doc]]
wikitext
text/x-wiki
{{Module rating|beta}}
{{Language templates}}
{{Lua|Module:Language/data|Module:Unicode data}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
This module is used by {{tlx|wikt-lang}} and {{tlx|wt}}. It is inspired by the templates [[wikt:Template:m|{{((}}m{{))}}]] and [[wikt:Template:l|{{((}}l{{))}}]] and their associated modules on Wiktionary. It has a Wiktionary link function that links to the correct section of the Wiktionary entry, and applies correct language formatting and italics. The language-tagging function does most of what {{t|lang}} does, except that italics can't be customized and categories aren't added.
The module uses [[Module:Language/data]] to retrieve the language name for a language code, and to perform the necessary entry-name replacements (for instance, removing macrons from Latin entry names). These are unfortunately not automatically retrieved from Wiktionary's [[wikt:Category:Language data modules|language data modules]]. For language codes that do not have a <code>name</code> value in this module, the language name is fetched with <code>mw.language.fetchLanguage</code>. When <code>mw.language.fetchLanguage</code> does not fetch the correct language name (or any language name at all), please add it to [[Module:language/data]], and similarly when the correct entry name is not generated, please add the entry name replacements to the module.
===Examples===
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}</pre>
* {{#invoke:Language|wikt|en|language}}
* {{#invoke:Language|wikt|en|language|languages}}
* {{#invoke:Language|wikt|fr|bourguignon}}
* {{#invoke:Language|wikt|la|homō}}
* {{#invoke:Language|wikt|grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|ru|язы́к}}
* {{#invoke:Language|wikt|ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|fa|فارسی}}
* {{#invoke:Language|wikt|ine-x-proto|*h₂enǵʰ-}}
====Invalid codes====
<pre style="max-width: 30em;">
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}</pre>
* {{#invoke:Language|wikt|EN|language}}
* {{#invoke:Language|wikt|En|language|languages}}
* {{#invoke:Language|wikt|La|homō}}
* {{#invoke:Language|wikt|Grc|δημοκρατίᾱ}}
* {{#invoke:Language|wikt|Ru|язы́к}}
* {{#invoke:Language|wikt|Ar|العَرَبِيَّة}}
* {{#invoke:Language|wikt|Fa|فارسی}}
====Errors====
<pre>* {{#invoke:Language|wikt|en-Latin|language}}</pre>
* {{#invoke:Language|wikt|en-Latin|language}}
== Tracking categories ==
* {{Category link with count|Language module errors}}
* {{Category link with count|Language module reconstructed with no asterisk}}
* {{Category link with count|Language module using redirect code}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Language-related modules]]
}}</includeonly>
8f0dd86fbb6403d5bf14443353bfec0c4ccba0b4
Template:Tree list
10
483
1066
1065
2023-10-01T10:00:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tree_list]]
wikitext
text/x-wiki
<templatestyles src="Tree list/styles.css" /><!--
--><div class="treeview"><noinclude>
</div>
{{Documentation}}
</noinclude>
3c3df2fc2f0185fa60fd2fdde34e5b13181ff42f
Template:Tree list/styles.css
10
484
1068
1067
2023-10-01T10:00:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tree_list/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.treeview ul {
padding: 0;
margin: 0;
}
.treeview li {
padding: 0;
margin: 0;
list-style-type: none;
list-style-image: none;
}
.treeview li li {
background: url("https://upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px;
/* @noflip */
padding-left: 21px;
text-indent: 0.3em;
}
.treeview li li:last-child {
background-position: 0 -5971px
}
/* first line here deals with new situation after RemexHTML switch,
* where emptyline cause the first child to become the 2nd child. Such a mess
*/
.treeview li.emptyline > ul > .mw-empty-elt:first-child + .emptyline,
.treeview li.emptyline > ul > li:first-child {
background-position: 0 9px
}
a033cdb57b07f78781a6c065fa37884bfe489045
Template:Hidden begin
10
250
1070
553
2023-10-01T10:00:54Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hidden_begin]]
wikitext
text/x-wiki
<includeonly><templatestyles src="Template:Hidden begin/styles.css"/><div class="hidden-begin mw-collapsible {{#ifeq:{{{showhide|{{{toggle}}}}}}|left|mw-collapsible-leftside-toggle}} {{#if:{{{expanded|}}}||mw-collapsed}} {{{class|}}}" style="{{#if:{{{width|}}}|width:{{{width}}};}} {{#if:{{{border|}}}|border:{{{border}}};}} {{#if:{{{bgcolor|}}}|background-color:{{{bgcolor}}};}} {{{style|}}}"><!--
--><div class="hidden-title" style="{{#if:{{{ta1|}}}|text-align:{{{ta1}}};}} {{#if:{{{titlebgcolor|}}}|background-color:{{{titlebgcolor}}};}} {{{titlestyle|}}}">{{{title|{{{header|}}}}}}</div><!--
--><div class="hidden-content mw-collapsible-content" style="{{#if:{{{ta2|}}}|text-align:{{{ta2}}};}} {{#if:{{{contentbgcolor|}}}|background-color:{{{contentbgcolor}}};}} {{{contentstyle|{{{bodystyle|}}}}}}"><!--
Content added after the template
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
be0f4e092203b931810fbff9ed6a1b7af51c025f
Template:Hidden end
10
485
1072
1071
2023-10-01T10:00:54Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hidden_end]]
wikitext
text/x-wiki
<includeonly></div></div></includeonly><noinclude>
{{hatnote|Templates {{noredirect|Template:End hidden|End hidden}} and {{noredirect|Template:End hidden section|End hidden section}} redirect here.}}
{{Documentation|Template:Hidden begin/doc}}
</noinclude>
6cc7eb4776ef10092d5f7d48da123117e7b430b2
Module:TNT
828
77
1074
176
2023-10-01T10:00:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:TNT]]
Scribunto
text/plain
--
-- INTRO: (!!! DO NOT RENAME THIS PAGE !!!)
-- This module allows any template or module to be copy/pasted between
-- wikis without any translation changes. All translation text is stored
-- in the global Data:*.tab pages on Commons, and used everywhere.
--
-- SEE: https://www.mediawiki.org/wiki/Multilingual_Templates_and_Modules
--
-- ATTENTION:
-- Please do NOT rename this module - it has to be identical on all wikis.
-- This code is maintained at https://www.mediawiki.org/wiki/Module:TNT
-- Please do not modify it anywhere else, as it may get copied and override your changes.
-- Suggestions can be made at https://www.mediawiki.org/wiki/Module_talk:TNT
--
-- DESCRIPTION:
-- The "msg" function uses a Commons dataset to translate a message
-- with a given key (e.g. source-table), plus optional arguments
-- to the wiki markup in the current content language.
-- Use lang=xx to set language. Example:
--
-- {{#invoke:TNT | msg
-- | I18n/Template:Graphs.tab <!-- https://commons.wikimedia.org/wiki/Data:I18n/Template:Graphs.tab -->
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
-- NOTE: "doc" assumes that all documentation is located in Data:Templatedata/* on Commons.
--
-- {{#invoke:TNT | doc | Graph:Lines }}
-- uses https://commons.wikimedia.org/wiki/Data:Templatedata/Graph:Lines.tab
-- if the current page is Template:Graph:Lines/doc
--
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
-- Forward declaration of the local functions
local sanitizeDataset, loadData, link, formatMessage
function p.msg(frame)
local dataset, id
local params = {}
local lang = nil
for k, v in pairs(frame.args) do
if k == 1 then
dataset = mw.text.trim(v)
elseif k == 2 then
id = mw.text.trim(v)
elseif type(k) == 'number' then
params[k - 2] = mw.text.trim(v)
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
end
end
return formatMessage(dataset, id, params, lang)
end
-- Identical to p.msg() above, but used from other lua modules
-- Parameters: name of dataset, message key, optional arguments
-- Example with 2 params: format('I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.format(dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
return formatMessage(dataset, key, {...})
end
-- Identical to p.msg() above, but used from other lua modules with the language param
-- Parameters: language code, name of dataset, message key, optional arguments
-- Example with 2 params: formatInLanguage('es', I18n/Module:TNT', 'error_bad_msgkey', 'my-key', 'my-dataset')
function p.formatInLanguage(lang, dataset, key, ...)
local checkType = require('libraryUtil').checkType
checkType('formatInLanguage', 1, lang, 'string')
checkType('formatInLanguage', 2, dataset, 'string')
checkType('formatInLanguage', 3, key, 'string')
return formatMessage(dataset, key, {...}, lang)
end
-- Obsolete function that adds a 'c:' prefix to the first param.
-- "Sandbox/Sample.tab" -> 'c:Data:Sandbox/Sample.tab'
function p.link(frame)
return link(frame.args[1])
end
function p.doc(frame)
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1])
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) ..
formatMessage(i18nDataset, 'edit_doc', {link(dataset)})
end
function p.getTemplateData(dataset)
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
local names = {}
for _, field in ipairs(data.schema.fields) do
table.insert(names, field.name)
end
local params = {}
local paramOrder = {}
for _, row in ipairs(data.data) do
local newVal = {}
local name = nil
for pos, columnName in ipairs(names) do
if columnName == 'name' then
name = row[pos]
else
newVal[columnName] = row[pos]
end
end
if name then
params[name] = newVal
table.insert(paramOrder, name)
end
end
-- Work around json encoding treating {"1":{...}} as an [{...}]
params['zzz123']=''
local json = mw.text.jsonEncode({
params=params,
paramOrder=paramOrder,
description=data.description
})
json = string.gsub(json,'"zzz123":"",?', "")
return json
end
-- Local functions
sanitizeDataset = function(dataset)
if not dataset then
return nil
end
dataset = mw.text.trim(dataset)
if dataset == '' then
return nil
elseif string.sub(dataset,-4) ~= '.tab' then
return dataset .. '.tab'
else
return dataset
end
end
loadData = function(dataset, lang)
dataset = sanitizeDataset(dataset)
if not dataset then
error(formatMessage(i18nDataset, 'error_no_dataset', {}))
end
-- Give helpful error to thirdparties who try and copy this module.
if not mw.ext or not mw.ext.data or not mw.ext.data.get then
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset)
end
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Missing Commons dataset ' .. i18nDataset)
else
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)}))
end
end
return data
end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
link = function(dataset)
return 'c:Data:' .. mw.text.trim(dataset or '')
end
formatMessage = function(dataset, key, params, lang)
for _, row in pairs(loadData(dataset, lang).data) do
local id, msg = unpack(row)
if id == key then
local result = mw.message.newRawMessage(msg, unpack(params or {}))
return result:plain()
end
end
if dataset == i18nDataset then
-- Prevent cyclical calls
error('Invalid message key "' .. key .. '"')
else
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)}))
end
end
return p
2c570369c78089aef29c72768918373f61b7075d
Template:Tree list/end
10
486
1076
1075
2023-10-01T10:00:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tree_list/end]]
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{Documentation|Template:Tree list/doc}}
</noinclude>
cdcda060fe4563745fb7a50f1c335c9abe5e2b08
Template:Tree list/branching
10
487
1078
1077
2023-10-01T10:00:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tree_list/branching]]
wikitext
text/x-wiki
<includeonly><li class="emptyline"></includeonly><noinclude>
{{Documentation|Template:Tree list/doc}}
</noinclude>
530e32b7119fdb2a9fcb93fdecf211a365e6541f
Template:Uses TemplateStyles
10
81
1080
198
2023-10-01T10:00:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Uses_TemplateStyles]]
wikitext
text/x-wiki
<div style="width:250px;float:right;clear:right;margin:0 0 1em 1em;border:1px solid black;-moz-border-radius:10px;-webkit-border-radius:10px;padding:10px 10px 10px 10px; background:#FFFFFF;">
<p style="margin:0 3% 0 3%;text-align:center;font-size:94%">
[[File:Farm-Fresh css add.svg|left|30px]] '''This template uses [[Help:TemplateStyles|TemplateStyles]]''' <br />
{{{1|}}}
</p></div><includeonly>{{#ifeq:{{SUBPAGENAME}}|doc||[[Category:Templates that use TemplateStyles|{{PAGENAME}}]]}}</includeonly><noinclude>
{{clr}}
{{Documentation}}</noinclude>
fed44ca463856190bcf6280438ed7ea020ad82c3
Module:Uses TemplateStyles
828
488
1082
1081
2023-10-01T10:00:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Uses_TemplateStyles]]
Scribunto
text/plain
local yesno = require('Module:Yesno')
local mList = require('Module:List')
local mTableTools = require('Module:TableTools')
local mMessageBox = require('Module:Message box')
local TNT = require('Module:TNT')
local p = {}
local function format(msg, ...)
return TNT.format('I18n/Uses TemplateStyles', msg, ...)
end
local function getConfig()
return mw.loadData('Module:Uses TemplateStyles/config')
end
local function renderBox(tStyles)
local boxArgs = {
type = 'notice',
small = true,
image = string.format('[[File:Farm-Fresh css add.svg|32px|alt=%s]]', format('logo-alt'))
}
if #tStyles < 1 then
boxArgs.text = string.format('<strong class="error">%s</strong>', format('error-emptylist'))
else
local cfg = getConfig()
local tStylesLinks = {}
for i, ts in ipairs(tStyles) do
local link = string.format('[[:%s]]', ts)
local sandboxLink = nil
local tsTitle = mw.title.new(ts)
if tsTitle and cfg['sandbox_title'] then
local tsSandboxTitle = mw.title.new(string.format(
'%s:%s/%s/%s', tsTitle.nsText, tsTitle.baseText, cfg['sandbox_title'], tsTitle.subpageText))
if tsSandboxTitle and tsSandboxTitle.exists then
sandboxLink = format('sandboxlink', link, ':' .. tsSandboxTitle.prefixedText)
end
end
tStylesLinks[i] = sandboxLink or link
end
local tStylesList = mList.makeList('bulleted', tStylesLinks)
boxArgs.text = format(
mw.title.getCurrentTitle():inNamespaces(828,829) and 'header-module' or 'header-template') ..
'\n' .. tStylesList
end
return mMessageBox.main('mbox', boxArgs)
end
local function renderTrackingCategories(args, tStyles, titleObj)
if yesno(args.nocat) then
return ''
end
local cfg = getConfig()
local cats = {}
-- Error category
if #tStyles < 1 and cfg['error_category'] then
cats[#cats + 1] = cfg['error_category']
end
-- TemplateStyles category
titleObj = titleObj or mw.title.getCurrentTitle()
if (titleObj.namespace == 10 or titleObj.namespace == 828)
and not cfg['subpage_blacklist'][titleObj.subpageText]
then
local category = args.category or cfg['default_category']
if category then
cats[#cats + 1] = category
end
if not yesno(args.noprotcat) and (cfg['protection_conflict_category'] or cfg['padlock_pattern']) then
local currentProt = titleObj.protectionLevels["edit"] and titleObj.protectionLevels["edit"][1] or nil
local addedLevelCat = false
local addedPadlockCat = false
for i, ts in ipairs(tStyles) do
local tsTitleObj = mw.title.new(ts)
local tsProt = tsTitleObj.protectionLevels["edit"] and tsTitleObj.protectionLevels["edit"][1] or nil
if cfg['padlock_pattern'] and tsProt and not addedPadlockCat then
local content = tsTitleObj:getContent()
if not content:find(cfg['padlock_pattern']) then
cats[#cats + 1] = cfg['missing_padlock_category']
addedPadlockCat = true
end
end
if cfg['protection_conflict_category'] and currentProt and tsProt ~= currentProt and not addedLevelCat then
currentProt = cfg['protection_hierarchy'][currentProt] or 0
tsProt = cfg['protection_hierarchy'][tsProt] or 0
if tsProt < currentProt then
addedLevelCat = true
cats[#cats + 1] = cfg['protection_conflict_category']
end
end
end
end
end
for i, cat in ipairs(cats) do
cats[i] = string.format('[[Category:%s]]', cat)
end
return table.concat(cats)
end
function p._main(args, cfg)
local tStyles = mTableTools.compressSparseArray(args)
local box = renderBox(tStyles)
local trackingCategories = renderTrackingCategories(args, tStyles)
return box .. trackingCategories
end
function p.main(frame)
local origArgs = frame:getParent().args
local args = {}
for k, v in pairs(origArgs) do
v = v:match('^%s*(.-)%s*$')
if v ~= '' then
args[k] = v
end
end
return p._main(args)
end
return p
71ca57c37849f38e3c5ee30061bdae730963e48e
Module:Uses TemplateStyles/config
828
489
1084
1083
2023-10-01T10:00:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Uses_TemplateStyles/config]]
Scribunto
text/plain
local cfg = {} -- Don’t touch this line.
-- Subpage blacklist: these subpages will not be categorized (except for the
-- error category, which is always added if there is an error).
-- For example “Template:Foo/doc” matches the `doc = true` rule, so it will have
-- no categories. “Template:Foo” and “Template:Foo/documentation” match no rules,
-- so they *will* have categories. All rules should be in the
-- ['<subpage name>'] = true,
-- format.
cfg['subpage_blacklist'] = {
['doc'] = true,
['sandbox'] = true,
['sandbox2'] = true,
['testcases'] = true,
}
-- Sandbox title: if the stylesheet’s title is <template>/<stylesheet>.css, the
-- stylesheet’s sandbox is expected to be at <template>/<sandbox_title>/<stylesheet>.css
-- Set to nil to disable sandbox links.
cfg['sandbox_title'] = 'sandbox'
-- Error category: this category is added if the module call contains errors
-- (e.g. no stylesheet listed). A category name without namespace, or nil
-- to disable categorization (not recommended).
cfg['error_category'] = 'Uses TemplateStyles templates with errors'
-- Default category: this category is added if no custom category is specified
-- in module/template call. A category name without namespace, or nil
-- to disable categorization.
cfg['default_category'] = 'Templates using TemplateStyles'
-- Protection conflict category: this category is added if the protection level
-- of any stylesheet is lower than the protection level of the template. A category name
-- without namespace, or nil to disable categorization (not recommended).
cfg['protection_conflict_category'] = 'Templates using TemplateStyles with a different protection level'
-- Hierarchy of protection levels, used to determine whether one protection level is lower
-- than another and thus should populate protection_conflict_category. No protection is treated as zero
cfg['protection_hierarchy'] = {
autoconfirmed = 1,
extendedconfirmed = 2,
templateeditor = 3,
sysop = 4
}
-- Padlock pattern: Lua pattern to search on protected stylesheets for, or nil
-- to disable padlock check.
cfg['padlock_pattern'] = '{{pp-'
-- Missing padlock category: this category is added if a protected stylesheet
-- doesn’t contain any padlock template (specified by the above Lua pattern).
-- A category name without namespace (no nil allowed) if the pattern is not nil,
-- unused (and thus may be nil) otherwise.
cfg['missing_padlock_category'] = 'Templates using TemplateStyles without padlocks'
return cfg -- Don’t touch this line.
58e7a37c44f6ea3f6b8af54a559d696cc7256493
Template:When on basepage
10
490
1086
1085
2023-10-01T10:01:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:When_on_basepage]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "page" parameter then detect
basepage/subpage/subsubpage-->
{{#if:{{{page|}}}
| {{#if:{{#titleparts:{{{page}}}|0|3}}
| subsubpage <!--Subsubpage or lower-->
| {{#if:{{#titleparts:{{{page}}}|0|2}}
| subpage
| basepage
}}
}}
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}}
| subsubpage <!--Subsubpage or lower-->
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}}
| subpage
| basepage
}}
}}
}}
| basepage = {{{1|}}}
| subpage = {{{2|}}}
| subsubpage = {{{3| {{{2|}}} }}} <!--Respecting empty parameter on purpose-->
}}<!--End switch--><noinclude>
{{Documentation}}
</noinclude>
cf4dc92df647a26ab0ce149772a1fe3ac6c3dfc0
Template:Doc subpage
10
491
1088
1087
2023-10-01T10:01:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Doc_subpage]]
wikitext
text/x-wiki
#redirect[[Template:Documentation subpage]]
3aaef8c38750fcf2836627f907d6456f297f493d
Template:Tree list/doc
10
492
1090
1089
2023-10-01T10:01:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tree_list/doc]]
wikitext
text/x-wiki
{{doc subpage}}
{{When on basepage|{{Uses TemplateStyles|Template:Tree list/styles.css}}}}
This family of templates can be used to create a properly structured and accessible tree. This can be used to display family trees, succession to thrones, etc. They comprise:
{{Tree list}}
* {{tl|Tree list}}
** {{tl|Tree list/end}}
** {{tl|Tree list/branching}}
{{Tree list/end}}
== Syntax ==
=== Start and finish of the tree ===
The tree must include a start and finish, using the templates {{tl|Tree list}} and {{tl|Tree list/end}} respectively. The tree is essentially a series of nested lists built with the asterisk *.
<syntaxhighlight lang="wikitext">
{{Tree list}}
* Here goes the content of the tree using asterisks.
{{Tree list/end}}
</syntaxhighlight>
=== The branches of the tree ===
Each branch of the tree is built using nested lists:
<syntaxhighlight lang="wikitext">
{{Tree list}}
* A first level branch
** A second level branch
*** A third level branch
{{Tree list/end}}
</syntaxhighlight>
produces
{{Tree list}}
* A first level branch
** A second level branch
*** A third level branch
{{Tree list/end}}
=== Unlabelled branches ===
An unlabelled branch may be formed by using the {{tl|Tree list/branching}} template.
<syntaxhighlight lang="wikitext">{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}</syntaxhighlight>
produces the following:
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}}
*** A third level branch
*** The final third level branch
{{Tree list/end}}
==Collapse==
To collapse a tree place {{tlx|Hidden begin}} before {{tlx|Tree list}} and enclose {{tlx|Tree list/end}} with {{tlx|Hidden end}}. {{tlx|Hidden begin}} default to just a show link on the right, but it takes a number of parameters see the template's documentation. In this case:
|border=1px #aaa solid — a solid border around the tree
|title=Demonstration tree — a suitable name for the tree
|ta1=center – center the title= name
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=Demonstration tree|ta1=center}}
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}
{{Hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|ta1=center||title=Demonstration tree}}
{{Tree list}}
* A first level branch
** {{Tree list/branching}}
*** A third level branch
*** Another third level branch
*** The final third level branch
** A second level branch
** {{Tree list/branching}} <!--- This branch ends the second level --->
*** A third level branch
*** The final third level branch
{{Tree list/end}}
{{Hidden end}}
If the parameter <code>|expanded=on</code> is added to {{tlx|hidden begin}} then the box will be drawn expanded rather than the default, which is to collapse the tree.
== Examples ==
===A family tree ===
'''Code :'''
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England)|ta1=center|expanded=on}}
{{Tree list}}
*[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509)
**[[Arthur, Prince of Wales]] (1486 - 1502)
**[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541)
***[[James, Duke of Rothesay]] (1507 - 1508)
***[[Arthur, Duke of Rothesay]] (1509 - 1510)
***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542)
****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587)
*****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625)
******''From whom succeeding English, Scottish and British monarchs are descended.''
***[[Alexander Stewart, Duke of Ross]] (1514 - 1515)
***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578)
**[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547)
***[[Henry, Duke of Cornwall]] (1511 - 1511)
***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558)
***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603)
***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]]
**[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495)
**[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533)
***Henry Brandon (1516 - 1522)
***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547)
****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553)
****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568)
****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578)
****Elizabeth Stokes (1555 - 1556)
***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547)
****''From whom are descended the [[Earl of Derby|Earls of Derby]]''
***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534)
**[[Edmund Tudor, Duke of Somerset]] (1499 - 1500)
**[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503)
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
which gives
{{hidden begin|border=1px #aaa solid|title=A family tree (descendants of Henry VII of England) |ta1=center|expanded=on}}
{{Tree list}}
*[[Image:Simple gold crown.svg|15px]] '''(1)''' [[Henry VII of England|Henry VII]] (1457 - 1509)
**[[Arthur, Prince of Wales]] (1486 - 1502)
**[[Margaret Tudor|Margaret, Queen of Scots]] (1489 - 1541)
***[[James, Duke of Rothesay]] (1507 - 1508)
***[[Arthur, Duke of Rothesay]] (1509 - 1510)
***[[Image:Simple silver crown.svg|15px]] [[James V of Scotland]] (1512 - 1542)
****[[Image:Simple silver crown.svg|15px]] [[Mary, Queen of Scots]] (1542 - 1587)
*****[[Image:Simple silver crown.svg|15px]] [[Image:Simple gold crown.svg|15px]] '''(7)''' [[James VI and I|James VI of Scotland and I of England]] (1566 - 1625)
******''From whom succeeding English, Scottish and British monarchs are descended.''
***[[Alexander Stewart, Duke of Ross]] (1514 - 1515)
***[[Margaret Douglas|Margaret Douglas, Countess of Lennox]] (1515 - 1578)
**[[Image:Simple gold crown.svg|15px]] '''(2)''' [[Henry VIII of England]] (1491 - 1547)
***[[Henry, Duke of Cornwall]] (1511 - 1511)
***[[Image:Simple gold crown.svg|15px]] '''(5)''' [[Mary I of England]] (1516 - 1558)
***[[Image:Simple gold crown.svg|15px]] '''(6)''' [[Elizabeth I of England]] (1533 - 1603)
***[[Image:Simple gold crown.svg|15px]] '''(3)''' [[Edward VI of England]]
**[[Elizabeth Tudor (daughter of Henry VII)|Elizabeth Tudor]] (1492 - 1495)
**[[Mary Tudor (queen consort of France)|Mary, Queen of France]] (1496 - 1533)
***Henry Brandon (1516 - 1522)
***[[Frances Grey, Duchess of Suffolk]] (1517 - 1547)
****[[Image:Simple gold crown.svg|15px]] '''(4)''' [[Lady Jane Grey]] (1536 - 1553)
****[[Lady Catherine Grey|Catherine Seymour, Countess of Hertford]] (1540 - 1568)
****[[Lady Mary Grey|Lady Mary Keyes]] (1545 - 1578)
****Elizabeth Stokes (1555 - 1556)
***[[Eleanor Clifford, Countess of Cumberland]] (1519 - 1547)
****''From whom are descended the [[Earl of Derby|Earls of Derby]]''
***[[Henry Brandon, 1st Earl of Lincoln]] (1523 - 1534)
**[[Edmund Tudor, Duke of Somerset]] (1499 - 1500)
**[[Katherine Tudor (1503)|Katherine Tudor]] (1503 - 1503)
{{Tree list/end}}
{{hidden end}}
===An ancestry tree===
[[Ahnentafel]] style trees can be can be displayed using this template, but usually for less than 6 generations the customised Ahnentafel templates are clearer (see [[Template:Ahnentafel/doc]]). There is also an ahnentafel template ({{tl|Ahnentafel-tree}}), that is based on this one, that makes construction this tree simpler.
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}}
{{Tree list}}
*1. '''[[William, Prince of Wales]]''' (born 21 June 1982)
**2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948)
***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021)
****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944)
****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969)
***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022)
****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952)
****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002)
**3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997)
***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992)
****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975)
****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972)
***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004)
****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955)
****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993)
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|title=Ancestry tree of Prince William, Duke of Cambridge|ta1=center|expanded=on}}
{{Tree list}}
*1. '''[[William, Prince of Wales]]''' (born 21 June 1982)
**2. [[Charles III|Charles III of the United Kingdom]] (born 14 November 1948)
***4. [[Prince Philip, Duke of Edinburgh|Prince Philip of Greece and Denmark]] (10 June 1921 – 9 April 2021)
****8. [[Prince Andrew of Greece and Denmark]] (20 January 1882 – 3 December 1944)
****9. [[Princess Alice of Battenberg]] (25 February 1885 – 5 December 1969)
***5. [[Elizabeth II|Elizabeth II of the United Kingdom]] (21 April 1926 – 8 September 2022)
****10. [[George VI|George VI of the United Kingdom]] (14 December 1895 – 6 February 1952)
****11. [[Queen Elizabeth The Queen Mother|Lady Elizabeth Bowes-Lyon]] (4 August 1900 – 30 March 2002)
**3. [[Diana, Princess of Wales|Lady Diana Spencer]] (1 July 1961 – 31 August 1997)
***6. [[John Spencer, 8th Earl Spencer]] (21 April 1926 – 29 March 1992)
****12. [[Albert Spencer, 7th Earl Spencer]] (23 May 1892 – 9 June 1975)
****13. [[Cynthia Spencer, Countess Spencer|Lady Cynthia Hamilton]] (16 August 1897 – 4 December 1972)
***7. [[Frances Shand Kydd|The Honourable Frances Roche]] (20 January 1936 – 3 June 2004)
****14. [[Maurice Roche, 4th Baron Fermoy]] (15 May 1885 – 8 July 1955)
****15. [[Ruth Roche, Baroness Fermoy|Ruth Gill]] (2 October 1908 – 6 July 1993)
{{Tree list/end}}
{{hidden end}}
=== A cladogram ===
<syntaxhighlight lang="wikitext">
{{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}}
{{Tree list}}
*[[Tetrapoda]]
** {{Tree list/branching}}
*** Many extinct groups such as the ''[[Eucritta]]''
*** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians
** {{Tree list/branching}}
*** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]]
*** [[Cotylosauria]]
**** [[Amniota]], Originally all "Reptilian"
**** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles
{{Tree list/end}}
{{hidden end}}
</syntaxhighlight>
{{hidden begin|border=1px #aaa solid|title=A cladogram|ta1=center|expanded=on}}
{{Tree list}}
*[[Tetrapoda]]
** {{Tree list/branching}}
*** Many extinct groups such as the ''[[Eucritta]]''
*** '''[[Lissamphibia]]''' Whose ancestors of the current amphibians
** {{Tree list/branching}}
*** Many extinct groups reminiscent of amphibians with more or less pronounced reptilian characteristics such as [[Eoherpetontidae]], the [[Embolomeri]], the [[Tokosauridae]], [[Chroniosuchidae]], [[Gephyrostegidae]], [[Solenodonsauridae]], [[Seymouriamorpha]], [[Westlothiana]], [[Lepospondyli]]
*** [[Cotylosauria]]
**** [[Amniota]], Originally all "Reptilian"
**** Other extinct sibling taxa like [[Diadectomorpha]] or [[Tseajaiidae]] are close enough to reptiles
{{Tree list/end}}
{{hidden end}}
==See also==
*[[Wikipedia:Family trees]]
*{{tlx|Chart}} — This template produces one row in a "family tree"-like chart consisting of boxes and connecting lines
*{{tlx|Ahnentafel}} — This template takes genealogical data in the form of an [[ahnentafel]] and presents it as a graphical ancestry tree
*{{tlx|ahnentafel-tree}} uses {{tlx|Tree list}} and will handle up to an ahnentafel of 511 places (9 generations), but will also display as little as one generation.
<includeonly>{{Sandbox other||
[[Category:List formatting and function templates]]
[[Category:Genealogy formatting templates]]
}}</includeonly>
e198bd2ed42427a385cca605488247032f83e579
Template:Hidden begin/styles.css
10
253
1092
556
2023-10-01T10:01:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hidden_begin/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.hidden-begin {
box-sizing: border-box;
width: 100%;
padding: 5px;
border: none;
font-size: 95%;
}
.hidden-title {
font-weight: bold;
line-height: 1.6;
text-align: left;
}
.hidden-content {
text-align: left;
}
d4ab5680ca52bee10cfd2992f2adc45452c5ab37
Module:Transclusion count/data/I
828
70
1094
1093
2023-10-01T10:01:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]]
Scribunto
text/plain
return {
["IAAF_name"] = 2100,
["IAST"] = 6400,
["IBDB_name"] = 9100,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 154000,
["IMDb_title"] = 189000,
["IMO_Number"] = 4100,
["IMSLP"] = 8300,
["INA"] = 2100,
["IND"] = 7600,
["INR"] = 6500,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5200,
["IP"] = 2600,
["IPA"] = 142000,
["IPA-de"] = 8100,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 6000,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-ru"] = 2700,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 48000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7100,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3600,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 519000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8100,
["ISP"] = 5300,
["ISR"] = 4900,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9000,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Iaaf_name"] = 7200,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 17000,
["Icehockeystats"] = 12000,
["Icon"] = 581000,
["If"] = 272000,
["If_all"] = 6400,
["If_between"] = 3800,
["If_both"] = 155000,
["If_empty"] = 3660000,
["If_first_display_both"] = 73000,
["If_in_page"] = 10000,
["If_last_display_both"] = 30000,
["If_preview"] = 58000,
["If_then_show"] = 289000,
["Ifempty"] = 4000,
["Ifeq"] = 16000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1300000,
["Ifnotempty"] = 14000,
["Ifnumber"] = 36000,
["Ifsubst"] = 446000,
["Ih"] = 7500,
["Ill"] = 117000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 167000,
["Image_requested/Category_helper"] = 159000,
["Imbox"] = 917000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5640000,
["Importance/colour"] = 5660000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7000,
["Improve_documentation"] = 2400,
["In_class"] = 5900,
["In_lang"] = 356000,
["In_progress"] = 3200,
["In_string"] = 75000,
["In_title"] = 19000,
["Inactive_WikiProject_banner"] = 205000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 43000,
["Incumbent_pope"] = 4300,
["Indent"] = 4400,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4400,
["Inflation/UK/dataset"] = 4400,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6200,
["Inflation/year"] = 25000,
["Info"] = 7300,
["Infobox"] = 3230000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 147000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2800,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4700,
["Infobox_Indian_constituency/defaultdata"] = 4700,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_MLB_yearly"] = 3100,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 18000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7700,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4800,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3300,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8000,
["Infobox_UK_place/NoPostCode"] = 3100,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3800,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2700,
["Infobox_YouTube_personality/styles.css"] = 2700,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 12000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 192000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6800,
["Infobox_animanga/Header"] = 6800,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 28000,
["Infobox_artist_discography"] = 5900,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8400,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 27000,
["Infobox_character"] = 7600,
["Infobox_chess_biography"] = 3900,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5500,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3600,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 83000,
["Infobox_computing_device"] = 2300,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5400,
["Infobox_country"] = 6400,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6500,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2300,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_designation_list"] = 20000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 6900,
["Infobox_dim/core"] = 6900,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9800,
["Infobox_drug/chemical_formula"] = 9800,
["Infobox_drug/data_page_link"] = 9800,
["Infobox_drug/formatATC"] = 9600,
["Infobox_drug/formatCASnumber"] = 9800,
["Infobox_drug/formatChEBI"] = 9800,
["Infobox_drug/formatChEMBL"] = 9800,
["Infobox_drug/formatChemDBNIAID"] = 9800,
["Infobox_drug/formatChemSpider"] = 9800,
["Infobox_drug/formatCompTox"] = 9800,
["Infobox_drug/formatDrugBank"] = 9800,
["Infobox_drug/formatIUPHARBPS"] = 9800,
["Infobox_drug/formatJmol"] = 9800,
["Infobox_drug/formatKEGG"] = 9800,
["Infobox_drug/formatPDBligand"] = 9100,
["Infobox_drug/formatPubChemCID"] = 9800,
["Infobox_drug/formatPubChemSID"] = 9800,
["Infobox_drug/formatUNII"] = 9800,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9800,
["Infobox_drug/maintenance_categories"] = 9800,
["Infobox_drug/non-ref-space"] = 4200,
["Infobox_drug/pregnancy_category"] = 9800,
["Infobox_drug/title"] = 9800,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5400,
["Infobox_family"] = 2100,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 156000,
["Infobox_film/short_description"] = 152000,
["Infobox_film_awards"] = 2600,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2600,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 206000,
["Infobox_football_club"] = 27000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 19000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8000,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2600,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4000,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3400,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 11000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8800,
["Infobox_islands/area"] = 9300,
["Infobox_islands/density"] = 9300,
["Infobox_islands/length"] = 8900,
["Infobox_islands/styles.css"] = 8800,
["Infobox_journal"] = 9700,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4200,
["Infobox_language"] = 9500,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6500,
["Infobox_language/linguistlist"] = 9500,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3600,
["Infobox_library"] = 2200,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 80000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 423000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2000,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2000,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 10000,
["Infobox_musical_artist"] = 121000,
["Infobox_musical_artist/color"] = 121000,
["Infobox_musical_artist/hCard_class"] = 313000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7400,
["Infobox_name_module"] = 7000,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2500,
["Infobox_noble"] = 7300,
["Infobox_officeholder"] = 219000,
["Infobox_officeholder/office"] = 224000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 2900,
["Infobox_park"] = 7500,
["Infobox_person"] = 474000,
["Infobox_person/Wikidata"] = 4700,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7000,
["Infobox_person/weight"] = 66000,
["Infobox_philosopher"] = 3400,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3000,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3900,
["Infobox_racing_driver_series_section"] = 2000,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 2900,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6400,
["Infobox_religious_biography"] = 5300,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 2900,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6400,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 15000,
["Infobox_rugby_league_biography"] = 9900,
["Infobox_rugby_league_biography/PLAYER"] = 9800,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 48000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 562000,
["Infobox_settlement/areadisp"] = 238000,
["Infobox_settlement/columns"] = 94000,
["Infobox_settlement/columns/styles.css"] = 94000,
["Infobox_settlement/densdisp"] = 437000,
["Infobox_settlement/impus"] = 82000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 94000,
["Infobox_settlement/metric"] = 210000,
["Infobox_settlement/pref"] = 293000,
["Infobox_settlement/styles.css"] = 562000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3500,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2200,
["Infobox_sports_competition_event"] = 17000,
["Infobox_sports_competition_event/medalrow"] = 11000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5400,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 106000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3400,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 54000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2100,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inline_block"] = 4500,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 155000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 3600,
["Invalid_SVG/styles.css"] = 3600,
["Iptalk"] = 17000,
["IranCensus2006"] = 47000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 47000,
["Irc"] = 2100,
["Irish_place_name"] = 2600,
["IsIPAddress"] = 38000,
["IsValidPageName"] = 142000,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 6100,
["Is_italic_taxon"] = 479000,
["Is_redirect"] = 27000,
["Isbn"] = 7500,
["Isfdb_name"] = 3700,
["Isfdb_title"] = 4400,
["Isnumeric"] = 210000,
["Iso2continent"] = 35000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 227000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5300,
["Italic_title"] = 285000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4300,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 142000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 131000,
["Module:IPA"] = 142000,
["Module:IPA/data"] = 128000,
["Module:IPA/styles.css"] = 114000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 48000,
["Module:IPAc-en/data"] = 48000,
["Module:IPAc-en/phonemes"] = 48000,
["Module:IPAc-en/pronunciation"] = 48000,
["Module:IPAddress"] = 188000,
["Module:ISO_3166"] = 1040000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 8200,
["Module:ISO_3166/data/National"] = 1040000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 581000,
["Module:Icon/data"] = 581000,
["Module:If_empty"] = 3660000,
["Module:If_in_page"] = 10000,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 357000,
["Module:Indent"] = 4400,
["Module:Infobox"] = 4110000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4360000,
["Module:Infobox3cols"] = 297000,
["Module:InfoboxImage"] = 4420000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 404000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3000,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 63000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9000,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3300,
["Module:Is_infobox_in_lead"] = 377000,
["Module:Is_instance"] = 335000,
["Module:Italic_title"] = 1120000,
["Module:Italic_title2"] = 5300,
}
96976089c1e9db8d200dbe641eaed9ec564df70a
Module:Infobox/doc
828
84
1096
1015
2023-10-01T10:01:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Infobox/doc]]
wikitext
text/x-wiki
{{High-use|3308957|all-pages = yes}}
{{module rating|protected}}
{{Lua|Module:Navbar|Module:Italic title}}
{{Uses TemplateStyles|Module:Infobox/styles.css|Template:Hlist/styles.css|Template:Plainlist/styles.css}}
'''Module:Infobox''' is a [[WP:Module|module]] that implements the {{tl|Infobox}} template. Please see the template page for usage instructions.
== Tracking categories ==
* {{clc|Pages using infobox templates with ignored data cells}}
* {{clc|Articles using infobox templates with no data rows}}
* {{clc|Pages using embedded infobox templates with the title parameter}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
[[Category:Modules that add a tracking category]]
[[Category:Wikipedia infoboxes]]
[[Category:Infobox modules]]
[[Category:Modules that check for strip markers]]
}}</includeonly>
936ad219eb263a6f3293d62f667bd7b5db1059c1
Template:Infobox country
10
241
1254
540
2023-10-01T10:03:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country]]
wikitext
text/x-wiki
{{infobox
|templatestyles = Template:Infobox country/styles.css
| bodyclass = ib-country vcard
| aboveclass = adr
| above =
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{conventional_long_name|}}}
|<div class="fn org country-name">{{{conventional_long_name|}}}</div>
}}{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
|<div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}}}</div>
}}<!--
-->{{#ifeq:{{{micronation|}}}|yes
|<span class="fn org">[[Micronation]]</span>
}}
}}
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
| class2 = anthem
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}
|'''Anthem:''' {{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}
}}{{#if:{{{anthems|}}}
|'''Anthems:''' {{{anthems}}}
}}{{#if:{{{royal_anthem|}}}
|
<div class="ib-country-anthem">'''[[Royal anthem]]:''' {{{royal_anthem}}}</div>
}}{{#if:{{{flag_anthem|}}}
|
<div class="ib-country-anthem">'''[[Flag anthem]]:''' {{{flag_anthem}}}</div>
}}{{#if:{{{national_march|}}}
|
<div class="ib-country-anthem">'''National march:''' {{{national_march}}}</div>
}}{{#if:{{{territorial_anthem|}}}
|
<div class="ib-country-anthem">'''Territorial anthem:''' {{{territorial_anthem}}}</div>
}}{{#if:{{{regional_anthem|}}}
|
<div class="ib-country-anthem">'''Regional anthem:''' {{{regional_anthem}}}</div>
}}{{#if:{{{state_anthem|}}}
|
<div class="ib-country-anthem">'''State anthem:''' {{{state_anthem}}}</div>
}}{{#if:{{{march|}}}
|
<div class="ib-country-anthem">'''March:''' {{{march}}}</div>
}}
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}
|{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}
| '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!--
-->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}
}}
| data4 = {{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }}
| data5 = {{#if:{{{image_map2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }}
| label6 = Status
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}
| label7 = Location
| data7 = {{{loctext|}}}
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!------------------------------------------
capital is largest_city/_settlement:
-------------------------------------------
--><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div>
}}
| data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}
| label9 = Capital-in-exile
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative center }}
| data10 = {{#switch:{{{admin_center|}}}
|capital | =
|[[{{{capital|}}}]] =
|{{{capital|}}} =
|#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}
| label11 = Largest {{{largest_settlement_type|city}}}
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!-- nothing already appears above -->
| {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}
}}
| rowclass12 = mergedtoprow
| label12 = Official languages
| data12 = {{{official_languages|}}}
| rowclass13 = mergedrow
| label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}} languages</span>
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}
| rowclass14 = mergedrow
| label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national languages</span>
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}
| rowclass15 = mergedrow
| label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional languages</span>
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}
| label16 = Common languages
| data16 = {{{common_languages|}}}
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes
|{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}
|{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}
| label17 ={{#ifeq:{{{languages_sub|}}}|yes
|<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other languages }}</div>
|{{if empty| {{{languages_type|}}} | Other languages }}
}}
| data17 = {{{languages|}}}
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes
|<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other languages }}</div>
|{{if empty|{{{languages2_type|}}} | Other languages }}
}}
| data18 = {{{languages2|}}}
| label19 = [[Ethnic group|Ethnic groups]] <!--
-->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}}
| data19 = {{{ethnic_groups|}}}
| label20 = Religion <!--
-->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}}
| data20 = {{{religion|}}}
| label21 = [[Demonym|Demonym(s)]]
| data21 = {{#if:{{{demonym|}}}
|{{#ifexist:{{{demonym}}} people
| [[{{{demonym}}} people|{{{demonym}}}]]
| {{{demonym}}}
}}
}}
| label22 = Type
| data22 = {{{org_type|}}}
| label23 = {{if empty|{{{membership_type|}}} | Membership }}
| data23 = {{{membership|}}}
| label24 = {{#if:{{{government_type|}}}
| {{#if:{{{politics_link|}}}
| [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!--
-->}}<!--
-->}}<!--
-->}}
| data24 = {{{government_type|}}}
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}
| {{#if:{{{name|}}}{{{membership|}}}
| <!--template being used for geopolitical org:-->Leaders
| <!--template being used for country/territory: -->Government
}}
}} }}
| rowclass26 = mergedrow
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}
| rowclass27 = mergedrow
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}
| data27 = {{#if:{{{title_leader|}}}| }}
| rowclass28 = mergedrow
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}
| rowclass29 = mergedrow
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}
| data29 = {{#if:{{{title_representative|}}}| }}
| rowclass30 = mergedrow
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}
| rowclass31 = mergedrow
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}
| data31 = {{#if:{{{title_deputy|}}}| }}
| rowclass32 = mergedrow
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}
| label40 = Legislature
| data40 = {{{legislature|}}}
| rowclass41 = mergedrow
| label41 = <div class="ib-country-fake-li">• {{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div>
| data41 = {{{upper_house|{{{house1|}}}}}}
| rowclass42 = mergedbottomrow
| label42 = <div class="ib-country-fake-li">• {{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div>
| data42 = {{{lower_house|{{{house2|}}}}}}
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}
|{{#if:{{{sovereignty_type|}}}
| {{{sovereignty_type}}}<!--
-->{{#if:{{{sovereignty_note|}}} | <div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}}
| {{#if:{{{established|}}}| | Establishment }}
}} }}
| label44 = Establishment
| data44 = {{#if:{{{sovereignty_type|}}}
|
|{{{established|}}}
}}
| label45 = {{#if:{{{era|}}}|Historical era|History}}
| data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}| }}}}
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }}
| rowclass60 = mergedtoprow
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}
| {{#if:{{{area_link|}}}
| [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!--
-->}}<!--
-->}} }}
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label61 = <div class="ib-country-fake-li">• {{{area_label|Total}}}{{{FR_foot4|}}}</div>
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}
|{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}
|{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_ha|}}}{{{area_acre|}}}
|{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}
}}
}}{{{area_footnote|}}}{{#if:{{{area_rank|}}} | ([[List of countries and dependencies by area|{{{area_rank}}}]]) }}
}}
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label62 = <div class="ib-country-fake-li">• Land</div>
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}
|{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}
|{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}
|{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}
}}
}}{{{area_land_footnote|}}}
}}
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label63 = <div class="ib-country-fake-li">• Water</div>
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}
|{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}
|{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}
|{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}
}}
}}{{{area_water_footnote|}}}
}}
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label64 = <div class="ib-country-fake-li">• Water (%)</div>
| data64 = {{{percent_water|}}}
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label65 = <div class="ib-country-fake-li">• {{{area_label2|}}}</div>
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label66 = <div class="ib-country-fake-li">• {{{area_label3|}}}</div>
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}
| rowclass72 = mergedrow
| label72 = <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }}
| rowclass73 = mergedrow
| label73 = <div class="ib-country-fake-li2">• [[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div>
| data73 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}
|{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}
}}
}}
| rowclass89 = mergedbottomrow
| label89 = <div class="ib-country-fake-li2">• [[Cadastre]]{{{FR_foot3|}}}</div>
| data89 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}
| {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}
}}
}}
| rowclass90 = mergedtoprow
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}
|{{#if:{{{population_link|}}}
| {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!--
-->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!--
-->| Population<!--
-->}}<!--
-->}} }}
| rowclass91 = mergedrow
| label91 = <div class="ib-country-fake-li">• {{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div>
| data91 = {{#if:{{{population_estimate|}}}
|{{{population_estimate}}}<!--
-->{{#if:{{{population_estimate_rank|}}} | ([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}
}}
| rowclass92 = mergedrow
| label92= <div class="ib-country-fake-li">• {{{population_label2|}}}</div>
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}
| rowclass93= mergedrow
| label93= <div class="ib-country-fake-li">• {{{population_label3|}}}</div>
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}
| rowclass94= mergedrow
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }}
| rowclass95= mergedrow
| label95= <div class="ib-country-fake-li">• {{#if:{{{population_census_year|}}} |{{{population_census_year}}} census|Census}}</div>
| data95= {{#if:{{{population_census|}}}
|{{{population_census}}}<!--
-->{{#if:{{{population_census_rank|}}} | ([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}
}}
| rowclass96= mergedrow
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1= ({{{FR_total_population_estimate_year}}})}}}}}}
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}}
| rowclass97 = mergedrow
| label97= <div class="ib-country-fake-li">• Total{{{FR_foot|}}}</div>
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}
|{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}| ([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}
}} }}
| rowclass98 = mergedrow
| label98= <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}
| ([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}
}}
| rowclass99 = mergedbottomrow
| label99= <div class="ib-country-fake-li">• Density{{{FR_foot5|}}}</div>
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}
| {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!--
-->{{#if:{{{population_density_rank|}}} | ([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}
}}
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}
| label100 = Membership
| data100= {{{nummembers|}}}
| rowclass101= mergedtoprow
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|([[Purchasing power parity|PPP]])}}
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}
|{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}} }}estimate
}}
| rowclass102= mergedrow
| label102= <div class="ib-country-fake-li">• Total</div>
| data102= {{#if:{{{GDP_PPP|}}}
|{{{GDP_PPP}}}<!--
-->{{#if:{{{GDP_PPP_rank|}}} | ([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}
}}
| rowclass103= mergedbottomrow
| label103= <div class="ib-country-fake-li">• Per capita</div>
| data103= {{#if:{{{GDP_PPP_per_capita|}}}
|{{{GDP_PPP_per_capita}}}<!--
-->{{#if:{{{GDP_PPP_per_capita_rank|}}} | ([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}
}}
| rowclass104= mergedtoprow
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|(nominal)}}
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}
|{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}} }}estimate
}}
| rowclass105= mergedrow
| label105= <div class="ib-country-fake-li">• Total</div>
| data105= {{#if:{{{GDP_nominal|}}}
|{{{GDP_nominal}}}<!--
-->{{#if:{{{GDP_nominal_rank|}}} | ([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}
}}
| rowclass106= mergedbottomrow
| label106= <div class="ib-country-fake-li">• Per capita</div>
| data106= {{#if:{{{GDP_nominal_per_capita|}}}
| {{{GDP_nominal_per_capita}}}<!--
-->{{#if:{{{GDP_nominal_per_capita_rank|}}} | ([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}
}}
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} | {{nobold|1=({{{Gini_year}}})}}}}
| data107= {{#if:{{{Gini|}}}
| {{#switch:{{{Gini_change|}}}
|increase = {{increaseNegative}} <!--
-->|decrease = {{decreasePositive}} <!--
-->|steady = {{steady}} <!--
-->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!--
---------Evaluate and add Gini category:----------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{Gini}}}>100 <!--
-->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=46 <!--
-->| {{color|darkred|high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=30 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{Gini}}}>=0 <!--
-->| {{color|forestgreen|low}}<!--
-->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
-----------Add Gini_rank (if supplied):----------
-->{{#if:{{{Gini_rank|}}}
| · [[List of countries by income equality|{{{Gini_rank}}}]]<!--
-->}}<!--
-->}}
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} | {{nobold|1=({{{HDI_year}}})}}}}
| data108= {{#if:{{{HDI|}}}
| {{#switch:{{{HDI_change|}}}
|increase = {{increase}} <!--
-->|decrease = {{decrease}} <!--
-->|steady = {{steady}} <!--
-->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!--
---------Evaluate and add HDI category:---------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{HDI}}}>1 <!--
-->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{HDI}}}>0.799 <!--
-->| {{color|darkgreen|very high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.699 <!--
-->| {{color|forestgreen|high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.549 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{HDI}}}>=0.000<!--
-->| {{color|red|low}}<!--
-->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
----------Add HDI_rank (if supplied):-----------
-->{{#if:{{{HDI_rank|}}}
| · [[List of countries by Human Development Index|{{{HDI_rank}}}]]<!--
-->}}<!--
-->}}
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}
| data109= {{#if:{{{currency|}}}
| {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}
}}
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}
| label119= Time zone
| data119= {{#if:{{{utc_offset|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}
|{{{time_zone|}}}
}}
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}
| label120= <div class="ib-country-fake-li">• Summer ([[Daylight saving time|DST]])</div>
| data120= {{#if:{{{utc_offset_DST|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}
|{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}
}}
| rowclass121= mergedbottomrow
| label121= <nowiki />
| data121= {{{DST_note|}}}
| label122 = [[Antipodes]]
| data122= {{{antipodes|}}}
| label123 = Date format
| data123= {{{date_format|}}}
| label125= [[Left- and right-hand traffic|Driving side]]
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}
| label126= {{#if:{{{calling_code|}}}
|{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]
| Calling code
}}
}}
| data126= {{{calling_code|}}}
| label127= [[ISO 3166|ISO 3166 code]]
| data127= {{#switch:{{{iso3166code|}}}
|omit = <!--(do nothing)-->
| = <!--if iso3166code is not supplied:
-->{{#if:{{{common_name|}}}
| {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}
| [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]
}}
}}
|#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]
}}
| label128= [[Country code top-level domain|Internet TLD]]
| data128= {{{cctld|}}}
| data129 = {{#if:{{{official_website|}}}
|<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div>
}}
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}
| {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}}
}}
| data134 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}}
}}
| label135 = Today part of
| data135 = {{{today|}}}
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-alpha">
{{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li>
}}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li>
}}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li>
}}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li>
}}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li>
}}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li>
}}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li>
}}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}}
</ol></div>}}
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-num">
{{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li>
}}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li>
}}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li>
}}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li>
}}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li>
}}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li>
}}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li>
}}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}}
</ol></div>}}
| data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}}
| belowclass = mergedtoprow noprint
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | border_p1 | border_p2 | border_p3 | border_p4 | border_p5 | border_p6 | border_p7 | border_p8 | border_p9 | border_p10 | border_p11 | border_p12 | border_p13 | border_p14 | border_p15 | border_p16 | border_p17 | border_p18 | border_p19 | border_p20| border_p21 | border_s1 | border_s2 | border_s3 | border_s4 | border_s5 | border_s6 | border_s7 | border_s8 | border_s9 | border_s10 | border_s11 | border_s12 | border_s13 | border_s14 | border_s15 | border_s16 | border_s17 | border_s18 | border_s19 | border_s20 | border_s21 | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | date_event1 | date_event2 | date_event3 | date_event4 | date_event5 | date_event6 | date_event7 | date_event8 | date_event9 | date_event10 | date_format | date_post | date_pre | date_start | demonym | deputy1 | deputy2 | deputy3 | deputy4 | deputy5 | deputy6 | deputy7 | deputy8 | deputy9 | deputy10 | deputy11 | deputy12 | deputy13 | deputy14 | deputy15 | drives_on | DST_note | DST | empire | englishmotto | era | established_date1 | established_date2 | established_date3 | established_date4 | established_date5 | established_date6 | established_date7 | established_date8 | established_date9 | established_date10 | established_date11 | established_date12 | established_date13 | established_date14 | established_date15 | established_date16 | established_date17 | established_date18 | established_date19 | established_date20 | established_event1 | established_event2 | established_event3 | established_event4 | established_event5 | established_event6 | established_event7 | established_event8 | established_event9 | established_event10 | established_event11 | established_event12 | established_event13 | established_event14 | established_event15 | established_event16 | established_event17 | established_event18 | established_event19 | established_event20 | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | event1 | event2 | event3 | event4 | event5 | event6 | event7 | event8 | event9 | event10 | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | flag_p1 | flag_p2 | flag_p3 | flag_p4 | flag_p5 | flag_p6 | flag_p7 | flag_p8 | flag_p9 | flag_p10 | flag_p11 | flag_p12 | flag_p13 | flag_p14 | flag_p15 | flag_p16 | flag_p17 | flag_p18 | flag_p19 | flag_p20 | flag_p21 | flag_s1 | flag_s2 | flag_s3 | flag_s4 | flag_s5 | flag_s6 | flag_s7 | flag_s8 | flag_s9 | flag_s10 | flag_s11 | flag_s12 | flag_s13 | flag_s14 | flag_s15 | flag_s16 | flag_s17 | flag_s18 | flag_s19 | flag_s20 | flag_s21 | flag_size | flag_type | flag_type_article | flag_width | flag2_border | footnote_a | footnote_a | footnote_b | footnote_b | footnote_c | footnote_c | footnote_d | footnote_d | footnote_e | footnote_e | footnote_f | footnote_f | footnote_g | footnote_g | footnote_h | footnote_h | footnote1 | footnote1 | footnote2 | footnote2 | footnote3 | footnote3 | footnote4 | footnote4 | footnote5 | footnote5 | footnote6 | footnote6 | footnote7 | footnote7 | footnote8 | footnote8 | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | image_p1 | image_p2 | image_p3 | image_p4 | image_p5 | image_p6 | image_p7 | image_p8 | image_p9 | image_p10 | image_p11 | image_p12 | image_p13 | image_p14 | image_p15 | image_p16 | image_p17 | image_p18 | image_p19 | image_p20 | image_p21 | image_s1 | image_s2 | image_s3 | image_s4 | image_s5 | image_s6 | image_s7 | image_s8 | image_s9 | image_s10 | image_s11 | image_s12 | image_s13 | image_s14 | image_s15 | image_s16 | image_s17 | image_s18 | image_s19 | image_s20 | image_s21 | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | leader_name1 | leader_name2 | leader_name3 | leader_name4 | leader_name5 | leader_name6 | leader_name7 | leader_name8 | leader_name9 | leader_name10 | leader_name11 | leader_name12 | leader_name13 | leader_name14 | leader_name15 | leader_title1 | leader_title2 | leader_title3 | leader_title4 | leader_title5 | leader_title6 | leader_title7 | leader_title8 | leader_title9 | leader_title10 | leader_title11 | leader_title12 | leader_title13 | leader_title14 | leader_title15 | leader1 | leader2 | leader3 | leader4 | leader5 | leader6 | leader7 | leader8 | leader9 | leader10 | leader11 | leader12 | leader13 | leader14 | leader15 | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | p14 | p15 | p16 | p17 | p18 | p19 | p20 | p21 | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | ref_area1 | ref_area2 | ref_area3 | ref_area4 | ref_area5 | ref_pop1 | ref_pop2 | ref_pop3 | ref_pop4 | ref_pop5 | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | representative1 | representative2 | representative3 | representative4 | representative5 | representative6 | representative7 | representative8 | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 | s18 | s19 | s20 | s21 | sovereignty_note | sovereignty_type | stat_area1 | stat_area2 | stat_area3 | stat_area4 | stat_area5 | stat_pop1 | stat_pop2 | stat_pop3 | stat_pop4 | stat_pop5 | stat_year1 | stat_year2 | stat_year3 | stat_year4 | stat_year5 | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | year_deputy1 | year_deputy2 | year_deputy3 | year_deputy4 | year_deputy5 | year_deputy6 | year_deputy7 | year_deputy8 | year_deputy9 | year_deputy10 | year_deputy11 | year_deputy12 | year_deputy13 | year_deputy14 | year_deputy15 | year_end | year_exile_end | year_exile_start | year_leader1 | year_leader2 | year_leader3 | year_leader4 | year_leader5 | year_leader6 | year_leader7 | year_leader8 | year_leader9 | year_leader10 | year_leader11 | year_leader12 | year_leader13 | year_leader14 | year_leader15 | year_representative1 | year_representative2 | year_representative3 | year_representative4 | year_representative5 | year_representative6 | year_representative7 | year_representative8 | year_start}}{{main other|
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]
}}}}<!--
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.
-->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}
}}<!--End of former country tracking cats--><noinclude>
{{documentation}}
</noinclude>
be47d674190a41bd16abfd73bfb38394b5c704f2
Template:Infobox country/formernext
10
560
1256
1255
2023-10-01T10:04:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/formernext]]
wikitext
text/x-wiki
{| style="width:95%; background: transparent; text-align:center; margin:0 auto; display:inline-table;"
|-
| style="text-align:center; border:0; padding-bottom:0"|<div id="before-after"></div> {{#if:{{{p1|}}}|'''Preceded by'''}} || style="text-align:center;border:0; padding-bottom:0;"| {{#if:{{{s1|}}}|'''Succeeded by'''}}
|-
| style="vertical-align:top; text-align:center; border:0;"| {{#if:{{{p1|}}} | <!--start subtable:-->{{{!}} style="width:100%; background: transparent; text-align:center; margin:0 auto; border:0;"
{{!}}-
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p1|}}}|[[File:{{{flag_p1}}}|20px{{#ifeq:{{{border_p1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p1|}}}|{{{image_p1}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p1}}}]]
{{!}}-
{{#if:{{{p2|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p2|}}}|[[File:{{{flag_p2}}}|20px{{#ifeq:{{{border_p2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p2|}}}|{{{image_p2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p2}}}]]}}
{{!}}-
{{#if:{{{p3|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p3|}}}|[[File:{{{flag_p3}}}|20px{{#ifeq:{{{border_p3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p3|}}}|{{{image_p3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p3}}}]]}}
{{!}}-
{{#if:{{{p4|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p4|}}}|[[File:{{{flag_p4}}}|20px{{#ifeq:{{{border_p4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p4|}}}|{{{image_p4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p4}}}]]}}
{{!}}-
{{#if:{{{p5|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p5|}}}|[[File:{{{flag_p5}}}|20px{{#ifeq:{{{border_p5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p5|}}}|{{{image_p5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p5}}}]]}}
{{!}}-
{{#if:{{{p6|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p6|}}}|[[File:{{{flag_p6}}}|20px{{#ifeq:{{{border_p6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p6|}}}|{{{image_p6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p6}}}]]}}
{{!}}-
{{#if:{{{p7|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p7|}}}|[[File:{{{flag_p7}}}|20px{{#ifeq:{{{border_p7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p7|}}}|{{{image_p7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p7}}}]]}}
{{!}}-
{{#if:{{{p8|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p8|}}}|[[File:{{{flag_p8}}}|20px{{#ifeq:{{{border_p8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p8|}}}|{{{image_p8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p8}}}]]}}
{{!}}-
{{#if:{{{p9|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p9|}}}|[[File:{{{flag_p9}}}|20px{{#ifeq:{{{border_p9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p9|}}}|{{{image_p9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p9}}}]]}}
{{!}}-
{{#if:{{{p10|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p10|}}}|[[File:{{{flag_p10}}}|20px{{#ifeq:{{{border_p10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p10|}}}|{{{image_p10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p10}}}]]}}
{{!}}-
{{#if:{{{p11|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p11|}}}|[[File:{{{flag_p11}}}|20px{{#ifeq:{{{border_p11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p11|}}}|{{{image_p11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p11}}}]]}}
{{!}}-
{{#if:{{{p12|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p12|}}}|[[File:{{{flag_p12}}}|20px{{#ifeq:{{{border_p12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p12|}}}|{{{image_p12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p12}}}]]}}
{{!}}-
{{#if:{{{p13|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p13|}}}|[[File:{{{flag_p13}}}|20px{{#ifeq:{{{border_p13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p13|}}}|{{{image_p13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p13}}}]]}}
{{!}}-
{{#if:{{{p14|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p14|}}}|[[File:{{{flag_p14}}}|20px{{#ifeq:{{{border_p14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p14|}}}|{{{image_p14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p14}}}]]}}
{{!}}-
{{#if:{{{p15|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p15|}}}|[[File:{{{flag_p15}}}|20px{{#ifeq:{{{border_p15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p15|}}}|{{{image_p15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p15}}}]]}}
{{!}}-
{{#if:{{{p16|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p16|}}}|[[File:{{{flag_p16}}}|20px{{#ifeq:{{{border_p16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p16|}}}|{{{image_p16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p16}}}]]}}
{{!}}-
{{#if:{{{p17|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p17|}}}|[[File:{{{flag_p17}}}|20px{{#ifeq:{{{border_p17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p17|}}}|{{{image_p17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p17}}}]]}}
{{!}}-
{{#if:{{{p18|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p18|}}}|[[File:{{{flag_p18}}}|20px{{#ifeq:{{{border_p18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p18|}}}|{{{image_p18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p18}}}]]}}
{{!}}-
{{#if:{{{p19|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p19|}}}|[[File:{{{flag_p19}}}|20px{{#ifeq:{{{border_p19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p19|}}}|{{{image_p19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p19}}}]]}}
{{!}}-
{{#if:{{{p20|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p20|}}}|[[File:{{{flag_p20}}}|20px{{#ifeq:{{{border_p20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p20|}}}|{{{image_p20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p20}}}]]}}
{{!}}-
{{#if:{{{p21|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_p21|}}}|[[File:{{{flag_p21}}}|20px{{#ifeq:{{{border_p21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_p21|}}}|{{{image_p21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:left;"{{!}} [[{{{p21}}}]]}}
<!--end subtable:-->
{{!}}}
}}
| style="vertical-align:top; text-align:center;border:0;"| {{#if:{{{s1|}}} | <!--start subtable:-->{{{!}} style="width:92%; background:transparent; text-align:center; margin:0 auto; border:0;"
{{!}}-
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s1}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s1|}}}|[[File:{{{flag_s1}}}|20px{{#ifeq:{{{border_s1}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s1|}}}|{{{image_s1}}}|[[File:Blank.png|22px|link=|alt=]]}}}}
{{!}}-
{{#if:{{{s2|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s2}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s2|}}}|[[File:{{{flag_s2}}}|20px{{#ifeq:{{{border_s2}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s2|}}}|{{{image_s2}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s3|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s3}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s3|}}}|[[File:{{{flag_s3}}}|20px{{#ifeq:{{{border_s3}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s3|}}}|{{{image_s3}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s4|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s4}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s4|}}}|[[File:{{{flag_s4}}}|20px{{#ifeq:{{{border_s4}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s4|}}}|{{{image_s4}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s5|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s5}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s5|}}}|[[File:{{{flag_s5}}}|20px{{#ifeq:{{{border_s5}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s5|}}}|{{{image_s5}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s6|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s6}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s6|}}}|[[File:{{{flag_s6}}}|20px{{#ifeq:{{{border_s6}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s6|}}}|{{{image_s6}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s7|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s7}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s7|}}}|[[File:{{{flag_s7}}}|20px{{#ifeq:{{{border_s7}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s7|}}}|{{{image_s7}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s8|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s8}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s8|}}}|[[File:{{{flag_s8}}}|20px{{#ifeq:{{{border_s8}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s8|}}}|{{{image_s8}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s9|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s9}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s9|}}}|[[File:{{{flag_s9}}}|20px{{#ifeq:{{{border_s9}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s9|}}}|{{{image_s9}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s10|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s10}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s10|}}}|[[File:{{{flag_s10}}}|20px{{#ifeq:{{{border_s10}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s10|}}}|{{{image_s10}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s11|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s11}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s11|}}}|[[File:{{{flag_s11}}}|20px{{#ifeq:{{{border_s11}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s11|}}}|{{{image_s11}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s12|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s12}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s12|}}}|[[File:{{{flag_s12}}}|20px{{#ifeq:{{{border_s12}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s12|}}}|{{{image_s12}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s13|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s13}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s13|}}}|[[File:{{{flag_s13}}}|20px{{#ifeq:{{{border_s13}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s13|}}}|{{{image_s13}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s14|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s14}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s14|}}}|[[File:{{{flag_s14}}}|20px{{#ifeq:{{{border_s14}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s14|}}}|{{{image_s14}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s15|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s15}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s15|}}}|[[File:{{{flag_s15}}}|20px{{#ifeq:{{{border_s15}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s15|}}}|{{{image_s15}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s16|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s16}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s16|}}}|[[File:{{{flag_s16}}}|20px{{#ifeq:{{{border_s16}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s16|}}}|{{{image_s16}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s17|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s17}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s17|}}}|[[File:{{{flag_s17}}}|20px{{#ifeq:{{{border_s17}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s17|}}}|{{{image_s17}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s18|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s18}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s18|}}}|[[File:{{{flag_s18}}}|20px{{#ifeq:{{{border_s18}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s18|}}}|{{{image_s18}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s19|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s19}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s19|}}}|[[File:{{{flag_s19}}}|20px{{#ifeq:{{{border_s19}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s19|}}}|{{{image_s19}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s20|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s20}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s20|}}}|[[File:{{{flag_s20}}}|20px{{#ifeq:{{{border_s20}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s20|}}}|{{{image_s20}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
{{!}}-
{{#if:{{{s21|}}} |
{{!}}style="border:0; padding:0; vertical-align:middle; text-align:right;"{{!}} [[{{{s21}}}]]
{{!}}style="border:0; padding:0; vertical-align:middle;"{{!}} {{#if:{{{flag_s21|}}}|[[File:{{{flag_s21}}}|20px{{#ifeq:{{{border_s21}}}|no||{{!}}border}}|link=|alt=]]|{{#if:{{{image_s21|}}}|{{{image_s21}}}|[[File:Blank.png|22px|link=|alt=]]}}}}}}
<!--end subtable:-->
<!--end subtable:-->
{{!}}}
}}
<!--end subtable:-->
{{!}}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently handle up to 21 flags.
}}</noinclude>
05a74d48da51cce78e3518579c2af4cd1e699e4a
Template:Infobox country/formernext/styles.css
10
561
1258
1257
2023-10-01T10:04:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/formernext/styles.css]]
sanitized-css
text/css
.ib-country-formernext {
width: 95%;
margin: 0 auto;
display: flex;
justify-content: center;
}
.ib-country-formernext > div {
min-width: 50%;
flex-grow: 1;
}
.ib-country-formernext table {
width: 100%;
}
/*
.ib-country-formernext caption {
font-weight: bold;
text-align: center;
}
*/
@media all and (max-width: 720px) {
body.skin-minerva .ib-country-formernext table {
display: table;
}
}
a0cc4f82f1cfcb3da5919ad63b7e9fc65b113823
Template:Infobox country/imagetable
10
427
1260
930
2023-10-01T10:04:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/imagetable]]
wikitext
text/x-wiki
{{#if:{{both|{{{image1a|}}}{{{image1b|}}}|{{{image2|}}}}}|
<div class="noresize" style="display:table; width:100%;">
<div style="display:table-cell; vertical-align:middle; padding-left:5px;">
{{#if:{{{image1a|}}}|<div style="padding-bottom:3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="padding: 2px 0px 3px;">{{{image1b|}}}</div>}}
<div>{{{caption1|}}}</div>
</div>
<div style="display:table-cell; vertical-align:middle; padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2|}}}</div>
</div>
</div>
<!--else:-->|
{{#if:{{{image1a|}}}{{{image1b|}}}|
<div class="noresize" style="display:table; width:100%;">
{{#if:{{{image1a|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px;">{{{image1a|}}}</div>}}{{#if:{{{image1b|}}}|<div style="display:table-cell; vertical-align:middle; padding: 0px 5px 3px 0px;">{{{image1b|}}}</div>}}
</div>
<div>{{{caption1}}}</div>
}}
{{#if:{{{image2|}}}|
<div style="padding: 0px 5px;">
<div style="padding-bottom:3px;">{{{image2|}}}</div>
<div>{{{caption2}}}</div>
</div>
}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly.
}}</noinclude>
4094e7b538bb7456c09fbbfcdf9cf4e30e1b6b5b
Template:Infobox country/multirow
10
428
1262
932
2023-10-01T10:04:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/multirow]]
wikitext
text/x-wiki
{{infobox | child = yes | decat=yes
| rowclass25 = mergedrow
| label25 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{1|}}}</div>
| data25 = {{{2|}}}
| rowclass26 = mergedrow
| label26 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{3|}}}</div>
| data26 = {{{4|}}}
| rowclass27 = mergedrow
| label27 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{5|}}}</div>
| data27 = {{{6|}}}
| rowclass28 = mergedrow
| label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{7|}}}</div>
| data28 = {{{8|}}}
| rowclass29 = mergedrow
| label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{9|}}}</div>
| data29 = {{{10|}}}
| rowclass30 = mergedrow
| label30 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{11|}}}</div>
| data30 = {{{12|}}}
| rowclass31 = mergedrow
| label31 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{13|}}}</div>
| data31 = {{{14|}}}
| rowclass32 = mergedrow
| label32 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{15|}}}</div>
| data32 = {{{16|}}}
| rowclass33 = mergedrow
| label33 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{17|}}}</div>
| data33 = {{{18|}}}
| rowclass34 = mergedrow
| label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{19|}}}</div>
| data34 = {{{20|}}}
| rowclass35 = mergedrow
| label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{21|}}}</div>
| data35 = {{{22|}}}
| rowclass36 = mergedrow
| label36 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{23|}}}</div>
| data36 = {{{24|}}}
| rowclass37 = mergedrow
| label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{25|}}}</div>
| data37 = {{{26|}}}
| rowclass38 = mergedrow
| label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{27|}}}</div>
| data38 = {{{28|}}}
| rowclass39 = mergedrow
| label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{29|}}}</div>
| data39 = {{{30|}}}
| rowclass40 = mergedrow
| label40 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{31|}}}</div>
| data40 = {{{32|}}}
| rowclass41 = mergedrow
| label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{33|}}}</div>
| data41 = {{{34|}}}
| rowclass42 = mergedrow
| label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{35|}}}</div>
| data42 = {{{36|}}}
| rowclass43 = mergedrow
| label43 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{37|}}}</div>
| data43 = {{{38|}}}
| rowclass44 = mergedrow
| label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{39|}}}</div>
| data44 = {{{40|}}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly. It can currently take up to 20 rows.
}}</noinclude>
52b488ce963e6b79723ab148c9a82507ed2b4078
Template:Infobox country/status text
10
562
1264
1263
2023-10-01T10:04:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/status_text]]
wikitext
text/x-wiki
{{#if:{{{status_text|}}} |{{{status_text}}} |{{#switch:{{ucfirst:{{{status|}}}}}
|Empire=<!--Empire-->
|Nomadic empire|Nomadic Empire=[[Nomadic empire]]
|Ancient Chinese state |Ancient Chinese State=[[Ancient Chinese state]]
|Federation |Federal=<!--Federation-->
|Confederation=<!--Confederation-->
|State union |State Union |Union=<!--State union-->
|Special |Special territory=<!--Special territory-->
|Unrecognized state |Unrecognised state |Unrecognized State |Unrecognised State
|Unrecognized |Unrecognised=[[List of states with limited recognition|Unrecognized state]]
|City-state |City-State |City state |City State
|City={{#if:{{{empire|}}}
| {{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Free Imperial City]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|<br/>(until 1806)}}|}} |#default=City-state {{#if:{{{empire|}}}|of [[{{{empire}}}]]|}} }}
|<!--City-state-->
}}
|Commonwealth realm |Commonwealth Realm=[[Commonwealth Realm]]
|League of Nations Mandate |League of Nations
|Mandate={{#if:{{{empire|}}}
| [[League of Nations mandate|Mandate]] of {{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }}
| [[League of Nations mandate]]
}}
|United Nations Trust Territory| UN Trust Territory
|Trust Territory=[[United Nations Trust Territories|Trust Territory]]<!--
-->{{#if:{{{empire|}}} | of {{#switch:{{{empire}}} |United Kingdom |UK=the [[United Kingdom]] |United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }} }}
|Protectorate=Protectorate of <!--
-->{{#if:{{{empire|}}}
|{{#switch:{{{empire}}}
|United Kingdom |UK=the [[United Kingdom]]
|United States |US |USA=the [[United States]] |#default={{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}}
}}
|whom? {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}
}}
|Client |Client state |Client State |Puppet |Puppet-state
|Puppet state={{#if:{{{empire|}}}
| {{#switch:{{{empire}}} |First French Empire |France=[[French client republic|Client]] of the [[First French Empire]] |#default=[[Puppet state]] of {{#ifexist:{{{empire}}}|[[{{{empire}}}]]|{{{empire}}}}} }}
| Puppet state ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}
}}
|Vassal={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[States of the Holy Roman Empire|State]] of the [[Holy Roman Empire]] {{#if:{{{year_end|}}}|{{#ifexpr:{{{year_end}}}>1806|(until 1806)}}|}} |#default=Vassal{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Fief={{#switch:{{{empire|}}} |#default=Fief{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Abbey={{#switch:{{{empire|}}} |Holy Roman Empire |HRE=[[Imperial Abbey]] of the [[Holy Roman Empire]] {{Main other|[[Category:Imperial abbeys|{{{common_name}}}]]}} |#default=Abbey{{#if:{{{empire|}}}| of {{{empire}}}| ''of whom?'' {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}}}} }}
|Satellite state |Satellite State
|Satellite= Satellite state of the [[Soviet Union]]
|Colony={{#switch:{{ucfirst:{{{empire}}}}}
|United Kingdom |UK |British Empire |Britain=[[Territorial evolution of the British Empire|British colony]]
|England=[[English overseas possessions|English colony]]
|France |First French Empire| French Empire=[[French colonial empire|French colony]]
|NL |Netherlands |The Netherlands=[[Dutch Empire|Dutch colony]]
|Belgium=[[Belgian colonial empire|Belgian colony]]
|Spain |Spanish Empire=[[Spanish Empire|Spanish colony]]
|Portugal=[[Portuguese Empire|Portuguese colony]]
|Germany |German Empire=[[German colonial empire|German colony]]
|Italy=[[Italian Empire|Italian colony]]
|Sweden=[[Swedish overseas colonies|Swedish colony]]
|Denmark=[[Danish colonial empire|Danish colony]]
|Norway=[[Norwegian Empire|Norwegian colony]]
|Russia=[[Russian Empire|Russian colony]]
|Japan=[[Empire of Japan|Japanese colony]]
|#default=Colony ({{#if:{{{empire|}}} |{{{empire}}}) |''of whom?'') {{#if:{{{_noautocat|<noinclude>yes</noinclude>}}}||[[Category:Former country articles requiring maintenance|S]]}} }}
}}
|Provisional Government |Provisional government
|Provisional=[[Provisional government]]
|Exiled Government |Exiled government
|Exile={{#if:{{{year_exile_start|}}}
| [[Government in exile|In exile]] {{#if:{{{year_exile_end|}}} |({{{year_exile_start}}}{{spaced ndash}}{{{year_exile_end}}}) |since {{{year_exile_start}}} }}
| [[Government in exile]]
}}
|#default={{{status}}}
}}
}}<noinclude>
{{documentation|content=
This subtemplate is used to simplify the code of {{tl|infobox country}}. It should not be used directly.
}}</noinclude>
4f904d43bb6c4d628d19a39a391cc105027b09bf
Template:Infobox country/styles.css
10
244
1266
543
2023-10-01T10:05:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country/styles.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.ib-country {
border-collapse: collapse;
line-height: 1.2em;
}
/* TODO split definitions to appropriate class names when live from HTML element */
.ib-country td,
.ib-country th {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.4em 0.6em;
}
.ib-country .mergedtoprow .infobox-header,
.ib-country .mergedtoprow .infobox-label,
.ib-country .mergedtoprow .infobox-data,
.ib-country .mergedtoprow .infobox-full-data,
.ib-country .mergedtoprow .infobox-below {
border-top: 1px solid #a2a9b1;
padding: 0.4em 0.6em 0.2em 0.6em;
}
.ib-country .mergedrow .infobox-label,
.ib-country .mergedrow .infobox-data,
.ib-country .mergedrow .infobox-full-data {
border: 0;
padding: 0 0.6em 0.2em 0.6em;
}
.ib-country .mergedbottomrow .infobox-label,
.ib-country .mergedbottomrow .infobox-data,
.ib-country .mergedbottomrow .infobox-full-data {
border-top: 0;
border-bottom: 1px solid #a2a9b1;
padding: 0 0.6em 0.4em 0.6em;
}
.ib-country .infobox-header {
text-align: left;
}
.ib-country .infobox-above {
font-size: 125%;
line-height: 1.2;
}
.ib-country-names {
padding-top: 0.25em;
font-weight: normal;
}
.ib-country-name-style {
display: inline;
}
.ib-country .infobox-image {
padding: 0.5em 0;
}
.ib-country-anthem {
border-top: 1px solid #a2a9b1;
padding-top: 0.5em;
margin-top: 0.5em;
}
.ib-country-map-caption {
position: relative;
top: 0.3em;
}
.ib-country-largest,
.ib-country-lang {
font-weight: normal;
}
.ib-country-ethnic,
.ib-country-religion,
.ib-country-sovereignty {
font-weight: normal;
display: inline;
}
.ib-country-fake-li {
text-indent: -0.9em;
margin-left: 1.2em;
font-weight: normal;
}
.ib-country-fake-li2 {
text-indent: 0.5em;
margin-left: 1em;
font-weight: normal;
}
.ib-country-website {
line-height: 11pt;
}
.ib-country-map-caption3 {
position: relative;
top: 0.3em;
}
.ib-country-fn {
text-align: left;
margin: 0 auto;
}
.ib-country-fn-alpha {
list-style-type: lower-alpha;
margin-left: 1em;
}
.ib-country-fn-num {
margin-left: 1em;
}
3112a323cf9739e86afd52812cd38e196abfae7d
Template:Lua/doc
10
254
1268
564
2023-10-01T10:05:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lua/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Template shortcut|Lua talk}}
{{Lua|Module:Lua banner}}
<!-- Categories go at the bottom of this page, and interwikis go on Wikidata. -->
{{for|template to indicate [[Luba-Kasai language]] words|Template:Lang-lua}}
This template is used to indicate that a template uses one or more [[Lua (programming language)|Lua]] modules (pages in the <code>Module:</code> namespace). It is placed at the top of the template's /doc page. It automatically adds a floating right notification box, and it adds the template to [[:Category:Lua-based templates]] or to one of its subcategories.
== Usage ==
; Basic : {{tlx|Lua|''module name''}}
; All parameters : {{tlx|Lua|''module 1''|''module 2''|''module 3''|...|category{{=}}''custom category''|nocat{{=}}''true''}}
The first module name is required.
== Examples ==
* {{tlx|Lua|Module:Example}}
{{Lua|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua|Module:Example|Module:Example}}
{{Lua|Module:Example|Module:Example|nocat=true}}
{{clear}}
* {{tlx|Lua}}
{{Lua|nocat=true}}
{{clear}}
== Categorisation ==
===Template category===
This template adds pages to [[:Category:Lua-based templates]] if the page is in the template namespace, and it is not on any of the subpages /doc, /sandbox, /sandbox2 or /testcases. You can specify a different category with the {{para|category}} parameter, e.g. {{para|category|Lua String-based templates}}.
Some modules have a default category other than [[:Category:Lua-based templates]]:
* [[Module:String]] has the default category [[:Category:Templates based on the String Lua module]].
* [[Module:Math]] has the default category [[:Category:Templates based on the Math Lua module]].
* [[Module:BaseConvert]] has the default category [[:Category:Templates based on the BaseConvert Lua module]].
* [[Module:Citation/CS1]] has the default category [[:Category:Templates based on the Citation/CS1 Lua module]].
===Error category===
If no modules are specified, the transcluded page will be added to [[:Category:Lua templates with errors]].
===Category suppression===
To suppress all categorisation, use {{para|nocat|true}}. (As well as "true", the values "yes", "y", and "1" will also work.)
== TemplateData ==
{{Format TemplateData|TNT=Lua banner}}
== See also ==
* [[Wikipedia:Lua]]
* {{tl|module rating}}
* {{tl|Uses TemplateStyles}}
<includeonly>{{Sandbox other|
| <!-- Categories go here, and interwikis go on Wikidata. -->
[[Category:Lua-based templates| ]]
[[Category:Template namespace templates]]
}}</includeonly>
a0a237a34ba98213650e4c11064bd4c8f944fcc6
Module:Lua banner/doc
828
467
1270
1019
2023-10-01T10:06:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lua_banner/doc]]
wikitext
text/x-wiki
{{high use}}
{{Lua|Module:Yesno|Module:List|Module:TableTools|Module:Message box}}
This module implements the {{tl|lua}} template.
== Usage from wikitext ==
This module cannot be used directly from wikitext. It can only be used through the {{tl|lua}} template. Please see the template page for documentation.
== Usage from Lua modules ==
To use this module from other Lua modules, first load the module.
<syntaxhighlight lang="lua">
local mLuaBanner = require('Module:Lua banner')
</syntaxhighlight>
You can then generate a side box using the _main function.
<syntaxhighlight lang="lua">
mLuaBanner._main(args)
</syntaxhighlight>
The <var>args</var> variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{tl|lua}} template documentation.
== Tracking category ==
* {{clc|Lua templates with errors}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Modules that add a tracking category]]
}}</includeonly>
864df985eac89c7dc7d6168d9235ff11b9f13b47
Philippines
0
437
1271
985
2023-10-01T10:07:31Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = Official language<br/>{{nobold|and national language}}
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}</div>
| life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946
| official_languages = Tagalog, Spanish, English
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| government_type = Devolved presidential constitutional dependency
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| legislature = National Assembly
| currency = Philippine Peso
| date_format = MM/DD/YYYY
| drives_on = left
| calling_code = +63
| iso3166 = PH
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
==History==
===Pre-Colonial Period (pre-1521)===
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighboring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
=== Spanish Colonial Period (1521-1898)===
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died. After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
fa2aeed5405960a8add00381e9ca3f5ab24a7c59
Template:Efn
10
563
1273
1272
2023-10-01T10:10:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Efn]]
wikitext
text/x-wiki
<includeonly>{{#if:{{{name|}}}
|{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|name={{{name|}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}
}}
|{{#tag:ref|{{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
6ed4e5c148014b92a23bd51d16f3180881bb876c
Template:Reflist
10
564
1275
1274
2023-10-01T10:10:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Reflist]]
wikitext
text/x-wiki
<templatestyles src="Reflist/styles.css" /><div class="reflist <!--
-->{{#if:{{{1|}}}{{{colwidth|}}}|reflist-columns references-column-width}} <!--
-->{{#switch:{{{liststyle|{{{group|}}}}}}|upper-alpha|upper-roman|lower-alpha|lower-greek|lower-roman=reflist-{{{liststyle|{{{group}}}}}}}} <!--
-->{{#if:{{{1|}}}|{{#iferror:{{#ifexpr: {{{1|1}}} > 1 }}||{{#switch:{{{1|}}}|1=|2=reflist-columns-2|#default=reflist-columns-3}} }}}}" <!-- end class
-->{{#if: {{{1|}}}<!-- start style -->
| {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} |style="column-width: {{{1}}};"}}
| {{#if: {{{colwidth|}}}|style="column-width: {{{colwidth}}};"}}
}}>
{{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude>
{{Documentation}}
</noinclude>
8c65cc88272db6c0f5cf2b49f84d3e460e60ee5f
Template:Reflist/styles.css
10
565
1277
1276
2023-10-01T10:10:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Reflist/styles.css]]
sanitized-css
text/css
/* {{pp|small=yes}} */
/* can we remove the font size declarations? .references gets a font-size in
* common.css that is always 90, and there is nothing else in reflist out in
* the wild. May affect column sizes.
*/
.reflist {
font-size: 90%; /* Default font-size */
margin-bottom: 0.5em;
list-style-type: decimal;
}
.reflist .references {
font-size: 100%; /* Reset font-size when nested in div.reflist */
margin-bottom: 0; /* Avoid double margin when nested in div.reflist */
list-style-type: inherit; /* Enable custom list style types */
}
/* columns-2 and columns-3 are legacy for "2 or more" column view from when the
* template was implemented with column-count.
*/
.reflist-columns-2 {
column-width: 30em;
}
.reflist-columns-3 {
column-width: 25em;
}
/* Reset top margin for lists embedded in columns */
.reflist-columns {
margin-top: 0.3em;
}
.reflist-columns ol {
margin-top: 0;
}
/* Avoid elements breaking between columns */
.reflist-columns li {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
.reflist-upper-alpha {
list-style-type: upper-alpha;
}
.reflist-upper-roman {
list-style-type: upper-roman;
}
.reflist-lower-alpha {
list-style-type: lower-alpha;
}
.reflist-lower-greek {
list-style-type: lower-greek;
}
.reflist-lower-roman {
list-style-type: lower-roman;
}
531a26d48f0e7826c61f764cfb7d5fb200032c34
Template:Anchor
10
566
1279
1278
2023-10-01T10:10:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Anchor]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:anchor|main}}<noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
7d65122552007ac959072bddfa6f723296c81998
Module:Anchor
828
567
1281
1280
2023-10-01T10:10:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Anchor]]
Scribunto
text/plain
-- This module implements {{anchor}}.
local getArgs = require('Module:Arguments').getArgs
local tableTools = require('Module:TableTools')
local p = {}
function p.main(frame)
-- Get the positional arguments from #invoke, remove any nil values,
-- and pass them to p._main.
local args = getArgs(frame)
local argArray = tableTools.compressSparseArray(args)
return p._main(unpack(argArray))
end
function p._main(...)
-- Generate the list of anchors.
local anchors = {...}
local ret = {}
for _, anchor in ipairs(anchors) do
ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>'
end
return table.concat(ret)
end
return p
e41d3f5d2f2840528aebb9bac719873540fcb3b8
Template:Code
10
229
1283
517
2023-10-01T10:10:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Code]]
wikitext
text/x-wiki
{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang={{{lang|{{{2|text}}}}}}|class={{{class|}}}|id={{{id|}}}|style={{{style|}}}|inline=1}}<noinclude>{{documentation}}[[Category:Inline talk templates]]</noinclude>
ec6759b67bec30b7f31c3a0feecdd2a4775ee0cf
Template:For loop
10
568
1285
1284
2023-10-01T10:10:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:For_loop]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:For loop|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
12b7b7010fe32f888e21bcdfa6a904fc8a925437
Module:For loop
828
569
1287
1286
2023-10-01T10:10:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:For_loop]]
Scribunto
text/plain
-- This module implements {{for loop}}.
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}
function p.main(frame)
local args = getArgs(frame, {
trim = false,
removeBlanks = false
})
return p._main(args)
end
function p._main(args)
local template = args['call'] or 'void'
local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting()
local variableParam = args.pv
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters
local variableValPrefix = args.prefix or ''
local variableValPostfix = args.postfix or ''
local sep = args[1] or ''
local constantArgs = p.getConstants(args)
local variableVals = p.getVariableVals(args)
local result = ''
local addSeparator = false;
for _, v in ipairs(variableVals) do
v = mw.text.trim(v)
if #v > 0 or not yesno(args.skipBlanks) then
if addSeparator then
result = result .. sep
end
addSeparator = true;
local targs = constantArgs
targs[variableParam] = variableValPrefix .. v .. variableValPostfix
if calltemplates then
local output = p.callTemplate(template, targs)
if #mw.text.trim(output) == 0 then
addSeparator = false
end
result = result .. output
else
local makeTemplate = require('Module:Template invocation').invocation
result = result .. makeTemplate(template, targs)
end
end
end
return result
end
function p.getConstants(args)
local constantArgNums = p.getArgNums(args, 'pc', 'n')
local constantArgs = {}
for _, num in ipairs(constantArgNums) do
local keyArg = 'pc' .. tostring(num) .. 'n'
local valArg = 'pc' .. tostring(num) .. 'v'
local key = args[keyArg]
key = tonumber(key) or key
local value = args[valArg]
constantArgs[key] = value
end
return constantArgs
end
function p.getVariableVals(args)
local variableVals = {}
if args.start or args.stop or args.by then
if args[2] then
error("Both start/stop/by and numbered parameters specified")
end
local start = tonumber(args.start or 1)
local stop = tonumber(args.stop or 1)
local by = tonumber(args.by or 1)
for i = start, stop, by do
variableVals [#variableVals + 1] = i
end
else
for i, v in ipairs(args) do
if i ~= 1 then
variableVals[i - 1] = v
end
end
end
return variableVals
end
function p.getArgNums(args, prefix, suffix)
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix and suffix.
local nums = {}
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'
for k, _ in pairs(args) do
local num = tostring(k):match(pattern)
if num then
nums[#nums + 1] = tonumber(num)
end
end
table.sort(nums)
return nums
end
function p.callTemplate(template, targs)
return mw.getCurrentFrame():expandTemplate{title = template, args = targs}
end
return p
4ed4682b1fd3fbf2bf0836b46dd19bc0363d40e2
Template:Notelist
10
570
1289
1288
2023-10-01T10:10:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Notelist]]
wikitext
text/x-wiki
{{reflist|{{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group={{#switch: {{{group|}}}
| note
| upper-alpha
| upper-roman
| lower-alpha
| lower-greek
| lower-roman = {{{group|}}}
| #default = lower-alpha
}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using notelist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Notelist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | notes | refs }}<noinclude>
{{documentation}}</noinclude>
093e937792d01a5dfc9dd3b5e5deda6b48d0f2be
Template:!-
10
571
1291
1290
2023-10-01T10:10:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:!-]]
wikitext
text/x-wiki
|-<noinclude>
{{documentation}}
</noinclude>
19a1b27b5273caa6fd83a1208fb704afa9ee7c04
Template:!!
10
572
1293
1292
2023-10-01T10:10:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:!!]]
wikitext
text/x-wiki
||<noinclude>
{{documentation}}
</noinclude>
cfbaaca3cb3edae590f75b87fb775d1be21774a4
Template:Tag
10
573
1295
1294
2023-10-01T10:10:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tag]]
wikitext
text/x-wiki
<code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!--
Opening tag
-->{{#switch:{{{2|pair}}}
|c|close =
|e|empty|s|single|v|void
|o|open
|p|pair = <{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}| {{{params|{{{attribs}}}}}}}}
}}<!--
Content between tags
-->{{#switch:{{{2|pair}}}
|c|close = {{{content|}}}
|e|empty|s|single|v|void =  />
|o|open = >{{{content|}}}
|p|pair = {{#ifeq:{{{1|tag}}}|!--||>}}{{{content|...}}}
}}<!--
Closing tag
-->{{#switch:{{{2|pair}}}
|e|empty|s|single|v|void
|o|open =
|c|close
|p|pair = {{#ifeq:{{{1|tag}}}|!--|-->|</{{{1|tag}}}>}}
}}<!--
--></code><noinclude>
{{Documentation}}
</noinclude>
eae208bc1612c834de697fa3ee9b343966cf8602
Template:Efn-lr
10
574
1297
1296
2023-10-01T10:10:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Efn-lr]]
wikitext
text/x-wiki
<includeonly>{{efn|name={{{name|}}}|group=lower-roman|reference={{{1|{{{reference|{{{content|{{{text|}}}}}}}}}}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
a84a2c4c65dd07813f0d83c1e99364ae256e13d3
Template:Notelist-lr
10
575
1299
1298
2023-10-01T10:10:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Notelist-lr]]
wikitext
text/x-wiki
<includeonly>{{notelist|colwidth={{{1|{{{colwidth|}}}}}}|refs={{{refs|{{{notes|}}}}}}|group=lower-roman}}</includeonly><noinclude>
{{documentation}}
</noinclude>
4f00350b2a4eb03726e2440b940be93d06bec3be
Template:Dummy reference
10
576
1301
1300
2023-10-01T10:10:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Dummy_reference]]
wikitext
text/x-wiki
<sup class="reference nowrap ltr" style="color:#002bb8;">[{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|<span style="font-style:italic">}}{{#if:{{{txtcol|}}}|<span style="color:{{{txtcol|}}}">}}{{{1|1}}}{{#if:{{{txtcol|}}}|</span>}}{{#ifeq:{{yes/no|{{{txtital|}}}}}|yes|</span>}}]</sup><noinclude>
{{documentation}}
</noinclude>
7be6798eb28af3f887fa775b50dc87e0c575cde9
Template:Yes/no
10
577
1303
1302
2023-10-01T10:10:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Yes/no]]
wikitext
text/x-wiki
#REDIRECT [[Template:Yesno]]
80e458cd4d851471d13896c26ecf96ce6dcdd579
Template:Aka
10
578
1305
1304
2023-10-01T10:10:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Aka]]
wikitext
text/x-wiki
<abbr title="also known as">{{#if:{{{AKA|}}}{{{uc|}}}|AKA|a.k.a.}}</abbr><noinclude>
{{documentation}}
</noinclude>
78a22d82a9beabc017751e258efef369bd2bf13f
Template:Format item
10
579
1307
1306
2023-10-01T10:10:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Format_item]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Item|format}}</includeonly><noinclude>
{{doc}}
</noinclude>
0de34fe93b7513b034123ce1c532fd0f2df896dc
Template:Item
10
580
1309
1308
2023-10-01T10:10:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Item]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Item|pack}}</includeonly><noinclude>
{{doc}}
</noinclude>
2a8d49a45be839260ad83d33fa73c804d0a39e55
Template:Markup
10
581
1311
1310
2023-10-01T10:10:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Markup]]
wikitext
text/x-wiki
<includeonly>{| style="{{#if:{{{width|}}}|width:{{{width}}};}} margin-top:0;margin-left:{{{margin-left|{{{margin|0}}}}}}; border-width:medium; padding:0; {{{style|}}}"
{{#if:{{{title|}}} |{{!}}+ '''{{{title}}}'''}}
{{#if:{{{noheaders|}}}{{{notitle|}}} |
|! scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col1headerstyle|}}}"{{!}} {{{col1|{{{t1|Markup}}}}}} {{!!}}<!--
-->scope="col" style="width:50%;{{{colheaderstyle|}}}{{{col2headerstyle|}}}"{{!}} {{{col2|{{{t2|Renders as}}}}}}
}}<!--
-->{{For loop||call=format item|pc1n=template|pc1v=Markup/row|pc2n=c1style|pc2v={{{col1style|{{{codestyle|{{{markupstyle|}}}}}}}}}|pc3n=c2style|pc3v={{{col2style|{{{outputstyle|}}}}}}|pv=item|{{item|c1={{{1|}}}|c2={{{2|}}}}}|{{item|c1={{{3|}}}|c2={{{4|}}}}}|{{item|c1={{{5|}}}|c2={{{6|}}}}}|{{item|c1={{{7|}}}|c2={{{8|}}}}}|{{item|c1={{{9|}}}|c2={{{10|}}}}}|{{item|c1={{{11|}}}|c2={{{12|}}}}}|{{item|c1={{{13|}}}|c2={{{14|}}}}}|{{item|c1={{{15|}}}|c2={{{16|}}}}}|{{item|c1={{{17|}}}|c2={{{18|}}}}}|{{item|c1={{{19|}}}|c2={{{20|}}}}}|{{item|c1={{{21|}}}|c2={{{22|}}}}}|{{item|c1={{{23|}}}|c2={{{24|}}}}}|{{item|c1={{{25|}}}|c2={{{26|}}}}}|{{item|c1={{{27|}}}|c2={{{28|}}}}}|{{item|c1={{{29|}}}|c2={{{30|}}}}}|{{item|c1={{{31|}}}|c2={{{32|}}}}}|{{item|c1={{{33|}}}|c2={{{34|}}}}}|{{item|c1={{{35|}}}|c2={{{36|}}}}}|{{item|c1={{{37|}}}|c2={{{38|}}}}}|{{item|c1={{{39|}}}|c2={{{40|}}}}}}}
|-
|style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"|
|style="border-width:1px;border-style: none none none;border-color:#ddd; padding:5px; vertical-align:top;"|
|}</includeonly><noinclude>
{{Documentation}}
</noinclude>
8f9e78df3cd9801aa6cb36c463195df132394e9a
Template:Markup/row
10
582
1313
1312
2023-10-01T10:10:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Markup/row]]
wikitext
text/x-wiki
<noinclude>{| style="border-width:medium;"</noinclude><includeonly>{{#if:{{{c1|value}}}| 
{{!-}}
{{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:9px 5px 5px; vertical-align:top;"{{!}} <!--
-->{{#tag:pre |{{{c1|[markup]}}}|style="margin:0;border:none;padding:0; word-wrap:break-word; white-space:-moz-pre-wrap;white-space:-o-pre-wrap;white-space:-pre-wrap;white-space:pre-wrap; {{{c1style|}}}"}}
{{!}}style{{=}}"background:#f8f9fa ; border:1px solid #eaecf0 ; padding:5px; vertical-align:top;"{{!}} <!--
--><div style="{{{c2style|}}}">
{{{c2|[''rendering'']}}}
</div>
}}</includeonly><!--
--><noinclude>
|-
|style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"|
|style="border-width:1px;border-style:solid none none none;border-color:#ddd; padding:5px; vertical-align:text-top;"|
|-
|}</noinclude>
2636425c7478cebf61528d5eb4cab52b8e695ec9
Module:Item
828
583
1315
1314
2023-10-01T10:10:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Item]]
Scribunto
text/plain
local p = {}
local function escape(str)
return str:gsub("[|\\]", function (c) return string.format("\\%03d", c:byte()) end)
end
local function unescape(str)
return str:gsub("\\(%d%d%d)", function (d) return string.char(d) end)
end
-- Implements [[Template:Item]]
function p.pack(frame)
local parent = frame:getParent()
local result = ''
for key, value in pairs(parent.args) do
result = result .. "|" .. escape(tostring(key)) .. "|" .. escape(value)
end
return result .. "|";
end
local function unpack(str)
local result = { }
for key, value in str:gfind("|([^|]*)|([^|]*)") do
result[unescape(key)] = unescape(value)
end
return result
end
-- Implements [[Template:Component]]
function p.component(frame)
return unpack(frame.args[1])[frame.args[2]]
end
local function getItems(frame)
return frame:getParent().args
end
local function invert(tbl)
local result = { }
for key, value in pairs(tbl) do
result[value] = key
end
return result
end
-- Add args into item as appropriate (see [[Template:Format item]])
local function addArgs(
item, -- unpacked item to modify
args, -- arguments for adding into item
ignore, -- pass in invert{keys to ignore}
shift -- for numbered arguments, args[key+shift] is assigned to item[key]
-- returns: item
)
for key, value in pairs(args) do
if not ignore[key] then
local _, _, paramKey = string.find(key, "^param (.*)")
local _, _, importantKey = string.find(key, "^important (.*)")
paramKey = paramKey or importantKey or key
if shift and type(paramKey) == "number" then
paramKey = paramKey - shift
if paramKey < 1 then paramKey = nil end
end
if paramKey and (importantKey or item[paramKey] == nil) then
item[paramKey] = value
end
end
end
return item
end
-- Implements [[Template:Format item]]
function p.format(frame)
local args = frame:getParent().args
local ignore = invert{ "template", "item" }
local templateArgs = addArgs(unpack(args.item), args, ignore)
return frame:expandTemplate{ title = args.template, args = templateArgs }
end
-- See [[Template:Item#Format each item using a template]]
function p.each(frame)
local args = frame.args
local items = getItems(frame)
local separator = args[1] or ""
local prepend = args[2] or ""
local append = args[3] or ""
local ignore = invert{ "template" }
local shift = 3
local result = ""
for i, item in ipairs(items) do
local templateArgs = addArgs(unpack(item), args, ignore, shift)
result = result .. prepend .. frame:expandTemplate{ title = args.template, args = templateArgs } .. append
if items[i + 1] then
result = result .. separator
end
end
return result
end
-- See [[Template:Item#Gather given parameter from all items]]
function p.gather(frame)
local args = frame.args
local items = getItems(frame)
local parameter = args.parameter or "1"
local templateArgs = { }
for i, item in ipairs(items) do
templateArgs[i] = unpack(item)[parameter]
end
return frame:expandTemplate{ title = args.template, args = templateArgs }
end
return p
46e61b1549d18c301bcc79ecd120a0aa790f8894
Template:Dummy ref
10
584
1317
1316
2023-10-01T10:10:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Dummy_ref]]
wikitext
text/x-wiki
#REDIRECT [[Template:Dummy reference]]
{{Redirect category shell|{{R from short name}}}}
51e7e4d220e438d9b8e1e1ee2c7b8d4f91fb7569
Module:Transclusion count/data/E
828
585
1319
1318
2023-10-01T10:10:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/E]]
Scribunto
text/plain
return {
["EB1911"] = 12000,
["EB1911_poster"] = 3500,
["ECU"] = 2300,
["EC_number"] = 4000,
["EGY"] = 3300,
["EHAK"] = 3300,
["ENFA"] = 3600,
["ENG"] = 8600,
["ENGLs"] = 3100,
["EOL"] = 2500,
["ER_to_list_entry"] = 5800,
["ESP"] = 15000,
["ESPNcricinfo"] = 3500,
["EST"] = 4200,
["Earthquake_magnitude"] = 2100,
["Eastern_name_order"] = 4400,
["Ebicite"] = 7100,
["Ec"] = 28000,
["Ed"] = 5900,
["Ed_right"] = 3000,
["Edit"] = 702000,
["EditAtWikidata"] = 763000,
["EditOnWikidata"] = 36000,
["Edit_COI"] = 8100,
["Edit_COI/answered"] = 5100,
["Edit_COI/declined"] = 3200,
["Edit_a_taxon"] = 108000,
["Edit_conflict"] = 31000,
["Edit_count_link"] = 7800,
["Edit_extended-protected"] = 3600,
["Edit_fully-protected"] = 7300,
["Edit_on_Wikidata"] = 41000,
["Edit_protected"] = 3300,
["Edit_semi-protected"] = 35000,
["Edit_summary_field"] = 9900,
["Edit_summary_field/OOUI"] = 11000,
["Edit_taxonomy"] = 371000,
["Edit_template-protected"] = 4100,
["Editcount"] = 3000,
["Editnotice"] = 16000,
["Editnotice/notice"] = 13000,
["Editnotice_for_lists_of_people"] = 2500,
["EduBase"] = 4500,
["Educational_assignment"] = 4000,
["Efn"] = 181000,
["Efn-lr"] = 2600,
["Efn-ua"] = 4300,
["Efs_player"] = 5400,
["Efs_start"] = 5500,
["Election_box_2-party-preferred"] = 2300,
["Election_box_2pp"] = 2300,
["Election_box_begin"] = 31000,
["Election_box_begin_no_change"] = 14000,
["Election_box_candidate"] = 7000,
["Election_box_candidate_AU_party"] = 3500,
["Election_box_candidate_no_change"] = 2700,
["Election_box_candidate_with_party_link"] = 26000,
["Election_box_candidate_with_party_link_no_change"] = 14000,
["Election_box_end"] = 44000,
["Election_box_formal"] = 3500,
["Election_box_gain_with_party_link"] = 11000,
["Election_box_gain_with_party_link_no_swing"] = 2100,
["Election_box_hold_AU_party"] = 2900,
["Election_box_hold_with_party_link"] = 15000,
["Election_box_hold_with_party_link_no_change"] = 4700,
["Election_box_hold_with_party_link_no_swing"] = 4300,
["Election_box_hold_with_party_link_without_swing"] = 2100,
["Election_box_informal"] = 3900,
["Election_box_majority"] = 19000,
["Election_box_new_seat_win"] = 5000,
["Election_box_registered_electors"] = 6100,
["Election_box_total"] = 3200,
["Election_box_total_no_change"] = 12000,
["Election_box_turnout"] = 25000,
["Election_box_turnout_no_change"] = 2200,
["Election_box_winning_candidate_with_party_link"] = 18000,
["Election_box_winning_candidate_with_party_link_no_change"] = 14000,
["Election_results"] = 8000,
["Election_summary_begin"] = 4000,
["Election_summary_party"] = 4000,
["Election_table"] = 2500,
["Election_table/category"] = 2500,
["Elo_ranking"] = 3900,
["Elo_rating"] = 3900,
["Em"] = 1450000,
["Em_dash"] = 13000,
["Emblem_table"] = 3600,
["Emdash"] = 3000,
["Emmy_Awards/color"] = 4300,
["Empty_category"] = 3600,
["Empty_section"] = 30000,
["En"] = 3500,
["En_dash"] = 31000,
["En_dash_range"] = 177000,
["Encodefirst"] = 700000,
["End"] = 107000,
["End_box"] = 14000,
["End_date"] = 82000,
["End_date_and_age"] = 6700,
["End_of_course_week"] = 6300,
["End_of_students_table"] = 5300,
["Endangered_Languages_Project"] = 11000,
["Endash"] = 7600,
["Endflatlist"] = 305000,
["Endorse"] = 5100,
["Endplainlist"] = 34000,
["English_anime_licensee"] = 4200,
["English_football_updater"] = 3200,
["English_manga_publisher"] = 2300,
["Engvar"] = 9500,
["EngvarB"] = 105000,
["Ensure_AAA_contrast_ratio"] = 15000,
["Ensure_AA_contrast_ratio"] = 5000,
["Enum"] = 39000,
["Enzymes"] = 6200,
["Episode_list"] = 20000,
["Episode_list/sublist"] = 5500,
["Episode_table"] = 18000,
["Error"] = 22000,
["Error-small"] = 13000,
["ErrorBar2"] = 4600,
["Esc"] = 2400,
["Esccnty"] = 2700,
["Esoteric_file"] = 3400,
["Essay"] = 5100,
["Essay-like"] = 4500,
["EstcatContinent"] = 3200,
["EstcatContinent/core"] = 3200,
["EstcatCountry"] = 28000,
["EstcatCountry/core"] = 28000,
["EstcatCountryDecade"] = 5500,
["EstcatCountryDecade/core"] = 5500,
["EstcatUSstate"] = 10000,
["EstcatUSstate/core"] = 10000,
["Estonia_To-do"] = 22000,
["Ethnologue18"] = 3800,
["Europe_topic"] = 9900,
["Excerpt"] = 6300,
["Excerpt/styles.css"] = 6300,
["ExistNotRedirect"] = 50000,
["Expand_French"] = 17000,
["Expand_German"] = 16000,
["Expand_Italian"] = 4300,
["Expand_Japanese"] = 3700,
["Expand_Russian"] = 3600,
["Expand_Spanish"] = 7300,
["Expand_language"] = 78000,
["Expand_list"] = 11000,
["Expand_section"] = 38000,
["Expand_wikitext"] = 102000,
["Explain"] = 2700,
["Extended_football_squad_player"] = 6400,
["Extended_football_squad_start"] = 6400,
["External_links"] = 3600,
["External_media"] = 11000,
["External_music_video"] = 23000,
["Extinct"] = 12000,
["Extra_album_cover"] = 8300,
["Extra_chronology"] = 15000,
["Extract"] = 8200,
["Module:EditAtWikidata"] = 1930000,
["Module:Effective_protection_expiry"] = 54000,
["Module:Effective_protection_level"] = 56000,
["Module:Election_results"] = 8000,
["Module:Endangered_Languages_Project"] = 11000,
["Module:English_variant_notice"] = 57000,
["Module:Engvar"] = 11000,
["Module:Episode_list"] = 26000,
["Module:Episode_table"] = 19000,
["Module:Error"] = 40000,
["Module:Escape"] = 11000,
["Module:Excerpt"] = 6300,
["Module:Excerpt/config"] = 6300,
["Module:Excerpt/portals"] = 4600,
["Module:ExistNotRedirect"] = 50000,
["Module:Expand_wikitext"] = 102000,
["Module:Exponential_search"] = 617000,
["Module:External_links"] = 66000,
["Module:External_links/conf"] = 66000,
["Module:External_links/conf/Sports"] = 66000,
}
bdca9b06054258d1db712dc02d21aa4fa46d74c2
Help:Footnotes
12
586
1321
1320
2023-10-01T10:10:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Help:Footnotes]]
wikitext
text/x-wiki
<noinclude>{{pp-semi-indef}}</noinclude>{{short description|Wikipedia help article}}
{{For|the official guideline on citing sources|Wikipedia:Citing sources}}
{{For|help with citation templates|Help:Citation Style 1}}
{{Redirect|WP:FN|the fringe theories noticeboard|Wikipedia:Fringe theories/Noticeboard}}
{{Redirect|WP:NOTES|hatnotes|Wikipedia:Hatnote|article layout of footnotes|MOS:NOTES|musical notes|Wikipedia:Manual of Style/Music#Images and notation}}
{{Wikipedia how to|H:FOOT|WP:FOOTNOTES|H:FN}}
This page explains how to create the '''Footnotes''' section for Wikipedia articles. In this context, the word "Footnotes" refers to the Wikipedia-specific manner of documenting an article's sources and providing tangential information, and should not be confused with the general concept of [[Note (typography)|footnotes]]. This how-to does not cover the formatting of citations within the Footnotes section, which is reviewed in [[Wikipedia:Citing sources|Citing sources]].
Footnotes are used most commonly to provide:
* [[Wikipedia:Citing sources|references (bibliographic citations) to reliable sources]],
* [[Help:explanatory notes|explanatory information]], or
* source information for tables and other elements.
Footnotes or [[Help:Shortened footnotes|shortened footnotes]] may be used at the editor's discretion in accordance with the guideline on [[WP:CITEVAR|Variation in citation methods]].
Only certain types of material on the English Wikipedia are required to have an inline citation. There is [[Wikipedia:Inline citation#Citation density|no requirement to provide a citation for every sentence]], because multiple sentences may be supported by the same footnote. For advice on which material should be cited, see the guidelines on [[WP:MINREF|When you must use inline citations]], the [[Wikipedia:Good article criteria|Good article criteria]] and [[Wikipedia:when to cite|When to cite]]. For advice on how to organize and format bibliographic citations, see the guideline on [[Wikipedia:Citing sources|Citing sources]] and examples of [[Wikipedia:Citation templates#Examples|Citation templates]].
Footnotes are created using the {{cite.php}} software extension. This extension adds the HTML-like elements {{tag|ref}}, {{tag|references|s}} and {{tag|references}}. The elements are also used in a number of templates; for example, it is becoming more common to use {{tl|reflist}} rather than {{tag|references|s}} as it can style the reference list.
==Overview==
{{VE documentation|style=width: 25%; font-size: 87%; float:right}}<!--This is because the visual editor is even more limited than the standard Wikitext editor-->
The Footnotes system shows two elements on the page:
* A '''Footnote marker''' is displayed in the article's content as a bracketed, superscripted number, letter, or word. Examples shown respectively are: {{dummy ref}}{{dummy ref|a}}{{dummy ref|Note 1}}. This footnote label is linked to the full footnote. Clicking on the footnote marker jumps the page down to the footnote and highlights the citation. If you are using the desktop site and have Javascript enabled, then hovering your cursor over a footnote marker (or touching it on touch devices) will show a pop-up box containing the footnote.
* A '''Footnote''' displays the full citation for the source. Together the footnotes are displayed in an ordered list wherever the reference list markup {{tl|reflist}} is placed. Each entry begins with the footnote label in plain text. The entire reference list is formatted in a slightly smaller font.
:Each successive footnote label is automatically incremented. Thus the first footnote marker would be {{dummy ref}}, the second would be {{dummy ref|2}} and so on. Custom labels are also incremented: {{dummy ref|a}}{{dummy ref|b}}{{dummy ref|c}}, {{dummy ref|Note 1}} {{dummy ref|Note 2}} {{dummy ref|Note 3}}.
:For a single use footnote, the label is followed by a caret (^) that is a backlink to the matching footnote marker. For example:
{{dummy footnote|margin=5em}}
:If a named footnote is used in the text multiple times, then the footnote has multiple backlinks shown as letters:
{{dummy footnote|2|a b c|margin=5em}}
:Clicking on the backlink or pressing {{keypress|Alt|←}} returns to the footnote marker.
===Footnotes in action===
The superscript numeral "1" in square brackets at the end of this sentence is an example of a footnote marker.<ref>This is a footnote that contains a citation or note.</ref>
{{reflist}}
{{anchor|Footnote markers: the basics}}
==Footnotes: the basics==
{{See also|Help:Reftags}}
To create the footnote marker, determine the point in the page content where the marker is desired and enter the markup with the citation or note inside the {{tag|ref}} tags. For example:
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
The {{tl|reflist}} template will be explained in the next section.
The content inside the {{tag|ref}} will show in the reference list. The ref tags can be added anywhere a citation or note is needed. There must be content inside the tags, else an error will show.
===Where to place ref tags===
Ref tags should follow any punctuation (usually a period), not precede it; see [[WP:REFPUNC]]. There should be no space between the punctuation and the tag:
{{markup
|<nowiki>...text.<ref>Content of the reference</ref>
{{reflist}}</nowiki>
|...text.<ref>Content of the reference</ref> {{xt|Right}}
{{reflist}}
|<nowiki>...text<ref>Content of the reference</ref>.
{{reflist}}</nowiki>
|...text<ref>Content of the reference</ref>. {{!xt|Wrong (tag before punctuation)}}
{{reflist}}
|<nowiki>...text. <ref>Content of the reference</ref>
{{reflist}}</nowiki>
|...text. <ref>Content of the reference</ref> {{!xt|Wrong (space before tag)}}
{{reflist}}
}}
===Formatting ref tags===
The content of the ref tags can be formatted using most wiki markup or HTML markup, although techniques such as the [[Help:Pipe trick|pipe trick]] and [[Help:Substitution|template substitution]] will not work in footnotes. For example:
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
The ref tag content may also contain an internal or external link:
{{markup
|<nowiki>This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}</nowiki>
|This is page content.<ref>''[http://www.example.org LibreOffice For Starters]'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{reflist}}
}}
{{MediaWiki URL rules}}
==Reference lists: the basics==
Once any number of footnotes have been inserted into the content, the reference list must be generated. For the basic reference list, add {{tl|reflist}} wherever the list is desired. Once the page is published and viewed, the footnotes will be automatically generated and numbered and the reference list will be generated. The main reference list is placed in a separate section, usually titled "References", "Notes" or the like.
{{markup
|<nowiki>This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
==References==
{{reflist}}</nowiki>
|This is page content.<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref>
{{fake heading|sub=2|References}}
{{reflist}}
}}
'''Notes'''
{{shortcut|HELP:MULTIREF}}
* In some cases, a page has more than one reference list. Until 2014, multiple uses of {{tl|reflist}} on the same page required use of a {{para|close}} parameter; that bug has been fixed and the{{para|close}} parameter may safely be removed.
*When editing, {{tag|references|s}} may be seen instead of {{tl|reflist}}. This will automatically display the references in multiple columns, but {{tag|references|s}} does not offer the other advanced features of {{tl|reflist}}.
{{anchor|Naming a ref tag so it can be used more than once|Footnote markers: using a source more than once}}
==Footnotes: using a source more than once==
{{Shortcut|WP:REFNAME|WP:NAMEDREFS}}
{{Anchor|Reference name (naming a ref tag so it can be used more than once)}}
{{Anchor|WP:NAMEDREF}} <!-- from WP:NAMEDREFS redirect -->
{{See also|Wikipedia:Citing sources#Citing multiple pages of the same source}}
You can cite the same source more than once on a page by using '''named references''', also called named footnotes. The syntax to define a named footnote is:
:{{tag|ref|params=name="<var>name</var>"|content=<var>content</var>}}
To invoke the named footnote:
:{{tag|ref|s|params=name="<var>name</var>"}}
{{refname rules}}
Note that the colon-followed-by-numeral names, like <code>":0"</code>, are currently [[Wikipedia:Village_pump_(technical)/Archive_173#VisualEditor_creating_bad_ref_names|generated by default]] in [[WP:VE|VisualEditor]].
{{markup
|<nowiki>This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" />
{{reflist}}</nowiki>
|This is page content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is more content.<ref name="manchester2002" />
{{reflist}}
}}
The actual name used can be almost anything, but it is recommended that it have a connection to the citation or note. A common practice is to use the author-year or publisher-year for the reference name. This helps editors remember the name, by associating it with the information that is visible to the reader.
Note that the footnote labels are incremented in the order they are used, and that they use the same label when reused, thus the labels can seem out of order:
{{markup
|<nowiki>This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" />
{{reflist}}</nowiki>
|This is starter content.<ref name="manchester2002">{{cite book|title=LibreOffice for Starters|edition=First|publisher=Flexible Minds|location=Manchester|year=2002|p=18}}</ref> This is expert content.<ref name="lexington2004">{{cite book|title=OpenOffice for Experts|publisher=Lexington|year=2004|p=18}}</ref> And more starter content.<ref name="manchester2002" /> And more expert content.<ref name="lexington2004" />
{{reflist}}
}}
When using both names and [[#Footnotes:_groups|groups]], the syntax is:
:{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}}
Care should be taken when deleting references to avoid creating a cite error. See [[Wikipedia:Avoiding common mistakes#Deleting...|Avoiding common mistakes]].
==Reference lists: columns==
{{shortcut|H:REFCOLS}}
{{hatnote|Columns are not supported by Internet Explorer 9 and below; see {{tl|reflist}} for technical details}}
When using {{tag|references|s}} or {{tl|reflist}}, the list can be split into columns. The {{tag|references|s}} tag provides a default column width of 30 [[em (typography)|em]]. {{tl|Reflist}} can be used to set a different column width:
:{{tlx|reflist|<var>xx</var>em}}, where <var>xx</var> is the column width in em.
The number of columns will automatically be adjusted to the width of the display. It should be used only when necessary, as both the tag and the template have built-in auto-formatting capabilities providing a useful default display in most scenarios.
The [[Template:Reflist#Columns|set columns feature]] is now [[deprecated]] in favor of the option described above, which is better suited to flexible formatting for a variety of display screen sizes, ranging from mobile phones and tablets to wide-screen "cinema" displays. Forcing a fixed number of columns has been disabled in mobile view.
The number of columns to use is up to the editor, but some major practices include:
* {{tlx|Reflist|30em}}: Where there are many footnotes plus a page-width Bibliography subsection: see {{oldid|Ebola virus disease|561190497#References|Ebola virus disease (06:28, 23 June 2013)}}
* {{tlx|Reflist|20em}}: Where {{sfnote}} are used; see {{oldid|NBR 224 and 420 Classes|442508215#Notes|NBR 224 and 420 Classes (13:32, 1 August 2011)}}.
For example:
Using {{tlx|Reflist|30em}} will create columns with a minimum width of 30 em,
{{markup|title=30em wide columns
|<nowiki>Lorem ipsum.<ref>Source name, access date, etc.</ref>
Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref>
==References==
{{Reflist|30em}}</nowiki>
|Lorem ipsum.<ref>Source name, access date, etc.</ref>
Lorem ipsum dolor sit amet.<ref>Source name, access date, etc.</ref>
{{fake heading|sub=3|References}}
{{Reflist|30em}}
}}
==List-defined references==
{{shortcut|WP:LDR}}
{{main|Help:List-defined references}}
Some or all of the footnotes can also be defined within the reference section/list, and invoked in the page content. This keeps those citations in one central location for easier maintenance and avoids cluttering the text. This is purely a source code change{{snd}}the actual display of the citation in the text to a reader is unaffected. For a more detailed evaluation of this method, see [[WP:LDRHOW]]. The syntax is:
<syntaxhighlight lang="xml">
{{reflist|refs=
<ref name="name1">Content</ref>
<ref name="name2">Content</ref>
<ref name="name...n">Content</ref>
}}
</syntaxhighlight>
or, alternatively,
<syntaxhighlight lang="xml">
<references>
<ref name="name1">Content</ref>
<ref name="name2">Content</ref>
<ref name="name...n">Content</ref>
</references>
</syntaxhighlight>
The footnote markers are included as usual for a named footnote. For example:
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/>
Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/>
How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/>
==References==
{{reflist|refs=
<ref name="Jukeboxes">This is the jukeboxes reference.</ref>
<ref name="LazyDog">This is the lazy dog reference.</ref>
<ref name="JumpingFrogs">This is the jumping frogs reference.</ref>
}}</nowiki>
|The quick brown fox jumps over the lazy dog.<ref name="LazyDog"/>
Amazingly few discotheques provide jukeboxes.<ref name="Jukeboxes"/>
How razorback-jumping frogs can level six piqued gymnasts.<ref name="JumpingFrogs"/>
{{fake heading|sub=3|References}}
{{reflist|refs=
<ref name="LazyDog">This is the lazy dog reference.</ref>
<ref name="Jukeboxes">This is the jukeboxes reference.</ref>
<ref name="JumpingFrogs">This is the jumping frogs reference.</ref>
}}}}
The references will be numbered, and appear in the output, ''in the order that they are first referred to in the content,'' regardless of their order within the list. All references in reference list must be referenced in the content, otherwise an error message will be shown.
Note that when you use the visual editor, you will not be able to add, remove, or change list-defined references.
{{anchor|Embedding references within footnotes}}
==Footnotes: embedding references==
{{shortcut|WP:REFNEST}}
{{See also|WP:Nesting footnotes}}
[[Help:Explanatory notes|Explanatory notes]] may need to be referenced. Because of limitations in the {{cite.php}} software, reference tags cannot be nested; that is, a set of {{tag|ref}} tags cannot be placed inside another pair of {{tag|ref}} tags. Attempting to do so will result in a cite error.
The templates {{tl|r}} and {{tl|refn}} can be used to nest references. The markup is:
:{{tlx|refn|2=group=''group''|3=name=''name''|4=''content''}} or
:{{tlx|r|2=group=''group''|3=name=''name''|4=refn=''content''}} or
:{{tlx|r|2=g=''group''|3=n=''name''|4=r=''content''}} (shorter)
''name'' and ''group'' being optional parameters. The ''content'' may include {{tag|ref|o}} tags or another {{tl|r}} template.
The other templates listed below in [[#Footnotes: predefined groups|Predefined groups]] are variants of {{tl|refn}} that include a styled group and have a matching styled reference list template.
Examples:
===Using {{tl|refn}}===
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}}
==Notes==
{{reflist|group=nb}}
==References==
{{reflist}}
</nowiki>
|The quick brown fox jumps over the lazy dog.{{refn|group=nb|A footnote.<ref>A reference for the footnote.</ref>}}
{{fake heading|sub=3|Notes}}
{{reflist|group=nb}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
===Using {{tl|r}}===
{{markup
|<nowiki>The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}}
==Notes==
{{reflist|group=nb}}
==References==
{{reflist}}
</nowiki>
|The quick brown fox jumps over the lazy dog.{{r|g=nb|r=A footnote.{{r|r=A reference for the footnote.}}}}
{{fake heading|sub=3|Notes}}
{{reflist|group=nb}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
The use of the magic word <code>#tag:ref</code> is valid, but the sequence of parameters is invariant and nonintuitive. {{tl|r}} as well as {{tl|refn}} and its variants use this markup internally.
:<code>{{#tag:ref|<var>refcontent</var>|group=<var>groupname</var>|name=<var>name</var>}}</code>
{{anchor|Grouping footnotes}}
==Footnotes: groups==
{{shortcut|WP:REFGROUP|WP:CITELABEL}}
Sometimes it is useful to group the footnotes into separate lists, for example to separate explanatory notes from references, or to list references for tables, image captions, infoboxes and navboxes. The sequence of footnote labels is independent in each group.
The syntax to define a footnote with a group is:
:{{tag|ref|params=group=<var>groupname</var>|content=Content}}
The footnote marker group name ''must'' be enclosed in quotes if the group name includes a space, else a cite error will occur, otherwise quotes are optional.
The syntax for the reference list with a group is:
:{{tlx|reflist|2=group=<var>groupname</var>}}
The reference list group name does not need to be enclosed in quotes.
Example:
{{markup
|<nowiki>This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation.</ref> And this needs even more clarification.<ref group=note>Another note</ref>
==Notes==
{{reflist|group=note}}
==References==
{{reflist}}</nowiki>
|This part of the text requires clarification,<ref group=note>Listed separately from the citation</ref> whereas the entire text is cited.<ref>Citation</ref> And this needs even more clarification.<ref group=note>Another note</ref>
{{fake heading|sub=3|Notes}}
{{reflist|group=note}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
Note that the footnote labels in the reference list show only the numbers and not the group name.
When using both names and groups, the syntax is:
:{{tag|ref|params=group="<var>groupname</var>" name="<var>name</var>"|content=Content}}
For the repeated note:
:{{tag|ref|s|params=group="<var>groupname</var>" name="<var>name</var>"}}
==Footnotes: predefined groups==
{{shortcut|H:PREGROUP|WP:EXPLNOTE}}
{{for|technical details|Help:Cite link labels}}
{{for|Shortened footnotes with explanatory footnotes|Help:Shortened footnotes#Explanatory notes}}
{{See also|Wikipedia:Citing sources#Variation in citation methods|Wikipedia:Manual of Style/Layout#Notes and references}}
<section begin=pregroup /><!--this section is used as the documentation for the efn/notelist templates-->{{anchor|footnotes_predefined_groups}}
There are several predefined groups that can have a reference list styled so that the label (a superscripted character within square brackets, e.g., {{dummy ref|1}}) of an [[Help:Explanatory notes|explanatory note]] or citation ({{aka}} footnote, reference) matches and links to the note marker label located in the main text and the label in front of the note's text in the appropriate group's list. There can be [[Wikipedia:Citing sources#Separating citations from explanatory footnotes|more than one of these groups' lists]] in the Notes, References and other similarly purposed sections.
These predefined note and citation groups have templates that make the [[wikitext]] markup simpler. These templates also allow a standard reference to be inserted, so that an explanatory note can have a reference, or citations can be nested.
'''Note:''' If the note's text has a reference name that is used more than once, the labels will still match, but the clickable alpha characters that toggle the note's display will be ''next to'' the note's label, with links to the multiple locations of its marker in the main text. See [[Help:Footnotes#Footnotes: using a source more than once|WP:REFNAME]] and the first point below in [[#Issues|§ Issues]].
===Template use by reference group type===
<section begin=pregrouptable />
{| class="wikitable"
|- style="vertical-align:top;"
! Group type !! Footnote marker template<br/>or markup !! Reference list<br/> template !! Sample labels
|-
|rowspan=3|''none by default, but optionally any'' || {{tag|ref}}
|rowspan=3| {{tlx|reflist}}
|rowspan=3| 1 2 3 4 5 6 7 8 9 10
|-
| {{tlx|r}} (for nested references)
|-
| {{tlx|refn}} (for nested references)
|-
| lower-alpha || {{tlx|efn}}<br />{{tlx|efn-la}} || {{tlx|notelist}}<br />{{tlx|notelist-la}} || a b c d e f g h i j
|-
| upper-alpha || {{tlx|efn-ua}} || {{tlx|notelist-ua}} || A B C D E F G H I J
|-
| lower-roman || {{tlx|efn-lr}} || {{tlx|notelist-lr}} || i ii iii iv v vi vii viii ix x
|-
| upper-roman || {{tlx|efn-ur}} || {{tlx|notelist-ur}} || I II III IV V VI VII VIII IX X
|-
| lower-greek || {{tlx|efn-lg}} || {{tlx|notelist-lg}} || α β γ δ ε ζ η θ ι κ
|-
|note || {{tlx|NoteTag}} || {{tlx|NoteFoot}} || note 1 note 2 note 3
|}<section end=pregrouptable />
* {{tlx|efn}} supports {{para|name}} and {{para|group}}, which work the same as the parameters in {{tag|ref|o}} (see, for instance, the 3rd and 4th examples below). Do not enclose values in quotes.
* {{tlx|notelist}} supports the {{para|colwidth}}, {{para|refs}}, and {{para|group}} parameters, which work the same as the parameters in {{tlx|reflist}}. Do not enclose values in quotes.
In these examples, the footnote labels match between the footnote marker and the reference list:
{{markup|title=With lower-alpha labels
|<nowiki>Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}}
{{notelist}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|Footnote 3}}
{{notelist}}
}}
{{markup|title=With lower-roman labels
|<nowiki>Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}}
{{notelist-lr}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn-lr|Footnote 1}} Consectetur adipisicing elit.{{efn-lr|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn-lr|Footnote 3}}
{{notelist-lr}}
}}
{{markup|title=With named references
|<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|name=fn1|Footnote 1}} Consectetur adipisicing elit.{{efn|Footnote 2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist}}
}}
Note: With named references you only need to add the details once. For each use after the first you just need to re-use the reference name. Doing this will not cause the inline superscript to display a custom name.
{{markup|title=Named references can also be defined in the notelist
|<nowiki>Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist|refs=
{{efn|name=fn1|Very long footnote 1}}
{{efn|name=fn2|Very long footnote 2}}
}}
</nowiki>
|Lorem ipsum dolor sit amet.{{efn|name=fn1}} Consectetur adipisicing elit.{{efn|name=fn2}} Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.{{efn|name=fn1}}
{{notelist|refs=
{{efn|name=fn1|Very long footnote 1}}
{{efn|name=fn2|Very long footnote 2}}
}}
}}
'''Note''': Due to limitations in the MediaWiki software, do not use list defined footnotes that contain references.
===Issues===
* Multiple backlink labels (see [[WP:REFNAME]]) are always styled as lower-alpha. This can be confusing when {{tlx|efn}} is used. See the note in the introduction of [[#footnotes_predefined_groups|this section]], above.
* The entries in the reference list will show the default decimal styling if:
** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} does not exactly match one of the predefined values; use {{tlx|efn}} or variant as {{para|group}} will not be needed.
** The value for {{para|group}} in {{tlx|reflist}} or {{tag|references|s}} is enclosed by quotes; use {{tlx|efn}} or variant as {{para|group}} will not be needed.
** {{tlx|reflist}} is indented with the {{code|:}} markup.
** {{tag|references|s}} is used instead of {{tlx|reflist}}
* The entries in the reference list will have no styling if:
** A reference is included in {{tlx|navbox}} or one of the variants and the style is set to <code>bodyclass=hlist</code>; to resolve this, replace the style with <code>listclass=hlist</code>.<section end=pregroup />
* If the note text contains an "=" sign, precede the note text with {{para|1}}, like this: <code><nowiki>{{efn|name=fn1|1=Very long footnote with an equation, 2+2=4}}</nowiki></code>
==Reference lists: automatically generated==
{{main|Help:Automatically generated reference list}}
A page with {{tag|ref|o}} tags but no reference list markup used to display an error, except on talk and user pages. In recent versions of Wikipedia, the error no longer appears; instead an automatically generated reference list (AGRL) is displayed at the bottom of the page.
Compared to the reference lists on properly formatted pages, an AGRL can be confusing to both readers and editors. But it is easily corrected by adding reference list markup such as the following. Add it at the position where the reference list would normally appear.
<syntaxhighlight lang="wikitext" style="width: 10.6em;">
==References==
{{reflist}}
</syntaxhighlight>
On talk pages, the {{tl|reflist-talk}} template can be used to add a reference list to a specific discussion.
{{anchor|Citing one book repeatedly with different page numbers}}
==Footnotes: page numbers==
{{main|Help:References and page numbers}}
Suppose you would like to cite one book, but different facts appear on different pages. You would like to cite the book again and again, but point each fact to the proper page. Suppose one fact is on page 8, a different fact on page 12, a third fact on page 18, a fourth fact on page 241. You could put a line in the "pages" parameter saying "see pages 8, 12, 18, 241" but a fact-checker might have to check all of them before figuring out the right one. Or, you could duplicate the entire citation for the book in each instance, but that would be redundant.
One common approach is to use [[Help:Shortened footnotes|shortened citations]]. The long citation to support the shortened citations can either be placed as a bullet point in a separate ''References section'' after the ''Footnotes section''; or it can be placed in the first footnote to cite the source (with the initial relevant page number[s]). The remaining footnotes will use shortened citations (these usually contain the author's last name, the date of publication, and the relevant page number[s]).
A less common approach is to attach a {{tlx|rp|8}} right after the footnote marker and replace the "8" with the appropriate page number. For example:
{{markup
|<nowiki>Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}</nowiki>
|Schudson said the Constitution shaped citizenship in fundamental ways.<ref name="Schudson">{{Cite book |last=Schudson |first=Michael |title=The Good Citizen: A Brief History of American Civic Life |publisher=Simon & Schuster |date=1998 |url=https://books.google.com/books?id=aawMAQAAMAAJ |isbn=0-684-82729-8}}</ref>{{rp|8}} But elections in early American politics did not generate much interest<ref name="Schudson"/>{{rp|12}} while "open discussion of differences" was generally avoided.<ref name="Schudson"/>{{rp|18}} Citizenship later shifted to a polity of essentially "self-absorbed citizens", according to his analysis.<ref name="Schudson"/>{{rp|241}}
{{fake heading|sub=3|References}}
{{reflist}}
}}
{{tlx|r}} compactly combines the functions of <code><nowiki><ref></nowiki></code> and {{t|rp}}: <code><nowiki>{{r|Schudson}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/></nowiki></code> and <code><nowiki>{{r|Schudson|p=241}}</nowiki></code> is equivalent to <code><nowiki><ref name="Schudson"/>{{rp|241}}</nowiki></code>.
==Previewing edits==
When you [[Help:Section#Section editing|edit a single section]] of a page, the footnotes list will be visible when you [[Help:Show preview|preview your edits]] under the heading "Preview of references", although you will still not be able to see named references whose definition is outside the section you are editing.
Tools that can be used are the [[user:js/ajaxPreview]] or [[User:Anomie/ajaxpreview.js]] scripts or the [[User:Cacycle/wikEd|wikEd]] gadget.
==RefToolbar==
{{main|Wikipedia:RefToolbar/2.0}}
[[File:Cite web named ref 01.png|thumb|400px|Using the citation toolbar to name the first reference.]]
[[File:Citation toolbar named ref.png|thumb|400px|Using the citation toolbar to insert additional references to the first source.]]
You can use the citation toolbar to name references. When you first create a reference, you can enter a value in the "Ref name" box. When you want to reuse this reference, click the "Named references" button on the citation toolbar and choose which reference you would like to insert.
{{clear}}
==Issues and limitations==
* {{cite.php|bug}}
* [[Help:Substitution|subst:]] does not work within {{tag|ref|o}} tags. {{phab|T4700}}
* The [[Help:Pipe trick|pipe trick]] does not work within {{tag|ref|o}} tags. {{phab|T4700}}
== Flagging inadequate referencing ==
{{See also | Template: Unreferenced/doc#Usage|Template:Citation style}}
* The template {{Tlx|Refimprove}} should be added to articles where there are '''some, but insufficient, inline citations to support the material''' currently in the article. For [[WP:BLP|biographies of living persons]], use {{tlx|BLP sources}} instead.
* The template {{Tlx|Unreferenced}} should be added to articles with '''no references at all'''. For biographies of living persons, use {{tlx|BLP unsourced}} instead.
* The template {{Tlx|Unreferenced section}} is for '''individual sections that have no citations''' in articles that have at least one citation somewhere else. For biographies of living persons, use {{tlx|BLP unsourced section}} instead.
* The template {{Tlx|Medref}} is specifically for articles '''needing additional ''medical'' references'''.
==See also==
* [[Template:Harvard citation#Using CITEREF directly]] and {{tl|sfnref}}
* [[Wikipedia:Citing sources/Further considerations]]—a how-to article with some additional considerations for citing sources
* [[Wikipedia:Help desk]]—to ask questions about using footnotes in articles if you were not able to find the information you need on this help page.
*[[Template:Editor tools]]—{{tl|Editor tools}}
{{Wikipedia referencing}}
{{Help navigation}}
[[Category:Wikipedia editor help]]
[[Category:Wikipedia citation administration]]
5da4bd8b070c8a7aaa5dac9fc84a9f447a9061cd
Template:Transwiki guide
10
587
1323
1322
2023-10-01T10:10:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Transwiki_guide]]
wikitext
text/x-wiki
{{ombox
|style=border:#38C400 1px solid;
|image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]]
|text={{{text|This project or template has a [[Help:Transwiki guide|transwiki guide]] to help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template.<br/>See {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}} for instructions.}}}
|small={{{small|}}}
}}<includeonly>[[Category:Transwiki guide|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c25c9124a8e52dcec5a026adb2cc071776579ab7
Template:Efn/doc
10
588
1325
1324
2023-10-01T10:10:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Efn/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Transwiki guide |small=yes |text=See [[Template:Reflist/Transwiki guide|'''this information''']] on copying this template and modifying it for use on another wiki.}}
<!-- Categories and interwikis go at the bottom of this page. -->
{{High-use}}
'''Explanatory footnotes''' or '''Efn''' are footnotes which provide something other than, or more than, a reference to a [[WP:Reliable sources|source]] that supports the accompanying text. The first unnamed parameter is displayed as the content of the footnote. Note that if the note's content contains an "=" character, a reference error will be displayed; precede the content with {{para|1}} (or one of its aliases, {{para|text}}, {{para|reference}}, or {{para|content}}) to fix the error.
The following explanation is transcluded from [[Help:Footnotes#Footnotes: predefined groups]].
{{#section:Help:footnotes|pregroup}}
==Example articles==
* [[Logic Theorist]] (a short article showing basic usage)
* [[Chinese room]] (a long and complex article which uses all the features: named footnotes, list defined notes, etc.)
* [[Empire of Brazil]]
* [[John Diefenbaker]] (with name= and notes in <nowiki>{{notes}}</nowiki>)
* [[USS Monitor|USS ''Monitor'']]
<includeonly>{{sandbox other||
<!-- Categories and interwikis go here: -->
[[Category:Explanatory footnote templates]]
[[Category:Templates that generate named references]]
}}</includeonly>
== Template data ==
Description: <templatedata>
{
"description": "Inserts an explanatory footnote. Notes can be named and grouped.",
"params": {
"1": {
"aliases": [
"reference",
"text",
"content"
],
"label": "Note",
"description": "Text of the note",
"type": "content",
"suggested": true
},
"name": {
"label": "Ref. name",
"description": "Reference name of the note",
"type": "string",
"suggested": true
},
"group": {
"label": "Reference group",
"description": "Styled group to which the note belongs",
"type": "string",
"suggested": true,
"suggestedvalues": [
"upper-alpha",
"lower-greek",
"note",
"lower-roman",
"upper-roman"
]
}
}
}
</templatedata>
425513f20ca710aa83ef00ed07b04319a3d1cef9
Module:Coordinates
828
589
1327
1326
2023-10-01T10:12:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Coordinates]]
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">[[Geographic coordinate system|Coordinates]]: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
6162d7e98fcf6faab5809049e0a48bb3e67d88e3
Template:Sister project
10
590
1329
1328
2023-10-01T10:12:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sister_project]]
wikitext
text/x-wiki
{{Side box
| metadata=no
| position = {{{position|}}}
| image =
{{#switch: {{{image|}}}
| none = <!-- "image=none", do nothing -->
| = <!-- No image fed, select an image -->
[[File:{{#switch: {{lc: {{{project|}}} }}
| commons|c = Commons-logo.svg
| meta|metawiki|m = Wikimedia Community Logo.svg
| wikibooks|wbk|wb|b = Wikibooks-logo-en-noslogan.svg
| wikidata|data = Wikidata-logo.svg
| wikiquote|quote|wqt|q = Wikiquote-logo.svg
| wikipedia|wp|w|iw = Wikipedia-logo-v2.svg
| wikisource|source|ws|s = Wikisource-logo.svg
| wiktionary|wikt|wkt|wdy|d = Wiktionary-logo-en-v2.svg
| wikinews|news|wnw|n = Wikinews-logo.svg
| wikispecies|species = Wikispecies-logo.svg
| wikiversity|wvy|v = Wikiversity logo 2017.svg
| wikivoyage|voyage|voy = Wikivoyage-Logo-v3-icon.svg
| mediawiki|mw = MediaWiki-2020-icon.svg
| outreachwiki|outreach = Wikimedia Outreach.png
| incubator = Incubator-notext.svg
| #default = Wikimedia-logo.svg
}}|40x40px|class=noviewer|alt=|link=
]]
| #default = {{{image|}}}
}}
| textclass = {{{textclass|plainlist}}}
| textstyle = {{{textstyle|}}}
| text = {{{text}}}
| below = {{{below|}}}
| imageright = {{{imageright|}}}
| class = plainlinks sistersitebox
}}<noinclude>{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
0929197ea6267d9d63d80f9f8432fe1cfbe7ace8
Template:Coord
10
591
1331
1330
2023-10-01T10:12:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Coordinates|coord}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
05c1e2a95ff86fa91442c704f36a9f125b603492
Module:Coordinates/styles.css
828
592
1333
1332
2023-10-01T10:12:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Coordinates/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
/* Geographical coordinates defaults. The classes "geo", "longitude", and
"latitude" are used by the [[Geo microformat]]. */
.geo-default,
.geo-dms,
.geo-dec {
display: inline;
}
.geo-nondefault,
.geo-multi-punct,
.geo-inline-hidden {
display: none;
}
.longitude,
.latitude {
white-space: nowrap;
}
1b5d036501a9f6bc9dcf3c9117e8d6bc97507290
Module:Math
828
593
1335
1334
2023-10-01T10:12:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Math]]
Scribunto
text/plain
--[[
This module provides a number of basic mathematical operations.
]]
local yesno, getArgs -- lazily initialized
local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules.
local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua.
--[[
Helper functions used to avoid redundant code.
]]
local function err(msg)
-- Generates wikitext error messages.
return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg)
end
local function unpackNumberArgs(args)
-- Returns an unpacked list of arguments specified with numerical keys.
local ret = {}
for k, v in pairs(args) do
if type(k) == 'number' then
table.insert(ret, v)
end
end
return unpack(ret)
end
local function makeArgArray(...)
-- Makes an array of arguments from a list of arguments that might include nils.
local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs.
local nums = {} -- Stores the numbers of valid numerical arguments.
local ret = {}
for k, v in pairs(args) do
v = p._cleanNumber(v)
if v then
nums[#nums + 1] = k
args[k] = v
end
end
table.sort(nums)
for i, num in ipairs(nums) do
ret[#ret + 1] = args[num]
end
return ret
end
local function fold(func, ...)
-- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters,
-- and must return a number as an output. This number is then supplied as input to the next function call.
local vals = makeArgArray(...)
local count = #vals -- The number of valid arguments
if count == 0 then return
-- Exit if we have no valid args, otherwise removing the first arg would cause an error.
nil, 0
end
local ret = table.remove(vals, 1)
for _, val in ipairs(vals) do
ret = func(ret, val)
end
return ret, count
end
--[[
Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value).
]]
local function binary_fold(func, ...)
local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...)
return value
end
--[[
random
Generate a random number
Usage:
{{#invoke: Math | random }}
{{#invoke: Math | random | maximum value }}
{{#invoke: Math | random | minimum value | maximum value }}
]]
function wrap.random(args)
local first = p._cleanNumber(args[1])
local second = p._cleanNumber(args[2])
return p._random(first, second)
end
function p._random(first, second)
math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000))
-- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params.
if first and second then
if first <= second then -- math.random doesn't allow the first number to be greater than the second.
return math.random(first, second)
end
elseif first then
return math.random(first)
else
return math.random()
end
end
--[[
order
Determine order of magnitude of a number
Usage:
{{#invoke: Math | order | value }}
]]
function wrap.order(args)
local input_string = (args[1] or args.x or '0');
local input_number = p._cleanNumber(input_string);
if input_number == nil then
return err('order of magnitude input appears non-numeric')
else
return p._order(input_number)
end
end
function p._order(x)
if x == 0 then return 0 end
return math.floor(math.log10(math.abs(x)))
end
--[[
precision
Detemines the precision of a number using the string representation
Usage:
{{ #invoke: Math | precision | value }}
]]
function wrap.precision(args)
local input_string = (args[1] or args.x or '0');
local trap_fraction = args.check_fraction;
local input_number;
if not yesno then
yesno = require('Module:Yesno')
end
if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]].
local pos = string.find(input_string, '/', 1, true);
if pos ~= nil then
if string.find(input_string, '/', pos + 1, true) == nil then
local denominator = string.sub(input_string, pos+1, -1);
local denom_value = tonumber(denominator);
if denom_value ~= nil then
return math.log10(denom_value);
end
end
end
end
input_number, input_string = p._cleanNumber(input_string);
if input_string == nil then
return err('precision input appears non-numeric')
else
return p._precision(input_string)
end
end
function p._precision(x)
if type(x) == 'number' then
x = tostring(x)
end
x = string.upper(x)
local decimal = x:find('%.')
local exponent_pos = x:find('E')
local result = 0;
if exponent_pos ~= nil then
local exponent = string.sub(x, exponent_pos + 1)
x = string.sub(x, 1, exponent_pos - 1)
result = result - tonumber(exponent)
end
if decimal ~= nil then
result = result + string.len(x) - decimal
return result
end
local pos = string.len(x);
while x:byte(pos) == string.byte('0') do
pos = pos - 1
result = result - 1
if pos <= 0 then
return 0
end
end
return result
end
--[[
max
Finds the maximum argument
Usage:
{{#invoke:Math| max | value1 | value2 | ... }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.max(args)
return p._max(unpackNumberArgs(args))
end
function p._max(...)
local max_value = binary_fold((function(a, b) return a > b end), ...)
if max_value then
return max_value
end
end
--[[
median
Find the median of set of numbers
Usage:
{{#invoke:Math | median | number1 | number2 | ...}}
OR
{{#invoke:Math | median }}
]]
function wrap.median(args)
return p._median(unpackNumberArgs(args))
end
function p._median(...)
local vals = makeArgArray(...)
local count = #vals
table.sort(vals)
if count == 0 then
return 0
end
if p._mod(count, 2) == 0 then
return (vals[count/2] + vals[count/2+1])/2
else
return vals[math.ceil(count/2)]
end
end
--[[
min
Finds the minimum argument
Usage:
{{#invoke:Math| min | value1 | value2 | ... }}
OR
{{#invoke:Math| min }}
When used with no arguments, it takes its input from the parent
frame. Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.min(args)
return p._min(unpackNumberArgs(args))
end
function p._min(...)
local min_value = binary_fold((function(a, b) return a < b end), ...)
if min_value then
return min_value
end
end
--[[
sum
Finds the sum
Usage:
{{#invoke:Math| sum | value1 | value2 | ... }}
OR
{{#invoke:Math| sum }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.sum(args)
return p._sum(unpackNumberArgs(args))
end
function p._sum(...)
local sums, count = fold((function(a, b) return a + b end), ...)
if not sums then
return 0
else
return sums
end
end
--[[
average
Finds the average
Usage:
{{#invoke:Math| average | value1 | value2 | ... }}
OR
{{#invoke:Math| average }}
Note, any values that do not evaluate to numbers are ignored.
]]
function wrap.average(args)
return p._average(unpackNumberArgs(args))
end
function p._average(...)
local sum, count = fold((function(a, b) return a + b end), ...)
if not sum then
return 0
else
return sum / count
end
end
--[[
round
Rounds a number to specified precision
Usage:
{{#invoke:Math | round | value | precision }}
--]]
function wrap.round(args)
local value = p._cleanNumber(args[1] or args.value or 0)
local precision = p._cleanNumber(args[2] or args.precision or 0)
if value == nil or precision == nil then
return err('round input appears non-numeric')
else
return p._round(value, precision)
end
end
function p._round(value, precision)
local rescale = math.pow(10, precision or 0);
return math.floor(value * rescale + 0.5) / rescale;
end
--[[
log10
returns the log (base 10) of a number
Usage:
{{#invoke:Math | log10 | x }}
]]
function wrap.log10(args)
return math.log10(args[1])
end
--[[
mod
Implements the modulo operator
Usage:
{{#invoke:Math | mod | x | y }}
--]]
function wrap.mod(args)
local x = p._cleanNumber(args[1])
local y = p._cleanNumber(args[2])
if not x then
return err('first argument to mod appears non-numeric')
elseif not y then
return err('second argument to mod appears non-numeric')
else
return p._mod(x, y)
end
end
function p._mod(x, y)
local ret = x % y
if not (0 <= ret and ret < y) then
ret = 0
end
return ret
end
--[[
gcd
Calculates the greatest common divisor of multiple numbers
Usage:
{{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }}
--]]
function wrap.gcd(args)
return p._gcd(unpackNumberArgs(args))
end
function p._gcd(...)
local function findGcd(a, b)
local r = b
local oldr = a
while r ~= 0 do
local quotient = math.floor(oldr / r)
oldr, r = r, oldr - quotient * r
end
if oldr < 0 then
oldr = oldr * -1
end
return oldr
end
local result, count = fold(findGcd, ...)
return result
end
--[[
precision_format
Rounds a number to the specified precision and formats according to rules
originally used for {{template:Rnd}}. Output is a string.
Usage:
{{#invoke: Math | precision_format | number | precision }}
]]
function wrap.precision_format(args)
local value_string = args[1] or 0
local precision = args[2] or 0
return p._precision_format(value_string, precision)
end
function p._precision_format(value_string, precision)
-- For access to Mediawiki built-in formatter.
local lang = mw.getContentLanguage();
local value
value, value_string = p._cleanNumber(value_string)
precision = p._cleanNumber(precision)
-- Check for non-numeric input
if value == nil or precision == nil then
return err('invalid input when rounding')
end
local current_precision = p._precision(value)
local order = p._order(value)
-- Due to round-off effects it is neccesary to limit the returned precision under
-- some circumstances because the terminal digits will be inaccurately reported.
if order + precision >= 14 then
if order + p._precision(value_string) >= 14 then
precision = 13 - order;
end
end
-- If rounding off, truncate extra digits
if precision < current_precision then
value = p._round(value, precision)
current_precision = p._precision(value)
end
local formatted_num = lang:formatNum(math.abs(value))
local sign
-- Use proper unary minus sign rather than ASCII default
if value < 0 then
sign = '−'
else
sign = ''
end
-- Handle cases requiring scientific notation
if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then
value = value * math.pow(10, -order)
current_precision = current_precision + order
precision = precision + order
formatted_num = lang:formatNum(math.abs(value))
else
order = 0;
end
formatted_num = sign .. formatted_num
-- Pad with zeros, if needed
if current_precision < precision then
local padding
if current_precision <= 0 then
if precision > 0 then
local zero_sep = lang:formatNum(1.1)
formatted_num = formatted_num .. zero_sep:sub(2,2)
padding = precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('0', padding)
end
else
padding = precision - current_precision
if padding > 20 then
padding = 20
end
formatted_num = formatted_num .. string.rep('0', padding)
end
end
-- Add exponential notation, if necessary.
if order ~= 0 then
-- Use proper unary minus sign rather than ASCII default
if order < 0 then
order = '−' .. lang:formatNum(math.abs(order))
else
order = lang:formatNum(order)
end
formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>'
end
return formatted_num
end
--[[
divide
Implements the division operator
Usage:
{{#invoke:Math | divide | x | y | round= | precision= }}
--]]
function wrap.divide(args)
local x = args[1]
local y = args[2]
local round = args.round
local precision = args.precision
if not yesno then
yesno = require('Module:Yesno')
end
return p._divide(x, y, yesno(round), precision)
end
function p._divide(x, y, round, precision)
if y == nil or y == "" then
return err("Empty divisor")
elseif not tonumber(y) then
if type(y) == 'string' and string.sub(y, 1, 1) == '<' then
return y
else
return err("Not a number: " .. y)
end
elseif x == nil or x == "" then
return err("Empty dividend")
elseif not tonumber(x) then
if type(x) == 'string' and string.sub(x, 1, 1) == '<' then
return x
else
return err("Not a number: " .. x)
end
else
local z = x / y
if round then
return p._round(z, 0)
elseif precision then
return p._round(z, precision)
else
return z
end
end
end
--[[
Helper function that interprets the input numerically. If the
input does not appear to be a number, attempts evaluating it as
a parser functions expression.
]]
function p._cleanNumber(number_string)
if type(number_string) == 'number' then
-- We were passed a number, so we don't need to do any processing.
return number_string, tostring(number_string)
elseif type(number_string) ~= 'string' or not number_string:find('%S') then
-- We were passed a non-string or a blank string, so exit.
return nil, nil;
end
-- Attempt basic conversion
local number = tonumber(number_string)
-- If failed, attempt to evaluate input as an expression
if number == nil then
local success, result = pcall(mw.ext.ParserFunctions.expr, number_string)
if success then
number = tonumber(result)
number_string = tostring(number)
else
number = nil
number_string = nil
end
else
number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it.
number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs.
if number_string:find('^%-?0[xX]') then
-- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead.
number_string = tostring(number)
end
end
return number, number_string
end
--[[
Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current
frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments.
]]
local mt = { __index = function(t, k)
return function(frame)
if not getArgs then
getArgs = require('Module:Arguments').getArgs
end
return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed.
end
end }
return setmetatable(p, mt)
2bbe734d898299f65412963a3c1782e9fcc4d9ca
Module:Uses Wikidata
828
594
1337
1336
2023-10-01T10:12:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Uses_Wikidata]]
Scribunto
text/plain
local p = {}
function p.usesProperty(frame)
local args = frame.getParent(frame).args or nil
if mw.text.trim(args[1] or '') == '' then
args = frame.args
end
local result = '<ul>'
local ii = 1
while true do
local p_num = mw.text.trim(args[ii] or '')
if p_num ~= '' then
local label = mw.wikibase.getLabel(p_num) or "NO LABEL"
result = result .. "<li>[[File:Disc Plain blue dark.svg|middle|4px|link=|alt=]] <b><i>[[d:Property talk:" .. p_num .. "|" .. label .. " (" .. string.upper(p_num) .. ")]]</i></b> (see <span class='plainlinks'>[https://query.wikidata.org/embed.html#SELECT%20%3FWikidata_item_%20%3FWikidata_item_Label%20%3Fvalue%20%3FvalueLabel%20%3FEnglish_Wikipedia_article%20%23Show%20data%20in%20this%20order%0A%7B%0A%09%3FWikidata_item_%20wdt%3A" .. p_num .. "%20%3Fvalue%20.%20%23Collecting%20all%20items%20which%20have%20" .. p_num .. "%20data%2C%20from%20whole%20Wikidata%20item%20pages%0A%09OPTIONAL%20%7B%3FEnglish_Wikipedia_article%20schema%3Aabout%20%3FWikidata_item_%3B%20schema%3AisPartOf%20%3Chttps%3A%2F%2Fen.wikipedia.org%2F%3E%20.%7D%20%23If%20collected%20item%20has%20link%20to%20English%20Wikipedia%2C%20show%20that%0A%09SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22en%22%20%20%7D%20%23Show%20label%20in%20this%20language.%20%22en%22%20is%20English.%20%20%20%0A%7D%0ALIMIT%201000 uses]</span>)</li>"
ii = ii + 1
else break
end
end
result = result.."</ul>"
return result
end
function p.tuProperty(frame)
local parent = frame.getParent(frame)
local result = '<ul>'
local ii = 1
while true do
local p_num = mw.text.trim(parent.args[ii] or '')
if p_num ~= '' then
local label = mw.wikibase.getLabel(p_num) or "NO LABEL"
result = result .. "<li><span style='font-size:90%;line-height:1;'>●</span> <b>[[d:Property:" .. p_num .. "|" .. label .. "]]</b> <span style='font-size:90%;'>([[d:Property talk:" .. string.upper(p_num) .. "|" .. p_num .. "]])</span></li>"
ii = ii + 1
else break
end
end
result = result.."</ul>"
return result
end
return p
8b704fdbc00fb94538c56f18c5c01f1e72963ea9
Module:Transclusion count/data/C
828
595
1339
1338
2023-10-01T10:12:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/C]]
Scribunto
text/plain
return {
["C"] = 657000,
["C-Class"] = 17000,
["C-SPAN"] = 12000,
["C-cmn"] = 2300,
["C-pl"] = 51000,
["C."] = 4200,
["CAN"] = 20000,
["CANelec"] = 14000,
["CANelec/gain"] = 2600,
["CANelec/hold"] = 4900,
["CANelec/source"] = 7100,
["CANelec/top"] = 6400,
["CANelec/total"] = 6200,
["CAS"] = 3800,
["CBB_Standings_End"] = 15000,
["CBB_Standings_Entry"] = 15000,
["CBB_Standings_Start"] = 15000,
["CBB_Yearly_Record_End"] = 3100,
["CBB_Yearly_Record_Entry"] = 3100,
["CBB_Yearly_Record_Start"] = 3000,
["CBB_Yearly_Record_Subhead"] = 3700,
["CBB_Yearly_Record_Subtotal"] = 2900,
["CBB_roster/Footer"] = 8100,
["CBB_roster/Header"] = 8100,
["CBB_roster/Player"] = 8000,
["CBB_schedule_end"] = 11000,
["CBB_schedule_entry"] = 11000,
["CBB_schedule_start"] = 11000,
["CBB_standings_end"] = 16000,
["CBB_standings_entry"] = 16000,
["CBB_standings_start"] = 16000,
["CBB_yearly_record_end"] = 4100,
["CBB_yearly_record_end/legend"] = 3700,
["CBB_yearly_record_entry"] = 4100,
["CBB_yearly_record_start"] = 4000,
["CBB_yearly_record_subhead"] = 3800,
["CBB_yearly_record_subtotal"] = 3800,
["CBSB_Standings_End"] = 4300,
["CBSB_Standings_Entry"] = 4300,
["CBSB_Standings_Start"] = 4300,
["CBSB_link"] = 3500,
["CBSB_standings_end"] = 4400,
["CBSB_standings_entry"] = 4500,
["CBSB_standings_start"] = 4500,
["CC0"] = 3800,
["CENTURY"] = 16000,
["CFB_Standings_End"] = 34000,
["CFB_Standings_Entry"] = 34000,
["CFB_Standings_Start"] = 34000,
["CFB_Yearly_Record_End"] = 6900,
["CFB_Yearly_Record_End/legend"] = 2400,
["CFB_Yearly_Record_Entry"] = 6900,
["CFB_Yearly_Record_Start"] = 6900,
["CFB_Yearly_Record_Subhead"] = 6900,
["CFB_Yearly_Record_Subtotal"] = 6800,
["CFB_schedule"] = 26000,
["CFB_schedule_entry"] = 19000,
["CFB_standings_end"] = 34000,
["CFB_standings_entry"] = 34000,
["CFB_standings_start"] = 34000,
["CFL_Year"] = 5700,
["CGF_year"] = 2600,
["CHE"] = 10000,
["CHI"] = 2800,
["CHL"] = 3600,
["CHN"] = 11000,
["CN"] = 3400,
["CO2"] = 3300,
["COI"] = 14000,
["COIUL"] = 129000,
["COI_editnotice"] = 6700,
["COL"] = 5000,
["COLON"] = 13000,
["CRI"] = 2200,
["CRO"] = 5600,
["CSK"] = 2800,
["CSS_image_crop"] = 4700,
["CUB"] = 3700,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2100,
["CZE"] = 15000,
["Calendar"] = 2400,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 23000,
["CanProvName"] = 14000,
["CanadaByProvinceCatNav"] = 8400,
["CanadaProvinceThe"] = 4000,
["Canadian_English"] = 7000,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 14000,
["Canadian_election_result/gain"] = 2700,
["Canadian_election_result/hold"] = 5000,
["Canadian_election_result/source"] = 8200,
["Canadian_election_result/top"] = 14000,
["Canadian_election_result/total"] = 11000,
["Canadian_party_colour"] = 8200,
["Canadian_party_colour/colour"] = 18000,
["Canadian_party_colour/colour/default"] = 18000,
["Canadian_party_colour/name"] = 15000,
["Canadian_party_colour/name/default"] = 6900,
["Canned_search"] = 5800,
["Cascite"] = 15000,
["Caselaw_source"] = 4000,
["Cassini-Ehess"] = 2600,
["Cast_listing"] = 16000,
["Castlist"] = 2500,
["Cat"] = 356000,
["CatAutoTOC"] = 661000,
["CatAutoTOC/core"] = 660000,
["CatRel"] = 3800,
["CatTrack"] = 3100,
["Cat_class"] = 6800,
["Cat_in_use"] = 50000,
["Cat_main"] = 200000,
["Cat_more"] = 102000,
["Cat_more_if_exists"] = 40000,
["Cat_see_also"] = 3500,
["Catalog_lookup_link"] = 516000,
["Category-Class"] = 14000,
["Category-inline"] = 8700,
["Category_TOC"] = 72000,
["Category_TOC/tracking"] = 72000,
["Category_U.S._State_elections_by_year"] = 7300,
["Category_U.S._State_elections_by_year/core"] = 7300,
["Category_class"] = 36000,
["Category_class/column"] = 36000,
["Category_class/second_row_column"] = 36000,
["Category_described_in_year"] = 5700,
["Category_diffuse"] = 7900,
["Category_disambiguation"] = 2400,
["Category_disambiguation/category_link"] = 2400,
["Category_explanation"] = 273000,
["Category_handler"] = 3360000,
["Category_ifexist"] = 5100,
["Category_importance"] = 10000,
["Category_importance/column"] = 10000,
["Category_importance/second_row_column"] = 10000,
["Category_link"] = 136000,
["Category_link_with_count"] = 7000,
["Category_more"] = 112000,
["Category_more_if_exists"] = 40000,
["Category_ordered_by_date"] = 11000,
["Category_other"] = 906000,
["Category_redirect"] = 109000,
["Category_see_also"] = 39000,
["Category_see_also/Category_pair_check"] = 39000,
["Category_see_also_if_exists"] = 73000,
["Category_see_also_if_exists_2"] = 88000,
["Category_title"] = 2400,
["Catexp"] = 7900,
["CathEncy"] = 2200,
["Catholic"] = 4000,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 28000,
["Catmore"] = 9400,
["Cbb_link"] = 8700,
["Cbignore"] = 100000,
["Cbsb_link"] = 2100,
["Cc-by-2.5"] = 3700,
["Cc-by-3.0"] = 8500,
["Cc-by-sa-2.5"] = 2500,
["Cc-by-sa-2.5,2.0,1.0"] = 2600,
["Cc-by-sa-3.0"] = 25000,
["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200,
["Cc-by-sa-3.0-migrated"] = 23000,
["Cc-by-sa-4.0"] = 10000,
["Cc-zero"] = 3700,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 6900,
["Cent"] = 5800,
["Center"] = 288000,
["Centralized_discussion"] = 6100,
["Centralized_discussion/core"] = 6100,
["Centralized_discussion/styles.css"] = 6100,
["Centre"] = 3200,
["Century"] = 2100,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 77000,
["Century_name_from_title_decade"] = 7600,
["Century_name_from_title_year"] = 7600,
["Certification_Cite/Title"] = 30000,
["Certification_Cite/URL"] = 34000,
["Certification_Cite/archivedate"] = 6100,
["Certification_Cite/archiveurl"] = 6100,
["Certification_Cite_Ref"] = 30000,
["Certification_Table_Bottom"] = 29000,
["Certification_Table_Entry"] = 30000,
["Certification_Table_Entry/Foot"] = 29000,
["Certification_Table_Entry/Foot/helper"] = 29000,
["Certification_Table_Entry/Region"] = 30000,
["Certification_Table_Entry/Sales"] = 29000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100,
["Certification_Table_Entry/Sales/DanishPeriod"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4000,
["Certification_Table_Entry/Sales/ItalianHelper"] = 3300,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100,
["Certification_Table_Separator"] = 2400,
["Certification_Table_Top"] = 30000,
["Cfb_link"] = 24000,
["Cfd_result"] = 2400,
["Cfdend"] = 4000,
["Chart"] = 4600,
["Chart/end"] = 4700,
["Chart/start"] = 4700,
["Chart_bottom"] = 3500,
["Chart_top"] = 3500,
["Check_completeness_of_transclusions"] = 39000,
["Check_talk"] = 31000,
["Check_talk_wp"] = 1420000,
["Check_winner_by_scores"] = 13000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 13000,
["Checkuser"] = 76000,
["Checkuserblock-account"] = 18000,
["Chem"] = 5800,
["Chem/atom"] = 5800,
["Chem/link"] = 5800,
["Chem2"] = 5100,
["Chem_molar_mass"] = 18000,
["Chem_molar_mass/format"] = 18000,
["Chembox"] = 14000,
["Chembox/styles.css"] = 14000,
["Chembox_3DMet"] = 14000,
["Chembox_3DMet/format"] = 14000,
["Chembox_AllOtherNames"] = 13000,
["Chembox_AllOtherNames/format"] = 13000,
["Chembox_Appearance"] = 6100,
["Chembox_BoilingPt"] = 3800,
["Chembox_CASNo"] = 14000,
["Chembox_CASNo/format"] = 14000,
["Chembox_CalcTemperatures"] = 6700,
["Chembox_ChEBI"] = 14000,
["Chembox_ChEBI/format"] = 14000,
["Chembox_ChEMBL"] = 14000,
["Chembox_ChEMBL/format"] = 14000,
["Chembox_ChemSpiderID"] = 14000,
["Chembox_ChemSpiderID/format"] = 14000,
["Chembox_CompTox"] = 14000,
["Chembox_CompTox/format"] = 14000,
["Chembox_Datapage_check"] = 14000,
["Chembox_Density"] = 4900,
["Chembox_DrugBank"] = 14000,
["Chembox_DrugBank/format"] = 14000,
["Chembox_ECHA"] = 7600,
["Chembox_ECNumber"] = 14000,
["Chembox_ECNumber/format"] = 14000,
["Chembox_Elements"] = 14000,
["Chembox_Elements/molecular_formula"] = 18000,
["Chembox_Footer"] = 14000,
["Chembox_Footer/tracking"] = 14000,
["Chembox_GHS_(set)"] = 3500,
["Chembox_Hazards"] = 12000,
["Chembox_IUPHAR_ligand"] = 14000,
["Chembox_IUPHAR_ligand/format"] = 14000,
["Chembox_Identifiers"] = 14000,
["Chembox_InChI"] = 13000,
["Chembox_InChI/format"] = 13000,
["Chembox_Indexlist"] = 14000,
["Chembox_Jmol"] = 14000,
["Chembox_Jmol/format"] = 14000,
["Chembox_KEGG"] = 14000,
["Chembox_KEGG/format"] = 14000,
["Chembox_MeltingPt"] = 5900,
["Chembox_Properties"] = 14000,
["Chembox_PubChem"] = 14000,
["Chembox_PubChem/format"] = 14000,
["Chembox_RTECS"] = 14000,
["Chembox_RTECS/format"] = 14000,
["Chembox_Related"] = 3400,
["Chembox_SMILES"] = 13000,
["Chembox_SMILES/format"] = 13000,
["Chembox_SolubilityInWater"] = 3900,
["Chembox_Structure"] = 2100,
["Chembox_UNII"] = 14000,
["Chembox_UNII/format"] = 14000,
["Chembox_headerbar"] = 14000,
["Chembox_image"] = 13000,
["Chembox_image_cell"] = 12000,
["Chembox_image_sbs"] = 13000,
["Chembox_parametercheck"] = 13000,
["Chembox_setDatarow"] = 4500,
["Chembox_setHeader"] = 4500,
["Chembox_templatePar/formatPreviewMessage"] = 14000,
["Chembox_verification"] = 7100,
["Chemicals"] = 7300,
["Chemistry"] = 3100,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3700,
["Chinese"] = 7000,
["Chr"] = 9100,
["ChristianityWikiProject"] = 5700,
["Circa"] = 73000,
["Circular_reference"] = 4600,
["Citation"] = 411000,
["Citation/make_link"] = 6100,
["Citation/styles.css"] = 46000,
["Citation_needed"] = 548000,
["Citation_needed_span"] = 3500,
["Citation_style"] = 4200,
["Cite_AV_media"] = 43000,
["Cite_AV_media_notes"] = 26000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 3300,
["Cite_Catholic_Encyclopedia"] = 8300,
["Cite_Colledge2006"] = 3100,
["Cite_DCB"] = 2800,
["Cite_DNB"] = 18000,
["Cite_EB1911"] = 25000,
["Cite_GNIS"] = 2300,
["Cite_Gaia_DR2"] = 2100,
["Cite_Google_Maps"] = 15000,
["Cite_IUCN"] = 58000,
["Cite_Instagram"] = 2200,
["Cite_Jewish_Encyclopedia"] = 3000,
["Cite_NIE"] = 3600,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2600,
["Cite_ODNB"] = 18000,
["Cite_POWO"] = 2000,
["Cite_Q"] = 48000,
["Cite_QHR"] = 3000,
["Cite_QPN"] = 4000,
["Cite_Rotten_Tomatoes"] = 2000,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3200,
["Cite_Sports-Reference"] = 54000,
["Cite_USGov"] = 24000,
["Cite_WoRMS"] = 5500,
["Cite_act"] = 2700,
["Cite_arXiv"] = 5000,
["Cite_bcgnis"] = 3200,
["Cite_book"] = 1600000,
["Cite_certification"] = 34000,
["Cite_cgndb"] = 3300,
["Cite_comic"] = 2100,
["Cite_conference"] = 16000,
["Cite_court"] = 5400,
["Cite_court/styles.css"] = 5400,
["Cite_dictionary"] = 3500,
["Cite_encyclopedia"] = 205000,
["Cite_episode"] = 17000,
["Cite_gnis"] = 33000,
["Cite_interview"] = 7900,
["Cite_iucn"] = 58000,
["Cite_journal"] = 965000,
["Cite_magazine"] = 277000,
["Cite_map"] = 41000,
["Cite_news"] = 1520000,
["Cite_newspaper_The_Times"] = 6600,
["Cite_patent"] = 5500,
["Cite_patent/authors"] = 4500,
["Cite_patent/core"] = 5800,
["Cite_peakbagger"] = 4600,
["Cite_podcast"] = 3900,
["Cite_press_release"] = 66000,
["Cite_report"] = 36000,
["Cite_rowlett"] = 2500,
["Cite_simbad"] = 4500,
["Cite_sports-reference"] = 59000,
["Cite_thesis"] = 32000,
["Cite_tweet"] = 37000,
["Cite_video"] = 12000,
["Cite_video_game"] = 3100,
["Cite_web"] = 4600000,
["Cite_wikisource"] = 5700,
["Cite_wikisource/make_link"] = 58000,
["Civil_navigation"] = 2800,
["Cl"] = 134000,
["Clade"] = 7600,
["Clade/styles.css"] = 7700,
["Clarify"] = 41000,
["Class"] = 42000,
["Class/colour"] = 9180000,
["Class/icon"] = 21000,
["Class_mask"] = 6420000,
["Class_mask/b"] = 287000,
["Classical"] = 6900,
["Classicon"] = 4800,
["Clc"] = 6100,
["Cleanup"] = 10000,
["Cleanup_bare_URLs"] = 26000,
["Cleanup_reorganize"] = 2500,
["Cleanup_rewrite"] = 5900,
["Clear"] = 2970000,
["Clear-left"] = 4100,
["Clear_left"] = 31000,
["Clear_right"] = 2600,
["Clerk-Note"] = 9900,
["Clerk_Request"] = 2000,
["Clerknote"] = 7500,
["Clickable_button"] = 17000,
["Clickable_button_2"] = 967000,
["Closed_access"] = 4600,
["Closed_rfc_top"] = 2300,
["Clr"] = 3500,
["Clubplayerscat"] = 8600,
["Cmbox"] = 423000,
["Cn"] = 95000,
["Cnote2"] = 2300,
["Cnote2_Begin"] = 2300,
["Cnote2_End"] = 2300,
["Coat_of_arms"] = 4800,
["Cob"] = 12000,
["Code"] = 51000,
["Col-1-of-2"] = 2400,
["Col-2"] = 171000,
["Col-2-of-2"] = 2300,
["Col-3"] = 10000,
["Col-4"] = 3700,
["Col-begin"] = 214000,
["Col-break"] = 212000,
["Col-end"] = 212000,
["Col-float"] = 2700,
["Col-float-break"] = 2600,
["Col-float-end"] = 2700,
["Col-float/styles.css"] = 2700,
["Col-start"] = 18000,
["Colbegin"] = 21000,
["Colend"] = 23000,
["Collapse"] = 9800,
["Collapse_bottom"] = 51000,
["Collapse_top"] = 51000,
["Collapsebottom"] = 3800,
["Collapsetop"] = 3800,
["Collapsible_list"] = 52000,
["Collapsible_option"] = 135000,
["College"] = 8900,
["CollegePrimaryHeader"] = 6100,
["CollegePrimaryStyle"] = 97000,
["CollegeSecondaryStyle"] = 3700,
["College_Athlete_Recruit_End"] = 2900,
["College_Athlete_Recruit_Entry"] = 3100,
["College_Athlete_Recruit_Start"] = 3000,
["College_athlete_recruit_end"] = 4100,
["College_athlete_recruit_entry"] = 4200,
["College_athlete_recruit_start"] = 4300,
["College_color_list"] = 3900,
["Colon"] = 18000,
["Color"] = 472000,
["Color_box"] = 74000,
["Colorbox"] = 3500,
["Colorbull"] = 4800,
["Colored_link"] = 63000,
["Colors"] = 3800,
["Colour"] = 5800,
["Colour_box"] = 2000,
["Coloured_link"] = 7000,
["Column"] = 2400,
["Column/styles.css"] = 2500,
["Columns-end"] = 2200,
["Columns-list"] = 97000,
["Columns-start"] = 2200,
["Comedy"] = 2600,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3500,
["Comics-replaceability"] = 2900,
["Comics_infobox_sec/creator_nat"] = 2800,
["Comics_infobox_sec/formcat"] = 3300,
["Comics_infobox_sec/genre"] = 4100,
["Comics_infobox_sec/genrecat"] = 3700,
["Comics_infobox_sec/styles.css"] = 8200,
["Comicsproj"] = 28000,
["Comma_separated_entries"] = 432000,
["Comma_separated_values"] = 48000,
["Comment"] = 5200,
["Committed_identity"] = 3000,
["Committed_identity/styles.css"] = 3000,
["Commons"] = 66000,
["Commons-inline"] = 20000,
["Commons_cat"] = 48000,
["Commons_category"] = 847000,
["Commons_category-inline"] = 149000,
["Commons_category_inline"] = 6100,
["Commonscat"] = 64000,
["Commonscat-inline"] = 17000,
["Commonscat_inline"] = 2400,
["Commonscatinline"] = 6800,
["Compact_TOC"] = 7000,
["Compact_ToC"] = 4700,
["Compare"] = 5300,
["Compare_image_with_Wikidata"] = 10000,
["Composition_bar"] = 10000,
["Confirmed"] = 17000,
["Confused"] = 2800,
["Confusing"] = 2300,
["CongBio"] = 9600,
["CongLinks"] = 4600,
["Connected_contributor"] = 18000,
["Connected_contributor_(paid)"] = 6900,
["Constellation_navbox"] = 6800,
["Container"] = 11000,
["Container_cat"] = 7600,
["Container_category"] = 43000,
["Containercat"] = 2600,
["Contains_special_characters"] = 4200,
["Contains_special_characters/core"] = 4200,
["Contains_special_characters/styles.css"] = 4200,
["Content_category"] = 7600,
["Contentious_topics/list"] = 13000,
["Contentious_topics/page_restriction_editnotice_base"] = 2600,
["Contentious_topics/page_restriction_talk_notice_base"] = 3600,
["Contentious_topics/talk_notice"] = 6900,
["Context"] = 2700,
["Continent2continental"] = 16000,
["Continent_adjective_to_noun"] = 2200,
["Controversial"] = 3300,
["Convert"] = 1180000,
["Convinfobox"] = 206000,
["Convinfobox/2"] = 17000,
["Convinfobox/3"] = 119000,
["Convinfobox/pri2"] = 64000,
["Convinfobox/prisec2"] = 3300,
["Convinfobox/prisec3"] = 26000,
["Convinfobox/sec2"] = 9300,
["Coord"] = 1330000,
["Coord_missing"] = 94000,
["Coord_missing/CheckCat"] = 93000,
["Coords"] = 7600,
["Copied"] = 19000,
["Copy_edit"] = 2400,
["Copy_to_Wikimedia_Commons"] = 108000,
["Copyvios"] = 4000,
["Cospar"] = 2600,
["Cot"] = 12000,
["Count"] = 669000,
["Country2continent"] = 36000,
["Country2continental"] = 2400,
["Country2nationality"] = 347000,
["CountryPrefixThe"] = 109000,
["Country_abbreviation"] = 89000,
["Country_alias"] = 16000,
["Country_at_games_navbox"] = 2700,
["Country_at_games_navbox/below"] = 2700,
["Country_data"] = 7200,
["Country_data_AFG"] = 2300,
["Country_data_ALB"] = 6800,
["Country_data_ALG"] = 9600,
["Country_data_AND"] = 3100,
["Country_data_ANG"] = 4000,
["Country_data_ARG"] = 48000,
["Country_data_ARM"] = 7600,
["Country_data_AUS"] = 77000,
["Country_data_AUT"] = 46000,
["Country_data_AZE"] = 9400,
["Country_data_Afghanistan"] = 12000,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 20000,
["Country_data_Alberta"] = 3700,
["Country_data_Algeria"] = 25000,
["Country_data_American_Samoa"] = 2900,
["Country_data_Andorra"] = 8200,
["Country_data_Angola"] = 12000,
["Country_data_Anguilla"] = 2500,
["Country_data_Antigua_and_Barbuda"] = 6200,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 81000,
["Country_data_Arizona"] = 2300,
["Country_data_Armenia"] = 22000,
["Country_data_Aruba"] = 3700,
["Country_data_Australia"] = 128000,
["Country_data_Austria"] = 79000,
["Country_data_Azerbaijan"] = 28000,
["Country_data_BAH"] = 4100,
["Country_data_BAN"] = 4000,
["Country_data_BAR"] = 2400,
["Country_data_BEL"] = 52000,
["Country_data_BER"] = 2300,
["Country_data_BHR"] = 4800,
["Country_data_BIH"] = 13000,
["Country_data_BLR"] = 24000,
["Country_data_BOL"] = 5900,
["Country_data_BOT"] = 2500,
["Country_data_BRA"] = 58000,
["Country_data_BUL"] = 26000,
["Country_data_Bahamas"] = 9800,
["Country_data_Bahrain"] = 12000,
["Country_data_Bangladesh"] = 19000,
["Country_data_Barbados"] = 8100,
["Country_data_Belarus"] = 44000,
["Country_data_Belgium"] = 90000,
["Country_data_Belize"] = 5300,
["Country_data_Benin"] = 7500,
["Country_data_Bermuda"] = 5800,
["Country_data_Bhutan"] = 4700,
["Country_data_Bolivia"] = 15000,
["Country_data_Bosnia_and_Herzegovina"] = 29000,
["Country_data_Botswana"] = 9400,
["Country_data_Brazil"] = 103000,
["Country_data_British_Columbia"] = 3500,
["Country_data_British_Raj"] = 2300,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6400,
["Country_data_Bulgaria"] = 53000,
["Country_data_Burkina_Faso"] = 10000,
["Country_data_Burma"] = 2700,
["Country_data_Burundi"] = 6200,
["Country_data_CAM"] = 2200,
["Country_data_CAN"] = 59000,
["Country_data_CGO"] = 2500,
["Country_data_CHE"] = 4900,
["Country_data_CHI"] = 18000,
["Country_data_CHL"] = 2100,
["Country_data_CHN"] = 42000,
["Country_data_CIV"] = 8300,
["Country_data_CMR"] = 8900,
["Country_data_COD"] = 3300,
["Country_data_COL"] = 25000,
["Country_data_CPV"] = 2100,
["Country_data_CRC"] = 6700,
["Country_data_CRO"] = 34000,
["Country_data_CUB"] = 10000,
["Country_data_CYP"] = 9300,
["Country_data_CZE"] = 47000,
["Country_data_California"] = 5900,
["Country_data_Cambodia"] = 9100,
["Country_data_Cameroon"] = 18000,
["Country_data_Canada"] = 123000,
["Country_data_Cape_Verde"] = 6400,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3100,
["Country_data_Cayman_Islands"] = 4200,
["Country_data_Central_African_Republic"] = 5100,
["Country_data_Chad"] = 5600,
["Country_data_Chile"] = 41000,
["Country_data_China"] = 85000,
["Country_data_Chinese_Taipei"] = 20000,
["Country_data_Colombia"] = 47000,
["Country_data_Colorado"] = 5600,
["Country_data_Comoros"] = 4500,
["Country_data_Confederate_States_of_America"] = 3000,
["Country_data_Connecticut"] = 3200,
["Country_data_Cook_Islands"] = 3900,
["Country_data_Costa_Rica"] = 18000,
["Country_data_Croatia"] = 57000,
["Country_data_Cuba"] = 23000,
["Country_data_Curaçao"] = 3600,
["Country_data_Cyprus"] = 23000,
["Country_data_Czech_Republic"] = 82000,
["Country_data_Czechoslovakia"] = 19000,
["Country_data_DEN"] = 35000,
["Country_data_DEU"] = 8900,
["Country_data_DNK"] = 3700,
["Country_data_DOM"] = 7400,
["Country_data_DRC"] = 2000,
["Country_data_Democratic_Republic_of_the_Congo"] = 13000,
["Country_data_Denmark"] = 70000,
["Country_data_Djibouti"] = 4700,
["Country_data_Dominica"] = 4300,
["Country_data_Dominican_Republic"] = 18000,
["Country_data_ECU"] = 12000,
["Country_data_EGY"] = 14000,
["Country_data_ENG"] = 47000,
["Country_data_ESA"] = 2300,
["Country_data_ESP"] = 74000,
["Country_data_EST"] = 15000,
["Country_data_ETH"] = 3700,
["Country_data_EU"] = 3700,
["Country_data_East_Germany"] = 14000,
["Country_data_East_Timor"] = 5100,
["Country_data_Ecuador"] = 25000,
["Country_data_Egypt"] = 32000,
["Country_data_El_Salvador"] = 13000,
["Country_data_Empire_of_Japan"] = 4000,
["Country_data_England"] = 97000,
["Country_data_Equatorial_Guinea"] = 5200,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 35000,
["Country_data_Eswatini"] = 5100,
["Country_data_Ethiopia"] = 13000,
["Country_data_Europe"] = 2400,
["Country_data_European_Union"] = 7400,
["Country_data_FIJ"] = 3900,
["Country_data_FIN"] = 35000,
["Country_data_FRA"] = 100000,
["Country_data_FRG"] = 15000,
["Country_data_FRO"] = 2100,
["Country_data_FR_Yugoslavia"] = 4000,
["Country_data_Faroe_Islands"] = 5500,
["Country_data_Federated_States_of_Micronesia"] = 3100,
["Country_data_Fiji"] = 12000,
["Country_data_Finland"] = 69000,
["Country_data_Florida"] = 6600,
["Country_data_France"] = 195000,
["Country_data_French_Guiana"] = 2100,
["Country_data_French_Polynesia"] = 3800,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2100,
["Country_data_GBR"] = 56000,
["Country_data_GDR"] = 8500,
["Country_data_GEO"] = 14000,
["Country_data_GER"] = 83000,
["Country_data_GHA"] = 10000,
["Country_data_GRE"] = 26000,
["Country_data_GUA"] = 5100,
["Country_data_GUI"] = 3300,
["Country_data_GUY"] = 2300,
["Country_data_Gabon"] = 7700,
["Country_data_Gambia"] = 7000,
["Country_data_Georgia"] = 10000,
["Country_data_Georgia_(U.S._state)"] = 2800,
["Country_data_Georgia_(country)"] = 29000,
["Country_data_German_Empire"] = 5400,
["Country_data_Germany"] = 153000,
["Country_data_Ghana"] = 24000,
["Country_data_Gibraltar"] = 5000,
["Country_data_Great_Britain"] = 75000,
["Country_data_Greece"] = 58000,
["Country_data_Greenland"] = 2900,
["Country_data_Grenada"] = 5400,
["Country_data_Guadeloupe"] = 2800,
["Country_data_Guam"] = 4800,
["Country_data_Guatemala"] = 13000,
["Country_data_Guernsey"] = 2200,
["Country_data_Guinea"] = 8500,
["Country_data_Guinea-Bissau"] = 5100,
["Country_data_Guyana"] = 7500,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 13000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 38000,
["Country_data_Haiti"] = 8900,
["Country_data_Honduras"] = 12000,
["Country_data_Hong_Kong"] = 26000,
["Country_data_Hungary"] = 71000,
["Country_data_IDN"] = 5100,
["Country_data_INA"] = 11000,
["Country_data_IND"] = 31000,
["Country_data_IRE"] = 11000,
["Country_data_IRI"] = 5600,
["Country_data_IRL"] = 22000,
["Country_data_IRN"] = 6500,
["Country_data_IRQ"] = 4300,
["Country_data_ISL"] = 8800,
["Country_data_ISR"] = 21000,
["Country_data_ITA"] = 87000,
["Country_data_Iceland"] = 23000,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 110000,
["Country_data_Indiana"] = 2700,
["Country_data_Indonesia"] = 37000,
["Country_data_Iowa"] = 2900,
["Country_data_Iran"] = 92000,
["Country_data_Iraq"] = 14000,
["Country_data_Ireland"] = 35000,
["Country_data_Isle_of_Man"] = 2900,
["Country_data_Israel"] = 46000,
["Country_data_Italy"] = 146000,
["Country_data_Ivory_Coast"] = 18000,
["Country_data_JAM"] = 10000,
["Country_data_JOR"] = 4200,
["Country_data_JP"] = 8200,
["Country_data_JPN"] = 60000,
["Country_data_Jamaica"] = 21000,
["Country_data_Japan"] = 120000,
["Country_data_Jersey"] = 2600,
["Country_data_Jordan"] = 12000,
["Country_data_KAZ"] = 20000,
["Country_data_KEN"] = 7600,
["Country_data_KGZ"] = 3900,
["Country_data_KOR"] = 32000,
["Country_data_KOS"] = 2500,
["Country_data_KSA"] = 6300,
["Country_data_KUW"] = 4200,
["Country_data_Kazakhstan"] = 34000,
["Country_data_Kenya"] = 20000,
["Country_data_Kingdom_of_France"] = 2100,
["Country_data_Kingdom_of_Great_Britain"] = 4800,
["Country_data_Kingdom_of_Italy"] = 4200,
["Country_data_Kiribati"] = 3000,
["Country_data_Kosovo"] = 9100,
["Country_data_Kuwait"] = 11000,
["Country_data_Kyrgyzstan"] = 9600,
["Country_data_LAT"] = 15000,
["Country_data_LBN"] = 2400,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3200,
["Country_data_LIT"] = 3100,
["Country_data_LTU"] = 13000,
["Country_data_LUX"] = 11000,
["Country_data_LVA"] = 2600,
["Country_data_Laos"] = 7600,
["Country_data_Latvia"] = 33000,
["Country_data_Lebanon"] = 15000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7300,
["Country_data_Libya"] = 8900,
["Country_data_Liechtenstein"] = 7900,
["Country_data_Lithuania"] = 32000,
["Country_data_Luxembourg"] = 24000,
["Country_data_MAC"] = 2500,
["Country_data_MAD"] = 2100,
["Country_data_MAR"] = 12000,
["Country_data_MAS"] = 11000,
["Country_data_MDA"] = 7800,
["Country_data_MEX"] = 31000,
["Country_data_MGL"] = 3000,
["Country_data_MKD"] = 7700,
["Country_data_MLI"] = 4500,
["Country_data_MLT"] = 5700,
["Country_data_MNE"] = 8000,
["Country_data_MON"] = 3800,
["Country_data_MOZ"] = 2300,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3100,
["Country_data_MYS"] = 3800,
["Country_data_Macau"] = 6400,
["Country_data_Macedonia"] = 4900,
["Country_data_Madagascar"] = 9300,
["Country_data_Malawi"] = 5800,
["Country_data_Malaysia"] = 37000,
["Country_data_Maldives"] = 6400,
["Country_data_Mali"] = 13000,
["Country_data_Malta"] = 17000,
["Country_data_Manitoba"] = 2600,
["Country_data_Marshall_Islands"] = 3800,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3000,
["Country_data_Massachusetts"] = 3000,
["Country_data_Mauritania"] = 5900,
["Country_data_Mauritius"] = 8200,
["Country_data_Mexico"] = 67000,
["Country_data_Michigan"] = 4300,
["Country_data_Minnesota"] = 3800,
["Country_data_Missouri"] = 2000,
["Country_data_Moldova"] = 19000,
["Country_data_Monaco"] = 10000,
["Country_data_Mongolia"] = 10000,
["Country_data_Montana"] = 2100,
["Country_data_Montenegro"] = 18000,
["Country_data_Montserrat"] = 2500,
["Country_data_Morocco"] = 28000,
["Country_data_Mozambique"] = 7500,
["Country_data_Myanmar"] = 14000,
["Country_data_NAM"] = 3600,
["Country_data_NED"] = 61000,
["Country_data_NEP"] = 2900,
["Country_data_NGA"] = 8400,
["Country_data_NGR"] = 8200,
["Country_data_NIR"] = 10000,
["Country_data_NLD"] = 6300,
["Country_data_NOR"] = 30000,
["Country_data_NZ"] = 3200,
["Country_data_NZL"] = 33000,
["Country_data_Namibia"] = 10000,
["Country_data_Nauru"] = 2500,
["Country_data_Nazi_Germany"] = 9900,
["Country_data_Nepal"] = 17000,
["Country_data_Netherlands"] = 115000,
["Country_data_Netherlands_Antilles"] = 2300,
["Country_data_New_Brunswick"] = 2500,
["Country_data_New_Caledonia"] = 3400,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 5800,
["Country_data_New_York"] = 4900,
["Country_data_New_York_(state)"] = 7000,
["Country_data_New_Zealand"] = 67000,
["Country_data_Newfoundland_and_Labrador"] = 2300,
["Country_data_Nicaragua"] = 8400,
["Country_data_Niger"] = 6000,
["Country_data_Nigeria"] = 33000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 14000,
["Country_data_North_Macedonia"] = 18000,
["Country_data_Northern_Ireland"] = 15000,
["Country_data_Northern_Mariana_Islands"] = 2900,
["Country_data_Norway"] = 73000,
["Country_data_Nova_Scotia"] = 2300,
["Country_data_OMA"] = 2800,
["Country_data_Ohio"] = 4800,
["Country_data_Oman"] = 9000,
["Country_data_Ontario"] = 3900,
["Country_data_Ottoman_Empire"] = 2500,
["Country_data_PAK"] = 8100,
["Country_data_PAN"] = 5800,
["Country_data_PAR"] = 10000,
["Country_data_PER"] = 12000,
["Country_data_PHI"] = 12000,
["Country_data_PHL"] = 2600,
["Country_data_PNG"] = 2700,
["Country_data_POL"] = 51000,
["Country_data_POR"] = 32000,
["Country_data_PRC"] = 2200,
["Country_data_PRK"] = 4600,
["Country_data_PRT"] = 2900,
["Country_data_PUR"] = 7400,
["Country_data_Pakistan"] = 29000,
["Country_data_Palau"] = 3000,
["Country_data_Palestine"] = 6900,
["Country_data_Panama"] = 16000,
["Country_data_Papua_New_Guinea"] = 8000,
["Country_data_Paraguay"] = 21000,
["Country_data_Pennsylvania"] = 3700,
["Country_data_People's_Republic_of_China"] = 3200,
["Country_data_Peru"] = 31000,
["Country_data_Philippines"] = 35000,
["Country_data_Poland"] = 151000,
["Country_data_Portugal"] = 69000,
["Country_data_Prussia"] = 2600,
["Country_data_Puerto_Rico"] = 17000,
["Country_data_QAT"] = 8000,
["Country_data_Qatar"] = 18000,
["Country_data_Quebec"] = 4200,
["Country_data_ROM"] = 13000,
["Country_data_ROU"] = 27000,
["Country_data_RSA"] = 32000,
["Country_data_RUS"] = 63000,
["Country_data_RWA"] = 2100,
["Country_data_Republic_of_China"] = 5700,
["Country_data_Republic_of_Ireland"] = 26000,
["Country_data_Republic_of_the_Congo"] = 7800,
["Country_data_Romania"] = 69000,
["Country_data_Russia"] = 115000,
["Country_data_Russian_Empire"] = 4900,
["Country_data_Rwanda"] = 7800,
["Country_data_SAM"] = 3100,
["Country_data_SCG"] = 3100,
["Country_data_SCO"] = 26000,
["Country_data_SEN"] = 8200,
["Country_data_SER"] = 3600,
["Country_data_SGP"] = 2900,
["Country_data_SIN"] = 7000,
["Country_data_SLO"] = 19000,
["Country_data_SLV"] = 3100,
["Country_data_SMR"] = 3200,
["Country_data_SPA"] = 4800,
["Country_data_SRB"] = 27000,
["Country_data_SRI"] = 4800,
["Country_data_SUI"] = 43000,
["Country_data_SUR"] = 2100,
["Country_data_SVK"] = 29000,
["Country_data_SVN"] = 6800,
["Country_data_SWE"] = 57000,
["Country_data_SWI"] = 4800,
["Country_data_SYR"] = 3700,
["Country_data_Saint_Kitts_and_Nevis"] = 4800,
["Country_data_Saint_Lucia"] = 5000,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 4900,
["Country_data_Samoa"] = 7800,
["Country_data_San_Marino"] = 8600,
["Country_data_Saskatchewan"] = 2900,
["Country_data_Saudi_Arabia"] = 20000,
["Country_data_Scotland"] = 52000,
["Country_data_Senegal"] = 18000,
["Country_data_Serbia"] = 55000,
["Country_data_Serbia_and_Montenegro"] = 5100,
["Country_data_Seychelles"] = 5600,
["Country_data_Sierra_Leone"] = 7500,
["Country_data_Singapore"] = 27000,
["Country_data_Slovakia"] = 51000,
["Country_data_Slovenia"] = 43000,
["Country_data_Solomon_Islands"] = 4700,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 70000,
["Country_data_South_Carolina"] = 3200,
["Country_data_South_Korea"] = 67000,
["Country_data_South_Sudan"] = 4300,
["Country_data_Soviet_Union"] = 37000,
["Country_data_Spain"] = 134000,
["Country_data_Sri_Lanka"] = 19000,
["Country_data_Sudan"] = 8300,
["Country_data_Suriname"] = 6500,
["Country_data_Sweden"] = 102000,
["Country_data_Switzerland"] = 84000,
["Country_data_Syria"] = 16000,
["Country_data_São_Tomé_and_Príncipe"] = 3400,
["Country_data_TAN"] = 2600,
["Country_data_TCH"] = 11000,
["Country_data_THA"] = 22000,
["Country_data_TJK"] = 2800,
["Country_data_TKM"] = 2900,
["Country_data_TOG"] = 2100,
["Country_data_TPE"] = 16000,
["Country_data_TRI"] = 4800,
["Country_data_TUN"] = 11000,
["Country_data_TUR"] = 28000,
["Country_data_Taiwan"] = 13000,
["Country_data_Tajikistan"] = 9200,
["Country_data_Tanzania"] = 13000,
["Country_data_Texas"] = 5300,
["Country_data_Thailand"] = 45000,
["Country_data_Togo"] = 7100,
["Country_data_Tonga"] = 6500,
["Country_data_Trinidad_and_Tobago"] = 14000,
["Country_data_Tunisia"] = 22000,
["Country_data_Turkey"] = 72000,
["Country_data_Turkmenistan"] = 8100,
["Country_data_Turks_and_Caicos_Islands"] = 2700,
["Country_data_Tuvalu"] = 2900,
["Country_data_U.S."] = 2100,
["Country_data_U.S._Virgin_Islands"] = 4800,
["Country_data_UAE"] = 9500,
["Country_data_UGA"] = 4300,
["Country_data_UK"] = 19000,
["Country_data_UKGBI"] = 3100,
["Country_data_UKR"] = 38000,
["Country_data_URS"] = 14000,
["Country_data_URU"] = 15000,
["Country_data_US"] = 4900,
["Country_data_USA"] = 135000,
["Country_data_USSR"] = 4500,
["Country_data_UZB"] = 12000,
["Country_data_Uganda"] = 13000,
["Country_data_Ukraine"] = 74000,
["Country_data_United_Arab_Emirates"] = 20000,
["Country_data_United_Kingdom"] = 89000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4400,
["Country_data_United_Nations"] = 4000,
["Country_data_United_States"] = 284000,
["Country_data_United_States_of_America"] = 5000,
["Country_data_Uruguay"] = 29000,
["Country_data_Uzbekistan"] = 21000,
["Country_data_VEN"] = 17000,
["Country_data_VIE"] = 6600,
["Country_data_Vanuatu"] = 5200,
["Country_data_Vatican_City"] = 2300,
["Country_data_Venezuela"] = 33000,
["Country_data_Vietnam"] = 23000,
["Country_data_Virginia"] = 2900,
["Country_data_WAL"] = 17000,
["Country_data_Wales"] = 34000,
["Country_data_Washington"] = 3400,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3600,
["Country_data_West_Germany"] = 24000,
["Country_data_West_Indies"] = 2600,
["Country_data_Wisconsin"] = 5200,
["Country_data_YUG"] = 9900,
["Country_data_Yemen"] = 7900,
["Country_data_Yugoslavia"] = 18000,
["Country_data_ZAF"] = 4700,
["Country_data_ZAM"] = 3400,
["Country_data_ZIM"] = 8300,
["Country_data_Zambia"] = 9800,
["Country_data_Zimbabwe"] = 18000,
["Country_flagbio"] = 28000,
["Country_name"] = 23000,
["Country_showdata"] = 6200,
["Country_topics"] = 22000,
["County"] = 7900,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 6400,
["Course_instructor"] = 2500,
["Cquote"] = 37000,
["Cr"] = 4300,
["Cr-rt"] = 2100,
["Create_taxonomy/link"] = 108000,
["Cref2"] = 2300,
["Cricinfo"] = 24000,
["Cricketarchive"] = 3100,
["Crime_opentask"] = 49000,
["Croatian_Census_2021"] = 3600,
["Cross"] = 3100,
["Crossreference"] = 2600,
["Crossreference/styles.css"] = 2600,
["Csv"] = 3000,
["Ct"] = 12000,
["Curlie"] = 6800,
["Currency"] = 3600,
["Current_events"] = 8300,
["Current_events/styles.css"] = 8300,
["Currentdate"] = 23000,
["Cvt"] = 105000,
["Cycling_Archives"] = 4300,
["Cycling_archives"] = 2500,
["Cycling_data_LTD"] = 2100,
["Cycling_data_MOV_men"] = 2000,
["Cycling_data_TJV"] = 2100,
["Cycling_team_link"] = 12000,
["Module:CFB_schedule"] = 26000,
["Module:CallAssert"] = 245000,
["Module:CanadaByProvinceCatNav"] = 8400,
["Module:Cat_main"] = 200000,
["Module:Catalog_lookup_link"] = 516000,
["Module:Category_described_in_year"] = 5700,
["Module:Category_described_in_year/conf"] = 5700,
["Module:Category_handler"] = 4580000,
["Module:Category_handler/blacklist"] = 4580000,
["Module:Category_handler/config"] = 4580000,
["Module:Category_handler/data"] = 4580000,
["Module:Category_handler/shared"] = 4580000,
["Module:Category_more_if_exists"] = 40000,
["Module:Category_pair"] = 6100,
["Module:Category_see_also"] = 39000,
["Module:Celestial_object_quadrangle"] = 2300,
["Module:Check_DYK_hook"] = 115000,
["Module:Check_for_clobbered_parameters"] = 1220000,
["Module:Check_for_deprecated_parameters"] = 60000,
["Module:Check_for_unknown_parameters"] = 19200000,
["Module:Check_isxn"] = 481000,
["Module:Check_winner_by_scores"] = 13000,
["Module:Checkuser"] = 76000,
["Module:Chem2"] = 5100,
["Module:Chem2/styles.css"] = 5100,
["Module:Citation/CS1"] = 5630000,
["Module:Citation/CS1/COinS"] = 5630000,
["Module:Citation/CS1/Configuration"] = 5630000,
["Module:Citation/CS1/Date_validation"] = 5630000,
["Module:Citation/CS1/Identifiers"] = 5630000,
["Module:Citation/CS1/Suggestions"] = 25000,
["Module:Citation/CS1/Utilities"] = 5630000,
["Module:Citation/CS1/Whitelist"] = 5630000,
["Module:Citation/CS1/styles.css"] = 5770000,
["Module:Cite_IUCN"] = 58000,
["Module:Cite_Q"] = 48000,
["Module:Cite_tweet"] = 37000,
["Module:Cite_web"] = 40000,
["Module:Clade"] = 7700,
["Module:Class"] = 10300000,
["Module:Class/definition.json"] = 10300000,
["Module:Class/styles.css"] = 9380000,
["Module:Class_mask"] = 10600000,
["Module:Clickable_button_2"] = 967000,
["Module:Collapsible_list"] = 54000,
["Module:College_color"] = 129000,
["Module:College_color/data"] = 129000,
["Module:Color_contrast"] = 503000,
["Module:Color_contrast/colors"] = 505000,
["Module:Commons_link"] = 259000,
["Module:Complex_date"] = 66000,
["Module:Convert"] = 1240000,
["Module:Convert/data"] = 1240000,
["Module:Convert/helper"] = 8700,
["Module:Convert/text"] = 1240000,
["Module:Convert/wikidata"] = 3300,
["Module:Convert/wikidata/data"] = 3300,
["Module:ConvertNumeric"] = 15000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1340000,
["Module:Coordinates/styles.css"] = 1340000,
["Module:Copied"] = 19000,
["Module:Count_banners"] = 48000,
["Module:CountryAdjectiveDemonym"] = 45000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 45000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 45000,
["Module:CountryAdjectiveDemonym/The"] = 45000,
["Module:CountryData"] = 143000,
["Module:CountryData/cacheA"] = 12000,
["Module:CountryData/cacheB"] = 8400,
["Module:CountryData/cacheC"] = 12000,
["Module:CountryData/cacheD"] = 4600,
["Module:CountryData/cacheE"] = 2800,
["Module:CountryData/cacheF"] = 2600,
["Module:CountryData/cacheG"] = 2700,
["Module:CountryData/summary"] = 143000,
["Module:Country_adjective"] = 4300,
["Module:Country_alias"] = 53000,
["Module:Country_alias/data"] = 53000,
["Module:Currency"] = 3700,
["Module:Currency/Presentation"] = 3700,
}
aced898b85e10a9ce468c2d9ace38513eb8d4392
Template:High-risk
10
596
1341
1340
2023-10-01T10:12:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:High-risk]]
wikitext
text/x-wiki
#REDIRECT [[Template:High-use]]
{{Rcat shell|
{{R with Wikidata item}}
{{R from merge}}
{{R from template shortcut}}
}}
52c9a8c75748fd2b20183ed6c60e1f3c3a435cc9
Template:Tracks and uses Wikidata
10
597
1343
1342
2023-10-01T10:12:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tracks_and_uses_Wikidata]]
wikitext
text/x-wiki
<onlyinclude><includeonly>{{sister project
|position = {{{position|}}}
|image = [[File:Wikidata-logo-without-paddings.svg|30px|class=noviewer|alt=|link=]]
|text = This {{module other|module|template}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] and uses<!--
--> {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details.<!--
--> | [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}: {{#invoke:Uses Wikidata|tuProperty}} }}
}}{{#switch:{{SUBPAGENAME}}|sandbox|testcases|doc=<!--nocat-->|#default={{#ifeq:{{PAGENAME}}|Uses Wikidata|<!--
-->|{{module other|[[Category:Modules using data from Wikidata]] [[Category:Modules tracking Wikidata]]<!--
-->|{{template other|[[Category:Templates using data from Wikidata]] [[Category:Templates tracking Wikidata]]}} }}
}}
}}</includeonly></onlyinclude>
{{Documentation}}
a14be63ad2ca80e80789fd88e86e1340f7e5ef00
Module:Coordinates/doc
828
598
1345
1344
2023-10-01T10:12:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Coordinates/doc]]
wikitext
text/x-wiki
{{High-risk}}
{{Module rating|protected}}
{{Tracks and uses Wikidata|P625}}
{{Lua|Module:Math|Module:Arguments}}
{{Uses TemplateStyles|Module:Coordinates/styles.css}}
'''Note:''' The code which this module's main function (<code>coord</code>) outputs is directly parsed and/or manipulated by [[Module:Location map]] and other functions of this module itself (<code>coord2text</code> and <code>coordinsert</code>). If the structure of the output changes (for example, to use [[:mw:Help:Extension:Kartographer|the <code><nowiki><mapframe></nowiki></code> and <code><nowiki><maplink></nowiki></code> tags]]), please update the aforementioned scripts as well.
==Using the module with coordinsert==
When using the {{tl|Coord}} template inside another template, like an infobox, there may be parameters (like <code><var>type</var>:<var>airport</var></code>) which should be added automatically. To do so, do something like this:
<code>{{#if:{{{coordinates|}}}|{{#invoke:Coordinates|coordinsert|{{{coordinates|}}}|<var>parameter1:value1|parameter2:value2|parameter3:value3…</var>}}|</code>
Do not add more vertical bars <code>|</code> than necessary.
==Using the module with coord2text to extract latitude or longitude==
Developers maintaining legacy code may need to extract latitude or longitude to use a parameters in other code, or a mathematical expression.
The module's "coord2text" function can be used to extract data from the {{tl|Coord}} template. To extract the latitude from a Coord template, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}
To extract the longitude, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}
== Modules using this module directly ==
* [[Module:HS listed building row]]
== Tracking categories ==
* {{clc|Pages with malformed coordinate tags}}
* {{clc|Coordinates not on Wikidata}}
* {{clc|Coordinates on Wikidata}}
* {{clc|Coordinates on Wikidata set to no value}}
* {{clc|Coordinates on Wikidata set to unknown value}}
<includeonly>{{#switch:{{SUBPAGENAME}}|sandbox2|sandbox=|
[[Category:Modules that add a tracking category]]
}}</includeonly>
174a46bca3b8e3d6b54c213ded0b947107295f97
Template:Plainlist
10
599
1347
1346
2023-10-01T10:16:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Plainlist]]
wikitext
text/x-wiki
<templatestyles src="Plainlist/styles.css"/><div class="plainlist {{{class|}}}" {{#if:{{{style|}}}{{{indent|}}}|style="{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
582fe7098c25c1ecfc0ad32f62ecd674ebe2bdf0
Template:Mono
10
461
1349
1012
2023-10-01T10:16:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Mono]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>ifsubst|1=|2=<templatestyles src="Mono/styles.css" />}}<span class="monospaced">{{{2|{{{1}}}}}}</span><noinclude>
{{Documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
800f06823c02b03f8b9cf1e245ad8c4829cfe931
Template:Ifsubst
10
600
1351
1350
2023-10-01T10:16:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ifsubst]]
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#if:{{{demo|}}}
|{{ safesubst:<noinclude/>#ifeq:{{{demo}}} |no
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}
|{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}}
|{{{no|{{{2|}}}}}}
|{{{yes|{{{1|}}}}}}
}}}}<noinclude>
{{Documentation}}
</noinclude>
38e667b5df326086489bf557a5f7c4e43393af78
Template:Mono/styles.css
10
463
1353
1014
2023-10-01T10:16:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Mono/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.monospaced {
/* "monospace, monospace" per [[WP:MONO]] */
font-family: monospace, monospace;
}
cadfc2ad2e42cde230abf3e74ad418f7c4c71ab4
Template:Yesno-yes
10
601
1355
1354
2023-10-01T10:16:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Yesno-yes]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|yes}}}|¬={{{¬|yes}}}|def={{{def|yes}}}}}<noinclude>
{{Documentation|Template:Yesno/doc}}
<!--Categories go in the doc page referenced above; interwikis go in Wikidata.-->
</noinclude>
1644b79058ef2cece539a411edc164d98bb11ebe
Template:Hlist
10
429
1357
935
2023-10-01T10:16:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hlist]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
9e3824c2e3c0e0dbef2f37556ac0b994987fecf9
Module:Template wrapper
828
602
1359
1358
2023-10-01T10:16:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Template_wrapper]]
Scribunto
text/plain
require('strict');
local error_msg = '<span style=\"font-size:100%\" class=\"error\"><code style=\"color:inherit; border:inherit; padding:inherit;\">|_template=</code> missing or empty</span>';
--[[--------------------------< I S _ I N _ T A B L E >--------------------------------------------------------
scan through tbl looking for value; return true if found, false else
]]
local function is_in_table (tbl, value)
for k, v in pairs (tbl) do
if v == value then return true end
end
return false;
end
--[[--------------------------< A D D _ P A R A M E T E R >----------------------------------------------------
adds parameter name and its value to args table according to the state of boolean list argument; kv pair for
template execution; k=v string for template listing.
]]
local function add_parameter (k, v, args, list)
if list then
table.insert( args, table.concat ({k, '=', v})); -- write parameter names and values to args table as string
else
args[k] = v; -- copy parameters to args table
end
end
--[[--------------------------< A L I A S _ M A P _ G E T >----------------------------------------------------
returns a table of local template (parent frame) parameter names and the target template names that match where
in [key]=<value> pairs where:
[key] is local template parameter name (an alias)
<value> is target template parameter name (the canonical parameter name used in the working template)
The parameter |_alias-map= has the form:
|_alias-map=<list>
where <list> is a comma-separated list of alias / canonical parameter name pairs in the form
<from> : <to>
where:
<from> is the local template's parameter name (alias)
<to> is the target template's parameter name (canonical)
for enumerated parameters place an octothorp (#) where the enumerator digits are placed in the parameter names:
<from#> : <to#>
]]
local function alias_map_get (_alias_map)
local T = mw.text.split (_alias_map, '%s*,%s*'); -- convert the comma-separated list into a table of alias pairs
local mapped_aliases = {}; -- mapped aliases will go here
local l_name, t_name; -- parameter names
for _, alias_pair in ipairs (T) do -- loop through the table of alias pairs
l_name, t_name = alias_pair:match ('(.-)%s*:%s*(.+)'); -- from each pair, get local and target parameter names
if l_name and t_name then -- if both are set
if tonumber (l_name) then
l_name = tonumber (l_name); -- convert number-as-text to a number
end
mapped_aliases[l_name] = t_name; -- add them to the map table
end
end
return mapped_aliases;
end
--[[--------------------------< F R A M E _ A R G S _ G E T >--------------------------------------------------
Fetch the wrapper template's 'default' and control parameters; adds default parameters to args
returns content of |_template= parameter (name of the working template); nil else
]]
local function frame_args_get (frame_args, args, list)
local template;
for k, v in pairs (frame_args) do -- here we get the wrapper template's 'default' parameters
if 'string' == type (k) and (v and ('' ~= v)) then -- do not pass along positional or empty parameters
if '_template' == k then
template = v; -- save the name of template that we are wrapping
elseif '_exclude' ~= k and '_reuse' ~= k and '_include-positional' ~= k and '_alias-map' ~= k then -- these already handled so ignore here;
add_parameter (k, v, args, list); -- add all other parameters to args in the style dictated by list
end
end
end
return template; -- return contents of |_template= parameter
end
--[=[--------------------------< P F R A M E _ A R G S _ G E T >------------------------------------------------
Fetches the wrapper template's 'live' parameters; adds live parameters that aren't members of the exclude table to
args table; positional parameters may not be excluded
no return value
]=]
local function pframe_args_get (pframe_args, args, exclude, _include_positional, list)
for k, v in pairs (pframe_args) do
if 'string' == type (k) and not is_in_table (exclude, k) then -- do not pass along excluded parameters
if v and ('' ~= v) then -- pass along only those parameters that have assigned values
if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template
v = ''; -- unset the value in the args table
end
add_parameter (k, v, args, list) -- add all other parameters to args in the style dictated by list; alias map only supported for local-template parameters
end
end
end
if _include_positional then
for i, v in ipairs (pframe_args) do -- pass along positional parameters
if 'unset' == v:lower() then -- special keyword to unset 'default' parameters set in the wrapper template
v = ''; -- unset the value in the args table
end
add_parameter (i, v, args, list);
end
end
end
--[[--------------------------< _ M A I N >--------------------------------------------------------------------
Collect the various default and live parameters into args styled according to boolean list.
returns name of the working or listed template or nil for an error message
]]
local function _main (frame, args, list)
local template;
local exclude = {}; -- table of parameter names for parameters that are not passed to the working template
local reuse_list = {}; -- table of pframe parameter names whose values are modified before they are passed to the working template as the same name
local alias_map = {}; -- table that maps parameter aliases to working template canonical parameter names
local _include_positional;
if frame.args._exclude and ('' ~= frame.args._exclude) then -- if there is |_exclude= and it's not empty
exclude = mw.text.split (frame.args._exclude, "%s*,%s*"); -- make a table from its contents
end
-- TODO: |_reuse= needs a better name (|_reuse=)
if frame.args._reuse and ('' ~= frame.args._reuse) then -- if there is |_reuse= and it's not empty
reuse_list = mw.text.split (frame.args._reuse, "%s*,%s*"); -- make a table from its contents
end
if frame.args['_alias-map'] and ('' ~= frame.args['_alias-map']) then -- if there is |_alias-map= and it's not empty
alias_map = alias_map_get (frame.args['_alias-map']); -- make a table from its contents
end
template = frame_args_get (frame.args, args, list); -- get parameters provided in the {{#invoke:template wrapper|...|...}}
if nil == template or '' == template then -- this is the one parameter that is required by this module
return nil; -- not present, tell calling function to emit an error message
end
_include_positional = 'yes' == frame.args['_include-positional']; -- when true pass all positional parameters along with non-excluded named parameters to ...
-- ... the working template; positional parameters are not excludable
local _pframe_args = frame:getParent().args; -- here we get the wrapper template's 'live' parameters from pframe.args
local pframe_args = {}; -- a local table that we can modify
for k, v in pairs (_pframe_args) do -- make a copy that we can modify
pframe_args[k] = v;
end
-- here we look for pframe parameters that are aliases of canonical parameter names; when found
-- we replace the alias with the canonical. We do this here because the reuse_list works on
-- canonical parameter names so first we convert alias parameter names to canonical names and then
-- we remove those canonical names from the pframe table that are reused (provided to the working
-- template through the frame args table)
for k, v in pairs (alias_map) do -- k is alias name, v is canonical name
if pframe_args[k] then -- if pframe_args has parameter with alias name
pframe_args[v] = _pframe_args[k]; -- create new canonical name with alias' value
pframe_args[k] = nil; -- unset the alias
end
end
for k, v in pairs (pframe_args) do -- do enumerated parameter alias -> canonical translation
if 'string' == type (k) then -- only named parameters can be enumerated
if alias_map[k..'#'] then -- non-enumerated alias matches enumerated parameter pattern? enumerator at end only
pframe_args[alias_map[k..'#']:gsub('#', '')] = v; -- remove '#' and copy parameter to pframe_args table
pframe_args[k] = nil; -- unset the alias
elseif k:match ('%d+') then -- if this parameter name contains digits
local temp = k:gsub ('%d+', '#'); -- make a copy; digits replaced with single '#'
local enum = k:match ('%d+'); -- get the enumerator
if alias_map[temp] then -- if this parameter is a recognized enumerated alias
pframe_args[alias_map[temp]:gsub('#', enum)] = v; -- use canonical name and replace '#' with enumerator and add to pframe_args
pframe_args[k] = nil; -- unset the alias
end
end
end
end
-- pframe parameters that are _reused are 'reused' have the form something like this:
-- |chapter=[[wikisource:{{{chapter}}}|{{{chapter}}}]]
-- where a parameter in the wrapping template is modified and then passed to the working template
-- using the same parameter name (in this example |chapter=)
-- remove parameters that will be reused
for k, v in ipairs (reuse_list) do -- k is numerical index, v is canonical parameter name to ignore
if pframe_args[v] then -- if pframe_args has parameter that should be ignored
pframe_args[v] = nil; -- unset the ignored parameter
end
end
pframe_args_get (pframe_args, args, exclude, _include_positional, list); -- add parameters and values to args that are not listed in the exclude table
return template; -- args now has all default and live parameters, return working template name
end
--[[--------------------------< W R A P >----------------------------------------------------------------------
Template entry point. Call this function to 'execute' the working template
]]
local function wrap (frame)
local args = {}; -- table of default and live parameters and their values to be passed to the wrapped template
local template; -- the name of the working template
template = _main (frame, args, false); -- get default and live parameters and the name of the working template
if not template then -- template name is required
return error_msg; -- emit error message and abandon if template name not present
end
return frame:expandTemplate {title=template, args=args}; -- render the working template
end
--[[--------------------------< L I S T >----------------------------------------------------------------------
Template entry point. Call this function to 'display' the source for the working template. This function added
as a result of a TfD here: Wikipedia:Templates_for_discussion/Log/2018_April_28#Module:PassArguments
This function replaces a similarly named function which was used in {{cite compare}} and {{cite compare2}}
Values in the args table are numerically indexed strings in the form 'name=value'
]]
local function list(frame, do_link)
local args = {}; -- table of default and live parameters and their values to be passed to the listed template
local template; -- the name of the listed template
template = _main (frame, args, true); -- get default and live parameters and the name of the listed template
if not template then -- template name is required
return error_msg; -- emit error message and abandon if template name not present
end
if do_link then
template = ('[[%s|%s]]'):format(frame:expandTemplate{ title='Transclude', args = {template} }, template)
end
table.sort(args)
for i = 1, #args do
local stripped = args[i]:match('^' .. i .. '=([^=]*)$')
if stripped then args[i] = stripped else break end
end
return frame:preprocess(table.concat({
'<code style="color:inherit; background:inherit; border:none;">{{',
template,
('<wbr><nowiki>|%s</nowiki>'):rep(#args):format(unpack(args)), '}}</code>'})); -- render the template
end
local function link (frame)
return list(frame, true)
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
link = link,
list = list,
wrap = wrap,
};
5e3d3ed3f3988725fb0fef6b44479bacc4210f37
Module:Color contrast
828
148
1361
347
2023-10-01T10:16:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Color_contrast]]
Scribunto
text/plain
--
-- This module implements
-- {{Color contrast ratio}}
-- {{Greater color contrast ratio}}
-- {{ColorToLum}}
-- {{RGBColorToLum}}
--
local p = {}
local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' )
local function sRGB (v)
if (v <= 0.03928) then
v = v / 12.92
else
v = math.pow((v+0.055)/1.055, 2.4)
end
return v
end
local function rgbdec2lum(R, G, B)
if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then
return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255)
else
return ''
end
end
local function hsl2lum(h, s, l)
if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then
local c = (1 - math.abs(2*l - 1))*s
local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) )
local m = l - c/2
local r, g, b = m, m, m
if( 0 <= h and h < 60 ) then
r = r + c
g = g + x
elseif( 60 <= h and h < 120 ) then
r = r + x
g = g + c
elseif( 120 <= h and h < 180 ) then
g = g + c
b = b + x
elseif( 180 <= h and h < 240 ) then
g = g + x
b = b + c
elseif( 240 <= h and h < 300 ) then
r = r + x
b = b + c
elseif( 300 <= h and h < 360 ) then
r = r + c
b = b + x
end
return rgbdec2lum(255*r, 255*g, 255*b)
else
return ''
end
end
local function color2lum(c)
if (c == nil) then
return ''
end
-- html '#' entity
c = c:gsub("#", "#")
-- whitespace
c = c:match( '^%s*(.-)[%s;]*$' )
-- unstrip nowiki strip markers
c = mw.text.unstripNoWiki(c)
-- lowercase
c = c:lower()
-- first try to look it up
local L = HTMLcolor[c]
if (L ~= nil) then
return L
end
-- convert from hsl
if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100)
end
-- convert from rgb
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$')
return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B))
end
-- convert from rgb percent
if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then
local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$')
return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100)
end
-- remove leading # (if there is one) and whitespace
c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$')
-- split into rgb
local cs = mw.text.split(c or '', '')
if( #cs == 6 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2])
local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4])
local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6])
return rgbdec2lum(R, G, B)
elseif ( #cs == 3 ) then
local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1])
local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2])
local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3])
return rgbdec2lum(R, G, B)
end
-- failure, return blank
return ''
end
-- This exports the function for use in other modules.
-- The colour is passed as a string.
function p._lum(color)
return color2lum(color)
end
function p._greatercontrast(args)
local bias = tonumber(args['bias'] or '0') or 0
local css = (args['css'] and args['css'] ~= '') and true or false
local v1 = color2lum(args[1] or '')
local c2 = args[2] or '#FFFFFF'
local v2 = color2lum(c2)
local c3 = args[3] or '#000000'
local v3 = color2lum(c3)
local ratio1 = -1;
local ratio2 = -1;
if (type(v1) == 'number' and type(v2) == 'number') then
ratio1 = (v2 + 0.05)/(v1 + 0.05)
ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1
end
if (type(v1) == 'number' and type(v3) == 'number') then
ratio2 = (v3 + 0.05)/(v1 + 0.05)
ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2
end
if css then
local c1 = args[1] or ''
if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c1 = '#' .. c1
end
if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c2 = '#' .. c2
end
if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or
mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then
c3 = '#' .. c3
end
return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';'
end
return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or ''
end
function p._ratio(args)
local v1 = color2lum(args[1])
local v2 = color2lum(args[2])
if (type(v1) == 'number' and type(v2) == 'number') then
-- v1 should be the brighter of the two.
if v2 > v1 then
v1, v2 = v2, v1
end
return (v1 + 0.05)/(v2 + 0.05)
else
return args['error'] or '?'
end
end
function p._styleratio(args)
local style = (args[1] or ''):lower()
local bg, fg = 'white', 'black'
local lum_bg, lum_fg = 1, 0
if args[2] then
local lum = color2lum(args[2])
if lum ~= '' then bg, lum_bg = args[2], lum end
end
if args[3] then
local lum = color2lum(args[3])
if lum ~= '' then fg, lum_fg = args[3], lum end
end
local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '#', '#'), ';')
for k = 1,#slist do
local s = slist[k]
local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' )
k = k or ''
v = v or ''
if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_bg = v, lum end
elseif (k:match('^[%s]*(color)[%s]*$')) then
local lum = color2lum(v)
if( lum ~= '' ) then bg, lum_fg = v, lum end
end
end
if lum_bg > lum_fg then
return (lum_bg + 0.05)/(lum_fg + 0.05)
else
return (lum_fg + 0.05)/(lum_bg + 0.05)
end
end
--[[
Use {{#invoke:Color contrast|somecolor}} directly or
{{#invoke:Color contrast}} from a wrapper template.
Parameters:
-- |1= — required; A color to check.
--]]
function p.lum(frame)
local color = frame.args[1] or frame:getParent().args[1]
return p._lum(color)
end
function p.ratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._ratio(args)
end
function p.styleratio(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._styleratio(args)
end
function p.greatercontrast(frame)
local args = frame.args[1] and frame.args or frame:getParent().args
return p._greatercontrast(args)
end
return p
1e399769117591366a63f62996c9a407077cc711
Module:Color contrast/colors
828
150
1363
350
2023-10-01T10:16:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Color_contrast/colors]]
Scribunto
text/plain
return {
aliceblue = 0.92880068253475,
antiquewhite = 0.84646951707754,
aqua = 0.7874,
aquamarine = 0.8078549208338,
azure = 0.97265264954166,
beige = 0.8988459998705,
bisque = 0.80732327372979,
black = 0,
blanchedalmond = 0.85084439608156,
blue = 0.0722,
blueviolet = 0.12622014321946,
brown = 0.098224287876511,
burlywood = 0.51559844533893,
cadetblue = 0.29424681085422,
chartreuse = 0.76032025902623,
chocolate = 0.23898526114557,
coral = 0.37017930872924,
cornflowerblue = 0.30318641994179,
cornsilk = 0.93562110372965,
crimson = 0.16042199953026,
cyan = 0.7874,
darkblue = 0.018640801980939,
darkcyan = 0.20329317839046,
darkgoldenrod = 0.27264703559993,
darkgray = 0.39675523072563,
darkgreen = 0.091143429047575,
darkgrey = 0.39675523072563,
darkkhaki = 0.45747326349994,
darkmagenta = 0.07353047651207,
darkolivegreen = 0.12651920884889,
darkorange = 0.40016167026524,
darkorchid = 0.13413142174857,
darkred = 0.054889674531132,
darksalmon = 0.40541471563381,
darkseagreen = 0.43789249325969,
darkslateblue = 0.065792846227988,
darkslategray = 0.067608151928044,
darkslategrey = 0.067608151928044,
darkturquoise = 0.4874606277449,
darkviolet = 0.10999048339343,
deeppink = 0.23866895828276,
deepskyblue = 0.44481603395575,
dimgray = 0.14126329114027,
dimgrey = 0.14126329114027,
dodgerblue = 0.27442536991456,
firebrick = 0.10724525535015,
floralwhite = 0.95922484825004,
forestgreen = 0.18920812076002,
fuchsia = 0.2848,
gainsboro = 0.71569350050648,
ghostwhite = 0.94311261886323,
gold = 0.69860877428159,
goldenrod = 0.41919977809569,
gray = 0.2158605001139,
green = 0.15438342968146,
greenyellow = 0.80609472611453,
grey = 0.2158605001139,
honeydew = 0.96336535554782,
hotpink = 0.34658438169715,
indianred = 0.21406134963884,
indigo = 0.03107561486337,
ivory = 0.99071270600615,
khaki = 0.77012343394121,
lavender = 0.80318750514521,
lavenderblush = 0.90172748631046,
lawngreen = 0.73905893124963,
lemonchiffon = 0.94038992245622,
lightblue = 0.63709141280807,
lightcoral = 0.35522120733135,
lightcyan = 0.94587293494829,
lightgoldenrodyellow = 0.93348351018297,
lightgray = 0.65140563741982,
lightgreen = 0.69091979956865,
lightgrey = 0.65140563741982,
lightpink = 0.58566152734898,
lightsalmon = 0.4780675225206,
lightseagreen = 0.35050145117042,
lightskyblue = 0.56195637618331,
lightslategray = 0.23830165007287,
lightslategrey = 0.23830165007287,
lightsteelblue = 0.53983888284666,
lightyellow = 0.98161818392882,
lime = 0.7152,
limegreen = 0.44571042246098,
linen = 0.88357340984379,
magenta = 0.2848,
maroon = 0.045891942324215,
mediumaquamarine = 0.49389703310801,
mediumblue = 0.044077780212328,
mediumorchid = 0.21639251153773,
mediumpurple = 0.22905858091648,
mediumseagreen = 0.34393112338131,
mediumslateblue = 0.20284629471622,
mediumspringgreen = 0.70704308194184,
mediumturquoise = 0.5133827926448,
mediumvioletred = 0.14371899849357,
midnightblue = 0.02071786635086,
mintcream = 0.97834604947588,
mistyrose = 0.82183047859185,
moccasin = 0.80083000991567,
navajowhite = 0.76519682342785,
navy = 0.015585128108224,
oldlace = 0.91900633405549,
olive = 0.20027537200568,
olivedrab = 0.22593150951929,
orange = 0.4817026703631,
orangered = 0.25516243753416,
orchid = 0.31348806761439,
palegoldenrod = 0.78792647887614,
palegreen = 0.77936759006353,
paleturquoise = 0.76436077921714,
palevioletred = 0.28754994117889,
papayawhip = 0.87797100199835,
peachpuff = 0.74905589878251,
peru = 0.30113074877936,
pink = 0.63271070702466,
plum = 0.45734221587969,
powderblue = 0.68254586500605,
purple = 0.061477070432439,
rebeccapurple = 0.07492341159447,
red = 0.2126,
rosybrown = 0.32319457649407,
royalblue = 0.16663210743188,
saddlebrown = 0.097922285020521,
salmon = 0.36977241527596,
sandybrown = 0.46628543696283,
seagreen = 0.19734199706275,
seashell = 0.92737862206922,
sienna = 0.13697631337098,
silver = 0.52711512570581,
skyblue = 0.55291668518184,
slateblue = 0.14784278062136,
slategray = 0.20896704076536,
slategrey = 0.20896704076536,
snow = 0.96533341834849,
springgreen = 0.73052306068529,
steelblue = 0.20562642207625,
tan = 0.48237604163921,
teal = 0.16996855778968,
thistle = 0.56818401093733,
tomato = 0.30638612719415,
turquoise = 0.5895536427578,
violet = 0.40315452986676,
wheat = 0.74909702820482,
white = 1,
whitesmoke = 0.91309865179342,
yellow = 0.9278,
yellowgreen = 0.50762957208707,
}
6ae47fdb24de4eed5ec26d203faf5341a388987b
Template:Navbox bottom
10
603
1365
1364
2023-10-01T10:16:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbox_bottom]]
wikitext
text/x-wiki
<includeonly>{{#invoke:navbox top and bottom|bottom}}</includeonly><noinclude>
{{documentation|Template:Navbox top/doc}}</noinclude>
65e502a67d1bc2bba488cdada997a395b417883c
Template:Navbox top
10
604
1367
1366
2023-10-01T10:16:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbox_top]]
wikitext
text/x-wiki
<includeonly>{{#invoke:navbox top and bottom|top}}</includeonly><noinclude>
{{documentation}}
</noinclude>
d92793ae2725f6cbd0007a404bcce9a530d30349
Module:Navbox top and bottom
828
605
1369
1368
2023-10-01T10:16:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbox_top_and_bottom]]
Scribunto
text/plain
-- This implements {{navbox top}} and {{navbox bottom}}
local p = {}
local function build_navbox(parentArgs, list)
local args = {}
for argName, value in pairs(parentArgs) do
if value ~= '' then
if type(argName) == 'string' then
args[argName] = value
end
end
end
args['bodystyle'] = 'display:table;' .. (args['bodystyle'] or '')
args['list1padding'] = '0'
args['list1style'] = 'border-width:0;'
args['list1'] = list
-- Note Navbox.navbox() has a kludge to order the parent frame's args
-- into a specific order. For now, this is omitted from this module.
local Navbox = require('Module:Navbox')
return Navbox._navbox(args)
end
function p.top(frame)
local args = frame:getParent().args
local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>')
return parts[1]
end
function p.bottom(frame)
local args = frame:getParent().args
local parts = mw.text.split(build_navbox(args, '<ADD LIST HERE>'), '<ADD LIST HERE>')
return parts[2]
end
return p
ac5dfc18e5611b01115dbf9818d1cf54ee5156d2
Template:Bulleted list
10
606
1371
1370
2023-10-01T10:16:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Bulleted_list]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|bulleted}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
37ac60a83d34c2df10fb601002557ad1b55919bb
Template:Ordered list
10
607
1373
1372
2023-10-01T10:16:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ordered_list]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:list|ordered}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c74568f5fac4f743ef2e52f830e220d8cdbc3ae1
Template:Columns-list
10
608
1375
1374
2023-10-01T10:16:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Columns-list]]
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{{{{|safesubst:}}}#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}</includeonly>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude>
{{documentation}}
</noinclude>
af8bdb75f288fe4d8e225dee6d1fe7cfad8e6a7e
Template:Category link
10
609
1377
1376
2023-10-01T10:16:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Category_link]]
wikitext
text/x-wiki
{{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}( {{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}} ){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude>
{{Documentation}}
</noinclude>
cb0fcaeb8242d1d37c27a8dcb57f76fe5b5faa36
Template:Cl
10
610
1379
1378
2023-10-01T10:16:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cl]]
wikitext
text/x-wiki
#REDIRECT [[Template:Category link]]
{{R from move}}
f79fddc38797fc163b6e6ddeb4377afbea7d0cfc
Template:Endplainlist
10
611
1381
1380
2023-10-01T10:16:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Endplainlist]]
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{documentation|Template:Plainlist/doc}}
</noinclude>
d545c41582328dd4f197e2b1848c8ad7392b92e0
Template:Cslist
10
612
1383
1382
2023-10-01T10:16:54Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cslist]]
wikitext
text/x-wiki
<templatestyles src="Cslist/styles.css" />{{#invoke:Cslist |makelist}}<noinclude>
{{documentation}}
</noinclude>
8de0ef2dc8a52f1f2d050ca747d583cd776a0b84
Template:Cslist/styles.css
10
613
1385
1384
2023-10-01T10:16:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cslist/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
/* make an inline list with either comma or semicolon separators */
ul.cslist,
ul.sslist {
margin: 0;
padding: 0;
display: inline-block;
list-style: none;
}
ul.cslist-embedded {
display: inline;
}
.cslist li, .sslist li {
margin: 0;
padding: 0 0.25em 0 0;
display: inline-block;
}
.cslist li:after {
content: ", ";
}
.sslist li:after {
content: "; ";
}
.cslist li:last-child:after,
.sslist li:last-child:after {
content: none;
}
b7fc7c7a6f4e14d23d0a7483f5727aec838c7a21
Module:Cslist
828
614
1387
1386
2023-10-01T10:16:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Cslist]]
Scribunto
text/plain
p = {}
p.makelist = function(frame)
local args = frame.args
if not args[1] then
args = frame:getParent().args
if not args[1] then return end
end
local semi = (args.semi or ""):sub(1,1):lower()
semi = (semi == "t") or (semi == "y")
local embedded = (args.embedded or ""):sub(1,1):lower()
embedded = (embedded == "y")
local out = ""
for k, v in ipairs(args) do
v = mw.text.trim(v)
if v ~= "" then
out = out .. "<li>" .. v .. "</li>"
end
end
local listclass = ""
if semi then
listclass = listclass .. "sslist"
else
listclass = listclass .. "cslist"
end
if embedded then
listclass = listclass .. " cslist-embedded"
end
if out ~= "" then
return '<ul class="'.. listclass ..'">' .. out .. '</ul>'
end
end
return p
82fa872fef0f065ea5b7e6639e4390c93142fac9
Module:WLink
828
615
1389
1388
2023-10-01T10:16:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:WLink]]
Scribunto
text/plain
local WLink = { suite = "WLink",
serial = "2016-10-05" };
--[=[
ansiPercent()
formatURL()
getArticleBase()
getBaseTitle()
getEscapedTitle()
getExtension()
getFile()
getFragment()
getLanguage()
getNamespace()
getPlain()
getProject()
getTarget()
getTargetPage()
getTitle()
getWeblink()
isBracketedLink()
isBracketedURL()
isCategorization()
isExternalLink()
isInterlanguage()
isInterwiki()
isMedia()
isTitledLink()
isValidLink()
isWikilink()
wikilink()
failsafe()
]=]
-- local globals
local URLutil = false;
local utilURL = function ()
-- Attach URLutil library module
-- Postcondition:
-- Returns table, with URLutil library
-- Throws error, if not available
if not URLutil then
local lucky, util = pcall( require, "Module:URLutil" );
if lucky then
if type( util ) == "table" then
URLutil = util.URLutil();
end
util = "library URLutil invalid";
end
if type( URLutil ) ~= "table" then
error( util, 0 );
end
end
return URLutil;
end -- utilURL()
local contentExtlink = function ( attempt )
-- Retrieve span of external link between brackets
-- Precondition:
-- attempt -- string, with presumable link
-- the first char is expected to be "["
-- Postcondition:
-- Returns string, number, number
-- string including whitespace
-- number with index of relevant "["
-- number with index after relevant "]"
-- false if nothing found
local r1 = false;
local r2 = false;
local r3 = attempt:find( "]", 2, true );
if r3 then
local s = attempt:sub( 2, r3 - 1 );
local i = s:find( "[", 1, true );
if i then
r1 = s:sub( i + 1 );
r2 = i;
else
r1 = s;
r2 = 1;
end
else
r3 = false;
end
return r1, r2, r3;
end -- contentExtlink()
local contentWikilink = function ( attempt )
-- Retrieve span of wikilink between brackets
-- Precondition:
-- attempt -- string, with presumable link
-- the first two chars are expected to be "[["
-- Postcondition:
-- Returns string, number, number
-- string including whitespace
-- number with index of relevant "[["
-- number with index after relevant "]]"
-- false if nothing found
local r1 = false;
local r2 = false;
local r3 = attempt:find( "]]", 3, true );
if r3 then
local s = attempt:sub( 3, r3 - 1 );
local i = s:find( "[[", 1, true );
if i then
r1 = s:sub( i + 2 );
r2 = i;
else
r1 = s;
r2 = 1;
end
end
return r1, r2, r3;
end -- contentWikilink()
local extractExtlink = function ( attempt )
-- Retrieve external link
-- Precondition:
-- attempt -- string, with presumable link
-- the first char is expected to be "["
-- Postcondition:
-- Returns string, string
-- first with target and title
-- second result false if not titled
-- false if nothing found
local r1 = false;
local r2 = false;
local s = contentExtlink( attempt );
if s then
local i = s:find( "%s", 1 );
if i then
r1 = s:sub( 1, i - 1 );
r2 = mw.text.trim( s:sub( i + 1 ) );
if r2 == "" then
r2 = false;
end
else
r1 = s;
end
if r1 then
r1 = mw.text.trim( r1 );
if r1 == "" or
not utilURL().isResourceURL( r1 ) then
r1 = false;
end
end
if not r1 then
r2 = false;
end
end
return r1, r2;
end -- extractExtlink()
local extractWikilink = function ( attempt )
-- Retrieve wikilink
-- Precondition:
-- attempt -- string, with presumable link
-- the first two chars are expected to be "[["
-- Postcondition:
-- Returns string, string
-- first with target
-- second result title, or false if not piped
-- false if nothing found
local r1 = false;
local r2 = false;
local s = contentWikilink( attempt );
if s then
local i = s:find( "|", 1, true );
if i then
r1 = s:sub( 1, i - 1 );
r2 = s:sub( i + 1 );
else
r1 = s;
end
r1 = mw.text.trim( r1 );
if r1 == "" then
r1 = false;
else
r1 = r1:gsub( "_", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " ", " " )
:gsub( " +", " " );
r1 = mw.text.decode( r1 );
end
end
return r1, r2;
end -- extractWikilink()
local prefix = function ( ask, ahead )
-- Interprete prefix of language or project type
-- Precondition:
-- ask -- string, with presumable prefix
-- ahead -- true, if first segment
-- Postcondition:
-- Returns string,string or nil
-- first string one of "lead", "lang", "project"
-- second string is formatted value
-- type is one of "lead", "lang", "project"
-- nil if nothing found
local r1, r2;
local prefixes = { b = true,
c = "commons",
d = true,
commons = true,
m = "meta",
mediawiki = "mw",
mw = true,
meta = true,
n = true,
q = true,
s = true,
simple = false,
v = true,
voy = true,
w = true,
wikibooks = "b",
wikidata = "d",
wikinews = "n",
wikipedia = "w",
wikiquote = "q",
wikisource = "s",
wikiversity = "v",
wikivoyage = "voy",
wikt = true,
wiktionary = "wikt"
};
local s = mw.text.trim( ask );
if s == "" then
if ahead then
r1 = "lead";
r2 = true;
end
else
local p;
s = s:lower();
p = prefixes[ s ];
if p == true then
r1 = "project";
r2 = s;
elseif p then
r1 = "project";
r2 = p;
elseif p == false then
r1 = "lang";
r2 = s;
elseif s:match( "^%l%l%l?$" )
and mw.language.isSupportedLanguage( s ) then
r1 = "lang";
r2 = s;
end
end
return r1, r2;
end -- prefix()
local target = function ( attempt, lonely )
-- Retrieve first target (wikilink or URL), or entire string
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- lonely -- remove fragment, if true
-- Postcondition:
-- Returns string, number
-- string, with detected link target, or entire
-- number, with number of brackets, if found, or 2
local r1, r2 = WLink.getTarget( attempt );
if not r1 then
r1 = mw.text.trim( attempt );
r2 = 2;
end
if lonely then
local i = r1:find( "#", 1, true );
if i == 1 then
r1 = "";
elseif i then
r1 = r1:sub( 1, i - 1 );
end
end
return r1, r2;
end -- target()
function WLink.ansiPercent( attempt, alter )
-- Convert string by ANSI encoding rather than UTF-8 encoding
-- Precondition:
-- attempt -- string, with presumable ANSI characters
-- alter -- string or nil, to use for spaces instead of %20
-- Postcondition:
-- Returns string, encoded
local k, s;
local r = attempt;
if alter then
r = r:gsub( " ", alter );
end
for i = mw.ustring.len( r ), 1, -1 do
k = mw.ustring.codepoint( r, i, i );
if k <= 32 or k > 126 then
if k > 255 then
s = mw.ustring.sub( r, i, i );
if k > 2047 then
s = string.format( "%%%2X%%%2X%%%2X",
s:byte( 1, 1 ),
s:byte( 2, 2 ),
s:byte( 3, 3 ) );
else
s = string.format( "%%%2X%%%2X",
s:byte( 1, 1 ),
s:byte( 2, 2 ) );
end
else
s = string.format( "%%%2X", k );
end
r = string.format( "%s%s%s",
mw.ustring.sub( r, 1, i - 1 ),
s,
mw.ustring.sub( r, i + 1 ) );
end
end -- for --i
r = mw.ustring.gsub(r, '^%*', '%%2A')
return r;
end -- WLink.ansiPercent()
function WLink.formatURL( adjust )
-- Create bracketed link, if not yet
-- Precondition:
-- adjust -- string, with URL or domain/path or bracketed link
-- Postcondition:
-- Returns string, with bracketed link
-- false on invalid format
local r;
if type( adjust ) == "string" then
if WLink.isBracketedLink( adjust ) then
r = adjust;
else
local url = mw.text.trim( adjust );
local host;
utilURL();
host = URLutil.getHost( adjust );
if not host then
url = "http://" .. adjust;
host = URLutil.getHost( url );
end
if host then
local path = URLutil.getRelativePath( url );
local show;
if path == "/" then
if not url:match( "/$" ) then
url = url .. "/";
end
show = host;
else
local i = path:find( "#" );
if i then
path = path:sub( 1, i - 1 );
end
show = host .. path;
end
r = string.format( "[%s %s]", url, show );
else
r = adjust;
end
end
else
r = false;
end
return r;
end -- WLink.formatURL()
function WLink.getArticleBase( attempt )
-- Retrieve generic article title, no fragment nor brackets
-- Precondition:
-- attempt -- string, with wikilink or page title
-- current page title, if missing
-- Postcondition:
-- Returns string, with identified lemma, or all
-- false on invalid format
local r;
if attempt then
local m;
r, m = target( attempt, true );
if m ~= 2 then
r = false;
end
else
r = mw.title.getCurrentTitle().text;
end
if r then
local sub = r:match( "^(.*%S) *%(.+%)$" );
if sub then
r = sub;
end
end
return r;
end -- WLink.getArticleBase()
function WLink.getBaseTitle( attempt )
-- Retrieve last segment in subpage, no fragment
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with identified segment, or all
local r;
local s, m = target( attempt, true );
if m == 2 then
local sub = s:match( "/([^/]+)$" );
if sub then
r = sub;
else
r = s;
end
else
r = false;
end
return r;
end -- WLink.getBaseTitle()
function WLink.getEscapedTitle( attempt )
-- Retrieve escaped link title
-- Precondition:
-- attempt -- string, with presumable link title
-- Postcondition:
-- Returns string, with suitable link title
local s = mw.text.trim( attempt );
return s:gsub( "\n", " " )
:gsub( "%[", "[" )
:gsub( "%]", "]" )
:gsub( "|", "|" );
end -- WLink.getEscapedTitle()
function WLink.getExtension( attempt )
-- Retrieve media extension
-- Precondition:
-- attempt -- string, with wikilink (media link) or page title
-- if URL, PDF may be detected
-- Postcondition:
-- Returns string, with detected downcased media type
-- false if no extension found
local r = false;
local s, m = target( attempt );
if m == 2 then
s = s:match( "%.(%a+)$" );
if s then
r = s:lower();
end
elseif s:upper():match( "[%./](PDF)%W?" ) then
r = "pdf";
end
return r;
end -- WLink.getExtension()
function WLink.getFile( attempt )
-- Retrieve media page identifier
-- Precondition:
-- attempt -- string, with wikilink (media link) or page title
-- Postcondition:
-- Returns string, with detected file title
-- no namespace nor project
-- false if no file found
local r = false;
local s, m = target( attempt );
if m == 2 then
local slow = ":" .. s:lower();
local find = function ( a )
local seek = string.format( ":%s:().+%%.%%a+$",
a:lower() );
local join = slow:find( seek );
local ret;
if join then
ret = s:sub( join + #a + 1 );
end
return ret;
end;
r = find( "file" );
if not r then
local trsl = mw.site.namespaces[6];
r = find( trsl.name );
if not r then
trsl = trsl.aliases;
for k, v in pairs( trsl ) do
r = find( v );
if r then
break; -- for k, v
end
end -- for k, v
end
end
end
return r;
end -- WLink.getFile()
function WLink.getFragment( attempt )
-- Retrieve fragment
-- Precondition:
-- attempt -- string, with presumable fragment
-- Postcondition:
-- Returns string, with detected fragment
-- false if no address found
local r = false;
local s, m = target( attempt );
if s then
local i = s:find( "#", 1, true );
if i then
if i > 1 then
s = s:sub( i - 1 );
i = 2;
end
if s:find( "&#", 1, true ) then
s = mw.text.decode( s );
i = s:find( "#", 1, true );
if not i then
s = "";
i = 0;
end
end
s = s:sub( i + 1 );
r = mw.text.trim( s );
if r == "" then
r = false;
elseif m == 2 then
r = r:gsub( "%.(%x%x)", "%%%1" )
:gsub( "_", " " );
r = mw.uri.decode( r, "PATH" );
end
end
end
return r;
end -- WLink.getFragment()
function WLink.getLanguage( attempt )
-- Retrieve language project identifier
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with detected downcased language identifier
-- false if no project language found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.lang then
r = w.lang;
end
end
return r;
end -- WLink.getLanguage()
function WLink.getNamespace( attempt )
-- Retrieve namespace number
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns number, of detected namespace
-- false if no namespace found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and not w.lang and not w.project and w.ns then
r = w.ns;
end
end
return r;
end -- WLink.getNamespace()
function WLink.getPlain( attempt )
-- Retrieve text with all links replaced by link titles
-- Precondition:
-- attempt -- string, with wikitext
-- Postcondition:
-- Returns string, with modified wikitext without links
local r = attempt;
local i = 1;
local j, k, n, lean, s, shift, space, suffix;
while ( true ) do
j = r:find( "[", i, true );
if j then
suffix = r:sub( j );
i = j + 1;
lean = ( r:byte( i, i ) == 91 );
if lean then
s, k, n = contentWikilink( suffix );
else
s, k, n = contentExtlink( suffix );
end
if s then
if k > 1 then
n = n - k;
i = j + k;
j = i - 1;
suffix = r:sub( j );
end
if lean then
s, shift = extractWikilink( suffix );
if s then
space = s:match( "^([^:]+):" );
if space then
space = mw.site.namespaces[ space ];
if space then
space = space.id;
end
end
if space == 6 or space == 14 then
shift = "";
elseif not shift then
shift = s;
end
else
s = "";
shift = "";
end
else
s, shift = extractExtlink( suffix );
if not s then
s = "";
end
if not shift then
shift = "";
end
i = i - 1;
end
if j > 1 then
s = r:sub( 1, j - 1 );
else
s = "";
end
r = string.format( "%s%s%s",
s, shift, r:sub( n + i ) );
i = i + #shift;
else
break; -- while true
end
else
break; -- while true
end
end -- while true
return r;
end -- WLink.getPlain()
function WLink.getProject( attempt )
-- Retrieve wikifarm project identifier
-- Precondition:
-- attempt -- string, with wikilink or page title
-- Postcondition:
-- Returns string, with detected downcased project identifier
-- false if no project identifier found
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.project then
r = w.project;
end
end
return r;
end -- WLink.getProject()
function WLink.getTarget( attempt )
-- Retrieve first target (wikilink or URL)
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, number
-- string, with first detected link target
-- number, with number of brackets, if found
-- false if nothing found
local r1 = false;
local r2 = false;
local i = attempt:find( "[", 1, true );
if i then
local m;
r1 = attempt:sub( i );
if r1:byte( 2, 2 ) == 91 then
m = 2;
r1 = extractWikilink( r1 );
else
m = 1;
r1 = extractExtlink( r1 );
end
if r1 then
r2 = m;
end
else
r1 = attempt:match( "%A?([hf]t?tps?://%S+)%s?" );
if r1 then
if utilURL().isResourceURL( r1 ) then
r2 = 0;
else
r1 = false;
end
else
r1 = false;
end
end
return r1, r2;
end -- WLink.getTarget()
function WLink.getTargetPage( attempt )
-- Retrieve first target page (page name or URL of page)
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, with first detected linked page
-- false if nothing found
local r1, r2 = WLink.getTarget( attempt );
if r1 then
local i = r1:find( "#", 1, true );
if i then
if i == 1 then
r1 = false;
else
r1 = mw.text.trim( r1:sub( 1, i - 1 ) );
end
end
end
return r1, r2;
end -- WLink.getTargetPage()
function WLink.getTitle( attempt )
-- Retrieve first link title (wikilink or URL), or wikilink target
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns string, with first detected link target
-- false if nothing found
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local s1, s2;
r = attempt:sub( i );
if r:byte( 2, 2 ) == 91 then
s1, s2 = extractWikilink( r );
if s2 then
r = s2;
else
r = s1;
end
else
s1, r = extractExtlink( r );
end
end
return r;
end -- WLink.getTitle()
function WLink.getWeblink( attempt, anURLutil )
-- Retrieve bracketed link from resource URL
-- Precondition:
-- attempt -- string, with URL, or something different
-- anURLutil -- library module object, or nil
-- Postcondition:
-- Returns string, with first detected link target
-- false if nothing found
local second = ".ac.co.go.gv.or.";
local r;
if type( anURLutil ) == "table" then
URLutil = anURLutil;
else
utilURL();
end
if URLutil.isResourceURL( attempt ) then
local site = URLutil.getAuthority( attempt );
local show;
if #attempt == #site then
site = site .. "/";
end
show = URLutil.getTop3domain( "//" .. site );
if show then
local scan = "[%./](%a+)(%.%l%l%.)(%a+)$";
local search = "." .. show;
local s1, s2, s3 = search:match( scan );
if s2 then
if not second:find( s2, 1, true ) then
show = string.format( "%s.%s", s2, s3 );
end
else
show = false;
end
end
if not show then
show = URLutil.getTop2domain( "//" .. site );
if not show then
show = URLutil.getHost( "//" .. site );
end
end
r = string.format( "[%s %s]", attempt, show );
else
r = attempt;
end
return r;
end -- WLink.getWeblink()
function WLink.isBracketedLink( attempt )
-- Does attempt match a bracketed link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local s = attempt:sub( i );
if s:byte( 2, 2 ) == 91 then
s = extractWikilink( s );
else
s = extractExtlink( s );
end
if s then
r = true;
end
end
return r;
end -- WLink.isBracketedLink()
function WLink.isBracketedURL( attempt )
-- Does attempt match a bracketed URL?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
return ( r == 1 );
end -- WLink.isBracketedURL()
function WLink.isCategorization( attempt )
-- Does attempt match a categorization?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.ns == 14
and not ( w.lead or w.lang or w.project )
and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isCategorization()
function WLink.isExternalLink( attempt )
-- Does attempt match an external link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
if r then
r = ( r < 2 );
end
return r;
end -- WLink.isExternalLink()
function WLink.isInterlanguage( attempt )
-- Does attempt match an interlanguage link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.lang and not w.project and not w.lead
and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isInterlanguage()
function WLink.isInterwiki( attempt )
-- Does attempt match an interwiki link within wikifarm?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and ( w.lang or w.project ) and w.title ~= "" then
r = true;
end
end
return r;
end -- WLink.isInterwiki()
function WLink.isMedia( attempt )
-- Does attempt match a media translusion?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local s, m = WLink.getTarget( attempt );
if m == 2 then
local w = WLink.wikilink( s );
if w and w.ns == 6
and not ( w.lead or w.lang or w.project )
and w.title ~= ""
and WLink.getExtension( w.title ) then
r = true;
end
end
return r;
end -- WLink.isMedia()
function WLink.isTitledLink( attempt )
-- Does attempt match a titled link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local r = false;
local i = attempt:find( "[", 1, true );
if i then
local c, n;
local s = attempt:sub( i );
if s:byte( 2, 2 ) == 91 then
n = s:find( "%]%]", 5 );
c = "|";
else
n = s:find( "%]", 8 );
c = "%s%S";
end
if n then
local m = s:find( c, 2 );
if m and m + 1 < n and WLink.getTarget( attempt ) then
r = true;
end
end
end
return r;
end -- WLink.isTitledLink()
function WLink.isValidLink( attempt )
-- Does attempt match a link?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, r = WLink.getTarget( attempt );
if r then
r = true;
end
return r;
end -- WLink.isValidLink()
function WLink.isWikilink( attempt )
-- Does attempt match a wikilink?
-- Precondition:
-- attempt -- string, with presumable link somewhere
-- Postcondition:
-- Returns boolean
local s, m = WLink.getTarget( attempt );
return ( m == 2 );
end -- WLink.isWikilink()
function WLink.wikilink( attempt )
-- Retrieve wikilink components
-- Precondition:
-- attempt -- string, with presumable link
-- expected to be enclosed in "[[" "]]"
-- else wikilink
-- Postcondition:
-- Returns table or false
-- table of assignments with { type, value}
-- type is one of "lead",
-- "project", "lang",
-- "ns", "space", "title"
-- false if nothing found
local s = contentWikilink( attempt );
local got, n, r;
if not s then
s = attempt;
end
i = s:find( "|", 1, true );
if i then
s = s:sub( 1, i - 1 );
end
got = mw.text.split( s, ":" );
n = table.maxn( got );
if n == 1 then
r = { title = mw.text.trim( s ) };
else
local j, k, o, v;
r = { title = "" };
if n > 4 then
k = 4;
else
k = n - 1;
end
j = k;
for i = 1, j do
s = mw.text.trim( got[ i ] );
if s ~= "" then
o = mw.site.namespaces[ mw.text.trim( got[ i ] ) ];
if o then
r.ns = o.id;
r.space = o.name;
k = i + 1;
j = i - 1;
break; -- for i
end
end
end -- for i
for i = 1, j do
o, v = prefix( got[ i ], ( i == 1 ) );
if o then
if r[ o ] then
k = i;
break; -- for i
else
r[ o ] = v;
end
else
k = i;
break; -- for i
end
end -- for i
for i = k, n do
r.title = r.title .. got[ i ];
if i < n then
r.title = r.title .. ":";
end
end -- for i
end
if r.lead and
( r.project or not r.title or
( not r.lang and r.ns ~= 6 and r.ns ~= 14 ) ) then
r.lead = false;
end
return r;
end -- WLink.wikilink()
function WLink.failsafe( assert )
-- Retrieve versioning and check for compliance
-- Precondition:
-- assert -- string, with required version, or false
-- Postcondition:
-- Returns string with appropriate version, or false
local r;
if assert and assert > WLink.serial then
r = false;
else
r = WLink.serial;
end
return r
end -- WLink.failsafe()
local function Template( frame, action, leave, lone )
-- Run actual code from template transclusion
-- Precondition:
-- frame -- object
-- action -- string, with function name
-- leave -- true: keep whitespace around
-- lone -- true: permit call without parameters
-- Postcondition:
-- Return string; might be error message
local lucky = true;
local s = false;
local r = false;
local space;
for k, v in pairs( frame.args ) do
if k == 1 then
if leave then
s = v;
else
s = mw.text.trim( v );
end
elseif action == "ansiPercent" and k == "space" then
if v ~= "" then
space = v;
end
elseif k ~= "template" then
lucky = false;
if r then
r = r .. "|";
else
r = "Unknown parameter: ";
end
r = string.format( "%s%s=", r, k );
end
end -- for k, v
if lucky then
if s or lone then
lucky, r = pcall( WLink[ action ], s, space );
else
r = "Parameter missing";
lucky = false;
end
end
if lucky then
if type( r ) == "boolean" then
if r then
r = "1";
else
r = "";
end
end
else
r = string.format( "<span class=\"error\">%s</span>", r );
end
return r;
end -- Template()
-- Export
local p = { };
p.ansiPercent = function ( frame )
return Template( frame, "ansiPercent" );
end
p.formatURL = function ( frame )
return Template( frame, "formatURL" );
end
p.getArticleBase = function ( frame )
return Template( frame, "getArticleBase", false, true );
end
p.getBaseTitle = function ( frame )
return Template( frame, "getBaseTitle" );
end
p.getEscapedTitle = function ( frame )
return Template( frame, "getEscapedTitle" );
end
p.getExtension = function ( frame )
return Template( frame, "getExtension" );
end
p.getFile = function ( frame )
return Template( frame, "getFile" );
end
p.getFragment = function ( frame )
return Template( frame, "getFragment" );
end
p.getInterwiki = function ( frame )
return Template( frame, "getInterwiki" );
end
p.getLanguage = function ( frame )
return Template( frame, "getLanguage" );
end
p.getNamespace = function ( frame )
return tostring( Template( frame, "getNamespace" ) );
end
p.getPlain = function ( frame )
return Template( frame, "getPlain" );
end
p.getProject = function ( frame )
return Template( frame, "getProject" );
end
p.getTarget = function ( frame )
return Template( frame, "getTarget" );
end
p.getTargetPage = function ( frame )
return Template( frame, "getTargetPage" );
end
p.getTitle = function ( frame )
return Template( frame, "getTitle" );
end
p.getWeblink = function ( frame )
return Template( frame, "getWeblink" );
end
p.isBracketedLink = function ( frame )
return Template( frame, "isBracketedLink" );
end
p.isBracketedURL = function ( frame )
return Template( frame, "isBracketedURL" );
end
p.isCategorization = function ( frame )
return Template( frame, "isCategorization" );
end
p.isExternalLink = function ( frame )
return Template( frame, "isExternalLink" );
end
p.isInterlanguage = function ( frame )
return Template( frame, "isInterlanguage" );
end
p.isInterwiki = function ( frame )
return Template( frame, "isInterwiki" );
end
p.isMedia = function ( frame )
return Template( frame, "isMedia" );
end
p.isTitledLink = function ( frame )
return Template( frame, "isTitledLink" );
end
p.isValidLink = function ( frame )
return Template( frame, "isValidLink" );
end
p.isWeblink = function ( frame )
return Template( frame, "isWeblink" );
end
p.isWikilink = function ( frame )
return Template( frame, "isWikilink" );
end
p.failsafe = function ( frame )
local since = frame.args[ 1 ];
if since then
since = mw.text.trim( since );
if since == "" then
since = false;
end
end
return WLink.failsafe( since ) or "";
end
p.WLink = function ()
return WLink;
end
return p;
af57214e9ddc77f93c9fcb1dd97b58d8180700d4
Template:Tnull
10
616
1391
1390
2023-10-01T10:16:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tnull]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link null]]
{{Redirect category shell|
{{R from move}}
}}
b22d666a4b16808dc3becc2403546fb9ab5dea7e
Template:Template link null
10
617
1393
1392
2023-10-01T10:16:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link_null]]
wikitext
text/x-wiki
<includeonly>{{#Invoke:Template link general|main|nolink=yes|code=yes}}</includeonly><noinclude>
{{Documentation|1=Template:Tlg/doc
|content = {{tlg/doc|tnull}}
}}
<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
2167c503e001d24d870ef82a9de0aaa9832404cb
Template:Flowlist
10
618
1395
1394
2023-10-01T10:16:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flowlist]]
wikitext
text/x-wiki
<templatestyles src="Flowlist/styles.css" /><div class="flowlist {{{class|}}}" {{#if: {{{style|}}}|style="{{{style}}}"}}>{{#if:{{{1|}}}|
{{{1}}}
</div>}}<noinclude></div>
{{documentation}}
</noinclude>
8fab8f03d7353b9e7ebe1b375ebbfc6801f60bdb
Template:Flowlist/styles.css
10
619
1397
1396
2023-10-01T10:16:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flowlist/styles.css]]
sanitized-css
text/css
.flowlist ul {
overflow-x: hidden;
margin-left: 0;
padding-left: 1.6em;
}
.flowlist ol {
overflow-x: hidden;
margin-left: 0;
padding-left: 3.2em;
}
.flowlist dl {
overflow-x: hidden;
}
9e1541baa2f3cc3d7b4d7ac39f073f3a43a91c06
Template:Defn
10
620
1399
1398
2023-10-01T10:16:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Defn]]
wikitext
text/x-wiki
<dd class="glossary {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"|{{#if:{{{term|}}}|id="{{{term}}}-defn{{{2|{{{no|1}}}}}}"|}}|}} {{#if:{{{style|}}}|style="{{{style}}}"|}}>{{#if:{{{2|{{{no|}}}}}}|{{{2|{{{no}}}}}}. |}}{{{defn|{{{1|{{{content}}}}}}}}}</dd><noinclude>
{{Documentation}}<!--Categories go in the /doc subpage.-->
</noinclude>
7364e2a37ab009857bdee7a77e7e297830fc560b
Template:Glossary
10
621
1401
1400
2023-10-01T10:16:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Glossary]]
wikitext
text/x-wiki
<dl class="glossary {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"|}} {{#if:{{{id|}}}|id="{{{id}}}"|}}><noinclude>{{glossary end}}
<!--Categories and interwikis go on the /doc page.-->
{{Documentation}}
</noinclude>
afaf333b451c8bb5f581afb121ef9c3c5f8b7be8
Template:Glossary end
10
622
1403
1402
2023-10-01T10:16:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Glossary_end]]
wikitext
text/x-wiki
<noinclude><dl></noinclude></dl><!--end glossary--><noinclude>
{{Documentation|Template:Glossary/doc}}<!--Categories go in the /doc subpage.-->
</noinclude>
ed16ee7194c9e6e05c38ab0d43496928c52bc915
Template:Term
10
623
1405
1404
2023-10-01T10:17:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Term]]
wikitext
text/x-wiki
<dt class="glossary {{{class|}}}" {{#if: {{{noid|}}}||id="{{#invoke:delink|delink|{{#invoke:String|replace|source={{lc:{{{id|{{{term|{{{1}}}}}}}}}}}|"|<!--blank to strip out double quote mark-->}}}}"}} style="{{#if:{{{multi|}}}|margin-top: -0.2em;|margin-top: 0.4em; {{{style|}}}}}">{{#if:{{{nondefining|}}}||<dfn class="glossary">}}{{{content|{{{2|{{{term|{{{1}}}}}}}}}}}}{{#if:{{{nondefining|}}}||</dfn>}}</dt><noinclude>
{{Documentation}}
</noinclude>
c13cf2ed1b2adb71abf978313b6bfe8f1e58d7ef
Template:Template shortcut
10
255
1407
558
2023-10-01T10:17:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_shortcut]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main|template=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>
bfb2889c4c0ec36294b7b667f5e03350d2df680e
Template:Format TemplateData
10
624
1409
1408
2023-10-01T10:17:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Format_TemplateData]]
wikitext
text/x-wiki
<includeonly>{{#ifeq:{{yesno-yes|{{{header}}}}}|yes|{{TemplateData header}}
}}{{#invoke:Format TemplateData| f |classNoNumTOC=nonumtoc |cssParams=border:#B3B7FF 1px solid;|docpageCreate=%s/doc |docpageDetect=/doc$ |msgDescMiss=Missing description |cat=Templates with TemplateData errors}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
9f91faf4253ddd2a7da1f06be8940e26509a0cd6
Module:Format TemplateData
828
625
1411
1410
2023-10-01T10:17:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Format_TemplateData]]
Scribunto
text/plain
local TemplateData = { suite = "TemplateData",
serial = "2022-03-10",
item = 46997995 }
--[==[
improve template:TemplateData
]==]
local Failsafe = TemplateData
local Config = {
-- multiple option names mapped into unique internal fields
basicCnf = { catProblem = "strange",
classMultiColumns = "selMultClm",
classNoNumTOC = "suppressTOCnum",
classTable = "classTable",
cssParWrap = "cssTabWrap",
cssParams = "cssTable",
docpageCreate = "suffix",
docpageDetect = "subpage",
helpBoolean = "support4boolean",
helpContent = "support4content",
helpDate = "support4date",
helpFile = "support4wiki-file-name",
helpFormat = "supportFormat",
helpLine = "support4line",
helpNumber = "support4number",
helpPage = "support4wiki-page-name",
helpString = "support4string",
helpTemplate = "support4wiki-template-name",
helpURL = "support4url",
helpUser = "support4wiki-user-name",
msgDescMiss = "solo",
tStylesTOCnum = "stylesTOCnum",
tStylesMultiColumns = "stylesMultClm" },
classTable = { "wikitable" }, -- classes for params table
debugmultilang = "C0C0C0",
loudly = false, -- show exported element, etc.
solo = false, -- complaint on missing description
strange = false, -- title of maintenance category
cssTable = false, -- styles for params table
cssTabWrap = false, -- styles for params table wrapper
debug = false,
subpage = false, -- pattern to identify subpage
suffix = false, -- subpage creation scheme
suppressTOCnum = false, -- class for TOC number suppression
jsonDebug = "json-code-lint" -- class for jsonDebug tool
}
local Data = {
div = false, -- <div class="mw-templatedata-doc-wrap">
got = false, -- table, initial templatedata object
heirs = false, -- table, params that are inherited
jump = false, -- source position at end of "params"
less = false, -- main description missing
lasting = false, -- old syntax encountered
lazy = false, -- doc mode; do not generate effective <templatedata>
leading = false, -- show TOC
-- low = false, -- 1= mode
order = false, -- parameter sequence
params = false, -- table, exported parameters
scream = false, -- error messages
sibling = false, -- TOC juxtaposed
slang = nil, -- project/user language code
slim = false, -- JSON reduced to plain
source = false, -- JSON input
strip = false, -- <templatedata> evaluation
tag = false, -- table, exported root element
title = false, -- page
tree = false -- table, rewritten templatedata object
}
local Permit = {
builder = { after = "block",
align = "block",
block = "block",
compressed = "block",
dense = "block",
grouped = "inline",
half = "inline",
indent = "block",
inline = "inline",
last = "block",
lead = "block",
newlines = "*",
spaced = "inline" },
colors = { bg = "FFFFFF",
fg = "000000",
tableheadbg = "B3B7FF",
required = "EAF3FF",
suggested = "FFFFFF",
optional = "EAECF0",
deprecated = "FFCBCB" },
params = { aliases = "table",
autovalue = "string",
default = "string table I18N nowiki",
deprecated = "boolean string I18N",
description = "string table I18N",
example = "string table I18N nowiki",
label = "string table I18N",
inherits = "string",
required = "boolean",
style = "string table",
suggested = "boolean",
suggestedvalues = "string table number boolean",
type = "string" },
root = { description = "string table I18N",
format = "string",
maps = "table",
params = "table",
paramOrder = "table",
sets = "table" },
search = "[{,]%%s*(['\"])%s%%1%%s*:%%s*%%{",
types = { boolean = true,
content = true,
date = true,
line = true,
number = true,
string = true,
unknown = true,
url = true,
["wiki-file-name"] = true,
["wiki-page-name"] = true,
["wiki-template-name"] = true,
["wiki-user-name"] = true,
["unbalanced-wikitext"] = true,
["string/line"] = "line",
["string/wiki-page-name"] = "wiki-page-name",
["string/wiki-user-name"] = "wiki-user-name" }
}
local function Fault( alert )
-- Memorize error message
-- Parameter:
-- alert -- string, error message
if Data.scream then
Data.scream = string.format( "%s *** %s", Data.scream, alert )
else
Data.scream = alert
end
end -- Fault()
local function Fetch( ask, allow )
-- Fetch module
-- Parameter:
-- ask -- string, with name
-- "/global"
-- "Multilingual"
-- "Text"
-- "WLink"
-- allow -- true: no error if unavailable
-- Returns table of module
-- error: Module not available
local sign = ask
local r, stem
if sign:sub( 1, 1 ) == "/" then
sign = TemplateData.frame:getTitle() .. sign
else
stem = sign
sign = "Module:" .. stem
end
if TemplateData.extern then
r = TemplateData.extern[ sign ]
else
TemplateData.extern = { }
end
if not r then
local lucky, g = pcall( require, sign )
if type( g ) == "table" then
if stem and type( g[ stem ] ) == "function" then
r = g[ stem ]()
else
r = g
end
TemplateData.extern[ sign ] = r
elseif not allow then
error( string.format( "Fetch(%s) %s", sign, g ), 0 )
end
end
return r
end -- Fetch()
local function Foreign()
-- Guess human language
-- Returns slang, or not
if type( Data.slang ) == "nil" then
local Multilingual = Fetch( "Multilingual", true )
if Multilingual and
type( Multilingual.userLangCode ) == "function" then
Data.slang = Multilingual.userLangCode()
else
Data.slang = mw.language.getContentLanguage():getCode()
:lower()
end
end
if Data.slang and
mw.ustring.codepoint( Data.slang, 1, 1 ) > 122 then
Data.slang = false
end
return Data.slang
end -- Foreign()
local function facet( ask, at )
-- Find physical position of parameter definition in JSON
-- Parameter:
-- ask -- string, parameter name
-- at -- number, physical position within definition
-- Returns number, or nil
local seek = string.format( Permit.search,
ask:gsub( "%%", "%%%%" )
:gsub( "([%-.()+*?^$%[%]])",
"%%%1" ) )
local i, k, r, slice, source
if not Data.jump then
Data.jump = Data.source:find( "params", 2 )
if Data.jump then
Data.jump = Data.jump + 7
else
Data.jump = 1
end
end
i, k = Data.source:find( seek, at + Data.jump )
while i and not r do
source = Data.source:sub( k + 1 )
slice = source:match( "^%s*\"([^\"]+)\"s*:" )
if not slice then
slice = source:match( "^%s*'([^']+)'%s*:" )
end
if ( slice and Permit.params[ slice ] ) or
source:match( "^%s*%}" ) then
r = k
else
i, k = Data.source:find( seek, k )
end
end -- while i
return r
end -- facet()
local function facilities( apply )
-- Retrieve details of suggestedvalues
-- Parameter:
-- apply -- table, with plain or enhanced values
-- .suggestedvalues -- table|string|number, or more
-- Returns
-- 1 -- table, with suggestedvalues
-- 2 -- table, with CSS map, or not
-- 3 -- string, with class, or not
-- 4 -- string, with templatestyles, or not
local elements = apply.suggestedvalues
local s = type( elements )
local r1, r2, r3, r4
if s == "table" then
local values = elements.values
if type( values ) == "table" then
r1 = values
if type( elements.scroll ) == "string" then
r2 = r2 or { }
r2.height = apply.scroll
r2.overflow = "auto"
end
if type( elements.minwidth ) == "string" then
local s = type( elements.maxcolumns )
r2 = r2 or { }
r2["column-width"] = elements.minwidth
if s == "string" or
s == "number" then
s = tostring( elements.maxcolumns )
r2["column-count"] = s
end
if type( Config.selMultClm ) == "string" then
r3 = Config.selMultClm
end
if type( Config.stylesMultClm ) == "string" then
local src = Config.stylesMultClm .. "/styles.css"
r4 = TemplateData.frame
:extensionTag( "templatestyles",
nil,
{ src = src } )
end
end
elseif elements and elements ~= "" then
r1 = elements
end
elseif s == "string" then
s = mw.text.trim( about )
if s ~= "" then
r1 = { }
table.insert( r1,
{ code = s } )
end
elseif s == "number" then
r1 = { }
table.insert( r1,
{ code = tostring( elements ) } )
end
return r1, r2, r3, r4
end -- facilities()
local function factory( adapt )
-- Retrieve localized text from system message
-- Parameter:
-- adapt -- string, message ID after "templatedata-"
-- Returns string, with localized text
local o = mw.message.new( "templatedata-" .. adapt )
if Foreign() then
o:inLanguage( Data.slang )
end
return o:plain()
end -- factory()
local function faculty( adjust )
-- Test template arg for boolean
-- adjust -- string or nil
-- Returns boolean
local s = type( adjust )
local r
if s == "string" then
r = mw.text.trim( adjust )
r = ( r ~= "" and r ~= "0" )
elseif s == "boolean" then
r = adjust
else
r = false
end
return r
end -- faculty()
local function failures()
-- Retrieve error collection and category
-- Returns string
local r
if Data.scream then
local e = mw.html.create( "span" )
:addClass( "error" )
:wikitext( Data.scream )
r = tostring( e )
mw.addWarning( "'''TemplateData'''<br />" .. Data.scream )
if Config.strange then
r = string.format( "%s[[category:%s]]",
r,
Config.strange )
end
else
r = ""
end
return r
end -- failures()
local function fair( adjust )
-- Reduce text to one line of plain text, or noexport wikitext blocks
-- adjust -- string
-- Returns string, with adjusted text
local f = function ( a )
return a:gsub( "%s*\n%s*", " " )
:gsub( "%s%s+", " " )
end
local tags = { { start = "<noexport>",
stop = "</noexport>" },
{ start = "<exportonly>",
stop = "</exportonly>",
l = false }
}
local r = adjust
local i, j, k, s, tag
for m = 1, 2 do
tag = tags[ m ]
if r:find( tag.start, 1, true ) then
s = r
r = ""
i = 1
tag.l = true
j, k = s:find( tag.start, i, true )
while j do
if j > 1 then
r = r .. f( s:sub( i, j - 1 ) )
end
i = k + 1
j, k = s:find( tag.stop, i, true )
if j then
if m == 1 then
r = r .. s:sub( i, j - 1 )
end
i = k + 1
j, k = s:find( tag.start, i, true )
else
Fault( "missing " .. tag.stop )
end
end -- while j
r = r .. s:sub( i )
elseif m == 1 then
r = f( r )
end
end -- for m
if tags[ 2 ].l then
r = r:gsub( "<exportonly>.*</exportonly>", "" )
end
return r
end -- fair()
local function fancy( advance, alert )
-- Present JSON source
-- Parameter:
-- advance -- true, for nice
-- alert -- true, for visible
-- Returns string
local r
if Data.source then
local support = Config.jsonDebug
local css
if advance then
css = { height = "6em",
resize = "vertical" }
r = { [ 1 ] = "syntaxhighlight",
[ 2 ] = Data.source,
lang = "json",
style = table.concat( css, ";" ) }
if alert then
r.class( support )
end
r = TemplateData.frame:callParserFunction( "#tag", r )
else
css = { [ "font-size" ] = "77%",
[ "line-height" ] = "1.35" }
if alert then
css.resize = "vertical"
else
css.display = "none"
end
r = mw.html.create( "pre" )
:addClass( support )
:css( css )
:wikitext( mw.text.encode( Data.source ) )
r = tostring( r )
end
r = "\n".. r
else
r = ""
end
return r
end -- fancy()
local function faraway( alternatives )
-- Retrieve best language version from multilingual text
-- Parameter:
-- alternatives -- table, to be evaluated
-- Returns
-- 1 -- string, with best match
-- 2 -- table of other versions, if any
local n = 0
local variants = { }
local r1, r2
for k, v in pairs( alternatives ) do
if type( v ) == "string" then
v = mw.text.trim( v )
if v ~= "" and type( k ) == "string" then
k = k:lower()
variants[ k ] = v
n = n + 1
end
end
end -- for k, v
if n > 0 then
local Multilingual = Fetch( "Multilingual", true )
if Multilingual and
type( Multilingual.i18n ) == "function" then
local show, slang = Multilingual.i18n( variants )
if show then
r1 = show
variants[ slang ] = nil
r2 = variants
end
end
if not r1 then
Foreign()
for k, v in pairs( variants ) do
if n == 1 then
r1 = v
elseif Data.slang == k then
variants[ k ] = nil
r1 = v
r2 = variants
end
end -- for k, v
end
if r2 and Multilingual then
for k, v in pairs( r2 ) do
if v and not Multilingual.isLang( k, true ) then
Fault( string.format( "%s <code>lang=%s</code>",
"Invalid",
k ) )
end
end -- for k, v
end
end
return r1, r2
end -- faraway()
local function fashioned( about, asked, assign )
-- Create description head
-- Parameter:
-- about -- table, supposed to contain description
-- asked -- true, if mandatory description
-- assign -- <block>, if to be equipped
-- Returns <block>, with head, or nil
local para = assign or mw.html.create( "div" )
local plus, r
if about and about.description then
if type( about.description ) == "string" then
para:wikitext( about.description )
else
para:wikitext( about.description[ 1 ] )
plus = mw.html.create( "ul" )
plus:css( "text-align", "left" )
for k, v in pairs( about.description[ 2 ] ) do
plus:node( mw.html.create( "li" )
:node( mw.html.create( "code" )
:wikitext( k ) )
:node( mw.html.create( "br" ) )
:wikitext( fair( v ) ) )
end -- for k, v
if Config.loudly then
plus = mw.html.create( "div" )
:css( "background-color",
"#" .. Config.debugmultilang )
:node( plus )
else
plus:addClass( "templatedata-maintain" )
:css( "display", "none" )
end
end
elseif Config.solo and asked then
para:addClass( "error" )
:wikitext( Config.solo )
Data.less = true
else
para = false
end
if para then
if plus then
r = mw.html.create( "div" )
:node( para )
:node( plus )
else
r = para
end
end
return r
end -- fashioned()
local function fatten( access )
-- Create table row for sub-headline
-- Parameter:
-- access -- string, with name
-- Returns <tr>
local param = Data.tree.params[ access ]
local sub, sort = access:match( "(=+)%s*(%S.*)$" )
local headline = mw.html.create( string.format( "h%d", #sub ) )
local r = mw.html.create( "tr" )
local td = mw.html.create( "td" )
:attr( "colspan", "5" )
:attr( "data-sort-value", "!" .. sort )
local s
if param.style then
s = type( param.style )
if s == "table" then
td:css( param.style )
elseif s == "string" then
td:cssText( param.style )
end
end
s = fashioned( param, false, headline )
if s then
headline = s
else
headline:wikitext( sort )
end
td:node( headline )
r:node( td )
return r
end -- fatten()
local function fathers()
-- Merge params with inherited values
local n = 0
local p = Data.params
local t = Data.tree.params
local p2, t2
for k, v in pairs( Data.heirs ) do
n = n + 1
end -- for k, v
for i = 1, n do
if Data.heirs then
for k, v in pairs( Data.heirs ) do
if v and not Data.heirs[ v ] then
n = n - 1
t[ k ].inherits = nil
Data.heirs[ k ] = nil
p2 = { }
t2 = { }
if p[ v ] then
for k2, v2 in pairs( p[ v ] ) do
p2[ k2 ] = v2
end -- for k2, v2
if p[ k ] then
for k2, v2 in pairs( p[ k ] ) do
if type( v2 ) ~= "nil" then
p2[ k2 ] = v2
end
end -- for k2, v2
end
p[ k ] = p2
for k2, v2 in pairs( t[ v ] ) do
t2[ k2 ] = v2
end -- for k2, v2
for k2, v2 in pairs( t[ k ] ) do
if type( v2 ) ~= "nil" then
t2[ k2 ] = v2
end
end -- for k2, v2
t[ k ] = t2
else
Fault( "No params[] inherits " .. v )
end
end
end -- for k, v
end
end -- i = 1, n
if n > 0 then
local s
for k, v in pairs( Data.heirs ) do
if v then
if s then
s = string.format( "%s | %s", s, k )
else
s = "Circular inherits: " .. k
end
end
end -- for k, v
Fault( s )
end
end -- fathers()
local function favorize()
-- Local customization issues
local boole = { ["font-size"] = "125%" }
local l, cx = pcall( mw.loadData,
TemplateData.frame:getTitle() .. "/config" )
local scripting, style
TemplateData.ltr = not mw.language.getContentLanguage():isRTL()
if TemplateData.ltr then
scripting = "left"
else
scripting = "right"
end
boole[ "margin-" .. scripting ] = "3em"
Permit.boole = { [false] = { css = boole,
lead = true,
show = "☐" },
[true] = { css = boole,
lead = true,
show = "☑" } }
Permit.css = { }
for k, v in pairs( Permit.colors ) do
if k == "tableheadbg" then
k = "tablehead"
end
if k == "fg" then
style = "color"
else
style = "background-color"
end
Permit.css[ k ] = { }
Permit.css[ k ][ style ] = "#" .. v
end -- for k, v
if type( cx ) == "table" then
local c, s
if type( cx.permit ) == "table" then
if type( cx.permit.boole ) == "table" then
if type( cx.permit.boole[ true ] ) == "table" then
Permit.boole[ false ] = cx.permit.boole[ false ]
end
if type( cx.permit.boole[ true ] ) == "table" then
Permit.boole[ true ] = cx.permit.boole[ true ]
end
end
if type( cx.permit.css ) == "table" then
for k, v in pairs( cx.permit.css ) do
if type( v ) == "table" then
Permit.css[ k ] = v
end
end -- for k, v
end
end
for k, v in pairs( Config.basicCnf ) do
s = type( cx[ k ] )
if s == "string" or s == "table" then
Config[ v ] = cx[ k ]
end
end -- for k, v
end
if type( Config.subpage ) ~= "string" or
type( Config.suffix ) ~= "string" then
local got = mw.message.new( "templatedata-doc-subpage" )
local suffix
if got:isDisabled() then
suffix = "doc"
else
suffix = got:plain()
end
if type( Config.subpage ) ~= "string" then
Config.subpage = string.format( "/%s$", suffix )
end
if type( Config.suffix ) ~= "string" then
Config.suffix = string.format( "%%s/%s", suffix )
end
end
end -- favorize()
local function feasible( all, at, about )
-- Deal with suggestedvalues within parameter
-- Parameter:
-- all -- parameter details
-- .default
-- .type
-- at -- string, with parameter name
-- about -- suggestedvalues -- table,
-- value and possibly description
-- table may have elements:
-- .code -- mandatory
-- .label -- table|string
-- .support -- table|string
-- .icon -- string
-- .class -- table|string
-- .css -- table
-- .style -- string
-- .less -- true: suppress code
-- Returns
-- 1: mw.html object <ul>
-- 2: sequence table with values, or nil
local h = { }
local e, r1, r2, s, v
if #about > 0 then
for i = 1, #about do
e = about[ i ]
s = type( e )
if s == "table" then
if type( e.code ) == "string" then
s = mw.text.trim( e.code )
if s == "" then
e = nil
else
e.code = s
end
else
e = nil
s = string.format( "params.%s.%s[%d] %s",
at,
"suggestedvalues",
i,
"MISSING 'code:'" )
end
elseif s == "string" then
s = mw.text.trim( e )
if s == "" then
e = nil
s = string.format( "params.%s.%s[%d] EMPTY",
at, "suggestedvalues", i )
Fault( s )
else
e = { code = s }
end
elseif s == "number" then
e = { code = tostring( e ) }
else
s = string.format( "params.%s.%s[%d] INVALID",
at, "suggestedvalues", i )
Fault( s )
e = false
end
if e then
v = v or { }
table.insert( v, e )
if h[ e.code ] then
s = string.format( "params.%s.%s REPEATED %s",
at,
"suggestedvalues",
e.code )
Fault( s )
else
h[ e.code ] = true
end
end
end -- for i
else
Fault( string.format( "params.%s.suggestedvalues %s",
at, "NOT AN ARRAY" ) )
end
if v then
local code, d, k, less, story, swift, t, u
r1 = mw.html.create( "ul" )
r2 = { }
for i = 1, #v do
u = mw.html.create( "li" )
e = v[ i ]
table.insert( r2, e.code )
story = false
less = ( e.less == true )
if not less then
swift = e.code
if e.support then
local scream, support
s = type( e.support )
if s == "string" then
support = e.support
elseif s == "table" then
support = faraway( e.support )
else
scream = "INVALID"
end
if support then
s = mw.text.trim( support )
if s == "" then
scream = "EMPTY"
elseif s:find( "[%[%]|%<%>]" ) then
scream = "BAD PAGE"
else
support = s
end
end
if scream then
s = string.format( "params.%s.%s[%d].support %s",
at,
"suggestedvalues",
i,
scream )
Fault( s )
else
swift = string.format( "[[:%s|%s]]",
support, swift )
end
end
if all.type:sub( 1, 5 ) == "wiki-" and
swift == e.code then
local rooms = { file = 6,
temp = 10,
user = 2 }
local ns = rooms[ all.type:sub( 6, 9 ) ] or 0
t = mw.title.makeTitle( ns, swift )
if t and t.exists then
swift = string.format( "[[:%s|%s]]",
t.prefixedText, swift )
end
end
if e.code == all.default then
k = 800
else
k = 300
end
code = mw.html.create( "code" )
:css( "font-weight", tostring( k ) )
:css( "white-space", "nowrap" )
:wikitext( swift )
u:node( code )
end
if e.class then
s = type( e.class )
if s == "string" then
u:addClass( e.class )
elseif s == "table" then
for k, s in pairs( e.class ) do
u:addClass( s )
end -- for k, s
else
s = string.format( "params.%s.%s[%d].class INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if e.css then
if type( e.css ) == "table" then
u:css( e.css )
else
s = string.format( "params.%s.%s[%d].css INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if e.style then
if type( e.style ) == "string" then
u:cssText( e.style )
else
s = string.format( "params.%s.%s[%d].style INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
if all.type == "wiki-file-name" and not e.icon then
e.icon = e.code
end
if e.label then
s = type( e.label )
if s == "string" then
s = mw.text.trim( e.label )
if s == "" then
s = string.format( "params.%s.%s[%d].label %s",
at,
"suggestedvalues",
i,
"EMPTY" )
Fault( s )
else
story = s
end
elseif s == "table" then
story = faraway( e.label )
else
s = string.format( "params.%s.%s[%d].label INVALID",
at, "suggestedvalues", i )
Fault( s )
end
end
s = false
if type( e.icon ) == "string" then
t = mw.title.makeTitle( 6, e.icon )
if t and t.file.exists then
local g = mw.html.create( "span" )
s = string.format( "[[%s|16px]]", t.prefixedText )
g:attr( "role", "presentation" )
:wikitext( s )
s = tostring( g )
end
end
if not s and not less and e.label then
s = mw.ustring.char( 0x2013 )
end
if s then
d = mw.html.create( "span" )
:wikitext( s )
if TemplateData.ltr then
if not less then
d:css( "margin-left", "0.5em" )
end
if story then
d:css( "margin-right", "0.5em" )
end
else
if not less then
d:css( "margin-right", "0.5em" )
end
if story then
d:css( "margin-left", "0.5em" )
end
end
u:node( d )
end
if story then
u:wikitext( story )
end
r1:newline()
:node( u )
end -- for i
end
if not r1 and v ~= false then
Fault( string.format( "params.%s.suggestedvalues INVALID", at ) )
r1 = mw.html.create( "code" )
:addClass( "error" )
:wikitext( "INVALID" )
end
return r1, r2
end -- feasible()
local function feat()
-- Check and store parameter sequence
if Data.source then
local i = 0
local s
for k, v in pairs( Data.tree.params ) do
if i == 0 then
Data.order = { }
i = 1
s = k
else
i = 2
break -- for k, v
end
end -- for k, v
if i > 1 then
local pointers = { }
local points = { }
local given = { }
for k, v in pairs( Data.tree.params ) do
i = facet( k, 1 )
if type( v ) == "table" then
if type( v.label ) == "string" then
s = mw.text.trim( v.label )
if s == "" then
s = k
end
else
s = k
end
if given[ s ] then
if given[ s ] == 1 then
local scream = "Parameter label '%s' detected multiple times"
Fault( string.format( scream, s ) )
given[ s ] = 2
end
else
given[ s ] = 1
end
end
if i then
table.insert( points, i )
pointers[ i ] = k
i = facet( k, i )
if i then
s = "Parameter '%s' detected twice"
Fault( string.format( s, k ) )
end
else
s = "Parameter '%s' not detected"
Fault( string.format( s, k ) )
end
end -- for k, v
table.sort( points )
for i = 1, #points do
table.insert( Data.order, pointers[ points[ i ] ] )
end -- i = 1, #points
elseif s then
table.insert( Data.order, s )
end
end
end -- feat()
local function feature( access )
-- Create table row for parameter, check and display violations
-- Parameter:
-- access -- string, with name
-- Returns <tr>
local mode, s, status
local fine = function ( a )
s = mw.text.trim( a )
return a == s and
a ~= "" and
not a:find( "%|=\n" ) and
not a:find( "%s%s" )
end
local begin = mw.html.create( "td" )
local code = mw.html.create( "code" )
local desc = mw.html.create( "td" )
local eager = mw.html.create( "td" )
local legal = true
local param = Data.tree.params[ access ]
local ranking = { "required", "suggested", "optional", "deprecated" }
local r = mw.html.create( "tr" )
local styles = "mw-templatedata-doc-param-"
local sort, typed
for k, v in pairs( param ) do
if v == "" then
param[ k ] = false
end
end -- for k, v
-- label
sort = param.label or access
if sort:match( "^%d+$" ) then
begin:attr( "data-sort-value",
string.format( "%05d", tonumber( sort ) ) )
end
begin:css( "font-weight", "bold" )
:wikitext( sort )
-- name and aliases
code:css( "font-size", "92%" )
:css( "white-space", "nowrap" )
:wikitext( access )
if not fine( access ) then
code:addClass( "error" )
Fault( string.format( "Bad ID params.<code>%s</code>", access ) )
legal = false
begin:attr( "data-sort-value", " " .. sort )
end
code = mw.html.create( "td" )
:addClass( styles .. "name" )
:node( code )
if access:match( "^%d+$" ) then
code:attr( "data-sort-value",
string.format( "%05d", tonumber( access ) ) )
end
if type( param.aliases ) == "table" then
local lapsus, syn
for k, v in pairs( param.aliases ) do
code:tag( "br" )
if type( v ) == "string" then
if not fine( v ) then
lapsus = true
code:node( mw.html.create( "span" )
:addClass( "error" )
:css( "font-style", "italic" )
:wikitext( "string" ) )
:wikitext( s )
else
syn = mw.html.create( "span" )
:addClass( styles .. "alias" )
:css( "white-space", "nowrap" )
:wikitext( s )
code:node( syn )
end
else
lapsus = true
code:node( mw.html.create( "code" )
:addClass( "error" )
:wikitext( type( v ) ) )
end
end -- for k, v
if lapsus then
s = string.format( "params.<code>%s</code>.aliases", access )
Fault( factory( "invalid-value" ):gsub( "$1", s ) )
legal = false
end
end
-- description etc.
s = fashioned( param )
if s then
desc:node( s )
end
if param.style then
s = type( param.style )
if s == "table" then
desc:css( param.style )
elseif s == "string" then
desc:cssText( param.style )
end
end
if param.suggestedvalues or
param.default or
param.example or
param.autovalue then
local details = { "suggestedvalues",
"default",
"example",
"autovalue" }
local dl = mw.html.create( "dl" )
local dd, section, show
for i = 1, #details do
s = details[ i ]
show = param[ s ]
if show then
dd = mw.html.create( "dd" )
section = factory( "doc-param-" .. s )
if param.type == "boolean" and
( show == "0" or show == "1" ) then
local boole = Permit.boole[ ( show == "1" ) ]
if boole.lead == true then
dd:node( mw.html.create( "code" )
:wikitext( show ) )
:wikitext( " " )
end
if type( boole.show ) == "string" then
local v = mw.html.create( "span" )
:attr( "aria-hidden", "true" )
:wikitext( boole.show )
if boole.css then
v:css( boole.css )
end
dd:node( v )
end
if type( boole.suffix ) == "string" then
dd:wikitext( boole.suffix )
end
if boole.lead == false then
dd:wikitext( " " )
:node( mw.html.create( "code" )
:wikitext( show ) )
end
elseif s == "suggestedvalues" then
local v, css, class, ts = facilities( param )
if v then
local ul
ul, v = feasible( param, access, v )
if v then
dd:newline()
:node( ul )
if css then
dd:css( css )
if class then
dd:addClass( class )
end
if ts then
dd:newline()
dd:node( ts )
end
end
Data.params[ access ].suggestedvalues = v
end
end
else
dd:wikitext( show )
end
dl:node( mw.html.create( "dt" )
:wikitext( section ) )
:node( dd )
end
end -- i = 1, #details
desc:node( dl )
end
-- type
if type( param.type ) == "string" then
param.type = mw.text.trim( param.type )
if param.type == "" then
param.type = false
end
end
if param.type then
s = Permit.types[ param.type ]
typed = mw.html.create( "td" )
:addClass( styles .. "type" )
if s then
if s == "string" then
Data.params[ access ].type = s
typed:wikitext( factory( "doc-param-type-" .. s ) )
:tag( "br" )
typed:node( mw.html.create( "span" )
:addClass( "error" )
:wikitext( param.type ) )
Data.lasting = true
else
local support = Config[ "support4" .. param.type ]
s = factory( "doc-param-type-" .. param.type )
if support then
s = string.format( "[[%s|%s]]", support, s )
end
typed:wikitext( s )
end
else
Data.params[ access ].type = "unknown"
typed:addClass( "error" )
:wikitext( "INVALID" )
s = string.format( "params.<code>%s</code>.type", access )
Fault( factory( "invalid-value" ):gsub( "$1", s ) )
legal = false
end
else
typed = mw.html.create( "td" )
:wikitext( factory( "doc-param-type-unknown" ) )
Data.params[ access ].type = "unknown"
if param.default then
Data.params[ access ].default = nil
Fault( "Default value requires <code>type</code>" )
legal = false
end
end
typed:addClass( "navigation-not-searchable" )
-- status
if param.required then
mode = 1
if param.autovalue then
Fault( string.format( "autovalued <code>%s</code> required",
access ) )
legal = false
end
if param.default then
Fault( string.format( "Defaulted <code>%s</code> required",
access ) )
legal = false
end
if param.deprecated then
Fault( string.format( "Required deprecated <code>%s</code>",
access ) )
legal = false
end
elseif param.deprecated then
mode = 4
elseif param.suggested then
mode = 2
else
mode = 3
end
status = ranking[ mode ]
ranking = factory( "doc-param-status-" .. status )
if mode == 1 or mode == 4 then
ranking = mw.html.create( "span" )
:css( "font-weight", "bold" )
:wikitext( ranking )
if type( param.deprecated ) == "string" then
ranking:tag( "br" )
ranking:wikitext( param.deprecated )
end
if param.suggested and mode == 4 then
s = string.format( "Suggesting deprecated <code>%s</code>",
access )
Fault( s )
legal = false
end
end
eager:attr( "data-sort-value", tostring( mode ) )
:node( ranking )
:addClass( string.format( "%sstatus-%s %s",
styles, status,
"navigation-not-searchable" ) )
-- <tr>
r:attr( "id", "templatedata:" .. mw.uri.anchorEncode( access ) )
:css( Permit.css[ status ] )
:addClass( styles .. status )
:node( begin )
:node( code )
:node( desc )
:node( typed )
:node( eager )
:newline()
if not legal then
r:css( "border", "#FF0000 3px solid" )
end
return r
end -- feature()
local function features()
-- Create <table> for parameters
-- Returns <table>, or nil
local r
if Data.tree and Data.tree.params then
local tbl = mw.html.create( "table" )
local tr = mw.html.create( "tr" )
feat()
if Data.order and #Data.order > 1 then
tbl:addClass( "sortable" )
end
if type( Config.classTable ) == "table" then
for k, v in pairs( Config.classTable ) do
tbl:addClass( v )
end -- for k, v
end
if type( Config.cssTable ) == "table" then
tbl:css( Config.cssTable )
end
tr:addClass( "navigation-not-searchable" )
:node( mw.html.create( "th" )
:attr( "colspan", "2" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-name" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-desc" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-type" ) ) )
:node( mw.html.create( "th" )
:css( Permit.css.tablehead )
:wikitext( factory( "doc-param-status" ) ) )
tbl:newline()
-- :node( mw.html.create( "thead" )
:node( tr )
-- )
:newline()
if Data.order then
local leave, s
for i = 1, #Data.order do
s = Data.order[ i ]
if s:sub( 1, 1 ) == "=" then
leave = true
tbl:node( fatten( s ) )
Data.order[ i ] = false
elseif s:match( "[=|]" ) then
Fault( string.format( "Bad param <code>%s</code>",
s ) )
else
tbl:node( feature( s ) )
end
end -- for i = 1, #Data.order
if leave then
for i = #Data.order, 1, -1 do
if not Data.order[ i ] then
table.remove( Data.order, i )
end
end -- for i = #Data.order, 1, -1
end
Data.tag.paramOrder = Data.order
end
if Config.cssTabWrap or Data.scroll then
r = mw.html.create( "div" )
if type( Config.cssTabWrap ) == "table" then
r:css( Config.cssTabWrap )
elseif type( Config.cssTabWrap ) == "string" then
-- deprecated
r:cssText( Config.cssTabWrap )
end
if Data.scroll then
r:css( "height", Data.scroll )
:css( "overflow", "auto" )
end
r:node( tbl )
else
r = tbl
end
end
return r
end -- features()
local function fellow( any, assigned, at )
-- Check sets[] parameter and issue error message, if necessary
-- Parameter:
-- any -- should be number
-- assigned -- parameter name
-- at -- number, of set
local s
if type( any ) ~= "number" then
s = "<code>sets[%d].params[%s]</code>??"
Fault( string.format( s,
at,
mw.text.nowiki( tostring( any ) ) ) )
elseif type( assigned ) == "string" then
if not Data.got.params[ assigned ] then
s = "<code>sets[%d].params %s</code> is undefined"
Fault( string.format( s, at, assigned ) )
end
else
s = "<code>sets[%d].params[%d] = %s</code>??"
Fault( string.format( s, k, type( assigned ) ) )
end
end -- fellow()
local function fellows()
-- Check sets[] and issue error message, if necessary
local s
if type( Data.got.sets ) == "table" then
if type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.sets ) do
if type( k ) == "number" then
if type( v ) == "table" then
for ek, ev in pairs( v ) do
if ek == "label" then
s = type( ev )
if s ~= "string" and
s ~= "table" then
s = "<code>sets[%d].label</code>??"
Fault( string.format( s, k ) )
end
elseif ek == "params" and
type( ev ) == "table" then
for pk, pv in pairs( ev ) do
fellow( pk, pv, k )
end -- for pk, pv
else
ek = mw.text.nowiki( tostring( ek ) )
s = "<code>sets[%d][%s]</code>??"
Fault( string.format( s, k, ek ) )
end
end -- for ek, ev
else
k = mw.text.nowiki( tostring( k ) )
v = mw.text.nowiki( tostring( v ) )
s = string.format( "<code>sets[%s][%s]</code>??",
k, v )
Fault( s )
end
else
k = mw.text.nowiki( tostring( k ) )
s = string.format( "<code>sets[%s]</code> ?????", k )
Fault( s )
end
end -- for k, v
else
s = "<code>params</code> required for <code>sets</code>"
Fault( s )
end
else
s = "<code>sets</code> needs to be of <code>object</code> type"
Fault( s )
end
end -- fellows()
local function finalize( advance )
-- Wrap presentation into frame
-- Parameter:
-- advance -- true, for nice
-- Returns string
local r, lapsus
if Data.div then
r = tostring( Data.div )
elseif Data.strip then
r = Data.strip
else
lapsus = true
r = ""
end
r = r .. failures()
if Data.source then
local live = ( advance or lapsus )
if not live then
live = TemplateData.frame:preprocess( "{{REVISIONID}}" )
live = ( live == "" )
end
if live then
r = r .. fancy( advance, lapsus )
end
end
return r
end -- finalize()
local function find()
-- Find JSON data within page source (title)
-- Returns string, or nil
local s = Data.title:getContent()
local i, j = s:find( "<templatedata>", 1, true )
local r
if i then
local k = s:find( "</templatedata>", j, true )
if k then
r = mw.text.trim( s:sub( j + 1, k - 1 ) )
end
end
return r
end -- find()
local function flat( adjust )
-- Remove formatting from text string for VE
-- Parameter:
-- arglist -- string, to be stripped, or nil
-- Returns string, or nil
local r
if adjust then
r = adjust:gsub( "\n", " " )
if r:find( "<noexport>", 1, true ) then
r = r:gsub( "<noexport>.*</noexport>", "" )
end
if r:find( "<exportonly>", 1, true ) then
r = r:gsub( "</?exportonly>", "" )
end
if r:find( "''", 1, true ) then
r = r:gsub( "'''", "" ):gsub( "''", "" )
end
if r:find( "<", 1, true ) then
local Text = Fetch( "Text" )
r = Text.getPlain( r:gsub( "<br */?>", "\r\n" ) )
end
if r:find( "[", 1, true ) then
local WLink = Fetch( "WLink" )
if WLink.isBracketedURL( r ) then
r = r:gsub( "%[([hf]tt?ps?://%S+) [^%]]+%]", "%1" )
end
r = WLink.getPlain( r )
end
if r:find( "&", 1, true ) then
r = mw.text.decode( r )
if r:find( "­", 1, true ) then
r = r:gsub( "­", "" )
end
end
end
return r
end -- flat()
local function flush()
-- JSON encode narrowed input; obey unnamed (numerical) parameters
-- Returns <templatedata> JSON string
local r
if Data.tag then
r = mw.text.jsonEncode( Data.tag ):gsub( "%}$", "," )
else
r = "{"
end
r = r .. "\n\"params\":{"
if Data.order then
local sep = ""
local s
for i = 1, #Data.order do
s = Data.order[ i ]
r = string.format( "%s%s\n%s:%s",
r,
sep,
mw.text.jsonEncode( s ),
mw.text.jsonEncode( Data.params[ s ] ) )
sep = ",\n"
end -- for i = 1, #Data.order
end
r = r .. "\n}\n}"
return r
end -- flush()
local function focus( access )
-- Check components; focus multilingual description, build trees
-- Parameter:
-- access -- string, name of parameter, nil for root
local f = function ( a, at )
local r
if at then
r = string.format( "<code>params.%s</code>", at )
else
r = "''root''"
end
if a then
r = string.format( "%s<code>.%s</code>", r, a )
end
return r
end
local parent
if access then
parent = Data.got.params[ access ]
else
parent = Data.got
end
if type( parent ) == "table" then
local elem, got, permit, s, scope, slot, tag, target
if access then
permit = Permit.params
if type( access ) == "number" then
slot = tostring( access )
else
slot = access
end
else
permit = Permit.root
end
for k, v in pairs( parent ) do
scope = permit[ k ]
if scope then
s = type( v )
if s == "string" and k ~= "format" then
v = mw.text.trim( v )
end
if scope:find( s, 1, true ) then
if scope:find( "I18N", 1, true ) then
if s == "string" then
elem = fair( v )
elseif s == "table" then
local translated
v, translated = faraway( v )
if v then
if translated and
k == "description" then
elem = { [ 1 ] = fair( v ),
[ 2 ] = translated }
else
elem = fair( v )
end
else
elem = false
end
end
if type( v ) == "string" then
if k == "deprecated" then
if v == "1" then
v = true
elseif v == "0" then
v = false
end
elem = v
elseif scope:find( "nowiki", 1, true ) then
elem = mw.text.nowiki( v )
elem = elem:gsub( " \n", "<br>" )
v = v:gsub( string.char( 13 ), "" )
else
v = flat( v )
end
elseif s == "boolean" then
if scope:find( "boolean", 1, true ) then
elem = v
else
s = "Type <code>boolean</code> bad for "
.. f( k, slot )
Fault( s )
end
end
else
if k == "params" and not access then
v = nil
elem = nil
elseif k == "format" and not access then
elem = mw.text.decode( v )
v = nil
elseif k == "inherits" then
elem = v
if not Data.heirs then
Data.heirs = { }
end
Data.heirs[ slot ] = v
v = nil
elseif k == "style" then
elem = v
v = nil
elseif s == "string" then
v = mw.text.nowiki( v )
elem = v
else
elem = v
end
end
if type( elem ) ~= "nil" then
if not target then
if access then
if not Data.tree.params then
Data.tree.params = { }
end
Data.tree.params[ slot ] = { }
target = Data.tree.params[ slot ]
else
Data.tree = { }
target = Data.tree
end
end
target[ k ] = elem
elem = false
end
if type( v ) ~= "nil" then
if not tag then
if access then
if type( v ) == "string" and
v.sub( 1, 1 ) == "=" then
v = nil
else
if not Data.params then
Data.params = { }
end
Data.params[ slot ] = { }
tag = Data.params[ slot ]
end
else
Data.tag = { }
tag = Data.tag
end
end
if type( v ) ~= "nil" and
k ~= "suggestedvalues" then
tag[ k ] = v
end
end
else
s = string.format( "Type <code>%s</code> bad for %s",
scope, f( k, slot ) )
Fault( s )
end
else
Fault( "Unknown component " .. f( k, slot ) )
end
end -- for k, v
if not access and Data.got.sets then
fellows()
end
else
Fault( f() .. " needs to be of <code>object</code> type" )
end
end -- focus()
local function format()
-- Build formatted element
-- Returns <inline>
local source = Data.tree.format:lower()
local r, s
if source == "inline" or source == "block" then
r = mw.html.create( "i" )
:wikitext( source )
else
local code
if source:find( "|", 1, true ) then
local scan = "^[\n ]*%{%{[\n _]*|[\n _]*=[\n _]*%}%}[\n ]*$"
if source:match( scan ) then
code = source:gsub( "\n", "N" )
else
s = mw.text.nowiki( source ):gsub( "\n", "\n" )
s = tostring( mw.html.create( "code" )
:wikitext( s ) )
Fault( "Invalid format " .. s )
source = false
end
else
local words = mw.text.split( source, "%s+" )
local show, start, support, unknown
for i = 1, #words do
s = words[ i ]
if i == 1 then
start = s
end
support = Permit.builder[ s ]
if support == start or
support == "*" then
Permit.builder[ s ] = true
elseif s:match( "^[1-9]%d?" ) and
Permit.builder.align then
Permit.builder.align = tonumber( s )
else
if unknown then
unknown = string.format( "%s %s", unknown, s )
else
unknown = s
end
end
end -- i = 1, #words
if unknown then
s = tostring( mw.html.create( "code" )
:css( "white-space", "nowrap" )
:wikitext( s ) )
Fault( "Unknown/misplaced format keyword " .. s )
source = false
start = false
end
if start == "inline" then
if Permit.builder.half == true then
show = "inline half"
code = "{{_ |_=_}}"
elseif Permit.builder.grouped == true then
show = "inline grouped"
code = "{{_ | _=_}}"
elseif Permit.builder.spaced == true then
show = "inline spaced"
code = "{{_ | _ = _ }}"
end
if Permit.builder.newlines == true then
show = show or "inline"
code = code or "{{_|_=_}}"
show = show .. " newlines"
code = string.format( "N%sN", code )
end
elseif start == "block" then
local space = "" -- amid "|" and name
local spaced = " " -- preceding "="
local spacer = " " -- following "="
local suffix = "N" -- closing "}}" on new line
show = "block"
if Permit.builder.indent == true then
start = " "
show = "block indent"
else
start = ""
end
if Permit.builder.compressed == true then
spaced = ""
spacer = ""
show = show .. " compressed"
if Permit.builder.last == true then
show = show .. " last"
else
suffix = ""
end
else
if Permit.builder.lead == true then
show = show .. " lead"
space = " "
end
if type( Permit.builder.align ) ~= "string" then
local n
s = " align"
if Permit.builder.align == true then
n = 0
if type( Data.got ) == "table" and
type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.params ) do
if type( v ) == "table" and
not v.deprecated and
type( k ) == "string" then
k = mw.ustring.len( k )
if k > n then
n = k
end
end
end -- for k, v
end
else
n = Permit.builder.align
if type( n ) == "number" and n > 1 then
s = string.format( "%s %d", s, n )
else
n = 0 -- How comes?
end
end
if n > 1 then
spaced = string.rep( "_", n - 1 ) .. " "
end
show = show .. s
elseif Permit.builder.after == true then
spaced = ""
show = show .. " after"
elseif Permit.builder.dense == true then
spaced = ""
spacer = ""
show = show .. " dense"
end
if Permit.builder.last == true then
suffix = spacer
show = show .. " last"
end
end
code = string.format( "N{{_N%s|%s_%s=%s_%s}}N",
start,
space,
spaced,
spacer,
suffix )
if show == "block" then
show = "block newlines"
end
end
if show then
r = mw.html.create( "span" )
:wikitext( show )
end
end
if code then
source = code:gsub( "N", "\n" )
code = mw.text.nowiki( code ):gsub( "N", "\n" )
code = mw.html.create( "code" )
:css( "margin-left", "1em" )
:css( "margin-right", "1em" )
:wikitext( code )
if r then
r = mw.html.create( "span" )
:node( r )
:node( code )
else
r = code
end
end
end
if source and Data.tag then
Data.tag.format = source
end
return r
end -- format()
local function formatter()
-- Build presented documentation
-- Returns <div>
local r = mw.html.create( "div" )
local x = fashioned( Data.tree, true, r )
local s
if x then
r = x
end
if Data.leading then
local toc = mw.html.create( "div" )
local shift
if Config.suppressTOCnum then
toc:addClass( Config.suppressTOCnum )
if type( Config.stylesTOCnum ) == "string" then
local src = Config.stylesTOCnum .. "/styles.css"
s = TemplateData.frame:extensionTag( "templatestyles",
nil,
{ src = src } )
r:newline()
:node( s )
end
end
toc:addClass( "navigation-not-searchable" )
:css( "margin-top", "0.5em" )
:wikitext( "__TOC__" )
if Data.sibling then
local block = mw.html.create( "div" )
if TemplateData.ltr then
shift = "right"
else
shift = "left"
end
block:css( "float", shift )
:wikitext( Data.sibling )
r:newline()
:node( block )
:newline()
end
r:newline()
:node( toc )
:newline()
if shift then
r:node( mw.html.create( "div" )
:css( "clear", shift ) )
:newline()
end
end
s = features()
if s then
if Data.leading then
r:node( mw.html.create( "h" .. Config.nested )
:wikitext( factory( "doc-params" ) ) )
:newline()
end
r:node( s )
end
if Data.shared then
local global = mw.html.create( "div" )
:attr( "id", "templatedata-global" )
local shift
if TemplateData.ltr then
shift = "right"
else
shift = "left"
end
global:css( "float", shift )
:wikitext( string.format( "[[%s|%s]]",
Data.shared, "Global" ) )
r:newline()
:node( global )
end
if Data.tree and Data.tree.format then
local e = format()
if e then
local show = "Format"
if Config.supportFormat then
show = string.format( "[[%s|%s]]",
Config.supportFormat, show )
end
r:node( mw.html.create( "p" )
:addClass( "navigation-not-searchable" )
:wikitext( show .. ": " )
:node( e ) )
end
end
return r
end -- formatter()
local function free()
-- Remove JSON comment lines
if Data.source:find( "//", 1, true ) then
Data.source:gsub( "([{,\"'])(%s*\n%s*//.*\n%s*)([{},\"'])",
"%1%3" )
end
end -- free()
local function full()
-- Build survey table from JSON data, append invisible <templatedata>
Data.div = mw.html.create( "div" )
:addClass( "mw-templatedata-doc-wrap" )
if Permit.css.bg then
Data.div:css( Permit.css.bg )
end
if Permit.css.fg then
Data.div:css( Permit.css.fg )
end
focus()
if Data.tag then
if type( Data.got.params ) == "table" then
for k, v in pairs( Data.got.params ) do
focus( k )
end -- for k, v
if Data.heirs then
fathers()
end
end
end
Data.div:node( formatter() )
if not Data.lazy then
Data.slim = flush()
if TemplateData.frame then
local div = mw.html.create( "div" )
local tdata = { [ 1 ] = "templatedata",
[ 2 ] = Data.slim }
Data.strip = TemplateData.frame:callParserFunction( "#tag",
tdata )
div:wikitext( Data.strip )
if Config.loudly then
Data.div:node( mw.html.create( "hr" )
:css( { height = "7ex" } ) )
else
div:css( "display", "none" )
end
Data.div:node( div )
end
end
if Data.lasting then
Fault( "deprecated type syntax" )
end
if Data.less then
Fault( Config.solo )
end
end -- full()
local function furnish( adapt, arglist )
-- Analyze transclusion
-- Parameter:
-- adapt -- table, #invoke parameters
-- arglist -- table, template parameters
-- Returns string
local source
favorize()
-- deprecated:
for k, v in pairs( Config.basicCnf ) do
if adapt[ k ] and adapt[ k ] ~= "" then
Config[ v ] = adapt[ k ]
end
end -- for k, v
if arglist.heading and arglist.heading:match( "^[3-6]$" ) then
Config.nested = arglist.heading
else
Config.nested = "2"
end
Config.loudly = faculty( arglist.debug or adapt.debug )
Data.lazy = faculty( arglist.lazy ) and not Config.loudly
Data.leading = faculty( arglist.TOC )
if Data.leading and arglist.TOCsibling then
Data.sibling = mw.text.trim( arglist.TOCsibling )
end
if arglist.lang then
Data.slang = arglist.lang:lower()
elseif adapt.lang then
Data.slang = adapt.lang:lower()
end
if arglist.JSON then
source = arglist.JSON
elseif arglist.Global then
source = TemplateData.getGlobalJSON( arglist.Global,
arglist.Local )
elseif arglist[ 1 ] then
local s = mw.text.trim( arglist[ 1 ] )
local start = s:sub( 1, 1 )
if start == "<" then
Data.strip = s
elseif start == "{" then
source = s
elseif mw.ustring.sub( s, 1, 8 ) ==
mw.ustring.char( 127, 39, 34, 96, 85, 78, 73, 81 ) then
Data.strip = s
end
end
if type( arglist.vertical ) == "string" and
arglist.vertical:match( "^%d*%.?%d+[emprx]+$" ) then
Data.scroll = arglist.vertical
end
if not source then
Data.title = mw.title.getCurrentTitle()
source = find()
if not source and
not Data.title.text:match( Config.subpage ) then
local s = string.format( Config.suffix,
Data.title.prefixedText )
Data.title = mw.title.new( s )
if Data.title.exists then
source = find()
end
end
end
if not Data.lazy then
if not Data.title then
Data.title = mw.title.getCurrentTitle()
end
Data.lazy = Data.title.text:match( Config.subpage )
end
if type( source ) == "string" then
TemplateData.getPlainJSON( source )
end
return finalize( faculty( arglist.source ) )
end -- furnish()
Failsafe.failsafe = function ( atleast )
-- Retrieve versioning and check for compliance
-- Precondition:
-- atleast -- string, with required version
-- or wikidata|item|~|@ or false
-- Postcondition:
-- Returns string -- with queried version/item, also if problem
-- false -- if appropriate
-- 2020-08-17
local since = atleast
local last = ( since == "~" )
local linked = ( since == "@" )
local link = ( since == "item" )
local r
if last or link or linked or since == "wikidata" then
local item = Failsafe.item
since = false
if type( item ) == "number" and item > 0 then
local suited = string.format( "Q%d", item )
if link then
r = suited
else
local entity = mw.wikibase.getEntity( suited )
if type( entity ) == "table" then
local seek = Failsafe.serialProperty or "P348"
local vsn = entity:formatPropertyValues( seek )
if type( vsn ) == "table" and
type( vsn.value ) == "string" and
vsn.value ~= "" then
if last and vsn.value == Failsafe.serial then
r = false
elseif linked then
if mw.title.getCurrentTitle().prefixedText
== mw.wikibase.getSitelink( suited ) then
r = false
else
r = suited
end
else
r = vsn.value
end
end
end
end
end
end
if type( r ) == "nil" then
if not since or since <= Failsafe.serial then
r = Failsafe.serial
else
r = false
end
end
return r
end -- Failsafe.failsafe()
TemplateData.getGlobalJSON = function ( access, adapt )
-- Retrieve TemplateData from a global repository (JSON)
-- Parameter:
-- access -- string, with page specifier (on WikiMedia Commons)
-- adapt -- JSON string or table with local overrides
-- Returns true, if succeeded
local plugin = Fetch( "/global" )
local r
if type( plugin ) == "table" and
type( plugin.fetch ) == "function" then
local s, got = plugin.fetch( access, adapt )
if got then
Data.got = got
Data.order = got.paramOrder
Data.shared = s
r = true
full()
else
Fault( s )
end
end
return r
end -- TemplateData.getGlobalJSON()
TemplateData.getPlainJSON = function ( adapt )
-- Reduce enhanced JSON data to plain text localized JSON
-- Parameter:
-- adapt -- string, with enhanced JSON
-- Returns string, or not
if type( adapt ) == "string" then
Data.source = adapt
free()
local lucky
lucky, Data.got = pcall( mw.text.jsonDecode, Data.source )
if type( Data.got ) == "table" then
full()
elseif not Data.strip then
local scream = type( Data.got )
if scream == "string" then
scream = Data.got
else
scream = "Data.got: " .. scream
end
Fault( "fatal JSON error: " .. scream )
end
end
return Data.slim
end -- TemplateData.getPlainJSON()
TemplateData.test = function ( adapt, arglist )
TemplateData.frame = mw.getCurrentFrame()
return furnish( adapt, arglist )
end -- TemplateData.test()
-- Export
local p = { }
p.f = function ( frame )
-- Template call
local lucky, r
TemplateData.frame = frame
lucky, r = pcall( furnish, frame.args, frame:getParent().args )
if not lucky then
Fault( "INTERNAL: " .. r )
r = failures()
end
return r
end -- p.f
p.failsafe = function ( frame )
-- Versioning interface
local s = type( frame )
local since
if s == "table" then
since = frame.args[ 1 ]
elseif s == "string" then
since = frame
end
if since then
since = mw.text.trim( since )
if since == "" then
since = false
end
end
return Failsafe.failsafe( since ) or ""
end -- p.failsafe
p.TemplateData = function ()
-- Module interface
return TemplateData
end
return p
a0976bcf0e87d0e519ff239bd6aec0b63b6f40c6
Module:Transclusion count/data/P
828
626
1413
1412
2023-10-01T10:17:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/P]]
Scribunto
text/plain
return {
["P"] = 6100,
["P-phrases"] = 3300,
["P."] = 3700,
["P1"] = 143000,
["P2"] = 293000,
["PAGENAMEBASE"] = 1570000,
["PAGENAMEU"] = 76000,
["PAK"] = 3000,
["PD-US"] = 11000,
["PD-US-1923"] = 2300,
["PD-US-1923-abroad"] = 5900,
["PD-US-expired"] = 4500,
["PD-US-expired-abroad"] = 7100,
["PD-art"] = 3500,
["PD-ineligible-USonly"] = 5200,
["PD-notice"] = 21000,
["PD-old-100"] = 5000,
["PD-self"] = 36000,
["PD-textlogo"] = 6600,
["PDB_Gallery"] = 2900,
["PDanube"] = 3200,
["PER"] = 3100,
["PHI"] = 2500,
["PHL"] = 3500,
["PLANTS"] = 4000,
["PM20"] = 3300,
["PMID"] = 7000,
["POL"] = 53000,
["POR"] = 4900,
["POTD_default"] = 11000,
["POTD_image"] = 2700,
["POTD_navigation"] = 6800,
["POTDlink"] = 7200,
["POV"] = 7300,
["PR/header"] = 3100,
["PR/heading"] = 7200,
["PRT"] = 5700,
["PR_link"] = 102000,
["PS"] = 2900,
["Pad"] = 55000,
["Page"] = 4100,
["Page_name_sub"] = 46000,
["Page_needed"] = 18000,
["Page_tabs"] = 3500,
["Page_tabs/styles.css"] = 3500,
["Page_views"] = 2300,
["Pagelinks"] = 42000,
["Pagelist"] = 4700,
["Pagetype"] = 12200000,
["Paid"] = 9300,
["Para"] = 2630000,
["Parabr"] = 2700,
["Paragraph_break"] = 1240000,
["Param_value"] = 135000,
["Parameter_names_example"] = 2400,
["ParmPart"] = 13000,
["Partial"] = 2100,
["Partial_minor_planet_designation"] = 5800,
["Partly_done"] = 2600,
["Party_color"] = 73000,
["Party_color_cell"] = 4400,
["Party_name_with_color"] = 7600,
["Party_name_with_colour"] = 3200,
["Party_shading/Democratic"] = 15000,
["Party_shading/Independent"] = 2200,
["Party_shading/Republican"] = 14000,
["Party_stripe"] = 18000,
["Pass"] = 2700,
["Pb"] = 1220000,
["Pbox"] = 3100,
["Pbox/1"] = 3100,
["Peacock"] = 3400,
["Pedigree"] = 3900,
["Peer_review/heading"] = 10000,
["Peer_review_tools"] = 8300,
["Pending"] = 3400,
["Pengoal"] = 9500,
["Penmiss"] = 11000,
["Percentage"] = 13000,
["Performance_key"] = 2500,
["Period_color"] = 23000,
["Period_end"] = 21000,
["Period_id"] = 23000,
["Period_start"] = 23000,
["PeruTasks"] = 16000,
["Phab"] = 5600,
["Phanerozoic_220px"] = 21000,
["PharmNavFootnote"] = 5300,
["Philippine_name"] = 2900,
["Philosophy"] = 3600,
["Photo_montage"] = 4500,
["Photo_requested"] = 104000,
["Photograph_requested"] = 3000,
["Photomontage"] = 4400,
["Physics"] = 9300,
["Picture_of_the_day"] = 7200,
["Pie_chart"] = 5800,
["Pie_chart/slice"] = 5800,
["Ping"] = 229000,
["Pipe"] = 115000,
["Place_name_disambiguation"] = 40000,
["Plain_link"] = 161000,
["Plain_list"] = 13000,
["Plain_text"] = 40000,
["Plainlink"] = 80000,
["Plainlist"] = 347000,
["Plainlist/styles.css"] = 2920000,
["Player"] = 3600,
["Player2"] = 2700,
["Please_check_ISSN"] = 14000,
["Plural"] = 105000,
["Pluralize_from_text"] = 1510000,
["Poem_quote"] = 3000,
["Poemquote"] = 2300,
["Politician_icon"] = 33000,
["Politician_icon2"] = 33000,
["Politics_sidebar_below"] = 19000,
["Politics_sidebar_title"] = 19000,
["Poll_top"] = 2000,
["Polluted_category"] = 2200,
["Polparty"] = 27000,
["Pop_density"] = 9200,
["Population_Germany"] = 14000,
["Portal"] = 9310000,
["Portal-Class"] = 7600,
["Portal-inline"] = 218000,
["Portal_bar"] = 113000,
["Portal_box"] = 2700,
["Portalbar"] = 12000,
["Portuguese_name"] = 8700,
["PosMapFS"] = 4300,
["Possible"] = 3400,
["Possibly_empty_category"] = 69000,
["Post-nominals"] = 51000,
["Post-nominals/AUS"] = 7400,
["Post-nominals/CAN"] = 9100,
["Post-nominals/GBR"] = 27000,
["Post-nominals/NZL"] = 4000,
["Postnominals"] = 9200,
["Pp"] = 14000,
["Pp-book-cover"] = 52000,
["Pp-extended"] = 2200,
["Pp-move"] = 8000,
["Pp-move-indef"] = 3400,
["Pp-pc"] = 3700,
["Pp-pc1"] = 2400,
["Pp-protected"] = 6500,
["Pp-semi-indef"] = 4400,
["Pp-template"] = 2600,
["Pp-vandalism"] = 2500,
["Precision"] = 270000,
["PresFoot"] = 2900,
["PresHead"] = 3300,
["PresRow"] = 3300,
["Press"] = 4700,
["Preview_warning"] = 29000,
["Primary_source_inline"] = 5800,
["Primary_sources"] = 30000,
["Principal_rank"] = 479000,
["Prl"] = 102000,
["Pro-wrestling"] = 5500,
["ProCyclingStats"] = 2500,
["ProQuest"] = 16000,
["Professional_wrestling_profiles"] = 2100,
["Professional_wrestling_results_table"] = 2600,
["Profit"] = 3600,
["Progress_box"] = 17000,
["Project-Class"] = 12000,
["Project_Catholicism"] = 2000,
["Project_other"] = 16000,
["Proper_name"] = 2400,
["Prose"] = 3300,
["Proxy_block"] = 2200,
["Pso"] = 3700,
["Purge"] = 378000,
["Purge_button"] = 17000,
["Module:Page"] = 245000,
["Module:PageLinks"] = 42000,
["Module:Page_tabs"] = 3500,
["Module:Pagelist"] = 4700,
["Module:Pagetype"] = 15900000,
["Module:Pagetype/config"] = 15900000,
["Module:ParameterCount"] = 770000,
["Module:Parameter_names_example"] = 2400,
["Module:Parameter_validation"] = 131000,
["Module:Parameter_validation/default_config"] = 131000,
["Module:Party_name_with_color"] = 8500,
["Module:Percentage"] = 13000,
["Module:Person_height"] = 258000,
["Module:Person_length"] = 7000,
["Module:Person_weight"] = 78000,
["Module:Photo_montage"] = 4500,
["Module:Plain_text"] = 1490000,
["Module:Political_party"] = 114000,
["Module:Political_party/A"] = 20000,
["Module:Political_party/B"] = 15000,
["Module:Political_party/C"] = 39000,
["Module:Political_party/D"] = 48000,
["Module:Political_party/E"] = 5500,
["Module:Political_party/F"] = 11000,
["Module:Political_party/G"] = 16000,
["Module:Political_party/H"] = 4900,
["Module:Political_party/I"] = 48000,
["Module:Political_party/J"] = 6900,
["Module:Political_party/K"] = 3600,
["Module:Political_party/L"] = 37000,
["Module:Political_party/M"] = 11000,
["Module:Political_party/N"] = 29000,
["Module:Political_party/O"] = 5000,
["Module:Political_party/P"] = 25000,
["Module:Political_party/R"] = 46000,
["Module:Political_party/S"] = 28000,
["Module:Political_party/T"] = 10000,
["Module:Political_party/U"] = 17000,
["Module:Political_party/V"] = 7100,
["Module:Political_party/W"] = 11000,
["Module:Pop_density"] = 9200,
["Module:PopulationFromWikidata"] = 6200,
["Module:Portal"] = 9620000,
["Module:Portal-inline"] = 218000,
["Module:Portal/images/a"] = 1620000,
["Module:Portal/images/aliases"] = 170000,
["Module:Portal/images/b"] = 2760000,
["Module:Portal/images/c"] = 1540000,
["Module:Portal/images/d"] = 102000,
["Module:Portal/images/e"] = 403000,
["Module:Portal/images/f"] = 801000,
["Module:Portal/images/g"] = 617000,
["Module:Portal/images/h"] = 422000,
["Module:Portal/images/i"] = 1070000,
["Module:Portal/images/j"] = 264000,
["Module:Portal/images/k"] = 69000,
["Module:Portal/images/l"] = 416000,
["Module:Portal/images/m"] = 619000,
["Module:Portal/images/n"] = 718000,
["Module:Portal/images/o"] = 399000,
["Module:Portal/images/other"] = 124000,
["Module:Portal/images/p"] = 837000,
["Module:Portal/images/q"] = 3000,
["Module:Portal/images/r"] = 366000,
["Module:Portal/images/s"] = 1560000,
["Module:Portal/images/t"] = 614000,
["Module:Portal/images/u"] = 986000,
["Module:Portal/images/v"] = 282000,
["Module:Portal/images/w"] = 166000,
["Module:Portal/images/y"] = 32000,
["Module:Portal/images/z"] = 5300,
["Module:Portal/styles.css"] = 9310000,
["Module:Portal_bar"] = 132000,
["Module:Portal_bar/styles.css"] = 132000,
["Module:Professional_wrestling_profiles"] = 2200,
["Module:Professional_wrestling_results_table"] = 2600,
["Module:Progress_box"] = 17000,
["Module:Progress_box/config"] = 17000,
["Module:Progress_box/styles.css"] = 17000,
["Module:Protect"] = 248000,
["Module:Protected_edit_request"] = 47000,
["Module:Protection_banner"] = 54000,
["Module:Protection_banner/config"] = 54000,
["Module:Purge"] = 397000,
}
e1e50a2f5ca745d5b0897049a35f3a7e635a999a
Template:Bold list
10
627
1415
1414
2023-10-01T10:17:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Bold_list]]
wikitext
text/x-wiki
<includeonly>{{{{{|safesubst:}}}#invoke:Bold list|main|conj={{{conj|or}}}}}</includeonly><noinclude>{{{{BASEPAGENAME}}|A|B|C}}
{{Documentation}}</noinclude>
2a2ac83abf84eb3db2c1d0b15b6c66cf88f18e99
Template:HTML lists
10
628
1417
1416
2023-10-01T10:17:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:HTML_lists]]
wikitext
text/x-wiki
{{navbox top
|name= HTML lists
|title=HTML lists
|state=<includeonly>collapsed</includeonly>
|above = More information: {{hlist
| [[Help:List]]
| [[WP:List dos and don'ts]]
| [[WP:Manual of Style/Embedded lists]]
| {{section link|WP:Manual of Style/Accessibility#Lists}}
| [[WP:WikiProject Lists]]
}}
}}
{|style="width:100%"
| style="vertical-align:top; width:32%" |
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|hlist}}}}
|-
| {{tlx|hlist |item1 |item2 |...}}
|-
|
{{hlist |item1 |item2 |...}}
|}
| rowspan=4 style="width:2%"|
| style="vertical-align:top; width:32%"|
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|flatlist}}}}
|-
| {{tlx|flatlist|<br />* item1<br />* item2<br />* ...}}
|-
|
{{flatlist|
* item1
* item2
* ...
}}
|}
| rowspan=4 style="width:2%" |
| style="vertical-align:top; width:32%"|
{| class="wikitable" style="width:100%"
|-
! Horizontal list
|-
| {{mono|{{tl|cslist}}}}
|-
| {{tlx|cslist |item1 |item2 |...}}
|-
|
{{cslist |item1 |item2 |...}}
|-
!style="font-weight: normal; text-align:center;" | {{mono|{{tl|bold list}}}}
|-
| {{tlx|bold list |item1 |item2 |...}}
|-
|
{{bold list |item1 |item2 |...}}
|}
|-
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Bulleted list
|-
| {{mono|{{tl|bulleted list}}}}
|-
| {{tlx|bulleted list |item1 |item2 |...}}
|-
|
{{bulleted list |item1 |item2 |...}}
|}
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Numeric ordered list
|-
| {{mono|{{tl|ordered list}}}}
|-
| {{tlx|Ordered list |first |second |...}}
|-
|
{{Ordered list |first |second |...}}
|}
| style="vertical-align:top;"|
{| class="wikitable" style="width:100%"
|-
! Alphabetic ordered list
|-
| {{mono|{{tl|ordered list}}}}
|-
| {{tlx|Ordered list |list_style_type{{=}}lower-alpha |first |second |...}}
|-
|
{{Ordered list |list_style_type=lower-alpha |first |second |...}}
|}
|-
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Unbulleted list
|-
| {{mono|{{tl|unbulleted list}}}}
|-
| {{tlx|unbulleted list |item1 |item2 |...}}
|-
|
{{unbulleted list|item1|item2|...}}
|}
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Unbulleted list
|-
| {{mono|{{tl|plainlist}}}}
|-
| {{tlx|plainlist|<br />* item1<br />* item2<br />* ...}}
|-
|
{{plainlist|
* item1
* item2
* ...
}}
|}
| style="vertical-align:top" rowspan=2|
{| class="wikitable" style="width:100%"
|-
! Glossary or definition list
|-
| {{mono|{{tl|glossary}}}}<br />([[Wikipedia:Manual of Style/Glossaries|glossary]], description, definition, association)
|-
| {{tlx|glossary}}<br />
{{tlx|term|first term}}{{tlx|defn|first description}}<br />
{{tnull|term|second term}}{{tnull|defn|second description}}<br />
{{tnull|term|...}}{{tnull|defn|....}}<br />
{{mono|{{tl|glossary end}}}}
|-
|
{{glossary}}
{{term|first term}}{{defn|first description}}
{{term|second term}}{{defn|second description}}
{{term|...}}{{defn|....}}
{{glossary end}}
|}
|-
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Bulleted list to flow around an image
|-
| {{mono|{{tl|flowlist}}}}
|-
| <code><nowiki>[[File:Bad Title Example.png|left|thumb|100px]]</nowiki></code><br />
{{tlx|flowlist|<br />*item1<br />*item2<br />*...}}
|-
|
[[File:Bad Title Example.png|left|thumb|100px]]
{{flowlist|
*item1
*item2
*...
}}
|}
| style="vertical-align:top"|
{| class="wikitable" style="width:100%"
|-
! Ordered list in columns
|-
| {{mono|{{tl|columns-list}}}}
|-
| {{tlx|columns-list|colwidth{{=}}5em|<br /># first<br /># second<br /># third<br /># ...}}
|-
|
{{columns-list|colwidth=5em|
# first
# second
# third
# ...
}}
|}
| style="vertical-align:top"|
|}
{{navbox bottom
|below = {{cl|List formatting and function templates}}
}}<noinclude>
{{documentation}}
<!-- Please add categories to the /doc subpage; interwikis go to Wikidata -->
</noinclude>
bc8771283bcdc7d736cca9716beebac6300dd812
Template:Nowiki2
10
629
1419
1418
2023-10-01T10:17:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Nowiki2]]
wikitext
text/x-wiki
{{#if: {{{tag|}}}
| {{#if: {{{style|}}}
| <{{{tag}}} style="{{{style}}}">
| <{{{tag}}}>
}}
}}{{#invoke:LuaCall | call | mw.text.nowiki |\{{{1|}}}<!-- -->}}{{#if: {{{tag|}}}
| </{{{tag}}}>
}}<noinclude>
{{Documentation}}
</noinclude>
2712eeff2099493a4151603b9ed4ea74e51fa6ed
Module:Bold list
828
630
1421
1420
2023-10-01T10:17:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Bold_list]]
Scribunto
text/plain
-- Written by User:Ahecht in response to a thread at [[WP:VPI]]
return { main = function(frame)
args = {}
for i, v in ipairs(frame:getParent().args) do table.insert(args, v) end
conj = "'''" .. (#args > 2 and ", " or " ") .. (frame.args.conj or "or") .. " '''"
return "'''"..mw.text.listToText(args, "''', '''", conj).."'''"
end }
48d1ae74e90832a1b3366b51745334f53a668249
Module:LuaCall
828
631
1423
1422
2023-10-01T10:17:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:LuaCall]]
Scribunto
text/plain
local p={}
function p.main(frame)
local parent = frame.getParent(frame) or {}
local reserved_value = {}
local reserved_function, reserved_contents
for k, v in pairs(parent.args or {}) do
_G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table
end
for k, v in pairs(frame.args or {}) do
_G[k] = tonumber(v) or v -- transfer every parameter directly to the global variable table
end
--- Alas Scribunto does NOT implement coroutines, according to
--- http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#string.format
--- this will not stop us from trying to implement one single lousy function call
if _G[1] then
reserved_function, reserved_contents = mw.ustring.match(_G[1], "^%s*(%a[^%s%(]*)%(([^%)]*)%)%s*$")
end
if reserved_contents then
local reserved_counter = 0
repeat
reserved_counter = reserved_counter + 1
reserved_value[reserved_counter] = _G[mw.ustring.match(reserved_contents, "([^%,]+)")]
reserved_contents = mw.ustring.match(reserved_contents, "[^%,]+,(.*)$")
until not reserved_contents
end
local reserved_arraypart = _G
while mw.ustring.match(reserved_function, "%.") do
reserved_functionpart, reserved_function = mw.ustring.match(reserved_function, "^(%a[^%.]*)%.(.*)$")
reserved_arraypart = reserved_arraypart[reserved_functionpart]
end
local reserved_call = reserved_arraypart[reserved_function]
if type(reserved_call) ~= "function" then
return tostring(reserved_call)
else
reserved_output = {reserved_call(unpack(reserved_value))}
return reserved_output[reserved_return or 1]
end
end
local function tonumberOrString(v)
return tonumber(v) or v:gsub("^\\", "", 1)
end
local function callWithTonumberOrStringOnPairs(f, ...)
local args = {}
for _, v in ... do
table.insert(args, tonumberOrString(v))
end
return (f(unpack(args)))
end
--[[
------------------------------------------------------------------------------------
-- ipairsAtOffset
-- This is an iterator for arrays. It can be used like ipairs, but with
-- specified i as first index to iterate. i is an offset from 1
--
------------------------------------------------------------------------------------
--]]
local function ipairsAtOffset(t, i)
local f, s, i0 = ipairs(t)
return f, s, i0+i
end
local function get(s)
local G = _G; for _ in mw.text.gsplit(
mw.text.trim(s, '%s'), '%s*%.%s*'
) do
G = G[_]
end
return G
end
--[[
------------------------------------------------------------------------------------
-- call
--
-- This function is usually useful for debugging template parameters.
-- Prefix parameter with backslash (\) to force interpreting parameter as string.
-- The leading backslash will be removed before passed to Lua function.
--
-- Example:
-- {{#invoke:LuaCall|call|mw.log|a|1|2|3}} will return results of mw.log('a', 1, 2, 3)
-- {{#invoke:LuaCall|call|mw.logObject|\a|321|\321| \321 }} will return results of mw.logObject('a', 321, '321', ' \\321 ')
--
-- This example show the debugging to see which Unicode characters are allowed in template parameters,
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0061}}}} return 97
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0000}}}} return 65533
-- {{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0001}}}} return 65533
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0002}}}}}} return 0xfffd
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007e}}}}}} return 0x007e
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x007f}}}}}} return 0x007f
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x0080}}}}}} return 0x0080
-- {{#invoke:LuaCall|call|string.format|0x%04x|{{#invoke:LuaCall|call|mw.ustring.codepoint|{{#invoke:LuaCall|call|mw.ustring.char|0x00a0}}}}}} return 0x00a0
--
------------------------------------------------------------------------------------
--]]
function p.call(frame)
return callWithTonumberOrStringOnPairs(get(frame.args[1]),
ipairsAtOffset(frame.args, 1)
)
end
--local TableTools = require('Module:TableTools')
--[[
------------------------------------------------------------------------------------
-- get
--
-- Example:
-- {{#invoke:LuaCall|get| math.pi }} will return value of math.pi
-- {{#invoke:LuaCall|get|math|pi}} will return value of math.pi
-- {{#invoke:LuaCall|get| math |pi}} will return value of _G[' math '].pi
-- {{#invoke:LuaCall|get|_G| math.pi }} will return value of _G[' math.pi ']
-- {{#invoke:LuaCall|get|obj.a.5.c}} will return value of obj.a['5'].c
-- {{#invoke:LuaCall|get|obj|a|5|c}} will return value of obj.a[5].c
--
------------------------------------------------------------------------------------
--]]
function p.get(frame)
-- #frame.args always return 0, regardless of number of unnamed
-- template parameters, so check manually instead
if frame.args[2] == nil then
-- not do tonumber() for this args style,
-- always treat it as string,
-- so 'obj.1' will mean obj['1'] rather obj[1]
return get(frame.args[1])
else
local G = _G
for _, v in ipairs(frame.args) do
G = G[tonumberOrString(v)]
end
return G
end
end
--[[
------------------------------------------------------------------------------------
-- invoke
--
-- This function is used by Template:Invoke
--
------------------------------------------------------------------------------------
--]]
function p.invoke(frame)
local pframe, usedpargs = frame:getParent(), {}
-- get module and function names from parent args if not provided
local pfargs = setmetatable({frame.args[1], frame.args[2]}, {__index = table})
if not pfargs[1] then
pfargs[1], usedpargs[1] = pframe.args[1], true
if not pfargs[2] then
pfargs[2], usedpargs[2] = pframe.args[2], true
end
elseif not pfargs[2] then
pfargs[2], usedpargs[1] = pframe.args[1], true
end
-- repack sequential args
for i, v in ipairs(pframe.args) do
if not usedpargs[i] then
pfargs:insert(v)
usedpargs[i] = true
end
end
-- copy other args
for k, v in pairs(pframe.args) do
if not pfargs[k] and not usedpargs[k] then
pfargs[k], usedpargs[k] = v, true
end
end
-- #invoke off parent frame so the new frame has the same parent
return pframe:callParserFunction{name = '#invoke', args = pfargs}
end
return p
d6ec342627682bf90e61bbad921fcc6190f2e090
Template:Navbox lists
10
632
1425
1424
2023-10-01T10:17:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbox_lists]]
wikitext
text/x-wiki
#REDIRECT [[Template:HTML lists]]
{{R from move}}
8b26162bd61fb3a71c7bbf97d6b1aff6ba54020e
Module:Format TemplateData/config
828
633
1427
1426
2023-10-01T10:17:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Format_TemplateData/config]]
Scribunto
text/plain
local Serial = "2022-03-20"
--[=[
enwiki configuration {{TemplateData}}
mw.loadData()
]=]
return { catProblem = false,
classMultiColumns = "column-multiple",
classNoNumTOC = "nonumtoc",
classTable = { "wikitable", "templatedata-params" },
cssParams = { ["border"] = "#B3B7FF 1px solid" },
docpageCreate = "%s/doc",
docpageDetect = "/doc",
helpBoolean = false,
helpContent = false,
helpDate = false,
helpFile = false,
helpFormat = false,
helpLine = false,
helpNumber = false,
helpPage = false,
helpString = false,
helpTemplate = false,
helpURL = false,
helpUser = false,
msgDescMiss = "missing <code>description</code>",
permit =
{ boole = { [true] = { css = { ["color"] = "#050",
["font-weight"] = "bold" },
lead = false,
show = "True" },
[false] = { css = { ["color"] = "#610",
["font-weight"] = "bold" },
lead = false,
show = "False" } },
css = { tableheadbg = { ["background-color"] = "#B3B7FF" },
bg = { ["bg"] = "none" },
required = { ["border-left"] = "3px solid black" },
suggested = { ["border-left"] = "3px solid #888" },
optional = { ["border-left"] = "3px solid #CCC" },
deprecated = { ["background-color"] = "#FDD",
["border-left"] = "3px dotted red" } }
},
tStylesTOCnum = "TOC nonum",
tStylesMultiColumns = "column-multiple",
serial = Serial }
ce8c2e3e08b7c06d862b014b7affdebda341027a
Module:Multilingual
828
634
1429
1428
2023-10-01T10:17:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Multilingual]]
Scribunto
text/plain
local Multilingual = { suite = "Multilingual",
serial = "2020-12-10",
item = 47541920,
globals = { ISO15924 = 71584769,
WLink = 19363224 }
}
--[=[
Utilities for multilingual texts and ISO 639 (BCP47) issues etc.
* fair()
* fallback()
* findCode()
* fix()
* format()
* getBase()
* getLang()
* getName()
* i18n()
* int()
* isLang()
* isLangWiki()
* isMinusculable()
* isRTL()
* message()
* sitelink()
* tabData()
* userLang()
* userLangCode()
* wikibase()
* failsafe()
loadData: Multilingual/config Multilingual/names
]=]
local Failsafe = Multilingual
local GlobalMod = Multilingual
local GlobalData = Multilingual
local User = { sniffer = "showpreview" }
Multilingual.globals.Multilingual = Multilingual.item
Multilingual.exotic = { simple = true,
no = true }
Multilingual.prefer = { cs = true,
de = true,
en = true,
es = true,
fr = true,
it = true,
nl = true,
pt = true,
ru = true,
sv = true }
local foreignModule = function ( access, advanced, append, alt, alert )
-- Fetch global module
-- Precondition:
-- access -- string, with name of base module
-- advanced -- true, for require(); else mw.loadData()
-- append -- string, with subpage part, if any; or false
-- alt -- number, of wikidata item of root; or false
-- alert -- true, for throwing error on data problem
-- Postcondition:
-- Returns whatever, probably table
-- 2020-01-01
local storage = access
local finer = function ()
if append then
storage = string.format( "%s/%s",
storage,
append )
end
end
local fun, lucky, r, suited
if advanced then
fun = require
else
fun = mw.loadData
end
GlobalMod.globalModules = GlobalMod.globalModules or { }
suited = GlobalMod.globalModules[ access ]
if not suited then
finer()
lucky, r = pcall( fun, "Module:" .. storage )
end
if not lucky then
if not suited and
type( alt ) == "number" and
alt > 0 then
suited = string.format( "Q%d", alt )
suited = mw.wikibase.getSitelink( suited )
GlobalMod.globalModules[ access ] = suited or true
end
if type( suited ) == "string" then
storage = suited
finer()
lucky, r = pcall( fun, storage )
end
if not lucky and alert then
error( "Missing or invalid page: " .. storage )
end
end
return r
end -- foreignModule()
local fetchData = function ( access )
-- Retrieve translated keyword from commons:Data:****.tab
-- Precondition:
-- access -- string, with page identification on Commons
-- Returns table, with data, or string, with error message
-- 2019-12-05
local storage = access
local r
if type( storage ) == "string" then
local s
storage = mw.text.trim( storage )
s = storage:lower()
if s:sub( 1, 2 ) == "c:" then
storage = mw.text.trim( storage:sub( 3 ) )
s = storage:lower()
elseif s:sub( 1, 8 ) == "commons:" then
storage = mw.text.trim( storage:sub( 9 ) )
s = storage:lower()
end
if s:sub( 1, 5 ) == "data:" then
storage = mw.text.trim( storage:sub( 6 ) )
s = storage:lower()
end
if s == "" or s == ".tab" then
storage = false
elseif s:sub( -4 ) == ".tab" then
storage = storage:sub( 1, -5 ) .. ".tab"
else
storage = storage .. ".tab"
end
end
if type( storage ) == "string" then
local data
if type( GlobalData.TabDATA ) ~= "table" then
GlobalData.TabDATA = { }
end
data = GlobalData.TabDATA[ storage ]
if data then
r = data
else
local lucky
lucky, data = pcall( mw.ext.data.get, storage, "_" )
if type( data ) == "table" then
data = data.data
if type( data ) == "table" then
GlobalData.TabDATA[ storage ] = data
else
r = string.format( "%s [[%s%s]]",
"INVALID Data:*.tab",
"commons:Data:",
storage )
end
else
r = "BAD PAGE Data:*.tab – commons:" .. storage
end
if r then
GlobalData.TabDATA[ storage ] = r
data = false
else
r = data
end
end
else
r = "BAD PAGE commons:Data:*.tab"
end
return r
end -- fetchData()
local favorites = function ()
-- Provide fallback codes
-- Postcondition:
-- Returns table with sequence of preferred languages
-- * ahead elements
-- * user (not yet accessible)
-- * page content language (not yet accessible)
-- * page name subpage
-- * project
-- * en
local r = Multilingual.polyglott
if not r then
local self = mw.language.getContentLanguage():getCode():lower()
local sub = mw.title.getCurrentTitle().subpageText
local f = function ( add )
local s = add
for i = 1, #r do
if r[ i ] == s then
s = false
break -- for i
end
end -- for i
if s then
table.insert( r, s )
end
end
r = { }
if sub:find( "/", 2, true ) then
sub = sub:match( "/(%l%l%l?)$" )
if sub then
table.insert( r, sub )
end
elseif sub:find( "^%l%l%l?%-?%a?%a?%a?%a?$" ) and
mw.language.isSupportedLanguage( sub ) then
table.insert( r, sub )
end
f( self )
f( "en" )
Multilingual.polyglott = r
end
return r
end -- favorites()
local feasible = function ( ask, accept )
-- Is ask to be supported by application?
-- Precondition:
-- ask -- lowercase code
-- accept -- sequence table, with offered lowercase codes
-- Postcondition:
-- nil, or true
local r
for i = 1, #accept do
if accept[ i ] == ask then
r = true
break -- for i
end
end -- for i
return r
end -- feasible()
local fetch = function ( access, append )
-- Attach config or library module
-- Precondition:
-- access -- module title
-- append -- string, with subpage part of this; or false
-- Postcondition:
-- Returns: table, with library, or false
local got, sign
if append then
sign = string.format( "%s/%s", access, append )
else
sign = access
end
if type( Multilingual.ext ) ~= "table" then
Multilingual.ext = { }
end
got = Multilingual.ext[ sign ]
if not got and got ~= false then
local global = Multilingual.globals[ access ]
local lib = ( not append or append == "config" )
got = foreignModule( access, lib, append, global )
if type( got ) == "table" then
if lib then
local startup = got[ access ]
if type( startup ) == "function" then
got = startup()
end
end
else
got = false
end
Multilingual.ext[ sign ] = got
end
return got
end -- fetch()
local fetchISO639 = function ( access )
-- Retrieve table from commons:Data:ISO639/***.tab
-- Precondition:
-- access -- string, with subpage identification
-- Postcondition:
-- Returns table, with data, even empty
local r
if type( Multilingual.iso639 ) ~= "table" then
Multilingual.iso639 = { }
end
r = Multilingual.iso639[ access ]
if type( r ) == "nil" then
local raw = fetchData( "ISO639/" .. access )
if type( raw ) == "table" then
local t
r = { }
for i = 1, #raw do
t = raw[ i ]
if type( t ) == "table" and
type( t[ 1 ] ) == "string" and
type( t[ 2 ] ) == "string" then
r[ t[ 1 ] ] = t[ 2 ]
else
break -- for i
end
end -- for i
else
r = false
end
Multilingual.iso639[ access ] = r
end
return r or { }
end -- fetchISO639()
local fill = function ( access, alien, frame )
-- Expand language name template
-- Precondition:
-- access -- string, with language code
-- alien -- language code for which to be generated
-- frame -- frame, if available
-- Postcondition:
-- Returns string
local template = Multilingual.tmplLang
local r
if type( template ) ~= "table" then
local cnf = fetch( "Multilingual", "config" )
if cnf then
template = cnf.tmplLang
end
end
if type( template ) == "table" then
local source = template.title
local f, lucky, s
Multilingual.tmplLang = template
if type( source ) ~= "string" and
type( template.namePat ) == "string" and
template.namePat:find( "%s", 1, true ) then
source = string.format( template.namePat, access )
end
if type( source ) == "string" then
if not Multilingual.frame then
if frame then
Multilingual.frame = frame
else
Multilingual.frame = mw.getCurrentFrame()
end
end
f = function ( a )
return Multilingual.frame:expandTemplate{ title = a }
end
lucky, s = pcall( f, source )
if lucky then
r = s
end
end
end
return r
end -- fill()
local find = function ( ask, alien )
-- Derive language code from name
-- Precondition:
-- ask -- language name, downcased
-- alien -- language code of ask
-- Postcondition:
-- nil, or string
local codes = mw.language.fetchLanguageNames( alien, "all" )
local r
for k, v in pairs( codes ) do
if mw.ustring.lower( v ) == ask then
r = k
break -- for k, v
end
end -- for k, v
if not r then
r = Multilingual.fair( ask )
end
return r
end -- find()
local fold = function ( frame )
-- Merge template and #invoke arglist
-- Precondition:
-- frame -- template frame
-- Postcondition:
-- table, with combined arglist
local r = { }
local f = function ( apply )
if type( apply ) == "table" and
type( apply.args ) == "table" then
for k, v in pairs( apply.args ) do
v = mw.text.trim( v )
if v ~= "" then
r[ tostring( k ) ] = v
end
end -- for k, v
end
end -- f()
f( frame:getParent() )
f( frame )
return r
end -- fold()
User.favorize = function ( accept, frame )
-- Guess user language
-- Precondition:
-- accept -- sequence table, with offered ISO 639 etc. codes
-- frame -- frame, if available
-- Postcondition:
-- Returns string with best code, or nil
if not ( User.self or User.langs ) then
if not User.trials then
User.tell = mw.message.new( User.sniffer )
if User.tell:exists() then
User.trials = { }
if not Multilingual.frame then
if frame then
Multilingual.frame = frame
else
Multilingual.frame = mw.getCurrentFrame()
end
end
User.sin = Multilingual.frame:callParserFunction( "int",
User.sniffer )
else
User.langs = true
end
end
if User.sin then
local order = { }
local post = { }
local three = { }
local unfold = { }
local s, sin
for i = 1, #accept do
s = accept[ i ]
if not User.trials[ s ] then
if #s > 2 then
if s:find( "-", 3, true ) then
table.insert( unfold, s )
else
table.insert( three, s )
end
else
if Multilingual.prefer[ s ] then
table.insert( order, s )
else
table.insert( post, s )
end
end
end
end -- for i
for i = 1, #post do
table.insert( order, post[ i ] )
end -- for i
for i = 1, #three do
table.insert( order, three[ i ] )
end -- for i
for i = 1, #unfold do
table.insert( order, unfold[ i ] )
end -- for i
for i = 1, #order do
s = order[ i ]
sin = User.tell:inLanguage( s ):plain()
if sin == User.sin then
User.self = s
break -- for i
else
User.trials[ s ] = true
end
end -- for i
end
end
return User.self
end -- User.favorize()
Multilingual.fair = function ( ask )
-- Format language specification according to RFC 5646 etc.
-- Precondition:
-- ask -- string or table, as created by .getLang()
-- Postcondition:
-- Returns string, or false
local s = type( ask )
local q, r
if s == "table" then
q = ask
elseif s == "string" then
q = Multilingual.getLang( ask )
end
if q and
q.legal and
mw.language.isKnownLanguageTag( q.base ) then
r = q.base
if q.n > 1 then
local order = { "extlang",
"script",
"region",
"other",
"extension" }
for i = 1, #order do
s = q[ order[ i ] ]
if s then
r = string.format( "%s-%s", r, s )
end
end -- for i
end
end
return r or false
end -- Multilingual.fair()
Multilingual.fallback = function ( able, another )
-- Is another language suitable as replacement?
-- Precondition:
-- able -- language version specifier to be supported
-- another -- language specifier of a possible replacement,
-- or not to retrieve a fallback table
-- Postcondition:
-- Returns boolean, or table with fallback codes
local r
if type( able ) == "string" and #able > 0 then
if type( another ) == "string" and #another > 0 then
if able == another then
r = true
else
local s = Multilingual.getBase( able )
if s == another then
r = true
else
local others = mw.language.getFallbacksFor( s )
r = feasible( another, others )
end
end
else
local s = Multilingual.getBase( able )
if s then
r = mw.language.getFallbacksFor( s )
if r[ 1 ] == "en" then
local d = fetchISO639( "fallback" )
if type( d ) == "table" and
type( d[ s ] ) == "string" then
r = mw.text.split( d[ s ], "|" )
table.insert( r, "en" )
end
end
end
end
end
return r or false
end -- Multilingual.fallback()
Multilingual.findCode = function ( ask )
-- Retrieve code of local (current project or English) language name
-- Precondition:
-- ask -- string, with presumable language name
-- A code itself will be identified, too.
-- Postcondition:
-- Returns string, or false
local seek = mw.text.trim( ask )
local r = false
if #seek > 1 then
if seek:find( "[", 1, true ) then
local wlink = fetch( "WLink" )
if wlink and
type( wlink.getPlain ) == "function" then
seek = wlink.getPlain( seek )
end
end
seek = mw.ustring.lower( seek )
if Multilingual.isLang( seek ) then
r = Multilingual.fair( seek )
else
local collection = favorites()
for i = 1, #collection do
r = find( seek, collection[ i ] )
if r then
break -- for i
end
end -- for i
end
end
return r
end -- Multilingual.findCode()
Multilingual.fix = function ( attempt )
-- Fix frequently mistaken language code
-- Precondition:
-- attempt -- string, with presumable language code
-- Postcondition:
-- Returns string with correction, or false if no problem known
local r = fetchISO639( "correction" )[ attempt:lower() ]
return r or false
end -- Multilingual.fix()
Multilingual.format = function ( apply, alien, alter, active, alert,
frame, assembly, adjacent, ahead )
-- Format one or more languages
-- Precondition:
-- apply -- string with language list or item
-- alien -- language of the answer
-- -- nil, false, "*": native
-- -- "!": current project
-- -- "#": code, downcased, space separated
-- -- "-": code, mixcase, space separated
-- -- any valid code
-- alter -- capitalize, if "c"; downcase all, if "d"
-- capitalize first item only, if "f"
-- downcase every first word only, if "m"
-- active -- link items, if true
-- alert -- string with category title in case of error
-- frame -- if available
-- assembly -- string with split pattern, if list expected
-- adjacent -- string with list separator, else assembly
-- ahead -- string to prepend first element, if any
-- Postcondition:
-- Returns string, or false if apply empty
local r = false
if apply then
local slang
if assembly then
local bucket = mw.text.split( apply, assembly )
local shift = alter
local separator
if adjacent then
separator = adjacent
elseif alien == "#" or alien == "-" then
separator = " "
else
separator = assembly
end
for k, v in pairs( bucket ) do
slang = Multilingual.format( v, alien, shift, active,
alert )
if slang then
if r then
r = string.format( "%s%s%s",
r, separator, slang )
else
r = slang
if shift == "f" then
shift = "d"
end
end
end
end -- for k, v
if r and ahead then
r = ahead .. r
end
else
local single = mw.text.trim( apply )
if single == "" then
r = false
else
local lapsus, slot
slang = Multilingual.findCode( single )
if slang then
if alien == "-" then
r = slang
elseif alien == "#" then
r = slang:lower()
else
r = Multilingual.getName( slang, alien )
if active then
slot = fill( slang, false, frame )
if slot then
local wlink = fetch( "WLink" )
if wlink and
type( wlink.getTarget )
== "function" then
slot = wlink.getTarget( slot )
end
else
lapsus = alert
end
end
end
else
r = single
if active then
local title = mw.title.makeTitle( 0, single )
if title.exists then
slot = single
end
end
lapsus = alert
end
if not r then
r = single
elseif alter == "c" or alter == "f" then
r = mw.ustring.upper( mw.ustring.sub( r, 1, 1 ) )
.. mw.ustring.sub( r, 2 )
elseif alter == "d" then
if Multilingual.isMinusculable( slang, r ) then
r = mw.ustring.lower( r )
end
elseif alter == "m" then
if Multilingual.isMinusculable( slang, r ) then
r = mw.ustring.lower( mw.ustring.sub( r, 1, 1 ) )
.. mw.ustring.sub( r, 2 )
end
end
if slot then
if r == slot then
r = string.format( "[[%s]]", r )
else
r = string.format( "[[%s|%s]]", slot, r )
end
end
if lapsus and alert then
r = string.format( "%s[[Category:%s]]", r, alert )
end
end
end
end
return r
end -- Multilingual.format()
Multilingual.getBase = function ( ask )
-- Retrieve base language from possibly combined ISO language code
-- Precondition:
-- ask -- language code
-- Postcondition:
-- Returns string, or false
local r
if ask then
local slang = ask:match( "^%s*(%a%a%a?)-?%a*%s*$" )
if slang then
r = slang:lower()
else
r = false
end
else
r = false
end
return r
end -- Multilingual.getBase()
Multilingual.getLang = function ( ask )
-- Retrieve components of a RFC 5646 language code
-- Precondition:
-- ask -- language code with subtags
-- Postcondition:
-- Returns table with formatted subtags
-- .base
-- .region
-- .script
-- .suggest
-- .year
-- .extension
-- .other
-- .n
local tags = mw.text.split( ask, "-" )
local s = tags[ 1 ]
local r
if s:match( "^%a%a%a?$" ) then
r = { base = s:lower(),
legal = true,
n = #tags }
for i = 2, r.n do
s = tags[ i ]
if #s == 2 then
if r.region or not s:match( "%a%a" ) then
r.legal = false
else
r.region = s:upper()
end
elseif #s == 4 then
if s:match( "%a%a%a%a" ) then
r.legal = ( not r.script )
r.script = s:sub( 1, 1 ):upper() ..
s:sub( 2 ):lower()
elseif s:match( "20%d%d" ) or
s:match( "1%d%d%d" ) then
r.legal = ( not r.year )
r.year = s
else
r.legal = false
end
elseif #s == 3 then
if r.extlang or not s:match( "%a%a%a" ) then
r.legal = false
else
r.extlang = s:lower()
end
elseif #s == 1 then
s = s:lower()
if s:match( "[tux]" ) then
r.extension = s
for k = i + 1, r.n do
s = tags[ k ]
if s:match( "^%w+$" ) then
r.extension = string.format( "%s-%s",
r.extension, s )
else
r.legal = false
end
end -- for k
else
r.legal = false
end
break -- for i
else
r.legal = ( not r.other ) and
s:match( "%a%a%a" )
r.other = s:lower()
end
if not r.legal then
break -- for i
end
end -- for i
if r.legal then
r.suggest = Multilingual.fix( r.base )
if r.suggest then
r.legal = false
end
end
else
r = { legal = false }
end
if not r.legal then
local cnf = fetch( "Multilingual", "config" )
if cnf and type( cnf.scream ) == "string" then
r.scream = cnf.scream
end
end
return r
end -- Multilingual.getLang()
Multilingual.getName = function ( ask, alien )
-- Which name is assigned to this language code?
-- Precondition:
-- ask -- language code
-- alien -- language of the answer
-- -- nil, false, "*": native
-- -- "!": current project
-- -- any valid code
-- Postcondition:
-- Returns string, or false
local r
if ask then
local slang = alien
local tLang
if slang then
if slang == "*" then
slang = Multilingual.fair( ask )
elseif slang == "!" then
slang = favorites()[ 1 ]
else
slang = Multilingual.fair( slang )
end
else
slang = Multilingual.fair( ask )
end
if not slang then
slang = ask or "?????"
end
slang = slang:lower()
tLang = fetch( "Multilingual", "names" )
if tLang then
tLang = tLang[ slang ]
if tLang then
r = tLang[ ask ]
end
end
if not r then
if not Multilingual.ext.tMW then
Multilingual.ext.tMW = { }
end
tLang = Multilingual.ext.tMW[ slang ]
if tLang == nil then
tLang = mw.language.fetchLanguageNames( slang )
if tLang then
Multilingual.ext.tMW[ slang ] = tLang
else
Multilingual.ext.tMW[ slang ] = false
end
end
if tLang then
r = tLang[ ask ]
end
end
if not r then
r = mw.language.fetchLanguageName( ask:lower(), slang )
if r == "" then
r = false
end
end
else
r = false
end
return r
end -- Multilingual.getName()
Multilingual.i18n = function ( available, alt, frame )
-- Select translatable message
-- Precondition:
-- available -- table, with mapping language code ./. text
-- alt -- string|nil|false, with fallback text
-- frame -- frame, if available
-- Returns
-- 1. string|nil|false, with selected message
-- 2. string|nil|false, with language code
local r1, r2
if type( available ) == "table" then
local codes = { }
local trsl = { }
local slang
for k, v in pairs( available ) do
if type( k ) == "string" and
type( v ) == "string" then
slang = mw.text.trim( k:lower() )
table.insert( codes, slang )
trsl[ slang ] = v
end
end -- for k, v
slang = Multilingual.userLang( codes, frame )
if slang and trsl[ slang ] then
r1 = mw.text.trim( trsl[ slang ] )
if r1 == "" then
r1 = false
else
r2 = slang
end
end
end
if not r1 and type( alt ) == "string" then
r1 = mw.text.trim( alt )
if r1 == "" then
r1 = false
end
end
return r1, r2
end -- Multilingual.i18n()
Multilingual.int = function ( access, alien, apply )
-- Translated system message
-- Precondition:
-- access -- message ID
-- alien -- language code
-- apply -- nil, or sequence table with parameters $1, $2, ...
-- Postcondition:
-- Returns string, or false
local o = mw.message.new( access )
local r
if o:exists() then
if type( alien ) == "string" then
o:inLanguage( alien:lower() )
end
if type( apply ) == "table" then
o:params( apply )
end
r = o:plain()
end
return r or false
end -- Multilingual.int()
Multilingual.isLang = function ( ask, additional )
-- Could this be an ISO language code?
-- Precondition:
-- ask -- language code
-- additional -- true, if Wiki codes like "simple" permitted
-- Postcondition:
-- Returns boolean
local r, s
if additional then
s = ask
else
s = Multilingual.getBase( ask )
end
if s then
r = mw.language.isKnownLanguageTag( s )
if r then
r = not Multilingual.fix( s )
elseif additional then
r = Multilingual.exotic[ s ] or false
end
else
r = false
end
return r
end -- Multilingual.isLang()
Multilingual.isLangWiki = function ( ask )
-- Could this be a Wiki language version?
-- Precondition:
-- ask -- language version specifier
-- Postcondition:
-- Returns boolean
local r
local s = Multilingual.getBase( ask )
if s then
r = mw.language.isSupportedLanguage( s ) or
Multilingual.exotic[ ask ]
else
r = false
end
return r
end -- Multilingual.isLangWiki()
Multilingual.isMinusculable = function ( ask, assigned )
-- Could this language name become downcased?
-- Precondition:
-- ask -- language code, or nil
-- assigned -- language name, or nil
-- Postcondition:
-- Returns boolean
local r = true
if ask then
local cnf = fetch( "Multilingual", "config" )
if cnf then
local s = string.format( " %s ", ask:lower() )
if type( cnf.stopMinusculization ) == "string"
and cnf.stopMinusculization:find( s, 1, true ) then
r = false
end
if r and assigned
and type( cnf.seekMinusculization ) == "string"
and cnf.seekMinusculization:find( s, 1, true )
and type( cnf.scanMinusculization ) == "string" then
local scan = assigned:gsub( "[%(%)]", " " ) .. " "
if not scan:find( cnf.scanMinusculization ) then
r = false
end
end
end
end
return r
end -- Multilingual.isMinusculable()
Multilingual.isRTL = function ( ask )
-- Check whether language is written right-to-left
-- Precondition:
-- ask -- string, with language (or script) code
-- Returns true, if right-to-left
local r
Multilingual.rtl = Multilingual.rtl or { }
r = Multilingual.rtl[ ask ]
if type( r ) ~= "boolean" then
local bib = fetch( "ISO15924" )
if type( bib ) == "table" and
type( bib.isRTL ) == "function" then
r = bib.isRTL( ask )
else
r = mw.language.new( ask ):isRTL()
end
Multilingual.rtl[ ask ] = r
end
return r
end -- Multilingual.isRTL()
Multilingual.message = function ( arglist, frame )
-- Show text in best match of user language like system message
-- Precondition:
-- arglist -- template arguments
-- frame -- frame, if available
-- Postcondition:
-- Returns string with appropriate text
local r
if type( arglist ) == "table" then
local t = { }
local m, p, save
for k, v in pairs( arglist ) do
if type( k ) == "string" and
type( v ) == "string" then
v = mw.text.trim( v )
if v ~= "" then
if k:match( "^%l%l" ) then
t[ k ] = v
elseif k:match( "^%$%d$" ) and k ~= "$0" then
p = p or { }
k = tonumber( k:match( "^%$(%d)$" ) )
p[ k ] = v
if not m or k > m then
m = k
end
end
end
end
end -- for k, v
if type( arglist[ "-" ] ) == "string" then
save = arglist[ arglist[ "-" ] ]
end
r = Multilingual.i18n( t, save, frame )
if p and r and r:find( "$", 1, true ) then
t = { }
for i = 1, m do
t[ i ] = p[ i ] or ""
end -- for i
r = mw.message.newRawMessage( r, t ):plain()
end
end
return r or ""
end -- Multilingual.message()
Multilingual.sitelink = function ( all, frame )
-- Make link at local or other site with optimal linktext translation
-- Precondition:
-- all -- string or table or number, item ID or entity
-- frame -- frame, if available
-- Postcondition:
-- Returns string with any helpful internal link, or plain text
local s = type( all )
local object, r
if s == "table" then
object = all
elseif s == "string" then
object = mw.wikibase.getEntity( all )
elseif s == "number" then
object = mw.wikibase.getEntity( string.format( "Q%d", all ) )
end
if type( object ) == "table" then
local collection = object.sitelinks
local entry
s = false
if type( collection ) == "table" then
Multilingual.site = Multilingual.site or
mw.wikibase.getGlobalSiteId()
entry = collection[ Multilingual.site ]
if entry then
s = ":" .. entry.title
elseif collection.enwiki then
s = "w:en:" .. collection.enwiki.title
end
end
r = Multilingual.wikibase( object, "labels", frame )
if s then
if s == ":" .. r then
r = string.format( "[[%s]]", s )
else
r = string.format( "[[%s|%s]]", s, r )
end
end
end
return r or ""
end -- Multilingual.sitelink()
Multilingual.tabData = function ( access, at, alt, frame )
-- Retrieve translated keyword from commons:Data:****.tab
-- Precondition:
-- access -- string, with page identification on Commons
-- at -- string, with keyword
-- alt -- string|nil|false, with fallback text
-- frame -- frame, if available
-- Returns
-- 1. string|nil|false, with selected message
-- 2. language code, or "error"
local data = fetchData( access )
local r1, r2
if type( data ) == "table" then
if type( at ) == "string" then
local seek = mw.text.trim( at )
if seek == "" then
r1 = "EMPTY Multilingual.tabData key"
else
local e, poly
for i = 1, #data do
e = data[ i ]
if type( e ) == "table" then
if e[ 1 ] == seek then
if type( e[ 2 ] ) == "table" then
poly = e[ 2 ]
else
r1 = "INVALID Multilingual.tabData bad #"
.. tostring( i )
end
break -- for i
end
else
break -- for i
end
end -- for i
if poly then
data = poly
else
r1 = "UNKNOWN Multilingual.tabData key: " .. seek
end
end
else
r1 = "INVALID Multilingual.tabData key"
end
else
r1 = data
end
if r1 then
r2 = "error"
elseif data then
r1, r2 = Multilingual.i18n( data, alt, frame )
r2 = r2 or "error"
end
return r1, r2
end -- Multilingual.tabData()
Multilingual.userLang = function ( accept, frame )
-- Try to support user language by application
-- Precondition:
-- accept -- string or table
-- space separated list of available ISO 639 codes
-- Default: project language, or English
-- frame -- frame, if available
-- Postcondition:
-- Returns string with appropriate code
local s = type( accept )
local codes, r, slang
if s == "string" then
codes = mw.text.split( accept:lower(), "%s+" )
elseif s == "table" then
codes = { }
for i = 1, #accept do
s = accept[ i ]
if type( s ) == "string" and
s ~= "" then
table.insert( codes, s:lower() )
end
end -- for i
end
slang = User.favorize( codes, frame )
if slang then
if feasible( slang, codes ) then
r = slang
elseif slang:find( "-", 1, true ) then
slang = Multilingual.getBase( slang )
if feasible( slang, codes ) then
r = slang
end
end
if not r then
local others = mw.language.getFallbacksFor( slang )
for i = 1, #others do
slang = others[ i ]
if feasible( slang, codes ) then
r = slang
break -- for i
end
end -- for i
end
end
if not r then
local back = favorites()
for i = 1, #back do
slang = back[ i ]
if feasible( slang, codes ) then
r = slang
break -- for i
end
end -- for i
if not r and codes[ 1 ] then
r = codes[ 1 ]
end
end
return r or favorites()[ 1 ]
end -- Multilingual.userLang()
Multilingual.userLangCode = function ()
-- Guess a user language code
-- Postcondition:
-- Returns code of current best guess
return User.self or favorites()[ 1 ]
end -- Multilingual.userLangCode()
Multilingual.wikibase = function ( all, about, attempt, frame )
-- Optimal translation of wikibase component
-- Precondition:
-- all -- string or table, object ID or entity
-- about -- boolean, true "descriptions" or false "labels"
-- attempt -- string or not, code of preferred language
-- frame -- frame, if available
-- Postcondition:
-- Returns
-- 1. string, with selected message
-- 2. string, with language code, or not
local s = type( all )
local object, r, r2
if s == "table" then
object = all
elseif s == "string" then
object = mw.wikibase.getEntity( all )
end
if type( object ) == "table" then
if about and about ~= "labels" then
s = "descriptions"
else
s = "labels"
end
object = object[ s ]
if type( object ) == "table" then
if object[ attempt ] then
r = object[ attempt ].value
r2 = attempt
else
local poly
for k, v in pairs( object ) do
poly = poly or { }
poly[ k ] = v.value
end -- for k, v
if poly then
r, r2 = Multilingual.i18n( poly, nil, frame )
end
end
end
end
return r or "", r2
end -- Multilingual.wikibase()
Failsafe.failsafe = function ( atleast )
-- Retrieve versioning and check for compliance
-- Precondition:
-- atleast -- string, with required version
-- or wikidata|item|~|@ or false
-- Postcondition:
-- Returns string -- with queried version/item, also if problem
-- false -- if appropriate
-- 2020-08-17
local since = atleast
local last = ( since == "~" )
local linked = ( since == "@" )
local link = ( since == "item" )
local r
if last or link or linked or since == "wikidata" then
local item = Failsafe.item
since = false
if type( item ) == "number" and item > 0 then
local suited = string.format( "Q%d", item )
if link then
r = suited
else
local entity = mw.wikibase.getEntity( suited )
if type( entity ) == "table" then
local seek = Failsafe.serialProperty or "P348"
local vsn = entity:formatPropertyValues( seek )
if type( vsn ) == "table" and
type( vsn.value ) == "string" and
vsn.value ~= "" then
if last and vsn.value == Failsafe.serial then
r = false
elseif linked then
if mw.title.getCurrentTitle().prefixedText
== mw.wikibase.getSitelink( suited ) then
r = false
else
r = suited
end
else
r = vsn.value
end
end
end
end
end
end
if type( r ) == "nil" then
if not since or since <= Failsafe.serial then
r = Failsafe.serial
else
r = false
end
end
return r
end -- Failsafe.failsafe()
-- Export
local p = { }
p.fair = function ( frame )
-- Format language code
-- 1 -- language code
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.fair( s ) or ""
end -- p.fair
p.fallback = function ( frame )
-- Is another language suitable as replacement?
-- 1 -- language version specifier to be supported
-- 2 -- language specifier of a possible replacement
local s1 = mw.text.trim( frame.args[ 1 ] or "" )
local s2 = mw.text.trim( frame.args[ 2 ] or "" )
local r = Multilingual.fallback( s1, s2 )
if type( r ) == "table" then
r = r[ 1 ]
else
r = r and "1" or ""
end
return r
end -- p.fallback
p.findCode = function ( frame )
-- Retrieve language code from language name
-- 1 -- name in current project language
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.findCode( s ) or ""
end -- p.findCode
p.fix = function ( frame )
local r = frame.args[ 1 ]
if r then
r = Multilingual.fix( mw.text.trim( r ) )
end
return r or ""
end -- p.fix
p.format = function ( frame )
-- Format one or more languages
-- 1 -- language list or item
-- slang -- language of the answer, if not native
-- * -- native
-- ! -- current project
-- any valid code
-- shift -- capitalize, if "c"; downcase, if "d"
-- capitalize first item only, if "f"
-- link -- 1 -- link items
-- scream -- category title in case of error
-- split -- split pattern, if list expected
-- separator -- list separator, else split
-- start -- prepend first element, if any
local r
local link
if frame.args.link == "1" then
link = true
end
r = Multilingual.format( frame.args[ 1 ],
frame.args.slang,
frame.args.shift,
link,
frame.args.scream,
frame,
frame.args.split,
frame.args.separator,
frame.args.start )
return r or ""
end -- p.format
p.getBase = function ( frame )
-- Retrieve base language from possibly combined ISO language code
-- 1 -- code
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.getBase( s ) or ""
end -- p.getBase
p.getName = function ( frame )
-- Retrieve language name from ISO language code
-- 1 -- code
-- 2 -- language to be used for the answer, if not native
-- ! -- current project
-- * -- native
-- any valid code
local s = mw.text.trim( frame.args[ 1 ] or "" )
local slang = frame.args[ 2 ]
local r
Multilingual.frame = frame
if slang then
slang = mw.text.trim( slang )
end
r = Multilingual.getName( s, slang )
return r or ""
end -- p.getName
p.int = function ( frame )
-- Translated system message
-- 1 -- message ID
-- lang -- language code
-- $1, $2, ... -- parameters
local sysMsg = frame.args[ 1 ]
local r
if sysMsg then
sysMsg = mw.text.trim( sysMsg )
if sysMsg ~= "" then
local n = 0
local slang = frame.args.lang
local i, params, s
if slang == "" then
slang = false
end
for k, v in pairs( frame.args ) do
if type( k ) == "string" then
s = k:match( "^%$(%d+)$" )
if s then
i = tonumber( s )
if i > n then
n = i
end
end
end
end -- for k, v
if n > 0 then
local s
params = { }
for i = 1, n do
s = frame.args[ "$" .. tostring( i ) ] or ""
table.insert( params, s )
end -- for i
end
r = Multilingual.int( sysMsg, slang, params )
end
end
return r or ""
end -- p.int
p.isLang = function ( frame )
-- Could this be an ISO language code?
-- 1 -- code
local s = mw.text.trim( frame.args[ 1 ] or "" )
local lucky, r = pcall( Multilingual.isLang, s )
return r and "1" or ""
end -- p.isLang
p.isLangWiki = function ( frame )
-- Could this be a Wiki language version?
-- 1 -- code
-- Returns non-empty, if possibly language version
local s = mw.text.trim( frame.args[ 1 ] or "" )
local lucky, r = pcall( Multilingual.isLangWiki, s )
return r and "1" or ""
end -- p.isLangWiki
p.isRTL = function ( frame )
-- Check whether language is written right-to-left
-- 1 -- string, with language code
-- Returns non-empty, if right-to-left
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.isRTL( s ) and "1" or ""
end -- p.isRTL()
p.message = function ( frame )
-- Translation of text element
return Multilingual.message( fold( frame ), frame )
end -- p.message
p.sitelink = function ( frame )
-- Make link at local or other site with optimal linktext translation
-- 1 -- item ID
local s = mw.text.trim( frame.args[ 1 ] or "" )
local r
if s:match( "^%d+$") then
r = tonumber( s )
elseif s:match( "^Q%d+$") then
r = s
end
if r then
r = Multilingual.sitelink( r, frame )
end
return r or s
end -- p.sitelink
p.tabData = function ( frame )
-- Retrieve best message text from Commons Data
-- 1 -- page identification on Commons
-- 2 -- keyword
-- alt -- fallback text
local suite = frame.args[ 1 ]
local seek = frame.args[ 2 ]
local salt = frame.args.alt
local r = Multilingual.tabData( suite, seek, salt, frame )
return r
end -- p.tabData
p.userLang = function ( frame )
-- Which language does the current user prefer?
-- 1 -- space separated list of available ISO 639 codes
local s = mw.text.trim( frame.args[ 1 ] or "" )
return Multilingual.userLang( s, frame )
end -- p.userLang
p.wikibase = function ( frame )
-- Optimal translation of wikibase component
-- 1 -- object ID
-- 2 -- 1 for "descriptions", 0 for "labels".
-- or either "descriptions" or "labels"
local r
local s = mw.text.trim( frame.args[ 1 ] or "" )
if s ~= "" then
local s2 = mw.text.trim( frame.args[ 2 ] or "0" )
local slang = mw.text.trim( frame.args.lang or "" )
local large = ( s2 ~= "" and s2 ~= "0" )
if slang == "" then
slang = false
end
r = Multilingual.wikibase( s, large, slang, frame )
end
return r or ""
end -- p.wikibase
p.failsafe = function ( frame )
-- Versioning interface
local s = type( frame )
local since
if s == "table" then
since = frame.args[ 1 ]
elseif s == "string" then
since = frame
end
if since then
since = mw.text.trim( since )
if since == "" then
since = false
end
end
return Failsafe.failsafe( since ) or ""
end -- p.failsafe()
p.Multilingual = function ()
return Multilingual
end -- p.Multilingual
return p
6fc38809302c05872fef2c1602e2d4a3be5143ec
Template:Plainlist/doc
10
635
1431
1430
2023-10-01T10:17:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Plainlist/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{High-use}}
{{Template shortcut|PL}}
{{Uses TemplateStyles|Template:Plainlist/styles.css}}
This template provides a [[Web Content Accessibility Guidelines|WCAG]]/ISO-standards-compliant accessible alternative to <code><nowiki><br /></nowiki></code> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]
== Usage ==
{{tl|plainlist}} starts a plain (i.e. unbulleted) list, such as:
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with {{tag|br|s}}. Detailed reasons for using this template can be found at [[WP:UBLIST]].
This template can be used with or without {{tl|endplainlist}}. It is an alternative to {{tl|unbulleted list}}, which performs the same function in a more concise but less wiki-style manner. Note that {{tl|unbulleted list}} will work inside image captions, whereas {{tl|plainlist}} does not.
== Examples ==
{{Markup
|<nowiki>
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
</nowiki>
|
{{plainlist|
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
}}
}}
=== Alternative syntax ===
{{Markup
|<nowiki>
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
</nowiki>
|
{{plainlist}}
* [[cat]]
* [[dog]]
* [[horse]]
* [[cow]]
* [[sheep]]
* [[pig]]
{{endplainlist}}
}}
== Parameters ==
{{Format TemplateData|JSON= {
"params": {
"1": {
"label": "List content",
"description": "If supplied, the list, as a normal bulleted list. (Every line should start with an asterisk. No blank lines between lines.) See template page for how this works otherwise.",
"type": "content",
"suggested": true
},
"class": {
"label": "CSS classes",
"description": "Adds a CSS class to the containing div.",
"type": "string",
"default": "The class \"plainlist\" is always applied."
},
"style": {
"label": "Custom CSS",
"description": "Adds CSS style options. Complex styles should not be used in articles (per [[WP:Deviations]]) but may be acceptable on user, project, and talk pages.",
"type": "string",
"example": "border:solid 1px silver; background:lightyellow"
},
"indent": {
"label": "Indent level",
"description": "Indents the list by a number of standard indents (one indent being 1.6em), particularly handy for inclusion in an indented discussion thread.",
"type": "number",
"example": "2"
}
},
"description": "This template provides a WCAG/ISO-standards-compliant accessible alternative to <br /> separated lists, per [[WP:UBLIST]] and [[WP:PLIST]]. It uses proper HTML list markup, which is more standards-compliant and more accessible than separating list items with <br />. Detailed reasons for using this template can be found at WP:UBLIST."
} }}
=== Controlling line-breaking ===
Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists, to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details.
== Technical details ==
{{tl|Plainlist}} works by constructing a [[span and div|div]] with the [[Cascading Style Sheets|CSS]] class "plainlist" which has the styles listed in [[Template:Plainlist/styles.css]].
{| class="wikitable"
! Wikitext
! Expanded template
! HTML
|- style="vertical-align:top;"
| class="nowrap" | <pre>
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
</pre>
| class="nowrap" | {{nowiki2|tag=pre|
{{Plainlist|
* Example 1
* Example 2
* Example 3
}}
}}
| <syntaxhighlight lang="html">
<div class="plainlist">
<ul>
<li>Example 1</li>
<li>Example 2</li>
<li>Example 3</li>
</ul>
</div>
</syntaxhighlight>
|}
== Redirects ==
* {{tl|Startplainlist}}
== See also ==
* {{tl|unbulleted list}} – essentially the same but uses <code><nowiki>| ... | ... | ...</nowiki></code> instead of <code><nowiki>|* ... * ... * ...</nowiki></code>
* {{tl|flatlist}} and {{tl|hlist}} (replacements for comma- or dash-separated lists)
* {{tl|bulleted list}}
* {{tl|indented plainlist}}
* {{tl|ordered list}}
* {{section link|Template:Infobox person#Inline lists}} for more information on creating lists within the Infobox family of templates, with examples in the following {{section link|Template:Infobox person#Examples|nopage=y}}
{{navbox lists}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES HERE, THANKS -->
[[Category:List formatting and function templates|Plainlist]]
[[Category:Semantic markup templates]]
[[Category:Typing-aid templates|Plainlist]]
}}</includeonly>
3e643450c27b6fb02ce218d36c67d391a6e20482
Philippines
0
437
1432
1271
2023-10-01T10:21:56Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945)
</div>
| life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946
| p1 = Insular Government of the Philippine Islands{{!}}'''1935:'''<br />Insular Government of the Philippine Islands
| flag_p1 = Flag of the Philippines (1919-1936).svg
| p2 = Second Philippine Republic{{!}}'''1945:'''<br />Second Philippine Republic
| flag_p2 = Flag of the Philippines (1943-1945).svg
| s1 = Philippine Executive Commission{{!}}'''1942:'''<br />Philippine Executive Commission
| flag_s1 = Flag of Japan (1870-1999).svg
| s2 = Third Philippine Republic{{!}}'''1946:'''<br />{{nowrap|Third Philippine}}<br />Republic
| flag_s2 = Flag of the Philippines (1936–1985, 1986–1998).svg
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]], [[World War II]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
{{Main article|Philippine Pre-Colonial History}}
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
{{Main article|Philippine Spanish Colonial History}}
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
{{Main article|Filipino-American War}}
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
{{Main article|Philippine American Colony}}
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
2085475ca0bd8cf6480cec3f6a8d2d4ecff1bbbe
Template:Cite book
10
690
1549
1548
2023-10-01T10:23:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_book]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=book
}}</includeonly><noinclude>
{{documentation}}
{{collapse top|TemplateData}}
{{Cite book/TemplateData}}
{{collapse bottom}}
</noinclude>
c474cbe5d051e08f516083d594207d449245c717
Template:Cite book/doc
10
691
1551
1550
2023-10-01T10:24:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_book/doc]]
wikitext
text/x-wiki
{{high-risk}}
<noinclude>{{pp-protected|reason=Persistent [[WP:Disruptive editing|disruptive editing]] Protecting high visibility template.|small=yes}}</noinclude>{{Documentation subpage}}
<!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). -->
{{csdoc|lua}}
{{csdoc|cs1}}
{{csdoc|lead|books}} When citing an article in a periodical, use {{tl|cite journal}} or {{tl|cite magazine}}. For conference papers, use {{tl|cite conference}}. For edited collections, use {{tl|cite encyclopedia}}. For theses, use {{tl|cite thesis}}.
==Usage==
{{csdoc|usage}}
{{csdoc|usage common}}
; To cite a book with a credited author
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |author-link= |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight>
; To cite a book with no credited author
: <syntaxhighlight lang="wikitext" inline>{{cite book |author=<!--Staff writer(s); no by-line.--> |date= |title= |url= |location= |publisher= |page= |isbn=}}</syntaxhighlight>
; To cite an online book that has been archived
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |url= |url-status= |location= |publisher= |isbn= |archive-url= |archive-date=}}</syntaxhighlight>
; To cite a book written in a foreign language
: <syntaxhighlight lang="wikitext" inline>{{cite book |last= |first= |date= |title= |trans-title= |url= |language= |location= |publisher= |isbn=}}</syntaxhighlight>
; To cite and quote an archived, two-author, foreign language book re-published as a PDF on an information aggregation service requiring a subscription
: <syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |last2= |first2= |date= |title= |trans-title= |url= |url-status= |url-access= |format= |language= |location= |publisher= |isbn= |archive-url= |archive-date= |via= |quote=}}</syntaxhighlight>
{{end}}
{{csdoc|usage vertical common}}
<syntaxhighlight lang="wikitext">
{{cite book
| last =
| first =
| author-link =
| date =
| title =
| url =
| location =
| publisher =
| page = <!-- or pages: -->
| isbn =
}}
</syntaxhighlight>
{{end}}
{{csdoc|usage full}}
<syntaxhighlight lang="wikitext" inline>{{cite book |last1= |first1= |author-link1= |last2= |first2= |author-link2= |last3= |first3= |author-link3= |last4= |first4= |author-link4= |last5= |first5= |author-link5= |display-authors= |author-mask1= |author-mask2= |author-mask3= |author-mask4= |author-mask5= |editor-last1= |editor-first1= |editor-link1= |editor-last2= |editor-first2= |editor-link2= |editor-last3= |editor-first3= |editor-link3= |editor-last4= |editor-first4= |editor-link4= |editor-last5= |editor-first5= |editor-link5= |display-editors= |editor-mask1= |editor-mask2= |editor-mask3= |editor-mask4= |editor-mask5= |translator-last1= |translator-first1= |translator-link1= |translator-last2= |translator-first2= |translator-link2= |translator-last3= |translator-first3= |translator-link3= |translator-last4= |translator-first4= |translator-link4= |translator-last5= |translator-first5= |translator-link5= |display-translators= |translator-mask1= |translator-mask2= |translator-mask3= |translator-mask4= |translator-mask5= |others= |name-list-style= |date= |year= |orig-date= |chapter= |script-chapter= |trans-chapter= |chapter-url= |chapter-url-access= |chapter-format= |title= |script-title= |trans-title= |title-link= |url= |url-status= |url-access= |format= |type= |series= |language= |volume= |edition= |publication-place= |location= |publisher= |publication-date= |page= |pages= |at= |no-pp= |arxiv= |asin= |asin-tld= |bibcode= |bibcode-access= |biorxiv= |citeseerx= |doi= |doi-access= |doi-broken-date= |eissn= |hdl= |hdl-access= |isbn= |ismn= |issn= |jfm= |jstor= |jstor-access= |lccn= |mr= |oclc= |ol= |ol-access= |osti= |osti-access= |pmc= |pmc-embargo-date= |pmid= |rfc= |sbn= |ssrn= |s2cid= |s2cid-access= |zbl= |id= |archive-url= |archive-date= |access-date= |via= |quote= |script-quote= |trans-quote= |quote-page= |quote-pages= |mode= |postscript= |ref=}}</syntaxhighlight>
{{end}}
{| class="wikitable"
|+Full parameter set in vertical format
! Parameters !! Prerequisites !! Brief instructions / notes !! Vertical list
|-
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
|
| Author's last name or single name author. Don't link.
| rowspan="111" style="vertical-align:top;" | <pre style="margin:0px; border:none;">
{{cite book
|last1 =
|first1 =
|author-link1 =
|last2 =
|first2 =
|author-link2 =
|last3 =
|first3 =
|author-link3 =
|last4 =
|first4 =
|author-link4 =
|last5 =
|first5 =
|author-link5 =
|display-authors =
|author-mask1 =
|author-mask2 =
|author-mask3 =
|author-mask4 =
|author-mask5 =
|editor-last1 =
|editor-first1 =
|editor-link1 =
|editor-last2 =
|editor-first2 =
|editor-link2 =
|editor-last3 =
|editor-first3 =
|editor-link3 =
|editor-last4 =
|editor-first4 =
|editor-link4 =
|editor-last5 =
|editor-first5 =
|editor-link5 =
|display-editors =
|editor-mask1 =
|editor-mask2 =
|editor-mask3 =
|editor-mask4 =
|editor-mask5 =
|translator-last1 =
|translator-first1 =
|translator-link1 =
|translator-last2 =
|translator-first2 =
|translator-link2 =
|translator-last3 =
|translator-first3 =
|translator-link3 =
|translator-last4 =
|translator-first4 =
|translator-link4 =
|translator-last5 =
|translator-first5 =
|translator-link5 =
|display-translators =
|translator-mask1 =
|translator-mask2 =
|translator-mask3 =
|translator-mask4 =
|translator-mask5 =
|others =
|name-list-style =
|date =
|year =
|orig-date =
|chapter =
|script-chapter =
|trans-chapter =
|chapter-url =
|chapter-url-access =
|chapter-format =
|title =
|script-title =
|trans-title =
|title-link =
|url =
|url-status =
|url-access =
|format =
|type =
|series =
|language =
|volume =
|edition =
|publication-place =
|location =
|publisher =
|publication-date =
|page =
|pages =
|at =
|no-pp =
|arxiv =
|asin =
|asin-tld =
|bibcode =
|bibcode-access =
|biorxiv =
|citeseerx =
|doi =
|doi-access =
|doi-broken-date =
|eissn =
|hdl =
|hdl-access =
|isbn =
|ismn =
|issn =
|jfm =
|jstor =
|jstor-access =
|lccn =
|mr =
|oclc =
|ol =
|ol-access =
|osti =
|osti-access =
|pmc =
|pmc-embargo-date =
|pmid =
|rfc =
|sbn =
|ssrn =
|s2cid =
|s2cid-access =
|zbl =
|id =
|archive-url =
|archive-date =
|access-date =
|via =
|quote =
|script-quote =
|trans-quote =
|quote-page =
|quote-pages =
|mode =
|postscript =
|ref =
}}
</pre>
|-
| {{tooltip|2=or any of its aliases, including: first; given1; given; author-first1; author-first; (etc.)|first1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Author's first name. Don't link.
|-
| {{tooltip|2=or any of its aliases, including: author-link; author-link1; subject-link1; subject-link; (etc.)|author-link1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Title of Wikipedia article about the first author. Don't link.
|-
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Like <code>last1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: given2; author-first2; (etc.)|first2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>first1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link2; (etc.)|author-link2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>author-link1</code>, but for 2nd author.
|-
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Like <code>last1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: given3; author-first3; (etc.)|first3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>first1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link3; (etc.)|author-link3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>author-link1</code>, but for 3rd author.
|-
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
| Like <code>last1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: given4; author-first4; (etc.)|first4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>first1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: subject-link4; (etc.)|author-link4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>author-link1</code>, but for 4th author.
|-
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
| Like <code>last1</code>, but for 5th author. Similar: last6, etc.
|-
| {{tooltip|2=or any of its aliases, including: given5; author-first5; (etc.)|first5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| Like <code>first1</code>, but for 5th author. Similar: first6, etc.
|-
| {{tooltip|2=or any of its aliases, including: subject-link5; (etc.)|author-link5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
| Like <code>author-link1</code>, but for 5th author. Similar: author-link6, etc.
|-
| {{tooltip|2=or alias displayauthors|display-authors}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| Number (number of authors displayed) or <code>etal</code> (more authors)
|-
| {{tooltip|2=or any of its aliases, including: author-mask; author1-mask; (etc.)|author-mask1}}
| {{tooltip|2=or any of its aliases, including: last; author1; author; author-last1; author-last; (etc.)|last1}}
| rowspan="5" | See [[#Display options|Display options]] below; not for lists of cited works
|-
| {{tooltip|2=or any of its aliases, including: author2-mask; (etc.)|author-mask2}}
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
|-
| {{tooltip|2=or any of its aliases, including: author3-mask; (etc.)|author-mask3}}
| {{tooltip|2=or any of its aliases, including: author3; author-last3; (etc.)|last3}}
|-
| {{tooltip|2=or any of its aliases, including: author4-mask; (etc.)|author-mask4}}
| {{tooltip|2=or any of its aliases, including: author4; author-last4; (etc.)|last4}}
|-
| {{tooltip|2=or any of its aliases, including: author5-mask; (etc.)|author-mask5}}
| {{tooltip|2=or any of its aliases, including: author5; author-last5; (etc.)|last5}}
|-
|| editor-last1 || || may also use "editor-last"
|-
|| editor-first1 || editor-last1 || may also use "editor-first"
|-
|| editor-link1 || editor-last1 || may also use "editor-link"
|-
|| editor-mask1 || editor-last1 ||
|-
|| display-editors || ||
|-
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
|
| Like <code>last1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator-first; translator-given1; translator-given; (etc.)|translator-first1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>first1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator-link; (etc.)|translator-link1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>author-link1</code>, but for translator
|-
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>last1</code>, but for 2nd translator. Similar: translator-last3, etc.
|-
| {{tooltip|2=or any of its aliases, including: translator2-first; translator-given2; (etc.)|translator-first2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| Like <code>first1</code>, but for 2nd translator. Similar: translator-first3, etc.
|-
| {{tooltip|2=or alias translator2-link|translator-link2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
| Like <code>author-link1</code>, but for 2nd transl. Similar: translator-link3, ...
|-
| {{nowrap|display-translators}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| Like <code>display-authors</code>, but for translators
|-
| {{tooltip|2=or any of its aliases, including: translator-mask; (etc.)|translator-mask1}}
| {{tooltip|2=or any of its aliases, including: translator-last; translator1; translator; translator-surname; (etc.)|translator-last1}}
| rowspan="2" | See [[#Display options|Display options]] below; not for lists of cited works
|-
| {{tooltip|2=or alias translator2-mask|translator-mask2}}
| {{tooltip|2=or any of its aliases, including: translator2; translator-surname2; (etc.)|translator-last2}}
|-
| name-list-style
| {{tooltip|2=or any of its aliases, including: author2; author-last2; (etc.)|last2}}
| Set to <code>amp</code> or <code>ampersand</code> to separate the last author with {{nowrap|"<code> & </code>"}}; set to <code>and</code> to separate with {{nowrap|"<code> and </code>"}}
|-
|| others || ||
|-
|| date || ||
|-
|| year || ||
|-
|| orig-date || date or year ||
|-
|| chapter || || This should be the title of the chapter cited. Do not wikilink "chapter" if "chapter-url" is provided
|-
|| script-chapter || ||
|-
|| trans-chapter || chapter or script-chapter ||
|-
|| chapter-url || chapter or script-chapter ||
|-
|| chapter-format || chapter-url ||
|-
|| title || ||
|-
|| script-title || ||
|-
|| trans-title || title or script-title ||
|-
|| title-link || title or script-title || Name of a Wikipedia article about the work. Do not use if "url" is provided
|-
|| url || title or script-title || Do not use if "title-link" is provided
|-
|| url-status || archive-url ||
|-
|| url-access || url ||
|-
|| format || url ||
|-
|| type || ||
|-
|| series || ||
|-
|| language || ||
|-
|| volume || ||
|-
|| edition || ||
|-
|| publication-place || publisher ||
|-
|| location || publisher || can be used for written-at location when "publication-place" is used for publication place
|-
|| publisher || ||
|-
|| publication-date || ||
|-
|| page || || choose one: "page", "pages", or "at"
|-
|| pages || || choose one: "page", "pages", or "at". Use when content on multiple pages supports the article text.
|-
|| at || || choose one: "page", "pages", or "at"
|-
|| no-pp || page or pages || set no-pp to "yes" to suppress the "p." or "pp." before page numbers
|-
|| arxiv || ||
|-
|| asin || ||
|-
|| asin-tld || asin ||
|-
|| bibcode || ||
|-
|| biorxiv || ||
|-
|| citeseerx || ||
|-
|| doi || ||
|-
|| doi-broken-date || doi ||
|-
|| eissn || ||
|-
|| hdl || ||
|-
|| isbn || || '''always include ISBN''', if one has been assigned
|-
|| issn || ||
|-
|| ismn || ||
|-
|| jfm || ||
|-
|| jstor || ||
|-
|| lccn || ||
|-
|| mr || ||
|-
|| oclc || ||
|-
|| ol || ||
|-
|| osti || ||
|-
|| pmc || ||
|-
|| pmc-embargo-date || pmc ||
|-
|| pmid || ||
|-
|| rfc || ||
|-
|| sbn || ||
|-
|| ssrn || ||
|-
|| s2cid || ||
|-
|| zbl || ||
|-
|| id || ||
|-
|| archive-url || archive-date, url ||
|-
|| archive-date || archive-url ||
|-
|| access-date || url ||
|-
|| via || ||
|-
|| quote || ||
|-
|| script-quote || ||
|-
|| trans-quote || ||
|-
|| quote-page || || choose one: "quote-page", "quote-pages"
|-
|| quote-pages || || choose one: "quote-page", "quote-pages". Use when quote contains contents from multiple pages.
|-
|| mode || || <code>cs1</code> or <code>cs2</code>
|-
|| postscript || ||
|-
|| ref || ||
|-
| colspan="4" style="text-align: center" | If a field name is listed in the '''Prerequisites''' column, it is a prerequisite for the field to the left.
|}
==Examples==
{{markup2|t=Title
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book}}</syntaxhighlight>
|r={{cite book |title=Mysterious Book}}
}}
{{markup2|t=Title and year
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |title=Mysterious Book |date=1901}}</syntaxhighlight>
|r={{cite book |title=Mysterious Book |date=1901}}
}}
{{markup2|t=Basic usage (single author)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs}}
}}
{{markup2|t=Basic usage (two authors)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Bloggs |first2=Fred |author-link2=Fred Bloggs |date=1974 |title=Book of Bloggs}}
}}
{{markup2|t=Basic usage with url (and access-date) and edition
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Joe |author-link=Joe Bloggs |date=1974 |title=Book of Bloggs |edition=1st |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}
}}{{anchor|different authors}}
{{markup2|t=Citing a chapter in a book with different authors for different chapters and an editor
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Compilation Book with Many Chapters and Distinct Chapter Authors |publisher=Book Publishers |pages=100–110 |chapter=Chapter 2: The History of the Bloggs Family |isbn=}}
}}
{{markup2|t=Citing a chapter in a book with two joint authors and an editor
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |last2=Egg |first2=Fred |date=January 1, 2001 |editor-last=Doe |editor-first=John |title=Big Book with Many Chapters and Two Co-authors |publisher=Book Publishers |orig-date=1st pub. 1986 |pages=100–110 |chapter=Chapter 6: Getting There |chapter-url=https://en.wikipedia.org/ |isbn= |name-list-style=amp}}
}}
{{markup2|t=Three authors, title with a differently-named title link, edition
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}</syntaxhighlight>
|r={{cite book |last1=Bloggs |first1=Joe |author-link1=Joe Bloggs |last2=Smith |first2=John |last3=Smythe |first3=Jim |title=1000 Acres |title-link=A Thousand Acres |edition=2nd}}
}}
{{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (without volume and lastauthoramp)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East. Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3}}
}}
{{markup2|t=Complex usage showing effect of using volume parameter and lastauthoramp parameter (with volume and lastauthoramp)
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2007 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East |volume=I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}
}}
{{markup2|t=Date without day, wikilinked title, publisher, pages, edition, location
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}</syntaxhighlight>
|r={{cite book |last1=Cordell |first1=Bruce R. |last2=Grubb |first2=Jeff |last3=Noonan |first3=David |date=September 2001 |title=Manual of the Planes |title-link=Manual of the Planes |edition=3rd |publisher=Wizards of the Coast |location=Renton, Washington |isbn=0-7869-1850-0 |pages=134–137}}
}}
{{markup2|t=Other language
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}</syntaxhighlight>
|r={{cite book |last=Bloggs |first=Jean |date=1974 |title=Livre de Bloggs |edition=1st |language=French |trans-title=Book of Bloggs |url=https://en.wikipedia.org/ |access-date=February 17, 2006}}
}}
{{markup2|t=Using a [[Digital object identifier|DOI]]
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}</syntaxhighlight>
|r={{cite book |last=Mumford |first=David |author-link=David Mumford |date=1999 |title=The Red Book of Varieties and Schemes: Includes the Michigan Lectures (1974) on Curves and Their Jacobians |edition=2nd |publisher=Springer-Verlag |doi=10.1007/b62130 |isbn=354063293X}}
}}
{{markup2|t=Using author-mask parameter
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}</syntaxhighlight>
|m2=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}</syntaxhighlight>
|m3=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |name-list-style=amp}}
|r2={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume II: The Germans Come to the Help of Their Ally (1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-66-1 |name-list-style=amp |author-mask=2}}
|r3={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Flynn |first2=F. C. |last3=Molony |first3=C. J. C. |last4=Gleave |first4=T. P. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=Sir James |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=The Mediterranean and Middle East, Volume III: British Fortunes Reach Their Lowest Ebb (September 1941 to September 1942) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-67-X |name-list-style=amp |author-mask=2}}
}}
{{markup2|t=Using display-authors parameter
|m=<syntaxhighlight lang="wikitext" inline>{{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}</syntaxhighlight>
|r={{cite book |last1=Playfair |first1=I. S. O. |author-link1=Ian Stanley Ord Playfair |last2=Stitt |first2=G. M. S. |last3=Molony |first3=C. J. C. |last4=Toomer |first4=S. E. |date=2004 |orig-date=1st pub. [[HMSO]]:1954 |editor-last=Butler |editor-first=J. R. M. |editor-link=James Ramsay Montagu Butler |series=History of the Second World War, United Kingdom Military Series |title=Mediterranean and Middle East Volume I: The Early Successes Against Italy (to May 1941) |publisher=Naval & Military Press |location=Uckfield, East Sussex |isbn=1-845740-65-3 |display-authors=1}}
}}
==Parameters==
===Syntax===
{{csdoc|syntax}}
===COinS===
{{csdoc|coins}}
===What's new===
{{csdoc|whats new}}
===Deprecated===
{{csdoc|deprecated}}
===Description===
====Authors====
{{csdoc|author|contributor=yes|others=yes}}
====Date====
{{csdoc|date}}
====Title====
{{csdoc|title|title_format=italics}}
{{csdoc|type}}
{{csdoc|chapter}}
{{csdoc|language}}
====Publisher====
{{csdoc|publisher}}
====Edition, series, volume====
{{csdoc|edition}}
{{csdoc|series}}
{{csdoc|volume}}
====In-source locations====
{{csdoc|pages}}
===={{Anchor|url}}URL====
{{csdoc|url}}
====Chapter URL====
{{csdoc|chapterurl}}
====Anchor====
{{distinguish|#Identifiers}}
{{csdoc|ref}}
====Identifiers====
{{distinguish|#Anchor}}
{{csdoc|id1}}
{{csdoc|id2}}
====Quote====
{{csdoc|quote}}
====Editors====
{{csdoc|editor}}
====Lay summary====
{{csdoc|lay}}
====Display options====
{{csdoc|display}}
====Subscription or registration required====
{{csdoc|registration}}
==TemplateData==
See [[Template:Cite book/TemplateData]].
== Citation tools==
{{main|Help:Citation tools}}
*'''[https://citer.toolforge.org/ Citer]''': A web tool that converts a DOI, ISBN, PMID, PMCID, [[OCLC]], or [[Google Books]] URL into a citation and [[Help:Shortened footnotes|shortened footnote]].
* '''[https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ DOI and Google Books Citation Maker]''': A web tool for generating filled citation templates via DOIs and Google Books URLs.
{{Citation Style 1}}
{{Wikipedia referencing}}
{{UF-COinS}}
<includeonly>{{Sandbox other||
<!-- Categories go below this line, please; interwikis go to Wikidata, thank you! -->
[[Category:Citation Style 1 templates|B]]
[[Category:Book citation templates| ]]
[[Category:Book templates]]
}}</includeonly>
4035f77bf4e9982c578739e7272d6d3b11242c31
Template:Cite book/lua
10
692
1553
1552
2023-10-01T10:25:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_book/lua]]
wikitext
text/x-wiki
#redirect [[Template:Cite book]]
598ed4dfc9eb5f2d9778d19c1e673eca6ae6aeb4
Template:Cite book/new
10
693
1555
1554
2023-10-01T10:25:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_book/new]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1/sandbox|citation
|CitationClass=book
|SandboxPath=/sandbox
}}</includeonly><noinclude>
{{documentation|content=
The '''Template:Cite_book/new''' uses the [[Lua script]] interface with [[Module:Citation/CS1/sandbox]] to format book cites using the [[wp:CS1|Citation Style 1]] for cite parameters.
}}
[[Category:Lua-based templates]]
</noinclude>
67558f4bbe6d0235534f2800b4363bf48fafef92
Template:Stub
10
754
1684
1683
2023-10-01T10:29:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Stub]]
wikitext
text/x-wiki
{{asbox
| image =
| pix =
| subject =
| article = article
| qualifier =
| category = Stubs
| tempsort = no
| lowercase = y
| name = Template:Stub
}}
c8372a9cd3ab0d8ef30c901442b93e0675510604
Template:Asbox
10
755
1686
1685
2023-10-01T10:29:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Asbox]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage and interwikis to Wikidata. -->
</noinclude>
b20553d60f223a0f36a3089524989e235d379b74
Template:Asbox/styles.css
10
756
1688
1687
2023-10-01T10:29:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Asbox/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
/* Article stub message box styles */
.asbox {
position: relative;
overflow:hidden;
}
.asbox table {
background: transparent;
}
.asbox p {
margin: 0;
}
.asbox p + p {
margin-top: 0.25em;
}
.asbox-body {
font-style: italic;
}
.asbox-note {
font-size: smaller;
}
.asbox .navbar {
position: absolute;
top: -0.75em;
right: 1em;
display: none;
}
9f0904fdac11fd6eebd84c73d5680f09d19c9b5a
Module:Asbox
828
757
1690
1689
2023-10-01T10:29:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Asbox]]
Scribunto
text/plain
--[[
This module was created by User:CodeHydro (Alexander Zhikun He).
User:Jackmcbarn and User:Mr._Stradivarius provided a great deal of assistance in writting p.main()
p.main() draw heavily from the following version of Template:Asbox of the English Wikipedia, authored primarily by User:Rich_Farmbrough
https://en.wikipedia.org/w/index.php?title=Template:Asbox&oldid=619510287
p.templatepage() is derived from the following revision of Template:Asbox/templatepage, authored primarily by User:MSGJ
https://en.wikipedia.org/w/index.php?title=Template:Asbox/templatepage&oldid=632914791
Both templates had significant contributions from numerous others listed in the revision history tab of their respective pages.
--]]
local WRAPPER_TEMPLATE, args = 'Template:Asbox'
local templatestyles = 'Asbox/styles.css'
local p, Buffer, stubCats = {
--Prevents dupli-cats... get it? Maybe not?
cats = setmetatable({}, {__newindex = function(t, i, v)
if not rawget(t, i) then
rawset(t, i, v)
table.insert(t, i)
end
end}),
--initializes variables required by both p.main and p.templatepage
init = function(self, frame, page)
args, page = args or require('Module:Arguments').getArgs(frame, {
wrappers = WRAPPER_TEMPLATE
}), page or mw.title.getCurrentTitle()
--Ensures demo parameter will never affect category() output for articles
self.demo = self.demo or page.namespace ~= 0 and args.demo
return args, page
end
}, require('Module:Buffer')
--[[
Formats category links. Stores them until called with cat.done=true
Takes multiple or single categories in the form of 'cat'
or a table of strings and/or tables containing parts. (See below)
]]
local attention, catTag, catKey = Buffer'Stub message templates needing attention', '[[Category:%s]]', '%s|%s%s'
local function category(cat)
for _, v in ipairs((tostring(cat) == cat or cat.t) and {cat} or cat) do
--[[
If v is a table:
[1] = full category name; defaults to local attention if blank
k = Category sort key. Prefix before v.t
t = page.text or args.tempsort#; appended after k (or in its place if omitted). Required if v is not a string
Basically the same as v = (v[1] or attention) .. ' | ' .. (v.k or '') .. v.t
]]
if v and v ~= true then--reject v = nil, false, or true
p.cats[catTag:format(tostring(v) == v and
v
or (v[1] and Buffer(v[1]) or attention):_in(v.k):_(v.t):_str(2, nil, nil, '|')
)] = true
end
end
return cat.done and table.concat(p.cats, p.demo and ' | ' or nil) or ''
end
--[[
Makes an ombox warning;
Takes table {ifNot = Boolean, text, {cat. sort key, cat. sort name}}
Will return an empty string instead when ifNot evaluates to true
]]
local function ombox(v)
if v.ifNot then return end
p.ombox = p.ombox or require('Module:Message box').ombox
category{v[2]}
return p.ombox{
type = 'content',
text = v[1]
}
end
--[[
Unlike original template, module now takes unlimited cats! This function also performs
most stub category error checks except for the ombox for when main |category= is omitted (See p.template())
]]
local function catStub(page, pageDoc)
stubCats = {missing = {}, v = {}}
-- zwj and zwnj have semantical use in other other wikis, don't remove them
local zwj = '\226\128\141' -- U+200D, E2 80 8D
local zwnj = '\226\128\140' -- U+200C, E2 80 8C
local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string
local code
for k, _ in pairs(args) do
--Find category parameters and store the number (main cat = '')
table.insert(stubCats, string.match(k, '^category(%d*)$'))
end
table.sort(stubCats)
for k, v in ipairs(stubCats) do
--Get category names and, if called by p.templatepage, the optional sort key
local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars
--Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category.
table.insert(stubCats.v,
page and (--p.templatepage passes page; p.main does not, i.e. articles are categorized without sort keys.
v=='' and tsort == 'no'--if true, inserts 'true' in table, which category() will reject
or tsort and {cat, k = ' ', t = tsort}
or {cat, k = ' *', t = page.text}--note space in front of sort key
)
or cat
)
--Check category existance only if on the template page (i.e. stub documentation)
if page then
if not mw.title.new('Category:' .. cat).exists then
code = code or mw.html.create'code':wikitext'|category'
table.insert(stubCats.missing, tostring(mw.clone(code):wikitext(v)))
end
--[[
Checks non-demo stub template for documentation and flags if doc is present.
All stub cats names are checked and flagged if it does not match 'Category: [] stub'.
The main stub cat is exempt from the name check if the stub template has its own doc
(presumably, this doc would have an explanation as to why the main stub cat is non-conforming).
]]
table.insert(stubCats.v, v == '' and not p.demo and pageDoc.exists and
'Stub message templates with documentation subpages'
or not cat:match' stubs$' and {k = 'S', t = page.text}
)
end
end
--Add category names after loop is completed
category(stubCats.v)
return #stubCats.missing > 0 and ombox{
--Changed, original msg:
--One or more of the stub categories defined in this template do not seem to exist!
--Please double-check the parameters {{para|category}}, {{para|category1}} and {{para|category2}}.
'The following parameter'
.. (#stubCats.missing == 1 and ' defines a stub category that does' or 's define stub categories that do')
.. ' not exist: ' .. mw.text.listToText(stubCats.missing),
{k = 'N', t = page.text}
}
end
--Shows population of categories found by catStub(). Outputs demo values if none
local function population()
local wikitext, base = {}, '* [[:Category:%s]] (population: %s)\n'
if not args.category and stubCats[1] ~= false then
table.insert(stubCats, 1, false)
end
for _, v in ipairs(stubCats) do
table.insert(wikitext, base:format(
v and args['category' .. v] or '{{{category}}}',
v and mw.site.stats.pagesInCategory(args['category' .. v], 'all') or 0
))
end
return table.concat(wikitext)
end
--Includes standard stub documention and flags stub templates with bad parameter values.
function p.templatepage(frame, page)
args, page = p:init(frame, page)
local tStubDoc = mw.title.new'Template:Stub documentation'
local pageDoc = page:subPageTitle('doc')
--Reorganization note: Original Asbox alternates between outputting categories and checking on params |category#=.
--Rather than checking multiple times and switching tasks, all stub category param operations have been rolled into catStub()
return Buffer(
ombox{--Show ombox warnings for missing args.
ifNot = args.category,
'The <code>|category</code> parameter is not set. Please add an appropriate stub category.',
{k = 'C', t = page.text}
})
:_(ombox{
ifNot = args.subject or args.article or args.qualifier,
'This stub template contains no description! At least one of the parameters <code>|subject</code>, <code>|article</code> or <code>|qualifier</code> must be defined.',
{k = 'D', t = page.text}
})
:_(catStub(page, pageDoc))--catStub() may also return an ombox if there are non-existing categories
:_(category{
done = p.demo ~= 'doc',--Outputs categories if not doc demo
'Stub message templates',
args.icon and
'Stub message templates using icon parameter'
or args.image and (
mw.title.new('Media:' .. mw.text.split(args.image, '|')[1]).exists--do nothing if exists. category() will reject true
or {k = 'B', t = page.text}
)
or 'Stub message templates without images',
args.imagealt and {k = 'I', t = page.text},
})
:_((not p.demo or p.demo == 'doc') and--Add standard stub template documentation
require('Module:Documentation').main{
content = Buffer(page.text ~= 'Stub' and--This comparison performed in {{Asbox/stubtree}} before it invokes Module:Asbox stubtree
require('Module:Asbox stubtree').subtree{args = {pagename = page.text}}
)
:_in'\n== About this template ==\nThis template is used to identify a':_(args.subject):_'stub':_(args.qualifier):_out' '--space
:_'. It uses {{[[Template:Asbox|asbox]]}}, which is a meta-template designed to ease the process of creating and maintaining stub templates.\n=== Usage ===\nTyping '
:_(mw.html.create'code'
:wikitext('{{', page.text == 'Stub' and 'stub' or page.text, '}}')
)
:_' produces the message shown at the beginning, and adds the article to the following categor'
:_(#stubCats > 1 and 'ies' or 'y')
:_':\n'
:_(population())
:_(pageDoc.exists and--transclusion of /doc if it exists
frame:expandTemplate{title = pageDoc.text}
)
:_'\n== General information ==\n'
:_(frame:expandTemplate{title = tStubDoc.text})
:_'\n\n'(),
['link box'] = Buffer'This documentation is automatically generated by [[Module:Asbox]].'
:_in'The general information is transcluded from [[Template:Stub documentation]]. '
:_(mw.html.create'span'
:cssText'font-size:smaller;font-style:normal;line-height:130%'
:node(('([%s edit] | [%s history])'):format(
tStubDoc:fullUrl('action=edit', 'relative'),
tStubDoc:fullUrl('action=history', 'relative')
))
)
:_out()
:_(page.protectionLevels.edit and page.protectionLevels.edit[1] == 'sysop' and
"This template is [[WP:PROTECT|fully protected]] and any [[WP:CAT|categories]] should be added to the template's ["
.. pageDoc:fullUrl('action=edit&preload=Template:Category_interwiki/preload', 'relative')
.. '| /doc] subpage, which is not protected.'
)' <br/>'
}
)()
end
function p.main(frame, page)
args, page = p:init(frame, page)
local output = mw.html.create'div'
:attr{role = 'note'}
:addClass'metadata plainlinks asbox stub'
:tag'table'
:attr{role = 'presentation'}
:tag'tr'
:addClass'noresize'
:node((args.icon or args.image) and
mw.html.create'td'
:wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format(
args.image or '',
args.pix or '40x30',
args.imagealt or 'Stub icon'
))
)
:tag'td'
:tag'p'
:addClass'asbox-body'
:wikitext(
Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space
' is a [[Wikipedia:stub|stub]]. You can help Wikipedia by [',
page:fullUrl('action=edit', 'relative'),
' expanding it].'
)
:done()
:node(args.note and
mw.html.create()
:tag'p'
:addClass'asbox-note'
:wikitext(args.note)
:done()
)
:allDone()
:node(args.name and
require'Module:Navbar'._navbar{
args.name,
mini = 'yes',
}
)
--[[
Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories.
Articles using the template do not need a sort key since they have unique names.
When p.demo equals 'doc', the demo stub categories will appear as those for a stub template.
Otherwise, any non-nil p.demo will emulate article space categories (plus any error cats unless set to 'art')
]]
if page.namespace == 0 then -- Main namespace
category'All stub articles'
catStub()
elseif p.demo then
if p.demo ~= 'doc' then catStub() end
--Unless p.demo is set to 'art', it will also include error categories normally only shown on
--the template but not in the article. The elseif after namespace == 0 means demo cats will never show in article space.
p.demodoc = p.demo ~= 'art' and p.templatepage(frame, page)
output = mw.html.create()
:node(output)
:tag'small':wikitext(
'Demo categories: ',
(category{done = true}:gsub('(%[%[)(Category:)([^|%]]-)(%|)', '%1%2%3|%2%3%4'):gsub('(%[%[)(Category:)', '%1:%2'))
):done()
:wikitext(p.demo == 'doc' and p.demodoc or nil)
else
--Checks for valid name; emulates original template's check using {{FULLPAGENAME:{{{name|}}}}}
local normalizedName = mw.title.new(args.name or '')
if normalizedName and normalizedName.fullText == page.fullText then
output = mw.html.create():node(output):wikitext(p.templatepage(frame, page))
elseif not page.isSubpage and page.namespace == 10 then-- Template namespace and not a subpage
category{{k = args.name and 'E' or 'W', t = page.text}}
end
end
return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil))
end
return p
0a9850f35fe9b15eaadd5d693d751ca62ddb60cf
Module:Buffer
828
758
1692
1691
2023-10-01T10:29:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Buffer]]
Scribunto
text/plain
--[[=============================
This Module was written by Alexander Zhikun He, also known as, User:Codehydro on the English Wikipedia
All methods were developed independently and any resemblance to other string buffer libraries would be coincidental.
Furthermore, many methods will not work when compiled by standard Lua libraries as they depend on behaviors unique to
the MediaMiki Scribunto mod, which, for example, has a getmetatable() method that always returns nil on non-tables.
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual
Source code comments may be thin at some points because they are intended to be supplemented by the documentation page:
https://en.wikipedia.org/wiki/Module:Buffer/doc
Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License
https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
https://en.wikipedia.org/wiki/Module:Buffer
https://en.wikipedia.org/wiki/User:Codehydro
=============================--]]
local function Valid(v)--type validation
if v and v~=true then--reject nil/boolean; faster than 2 type() comparisons
local str = tostring(v)--functions not filtered since unlikely passed by accident (Scribunto does not have userdata/thread types)
if str~=v and str=='table' then return rawget(v, 1) and table.concat(v) end--tostring(string-type) returns same ref; same refs compare faster than type()
if str~='' then return str end--numbers are coerced to string per table.concat op; appending in string form saves ops on repeat concat
end
end
local noOp, MBpairs = function()end do local iMap, vMap, oMap, pIter, pOther, pFast, Next--Map
local function init()--init = noOp after first run
function Next(t) return next, t end--slightly faster to do this than to use select()
function pIter(t, k) k = (iMap[t] or MBpairs(t, true) and iMap[t])[not k and 1 or vMap[t][k]] return k, t[k] end--don't use rawget; accepting unmapped tables does not measurably affect performance.
function pOther(t, k) k = (oMap[t] or MBpairs(t, true) and oMap[t])[nil==k and 1 or vMap[t][k]] return k, t[k] end--comparison to nil because false is a valid key
function pFast(t, k) k = not k and 1 or k < (vMap[t] or #t) and k + 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
--k and k < (vMap[t] or #t) and k + 1 or not k and 1 or nil return k, t[k] end--mapless iterator; almost as fast as native ipairs; slight performance penalty when length not cached
local mk = {__mode = 'k'}--use mode 'k'; found that mode 'kv' sometimes garbage collects maps mid-loop (may not error because iterators auto re-map, but that's expensive)
init, iMap, vMap, oMap = noOp, setmetatable({}, mk), setmetatable({}, mk), setmetatable({}, mk)--iMap is numeric keys, oMap is non-numeric keys, and vMap points to next key
end
function MBpairs(t, ...)--pairs always iterates in order
local iter, ex = ...
iter = iter==init()--nil
if iter and not oMap[t] and ex==nil and rawget(t, 1)~=nil and next(t, #t)==nil then--while possible to miss keys, more thorough check would negate the benefit of pFast
vMap[t] = #t return pFast, t, nil
elseif ... or not vMap[t] or select('#', ...)~=1 then
local ti, tn, to, n = {}, {}, {}, #t--reduces table lookups
iMap[t], vMap[t], oMap[t] = ti, tn, to
for k = 1, n do ti[k], tn[k] = k, k + 1 end--stage one avoids number type checking op in stage two for most numeric keys
for k in (ex or Next)(t) do
if not tn[k] then table.insert(tonumber(k)~=k and to or ti, k) end
end
if #ti~=n then
table.sort(ti)
for k = 1, #ti do tn[ti[k]] = k + 1 end--somewhat wasteful, but trying to avoid overwriting can be even more expensive
end
for k = 1, #to do tn[to[k]] = k + 1 end
end
return iter and pIter or oMap[t] and pOther or noOp, t--noOp for mapless
end
end
local parent, rawkey, spec do--new scope for variables not reused outside (reduces number of var names that need to checked outside of scope)
local mkv = {__mode='kv', __call=function(t,k,v)t[k]=v return k end}--shared meta for Buffer parent property, raw mode, and specialized functions
parent, rawkey, spec = setmetatable({}, mkv), setmetatable({}, mkv), setmetatable({}, mkv)--shared meta less memory
end
local MB, MBi, MBmix, buffHTML, gfuncs, noCache, Element do--minimize number of locals per scope to reduce time spent sifting through irrelevant variable names
local _stream do local stream--keep stream near top of scope
local function init(f)--init = noOp after first run
local function each(self, ...)
for k = 1, select('#', ...) do
k = Valid(select(k, ...))--slightly faster than table.insert(self, (Valid(select(k, ...))))
if k then table.insert(self, k) end
end
return self
end
init, stream, _stream = noOp, {
__call = function(t, v) v = v and Valid(v) return v and table.insert(t, v) or t end,--last_concat cleared before entering stream mode
__index = function(t, i) return i=='each' and each or MB.__index(t, i) and setmetatable(t, MB)[i] end,--no table look up minimizes resources to retrieve the only stream function
__tostring = function(t) return setmetatable(t, MB)() end
} for k, v in next, MB do stream[k] = stream[k] or v end
setmetatable(stream, getmetatable(MB))
end
function _stream(self, ...) self.last_concat = init() return setmetatable(self, stream):each(...) end
end
local function isMBfunc(Buffer, s, ...)--helper for :getParent()-like methods (including getBuffer which does not return a parent)
return s and (select('#', ...)==0 and--eventually should figure out to make this work for :getHTML which is very similar
(not rawkey[s] and tostring(s):match'^_.*' and MB.__index(Buffer, s) and MB.__index(Buffer, s)(Buffer) or MBmix(Buffer, s))--unprefixed function names append as a string
or assert(MB.__index(Buffer, s), ('" %s " does not match any available Module:Buffer function'):format(s))(Buffer, ...)--getParent is a one-way trip so one-time assert not expensive
) or Buffer
end
local function MBselect(n, ...)--helper for :_out and :_str
local n, seps = n - 1, {select(2, ...)}
if type(seps[n])=='table' then
if buffHTML and rawget(seps[n], buffHTML) then return ... end
setmetatable(seps, {__index = setmetatable(seps[n], {__index = function(t) return rawget(t, 1) end})})[n] = nil
end
return ..., seps
end
local _inHTML do local lastBuffer, lastHTML
local function init(...)--init replaced and new version called on return
local create, mwFunc = mw.html.create do
local mwHTMLmeta = getmetatable(create())
buffHTML, mwFunc, _inHTML = setmetatable(mw.clone(mwHTMLmeta), getmetatable(MB)), mwHTMLmeta.__index--buffHTML declared near top of module; remove _inHTML from outer scope
function init(nodes, ...)
local name, args, tag = select(... and type(...)=='table' and 1 or 2, nil, ...)
tag = create(Valid(name), args)
if nodes then table.insert(nodes, tag.parent and tag or rawset(tag, 'parent', parent[nodes])) end
if args then
local a, b = args.selfClosing, args.parent
args.selfClosing, args.parent = nil
if next(args) then Element._add(parent(tag.nodes, tag), args) end
args.selfClosing, args.parent = a, b--in case args is reused
end
return tag
end
for k, v in next, {[mw] = mwHTMLmeta,
__call = function(h, v) return MBmix(spec[h.nodes] and h.nodes or spec(setmetatable(parent(h.nodes, h), MB), Element), v) end,
__concat = false,--false means take from MB
__eq = false
} do buffHTML[k] = v or MB[k] end
end
local nonSelf, BHi = {tag=true,done=true,allDone=true}, buffHTML.__index do local g
g = {__index = function(t, i)
if gfuncs and gfuncs[i] then g.__index, gfuncs = gfuncs return g.__index[i] end
end}
setmetatable(nonSelf, g)
setmetatable(BHi, g)
end
for k in next, nonSelf do--any HTML objects returned by these funcs will be granted Module:Buffer enhancements
local func = mwFunc[k]
BHi[k] = function(t, ...) local HTML = func(t, ...) return parent[HTML] and HTML or setmetatable(parent(HTML, t), buffHTML) end
end
do local function joinNode(HTML, sep)
local nodes, join = HTML.nodes
if noCache and rawkey[sep] or Valid(sep) then join, HTML.nodes = tostring(rawset(HTML, 'nodes', {MB.__call(nodes, sep)})), nodes end
return join or tostring(HTML)
end
for k, v in next, {
getParent = function(HTML, ...) lastHTML = HTML return MBi.getParent(HTML:allDone(), ...) end,--return to Buffer that created the HTML tree
getBuffer = function(HTML, ...) lastHTML = HTML return isMBfunc(lastBuffer, ...) end,--return to last used
killParent = function(HTML, ...) MBi.killParent(HTML:allDone(), ...) return HTML end,
_out = function(HTML, ...)
if ...==0 then MBi._out(HTML.nodes, ...) return HTML end
lastHTML, HTML = HTML, HTML:allDone()
local n, ops, seps = select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 0))):_out(ops, rawset(seps, buffHTML, true))
end
return parent[HTML]:_(joinNode(HTML, ...))
end,
_str = function(HTML, ...)--does not set lastHTML
if ...==0 then return joinNode(HTML, select(2, ...)) end--passing 0 strings without calling allDone()
local HTML, n = HTML:allDone(), select('#', ...)
if n > 1 then
local ops, seps = MBselect(n, ...)
return parent[HTML]:_in(joinNode(HTML, rawget(seps, 1))):_str(ops, rawset(seps, buffHTML, true))
end
return joinNode(HTML, ...)
end,
_parent = function(HTML, ...) table.insert(HTML.nodes, parent[HTML:allDone()]:_str(...)) return HTML end
} do BHi[k] = v end
end
do local htmlArg, skip, outFuncs = {parent=true,selfClosing=true,tagName=true}, {}
do local out local function func(nodes, ...) return out(parent[nodes], ...) end
outFuncs = setmetatable({
tag = function(nodes, ...) return parent(setmetatable(init(nodes, ...), buffHTML), parent[nodes]) end,
done = function(b, ops)
b = parent[b]
while b.parent and ops~=0 do b, ops = b.parent, ops and ops - 1 or 0 end
return b
end
}, {__index = function(nodes, i)
if rawget(BHi, i) then out = BHi[i] return func end--rawget to exclude globals
end})
end
Element = {
_add = function(nodes, t)
for k, v in MBpairs(t), t, skip[t] do (v~=true and MBmix or noOp)(nodes, v) end
local HTML = parent[nodes] for k, v in MBpairs(t, false) do
if htmlArg[k] then HTML[k] = v
elseif v and v~=true then
if nonSelf[k] then
if k=='tag' then
if type(v)=='table' then
skip[v], k = 1, rawset(create(Valid(v[1])), 'parent', HTML)
Element._add(spec(parent(k.nodes, k, table.insert(nodes, k)), Element), v)
if k.selfClosing then k.nodes = nil else spec[k.nodes], parent[k.nodes] = nil end--free memory/reduce clutter; parent ref will auto-unset when k.nodes is nil
if not k.tagName then k.styles, k.attributes = nil end
else table.insert(nodes, create(v)) end
elseif mwFunc[k] then
if k=='done' and tonumber(v)~=v and v[1] and tonumber(v[1])==v[1] then skip[v] = 1 end
MBmix(outFuncs[k](nodes, skip[v] and v[1]).nodes, v)
elseif v[1] or v[2] then
k = MBi[k](nodes, unpack(v, 1, rawset(skip, v, k=='_B' and 1 or 2)[v]))
Element._add(getmetatable(k) and rawget(k, 'nodes') or k, v)--if k is not a table, then v should not contain any extra keys or this may error.
else MBi[k](nodes, v) end--k probably == '_G' or '_R'
elseif mwFunc[k] then
if type(v)~='table' or rawget(v, 'nodes') then mwFunc[k](HTML, v)
else
local css = k=='css'
for x, y in MBpairs(v, true) do (y and y~=true and mwFunc[k] or noOp)(HTML, css and x:gsub('_', '-') or x, y) end--iterate non-numbers first
for _, y in MBpairs(v, nil) do (y and y~=true and mwFunc[k] or noOp)(HTML, y) end--don't bother with gsub since text must be quoted anyhow
end
elseif rawget(Element, k) or rawget(MBi, k) then
if tonumber(v)==v or v[1]==nil or getmetatable(v) then (Element[k] or MBi[k])(nodes, v)--v is probably string-able object, or a table to be handled by :_all
else (Element[k] or MBi[k])(nodes, unpack(v, 1, table.maxn(v))) end--v is definately a table
else mwFunc.css(HTML, k:gsub('_', '-', 1), tostring(v)) end--oddly enough, :_add clocked its fastest runtime after adding auto-gsub as a feature
skip[v] = nil
end
end
return nodes
end
}
local tempMeta = {mode='v', copy={styles=true,attributes=true}}
function tempMeta.__index(t, i) return tempMeta.copy[i] and rawset(t, i, MBi._cc(false, 0, t.orig[i]))[i] or t.orig[i] end
rawkey[setmetatable(Element, {__index = outFuncs, __concat=function(Element, v) return setmetatable({nodes=spec({}, Element),orig=parent[v]}, tempMeta) end})] = math.huge
end
function MBi:getHTML(...)
lastBuffer = self
if ... then
if select('#', ...)==1 then return not rawkey[s] and tostring(...):match'^_' and BHi[...] and BHi[...](lastHTML) or lastHTML(...)
else return assert(BHi[...], ('" %s " does not match any mw.html or Buffer-mw.html function'):format(tostring(...)))(lastHTML, select(2, ...)) end
end
return lastHTML
end
function MBi:_html(...) return MBi._(self, lastHTML, select(spec[self]==Element and select('#', ...)==0 and 1 or 2, true, ...)) end
return init(...)
end
function _inHTML(self, ...)
local HTML = init(nil, ...)
if HTML.selfClosing and spec[self]==Element then self.last_concat = table.insert(self, HTML) return self end
lastBuffer, lastHTML = self, setmetatable(parent(HTML, self), buffHTML)--set after 'args' table processed by :_add
return HTML
end
end
local _var, unbuild do local prev, rebuild
local function init(...)--init replaced before return
local function pick(b, v) return b and table.insert(b, v) or v end
local function c(a, num) return rawset(a.a or a, 0, a[0] and a[0] + a.c or num and a[1] or a[1]:byte())[0] end
local same, build, alt = {__tostring = function(a, b) return a.a[0] and pick(b, a.a.string and string.char(a.a[0]) or a.a.table and a.a[1][a.a[0]] or a.a[0]) end}, {
__index = {c = 1},
__tostring = function(t) return t:_build() end,
table = function(a, b) local i = next(a[1], a[0]) or a[0]==#a[1] and next(a[1]) return pick(b, rawset(a.a or a, 0, i)[1][i]) end,--change rate (a.c) ignored since users control the table's contents
number = function(a, b) return pick(b, c(a, true)) end,
string = function(a, b) return pick(b, string.char(c(a))) end
}, {__index = function(a, i) return a.a[i] end, __tostring = function(a, b) return (rawget(a, 0) and a[0]==tostring(a[0]) and rawset(a, 0, a[0]:byte()) or a).a._build(a, b) end}
local function shift(t, c)
t[0] = t[0] and t[0] + c or t:_build() and t[0] - t.c + c
if t.table then t[0] = (t[0] - 1) % #t[1] + 1 end
end
function rebuild(...)
local v, c = ...
if v or select('#', ...)==0 then
if v and not c then return prev end
local meta, c = select(v and 1 or 3, alt, c, same, 0)
return setmetatable({a = prev, _build = meta.__tostring, c = c}, meta)
elseif v==nil then--no-op
elseif c then shift(prev, c)--v == false
else prev:_build() end
end
init, noCache = function(v, c) prev = setmetatable({v, c = c, _build = build[type(v)] or v, [type(v)] = true, alt = {}}, build) return prev end, true
return init(...)
end
function unbuild(sep)
for k, v in MBpairs(sep, nil) do
k = getmetatable(v) if k and (k==build or k==alt) then shift(v.a or v, -v.c) end
end
end
function _var(self, ...)
local obj if ... and ...~=true then obj = init(...)
elseif prev then
if ...~=false then obj = rebuild(...)
else rebuild(...) end
end
return obj and MBi._(self, obj, nil, true) or self
end
end
local lib; MBi = setmetatable({stream = _stream,
_inHTML = _inHTML,
_var = _var,
_ = function(self, v, ...)
local at, raw = select(select('#', ...)==1 and ...==true and 1 or 2, nil, ...)
if raw then rawkey[self] = math.huge else v = Valid(v) end
if v or raw then
if at or rawkey[self] then raw = #self end--if length increases by more than one after table.insert, then set rawkey[self] = math.huge; rawkey[self] may be equal to a previous 'at'
at, self.last_concat = at and (tonumber(at)~=at and raw + at or at)
table.insert(self, select(at and 1 or 2, at, v))
if at and at < 0 or raw and #self - raw > 1 then rawkey[self] = math.huge elseif at and #self==raw then rawkey[self] = rawkey[self] and math.max(rawkey[self], at) or at end
end--above line looks bizarre because one table.insert op may make length jump from 0 to 8: local wtf={[2]=2,[4]=4,[8]=8}mw.log(#wtf,table.insert(wtf,1),#wtf)
return self
end,
_nil = function(self, at, ...)
if ...~=true and ...~=false then--faster than type(...) ~= 'boolean'
if not at or at=='0' then
self[#self] = ... if ... then rawkey[self] = math.huge end
else
local n, v = tonumber(at), ...
if n~=at then
if n then n = #self + at
elseif at~=true and select('#', ...)==0 then v, n = at, #self end
end
if n then
if v==nil and n > 0 then table.remove(self, n)
else self[math.floor(n)], rawkey[self] = v, math.huge end--floor position for consistency with Table library
end
end
self.last_concat = nil
end
return self
end,
_all = function(self, t, valKey)
for k, v in MBpairs(t) do MBmix(self, v, valKey) end
for k, v in valKey and MBpairs(t, false) or noOp, t do
if tonumber(v) then MBi._(self, k, v)--self not always a buffer
elseif rawget(MBi, k) and v and v~=true then
if v[1]==nil or getmetatable(v) then MBi[k](self, v)
else MBi[k](self, unpack(v, 1, table.maxn(v))) end
end
end
return self
end,
_str = function(t, ...)
local n = select('#', ...)
if n > 1 then
local k, ops, seps, r = 2, MBselect(n, ...)
r = MB(t(seps[1]))
while parent[t] and ops > 1 and r:_(parent[t](seps[k]), 1) do t, k, ops = parent[t], k + 1, ops - 1 end
return table.concat(r, seps[k] or nil)
end
return MB.__call(t, ...)
end,
_in = function (self, ...) return parent(MB(...), self) end,
_out = function(t, ...)
if ...==0 then return parent(t, parent[t], MBi._cc(t, t, MB.__call(t, (select(2, ...))), getmetatable(t))) end--love how :_cc needed nothing new to implement this *self pat on back*
local n = select('#', ...)
if n > 1 then
local k, ops, seps = 1, MBselect(n, ...)
while parent[t] and ops > 0 do t, k, ops = parent[t]:_(t(seps[k])), k + 1, ops - 1 end
elseif parent[t] then return parent[t]:_(t(...)) end
return t
end,
_cc = function(self, clear, copy, meta)
if clear then
if rawequal(clear, copy) then return self, spec[MBi._cc] and setmetatable(spec[MBi._cc], MB)--rawequal to avoid re-string via __eq in case both are different Buffer objects
elseif copy==true then copy = self end
if clear~=0 then
assert(type(clear)=='table', debug.traceback('Buffer:_cc can only "clear" tables. Did you forget to call with a colon?', 2))--errors can be hard to trace without this
for k in self and next or noOp, clear do rawset(clear, k, nil) end
else return MBi._cc(false, {unpack(copy)}, copy) end--copy length w/o empty strings; recursion to avoid self = false causing garbage collection (non-weak child may exist)
if self==false or copy and type(copy)=='table' then--self==false means copy is a table (saves a type op for recursive calls)
meta = meta or getmetatable(copy)
if self and #copy > 1 then--preserves length with empty strings; developed from studying http://www.lua.org/source/5.1/ltable.c.html
local n, null, i, e = #copy, {}, math.ldexp(2, select(2, math.frexp(#copy)) - 2)
e, spec[MBi._cc], parent[null] = i - 1, null, clear
for k = 1, e do table.insert(clear, false) end
while i<=n do table.insert(clear, i, '') i, null[i] = i + math.ldexp(2, select(2, math.frexp(n - i)) - 2), '' end
for k = 1, e do rawset(clear, k, nil) end
end
for k, v in next, copy do rawset(clear, k, type(v)=='table' and MBi._cc(false, 0, v) or v) end
elseif copy then rawset(clear, 1, (Valid(copy))) end
rawkey[setmetatable(clear, meta)], parent[clear] = rawkey[copy], parent[copy]
end
return self and rawset(self, 'last_concat', nil) or clear
end,
_parent = function(self, ...) return parent[self] and MBi._(self, parent[self]:_str(...)) or self end,
getParent = function(self, ...) return isMBfunc(parent[self] or parent[parent(self, setmetatable({}, MB))], ...) end,
killParent = function(self, ...) return parent[self] and isMBfunc(parent[self], ...) and parent(self) or self end,
_build = function(self, t) table.insert(t, self()) end,--for compatibility with mw.html:node()
last_concat = false--prevent library check
}, {__index = function(t, i)--import string, mw.text, and mw.ustring libraries on an as-needed basis
local func = string[i] or mw.text[i] or mw.ustring[i] or type(i)=='string' and mw.ustring[i:match'^u(.+)'] if func then
lib = lib or function (s, f, ...)
if parent[s] and next(s)==nil then return s:_((f(tostring(parent[Element and (spec[s]==Element and s:allDone() or spec[parent[s]]==Element and parent[s]) or s]), ...))) end
return f(tostring(s), ...)--not using ternary/logical operators here to allow multiple return values
end
return rawset(t, i, i:match'^u?gsub' and function(self, p, r, ...)return lib(self, func, p, r or '', ...)end--Why are ugsub/gsub special? because empty strings are against my religion!
or function(self, ...)return lib(self, func, ...)end)[i]
end
end})
end
function MBmix(t, v, ...) return v and ((type(v)~='table' or getmetatable(v)) and MBi._(t, v) or (select('#', ...)==0 and spec[t] and spec[t]._add or MBi._all)(t, v, ...)) or t end--:_all always passes two args
local _G, new_G = _G--localize _G for console testing (console _G ~= module _G)
return setmetatable({__index = function(t, i) return spec[t] and spec[t][i] or MBi[i] end,
__call = function(t, ...)
local rawsep, sep, i, j, raw = noCache and rawkey[...] and ..., ...
if i or j or rawsep or Valid(sep) then
raw, sep, i, j = rawkey[spec[t]] or rawkey[t], rawsep or Valid(sep), i and (i~=tonumber(i) and i + #t or i), j and (j~=tonumber(j) and j + #t or j)
if rawsep or raw and (raw>=(j or #t) or i < 1) then
raw, i, j = {}, i and math.floor(i), j and math.floor(j)--floor for consistency with table.concat(t, sep, i, j), which ignores decimals
raw.lc, t.last_concat = t.last_concat--temporarily unset last_concat to prevent disqualification from mapless iteration
for k, v in MBpairs(t) do
if raw[1] or not i or k>=i then if j and k > j then break end
if raw.s then raw.s = table.insert(raw, tostring(sep)) end--if sep contains v and v is a Buffer-variable, sep must be strung before v
k = Valid(v) if k then
raw.s = rawsep or sep and raw[1] and table.insert(raw, sep)
table.insert(raw, k)
end
end
end
if rawsep and not raw.s then raw[#raw] = unbuild(sep) end--unbuild rawsep if final index in t was invalid
t.last_concat = raw.lc return table.concat(raw)
end
return table.concat(t, sep, i and math.max(i, 1), j and math.min(j, #t))
end
return MB.__tostring(t)
end,
__tostring = function(t)
if t.last_concat then return t.last_concat end
local r = rawkey[spec[t]] or rawkey[t]
r = table.concat(r and r>=#t and MBi._all({}, t) or t)
return (noCache or rawset(t, 'last_concat', r)) and r
end,
__concat = function(a, b)
if buffHTML then
for k = 1, 2 do local v = select(k, a, b)--faster than for k, v in pairs{a, b} do
if v and spec[v] and spec[v]==Element then
if parent[v].selfClosing then
if rawequal(a, b) then return (not noCache or parent[v].tagName) and v:_str(0):rep(2) or v:_str(0)..v:_str(0) end--rawequal avoids premature tostring of Buffer:_var objects;
b, a = select(k, b, parent[v], a)
else local temp = Element .. v --helper method; returns a mirror of parent[v]
MBmix(MBmix(parent(temp.nodes, temp), a), k==1 and spec[b]==Element and parent[b] or b)
return buffHTML.__tostring(setmetatable(temp, {__index=parent[v], __mode='v'}))--switch from tempMeta to avoid MBi._cc op of styles/attributes
end
end
end
end
return table.concat(MBmix(MBmix({}, a), b))
end,
__pairs = MBpairs,
__ipairs = MBpairs,
__eq = function(a, b) return tostring(a)==tostring(b) end--avoid a==b in this module; use rawequal(a,b) when they may be different Buffers (premature tostring waste ops and is bad for Buffer:_var)
}, {__tostring = function()return''end,
__call = function(self, ...) MB = MB or self
if new_G then if ... and _G and ...==_G then new_G = ... end
elseif ... and (...==_G or type(...)=='table' and (...)._G==...) then
local Nil, mG = {}, (...):getmetatable() or (...):setmetatable{}:getmetatable()
new_G, _G, gfuncs = ..., ..., {--gfuncs stored for Buffer:_inHTML; new_G is a is a Module:Buffer local declared just before the final return statement.
_G = function(self, i, ...)
local X, save = rawget(new_G, i), select('#', ...)==0 and self or ...
if i and i~=true and not (X and save and rawequal(X, save)) and rawset(new_G, i, save) and (X~=nil or save==nil and new_G[i]~=nil) then--rawequal in case X is another buffer
local mG = getmetatable(new_G) or {__call=mG.__call}
if mG.__index then pcall(rawset, mG.__index, i, X)
else mG.__index = setmetatable(new_G, mG) and {[i] = X} end
end
return self, ...--avoiding __eq with rawequal(self,save) is overkill since buffers can self-save without being passed as save
end,
_R = function(self, i, v, m)
if i~='new_G' then if i and i~=true then rawset(new_G, i , v) end
elseif not v or v==true or v._G~=_G then new_G = setmetatable(v~=true and v or {}, {__call = mG.__call, __index = v~=true and m~=true and (m or new_G) or nil})
else new_G, (not m and (m~=nil or v==new_G) and Nil or getmetatable(v)).__index = v, m~=true and (m or new_G) or nil end--setting Nil.__index is noOp
return self
end,
_2 = function(self, ...)
if new_G[...]~=nil then return new_G[...] end--higher priority so Buffer:_G('new_G', ...) can prevent an overwrite
if ...=='new_G' then return rawset((select('#', ...)~=1 and MBi._R(new_G, ...) or new_G), '_G', _G) end
return select(select('#', ...)==1 and 1 or 2, self:_G(...))--return only one value; 'return select(2, self:_G(...)) or self' doesn't work for returning nil
end,
_B = function(self, v) return v or v==nil and Nil end
} for k, v in next, gfuncs do MBi[k] = v end
setmetatable(Nil,{__concat=MB.__concat,__newindex=noOp,__call=noOp,__tostring=noOp,__metatable=MB,__index=setmetatable({_B=MBi._B,_=function()return Nil end,last_concat=''},
{__index=function(t,i)return (MBi[i] or i and not tonumber(i)) and t._ or nil end})})
function mG.__call(G, k, ...) return (k._G or G.type(k)=='table') and (G.select('#', ...)~=1 and G.rawset(k, ...) or G:rawset(..., k) and k) or G:rawset(k, (...)) and ... end
end
local new = setmetatable({}, self)
if ... and (...)==new_G then return select(2, ...) and MBmix(new:_G((select(2, ...))), select(3, ...)) or new end
return ... and MBi._(new, ...) or new
end,
__index = function(t, i)
MB = MB or t return MBi[i] and function(...) return MBi[i](setmetatable({}, t), select(...==t and 2 or 1,...)) end
end
})
a531c35e1366f84755b75caab181cd45e5330bbe
Module:Transclusion count/data/S
828
759
1694
1693
2023-10-01T10:29:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/S]]
Scribunto
text/plain
return {
["S"] = 3500,
["S-aca"] = 6400,
["S-ach"] = 16000,
["S-aft"] = 218000,
["S-aft/check"] = 218000,
["S-aft/filter"] = 218000,
["S-bef"] = 223000,
["S-bef/check"] = 223000,
["S-bef/filter"] = 223000,
["S-break"] = 5000,
["S-civ"] = 2600,
["S-dip"] = 5300,
["S-end"] = 246000,
["S-gov"] = 7900,
["S-hon"] = 3800,
["S-hou"] = 9500,
["S-inc"] = 13000,
["S-legal"] = 9400,
["S-mil"] = 12000,
["S-new"] = 16000,
["S-non"] = 10000,
["S-npo"] = 4100,
["S-off"] = 41000,
["S-par"] = 50000,
["S-par/en"] = 3200,
["S-par/gb"] = 3300,
["S-par/uk"] = 12000,
["S-par/us-hs"] = 11000,
["S-par/us-sen"] = 2000,
["S-ppo"] = 13000,
["S-prec"] = 3200,
["S-rail"] = 6400,
["S-rail-start"] = 6200,
["S-rail/lines"] = 6400,
["S-reg"] = 20000,
["S-rel"] = 18000,
["S-roy"] = 2700,
["S-s"] = 3600,
["S-sports"] = 10000,
["S-start"] = 240000,
["S-ttl"] = 230000,
["S-ttl/check"] = 230000,
["S-vac"] = 6500,
["SCO"] = 3700,
["SDcat"] = 5460000,
["SECOND"] = 2300,
["SGP"] = 2600,
["SIA"] = 2600,
["SIPA"] = 2600,
["SLO"] = 4300,
["SMS"] = 7200,
["SMU"] = 2100,
["SPI_archive_notice"] = 71000,
["SPIarchive_notice"] = 71000,
["SPIcat"] = 3800,
["SPIclose"] = 3300,
["SPIpriorcases"] = 65000,
["SR/Olympics_profile"] = 3100,
["SRB"] = 3700,
["SS"] = 20000,
["SSPa"] = 2600,
["STN"] = 13000,
["SUBJECTSPACE_formatted"] = 42000,
["SUI"] = 8500,
["SVG"] = 3200,
["SVG-Logo"] = 17000,
["SVG-Res"] = 15000,
["SVG-logo"] = 2900,
["SVG_logo"] = 2000,
["SVK"] = 5900,
["SVN"] = 5200,
["SWE"] = 12000,
["Sandbox_other"] = 236000,
["Saturday"] = 2700,
["Saved_book"] = 52000,
["Sc"] = 3300,
["Scholia"] = 2700,
["School_block"] = 13000,
["School_disambiguation"] = 3400,
["Schoolblock"] = 6700,
["Schooldis"] = 2700,
["Schoolip"] = 10000,
["Scientist_icon"] = 15000,
["Scientist_icon2"] = 15000,
["Sclass"] = 31000,
["Sclass2"] = 10000,
["Screen_reader-only"] = 61000,
["Screen_reader-only/styles.css"] = 61000,
["Script"] = 5900,
["Script/Arabic"] = 2200,
["Script/Hebrew"] = 4700,
["Script/Nastaliq"] = 14000,
["Script/doc/id-unk"] = 3000,
["Script/doc/id-unk/core"] = 3000,
["Script/doc/id-unk/is-iso-alpha4"] = 2800,
["Script/doc/id-unk/name-to-alpha4"] = 3000,
["Script/styles.css"] = 3100,
["Script/styles_arabic.css"] = 2200,
["Script/styles_hebrew.css"] = 4700,
["Sdash"] = 3100,
["Search_box"] = 52000,
["Search_link"] = 16000,
["Section_link"] = 57000,
["Section_sizes"] = 2500,
["See"] = 10000,
["See_also"] = 184000,
["Seealso"] = 6600,
["Select_skin"] = 4300,
["Selected_article"] = 2700,
["Selected_picture"] = 2500,
["Self"] = 48000,
["Self-published_inline"] = 3900,
["Self-published_source"] = 6600,
["Self-reference"] = 2400,
["Self-reference_tool"] = 5400,
["Self/migration"] = 33000,
["Self2"] = 2100,
["Sent_off"] = 13000,
["Sentoff"] = 4400,
["Separated_entries"] = 181000,
["Sequence"] = 3500,
["Serial_killer_opentask"] = 3600,
["Series_overview"] = 7800,
["Serif"] = 2800,
["Set_category"] = 35000,
["Set_index_article"] = 5800,
["Sets_taxobox_colour"] = 90000,
["Sfn"] = 155000,
["SfnRef"] = 133000,
["Sfnm"] = 3600,
["Sfnp"] = 18000,
["Sfnref"] = 11000,
["Sfrac"] = 4200,
["Sfrac/styles.css"] = 4200,
["SharedIPEDU"] = 3200,
["Shared_IP"] = 11000,
["Shared_IP_advice"] = 16000,
["Shared_IP_corp"] = 5100,
["Shared_IP_edu"] = 131000,
["Shared_IP_gov"] = 3000,
["Sharedip"] = 3300,
["Sharedipedu"] = 3600,
["Sherdog"] = 2600,
["Ship"] = 85000,
["Ship/maintenancecategory"] = 85000,
["Ship_index"] = 7000,
["Shipboxflag"] = 20000,
["Shipboxflag/core"] = 20000,
["Shipwrecks_navbox_footer"] = 10000,
["Shipwrecks_navbox_footer/link"] = 10000,
["Short_description"] = 5570000,
["Short_description/lowercasecheck"] = 5570000,
["Short_pages_monitor"] = 10000,
["Short_pages_monitor/maximum_length"] = 10000,
["Shortcut"] = 20000,
["Should_be_SVG"] = 9000,
["Show_button"] = 2150000,
["Sic"] = 33000,
["Sica"] = 3000,
["Side_box"] = 1130000,
["Sidebar"] = 257000,
["Sidebar_games_events"] = 37000,
["Sidebar_person"] = 2300,
["Sidebar_person/styles.css"] = 2300,
["Sidebar_with_collapsible_lists"] = 93000,
["Sigfig"] = 3800,
["Significant_figures"] = 5100,
["Significant_figures/rnd"] = 4700,
["Signpost-subscription"] = 2100,
["Sildb_prim"] = 2000,
["Silver02"] = 16000,
["Silver2"] = 48000,
["Silver_medal"] = 5600,
["Similar_names"] = 2200,
["Single+double"] = 6900,
["Single+space"] = 14000,
["Single-innings_cricket_match"] = 3200,
["Single_chart"] = 37000,
["Single_chart/chartnote"] = 37000,
["Single_namespace"] = 203000,
["Singlechart"] = 20000,
["Singles"] = 41000,
["Sister-inline"] = 189000,
["Sister_project"] = 1040000,
["Sister_project_links"] = 11000,
["Sisterlinks"] = 2600,
["Skip_to_talk"] = 12000,
["Skip_to_talk/styles.css"] = 12000,
["Sky"] = 2700,
["Sky/styles.css"] = 2700,
["Slink"] = 14000,
["Small"] = 601000,
["Small_Solar_System_bodies"] = 3600,
["Smallcaps"] = 17000,
["Smallcaps/styles.css"] = 17000,
["Smallcaps_all"] = 3400,
["Smalldiv"] = 22000,
["Smaller"] = 73000,
["Smallsup"] = 21000,
["Smiley"] = 44000,
["Snd"] = 167000,
["Snds"] = 6300,
["Soccer_icon"] = 130000,
["Soccer_icon2"] = 130000,
["Soccer_icon4"] = 5100,
["Soccerbase"] = 13000,
["Soccerbase_season"] = 6800,
["Soccerway"] = 76000,
["Sock"] = 47000,
["Sock_list"] = 4300,
["Sockcat"] = 2000,
["Sockmaster"] = 9400,
["Sockpuppet"] = 239000,
["Sockpuppet/altmaster"] = 2100,
["Sockpuppet/categorise"] = 239000,
["SockpuppetCheckuser"] = 5500,
["Sockpuppet_category"] = 46000,
["Sockpuppet_category/confirmed"] = 24000,
["Sockpuppet_category/suspected"] = 22000,
["Sockpuppetcheckuser"] = 3600,
["Sockpuppeteer"] = 25000,
["Soft_redirect"] = 6100,
["Soft_redirect_protection"] = 8200,
["Softredirect"] = 3200,
["Solar_luminosity"] = 4500,
["Solar_mass"] = 5300,
["Solar_radius"] = 4300,
["Soldier_icon"] = 3900,
["Soldier_icon2"] = 3900,
["Song"] = 8300,
["Songs"] = 19000,
["Songs_category"] = 8400,
["Songs_category/core"] = 8400,
["Sort"] = 117000,
["Sortname"] = 53000,
["Source-attribution"] = 28000,
["Source_check"] = 964000,
["Sourcecheck"] = 964000,
["Sources"] = 2500,
["South_America_topic"] = 2500,
["Sp"] = 172000,
["Space"] = 55000,
["Space+double"] = 18000,
["Space+single"] = 13000,
["Spaced_en_dash"] = 199000,
["Spaced_en_dash_space"] = 6400,
["Spaced_ndash"] = 23000,
["Spaces"] = 2710000,
["Spain_metadata_Wikidata"] = 7500,
["Spamlink"] = 13000,
["Species_Latin_name_abbreviation_disambiguation"] = 2200,
["Species_list"] = 15000,
["Speciesbox"] = 292000,
["Speciesbox/getGenus"] = 292000,
["Speciesbox/getSpecies"] = 292000,
["Speciesbox/name"] = 292000,
["Speciesbox/parameterCheck"] = 292000,
["Speciesbox/trim"] = 292000,
["Specieslist"] = 5600,
["Split_article"] = 3600,
["Spnd"] = 4100,
["Spoken_Wikipedia"] = 2200,
["Sport_icon"] = 14000,
["Sport_icon2"] = 15000,
["SportsYearCatUSstate"] = 6500,
["SportsYearCatUSstate/core"] = 6500,
["Sports_links"] = 66000,
["Sports_reference"] = 7300,
["Squad_maintenance"] = 3500,
["Sronly"] = 59000,
["Srt"] = 5300,
["Stack"] = 25000,
["Stack/styles.css"] = 34000,
["Stack_begin"] = 9000,
["Stack_end"] = 9000,
["StaleIP"] = 3200,
["Standings_table_end"] = 54000,
["Standings_table_entry"] = 54000,
["Standings_table_entry/record"] = 54000,
["Standings_table_start"] = 54000,
["Standings_table_start/colheader"] = 54000,
["Standings_table_start/colspan"] = 54000,
["Standings_table_start/styles.css"] = 54000,
["Starbox_astrometry"] = 5100,
["Starbox_begin"] = 5300,
["Starbox_catalog"] = 5200,
["Starbox_character"] = 5100,
["Starbox_detail"] = 5000,
["Starbox_end"] = 5300,
["Starbox_image"] = 2900,
["Starbox_observe"] = 5100,
["Starbox_reference"] = 5200,
["Start-Class"] = 18000,
["Start-date"] = 3700,
["Start_and_end_dates"] = 3800,
["Start_box"] = 8000,
["Start_date"] = 437000,
["Start_date_and_age"] = 140000,
["Start_date_and_years_ago"] = 6500,
["Start_date_text"] = 3800,
["Start_of_course_timeline"] = 6200,
["Start_of_course_week"] = 6300,
["Start_tab"] = 5000,
["Startflatlist"] = 144000,
["Static_IP"] = 6000,
["Station"] = 7700,
["Station_link"] = 16000,
["Stdinchicite"] = 11000,
["Steady"] = 14000,
["Stl"] = 14000,
["Stn"] = 7300,
["Stn_art_lnk"] = 2000,
["Stnlnk"] = 30000,
["Storm_colour"] = 5200,
["Storm_path"] = 2100,
["StoryTeleplay"] = 3500,
["Str_endswith"] = 201000,
["Str_find"] = 115000,
["Str_index"] = 13000,
["Str_left"] = 909000,
["Str_len"] = 19000,
["Str_letter"] = 175000,
["Str_letter/trim"] = 20000,
["Str_number"] = 8000,
["Str_number/trim"] = 170000,
["Str_rep"] = 313000,
["Str_trim"] = 5300,
["Str_≠_len"] = 35000,
["Str_≥_len"] = 73000,
["Strfind_short"] = 226000,
["Strikethrough"] = 16000,
["String_split"] = 2800,
["Strip_tags"] = 38000,
["Strong"] = 862000,
["Structurae"] = 2100,
["Stub-Class"] = 17000,
["Stub_Category"] = 13000,
["Stub_category"] = 18000,
["Stub_documentation"] = 36000,
["Student_editor"] = 27000,
["Student_sandbox"] = 4500,
["Student_table_row"] = 5300,
["Students_table"] = 5300,
["Su"] = 9800,
["Su-census1989"] = 4500,
["Sub"] = 4100,
["Subinfobox_bodystyle"] = 36000,
["Subject_bar"] = 19000,
["Suboff"] = 6200,
["Subon"] = 6300,
["Subpage_other"] = 291000,
["Subscription"] = 4200,
["Subscription_required"] = 34000,
["Subsidebar_bodystyle"] = 6400,
["Subst_only"] = 4600,
["Substituted_comment"] = 19000,
["Succession_box"] = 118000,
["Succession_box/check"] = 118000,
["Succession_links"] = 164000,
["Summer_Olympics_by_year_category_navigation"] = 2400,
["Summer_Olympics_by_year_category_navigation/core"] = 2400,
["Sunday"] = 2700,
["Sup"] = 59000,
["Suppress_categories"] = 5300,
["Surname"] = 66000,
["Swiss_populations"] = 2400,
["Swiss_populations_NC"] = 3000,
["Swiss_populations_YM"] = 2300,
["Swiss_populations_ref"] = 2400,
["Switcher"] = 3000,
["Module:SDcat"] = 5460000,
["Module:SPI_archive_notice"] = 33000,
["Module:Science_redirect"] = 256000,
["Module:Science_redirect/conf"] = 256000,
["Module:Section_link"] = 57000,
["Module:Section_sizes"] = 3600,
["Module:See_also_if_exists"] = 73000,
["Module:Separated_entries"] = 2300000,
["Module:Series_overview"] = 7900,
["Module:Settlement_short_description"] = 712000,
["Module:Shortcut"] = 24000,
["Module:Shortcut/config"] = 24000,
["Module:Shortcut/styles.css"] = 24000,
["Module:Side_box"] = 1160000,
["Module:Side_box/styles.css"] = 1160000,
["Module:Sidebar"] = 339000,
["Module:Sidebar/configuration"] = 339000,
["Module:Sidebar/styles.css"] = 345000,
["Module:Sidebar_games_events"] = 37000,
["Module:Sidebar_games_events/styles.css"] = 37000,
["Module:Singles"] = 41000,
["Module:Sister_project_links"] = 14000,
["Module:Sister_project_links/bar/styles.css"] = 3500,
["Module:Sister_project_links/styles.css"] = 11000,
["Module:Sock_list"] = 4300,
["Module:Sort_title"] = 18000,
["Module:Sortkey"] = 199000,
["Module:Split_article"] = 3600,
["Module:Spoken_Wikipedia"] = 2200,
["Module:Spoken_Wikipedia/configuration"] = 2200,
["Module:Spoken_Wikipedia/styles.css"] = 2200,
["Module:Sports_career"] = 19000,
["Module:Sports_color"] = 68000,
["Module:Sports_color/baseball"] = 34000,
["Module:Sports_color/basketball"] = 22000,
["Module:Sports_color/ice_hockey"] = 3100,
["Module:Sports_rbr_table"] = 12000,
["Module:Sports_rbr_table/styles.css"] = 12000,
["Module:Sports_reference"] = 7300,
["Module:Sports_results"] = 15000,
["Module:Sports_results/styles.css"] = 9500,
["Module:Sports_table"] = 58000,
["Module:Sports_table/WDL"] = 51000,
["Module:Sports_table/WDL_OT"] = 2700,
["Module:Sports_table/WL"] = 4000,
["Module:Sports_table/WL_OT"] = 2000,
["Module:Sports_table/argcheck"] = 58000,
["Module:Sports_table/styles.css"] = 58000,
["Module:Sports_table/sub"] = 58000,
["Module:Sports_table/totalscheck"] = 42000,
["Module:Stock_tickers/NYSE"] = 2100,
["Module:Storm_categories"] = 5200,
["Module:Storm_categories/categories"] = 5200,
["Module:Storm_categories/colors"] = 5200,
["Module:Storm_categories/icons"] = 5200,
["Module:String"] = 11300000,
["Module:String2"] = 2290000,
["Module:Su"] = 12000,
["Module:Subject_bar"] = 19000,
["Module:Suppress_categories"] = 5300,
}
abf587d8a0323a9d0aca3263b2ad8df6ad840fd9
Template:Stub/doc
10
760
1696
1695
2023-10-01T10:29:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Stub/doc]]
wikitext
text/x-wiki
{{documentation subpage}}
<!-- Intentionally blank: interlanguage links for [[Template:Stub]] are now held at [[d:Special:ItemByTitle/enwiki/Template:Stub]]. -->
===TemplateData===
{{TemplateData header}}
<templatedata>
{
"description": "Standard template used for sorting articles into stubs.",
"params": {},
"format": "inline"
}
</templatedata>
4e08e86ecdef137b8a8a26bf6766217f8fc8e0ce
Template:Stub documentation
10
761
1698
1697
2023-10-01T10:29:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Stub_documentation]]
wikitext
text/x-wiki
{{#ifeq:{{#invoke:High-use|num|x}}|many||{{High-use}}}}
This is a '''stub template'''. A brief explanation of these templates follows; for full details please consult [[Wikipedia:Stub]].
=== What is a stub? ===
A stub is an article containing only a few sentences of text which is too short to provide encyclopedic coverage of a subject.
=== How is a stub identified? ===
* If possible, try to find the most appropriate stub template for the article. A full list can be found at [[Wikipedia:WikiProject Stub sorting/List of stubs]].
* More than one stub template may be used, if necessary, though no more than four should be used on any article.
* Place a stub template ''[[Wikipedia:Manual of Style/Layout#Order of article elements|at the very end]]'' of the article, after the "External links" section, any navigation templates, and the category tags. As usual, templates are added by including their name inside double braces, e.g. <code><nowiki>{{stub}}</nowiki></code>.
=== Further information ===
Further information can be found at:
* [[Wikipedia:Stub]]
* [[Wikipedia:WikiProject Stub sorting]]
New stub templates and categories (collectively "stub types") should not be created without prior proposal at [[Wikipedia:WikiProject Stub sorting/Proposals]]. This allows for the proper coordination of all stub types across Wikipedia, and for the checking of any new stub type for possible problems prior to its creation.
=== See also ===
* [[Template:Empty section]] – To flag an empty section as a '''stub section'''
* [[Template:Expand section]] – To flag sections selectively as incomplete
* [[Template:Data missing]] – To flag missing information or other data
* [[Wikipedia:Content assessment]]<!--
--><noinclude>
{{documentation}}
[[Category:Template documentation]]
</noinclude>
5e5f29f413afaf1f92838315049bbcf2056e4cdd
Template:SDcat
10
762
1700
1699
2023-10-01T10:34:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:SDcat]]
wikitext
text/x-wiki
<includeonly>{{#invoke:SDcat |setCat}}</includeonly><noinclude>
{{documentation}}
</noinclude>
8c6e8783ddb0dc699d6fb60370db97b73725b9a6
Template:High risk
10
763
1702
1701
2023-10-01T10:35:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:High_risk]]
wikitext
text/x-wiki
#REDIRECT [[Template:High-use]]
{{Redirect category shell|
{{R avoided double redirect|1=Template:High-risk}}
{{R from alternative hyphenation|'''{{-r|Template:High-risk}}'''}}{{R from template shortcut}}
}}
ce1776d54ed01e65417b2a4ed18778e32694aa48
Template:SDcat/doc
10
764
1704
1703
2023-10-01T10:35:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:SDcat/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{High risk}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{lua|Module:SDcat}}
This template is merely a wrapper for [[Module:SDcat]], which adds tracking categories to articles depending on whether their [[WP:short description|short description]] matches the associated description field on Wikidata. Complete documentation is available at [[Module:SDcat]].
== Usage ==
<code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code>
=== For testing ===
<code><nowiki>{{SDcat |sd=short description |qid=Wikidata entity ID |lp=link prefix (usually ":") }}</nowiki></code>
<includeonly>{{sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:WikiProject Short descriptions]]
}}</includeonly>
2a2e572b915cc316e39d344979cbca621b80c828
Module:SDcat
828
765
1706
1705
2023-10-01T10:35:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:SDcat]]
Scribunto
text/plain
--[[
SDcat
Module to check whether local short description matches that on Wikidata
--]]
local p = {}
-------------------------------------------------------------------------------
--[[
setCat has the qid of a Wikidata entity passed as |qid=
(it defaults to the associated qid of the current article if omitted)
and the local short description passed as |sd=
It returns a category if there is an associated Wikidata entity.
It returns one of the following tracking categories, as appropriate:
* Category:Short description matches Wikidata (case-insensitive)
* Category:Short description is different from Wikidata
* Category:Short description with empty Wikidata description
For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible.
--]]
-- function exported for use in other modules
-- (local short description, Wikidata entity-ID, link prefix)
p._setCat = function(sdesc, itemID, lp)
if not mw.wikibase then return nil end
if itemID == "" then itemID = nil end
-- Wikidata description field
local wdesc = (mw.wikibase.getDescription(itemID) or ""):lower()
if wdesc == "" then
return "[[" .. lp .. "Category:Short description with empty Wikidata description]]"
elseif wdesc == sdesc then
return "[[" .. lp .. "Category:Short description matches Wikidata]]"
else
return "[[" .. lp .. "Category:Short description is different from Wikidata]]"
end
end
-- function exported for call from #invoke
p.setCat = function(frame)
local args
if frame.args.sd then
args = frame.args
else
args = frame:getParent().args
end
-- local short description
local sdesc = mw.text.trim(args.sd or ""):lower()
-- Wikidata entity-ID
local itemID = mw.text.trim(args.qid or "")
-- link prefix, strip quotes
local lp = mw.text.trim(args.lp or ""):gsub('"', '')
return p._setCat(sdesc, itemID, lp)
end
return p
6c19ac0f72c79a618eb105808f74701376bb2b38
Module:SDcat/doc
828
766
1708
1707
2023-10-01T10:35:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:SDcat/doc]]
wikitext
text/x-wiki
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High risk}}
Module to check whether local short description matches that on Wikidata
setCat has the qid of a Wikidata entity passed as |qid=
(it defaults to the associated qid of the current article if omitted)
and the local short description passed as |sd=
It returns a category if there is an associated Wikidata entity.
It returns one of the following tracking categories, as appropriate:
* Category:Short description matches Wikidata (case-insensitive)
* Category:Short description is different from Wikidata
* Category:Short description with empty Wikidata description
For testing purposes, a link prefix |lp= may be set to ":" to make the categories visible.
== Usage ==
; From within a template
: <code><nowiki>{{SDcat |sd={{{shortdescription|}}} }}</nowiki></code>
: or
: <code><nowiki>{{#invoke:SDcat |setCat |sd={{{shortdescription|}}} }}</nowiki></code>
[[Template:SDcat]] is a wrapper for this module.
; From another module
: <code>sdcat = require("Module:SDcat")._setCat</code>
: <code>local tracking_cat = sdcat(shortdesc, itemID)</code>
=== For testing ===
<code><nowiki>{{#invoke:SDcat |setCat |qid={{get QID|Douglas Adams}}|sd=English author and humorist (1952–2001) |lp=":"}}</nowiki></code>
A few examples of tests are at [[Module talk:SDcat]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
21f47b1966831d0fef3720fba993cebeffaddb00
Module:Citation/CS1
828
827
1845
1844
2023-10-01T10:38:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1]]
Scribunto
text/plain
require ('strict');
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
each of these counts against the Lua upvalue limit
]]
local validation; -- functions in Module:Citation/CS1/Date_validation
local utilities; -- functions in Module:Citation/CS1/Utilities
local z = {}; -- table of tables in Module:Citation/CS1/Utilities
local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers
local metadata; -- functions in Module:Citation/CS1/COinS
local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist
--[[------------------< P A G E S C O P E V A R I A B L E S >---------------
declare variables here that have page-wide scope that are not brought in from
other modules; that are created here and used here
]]
local added_deprecated_cat; -- Boolean flag so that the category is added only once
local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category
local added_generic_name_errs; -- Boolean flag so we only emit one generic name error / category and stop testing names once an error is encountered
local Frame; -- holds the module's frame table
local is_preview_mode; -- true when article is in preview mode; false when using 'Preview page with this template' (previewing the module)
local is_sandbox; -- true when using sandbox modules to render citation
--[[--------------------------< F I R S T _ S E T >------------------------------------------------------------
Locates and returns the first set value in a table of values where the order established in the table,
left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set.
This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs
version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate
the for-loop before it reached the actual end of the list.
]]
local function first_set (list, count)
local i = 1;
while i <= count do -- loop through all items in list
if utilities.is_set( list[i] ) then
return list[i]; -- return the first set list member
end
i = i + 1; -- point to next
end
end
--[[--------------------------< A D D _ V A N C _ E R R O R >----------------------------------------------------
Adds a single Vancouver system error message to the template's output regardless of how many error actually exist.
To prevent duplication, added_vanc_errs is nil until an error message is emitted.
added_vanc_errs is a Boolean declared in page scope variables above
]]
local function add_vanc_error (source, position)
if added_vanc_errs then return end
added_vanc_errs = true; -- note that we've added this category
utilities.set_message ('err_vancouver', {source, position});
end
--[[--------------------------< I S _ S C H E M E >------------------------------------------------------------
does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it
is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says:
Scheme names consist of a sequence of characters beginning with a
letter and followed by any combination of letters, digits, plus
("+"), period ("."), or hyphen ("-").
returns true if it does, else false
]]
local function is_scheme (scheme)
return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern
end
--[=[-------------------------< I S _ D O M A I N _ N A M E >--------------------------------------------------
Does this thing that purports to be a domain name seem to be a valid domain name?
Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5
BNF defined here: https://tools.ietf.org/html/rfc4234
Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15;
see also [[Single-letter second-level domain]]
list of TLDs: https://www.iana.org/domains/root/db
RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between
the first and last characters the name may use letters, digits, and the hyphen.
Also allowed are IPv4 addresses. IPv6 not supported
domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld
is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped
here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal.
There are several tests:
the first character of the whole domain name including subdomains must be a letter or a digit
internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490
single-letter/digit second-level domains in the .org, .cash, and .today TLDs
q, x, and z SL domains in the .com TLD
i and q SL domains in the .net TLD
single-letter SL domains in the ccTLDs (where the ccTLD is two letters)
two-character SL domains in gTLDs (where the gTLD is two or more letters)
three-plus-character SL domains in gTLDs (where the gTLD is two or more letters)
IPv4 dot-decimal address format; TLD not allowed
returns true if domain appears to be a proper name and TLD or IPv4 address, else false
]=]
local function is_domain_name (domain)
if not domain then
return false; -- if not set, abandon
end
domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once
if not domain:match ('^[%w]') then -- first character must be letter or digit
return false;
end
if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource
return false;
end
local patterns = { -- patterns that look like URLs
'%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld
'%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix
'%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10)
'%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10)
'%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars)
'%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD
'^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address
}
for _, pattern in ipairs (patterns) do -- loop through the patterns list
if domain:match (pattern) then
return true; -- if a match then we think that this thing that purports to be a URL is a URL
end
end
for _, d in ipairs (cfg.single_letter_2nd_lvl_domains_t) do -- look for single letter second level domain names for these top level domains
if domain:match ('%f[%w][%w]%.' .. d) then
return true
end
end
return false; -- no matches, we don't know what this thing is
end
--[[--------------------------< I S _ U R L >------------------------------------------------------------------
returns true if the scheme and domain parts of a URL appear to be a valid URL; else false.
This function is the last step in the validation process. This function is separate because there are cases that
are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external
wikilinks.
]]
local function is_url (scheme, domain)
if utilities.is_set (scheme) then -- if scheme is set check it and domain
return is_scheme (scheme) and is_domain_name (domain);
else
return is_domain_name (domain); -- scheme not set when URL is protocol-relative
end
end
--[[--------------------------< S P L I T _ U R L >------------------------------------------------------------
Split a URL into a scheme, authority indicator, and domain.
First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#).
If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain.
When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one
or more '/' characters immediately following the scheme's colon), make sure that there are only 2.
Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes
like news: that don't use authority indicator?
Strip off any port and path;
]]
local function split_url (url_str)
local scheme, authority, domain;
url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//')
if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL
domain = url_str:match ('^//(%S*)')
elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name
scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions
if utilities.is_set (authority) then
authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing;
if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then
return scheme; -- return scheme only making domain nil which will cause an error message
end
else
if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test?
return scheme; -- return scheme only making domain nil which will cause an error message
end
end
domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present
end
return scheme, domain;
end
--[[--------------------------< L I N K _ P A R A M _ O K >---------------------------------------------------
checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs
Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed:
# < > [ ] | { } _
except the underscore which is used as a space in wiki URLs and # which is used for section links
returns false when the value contains any of these characters.
When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the
|<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok).
]]
local function link_param_ok (value)
local scheme, domain;
if value:find ('[<>%[%]|{}]') then -- if any prohibited characters
return false;
end
scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL;
return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL
end
--[[--------------------------< L I N K _ T I T L E _ O K >---------------------------------------------------
Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value.
|<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when
that condition exists
check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language
code and must begin with a colon.
]]
local function link_title_ok (link, lorig, title, torig)
local orig;
if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value
if not link_param_ok (link) then -- check |<param>-link= markup
orig = lorig; -- identify the failing link parameter
elseif title:find ('%[%[') then -- check |title= for wikilink markup
orig = torig; -- identify the failing |title= parameter
elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki
local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix
if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon
orig = lorig; -- flag as error
end
end
end
if utilities.is_set (orig) then
link = ''; -- unset
utilities.set_message ('err_bad_paramlink', orig); -- URL or wikilink in |title= with |title-link=;
end
return link; -- link if ok, empty string else
end
--[[--------------------------< C H E C K _ U R L >------------------------------------------------------------
Determines whether a URL string appears to be valid.
First we test for space characters. If any are found, return false. Then split the URL into scheme and domain
portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two
portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false.
Because it is different from a standard URL, and because this module used external_link() to make external links
that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name
is at https://tools.ietf.org/html/rfc5536#section-3.1.4
]]
local function check_url( url_str )
if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL
return false;
end
local scheme, domain;
scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL;
if 'news:' == scheme then -- special case for newsgroups
return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$');
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >----------------------------
Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first
non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks
that use protocol-relative URLs. Also finds bare URLs.
The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that
find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=,
and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]]
is possible as might be [[en://Hus]].
]=]
local function is_parameter_ext_wikilink (value)
local scheme, domain;
if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]'));
elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz]
scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]'));
elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(%a%S*:%S+)'));
elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text
scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain
else
return false; -- didn't find anything that is obviously a URL
end
return is_url (scheme, domain); -- return true if value appears to be a valid URL
end
--[[-------------------------< C H E C K _ F O R _ U R L >-----------------------------------------------------
loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message.
]]
local function check_for_url (parameter_list, error_list)
for k, v in pairs (parameter_list) do -- for each parameter in the list
if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message
table.insert (error_list, utilities.wrap_style ('parameter', k));
end
end
end
--[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------
Escape sequences for content that will be used for URL descriptions
]]
local function safe_for_url( str )
if str:match( "%[%[.-%]%]" ) ~= nil then
utilities.set_message ('err_wikilink_in_url', {});
end
return str:gsub( '[%[%]\n]', {
['['] = '[',
[']'] = ']',
['\n'] = ' ' } );
end
--[[--------------------------< E X T E R N A L _ L I N K >----------------------------------------------------
Format an external link with error checking
]]
local function external_link (URL, label, source, access)
local err_msg = '';
local domain;
local path;
local base_url;
if not utilities.is_set (label) then
label = URL;
if utilities.is_set (source) then
utilities.set_message ('err_bare_url_missing_title', {utilities.wrap_style ('parameter', source)});
else
error (cfg.messages["bare_url_no_origin"]); -- programmer error; valid parameter name does not have matching meta-parameter
end
end
if not check_url (URL) then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)});
end
domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path
if path then -- if there is a path portion
path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values
URL = table.concat ({domain, path}); -- and reassemble
end
base_url = table.concat ({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL
if utilities.is_set (access) then -- access level (subscription, registration, limited)
base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon
end
return base_url;
end
--[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >--------------------------------------
Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the
offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated
parameters in the citation.
added_deprecated_cat is a Boolean declared in page scope variables above
]]
local function deprecated_parameter(name)
if not added_deprecated_cat then
added_deprecated_cat = true; -- note that we've added this category
utilities.set_message ('err_deprecated_params', {name}); -- add error message
end
end
--[=[-------------------------< K E R N _ Q U O T E S >--------------------------------------------------------
Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote
mark contained in a |title= or |chapter= parameter's value.
This function will positive kern either single or double quotes:
"'Unkerned title with leading and trailing single quote marks'"
" 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example)
Double single quotes (italic or bold wiki-markup) are not kerned.
Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter
quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks.
Call this function for chapter titles, for website titles, etc.; not for book titles.
]=]
local function kern_quotes (str)
local cap = '';
local wl_type, label, link;
wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks
if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
str = utilities.substitute (cfg.presentation['kern-right'], str);
elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks
str = utilities.substitute (cfg.presentation['kern-left'], str);
elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks
str = utilities.substitute (cfg.presentation['kern-right'], str);
end
else -- plain text or [[L|D]]; text in label variable
label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark)
label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark)
cap = mw.ustring.match (label, "^([\"\'][^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-left'], cap);
end
cap = mw.ustring.match (label, "^(.+[^\'][\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup)
if utilities.is_set (cap) then
label = utilities.substitute (cfg.presentation['kern-right'], cap);
end
if 2 == wl_type then
str = utilities.make_wikilink (link, label); -- reassemble the wikilink
else
str = label;
end
end
return str;
end
--[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >----------------------------------------
|script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should
not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped
in italic markup.
Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right.
|script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon:
|script-title=ja:*** *** (where * represents a Japanese character)
Spaces between the two-character code and the colon and the colon and the first script character are allowed:
|script-title=ja : *** ***
|script-title=ja: *** ***
|script-title=ja :*** ***
Spaces preceding the prefix are allowed: |script-title = ja:*** ***
The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can
know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute
is not added. At this time there is no error message for this condition.
Supports |script-title=, |script-chapter=, |script-<periodical>=
]]
local function format_script_value (script_value, script_param)
local lang=''; -- initialize to empty string
local name;
if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix
lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script
if not utilities.is_set (lang) then
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing title part']}); -- prefix without 'title'; add error message
return ''; -- script_value was just the prefix so return empty string
end
-- if we get this far we have prefix and script
name = cfg.lang_tag_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize
if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code?
script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script
-- is prefix one of these language codes?
if utilities.in_array (lang, cfg.script_lang_codes) then
utilities.add_prop_cat ('script', {name, lang})
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['unknown language code']}); -- unknown script-language; add error message
end
lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['invalid language code']}); -- invalid language code; add error message
lang = ''; -- invalid so set lang to empty string
end
else
utilities.set_message ('err_script_parameter', {script_param, cfg.err_msg_supl['missing prefix']}); -- no language code prefix; add error message
end
script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL
return script_value;
end
--[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------
Initially for |title= and |script-title=, this function concatenates those two parameter values after the script
value has been wrapped in <bdi> tags.
]]
local function script_concatenate (title, script, script_param)
if utilities.is_set (script) then
script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error
if utilities.is_set (script) then
title = title .. ' ' .. script; -- concatenate title and script title
end
end
return title;
end
--[[--------------------------< W R A P _ M S G >--------------------------------------------------------------
Applies additional message text to various parameter values. Supplied string is wrapped using a message_list
configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken
from citation_config.messages - the reason this function is similar to but separate from wrap_style().
]]
local function wrap_msg (key, str, lower)
if not utilities.is_set ( str ) then
return "";
end
if true == lower then
local msg;
msg = cfg.messages[key]:lower(); -- set the message to lower case before
return utilities.substitute ( msg, str ); -- including template text
else
return utilities.substitute ( cfg.messages[key], str );
end
end
--[[----------------< W I K I S O U R C E _ U R L _ M A K E >-------------------
Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate
label; nil else.
str is the value assigned to |chapter= (or aliases) or |title= or |title-link=
]]
local function wikisource_url_make (str)
local wl_type, D, L;
local ws_url, ws_label;
local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'});
wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink)
if 0 == wl_type then -- not a wikilink; might be from |title-link=
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]]
str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title
});
ws_label = str; -- label for the URL
end
elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]])
str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace
if utilities.is_set (str) then
ws_label = D; -- get ws article name from display portion of interwiki link
ws_url = table.concat ({ -- build a Wikisource URL
wikisource_prefix, -- prefix
str, -- article title without namespace from link portion of wikilink
});
end
end
if ws_url then
ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL
ws_url = ws_url:gsub ('%%23', '#'); -- undo percent-encoding of fragment marker
end
return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil
end
--[[----------------< F O R M A T _ P E R I O D I C A L >-----------------------
Format the three periodical parameters: |script-<periodical>=, |<periodical>=,
and |trans-<periodical>= into a single Periodical meta-parameter.
]]
local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical)
if not utilities.is_set (periodical) then
periodical = ''; -- to be safe for concatenation
else
periodical = utilities.wrap_style ('italic-title', periodical); -- style
end
periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (trans_periodical) then
trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical);
if utilities.is_set (periodical) then
periodical = periodical .. ' ' .. trans_periodical;
else -- here when trans-periodical without periodical or script-periodical
periodical = trans_periodical;
utilities.set_message ('err_trans_missing_title', {'periodical'});
end
end
return periodical;
end
--[[------------------< F O R M A T _ C H A P T E R _ T I T L E >---------------
Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=,
and |chapter-url= into a single chapter meta- parameter (chapter_url_source used
for error messages).
]]
local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access)
local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link
if ws_url then
ws_label = ws_label:gsub ('_', ' '); -- replace underscore separators with space characters
chapter = ws_label;
end
if not utilities.is_set (chapter) then
chapter = ''; -- to be safe for concatenation
else
if false == no_quotes then
chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks
chapter = utilities.wrap_style ('quoted-title', chapter);
end
end
chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
if utilities.is_set (chapter_url) then
chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate
elseif ws_url then
chapter = external_link (ws_url, chapter .. ' ', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this?
chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter});
end
if utilities.is_set (trans_chapter) then
trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter);
if utilities.is_set (chapter) then
chapter = chapter .. ' ' .. trans_chapter;
else -- here when trans_chapter without chapter or script-chapter
chapter = trans_chapter;
chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param>
utilities.set_message ('err_trans_missing_title', {chapter_source});
end
end
return chapter;
end
--[[----------------< H A S _ I N V I S I B L E _ C H A R S >-------------------
This function searches a parameter's value for non-printable or invisible characters.
The search stops at the first match.
This function will detect the visible replacement character when it is part of the Wikisource.
Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers
(gallery, math, pre, ref) and identifies them with a slightly different error message.
See also coins_cleanup().
Output of this function is an error message that identifies the character or the
Unicode group, or the stripmarker that was detected along with its position (or,
for multi-byte characters, the position of its first byte) in the parameter value.
]]
local function has_invisible_chars (param, v)
local position = ''; -- position of invisible char or starting position of stripmarker
local capture; -- used by stripmarker detection to hold name of the stripmarker
local stripmarker; -- boolean set true when a stripmarker is found
capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true
if capture == v then -- if same there are no Unicode characters
return;
end
for _, invisible_char in ipairs (cfg.invisible_chars) do
local char_name = invisible_char[1]; -- the character or group name
local pattern = invisible_char[2]; -- the pattern used to find it
position, _, capture = mw.ustring.find (v, pattern); -- see if the parameter value contains characters that match the pattern
if position and (cfg.invisible_defs.zwj == capture) then -- if we found a zero-width joiner character
if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts
position = nil; -- unset position
elseif cfg.emoji_t[mw.ustring.codepoint (v, position+1)] then -- is zwj followed by a character listed in emoji{}?
position = nil; -- unset position
end
end
if position then
if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition)
('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters
stripmarker = true; -- set a flag
elseif true == stripmarker and cfg.invisible_defs.del == capture then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker
position = nil; -- unset
else
local err_msg;
if capture and not (cfg.invisible_defs.del == capture or cfg.invisible_defs.zwj == capture) then
err_msg = capture .. ' ' .. char_name;
else
err_msg = char_name .. ' ' .. 'character';
end
utilities.set_message ('err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}); -- add error message
return; -- and done with this parameter
end
end
end
end
--[[-------------------< A R G U M E N T _ W R A P P E R >----------------------
Argument wrapper. This function provides support for argument mapping defined
in the configuration file so that multiple names can be transparently aliased to
single internal variable.
]]
local function argument_wrapper ( args )
local origin = {};
return setmetatable({
ORIGIN = function ( self, k )
local dummy = self[k]; -- force the variable to be loaded.
return origin[k];
end
},
{
__index = function ( tbl, k )
if origin[k] ~= nil then
return nil;
end
local args, list, v = args, cfg.aliases[k];
if type( list ) == 'table' then
v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' );
if origin[k] == nil then
origin[k] = ''; -- Empty string, not nil
end
elseif list ~= nil then
v, origin[k] = args[list], list;
else
-- maybe let through instead of raising an error?
-- v, origin[k] = args[k], k;
error( cfg.messages['unknown_argument_map'] .. ': ' .. k);
end
-- Empty strings, not nil;
if v == nil then
v = '';
origin[k] = '';
end
tbl = rawset( tbl, k, v );
return v;
end,
});
end
--[[--------------------------< N O W R A P _ D A T E >-------------------------
When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>.
When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span:
<span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY
DOES NOT yet support MMMM YYYY or any of the date ranges.
]]
local function nowrap_date (date)
local cap = '';
local cap2 = '';
if date:match("^%d%d%d%d%-%d%d%-%d%d$") then
date = utilities.substitute (cfg.presentation['nowrap1'], date);
elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then
cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$");
date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2});
end
return date;
end
--[[--------------------------< S E T _ T I T L E T Y P E >---------------------
This function sets default title types (equivalent to the citation including
|type=<default value>) for those templates that have defaults. Also handles the
special case where it is desirable to omit the title type from the rendered citation
(|type=none).
]]
local function set_titletype (cite_class, title_type)
if utilities.is_set (title_type) then
if 'none' == cfg.keywords_xlate[title_type] then
title_type = ''; -- if |type=none then type parameter not displayed
end
return title_type; -- if |type= has been set to any other value use that value
end
return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation
end
--[[--------------------------< S A F E _ J O I N >-----------------------------
Joins a sequence of strings together while checking for duplicate separation characters.
]]
local function safe_join( tbl, duplicate_char )
local f = {}; -- create a function table appropriate to type of 'duplicate character'
if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions
f.gsub = string.gsub
f.match = string.match
f.sub = string.sub
else -- for multi-byte characters use the ustring library functions
f.gsub = mw.ustring.gsub
f.match = mw.ustring.match
f.sub = mw.ustring.sub
end
local str = ''; -- the output string
local comp = ''; -- what does 'comp' mean?
local end_chr = '';
local trim;
for _, value in ipairs( tbl ) do
if value == nil then value = ''; end
if str == '' then -- if output string is empty
str = value; -- assign value to it (first time through the loop)
elseif value ~= '' then
if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup.
comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string)
else
comp = value;
end
-- typically duplicate_char is sepc
if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character?
-- Because individual string segments often (always?) begin with terminal punct for the
-- preceding segment: 'First element' .. 'sepc next element' .. etc.?
trim = false;
end_chr = f.sub(str, -1, -1); -- get the last character of the output string
-- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff?
if end_chr == duplicate_char then -- if same as separator
str = f.sub(str, 1, -2); -- remove it
elseif end_chr == "'" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc''
str = f.sub(str, 1, -4) .. "''"; -- remove them and add back ''
elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]''
trim = true; -- why? why do this and next differently from previous?
elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]''
trim = true; -- same question
end
elseif end_chr == "]" then -- if it might be wiki-markup
if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink
trim = true;
elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link
trim = true;
elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link
trim = true;
elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title.
trim = true;
end
elseif end_chr == " " then -- if last char of output string is a space
if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space>
str = f.sub(str, 1, -3); -- remove them both
end
end
if trim then
if value ~= comp then -- value does not equal comp when value contains HTML markup
local dup2 = duplicate_char;
if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it
value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup
else
value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character
end
end
end
str = str .. value; -- add it to the output string
end
end
return str;
end
--[[--------------------------< I S _ S U F F I X >-----------------------------
returns true if suffix is properly formed Jr, Sr, or ordinal in the range 1–9.
Puncutation not allowed.
]]
local function is_suffix (suffix)
if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then
return true;
end
return false;
end
--[[--------------------< I S _ G O O D _ V A N C _ N A M E >-------------------
For Vancouver style, author/editor names are supposed to be rendered in Latin
(read ASCII) characters. When a name uses characters that contain diacritical
marks, those characters are to be converted to the corresponding Latin
character. When a name is written using a non-Latin alphabet or logogram, that
name is to be transliterated into Latin characters. The module doesn't do this
so editors may/must.
This test allows |first= and |last= names to contain any of the letters defined
in the four Unicode Latin character sets
[http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A
[http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF
[http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F
[http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F
|lastn= also allowed to contain hyphens, spaces, and apostrophes.
(http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
|firstn= also allowed to contain hyphens, spaces, apostrophes, and periods
This original test:
if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$")
or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then
was written outside of the code editor and pasted here because the code editor
gets confused between character insertion point and cursor position. The test has
been rewritten to use decimal character escape sequence for the individual bytes
of the Unicode characters so that it is not necessary to use an external editor
to maintain this code.
\195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls)
\195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls)
\195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B)
\199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B)
]]
local function is_good_vanc_name (last, first, suffix, position)
if not suffix then
if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix
first = first:match ('(.-)[,%s]+'); -- get name/initials
suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix
end
end
if utilities.is_set (suffix) then
if not is_suffix (suffix) then
add_vanc_error (cfg.err_msg_supl.suffix, position);
return false; -- not a name with an appropriate suffix
end
end
if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or
nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then
add_vanc_error (cfg.err_msg_supl['non-Latin char'], position);
return false; -- not a string of Latin characters; Vancouver requires Romanization
end;
return true;
end
--[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------
Attempts to convert names to initials in support of |name-list-style=vanc.
Names in |firstn= may be separated by spaces or hyphens, or for initials, a period.
See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/.
Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered
as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/.
This code only accepts and understands generational suffix in the Vancouver format
because Roman numerals look like, and can be mistaken for, initials.
This function uses ustring functions because firstname initials may be any of the
Unicode Latin characters accepted by is_good_vanc_name ().
]]
local function reduce_to_initials(first, position)
local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$");
if not name then -- if not initials and a suffix
name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials?
end
if name then -- if first is initials with or without suffix
if 3 > mw.ustring.len (name) then -- if one or two initials
if suffix then -- if there is a suffix
if is_suffix (suffix) then -- is it legitimate?
return first; -- one or two initials and a valid suffix so nothing to do
else
add_vanc_error (cfg.err_msg_supl.suffix, position); -- one or two initials with invalid suffix so error message
return first; -- and return first unmolested
end
else
return first; -- one or two initials without suffix; nothing to do
end
end
end -- if here then name has 3 or more uppercase letters so treat them as a word
local initials, names = {}, {}; -- tables to hold name parts and initials
local i = 1; -- counter for number of initials
names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix
while names[i] do -- loop through the table
if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot)
names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present
if is_suffix (names[i]) then -- if a legitimate suffix
table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table
break; -- and done because suffix must fall at the end of a name
end -- no error message if not a suffix; possibly because of Romanization
end
if 3 > i then
table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table
end
i = i + 1; -- bump the counter
end
return table.concat(initials) -- Vancouver format does not include spaces.
end
--[[--------------------------< I N T E R W I K I _ P R E F I X E N _ G E T >----------------------------------
extract interwiki prefixen from <value>. Returns two one or two values:
false – no prefixen
nil – prefix exists but not recognized
project prefix, language prefix – when value has either of:
:<project>:<language>:<article>
:<language>:<project>:<article>
project prefix, nil – when <value> has only a known single-letter prefix
nil, language prefix – when <value> has only a known language prefix
accepts single-letter project prefixen: 'd' (wikidata), 's' (wikisource), and 'w' (wikipedia) prefixes; at this
writing, the other single-letter prefixen (b (wikibook), c (commons), m (meta), n (wikinews), q (wikiquote), and
v (wikiversity)) are not supported.
]]
local function interwiki_prefixen_get (value, is_link)
if not value:find (':%l+:') then -- if no prefix
return false; -- abandon; boolean here to distinguish from nil fail returns later
end
local prefix_patterns_linked_t = { -- sequence of valid interwiki and inter project prefixen
'^%[%[:([dsw]):(%l%l+):', -- wikilinked; project and language prefixes
'^%[%[:(%l%l+):([dsw]):', -- wikilinked; language and project prefixes
'^%[%[:([dsw]):', -- wikilinked; project prefix
'^%[%[:(%l%l+):', -- wikilinked; language prefix
}
local prefix_patterns_unlinked_t = { -- sequence of valid interwiki and inter project prefixen
'^:([dsw]):(%l%l+):', -- project and language prefixes
'^:(%l%l+):([dsw]):', -- language and project prefixes
'^:([dsw]):', -- project prefix
'^:(%l%l+):', -- language prefix
}
local cap1, cap2;
for _, pattern in ipairs ((is_link and prefix_patterns_linked_t) or prefix_patterns_unlinked_t) do
cap1, cap2 = value:match (pattern);
if cap1 then
break; -- found a match so stop looking
end
end
if cap1 and cap2 then -- when both then :project:language: or :language:project: (both forms allowed)
if 1 == #cap1 then -- length == 1 then :project:language:
if cfg.inter_wiki_map[cap2] then -- is language prefix in the interwiki map?
return cap1, cap2; -- return interwiki project and interwiki language
end
else -- here when :language:project:
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return cap2, cap1; -- return interwiki project and interwiki language
end
end
return nil; -- unknown interwiki language
elseif not (cap1 or cap2) then -- both are nil?
return nil; -- we got something that looks like a project prefix but isn't; return fail
elseif 1 == #cap1 then -- here when one capture
return cap1, nil; -- length is 1 so return project, nil language
else -- here when one capture and its length it more than 1
if cfg.inter_wiki_map[cap1] then -- is language prefix in the interwiki map?
return nil, cap1; -- return nil project, language
end
end
end
--[[--------------------------< L I S T _ P E O P L E >--------------------------
Formats a list of people (authors, contributors, editors, interviewers, translators)
names in the list will be linked when
|<name>-link= has a value
|<name>-mask- does NOT have a value; masked names are presumed to have been
rendered previously so should have been linked there
when |<name>-mask=0, the associated name is not rendered
]]
local function list_people (control, people, etal)
local sep;
local namesep;
local format = control.format;
local maximum = control.maximum;
local name_list = {};
if 'vanc' == format then -- Vancouver-like name styling?
sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma
namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space
else
sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon
namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space>
end
if sep:sub (-1, -1) ~= " " then sep = sep .. " " end
if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names
for i, person in ipairs (people) do
if utilities.is_set (person.last) then
local mask = person.mask;
local one;
local sep_one = sep;
if utilities.is_set (maximum) and i > maximum then
etal = true;
break;
end
if mask then
local n = tonumber (mask); -- convert to a number if it can be converted; nil else
if n then
one = 0 ~= n and string.rep("—", n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name
person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil
else
one = mask; -- replace name with mask text (must include name-list separator)
sep_one = " "; -- modify name-list separator
end
else
one = person.last; -- get surname
local first = person.first -- get given name
if utilities.is_set (first) then
if ("vanc" == format) then -- if Vancouver format
one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/)
if not person.corporate and is_good_vanc_name (one, first, nil, i) then -- and name is all Latin characters; corporate authors not tested
first = reduce_to_initials (first, i); -- attempt to convert first name(s) to initials
end
end
one = one .. namesep .. first;
end
end
if utilities.is_set (person.link) then
one = utilities.make_wikilink (person.link, one); -- link author/editor
end
if one then -- if <one> has a value (name, mdash replacement, or mask text replacement)
local proj, tag = interwiki_prefixen_get (one, true); -- get the interwiki prefixen if present
if 'w' == proj and ('Wikipedia' == mw.site.namespaces.Project['name']) then
proj = nil; -- for stuff like :w:de:<article>, :w is unnecessary TODO: maint cat?
end
if proj then
proj = ({['d'] = 'Wikidata', ['s'] = 'Wikisource', ['w'] = 'Wikipedia'})[proj]; -- :w (wikipedia) for linking from a non-wikipedia project
if proj then
one = one .. utilities.wrap_style ('interproj', proj); -- add resized leading space, brackets, static text, language name
tag = nil; -- unset; don't do both project and language
end
end
if tag == cfg.this_wiki_code then
tag = nil; -- stuff like :en:<article> at en.wiki is pointless TODO: maint cat?
end
if tag then
local lang = cfg.lang_tag_remap[tag] or cfg.mw_languages_by_tag_t[tag];
if lang then -- error messaging done in extract_names() where we know parameter names
one = one .. utilities.wrap_style ('interwiki', lang); -- add resized leading space, brackets, static text, language name
end
end
table.insert (name_list, one); -- add it to the list of names
table.insert (name_list, sep_one); -- add the proper name-list separator
end
end
end
local count = #name_list / 2; -- (number of names + number of separators) divided by 2
if 0 < count then
if 1 < count and not etal then
if 'amp' == format then
name_list[#name_list-2] = " & "; -- replace last separator with ampersand text
elseif 'and' == format then
if 2 == count then
name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text
else
name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text
end
end
end
name_list[#name_list] = nil; -- erase the last separator
end
local result = table.concat (name_list); -- construct list
if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list
result = result .. sep .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al.
end
return result, count; -- return name-list string and count of number of names (count used for editor names only)
end
--[[--------------------< M A K E _ C I T E R E F _ I D >-----------------------
Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise
returns an empty string.
namelist is one of the contributor-, author-, or editor-name lists chosen in that
order. year is Year or anchor_year.
]]
local function make_citeref_id (namelist, year)
local names={}; -- a table for the one to four names and year
for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names
names[i] = v.last
if i == 4 then break end -- if four then done
end
table.insert (names, year); -- add the year at the end
local id = table.concat(names); -- concatenate names and year for CITEREF id
if utilities.is_set (id) then -- if concatenation is not an empty string
return "CITEREF" .. id; -- add the CITEREF portion
else
return ''; -- return an empty string; no reason to include CITEREF id in this citation
end
end
--[[--------------------------< C I T E _ C L A S S _A T T R I B U T E _M A K E >------------------------------
construct <cite> tag class attribute for this citation.
<cite_class> – config.CitationClass from calling template
<mode> – value from |mode= parameter
]]
local function cite_class_attribute_make (cite_class, mode)
local class_t = {};
table.insert (class_t, 'citation'); -- required for blue highlight
if 'citation' ~= cite_class then
table.insert (class_t, cite_class); -- identify this template for user css
table.insert (class_t, utilities.is_set (mode) and mode or 'cs1'); -- identify the citation style for user css or javascript
else
table.insert (class_t, utilities.is_set (mode) and mode or 'cs2'); -- identify the citation style for user css or javascript
end
for _, prop_key in ipairs (z.prop_keys_t) do
table.insert (class_t, prop_key); -- identify various properties for user css or javascript
end
return table.concat (class_t, ' '); -- make a big string and done
end
--[[---------------------< N A M E _ H A S _ E T A L >--------------------------
Evaluates the content of name parameters (author, editor, etc.) for variations on
the theme of et al. If found, the et al. is removed, a flag is set to true and
the function returns the modified name and the flag.
This function never sets the flag to false but returns its previous state because
it may have been set by previous passes through this function or by the associated
|display-<names>=etal parameter
]]
local function name_has_etal (name, etal, nocat, param)
if utilities.is_set (name) then -- name can be nil in which case just return
local patterns = cfg.et_al_patterns; -- get patterns from configuration
for _, pattern in ipairs (patterns) do -- loop through all of the patterns
if name:match (pattern) then -- if this 'et al' pattern is found in name
name = name:gsub (pattern, ''); -- remove the offending text
etal = true; -- set flag (may have been set previously here or by |display-<names>=etal)
if not nocat then -- no categorization for |vauthors=
utilities.set_message ('err_etal', {param}); -- and set an error if not added
end
end
end
end
return name, etal;
end
--[[---------------------< N A M E _ I S _ N U M E R I C >----------------------
Add maint cat when name parameter value does not contain letters. Does not catch
mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the
current version of this test but |first=(1888) is caught.
returns nothing
]]
local function name_is_numeric (name, list_name)
if utilities.is_set (name) then
if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters
utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template
end
end
end
--[[-----------------< N A M E _ H A S _ M U L T _ N A M E S >------------------
Evaluates the content of last/surname (authors etc.) parameters for multiple names.
Multiple names are indicated if there is more than one comma or any "unescaped"
semicolons. Escaped semicolons are ones used as part of selected HTML entities.
If the condition is met, the function adds the multiple name maintenance category.
Same test for first except that commas should not appear in given names (MOS:JR says
that the generational suffix does not take a separator character). Titles, degrees,
postnominals, affiliations, all normally comma separated don't belong in a citation.
<name> – name parameter value
<list_name> – AuthorList, EditorList, etc
<limit> – number of allowed commas; 1 (default) for surnames; 0 for given names
returns nothing
]]
local function name_has_mult_names (name, list_name, limit)
local _, commas, semicolons, nbsps;
limit = limit and limit or 1;
if utilities.is_set (name) then
_, commas = name:gsub (',', ''); -- count the number of commas
_, semicolons = name:gsub (';', ''); -- count the number of semicolons
-- nbsps probably should be its own separate count rather than merged in
-- some way with semicolons because Lua patterns do not support the
-- grouping operator that regex does, which means there is no way to add
-- more entities to escape except by adding more counts with the new
-- entities
_, nbsps = name:gsub (' ',''); -- count nbsps
-- There is exactly 1 semicolon per entity, so subtract nbsps
-- from semicolons to 'escape' them. If additional entities are added,
-- they also can be subtracted.
if limit < commas or 0 < (semicolons - nbsps) then
utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message
end
end
end
--[=[-------------------------< I S _ G E N E R I C >----------------------------------------------------------
Compares values assigned to various parameters according to the string provided as <item> in the function call.
<item> can have on of two values:
'generic_names' – for name-holding parameters: |last=, |first=, |editor-last=, etc
'generic_titles' – for |title=
There are two types of generic tests. The 'accept' tests look for a pattern that should not be rejected by the
'reject' test. For example,
|author=[[John Smith (author)|Smith, John]]
would be rejected by the 'author' reject test. But piped wikilinks with 'author' disambiguation should not be
rejected so the 'accept' test prevents that from happening. Accept tests are always performed before reject
tests.
Each of the 'accept' and 'reject' sequence tables hold tables for en.wiki (['en']) and local.wiki (['local'])
that each can hold a test sequence table The sequence table holds, at index [1], a test pattern, and, at index
[2], a boolean control value. The control value tells string.find() or mw.ustring.find() to do plain-text search (true)
or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so
that we don't run out of processing time on very large articles.
Returns
true when a reject test finds the pattern or string
false when an accept test finds the pattern or string
nil else
]=]
local function is_generic (item, value, wiki)
local test_val;
local str_lower = { -- use string.lower() for en.wiki (['en']) and use mw.ustring.lower() or local.wiki (['local'])
['en'] = string.lower,
['local'] = mw.ustring.lower,
}
local str_find = { -- use string.find() for en.wiki (['en']) and use mw.ustring.find() or local.wiki (['local'])
['en'] = string.find,
['local'] = mw.ustring.find,
}
local function test (val, test_t, wiki) -- local function to do the testing; <wiki> selects lower() and find() functions
val = test_t[2] and str_lower[wiki](value) or val; -- when <test_t[2]> set to 'true', plaintext search using lowercase value
return str_find[wiki] (val, test_t[1], 1, test_t[2]); -- return nil when not found or matched
end
local test_types_t = {'accept', 'reject'}; -- test accept patterns first, then reject patterns
local wikis_t = {'en', 'local'}; -- do tests for each of these keys; en.wiki first, local.wiki second
for _, test_type in ipairs (test_types_t) do -- for each test type
for _, generic_value in pairs (cfg.special_case_translation[item][test_type]) do -- spin through the list of generic value fragments to accept or reject
for _, wiki in ipairs (wikis_t) do
if generic_value[wiki] then
if test (value, generic_value[wiki], wiki) then -- go do the test
return ('reject' == test_type); -- param value rejected, return true; false else
end
end
end
end
end
end
--[[--------------------------< N A M E _ I S _ G E N E R I C >------------------------------------------------
calls is_generic() to determine if <name> is a 'generic name' listed in cfg.generic_names; <name_alias> is the
parameter name used in error messaging
]]
local function name_is_generic (name, name_alias)
if not added_generic_name_errs and is_generic ('generic_names', name) then
utilities.set_message ('err_generic_name', name_alias); -- set an error message
added_generic_name_errs = true;
end
end
--[[--------------------------< N A M E _ C H E C K S >--------------------------------------------------------
This function calls various name checking functions used to validate the content of the various name-holding parameters.
]]
local function name_checks (last, first, list_name, last_alias, first_alias)
local accept_name;
if utilities.is_set (last) then
last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last>
if not accept_name then -- <last> not wrapped in accept-as-written markup
name_has_mult_names (last, list_name); -- check for multiple names in the parameter
name_is_numeric (last, list_name); -- check for names that are composed of digits and punctuation
name_is_generic (last, last_alias); -- check for names found in the generic names list
end
end
if utilities.is_set (first) then
first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first>
if not accept_name then -- <first> not wrapped in accept-as-written markup
name_has_mult_names (first, list_name, 0); -- check for multiple names in the parameter; 0 is number of allowed commas in a given name
name_is_numeric (first, list_name); -- check for names that are composed of digits and punctuation
name_is_generic (first, first_alias); -- check for names found in the generic names list
end
local wl_type, D = utilities.is_wikilink (first);
if 0 ~= wl_type then
first = D;
utilities.set_message ('err_bad_paramlink', first_alias);
end
end
return last, first; -- done
end
--[[----------------------< E X T R A C T _ N A M E S >-------------------------
Gets name list from the input arguments
Searches through args in sequential order to find |lastn= and |firstn= parameters
(or their aliases), and their matching link and mask parameters. Stops searching
when both |lastn= and |firstn= are not found in args after two sequential attempts:
found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the
search is done.
This function emits an error message when there is a |firstn= without a matching
|lastn=. When there are 'holes' in the list of last names, |last1= and |last3=
are present but |last2= is missing, an error message is emitted. |lastn= is not
required to have a matching |firstn=.
When an author or editor parameter contains some form of 'et al.', the 'et al.'
is stripped from the parameter and a flag (etal) returned that will cause list_people()
to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps
'et al.' out of the template's metadata. When this occurs, an error is emitted.
]]
local function extract_names(args, list_name)
local names = {}; -- table of names
local last; -- individual name components
local first;
local link;
local mask;
local i = 1; -- loop counter/indexer
local n = 1; -- output table indexer
local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors)
local etal = false; -- return value set to true when we find some form of et al. in an author parameter
local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging
while true do
last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1
first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i );
link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i );
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
if last then -- error check |lastn= alias for unknown interwiki link prefix; done here because this is where we have the parameter name
local project, language = interwiki_prefixen_get (last, true); -- true because we expect interwiki links in |lastn= to be wikilinked
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', last_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
last = utilities.remove_wiki_link (last); -- remove wikilink markup; show display value only
end
end
if link then -- error check |linkn= alias for unknown interwiki link prefix
local project, language = interwiki_prefixen_get (link, false); -- false because wiki links in |author-linkn= is an error
if nil == project and nil == language then -- when both are nil
utilities.set_message ('err_bad_paramlink', link_alias); -- not known, emit an error message -- TODO: err_bad_interwiki?
link = nil; -- unset so we don't link
link_alias = nil;
end
end
last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al.
first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al.
last, first = name_checks (last, first, list_name, last_alias, first_alias); -- multiple names, extraneous annotation, etc. checks
if first and not last then -- if there is a firstn without a matching lastn
local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias
utilities.set_message ('err_first_missing_last', {
first_alias, -- param name of alias missing its mate
first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form
}); -- add this error message
elseif not first and not last then -- if both firstn and lastn aren't found, are we done?
count = count + 1; -- number of times we haven't found last and first
if 2 <= count then -- two missing names and we give up
break; -- normal exit or there is a two-name hole in the list; can't tell which
end
else -- we have last with or without a first
local result;
link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup
if first then
link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup
end
names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only)
n = n + 1; -- point to next location in the names table
if 1 == count then -- if the previous name was missing
utilities.set_message ('err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}); -- add this error message
end
count = 0; -- reset the counter, we're looking for two consecutive missing names
end
i = i + 1; -- point to next args location
end
return names, etal; -- all done, return our list of names and the etal flag
end
--[[--------------------------< N A M E _ T A G _ G E T >------------------------------------------------------
attempt to decode |language=<lang_param> and return language name and matching tag; nil else.
This function looks for:
<lang_param> as a tag in cfg.lang_tag_remap{}
<lang_param> as a name in cfg.lang_name_remap{}
<lang_param> as a name in cfg.mw_languages_by_name_t
<lang_param> as a tag in cfg.mw_languages_by_tag_t
when those fail, presume that <lang_param> is an IETF-like tag that MediaWiki does not recognize. Strip all
script, region, variant, whatever subtags from <lang_param> to leave just a two or three character language tag
and look for the new <lang_param> in cfg.mw_languages_by_tag_t{}
on success, returns name (in properly capitalized form) and matching tag (in lowercase); on failure returns nil
]]
local function name_tag_get (lang_param)
local lang_param_lc = mw.ustring.lower (lang_param); -- use lowercase as an index into the various tables
local name;
local tag;
name = cfg.lang_tag_remap[lang_param_lc]; -- assume <lang_param_lc> is a tag; attempt to get remapped language name
if name then -- when <name>, <lang_param> is a tag for a remapped language name
return name, lang_param_lc; -- so return <name> from remap and <lang_param_lc>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- still assuming that <lang_param_lc> is a tag; strip script, region, variant subtags
name = cfg.lang_tag_remap[tag]; -- attempt to get remapped language name with language subtag only
if name then -- when <name>, <tag> is a tag for a remapped language name
return name, tag; -- so return <name> from remap and <tag>
end
if cfg.lang_name_remap[lang_param_lc] then -- not a tag, assume <lang_param_lc> is a name; attempt to get remapped language tag
return cfg.lang_name_remap[lang_param_lc][1], cfg.lang_name_remap[lang_param_lc][2]; -- for this <lang_param_lc>, return a (possibly) new name and appropriate tag
end
tag = cfg.mw_languages_by_name_t[lang_param_lc]; -- assume that <lang_param_lc> is a language name; attempt to get its matching tag
if tag then
return cfg.mw_languages_by_tag_t[tag], tag; -- <lang_param_lc> is a name so return the name from the table and <tag>
end
name = cfg.mw_languages_by_tag_t[lang_param_lc]; -- assume that <lang_param_lc> is a tag; attempt to get its matching language name
if name then
return name, lang_param_lc; -- <lang_param_lc> is a tag so return it and <name>
end
tag = lang_param_lc:match ('^(%a%a%a?)%-.*'); -- is <lang_param_lc> an IETF-like tag that MediaWiki doesn't recognize? <tag> gets the language subtag; nil else
if tag then
name = cfg.mw_languages_by_tag_t[tag]; -- attempt to get a language name using the shortened <tag>
if name then
return name, tag; -- <lang_param_lc> is an unrecognized IETF-like tag so return <name> and language subtag
end
end
end
--[[-------------------< L A N G U A G E _ P A R A M E T E R >------------------
Gets language name from a provided two- or three-character ISO 639 code. If a code
is recognized by MediaWiki, use the returned name; if not, then use the value that
was provided with the language parameter.
When |language= contains a recognized language (either code or name), the page is
assigned to the category for that code: Category:Norwegian-language sources (no).
For valid three-character code languages, the page is assigned to the single category
for '639-2' codes: Category:CS1 ISO 639-2 language sources.
Languages that are the same as the local wiki are not categorized. MediaWiki does
not recognize three-character equivalents of two-character codes: code 'ar' is
recognized but code 'ara' is not.
This function supports multiple languages in the form |language=nb, French, th
where the language names or codes are separated from each other by commas with
optional space characters.
]]
local function language_parameter (lang)
local tag; -- some form of IETF-like language tag; language subtag with optional region, sript, vatiant, etc subtags
local lang_subtag; -- ve populates |language= with mostly unecessary region subtags the MediaWiki does not recognize; this is the base language subtag
local name; -- the language name
local language_list = {}; -- table of language names to be rendered
local names_t = {}; -- table made from the value assigned to |language=
local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name
names_t = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list
for _, lang in ipairs (names_t) do -- reuse lang here because we don't yet know if lang is a language name or a language tag
name, tag = name_tag_get (lang); -- attempt to get name/tag pair for <lang>; <name> has proper capitalization; <tag> is lowercase
if utilities.is_set (tag) then
lang_subtag = tag:gsub ('^(%a%a%a?)%-.*', '%1'); -- for categorization, strip any IETF-like tags from language tag
if cfg.this_wiki_code ~= lang_subtag then -- when the language is not the same as this wiki's language
if 2 == lang_subtag:len() then -- and is a two-character tag
utilities.add_prop_cat ('foreign-lang-source', {name, tag}, lang_subtag); -- categorize it; tag appended to allow for multiple language categorization
else -- or is a recognized language (but has a three-character tag)
utilities.add_prop_cat ('foreign-lang-source-2', {lang_subtag}, lang_subtag); -- categorize it differently TODO: support multiple three-character tag categories per cs1|2 template?
end
elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled
utilities.add_prop_cat ('local-lang-source', {name, lang_subtag}); -- categorize it
end
else
name = lang; -- return whatever <lang> has so that we show something
utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added
end
table.insert (language_list, name);
name = ''; -- so we can reuse it
end
name = utilities.make_sep_list (#language_list, language_list);
if (1 == #language_list) and (lang_subtag == cfg.this_wiki_code) then -- when only one language, find lang name in this wiki lang name; for |language=en-us, 'English' in 'American English'
return ''; -- if one language and that language is this wiki's return an empty string (no annotation)
end
return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)'
--[[ TODO: should only return blank or name rather than full list
so we can clean up the bunched parenthetical elements Language, Type, Format
]]
end
--[[-----------------------< S E T _ C S _ S T Y L E >--------------------------
Gets the default CS style configuration for the given mode.
Returns default separator and either postscript as passed in or the default.
In CS1, the default postscript and separator are '.'.
In CS2, the default postscript is the empty string and the default separator is ','.
]]
local function set_cs_style (postscript, mode)
if utilities.is_set(postscript) then
-- emit a maintenance message if user postscript is the default cs1 postscript
-- we catch the opposite case for cs2 in set_style
if mode == 'cs1' and postscript == cfg.presentation['ps_' .. mode] then
utilities.set_message ('maint_postscript');
end
else
postscript = cfg.presentation['ps_' .. mode];
end
return cfg.presentation['sep_' .. mode], postscript;
end
--[[--------------------------< S E T _ S T Y L E >-----------------------------
Sets the separator and postscript styles. Checks the |mode= first and the
#invoke CitationClass second. Removes the postscript if postscript == none.
]]
local function set_style (mode, postscript, cite_class)
local sep;
if 'cs2' == mode then
sep, postscript = set_cs_style (postscript, 'cs2');
elseif 'cs1' == mode then
sep, postscript = set_cs_style (postscript, 'cs1');
elseif 'citation' == cite_class then
sep, postscript = set_cs_style (postscript, 'cs2');
else
sep, postscript = set_cs_style (postscript, 'cs1');
end
if cfg.keywords_xlate[postscript:lower()] == 'none' then
-- emit a maintenance message if user postscript is the default cs2 postscript
-- we catch the opposite case for cs1 in set_cs_style
if 'cs2' == mode or 'citation' == cite_class then
utilities.set_message ('maint_postscript');
end
postscript = '';
end
return sep, postscript
end
--[=[-------------------------< I S _ P D F >-----------------------------------
Determines if a URL has the file extension that is one of the PDF file extensions
used by [[MediaWiki:Common.css]] when applying the PDF icon to external links.
returns true if file extension is one of the recognized extensions, else false
]=]
local function is_pdf (url)
return url:match ('%.pdf$') or url:match ('%.PDF$') or
url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or
url:match ('%.PDF#') or url:match ('%.pdf#');
end
--[[--------------------------< S T Y L E _ F O R M A T >-----------------------
Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message
if the format parameter does not have a matching URL parameter. If the format parameter
is not set and the URL contains a file extension that is recognized as a PDF document
by MediaWiki's commons.css, this code will set the format parameter to (PDF) with
the appropriate styling.
]]
local function style_format (format, url, fmt_param, url_param)
if utilities.is_set (format) then
format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize
if not utilities.is_set (url) then
utilities.set_message ('err_format_missing_url', {fmt_param, url_param}); -- add an error message
end
elseif is_pdf (url) then -- format is not set so if URL is a PDF file then
format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF
else
format = ''; -- empty string for concatenation
end
return format;
end
--[[---------------------< G E T _ D I S P L A Y _ N A M E S >------------------
Returns a number that defines the number of names displayed for author and editor
name lists and a Boolean flag to indicate when et al. should be appended to the name list.
When the value assigned to |display-xxxxors= is a number greater than or equal to zero,
return the number and the previous state of the 'etal' flag (false by default
but may have been set to true if the name list contains some variant of the text 'et al.').
When the value assigned to |display-xxxxors= is the keyword 'etal', return a number
that is one greater than the number of authors in the list and set the 'etal' flag true.
This will cause the list_people() to display all of the names in the name list followed by 'et al.'
In all other cases, returns nil and the previous state of the 'etal' flag.
inputs:
max: A['DisplayAuthors'] or A['DisplayEditors'], etc; a number or some flavor of etal
count: #a or #e
list_name: 'authors' or 'editors'
etal: author_etal or editor_etal
This function sets an error message when |display-xxxxors= value greater than or equal to number of names but
not when <max> comes from {{cs1 config}} global settings. When using global settings, <param> is set to the
keyword 'cs1 config' which is used to supress the normal error. Error is suppressed because it is to be expected
that some citations in an article will have the same or fewer names that the limit specified in {{cs1 config}}.
]]
local function get_display_names (max, count, list_name, etal, param)
if utilities.is_set (max) then
if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings
max = count + 1; -- number of authors + 1 so display all author name plus et al.
etal = true; -- overrides value set by extract_names()
elseif max:match ('^%d+$') then -- if is a string of numbers
max = tonumber (max); -- make it a number
if (max >= count) and ('cs1 config' ~= param) then -- error when local |display-xxxxors= value greater than or equal to number of names; not an error when using global setting
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil;
end
else -- not a valid keyword or number
utilities.set_message ('err_disp_name', {param, max}); -- add error message
max = nil; -- unset; as if |display-xxxxors= had not been set
end
end
return max, etal;
end
--[[----------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >---------------
Adds error if |page=, |pages=, |quote-page=, |quote-pages= has what appears to be
some form of p. or pp. abbreviation in the first characters of the parameter content.
check page for extraneous p, p., pp, pp., pg, pg. at start of parameter value:
good pattern: '^P[^%.P%l]' matches when page begins PX or P# but not Px
where x and X are letters and # is a digit
bad pattern: '^[Pp][PpGg]' matches when page begins pp, pP, Pp, PP, pg, pG, Pg, PG
]]
local function extra_text_in_page_check (val, name)
if not val:match (cfg.vol_iss_pg_patterns.good_ppattern) then
for _, pattern in ipairs (cfg.vol_iss_pg_patterns.bad_ppatterns) do -- spin through the selected sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message ('err_extra_text_pages', name); -- add error message
return; -- and done
end
end
end
end
--[[--------------------------< E X T R A _ T E X T _ I N _ V O L _ I S S _ C H E C K >------------------------
Adds error if |volume= or |issue= has what appears to be some form of redundant 'type' indicator.
For |volume=:
'V.', or 'Vol.' (with or without the dot) abbreviations or 'Volume' in the first characters of the parameter
content (all case insensitive). 'V' and 'v' (without the dot) are presumed to be roman numerals so
are allowed.
For |issue=:
'No.', 'I.', 'Iss.' (with or without the dot) abbreviations, or 'Issue' in the first characters of the
parameter content (all case insensitive).
Single character values ('v', 'i', 'n') allowed when not followed by separator character ('.', ':', '=', or
whitespace character) – param values are trimmed of whitespace by MediaWiki before delivered to the module.
<val> is |volume= or |issue= parameter value
<name> is |volume= or |issue= parameter name for error message
<selector> is 'v' for |volume=, 'i' for |issue=
sets error message on failure; returns nothing
]]
local function extra_text_in_vol_iss_check (val, name, selector)
if not utilities.is_set (val) then
return;
end
local patterns = 'v' == selector and cfg.vol_iss_pg_patterns.vpatterns or cfg.vol_iss_pg_patterns.ipatterns;
local handler = 'v' == selector and 'err_extra_text_volume' or 'err_extra_text_issue';
val = val:lower(); -- force parameter value to lower case
for _, pattern in ipairs (patterns) do -- spin through the selected sequence table of patterns
if val:match (pattern) then -- when a match, error so
utilities.set_message (handler, name); -- add error message
return; -- and done
end
end
end
--[=[-------------------------< G E T _ V _ N A M E _ T A B L E >----------------------------------------------
split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled
parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the
rendered citation and in the metadata. Individual author names may be wikilinked
|vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.))
]=]
local function get_v_name_table (vparam, output_table, output_link_table)
local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas
local wl_type, label, link; -- wl_type not used here; just a placeholder
local i = 1;
while name_table[i] do
if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses
local name = name_table[i];
i = i + 1; -- bump indexer to next segment
while name_table[i] do
name = name .. ', ' .. name_table[i]; -- concatenate with previous segments
if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses
break; -- and done reassembling so
end
i = i + 1; -- bump indexer
end
table.insert (output_table, name); -- and add corporate name to the output table
table.insert (output_link_table, ''); -- no wikilink
else
wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]]
table.insert (output_table, label); -- add this name
if 1 == wl_type then
table.insert (output_link_table, label); -- simple wikilink [[D]]
else
table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string
end
end
i = i + 1;
end
return output_table;
end
--[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >--------------------------------
This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and
|xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does.
Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names
may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance
tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests.
Supports generational suffixes Jr, 2nd, 3rd, 4th–6th.
This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials.
]]
local function parse_vauthors_veditors (args, vparam, list_name)
local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn=
local v_name_table = {};
local v_link_table = {}; -- when name is wikilinked, targets go in this table
local etal = false; -- return value set to true when we find some form of et al. vauthors parameter
local last, first, link, mask, suffix;
local corporate = false;
vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period)
v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas
for i, v_name in ipairs(v_name_table) do
first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor
local accept_name;
v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name>
if accept_name then
last = v_name;
corporate = true; -- flag used in list_people()
elseif string.find(v_name, "%s") then
if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters;
add_vanc_error (cfg.err_msg_supl.punctuation, i);
end
local lastfirstTable = {}
lastfirstTable = mw.text.split(v_name, "%s+")
first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix
if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters
suffix = first; -- not initials so assume that whatever we got is a generational suffix
first = table.remove(lastfirstTable); -- get what should be the initials from the table
end
last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix
if not utilities.is_set (last) then
first = ''; -- unset
last = v_name; -- last empty because something wrong with first
add_vanc_error (cfg.err_msg_supl.name, i);
end
if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then
add_vanc_error (cfg.err_msg_supl['missing comma'], i); -- matches last II last; the case when a comma is missing
end
if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test
add_vanc_error (cfg.err_msg_supl.initials, i); -- matches a space between two initials
end
else
last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this?
end
if utilities.is_set (first) then
if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else
add_vanc_error (cfg.err_msg_supl.initials, i); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials
end
is_good_vanc_name (last, first, suffix, i); -- check first and last before restoring the suffix which may have a non-Latin digit
if utilities.is_set (suffix) then
first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials
suffix = ''; -- unset so we don't add this suffix to all subsequent names
end
else
if not corporate then
is_good_vanc_name (last, '', nil, i);
end
end
link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i];
mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i );
names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list
end
return names, etal; -- all done, return our list of names
end
--[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------
Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or
select one of |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list.
Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest;
|editorn= (and aliases) highest and |veditors= lowest (support for |editors= withdrawn)
When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second
test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better
way to do this, I just haven't discovered what that way is.
Emits an error message when more than one xxxxor name source is provided.
In this function, vxxxxors = vauthors or veditors; xxxxors = authors as appropriate.
]]
local function select_author_editor_source (vxxxxors, xxxxors, args, list_name)
local lastfirst = false;
if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ...
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors=
utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or
utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then
lastfirst = true;
end
if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions
(utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or
(true == lastfirst and utilities.is_set (xxxxors)) then
local err_name;
if 'AuthorList' == list_name then -- figure out which name should be used in error message
err_name = 'author';
else
err_name = 'editor';
end
utilities.set_message ('err_redundant_parameters', err_name .. '-name-list parameters'); -- add error message
end
if true == lastfirst then return 1 end; -- return a number indicating which author name source to use
if utilities.is_set (vxxxxors) then return 2 end;
if utilities.is_set (xxxxors) then return 3 end;
return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last
end
--[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------
This function is used to validate a parameter's assigned value for those parameters that have only a limited number
of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing
or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one
of the list of allowed values returns the translated value; else, emits an error message and returns the value
specified by ret_val.
TODO: explain <invert>
]]
local function is_valid_parameter_value (value, name, possible, ret_val, invert)
if not utilities.is_set (value) then
return ret_val; -- an empty parameter is ok
end
if (not invert and utilities.in_array (value, possible)) then -- normal; <value> is in <possible> table
return cfg.keywords_xlate[value]; -- return translation of parameter keyword
elseif invert and not utilities.in_array (value, possible) then -- invert; <value> is not in <possible> table
return value; -- return <value> as it is
else
utilities.set_message ('err_invalid_param_val', {name, value}); -- not an allowed value so add error message
return ret_val;
end
end
--[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >----------------------------------------
This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space
when the last character is not a sepc character or when the last three characters are not sepc followed by two
closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a
single space character.
]]
local function terminate_name_list (name_list, sepc)
if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated
return name_list; -- just return the name list
elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char
return name_list .. " "; -- don't add another
else
return name_list .. sepc .. ' '; -- otherwise terminate the name list
end
end
--[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >-----------------------------------------
returns the concatenation of the formatted volume and issue (or journal article number) parameters as a single
string; or formatted volume or formatted issue, or an empty string if neither are set.
]]
local function format_volume_issue (volume, issue, article, cite_class, origin, sepc, lower)
if not utilities.is_set (volume) and not utilities.is_set (issue) and not utilities.is_set (article) then
return '';
end
-- same condition as in format_pages_sheets()
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
local is_numeric_vol = volume and (volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$')); -- is only uppercase roman numerals or only digits?
local is_long_vol = volume and (4 < mw.ustring.len(volume)); -- is |volume= value longer than 4 characters?
if volume and (not is_numeric_vol and is_long_vol) then -- when not all digits or Roman numerals, is |volume= longer than 4 characters?
utilities.add_prop_cat ('long-vol'); -- yes, add properties cat
end
if is_journal then -- journal-style formatting
local vol = '';
if utilities.is_set (volume) then
if is_numeric_vol then -- |volume= value all digits or all uppercase Roman numerals?
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, volume}); -- render in bold face
elseif is_long_vol then -- not all digits or Roman numerals; longer than 4 characters?
vol = utilities.substitute (cfg.messages['j-vol'], {sepc, utilities.hyphen_to_dash (volume)}); -- not bold
else -- four or fewer characters
vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, utilities.hyphen_to_dash (volume)}); -- bold
end
end
vol = vol .. (utilities.is_set (issue) and utilities.substitute (cfg.messages['j-issue'], issue) or '')
vol = vol .. (utilities.is_set (article) and utilities.substitute (cfg.messages['j-article-num'], article) or '')
return vol;
end
if 'podcast' == cite_class and utilities.is_set (issue) then
return wrap_msg ('issue', {sepc, issue}, lower);
end
if 'conference' == cite_class and utilities.is_set (article) then -- |article-number= supported only in journal and conference cites
if utilities.is_set (volume) and utilities.is_set (article) then -- both volume and article number
return wrap_msg ('vol-art', {sepc, utilities.hyphen_to_dash (volume), article}, lower);
elseif utilities.is_set (article) then -- article number alone; when volume alone, handled below
return wrap_msg ('art', {sepc, article}, lower);
end
end
-- all other types of citation
if utilities.is_set (volume) and utilities.is_set (issue) then
return wrap_msg ('vol-no', {sepc, utilities.hyphen_to_dash (volume), issue}, lower);
elseif utilities.is_set (volume) then
return wrap_msg ('vol', {sepc, utilities.hyphen_to_dash (volume)}, lower);
else
return wrap_msg ('issue', {sepc, issue}, lower);
end
end
--[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >-----------------------------------------
adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings.
The return order is:
page, pages, sheet, sheets
Singular has priority over plural when both are provided.
]]
local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower)
if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators
if utilities.is_set (sheet) then
if 'journal' == origin then
return '', '', wrap_msg ('j-sheet', sheet, lower), '';
else
return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), '';
end
elseif utilities.is_set (sheets) then
if 'journal' == origin then
return '', '', '', wrap_msg ('j-sheets', sheets, lower);
else
return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower);
end
end
end
local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin);
if utilities.is_set (page) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', '';
elseif not nopp then
return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', '';
else
return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', '';
end
elseif utilities.is_set (pages) then
if is_journal then
return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', '';
elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number
return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', '';
elseif not nopp then
return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', '';
else
return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', '';
end
end
return '', '', '', ''; -- return empty strings
end
--[[--------------------------< I N S O U R C E _ L O C _ G E T >----------------------------------------------
returns one of the in-source locators: page, pages, or at.
If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text
for use in COinS. This COinS thing is done because here we convert an interwiki-link to an external link and
add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it?
TODO: add support for sheet and sheets?; streamline;
TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned
to a new name)?
]]
local function insource_loc_get (page, page_orig, pages, pages_orig, at)
local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?)
if utilities.is_set (page) then
if utilities.is_set (pages) or utilities.is_set (at) then
pages = ''; -- unset the others
at = '';
end
extra_text_in_page_check (page, page_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label
if ws_url then
page = external_link (ws_url, ws_label .. ' ', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page});
coins_pages = ws_label;
end
elseif utilities.is_set (pages) then
if utilities.is_set (at) then
at = ''; -- unset
end
extra_text_in_page_check (pages, pages_orig); -- emit error message when |page= value begins with what looks like p., pp., etc.
ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label
if ws_url then
pages = external_link (ws_url, ws_label .. ' ', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages});
coins_pages = ws_label;
end
elseif utilities.is_set (at) then
ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label
if ws_url then
at = external_link (ws_url, ws_label .. ' ', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this?
at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at});
coins_pages = ws_label;
end
end
return page, pages, at, coins_pages;
end
--[[--------------------------< I S _ U N I Q U E _ A R C H I V E _ U R L >------------------------------------
add error message when |archive-url= value is same as |url= or chapter-url= (or alias...) value
]]
local function is_unique_archive_url (archive, url, c_url, source, date)
if utilities.is_set (archive) then
if archive == url or archive == c_url then
utilities.set_message ('err_bad_url', {utilities.wrap_style ('parameter', source)}); -- add error message
return '', ''; -- unset |archive-url= and |archive-date= because same as |url= or |chapter-url=
end
end
return archive, date;
end
--[=[-------------------------< A R C H I V E _ U R L _ C H E C K >--------------------------------------------
Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the
save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...)
archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow
unwitting readers to do.
When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own
algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results.
This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and
|archive-date= and an error message when:
|archive-url= holds an archive.org save command URL
|archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the
correct place
otherwise returns |archive-url= and |archive-date=
There are two mostly compatible archive.org URLs:
//web.archive.org/<timestamp>... -- the old form
//web.archive.org/web/<timestamp>... -- the new form
The old form does not support or map to the new form when it contains a display flag. There are four identified flags
('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore)
we don't check for these specific flags but we do check the form.
This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified
archive URL:
for save command errors, return undated wildcard (/*/)
for timestamp errors when the timestamp has a wildcard, return the URL unmodified
for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/)
A secondary function is to return an archive-url timestamp from those urls that have them (archive.org and
archive.today). The timestamp is used by validation.archive_date_check() to see if the value in |archive-date=
matches the timestamp in the archive url.
]=]
local function archive_url_check (url, date)
local err_msg = ''; -- start with the error message empty
local path, timestamp, flag; -- portions of the archive.org URL
timestamp = url:match ('//archive.today/(%d%d%d%d%d%d%d%d%d%d%d%d%d%d)/'); -- get timestamp from archive.today urls
if timestamp then -- if this was an archive.today url ...
return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=, and done
end
-- here for archive.org urls
if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL
return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate
end
if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page
err_msg = cfg.err_msg_supl.save;
url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL
elseif url:match('//liveweb%.archive%.org/') then
err_msg = cfg.err_msg_supl.liveweb;
else
path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation
if not path then -- malformed in some way; pattern did not match
err_msg = cfg.err_msg_supl.timestamp;
elseif 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here
err_msg = cfg.err_msg_supl.timestamp;
if '*' ~= flag then
local replacement = timestamp:match ('^%d%d%d%d%d%d') or timestamp:match ('^%d%d%d%d'); -- get the first 6 (YYYYMM) or first 4 digits (YYYY)
if replacement then -- nil if there aren't at least 4 digits (year)
replacement = replacement .. string.rep ('0', 14 - replacement:len()); -- year or yearmo (4 or 6 digits) zero-fill to make 14-digit timestamp
url=url:gsub ('(//web%.archive%.org/[^%d]*)%d[^/]*', '%1' .. replacement .. '*', 1) -- for preview, modify ts to 14 digits plus splat for calendar display
end
end
elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element
err_msg = cfg.err_msg_supl.path;
elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element)
err_msg = cfg.err_msg_supl.flag;
else
return url, date, timestamp; -- return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
end
end
-- if here, something not right so
utilities.set_message ('err_archive_url', {err_msg}); -- add error message and
if is_preview_mode then
return url, date, timestamp; -- preview mode so return ArchiveURL, ArchiveDate, and timestamp from |archive-url=
else
return '', ''; -- return empty strings for ArchiveURL and ArchiveDate
end
end
--[[--------------------------< P L A C E _ C H E C K >--------------------------------------------------------
check |place=, |publication-place=, |location= to see if these params include digits. This function added because
many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that)
returns the original parameter value without modification; added maint cat when parameter value contains digits
]]
local function place_check (param_val)
if not utilities.is_set (param_val) then -- parameter empty or omitted
return param_val; -- return that empty state
end
if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value
utilities.set_message ('maint_location'); -- yep, add maint cat
end
return param_val; -- and done
end
--[[--------------------------< I S _ A R C H I V E D _ C O P Y >----------------------------------------------
compares |title= to 'Archived copy' (placeholder added by bots that can't find proper title); if matches, return true; nil else
]]
local function is_archived_copy (title)
title = mw.ustring.lower(title); -- switch title to lower case
if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy'
return true;
elseif cfg.special_case_translation.archived_copy['local'] then
if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script
return true;
end
end
end
--[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------
This is the main function doing the majority of the citation formatting.
]]
local function citation0( config, args )
--[[
Load Input Parameters
The argument_wrapper facilitates the mapping of multiple aliases to single internal variable.
]]
local A = argument_wrapper ( args );
local i
-- Pick out the relevant fields from the arguments. Different citation templates
-- define different field names for the same underlying things.
local author_etal;
local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors=
local Authors;
local NameListStyle;
if cfg.global_cs1_config_t['NameListStyle'] then -- global setting in {{cs1 config}} overrides local |name-list-style= parameter value; nil when empty or assigned value invalid
NameListStyle = is_valid_parameter_value (cfg.global_cs1_config_t['NameListStyle'], 'cs1 config: name-list-style', cfg.keywords_lists['name-list-style'], ''); -- error messaging 'param' here is a hoax
else
NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], '');
end
if cfg.global_cs1_config_t['NameListStyle'] and utilities.is_set (A['NameListStyle']) then -- when template has |name-list-style=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
local Collaboration = A['Collaboration'];
do -- to limit scope of selected
local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList');
if 1 == selected then
a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
a, author_etal = parse_vauthors_veditors (args, A['Vauthors'], 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn=
elseif 3 == selected then
Authors = A['Authors']; -- use content of |authors=
if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors=
utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO:
end
end
if utilities.is_set (Collaboration) then
author_etal = true; -- so that |display-authors=etal not required
end
end
local editor_etal;
local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors=
do -- to limit scope of selected
local selected = select_author_editor_source (A['Veditors'], nil, args, 'EditorList'); -- support for |editors= withdrawn
if 1 == selected then
e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn=
elseif 2 == selected then
NameListStyle = 'vanc'; -- override whatever |name-list-style= might be
e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn=
end
end
local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases
local Chapter_origin = A:ORIGIN ('Chapter');
local Contribution; -- because contribution is required for contributor(s)
if 'contribution' == Chapter_origin then
Contribution = Chapter; -- get the name of the contribution
end
local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs
if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites
c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn=
if 0 < #c then
if not utilities.is_set (Contribution) then -- |contributor= requires |contribution=
utilities.set_message ('err_contributor_missing_required_param', 'contribution'); -- add missing contribution error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
if 0 == #a then -- |contributor= requires |author=
utilities.set_message ('err_contributor_missing_required_param', 'author'); -- add missing author error message
c = {}; -- blank the contributors' table; it is used as a flag later
end
end
else -- if not a book cite
if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters?
utilities.set_message ('err_contributor_ignored'); -- add contributor ignored error message
end
Contribution = nil; -- unset
end
local Title = A['Title'];
local TitleLink = A['TitleLink'];
local auto_select = ''; -- default is auto
local accept_link;
TitleLink, accept_link = utilities.has_accept_as_written (TitleLink, true); -- test for accept-this-as-written markup
if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords
auto_select = TitleLink; -- remember selection for later
TitleLink = ''; -- treat as if |title-link= would have been empty
end
TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set
local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used
if 'map' == config.CitationClass and 'section' == Chapter_origin then
Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}}
Chapter = ''; -- unset for now; will be reset later from |map= if present
end
local Periodical = A['Periodical'];
local Periodical_origin = A:ORIGIN('Periodical');
local ScriptPeriodical = A['ScriptPeriodical'];
local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
local TransPeriodical = A['TransPeriodical'];
local TransPeriodical_origin = A:ORIGIN ('TransPeriodical');
if (utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (ScriptPeriodical))) then
local param;
if utilities.is_set (Periodical) then -- get a parameter name from one of these periodical related meta-parameters
Periodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = Periodical_origin -- get parameter name for error messaging
elseif utilities.is_set (TransPeriodical) then
TransPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = TransPeriodical_origin; -- get parameter name for error messaging
elseif utilities.is_set (ScriptPeriodical) then
ScriptPeriodical = nil; -- unset because not valid {{cite book}} or {{cite encyclopedia}} parameters
param = ScriptPeriodical_origin; -- get parameter name for error messaging
end
if utilities.is_set (param) then -- if we found one
utilities.set_message ('err_periodical_ignored', {param}); -- emit an error message
end
end
if utilities.is_set (Periodical) then
local i;
Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated
if i then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {Periodical_origin});
end
end
if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}}
if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'mailinglist')});
end
Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}}
Periodical_origin = A:ORIGIN('MailingList');
end
-- web and news not tested for now because of
-- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors?
if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter
-- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message
local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message
if p[config.CitationClass] then
utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]});
end
end
local Volume;
-- local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical');
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) then
if not utilities.in_array (Periodical_origin, cfg.citation_no_volume_t) then -- {{citation}} does not render |volume= when these parameters are used
Volume = A['Volume']; -- but does for all other 'periodicals'
end
elseif utilities.is_set (ScriptPeriodical) then
if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website=
Volume = A['Volume']; -- but does for all other 'periodicals'
end
else
Volume = A['Volume']; -- and does for non-'periodical' cites
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings
Volume = A['Volume'];
end
extra_text_in_vol_iss_check (Volume, A:ORIGIN ('Volume'), 'v');
local Issue;
if 'citation' == config.CitationClass then
if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, cfg.citation_issue_t) then -- {{citation}} may render |issue= when these parameters are used
Issue = utilities.hyphen_to_dash (A['Issue']);
end
elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table
if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then
Issue = utilities.hyphen_to_dash (A['Issue']);
end
end
local ArticleNumber;
if utilities.in_array (config.CitationClass, {'journal', 'conference'}) or ('citation' == config.CitationClass and utilities.is_set (Periodical) and 'journal' == Periodical_origin) then
ArticleNumber = A['ArticleNumber'];
end
extra_text_in_vol_iss_check (Issue, A:ORIGIN ('Issue'), 'i');
local Page;
local Pages;
local At;
local QuotePage;
local QuotePages;
if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then -- TODO: rewrite to emit ignored parameter error message?
Page = A['Page'];
Pages = utilities.hyphen_to_dash (A['Pages']);
At = A['At'];
QuotePage = A['QuotePage'];
QuotePages = utilities.hyphen_to_dash (A['QuotePages']);
end
local Edition = A['Edition'];
local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace'));
local Place = place_check (A['Place'], A:ORIGIN('Place'));
local PublisherName = A['PublisherName'];
local PublisherName_origin = A:ORIGIN('PublisherName');
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then
local i = 0;
PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized
if i and (0 < i) then -- non-zero when markup was stripped so emit an error message
utilities.set_message ('err_apostrophe_markup', {PublisherName_origin});
end
end
if ('document' == config.CitationClass) and not utilities.is_set (PublisherName) then
utilities.set_message ('err_missing_publisher', {config.CitationClass, 'publisher'});
end
local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup?
local Newsgroup_origin = A:ORIGIN('Newsgroup');
if 'newsgroup' == config.CitationClass then
if utilities.is_set (PublisherName) and (cfg.keywords_xlate['none'] ~= PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup
utilities.set_message ('err_parameter_ignored', {PublisherName_origin});
end
PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS
end
local URL = A['URL']; -- TODO: better way to do this for URL, ChapterURL, and MapURL?
local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then
UrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', 'url');
end
local ChapterURL = A['ChapterURL'];
local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then
ChapterUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')});
end
local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil);
if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then
MapUrlAccess = nil;
utilities.set_message ('err_param_access_requires_param', {'map-url'});
end
local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language
local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil);
-- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories
if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page
if cfg.uncategorized_namespaces[this_page.namespace] then -- is this page's namespace id one of the uncategorized namespace ids?
no_tracking_cats = "true"; -- set no_tracking_cats
end
for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns
if this_page.text:match (v) then -- test page name against each pattern
no_tracking_cats = "true"; -- set no_tracking_cats
break; -- bail out if one is found
end
end
end
-- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it)
utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category
local coins_pages;
Page, Pages, At, coins_pages = insource_loc_get (Page, A:ORIGIN('Page'), Pages, A:ORIGIN('Pages'), At);
local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil);
if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different
utilities.add_prop_cat ('location-test'); -- add property cat to evaluate how often PublicationPlace and Place are used together
if PublicationPlace == Place then
Place = ''; -- unset; don't need both if they are the same
end
elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ...
PublicationPlace = Place; -- promote |place= (|location=) to |publication-place
end
if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same
local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL
local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL
local ScriptChapter = A['ScriptChapter'];
local ScriptChapter_origin = A:ORIGIN ('ScriptChapter');
local Format = A['Format'];
local ChapterFormat = A['ChapterFormat'];
local TransChapter = A['TransChapter'];
local TransChapter_origin = A:ORIGIN ('TransChapter');
local TransTitle = A['TransTitle'];
local ScriptTitle = A['ScriptTitle'];
--[[
Parameter remapping for cite encyclopedia:
When the citation has these parameters:
|encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= for rendering
|encyclopedia= and |article= then map |encyclopedia= to |title= for rendering
|trans-title= maps to |trans-chapter= when |title= is re-mapped
|url= maps to |chapter-url= when |title= is remapped
All other combinations of |encyclopedia=, |title=, and |article= are not modified
]]
local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS
if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}}
if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then
utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')});
Encyclopedia = nil; -- unset because not supported by this template
end
end
if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both parameters set emit an error message; {{citation}} only; Periodical not allowed in {{cite encyclopedia}}
utilities.set_message ('err_periodical_ignored', {Periodical_origin});
end
if utilities.is_set (Encyclopedia) then
Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia for rendering; {{citation}} could (not legitimately) have both; use Encyclopedia
Periodical_origin = A:ORIGIN ('Encyclopedia');
if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then
if not utilities.is_set (Chapter) then
Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title= for rendering
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle')
TransChapter = TransTitle;
ChapterURL = URL;
ChapterURL_origin = URL_origin;
ChapterUrlAccess = UrlAccess;
if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then
Chapter = utilities.make_wikilink (TitleLink, Chapter);
end
Title = Periodical;
ChapterFormat = Format;
Periodical = ''; -- redundant so unset
TransTitle = '';
URL = '';
Format = '';
TitleLink = '';
ScriptTitle = '';
end
elseif utilities.is_set (Chapter) or utilities.is_set (ScriptChapter) then -- |title= not set
Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= for rendering
Periodical = ''; -- redundant so unset
end
end
end
-- special case for cite techreport.
local ID = A['ID'];
if (config.CitationClass == "techreport") then -- special case for cite techreport
if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue'
if not utilities.is_set (ID) then -- can we use ID for the "number"?
ID = A['Number']; -- yes, use it
else -- ID has a value so emit error message
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'number')});
end
end
end
-- Account for the oddity that is {{cite conference}}, before generation of COinS data.
local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode
local Conference = A['Conference'];
local BookTitle = A['BookTitle'];
local TransTitle_origin = A:ORIGIN ('TransTitle');
if 'conference' == config.CitationClass then
if utilities.is_set (BookTitle) then
Chapter = Title;
Chapter_origin = 'title';
-- ChapterLink = TitleLink; -- |chapter-link= is deprecated
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
URL_origin = '';
ChapterFormat = Format;
TransChapter = TransTitle;
TransChapter_origin = TransTitle_origin;
Title = BookTitle;
Format = '';
-- TitleLink = '';
TransTitle = '';
URL = '';
end
elseif 'speech' ~= config.CitationClass then
Conference = ''; -- not cite conference or cite speech so make sure this is empty string
end
-- CS1/2 mode
local Mode;
if cfg.global_cs1_config_t['Mode'] then -- global setting in {{cs1 config}} overrides local |mode= parameter value; nil when empty or assigned value invalid
Mode = is_valid_parameter_value (cfg.global_cs1_config_t['Mode'], 'cs1 config: mode', cfg.keywords_lists['mode'], ''); -- error messaging 'param' here is a hoax
else
Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], '');
end
if cfg.global_cs1_config_t['Mode'] and utilities.is_set (A['Mode']) then -- when template has |mode=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
-- separator character and postscript
local sepc, PostScript = set_style (Mode:lower(), A['PostScript'], config.CitationClass);
-- controls capitalization of certain static text
local use_lowercase = ( sepc == ',' );
-- cite map oddities
local Cartography = "";
local Scale = "";
local Sheet = A['Sheet'] or '';
local Sheets = A['Sheets'] or '';
if config.CitationClass == "map" then
if utilities.is_set (Chapter) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', Chapter_origin)}); -- add error message
end
Chapter = A['Map'];
Chapter_origin = A:ORIGIN('Map');
ChapterURL = A['MapURL'];
ChapterURL_origin = A:ORIGIN('MapURL');
TransChapter = A['TransMap'];
ScriptChapter = A['ScriptMap']
ScriptChapter_origin = A:ORIGIN('ScriptMap')
ChapterUrlAccess = MapUrlAccess;
ChapterFormat = A['MapFormat'];
Cartography = A['Cartography'];
if utilities.is_set ( Cartography ) then
Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase);
end
Scale = A['Scale'];
if utilities.is_set ( Scale ) then
Scale = sepc .. " " .. Scale;
end
end
-- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data.
local Series = A['Series'];
if 'episode' == config.CitationClass or 'serial' == config.CitationClass then
local SeriesLink = A['SeriesLink'];
SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set
local Network = A['Network'];
local Station = A['Station'];
local s, n = {}, {};
-- do common parameters first
if utilities.is_set (Network) then table.insert(n, Network); end
if utilities.is_set (Station) then table.insert(n, Station); end
ID = table.concat(n, sepc .. ' ');
if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}}
local Season = A['Season'];
local SeriesNumber = A['SeriesNumber'];
if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'seriesno')}); -- add error message
SeriesNumber = ''; -- unset; prefer |season= over |seriesno=
end
-- assemble a table of parts concatenated later into Series
if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end
if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end
if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end
Issue = ''; -- unset because this is not a unique parameter
Chapter = Title; -- promote title parameters to chapter
ScriptChapter = ScriptTitle;
ScriptChapter_origin = A:ORIGIN('ScriptTitle');
ChapterLink = TitleLink; -- alias |episode-link=
TransChapter = TransTitle;
ChapterURL = URL;
ChapterUrlAccess = UrlAccess;
ChapterURL_origin = URL_origin;
ChapterFormat = Format;
Title = Series; -- promote series to title
TitleLink = SeriesLink;
Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number
if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL
Chapter = utilities.make_wikilink (ChapterLink, Chapter);
elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode;
Series = utilities.make_wikilink (ChapterLink, Series);
end
URL = ''; -- unset
TransTitle = '';
ScriptTitle = '';
Format = '';
else -- now oddities that are cite serial
Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial
Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday?
if utilities.is_set (Series) and utilities.is_set (SeriesLink) then
Series = utilities.make_wikilink (SeriesLink, Series);
end
Series = utilities.wrap_style ('italic-title', Series); -- series is italicized
end
end
-- end of {{cite episode}} stuff
-- handle type parameter for those CS1 citations that have default values
local TitleType = A['TitleType'];
local Degree = A['Degree'];
if utilities.in_array (config.CitationClass, {'AV-media-notes', 'document', 'interview', 'mailinglist', 'map', 'podcast', 'pressrelease', 'report', 'speech', 'techreport', 'thesis'}) then
TitleType = set_titletype (config.CitationClass, TitleType);
if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis
TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower();
end
end
if utilities.is_set (TitleType) then -- if type parameter is specified
TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses
-- TODO: Hack on TitleType to fix bunched parentheses problem
end
-- legacy: promote PublicationDate to Date if neither Date nor Year are set.
local Date = A['Date'];
local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging
local PublicationDate = A['PublicationDate'];
local Year = A['Year'];
if not utilities.is_set (Date) then
Date = Year; -- promote Year to Date
Year = nil; -- make nil so Year as empty string isn't used for CITEREF
if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set
Date = PublicationDate; -- promote PublicationDate to Date
PublicationDate = ''; -- unset, no longer needed
Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter
else
Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter
end
else
Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging
end
if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation
--[[
Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where
we get the date used in the metadata.
Date validation supporting code is in Module:Citation/CS1/Date_validation
]]
local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], '');
if not utilities.is_set (DF) then
DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template
end
local ArchiveURL;
local ArchiveDate;
local ArchiveFormat = A['ArchiveFormat'];
local archive_url_timestamp; -- timestamp from wayback machine url
ArchiveURL, ArchiveDate, archive_url_timestamp = archive_url_check (A['ArchiveURL'], A['ArchiveDate'])
ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url');
ArchiveURL, ArchiveDate = is_unique_archive_url (ArchiveURL, URL, ChapterURL, A:ORIGIN('ArchiveURL'), ArchiveDate); -- add error message when URL or ChapterURL == ArchiveURL
local AccessDate = A['AccessDate'];
-- local LayDate = A['LayDate'];
local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification
local DoiBroken = A['DoiBroken'];
local Embargo = A['Embargo'];
local anchor_year; -- used in the CITEREF identifier
do -- create defined block to contain local variables error_message, date_parameters_list, mismatch
local error_message = '';
-- AirDate has been promoted to Date so not necessary to check it
local date_parameters_list = {
['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')},
['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')},
['date'] = {val = Date, name = Date_origin},
['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')},
['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')},
-- ['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')},
['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')},
['year'] = {val = Year, name = A:ORIGIN ('Year')},
};
local error_list = {};
anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list);
-- start temporary Julian / Gregorian calendar uncertainty categorization
if COinS_date.inter_cal_cat then
utilities.add_prop_cat ('jul-greg-uncertainty');
end
-- end temporary Julian / Gregorian calendar uncertainty categorization
if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed;
validation.year_date_check (Year, A:ORIGIN ('Year'), Date, A:ORIGIN ('Date'), error_list);
end
if 0 == #error_list then -- error free dates only; 0 when error_list is empty
local modified = false; -- flag
if utilities.is_set (DF) then -- if we need to reformat dates
modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate
end
if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate
modified = true;
utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category
end
-- for those wikis that can and want to have English date names translated to the local language; not supported at en.wiki
if cfg.date_name_auto_xlate_enable and validation.date_name_xlate (date_parameters_list, cfg.date_digit_auto_xlate_enable ) then
utilities.set_message ('maint_date_auto_xlated'); -- add maint cat
modified = true;
end
if modified then -- if the date_parameters_list values were modified
AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values
ArchiveDate = date_parameters_list['archive-date'].val;
Date = date_parameters_list['date'].val;
DoiBroken = date_parameters_list['doi-broken-date'].val;
-- LayDate = date_parameters_list['lay-date'].val;
PublicationDate = date_parameters_list['publication-date'].val;
end
if archive_url_timestamp and utilities.is_set (ArchiveDate) then
validation.archive_date_check (ArchiveDate, archive_url_timestamp); -- does YYYYMMDD in archive_url_timestamp match date in ArchiveDate
end
else
utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}); -- add this error message
end
end -- end of do
if utilities.in_array (config.CitationClass, {'book', 'encyclopaedia'}) or -- {{cite book}}, {{cite encyclopedia}}; TODO: {{cite conference}} and others?
('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) or -- {{citation}} as an encylopedia citation
('citation' == config.CitationClass and not utilities.is_set (Periodical)) then -- {{citation}} as a book citation
if utilities.is_set (PublicationPlace) then
if not utilities.is_set (PublisherName) then
local date = COinS_date.rftdate and tonumber (COinS_date.rftdate:match ('%d%d%d%d')); -- get year portion of COinS date (because in Arabic numerals); convert string to number
if date and (1850 <= date) then -- location has no publisher; if date is 1850 or later
utilities.set_message ('maint_location_no_publisher'); -- add maint cat
end
else -- PublisherName has a value
if cfg.keywords_xlate['none'] == PublisherName then -- if that value is 'none' (only for book and encyclopedia citations)
PublisherName = ''; -- unset
end
end
end
end
local ID_list = {}; -- sequence table of rendered identifiers
local ID_list_coins = {}; -- table of identifiers and their values from args; key is same as cfg.id_handlers's key
local Class = A['Class']; -- arxiv class identifier
local ID_support = {
{A['ASINTLD'], 'ASIN', 'err_asintld_missing_asin', A:ORIGIN ('ASINTLD')},
{DoiBroken, 'DOI', 'err_doibroken_missing_doi', A:ORIGIN ('DoiBroken')},
{Embargo, 'PMC', 'err_embargo_missing_pmc', A:ORIGIN ('Embargo')},
}
ID_list, ID_list_coins = identifiers.identifier_lists_get (args, {DoiBroken = DoiBroken, ASINTLD = A['ASINTLD'], Embargo = Embargo, Class = Class}, ID_support);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, {{cite ssrn}}, before generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv=, |citeseerx=, |medrxiv=, |ssrn= required for their templates
if not (args[cfg.id_handlers[config.CitationClass:upper()].parameters[1]] or -- can't use ID_list_coins k/v table here because invalid parameters omitted
args[cfg.id_handlers[config.CitationClass:upper()].parameters[2]]) then -- which causes unexpected parameter missing error message
utilities.set_message ('err_' .. config.CitationClass .. '_missing'); -- add error message
end
Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['medrxiv'] = 'medRxiv', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass];
end
-- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free
if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead
if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled
if identifiers.auto_link_urls[auto_select] then -- manual selection
URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link
URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC
URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed
URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title=
elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI
URL = identifiers.auto_link_urls['doi'];
URL_origin = cfg.id_handlers['DOI'].parameters[1];
end
end
if utilities.is_set (URL) then -- set when using an identifier-created URL
if utilities.is_set (AccessDate) then -- |access-date= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_accessdate_missing_url'); -- add an error message
AccessDate = ''; -- unset
end
if utilities.is_set (ArchiveURL) then -- |archive-url= requires |url=; identifier-created URL is not |url=
utilities.set_message ('err_archive_missing_url'); -- add an error message
ArchiveURL = ''; -- unset
end
end
end
-- At this point fields may be nil if they weren't specified in the template use. We can use that fact.
-- Test if citation has no title
if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode
utilities.set_message ('err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'});
end
if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and
utilities.in_array (config.CitationClass, {'journal', 'citation'}) and
(utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and
('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites
Title = ''; -- set title to empty string
utilities.set_message ('maint_untitled'); -- add maint cat
end
-- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information.
-- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that
-- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title
-- is the article title, and Chapter is a section within the article. So, we remap
local coins_chapter = Chapter; -- default assuming that remapping not required
local coins_title = Title; -- et tu
if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then
if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then
coins_chapter = Title; -- remap
coins_title = Periodical;
end
end
local coins_author = a; -- default for coins rft.au
if 0 < #c then -- but if contributor list
coins_author = c; -- use that instead
end
-- this is the function call to COinS()
local OCinSoutput = metadata.COinS({
['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata
['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS
['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic / accept-as-written markup
['Degree'] = Degree; -- cite thesis only
['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic / accept-as-written markup
['PublicationPlace'] = PublicationPlace,
['Date'] = COinS_date.rftdate, -- COinS_date.* has correctly formatted date values if Date is valid;
['Season'] = COinS_date.rftssn,
['Quarter'] = COinS_date.rftquarter,
['Chron'] = COinS_date.rftchron,
['Series'] = Series,
['Volume'] = Volume,
['Issue'] = Issue,
['ArticleNumber'] = ArticleNumber,
['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At, QuotePage, QuotePages}, 7)), -- pages stripped of external links
['Edition'] = Edition,
['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName
['URL'] = first_set ({ChapterURL, URL}, 2),
['Authors'] = coins_author,
['ID_list'] = ID_list_coins,
['RawPage'] = this_page.prefixedText,
}, config.CitationClass);
-- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite medrxiv}}, and {{cite ssrn}} AFTER generation of COinS data.
if utilities.in_array (config.CitationClass, whitelist.preprint_template_list_t) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, medRxiv, or ssrn now unset so it isn't displayed
Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal
end
-- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text
if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then
PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil ));
end
local Editors;
local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list
local Contributors; -- assembled contributors name list
local contributor_etal;
local Translators; -- assembled translators name list
local translator_etal;
local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs
t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn=
local Interviewers;
local interviewers_list = {};
interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters
local interviewer_etal;
-- Now perform various field substitutions.
-- We also add leading spaces and surrounding markup and punctuation to the
-- various parts of the citation, but only when they are non-nil.
do
local last_first_list;
local control = {
format = NameListStyle, -- empty string, '&', 'amp', 'and', or 'vanc'
maximum = nil, -- as if display-authors or display-editors not set
mode = Mode
};
do -- do editor name list first because the now unsupported coauthors used to modify control table
if cfg.global_cs1_config_t['DisplayEditors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum , editor_etal = get_display_names (cfg.global_cs1_config_t['DisplayEditors'], #e, 'editors', editor_etal, 'cs1 config');
else
control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal, A:ORIGIN ('DisplayEditors'));
end
if cfg.global_cs1_config_t['DisplayEditors'] and utilities.is_set (A['DisplayEditors']) then -- when template has |display-editors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Editors, EditorCount = list_people (control, e, editor_etal);
if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then
EditorCount = 2; -- spoof to display (eds.) annotation
end
end
do -- now do interviewers
if cfg.global_cs1_config_t['DisplayInterviewers'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, interviewer_etal = get_display_names (cfg.global_cs1_config_t['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, 'cs1 config');
else
control.maximum, interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal, A:ORIGIN ('DisplayInterviewers'));
end
if cfg.global_cs1_config_t['DisplayInterviewers'] and utilities.is_set (A['DisplayInterviewers']) then -- when template has |display-interviewers=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Interviewers = list_people (control, interviewers_list, interviewer_etal);
end
do -- now do translators
if cfg.global_cs1_config_t['DisplayTranslators'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, translator_etal = get_display_names (cfg.global_cs1_config_t['DisplayTranslators'], #t, 'translators', translator_etal, 'cs1 config');
else
control.maximum, translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal, A:ORIGIN ('DisplayTranslators'));
end
if cfg.global_cs1_config_t['DisplayTranslators'] and utilities.is_set (A['DisplayTranslators']) then -- when template has |display-translators=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Translators = list_people (control, t, translator_etal);
end
do -- now do contributors
if cfg.global_cs1_config_t['DisplayContributors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, contributor_etal = get_display_names (cfg.global_cs1_config_t['DisplayContributors'], #c, 'contributors', contributor_etal, 'cs1 config');
else
control.maximum, contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal, A:ORIGIN ('DisplayContributors'));
end
if cfg.global_cs1_config_t['DisplayContributors'] and utilities.is_set (A['DisplayContributors']) then -- when template has |display-contributors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
Contributors = list_people (control, c, contributor_etal);
end
do -- now do authors
if cfg.global_cs1_config_t['DisplayAuthors'] then -- global setting from {{cs1 config}} overrides local setting
control.maximum, author_etal = get_display_names (cfg.global_cs1_config_t['DisplayAuthors'], #a, 'authors', author_etal, 'cs1 config');
else
control.maximum, author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal, A:ORIGIN ('DisplayAuthors'));
end
if cfg.global_cs1_config_t['DisplayAuthors'] and utilities.is_set (A['DisplayAuthors']) then -- when template has |display-authors=<something> which global setting has overridden
utilities.set_message ('maint_overridden_setting'); -- set a maint message
end
last_first_list = list_people (control, a, author_etal);
if utilities.is_set (Authors) then
Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al.
if author_etal then
Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter
end
else
Authors = last_first_list; -- either an author name list or an empty string
end
end -- end of do
if utilities.is_set (Authors) and utilities.is_set (Collaboration) then
Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al.
end
end
local ConferenceFormat = A['ConferenceFormat'];
local ConferenceURL = A['ConferenceURL'];
ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url');
Format = style_format (Format, URL, 'format', 'url');
-- special case for chapter format so no error message or cat when chapter not supported
if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then
ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url');
end
if not utilities.is_set (URL) then
if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist
('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website=
utilities.set_message ('err_cite_web_url');
end
-- do we have |accessdate= without either |url= or |chapter-url=?
if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set;
utilities.set_message ('err_accessdate_missing_url');
AccessDate = '';
end
end
local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], '');
local OriginalURL
local OriginalURL_origin
local OriginalFormat
local OriginalAccess;
UrlStatus = UrlStatus:lower(); -- used later when assembling archived text
if utilities.is_set ( ArchiveURL ) then
if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it
OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text
OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages
OriginalFormat = ChapterFormat; -- and original |chapter-format=
if 'live' ~= UrlStatus then
ChapterURL = ArchiveURL -- swap-in the archive's URL
ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages
ChapterFormat = ArchiveFormat or ''; -- swap in archive's format
ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
elseif utilities.is_set (URL) then
OriginalURL = URL; -- save copy of original source URL
OriginalURL_origin = URL_origin; -- name of URL parameter for error messages
OriginalFormat = Format; -- and original |format=
OriginalAccess = UrlAccess;
if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it
URL = ArchiveURL -- swap-in the archive's URL
URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages
Format = ArchiveFormat or ''; -- swap in archive's format
UrlAccess = nil; -- restricted access levels do not make sense for archived URLs
end
end
elseif utilities.is_set (UrlStatus) then -- if |url-status= is set when |archive-url= is not set
utilities.set_message ('maint_url_status'); -- add maint cat
end
if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then
local chap_param;
if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters
chap_param = A:ORIGIN ('Chapter')
elseif utilities.is_set (TransChapter) then
chap_param = A:ORIGIN ('TransChapter')
elseif utilities.is_set (ChapterURL) then
chap_param = A:ORIGIN ('ChapterURL')
elseif utilities.is_set (ScriptChapter) then
chap_param = ScriptChapter_origin;
else utilities.is_set (ChapterFormat)
chap_param = A:ORIGIN ('ChapterFormat')
end
if utilities.is_set (chap_param) then -- if we found one
utilities.set_message ('err_chapter_ignored', {chap_param}); -- add error message
Chapter = ''; -- and set them to empty string to be safe with concatenation
TransChapter = '';
ChapterURL = '';
ScriptChapter = '';
ChapterFormat = '';
end
else -- otherwise, format chapter / article title
local no_quotes = false; -- default assume that we will be quoting the chapter parameter value
if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s)
if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title
no_quotes = true; -- then render it unquoted
end
end
Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter
if utilities.is_set (Chapter) then
Chapter = Chapter .. ChapterFormat ;
if 'map' == config.CitationClass and utilities.is_set (TitleType) then
Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title
end
Chapter = Chapter .. sepc .. ' ';
elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ...
Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it
end
end
-- Format main title
local plain_title = false;
local accept_title;
Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title>
if accept_title and ('' == Title) then -- only support forced empty for now "(())"
Title = cfg.messages['notitle']; -- replace by predefined "No title" message
-- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting
ScriptTitle = ''; -- just mute for now
TransTitle = ''; -- just mute for now
plain_title = true; -- suppress text decoration for descriptive title
utilities.set_message ('maint_untitled'); -- add maint cat
end
if not accept_title then -- <Title> not wrapped in accept-as-written markup
if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title=
Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three
elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ...
not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.)
Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters
end
if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then
utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title
end
if is_generic ('generic_titles', Title) then
utilities.set_message ('err_generic_title'); -- set an error message
end
end
if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'document', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) or
('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or
('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article
Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks
Title = utilities.wrap_style ('quoted-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle );
elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above)
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title
else
Title = utilities.wrap_style ('italic-title', Title);
Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped
TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle);
end
if utilities.is_set (TransTitle) then
if utilities.is_set (Title) then
TransTitle = " " .. TransTitle;
else
utilities.set_message ('err_trans_missing_title', {'title'});
end
end
if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs?
if utilities.is_set (TitleLink) and utilities.is_set (URL) then
utilities.set_message ('err_wikilink_in_url'); -- set an error message because we can't have both
TitleLink = ''; -- unset
end
if not utilities.is_set (TitleLink) and utilities.is_set (URL) then
Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. Format;
URL = ''; -- unset these because no longer needed
Format = "";
elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then
local ws_url;
ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here
if ws_url then
Title = external_link (ws_url, Title .. ' ', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title});
Title = Title .. TransTitle;
else
Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle;
end
else
local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink)
ws_url, ws_label, L = wikisource_url_make (Title:gsub('^[\'"]*(.-)[\'"]*$', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label
if ws_url then
Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup
Title = external_link (ws_url, Title .. ' ', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this?
Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title});
Title = Title .. TransTitle;
else
Title = Title .. TransTitle;
end
end
else
Title = TransTitle;
end
if utilities.is_set (Place) then
Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " ";
end
local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL
if utilities.is_set (Conference) then
if utilities.is_set (ConferenceURL) then
Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil );
end
Conference = sepc .. " " .. Conference .. ConferenceFormat;
elseif utilities.is_set (ConferenceURL) then
Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil );
end
local Position = '';
if not utilities.is_set (Position) then
local Minutes = A['Minutes'];
local Time = A['Time'];
if utilities.is_set (Minutes) then
if utilities.is_set (Time) then --TODO: make a function for this and similar?
utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. cfg.presentation['sep_list_pair'] .. utilities.wrap_style ('parameter', 'time')});
end
Position = " " .. Minutes .. " " .. cfg.messages['minutes'];
else
if utilities.is_set (Time) then
local TimeCaption = A['TimeCaption']
if not utilities.is_set (TimeCaption) then
TimeCaption = cfg.messages['event'];
if sepc ~= '.' then
TimeCaption = TimeCaption:lower();
end
end
Position = " " .. TimeCaption .. " " .. Time;
end
end
else
Position = " " .. Position;
At = '';
end
Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase);
At = utilities.is_set (At) and (sepc .. " " .. At) or "";
Position = utilities.is_set (Position) and (sepc .. " " .. Position) or "";
if config.CitationClass == 'map' then
local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier
local Inset = A['Inset'];
if utilities.is_set ( Inset ) then
Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase);
end
if utilities.is_set ( Sections ) then
Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase);
elseif utilities.is_set ( Section ) then
Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase);
end
At = At .. Inset .. Section;
end
local Others = A['Others'];
if utilities.is_set (Others) and 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor=
if config.CitationClass == "AV-media-notes"
or config.CitationClass == "audio-visual" then -- special maint for AV/M which has a lot of 'false' positives right now
utilities.set_message ('maint_others_avm')
else
utilities.set_message ('maint_others');
end
end
Others = utilities.is_set (Others) and (sepc .. " " .. Others) or "";
if utilities.is_set (Translators) then
Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc);
end
if utilities.is_set (Interviewers) then
Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc);
end
local TitleNote = A['TitleNote'];
TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or "";
if utilities.is_set (Edition) then
if Edition:match ('%f[%a][Ee]d%n?%.?$') or Edition:match ('%f[%a][Ee]dition$') then -- Ed, ed, Ed., ed., Edn, edn, Edn., edn.
utilities.set_message ('err_extra_text_edition'); -- add error message
end
Edition = " " .. wrap_msg ('edition', Edition);
else
Edition = '';
end
Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum
local Agency = A['Agency'];
Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or "";
Volume = format_volume_issue (Volume, Issue, ArticleNumber, config.CitationClass, Periodical_origin, sepc, use_lowercase);
if utilities.is_set (AccessDate) then
local retrv_text = " " .. cfg.messages['retrieved']
AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format
if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case
AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text
AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates
end
if utilities.is_set (ID) then ID = sepc .. " " .. ID; end
local Docket = A['Docket'];
if "thesis" == config.CitationClass and utilities.is_set (Docket) then
ID = sepc .. " Docket " .. Docket .. ID;
end
if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set
ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set
end
if utilities.is_set (URL) then
URL = " " .. external_link( URL, nil, URL_origin, UrlAccess );
end
local Quote = A['Quote'];
local TransQuote = A['TransQuote'];
local ScriptQuote = A['ScriptQuote'];
if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then
if utilities.is_set (Quote) then
if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks
Quote = Quote:sub(2, -2); -- strip them off
end
end
Quote = kern_quotes (Quote); -- kern if needed
Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags
if utilities.is_set (ScriptQuote) then
Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped
end
if utilities.is_set (TransQuote) then
if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks
TransQuote = TransQuote:sub(2, -2); -- strip them off
end
Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote );
end
if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix
local quote_prefix = '';
if utilities.is_set (QuotePage) then
extra_text_in_page_check (QuotePage, 'quote-page'); -- add to maint cat if |quote-page= value begins with what looks like p., pp., etc.
if not NoPP then
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', '';
end
elseif utilities.is_set (QuotePages) then
extra_text_in_page_check (QuotePages, 'quote-pages'); -- add to maint cat if |quote-pages= value begins with what looks like p., pp., etc.
if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page
quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', '';
elseif not NoPP then
quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', '';
else
quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', '';
end
end
Quote = quote_prefix .. ": " .. Quote;
else
Quote = sepc .. " " .. Quote;
end
PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set
end
-- We check length of PostScript here because it will have been nuked by
-- the quote parameters. We'd otherwise emit a message even if there wasn't
-- a displayed postscript.
-- TODO: Should the max size (1) be configurable?
-- TODO: Should we check a specific pattern?
if utilities.is_set(PostScript) and mw.ustring.len(PostScript) > 1 then
utilities.set_message ('maint_postscript')
end
local Archived;
if utilities.is_set (ArchiveURL) then
if not utilities.is_set (ArchiveDate) then -- ArchiveURL set but ArchiveDate not set
utilities.set_message ('err_archive_missing_date'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
else
if utilities.is_set (ArchiveDate) then -- ArchiveURL not set but ArchiveDate is set
utilities.set_message ('err_archive_date_missing_url'); -- emit an error message
ArchiveURL = ''; -- empty string for concatenation
ArchiveDate = ''; -- empty string for concatenation
end
end
if utilities.is_set (ArchiveURL) then
local arch_text;
-- if not utilities.is_set (ArchiveDate) then
-- utilities.set_message ('err_archive_missing_date');
-- ArchiveDate = ''; -- empty string for concatenation
-- end
if "live" == UrlStatus then
arch_text = cfg.messages['archived'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. ' ' .. utilities.substitute ( cfg.messages['archived-live'],
{external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil) .. ArchiveFormat, ArchiveDate } );
else
Archived = '';
end
if not utilities.is_set (OriginalURL) then
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown'
if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then
arch_text = cfg.messages['archived-unfit'];
if sepc ~= "." then arch_text = arch_text:lower() end
Archived = sepc .. ' ' .. arch_text .. ArchiveDate; -- format already styled
if 'bot: unknown' == UrlStatus then
utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added
else
utilities.set_message ('maint_unfit'); -- and add a category if not already added
end
else -- UrlStatus is empty, 'dead'
arch_text = cfg.messages['archived-dead'];
if sepc ~= "." then arch_text = arch_text:lower() end
if utilities.is_set (ArchiveDate) then
Archived = sepc .. " " .. utilities.substitute ( arch_text,
{ external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled
else
Archived = ''; -- unset for concatenation
end
end
else -- OriginalUrl not set
utilities.set_message ('err_archive_missing_url');
Archived = ''; -- empty string for concatenation
end
elseif utilities.is_set (ArchiveFormat) then
Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message
else
Archived = '';
end
-- local Lay = '';
-- local LaySource = A['LaySource'];
-- local LayURL = A['LayURL'];
-- local LayFormat = A['LayFormat'];
-- LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url');
-- if utilities.is_set (LayURL) then
-- if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end
-- if utilities.is_set (LaySource) then
-- LaySource = " – ''" .. utilities.safe_for_italics (LaySource) .. "''";
-- else
-- LaySource = "";
-- end
-- if sepc == '.' then
-- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
-- else
-- Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate
-- end
-- elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url=
-- Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message
-- end
local TranscriptURL = A['TranscriptURL']
local TranscriptFormat = A['TranscriptFormat'];
TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl');
local Transcript = A['Transcript'];
local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL
if utilities.is_set (Transcript) then
if utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil );
end
Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat;
elseif utilities.is_set (TranscriptURL) then
Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil );
end
local Publisher;
if utilities.is_set (PublicationDate) then
PublicationDate = wrap_msg ('published', PublicationDate);
end
if utilities.is_set (PublisherName) then
if utilities.is_set (PublicationPlace) then
Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate;
else
Publisher = sepc .. " " .. PublisherName .. PublicationDate;
end
elseif utilities.is_set (PublicationPlace) then
Publisher= sepc .. " " .. PublicationPlace .. PublicationDate;
else
Publisher = PublicationDate;
end
-- Several of the above rely upon detecting this as nil, so do it last.
if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then
if utilities.is_set (Title) or utilities.is_set (TitleNote) then
Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
else
Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin);
end
end
local Language = A['Language'];
if utilities.is_set (Language) then
Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc.
else
Language=''; -- language not specified so make sure this is an empty string;
--[[ TODO: need to extract the wrap_msg from language_parameter
so that we can solve parentheses bunching problem with Format/Language/TitleType
]]
end
--[[
Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that
the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided).
]]
if "speech" == config.CitationClass then -- cite speech only
TitleNote = TitleType; -- move TitleType to TitleNote so that it renders ahead of |event=
TitleType = ''; -- and unset
if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter
if utilities.is_set (Conference) then -- and if |event= is set
Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering
end
end
end
-- Piece all bits together at last. Here, all should be non-nil.
-- We build things this way because it is more efficient in LUA
-- not to keep reassigning to the same string variable over and over.
local tcommon;
local tcommon2; -- used for book cite when |contributor= is set
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
if not (utilities.is_set (Authors) or utilities.is_set (Editors)) then
Others = Others:gsub ('^' .. sepc .. ' ', ''); -- when no authors and no editors, strip leading sepc and space
end
if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here?
tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc );
elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites
if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc.
tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2
tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
else
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc );
end
elseif 'map' == config.CitationClass then -- special cases for cite map
if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter
tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
elseif utilities.is_set (Periodical) then -- map in a periodical
tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc );
else -- a sheet or stand-alone map
tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc );
end
elseif 'episode' == config.CitationClass then -- special case for cite episode
tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc );
else -- all other CS1 templates
tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language,
Volume, Others, Edition, Publisher, Agency}, sepc );
end
if #ID_list > 0 then
ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc );
else
ID_list = ID;
end
local Via = A['Via'];
Via = utilities.is_set (Via) and wrap_msg ('via', Via) or '';
local idcommon;
if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript
-- idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc );
idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Quote }, sepc );
else
-- idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc );
idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Quote }, sepc );
end
local text;
local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At;
local OrigDate = A['OrigDate'];
OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or '';
if utilities.is_set (Date) then
if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set
Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses
else -- neither of authors and editors set
if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc
Date = " " .. Date .. OrigDate; -- Date does not begin with sepc
else
Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc
end
end
end
if utilities.is_set (Authors) then
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination
Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Editors) then
local in_text = '';
local post_text = '';
if utilities.is_set (Chapter) and 0 == #c then
in_text = cfg.messages['in'] .. ' ';
if (sepc ~= '.') then
in_text = in_text:lower(); -- lowercase for cs2
end
end
if EditorCount <= 1 then
post_text = ' (' .. cfg.messages['editor'] .. ')'; -- be consistent with no-author, no-date case
else
post_text = ' (' .. cfg.messages['editors'] .. ')';
end
Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space
end
if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc.
local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' ';
if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2
Authors = by_text .. Authors; -- author follows title so tweak it here
if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated
Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space
end
if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination
Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space
end
text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc );
else
text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc );
end
elseif utilities.is_set (Editors) then
if utilities.is_set (Date) then
if EditorCount <= 1 then
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editor'];
else
Editors = Editors .. cfg.presentation['sep_name'] .. cfg.messages['editors'];
end
else
if EditorCount <= 1 then
Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " "
else
Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " "
end
end
text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc );
else
if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then
text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc );
else
text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc );
end
end
if utilities.is_set (PostScript) and PostScript ~= sepc then
text = safe_join( {text, sepc}, sepc ); -- Deals with italics, spaces, etc.
text = text:sub(1, -sepc:len() - 1);
end
text = safe_join( {text, PostScript}, sepc );
-- Now enclose the whole thing in a <cite> element
local options_t = {};
options_t.class = cite_class_attribute_make (config.CitationClass, Mode);
local Ref = is_valid_parameter_value (A['Ref'], A:ORIGIN('Ref'), cfg.keywords_lists['ref'], nil, true); -- nil when |ref=harv; A['Ref'] else
if 'none' ~= cfg.keywords_xlate[(Ref and Ref:lower()) or ''] then
local namelist_t = {}; -- holds selected contributor, author, editor name list
local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation
if #c > 0 then -- if there is a contributor list
namelist_t = c; -- select it
elseif #a > 0 then -- or an author list
namelist_t = a;
elseif #e > 0 then -- or an editor list
namelist_t = e;
end
local citeref_id;
if #namelist_t > 0 then -- if there are names in namelist_t
citeref_id = make_citeref_id (namelist_t, year); -- go make the CITEREF anchor
if mw.uri.anchorEncode (citeref_id) == ((Ref and mw.uri.anchorEncode (Ref)) or '') then -- Ref may already be encoded (by {{sfnref}}) so citeref_id must be encoded before comparison
utilities.set_message ('maint_ref_duplicates_default');
end
else
citeref_id = ''; -- unset
end
options_t.id = Ref or citeref_id;
end
if string.len (text:gsub('%b<>', '')) <= 2 then -- remove html and html-like tags; then get length of what remains;
z.error_cats_t = {}; -- blank the categories list
z.error_msgs_t = {}; -- blank the error messages list
OCinSoutput = nil; -- blank the metadata string
text = ''; -- blank the the citation
utilities.set_message ('err_empty_citation'); -- set empty citation message and category
end
local render_t = {}; -- here we collect the final bits for concatenation into the rendered citation
if utilities.is_set (options_t.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags
table.insert (render_t, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options_t.id), mw.text.nowiki(options_t.class), text})); -- when |ref= is set or when there is a namelist
else
table.insert (render_t, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options_t.class), text})); -- when |ref=none or when namelist_t empty and |ref= is missing or is empty
end
if OCinSoutput then -- blanked when citation is 'empty' so don't bother to add boilerplate metadata span
table.insert (render_t, utilities.substitute (cfg.presentation['ocins'], OCinSoutput)); -- format and append metadata to the citation
end
local template_name = ('citation' == config.CitationClass) and 'citation' or 'cite ' .. (cfg.citation_class_map_t[config.CitationClass] or config.CitationClass);
local template_link = '[[Template:' .. template_name .. '|' .. template_name .. ']]';
local msg_prefix = '<code class="cs1-code">{{' .. template_link .. '}}</code>: ';
if 0 ~= #z.error_msgs_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_e, template_link));
table.insert (render_t, ' '); -- insert a space between citation and its error messages
table.sort (z.error_msgs_t); -- sort the error messages list; sorting includes wrapping <span> and <code> tags; hidden-error sorts ahead of visible-error
local hidden = true; -- presume that the only error messages emited by this template are hidden
for _, v in ipairs (z.error_msgs_t) do -- spin through the list of error messages
if v:find ('cs1-visible-error', 1, true) then -- look for the visible error class name
hidden = false; -- found one; so don't hide the error message prefix
break; -- and done because no need to look further
end
end
z.error_msgs_t[1] = table.concat ({utilities.error_comment (msg_prefix, hidden), z.error_msgs_t[1]}); -- add error message prefix to first error message to prevent extraneous punctuation
table.insert (render_t, table.concat (z.error_msgs_t, '; ')); -- make a big string of error messages and add it to the rendering
end
if 0 ~= #z.maint_cats_t then
mw.addWarning (utilities.substitute (cfg.messages.warning_msg_m, template_link));
table.sort (z.maint_cats_t); -- sort the maintenance messages list
local maint_msgs_t = {}; -- here we collect all of the maint messages
if 0 == #z.error_msgs_t then -- if no error messages
table.insert (maint_msgs_t, msg_prefix); -- insert message prefix in maint message livery
end
for _, v in ipairs( z.maint_cats_t ) do -- append maintenance categories
table.insert (maint_msgs_t, -- assemble new maint message and add it to the maint_msgs_t table
table.concat ({v, ' (', utilities.substitute (cfg.messages[':cat wikilink'], v), ')'})
);
end
table.insert (render_t, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs_t, ' '))); -- wrap the group of maint messages with proper presentation and save
end
if not no_tracking_cats then
for _, v in ipairs (z.error_cats_t) do -- append error categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
for _, v in ipairs (z.maint_cats_t) do -- append maintenance categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
for _, v in ipairs (z.prop_cats_t) do -- append properties categories
table.insert (render_t, utilities.substitute (cfg.messages['cat wikilink'], v));
end
end
return table.concat (render_t); -- make a big string and done
end
--[[--------------------------< V A L I D A T E >--------------------------------------------------------------
Looks for a parameter's name in one of several whitelists.
Parameters in the whitelist can have three values:
true - active, supported parameters
false - deprecated, supported parameters
nil - unsupported parameters
]]
local function validate (name, cite_class, empty)
local name = tostring (name);
local enum_name; -- parameter name with enumerator (if any) replaced with '#'
local state;
local function state_test (state, name) -- local function to do testing of state values
if true == state then return true; end -- valid actively supported parameter
if false == state then
if empty then return nil; end -- empty deprecated parameters are treated as unknowns
deprecated_parameter (name); -- parameter is deprecated but still supported
return true;
end
if 'tracked' == state then
local base_name = name:gsub ('%d', ''); -- strip enumerators from parameter names that have them to get the base name
utilities.add_prop_cat ('tracked-param', {base_name}, base_name); -- add a properties category; <base_name> modifies <key>
return true;
end
return nil;
end
if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted
return nil;
end
-- replace wnumerator digit(s) with # (|last25= becomes |last#=) (mw.ustring because non-Western 'local' digits)
enum_name = mw.ustring.gsub (name, '%d+$', '#'); -- where enumerator is last charaters in parameter name (these to protect |s2cid=)
enum_name = mw.ustring.gsub (enum_name, '%d+([%-l])', '#%1'); -- where enumerator is in the middle of the parameter name; |author#link= is the oddity
if 'document' == cite_class then -- special case for {{cite document}}
state = whitelist.document_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false;
end
if utilities.in_array (cite_class, whitelist.preprint_template_list_t) then -- limited parameter sets allowed for these templates
state = whitelist.limited_parameters_t[enum_name]; -- this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
state = whitelist.preprint_arguments_t[cite_class][name]; -- look in the parameter-list for the template identified by cite_class
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end -- end limited parameter-set templates
if utilities.in_array (cite_class, whitelist.unique_param_template_list_t) then -- template-specific parameters for templates that accept parameters from the basic argument list
state = whitelist.unique_arguments_t[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class
if true == state_test (state, name) then return true; end
end -- if here, fall into general validation
state = whitelist.common_parameters_t[enum_name]; -- all other templates; all normal parameters allowed; this list holds enumerated and nonenumerated parameters
if true == state_test (state, name) then return true; end
return false; -- not supported because not found or name is set to nil
end
--[=[-------------------------< I N T E R _ W I K I _ C H E C K >----------------------------------------------
check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language
code. when these values have the form (without leading colon):
[[<prefix>:link|label]] return label as plain-text
[[<prefix>:link]] return <prefix>:link as plain-text
return value as is else
]=]
local function inter_wiki_check (parameter, value)
local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists
local _;
if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so
utilities.set_message ('err_bad_paramlink', parameter); -- emit an error message
_, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink
end
return value;
end
--[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------
Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal
sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a
parameter that is missing its pipe. There are two tests made:
{{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name
{{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki)
cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML
tags are removed before the search.
If a missing pipe is detected, this function adds the missing pipe maintenance category.
]]
local function missing_pipe_check (parameter, value)
local capture;
value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc.
capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes
if capture and validate (capture) then -- if the capture is a valid parameter name
utilities.set_message ('err_missing_pipe', parameter);
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >--------------------------------------
look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_punc (param, value)
if 'number' == type (param) then
return;
end
param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize
if cfg.punct_skip[param] then
return; -- parameter name found in the skip table so done
end
if value:match ('[,;:]$') then
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
if value:match ('^=') then -- sometimes an extraneous '=' character appears ...
utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat
end
end
--[[--------------------------< H A S _ E X T R A N E O U S _ U R L >------------------------------------------
look for extraneous url parameter values; parameters listed in skip table are not checked
]]
local function has_extraneous_url (url_param_t)
local url_error_t = {};
check_for_url (url_param_t, url_error_t); -- extraneous url check
if 0 ~= #url_error_t then -- non-zero when there are errors
table.sort (url_error_t);
utilities.set_message ('err_param_has_ext_link', {utilities.make_sep_list (#url_error_t, url_error_t)}); -- add this error message
end
end
--[[--------------------------< C I T A T I O N >--------------------------------------------------------------
This is used by templates such as {{cite book}} to create the actual citation text.
]]
local function citation(frame)
Frame = frame; -- save a copy in case we need to display an error message in preview mode
local config = {}; -- table to store parameters from the module {{#invoke:}}
for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame
config[k] = v;
-- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep?
end
-- i18n: set the name that your wiki uses to identify sandbox subpages from sandbox template invoke (or can be set here)
local sandbox = ((config.SandboxPath and '' ~= config.SandboxPath) and config.SandboxPath) or '/sandbox'; -- sandbox path from {{#invoke:Citation/CS1/sandbox|citation|SandboxPath=/...}}
is_sandbox = nil ~= string.find (frame:getTitle(), sandbox, 1, true); -- is this invoke the sandbox module?
sandbox = is_sandbox and sandbox or ''; -- use i18n sandbox to load sandbox modules when this module is the sandox; live modules else
local pframe = frame:getParent()
local styles;
cfg = mw.loadData ('Module:Citation/CS1/Configuration' .. sandbox); -- load sandbox versions of support modules when {{#invoke:Citation/CS1/sandbox|...}}; live modules else
whitelist = mw.loadData ('Module:Citation/CS1/Whitelist' .. sandbox);
utilities = require ('Module:Citation/CS1/Utilities' .. sandbox);
validation = require ('Module:Citation/CS1/Date_validation' .. sandbox);
identifiers = require ('Module:Citation/CS1/Identifiers' .. sandbox);
metadata = require ('Module:Citation/CS1/COinS' .. sandbox);
styles = 'Module:Citation/CS1' .. sandbox .. '/styles.css';
utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables
identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module
validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module
metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module
z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities
is_preview_mode = not utilities.is_set (frame:preprocess ('{{REVISIONID}}'));
local args = {}; -- table where we store all of the template's arguments
local suggestions = {}; -- table where we store suggestions if we need to loadData them
local error_text; -- used as a flag
local capture; -- the single supported capture when matching unknown parameters using patterns
local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing
for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame
v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string
if v ~= '' then
if ('string' == type (k)) then
k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9
end
if not validate( k, config.CitationClass ) then
if type (k) ~= 'string' then -- exclude empty numbered parameters
if v:match("%S+") ~= nil then
error_text = utilities.set_message ('err_text_ignored', {v});
end
elseif validate (k:lower(), config.CitationClass) then
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, k:lower()}); -- suggest the lowercase version of the parameter
else
if nil == suggestions.suggestions then -- if this table is nil then we need to load it
suggestions = mw.loadData ('Module:Citation/CS1/Suggestions' .. sandbox); --load sandbox version of suggestion module when {{#invoke:Citation/CS1/sandbox|...}}; live module else
end
for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter
capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match
if capture then -- if the pattern matches
param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator)
if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists)
error_text = utilities.set_message ('err_parameter_ignored_suggest', {k, param}); -- set the suggestion error message
else
error_text = utilities.set_message ('err_parameter_ignored', {k}); -- suggested param not supported by this template
v = ''; -- unset
end
end
end
if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an explicit suggestion?
if (suggestions.suggestions[ k:lower() ] ~= nil) and validate (suggestions.suggestions[ k:lower() ], config.CitationClass) then
utilities.set_message ('err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]});
else
utilities.set_message ('err_parameter_ignored', {k});
v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists)
end
end
end
end
args[k] = v; -- save this parameter and its value
elseif not utilities.is_set (v) then -- for empty parameters
if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter
k = ('' == k) and '(empty string)' or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text
table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list
end
-- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep?
-- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that)
-- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here
end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact?
end
if 0 ~= #empty_unknowns then -- create empty unknown error message
utilities.set_message ('err_param_unknown_empty', {
1 == #empty_unknowns and '' or 's',
utilities.make_sep_list (#empty_unknowns, empty_unknowns)
});
end
local url_param_t = {};
for k, v in pairs( args ) do
if 'string' == type (k) then -- don't evaluate positional parameters
has_invisible_chars (k, v); -- look for invisible characters
end
has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values
missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe?
args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label
if 'string' == type (k) and not cfg.url_skip[k] then -- when parameter k is not positional and not in url skip table
url_param_t[k] = v; -- make a parameter/value list for extraneous url check
end
end
has_extraneous_url (url_param_t); -- look for url in parameter values where a url does not belong
return table.concat ({
frame:extensionTag ('templatestyles', '', {src=styles}),
citation0( config, args)
});
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {citation = citation};
03d0c65e9544044eef296e124f940c7cc9319972
Module:Citation/CS1/styles.css
828
832
1847
1846
2023-10-01T10:38:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/styles.css]]
sanitized-css
text/css
/* Protection icon
the following line controls the page-protection icon in the upper right corner
it must remain within this comment
{{sandbox other||{{pp-template}}}}
*/
/* Overrides
Some wikis do not override user agent default styles for HTML <cite> and <q>,
unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]].
The word-wrap and :target styles were moved here from Common.css.
On en.wp, keep these the same as [[Template:Citation/styles.css]].
*/
cite.citation {
font-style: inherit; /* Remove italics for <cite> */
/* Break long urls, etc., rather than overflowing box */
word-wrap: break-word;
}
.citation q {
quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */
}
/* Highlight linked elements (such as clicked references) in blue */
.citation:target {
/* ignore the linter - all browsers of interest implement this */
background-color: rgba(0, 127, 255, 0.133);
}
/* ID and URL access
Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external
for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need
to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon.
That's essentially 2 classes and 1 element.
the .id-lock-... selectors are for use by non-citation templates like
{{Catalog lookup link}} which do not have to handle PDF links
*/
.id-lock-free a,
.citation .cs1-lock-free a {
background: url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-limited a,
.id-lock-registration a,
.citation .cs1-lock-limited a,
.citation .cs1-lock-registration a {
background: url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg)
right 0.1em center/9px no-repeat;
}
.id-lock-subscription a,
.citation .cs1-lock-subscription a {
background: url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg)
right 0.1em center/9px no-repeat;
}
/* Wikisource
Wikisource icon when |chapter= or |title= is wikilinked to Wikisource
as in cite wikisource
*/
.cs1-ws-icon a {
background: url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg)
right 0.1em center/12px no-repeat;
}
/* Errors and maintenance */
.cs1-code {
/* <code>...</code> style override: mediawiki's css definition is specified here:
https://git.wikimedia.org/blob/mediawiki%2Fcore.git/
69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199
*/
color: inherit;
background: inherit;
border: none;
padding: inherit;
}
.cs1-hidden-error {
display: none;
color: #d33;
}
.cs1-visible-error {
color: #d33;
}
.cs1-maint {
display: none;
color: #3a3;
margin-left: 0.3em;
}
/* Small text size
Set small text size in one place. 0.95 (here) * 0.9 (from references list) is
~0.85, which is the lower bound for size for accessibility. Old styling for this
was just 0.85. We could write the rule so that when this template is inside
references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */
.cs1-format {
font-size: 95%;
}
/* kerning */
.cs1-kern-left {
padding-left: 0.2em;
}
.cs1-kern-right {
padding-right: 0.2em;
}
/* selflinks – avoid bold font style when cs1|2 template links to the current page */
.citation .mw-selflink {
font-weight: inherit;
}
7c96feb084b1883e7b6522660da6a14bdcc94752
Template:Plain link
10
833
1849
1848
2023-10-01T10:38:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Plain_link]]
wikitext
text/x-wiki
<span class="plainlinks">{{SAFESUBST:<noinclude />#if:{{{2|{{{NAME|{{{name|}}}}}}}}}
|[{{{1|{{{URL|{{{url}}}}}}}}} {{{2|{{{NAME|{{{name|}}}}}}}}}]
|[{{{1|{{{URL|{{{url}}}}}}}}}]
}}</span><noinclude>
{{documentation}}
</noinclude>
2730384491e116ee2f16e9ceed1cb23b7bb148a0
Template:Pipe
10
834
1851
1850
2023-10-01T10:38:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pipe]]
wikitext
text/x-wiki
|<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage -->
</noinclude>
2e39a107f660e0f346b655cc3cb1a4a6be07247d
Template:Cs1
10
835
1853
1852
2023-10-01T10:38:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cs1]]
wikitext
text/x-wiki
[[Help:Citation Style 1|Citation Style 1]]<noinclude>
[[Category:Documentation assistance templates]]
</noinclude>
1da8ad17d867e11fdecfe858aa0b0e5a632bb6e8
Template:Cs2
10
836
1855
1854
2023-10-01T10:38:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cs2]]
wikitext
text/x-wiki
[[Help:Citation Style 2|Citation Style 2]]<noinclude>
[[Category:Documentation assistance templates]]
</noinclude>
858b36b946491e8f374a732e2a72589c9d6f7f00
Module:Citation/CS1/doc
828
837
1857
1856
2023-10-01T10:38:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/doc]]
wikitext
text/x-wiki
<section begin=header />
{{sandbox other||
{{#switch:{{FULLPAGENAME}}
|Module:Citation/CS1={{high-risk |article-space=yes |no-percent=yes}} {{Uses TemplateStyles|Module:Citation/CS1/styles.css}}
|Module:Citation/CS1/Configuration={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Whitelist={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Date validation={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Identifiers={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Utilities={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/COinS={{high-risk |article-space=yes |no-percent=yes}}
|Module:Citation/CS1/Suggestions={{high-use |article-space=yes |no-percent=yes}}
}}
{{Module rating|p}}}}<!-- if pagename does not contain sandbox -->
<section end=header />
This module and associated sub-modules support the {{cs1}} and {{cs2}} citation templates. In general, it is not intended to be called directly, but is called by one of the core CS1 and CS2 templates.
<section begin=module_components_table />
These files comprise the module support for CS1|2 citation templates:
{| class="wikitable" style="margin: 1em auto 1em auto;"
|+CS1 {{pipe}} CS2 modules
|-
!colspan="2"|live!!colspan="2"|sandbox!!diff!!description
|-
| rowspan="8"| [[File:Full-protection-shackle.svg|20px|alt=Gold padlock|link=|sysop]] || [[Module:Citation/CS1]] || [[Module:Citation/CS1/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Rendering and support functions
|-
| [[Module:Citation/CS1/Configuration]] || [[Module:Citation/CS1/Configuration/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Configuration/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FConfiguration&rev1=&page2=Module%3ACitation%2FCS1%2FConfiguration%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Translation tables; error and identifier handlers
|-
| [[Module:Citation/CS1/Whitelist]] || [[Module:Citation/CS1/Whitelist/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Whitelist/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FWhitelist&rev1=&page2=Module%3ACitation%2FCS1%2FWhitelist%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List of active and deprecated CS1{{pipe}}2 parameters
|-
| [[Module:Citation/CS1/Date validation]] || [[Module:Citation/CS1/Date validation/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Date_validation/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FDate+validation&rev1=&page2=Module%3ACitation%2FCS1%2FDate+validation%2Fsandbox&rev2=&action=&diffonly=&unhide= diff] || Date format validation functions
|-
| [[Module:Citation/CS1/Identifiers]] || [[Module:Citation/CS1/Identifiers/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Identifiers/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FIdentifiers&rev1=&page2=Module%3ACitation%2FCS1%2FIdentifiers%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that support the named identifiers (ISBN, DOI, PMID, etc.)
|-
| [[Module:Citation/CS1/Utilities]] || [[Module:Citation/CS1/Utilities/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Utilities/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FUtilities&rev1=&page2=Module%3ACitation%2FCS1%2FUtilities%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Common functions and tables
|-
| [[Module:Citation/CS1/COinS]] || [[Module:Citation/CS1/COinS/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/COinS/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FCOinS&rev1=&page2=Module%3ACitation%2FCS1%2FCOinS%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| Functions that render a CS1{{pipe}}2 template's metadata
|-
| [[Module:Citation/CS1/styles.css]] || [[Module:Citation/CS1/sandbox/styles.css]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/sandbox/styles.css&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2Fstyles.css&rev1=&page2=Module%3ACitation%2FCS1%2Fsandbox%2Fstyles.css&rev2=&action=&diffonly=&unhide= diff]|| [[CSS]] styles applied to the CS1{{pipe}}2 templates
|-
| [[File:Template-protection-shackle.svg|20px|alt=Silver padlock|link=|auto confirmed]] || [[Module:Citation/CS1/Suggestions]] || [[Module:Citation/CS1/Suggestions/sandbox]] || {{Plain link|url=https://en.wikipedia.org/w/index.php?title=Module:Citation/CS1/Suggestions/sandbox&action=edit|name=[edit<nowiki>]</nowiki>}} ||[https://en.wikipedia.org/wiki/Special:ComparePages?page1=Module%3ACitation%2FCS1%2FSuggestions&rev1=&page2=Module%3ACitation%2FCS1%2FSuggestions%2Fsandbox&rev2=&action=&diffonly=&unhide= diff]|| List that maps common erroneous parameter names to valid parameter names
|}
<section end=module_components_table />
Other documentation:
* [[Module talk:Citation/CS1/Feature requests]]
* [[Module talk:Citation/CS1/COinS]]
* [[Module:Cs1 documentation support]] – a set of functions (some experimental) that extract information from the module suite for the purpose of documenting CS1|2
** [[Module:Citation/CS1/doc/Category list]] – lists of category names taken directly from [[Module:Citation/CS1/Configuration]] and [[Module:Citation/CS1/Configuration/sandbox]]
testcases
*[[Module:Citation/CS1/testcases]] ([[Module talk:Citation/CS1/testcases|run]])
*[[Module:Citation/CS1/testcases/errors]] ([[Module talk:Citation/CS1/testcases/errors|run]]) – error and maintenance messaging
*[[Module:Citation/CS1/testcases/dates]] ([[Module talk:Citation/CS1/testcases/dates|run]]) – date validation
*[[Module:Citation/CS1/testcases/identifiers]] ([[Module talk:Citation/CS1/testcases/identifiers|run]]) – identifiers
*[[Module:Citation/CS1/testcases/anchor]] ([[Module talk:Citation/CS1/testcases/anchor|run]]) – CITEREF anchors
<includeonly>{{sandbox other||
[[Category:Modules that add a tracking category]]
{{#ifeq:{{SUBPAGENAME}}|Identifiers|[[Category:Modules using data from Wikidata]]}}
}}</includeonly>
56cf87a73a7f0f558be8d5697e91dcbcb2fdb3b6
Template:Social democracy sidebar
10
838
1859
1858
2023-10-01T10:39:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Social_democracy_sidebar]]
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude><includeonly>{{Sidebar with collapsible lists
| name = Social democracy sidebar
| pretitle = Part of [[:Category:Social democracy|a series]] on
| title = [[Social democracy]]
| imagestyle = padding:0.65em;
| image = [[File:Red rose 02.svg|75px|link=Rose (symbolism)#Socialism and social democracy]]
| listtitlestyle = border-top:1px solid #B60202;background:transparent;padding-left:0.3em;text-align:center;color:black;
| listclass = hlist
| liststyle = margin-top:0;padding:0 0.6em 0.6em;
| expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}}
| list1name = history
| list1title = [[History of social democracy|History]]
| list1 =
* [[Age of Enlightenment]]
* [[Frankfurt Declaration]]
* [[French Revolution]]
* [[Godesberg Program]]
* [[Humanism]]
* [[Internationalist–defencist schism]]
* [[Keynesian economics|Keynesianism]]
* [[Labour movement|Labor movement]]
* [[Marxism]]
** [[Orthodox Marxism|Orthodox]]
** [[Revisionism (Marxism)|Revisionist]]
* [[Nordic model]]
* [[Social democracy#Second International era and reform or revolution dispute (1889–1914)|Reformist–revolutionary dispute]]
* [[History of socialism|Socialism]]
* [[Revolutions of 1848]]
* [[Utopian socialism]]
* [[Welfare capitalism]]
| list2name = concepts
| list2title = Concepts
| list2 =
* [[Civil liberties]]
* [[Democracy]]
** [[Economic democracy|Economic]]
** [[Industrial democracy|Industrial]]
** [[Representative democracy|Representative]]
* [[Dirigisme]]
* [[Environmentalism]]
* [[Environmental protection]]
* [[Fair trade]]
* [[Gradualism]]
* [[Internationalism (politics)#Socialism|Internationalism]]
* [[Land reform]]
* [[Labor rights]]
* [[Left-wing nationalism]]
* [[Mixed economy]]
* [[Nationalization|Nationali{{#ifeq:{{{sp}}}|uk|s|z}}ation]]
* [[Negative and positive rights]]
* [[Progressivism]]
* [[Reformism]]
** [[Reformist Left|Left]]
** [[Reformism|Socialism]]
* [[Revolutionary socialism]]
* [[Secularism]]
* [[Social corporatism]]
* [[Social justice]]
* [[Social market economy]]
* [[Socialist state]]
** [[State capitalism|Capitalism]]
** [[State socialism|Socialism]]
* [[Trade union]]
* [[Tripartism]]
* [[Welfare]]
* [[Welfare state]]
| list3name = variants
| list3title = Variants
| list3 =
* [[Democratic socialism]]
* [[Ethical socialism]]
* [[Eduard Bernstein#Opinions|Evolutionary socialism]]
* [[Liberal socialism]]
* [[Socialism of the 21st century]]
* [[Third Way]]
| list4name = people
| list4title = [[List of social democrats|People]]
| list4 = <!-- Alphabetical by surname. -->
* [[B. R. Ambedkar|Ambedkar]]
* [[Salvador Allende|Allende]]
* [[Jacinda Ardern|Ardern]]
* [[Clement Attlee|Attlee]]
* [[Obafemi Awolowo|Awolowo]]
* [[José Batlle y Ordóñez|Batlle y Ordóñez]]
* [[August Bebel|Bebel]]
* [[David Ben-Gurion|Ben-Gurion]]
* [[Eduard Bernstein|Bernstein]]
* [[Rómulo Betancourt|Betancourt]]
* [[Zulfikar Ali Bhutto|Bhutto]]
* [[Tony Blair|Blair]]
* [[Louis Blanc|Blanc]]
* [[Willy Brandt|Brandt]]
* [[Hjalmar Branting|Branting]]
* [[Gordon Brown|Brown]]
* [[James Callaghan|Callaghan]]
* [[Lázaro Cárdenas|Cárdenas]]
* [[Helen Clark|Clark]]
* [[Bettino Craxi|Craxi]]
* [[Anthony Crosland|Crosland]]
* [[Jeremy Corbyn|Corbyn]]
* [[John Curtin|Curtin]]
* [[Ignacy Daszyński|Daszyński]]
* [[Eugene V. Debs|Debs]]
* [[Tommy Douglas|Douglas]]
* [[Willem Drees|Drees]]
* [[Friedrich Ebert|Ebert]]
* [[Bülent Ecevit|Ecevit]]
* [[Friedrich Engels|Engels]]
* [[Peter Fraser|Fraser]]
* [[Hugh Gaitskell|Gaitskell]]
* [[Indira Gandhi|Gandhi]]
* [[Felipe González|González]]
* [[João Goulart|Goulart]]
* [[Keir Hardie|Hardie]]
* [[Rudolf Hilferding|Hilferding]]
* [[Erdal İnönü|İnönü]]
* [[Jean Jaurès|Jaurès]]
* [[Roy Jenkins|Jenkins]]
* [[Kamal Jumblatt|Jumblatt]]
* [[Carsun Chang|Junmai]]
* [[Tetsu Katayama|Katayama]]
* [[Karl Kautsky|Kautsky]]
* [[Alexander Kerensky|Kerensky]]
* [[Anna Kéthly|Kéthly]]
* [[Norman Kirk|Kirk]]
* [[Ricardo Lagos|Lagos]]
* [[Ferdinand Lassalle|Lassalle]]
* [[Jack Layton|Layton]]
* [[Vladimir Lenin|Lenin]]
* [[René Lévesque|Lévesque]]
* [[Wilhelm Liebknecht|Liebknecht (father)]]
* [[Karl Liebknecht|Liebknecht (son)]]
* [[Rosa Luxemburg|Luxemburg]]
* [[Ramsay MacDonald|MacDonald]]
* [[Nelson Mandela|Mandela]]
* [[Karl Marx|Marx]]
* [[Alva Myrdal|Myrdal]]
* [[Jawaharlal Nehru|Nehru]]
* [[Olof Palme|Palme]]
* [[Georgi Plekhanov|Plekhanov]]
* [[Romano Prodi|Prodi]]
* [[Bertrand Russell|Russell]]
* [[Bernie Sanders|Sanders]]
* [[Michael Joseph Savage|Savage]]
* [[Thorvald Stauning|Stauning]]
* [[Norman Thomas|Thomas]]
* [[Joop den Uyl|Den Uyl]]
* [[Sidney Webb, 1st Baron Passfield|Webb]]
* [[Gough Whitlam|Whitlam]]
* [[Harold Wilson|Wilson]]
* [[Noe Zhordania|Zhordania]]
| list5name = orgs
| list5title = [[List of social democratic parties|Organi{{#ifeq:{{{sp}}}|uk|s|z}}ations]]
| list5 =
* [[International Trade Union Confederation]]
* [[International Union of Socialist Youth]]
* [[Party of European Socialists]]
* [[Progressive Alliance]]
* [[Socialist International]]
* [[Young European Socialists]]
| list6name = by region
| list6title = By region
| list6 =
* [[History of the Social Democratic Party of Austria|Austria]]
* [[History of the Social Democratic Party of Germany|Germany]]
* [[Social democracy in the United States|United States]]
| list7name = related
| list7title = Related
| list7 =
* [[Communism]]
* "[[The Internationale]]"
* [[Socialism]]
* [[Types of socialism]]
| navbarstyle = border-top:1px solid #B60202;
| belowstyle = font-weight:normal; border-top:1px solid #B60202; border-bottom:none;
| belowclass = plainlist
| below =
* '''{{portal-inline|Economics|size=tiny}}'''
* '''{{portal-inline|Politics|size=tiny}}'''
* '''{{portal-inline|Socialism|size=tiny}}'''
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
3b9093241143a86276aa4d5cef6bf1192d07fb7c
Module:Portal
828
839
1861
1860
2023-10-01T10:39:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal]]
Scribunto
text/plain
--[==[ This module is a Lua implementation of the old {{Portal}} template. As of February 2019 it is used on nearly 7,900,000 articles.
-- Please take care when updating it! It outputs two functions: p.portal, which generates a list of portals, and p.image, which
-- produces the image name for an individual portal.
-- The portal image data is kept in submodules of [[Module:Portal/images]], listed below:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
--
-- The images data pages are separated by the first letter to reduce server load when images are added, changed, or removed.
-- Previously all the images were on one data page at [[Module:Portal/images]], but this had the disadvantage that all
-- 5,000,000 pages using this module needed to be refreshed every time an image was added or removed.
]==]
local p = {}
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local function sandboxVersion(s)
return isSandbox and s..'-sand' or s
end
local templatestyles = 'Module:Portal'..sandbox..'/styles.css'
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
-- List of non-talk namespaces which should not be tracked (Talk pages are never tracked)
local badNamespaces = {'user','template','draft','wikipedia'}
-- Check whether to do tracking in this namespace
-- Returns true unless the page is one of the banned namespaces
local function checkTracking(title)
local thisPage = title or mw.title.getCurrentTitle()
if thisPage.isTalkPage then
return false
end
local ns = thisPage.nsText:lower()
for _, v in ipairs(badNamespaces) do
if ns == v then
return false
end
end
return true
end
local function matchImagePage(s)
-- Finds the appropriate image subpage given a lower-case
-- portal name plus the first letter of that portal name.
if type(s) ~= 'string' or #s < 1 then return end
local firstLetter = mw.ustring.sub(s, 1, 1)
local imagePage
if mw.ustring.find(firstLetter, '^[a-z]') then
imagePage = 'Module:Portal/images/' .. firstLetter .. sandbox
else
imagePage = 'Module:Portal/images/other' .. sandbox
end
return mw.loadData(imagePage)[s]
end
local function getAlias(s)
-- Gets an alias from the image alias data page.
local aliasData = mw.loadData('Module:Portal/images/aliases'..sandbox)
for portal, aliases in pairs(aliasData) do
for _, alias in ipairs(aliases) do
if alias == s then
return portal
end
end
end
end
local defaultImage = 'Portal-puzzle.svg|link=|alt='
local function getImageName(s)
-- Gets the image name for a given string.
if type(s) ~= 'string' or #s < 1 then
return defaultImage
end
s = mw.ustring.lower(s)
return matchImagePage(s) or matchImagePage(getAlias(s)) or defaultImage
end
-- Function to check argument portals for errors, generate tracking categories if needed
-- Function first checks for too few/many portals provided
-- Then checks the portal list to purge any portals that don't exist
-- Arguments:
-- portals: raw list of portals
-- args.tracking: is tracking requested? (will not track on bad titles or namespaces)
-- args.redlinks: should redlinks be displayed?
-- args.minPortals: minimum number of portal arguments
-- args.maxPortals: maximum number of portal arguments
-- Returns:
-- portals = list of portals, with redlinks purged (if args.redlinks=false)
-- trackingCat = possible tracking category
-- errorMsg = error message
function p._checkPortals(portals, args)
local trackingCat = ''
local errMsg = nil
-- Tracking is on by default.
-- It is disabled if any of the following is true
-- 1/ the parameter "tracking" is set to 'no, 'n', or 'false'
-- 2/ the current page fails the namespace or pagename tests
local trackingEnabled = args.tracking and checkTracking()
args.minPortals = args.minPortals or 1
args.maxPortals = args.maxPortals or -1
-- check for too few portals
if #portals < args.minPortals then
errMsg = 'please specify at least '..args.minPortals..' portal'..(args.minPortals > 1 and 's' or '')
trackingCat = (trackingEnabled and '[[Category:Portal templates with too few portals]]' or '')
return portals, trackingCat, errMsg
end
-- check for too many portals
if args.maxPortals >= 0 and #portals > args.maxPortals then
errMsg = 'too many portals (maximum = '..args.maxPortals..')'
trackingCat = (trackingEnabled and '[[Category:Portal templates with too many portals]]' or '')
return portals, trackingCat, errMsg
end
if not args.redlinks or trackingEnabled then
-- make new list of portals that exist
local existingPortals = {}
for _, portal in ipairs(portals) do
local portalTitle = mw.title.new(portal,"Portal")
-- if portal exists, put it into list
if portalTitle and portalTitle.exists then
table.insert(existingPortals,portal)
-- otherwise set tracking cat
elseif trackingEnabled then
trackingCat = "[[Category:Portal templates with redlinked portals]]"
end
end
-- If redlinks is off, use portal list purged of redlinks
portals = args.redlinks and portals or existingPortals
-- if nothing left after purge, set tracking cat
if #portals == 0 and trackingEnabled then
trackingCat = trackingCat.."[[Category:Pages with empty portal template]]"
end
end
return portals, trackingCat, errMsg
end
local function portalBox(args)
return mw.html.create('ul')
:attr('role', 'navigation')
:attr('aria-label', 'Portals')
:addClass('noprint')
:addClass(args.error and '' or sandboxVersion('portalbox'))
:addClass(args.border and sandboxVersion('portalborder') or '')
:addClass(sandboxVersion(args.left and 'portalleft' or 'portalright'))
:css('margin', args.margin or nil)
:newline()
end
local function fillBox(root, contents)
for _, item in ipairs(contents) do
local entry = root:tag('li')
entry:addClass(sandboxVersion('portalbox-entry'))
local image = entry:tag('span')
image:addClass(sandboxVersion('portalbox-image'))
image:wikitext(item[1])
local link = entry:tag('span')
link:addClass(sandboxVersion('portalbox-link'))
link:wikitext(item[2])
end
return root
end
function p._portal(portals, args)
-- This function builds the portal box used by the {{portal}} template.
-- Normalize all arguments
if args.redlinks == 'include' then args.redlinks = true end
args.addBreak = args['break']
for key, default in pairs({left=false,tracking=true,nominimum=false,
redlinks=false,addBreak=false,border=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local root = portalBox(args)
local trackingCat = ''
local errMsg = nil
args.minPortals = args.nominimum and 0 or 1
args.maxPortals = -1
portals, trackingCat, errMsg = p._checkPortals(portals, args)
root:wikitext(trackingCat)
-- if error message, put it in the box and return
if errMsg then
if args.border then -- suppress error message when border=no
args.error = true -- recreate box without fancy formatting
root = portalBox(args)
root:wikitext(trackingCat)
local errTag = root:tag('strong')
errTag:addClass('error')
errTag:css('padding','0.2em')
errTag:wikitext('Error: '..errMsg)
end
return tostring(root)
end
-- if no portals (and no error), just return tracking category
if #portals == 0 then
return trackingCat
end
local contents = {}
-- Display the portals specified in the positional arguments.
local defaultUsed = nil
for _, portal in ipairs(portals) do
local portalImage = getImageName(portal)
if portalImage == defaultImage then
defaultUsed = portal
end
local image = string.format('[[File:%s|32x28px|class=noviewer]]',
portalImage)
local link = string.format('[[Portal:%s|%s%sportal]]',
portal, portal, args.addBreak and '<br />' or ' ')
table.insert(contents, {image, link})
end
if defaultUsed and checkTracking() then
local cat = string.format('[[Category:Portal templates with default image|%s]]',
defaultUsed)
root:wikitext(cat)
end
return tostring(fillBox(root, contents))
end
function p._demo(imageList, args)
for key, default in pairs({left=false,border=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local root = portalBox(args)
local contents = {}
-- Display the portals specified in the positional arguments.
for _, fn in ipairs(imageList) do
local image = string.format('[[File:%s|32x28px|class=noviewer]]',fn)
local link = string.format('[[:File:%s|%s]]',fn,fn)
table.insert(contents,{image,link})
end
return tostring(fillBox(root,contents))
end
function p._image(portal,keep)
-- Wrapper function to allow getImageName() to be accessed through #invoke.
-- backward compatibility: if table passed, take first element
if type(portal) == 'table' then
portal = portal[1]
end
local name = getImageName(portal)
-- If keep is yes (or equivalent), then allow all metadata (like image borders) to be returned
local keepargs = yesno(keep)
local args = mw.text.split(name, "|", true)
local result = {args[1]} -- the filename always comes first
local category = ''
-- parse name, looking for category arguments
for i = 2,#args do
local m = mw.ustring.match(args[i], "^%s*category%s*=")
if keepargs or m then
table.insert(result, args[i])
end
end
-- reassemble arguments
return table.concat(result,"|")
end
local function getAllImageTable()
-- Returns an array containing all image subpages (minus aliases) as loaded by mw.loadData.
local images = {}
for i, subpage in ipairs{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'other'} do
local imageTable = mw.loadData('Module:Portal/images/' .. subpage .. sandbox)
for portal, image in pairs(imageTable) do
local args = mw.text.split(image,"|")
images[portal] = args[1] -- just use image filename
end
end
return images
end
function p._displayAll(portals, args)
-- This function displays all portals that have portal images. This function is for maintenance purposes and should not be used in
-- articles, for two reasons: 1) there are over 1500 portals with portal images, and 2) the module doesn't record how the portal
-- names are capitalized, so the portal links may be broken.
local lang = mw.language.getContentLanguage()
portals = portals or {}
for portal in pairs(getAllImageTable()) do
table.insert(portals,lang:ucfirst(portal))
end
table.sort(portals)
args.redlinks = args.redlinks or "yes"
return p._portal(portals, args)
end
function p._imageDupes()
-- This function searches the image subpages to find duplicate images. If duplicate images exist, it is not necessarily a bad thing,
-- as different portals might just happen to choose the same image. However, this function is helpful in identifying images that
-- should be moved to a portal alias for ease of maintenance.
local exists, dupes = {}, {}
for portal, image in pairs(getAllImageTable()) do
if not exists[image] then
exists[image] = portal
else
table.insert(dupes, string.format('The image "[[:File:%s|%s]]" is used for both portals "%s" and "%s".', image, image, exists[image], portal))
end
end
if #dupes < 1 then
return 'No duplicate images found.'
else
return 'The following duplicate images were found:\n* ' .. table.concat(dupes, '\n* ')
end
end
local function processPortalArgs(args)
-- This function processes a table of arguments and returns two tables: an array of portal names for processing by ipairs, and a table of
-- the named arguments that specify style options, etc. We need to use ipairs because we want to list all the portals in the order
-- they were passed to the template, but we also want to be able to deal with positional arguments passed explicitly, for example
-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values are present, so we need to make sure they are all removed.
args = type(args) == 'table' and args or {}
local portals = {}
local namedArgs = {}
for k, v in pairs(args) do
if type(k) == 'number' and type(v) == 'string' then -- Make sure we have no non-string portal names.
table.insert(portals, k)
elseif type(k) ~= 'number' then
namedArgs[k] = v
end
end
table.sort(portals)
for i, v in ipairs(portals) do
portals[i] = args[v]
end
return portals, namedArgs
end
-- Entry point for sorting portals from other named arguments
function p._processPortalArgs(args)
return processPortalArgs(args)
end
function p.image(frame)
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._image(portals[1],args.border)
end
function p.demo(frame)
local args = getArgs(frame)
local styles = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
return styles..p._demo(args,args)
end
local function makeWrapper(funcName)
-- Processes external arguments and sends them to the other functions.
return function (frame)
-- If called via #invoke, use the args passed into the invoking
-- template, or the args passed to #invoke if any exist. Otherwise
-- assume args are being passed directly in from the debug console
-- or from another Lua module.
-- Also: trim whitespace and remove blank arguments
local origArgs = getArgs(frame)
-- create two tables to pass to func: an array of portal names, and a table of named arguments.
local portals, args = processPortalArgs(origArgs)
local results = ''
if funcName == '_portal' or funcName == '_displayAll' then
results = frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} }
end
return results .. p[funcName](portals, args)
end
end
for _, funcName in ipairs{'portal', 'imageDupes', 'displayAll'} do
p[funcName] = makeWrapper('_' .. funcName)
end
return p
2c16356f0d15e035f16db3c400c43813fbecaced
Template:Spaces
10
840
1863
1862
2023-10-01T10:39:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Spaces]]
wikitext
text/x-wiki
<span class="nowrap">{{#iferror:{{#expr:{{{1|1}}}}}
|{{#switch:{{{1}}}
|fig= 
|en= 
|em= 
|thin= 
|hair= 
|
}}
|{{#invoke:String|rep|{{#switch:{{{2}}}
|fig= 
|en= 
|em= 
|thin= 
|hair= 
|
}}|{{{1|1}}}}}
}}</span><noinclude>
{{documentation}}
</noinclude>
a9ed762825e7579f15dcb9b171b0c1c3bf524b3f
Module:Portal/images/b
828
841
1865
1864
2023-10-01T10:39:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/b]]
Scribunto
text/plain
--[==[ This is the "B" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "B". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be
-- omitted.
]==]
return {
["babism"] = "Haykal2.gif|link=|alt=",
["baden-württemberg"] = "Flag of Baden-Württemberg.svg|border|link=|alt=flag", ["badminton"] = "Badminton racquet.svg|link=|alt=",
["bahrain"] = "Flag of Bahrain.svg|border|link=|alt=flag",
["bailiwick of guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag",
["bailiwick of jersey"] = "Flag of Jersey.svg|border|link=|alt=flag",
["balochistan, pakistan"] = "Flag of Balochistan.svg|border|link=|alt=",
["baltic states"] = "Subdivisions of baltic states.svg|link=|alt=map",
["baltimore"] = "Seal of Baltimore, Maryland.png|link=|alt=seal",
["bangalore"] = "Bangalore Palace.jpg|alt=icon",
["bangladesh"] = "Flag of Bangladesh.svg|border|link=|alt=flag",
["banks"] = "All-currency-symbol.svg|link=|alt=icon",
["barbados"] = "Flag of Barbados.svg|border|link=|alt=flag",
["baseball"] = "Baseball.svg|link=|alt=icon",
["basketball"] = "Basketball Clipart.svg|link=|alt=icon",
["battleships"] = "BS Bismarck.png|alt=icon",
["bavaria"] = "Flag of Bavaria (lozengy).svg|border|link=|alt=flag",
["bbc"] = "BBC Logo 2021.svg|link=|alt=",
["beer"] = "Projet bière logo v2.png|alt=icon",
["belarus"] = "Flag of Belarus.svg|border|link=|alt=flag",
["belgium"] = "Flag of Belgium.svg|border|link=|alt=flag",
["belize"] = "Flag of Belize.svg|border|link=|alt=flag",
["benin"] = "Flag of Benin.svg|border|link=|alt=flag",
["berkshire"] = "Flag of Berkshire.svg|link=|alt=flag",
["berlin"] = "Flag of Berlin (state).svg|border|link=|alt=flag",
["bermuda"] = "Flag of Bermuda.svg|border|link=|alt=flag",
["bhutan"] = "Flag of Bhutan.svg|border|link=|alt=flag",
["bible"] = "Bible.malmesbury.arp.jpg|link=|alt=",
["bihar"] = "Seal of Bihar.jpg|link=|alt=",
["biography"] = "P vip.svg|link=|alt=",
["biology"] = "Issoria lathonia.jpg|alt=icon",
["birds"] = "Eagle 01.svg|link=|alt=",
["blues"] = "Guit Blues.JPG|link=|alt=",
["bohemia"] = "Flag of Bohemia.svg|border|link=|alt=flag",
["bolivia"] = "Flag of Bolivia.svg|border|link=|alt=flag",
["bollywood"] = "Indiafilm.svg|alt=icon",
["bonaire"] = "Flag of Bonaire.svg|border|link=|alt=flag",
["books"] = "Nuvola apps bookcase.svg|alt=icon",
["bosnia and herzegovina"] = "Flag of Bosnia and Herzegovina.svg|border|link=|alt=flag",
["botany"] = "Rosa villosa.jpg|alt=icon",
["botswana"] = "Flag of Botswana.svg|border|link=|alt=flag",
["brandenburg"] = "Flag of Brandenburg.svg|border|link=|alt=flag",
["brazil"] = "Flag of Brazil.svg|border|link=|alt=flag",
["brigham young university"] = "Brigham Young University medallion.svg|link=|alt=seal",
["bristol"] = "Bristol arms cropped.jpg|alt=icon",
["british columbia"] = "Flag of British Columbia.svg|border|link=|alt=flag",
["british empire"] = "British Empire 1897.jpg|link=|alt=",
["british indian ocean territory"] = "Flag of the British Indian Ocean Territory.svg|border|link=|alt=flag",
["british virgin islands"] = "Flag of the British Virgin Islands.svg|border|link=|alt=flag",
["brunei"] = "Flag of Brunei.svg|border|link=|alt=flag",
["buddhism"] = "Dharma Wheel.svg|alt=icon",
["bulgaria"] = "Flag of Bulgaria.svg|border|link=|alt=flag",
["burkina faso"] = "Flag of Burkina Faso.svg|border|link=|alt=flag",
["burundi"] = "Flag of Burundi.svg|border|link=|alt=flag",
["buses"] = "BSicon BUS.svg|link=|alt=",
["business and economics"] = "Emblem-money.svg|alt=icon",
["byzantine empire"] = "Flag of Palaeologus Dynasty.svg|border|link=|alt=flag"
}
478b01f3f226cf941e2988888a0337f360ba173f
Module:Portal/images/s
828
842
1867
1866
2023-10-01T10:39:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/s]]
Scribunto
text/plain
--[==[ This is the "S" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "S". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["saba"] = "Flag of Saba.svg|border|link=|alt=flag",
["saint barthelemy"] = "Flag of Saint Barthelemy (local).svg|border|link=|alt=flag",
["saint helena, ascension and tristan da cunha"] = "Flag of Saint Helena.svg|border|link=|alt=flag",
["saint kitts and nevis"] = "Flag of Saint Kitts and Nevis.svg|border|link=|alt=flag",
["saint lucia"] = "Flag of Saint Lucia.svg|border|link=|alt=flag",
["saint martin"] = "Flag of Saint Martin.png|border|link=|alt=flag",
["saint pierre and miquelon"] = "Flag of Saint-Pierre and Miquelon.svg|border|link=|alt=flag",
["saint vincent and the grenadines"] = "Flag of Saint Vincent and the Grenadines.svg|border|link=|alt=flag",
["saints"] = "Gloriole blur.svg|link=|alt=",
["samoa"] = "Flag of Samoa.svg|border|link=|alt=flag",
["san antonio"] = "Coat of arms of San Antonio.svg|link=|alt=arms",
["san diego"] = "San Diego,California,USA. - panoramio (139).jpg|link=|alt=photo",
["san francisco bay area"] = "SF From Marin Highlands3.jpg|border|link=|alt=",
["san marino"] = "Flag of San Marino.svg|border|link=|alt=flag",
["são tomé and príncipe"] = "Flag of São Tomé and Príncipe.svg|border|link=|alt=flag",
["saskatchewan"] = "Flag of Saskatchewan.svg|border|link=|alt=flag",
["saudi arabia"] = "Flag of Saudi Arabia.svg|border|link=|alt=flag",
["saxony"] = "Flag of Saxony.svg|border|link=|alt=flag",
["schleswig-holstein"] = "Flag of Schleswig-Holstein (state).svg|border|link=|alt=flag",
["schools"] = "School.svg|link=|alt=icon",
["science"] = "Nuvola apps kalzium.svg|alt=icon",
["science and academia"] = "Rachel Carson w (cropped).jpg|link=|alt=photo",
["science fiction"] = "Sf-userbox.png|alt=icon",
["scotland"] = "Flag of Scotland.svg|border|link=|alt=flag",
["scottish islands"] = "ScottishIsles.jpg|link=|alt=map",
["scouting"] = "WikiProject Scouting fleur-de-lis dark.svg|alt=icon",
["seamounts"] = "Seamount.svg|link=|alt=",
["seattle"] = "SpaceNeedleTopClose.jpg|alt=icon",
["senegal"] = "Flag of Senegal.svg|border|link=|alt=flag",
["september 11 attacks"] = "Y24-Wtc-september-5.jpg|alt=icon",
["serbia"] = "Flag of Serbia.svg|border|link=|alt=flag",
["seton hall university"] = "Shu logo.png|link=|alt=logo",
["severe weather"] = "Marquette, Kansas EF4 tornado on April 14, 2012.png|link=|alt=icon",
["sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon",
["sex work"] = "Umbrella-159361.svg|link=|alt=",
["seychelles"] = "Flag of Seychelles.svg|border|link=|alt=flag",
["sf"] = "Dragon-149393.svg|alt=icon",
["sharjah"] = "Flag of Sharjah.svg|border|link=|alt=flag",
["sharks"] = "Greyreefsharksmall2.jpg|alt=icon",
["shia islam"] = "Ghadir logo.png|alt=icon",
["siberia"] = "Kuznetsk Alatau 3.jpg|border|link=|alt=",
["sierra leone"] = "Flag of Sierra Leone.svg|border|link=|alt=flag",
["sikhism"] = "Khanda emblem.svg|link=|alt=",
["sikkim"] = "Seal of Sikkim color.png|link=|alt=seal",
["sindh"] = "Flag of Sindh.svg|border|link=|alt=flag",
["singapore"] = "Flag of Singapore.svg|border|link=|alt=flag",
["sint eustatius"] = "Flag of Sint Eustatius.svg|border|link=|alt=flag",
["sint maarten"] = "Flag of Sint Maarten.svg|border|link=|alt=flag",
["slovakia"] = "Flag of Slovakia.svg|border|link=|alt=flag",
["slovenia"] = "Flag of Slovenia.svg|border|link=|alt=flag",
["snakes"] = "Snake icon.svg|link=|alt=",
["snooker"] = "Snooker balls triangled.png|alt=icon",
["social movements"] = "Peace sign.svg|link=|alt=",
["social science"] = "P social sciences-lightblue.png|link=|alt=icon",
["social sciences"] = "DrustveneNauke.png|alt=icon",
["socialism"] = "Red flag II.svg|alt=icon",
["society"] = "Social sciences.svg|alt=icon",
["software"] = "Crystal Clear device cdrom unmount.png|alt=icon",
["solar system"] = "Solar system.jpg|link=|alt=",
["solomon islands"] = "Flag of Solomon Islands.svg|border|link=|alt=flag",
["somalia"] = "Flag of Somalia.svg|border|link=|alt=flag",
["somaliland"] = "Flag of Somaliland.svg|border|link=|alt=flag",
["somerset"] = "Somerset shield.png|alt=icon",
["south africa"] = "Flag of South Africa.svg|border|link=|alt=flag",
["south america"] = "South America (orthographic projection).svg|link=|alt=map",
["south asia"] = "India 78.40398E 20.74980N.jpg|link=|alt=",
["south australia"] = "Flag of South Australia.svg|border|link=|alt=flag",
["south carolina"] = "Flag of South Carolina.svg|border|link=|alt=flag",
["south dakota"] = "Flag of South Dakota.svg|border|link=|alt=flag",
["south east england"] = "EnglandSouthEast.png|alt=icon",
["south georgia and the south sandwich islands"] = "Flag of South Georgia and the South Sandwich Islands.svg|border|link=|alt=flag",
["south korea"] = "Flag of South Korea.svg|border|link=|alt=flag",
["south sudan"] = "Flag of South Sudan.svg|border|link=|alt=flag",
["southeast asia"] = "Location Southeast Asia.svg|link=|alt=",
["southern california"] = "USA California Southern location map.svg|link=|alt=map",
["soviet union"] = "Flag of the Soviet Union.svg|border|link=|alt=flag",
["space"] = "Earth-moon.jpg|link=|alt=",
["spaceflight"] = "RocketSunIcon.svg|link=|alt=",
["spain"] = "Flag of Spain.svg|border|link=|alt=flag",
["speculative fiction"] = "Dragon-149393.svg|alt=icon",
["speculative fiction/fantasy"] = "Masked man.svg|link=|alt=icon",
["speculative fiction/horror"] = "Vampire Smiley.png|alt=icon",
["sports"] = "Sports icon.png|link=|alt=",
["sports and games"] = "Sports and games.png|alt=icon",
["sport of athletics"] = "Roman bronze copy of Myron’s Discobolos, 2nd century CE (Glyptothek Munich).jpg|link=|alt=",
["sri lanka"] = "Flag of Sri Lanka.svg|border|link=|alt=flag",
["staffordshire"] = "Staffordshire Flag.svg|border|link=|alt=flag",
["stamford"] = "Stamford town crest.png|link=|alt=crest",
["stanford university"] = "Stanford logo.png|link=|alt=logo",
["star"] = "He1523a.jpg|alt=icon",
["stars"] = "He1523a.jpg|alt=icon",
["state of georgia"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag",
["statistics"] = "Fisher iris versicolor sepalwidth.svg|alt=icon",
["sudan"] = "Flag of Sudan.svg|border|link=|alt=flag",
["superfunds"] = "Superfund sites.svg|link=|alt=map",
["supermarket"] = "ShoppingCart.svg|link=|alt=",
["supermarkets"] = "ShoppingCart.svg|link=|alt=",
["suriname"] = "Flag of Suriname.svg|border|link=|alt=flag",
["surrey"] = "EnglandSurrey.png|alt=icon",
["sweden"] = "Flag of Sweden.svg|border|link=|alt=flag",
["switzerland"] = "Flag of Switzerland.svg|border|link=|alt=flag",
["sydney"] = "Sydney COA.gif|alt=icon",
["syria"] = "Flag of Syria.svg|border|link=|alt=flag",
["systems engineering initiative"] = "Systems Engineering Process II.gif|link=|alt=diagram",
["systems science"] = "Complex-adaptive-system.jpg|link=|alt=diagram"
}
6352d6d2cc43aecf731427b7234d275ddf514e29
Module:Portal/images/p
828
843
1869
1868
2023-10-01T10:39:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/p]]
Scribunto
text/plain
--[==[ This is the "P" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "P". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["pacific northwest"] = "Abies lasiocarpa 0775.JPG|link=|alt=",
["painting"] = "600-artist-palette.svg|link=|alt=artist's palette",
["pakistan"] = "Flag of Pakistan.svg|border|link=|alt=flag",
["palaeontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon",
["palau"] = "Flag of Palau.svg|border|link=|alt=flag",
["paleontology"] = "Allosaurus Jardin des Plantes.png|link=|alt=icon",
["paleozoic"] = "Tiktaalik BW flopped.jpg|alt=icon",
["palestine"] = "Flag of Palestine.svg|border|link=|alt=flag",
["palestinian territories"] = "Flag of Palestine.svg|border|link=|alt=flag",
["pan-africanism"] = "Flag of the UNIA.svg",
["panama"] = "Flag of Panama.svg|border|link=|alt=flag",
["pandemics"] = "Protokol Kesehatan.jpg|link=|alt=",
["papua new guinea"] = "Flag of Papua New Guinea.svg|border|link=|alt=flag",
["paraguay"] = "Flag of Paraguay.svg|border|link=|alt=flag",
["patna"] = "Golghar, Patna, 1888.jpg|link=|alt=",
["peer review"] = "PR icon.png|alt=icon",
["pennsylvania"] = "Flag of Pennsylvania.svg|border|link=|alt=flag",
["people's republic of china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag",
["peru"] = "Flag of Peru.svg|border|link=|alt=flag",
["philadelphia"] = "Libertybell alone small.jpg|link=|alt=",
["philately"] = "Stamp UK Penny Red pl148.jpg|link=|alt=",
["philippines"] = "Flag of the Philippines.svg|border|link=|alt=flag",
["philosophy"] = "Socrates.png|link=|alt=",
["phoenicia"] = "Phoenician aleph.svg|alt=Black on white image of the Phoenician letter Aleph",
["photography"] = "Camera-871052.svg|link=|alt=",
["physics"] = "Stylised atom with three Bohr model orbits and stylised nucleus.svg|alt=icon",
["piracy"] = "Skull and crossbones.svg|link=|alt=",
["pitcairn islands"] = "Flag of the Pitcairn Islands.svg|border|link=|alt=flag",
["pittsburgh"] = "Coat of arms of Pittsburgh, Pennsylvania.svg|link=|alt=",
["plants"] = "Leaf 1 web.jpg|alt=icon",
["poetry"] = "Quill and ink.svg|alt=icon",
["pokémon"] = "Wikiball.svg|alt=icon",
["poland"] = "Flag of Poland.svg|border|link=|alt=flag",
["political science"] = "Plato-raphael.jpg|link=|alt=",
["politics"] = "A coloured voting box.svg|border|alt=icon",
["polyhedra"] = "Small snub icosicosidodecahedron.png|link=|alt=icon",
["polynesia"] = "Polynesia.png|link=|alt=map",
["pollution"] = "Benxi Steel Industries.jpg|link=|alt=photo",
["pop music"] = "Audio-input-microphone.png|alt=icon",
["portal"] = "PorcheCentralNordCathedraleChartre041130-.jpg|alt=icon",
["portugal"] = "Flag of Portugal.svg|border|link=|alt=flag",
["prehistoric mammals"] = "Smilodon Knight.jpg|link=|alt=",
["primates"] = "Man of the woods.JPG|alt=icon",
["prince edward island"] = "Flag of Prince Edward Island.svg|border|link=|alt=flag",
["probability"] = "Nuvola apps atlantik.png|link=|alt=icon",
["prostitution"] = "Bombilla roja - red Edison lamp.svg|link=alt=icon",
["protected areas of india"] = "Nagzira Tiger By Vijay Phulwadhawa.jpg|link=|alt=photo",
["prussia"] = "Flag of Prussia (1892-1918).svg|link=|alt=photo",
["psychiatry"] = "American Lady Against The Sky.jpg|alt=icon",
["psychology"] = "Psi2.svg|link=|alt=",
["puducherry"] = "Seal of Puducherry (cropped).svg|link=|alt=",
["puerto rico"] = "Flag of Puerto Rico.svg|border|link=|alt=flag",
["punjab"] = "Golden Temple (Harmandir Sahib) in Amritsar, India.jpg|border|link=|alt=image",
["punjab, india"] = "Seal of Punjab.gif|link=|alt=icon",
["punjab, pakistan"] = "Flag of Punjab.svg|border|link=|alt=flag",
}
f0317bea96bbb5170b149cd1fd81695e9a105b56
Template:Portal-inline
10
844
1871
1870
2023-10-01T10:39:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Portal-inline]]
wikitext
text/x-wiki
<includeonly>{{#invoke:portal-inline|main}}</includeonly><noinclude>
{{documentation}}
</noinclude>
2d1d12ec317da6ccc5d28b1be3105d68b53ff0be
Template:Sidebar with collapsible lists
10
845
1873
1872
2023-10-01T10:39:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sidebar_with_collapsible_lists]]
wikitext
text/x-wiki
{{#invoke: Sidebar | collapsible }}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
4bd1f39f9101790ed6e315752e377a8ac7a95869
Module:Portal-inline
828
846
1875
1874
2023-10-01T10:39:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal-inline]]
Scribunto
text/plain
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local portalModule = require('Module:Portal'..sandbox)
local getImageName = portalModule._image
local checkPortals = portalModule._checkPortals
local processPortalArgs = portalModule._processPortalArgs
local p = {}
-- Function to format error message and tracking category
-- Arguments:
-- errMsg: string, or nil/false if no error
-- trackingCat: string for tracking category (or empty string)
local function formatError(errMsg, trackingCat)
local result = trackingCat or ''
if errMsg then
local errTag = mw.html.create('span')
errTag:addClass("error")
errTag:css("font-size",'100%')
errTag:wikitext("Error: "..errMsg)
result = tostring(errTag)..result
end
return result
end
local function image(portal, args)
local size = args.size == "tiny" and "16x16px" or "32x28px"
return string.format('[[File:%s|class=noviewer|%s]]',getImageName(portal,true), size)
end
local function link(portal, args)
local displayName = ""
if not (args.text == "" or args.text == nil) then
displayName = args.text
elseif args.short then
displayName = portal
else
displayName = portal .. " portal"
end
return string.format('[[Portal:%s|%s]]',portal,displayName)
end
function p._main(portals, args)
mw.logObject(args)
-- Normalize all arguments
if args.redlinks == 'include' then args.redlinks = true end
for key, default in pairs({tracking=true,redlinks=false,short=false}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local trackingCat = ''
local errMsg = nil
-- Check for existing categories, drop if not.
-- Possible generate tracking category & error message if needed
args.minPortals = args.minPortals or 1
args.maxPortals = args.maxPortals or 1
portals, trackingCat, errMsg = checkPortals(portals,args)
-- use more specific tracking cat for inline portal
trackingCat = mw.ustring.gsub(trackingCat,"Portal templates","Portal-inline template")
-- either too many/few portals, or no portals left after filtering, then return
if errMsg or #portals == 0 then
return formatError(errMsg, trackingCat)
end
return image(portals[1],args)..' '..link(portals[1],args)..(trackingCat or '')
end
function p.main(frame)
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._main(portals, args)
end
return p
7e394801df5882169db7a3b64af605c5acded536
Module:Portal/images/aliases
828
847
1877
1876
2023-10-01T10:39:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/aliases]]
Scribunto
text/plain
--[==[ This is the "aliases" list of portal image names. It contains a list of portal image aliases for use with [[Module:Portal]].
-- The aliases can be used to point to an existing portal image entry. For portals who do not yet have a portal image entry, please
-- use the appropriate page from the following list instead:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- When adding entries, please use alphabetical order. The format of the alias table entries is as follows:
-- ["portal name"] = {"alias 1", "alias 2", "alias 3"},
-- Both the portal name and the alias names should be in lower case, and the "Portal:" namespace prefix
-- should be omitted. For example, if you wanted "UK" to be an alias for "Portal:United Kingdom", then the
-- alias name would be "uk" and the portal name would be "united kingdom".
]==]
return {
["1990s"] = {"1990's"},
["2000s"] = {"2000's"},
["ac/dc"] = {"ac dc"},
["academy award"] = {"academy awards"},
["africa"] = {"african"},
["african american"] = {"african-american", "african-americans", "african americans"},
["african union"] = {"au"},
["agriculture"] = {"agriculture and agronomy", "farming"},
["american civil war"] = {"acw"},
["american revolutionary war"] = {"american revolution"},
["amphibians"] = {"amphibian"},
["aviation"] = {"airplanes"},
["åland"] = {"åland islands", "aland islands", "aland", "ax", "ala"},
["albania"] = {"albanian", "al", "alb"},
["alpine rhine"] = {"alpine rhine valley"},
["american football"] = {"college football", "arena football league"},
["ancient rome"] = {"roman empire"},
["android (operating system)"] = {"android", "android os"},
["animals"] = {"animal", "zoology"},
["anime and manga"] = {"anime", "manga"},
["apple inc."] = {"apple", "apple inc"},
["arabic language"] = {"arabic"},
["archaeology"] = {"archeology"},
["argentina"] = {"argentine"},
["arizona"] = {"phoenix, arizona"},
["asian americans"] = {"asian american"},
["association football"] = {"soccer", "football (soccer)"},
["assyrians"] = {"assyria"},
["atlas"] = {"cartography"},
["atmospheric science"] = {"atmosphere","atmospheric sciences"},
["australia"] = {"australian", "aus"},
["australian capital territory"] = {"canberra"},
["banks"] = {"bank", "banking"},
["baseball"] = {"college baseball", "little league"},
["basketball"] = {"national basketball league of canada", "wnba"},
["biography"] = {"people", "biographies"},
["birds"] = {"bird"},
["björk"] = {"bjork"},
["books"] = {"book"},
["brunei"] = {"brunei darussalam", "bn", "brn"},
["business and economics"] = {"advertising", "business", "economics", "economy", "marketing"},
["buses"] = {"bus"},
["california roads"] = {"roads in california"},
["california state polytechnic university, pomona"] = {"cal poly pomona"},
["canada"] = {"canadian", "ca", "can"},
["canadian armed forces"] = {"canadian forces", "military history of canada"},
["canary islands"] = {"spanish africa"},
["caribbean"] = {"caribbean sea", "the caribbean", "west indies"},
["cars"] = {"car", "automobile"},
["cartoon"] = {"cartoons"},
["catalan-speaking countries"] = {"catalan", "catalonia"},
["catholic church"] = {"catholic", "catholicism"},
["cats"] = {"cat"},
["celtic studies"] = {"celts"},
["cetaceans"] = {"cetacea"},
["chemistry"] = {"chemical"},
["children's literature"] = {"children's and young adult literature", "children and young adult literature"},
["china"] = {"chinese", "cn", "chn"},
["christiantiy"] = {"christ", "christian"},
["christianity in india"] = {"indian christianity"},
["classical civilisation"] = {"classical civilization", "classics"},
["cleveland"] = {"cleveland, ohio"},
["coconuts"] = {"coconut"},
["color"] = {"colour"},
["comedy"] = {"humour", "humor"},
["commonwealth realms"] = {"commonwealth"},
["communism"] = {"marxism"},
["compact disc"] = {"cd", "compact disk"},
["companies"] = {"company"},
["computer-generated imagery"] = {"computer generated imagery"},
["computer programming"] = {"programming"},
["countries"] = {"country"},
["county kilkenny"] = {"kilkenny"},
["criminal justice"] = {"crime"},
["current events"] = {"events", "news"},
["czech republic"] = {"czechia", "czech", "the czech republic"},
["dallas – fort worth metroplex"] = {"dallas", "dallas-fort worth", "dallas - fort worth metroplex"},
["democratic republic of the congo"] = {"zaire", "zaïre", "cod", "drc", "the democratic republic of the congo"},
["denmark"] = {"kingdom of denmark", "danish", "dk", "dnk"},
["disasters"] = {"disaster"},
["dravidian languages"] = {"dravidian", "dravidia", "dravidian peoples", "dravidian civilization"},
["drink"] = {"drinks"},
["dominican republic"] = {"the dominican republic"},
["durham, north carolina"] = {"durham nc"},
["dungeons & dragons"] = {"d&d"},
["earth sciences"] = {"earth science"},
["east timor"] = {"timor leste", "tl"},
["electromagnetism"] = {"em"},
["energy"] = {"electricity"},
["english football"] = {"football in england"},
["english language"] = {"english"},
["erotica and pornography"] = {"porn", "pornography"},
["european military history"] = {"military history of europe"},
["european union"] = {"eu"},
["evolutionary biology"] = {"evolution"},
["extinct and endangered species"] = {"extinction", "endangered species"},
["falkland islands"] = {"falkland", "malvinas", "fk", "flk"},
["faroe islands"] = {"the faroe islands"},
["federated states of micronesia"] = {"fm", "fsm"},
["film"] = {"cinema", "films", "movie"},
["fish"] = {"fishes"},
["food"] = {"eating", "nutrition"},
["football"] = {"association football", "soccer", "soccer ball"},
["formula one"] = {"f1", "formula 1"},
["france"] = {"overseas france"},
["free and open-source software"] = {"floss", "foss", "free and open source software", "free software", "freeware", "open source", "open source software", "open-source software", "oss"},
["freedom of speech"] = {"censorship", "free speech"},
["french and francophone literature"] = {"french literature"},
["french politics"] = {"politics of france"},
["fungi"] = {"mycology"},
["gardening"] = {"garden", "gardens", "gardening and horticulture"},
["gemology and jewelry"] = {"gemmology and jewellery", "gemmology and jewelry", "gemology and jewellery"},
["georgia (country)"] = {"georgia", "republic of georgia", "ge", "geo"},
["georgia (u.s. state)"] = {"georgia (state)"},
["globalization"] = {"globalisation"},
["greater manchester"] = {"manchester"},
["gullah"] = {"gullah people"},
["hawaii"] = {"hawaiian kingdom", "hawai'i", "hawaiʻi", "us-hi"},
["hazardous materials"] = {"dangerous goods"},
["health and fitness"] = {"health"},
["himalayas"] = {"himalaya region"},
["hindustani"] = {"hindustani language", "hindustani and allied languages"},
["hip hop"] = {"hip-hop"},
["hispanic and latino americans"] = {"hispanic and latino american", "latino and hispanic americans", "latino and hispanic american"},
["history"] = {"victorian era"},
["horror fiction"] = {"horror"},
["horticulture and gardening"] = {"horticulture"},
["housing"] = {"houses"},
["hunger relief"] = {"hunger"},
["ice hockey"] = {"hockey"},
["india"] = {"indian", "in", "ind", "republic of india"},
["indian women"] = {"women of india", "indian women and gender issues"},
["indiana"] = {"hoosier", "us-in"},
["indigenous peoples of north america"] = {"indigenous people of north america"},
["information technology"] = {"computing", "computer science", "it"},
["insects"] = {"insect"},
["internet"] = {"web"},
["ireland"] = {"irish"},
["islam"] = {"muslim history"},
["islamic state of iraq and the levant"] = {"daesh", "isil", "isis"},
["islands"] = {"island"},
["italy"] = {"italian", "ita", "papal states"},
["jacksonville, florida"] = {"jacksonville"},
["judaism"] = {"jewish"},
["kazi nazrul islam"] = {"nazrul"},
["kurdistan"] = {"iraqi kurdistan"},
["latter day saint movement"] = {"latter-day saints", "lds"},
["lemony snicket"] = {"a series of unfortunate events"},
["lists"] = {"list"},
["lgbt"] = {"lgbt studies", "lgbtq", "lgbtqa"},
["library and information science"] = {"information science"},
["linguistics"] = {"linguistic"},
["madonna (entertainer)"] = {"madonna"},
["mammals"] = {"mammal"},
["marine life"] = {"marine biology"},
["mathematics"] = {"math", "maths"},
["medicine"] = {"health care", "public health", "medical"},
["mediterranean"] = {"mediterranean sea"},
["metro detroit"] = {"detroit"},
["mexico"] = {"méxico", "mx", "mex"},
["middle tennessee state university"] = {"mtsu"},
["michigan highways"] = {"highways in michigan"},
["military history of australia"] = {"royal australian air force"},
["modern history"] = {"2020s"},
["molecular and cell biology"] = {"molecular and cellular biology"},
["moldova"] = {"republic of moldova"},
["mongolia"] = {"mongols"},
["mountains"] = {"mountain"},
["music of australia"] = {"australian music"},
["myanmar"] = {"burma", "burmese", "mm", "mmr"},
["national register of historic places"] = {"nrhp"},
["native americans"] = {"american indians"},
["nazism"] = {"nazi germany"},
["netherlands"] = {"kingdom of the netherlands", "nl", 'nld', 'caribbean netherlands', 'the netherlands', 'dutch empire', 'the dutch empire', 'dutch republic'},
["new guinea"] = {"western new guinea"},
["new south wales"] = {"nsw"},
["new york"] = {"new york state", "new york (state)", "us-ny"},
["new york city"] = {"nyc"},
["new zealand"] = {"nz", "nzl"},
["north korea"] = {"dprk", "democratic people's republic of korea"},
["north macedonia"] = {"republic of north macedonia", "mk", "mkd"},
["north rhine-westphalia"] = {"nrw"},
["north west england"] = {"liverpool"},
["novels"] = {"novel"},
["oceans"] = {"ocean", "world ocean"},
["odisha"] = {"orissa"},
["opera"] = {"operas"},
["organized labour"] = {"labor", "organised labour", "organized labor", "trade unionism"},
["pakistan"] = {"pakistani", "pk", "pak"},
["paleontology"] = {"palaeontology", "prehistoric life"},
["palestine"] = {"gaza strip", "the state of palestine","state of palestine"},
["paralympic games"] = {"paralympics"},
["pan-africanism"] = {"pan-african"},
["pandemics"] = {"pandemic"},
["people's republic of china"] = {"prc"},
["pharmacy and pharmacology"] = {"pharmacy"},
["philippines"] = {"the philippines"},
["pitcairn islands"] = {"pitcairn, henderson, ducie and oeno islands"},
["politics"] = {"government"},
["portugal"] = {"portuguese empire"},
["prince edward island"] = {"pei", "ca-pe"},
["protected areas of india"] = {"biodiversity, protected areas & environment of india", "biodiversity of india", "environment of india"},
["puducherry"] = {"pondicherry", "in-py"},
["punjab, india"] = {"punjab (india)", "in-pb"},
["punjab, pakistan"] = {"punjab (pakistan)", "western punjab", "pk-pb"},
["python programming"] = {"python"},
["quebec"] = {"québec", "ca-qc"},
["religion"] = {"religions", "religious", "theology"},
["republic of ireland"] = {"éire", "ie", "irl", "irish republicanism"},
["republic of north macedonia"] = {"north macedonia", "mk", "mkd", "the republic of macedonia", "republic of macedonia"},
["republic of the congo"] = {"the republic of the congo", "republic of congo", "french congo"},
["roads"] = {"road"},
["roads of canada"] = {"canada roads"},
["romani people"] = {"roma", "romani"},
["saint barthelemy"] = {"saint-barthélemy", "saint barthélemy"},
["saint helena, ascension and tristan da cunha"] = {"saint helena"},
["salad dressing"] = {"salad dressings"},
["san francisco bay area"] = {"bay area", "san francisco"},
["sandwich"] = {"sandwiches"},
["schools"] = {"school"},
["serer people"] = {"serer"},
["september 11 attacks"] = {"september 11, 2001"},
["sexuality"] = {"sex"},
["shia islam"] = {"shia"},
["spain"] = {"castile"},
["spaceflight"] = {"space flight"},
["sri lanka"] = {"sri lankan"},
["systems science"] = {"system science"},
["soap operas and telenovelas"] = {"soap operas", "telenovelas"},
["south africa"] = {"za", "zaf"},
["south georgia and the south sandwich islands"] = {"south georgia", "south sandwich islands", "gs", "sgs"},
["soviet union"] = {"ussr", "soviet", "the soviet union"},
["space"] = {"outer space"},
["spices"] = {"herbs and spices"},
["sports in canada"] = {"canadian sports", "canadian sport", "sports of canada", "sport in canada"},
["sports"] = {"sport"},
["st. john's, newfoundland and labrador"] = {"st. john's"},
["state of georgia"] = {"georgia (u.s. state)", "georgia usa", "us-ga"},
["state of mexico"] = {"mexico (state)", "mx-mex"},
["state university of new york"] = {"suny"},
["taiwan"] = {"republic of china", "roc", "tw", "twn"},
["tamils"] = {"tamil","tamil people"},
["tanks"] = {"tank"},
["telecommunication"] = {"telecommunications", "telecoms", "telecomms", "telecomm", "telecom"},
["telephones"] = {"telephone"},
["television"] = {"tv"},
["texas"] = {"republic of texas"},
["texas a&m university"] = {"texas a&m"},
["texas tech university"] = {"texas tech"},
["thailand"] = {"siam"},
["theatre"] = {"theater"},
["the bahamas"] = {"bahamas", "bs", "bhs"},
["the gambia"] = {"gambia", "gm", "gmb"},
["the legend of zelda"] = {"legend of zelda"},
["tiruchirappalli"] = {"trichy", "tiruchi"},
["trains"] = {"rail", "rail transport"},
["transportation"] = {"transport"},
["trauma and orthopaedics"] = {"trauma & orthopaedics"},
["trinidad and tobago"] = {"trinidad"},
["tropical cyclones"] = {"hurricanes", "tropical cyclone"},
["turkey"] = {"anatolia"},
["united arab emirates"] = {"emirates", "ae", "uae", "emirati", "the united arab emirates"},
["united kingdom"] = {"the united kingdom", "uk", "gb", "gbr", "britain", "british", "british overseas territories"},
["united nations"] = {"un"},
["united states"] = {"us", "usa", "u.s.", "united states armed forces", "american", "territories of the united states"},
["united states arms"] = {"united states armed forces", "united states military", "united states military history", "u.s. armed forces", "u.s. military"},
["united states congress"] = {"u.s. congress"},
["united states counties"] = {"u.s. counties"},
["united states presidents"] = {"u.s. presidents"},
["united states roads"] = {"u.s. roads"},
["united states state legislatures"] = {"u.s. state legislatures", "us state legislatures"},
["united states streets"] = {"u.s. streets"},
["united states supreme court"] = {"u.s. supreme court cases"},
["united states territories"] = {"territories of the united states"},
["university of missouri"] = {"mizzou"},
["university of notre dame"] = {"notre dame"},
["university of pittsburgh"] = {"pitt"},
["vatican city"] = {"vatican"},
["video games"] = {"vg", "video game"},
["vietnam"] = {"south vietnam"},
["war"] = {"military"},
["washington (state)"] = {"washington", "us-wa"},
["washington, d.c."] = {"district of columbia", "dc", "washington dc", "us-dc"},
["western asia"] = {"west asia"},
["western sahara"] = {"sahrawi arab democratic republic", "eh", "esh", "the sahrawi arab democratic republic"},
["wind power"] = {"windmills"},
["world war i"] = {"first world war", "wwi"},
["world war ii"] = {"second world war", "world war 2", "wwii"},
["zoos"] = {"zoo"}
}
fc71e0a63efd359c69c5660deabe9f1ca67e454d
Module:Portal/images/e
828
848
1879
1878
2023-10-01T10:39:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/e]]
Scribunto
text/plain
--[==[ This is the "E" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "E". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["earth"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=",
["earth sciences"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=",
["earthquakes"] = "Good Friday Earthquake at Turnagain Arm.jpg|link=|alt=image",
["east asia"] = "East Asia Cutout Projection.png|border|link=|alt=map",
["east germany"] = "Flag of East Germany.svg|border|link=|alt=flag",
["east sussex"] = "Arms of the East Sussex County Council.svg|link=|alt=",
["east timor"] = "Flag of East Timor.svg|border|link=|alt=flag",
["eastern europe"] = "Eastern Europe (Robinson projection).png|border|link=|alt=map",
["ecology"] = "Earth Day Flag.png|border|link=|alt=icon",
["ecuador"] = "Flag of Ecuador.svg|border|link=|alt=flag",
["ed, edd n eddy"] = "Ed, Edd n Eddy logo.png|link=|alt=",
["edinburgh"] = "Flag of Edinburgh.svg|alt=flag",
["education"] = "Diploma icon.png|alt=icon",
["education in india"] = "Nalanda University India ruins.jpg|link=|alt=photo",
["egypt"] = "Flag of Egypt.svg|border|link=|alt=flag",
["eifel"] = "Geobox Mountain Range.svg|link=|alt=icon",
["el salvador"] = "Flag of El Salvador.svg|border|link=|alt=flag",
["electoral districts in canada"] = "Canpoligeoicon.png|link=|alt=",
["electronics"] = "Nuvola apps ksim.png|alt=icon",
["energy"] = "Crystal energy.svg|alt=icon",
["engineering"] = "Nuvola apps kcmsystem.svg|alt=icon",
["england"] = "Flag of England.svg|border|link=|alt=flag",
["english football"] = "Soccerball England.svg|link=|alt=",
["english language"] = "Shakespeare2.jpg|link=|alt=painting",
["english law"] = "Scale of justice 2 new.jpeg|alt=icon",
["entomology"] = "Orapia rayneri.svg|link=|alt=image",
["environment"] = "Aegopodium podagraria1 ies.jpg|alt=icon",
["equatorial guinea"] = "Flag of Equatorial Guinea.svg|border|link=|alt=flag",
["eritrea"] = "Flag of Eritrea.svg|border|link=|alt=flag",
["erotica and pornography"] = "Pornproject logo.svg|alt=icon",
["estonia"] = "Flag of Estonia.svg|border|link=|alt=flag",
["eswatini"] = "Flag of Eswatini.svg|border|link=|alt=flag",
["ethiopia"] = "Flag of Ethiopia.svg|border|link=|alt=flag",
["eurasia"] = "Eurasia (orthographic projection).svg|link=|alt=map",
["europe"] = "Europe (orthographic projection).svg|link=|alt=map",
["european military history"] = "Cartography of Europe (blue).svg|link=|alt=",
["european union"] = "Flag of Europe.svg|border|link=|alt=flag",
["eurovision song contest"] = "Wiki Eurovision Heart (Infobox).svg|border|link=|alt=icon",
["evangelical christianity"] = "ChristianitySymbolWhite.PNG|link=|alt=",
["evangelion"] = "Tree of life kircher plain.png|link=|alt=",
["evolutionary biology"] = "Tree of life.svg|alt=icon",
["extinct and endangered species"] = "ExtinctDodoBird.jpeg|link=|alt=",
["extraterrestrial"] = "Galaxy blue.jpg|link=|alt=photo",
}
94070388d2b90fdc5d9bac8bcf57cd60115a825f
Template:Pad
10
849
1881
1880
2023-10-01T10:39:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pad]]
wikitext
text/x-wiki
<includeonly><span style="padding-left:{{{1|1.0em}}};{{{css|}}}"> </span></includeonly><noinclude>{{Documentation}}</noinclude>
bdda233a3029c939fb85aee8b2e129f795d1a4e3
Template:Blue
10
850
1883
1882
2023-10-01T10:39:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Blue]]
wikitext
text/x-wiki
<span style="color:blue">{{{1}}}</span><noinclude>
<!-- Add categories and interwikis to the /doc subpage, not here! -->
{{Documentation}}</noinclude>
89f3353953a76d63c4ba5cd23af400b64ef178f4
Template:Caution
10
851
1885
1884
2023-10-01T10:39:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Caution]]
wikitext
text/x-wiki
{{Mbox
| name = Caution
| demospace = {{{demospace|}}}
| style = {{{style|}}}
| subst = <includeonly>{{subst:substcheck}}</includeonly>
| type = style
| image = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]]}}
| small = {{{small|}}}
| smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|{{{imagesize|40px}}}|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}}
| imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }}
| textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}}
| text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!--
-->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}}
}}<noinclude>{{Documentation}}</noinclude>
0bd33bad5503b4d0395069f422d3a4af8f5253b9
Template:Pp-template
10
852
1887
1886
2023-10-01T10:39:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pp-template]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Protection banner|main}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
31be6fc5b968e0deb5100a35b856393cdeb35b90
Template:Braces
10
853
1889
1888
2023-10-01T10:39:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Braces]]
wikitext
text/x-wiki
{{#if:{{{code|{{{tt|}}}}}}|<code>}}<!--
-->{{((}}{{{1|{{thin space}}}}}<!--
-->{{#if:{{{2|}}} |{{thin space}}{{!}}{{thin space}}{{{2}}}}}<!--
-->{{#if:{{{3|}}} |{{thin space}}{{!}}{{thin space}}{{{3}}}}}<!--
-->{{#if:{{{4|}}} |{{thin space}}{{!}}{{thin space}}{{{4}}}}}<!--
-->{{#if:{{{5|}}} |{{thin space}}{{!}}{{thin space}}{{{5}}}}}<!--
-->{{#if:{{{6|}}} |{{thin space}}{{!}}{{thin space}}{{{6}}}}}<!--
-->{{#if:{{{7|}}} |{{thin space}}{{!}}{{thin space}}{{{7}}}}}<!--
-->{{#if:{{{8|}}} |{{thin space}}{{!}}{{thin space}}{{{8}}}}}<!--
-->{{#if:{{{9|}}} |{{thin space}}{{!}}{{thin space}}{{{9}}}}}<!--
-->{{))}}<!--
-->{{#if:{{{code|{{{tt|}}}}}}|</code>}}<noinclude>{{Documentation}}</noinclude>
74380d03f02b9bc8e318779cf6ef320eec5c3e56
Template:Collapsible lists option
10
854
1891
1890
2023-10-01T10:39:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Collapsible_lists_option]]
wikitext
text/x-wiki
<div style="padding-right:3.6em<!--i.e. around three times Wikipedia's standard indent width, to keep the following away from e.g. template/s on righthand side of page-->;">
This template includes collapsible lists.
<!------------ (to show all lists) -------------->
: {{Unbulleted list
|style=padding-bottom:0.3em; |list_style=line-height:1.5em;
| 1 = {{blue|•}} To set it to display all lists when it appears (i.e. all lists expanded), use:
| 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}all}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}all}}</code></span>{{spaces|2}}(i.e. omitting "<code>expanded{{=}}</code>").
}}
<!------------ (to show one list) --------------->
: {{Unbulleted list
|style=padding-bottom:0.3em; |list_style=line-height:1.5em;
| 1 = {{blue|•}} To set it to display one particular list while keeping the remainder collapsed (i.e. hidden apart from their headings), use:
| 2 = <span class="nowrap">{{pad|1.2em}}<code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}''listname''}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}''listname''}}</code></span>
| 3 = …where ''listname'' is one of the following (do not include any quotemarks):
|item4_style=;padding:0.2em 0 0.3em 1.4em;
| 4 = <kbd style="border: none; background: transparent;">{{{listnames<includeonly>|{{color|red|''Required parameter "listnames" missing!''}}</includeonly>}}} </kbd>
| 5 = {{#if:{{{example<includeonly>|</includeonly>}}}
<!--------(optional example)--------->
| <noinclude>{{small|[''optional:''{{thinsp}}]}}<br /></noinclude><!--
-->For example, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}expanded{{=}}{{{example}}}}}</code></span> or, if enabled, <span class="nowrap"><code>{{braces|{{{template_name|<includeonly>{{</includeonly>BASEPAGENAME<includeonly>}}</includeonly>}}} {{!}}{{{example}}}}}</code></span>
}} }}<!--
<!------------ (optional default) --------------->
{{#if:{{{default<includeonly>|</includeonly>}}} |
* {{#ifeq:{{{default}}}|all |All lists have
| <noinclude>{{small|[''optional:''{{thinsp}}]}} [All lists have]{{\}}[The list named '''''default''''' has]</noinclude><!--
--><includeonly>The list named '''<code>{{{default}}}</code>''' has</includeonly>}} been set to be shown when the template appears.
}}
</div><noinclude>{{Documentation}}</noinclude>
637dd404169257c607f658e1515b2824edef2441
Template:Social democracy sidebar/doc
10
855
1893
1892
2023-10-01T10:39:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Social_democracy_sidebar/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{Social democracy sidebar}}
{{caution|{{tl|Social democracy}} exists as an alternate version of this template. Any content changes made here should be made there as well.}}
{{collapsible lists option|listnames={{hlist|history|concepts|variants|people|orgs|by region|related}}}}
* For Commonwealth spelling ("organisations" as opposed to "organizations") use <code>sp=uk</code>.
<includeonly>{{Sandbox other||
<!-- Categories below this line -->
[[Category:Socialism sidebar templates]]
}}</includeonly>
b2065e61a30b381a4ecc5c86c22ec9654a3d0250
Template:Use dmy dates
10
856
1895
1894
2023-10-01T10:39:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Use_dmy_dates]]
wikitext
text/x-wiki
{{ <includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B=
{{DMCA|Use dmy dates|from|{{{date|}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Use dmy dates template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use dmy dates]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}}}<noinclude>{{documentation}}</noinclude>
3a087cd27e88fd70a0765c62d5ab506c3b73c9e7
Module:Lang
828
434
1897
940
2023-10-01T10:39:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lang]]
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transliteration}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local content_lang = mw.language.getContentLanguage();
local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag
local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0
if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transliteration' == template then
category = 'Transliteration';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------
makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where
<title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in
html markup. This because the lang= attibute applies to the content of its enclosing tag.
<tag> holds a string 'div' or 'span' used to choose the correct wrapping tag
]]
local function title_wrapper_make (title_text, content_text, tag)
local wrapper_t = {};
table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag
table.insert (wrapper_t, ' title=\"'); -- begin title attribute
table.insert (wrapper_t, title_text); -- add <title_text>
table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag
table.insert (wrapper_t, content_text); -- add <content_text>
table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag
return table.concat (wrapper_t); -- make a big string and done
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish
language text' is English:
<i lang="es" title="Spanish language text">casa</i>
should be:
<span title="Spanish language text"><i lang="es">casa</i></span>
or for <div>...</div>:
<div title="Spanish language text"><div lang="es"><spanish-language-text></div></div>
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html_t = {};
local style_added = '';
local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div
if text:match ('^%*') then
table.insert (html_t, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia
table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute
if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki
table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages
elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki
table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages
end
if 'normal' == style then -- when |italic=no
table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag
table.insert (html_t, text); -- insert the text
table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag
if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div
local title_text;
if 'zxx' == code then -- special case for this tag 'no linguistic content'
title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text
elseif mw.ustring.find (language, 'languages', 1, true) then
title_text = table.concat ({language, ' collective text'}); -- for collective languages
else
title_text = table.concat ({language, '-language text'}); -- for individual languages
end
return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);
else
return table.concat (html_t);
end
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if mw.ustring.find (language_name, 'languages', 1, true) then
return table.concat ({'[[Category:Articles with text in ', language_name, ']]'});
end
table.insert (cat, '[[Category:Articles containing ');
if this_wiki_lang_tag == code then
table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language
else
table.insert (cat, language_name);
end
table.insert (cat, '-language text]]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transliteration}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transliteration}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local out_t = {};
local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local title_text = ''; -- tool tip text for title= attribute
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
title_text = language_name; -- write a generic tool tip
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_t[std] then -- and if standard is legitimate
if title_t[std][tscript] then -- and if script for that standard is legitimate
if script_table[tscript] then
title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_t[std] then return ''; end -- invalid standard, setup for error message
if title_t[std][code] then -- if language code is in the table (transl may not provide a language code)
title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip
else -- code doesn't match
title_text = title_text .. title_t[std]['default']; -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_t['no_std'][tscript] then
title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set
elseif title_t['no_std'][code] then
title_text = title_text .. title_t['no_std'][code]; -- use language code
else
if is_set (tscript) then
title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip
elseif is_set (code) then
if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name)
title_text = title_text .. '-language'; -- skip this text (individual and macro languages only)
end
title_text = title_text .. ' transliteration'; -- finish the tool tip
else
title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?)
end
end
end
local close_tag;
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transliteration}})
code = code:match ('^(%a%a%a?)'); -- strip all subtags leaving only the language subtag
if not style then -- nil for the default italic style
table.insert (out_t, "<i lang=\""); -- so use <i> tag
close_tag = '</i>'; -- tag to be used when closing
else
table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
close_tag = '</span>'; -- tag to be used when closing
end
table.insert (out_t, code);
table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script
else
table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transliteration}} only)
close_tag = '</span>';
end
table.insert (out_t, translit); -- add the translit text
table.insert (out_t, close_tag); -- and add the appropriate </i> or </span>
if '' == title_text then -- when there is no need for a tool-tip
return table.concat (out_t); -- make a string and done
else
return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don
end
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
If the text contains any actual <div>...</div> tags, then it's again returned unmodified and <div>...</div>
tags are used to wrap it, to prevent div/span inversion.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif text:find ('<div') then -- reductive; if the text contains a div tag, we must use div tags
tag = 'div';
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf];
elseif override_table[code] then -- not there so try basic language tag
name = override_table[code];
elseif lang_table[code] then -- shift to iana active tag/name table
name = lang_table[code];
elseif lang_dep_table[code] then -- try the iana deprecated tag/name table
name = lang_dep_table[code];
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< T R A N S L A T I O N _ M A K E >----------------------------------------------
stand-alone function to create literal translation of main text
Also used by {{lang-x2}}
]]
local function translation_make (args_t)
local translation_t = {', '}; -- initialize output
if 'none' ~= args_t.label then -- if we want a label
table.insert (translation_t, '<small>'); -- open the <small> html tag
if 'no' == args_t.link then
table.insert (translation_t, '<abbr title="literal translation">lit.</abbr>'); -- unlinked form
else
table.insert (translation_t, make_wikilink ('Literal translation', 'lit.')); -- linked form
end
table.insert (translation_t, " </small>"); -- close the <small> html tag
end
table.insert (translation_t, table.concat ({''', args_t.translation, '''})); -- use html entities to avoid wiki markup confusion
return table.concat (translation_t); -- make a big string and done
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if mw.ustring.find (language_name, 'languages', 1, true) then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink
end
end
table.insert (out, ': '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '<small>');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script']];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanized:'); -- else plain text
end
table.insert (out, ' </small>'); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, translation_make (args));
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame
end
--[[--------------------------< I S _ I E T F _ T A G _ F R A M E >--------------------------------------------
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent
(template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag>
is in the parent frame.
]]
local function is_ietf_tag_frame (frame)
return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if mw.ustring.find (language_name, 'languages', 1, true) then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transliteration');
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg ('no text', args, 'Transliteration'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transliteration');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transliteration'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transliteration'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transliteration');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transliteration'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args_t)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args_t[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args_t.link; -- make a boolean
local label = args_t.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
if link then
return table.concat ({'[[:', category_name, ']]'});
else
return category_name;
end
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_ietf_tag_frame = is_ietf_tag_frame,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
_translation_make = translation_make,
};
b4bf37fa610695625e5f1ff5d33471dfaaf8af34
Template:DMCA
10
857
1899
1898
2023-10-01T10:40:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:DMCA]]
wikitext
text/x-wiki
#REDIRECT [[Template:Dated maintenance category (articles)]]
{{Redirect category shell|
{{R from move}}
{{R from modification}}
{{R from template shortcut}}
}}
711d3f1c53fa704297f675a8dcf1a56719c5b654
Template:Dated maintenance category
10
858
1901
1900
2023-10-01T10:40:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Dated_maintenance_category]]
wikitext
text/x-wiki
<nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!--
-->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}}
|{{#if:{{{3|}}}
|[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!--
-->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}}
|<!--
-->|[[Category:Articles with invalid date parameter in template]]<!--
-->}}
|[[Category:{{#if:{{{5|}}}
|{{{5}}}<!--
-->|{{{1}}}<!--
-->}}]]<!--
-->}}{{#if:{{{4|}}}
|[[Category:{{{4}}}]]}}<!--
-->}}<!--
-->}}<noinclude>
{{documentation}}
</noinclude>
41e7d4000124d4f718ddf222af0b72825048c4c4
Template:FULLROOTPAGENAME
10
859
1903
1902
2023-10-01T10:40:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:FULLROOTPAGENAME]]
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#if: {{ safesubst:<noinclude/>Ns has subpages | {{ safesubst:<noinclude/>#if:{{{1|}}}|{{ safesubst:<noinclude/>NAMESPACE:{{{1}}}}}|{{ safesubst:<noinclude/>NAMESPACE}}}} }}
| {{ safesubst:<noinclude/>#titleparts:{{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}|1}}
| {{ safesubst:<noinclude/>#if:{{{1|}}}|{{{1}}}|{{ safesubst:<noinclude/>FULLPAGENAME}}}}
}}<noinclude>
{{documentation}}
</noinclude>
fd0c4e7050dded2d50e5df405e6e5e31dd0d46ac
Template:Ns has subpages
10
860
1905
1904
2023-10-01T10:40:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ns_has_subpages]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
060d2d01af26cb67fd90a7c346a0d2d5e450a040
Module:Unsubst
828
235
1907
531
2023-10-01T10:40:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Unsubst]]
Scribunto
text/plain
local p = {}
local specialParams = {
['$N'] = 'template name', -- Deprecated, but keeping until it is removed from transcluding templates
['$B'] = 'template content',
}
p[''] = function ( frame )
if not frame:getParent() then
error( '{{#invoke:Unsubst|}} makes no sense without a parent frame' )
end
if not frame.args['$B'] then
error( '{{#invoke:Unsubst|}} requires parameter $B (template content)' )
end
if mw.isSubsting() then
---- substing
-- Combine passed args with passed defaults
local args = {}
for k, v in pairs( frame.args ) do
if not specialParams[k] then
if v == '__DATE__' then
v = mw.getContentLanguage():formatDate( 'F Y' )
end
args[k] = v
end
end
for k, v in pairs( frame:getParent().args ) do
args[k] = v
end
-- Build an equivalent template invocation
-- First, find the title to use
local titleobj = mw.title.new(frame:getParent():getTitle())
local title
if titleobj.namespace == 10 then -- NS_TEMPLATE
title = titleobj.text
elseif titleobj.namespace == 0 then -- NS_MAIN
title = ':' .. titleobj.text
else
title = titleobj.prefixedText
end
-- Build the invocation body with numbered args first, then named
local ret = '{{' .. title
for k, v in ipairs( args ) do
if string.find( v, '=', 1, true ) then
-- likely something like 1=foo=bar, we need to do it as a named arg
break
end
ret = ret .. '|' .. v
args[k] = nil
end
for k, v in pairs( args ) do
ret = ret .. '|' .. k .. '=' .. v
end
return ret .. '}}'
else
---- Not substing
-- Just return the "body"
return frame.args['$B'] .. (frame.args['$N'] and frame:getParent():getTitle() == mw.title.getCurrentTitle().prefixedText and '[[Category:Calls to Module:Unsubst that use $N]]' or '')
end
end
return p
83a208bd98f5e78524b299923e5f6e6268a17c53
Module:Ns has subpages
828
861
1909
1908
2023-10-01T10:40:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Ns_has_subpages]]
Scribunto
text/plain
-- This module implements [[Template:Ns has subpages]].
-- While the template is fairly simple, this information is made available to
-- Lua directly, so using a module means that we don't have to update the
-- template as new namespaces are added.
local p = {}
function p._main(ns, frame)
-- Get the current namespace if we were not passed one.
if not ns then
ns = mw.title.getCurrentTitle().namespace
end
-- Look up the namespace table from mw.site.namespaces. This should work
-- for a majority of cases.
local nsTable = mw.site.namespaces[ns]
-- Try using string matching to get the namespace from page names.
-- Do a quick and dirty bad title check to try and make sure we do the same
-- thing as {{NAMESPACE}} in most cases.
if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then
local nsStripped = ns:gsub('^[_%s]*:', '')
nsStripped = nsStripped:gsub(':.*$', '')
nsTable = mw.site.namespaces[nsStripped]
end
-- If we still have no match then try the {{NAMESPACE}} parser function,
-- which should catch the remainder of cases. Don't use a mw.title object,
-- as this would increment the expensive function count for each new page
-- tested.
if not nsTable then
frame = frame or mw.getCurrentFrame()
local nsProcessed = frame:callParserFunction('NAMESPACE', ns)
nsTable = nsProcessed and mw.site.namespaces[nsProcessed]
end
return nsTable and nsTable.hasSubpages
end
function p.main(frame)
local ns = frame:getParent().args[1]
if ns then
ns = ns:match('^%s*(.-)%s*$') -- trim whitespace
ns = tonumber(ns) or ns
end
local hasSubpages = p._main(ns, frame)
return hasSubpages and 'yes' or ''
end
return p
e133068ba73738b16e1e3eba47735516a461eb5b
Template:Lang
10
432
1911
938
2023-10-01T10:40:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Lang|{{{fn|lang}}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
ed35aafbfe8198c5ad80fd861124244d0c7f2742
Template:Var
10
862
1913
1912
2023-10-01T10:40:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Var]]
wikitext
text/x-wiki
<var {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="padding-right: 1px;{{{style|}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</var><noinclude>
<!--Categories and interwikis go near the bottom of the /doc page.-->
{{Documentation}}
</noinclude>
0e9e47694c01ca4c7b29566a1cb11a117dfbf2c0
Module:Transclusion count/data/U
828
863
1915
1914
2023-10-01T10:40:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/U]]
Scribunto
text/plain
return {
["U"] = 233000,
["U.S._Roads_WikiProject"] = 11000,
["UAF_player"] = 2500,
["UEFA_player"] = 5100,
["UK"] = 4400,
["UKR"] = 12000,
["UK_legislation"] = 2300,
["URL"] = 379000,
["URL2"] = 10000,
["URS"] = 7100,
["URY"] = 2100,
["US$"] = 11000,
["US50_Invite"] = 3700,
["USA"] = 41000,
["USBill"] = 2300,
["USCGC"] = 2600,
["USCongRep-end"] = 5000,
["USCongRep-row"] = 5500,
["USCongRep-start"] = 5000,
["USCongressOrdinal"] = 5900,
["USCongressOrdinal/code"] = 5900,
["USD"] = 5100,
["USGS_gazetteer"] = 11000,
["USNS"] = 2800,
["USN_flag"] = 10000,
["USPL"] = 2000,
["USRD"] = 5000,
["USS"] = 36000,
["USSR"] = 2200,
["USStat"] = 2300,
["US_Census_population"] = 38000,
["US_Census_population/styles.css"] = 38000,
["US_House_succession_box"] = 8700,
["US_State_Abbrev"] = 16000,
["US_county_navigation_box"] = 99000,
["US_government_sources"] = 2500,
["US_patent"] = 2700,
["US_state_navigation_box"] = 16000,
["UTRS"] = 7900,
["UTRS-unblock-user"] = 4900,
["UTZ"] = 2600,
["UZB"] = 2400,
["Ubl"] = 136000,
["Ublist"] = 4900,
["Ubx"] = 12000,
["Ucat"] = 38000,
["Ucfirstletter"] = 5100,
["Uir"] = 28000,
["Ukrainian_oblast"] = 2000,
["Ul"] = 5500,
["Ulist"] = 6500,
["Umbox"] = 78000,
["Unassessed-Class"] = 11000,
["Unassessed_class"] = 320000,
["Unblock-auto_reviewed"] = 5300,
["Unblock-spamun_reviewed"] = 2900,
["Unblock-un_reviewed"] = 16000,
["Unblock_reviewed"] = 68000,
["Unbulleted_list"] = 1230000,
["Uncategorized"] = 2700,
["Under_construction"] = 2400,
["Underline"] = 3600,
["Undisclosed_paid"] = 2900,
["Unindent"] = 4300,
["UnitedStatesCode"] = 3400,
["United_States_presidential_election_results_table_footer"] = 2900,
["United_States_presidential_election_results_table_header"] = 3300,
["United_States_presidential_election_results_table_row"] = 3300,
["United_States_topic"] = 5900,
["Unknown"] = 2700,
["Unknown-Class"] = 10000,
["Unlink"] = 21000,
["Unreferenced"] = 162000,
["Unreferenced_section"] = 36000,
["Unreferenced_stub"] = 2100,
["Unrelated"] = 5500,
["Unreliable_source?"] = 11000,
["Unreliable_sources"] = 8100,
["Unsourced"] = 5000,
["Update"] = 30000,
["Update_after"] = 5100,
["Update_inline"] = 5800,
["Update_inline_span"] = 2600,
["Update_section"] = 3900,
["Update_span"] = 2600,
["Updated"] = 57000,
["UploadCampaignLink"] = 2100,
["Uploader_information"] = 222000,
["Url"] = 83000,
["Use_American_English"] = 73000,
["Use_Australian_English"] = 125000,
["Use_Bangladeshi_English"] = 3000,
["Use_British_English"] = 258000,
["Use_Canadian_English"] = 37000,
["Use_Ghanaian_English"] = 2400,
["Use_Hiberno-English"] = 32000,
["Use_Hong_Kong_English"] = 4000,
["Use_Indian_English"] = 158000,
["Use_Irish_English"] = 17000,
["Use_Kenyan_English"] = 2400,
["Use_New_Zealand_English"] = 21000,
["Use_Nigerian_English"] = 4800,
["Use_Oxford_spelling"] = 2400,
["Use_Pakistani_English"] = 5600,
["Use_Philippine_English"] = 9500,
["Use_South_African_English"] = 8700,
["Use_dmy_dates"] = 1670000,
["Use_first_nonempty"] = 16000,
["Use_list-defined_references"] = 4000,
["Use_mdy_dates"] = 552000,
["Use_shortened_footnotes"] = 2300,
["User"] = 557000,
["User-generated_source"] = 5700,
["User-multi"] = 335000,
["User0"] = 18000,
["User19"] = 11000,
["User2"] = 3900,
["User21"] = 53000,
["User3"] = 242000,
["User4"] = 3200,
["User5"] = 7000,
["UserSummary"] = 115000,
["User_American"] = 2300,
["User_COI"] = 28000,
["User_Copy_Edit"] = 2200,
["User_Firefox"] = 5900,
["User_HTML"] = 3000,
["User_OS:Dos/style.css"] = 2100,
["User_QAIbox"] = 5700,
["User_QAIbox/auto"] = 3800,
["User_Translator"] = 2400,
["User_UN"] = 2400,
["User_WP"] = 19000,
["User_WP/switch"] = 19000,
["User_Wikipedia"] = 2300,
["User_Wikipedia_reference"] = 2900,
["User_Wikipedian_For"] = 10000,
["User_Wikipedian_for"] = 15000,
["User_Wikipediholic"] = 2200,
["User_category_header"] = 2200,
["User_committed_identity"] = 2500,
["User_contrib"] = 5100,
["User_current_age"] = 2500,
["User_current_age/days"] = 2500,
["User_current_age/months"] = 2500,
["User_current_age/years"] = 2500,
["User_de"] = 5600,
["User_de-1"] = 7700,
["User_de-2"] = 4400,
["User_de-3"] = 2300,
["User_en"] = 39000,
["User_en-1"] = 2500,
["User_en-2"] = 7700,
["User_en-3"] = 15000,
["User_en-4"] = 8900,
["User_en-5"] = 6500,
["User_en-N"] = 4900,
["User_es"] = 3800,
["User_es-1"] = 7200,
["User_es-2"] = 4700,
["User_es-3"] = 2600,
["User_fr"] = 4000,
["User_fr-1"] = 9100,
["User_fr-2"] = 6500,
["User_fr-3"] = 3800,
["User_html"] = 2700,
["User_in_region"] = 28000,
["User_in_the_United_Kingdom"] = 2000,
["User_in_the_United_States"] = 4200,
["User_infobox"] = 3000,
["User_instrument"] = 2800,
["User_invitation"] = 5800,
["User_iso15924"] = 2400,
["User_iso15924/level-text"] = 2800,
["User_iso15924/user_script_catlink"] = 2700,
["User_it-1"] = 2800,
["User_ja-1"] = 2900,
["User_la-1"] = 2800,
["User_link"] = 238000,
["User_lives_in"] = 7000,
["User_male"] = 2300,
["User_oops"] = 2100,
["User_other"] = 590000,
["User_page"] = 44000,
["User_proud"] = 5100,
["User_rights"] = 5000,
["User_ru"] = 3000,
["User_ru-1"] = 2100,
["User_sandbox"] = 293000,
["User_summary"] = 115000,
["User_talk_other"] = 68000,
["User_time_zone"] = 4100,
["User_visited"] = 6400,
["User_wikipedia"] = 2000,
["User_wikipedia/RC_Patrol"] = 3700,
["User_wikipedia/Rollback"] = 2300,
["User_wikipedia/WikiGnome"] = 2700,
["User_wishes_to_visit"] = 6000,
["User_zh"] = 2200,
["Userbox"] = 301000,
["Userbox-2"] = 33000,
["Userbox-level"] = 102000,
["Userbox-r"] = 6100,
["UserboxCOI"] = 28000,
["Userbox_table_bottom"] = 11000,
["Userbox_table_category"] = 2400,
["Userbox_table_top"] = 11000,
["Userbox_table_userbox"] = 11000,
["Userboxbottom"] = 52000,
["Userboxtop"] = 57000,
["Usercheck-short"] = 3600,
["Userlinks"] = 29000,
["Userpage"] = 30000,
["Userpage_blanked"] = 8400,
["Userspace_draft"] = 41000,
["Usgs-gazetteer"] = 11000,
["Ushr"] = 15000,
["Ussc"] = 5200,
["Usurped"] = 5300,
["Utrs"] = 5200,
["Module:URL"] = 577000,
["Module:Unicode_data"] = 1470000,
["Module:Unicode_data/scripts"] = 486000,
["Module:Unstrip"] = 45000,
["Module:Unsubst"] = 11700000,
["Module:Unsubst-infobox"] = 191000,
["Module:Urldecode"] = 4500,
["Module:User"] = 557000,
["Module:UserLinks"] = 874000,
["Module:UserLinks/config"] = 874000,
["Module:UserLinks/extra"] = 23000,
["Module:UserLinks/shared"] = 874000,
["Module:User_contrib"] = 5100,
["Module:Userbox"] = 307000,
["Module:Uses_Wikidata"] = 3200,
["Module:Ustring"] = 739000,
}
a2d476eb5b0ea9ca4a67bec8b21989ea55e3530f
Template:High use
10
864
1917
1916
2023-10-01T10:40:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:High_use]]
wikitext
text/x-wiki
#Redirect [[Template:High-use]]
{{Redirect category shell|{{R from modification}}{{R from template shortcut}}}}
65ce33c8f2d9659b46256ceb1f7fe57859f66fb2
Help:Citation Style 1
12
865
1919
1918
2023-10-01T10:40:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Help:Citation_Style_1]]
wikitext
text/x-wiki
{{Short description|Help page for citation templates}}
{{Wikipedia how to|WP:CS1|HELP:CS1}}
{{Nutshell|This is an introductory how-to for Wikipedia's most frequently used citation style. It does not cover every option of every citation template. See individual templates' documentation (e.g. at [[Template:Cite journal]]) for details beyond this basic cheatsheet.}}
{{notice|image=Gnome-applications-science.svg|This help page has {{subpages|testcases|Help:Citation Style 1}} demonstrating various uses.}}
'''Citation Style 1''' ('''CS1''') is a collection of [[Wikipedia:Citing sources|reference citation]] [[Help:Template|templates]] that can be modified to create different styles for different referenced materials. Its purpose is to provide a set of default formats for references on Wikipedia. It includes a series of templates that in turn use [[Module:Citation/CS1]].
The use of CS1 or of templates is not compulsory; per [[WP:CITESTYLE]]:
<blockquote>Wikipedia does not have a single [[style guide|house style]]. Editors may choose any option they want; one article need not match what is done in other articles or what is done in professional publications or recommended by academic [[style guide]]s. However, citations ''within a given article'' should follow a consistent style.</blockquote>
[[WP:CITEVAR]] additionally states:
{{quote|If the article you are editing is already using a particular citation style, you should follow it; if you believe it is inappropriate for the needs of the article, seek consensus for a change on the talk page.}}
CS1 uses (in addition to Wikipedia's own [[WP:Manual of Style|Manual of Style]]) elements of ''[[The Chicago Manual of Style]]'' and the ''[[Publication Manual of the American Psychological Association]]'', with significant adaptations.
==Style==
There are a number of templates that use a name starting with ''cite''; many were developed independently of CS1 and are not compliant with the CS1 style. There are also a number of templates that use one of the general use templates as a meta-template to cite a specific source.
To be compliant with CS1, a template must:
* Use [[Module:Citation/CS1]] or one of the templates listed below.
* Use a period as a punctuation mark to separate fields and end the citation.
* Use a semicolon as a punctuation mark to separate authors and editors.
* Format the title of longer works in italics.
* Format the title of short works such as chapters in quotes.
==Templates==
===General use===
The following is a list of templates that implement Citation Style 1 for one or more types of citations but are not restricted to any specific source.
{| class="wikitable" style="max-width:55em;"
!scope="row" {{Yes}}
| Indicates that the corresponding tool or gadget can generate the template anytime user wishes. However, this does not mean that the tool or gadget fully supports all parameters or provides an interface for them. In fact, none of the mentioned items do so.
|-
!scope="row" {{Partial|Sometimes}}
| Indicates that the corresponding tool or gadget may or may not generate the corresponding template. For more information, see associated footnote.
|}
{| class="wikitable" style="text-align:center;"
|+ General-use CS1 templates
!scope="col"| Template
!scope="col"| Use
!scope="col"| [[Wikipedia:The Wikipedia Library/Citoid|Citoid]]
!scope="col"| [[WP:Citation expander|Citation expander]]
!scope="col"| [[WP:RefToolbar/2.0|RefToolbar 2.0]]
!scope="col"| [[Wikipedia:ProveIt|ProveIt]]
!scope="col"| [[User:Odie5533/SnipManager|SnipManager]]
|-
!scope="row"| {{tl|Cite arXiv}}
| [[arXiv]] preprints || || || || ||
|-
!scope="row"| {{tl|Cite AV media}}
| audio and visual sources || || || || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite AV media notes}}
| liner notes from albums, DVDs, CDs and similar audio-visual media || || || || ||
|-
!scope="row"| {{tl|Cite book}}
| books || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite conference}}
| conference papers || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite encyclopedia}}
| edited collections || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite episode}}
| television or radio programs and episodes || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite interview}}
| interviews || || || || ||
|-
!scope="row"| {{tl|Cite journal}}
| academic and scientific papers published in journals || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite magazine}}
| magazines and newsletters || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite mailing list}}
| archived public mailing lists || || || || ||
|-
!scope="row"| {{tl|Cite map}}
| maps || || || || ||
|-
!scope="row"| {{tl|Cite news}}
| news articles in print, video, audio or web || {{Yes}} || {{Partial|Sometimes}}{{efn|Citation expander will only attempt to tidy up the citation and will not add new content}} || {{Yes}} || {{Yes}} || {{Yes}}
|-
!scope="row"| {{tl|Cite newsgroup}}
| online newsgroups || || || || ||
|-
!scope="row"| {{tl|Cite podcast}}
| audio or video [[podcast]] || || || || ||
|-
!scope="row"| {{tl|Cite press release}}
| press releases || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite report}}
| reports by government departments, instrumentalities, operated companies, etc. || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite serial}}
| audio or video serials || || || || ||
|-
!scope="row"| {{tl|Cite sign}}
| signs, plaques and other visual sources || || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite speech}}
| speeches || || || || ||
|-
!scope="row"| {{tl|Cite tech report}}
| technical reports || || || || ||
|-
!scope="row"| {{tl|Cite thesis}}
| theses || {{Yes}} || || || {{Yes}} ||
|-
!scope="row"| {{tl|Cite web}}
| web sources not characterized by another template || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}
|}
{{notelist}}
===Specific source===
There are a number of templates that are CS1 compliant, because they use a CS1 template as a base, but are tied to a specific source; these are listed in [[:Category:Citation Style 1 specific-source templates]].
==How the templates work==
CS1 uses a series of templates that provide a consistent output. The main difference is in parameters optimized for the subject. For example, {{tl|cite book}} has fields for title and chapter, whereas {{tl|cite journal}} has fields for journal and title.
This help page uses the names most commonly used across the templates series; see each template's documentation for details.
CS1 templates present a citation generally as:
* With author:
:{{Cite journal |last=((Author)) |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}}
* Without author:
:{{Cite journal |date=n.d. |title=Title |work=Work |publisher=Publisher |id=Identifiers |no-tracking=yes}}
(where "n.d." could also be any other valid date formatted per the MOS)
===Authors===
An author may be cited using separate parameters for the author's surname and given name by using {{para|last}} and {{para|first}} respectively. If a cited source has multiple authors, subsequent authors can be listed in the citation using {{para|last2}} and {{para|first2}}, {{para|last3}} and {{para|first3}}, etc.<ref group="Note" name="NB_Unlimited">The number of authors that can be listed in the citation and displayed when published is unlimited.</ref> For symmetry with the other numbered parameters, {{para|last1}} and {{para|first1}} are available as well, as shown in the following example:
:<code><nowiki>{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code>
:{{cite book |last1=Hawking |first1=Stephen |last2=Hawking |first2=Lucy |title=George's Secret Key to the Universe}}
For symmetry with similar parameters for editors and other contributors (discussed further below), longer parameter forms are also available for authors: {{para|author-last}} and {{para|author-first}}, as well as numbered variants like {{para|author-last{{var|n}}}} and {{para|author-first{{var|n}}}} or {{para|author{{var|n}}-last}} and {{para|author{{var|n}}-first}} (with {{var|n}} referring to this author's number in the list). Because the shorthand parameters might erroneously have been used also for editors and other types of contributors by some Wikipedians in the past, please make sure that the parameters actually refer to authors when expanding {{para|last}} and {{para|first}} parameters to their longer equivalents (equivalent parameters for editors etc. exist as well, see [[#Editors|below]]).
If a cited source has a large number of authors, one can limit the number of authors displayed when the citation is published by using the {{para|display-authors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page.
If a cited author is notable and the author has a Wikipedia article, the author's name can be linked with {{para|author-link}}.<ref group="Note" name="NB_Prefix">If the English Wikipedia does not have an article about the author, but an article is available in another language entity of Wikipedia or if a [[Wikidata]] node for this author exists already, you can prefix the link using that Wikipedia's [[Help:Interlanguage links|language prefix]] (similar to <code>:en:</code> for the English Wikipedia) in order to create an [[Help:Interlanguage links|interwiki link]]. The [[Help:Interwiki linking#Prefix codes for linking to Wikimedia sister projects|prefix]] for Wikidata nodes is <code>:d:</code> (or <code>:wikidata:</code>) to be followed by the Q''<id>'' number of the corresponding entry. (<!-- Put in brackets because this seldomly applies to authors: -->Similar, [[Wikisource]] uses <code>:s:</code> (or <code>:wikisource:</code>), [[Wiktionary]] <code>:wikt:</code> (or <code>:wiktionary:</code>) and [[Wikimedia Commons|Commons]] <code>:c:</code> (or <code>:commons:</code>), followed by the corresponding article name.) Alternatively, if a suitable [[:m:Interwiki map|custom interwiki prefix]] is defined for another authority control repository, this can be used as well. For example, to link to an author's [[VIAF]] entry (with code <code>''<id>''</code>), <code>:VIAF:''<id>''</code> can be used, even if this would resolve to an independent external site. In the absence of a local article such links can help to at least establish a connection to a particular author and, if an article gets created in the English Wikipedia as well in the future, these links can be fixed up by bots to point to the local article instead.</ref> If a citation includes multiple notable authors, one may use {{para|author-link{{var|n}}}} or {{para|author{{var|n}}-link}}, etc. This method is used because the {{para|last}}- and {{para|first}}-type parameters do not allow wikilinking. However, {{para|author-link}} cannot be used to link to an external website; the external link will not render correctly.<ref group="Note" name="NB_Prefix"/> Below is an example of a wikilinked author credit:
:<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}</nowiki></code>
:{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe}}
When an author is cited, the date of the cited work is displayed after the author's name, as shown in the example below:
:<code><nowiki>{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}</nowiki></code>
:{{cite book |author-last1=Hawking |author-first1=Stephen |author-link1=Stephen Hawking |author-last2=Hawking |author-first2=Lucy |title=George's Secret Key to the Universe |date=2007}}
If no author is cited, the date appears after the title, as shown in the example below:
:<code><nowiki>{{cite book |title=George's Secret Key to the Universe |date=2007}}</nowiki></code>
:{{cite book |title=George's Secret Key to the Universe |date=2007}}
If the cited source does not credit an author, as is common with newswire reports, press releases or company websites use:
:{{para|author|<nowiki><!--Not stated--></nowiki>}}
This HTML comment alerts fact-checking and citation-fixing editors, and potentially bots, that the cited source did not name an author—the author was not overlooked. Without this entry editors and bots would waste time researching cited sources for a non-existent author credit.
When using {{para|author}} avoid citations like <code><nowiki>{{cite news |work=Weekday Times |author=''Weekday Times'' editors |title=...}}</nowiki></code>, unless the article is on a field in which the majority of professional journals covering that field use such a citation style.
Editors should use an {{para|author}} organizational citation when the cited source, such as a committee report, specifically names an official body or a sub-unit of the publisher as the collective author of the work, e.g. {{para|author|Commission on Headphone Safety}} or {{para|author|Rules Sub-committee}}. Do not use {{para|author}} to assert what you think was probably the collective author when the source itself does not specifically specify a collective author; doing so is [[WP:NOR|original research]] and falsification of [[WP:V|source verifiability]] and [[WP:RS|reliability]].
{{para|author}} should never hold the name of more than one author. Separate individual authors into enumerated individual {{para|author{{var|n}}}} parameters.
===Editors===
An editor may be cited using separate parameters for the editor's last and first name. A single or first editor would use {{para|editor-last}} and {{para|editor-first}}; subsequent editors would use {{para|editor2-last}} and {{para|editor2-first}}, {{para|editor3-last}} and {{para|editor3-first}}, etc.
If an editor has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|editor-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple editors, you may use {{para|editor2-link}}, {{para|editor3-link}}, etc. to wikilink to each editor's Wikipedia article. This method is used because {{para|editor-last}} and {{para|editor-first}} do not allow wikilinking. {{para|editor-link}} cannot be used to link to an external website.
If a cited source has a large number of editors, one can limit the number of editors displayed when the citation is published using the {{para|display-editors}} parameter as described in detail in the [[Help:Citation Style 1#Display options|Display options]] section of this help page.
=== Translators ===
A translator may be cited using separate parameters for the translator's last and first name. A single or first translator would use {{para|translator-last}} and {{para|translator-first}}; subsequent translators would use {{para|translator2-last}} and {{para|translator2-first}}, {{para|translator3-last}} and {{para|translator3-first}}, etc.
If a translator has a Wikipedia article, you may wikilink to that Wikipedia article using {{para|translator-link}}.<ref group="Note" name="NB_Prefix"/> If a cited work has multiple translators, you may use {{para|translator2-link}}, {{para|translator3-link}}, etc. to wikilink to each translator's Wikipedia article. This method is used because {{para|translator-last}} and {{para|translator-first}} do not allow wikilinking. {{para|translator-link}} cannot be used to link to an external website.
===Others===
* '''others''': This parameter is used to credit contributors other than an author or an editor, such as an illustrator. You should include both the type of contribution and the name of the contributor, for example {{para|others|Illustrated by John Smith}}.<ref group="Note" name="NB_Prefix"/>
===Dates===
Dates are indicated by these parameters:
* '''date''': Full date of publication edition being referenced, in the same format as other dates in citations in the same article. Must not be wikilinked.
** or: '''year''': Year of publication edition being referenced. Discouraged in favor of '''date''', except in the rare case that {{em|all}} of the following conditions are met:
**#the publication-date format in the template is YYYY-MM-DD
**#the citation requires a <code>[[Wikipedia:Citation templates and reference anchors|CITEREF]]</code> [[Template:Sfn#More than one work in a year|disambiguator]]
* '''orig-date''': Original publication date or year, for display (in square brackets) after the '''date''' (or '''year'''). For clarity, please supply specifics, for instance <code>|orig-date=first published 1859</code> or <code>|orig-date=composed 1904</code>. This parameter displays only if there is a value for '''date''' (or '''year'''). Alias: '''origyear'''.
When a source does not have a publication date, use {{para|date|n.d.}} or {{para|date|nd}}
Acceptable date formats are shown in the "Acceptable date formats" table of the {{section link|Manual of Style/Dates and numbers|Dates, months and years}}. Further points:
* Prescriptions about date formats only apply when the date is expressed in terms of Julian or Gregorian dates, or which use one of the seasons (spring, summer, autumn or fall, winter). Sources are at liberty to use other ways of expressing dates, such as "spring/summer" or a date in a religious calendar; editors should report the date as expressed by the source. [[WP:SEASON|Although the seasons are not normally capitalized]], they are capitalized when used as dates in CS1 templates, and the capitalization of the season stated by the source may be altered to follow this convention. In cases where the date as expressed in the source is not compatible with the template software, the citation should be created without using a template.
* Do not wikilink.
* Access and archive dates in references should be in either the format used for [[MOS:DATEUNIFY|publication dates]], or YYYY-MM-DD.
====Date format compliance with Wikipedia's Manual of Style====
CS1 uses {{section link|Wikipedia:Manual of Style/Dates and numbers|Dates, months, and years}} ([[MOS:DATEFORMAT]]) as the reference for all date format checking performed by [[Module:Citation/CS1]]. For various reasons, CS1 is not fully compliant with MOS:DATEFORMAT. This table indicates CS1 compliance with the listed sections of MOS:DATEFORMAT.
{|class="wikitable plainrowheaders" style="margin: 1em auto 1em auto;"
|+CS1 compliance with [[Wikipedia:Manual of Style/Dates and numbers]]
!scope="col"| Section
!scope="col"| Compliant
!scope="col"| Comment
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Acceptable date formats|Acceptable date formats table]]
| yes
| Exceptions: linked dates not supported;<br />sortable dates not supported ({{tlx|dts}} etc.);<br />proper name dates not supported with the exception of 'Easter YYYY' and 'Christmas YYYY';<br />shortened month names longer than three characters or with terminating periods not supported;<br />quarterly dates supported in the form 'First Quarter 2020'
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Unacceptable date formats|Unacceptable date formats table]]
| yes
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Consistency|Consistency]]
| yes<sup>{{dagger}}</sup>
|rowspan="3"| Article-level restrictions are beyond the scope of CS1<br /><sup>{{dagger}}</sup>CS1/CS2 templates follow the format specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} templates; see [[#Auto-formatting citation template dates|Auto-formatting citation template dates]]
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Strong national ties to a topic|Strong national ties to a topic]]
| no
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Retaining existing format|Retaining existing format]]
| no
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Era style|Era style]]
| no
|Dates earlier than 100 not supported. Wikipedia [[Wikipedia:Citing sources#Say where you read it|editors seldom read ancient manuscripts directly]]; the specific, modern, published edition read by the editor is what goes in the source citation. Thus, the date of the source actually consulted should be provided in {{para|date}}, and the date of the ancient source may be provided in {{para|orig-date}}; the format of the orig-date value is not checked for errors.
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Julian and Gregorian calendars|Julian and Gregorian calendars]]
| limited
| Julian prior to 1582; Gregorian from 1582; assumes Gregorian in the overlap period of 1582 – c. 1923
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Ranges|Ranges]]
| yes
| Exceptions: does not support the use of <code>&ndash;</code> or <code>&nbsp;</code><br />does not support dates prior to 100;<br />does not support solidus separator (/)<br />does not support " to " as a date separator<br />does not support YYYY–YY where the two-digit year is less than 13 (change to YYYY–YYYY to eliminate the error message)
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Uncertain, incomplete, or approximate dates|Uncertain, incomplete, or approximate dates]]
| yes
| Exceptions: does not support {{tlx|circa}} or {{tlx|floruit}};<br />does not support dates prior to 100;<br />Supports <code>c. </code> only with a single year value (no ranges or day/month combinations).
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Days of the week|Days of the week]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Seasons|Seasons]]
| limited
| CS1 capitalizes seasons used as dates in citations, in line with external style guides
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Decades|Decades]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Centuries and millennia|Centuries and millennia]]
| no
|
|-
!scope="row"| [[Wikipedia:Manual of Style/Dates and numbers#Abbreviations for long periods of time|Abbreviations for long periods of time]]
| no
|
|}
====Date range, multiple sources in same year====
If dates are used, the year range is 100 to present without era indication (AD, BC, CE, BCE). In the case where the same author has written more than one work in the same year, a lower-case letter may be appended to the year in the date parameter ({{xt|{{!}}date=July 4, 1997b}}) or the year parameter ({{xt|{{!}}year=1997b}}).
====Auto-formatting citation template dates====
{{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}
[[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc.) in the style specified by the article's {{tlx|use dmy dates}} or {{tlx|use mdy dates}} template. Editors may also choose how CS1/CS2 templates render dates by the use of {{para|cs1-dates|<{{var|keyword}}>}} in the article's {{tld|use xxx dates}} template.<section begin="auto_date_format_table" />
{| class="wikitable"
|+Acceptable <code>{{pipe}}cs1-dates=</code> keywords
!scope="col"| Keyword
!scope="col"| Definition
|-
!scope="row"| <code>l</code>
|rowspan="2"| long-form publication and access- / archive-dates;<br />this is the default case when {{para|cs1-dates|plain=yes}} is omitted or empty
|-
!scope="row"| <code>ll</code>
|-
!scope="row"| <code>ls</code>
| long-form publication dates; abbreviated access- / archive-dates
|-
!scope="row"| <code>ly</code>
| long-form publication dates; year-initial numeric access- / archive-dates (ymd)
|-
!scope="row"| <code>s</code>
|rowspan="2"| abbreviated publication and access- / archive-dates
|-
!scope="row"| <code>ss</code>
|-
!scope="row"| <code>sy</code>
| abbreviated publication dates; year-initial numeric access- / archive-dates (ymd)
|-
!scope="row"| <code>y</code>
|rowspan="2"| year-initial numeric publication, access- and archive-dates (ymd);<br />cs1|2 cannot reformat Month YYYY, Season YYYY, date-ranges of any form, or [[Julian calendar]] dates into ymd format
|-
!scope="row"| <code>yy</code>
|}<section end="auto_date_format_table" />
Example: to have the CS1/CS2 templates in an article render their publication dates in the long form (fully spelled-out month names) with access-/archive-dates rendered in short form (abbreviated month names), write:
:{{tlx|use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates{{=}}ls}}
This documentation page has <code><nowiki>{</nowiki>{use dmy dates|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=y}}</code> at the top of this section so this cs1 template will render with ymd dates:
:<code><nowiki>{{</nowiki>cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}</code>
::{{cite web |title=Example Webpage |url=https://example.com |website=Example |date=31 October 2017 |access-date=Dec 5, 2017}}
This global setting may be overridden in individual CS1/CS2 templates by use of {{para|df}}; abbreviated date forms are not supported by {{para|df}}.
{{lang|la|Nota bene}}: CS1/CS2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template.
===Titles and chapters===
* '''title''': The title of the cited source. Titles are displayed in italics, except for short works such as a {{txl|cite press release}} and cited articles in {{tlx|cite news}}, {{tlx|cite journal}}, {{tlx|cite magazine}}, {{tlx|cite web}}, {{tlx|cite conference}}, and {{tlx|cite podcast}}, where the title is shown in quotation marks. For templates like these that show the title in quotation marks, any double quotation marks inside the title should be [[MOS:QINQ|converted]] to single quotation marks. Use [[MOS:CT|title case]] unless the cited source covers a scientific, legal or other technical topic and sentence case is the predominant style in journals on that topic. Use either title case or sentence case consistently throughout the article. Do not omit a leading "The" from the title. Subtitles are typically separated from titles with ": " though " – " is also used. [[MOS:TM|As with trademarks]], Wikipedia {{em|does not}} attempt to emulate any stylistic flourishes used by the cited source's publisher, such as ALL-CAPS, all-lower-case, {{sm|Small Caps}}, etc.; use either standard title case or sentence case consistently. If the cited source is itself notable and has a Wikipedia article, the title can be wikilinked. Wikilinking the title will make it impossible to use the "url" parameter to link to an external copy of the cited source, so only do this when citing works that do not need to be externally linked. A link to the actual source is preferred to a link to a Wikipedia article about the source.
* '''script-title''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., should not be italicized and may also read [[right-to-left]] (RTL). To include titles in these languages, use '''script-title'''. Titles in '''script-title''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#|script-<param>= language codes|supported language codes]] followed by a colon: {{para|script-title|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation.
* '''trans-title''': If the cited source is in a foreign language, an English translation of the title can be given here. This field will be displayed in square brackets after the title and will be linked to {{para|url}} if used.
* '''chapter''': The title of the cited chapter from the source, written in full. Displayed in quotes before the title. For websites arranged in sections the "at" parameter serves a similar function: {{para|at|Featured News}}
* '''script-chapter''': Languages that do not use a Latin-based alphabet, Arabic, Chinese, Cyrillic, Greek, Hebrew, Japanese, Korean, etc., may possibly read [[right-to-left]] (RTL). To include chapter titles in these languages, use '''script-chapter'''. Chapter titles in '''script-chapter''' are wrapped in special HTML markup to isolate RTL script from adjacent left-to-right text. Part of that special markup is a language attribute that browsers can use to assist in the proper display of the script. Editors must add a prefix to the script that will identify the language. The prefix is one of the [[Help:Citation Style 1#|script-<param>= language codes|supported language codes]] followed by a colon: {{para|script-chapter|ar:<bdi>العربية</bdi>}}. Unrecognized codes are ignored and will display in the rendered citation. This field will be displayed following the transliterated title.
* '''trans-chapter''': If the cited source is in a foreign language, an English translation of the cited chapter title can be given here. This field will be displayed in square brackets within the quotation marks which enclose the chapter field.
Titles containing certain characters will both display and link incorrectly unless those characters are replaced or encoded like this:
{| class="wikitable" style="text-align:center;"
|-
!scope="col"| Character
!scope="col"| Must be replaced with
|-
!scope="row"| newline
| space
|-
!scope="row"| [
| &#91;
|-
!scope="row"| ]
| &#93;
|-
!scope="row"| <nowiki>|</nowiki>
| &#124;
|}
====|script-<<var>param</var>>= language codes====
Language codes known to cs1|2 for languages that do not use a Latin script are:
{{#invoke:Cs1 documentation support|script_lang_lister}}<!-- makes a language code: name list from the master list in [[Module:Citation/CS1/Configuration]] -->
===Type===
* '''type''': Specifies the type of work cited. Appears in parentheses immediately after the title. Some templates use a default that can be overridden; example: {{tl|cite press release}} will show "(Press release)" by default. Other useful values are: Review, Systemic review, Report, Abstract, Meta-analysis, Original article, Oral history<!-- supported as "Oral History" by Dublin Core/Zotero -->, Email<!-- supported by Dublin Core/Zotero -->, Website<!-- supported by Dublin Core/Zotero -->, Text<!-- supported by Dublin Core/Zotero -->, Document<!-- supported by Dublin Core/Zotero -->. Alias: '''medium''', in {{tl|cite AV media}}, where typical values are: Motion picture, Moving image<!-- supported as "Moving Image" by Dublin Core/Zotero -->, Television production, Videotape, DVD, Blu-ray, Trailer, CD, Radio broadcast, Podcast, Sound<!-- supported by Dublin Core/Zotero -->.
===Language===
{{csdoc|language}}
===Work and publisher===
{{see|WP:CITEHOW}}
* '''work''': Used by some templates such as {{tl|cite web}} (where it is aliased to '''website'''), {{tl|cite news}} (aliased to '''newspaper'''), {{tl|cite magazine}} (aliased to '''magazine'''), {{tl|cite journal}} (aliased to '''journal'''), and others where the citation is usually to a specific item (given in the "title" parameter) found in a larger work (this "work" parameter), most commonly an article in a website or print periodical, or an episode in a TV series. {{em|Do not confuse this with the "publisher" parameter}}, which is for the publishing company. If the work is notable and has an article in Wikipedia, it should be wiki-linked at first appearance in citations in the article. If the "title" is already linked-to externally, do not externally link to the "work". If the work title as given by the site/publication would be exactly or substantially the same as the name of the publisher, do not use the "publisher" parameter (see below for more detail).
:On websites, in most cases "work" is the name of the website (as usually given in the logo/banner area of the site, and/or appearing in the {{tag|title|o}} of the homepage, which may appear as the page title in your browser tab, depending on browser). Do not append ".com" or the like if the site's actual title does not include it (thus {{para|work|<nowiki>[[Salon (magazine)|Salon]]</nowiki>}}, not <code>Salon.com</code>). If no clear title can be identified, or the title explicitly is the domain name, then use the site's domain name. Do not falsify the work's name by adding descriptive verbiage like "Website of [Publisher]" or "[Publisher]'s Homepage". Capitalize for reading clarity, and omit "www.", e.g. convert "www.veterinaryresourcesuk.com" to "VeterinaryResourcesUK.com".
:Many journals use highly abbreviated titles when citing other journals (e.g. ''J Am Vet Med'' for ''[[Journal of the American Veterinary Medical Association]]'') because specialists in the field the journal covers usually already know what these abbreviations mean. Our readers usually do not, so these abbreviations should always be expanded.
:If the titled item being cited is part of some other larger work, as in a book in a series, a special issue of a periodical, or a sub-site at a domain (e.g., you are citing the law school's section of a university's website system), it is usually better to use the name of that more specific work than just that of the entire larger work. Various citation templates provide separate fields for such information, e.g. {{para|chapter}}{{para|title}}{{para|volume}}{{para|series}} in {{tlx|Cite book}}. If the nature of the work and its relation to the site, book, or other context in which it is found is complicated or confusing, simply explain the situation after the citation template and before the {{xtag|ref|c}} that closes the citation.
* '''publisher''': the name of the organization that actually published the source. The field should not include the corporate designation such as "Ltd" or "Inc.", unless some ambiguity would result or the organization is usually known with that designation even in everyday use (e.g. [[Apple Inc.]], which otherwise might be confused with [[Apple Records]] and other publishers). "Publisher", "Publishing" and "Publications" can be abbreviated "Pubr.", "Pubg." and "Pubs." respectively, but some templates in this series include a period (full-stop) immediately after this parameter, so the period may have to be omitted; check the output if you abbreviate here. They are usually safe to omit, but are usefully included where the publisher's name might be confusing without it. This is most often the case when the publisher's name is something like "Joshua Martin Publications", which without the designation might be mistaken for a co-author/editor. A leading "The" can generally be omitted, again unless confusion might result (e.g., for [[The International Cat Association]], "The" is part of their official acronym, TICA). If the publisher is notable and has an article independent of the "work", the "publisher" parameter can include a wiki-link to that article, but should never externally link to the publisher's website. Whether the publisher needs to be included depends to an extent on the type of work and sometimes on its recognizability. [[WP:Citing sources]], and most off-Wikipedia citation guides, suggest that it should be used for books (even famous ones), but not necessarily other works. The "publisher" parameter should not be included for widely-known mainstream news sources, for major academic journals, or where it would be the same or mostly the same as the work. For example, the "publisher" parameter should be omitted in these examples:
*:{{para|work|<nowiki>[[Amazon.⁠com]]</nowiki>}}{{para|publisher|Amazon Inc.|!mxt=y}}
*:{{para|newspaper|The Aberdeen Times}}{{para|publisher|The Aberdeen Times|!mxt=y}}<!--A genuine Idaho newspaper: http://www.smalltownpapers.com/newspapers/newspaper.php?id=1 -->
*:{{para|newspaper|<nowiki>[[The New York Times]]</nowiki>}}{{para|publisher|The New York Times Company|!mxt=y}}
*:{{para|newspaper|<nowiki>[[USA Today]]</nowiki>}}{{para|publisher|<nowiki>[[Gannett Company]]</nowiki>|!mxt=y}}
*:{{para|journal|<nowiki>[[Nature (journal)|Nature]]</nowiki>}}{{para|publisher|<nowiki>[[Nature Research]]</nowiki>|!mxt=y}}
:If the work is self-published, [[WP:SELFPUB|this is a very important fact]] about [[WP:RS|potential reliability of the source]], and needs to be specified; no consensus exists for the exact value of {{para|publisher}} in such a case, but some printed style guides suggest "author", while many Wikipedia editors have used "self-published" for increased clarity. When an exhaustive attempt to discover the name of the publisher (try [[whois]] for websites, and [[WorldCat]] for books, etc.) fails, use {{para|publisher|<nowiki><!--Unspecified by source.--></nowiki>}} to explicitly indicate that this was checked, so other editors do not waste time duplicating your fruitless efforts. Do not guess at the publisher when this information is not clear. See next entry for co-published works and how to specify multiple publishers and their locations.
* '''location''' (alias {{para|publication-place}}): Geographical place of publication ({{em|not}} where you found your copy, nor location of material in the source). This is usually {{var|City, Country}}, or {{var|City, US State}}. The city name by itself can be used for world-recognized cities like New York, London (except in articles about [[London, Ontario|Canadian]] topics), Paris, Tokyo. Simply having a unique name does not mean it is globally recognizable; e.g., many people do not know where [[Mumbai]] is, especially if they are old enough that it was called [[Bombay]] for much of their lives. If in doubt, be more not less specific, since "Toronto, Canada" and "San Francisco, California" do not actually hurt anything. Be more specific when a {{var|City, Country}} would be ambiguous, e.g. {{para|location|Hanley, Staffordshire, UK}}, versus {{para|location|Hanley, Worcestershire, UK}}. Do not use sub-national postal abbreviations ("DE", "Wilts", etc.), per [[MOS:POSTABBR]].{{disputed inline|Postal abbreviations}} The location parameter should be omitted when it is implied by the name of the work, e.g. ''The Sydney Morning Herald''. The location parameter should be used when the location is part of a common appellation of but not the actual title of a periodical. For example, the newspaper sometimes called the ''New York Daily News'' is actually [[Daily News (New York)|''Daily News'']] and can be entered with {{para|newspaper|Daily News}} {{para|location|New York}}, which yields: ''Daily News''. New York. A similar example is ''[[The Times]]'' of London (contrast ''[[The New York Times]]''). Per [[WP:SAYWHEREYOUGOTIT]], provide the location of the edition you are using (e.g., if a publisher has operations in both New York and London and you have the London-published edition, use {{para|location|London}}, even if the publisher's corporate HQ is in New York). If your edition specifically gives multiple locations, this can be indicated with, e.g., {{para|location|New York / London}}. This same technique can be used for co-published works, e.g.: {{para|location|Oakbrook Terrace, Illinois / Los Angeles}}{{para|publisher|<nowiki>[[Council of Science Editors]]</nowiki> / <nowiki>[[Loyola Marymount University]]</nowiki> Press}}; just get them in corresponding order in both parameters. The templates do {{em|not}} have separate {{para|location1|!mxt=y}}, {{para|publisher1|!mxt=y}}, etc., parameters. For historical publications that are still worth citing and still findable (e.g. via book digitizers – see the "via" parameter below), do not confuse the {{em|printer}} (printing press owner-operator) with the {{em|publisher}} (organization or person that sponsored the work); an edition may have a printer's name in larger type than the publisher, but for citation purposes we care about the publisher. If the distinction cannot be determined for certain in a particular case, list both. While some off-site publishers lean toward omitting publishing locations, they can serve more than purely bibliographical purposes on Wikipedia (e.g. an overabundance of material published in one place in an article about another place may reveal an editorial bias).
* '''publication-date''': Date of publication when different from the date the work was written. Displays only if date or year are defined and only if different, else publication-date is used and displayed as date. Use the same format as other dates in the article; do not wikilink. Follows publisher; if work is not defined, then publication-date is preceded by "published" and enclosed in parenthesis.
* '''via''' (optional): Name of the content deliverer (when they are {{em|not}} the publisher). "via" is not a replacement for "publisher", but provides additional detail. It may be used when the content deliverer presents the source in a format other than the original, or when the URL provided does not make clear the identity of the deliverer, or as suggested in [[WP:The Wikipedia Library]], e.g. [[WP:Credo accounts/Citations]]. See also {{section link||Registration or subscription required}}. Typical uses of this parameter are identification of a book-scanning and -databasing project such as those provided by the [[Internet Archive]], [[Project Gutenberg]], and [[Google Books]]; journal indexing and search services through which we commonly find academic articles, e.g. [[PubMed Central]], [[Paperity]], and [[JSTOR]]; and other aggregators or indexers of previously-published content, such as [[Dictionary.com]]. Use via only when a standard identifier cannot be used (see {{section link||Identifiers}}). Example: <code><nowiki>{{Cite dictionary |entry=skeptic |entry-url=https://www.dictionary.com/browse/skeptic?s=t#collins-section |title=[[Collins English Dictionary]] |edition=Complete & Unabridged Digital |date=2012 |location=London |publisher=[[HarperCollins]] |via=[[Dictionary.com]] |access-date=</nowiki>{{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code>
===Pages===
{| class="wikitable plainrowheaders sortable" style="float:right; margin-left:1em;"
|+CS1/CS2 template support for<br /><code>{{pipe}}volume=</code>, <code>{{pipe}}issue=</code>, <code>{{pipe}}page(s)=</code>
|-
!scope="col"| Template
!scope="col"| {{pipe}}volume=
!scope="col"| {{pipe}}issue=
!scope="col"| {{pipe}}page(s)=
!scope="col"| {{pipe}}quote-page(s)=
|-
!scope="row"| {{tlx|citation}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite arXiv}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite AV media}}
| {{yes}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite AV media notes}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite bioRxiv}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite book}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite citeseerx}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite conference}}
*(as a book)}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite conference}}
*(as a journal)}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite encyclopedia}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite episode}}
| {{no}} || {{yes}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite interview}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite journal}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite magazine}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite mailing list}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite map}}
*(as book)}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{plainlist|
*{{tlx|cite map}}
*(as journal or magazine)}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite news}}
| {{yes}} || {{yes}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite newsgroup}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite podcast}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite press release}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite report}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite serial}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite sign}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite speech}}
| {{no}} || {{no}} || {{no}} || {{no}}
|-
!scope="row"| {{tlx|cite ssrn}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite tech report}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite thesis}}
| {{yes}} || {{no}} || {{yes}} || {{yes}}
|-
!scope="row"| {{tlx|cite web}}
| {{no}} || {{no}} || {{yes}} || {{yes}}
|}
An editor may use any <u>one</u> of the following parameters in a given citation to refer to the specific page(s) or place in a cited source that contains the information that supports the article text. If more than one of the following parameters are used in the same citation, the error message <span style="color:red">Extra <code>|pages=</code> or <code>|at=</code> (</span>[[Help:CS1 errors#extra pages|help]]<span style="color:red">)</span> will display in the published citation. When more than one of the following parameters is used in error, {{para|page}} overrides both {{para|pages}} and {{para|at}}; {{para|pages}} overrides {{para|at}}. To resolve the error, remove extra parameters of this type until only one remains in the affected citation.
* '''page''': page in the cited source containing the information that supports the article text, for example {{para|page|52}}.
**{{anchor|pagehyphen}}'''Note:''' For a hyphenated page, use {{para|page|<nowiki>12{{hyphen}}34</nowiki>}}. This will not only properly display a hyphen, but also reduce the likelihood that an editor/bot will convert this to {{para|pages|<nowiki>12{{endash}}34</nowiki>}} by mistake.
* {{anchor|csdoc_pages<!-- for as long as we don't pull "pages" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_pages" -->}}'''pages''': pages in the cited source containing the information that supports the article text. Separate page ranges with an [[En dash#En dash|en dash]]: – , for example {{para|pages|236–239}}. Separate non-sequential pages either with commas or semicolons, for example {{para|pages|157, 159}}. The form {{para|pages|461, 466–467}} is used when you are citing both non-contiguous and sequential pages. For page numbers higher than 999, either do not use thousands separators or enclose the page number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators, e.g. {{para|pages|<nowiki>((1,234{{endash}}1,235))</nowiki>}}. For multiple hyphenated pages, use the [[Help:Citation Style 1#Accept-this-as-written markup|accept-this-as-written markup]] to avoid the hyphens being converted to dashes, e.g. {{para|pages|<nowiki>((1{{hyphen}}2)), ((3{{hyphen}}4))</nowiki>}}.
**'''Note:''' CS1 citations do not record the total number of pages in a cited source; do not use this parameter for that purpose.
* '''at''': place in the cited source containing the information that supports the article text when a page number is not given, is inappropriate or is insufficient. Common examples include column or col., paragraph or para. and section or sec. Depending on the source being cited, other indicators may be appropriate to use with the {{para|at}} parameter including, but not limited to, track, hours, minutes and seconds, act, scene, canto, book, part, folio, stanza, back cover, liner notes, indicia, colophon, dust jacket, etc. Examples include {{para|at|Column 2}} or {{para|at|Paragraph 5}} or {{para|at|Back cover}} or {{para|at|Act III, Scene 2}}.
* <b>quote-page</b>: The number of a single page quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the page(s) specified in {{para|page}}, {{para|pages}} or {{para|at}}. Displays preceded by {{code|p.}} unless {{para|no-pp|yes}}. If hyphenated, use {{tl|hyphen}} to indicate this is intentional (e.g. {{para|quote-page|<nowiki>3{{hyphen}}12</nowiki>}}). Alias: none.
* OR: <b>quote-pages</b>: A list or range of pages quoted in {{para|quote}}. Use either {{para|quote-page}} or {{para|quote-pages}}, but not both. Should be a subset of the pages specified in {{para|pages}} or {{para|at}}. Separate using an en dash (–); separate non-sequential pages with a comma (,). Displays preceded by {{code|pp.}} unless {{para|no-pp|yes}} is defined. Hyphens are automatically converted to en dashes; if hyphens are appropriate because individual page numbers contain hyphens, for example: pp. 3-1–3-15, use [[Help:Citation_Style_1#Accept-this-as-written_markup|double parentheses]] to tell the template to display the value of {{para|quote-pages}} without processing it, and use {{tl|hyphen}} to indicate to editors that a hyphen is really intended: {{para|quote-pages|<nowiki>((3{{hyphen}}1{{ndash}}3{{hyphen}}15))</nowiki>}}. Alias: none.
If the same source is reused with different pages, separate citations must be created. A way around this problem is to use a short citation {{tlx|sfn}}, or {{tlx|rp}} to provide linked page number citations.
===Edition identifiers===
* '''edition''': Identifies the particular edition of a cited source when the source has more than one edition, such as "2nd", "Revised", etc. Note that this parameter automatically displays " ed." after your entry. For example, {{para|edition|Revised third}} displays as: Revised third ed. The edition parameter can be omitted if there is no content difference between two editions of the same work; e.g. if a book was identically published in the UK and the US except, for example, ISBN number and cover art, it is not necessary to indicate either "UK" or "US" edition; or if citing minute:seconds of a film available in both a regular edition and a "Special Limited Collector's Edition", if the running time and cut are the same, it is not necessary to cite the particular edition.
* '''series''': When the source is part of a series, such as a book series or a journal where the issue numbering has restarted. For journal series, {{para|series}} should be limited to {{code|Original/New Series}}, {{code|First/Second/Third/... Series}}, or similar.{{refn|name="c17_14.126"|group="Note"|"Some numbered series have gone on so long that, as with certain long-lived journals, numbering has started over again, preceded by n.s. (new series), 2nd ser. (second series), or some similar notation, usually enclosed in commas. (A change of publisher may also be the occasion for a change in series designation.) Books in the old series may be identified by o.s., 1st ser., or whatever complements the notation for the new series."<ref>{{cite book |author=University of Chicago |title=The Chicago Manual of Style |edition=17th |year= 2017 |publisher=University of Chicago Press |page=14.126|location=Chicago |language= |isbn=978-0226104201}}</ref>
<p>For instance the journal ''[[Physical Review]]'', was numbered volumes 1–35 from 1893 to 1912 (the first series). From 1913 to 1969, the volume numbering restarted at 1 and went up to 188 (the second series). In 1970, ''Physical Review'' split into different parts, ''Physical Review A'', ''Physical Review B'', ''Physical Review C'', and ''Physical Review D'', where volumes again restarted at 1 (the third series). Since there are two publications identified as ''Physical Review, Volume 1'', there is a need to distinguish which is which by use of {{para|series|First Series}} or {{para|series|Second Series}}. While ''Physical Review A'' is in the third series of the ''Physical Review'' [[media franchise]], it is the first series of the publication known as ''Physical Review A''. Since there is no confusion about what ''Physical Review A, Volume 1'' could be referring to, there is no need to clarify to which numbering series the journal belong.</p>
<p>In particular, note that the {{para|series}} parameter is not to be used to distinguish the different parts of a [[media franchise]], like ''[[Physical Review A]]'', ''[[Acta Crystallographica Section A]]'', ''[[Journal of the Royal Statistical Society, Series B]]''.</p>}}
* {{anchor|csdoc_volume<!-- for as long as we don't pull "volume" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_volume" -->}}'''volume''': For a source published in several volumes. This field is displayed in bold after the title and series parameters. An alternative is to include the volume information in the title parameter after the main title. Separate volume ranges with an [[En dash#En dash|en dash]]: – , for example {{para|volume|I–IV}}. Separate non-sequential volumes either with commas or semicolons, for example {{para|volume|I, III}}. The form {{para|volume|I, III–V}} is used when you are citing both non-contiguous and sequential volumes. For volume numbers higher than 999, either do not use thousands separators or enclose the volume number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators.
* {{anchor|csdoc_issue<!-- for as long as we don't pull "journal" from csdoc, we can use this anchor here so that [[Help:Citation_Style_1#Accept-this-as-written_markup]] can link to an anchor "csdoc_issue" -->}}'''issue''': When the source is part of a series that is published periodically. Alias: '''number'''. When the issue has a special title of its own, this may be given, in italics, along with the issue number, e.g. {{para|issue|2, <nowiki>''</nowiki>Modern Canadian Literature<nowiki>''</nowiki>}}. Please choose either {{para|issue}} or {{para|number}} depending on what nomenclature is actually used in a publication. If a publication carries both, issue and number designations (typically one being a year-relative and the other an absolute value), provide them both, for example {{para|issue|2 #143}}. Separate ranges with an [[En dash#En dash|en dash]]: – , and non-sequential numbers either with commas or semicolons. For numbers higher than 999, either do not use thousands separators or enclose the number in [[#Accept-this-as-written markup|accept-this-as-written markup]] to avoid commas being erroneously interpreted as list separators.
===External links===
* '''url''': Adds a link to the title
* '''chapter-url''': Adds a link to the chapter.
* '''format''': Format of the document at its URL (e.g., PDF, XLS, etc.). Do not specify for HTML as it is implied as the default. Do not use this parameter for completely different purposes, with annotations such as "fee required" or "reprint"; its intent is to notify readers what the file format is (e.g. in case some browsers might have trouble with it, or some might prefer to save the link to disk rather than open it in the browser). Access restrictions can be shown using the appropriate {{para|url-access}} parameter, see [[#Registration or subscription required|Registration or subscription required]]. Other notes about reprintings, etc., should be placed after the template, and before {{tag|ref|c}}.
====Using |format= ====
When MediaWiki encounters an external link URL with a '.pdf' or '.PDF' [[filename extension|extension]], it renders the external link with a [https://example.com/document.pdf PDF icon] in place of the usual [https://example.com/document external-link icon]. To make rendered cs1|2 citations that link to PDF documents somewhat more accessible, cs1|2 automatically adds a parenthetical PDF annotation so that those readers using screen-reader technology can know the type of the linked file. This is imperfect because some on-line sources redirect .pdf URLs to .html landing pages (this is common for PDF documents behind paywalls or registration barriers). Because the parenthetical PDF annotation happens automatically, editors are not required to set {{para|format|PDF}}, though doing so causes no harm. The {{para|format|PDF}} parameter may be deleted as part of a more substantial edit but editors should consider that many cs1|2 templates are copied from en.Wikipedia to other-language Wikipedias when articles here are translated to that other language. Do not assume that other-language Wikipedias use up-to-date cs1|2 templates; many do not, so removing {{para|format|PDF}} here can affect readers/translators at other Wikipedias.
====Online sources====
{{main|Wikipedia:External links|Wikipedia:Citing sources}}
Links to sources are regarded as conveniences and are not required, except when citing Web-only sources. There are many digital libraries with works that may be used as sources.
* Links should be to full versions of the source.
* Online sources that require payment or subscription may be included per [[Wikipedia:Verifiability]].
Do not link to:
* Sites that do not have permission to republish the work or which otherwise violate copyright.
* Commercial sites such as Amazon, unless no alternative exists.
* Reviews of the work.
* Very short extracts such as Google Books snippet view where there is not enough context to verify the content, unless the entire work is also freely available there. (See [[WP:BOOKLINKS]])
====Link formats====
Links should be kept as simple as possible. For example, when performing a search for a Google Book, the link for ''Monty Python and Philosophy'' would look like:
: https://books.google.com/books?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false
But can be trimmed to:
: https://books.google.com/?id=NPDgD546-doC&pg=PP1#v=onepage&q&f=false
or:
: https://books.google.com/?id=NPDgD546-doC&printsec=frontcover
or:
: https://books.google.com/?id=NPDgD546-doC (if Google Books does not provide the cover page).
====Pages====
A direct link to a specific page may be used if supported by the host. For example, the link to page 172 of ''Monty Python and Philosophy'' on Google Books:
: https://books.google.com/?id=NPDgD546-doC&pg=PA172
like so:
: <code><nowiki>|page=[https://books.google.com/?id=wPQelKFNA5MC&pg=PA172 172]</nowiki></code>
====Special characters====
{{MediaWiki URL rules}}
====Access date====
* '''access-date''': The full date when the content pointed to by '''url''' was last verified to support the text in the article; do not wikilink; requires '''url'''; use the same format as other access and archive dates in the article's citations. It is ''not required for linked documents that do not change.'' For example, '''access-date''' is not required for links to copies of published research papers accessed via DOI or a published book, but should be used for links to news articles on commercial websites (these can change from time to time, even if they are also published in a physical medium). Note that '''access-date''' is the date that the URL was checked to not just be working, but to support the assertion being cited (which the current version of the page may not do). Can be [[Help:Citation Style 1/accessdate|hidden or styled]] by registered editors. Alias: '''accessdate'''.
===Web archives===
{{see|Wikipedia:Link rot}}
* '''archive-url'''. Alias: '''archiveurl'''.
* '''archive-date'''. Alias: '''archivedate'''.
The original link may become unavailable. When an archived version is located, the original URL is retained and {{para|archive-url}} is added with a link to an archived copy of a web page, usually from services like WebCite and the Internet Archive. {{para|archive-date}} must be added to show the date the page was archived, not the date the link was added. When {{para|archive-url}} is used, {{para|url}} and {{para|archive-date}} are required, else an error will show. When an archived link is used, the citation displays with the title linked to the archive and the original link at the end: {{cite book |title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013}}
* '''url-status''': To change the order with the title retaining the original link and the archive linked at the end, set {{para|url-status|live}}:
:{{cite book|title=Monty Python and Philosophy |url=https://books.google.com/books?id=wPQelKFNA5MC |archive-url=https://web.archive.org/web/20130501102912/http://books.google.com/books?id=wPQelKFNA5MC |archive-date=May 1, 2013 |url-status=live}}
When the original URL has been usurped for the purposes of spam, advertising, or is otherwise unsuitable, setting {{para|url-status|unfit}} or {{para|url-status|usurped}} suppresses display of the original URL (but {{para|url}} and {{para|archive-url}} are still required).
===Identifiers===
{{csdoc|id2}}
A custom identifier can be specified through
{{csdoc|id1}}
===Registration or subscription required===
{{csdoc|registration}}
===Quote===
{{csdoc|quote|unpaginated=yes}}
===Anchors===
The module creates HTML IDs by default suitable for use with [[WP:CITESHORT|shortened footnotes]] using the [[Template:Harvard citation documentation|Harv- and sfn-family templates]]. These styles use in-text cites with a link that will jump to the ID created by the CS1 template. The ID is created from up to four author last names and the year, of the format <code>CITEREF''lastname(s)year''</code>.
'''{{para|ref|<var>ID</var>}}''': Creates a custom ID equivalent to the value <var>ID</var>. This is useful where the author and/or date is unknown. The {{tlx|harvid}} template may be used here to create an ID for the Harv- and sfn-family templates.
{| class="wikitable plainrowheaders"
|+ Examples of anchors
|-
!scope="col"| Kind
!scope="col"| Wikitext
!scope="col"| ID created
!scope="col"| Targetable by
|-
!scope="row"| Default, one name
| <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |title=Monty Python and Philosophy |date=2006}}</nowiki></code>
| <code>CITEREFHardcastle2006</code>
| {{tlx|harv|Hardcastle|2006|4=pp=12-34}}
|-
!scope="row"| Default, two names
| <code><nowiki>{{cite book |first=Gary L. |last=Hardcastle |first2=George A. |last2=Reisch |title=Monty Python and Philosophy |date=2006}}</nowiki></code>
| <code>CITEREFHardcastleReisch2006</code>
| {{tlx|harv|Hardcastle|Reisch|2006|5=pp=12-34}}
|-
!scope="row"| {{para|ref}} using {{tl|harvid}}
| <code><nowiki>|ref={{harvid|Monty Python and Philosophy|2006}}</nowiki></code>
| <code>{{harvid|Monty Python and Philosophy|2006}}</code>
| {{tlx|harv|Monty Python and Philosophy|2006|4=pp=12-34}}
|}
===Display options===
These features are not often used, but can customize the display for use with other styles.
{{csdoc|display|lua=yes}}
====et al.====
et al. is the abbreviation of the Latin {{lang|la|et alii}} ('and others'). It is used to complete a list of authors of a published work, where the complete list is considered overly long. The abbreviation is widely used in English, thus it is not italicized per [[MOS:FOREIGN]].
===Accept-this-as-written markup===
There are occasions where [[Module:Citation/CS1]] emits error or maintenance messages because of, or makes changes to, the values assigned to a select set of parameters. Special markup can be used to enforce that a value will nonetheless be accepted as written. The markup for this is <code>(({{var|value}}))</code>, i.e., wrap the entire parameter value in two sets of parentheses. Parameters that support this markup are:
{| class="wikitable plainrowheaders"
|+ Parameters that support accept-this-as-written markup
!scope="col"| Parameter
!scope="col"| Notes
|-
!scope="row"| {{para|author{{var|n}}}}
|rowspan="6"| The various {{var|name}} parameters (including their enumerated variants) are checked for extra comma and semicolon separator characters which may indicate that the parameter is holding more than one name. If so, the list of names should be split up over multiple {{var|n}}-enumerated parameters. Corporate names, however, are sometimes comma-separated lists of names as well and so are erroneously flagged as a multiple-name error; markup can be used to indicate this.<br /><br />Legitimate names may be caught by the [[Help:CS1_errors#generic_name|generic-name test]]. This markup can prevent legitimate names from being flagged as generic.
|-
!scope="row"| {{para|contributor{{var|n}}}}
|-
!scope="row"| {{para|editor{{var|n}}}}
|-
!scope="row"| {{para|interviewer{{var|n}}}}
|-
!scope="row"| {{para|subject{{var|n}}}}
|-
!scope="row"| {{para|translator{{var|n}}}}
|-
!scope="row"| [[#csdoc_doi|{{para|doi}}]]
|rowspan="5"| Identifiers are checked for validity to the extent possible. In rare cases, identifiers actually used in published works deviate from the checked standard format but are nonetheless valid. If the problem is down to a mere typographical error in a third-party source, correct the identifier instead of overriding the error message.
|-
!scope="row"| [[#csdoc issue|{{para|eissn}}]]
|-
!scope="row"| [[#csdoc issue|{{para|isbn}}]]
|-
!scope="row"| [[#csdoc_issn|{{para|issn}}]]
|-
!scope="row"| [[#csdoc_sbn|{{para|sbn}}]]
|-
!scope="row"| [[#csdoc_issue|{{para|issue}}]]
|rowspan="2"|Spaces are inserted between commas and succeeding characters in comma-separated lists of issues, a hyphen is converted to an ndash in issue ranges, etc. A hyphenated issue number and an issue range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more issues. Markup can be applied to the entry as a whole or to individual list entries.
|-
!scope="row"| [[#csdoc_issue|{{para|number}}]]
|-
!scope="row"| [[#csdoc_volume|{{para|volume}}]]
| Spaces are inserted between commas and succeeding characters in comma-separated lists of volumes, a hyphen is converted to an ndash in volume ranges, etc. A hyphenated volume and an volume range cannot be distinguished, nor can a four-or-more-digit volume with a thousands-separator from a comma-separated list of two or more volumes. Markup can be applied to the entry as a whole or to individual list entries.
|-
!scope="row"| [[#csdoc_pages|{{para|pages}}]]
|rowspan="3"| Spaces are inserted between commas and succeeding characters in comma-separated lists of pages, a hyphen is converted to an ndash in page ranges, etc. A hyphenated page number and a page range cannot be distinguished, nor can a four-or-more-digit number with a thousands-separator from a comma-separated list of two or more pages. Markup can be applied to the entry as a whole or to individual list entries; does not apply to {{para|page}}, {{para|p}}, or {{para|quote-page}}. (This special markup is also supported by the plural page parameters {{para|pages}}, {{para|pp}} and {{para|quote-pages}} (as well as other aliases) of the {{tl|r}}, {{tl|rp}} and {{tl|ran}} citation templates. The family of {{tl|sfn}}- and {{tl|harv}}-style templates supports it as well in conjunction with {{para|pages}} and {{para|pp}}.)
|-
!scope="row"| [[#csdoc_pages|{{para|pp}}]]
|-
!scope="row"| [[#Quote|{{para|quote-pages}}]]
|-
!scope="row"| {{para|title}}
| Trailing dots are normally removed from the value assigned to {{para|title}} as being redundant. There are cases where trailing dots are not redundant but are part of the title proper so should be retained. <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, etc.<!-- don't document "off" for now as it may change again with the next update -->) taking precedence over free text input to specify a title; if a value also matching a keyword is meant as actual title text, markup can be used to indicate this.
|-
!scope="row"| {{para|title-link}}
| <!-- At present, the following applies only to {{cite journal}}: -->The parameter may also accept a number of special keywords (<code>none</code>, <code>doi</code>, <code>pmc</code>) taking precedence over free text input to specify a link target; if a value also matching a keyword is meant as actual link target, markup can be used to indicate this.
|-
!scope="row"| [[#Authors|{{para|vauthors}}]]
|rowspan="2"| Markup to suppress error messages and automatic Vancouver reformatting of allowed corporate names.
|-
!scope="row"| [[#Editors|{{para|veditors}}]]
|}
==Printing==
When viewing the page, CS1 templates render the URL to the title to create a link; when printing, the URL is printed. [[Help:External link icons|External link icons]] are not printed.
==Elements not included==
Not all factually accurate pieces of information about a source are used in a Citation Style 1 citation. Examples of information not included:
* The total number of pages in a cited source
* The name of the library that provided access to an electronic copy of a cited source
* The name of the library that owns a physical copy of a cited work
* The library record or shelf location of a physical copy of a cited work
==Tools==
{{main|Help:Citation tools}}
'''CS1 templates may be inserted manually or by use of tools:'''
* [[Wikipedia:TWL/Citoid|Citoid]], a tool built into [[WP:Visual Editor|Visual Editor]] that attempts to build a full citation based on a URL. See [[Wikipedia:VisualEditor/User guide#Using Citoid|user guide]].
* [[Wikipedia:RefToolbar|RefToolbar]] is part of the editing tool bar. Version 2.0 does not yet support all templates supported by version 1.0.
* [[User:ProveIt GT|ProveIt]] provides a graphical interface for editing, adding, and citing references. It may be enabled per the documentation.
* [https://alyw234237.github.io/wiki-doi-gbooks-citation-maker/ Wikipedia DOI and Google Books Citation Maker]
* [https://tools.wmflabs.org/dispenser/view/Reflinks Reflinks] Adds references to templates while updating/filling-in title/dates/publisher/accessdates etc.
* [https://tools.wmflabs.org/refill/ reFill] open source version of Reflinks
* [[Zotero]] can export citations in Wikipedia-ready format.
* [http://tools.wmflabs.org/citer/ Citer] – generates shortened footnote or named reference for a given Google Books URL, ISBN, or DOI. Also supports some major news websites.
'''{{anchor|Error checking}}Error checking [[Wikipedia:User scripts|scripts]]:'''
* [[User:Svick/HarvErrors]] is a script that may be enabled to display errors when using [[WP:CITESHORT|Shortened footnotes]] or [[WP:PAREN|parenthetical referencing]]. It does not warn when a long citation has been added but not a short one (using {{tl|sfn}} or {{tl|harvnb}}).
* [[User:Trappist the monk/HarvErrors]] is very similar, but also contains additional warnings for potential issues.
* [[User:BrandonXLF/CitationStyleMarker]] highlights inconsistent (CS1 vs CS2) citation styles used in the same article. Only works with templated citations.
'''{{anchor|Reliability}}Reliability scripts:'''
* [[User:Headbomb/unreliable]] color codes URLs and DOIs in gray/red/pink/yellow depending on their broad reliability
==TemplateData==
This section documents interactions between [[WP:TemplateData]] and tools which use that data to edit Wikipedia such as [[VisualEditor]] and bots. Before making changes to the TemplateData be aware of these interactions.
===[[User:InternetArchiveBot]]===
*If an argument is set to "required" the argument will be added to all templates edited by IABot. This including adding empty arguments. For example, when {{para|website}} is "required" IABot makes the following edit: [https://en.wikipedia.org/w/index.php?title=2017%E2%80%9318_British_and_Irish_Cup&diff=prev&oldid=914629379].
==Common issues==
{{shortcut|Help:CS1PROBS}}
; {{para|access-date}} does not show.
: If {{para|url}} is not supplied, then {{para|access-date}} does not show; by design.
; The bare URL shows before the title.
: If the {{para|title}} field includes a newline or an invalid character then the link will be malformed; see [[#Web links|Web links]].
; The title appears in red.
: If URL is supplied, then the title cannot be wikilinked.
; The URL is not linked and shows in brackets.
: The URL must include the [[URI scheme]] in order for MediaWiki to recognize it as a link. For example: <code>www.example.org</code> vs. <code>http://www.example.org</code>.
; A field is truncated.
: A pipe (<code>|</code>) in the value will truncate it. Use {{tlx|!}} instead.
; The template markup shows.
: Double open brackets [[ are used in a field without closing double brackets ]].
; The author shows in brackets with an external link icon.
: The use of an URL in {{para|author-link}} will break the link; this field is for the name of the Wikipedia article about the author, not a website.
; Multiple author or editor names are defined and one or more does not show
: The parameters must be used in sequence, i.e. if {{para|last}} or {{para|last1}} is not defined, then {{para|last2}} will not show. By design.
; {{para|page}}, {{para|pages}} or {{para|at}} do not show.
: These parameters are mutually exclusive, and only one will show; by design.
== See also ==
* [[Help:Citation Style 2]]
* [[Help:CS1 errors]]
==Notes==
{{reflist|group="Note"}}
==References==
{{reflist}}
{{Wikipedia referencing}}
{{Citation Style 1}}
{{Help navigation}}
[[Category:Citation Style 1 templates|*]]
[[Category:Wikipedia citation administration]]
163131d4cbdf81900cb0d4974c4b0d845e7b20b7
Template:Use dmy dates/doc
10
866
1921
1920
2023-10-01T10:40:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Use_dmy_dates/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{high use |no-percent=yes}}
{{Template shortcut|dmy|DMY}}
=== Usage ===
To promote consistent date formatting, place this template with other maintenance tags near the top of articles that use the <code>d mmmm yyyy</code> [[date format]] (below hatnotes, but above infoboxes, as per the [[Wikipedia:Manual of Style/Lead section#Elements|Manual of Style]]). Use the parameter <code>|date=</code> for the month and year that an editor or [[WP:bot|bot]] last checked the article for inconsistent date formatting and fixed any found.
Wikipedia articles that use <code>d mmmm yyyy</code> dates, either because of the [[MOS:DATERET|first main contributor]] rule or [[WP:TIES|close national ties]] (see [[Wikipedia:MOSNUM|MOSNUM]]), are systematically tagged with {{Tl|Use dmy dates}} over time. The template is invisible except in edit mode.
The template is useful to the editors to quickly know which date format is to be used when adding new dates into an article. It also facilitates article maintenance by enabling [[WP:bots|bots]] to recognise use of this format, and by adding the article to the [[WP:hidden category|hidden category]] [[:Category:Use dmy dates|Use dmy dates]].
'''Use of this template is part of a continuing effort to monitor the date formats used in articles, to assist in maintaining consistent formatting within an article. It is ''not'' a temporary "cleanup" template. Therefore, do not remove the template without valid reason, such as a determination the article uses or should use a different date format.'''
After being tagged, and bearing in mind article evolution, periodic script or bot runs clean up formats, correcting any new introductions since its last visit, and '''updating the visit date''' on the {{Tl|Use dmy dates}} template.
The dmy and mdy templates have almost always been used to indicate date styles in the body of the articles; although it ''may'' also indicate the flavour of dates in reference sections or parts thereof. Therefore, this template notice ought to be read in conjunction with the blurb at [[Wikipedia:Date formattings]]. [[User:Ohconfucius/script/MOSNUM dates|MOSNUM script documentation]] may also be relevant to those interested.
When a citation style does not expect differing date formats, it is permissible to normalize publication dates to the article body text date format, and access/archive dates to either, with date consistency being preferred (see [[MOS:DATEUNIFY]]).
This template is intended for use in articles. It can be used on a template page in order to format citation dates on the template page itself, but it must be enclosed in {{tag|noinclude}} tags so that it is not transcluded into articles or other pages.
===Auto-formatting citation template dates===
[[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|2]] (collectively cs1|2) templates automatically render dates ({{para|date}}, {{para|access-date}}, {{para|archive-date}}, etc) in the style specified by this template. Because it is allowed by [[WP:MOSDATES]], the cs1|2 templates can automatically format dates in a variety of styles. Editors may choose how cs1|2 templates render dates by the use of {{para|cs1-dates|<{{var|keyword}}>}}.
{{#lst:Help:Citation Style 1|auto_date_format_table}}
An example is given at {{section link|Help:Citation Style 1#Auto-formatting citation template dates}}. <!-- An example cannot be given here because [[Module:Citation/CS1/Configuration]] gets the template's page name when this documentation page is transcluded. That means that the module reads the template code but does not read the template documentation. -->
{{lang|la|Nota bene}}: cs1|2 auto-date formatting does not apply when previewing an article section that does not contain a {{tld|use xxx dates}} template. When editing with the visual editor, changes to this template do not take effect until the page is saved.
=== Syntax ===
{{Tlx|Use dmy dates|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}|cs1-dates=}}
'''Notes''':
* The template should be inserted in one of the first few lines of code of an article (to improve performance).
* Do not use redirects of this template, because otherwise its presence in an article may not be recognized by date formatting templates and bots. (There are a number of "legacy redirects" which are still supported at least by CS1/CS2 citation templates, but they should be changed to direct invocations of this template, also for performance reasons.)
=== TemplateData ===
{{TemplateData header}}
<templatedata>
{
"format": "inline",
"description": "This template should be placed near the top of articles that use the d mmmm yyyy date format.",
"params": {
"date": {
"label": "Month and year",
"description": "The month and year that the template was placed or the article was last checked or cleaned (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.",
"type": "string",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"example": "April 2022",
"suggested": true
},
"cs1-dates": {
"description": "How dates should be formatted in CS1 citations",
"suggestedvalues": [
"l",
"ll",
"ls",
"ly",
"s",
"ss",
"sy",
"y",
"yy"
]
}
}
}
</templatedata>
=== Wrongly tagged? ===
If, for example, you determine that an article has a template that is inappropriate for [[WP:TIES|its nationality]], you should replace it with the appropriate template to avoid scripts or bots reapplying the "wrong" format in the course of maintenance.
=== Maintenance category ===
* {{category link with count|Pages using Use dmy dates template with unknown parameters}}
=== See also ===
* {{Tl|Use mdy dates}}, for the <code>mmmm d, yyyy</code> format
* {{tl|Date}}, which can alter the format of an inputted date
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Templates with no visible output]]
[[Category:Time and date maintenance templates]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
485b538ed8b955718e17cb6b05ad2cec1af2a6a1
Template:Dated maintenance category (articles)
10
867
1923
1922
2023-10-01T10:40:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Dated_maintenance_category_(articles)]]
wikitext
text/x-wiki
{{Dated maintenance category
|onlyarticles=yes
|1={{{1|}}}
|2={{{2|}}}
|3={{{3|}}}
|4={{{4|}}}
|5={{{5|}}}
}}<noinclude>
{{documentation|Template:Dated maintenance category/doc}}
</noinclude>
6bbc57c75cc28708a0e71dd658224d5945d80d68
Template:Portal
10
868
1925
1924
2023-10-01T10:40:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Portal]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Portal|portal}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata -->
</noinclude>
7efcc8b88b0b619f32db09d73f4574b044b6bf29
Module:Portal/styles.css
828
869
1927
1926
2023-10-01T10:40:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.portalbox {
padding: 0; /* Timeless adds padding */
margin: 0.5em 0;
display: table;
box-sizing: border-box;
max-width: 175px;
list-style: none;
}
.portalborder {
border: solid #aaa 1px;
padding: 0.1em;
background: #f9f9f9;
}
.portalbox-entry {
display: table-row;
font-size: 85%;
line-height: 110%;
height: 1.9em; /* sets min height */
font-style: italic;
font-weight: bold;
}
.portalbox-image {
display: table-cell;
padding: 0.2em;
vertical-align: middle;
text-align: center;
}
.portalbox-link {
display: table-cell;
padding: 0.2em 0.2em 0.2em 0.3em;
vertical-align: middle;
}
@media (min-width: 720px) {
.portalleft {
clear: left;
float: left;
margin: 0.5em 1em 0.5em 0
}
.portalright {
clear: right;
float: right;
margin: 0.5em 0 0.5em 1em
}
}
067e70fa96d875eaf837d6db94c6d16281c088b6
Module:Portal/images/h
828
870
1929
1928
2023-10-01T10:40:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/h]]
Scribunto
text/plain
--[==[ This is the "H" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "H". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["haiti"] = "Flag of Haiti.svg|border|link=|alt=flag",
["hamburg"] = "Flag of Hamburg.svg|border|link=|alt=flag",
["hampshire"] = "EnglandHampshire.svg|link=|alt=",
["haryana"] = "YamunaRiver.jpg|alt=icon",
["harz"] = "DennertFirTree.svg|alt=icon",
["hawaii"] = "Flag of Hawaii.svg|border|link=|alt=flag",
["help"] = "Wikipedia help.png|alt=icon",
["heraldry"] = "Azure, a bend Or.svg|link=|alt=",
["heraldry and vexillology"] = "En-wikipedia arms 9.svg|alt=icon",
["hertfordshire"] = "Hertsflag.jpg|link=|alt=",
["himachal pradesh"] = "Kinnaur Kailash.jpg|link=|alt=",
["hillary clinton"] = "Hillary Rodham Clinton.jpg|link=|alt=",
["hindi cinema"] = "Indiafilm.svg|alt=icon",
["hinduism"] = "Aum Om red.svg|link=|alt=",
["hindustani"] = "Hindustani.svg|link=|alt=script",
["hip hop"] = "Loudspeaker-crystal-theme.svg|alt=icon",
["hisar"] = "Fort of Firoz Shah Tughlaq at Hisar.jpg|link=|alt=photo",
["hispanic and latino americans"] = "Flag of the Hispanicity.svg|link=|alt=icon",
["history"] = "P history.svg|link=|alt=",
["history of science"] = "Newton's reflecting telescope.jpg|link=|alt=image",
["history of the latter day saint movement"] = "Joseph Smith receiving golden plates.jpg|border|link=|alt=",
["hitchhiker's"] = "Answer to Life.png|link=|alt=icon",
["hitchhiker's guide to the galaxy"] = "Answer to Life.png|link=|alt=icon",
["holidays"] = "Calendar icon.svg|alt=icon",
["holy roman empire"] = "Reichskrone.jpg|link=|alt=image",
["honduras"] = "Flag of Honduras.svg|border|link=|alt=flag",
["hong kong"] = "Flag of Hong Kong.svg|border|link=|alt=flag",
["horror fiction"] = "Vampire Smiley.png|alt=icon",
["horses"] = "Finnhorse stallion.jpg|alt=icon",
["hotels"] = "Map Icon - Hotel.png|link=|alt=",
["housing"] = "Big single-family home 2.jpg|link=|alt=",
["hudson valley"] = "Hudson river from bear mountain bridge.jpg|alt=icon",
["human–computer interaction"] = "Mouse icon vector.png|link=|alt=icon",
["human rights"] = "HumanRightsLogo.svg|link=|alt=",
["human sexuality"] = "Bisexuality symbol (bold, color).svg|alt=icon",
["hungary"] = "Flag of Hungary.svg|border|link=|alt=flag",
["hyderabad"] = "Charminar Hyderabad 1.jpg|alt=icon",
}
78dcf7d45caaedc14a5dc36ef2370fa0e910f229
Template:Navbox
10
205
1931
465
2023-10-01T10:41:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbox]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fe9b964401f895918ee4fe078678f1722a3c41ec
Module:Portal/images/c
828
871
1933
1932
2023-10-01T10:41:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/c]]
Scribunto
text/plain
--[==[ This is the "C" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "C". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/g]] - for portal names beginning with "G".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be
-- omitted.
]==]
local ambox_globe = "Ambox globe.svg"
local hour=tonumber(os.date("%k"))
if hour >= 22 or hour < 6 then
ambox_globe = "Ambox globe Asia Australia.svg"
else
if hour >= 14 and hour < 22 then
ambox_globe = "Ambox globe Americas.svg"
end
end
return {
["cabo verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag",
["california"] = "Flag of California.svg|border|link=|alt=flag",
["california delta"] = "California SD-03 (2011).svg|link=|alt=map",
["california roads"] = "California 1.svg|link=|alt=sign",
["california state university"] = "Flag of California.svg|border|link=|alt=flag",
["calvinism"] = "Kreuz-hugenotten.svg|alt=icon",
["cambodia"] = "Flag of Cambodia.svg|border|link=|alt=flag",
["cameroon"] = "Flag of Cameroon.svg|border|link=|alt=flag",
["canada"] = "Maple Leaf (from roundel).svg|link=|alt=flag",
["canadian communities"] = "Map Canada political-geo.png|link=|alt=",
["canadian football"] = "Canadian football.png|alt=icon",
["canadian law"] = "Supreme Court of Canada.jpg|link=|alt=",
["canadian territories"] = "Northern Canada.svg|alt=icon",
["canary islands"] = "Flag of the Canary Islands.svg|border|link=|alt=flag",
["cannabis"] = "Cannabis leaf.svg|alt=icon",
["cape cod and the islands"] = "Nobska Lighthouse 1.jpg|alt=icon",
["cape verde"] = "Flag of Cape Verde.svg|border|link=|alt=flag",
["capital district"] = "Empire State Plaza symbol 2.svg|link=|alt=",
["capitalism"] = "Capitalismlogo.svg|alt=icon",
["caribbean"] = "Relief Map of Caribbean.png|link=|alt=map",
["caribbean community"] = "Flag of CARICOM.svg|border|link=|alt=flag",
["cars"] = "Sportcar sergio luiz ara 01.svg|link=|alt=",
["cartoon network"] = "Cartoon Network.svg|border|link=|alt=",
["cartoon"] = "Mad scientist.svg|alt=icon",
["catalan-speaking countries"] = "Siñal d'Aragón.svg|border|alt=icon",
["catholic church"] = "046CupolaSPietro.jpg|border|alt=icon",
["cats"] = "Cat03.jpg|alt=icon",
["cayman islands"] = "Flag of the Cayman Islands.svg|border|link=|alt=flag",
["central african republic"] = "Flag of the Central African Republic.svg|border|link=|alt=flag",
["central america"] = "Age of Consent - Central America.svg|alt=icon",
["central asia"] = "Central Asian Games participating countries.PNG|alt=icon",
["cetaceans"] = "Sperm whale fluke.jpg|link=|alt=",
["chad"] = "Flag of Chad.svg|border|link=|alt=flag",
["chandigarh"] = "Gandhi Bhawan at Punjab University.jpg|alt=icon",
["channel islands"] = "Flag of Sark.svg|border|link=|alt=flag",
["chemistry"] = "Papapishu-Lab-icon-6.svg|link=|alt=",
["chennai"] = "Chennai High Court 1200x800.jpg|alt=icon",
["cheshire"] = "Cheshire Flag.svg|border|alt=icon",
["chess"] = "Chess.svg|alt=icon",
["chhattisgarh"] = "India Chhattisgarh locator map.svg|border|link=|alt=map",
["chicago"] = "Seal of Chicago, Illinois.svg|link=|alt=",
["children's literature"] = "Tom Sawyer 1876 frontispiece.jpg|link=|alt=",
["chile"] = "Flag of Chile.svg|border|link=|alt=flag",
["china"] = "Flag of the People's Republic of China.svg|border|link=|alt=flag",
["christianity"] = "P christianity.svg|alt=icon",
["christianity in india"] = "India with cross.svg|alt=icon",
["christmas"] = "Xmas tree.svg|link=|alt=",
["christmas island"] = "Flag of Christmas Island.svg|link=|alt=flag",
["civilizations"] = "Lascar Avenue of the Dead and the Pyramid of the Sun in the background (4566574277).jpg|border|link=|alt=",
["civil rights movement"] = "Logo SNCC.svg|link=WP:ACRM|alt=",
["cities"] = "COL-city icon.png|link=|alt=",
["clans of scotland"] = "Scottish clan map.png|link=|alt=map",
["classical music"] = "Audio a.svg|link=|alt=",
["classical tamil"] = "Word_Tamil.svg|link=|alt=word",
["climate"] = "The Earth seen from Apollo 17 with transparent background.png|link=|alt=icon",
["climate change"] = "Climate change icon.png|link=|alt=icon",
["climbing"] = "Pictograms-nps-land-technical_rock_climbing.svg|link=|alt=icon",
["clothing"] = "Emojione 1F458.svg|alt=icon",
["cocos (keeling) islands"] = "Flag of the Cocos (Keeling) Islands.svg|border|link=|alt=flag",
["coffee"] = "Emblem-relax.svg|alt=icon",
["college basketball"] = "Basketball.png|link=|alt=",
["college football"] = "NCAAFootball transparent.png|alt=icon",
["colombia"] = "Flag of Colombia.svg|border|link=|alt=flag",
["colorado"] = "Flag of Colorado.svg|border|link=|alt=flag",
["comedy"] = "SMirC-laugh.svg|alt=icon",
["comics"] = "Wikipetan-manga.png|alt=icon",
["communism"] = "Symbol-hammer-and-sickle.svg|link=|alt=",
["community"] = "P globe blue.png|alt=icon",
["comoros"] = "Flag of the Comoros.svg|border|link=|alt=flag",
["companies"] = "Industry5.svg|link=|alt=",
["computer programming"] = "Octicons-terminal.svg|alt=icon",
["computer science"] = "Internet map 1024.jpg|alt=icon",
["connecticut"] = "Flag of Connecticut.svg|border|link=|alt=flag",
["conservatism"] = "DodgerBlue flag waving.svg|link=|alt=",
["constructed languages"] = "Design conlang.png|alt=icon",
["contents"] = "Wikipedia's W.svg|link=|alt=",
["contents/indexes"] = "Pointing-right.svg|link=|alt=icon",
["contents/lists"] = "Liste.svg|link=|alt=icon",
["contents/outlines"] = "Pointing-left.svg|link=|alt=icon",
["cooking"] = "One chef's hat.png|link=|alt=",
["cook islands"] = "Flag of the Cook Islands.svg|border|link=|alt=flag",
["cornwall"] = "Flag of Cornwall.svg|border|link=|alt=flag",
["coronavirus disease 2019"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon",
["cosmology"] = "Ilc 9yr moll4096.png|link=|alt=",
["costa rica"] = "Flag of Costa Rica.svg|border|link=|alt=flag",
["côte d'ivoire"] = "Flag of Côte d'Ivoire.svg|border|link=|alt=flag",
["countries"] = "P countries-vector.svg|alt=icon",
["county kilkenny"] = "County Kilkenny arms.svg|alt=coat of arms",
["covid-19"] = "SARS-CoV-2 (Wikimedia colors).svg|alt=virus icon",
["cretaceous"] = "Shantungosaurus-v4.jpg|alt=",
["cricket"] = "Cricketball.png|link=|alt=",
["criminal justice"] = "Scale of justice 2.svg|link=|alt=",
["croatia"] = "Flag of Croatia.svg|border|link=|alt=flag",
["crustaceans"] = "Charybdis japonica.jpg|alt=icon",
["cuba"] = "Flag of Cuba.svg|border|link=|alt=flag",
["cumbria"] = "Herdwick sheep crop.jpg|alt=icon",
["curaçao"] = "Flag of Curaçao.svg|border|link=|alt=flag",
["cue sports"] = "Eight Ball Rack 2005 SeanMcClean.jpg|link=|alt=",
["current events"] = ambox_globe .. "|link=|alt=",
["current events/turkey"] = "Wikinews-logo.png|link=|alt=",
["cyprus"] = "Flag of Cyprus.svg|border|link=|alt=flag",
["czech republic"] = "Flag of the Czech Republic.svg|border|link=|alt=flag",
["czechia"] = "Flag of the Czech Republic.svg|border|link=|alt=flag",
}
12569afcf6d5bfd01b853e6f6bca13f71c151050
Template:Blockquote
10
872
1935
1934
2023-10-01T10:41:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Blockquote]]
wikitext
text/x-wiki
<templatestyles src="Template:Blockquote/styles.css" /><!--
--><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}|{{#if:{{{multiline|}}}|<nowiki />}}
<div class="templatequotecite">— <cite>{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in }}{{Comma separated entries
| {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}}
| {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}}
| {{if empty|{{{source|}}}|{{{4|}}}}}
}}</cite></div>
}}</blockquote>{{#if:{{{id|}}}{{{diff|}}}{{{4|}}}{{{5|}}}|{{main other|[[Category:Pages incorrectly using the Blockquote template]]}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | diff | id | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude>
{{documentation}}<!-- Add categories to the /doc subpage, not here! -->
</noinclude>
c632821e7bef1789e3468f7b0c68e29a93f72a62
Template:Blockquote/styles.css
10
873
1937
1936
2023-10-01T10:41:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Blockquote/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.templatequote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
.templatequote .templatequotecite {
line-height: 1.5em;
/* @noflip */
text-align: left;
/* @noflip */
padding-left: 1.6em;
margin-top: 0;
}
2f501be7e53e631123db261484f3ef52d1d0e909
Template:Navbar
10
874
1939
1938
2023-10-01T10:41:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbar]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Navbar|navbar}}</includeonly><noinclude>
{{documentation}}
</noinclude>
868e3566b7e8a9a5a7f3dac75cac429c47de10d3
Template:Quotation
10
875
1941
1940
2023-10-01T10:41:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Quotation]]
wikitext
text/x-wiki
#REDIRECT [[Template:Blockquote]]
945d9b4f4764cef422ae81b16bb6713645f92824
Template:Purge page
10
876
1943
1942
2023-10-01T10:41:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Purge_page]]
wikitext
text/x-wiki
<i class="noprint">[[Special:Purge/{{FULLPAGENAME}}|<small {{#if:{{{color|}}}|style="color:{{{color}}}"}}>{{{1|Purge server cache}}}</small>]]</i><noinclude>{{Documentation}}</noinclude>
2b1975cb149a2921ef0b42dc0a85a8d2b12e9fde
Template:Portal templates navbox
10
877
1945
1944
2023-10-01T10:41:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Portal_templates_navbox]]
wikitext
text/x-wiki
{{Navbox
| name = Portal templates navbox
| title = [[Wikipedia:Portal|Portal]] templates
| listclass = hlist
| state = {{{state|}}}
| image = [[File:Portal.svg|50px]]
| above = '''[[Wikipedia:WikiProject Portals/Components|Visual overview of template usage]]'''
| group1 = Layout and formatting
| list1 =
* {{tl|Box portal skeleton}}
* {{tl|Box-header}}
** [[Template:Box-header#Box-header_color_palettes|color palettes]]
** [[Template:Box-header-plain|plain]]
** [[Template:Box-header-round|round]]
** [[Template:Box-header-square|square]]
** [[Template:Box-header-watch|watch]]
*{{tl|Box-header colour}}<sup>1</sup>
*{{tl|Box-footer}}
*{{tl|Flex columns}}
*{{tl|Plain navboxes}}
| group2 = Content transclusion
| list2 =
* {{tl|Transclude lead excerpt}}<sup>2</sup>
* {{tl|Transclude linked excerpt}}<sup>2</sup>
* {{tl|Transclude list item excerpt}}<sup>2</sup>
* {{tl|Transclude random excerpt}}<sup>2</sup>
* {{tl|Transclude selected excerpt}}<sup>2</sup>
* {{tl|Excerpt}}
* {{tl|Transclude DYK}}<sup>9</sup>
* {{tl|Transclude selected current events}}<sup>3</sup>
* {{tl|Transclude selected recent additions}}<sup>4</sup>
| group3 = Content slideshows
| list3 =
* {{tl|Random slideshow}}<sup>5</sup>
* {{tl|Transclude files as random slideshow}}<sup>5</sup>
* {{tl|Transclude excerpts as random slideshow}}<sup>6</sup>
* {{tl|Transclude linked excerpts as random slideshow}}<sup>6</sup>
* {{tl|Transclude list item excerpts as random slideshow}}<sup>6</sup>
| group4 = Content randomisation
| list4 =
* {{tl|Random portal component}}<sup>7</sup>
* {{tl|Random quotation}}
* {{tl|Random subpage}}
| group5 = General
| list5 =
* {{tl|Portals}}
* {{tl|Portals browsebar}}
* {{tl|Portal description}}
* {{tl|Portal information sidebar}}
* {{tl|Portal navbar no header2}}
* {{tl|Purge link portals}}
* {{tl|Wikimedia for portals}}
| group6 = Linking templates
| list6 =
* {{tl|Portal}}
* {{tl|Portal bar}}
* {{tl|Portal-inline}}<sup>11</sup>
* {{tl|Pbox}}
* {{tl|Related portals2}}
| group7 = Talk pages / Maintenance
| list7 =
* {{tl|Portal talk}}
* {{tl|Portal maintenance status}}<sup>8</sup>
* {{tl|Portal suggestions}}
* {{tl|Portal toolbox}}
* {{tl|WikiProject Portals}}<sup>8</sup>
| group8 = Images
| list8=
* {{tl|Portal dynamic image}}
* {{tl|Portal image banner}}<sup>10</sup>
* {{tl|Portal pictures}}<sup>12</sup>
* {{tl|Portal POTD}}
| group9 = Modules
| list9 =
* <sup>1</sup> [[Module:Box-header]]
* <sup>2</sup> [[Module:Excerpt/portals]]
* <sup>3</sup> [[Module:Selected current events]]
* <sup>4</sup> [[Module:Selected recent additions]]
* <sup>5</sup> [[Module:Random slideshow]]
* <sup>6</sup> [[Module:Excerpt slideshow]]
* <sup>7</sup> [[Module:Random portal component]]
* <sup>8</sup> [[Module:Portal maintenance status]]
* <sup>9</sup> [[Module:Transclude DYK]]
* <sup>10</sup> [[Module:Portal image banner]]
* <sup>11</sup> [[Module:Portal-inline]]
* <sup>12</sup> [[Module:Portal pictures]]
| group10 = Usage
| list10 =
* [[Wikipedia:Portal]]
* [[Wikipedia:WikiProject Portals]]
| below = ''For more information, see: {{cl|Template-Class Portal pages}} and {{cl|Wikipedia Portal templates}}''
}}<noinclude>
{{documentation|content={{Collapsible option}}
[[Category:Wikipedia Portal templates| ]]
[[Category:Documentation see also templates]]
}}</noinclude>
ce81e0e88e4b3ebef2ae1365a5dd97095f35e9f9
Template:Portal template list
10
878
1947
1946
2023-10-01T10:41:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Portal_template_list]]
wikitext
text/x-wiki
{{navbar|Portal template list|style=float:right}}
'''Portal content templates'''
* To display "selected content" on the portal main page
** {{tl|Transclude list item excerpts as random slideshow}}—transcludes excerpts from [[WP:RECOG|recognized content lists]], which are populated by a bot.
** {{tl|Transclude random subpage}}—transcludes random portal subpage.
** {{tl|Random portal component}}—transcludes random portal subpage.
** {{tl|Random subpage}}—transcludes random portal subpages.
** {{tl|Portal pictures}}—transcludes a slideshow of pictures, utilizing a single-page gallery.
* To organize "selected content" on subpages
** {{tl|Numbered subpages}}—outputs an automatic index, transcluding numbered subpages.
** {{tl|Portal subpage}}—outputs a box linking to and transcluding a single subpage.
** {{tl|Portal subpage inline}}—outputs an unordered list item linking to and transcluding a single subpage.
'''Main portal page formatting templates'''
{{Div col|colwidth=20em}}
* {{tl|Box-header}}
* {{tl|Box-header-plain}}
* {{tl|Box-header-round}}
* {{tl|Box-header-square}}
* {{tl|Box-header-watch}}
* {{tl|Box-footer}}
{{Div col end}}
'''Templates that configure links'''
{{Div col|colwidth=20em}}
* {{tl|Portal}}
* {{tl|Portal bar}}
* {{tl|Portal-inline}}
* {{tl|Pbox}}
* {{tl|Portals}}
* {{tl|Portals browsebar}}
* {{tl|Related portals}}
* {{tl|Wikimedia for portals}}
{{Div col end}}
'''Selected page templates, used on subpages of older portals'''
{{Div col|colwidth=20em}}
* {{tl|Selected article}}
* {{tl|Selected biography}}
* {{tl|Selected business}}
* {{tl|Selected DYK}}
* {{tl|Selected ingredient}}
* {{tl|Selected location}}
* {{tl|Selected picture}}
* {{tl|Selected product}}
* {{tl|Selected publication}}
* {{tl|Selected quote}}
* {{tl|Selected recipe}}
* {{tl|Selected X}}
{{Div col end}}
'''Related templates'''
* {{tl|Project template list}}
{{Portal templates navbox}}<noinclude>
[[Category:Wikipedia Portal templates| ]]
[[Category:Documentation see also templates]]
</noinclude>
fc2451e4103312ad0baf2194d4436a1ad71a7dbe
Template:Portal/doc
10
879
1949
1948
2023-10-01T10:41:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Portal/doc]]
wikitext
text/x-wiki
{{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module -->
{{documentation subpage}}
{{high-use}}
{{lua|Module:Portal}}
<!---PLEASE ADD METADATA TO THE <includeonly> SECTION AT THE BOTTOM OF THIS PAGE.--->
This {{{type|template}}} produces a box with links to a [[Portal:Contents/Portals|portal]] or to multiple portals. It is most often used in the "See also" section of an article. '''If a portal does not exist, then it will not be displayed'''. As of December 11, 2021 (UTC), this portal template is now mobile-friendly, meaning that the portal links will appear on mobile devices.
}}<!-- end of section not transcluded if type = module -->
== Usage ==
{{Portal |Canada | Biography |History |Science}}
'''Basic usage'''
<div style="overflow:auto">
{{{{#ifeq: {{{type|}}} | module | #invoke:Portal|portal | Portal }} |''Portal 1'' |''Portal 2'' |''Portal 3'' |... }}
</div>
== Location ==
Within articles, {{#ifeq: {{{type|}}} | module | the output of the portal function | this template }} is meant to be placed at the top of the article's ''See also'' section. If there is no ''See also'' section, you may put it in the ''External links'' section instead; there is no need to create a new section just to house this template. If there is no ''External links'' section either, just put it below the article text in the place that seems most appropriate.
There are no particular rules about the placement of portals on other kinds of pages.
== Image ==
The portal image names are stored in subpages of [[Module:Portal/images]], organised by the first letter of the portal name. For example, the first letter of [[Portal:Feminism]] is "F", so the image name is stored at [[Module:Portal/images/f]]. If there is an entry for a portal on the correct page then the corresponding image will be shown next to the portal link. If no image is found then [[:File:Portal-puzzle.svg]] will be shown instead.
It is also possible to specify aliases for portal images. For example, the code {{tlx|Portal|Detroit}} produces the same image as the code {{tlx|Portal|Metro Detroit}}. The "Detroit" alias is found on the page [[Module:Portal/images/aliases]].
The image-detection algorithm is case-insensitive. For example, the code {{tlx|Portal|Detroit}} will produce the same image as the code {{tlx|Portal|detroit}} (although the portal links will be different). Portal names are stored in lower case in the image subpages, and input is converted to lower case before being checked.
To add new images to the list, please <span class="plainlinks">[https://en.wikipedia.org/w/index.php?title=Template_talk:Portal&action=edit&preload=Template:Edit_protected/preload&preloadparams%5b%5d=edit%20template-protected&preloadparams%5b%5d=&editintro=Template:Edit_protected/editintro&preloadtitle=Image+edit+request+on+{{CURRENTDAY}}+{{CURRENTMONTHNAME}}+{{CURRENTYEAR}}§ion=new make a protected edit request at Template talk:Portal]</span> to get an administrator to edit the correct subpage for you. Portal images must be either in the public domain or available under a [[WP:ICTIC|free license]] that allows commercial reuse and derivative works; [[Wikipedia:Non-free content|fair-use]] images are not acceptable. The template {{tl|Portal icon demonstration}} may be of use when deciding whether an image is suitable for use as a portal icon; it formats an image using the same size and style that the {{tl|Portal}} template uses by default.
A list of portals and aliases of portals without icons can be found at [[User:Dreamy Jazz Bot/Portals needing icons]]. It is updated infrequently, so ping the [[User:Dreamy Jazz|bot owner]] to update the list.
{{Collapse top|List of image subpages}}
{| class="wikitable"
|-
! Page !! Description
|-
| [[Module:Portal/images/a]] || For portal names starting with "A".
|-
| [[Module:Portal/images/b]] || For portal names starting with "B".
|-
| [[Module:Portal/images/c]] || For portal names starting with "C".
|-
| [[Module:Portal/images/d]] || For portal names starting with "D".
|-
| [[Module:Portal/images/e]] || For portal names starting with "E".
|-
| [[Module:Portal/images/f]] || For portal names starting with "F".
|-
| [[Module:Portal/images/g]] || For portal names starting with "G".
|-
| [[Module:Portal/images/h]] || For portal names starting with "H".
|-
| [[Module:Portal/images/i]] || For portal names starting with "I".
|-
| [[Module:Portal/images/j]] || For portal names starting with "J".
|-
| [[Module:Portal/images/k]] || For portal names starting with "K".
|-
| [[Module:Portal/images/l]] || For portal names starting with "L".
|-
| [[Module:Portal/images/m]] || For portal names starting with "M".
|-
| [[Module:Portal/images/n]] || For portal names starting with "N".
|-
| [[Module:Portal/images/o]] || For portal names starting with "O".
|-
| [[Module:Portal/images/p]] || For portal names starting with "P".
|-
| [[Module:Portal/images/q]] || For portal names starting with "Q".
|-
| [[Module:Portal/images/r]] || For portal names starting with "R".
|-
| [[Module:Portal/images/s]] || For portal names starting with "S".
|-
| [[Module:Portal/images/t]] || For portal names starting with "T".
|-
| [[Module:Portal/images/u]] || For portal names starting with "U".
|-
| [[Module:Portal/images/v]] || For portal names starting with "V".
|-
| [[Module:Portal/images/w]] || For portal names starting with "W".
|-
| [[Module:Portal/images/x]] || For portal names starting with "X".
|-
| [[Module:Portal/images/y]] || For portal names starting with "Y".
|-
| [[Module:Portal/images/z]] || For portal names starting with "Z".
|-
| [[Module:Portal/images/other]] || For portal names starting with any other letters. This includes numbers, letters with diacritics, and letters in non-Latin alphabets.
|-
| [[Module:Portal/images/aliases]] || For adding aliases for existing portal names. Use this page for variations in spelling and diacritics, etc., no matter what letter the portal begins with.
|}
{{Collapse bottom}}
== Example ==
{| style="background:transparent;"
|-
! Code !! Result
|-
|
<span style="font-size: 90%;">{{{{#ifeq: {{{type|}}} | module | #invoke:Portal|portal | Portal }}|Science}}</span>
| {{Portal|Science}}
|}
== Parameters ==
{| class="wikitable"
|-
! Name !! Value !! Description
|-
| <code>'''1'''</code>, <code>'''2'''</code>, <code>'''3'''</code> ... || The portal name, e.g. <code>Literature</code> || The positional parameters specify the portals to be displayed.
|-
| <code>'''left'''</code> || <code>yes</code> || If set to <code>yes</code>, the portal appears on the left side of the page instead of the right.
|-
| <code>'''margin'''</code> || CSS margin value, e.g. <code>1.2em 3em 0.5em 1em</code> || This allows you to set a custom margin. All valid CSS margin values are accepted.
|-
| <code>'''break'''</code> || <code>yes</code> || If set to <code>yes</code>, a line break is inserted after the portal name and before the word ''portal''.
|-
| <code>'''redlinks'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, <code>true</code>, or <code>include</code> || Redlinks will be displayed. The default is to suppress redlinks.
|-
| <code>'''nominimum'''</code> || Any of the following values: <code>yes</code>, <code>y</code>, or <code>true</code> || Suppresses the warning if no parameters are supplied. This can be useful when Template:Portal is called by another template.
|-
| <code>'''border'''</code> || Any of the following values: <code>no</code>, <code>n</code>, or <code>false</code> || Turn off border and background
|-
| <code>'''tracking'''</code> || Any of the following values: <code>no</code>, <code>n</code>, <code>false</code> || Tracking categories will be suppressed. The default is to use tracking categories, except on certain namespaces and on pagenames which contain "/archive", "/doc" or "/test".
|}
== Error tracking ==
If the {{{type|template}}} is used incorrectly, the page will be added to a tracking category.
The tracking categories are not applied if any of the following is true:
# Tracking is specially disabled for that usage. This is done by setting the optional parameter {{para|tracking}} to any the following values: <code><nowiki>no</nowiki></code>, <code><nowiki>n</nowiki></code>, <code><nowiki>false</nowiki></code>
# the template is used on a page in any of these namespaces: Talk, User, User talk, Wikipedia talk, File talk, Template talk, Category talk, Portal talk, Draft, Draft talk, Module talk
# The title page on which the template is used includes any of the following case-insensitive strings: "/archive", "/doc", "/test"
* {{clc|Portal templates with too few portals}}
* {{clc|Portal templates with too many portals}}
* {{clc|Portal templates with redlinked portals}}
* {{clc|Pages with empty portal template}}
* {{clc|Portal templates with default image}}
:{{Purge page|''Purge page to update totals''}}
{{#ifeq: {{{type|}}} | module ||<!-- section not transcluded if type = module -->
== Other mobile-friendly versions==
For versions that are visible in print and mobile versions of Wikipedia pages see:
* {{tl|Portal-inline}}
* {{tl|Portal bar}}
{{Quotation |
*<small>Mobile version of '''{{Plain link|url=https://{{CONTENTLANG}}.m.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>
*<small>Desktop version of '''{{Plain link|url=https://{{CONTENTLANG}}.{{SITENAME}}.org/wiki/{{urlencode:{{{1|{{FULLPAGENAME}}}}}|WIKI}}|name={{{1|{{FULLPAGENAME}}}}}}}'''</small>}}
== See also ==
* {{Tl|Subject bar}}
{{Portal template list}}
==TemplateData==
{{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}}
{{TemplateData header|noheader=1}}
<TemplateData>
{
"description": "A template to create a list of portals",
"params": {
"1": {
"label": "Portal (1)",
"description": "Inserts the portal image and text. Further portals can be added to the template by increasing the number",
"type": "string",
"required": true
},
"2": {
"label": "Portal (2)",
"description": "Inserts the portal image and text",
"type": "string"
},
"3": {
"label": "Portal (3)",
"inherits": "2"
},
"4": {
"label": "Portal (4)",
"inherits": "3"
},
"5": {
"label": "Portal (5)",
"inherits": "4"
},
"6": {
"label": "Portal (6)",
"inherits": "5"
},
"left": {
"label": "Side",
"description": "If set to yes, the portal appears on the left side of the page instead of the right.",
"type": "string",
"default": "no"
},
"margin": {
"label": "Margin size",
"description": "Alters the margin size. Any valid CSS margin is accepted",
"type": "number"
},
"break": {
"label": "Line break",
"description": "If set to yes, a line break is inserted after the portal name and before the word portal",
"type": "string"
},
"redlink": {
"description": "Allow links to non-existent portals",
"type": "string",
"default": "false"
},
"nominimum": {
"description": "Do not check for at least one portal",
"type": "string",
"default": "false"
},
"border": {
"description": "Put border around portal links",
"type": "string",
"default": "true"
},
"tracking": {
"description": "In case of warning, add to tracking category",
"type": "string",
"default": "true"
},
"type": {}
},
"format": "block"
}
</TemplateData>
{{Collapse bottom}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Internal link templates]]
[[Category:Wikipedia Portal navflags]]
}}</includeonly> <noinclude>
[[Category:Record production portal|Templates]]</noinclude>
}}<!-- end of section not transcluded if type = module -->
12237d8da876a83e3d771aeccf9b8f19101fdbe8
Module:Citation/CS1/Configuration
828
880
1951
1950
2023-10-01T10:41:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration]]
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates
--[[--------------------------< S E T T I N G S >--------------------------------------------------------------
boolean settings used to control various things. these setting located here to make them easy to find
]]
-- these settings local to this module only
local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki
local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki;
-- manual translation required else; ; always false at en.wiki
-- these settings exported to other modules
local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki
local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces identifiers for namespaces that will not be included in citation error categories.
Same as setting notracking = true by default.
For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered
list of namespace names and their associated identifiers:
{{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}}
]]
uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id
for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids
uncategorized_namespaces_t[k] = true;
end
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Archived from $1 on $2',
['archived-live'] = '$1 from the original on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1 ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['mismatch'] = '<code class="cs1-code">|$1=</code> / <code class="cs1-code">|$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Retrieved $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Translated by $1',
['type'] = ' ($1)', -- for titletype
['written'] = 'Written at $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2, no. $3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
['issue'] = '$1 No. $2', -- $1 is sepc
['art'] = '$1 Art. $2', -- $1 is sepc; for {{cite conference}} only
['vol-art'] = '$1 Vol. $2, art. $3', -- sepc, volume, article-number; for {{cite conference}} only
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['j-article-num'] = ' $1', -- TODO: any punctuation here? static text?
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 p. $2", -- $1 is sepc
['pp-prefix'] = "$1 pp. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = 'minutes in',
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- categories
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
}
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preview mode.
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.
]]
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
['arxiv'] = 'arXiv',
['audio-visual'] = 'AV media',
['AV-media-notes'] = 'AV media notes',
['biorxiv'] = 'bioRxiv',
['citeseerx'] = 'CiteSeerX',
['encyclopaedia'] = 'encyclopedia',
['mailinglist'] = 'mailing list',
['medrxiv'] = 'medRxiv',
['pressrelease'] = 'press release',
['ssrn'] = 'SSRN',
['techreport'] = 'tech report',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< P R E S E N T A T I O N >------------------------
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
]]
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc
['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored)
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items
['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >---------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ArticleNumber'] = 'article-number',
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifier
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = 'conference-format',
['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = 'edition',
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['Inset'] = 'inset',
['Issue'] = {'issue', 'number'},
['Language'] = {'language', 'lang'},
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = 'name-list-style',
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry',
'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper',
'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = 'time-caption',
['Title'] = 'title', -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = {'title-note', 'department'},
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution',
'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper',
'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given",
"subject-first#", "subject#-first", "subject-given#", "subject#-given",
"given#"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname",
"subject-last#", "subject#-last", "subject-surname#", "subject#-surname",
"author#", 'host#', "subject#", "surname#"},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#",
"subject#-link", "authorlink#", "author#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first',
'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last',
'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#",
"editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link"},
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first',
'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last',
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first',
'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last',
'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< P U N C T _ S K I P >---------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
}
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
}
local function build_skip_table (skip_t, meta_params)
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
skip_t[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
skip_t[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
skip_t[param] = 1; -- add param name without enumerator marker
end
end
end
end
return skip_t;
end
local punct_skip = {};
local url_skip = {};
--[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >----------
this is a list of tlds that are known to have single-letter second-level domain names. This list does not include
ccTLDs which are accepted in is_domain_name().
]]
local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'};
--[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------
This table is primarily here to support internationalization. Translations in
this table are used, for example, when an error message, category name, etc.,
is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
local special_case_translation = {
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots or reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
-- generic titles and patterns in this table should be lowercase only
-- leave ['local'] nil except when there is a matching generic title in your language
-- boolean 'true' for plain-text searches; 'false' for pattern searches
['generic_titles'] = {
['accept'] = {
},
['reject'] = {
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains.com', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'subscribe to read', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', false}, ['local'] = nil},
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
{['en'] = {'log into facebook', true}, ['local'] = nil},
{['en'] = {'login • instagram', true}, ['local'] = nil},
{['en'] = {'redirecting...', true}, ['local'] = nil},
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
{['en'] = {'webcite query result', true}, ['local'] = nil},
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
}
},
-- boolean 'true' for plain-text searches, search string must be lowercase only
-- boolean 'false' for pattern searches
-- leave ['local'] nil except when there is a matching generic name in your language
['generic_names'] = {
['accept'] = {
{['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil},
},
['reject'] = {
{['en'] = {'about us', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil},
{['en'] = {'allmusic', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil},
{['en'] = {'business', true}, ['local'] = nil},
{['en'] = {'cnn', true}, ['local'] = nil},
{['en'] = {'collaborator', true}, ['local'] = nil},
{['en'] = {'contributor', true}, ['local'] = nil},
{['en'] = {'contact us', true}, ['local'] = nil},
{['en'] = {'directory', true}, ['local'] = nil},
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil},
{['en'] = {'facebook', true}, ['local'] = nil},
{['en'] = {'google', true}, ['local'] = nil},
{['en'] = {'home page', true}, ['local'] = nil},
{['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil},
{['en'] = {'instagram', true}, ['local'] = nil},
{['en'] = {'interviewer', true}, ['local'] = nil},
{['en'] = {'linkedIn', true}, ['local'] = nil},
{['en'] = {'^[Nn]ews$', false}, ['local'] = nil},
{['en'] = {'pinterest', true}, ['local'] = nil},
{['en'] = {'policy', true}, ['local'] = nil},
{['en'] = {'privacy', true}, ['local'] = nil},
{['en'] = {'reuters', true}, ['local'] = nil},
{['en'] = {'translator', true}, ['local'] = nil},
{['en'] = {'tumblr', true}, ['local'] = nil},
{['en'] = {'twitter', true}, ['local'] = nil},
{['en'] = {'site name', true}, ['local'] = nil},
{['en'] = {'statement', true}, ['local'] = nil},
{['en'] = {'submitted', true}, ['local'] = nil},
{['en'] = {'super.?user', false}, ['local'] = nil},
{['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil},
{['en'] = {'verfasser', true}, ['local'] = nil},
}
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names.
The code in Date_validation will look first in the local table for valid date names.
If date names are not found in the local table, the code will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is
required when the date-name translation function date_name_xlate() is used.
In these tables, season numbering is defined by
Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard
defines various divisions using numbers 21-41. CS1|2 only supports generic seasons.
EDTF does support the distinction between north and south hemisphere seasons
but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) range of uses for a while.
local_date_names_from_mediawiki is a boolean. When set to:
true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short']
false – module will *not* fetch local month names from MediaWiki
Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test
the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted):
=mw.dumpObject (p.date_names['local'])
While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names
from MediaWiki. Those must be translated manually.
]]
local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short']
-- when true, module fetches long and short month names from MediaWiki
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
-- when local_date_names_from_mediawiki = false
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc.
['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc.
['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled
local long_t = {};
local short_t = {};
for i=1, 12 do -- loop 12x and
local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i
long_t[name] = i; -- save it
name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i
short_t[name] = i; -- save it
end
date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation
date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation
end
-- create inverted date-name tables for reformatting and/or translation
for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do
for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i
date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
end
if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled
local digits_t = {};
for i=0, 9 do -- loop 10x and
digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value
end
date_names['local_digits'] = digits_t;
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local title_object = mw.title.getCurrentTitle();
local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used
if 10 ~= title_object.namespace then -- all namespaces except Template
content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
end
local function get_date_format ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
local use_dates_template = content:match ('%b{}', start); -- get the whole template
if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df; -- TODO: add this to <global_cs1_config_t>?
--[[-----------------< V O L U M E , I S S U E , P A G E S >------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[
These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter
names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1
templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must
not support |volume=.
]]
local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used
'website', 'mailinglist', 'script-website',
}
local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used
'journal', 'magazine', 'newspaper', 'periodical', 'work',
'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work',
}
--[[
Patterns for finding extra text in |volume=, |issue=, |page=, |pages=
]]
local vol_iss_pg_patterns = {
good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not
bad_ppatterns = { -- patterns for |page= and |pages=
'^[Pp][PpGg]?%.?[ %d]',
'^[Pp][Pp]?%. ', -- from {{p.}} and {{pp.}} templates
'^[Pp]ages?',
'^[Pp]gs.?',
},
vpatterns = { -- patterns for |volume=
'^volumes?',
'^vols?[%.:=]?'
},
ipatterns = { -- patterns for |issue=
'^issues?',
'^iss[%.:=]?',
'^numbers?',
'^nos?%A', -- don't match 'november' or 'nostradamus'
'^nr[%.:=]?',
'^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here)
}
}
--[[--------------------------< K E Y W O R D S >-------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[-------------------< K E Y W O R D S T A B L E >--------------------------
this is a list of keywords; each key in the list is associated with a table of
synonymous keywords possibly from different languages.
for I18N: add local-language keywords to value table; do not change the key.
For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis,
it is recommended that the English keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[------------------------< X L A T E _ K E Y W O R D S >---------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[----------------< M A K E _ K E Y W O R D S _ L I S T >---------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[----------------< K E Y W O R D S _ L I S T S >-----------------------------
this is a list of lists of valid keywords for the various parameters in [key].
Generally the keys in this table are the canonical en.wiki parameter names though
some are contrived because of use in multiple differently named parameters:
['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the
appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the
parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< C S 1 _ C O N F I G _ G E T >--------------------------------------------------
fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t>
no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked.
Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors,
DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters
accept numeric values only (|display-authors=etal and the like is not supported).
]]
local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table?
local function get_cs1_config ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else
if start then
local cs1_config_template = content:match ('%b{}', start); -- get the whole template
if not cs1_config_template then
return nil;
end
local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe)
table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair
local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'};
local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here
for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents
if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence,
for _, param in ipairs (aliases[meta_param]) do -- extract its contents
meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t>
end
else
meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t>
end
end
local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters
for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs
for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords
keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map
end
end
for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t>
local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value
if k then
if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters
if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal'
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table
end
else
if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table
end
end
end
end
end
end
get_cs1_config (); -- fill <global_cs1_config_t>
--[[---------------------< S T R I P M A R K E R S >----------------------------
Common pattern definition location for stripmarkers so that we don't have to go
hunting for them if (when) MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[------------< I N V I S I B L E _ C H A R A C T E R S >---------------------
This table holds non-printing or invisible characters indexed either by name or
by Unicode group. Values are decimal representations of UTF-8 codes. The table
is organized as a table of tables because the Lua pairs keyword returns table
data in an arbitrary order. Here, we want to process the table from top to bottom
because the entries at the top of the table are also found in the ranges specified
by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the
delete characters. The nowiki stripmarker is not an error but some others are
because the parameter values that include them become part of the template's
metadata before stripmarker replacement.
]]
local invisible_defs = {
del = '\127', -- used to distinguish between stripmarker and del char
zwj = '\226\128\141', -- used with capture because zwj may be allowed
}
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj
characters must be left in. This pattern covers all of the unicode characters
for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
-- list of emoji that use a zwj character (U+200D) to combine with another emoji
-- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06
-- table created by: [[:en:Module:Make emoji zwj table]]
local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx
[9760] = true, -- U+2620 ☠ skull and crossbones
[9792] = true, -- U+2640 ♀ female sign
[9794] = true, -- U+2642 ♂ male sign
[9877] = true, -- U+2695 ⚕ staff of aesculapius
[9878] = true, -- U+2696 ⚖ scales
[9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign
[9992] = true, -- U+2708 ✈ airplane
[10052] = true, -- U+2744 ❄ snowflake
[10084] = true, -- U+2764 ❤ heavy black heart
[11035] = true, -- U+2B1B ⬛ black large square
[127752] = true, -- U+1F308 🌈 rainbow
[127787] = true, -- U+1F32B 🌫 fog
[127806] = true, -- U+1F33E 🌾 ear of rice
[127859] = true, -- U+1F373 🍳 cooking
[127868] = true, -- U+1F37C 🍼 baby bottle
[127876] = true, -- U+1F384 🎄 christmas tree
[127891] = true, -- U+1F393 🎓 graduation cap
[127908] = true, -- U+1F3A4 🎤 microphone
[127912] = true, -- U+1F3A8 🎨 artist palette
[127979] = true, -- U+1F3EB 🏫 school
[127981] = true, -- U+1F3ED 🏭 factory
[128102] = true, -- U+1F466 👦 boy
[128103] = true, -- U+1F467 👧 girl
[128104] = true, -- U+1F468 👨 man
[128105] = true, -- U+1F469 👩 woman
[128139] = true, -- U+1F48B 💋 kiss mark
[128168] = true, -- U+1F4A8 💨 dash symbol
[128171] = true, -- U+1F4AB 💫 dizzy symbol
[128187] = true, -- U+1F4BB 💻 personal computer
[128188] = true, -- U+1F4BC 💼 brief case
[128293] = true, -- U+1F525 🔥 fire
[128295] = true, -- U+1F527 🔧 wrench
[128300] = true, -- U+1F52C 🔬 microscope
[128488] = true, -- U+1F5E8 🗨 left speech bubble
[128640] = true, -- U+1F680 🚀 rocket
[128658] = true, -- U+1F692 🚒 fire engine
[129309] = true, -- U+1F91D 🤝 handshake
[129455] = true, -- U+1F9AF 🦯 probing cane
[129456] = true, -- U+1F9B0 🦰 emoji component red hair
[129457] = true, -- U+1F9B1 🦱 emoji component curly hair
[129458] = true, -- U+1F9B2 🦲 emoji component bald
[129459] = true, -- U+1F9B3 🦳 emoji component white hair
[129466] = true, -- U+1F9BA 🦺 safety vest
[129468] = true, -- U+1F9BC 🦼 motorized wheelchair
[129469] = true, -- U+1F9BD 🦽 manual wheelchair
[129489] = true, -- U+1F9D1 🧑 adult
[129657] = true, -- U+1FA79 🩹 adhesive bandage
[129778] = true, -- U+1FAF2 🫲 leftwards hand
}
--[[----------------------< L A N G U A G E S U P P O R T >-------------------
These tables and constants support various language-specific functionality.
]]
--local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead
end
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests
local mw_languages_by_name_t = {};
for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language=
v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>]
if mw_languages_by_name_t[v] then -- when name already in the table
if 2 == #k or 3 == #k then -- if tag does not have subtags
mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name
end
else -- here when name not in the table
mw_languages_by_name_t[v] = k; -- so add name and matching tag
end
end
local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local)
if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
--[[--------------------< S C R I P T _ L A N G _ C O D E S >-------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character
language codes that apply only to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he',
'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn',
'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta',
'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh'
};
--[[---------------< L A N G U A G E R E M A P P I N G >----------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{}
lang_tag_remap{}:
key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with <tag>
only one language name per <tag>;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{})
may have multiple keys referring to a common preferred name and tag; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['fkv'] = 'Kven', -- MediaWiki returns Kvensk
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
}
--[[---------------< P R O P E R T I E S _ C A T E G O R I E S >----------------
Properties categories. These are used for investigating qualities of citations.
]]
local prop_cats = {
['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location-test'] = 'CS1 location test',
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[-------------------< T I T L E _ T Y P E S >--------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['document'] = 'Document',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['speech'] = 'Speech',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[===================<< E R R O R M E S S A G I N G >>======================
]]
--[[----------< E R R O R M E S S A G E S U P P L I M E N T S >-------------
I18N for those messages that are supplemented with additional specific text that
describes the reason for the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['invalid language code'] = 'invalid language code', -- |script-<param>=
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['missing prefix'] = 'missing prefix', -- |script-<param>=
['missing title part'] = 'missing title part', -- |script-<param>=
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['unknown language code'] = 'unknown language code', -- |script-<param>=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------< E R R O R _ C O N D I T I O N S >---------------------------
Error condition table. This table has two sections: errors at the top, maintenance
at the bottom. Maint 'messaging' does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the
code. For each ID, we specify a text message to display, an error category to
include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error
and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'CS1 errors: access-date without URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_date_missing_url = {
message = '<code class="cs1-code">|archive-date=</code> requires <code class="cs1-code">|archive-url=</code>',
anchor = 'archive_date_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_date_url_ts_mismatch = {
message = '<code class="cs1-code">|archive-date=</code> / <code class="cs1-code">|archive-url=</code> timestamp mismatch',
anchor = 'archive_date_url_ts_mismatch',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_asintld_missing_asin = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|asin=</code>', -- $1 is parameter name
anchor = 'asintld_missing_asin',
category = 'CS1 errors: ASIN TLD',
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_asin_tld = {
message = 'Check <code class="cs1-code">|asin-tld=</code> value',
anchor = 'bad_asin_tld',
category ='CS1 errors: ASIN TLD',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
message = 'Check date values in: $1', -- $1 is a parameter name list
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_jstor = {
message = 'Check <code class="cs1-code">|jstor=</code> value',
anchor = 'bad_jstor',
category = 'CS1 errors: JSTOR',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_medrxiv = {
message = 'Check <code class="cs1-code">|medrxiv=</code> value',
anchor = 'bad_medrxiv',
category = 'CS1 errors: medRxiv',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_osti = {
message = 'Check <code class="cs1-code">|osti=</code> value',
anchor = 'bad_osti',
category = 'CS1 errors: OSTI',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_rfc = {
message = 'Check <code class="cs1-code">|rfc=</code> value',
anchor = 'bad_rfc',
category = 'CS1 errors: RFC',
hidden = false
},
err_bad_s2cid = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'CS1 errors: URL',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: Zbl',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'CS1 errors: bare URL',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'CS1 errors: missing title',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'CS1 errors: requires URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name; $2 is the assigned value
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_embargo_missing_pmc = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|pmc=</code>', -- $1 is parameter name
anchor = 'embargo_missing_pmc',
category = 'CS1 errors: PMC embargo',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'CS1 errors: empty citation',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_extra_text_edition = {
message = '<code class="cs1-code">|edition=</code> has extra text',
anchor = 'extra_text_edition',
category = 'CS1 errors: extra text: edition',
hidden = false,
},
err_extra_text_issue = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_issue',
category = 'CS1 errors: extra text: issue',
hidden = false,
},
err_extra_text_pages = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_pages',
category = 'CS1 errors: extra text: pages',
hidden = false,
},
err_extra_text_volume = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_volume',
category = 'CS1 errors: extra text: volume',
hidden = true,
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'CS1 errors: format without URL',
hidden = false
},
err_generic_name = {
message = '<code class="cs1-code">|$1=</code> has generic name', -- $1 is parameter name
anchor = 'generic_name',
category = 'CS1 errors: generic name',
hidden = false,
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_medrxiv_missing = {
message = '<code class="cs1-code">|medrxiv=</code> required',
anchor = 'medrxiv_missing',
category = 'CS1 errors: medRxiv', -- same as bad medRxiv
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = true
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_missing_publisher = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1
anchor = 'missing_publisher',
category = 'CS1 errors: missing publisher',
hidden = false
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_periodical_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'periodical_ignored',
category = 'CS1 errors: periodical ignored',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'CS1 errors: redundant parameter',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: SSRN',
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'CS1 errors: unrecognized parameter',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = false
},
err_vancouver = {
message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >-------------------------------------
maint messages do not have a message (message = nil); otherwise the structure
is the same as error messages
]]
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_authors = {
message = nil,
anchor = 'authors',
category = 'CS1 maint: uses authors parameter',
hidden = true,
},
maint_bibcode = {
message = nil,
anchor = 'bibcode',
category = 'CS1 maint: bibcode',
hidden = true,
},
maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite
message = nil,
anchor = 'location_no_publisher',
category = 'CS1 maint: location missing publisher',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: bot: original URL status unknown',
hidden = true,
},
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
message = nil,
anchor = 'date_auto_xlated',
category = 'CS1 maint: date auto-translated',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI inactive',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_others_avm = {
message = nil,
anchor = 'others_avm',
category = 'CS1 maint: others in cite AV media (notes)',
hidden = true,
},
maint_overridden_setting = {
message = nil,
anchor = 'overridden',
category = 'CS1 maint: overridden setting',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_postscript = {
message = nil,
anchor = 'postscript',
category = 'CS1 maint: postscript',
hidden = true,
},
maint_ref_duplicates_default = {
message = nil,
anchor = 'ref_default',
category = 'CS1 maint: ref duplicates default',
hidden = true,
},
maint_unfit = {
message = nil,
anchor = 'unfit',
category = 'CS1 maint: unfit URL',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: unrecognized language',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_url_status = {
message = nil,
anchor = 'url_status',
category = 'CS1 maint: url-status',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: Zbl',
hidden = true,
},
}
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each
identifier we specify a variety of information necessary to properly render the
identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: Wikidata q number for the identifier
label: the label preceding the identifier; label is linked to a Wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if URI should be percent-encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for |asin= and |ol=, which require assembly, use the keyword: url
for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
prefix = 'https://arxiv.org/abs/',
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
prefix = 'https://www.amazon.',
COinS = 'url',
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
prefix = 'https://doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
prefix = 'https://doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International Standard Serial Number#Electronic ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
prefix = 'https://hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
prefix = '', -- not currently used;
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
prefix = 'https://www.jstor.org/stable/',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
prefix = 'https://lccn.loc.gov/',
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MEDRXIV'] = {
parameters = {'medrxiv'},
link = 'medRxiv',
redirect = 'medRxiv (identifier)',
q = 'Q58465838',
label = 'medRxiv',
prefix = 'https://www.medrxiv.org/content/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
prefix = 'https://www.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
id_limit = 10005000000,
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
prefix = 'https://openlibrary.org/',
COinS = 'url',
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
prefix = 'https://www.osti.gov/biblio/',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 23010000,
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = '',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 10700000,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = 'Q2082879',
label = 'PMID',
prefix = 'https://pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = 37900000,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
prefix = 'https://tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 9300,
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 4600000,
custom_access = 'ssrn-access',
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 264000000,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >---------------------------------
]]
return {
use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module
local_lang_cat_enable = local_lang_cat_enable,
date_name_auto_xlate_enable = date_name_auto_xlate_enable,
date_digit_auto_xlate_enable = date_digit_auto_xlate_enable,
-- tables and variables created when this module is loaded
global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format.
global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}}
punct_skip = build_skip_table (punct_skip, punct_meta_params),
url_skip = build_skip_table (url_skip, url_meta_params),
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers = stripmarkers,
invisible_chars = invisible_chars,
invisible_defs = invisible_defs,
indic_script = indic_script,
emoji_t = emoji_t,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
script_lang_codes = script_lang_codes,
lang_tag_remap = lang_tag_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces_t,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
vol_iss_pg_patterns = vol_iss_pg_patterns,
single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t,
inter_wiki_map = inter_wiki_map,
mw_languages_by_tag_t = mw_languages_by_tag_t,
mw_languages_by_name_t = mw_languages_by_name_t,
citation_class_map_t = citation_class_map_t,
citation_issue_t = citation_issue_t,
citation_no_volume_t = citation_no_volume_t,
}
46fa8aad81f28bb571f448d36acfddc95d791bf5
Module:Citation/CS1/Configuration/doc
828
881
1953
1952
2023-10-01T10:42:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration/doc]]
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This configuration file contains various data that controls the functioning of [[Module:Citation/CS1]] and hence the way that Lua-based citations are generated.
It has several sections among which are:
# translation tables that contain most of the literal strings that may be included in Lua-based citation. If editors are copying this Module to another wiki using a language other than English, then they should translate each of these values into that language.
# a list of error conditions specifying what text to display, what category to include (if any), and what help page section to refer to when errors are detected
# a list of ID handlers specifying the recognized document IDs, such as ISBN, DOI, etc., and how to format them.
{{#lst:Module:Citation/CS1/doc|module_components_table}}
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Modules that check for strip markers]]
}}</includeonly>
629c7396ecd08be19b2d8d920f688c1644f989b6
Template:Party politics
10
882
1955
1954
2023-10-01T10:42:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Party_politics]]
wikitext
text/x-wiki
{{Politics series sidebar
| name = Party politics
| bodystyle =
| pretitle = Part of the [[:Category:Politics|Politics series]]
| title = [[Political party|Party politics]]
| titlestyle = padding-bottom:3; background:;
| expanded = {{{expanded|{{{selected|{{{1|}}}}}}}}}
| list1name = political spectrum
| contentstyle = text-align:center;
| list1title = [[Political spectrum]]
| list1 =
{{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off
|contentstyle=padding-top:0;padding-bottom:0.1em;
| heading1 = [[Left-wing politics|Left-wing]]
| content1 =
{{hlist | [[Far-left politics|Far-left]] | [[Centre-left politics|Centre-left]]}}
| heading2 = [[Centrism|Centre]]
| content2 =
{{hlist | [[Centre-left politics|Centre-left]] | [[Radical centrism|Radical centre]] | [[Centre-right politics|Centre-right]]}}
| heading3 = [[Right-wing politics|Right-wing]]
| content3 =
{{hlist | [[Centre-right politics|Centre-right]]| [[Far-right politics|Far-right]]}}
}}
| list2name = platform
| list2title = [[Party platform|Platform]]s/[[Ideological politics|Ideologies]]
| list2 =
{{flatlist|
* [[Anarchism|Anarchist]]
* [[Christian democracy|Christian democratic]]
* [[Communism|Communist]]
* [[Conservatism|Conservative]]
* [[Democracy|Democratic]]
* [[Environmentalism|Environmentalist]]
* [[Fascism|Fascist]]
* [[Fundamentalism|Fundamentalist]]
* [[Globalism|Globalist]]
* [[Green politics|Green]]
* [[Internationalism (politics)|Internationalist]]
* [[Liberalism|Liberal]]
* [[Libertarianism|Libertarian]]
* [[Nationalism|Nationalist]]
* [[Pirate Party|Pirate Party]]
* [[Populism|Populist]]
* [[Progressivism|Progressive]]
* [[Classical radicalism|Radical]]
* [[Regionalism (politics)|Regionalist]]
* [[Republicanism|Republican]]
* [[Social democracy|Social democratic]]
* [[Socialism|Socialist]]
* [[Syncretic politics|Syncretic]]}}
| list3name = types
| list3title = Types
| list3 =
{{flatlist|
* [[Elite party]]
* [[Cartel party theory|Cartel party]]
* [[Big tent|Catch-all party]]
* [[Business-firm party|Entrepreneurial party]]
* [[Mass politics|Mass party]]
* [[Ruling party]]
* [[Opposition (politics)|Opposition party]]
* [[Parliamentary opposition]]
* [[Official party status]]
* [[Single-issue politics#Single-issue parties|Single-issue party]]}}
| list4name = organization
| list4title = Leaders and organization
| list4 =
{{flatlist|
* [[Backbencher]]
* [[Caucus]]
* [[Caucus chair]]
* [[Floor leader]]
* [[Frontbencher]]
* [[Lead candidate]]
* [[Leader of the Opposition]]
* [[Majority leader]]
* [[Minority leader]]
* [[Political faction]]
* [[Parliamentary leader]]
* [[Party chair]]
* [[Party leader]]
* [[Party spokesperson]]
* [[Secretary (title)|Secretary]]
* [[Shadow cabinet]]
* [[Whip (politics)|Whip]]}}
| list5name = Internal elections
| list5title = Internal elections
| list5 =
{{flatlist|
* [[Primary election]]
* [[Leadership election]]
* [[Open list]]
* [[Party conference|Party convention/conference]]
* [[Leadership convention]]
}}
| list6name = party discipline
| list6title = [[Party discipline]]
| list6 =
{{flatlist|
* [[Conscience vote]]
* [[Crossing the floor]]
* [[Party discipline]]
* [[Party line (politics)|Party line]]
* [[Party-line vote]]
* [[Party switching]]
}}
| list7name = party systems
| list7title = [[Party system]]s
| list7 =
{{Sidebar |bodystyle={{subsidebar bodystyle}} |navbar=off
|contentstyle=padding-top:0;padding-bottom:0em;
| heading1 =
| content1 =
{{hlist |[[One-party state|One-party]]}}
{{hlist |[[Dominant-party system|Dominant-party]] |[[Two-party system|Two-party]] |[[Multi-party system|Multi-party]]}}
{{hlist |[[Non-partisan democracy|Non-partisan]]}}
}}
| list8name = coalition
| list8title= [[Coalition]]s between parties
| list8 =
{{flatlist|
* [[Parliamentary group]]
* [[Divided government]]
* [[Coalition government]]
* [[Confidence and supply]]
* [[Consensus government]]
* [[Grand coalition]]
* [[Hung parliament]]
* [[Majority government]]
* [[Minority government]]
* [[National unity government]]
* [[Rotation government]]}}
| list9name = lists
| list9title = [[Lists of political parties]]
| list9 =
{{flatlist|
* [[List of ruling political parties by country|Ruling parties by country]]
* [[List of political parties by region|Political parties by region]]
* [[List of political ideologies|Political ideologies]]
* [[List of banned political parties|Banned political parties]]}}
| belowclass = plainlist
| belowstyle = text-align:center; font-weight:normal; border-top:1px solid; border-bottom:1px solid;
| below =
* {{portal-inline|Politics|size=tiny}}
}}<noinclude>
{{collapsible lists option|listnames="Political spectrum", "Platform", "Types", "Organization", "Internal democracy", "Party system", "Coalition", "Lists"|example=platform}}
[[Category:Political party sidebar templates| ]]
[[Category:Politics series sidebar templates]]
</noinclude>
c2ac6c0fa425d9c83eb53a72a2822ff1a654352a
Template:Politics series sidebar
10
883
1957
1956
2023-10-01T10:42:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Politics_series_sidebar]]
wikitext
text/x-wiki
{{Sidebar with collapsible lists
| name = {{{name|{{PAGENAME}}}}}
| class = {{{class|}}} {{{bodyclass|}}}
| pretitle = Part of the [[:Category:Politics|Politics series]]
| title = {{{title<includeonly>|</includeonly>}}}
| titleclass = {{{titleclass|}}}
| titlestyle = border-top:1px #fafafa solid; border-bottom:1px #fafafa solid; background:#efefef;padding:0.2em;
| headingclass = {{{headingclass|}}}
| headingstyle = background:#efefef;{{{headingstyle|}}}
| listtitlestyle = background:#efefef; border-top:1px solid; {{{listtitlestyle|}}}
| centered list titles = {{{centered list titles|}}}
| contentclass = {{{contentclass|}}}
| contentstyle = text-align:left;{{{contentstyle|}}}
| image = {{{image|}}}
| caption = {{{caption|}}}
| expanded = {{{expanded|}}}
| abovestyle = display:block; margin-bottom:0.5em; background:transparent;
| above = {{{above|}}}
| list1name = {{{list1name|}}}
| list1title = {{{list1title|}}}
| list1 = {{{list1<includeonly>|</includeonly>}}}
| list1class = {{{list1class|}}}
| list2name = {{{list2name|}}}
| list2title = {{{list2title|}}}
| list2 = {{{list2<includeonly>|</includeonly>}}}
| list2class = {{{list2class|}}}
| list3name = {{{list3name|}}}
| list3title = {{{list3title|}}}
| list3 = {{{list3<includeonly>|</includeonly>}}}
| list3class = {{{list3class|}}}
| list4name = {{{list4name|}}}
| list4title = {{{list4title|}}}
| list4 = {{{list4<includeonly>|</includeonly>}}}
| list4class = {{{list4class|}}}
| list5name = {{{list5name|}}}
| list5title = {{{list5title|}}}
| list5 = {{{list5<includeonly>|</includeonly>}}}
| list5class = {{{list5class|}}}
| list6name = {{{list6name|}}}
| list6title = {{{list6title|}}}
| list6 = {{{list6<includeonly>|</includeonly>}}}
| list6class = {{{list6class|}}}
| list7name = {{{list7name|}}}
| list7title = {{{list7title|}}}
| list7 = {{{list7<includeonly>|</includeonly>}}}
| list7class = {{{list7class|}}}
| list8name = {{{list8name|}}}
| list8title = {{{list8title|}}}
| list8 = {{{list8<includeonly>|</includeonly>}}}
| list8class = {{{list8class|}}}
| list9name = {{{list9name|}}}
| list9title = {{{list9title|}}}
| list9 = {{{list9<includeonly>|</includeonly>}}}
| list9class = {{{list9class|}}}
| list10name = {{{list10name|}}}
| list10title = {{{list10title|}}}
| list10 = {{{list10<includeonly>|</includeonly>}}}
| list10class = {{{list10class|}}}
| belowstyle = background:#efefef;
| below = {{portal-inline|Politics|size=tiny}}
}}<noinclude>
{{documentation}}
[[Category:Politics series sidebar templates| ]]
</noinclude>
616b256f4c1c4adf99b4cd0aebb986edc4817116
Template:Subinfobox bodystyle
10
884
1959
1958
2023-10-01T10:42:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Subinfobox_bodystyle]]
wikitext
text/x-wiki
background-color: transparent; border-collapse:collapse; border-spacing:0px; border:none; width:100%; margin:0px; font-size:100%; clear:none; float:none<noinclude>
{{documentation}}
</noinclude>
284ca3e8ef640a5762c6cd04c574077c4ec182bb
Template:Subsidebar bodystyle
10
885
1961
1960
2023-10-01T10:42:43Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Subsidebar_bodystyle]]
wikitext
text/x-wiki
#redirect [[Template:Subinfobox bodystyle]]
09334898141c9cd97ab7e7c9226a3424a88c0cd7
Module:Citation/CS1/Whitelist
828
886
1963
1962
2023-10-01T10:43:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Whitelist]]
Scribunto
text/plain
--[[--------------------------< S U P P O R T E D P A R A M E T E R S >--------------------------------------
Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values:
true - these parameters are valid and supported parameters
false - these parameters are deprecated but still supported
tracked - these parameters are valid and supported parameters tracked in an eponymous properties category
nil - these parameters are no longer supported. remove entirely
]]
local basic_arguments_t = {
['accessdate'] = true,
['access-date'] = true,
['agency'] = true,
['archivedate'] = true,
['archive-date'] = true,
['archive-format'] = true,
['archiveurl'] = true,
['archive-url'] = true,
['article'] = true,
['article-format'] = true,
['article-number'] = true, -- {{cite journal}}, {{cite conference}}; {{citation}} when |journal= has a value
['article-url'] = true,
['article-url-access'] = true,
['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['asin'] = true,
['ASIN'] = true,
['asin-tld'] = true,
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['authorlink'] = true,
['author-link'] = true,
['author-mask'] = true,
['authors'] = true,
['bibcode'] = true,
['bibcode-access'] = true,
['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier
['chapter'] = true,
['chapter-format'] = true,
['chapter-url'] = true,
['chapter-url-access'] = true,
['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier
['collaboration'] = true,
['contribution'] = true,
['contribution-format'] = true,
['contribution-url'] = true,
['contribution-url-access'] = true,
['contributor'] = true,
['contributor-first'] = true,
['contributor-given'] = true,
['contributor-last'] = true,
['contributor-surname'] = true,
['contributor-link'] = true,
['contributor-mask'] = true,
['date'] = true,
['department'] = true,
['df'] = true,
['dictionary'] = true,
['display-authors'] = true,
['display-contributors'] = true,
['display-editors'] = true,
['display-interviewers'] = true,
['display-subjects'] = true,
['display-translators'] = true,
['doi'] = true,
['DOI'] = true,
['doi-access'] = true,
['doi-broken-date'] = true,
['edition'] = true,
['editor'] = true,
['editor-first'] = true,
['editor-given'] = true,
['editor-last'] = true,
['editor-surname'] = true,
['editor-link'] = true,
['editor-mask'] = true,
['eissn'] = true,
['EISSN'] = true,
['encyclopaedia'] = true,
['encyclopedia'] = true,
['entry'] = true,
['entry-format'] = true,
['entry-url'] = true,
['entry-url-access'] = true,
['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier
['first'] = true,
['format'] = true,
['given'] = true,
['hdl'] = true,
['HDL'] = true,
['hdl-access'] = true,
['host'] = true, -- unique to certain templates?
['id'] = true,
['ID'] = true,
['institution'] = true, -- constrain to cite thesis?
['interviewer'] = true,
['interviewer-first'] = true,
['interviewer-given'] = true,
['interviewer-last'] = true,
['interviewer-surname'] = true,
['interviewer-link'] = true,
['interviewer-mask'] = true,
['isbn'] = true,
['ISBN'] = true,
['ismn'] = true,
['ISMN'] = true,
['issn'] = true,
['ISSN'] = true,
['issue'] = true,
['jfm'] = true,
['JFM'] = true,
['journal'] = true,
['jstor'] = true,
['JSTOR'] = true,
['jstor-access'] = true,
['lang'] = true,
['language'] = true,
['last'] = true,
['lccn'] = true,
['LCCN'] = true,
['location'] = true,
['magazine'] = true,
['medium'] = true,
['medrxiv'] = true, -- cite medrxiv; here because allowed in cite ... as identifier
['minutes'] = true, -- constrain to cite AV media and podcast?
['mode'] = true,
['mr'] = true,
['MR'] = true,
['name-list-style'] = true,
['newspaper'] = true,
['no-pp'] = true,
['no-tracking'] = true,
['number'] = true,
['oclc'] = true,
['OCLC'] = true,
['ol'] = true,
['OL'] = true,
['ol-access'] = true,
['orig-date'] = true,
['origyear'] = true,
['orig-year'] = true,
['osti'] = true,
['OSTI'] = true,
['osti-access'] = true,
['others'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['people'] = true,
['periodical'] = true,
['place'] = true,
['pmc'] = true,
['PMC'] = true,
['pmc-embargo-date'] = true,
['pmid'] = true,
['PMID'] = true,
['postscript'] = true,
['pp'] = true,
['publication-date'] = true,
['publication-place'] = true,
['publisher'] = true,
['quotation'] = true,
['quote'] = true,
['quote-page'] = true,
['quote-pages'] = true,
['ref'] = true,
['rfc'] = true,
['RFC'] = true,
['sbn'] = true,
['SBN'] = true,
['scale'] = true,
['script-article'] = true,
['script-chapter'] = true,
['script-contribution'] = true,
['script-entry'] = true,
['script-journal'] = true,
['script-magazine'] = true,
['script-newspaper'] = true,
['script-periodical'] = true,
['script-quote'] = true,
['script-section'] = true,
['script-title'] = true,
['script-website'] = true,
['script-work'] = true,
['section'] = true,
['section-format'] = true,
['section-url'] = true,
['section-url-access'] = true,
['series'] = true,
['ssrn'] = true, -- cite ssrn; these three here because allowed in cite ... as identifier
['SSRN'] = true,
['ssrn-access'] = true,
['subject'] = true,
['subject-first'] = true,
['subject-given'] = true,
['subject-last'] = true,
['subject-link'] = true,
['subject-mask'] = true,
['subject-surname'] = true,
['surname'] = true,
['s2cid'] = true,
['S2CID'] = true,
['s2cid-access'] = true,
['template-doc-demo'] = true,
['time'] = true, -- constrain to cite av media and podcast?
['time-caption'] = true, -- constrain to cite av media and podcast?
['title'] = true,
['title-link'] = true,
['title-note'] = true,
['translator'] = true,
['translator-first'] = true,
['translator-given'] = true,
['translator-last'] = true,
['translator-surname'] = true,
['translator-link'] = true,
['translator-mask'] = true,
['trans-article'] = true,
['trans-chapter'] = true,
['trans-contribution'] = true,
['trans-entry'] = true,
['trans-journal'] = true,
['trans-magazine'] = true,
['trans-newspaper'] = true,
['trans-periodical'] = true,
['trans-quote'] = true,
['trans-section'] = true,
['trans-title'] = true,
['trans-website'] = true,
['trans-work'] = true,
['type'] = true,
['url'] = true,
['URL'] = true,
['url-access'] = true,
['url-status'] = true,
['vauthors'] = true,
['veditors'] = true,
['version'] = true,
['via'] = true,
['volume'] = true,
['website'] = true,
['work'] = true,
['year'] = true,
['zbl'] = true,
['ZBL'] = true,
}
local numbered_arguments_t = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['contributor#'] = true,
['contributor-first#'] = true,
['contributor#-first'] = true,
['contributor-given#'] = true,
['contributor#-given'] = true,
['contributor-last#'] = true,
['contributor#-last'] = true,
['contributor-surname#'] = true,
['contributor#-surname'] = true,
['contributor-link#'] = true,
['contributor#-link'] = true,
['contributor-mask#'] = true,
['contributor#-mask'] = true,
['editor#'] = true,
['editor-first#'] = true,
['editor#-first'] = true,
['editor-given#'] = true,
['editor#-given'] = true,
['editor-last#'] = true,
['editor#-last'] = true,
['editor-surname#'] = true,
['editor#-surname'] = true,
['editor-link#'] = true,
['editor#-link'] = true,
['editor-mask#'] = true,
['editor#-mask'] = true,
['first#'] = true,
['given#'] = true,
['host#'] = true,
['interviewer#'] = true,
['interviewer-first#'] = true,
['interviewer#-first'] = true,
['interviewer-given#'] = true,
['interviewer#-given'] = true,
['interviewer-last#'] = true,
['interviewer#-last'] = true,
['interviewer-surname#'] = true,
['interviewer#-surname'] = true,
['interviewer-link#'] = true,
['interviewer#-link'] = true,
['interviewer-mask#'] = true,
['interviewer#-mask'] = true,
['last#'] = true,
['subject#'] = true,
['subject-first#'] = true,
['subject#-first'] = true,
['subject-given#'] = true,
['subject#-given'] = true,
['subject-last#'] = true,
['subject#-last'] = true,
['subject-link#'] = true,
['subject#-link'] = true,
['subject-mask#'] = true,
['subject#-mask'] = true,
['subject-surname#'] = true,
['subject#-surname'] = true,
['surname#'] = true,
['translator#'] = true,
['translator-first#'] = true,
['translator#-first'] = true,
['translator-given#'] = true,
['translator#-given'] = true,
['translator-last#'] = true,
['translator#-last'] = true,
['translator-surname#'] = true,
['translator#-surname'] = true,
['translator-link#'] = true,
['translator#-link'] = true,
['translator-mask#'] = true,
['translator#-mask'] = true,
}
--[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >--------------------
Cite arXiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn are preprint templates that use the limited
set of parameters defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are
supplemented with a template-specific list of parameters that are required by the particular template and may be
exclusive to one of the preprint templates. Some of these parameters may also be available to the general cs1|2
templates.
Same conventions for true/false/tracked/nil as above.
]]
local preprint_arguments_t = {
arxiv = {
['arxiv'] = true, -- cite arxiv and arxiv identifiers
['class'] = true,
['eprint'] = true, -- cite arxiv and arxiv identifiers
},
biorxiv = {
['biorxiv'] = true,
},
citeseerx = {
['citeseerx'] = true,
},
medrxiv = {
['medrxiv'] = true,
},
ssrn = {
['ssrn'] = true,
['SSRN'] = true,
['ssrn-access'] = true,
},
}
--[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >----------------------
cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, and cite ssrn templates are preprint templates so are
allowed only a limited subset of parameters allowed to all other cs1|2 templates. The limited subset is defined
here.
This list of parameters also used by {{cite document}}
Same conventions for true/false/tracked/nil as above.
]]
local limited_basic_arguments_t = {
['at'] = true,
['author'] = true,
['author-first'] = true,
['author-given'] = true,
['author-last'] = true,
['author-surname'] = true,
['author-link'] = true,
['authorlink'] = true,
['author-mask'] = true,
['authors'] = true,
['collaboration'] = true,
['date'] = true,
['df'] = true,
['display-authors'] = true,
['first'] = true,
['given'] = true,
['language'] = true,
['last'] = true,
['mode'] = true,
['name-list-style'] = true,
['no-tracking'] = true,
['p'] = true,
['page'] = true,
['pages'] = true,
['postscript'] = true,
['pp'] = true,
['quotation'] = true,
['quote'] = true,
['ref'] = true,
['surname'] = true,
['template-doc-demo'] = true,
['title'] = true,
['trans-title'] = true,
['vauthors'] = true,
['year'] = true,
}
local limited_numbered_arguments_t = {
['author#'] = true,
['author-first#'] = true,
['author#-first'] = true,
['author-given#'] = true,
['author#-given'] = true,
['author-last#'] = true,
['author#-last'] = true,
['author-surname#'] = true,
['author#-surname'] = true,
['author-link#'] = true,
['author#-link'] = true,
['authorlink#'] = true,
['author#link'] = true,
['author-mask#'] = true,
['author#-mask'] = true,
['first#'] = true,
['given#'] = true,
['last#'] = true,
['surname#'] = true,
}
--[[--------------------------< U N I Q U E _ A R G U M E N T S >----------------------------------------------
Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this
table are the template's CitationClass parameter value
Same conventions for true/false/tracked/nil as above.
]]
local unique_arguments_t = {
['audio-visual'] = {
['transcript'] = true,
['transcript-format'] = true,
['transcript-url'] = true,
},
conference = {
['book-title'] = true,
['conference'] = true,
['conference-format'] = true,
['conference-url'] = true,
['event'] = true,
},
episode = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episode-link'] = true, -- alias of |title-link=
['network'] = true,
['season'] = true,
['series-link'] = true,
['series-no'] = true,
['series-number'] = true,
['station'] = true,
['transcript'] = true,
['transcript-format'] = true,
['transcript-url'] = true,
},
mailinglist = {
['mailing-list'] = true,
},
map = {
['cartography'] = true,
['inset'] = true,
['map'] = true,
['map-format'] = true,
['map-url'] = true,
['map-url-access'] = true,
['script-map'] = true,
['sections'] = true,
['sheet'] = true,
['sheets'] = true,
['trans-map'] = true,
},
newsgroup = {
['message-id'] = true,
['newsgroup'] = true,
},
report = {
['docket'] = true,
},
serial = {
['airdate'] = true,
['air-date'] = true,
['credits'] = true,
['episode'] = true, -- cite serial only TODO: make available to cite episode?
['episode-link'] = true, -- alias of |title-link=
['network'] = true,
['series-link'] = true,
['station'] = true,
},
speech = {
['conference'] = true,
['conference-format'] = true,
['conference-url'] = true,
['event'] = true,
},
thesis = {
['degree'] = true,
['docket'] = true,
},
}
--[[--------------------------< C I T E _ D O C U M E N T >----------------------------------------------------
Special case for cite document. This template takes the limited basic and limited enumerated parameters plus
others that are apply only to standalone published sources that cannot be cited any other way; no url, book,
periodical, etc parameters; limited support for name lists and named identifiers.
when validating parameters in {{cite document}} templates, the basic and
]]
local document_arguments_t = {
['bibcode'] = true,
['bibcode-access'] = true,
['doi'] = true,
['DOI'] = true,
['doi-access'] = true,
['doi-broken-date'] = true,
['hdl'] = true,
['HDL'] = true,
['hdl-access'] = true,
['id'] = true,
['ID'] = true,
['jfm'] = true,
['JFM'] = true,
['lang'] = true,
['location'] = true,
['mr'] = true,
['MR'] = true,
['no-pp'] = true,
['orig-date'] = true,
['origyear'] = true,
['orig-year'] = true,
['osti'] = true,
['OSTI'] = true,
['osti-access'] = true,
['place'] = true,
['publisher'] = true,
['quote-page'] = true,
['quote-pages'] = true,
['script-quote'] = true,
['script-title'] = true,
['title-link'] = true,
['translator'] = true,
['translator-first'] = true,
['translator-given'] = true,
['translator-last'] = true,
['translator-surname'] = true,
['translator-link'] = true,
['translator-mask'] = true,
['trans-quote'] = true,
['type'] = true,
['zbl'] = true,
['ZBL'] = true,
}
local document_numbered_arguments_t = {
['translator#'] = true,
['translator-first#'] = true,
['translator#-first'] = true,
['translator-given#'] = true,
['translator#-given'] = true,
['translator-last#'] = true,
['translator#-last'] = true,
['translator-surname#'] = true,
['translator#-surname'] = true,
['translator-link#'] = true,
['translator#-link'] = true,
['translator-mask#'] = true,
['translator#-mask'] = true,
}
--[[--------------------------< L I S T _ C O M B I N E >------------------------------------------------------
makes one table from a list of tables. <lists_t> is a sequence of tables to be combined
]]
local function list_combine (lists_t)
local out_t = {};
for _, list_t in ipairs (lists_t) do -- for each list in <lists_t>
for k, v in pairs (list_t) do -- extract each k/v pair
out_t[k] = v; -- add to <out_t>
end
end
return out_t; -- and done
end
--[[--------------------------< T E M P L A T E _ L I S T _ G E T >--------------------------------------------
gets a list of the templates from table t
]]
local function template_list_get (t)
local out_t = {}; -- a table for output
for k, _ in pairs (t) do -- spin through the table and collect the keys
table.insert (out_t, k) -- add each key to the output table
end
return out_t; -- and done
end
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
preprint_arguments_t = preprint_arguments_t,
preprint_template_list_t = template_list_get (preprint_arguments_t), -- make a template list from preprint_arguments{} table
unique_arguments_t = unique_arguments_t,
unique_param_template_list_t = template_list_get (unique_arguments_t), -- make a template list from unique_arguments{} table
document_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t, document_arguments_t, document_numbered_arguments_t});
common_parameters_t = list_combine ({basic_arguments_t, numbered_arguments_t});
limited_parameters_t = list_combine ({limited_basic_arguments_t, limited_numbered_arguments_t});
};
bd347271e3380cb17f22c0e3924982798e9adc07
Template:'
10
887
1965
1964
2023-10-01T10:43:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:']]
wikitext
text/x-wiki
#REDIRECT [[Template:Apostrophe]]
{{Redirect category shell|
{{R from move}}
}}
eec747ee088b154d601ca1ea8201cf3e92fc33c4
Template:Apostrophe
10
888
1967
1966
2023-10-01T10:43:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Apostrophe]]
wikitext
text/x-wiki
<span class="nowrap" style="padding-left:0.1em;">'</span><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage and interwikis go on Wikidata. -->
</noinclude>
7ffcfc167bac0db92bf907ef65b839f48971bdb4
Module:Citation/CS1/Whitelist/doc
828
889
1969
1968
2023-10-01T10:43:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Whitelist/doc]]
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This module contains a list of all parameters that [[Module:Citation/CS1]] knows about. Each parameter is assigned a state.
* '''true''': These parameters are valid and supported parameters
* '''false''': These parameters are deprecated but still supported
* '''{{'}}tracked{{'}}''': These parameters are valid and supported parameters tracked in an eponymous properties category.
* '''nil''': Parameters not present are not supported, or no longer supported.
The <code>basic_arguments</code> table is supported by all templates.
{{#lst:Module:Citation/CS1/doc|module_components_table}}
f600e3ad575307e19afcbe7dc3e978954fa94a9f
Template:Sfnm
10
890
1971
1970
2023-10-01T10:44:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sfnm]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Footnotes|sfnm|template=sfnm}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
19c7cdc6dc3804ba6e3901ed90cd2817f9956898
Template:Cite journal
10
891
1973
1972
2023-10-01T10:44:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_journal]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Citation/CS1|citation
|CitationClass=journal
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
50b33a0bde8c0dc83f3753f7873bcb448b565944
Module:Citation/CS1/Utilities
828
892
1975
1974
2023-10-01T10:44:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Utilities]]
Scribunto
text/plain
local z = {
error_cats_t = {}; -- for categorizing citations that contain errors
error_ids_t = {}; -- list of error identifiers; used to prevent duplication of certain errors; local to this module
error_msgs_t = {}; -- sequence table of error messages
maint_cats_t = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work
prop_cats_t = {}; -- for categorizing citations based on certain properties, language of source for instance
prop_keys_t = {}; -- for adding classes to the citation's <cite> tag
};
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set (var)
return not (var == nil or var == '');
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array (needle, haystack)
if needle == nil then
return false;
end
for n, v in ipairs (haystack) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------
When <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else
with allow_empty = false, <str> must have at least one character inside the markup
with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context.
After further evaluation the two cases might be merged at a later stage, but should be kept separated for now.
]]
local function has_accept_as_written (str, allow_empty)
if not is_set (str) then
return str, false;
end
local count;
if true == allow_empty then
str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set
else
str, count = str:gsub ('^%(%((.+)%)%)$', '%1');
end
return str, 0 ~= count;
end
--[[--------------------------< S U B S T I T U T E >----------------------------------------------------------
Populates numbered arguments in a message string using an argument table. <args> may be a single string or a
sequence table of multiple strings.
]]
local function substitute (msg, args)
return args and mw.message.newRawMessage (msg, args):plain() or msg;
end
--[[--------------------------< E R R O R _ C O M M E N T >----------------------------------------------------
Wraps error messages with CSS markup according to the state of hidden. <content> may be a single string or a
sequence table of multiple strings.
]]
local function error_comment (content, hidden)
return substitute (hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content);
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
]]
local function hyphen_to_dash (str)
if not is_set (str) then
return str;
end
local accept; -- boolean
str = str:gsub ("(%(%(.-%)%))", function(m) return m:gsub(",", ","):gsub(";", ";") end) -- replace commas and semicolons in accept-as-written markup with similar unicode characters so they'll be ignored during the split
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-'); -- replace HTML numeric entity with hyphen character
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
item, accept = has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item
if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
table.insert (out, item); -- add the (possibly modified) item to the output table
end
local temp_str = ''; -- concatenate the output table into a comma separated string
temp_str, accept = has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out
if accept then
temp_str = has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value
return temp_str:gsub(",", ","):gsub(";", ";");
else
return temp_str:gsub(",", ","):gsub(";", ";"); -- else, return assembled temp_str
end
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided (or link and display are the same), returns a wikilink in the form [[L]]; if neither are
provided or link is omitted, returns an empty string.
]=]
local function make_wikilink (link, display)
if not is_set (link) then return '' end
if is_set (display) and link ~= display then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
end
--[[--------------------------< S E T _ M E S S A G E >----------------------------------------------------------
Sets an error message using the ~/Configuration error_conditions{} table along with arguments supplied in the function
call, inserts the resulting message in z.error_msgs_t{} sequence table, and returns the error message.
<error_id> – key value for appropriate error handler in ~/Configuration error_conditions{} table
<arguments> – may be a single string or a sequence table of multiple strings to be subsititued into error_conditions[error_id].message
<raw> – boolean
true – causes this function to return the error message not wrapped in visible-error, hidden-error span tag;
returns error_conditions[error_id].hidden as a second return value
does not add message to z.error_msgs_t sequence table
false, nil – adds message wrapped in visible-error, hidden-error span tag to z.error_msgs_t
returns the error message wrapped in visible-error, hidden-error span tag; there is no second return value
<prefix> – string to be prepended to <message> -- TODO: remove support for these unused(?) arguments?
<suffix> – string to be appended to <message>
TODO: change z.error_cats_t and z.maint_cats_t to have the form cat_name = true? this to avoid dups without having to have an extra table
]]
local added_maint_cats = {} -- list of maintenance categories that have been added to z.maint_cats_t; TODO: figure out how to delete this table
local function set_message (error_id, arguments, raw, prefix, suffix)
local error_state = cfg.error_conditions[error_id];
prefix = prefix or '';
suffix = suffix or '';
if error_state == nil then
error (cfg.messages['undefined_error'] .. ': ' .. error_id); -- because missing error handler in Module:Citation/CS1/Configuration
elseif is_set (error_state.category) then
if error_state.message then -- when error_state.message defined, this is an error message
table.insert (z.error_cats_t, error_state.category);
else
if not added_maint_cats[error_id] then
added_maint_cats[error_id] = true; -- note that we've added this category
table.insert (z.maint_cats_t, substitute (error_state.category, arguments)); -- make cat name then add to table
end
return; -- because no message, nothing more to do
end
end
local message = substitute (error_state.message, arguments);
message = table.concat (
{
message,
' (',
make_wikilink (
table.concat (
{
cfg.messages['help page link'],
'#',
error_state.anchor
}),
cfg.messages['help page label']),
')'
});
z.error_ids_t[error_id] = true;
if z.error_ids_t['err_citation_missing_title'] and -- if missing-title error already noted
in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these
return '', false; -- don't bother because one flavor of missing title is sufficient
end
message = table.concat ({prefix, message, suffix});
if true == raw then
return message, error_state.hidden; -- return message not wrapped in visible-error, hidden-error span tag
end
message = error_comment (message, error_state.hidden); -- wrap message in visible-error, hidden-error span tag
table.insert (z.error_msgs_t, message); -- add it to the messages sequence table
return message; -- and done; return value generally not used but is used as a flag in various functions of ~/Identifiers
end
--[[-------------------------< I S _ A L I A S _ U S E D >-----------------------------------------------------
This function is used by select_one() to determine if one of a list of alias parameters is in the argument list
provided by the template.
Input:
args – pointer to the arguments table from calling template
alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration
index – for enumerated parameters, identifies which one
enumerated – true/false flag used to choose how enumerated aliases are examined
value – value associated with an alias that has previously been selected; nil if not yet selected
selected – the alias that has previously been selected; nil if not yet selected
error_list – list of aliases that are duplicates of the alias already selected
Returns:
value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected
selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected
]]
local function is_alias_used (args, alias, index, enumerated, value, selected, error_list)
if enumerated then -- is this a test for an enumerated parameters?
alias = alias:gsub ('#', index); -- replace '#' with the value in index
else
alias = alias:gsub ('#', ''); -- remove '#' if it exists
end
if is_set (args[alias]) then -- alias is in the template's argument list
if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases
local skip;
for _, v in ipairs (error_list) do -- spin through the error list to see if we've added this alias
if v == alias then
skip = true;
break; -- has been added so stop looking
end
end
if not skip then -- has not been added so
table.insert (error_list, alias); -- add error alias to the error list
end
else
value = args[alias]; -- not yet selected an alias, so select this one
selected = alias;
end
end
return value, selected; -- return newly selected alias, or previously selected alias
end
--[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------
Adds a category to z.maint_cats_t using names from the configuration file with additional text if any.
To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maint_cats_t.
]]
local function add_maint_cat (key, arguments)
if not added_maint_cats [key] then
added_maint_cats [key] = true; -- note that we've added this category
table.insert (z.maint_cats_t, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table
end
end
--[[--------------------------< A D D _ P R O P _ C A T >--------------------------------------------------------
Adds a category to z.prop_cats_t using names from the configuration file with additional text if any.
foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages
may be categorized but multiples of the same language are not categorized.
added_prop_cats is a table declared in page scope variables above
]]
local added_prop_cats = {}; -- list of property categories that have been added to z.prop_cats_t
local function add_prop_cat (key, arguments, key_modifier)
local key_modified = key .. ((key_modifier and key_modifier) or ''); -- modify <key> with <key_modifier> if present and not nil
if not added_prop_cats [key_modified] then
added_prop_cats [key_modified] = true; -- note that we've added this category
table.insert (z.prop_cats_t, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table
table.insert (z.prop_keys_t, 'cs1-prop-' .. key); -- convert key to class for use in the citation's <cite> tag
end
end
--[[--------------------------< S A F E _ F O R _ I T A L I C S >----------------------------------------------
Protects a string that will be wrapped in wiki italic markup '' ... ''
Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that
they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact
poorly under Mediawiki's HTML tidy.
]]
local function safe_for_italics (str)
if not is_set (str) then return str end
if str:sub (1, 1) == "'" then str = "<span></span>" .. str; end
if str:sub (-1, -1) == "'" then str = str .. "<span></span>"; end
return str:gsub ('\n', ' '); -- Remove newlines as they break italics.
end
--[[--------------------------< W R A P _ S T Y L E >----------------------------------------------------------
Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one
argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason
this function is similar to but separate from wrap_msg().
]]
local function wrap_style (key, str)
if not is_set (str) then
return "";
elseif in_array (key, {'italic-title', 'trans-italic-title'}) then
str = safe_for_italics (str);
end
return substitute (cfg.presentation[key], {str});
end
--[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------
make a separated list of items using provided separators.
<sep_list> - typically '<comma><space>'
<sep_list_pair> - typically '<space>and<space>'
<sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>'
defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end']
if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied
]]
local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end)
local list = '';
if not sep_list then -- set the defaults
sep_list = cfg.presentation['sep_list'];
sep_list_pair = cfg.presentation['sep_list_pair'];
sep_list_end = cfg.presentation['sep_list_end'];
end
if 2 >= count then
list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item
elseif 2 < count then
list = table.concat (list_seq, sep_list, 1, count - 1); -- concatenate all but last item with plain list separator
list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator
end
return list;
end
--[[--------------------------< S E L E C T _ O N E >----------------------------------------------------------
Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just
names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified
by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'.
Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities.
Generates an error if more than one match is present.
]]
local function select_one (args, aliases_list, error_condition, index)
local value = nil; -- the value assigned to the selected parameter
local selected = ''; -- the name of the parameter we have chosen
local error_list = {};
if index ~= nil then index = tostring(index); end
for _, alias in ipairs (aliases_list) do -- for each alias in the aliases list
if alias:match ('#') then -- if this alias can be enumerated
if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias
end
value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias
else
value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- test for non-enumerated alias
end
end
if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names()
for i, v in ipairs (error_list) do
error_list[i] = wrap_style ('parameter', v);
end
table.insert (error_list, wrap_style ('parameter', selected));
set_message (error_condition, {make_sep_list (#error_list, error_list)});
end
return value, selected;
end
--[=[-------------------------< R E M O V E _ W I K I _ L I N K >----------------------------------------------
Gets the display text from a wikilink like [[A|B]] or [[B]] gives B
The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup).
In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label
if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match
in the initial gsub, the replacement function l() doesn't get called.
]=]
local function remove_wiki_link (str)
return (str:gsub ("%[%[([^%[%]]*)%]%]", function(l)
return l:gsub ("^[^|]*|(.*)$", "%1" ):gsub ("^%s*(.-)%s*$", "%1");
end));
end
--[=[-------------------------< I S _ W I K I L I N K >--------------------------------------------------------
Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts.
If str is a complex wikilink ([[L|D]]):
returns wl_type 2 and D and L from [[L|D]];
if str is a simple wikilink ([[D]])
returns wl_type 1 and D from [[D]] and L as empty string;
if not a wikilink:
returns wl_type 0, str as D, and L as empty string.
trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and
treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes).
]=]
local function is_wikilink (str)
local D, L
local wl_type = 2; -- assume that str is a complex wikilink [[L|D]]
if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content)
return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L
end
L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]]
if not is_set (D) then -- if no separate display
D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]]
wl_type = 1;
end
D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters
return wl_type, D, L or '';
end
--[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >--------------------------------
Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata.
This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to
markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind.
Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag
to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was
removed; returns the argument and nil when no markup removed
]]
local function strip_apostrophe_markup (argument)
if not is_set (argument) then
return argument, nil; -- no argument, nothing to do
end
if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit.
return argument, nil;
end
local flag;
while true do
if argument:find ("'''''", 1, true) then -- bold italic (5)
argument, flag = argument:gsub ("%'%'%'%'%'", ""); -- remove all instances of it
elseif argument:find ("''''", 1, true) then -- italic start and end without content (4)
argument, flag=argument:gsub ("%'%'%'%'", "");
elseif argument:find ("'''", 1, true) then -- bold (3)
argument, flag=argument:gsub ("%'%'%'", "");
elseif argument:find ("''", 1, true) then -- italic (2)
argument, flag = argument:gsub ("%'%'", "");
else
break;
end
end
return argument, flag; -- done
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr)
cfg = cfg_table_ptr;
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
add_maint_cat = add_maint_cat, -- exported functions
add_prop_cat = add_prop_cat,
error_comment = error_comment,
has_accept_as_written = has_accept_as_written,
hyphen_to_dash = hyphen_to_dash,
in_array = in_array,
is_set = is_set,
is_wikilink = is_wikilink,
make_sep_list = make_sep_list,
make_wikilink = make_wikilink,
remove_wiki_link = remove_wiki_link,
safe_for_italics = safe_for_italics,
select_one = select_one,
set_message = set_message,
set_selected_modules = set_selected_modules,
strip_apostrophe_markup = strip_apostrophe_markup,
substitute = substitute,
wrap_style = wrap_style,
z = z, -- exported table
}
b006801b48981b2987f20fc09cbe0dfda525e044
Module:Citation/CS1/Date validation
828
893
1977
1976
2023-10-01T10:44:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Date_validation]]
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local add_prop_cat, is_set, in_array, set_message, substitute, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities
local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration
--[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >--------------------------------
File-scope variables are declared here
]]
local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration?
local year_limit; -- used by is_valid_year()
--[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >----------------------------------------
returns true if:
Wikipedia start date <= accessdate < today + 2 days
Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time)
accessdate is the date provided in |access-date= at time 00:00:00 UTC
today is the current date at time 00:00:00 UTC plus 48 hours
if today is 2015-01-01T00:00:00 then
adding 24 hours gives 2015-01-02T00:00:00 – one second more than today
adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow
This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser
apparently doesn't understand non-English date month names. This function will always return false when the date
contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that
call this function with YYYY-MM-DD format dates.
]=]
local function is_valid_accessdate (accessdate)
local good1, good2;
local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates
good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand
access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix time stamp
end
if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date
return true;
else
return false; -- accessdate out of range
end
end
--[[--------------------------< G E T _ M O N T H _ N U M B E R >----------------------------------------------
returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct.
If not a valid month, returns 0
]]
local function get_month_number (month)
return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first
cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names
0; -- not a recognized month name
end
--[[--------------------------< G E T _ S E A S O N _ N U M B E R >--------------------------------------------
returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling
must be correct. If not a valid season, returns 0.
21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere”
returns 0 when <param> is not |date=
Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south
hemisphere seasons but cs1|2 has no way to make that distinction.
These additional divisions not currently supported:
25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere
29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_season_number (season, param)
if 'date' ~= param then
return 0; -- season dates only supported by |date=
end
return cfg.date_names['local'].season[season] or -- look for local names first
cfg.date_names['en'].season[season] or -- failing that, look for English names
0; -- not a recognized season name
end
--[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------
returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling
must be correct. If not a valid quarter, returns 0.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
returns 0 when <param> is not |date=
Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using
numbers 21-41. cs1|2 only supports generic seasons and quarters.
These additional divisions not currently supported:
37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each)
40-41 = Semestral 1, Semestral-2 (6 months each)
]]
local function get_quarter_number (quarter, param)
if 'date' ~= param then
return 0; -- quarter dates only supported by |date=
end
quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char
return cfg.date_names['local'].quarter[quarter] or -- look for local names first
cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names
0; -- not a recognized quarter name
end
--[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >----------------------------------
returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct.
returns 0 when <param> is not |date=
]]
local function get_proper_name_number (name, param)
if 'date' ~= param then
return 0; -- proper-name dates only supported by |date=
end
return cfg.date_names['local'].named[name] or -- look for local names dates first
cfg.date_names['en'].named[name] or -- failing that, look for English names
0; -- not a recognized named date
end
--[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------
returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated)
]]
local function get_element_number (element, param)
local num;
local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order
for _, func in ipairs (funcs) do -- spin through the function list
num = func (element, param); -- call the function and get the returned number
if 0 ~= num then -- non-zero when valid month season quarter
return num; -- return that number
end
end
return nil; -- not valid
end
--[[--------------------------< I S _ V A L I D _ Y E A R >----------------------------------------------------
Function gets current year from the server and compares it to year from a citation parameter. Years more than one
year in the future are not acceptable.
Special case for |pmc-embargo-date=: years more than two years in the future are not acceptable
]]
local function is_valid_year (year, param)
if not is_set (year_limit) then
year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once
end
year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to number for the comparison
if year and (100 > year) then -- years less than 100 not supported
return false;
end
if 'pmc-embargo-date' == param then -- special case for |pmc-embargo-date=
return year and (year <= tonumber(os.date("%Y"))+2) or false; -- years more than two years in the future are not accepted
end
return year and (year <= year_limit) or false;
end
--[[--------------------------< I S _ V A L I D _ D A T E >----------------------------------------------------
Returns true if day is less than or equal to the number of days in month and year is no farther into the future
than next year; else returns false.
Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap
years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately
1923) dates are assumed to be Gregorian.
]]
local function is_valid_date (year, month, day, param)
local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
local month_length;
if not is_valid_year (year, param) then -- no farther into the future than next year except |pmc-embargo-date= no more than two years in the future
return false;
end
month = tonumber (month); -- required for YYYY-MM-DD dates
if (2 == month) then -- if February
month_length = 28; -- then 28 days unless
if 1582 > tonumber(year) then -- Julian calendar
if 0 == (year%4) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
else -- Gregorian calendar
if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year?
month_length = 29; -- if leap year then 29 days in February
end
end
else
month_length = days_in_month[month];
end
if tonumber (day) > month_length then
return false;
end
return true;
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >--------------------------
Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August.
This function looks in cfg.date_names{} to see if both month names are listed in the long subtable or both are
listed in the short subtable. When both have the same style (both are listed in the same table), returns true; false else
]]
local function is_valid_month_range_style (month1, month2)
if (cfg.date_names.en.long[month1] and cfg.date_names.en.long[month2]) or -- are both English names listed in the long subtable?
(cfg.date_names.en.short[month1] and cfg.date_names.en.short[month2]) or -- are both English names listed in the short subtable?
(cfg.date_names['local'].long[month1] and cfg.date_names['local'].long[month2]) or -- are both local names listed in the long subtable?
(cfg.date_names['local'].short[month1] and cfg.date_names['local'].short[month2]) then -- are both local names listed in the short subtable?
return true;
end
return false; -- names are mixed
end
--[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------
Check a pair of months or seasons to see if both are valid members of a month or season pair.
Month pairs are expected to be left to right, earliest to latest in time.
All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok
]]
local function is_valid_month_season_range(range_start, range_end, param)
local range_start_number = get_month_number (range_start);
local range_end_number;
if 0 == range_start_number then -- is this a month range?
range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number
range_end_number = get_season_number (range_end, param); -- get end season number
if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then
return true; -- any season pairing is accepted except when both are the same
end
return false; -- range_start and/or range_end is not a season
end
-- here when range_start is a month
range_end_number = get_month_number (range_end); -- get end month number
if range_start_number < range_end_number and -- range_start is a month; does range_start precede range_end?
is_valid_month_range_style (range_start, range_end) then -- do months have the same style?
return true; -- proper order and same style
end
return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month
end
--[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------
This function receives a table of date parts for one or two dates and an empty table reference declared in
Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is
determined to be a valid date format. The question of what to do with invalid date formats is not answered here.
The date parts in the input table are converted to an ISO 8601 conforming date string:
single whole dates: yyyy-mm-dd
month and year dates: yyyy-mm
year dates: yyyy
ranges: yyyy-mm-dd/yyyy-mm-dd
yyyy-mm/yyyy-mm
yyyy/yyyy
Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from
Julian to Proleptic Gregorian.
The input table has:
year, year2 – always present; if before 1582, ignore months and days if present
month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas
day, day2 – 0 if not provided, 1-31 for days
the output table receives:
rftdate: an ISO 8601 formatted date
rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates)
rftssn: one of four season keywords: winter, spring, summer, fall (lowercase)
rftquarter: one of four values: 1, 2, 3, 4
]]
local function make_COinS_date (input, tCOinS_date)
local date; -- one date or first date in a range
local date2 = ''; -- end of range date
input.year = tonumber (input.year) or lang_object:parseFormattedNumber (input.year); -- language-aware tonumber()
input.year2 = tonumber (input.year2) or lang_object:parseFormattedNumber (input.year2); -- COinS dates are pseudo-ISO 8601 so convert to Arabic numerals
-- start temporary Julian / Gregorian calendar uncertainty detection
local year = input.year; -- this temporary code to determine the extent of sources dated to the Julian/Gregorian
local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926
local day = tonumber (input.day);
if (0 ~= day) and -- day must have a value for this to be a whole date
(((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or
((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or
((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925
tCOinS_date.inter_cal_cat = true; -- set category flag true
end
-- end temporary Julian / Gregorian calendar uncertainty detection
if ((1582 == year) and (10 > month)) or (1582 > year) then -- if a Julian calendar date
tCOinS_date.rftdate = tostring (input.year); -- &rft.date gets year only
return; -- done
end
-- here for all forms of Gregorian dates
if 20 < tonumber (input.month) then -- if season, quarter, or proper-name date
date = input.year; -- &rft.date gets year only
if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year
date = string.format ('%.4d/%.4d', input.year, input.year2) -- assemble the date range
end
local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case
if 0 == input.month2 then -- single season, quarter, or proper-name date
if 40 < tonumber(input.month) then
tCOinS_date.rftchron = season[input.month]; -- proper-name date; used in journal metadata only
elseif 30 < tonumber(input.month) then
tCOinS_date.rftquarter = season[input.month]; -- quarter date; used in journal metadata only
else
tCOinS_date.rftssn = season[input.month]; -- season date; used in journal metadata only
end
else -- season ranges are lumped into &rft.chron; &rft.ssn and &rft.quarter are left blank
if input.year ~= input.year2 then -- season year – season year range or season year–year
if 0 ~= input.month2 then
tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); -- used in journal metadata only
end
else -- season–season year range
tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range; used in journal metadata only
end
end
tCOinS_date.rftdate = tostring (date);
return; -- done
end
-- here for gregorian calendar dates
if 0 ~= input.day then
date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date
elseif 0 ~= input.month then
date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month
else
date = string.format ('%s', input.year); -- just year
end
if 0 ~= input.year2 then
if 0 ~= input.day2 then
date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date
elseif 0 ~= input.month2 then
date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month
else
date2 = string.format ('/%s', input.year2); -- just year
end
end
tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator
return;
end
--[[--------------------------< P A T T E R N S >--------------------------------------------------------------
this is the list of patterns for date formats that this module recognizes. Approximately the first half of these
patterns represent formats that might be reformatted into another format. Those that might be reformatted have
'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year),
'y' (year); second day, month, year have a '2' suffix.
These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration
because changes to this table require changes to check_date() and to reformatter() and reformat_date()
]]
local patterns = {
-- year-initial numerical year-month-day
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'},
-- month-initial: month day, year
['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'},
-- month-initial day range: month day–day, year; days are separated by endash
['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'},
-- day-initial: day month year
['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'},
-- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki
-- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'},
-- day-range-initial: day–day month year; days are separated by endash
['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'},
-- day initial month-day-range: day month - day month year; uses spaced endash
['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'},
-- month initial month-day-range: month day – month day, year; uses spaced endash
['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'},
-- day initial month-day-year-range: day month year - day month year; uses spaced endash
['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'},
-- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'},
-- these date formats cannot be converted, per se, but month name can be rendered short or long
-- month/season year - month/season year; separated by spaced endash
['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'},
-- month/season range year; months separated by endash
['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'},
-- month/season year or proper-name year; quarter year when First Quarter YYYY etc.
['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't
-- these date formats cannot be converted
['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash
['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash
['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY
}
--[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------
returns true and date value if that value has proper dmy, mdy, ymd format.
returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is
set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date.
]]
local function is_valid_embargo_date (v)
if v:match (patterns['ymd'][1]) or -- ymd
v:match (patterns['Mdy'][1]) or -- dmy
v:match (patterns['dMy'][1]) then -- mdy
return true, v;
end
return false, '9999'; -- if here not good date so return false and set embargo date to long time in future
end
--[[--------------------------< C H E C K _ D A T E >----------------------------------------------------------
Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only
allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day
months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons
must be spelled correctly. Future years beyond next year are not allowed.
If the date fails the format tests, this function returns false and does not return values for anchor_year and
COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets
its year from the year parameter if present otherwise CITEREF does not get a date value.
Inputs:
date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date)
Returns:
false if date string is not a real date; else
true, anchor_year, COinS_date
anchor_year can be used in CITEREF anchors
COinS_date is ISO 8601 format date; see make_COInS_date()
]]
local function check_date (date_string, param, tCOinS_date)
local year; -- assume that year2, months, and days are not used;
local year2 = 0; -- second year in a year range
local month = 0;
local month2 = 0; -- second month in a month range
local day = 0;
local day2 = 0; -- second day in a day range
local anchor_year;
local coins_date;
if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format
year, month, day = date_string:match (patterns['ymd'][1]);
if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar
anchor_year = year;
elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year
month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash
month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2=month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year
day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
--[[ NOT supported at en.wiki
elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed
anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]);
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
-- end NOT supported at en.wiki ]]
elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash
day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]);
if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same;
month = get_month_number (month);
if 0 == month then return false; end -- return false if month text isn't one of the twelve months
month2 = month; -- for metadata
year2 = year;
elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash
day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]);
if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later;
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash
month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]);
if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
year2 = year;
elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash
day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number (month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash
month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]);
if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style
month = get_month_number (month); -- for metadata
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end -- both must be valid
elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash
local century;
month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]);
if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
year2 = century..year2; -- add the century to year2 for comparisons
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
month = get_season_number(month, param);
elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash
month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]);
month = get_season_number (month, param); -- <month> can only be winter or summer; also for metadata
if (month ~= cfg.date_names['en'].season['Winter']) and (month ~= cfg.date_names['en'].season['Summer']) then
return false; -- not Summer or Winter; abandon
end
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash
month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style
month = get_month_number(month);
month2 = get_month_number(month2);
elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
else
return false;
end
elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash
month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]);
if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end
if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season
month = get_month_number(month);
month2 = get_month_number(month2);
if 0 == month or 0 == month2 then return false; end
else
month = get_season_number(month, param);
month2 = get_season_number(month2, param);
end
year2 = year;
elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year
month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]);
if not is_valid_year(year) then return false; end
month = get_element_number(month, param); -- get month season quarter proper-name number or nil
if not month then return false; end -- not valid whatever it is
elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999
year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash
local century;
year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]);
anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years
if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003
year2 = century .. year2; -- add the century to year2 for comparisons
if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same
if not is_valid_year(year2) then return false; end -- no year farther in the future than next year
if in_array (param, {'date', 'publication-date', 'year'}) then -- here when 'valid' abbreviated year range; if one of these parameters
add_prop_cat ('year-range-abbreviated'); -- add properties cat
end
elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY
anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]);
if false == is_valid_year(year) then
return false;
end
else
return false; -- date format not one of the MOS:DATE approved formats
end
if param ~= 'date' then -- CITEREF disambiguation only allowed in |date=; |year= & |publication-date= promote to date
if anchor_year:match ('%l$') then
return false;
end
end
if 'access-date' == param then -- test access-date here because we have numerical date parts
if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required
0 == year2 and 0 == month2 and 0 == day2 then -- none of these; access-date must not be a range
if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then
return false; -- return false when access-date out of bounds
end
else
return false; -- return false when access-date is a range of two dates
end
end
if 'archive-date' == param then -- test archive-date here because we have numerical date parts
if not (0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required
0 == year2 and 0 == month2 and 0 == day2) then -- none of these; archive-date must not be a range
return false; -- return false when archive-date is a range of two dates
end
end
local result=true; -- check whole dates for validity; assume true because not all dates will go through this test
if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date)
result = is_valid_date (year, month, day, param); -- <param> for |pmc-embargo-date=
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range)
result = is_valid_date (year, month, day);
result = result and is_valid_date (year, month, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range)
result = is_valid_date (year, month, day);
result = result and is_valid_date (year, month2, day2);
elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range)
result = is_valid_date(year, month, day);
result = result and is_valid_date(year2, month2, day2);
end
if false == result then return false; end
if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values
make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS
end
return true, anchor_year; -- format is good and date string represents a real date
end
--[[--------------------------< D A T E S >--------------------------------------------------------------------
Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns
true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in
the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes).
Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially,
parameters with errors are added to the <error_list> sequence table as the dates are tested.
]]
local function dates(date_parameters_list, tCOinS_date, error_list)
local anchor_year; -- will return as nil if the date being tested is not |date=
local COinS_date; -- will return as nil if the date being tested is not |date=
local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999
local good_date = false;
for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(v.val) then -- if the parameter has a value
v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year=
local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested
if 'date' == k then
anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter
good_date = is_valid_year(year);
elseif 'year' == k then
good_date = is_valid_year(year);
end
elseif 'date' == k then -- if the parameter is |date=
if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date
elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date
else
good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date
end
elseif 'year' == k then -- if the parameter is |year= it should hold only a year value
if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator
good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)");
end
elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date=
good_date = check_date (v.val, k); -- go test the date
if true == good_date then -- if the date is a valid date
good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo date; no: returns 9999
end
else -- any other date-holding parameter
good_date = check_date (v.val, k); -- go test the date
end
if false == good_date then -- assemble one error message so we don't add the tracking category multiple times
table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list
end
end
end
return anchor_year, embargo_date; -- and done
end
--[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------
Compare the value provided in |year= with the year value(s) provided in |date=. This function sets a local numeric value:
0 - year value does not match the year value in date
1 - (default) year value matches the year value in date or one of the year values when date contains two years
2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx)
the numeric value in <result> determines the 'output' if any from this function:
0 – adds error message to error_list sequence table
1 – adds maint cat
2 – does nothing
]]
local function year_date_check (year_string, year_origin, date_string, date_origin, error_list)
local year;
local date1;
local date2;
local result = 1; -- result of the test; assume that the test passes
year = year_string:match ('(%d%d%d%d?)');
if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx
date1 = date_string:match ('(%d%d%d%d)');
year = year_string:match ('(%d%d%d%d)');
if year ~= date1 then
result = 0; -- years don't match
else
result = 2; -- years match; but because disambiguated, don't add to maint cat
end
elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years
date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)");
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges
local century;
date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)");
date2 = century..date2; -- convert YY to YYYY
if year ~= date1 and year ~= date2 then
result = 0;
end
elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year
date1 = date_string:match ("(%d%d%d%d?)");
if year ~= date1 then
result = 0;
end
else -- should never get here; this function called only when no other date errors
result = 0; -- no recognizable year in date
end
if 0 == result then -- year / date mismatch
table.insert (error_list, substitute (cfg.messages['mismatch'], {year_origin, date_origin})); -- add error message to error_list sequence table
elseif 1 == result then -- redundant year / date
set_message ('maint_date_year'); -- add a maint cat
end
end
--[[--------------------------< R E F O R M A T T E R >--------------------------------------------------------
reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be
reformatted. Does the grunt work for reformat_dates().
The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds:
format string used by string.format()
identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures
from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1]
Items in patterns{} have the general form:
['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where:
['ymd'] is pattern_idx
patterns['ymd'][1] is the match pattern with captures for mw.ustring.match()
patterns['ymd'][2] is an indicator letter identifying the content of the first capture
patterns['ymd'][3] ... the second capture etc.
when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier
characters as indexes into t{} For the above, a ymd date is in t{} as:
t.y = first capture (year), t.m = second capture (month), t.d = third capture (day)
To reformat, this function is called with the pattern_idx that matches the current format of the date and with
format_param set to the desired format. This function loads table t{} as described and then calls string.format()
with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according
to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2..
]]
local re_formats = {
['ymd'] = { -- date format is ymd; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Mdy'] = { -- date format is Mdy; reformat to:
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['dMy'] = { -- date format is dMy; reformat to:
['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki
},
['Md-dy'] = { -- date format is Md-dy; reformat to:
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy
},
['d-dMy'] = { -- date format is d-d>y; reformat to:
['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy
},
['dM-dMy'] = { -- date format is dM-dMy; reformat to:
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy
},
['Md-Mdy'] = { -- date format is Md-Mdy; reformat to:
['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting
['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy
},
['dMy-dMy'] = { -- date format is dMy-dMy; reformat to:
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy
},
['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to:
['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting
['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy
},
['My-My'] = { -- these for long/short reformatting
['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic
},
['M-My'] = { -- these for long/short reformatting
['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic
},
['My'] = { -- these for long/short reformatting
['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic
},
-- ['yMd'] = { -- not supported at en.wiki
-- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy
-- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy
-- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd
-- },
}
local function reformatter (date, pattern_idx, format_param, mon_len)
if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- not in this set of date format patterns then not a reformattable date
end
if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then
return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd
end
if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either
format_param = 'any'; -- so format-agnostic
end
-- yMd is not supported at en.wiki; when yMd is supported at your wiki, uncomment the next line
-- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki
if 'yMd' == format_param then -- yMd not supported at en.wiki; when yMd is supported at your wiki, remove or comment-out this line
return; -- not a reformattable date
end
local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1]
c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures
local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..]
[patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter
[patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter;
[patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil;
[patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error
[patterns[pattern_idx][6] or 'x'] = c5;
[patterns[pattern_idx][7] or 'x'] = c6;
[patterns[pattern_idx][8] or 'x'] = c7;
};
if t.a then -- if this date has an anchor year capture (all convertable date formats except ymd)
if t.y2 then -- for year range date formats
t.y2 = t.a; -- use the anchor year capture when reassembling the date
else -- here for single date formats (except ymd)
t.y = t.a; -- use the anchor year capture when reassembling the date
end
end
if tonumber(t.m) then -- if raw month is a number (converting from ymd)
if 's' == mon_len then -- if we are to use abbreviated month names
t.m = cfg.date_names['inv_local_short'][tonumber(t.m)]; -- convert it to a month name
else
t.m = cfg.date_names['inv_local_long'][tonumber(t.m)]; -- convert it to a month name
end
t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present
elseif 'ymd' == format_param then -- when converting to ymd
t.y = t.y:gsub ('%a', ''); -- strip CITREF disambiguator if present; anchor year already known so process can proceed; TODO: maint message?
if 1582 > tonumber (t.y) then -- ymd format dates not allowed before 1582
return;
end
t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits
t.d = string.format ('%02d', t.d);
elseif mon_len then -- if mon_len is set to either 'short' or 'long'
for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both
if t[mon] then
t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic)
if 0 == t[mon] then return; end -- seasons and named dates can't be converted
t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_short'][t[mon]]) or cfg.date_names['inv_local_long'][t[mon]]; -- fetch month name according to length
end
end
end
local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string
t[re_formats[pattern_idx][format_param][2]], -- named captures from t{}
t[re_formats[pattern_idx][format_param][3]],
t[re_formats[pattern_idx][format_param][4]],
t[re_formats[pattern_idx][format_param][5]],
t[re_formats[pattern_idx][format_param][6]],
t[re_formats[pattern_idx][format_param][7]],
t[re_formats[pattern_idx][format_param][8]]
);
return new_date;
end
--[[-------------------------< R E F O R M A T _ D A T E S >--------------------------------------------------
Reformats existing dates into the format specified by format.
format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes
access- and archive-dates; otherwise these dates are not reformatted.
This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of
the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in
{{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate
values for |cs1-dates= are:
l - all dates are rendered with long month names
ls - publication dates use long month names; access-/archive-dates use abbreviated month names
ly - publication dates use long month names; access-/archive-dates rendered in ymd format
s - all dates are rendered with abbreviated (short) month names
sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format
y - all dates are rendered in ymd format
the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the
value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates=
empty, omitted, or invalid) where xxx shall be either of dmy or mdy.
dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the
list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function
returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter().
]]
local function reformat_dates (date_parameters_list, format)
local all = false; -- set to false to skip access- and archive-dates
local len_p = 'l'; -- default publication date length shall be long
local len_a = 'l'; -- default access-/archive-date length shall be long
local result = false;
local new_date;
if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}};
format = format:match('(%a+)%-all'); -- extract the format
all = true; -- all dates are long format dates because this keyword doesn't specify length
elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only
all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates
format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords
if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted
format = 'ymd'; -- override {{use xxx dates}}
elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then
len_a = len_p; -- in case len_a not set
end
end -- else only publication dates and they are long
for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) then -- if the parameter has a value
if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way
for pattern_idx, pattern in pairs (patterns) do
if mw.ustring.match (param_val.val, pattern[1]) then
if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date
new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting
else -- all other dates
new_date = reformatter (param_val.val, pattern_idx, format, len_p);
end
if new_date then -- set when date was reformatted
date_parameters_list[param_name].val = new_date; -- update date in date list
result = true; -- and announce that changes have been made
break;
end
end -- if
end -- for
end -- if
end -- if
end -- for
return result; -- declare boolean result and done
end
--[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >----------------------------------------
Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2
template has any date errors.
Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false.
]]
local function date_hyphen_to_dash (date_parameters_list)
local result = false;
local n;
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set (param_val.val) and
not mw.ustring.match (param_val.val, patterns.ymd[1]) then -- for those that are not ymd dates (ustring because here digits may not be Western)
param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash
if 0 ~= n then
date_parameters_list[param_name].val = param_val.val; -- update the list
result = true;
end
end
end
return result; -- so we know if any hyphens were replaced
end
--[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------
Attempts to translate English date names to local-language date names using names supplied by MediaWiki's
date parser function. This is simple name-for-name replacement and may not work for all languages.
if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits.
This will also translate ymd dates.
]]
local function date_name_xlate (date_parameters_list, xlt_dig)
local xlate;
local mode; -- long or short month names
local modified = false;
local date;
local sources_t = {
{cfg.date_names.en.long, cfg.date_names.inv_local_long}, -- for translating long English month names to long local month names
{cfg.date_names.en.short, cfg.date_names.inv_local_short}, -- short month names
{cfg.date_names.en.quarter, cfg.date_names.inv_local_quarter}, -- quarter date names
{cfg.date_names.en.season, cfg.date_names.inv_local_season}, -- season date nam
{cfg.date_names.en.named, cfg.date_names.inv_local_named}, -- named dates
}
local function is_xlateable (month) -- local function to get local date name that replaces existing English-language date name
for _, date_names_t in ipairs (sources_t) do -- for each sequence table in date_names_t
if date_names_t[1][month] then -- if date name is English month (long or short), quarter, season or named and
if date_names_t[2][date_names_t[1][month]] then -- if there is a matching local date name
return date_names_t[2][date_names_t[1][month]]; -- return the local date name
end
end
end
end
for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list
if is_set(param_val.val) then -- if the parameter has a value
date = param_val.val;
for month in mw.ustring.gmatch (date, '[%a ]+') do -- iterate through all date names in the date (single date or date range)
month = mw.text.trim (month); -- this because quarterly dates contain whitespace
xlate = is_xlateable (month); -- get translate <month>; returns translation or nil
if xlate then
date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
if xlt_dig then -- shall we also translate digits?
date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits'
date_parameters_list[param_name].val = date; -- save the translated date
modified = true;
end
end
end
return modified;
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
set_message = utilities_page_ptr.set_message;
substitute = utilities_page_ptr.substitute;
wrap_style = utilities_page_ptr.wrap_style;
cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration
end
--[[--------------------------< A R C H I V E _ D A T E _ C H E C K >------------------------------------------
Compare value in |archive-date= with the timestamp in Wayback machine urls. Emits an error message when |archive-date=
does not match the timestamp.
]]
local function archive_date_check (archive_date, archive_url_timestamp)
local good, archive_date_ts = pcall (lang_object.formatDate, lang_object, 'Ymd', archive_date); -- |archive-date= value to YYYYMMDD format
-- local archive_date_ts = lang_object:formatDate ('Ymd', archive_date); -- |archive-date= value to YYYYMMDD format
if good then
if not archive_url_timestamp:find (archive_date_ts, 1, true) then -- plain text find; begin search at position 1
set_message ('err_archive_date_url_ts_mismatch'); -- emit an error message
end
end
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return { -- return exported functions
archive_date_check = archive_date_check,
date_hyphen_to_dash = date_hyphen_to_dash,
date_name_xlate = date_name_xlate,
dates = dates,
reformat_dates = reformat_dates,
set_selected_modules = set_selected_modules,
year_date_check = year_date_check,
}
91dea3f3d4d1691cec7700aac0057c873554b8c1
Module:Citation/CS1/Identifiers
828
894
1979
1978
2023-10-01T10:44:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Identifiers]]
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities
substitute, make_wikilink;
local z; -- table of tables defined in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< P A G E S C O P E V A R I A B L E S >--------------------------------------
declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here
]]
local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title=
--============================<< H E L P E R F U N C T I O N S >>============================================
--[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >----------------------------
as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata.
returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else
for identifiers that do not have q, returns nil
for wikis that do not have mw.wikibase installed, returns nil
]]
local function wikidata_article_name_get (q)
if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki
return nil; -- abandon
end
local wd_article;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki
if wd_article then
wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required
end
return wd_article; -- article title from WD; nil else
end
--[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------
common function to create identifier link label from handler table or from Wikidata
returns the first available of
1. redirect from local wiki's handler table (if enabled)
2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language)
3. label specified in the local wiki's handler table
]]
local function link_label_make (handler)
local wd_article;
if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive
wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it;
end
return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link;
end
--[[--------------------------< E X T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style external link
]]
local function external_link_id (options)
local url_string = options.id;
local ext_link;
local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org
local wd_article; -- article title from Wikidata
if options.encode == true or options.encode == nil then
url_string = mw.uri.encode (url_string, 'PATH');
end
if options.auto_link and is_set (options.access) then
auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix});
end
ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki (options.id));
if is_set (options.access) then
ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock
end
return table.concat ({
make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order)
options.separator or ' ',
ext_link
});
end
--[[--------------------------< I N T E R N A L _ L I N K _ I D >----------------------------------------------
Formats a wiki-style internal link
TODO: Does not currently need to support options.access, options.encode, auto-linking and COinS (as in external_link_id),
but may be needed in the future for :m:Interwiki_map custom-prefixes like :arxiv:, :bibcode:, :DOI:, :hdl:, :ISSN:,
:JSTOR:, :Openlibrary:, :PMID:, :RFC:.
]]
local function internal_link_id (options)
local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9
return table.concat (
{
make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label
options.separator or ' ', -- add the separator
make_wikilink (
table.concat (
{
options.prefix,
id, -- translated to Western digits
options.suffix or ''
}),
substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis
); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required?
});
end
--[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------
Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against
today's date. If embargo date is in the future, returns the content of |pmc-embargo-date=; otherwise, returns
an empty string because the embargo has expired or because |pmc-embargo-date= was not set in this cite.
]]
local function is_embargoed (embargo)
if is_set (embargo) then
local lang = mw.getContentLanguage();
local good1, embargo_date, todays_date;
good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo);
todays_date = lang:formatDate ('U');
if good1 then -- if embargo date is a good date
if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future?
return embargo; -- still embargoed
else
set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat
return ''; -- unset because embargo has expired
end
end
end
return ''; -- |pmc-embargo-date= not set return empty string
end
--[=[-------------------------< I S _ V A L I D _ R X I V _ D A T E >------------------------------------------
for biorxiv, returns true if:
2019-12-11T00:00Z <= biorxiv_date < today + 2 days
for medrxiv, returns true if:
2020-01-01T00:00Z <= medrxiv_date < today + 2 days
The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400
The medrxiv identifier has a start date of 2020-01-01. The Unix timestamp for that date is {{#time:U|2020-01-01}} = 1577836800
<rxiv_date> is the date provided in those |biorxiv= parameter values that are dated and in |medrxiv= parameter values at time 00:00:00 UTC
<today> is the current date at time 00:00:00 UTC plus 48 hours
if today's date is 2023-01-01T00:00:00 then
adding 24 hours gives 2023-01-02T00:00:00 – one second more than today
adding 24 hours gives 2023-01-03T00:00:00 – one second more than tomorrow
inputs:
<y>, <m>, <d> – year, month, day parts of the date from the birxiv or medrxiv identifier
<select> 'b' for biorxiv, 'm' for medrxiv; defaults to 'b'
]=]
local function is_valid_rxiv_date (y, m, d, select)
if 0 == tonumber (m) and 12 < tonumber (m) then -- <m> must be a number 1–12
return false;
end
if 0 == tonumber (d) and 31 < tonumber (d) then -- <d> must be a number 1–31; TODO: account for month length and leap yer?
return false;
end
local rxiv_date = table.concat ({y, m, d}, '-'); -- make ymd date string
local good1, good2;
local rxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates
local lang_object = mw.getContentLanguage();
good1, rxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', rxiv_date); -- convert rxiv_date value to Unix timestamp
good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow
if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand
rxiv_ts = tonumber (rxiv_ts) or lang_object:parseFormattedNumber (rxiv_ts); -- convert to numbers for the comparison;
tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts);
else
return false; -- one or both failed to convert to Unix timestamp
end
local limit_ts = ((select and ('m' == select)) and 1577836800) or 1576022400; -- choose the appropriate limit timesatmp
return ((limit_ts <= rxiv_ts) and (rxiv_ts < tomorrow_ts)) -- limit_ts <= rxiv_date < tomorrow's date
end
--[[--------------------------< IS _ V A L I D _ I S X N >-----------------------------------------------------
ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit.
ISBN-13 is checked in isbn().
If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length
and stripped of dashes, spaces and other non-ISxN characters.
]]
local function is_valid_isxn (isxn_str, len)
local temp = 0;
isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58
len = len + 1; -- adjust to be a loop counter
for i, v in ipairs (isxn_str) do -- loop through all of the bytes and calculate the checksum
if v == string.byte ("X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58)
temp = temp + 10 * (len - i); -- it represents 10 decimal
else
temp = temp + tonumber (string.char (v) )*(len-i);
end
end
return temp % 11 == 0; -- returns true if calculation result is zero
end
--[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >-----------------------------------------------
ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit.
If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length
and stripped of dashes, spaces and other non-ISxN-13 characters.
]]
local function is_valid_isxn_13 (isxn_str)
local temp=0;
isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39
for i, v in ipairs (isxn_str) do
temp = temp + (3 - 2*(i % 2)) * tonumber (string.char (v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit
end
return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct
end
--[[--------------------------< N O R M A L I Z E _ L C C N >--------------------------------------------------
LCCN normalization (https://www.loc.gov/marc/lccn-namespace.html#normalization)
1. Remove all blanks.
2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash.
3. If there is a hyphen in the string:
a. Remove it.
b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out):
1. All these characters should be digits, and there should be six or less. (not done in this function)
2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six.
Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function.
]]
local function normalize_lccn (lccn)
lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace
if nil ~= string.find (lccn, '/') then
lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it
end
local prefix
local suffix
prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix
if nil ~= suffix then -- if there was a hyphen
suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6
lccn = prefix..suffix; -- reassemble the LCCN
end
return lccn;
end
--============================<< I D E N T I F I E R F U N C T I O N S >>====================================
--[[--------------------------< A R X I V >--------------------------------------------------------------------
See: https://arxiv.org/help/arxiv_identifier
format and error check arXiv identifier. There are three valid forms of the identifier:
the first form, valid only between date codes 9107 and 0703, is:
arXiv:<archive>.<class>/<date code><number><version>
where:
<archive> is a string of alpha characters - may be hyphenated; no other punctuation
<class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
first digit of YY for this form can only 9 and 0
<number> is a three-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented)
the second form, valid from April 2007 through December 2014 is:
arXiv:<date code>.<number><version>
where:
<date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01
<number> is a four-digit number
<version> is a 1 or more digit number preceded with a lowercase v; no spaces
the third form, valid from January 2015 is:
arXiv:<date code>.<number><version>
where:
<date code> and <version> are as defined for 0704-1412
<number> is a five-digit number
]]
local function arxiv (options)
local id = options.id;
local class = options.Class; -- TODO: lowercase?
local handler = options.handler;
local year, month, version;
local err_msg = false; -- assume no error message
local text; -- output text
if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version
year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month
((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok?
err_msg = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years)
((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)?
err_msg = true; -- flag for error message
end
elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version
year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$");
year = tonumber (year);
month = tonumber (month);
if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years)
err_msg = true; -- flag for error message
end
else
err_msg = true; -- not a recognized format; flag for error message
end
if err_msg then
options.coins_list_t['ARXIV'] = nil; -- when error, unset so not included in COinS
end
local err_msg_t = {};
if err_msg then
set_message ('err_bad_arxiv');
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access});
if is_set (class) then
if id:match ('^%d+') then
text = table.concat ({text, ' [[https://arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink
else
set_message ('err_class_ignored');
end
end
return text;
end
--[[--------------------------< B I B C O D E >--------------------------------------------------------------------
Validates (sort of) and formats a bibcode ID.
Format for bibcodes is specified here: https://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes
But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters
and first four digits must be a year. This function makes these tests:
length must be 19 characters
characters in position
1–4 must be digits and must represent a year in the range of 1000 – next year
5 must be a letter
6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. )
9–18 must be letter, digit, or dot
19 must be a letter or dot
]]
local function bibcode (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local ignore_invalid = options.accept;
local err_type;
local err_msg = '';
local year;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = access});
if 19 ~= id:len() then
err_type = cfg.err_msg_supl.length;
else
year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$");
if not year then -- if nil then no pattern match
err_type = cfg.err_msg_supl.value; -- so value error
else
local next_year = tonumber (os.date ('%Y')) + 1; -- get the current year as a number and add one for next year
year = tonumber (year); -- convert year portion of bibcode to a number
if (1000 > year) or (year > next_year) then
err_type = cfg.err_msg_supl.year; -- year out of bounds
end
if id:find('&%.') then
err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter)
end
if id:match ('.........%.tmp%.') then -- temporary bibcodes when positions 10–14 are '.tmp.'
set_message ('maint_bibcode');
end
end
end
if is_set (err_type) and not ignore_invalid then -- if there was an error detected and accept-as-written markup not used
set_message ('err_bad_bibcode', {err_type});
options.coins_list_t['BIBCODE'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< B I O R X I V >-----------------------------------------------------------------
Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly
6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd.
date and suffixed with an optional version identifier.
The bioRxiv ID is the string of characters:
https://doi.org/10.1101/078733 -> 10.1101/078733
or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits:
https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2
see https://www.biorxiv.org/about-biorxiv
]]
local function biorxiv (options)
local id = options.id;
local handler = options.handler;
local err_msg = true; -- flag; assume that there will be an error
local patterns = {
'^10%.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11)
}
for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match
if id:match (pattern) then
local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier
if m then -- m is nil when id is the six-digit form
if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for biorxiv limit
break; -- date fail; break out early so we don't unset the error message
end
end
err_msg = nil; -- we found a match so unset the error message
break; -- and done
end
end -- err_cat remains set here when no match
if err_msg then
options.coins_list_t['BIORXIV'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_biorxiv'); -- and set the error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator,
encode = handler.encode, access = handler.access});
end
--[[--------------------------< C I T E S E E R X >------------------------------------------------------------
CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org).
The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure
]]
local function citeseerx (options)
local id = options.id;
local handler = options.handler;
local matched;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode,
access = handler.access});
matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$");
if not matched then
set_message ('err_bad_citeseerx' );
options.coins_list_t['CITESEERX'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< D O I >------------------------------------------------------------------------
Formats a DOI and checks for DOI errors.
DOI names contain two parts: prefix and suffix separated by a forward slash.
Prefix: directory indicator '10.' followed by a registrant code
Suffix: character string of any length chosen by the registrant
This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends
with a period or a comma, this function will emit a bad_doi error message.
DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash,
and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in DOI names.
https://www.doi.org/doi_handbook/2_Numbering.html -- 2.2 Syntax of a DOI name
https://www.doi.org/doi_handbook/2_Numbering.html#2.2.2 -- 2.2.2 DOI prefix
]]
local function doi (options)
local id = options.id;
local inactive = options.DoiBroken
local access = options.access;
local ignore_invalid = options.accept;
local handler = options.handler;
local err_flag;
local text;
if is_set (inactive) then
local inactive_year = inactive:match("%d%d%d%d"); -- try to get the year portion from the inactive date
local inactive_month, good;
if is_set (inactive_year) then
if 4 < inactive:len() then -- inactive date has more than just a year (could be anything)
local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki
good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date
if not good then
inactive_month = nil; -- something went wrong so make sure this is unset
end
end
end -- otherwise, |doi-broken-date= has something but it isn't a date
if is_set (inactive_year) and is_set (inactive_month) then
set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '});
elseif is_set (inactive_year) then
set_message ('maint_doi_inactive_dated', {inactive_year, '', ''});
else
set_message ('maint_doi_inactive');
end
inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')';
end
local registrant = mw.ustring.match (id, '^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form
local registrant_err_patterns = { -- these patterns are for code ranges that are not supported
'^[^1-3]%d%d%d%d%.%d+$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999
'^[^1-6]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 60000+); accepts: 10000–69999
'^[^1-9]%d%d%d%.%d+$', -- 4 digits with subcode (0xxx); accepts: 1000–9999
'^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999
'^%d%d%d%d%d%d+', -- 6 or more digits
'^%d%d?%d?$', -- less than 4 digits without subcode (3 digits with subcode is legitimate)
'^%d%d?%.[%d%.]+', -- 1 or 2 digits with subcode
'^5555$', -- test registrant will never resolve
'[^%d%.]', -- any character that isn't a digit or a dot
}
if not ignore_invalid then
if registrant then -- when DOI has proper form
for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns
if registrant:match (pattern) then -- to validate registrant codes
err_flag = set_message ('err_bad_doi'); -- when found, mark this DOI as bad
break; -- and done
end
end
else
err_flag = set_message ('err_bad_doi'); -- invalid directory or malformed
end
else
set_message ('maint_doi_ignore');
end
if err_flag then
options.coins_list_t['DOI'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access,
auto_link = not (err_flag or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored
}) .. (inactive or '');
return text;
end
--[[--------------------------< H D L >------------------------------------------------------------------------
Formats an HDL with minor error checking.
HDL names contain two parts: prefix and suffix separated by a forward slash.
Prefix: character string using any character in the UCS-2 character set except '/'
Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant
This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends
with a period or a comma, this function will emit a bad_hdl error message.
HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and
terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely
if ever used in HDLs.
Query string parameters are named here: https://www.handle.net/proxy_servlet.html. query strings are not displayed
but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we
have to detect the query string so that it isn't URL-encoded with the rest of the identifier.
]]
local function hdl (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local query_params = { -- list of known query parameters from https://www.handle.net/proxy_servlet.html
'noredirect',
'ignore_aliases',
'auth',
'cert',
'index',
'type',
'urlappend',
'locatt',
'action',
}
local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string
local found;
if hdl then -- when there are query strings, this is the handle identifier portion
for _, q in ipairs (query_params) do -- spin through the list of query parameters
if param:match ('^' .. q) then -- if the query string begins with one of the parameters
found = true; -- announce a find
break; -- and stop looking
end
end
end
if found then
id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not
else
suffix = ''; -- make sure suffix is empty string for concatenation else
end
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access})
if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma
set_message ('err_bad_hdl' );
options.coins_list_t['HDL'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< I S B N >----------------------------------------------------------------------
Determines whether an ISBN string is valid
]]
local function isbn (options)
local isbn_str = options.id;
local ignore_invalid = options.accept;
local handler = options.handler;
local function return_result (check, err_type) -- local function to handle the various returns
local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = isbn_str, separator = handler.separator});
if ignore_invalid then -- if ignoring ISBN errors
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error
else -- here when not ignoring
if not check then -- and there is an error
options.coins_list_t['ISBN'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_isbn', err_type); -- set an error message
return ISBN; -- return id text
end
end
return ISBN; -- return id text
end
if nil ~= isbn_str:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X
end
local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace
local len = id:len();
if len ~= 10 and len ~= 13 then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if len == 10 then
if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position
return return_result (false, cfg.err_msg_supl.form);
end
if not is_valid_isxn (id, 10) then -- test isbn-10 for numerical validity
return return_result (false, cfg.err_msg_supl.check); -- fail if isbn-10 is not numerically valid
end
if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin)
return return_result (false, cfg.err_msg_supl.group); -- fail if isbn-10 begins with 630/1
end
return return_result (true, cfg.err_msg_supl.check); -- pass if isbn-10 is numerically valid
else
if id:match ('^%d+$') == nil then
return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits
end
if id:match ('^97[89]%d*$') == nil then
return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979
end
if id:match ('^9790') then
return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN
end
return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check);
end
end
--[[--------------------------< A S I N >----------------------------------------------------------------------
Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha
characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit
ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=.
Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit.
|asin=630....... and |asin=631....... are (apparently) not a legitimate ISBN though it checksums as one; these
do not cause this function to emit the maint_asin message
This function is positioned here because it calls isbn()
]]
local function asin (options)
local id = options.id;
local domain = options.ASINTLD;
local err_flag;
if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then
err_flag = set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters
else
if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X)
if is_valid_isxn (id, 10) then -- see if ASIN value is or validates as ISBN-10
if not id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not a valid isbn prefixes but are used by amazon as a numeric identifier
err_flag = set_message ('err_bad_asin'); -- ASIN has ISBN-10 form but begins with something other than 630/1 so probably an isbn
end
elseif not is_set (err_flag) then
err_flag = set_message ('err_bad_asin'); -- ASIN is not ISBN-10
end
elseif not id:match("^%u[%d%u]+$") then
err_flag = set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha
end
end
if (not is_set (domain)) or in_array (domain, {'us'}) then -- default: United States
domain = "com";
elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom
domain = "co." .. domain;
elseif in_array (domain, {'z.cn'}) then -- China
domain = "cn";
elseif in_array (domain, {'au', 'br', 'mx', 'sg', 'tr'}) then -- Australia, Brazil, Mexico, Singapore, Turkey
domain = "com." .. domain;
elseif not in_array (domain, {'ae', 'ca', 'cn', 'de', 'es', 'fr', 'in', 'it', 'nl', 'pl', 'sa', 'se', 'co.jp', 'co.uk', 'com', 'com.au', 'com.br', 'com.mx', 'com.sg', 'com.tr'}) then -- Arabic Emirates, Canada, China, Germany, Spain, France, Indonesia, Italy, Netherlands, Poland, Saudi Arabia, Sweden (as of 2021-03 Austria (.at), Liechtenstein (.li) and Switzerland (.ch) still redirect to the German site (.de) with special settings, so don't maintain local ASINs for them)
err_flag = set_message ('err_bad_asin_tld'); -- unsupported asin-tld value
end
local handler = options.handler;
if not is_set (err_flag) then
options.coins_list_t['ASIN'] = handler.prefix .. domain .. "/dp/" .. id; -- asin for coins
else
options.coins_list_t['ASIN'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. domain .. "/dp/",
id = id, encode = handler.encode, separator = handler.separator})
end
--[[--------------------------< I S M N >----------------------------------------------------------------------
Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the
same check digit calculations. See https://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf
section 2, pages 9–12.
ismn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx)
or an identifier registered at info-uri.info (info:)
]]
local function ismn (options)
local id = options.id;
local handler = options.handler;
local text;
local valid_ismn = true;
local id_copy;
id_copy = id; -- save a copy because this testing is destructive
id = id:gsub ('[%s-]', ''); -- remove hyphens and white space
if 13 ~= id:len() or id:match ("^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790
valid_ismn = false;
else
valid_ismn=is_valid_isxn_13 (id); -- validate ISMN
end
-- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to
-- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode})
text = table.concat ( -- because no place to link to yet
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id_copy
});
if false == valid_ismn then
options.coins_list_t['ISMN'] = nil; -- when error, unset so not included in COinS; not really necessary here because ismn not made part of COinS
set_message ('err_bad_ismn'); -- create an error message if the ISMN is invalid
end
return text;
end
--[[--------------------------< I S S N >----------------------------------------------------------------------
Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but
has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked
like this:
|issn=0819 4327 gives: [https://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link
This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length
and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters
other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The
ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits.
]]
local function issn (options)
local id = options.id;
local handler = options.handler;
local ignore_invalid = options.accept;
local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate
local text;
local valid_issn = true;
id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace
if 8 ~= id:len() or nil == id:match ("^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position
valid_issn = false; -- wrong length or improper character
else
valid_issn = is_valid_isxn (id, 8); -- validate ISSN
end
if true == valid_issn then
id = string.sub (id, 1, 4 ) .. "-" .. string.sub (id, 5 ); -- if valid, display correctly formatted version
else
id = issn_copy; -- if not valid, show the invalid ISSN with error message
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if ignore_invalid then
set_message ('maint_issn_ignore');
else
if false == valid_issn then
options.coins_list_t['ISSN'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_issn', (options.hkey == 'EISSN') and 'e' or ''); -- create an error message if the ISSN is invalid
end
end
return text;
end
--[[--------------------------< J F M >-----------------------------------------------------------------------
A numerical identifier in the form nn.nnnn.nn
]]
local function jfm (options)
local id = options.id;
local handler = options.handler;
local id_num;
id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier
if is_set (id_num) then
set_message ('maint_jfm_format');
else -- plain number without JFM prefix
id_num = id; -- if here id does not have prefix
end
if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then
id = id_num; -- jfm matches pattern
else
set_message ('err_bad_jfm' ); -- set an error message
options.coins_list_t['JFM'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< J S T O R >--------------------------------------------------------------------
Format a JSTOR with some error checking
]]
local function jstor (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
if id:find ('[Jj][Ss][Tt][Oo][Rr]') or id:find ('^https?://') or id:find ('%s') then
set_message ('err_bad_jstor'); -- set an error message
options.coins_list_t['JSTOR'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
end
--[[--------------------------< L C C N >----------------------------------------------------------------------
Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of
the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits.
https://oclc-research.github.io/infoURI-Frozen/info-uri.info/info:lccn/reg.html
length = 8 then all digits
length = 9 then lccn[1] is lowercase alpha
length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits
length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits
length = 12 then lccn[1] and lccn[2] are both lowercase alpha
]]
local function lccn (options)
local lccn = options.id;
local handler = options.handler;
local err_flag; -- presume that LCCN is valid
local id = lccn; -- local copy of the LCCN
id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes)
local len = id:len(); -- get the length of the LCCN
if 8 == len then
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits)
err_flag = set_message ('err_bad_lccn'); -- set an error message
end
elseif 9 == len then -- LCCN should be adddddddd
if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern?
err_flag = set_message ('err_bad_lccn'); -- set an error message
end
elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd
if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ...
if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
end
elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd
if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
elseif 12 == len then -- LCCN should be aadddddddddd
if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern
err_flag = set_message ('err_bad_lccn'); -- no match, set an error message
end
else
err_flag = set_message ('err_bad_lccn'); -- wrong length, set an error message
end
if not is_set (err_flag) and nil ~= lccn:find ('%s') then
err_flag = set_message ('err_bad_lccn'); -- lccn contains a space, set an error message
end
if is_set (err_flag) then
options.coins_list_t['LCCN'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< M E D R X I V >-----------------------------------------------------------------
Format medRxiv ID and do simple error checking. Similar to later bioRxiv IDs, medRxiv IDs are prefixed with a
yyyy.mm.dd. date and suffixed with an optional version identifier. Ealiest date accepted is 2020.01.01
The medRxiv ID is a date followed by an eight-digit number followed by an optional version indicator 'v' and one or more digits:
https://www.medrxiv.org/content/10.1101/2020.11.16.20232009v2 -> 10.1101/2020.11.16.20232009v2
]]
local function medrxiv (options)
local id = options.id;
local handler = options.handler;
local err_msg_flag = true; -- flag; assume that there will be an error
local patterns = {
'%d%d%d%d%d%d%d%d$', -- simple 8-digit identifier; these should be relatively rare
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%dv%d+$', -- y.m.d. date + 8-digit identifier + version (2020-01-01 and later)
'^10%.1101/(20%d%d)%.(%d%d)%.(%d%d)%.%d%d%d%d%d%d%d%d$', -- y.m.d. date + 8-digit identifier (2020-01-01 and later)
}
for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match
if id:match (pattern) then
local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier
if m then -- m is nil when id is the 8-digit form
if not is_valid_rxiv_date (y, m, d, 'b') then -- validate the encoded date; 'b' for medrxiv limit
break; -- date fail; break out early so we don't unset the error message
end
end
err_msg_flag = nil; -- we found a match so unset the error message
break; -- and done
end
end -- <err_msg_flag> remains set here when no match
if err_msg_flag then
options.coins_list_t['MEDRXIV'] = nil; -- when error, unset so not included in COinS
set_message ('err_bad_medrxiv'); -- and set the error message
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator,
encode = handler.encode, access = handler.access});
end
--[[--------------------------< M R >--------------------------------------------------------------------------
A seven digit number; if not seven digits, zero-fill leading digits to make seven digits.
]]
local function mr (options)
local id = options.id;
local handler = options.handler;
local id_num;
local id_len;
id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix
if is_set (id_num) then
set_message ('maint_mr_format'); -- add maint cat
else -- plain number without mr prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
id_len = id_num and id_num:len() or 0;
if (7 >= id_len) and (0 ~= id_len) then
id = string.rep ('0', 7-id_len) .. id_num; -- zero-fill leading digits
else
set_message ('err_bad_mr'); -- set an error message
options.coins_list_t['MR'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< O C L C >----------------------------------------------------------------------
Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}}
archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html
]]
local function oclc (options)
local id = options.id;
local handler = options.handler;
local number;
if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters)
number = id:match('ocm(%d+)'); -- get the number
elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters)
number = id:match('ocn(%d+)'); -- get the number
elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters)
number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number
elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field
number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number
if 9 < number:len() then
number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers
end
elseif id:match('^%d+$') then -- no prefix
number = id; -- get the number
if tonumber (id) > handler.id_limit then
number = nil; -- unset when id value exceeds the limit
end
end
if number then -- proper format
id = number; -- exclude prefix, if any, from external link
else
set_message ('err_bad_oclc') -- add an error message if the id is malformed
options.coins_list_t['OCLC'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< O P E N L I B R A R Y >--------------------------------------------------------
Formats an OpenLibrary link, and checks for associated errors.
]]
local function openlibrary (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W';
local err_flag;
local prefix = { -- these are appended to the handler.prefix according to code
['A']='authors/OL',
['M']='books/OL',
['W']='works/OL',
['X']='OL' -- not a code; spoof when 'code' in id is invalid
};
if not ident then
code = 'X'; -- no code or id completely invalid
ident = id; -- copy id to ident so that we display the flawed identifier
err_flag = set_message ('err_bad_ol');
end
if not is_set (err_flag) then
options.coins_list_t['OL'] = handler.prefix .. prefix[code] .. ident; -- experiment for ol coins
else
options.coins_list_t['OL'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix .. prefix[code],
id = ident, separator = handler.separator, encode = handler.encode,
access = access});
end
--[[--------------------------< O S T I >----------------------------------------------------------------------
Format OSTI and do simple error checking. OSTIs are sequential numbers beginning at 1 and counting up. This
code checks the OSTI to see that it contains only digits and is less than test_limit specified in the configuration;
the value in test_limit will need to be updated periodically as more OSTIs are issued.
NB. 1018 is the lowest OSTI number found in the wild (so far) and resolving OK on the OSTI site
]]
local function osti (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
if id:match("[^%d]") then -- if OSTI has anything but digits
set_message ('err_bad_osti'); -- set an error message
options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS
else -- OSTI is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1018 > id_num or handler.id_limit < id_num then -- if OSTI is outside test limit boundaries
set_message ('err_bad_osti'); -- set an error message
options.coins_list_t['OSTI'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
end
--[[--------------------------< P M C >------------------------------------------------------------------------
Format a PMC, do simple error checking, and check for embargoed articles.
The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not
be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the
PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix.
PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation
has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed ()
returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string.
PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less
than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued.
]]
local function pmc (options)
local id = options.id;
local embargo = options.Embargo; -- TODO: lowercase?
local handler = options.handler;
local err_flag;
local id_num;
local text;
id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix
if is_set (id_num) then
set_message ('maint_pmc_format');
else -- plain number without PMC prefix
id_num = id:match ('^%d+$'); -- if here id is all digits
end
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries
err_flag = set_message ('err_bad_pmc'); -- set an error message
else
id = tostring (id_num); -- make sure id is a string
end
else -- when id format incorrect
err_flag = set_message ('err_bad_pmc'); -- set an error message
end
if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed?
text = table.concat ( -- still embargoed so no external link
{
make_wikilink (link_label_make (handler), handler.label),
handler.separator,
id,
});
else
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access,
auto_link = not err_flag and 'pmc' or nil -- do not auto-link when PMC has error
});
end
if err_flag then
options.coins_list_t['PMC'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< P M I D >----------------------------------------------------------------------
Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This
code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable
test_limit will need to be updated periodically as more PMIDs are issued.
]]
local function pmid (options)
local id = options.id;
local handler = options.handler;
if id:match("[^%d]") then -- if PMID has anything but digits
set_message ('err_bad_pmid'); -- set an error message
options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS
else -- PMID is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries
set_message ('err_bad_pmid'); -- set an error message
options.coins_list_t['PMID'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--[[--------------------------< R F C >------------------------------------------------------------------------
Format RFC and do simple error checking. RFCs are sequential numbers beginning at 1 and counting up. This
code checks the RFC to see that it contains only digits and is less than test_limit specified in the configuration;
the value in test_limit will need to be updated periodically as more RFCs are issued.
An index of all RFCs is here: https://tools.ietf.org/rfc/
]]
local function rfc (options)
local id = options.id;
local handler = options.handler;
if id:match("[^%d]") then -- if RFC has anything but digits
set_message ('err_bad_rfc'); -- set an error message
options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS
else -- RFC is only digits
local id_num = tonumber (id); -- convert id to a number for range testing
if 1 > id_num or handler.id_limit < id_num then -- if RFC is outside test limit boundaries
set_message ('err_bad_rfc'); -- set an error message
options.coins_list_t['RFC'] = nil; -- when error, unset so not included in COinS
end
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access});
end
--[[--------------------------< S 2 C I D >--------------------------------------------------------------------
Format an S2CID, do simple error checking
S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only
digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically
as more S2CIDs are issued.
]]
local function s2cid (options)
local id = options.id;
local access = options.access;
local handler = options.handler;
local id_num;
local text;
id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries
set_message ('err_bad_s2cid'); -- set an error message
options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS
end
else -- when id format incorrect
set_message ('err_bad_s2cid'); -- set an error message
options.coins_list_t['S2CID'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access});
return text;
end
--[[--------------------------< S B N >------------------------------------------------------------------------
9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits
sbn value not made part of COinS metadata because we don't have a url or isn't a COinS-defined identifier (rft.xxx)
or an identifier registered at info-uri.info (info:)
]]
local function sbn (options)
local id = options.id;
local ignore_invalid = options.accept;
local handler = options.handler;
local function return_result (check, err_type) -- local function to handle the various returns
local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator});
if not ignore_invalid then -- if not ignoring SBN errors
if not check then
options.coins_list_t['SBN'] = nil; -- when error, unset so not included in COinS; not really necessary here because sbn not made part of COinS
set_message ('err_bad_sbn', {err_type}); -- display an error message
return SBN;
end
else
set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only)
end
return SBN;
end
if id:match ('[^%s-0-9X]') then
return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X
end
local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests
if 9 ~= ident:len() then
return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length
end
if ident:match ('^%d*X?$') == nil then
return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position
end
return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check);
end
--[[--------------------------< S S R N >----------------------------------------------------------------------
Format an SSRN, do simple error checking
SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is
only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need
to be updated periodically as more SSRNs are issued.
]]
local function ssrn (options)
local id = options.id;
local handler = options.handler;
local id_num;
local text;
id_num = id:match ('^%d+$'); -- id must be all digits
if is_set (id_num) then -- id_num has a value so test it
id_num = tonumber (id_num); -- convert id_num to a number for range testing
if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries
set_message ('err_bad_ssrn'); -- set an error message
options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS
end
else -- when id format incorrect
set_message ('err_bad_ssrn'); -- set an error message
options.coins_list_t['SSRN'] = nil; -- when error, unset so not included in COinS
end
text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = options.access});
return text;
end
--[[--------------------------< U S E N E T _ I D >------------------------------------------------------------
Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in
'<' and/or '>' angle brackets.
]]
local function usenet_id (options)
local id = options.id;
local handler = options.handler;
local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode})
if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>'
set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid
options.coins_list_t['USENETID'] = nil; -- when error, unset so not included in COinS
end
return text;
end
--[[--------------------------< Z B L >-----------------------------------------------------------------------
A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional
format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/
temporary format is apparently eight digits. Anything else is an error
]]
local function zbl (options)
local id = options.id;
local handler = options.handler;
if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format?
set_message ('maint_zbl'); -- yes, add maint cat
elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format?
set_message ('err_bad_zbl'); -- no, set an error message
options.coins_list_t['ZBL'] = nil; -- when error, unset so not included in COinS
end
return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect,
prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode});
end
--============================<< I N T E R F A C E F U N C T I O N S >>==========================================
--[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------
Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for
any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to
the identifier list. Emits redundant error message if more than one alias exists in args
]]
local function extract_ids (args)
local id_list = {}; -- list of identifiers found in args
for k, v in pairs (cfg.id_handlers) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table
v = select_one (args, v.parameters, 'err_redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present
if is_set (v) then id_list[k] = v; end -- if found in args, add identifier to our list
end
return id_list;
end
--[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >--------------------------------------
Fetches custom id access levels from arguments using configuration settings. Parameters which have a predefined access
level (e.g. arxiv) do not use this function as they are directly rendered as free without using an additional parameter.
returns a table of k/v pairs where k is same as the identifier's key in cfg.id_handlers and v is the assigned (valid) keyword
access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else)
]]
local function extract_id_access_levels (args, id_list)
local id_accesses_list = {};
for k, v in pairs (cfg.id_handlers) do
local access_param = v.custom_access; -- name of identifier's access-level parameter
if is_set (access_param) then
local access_level = args[access_param]; -- get the assigned value if there is one
if is_set (access_level) then
if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required
set_message ('err_invalid_param_val', {access_param, access_level});
access_level = nil; -- invalid so unset
end
if not is_set (id_list[k]) then -- identifier access-level must have a matching identifier
set_message ('err_param_access_requires_param', {k:lower()}); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message
end
id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword
end
end
end
return id_accesses_list;
end
--[[--------------------------< B U I L D _ I D _ L I S T >----------------------------------------------------
render the identifiers into a sorted sequence table
<ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value
<options_t> is a table of various k/v option pairs provided in the call to new_build_id_list();
modified by this function and passed to all identifier rendering functions
<access_levels_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value (if valid)
returns a sequence table of sorted (by hkey - 'handler' key) rendered identifier strings
]]
local function build_id_list (ID_list_coins_t, options_t, access_levels_t)
local ID_list_t = {};
local accept;
local func_map = { --function map points to functions associated with hkey identifier
['ARXIV'] = arxiv,
['ASIN'] = asin,
['BIBCODE'] = bibcode,
['BIORXIV'] = biorxiv,
['CITESEERX'] = citeseerx,
['DOI'] = doi,
['EISSN'] = issn,
['HDL'] = hdl,
['ISBN'] = isbn,
['ISMN'] = ismn,
['ISSN'] = issn,
['JFM'] = jfm,
['JSTOR'] = jstor,
['LCCN'] = lccn,
['MEDRXIV'] = medrxiv,
['MR'] = mr,
['OCLC'] = oclc,
['OL'] = openlibrary,
['OSTI'] = osti,
['PMC'] = pmc,
['PMID'] = pmid,
['RFC'] = rfc,
['S2CID'] = s2cid,
['SBN'] = sbn,
['SSRN'] = ssrn,
['USENETID'] = usenet_id,
['ZBL'] = zbl,
}
for hkey, v in pairs (ID_list_coins_t) do
v, accept = has_accept_as_written (v); -- remove accept-as-written markup if present; accept is boolean true when markup removed; false else
-- every function gets the options table with value v and accept boolean
options_t.hkey = hkey; -- ~/Configuration handler key
options_t.id = v; -- add that identifier value to the options table
options_t.accept = accept; -- add the accept boolean flag
options_t.access = access_levels_t[hkey]; -- add the access level for those that have an |<identifier-access= parameter
options_t.handler = cfg.id_handlers[hkey];
options_t.coins_list_t = ID_list_coins_t; -- pointer to ID_list_coins_t; for |asin= and |ol=; also to keep erroneous values out of the citation's metadata
options_t.coins_list_t[hkey] = v; -- id value without accept-as-written markup for metadata
if options_t.handler.access and not in_array (options_t.handler.access, cfg.keywords_lists['id-access']) then
error (cfg.messages['unknown_ID_access'] .. options_t.handler.access); -- here when handler access key set to a value not listed in list of allowed id access keywords
end
if func_map[hkey] then
local id_text = func_map[hkey] (options_t); -- call the function to get identifier text and any error message
table.insert (ID_list_t, {hkey, id_text}); -- add identifier text to the output sequence table
else
error (cfg.messages['unknown_ID_key'] .. hkey); -- here when func_map doesn't have a function for hkey
end
end
local function comp (a, b) -- used by following table.sort()
return a[1]:lower() < b[1]:lower(); -- sort by hkey
end
table.sort (ID_list_t, comp); -- sequence table of tables sort
for k, v in ipairs (ID_list_t) do -- convert sequence table of tables to simple sequence table of strings
ID_list_t[k] = v[2]; -- v[2] is the identifier rendering from the call to the various functions in func_map{}
end
return ID_list_t;
end
--[[--------------------------< O P T I O N S _ C H E C K >----------------------------------------------------
check that certain option parameters have their associated identifier parameters with values
<ID_list_coins_t> is a table of k/v pairs where k is same as key in cfg.id_handlers and v is the assigned value
<ID_support_t> is a sequence table of tables created in citation0() where each subtable has four elements:
[1] is the support parameter's assigned value; empty string if not set
[2] is a text string same as key in cfg.id_handlers
[3] is cfg.error_conditions key used to create error message
[4] is original ID support parameter name used to create error message
returns nothing; on error emits an appropriate error message
]]
local function options_check (ID_list_coins_t, ID_support_t)
for _, v in ipairs (ID_support_t) do
if is_set (v[1]) and not ID_list_coins_t[v[2]] then -- when support parameter has a value but matching identifier parameter is missing or empty
set_message (v[3], (v[4])); -- emit the appropriate error message
end
end
end
--[[--------------------------< I D E N T I F I E R _ L I S T S _ G E T >--------------------------------------
Creates two identifier lists: a k/v table of identifiers and their values to be used locally and for use in the
COinS metadata, and a sequence table of the rendered identifier strings that will be included in the rendered
citation.
]]
local function identifier_lists_get (args_t, options_t, ID_support_t)
local ID_list_coins_t = extract_ids (args_t); -- get a table of identifiers and their values for use locally and for use in COinS
options_check (ID_list_coins_t, ID_support_t); -- ID support parameters must have matching identifier parameters
local ID_access_levels_t = extract_id_access_levels (args_t, ID_list_coins_t); -- get a table of identifier access levels
local ID_list_t = build_id_list (ID_list_coins_t, options_t, ID_access_levels_t); -- get a sequence table of rendered identifier strings
return ID_list_t, ID_list_coins_t; -- return the tables
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
set_message = utilities_page_ptr.set_message;
select_one = utilities_page_ptr.select_one;
substitute = utilities_page_ptr.substitute;
make_wikilink = utilities_page_ptr.make_wikilink;
z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title=
identifier_lists_get = identifier_lists_get, -- experiment to replace individual calls to build_id_list(), extract_ids, extract_id_access_levels
is_embargoed = is_embargoed;
set_selected_modules = set_selected_modules;
}
3cd8b5ef8d199885cc0c92aabeb5bc338fa6f42c
Module:Citation/CS1/COinS
828
895
1981
1980
2023-10-01T10:44:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/COinS]]
Scribunto
text/plain
--[[--------------------------< F O R W A R D D E C L A R A T I O N S >--------------------------------------
]]
local has_accept_as_written, is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities
local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration
--[[--------------------------< M A K E _ C O I N S _ T I T L E >----------------------------------------------
Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs)
Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings
of %27%27...
]]
local function make_coins_title (title, script)
title = has_accept_as_written (title);
if is_set (title) then
title = strip_apostrophe_markup (title); -- strip any apostrophe markup
else
title = ''; -- if not set, make sure title is an empty string
end
if is_set (script) then
script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string)
script = strip_apostrophe_markup (script); -- strip any apostrophe markup
else
script = ''; -- if not set, make sure script is an empty string
end
if is_set (title) and is_set (script) then
script = ' ' .. script; -- add a space before we concatenate
end
return title .. script; -- return the concatenation
end
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of Lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
]]
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other Lua magic pattern characters
return argument;
end
--[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------
Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS.
]]
local function get_coins_pages (pages)
local pattern;
if not is_set (pages) then return pages; end -- if no page numbers then we're done
while true do
pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the URL and following space(s): "[url "
if nil == pattern then break; end -- no more URLs
pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape Lua's magic pattern characters
pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible
end
pages = pages:gsub("[%[%]]", ""); -- remove the brackets
pages = pages:gsub("–", "-" ); -- replace endashes with hyphens
pages = pages:gsub("&%w+;", "-" ); -- and replace HTML entities (– etc.) with hyphens; do we need to replace numerical entities like   and the like?
return pages;
end
--[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------
There are three options for math markup rendering that depend on the editor's math preference settings. These
settings are at [[Special:Preferences#mw-prefsection-rendering]] and are
PNG images
TeX source
MathML with SVG or PNG fallback
All three are heavy with HTML and CSS which doesn't belong in the metadata.
Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings
of the last editor to save the page.
This function gets the rendered form of an equation according to the editor's preference before the page is saved. It
then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so
that the page is saved without extraneous HTML/CSS markup and with a reasonably readable text form of the equation.
When a replacement is made, this function returns true and the value with replacement; otherwise false and the initial
value. To replace multipe equations it is necessary to call this function from within a loop.
]=]
local function coins_replace_math_stripmarker (value)
local stripmarker = cfg.stripmarkers['math'];
local rendering = value:match (stripmarker); -- is there a math stripmarker
if not rendering then -- when value doesn't have a math stripmarker, abandon this test
return false, value;
end
rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error)
if rendering:match ('alt="[^"]+"') then -- if PNG math option
rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text
elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$
rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text
elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option
rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text
else
return false, value; -- had math stripmarker but not one of the three defined forms
end
return true, value:gsub (stripmarker, rendering, 1);
end
--[[--------------------------< C O I N S _ C L E A N U P >----------------------------------------------------
Cleanup parameter values for the metadata by removing or replacing invisible characters and certain HTML entities.
2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content
when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29
TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible
characters table?
]]
local function coins_cleanup (value)
local replaced = true; -- default state to get the do loop running
while replaced do -- loop until all math stripmarkers replaced
replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation
end
value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message
value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content
value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">'(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s
value = value:gsub (' ', ' '); -- replace entity with plain space
value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space
if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero-width joiner characters from indic script
value = value:gsub ('‍', ''); -- remove ‍ entities
value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen
end
value = value:gsub ('[\009\010\013 ]+', ' '); -- replace horizontal tab, line feed, carriage return with plain space
return value;
end
--[[--------------------------< C O I N S >--------------------------------------------------------------------
COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information.
]]
local function COinS(data, class)
if 'table' ~= type(data) or nil == next(data) then
return '';
end
for k, v in pairs (data) do -- spin through all of the metadata parameter values
if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed)
data[k] = coins_cleanup (v);
end
end
local ctx_ver = "Z39.88-2004";
-- treat table strictly as an array with only set values.
local OCinSoutput = setmetatable( {}, {
__newindex = function(self, key, value)
if is_set(value) then
rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } );
end
end
});
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn', 'journal', 'news', 'magazine'}) or
(in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or
('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier
if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'medrxiv', 'ssrn'}) then -- set genre according to the type of citation template we are rendering
OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite medrxiv, cite ssrn
elseif 'conference' == class then
OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set)
elseif 'web' == class then
OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set)
else
OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles
end
OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only
OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles
-- these used only for periodicals
OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall
OCinSoutput["rft.quarter"] = data.Quarter; -- single digits 1->first quarter, etc.
OCinSoutput["rft.chron"] = data.Chron; -- free-form date components
OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books
OCinSoutput["rft.issue"] = data.Issue;
OCinSoutput['rft.artnum'] = data.ArticleNumber; -- {{cite journal}} only
OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata
elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier
if 'report' == class or 'techreport' == class then -- cite report and cite techreport
OCinSoutput["rft.genre"] = "report";
elseif 'conference' == class then -- cite conference when Periodical not set
OCinSoutput["rft.genre"] = "conference";
OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book)
elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then
if is_set (data.Chapter) then
OCinSoutput["rft.genre"] = "bookitem";
OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title
else
if 'map' == class or 'interview' == class then
OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview
else
OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia
end
end
else -- {'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'}
OCinSoutput["rft.genre"] = "unknown";
end
OCinSoutput["rft.btitle"] = data.Title; -- book only
OCinSoutput["rft.place"] = data.PublicationPlace; -- book only
OCinSoutput["rft.series"] = data.Series; -- book only
OCinSoutput["rft.pages"] = data.Pages; -- book, journal
OCinSoutput["rft.edition"] = data.Edition; -- book only
OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation
else -- cite thesis
OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier
OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported)
OCinSoutput["rft.degree"] = data.Degree; -- dissertation only
OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation
end
-- NB. Not currently supported are "info:ofi/fmt:kev:mtx:patent", "info:ofi/fmt:kev:mtx:dc", "info:ofi/fmt:kev:mtx:sch_svc", "info:ofi/fmt:kev:mtx:ctx"
-- and now common parameters (as much as possible)
OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation
for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all?
if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end
local id = cfg.id_handlers[k].COinS;
if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry
OCinSoutput["rft_id"] = table.concat{ id, "/", v };
elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc. that have defined COinS keywords
OCinSoutput[ id ] = v;
elseif 'url' == id then -- for urls that are assembled in ~/Identifiers; |asin= and |ol=
OCinSoutput["rft_id"] = table.concat ({data.ID_list[k], "#id-name=", cfg.id_handlers[k].label});
elseif id then -- when cfg.id_handlers[k].COinS is not nil so urls created here
OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v, cfg.id_handlers[k].suffix or '', "#id-name=", cfg.id_handlers[k].label }; -- others; provide a URL and indicate identifier name as #fragment (human-readable, but transparent to browsers)
end
end
local last, first;
for k, v in ipairs( data.Authors ) do
last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki stripmarkers, non-printing or invisible characters
if k == 1 then -- for the first author name only
if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name
OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation
OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name
end
else -- for all other authors
if is_set(last) and is_set(first) then
OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation
elseif is_set(last) then
OCinSoutput["rft.au"] = last; -- book, journal, dissertation
end
-- TODO: At present we do not report "et al.". Add anything special if this condition applies?
end
end
OCinSoutput.rft_id = data.URL;
OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage };
-- TODO: Add optional extra info:
-- rfr_dat=#REVISION<version> (referrer private data)
-- ctx_id=<data.RawPage>#<ref> (identifier for the context object)
-- ctx_tim=<ts> (timestamp in format yyyy-mm-ddThh:mm:ssTZD or yyyy-mm-dd)
-- ctx_enc=info:ofi/enc:UTF-8 (character encoding)
OCinSoutput = setmetatable( OCinSoutput, nil );
-- sort with version string always first, and combine.
-- table.sort( OCinSoutput );
table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004"
return table.concat(OCinSoutput, "&");
end
--[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >--------------------------------------
Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules.
]]
local function set_selected_modules (cfg_table_ptr, utilities_page_ptr)
cfg = cfg_table_ptr;
has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from selected Module:Citation/CS1/Utilities module
is_set = utilities_page_ptr.is_set;
in_array = utilities_page_ptr.in_array;
remove_wiki_link = utilities_page_ptr.remove_wiki_link;
strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup;
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
make_coins_title = make_coins_title,
get_coins_pages = get_coins_pages,
COinS = COinS,
set_selected_modules = set_selected_modules,
}
4fe549c532af319223cc4d9da2c6d33a786131c1
Module:Footnotes
828
896
1983
1982
2023-10-01T10:44:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Footnotes]]
Scribunto
text/plain
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
--[[--------------------------< A R G S _ D E F A U L T >------------------------------------------------------
a table to specify initial values.
]]
local args_default = {
bracket_left = '',
bracket_right = '',
bracket_year_left = '',
bracket_year_right = '',
postscript = '',
page = '',
pages = '',
location = '',
page_sep = ", p. ",
pages_sep = ", pp. ",
ref = '',
template = 'harv', -- if template name not provided in {{#invoke:}} use this
};
--[[--------------------------< T A R G E T _ C H E C K >------------------------------------------------------
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside
a template that wraps another template; 'multiple targets' error may not be suppressed
]]
local function target_check (anchor_id, args)
local namespace = mw.title.getCurrentTitle().namespace;
local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');
local anchor_id_list = anchor_id_list_module.anchor_id_list;
local article_whitelist = anchor_id_list_module.article_whitelist;
local template_list = anchor_id_list_module.template_list;
local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');
local whitelist = whitelist_module.whitelist;
local special_patterns = whitelist_module.special_patterns;
local DNB_special_patterns = whitelist_module.DNB_special_patterns;
local DNB_template_names = whitelist_module.DNB_template_names;
if 10 == namespace then
return ''; -- automatic form of |no-tracking=yes; TODO: is this too broad?
end
local tally = anchor_id_list[anchor_id]; -- nil when anchor_id not in list; else a tally
local msg;
local category;
if not tally then
if args.ignore then
return ''; -- if ignore is true then no message, no category
end
if article_whitelist and article_whitelist[anchor_id] then -- if an article-local whitelist and anchor ID is in it
return ''; -- done
end
local wl_anchor_id = anchor_id; -- copy to be modified to index into the whitelist
if args.year then -- for anchor IDs created by this template (not in |ref=) that have a date
if args.year:match ('%d%l$') or -- use the date value to determine if we should remove the disambiguator
args.year:match ('n%.d%.%l$') or
args.year:match ('nd%l$') then
wl_anchor_id = wl_anchor_id:gsub ('%l$', ''); -- remove the disambiguator
end
end
local t_tbl = whitelist[wl_anchor_id]; -- get list of templates associated with this anchor ID
if t_tbl then -- when anchor ID not whitelisted t_tbl is nil
for _, t in ipairs (t_tbl) do -- spin through the list of templates associated with this anchor ID
if template_list[t] then -- if associated template is found in the list of templates in the article
return ''; -- anchor ID is whitlisted and article has matching template so no error
end
end
end
for _, pattern in ipairs (special_patterns) do -- spin through the spcial patterns and try to match
if anchor_id:match (pattern) then
return '';
end
end
for _, dnb_t in ipairs (DNB_template_names or {}) do -- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error
if template_list[dnb_t] then -- if the article has this DNB template
for _, pattern in ipairs (DNB_special_patterns) do -- spin through the DNB-specifiec wildcard patterns
if anchor_id:match (pattern) then -- and attempt a match
return ''; -- found a match
end
end
end
end
msg = 'no target: ' .. anchor_id; -- anchor_id not found
category = '[[Category:Harv and Sfn no-target errors]]';
elseif 1 < tally then
msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id; -- more than one anchor_id in this article
category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or ''; -- only categorize in article space
return '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category;
end
-- category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or ''; -- only categorize in article space
category = 0 == namespace and category or ''; -- only categorize in article space
--use this version to show error messages
-- return msg and '<span class="error harv-error" style="display: inline; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or '';
--use this version to hide error messages
return msg and '<span class="error harv-error" style="display: none; font-size:100%"> ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])</span>' .. category or '';
end
--[[--------------------------< I S _ Y E A R >----------------------------------------------------------------
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:
YYYY
n.d.
nd
c. YYYY
YYYY–YYYY (separator is endash)
YYYY–YY (separator is endash)
return true when param has a recognized form; false else
]]
local patterns_date= {
'^%d%d%d%d?%l?$',
'^n%.d%.%l?$',
'^nd%l?$',
'^c%. %d%d%d%d?%l?$',
'^%d%d%d%d–%d%d%d%d%l?$',
'^%d%d%d%d–%d%d%l?$',
}
local function is_year (param, args)
args.year = ''; -- used for harv error;
for _, pattern in ipairs (patterns_date) do
if mw.ustring.match (param, pattern) then
args.year = param; -- used for harv error;
return true;
end
end
end
--[[--------------------------< C O R E >----------------------------------------------------------------------
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)
]]
local function core( args )
local result;
local err_msg = ''
if args.P5 ~= '' then
if is_year (args.P5, args) then
result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});
else
args.P5 = ''; -- when P5 not a year don't include in anchor
result = table.concat ({args.P1, ' et al.'}); -- and don't render it
end
elseif args.P4 ~= '' then
if is_year (args.P4, args) then
result = table.concat ({args.P1, ', ', args.P2, ' & ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right}); -- three names and a year
else
result = table.concat ({args.P1, ' et al.'}); -- four names
end
elseif args.P3 ~= '' then
if is_year (args.P3, args) then
result = table.concat ({args.P1, ' & ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right}); -- two names and a year
else
result = table.concat ({args.P1, ', ', args.P2, ' ', ' & ', args.P3}); -- three names
end
elseif args.P2 ~= '' then
if is_year (args.P2, args) then
result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right}); -- one name and year
else
result = table.concat ({args.P1, ' & ', args.P2}); -- two names
end
else
result = args.P1; -- one name
end
-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')
-- and when no in-source location (no |p=, |pp=, or |loc=)
-- and when the first or only character in args.postscript is a dot
-- remove the author-date result trailing dot
-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)
if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then
result = result:gsub ('%.$', '');
end
if args.ref ~= 'none' then
local anchor_id;
if args.ref ~= '' then
anchor_id = mw.uri.anchorEncode (args.ref);
err_msg = target_check (anchor_id, args);
result = table.concat ({'[[#', anchor_id, '|', result, ']]'});
else
anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));
err_msg = target_check (anchor_id, args);
result = table.concat ({'[[#', anchor_id, '|', result, ']]'});
end
end
if args.page ~= '' then
result = table.concat ({result, args.page_sep, args.page});
elseif args.pages ~= ''then
result = table.concat ({result, args.pages_sep, args.pages});
end
if args.location ~= '' then
result = table.concat ({result, ', ', args.location});
end
result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' '); -- strip redundant spaces
return result .. err_msg;
end
--[[--------------------------< H Y P H E N _ T O _ D A S H >--------------------------------------------------
Converts a hyphen to a dash under certain conditions. The hyphen must separate
like items; unlike items are returned unmodified. These forms are modified:
letter - letter (A - B)
digit - digit (4-5)
digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)
letterdigit - letterdigit (A1-A5) (an optional separator between letter and
digit is supported – a.1-a.5 or a-1-a-5)
digitletter - digitletter (5a - 5d) (an optional separator between letter and
digit is supported – 5.a-5.d or 5-a-5-d)
any other forms are returned unmodified.
str may be a comma- or semicolon-separated list
This code copied from Module:Citation/CS1. The only modification is to require Module:Citation/CS1/Utilities
so that it has access to the functions is_set() and has_accept_as_written()
]]
local function hyphen_to_dash( str )
local utilities = require ('Module:Citation/CS1/Utilities'); -- only modification so that this function has access to is_set() and has_accept_as_written()
if not utilities.is_set (str) then
return str;
end
local accept; -- Boolean
str = str:gsub ('&[nm]dash;', {['–'] = '–', ['—'] = '—'}); -- replace — and – entities with their characters; semicolon mucks up the text.split
str = str:gsub ('-', '-'); -- replace HTML numeric entity with hyphen character
str = str:gsub (' ', ' '); -- replace entity with generic keyboard space character
local out = {};
local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any
for _, item in ipairs (list) do -- for each item in the list
item, accept = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of item
if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators
if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit)
item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter)
item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit
item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit
item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter
item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters
else
item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace
end
end
table.insert (out, item); -- add the (possibly modified) item to the output table
end
local temp_str = ''; -- concatenate the output table into a comma separated string
temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out
if accept then
temp_str = utilities.has_accept_as_written (str); -- when global markup removed, return original str; do it this way to suppress boolean second return value
return temp_str;
else
return temp_str; -- else, return assembled temp_str
end
end
--[[--------------------------< A R G S _ F E T C H >---------------------------------------------------------
Because all of the templates share a common set of parameters, a single common function to fetch those parameters
from frame and parent frame.
]]
local function args_fetch (frame, ps)
local args = args_default; -- create a copy of the default table
local pframe = frame:getParent(); -- point to the template's parameter table
for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any
args[k] = v;
end
args.postscript = pframe.args.postscript or pframe.args.ps or ps;
if 'none' == args.postscript then
args.postscript = '';
end
args.page = pframe.args.p or pframe.args.page or '';
args.pages = pframe.args.pp or pframe.args.pages or '';
args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';
args.location = pframe.args.loc or '';
args.ref = pframe.args.ref or pframe.args.Ref or '';
args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);
for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- loop through the five positional parameters and trim if set else empty string
args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';
end
if args.P5 and not is_year (args.P5, args) then
local i = 6; -- initialize the indexer to the sixth positional parameter
while pframe.args[i] do -- in case there are too many authors loop through the authors looking for a year
local v = mw.text.trim (pframe.args[i]); -- trim
if is_year (v, args) then -- if a year
args.P5 = v; -- overwrite whatever was in args.P5 with year
break; -- and abandon the search
end
i = i + 1; -- bump the indexer
end
end
return args;
end
--[[--------------------------< H A R V A R D _ C I T A T I O N >----------------------------------------------
common entry point for:
{{harvard citation}} aka {{harv}}
{{Harvard citation no brackets}} aka {{harvnb}}
{{harvcol}}
{{harvcolnb}}
{{harvcoltxt}}
{{Harvard citation text}} aka {{harvtxt}}
{{Harvp}}
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.
]]
local function harvard_citation (frame)
local args = args_fetch (frame, ''); -- get the template and invoke parameters; default postscript is empty string
return core (args);
end
--[[--------------------------< S T R I P _ U R L >------------------------------------------------------------
used by sfn() and sfnm(). This function fixes an issue with reference tooltip gadget where the tooltip is not displayed
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters The researved characters are:
!#$&'()*+,/:;=?@[]
]]
local function strip_url (pages)
local escaped_uri;
if not pages or ('' == pages) then
return pages;
end
for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do -- for each external link get the uri
escaped_uri = uri:gsub ("([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); -- save a copy with lua pattern characters escaped
uri = uri:gsub ("[!#%$&'%(%)%*%+,/:;=%?@%[%]%.%%]", ''); -- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'
pages = pages:gsub (escaped_uri, uri, 1); -- replace original uri with the stripped version
end
return pages;
end
--[[--------------------------< S F N >------------------------------------------------------------------------
entry point for {{sfn}} and {{sfnp}}
]]
local function sfn (frame)
local args = args_fetch (frame, '.'); -- get the template and invoke parameters; default postscript is a dot
local result = core (args); -- go make a CITEREF anchor
-- put it all together and then strip redundant spaces
local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');
return frame:extensionTag ({name='ref', args={name=name}, content=result});
end
--[[--------------------------< S F N M >----------------------------------------------------------------------
common entry point for {{sfnm}} and {{sfnmp}}
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.
]]
local function sfnm (frame)
local args = args_default; -- create a copy of the default table
local pframe = frame:getParent(); -- point to the template's parameter table
local n = 1; -- index of source; this is the 'n' in na1, ny, etc
local first_pnum = 1; -- first of a pair of positional parameters
local second_pnum = 2; -- second of a pair of positional parameters
local last_ps = 0; -- index of the last source with |nps= set
local last_index = 0; -- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering
local out = {}; -- table to hold rendered sources
local footnote = {'FOOTNOTE'}; -- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go
for k, v in pairs (frame.args) do -- override defaults with values provided in the #invoke: if any
args[k] = v;
end
while true do
if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then
break; -- no na1 or matching positional parameter so done
end
if pframe.args[table.concat ({n, 'a1'})] then -- does this source use named parameters?
for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- initialize for this source
args[v] = '';
end
for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- extract author and year parameters for this source
args[v] = pframe.args[table.concat ({n, 'a', i})] or ''; -- attempt to assign author name
if '' == args[v] then -- when there wasn't an author name
args[v] = pframe.args[table.concat ({n, 'y'})] or ''; -- attempt to assign year
break; -- done with author/date for this source
end
end
else -- this source uses positional parameters
args.P1 = mw.text.trim (pframe.args[first_pnum]); -- yes, only one author supported
args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or ''; -- when positional author, year must also be positional
for _, v in ipairs ({'P3', 'P4', 'P5'}) do -- blank the rest of these for this source
args[v] = '';
end
first_pnum = first_pnum + 2; -- source must use positional author and positional year
second_pnum = first_pnum + 1; -- bump these for possible next positional source
end
args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';
if 'none' == args.postscript then -- this for compatibility with other footnote templates; does nothing
args.postscript = '';
end
args.ref = pframe.args[table.concat ({n, 'ref'})] or ''; -- alternate reference for this source
args.page = pframe.args[table.concat ({n, 'p'})] or ''; -- insource locations for this source
args.pages = pframe.args[table.concat ({n, 'pp'})] or '';
args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';
args.location = pframe.args[table.concat ({n, 'loc'})] or '';
args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);
table.insert (out, core (args)); -- save the rendering of this source
for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do -- create the FOOTNOTE id
if '' ~= args[v] then
table.insert (footnote, args[v]);
end
end
for k, v in ipairs ({'page', 'pages', 'location'}) do -- these done separately so that we can strip uri-reserved characters from extlinked page numbers
if '' ~= args[v] then
table.insert (footnote, strip_url (args[v]))
end
end
last_index = n; -- flags used to select terminal postscript from nps or from end_ps
if '' ~= args.postscript then
last_ps = n;
end
n = n+1; -- bump for the next one
end
local name = table.concat (footnote):gsub ('%s+', ' '); -- put the footnote together and strip redundant space
args.end_ps = pframe.args.postscript or pframe.args.ps or '.'; -- this is the postscript for the whole not for the individual sources
if 'none' == args.end_ps then -- not an original sfnm parameter value; added for compatibility with other footnote templates
args.end_ps = '';
end
local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or args.end_ps});
return frame:extensionTag ({name='ref', args={name=name}, content=result});
end
--[[--------------------------< S F N R E F >------------------------------------------------------------------
implements {{sfnref}}
]]
local function sfnref (frame)
local args = getArgs (frame);
local out = {};
for i=1, 5 do -- get the first five args if there are five args
if args[i] then
out[i] = args[i];
else
break; -- less than 5 args break out
end
end
if 5 == #out then -- when we have seen five args there may bemore
local i = 6; -- initialize the indexer to the sixth positional parameter
while args[i] do -- in case there are too many authors loop through the authors looking for a year
if is_year (args[i], args) then -- if a year
out[5] = args[i]; -- overwrite whatever was in args[5] with year
break; -- and abandon the search
end
i = i + 1; -- bump the indexer
end
end
return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
harvard_citation = harvard_citation,
sfn = sfn,
sfnm = sfnm,
sfnref = sfnref,
};
6e6f14a1fb0053e5aed88c564fc13d570e2d5a03
Module:Footnotes/anchor id list
828
897
1985
1984
2023-10-01T10:44:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Footnotes/anchor_id_list]]
Scribunto
text/plain
require('strict');
local data = mw.loadData ('Module:Footnotes/anchor id list/data');
local whitelist = mw.loadData ('Module:Footnotes/whitelist');
local Lang_obj = mw.language.getContentLanguage(); -- used by template_list_add() to uppercase first letter of template name TODO: better way to do that?
local redirects_date = {
['date'] = true,
['datetomos'] = true,
['formatdate'] = true,
['isotodmymdy'] = true,
['isotomos'] = true,
}
local redirects_patent = { -- special case cs1-like templates because uses different parameters for name and date in anchor ID
['Cite patent'] = true,
['Citeref patent'] = true,
['Ref patent'] = true,
}
local redirects_sfnref = {
['sfnref'] = true,
['harvid'] = true,
}
local aliases_author = { -- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits
'last#',
'author#',
'surname#',
'author-last#',
'author#-last',
'subject#',
'host#',
}
local aliases_contributor = {
'contributor#',
'contributor-last#',
'contributor#-last',
'contributor-surname#',
'contributor#-surname',
}
local aliases_editor = {
'editor#',
'editor-last#',
'editor#-last',
'editor-surname#',
'editor#-surname',
}
local aliases_harvc_author = {
'last#',
'author#',
}
local aliases_inventor = { -- cite patent
'inventor#',
'inventor-last#',
'inventor#-last',
'inventor-surname#',
'inventor#-surname',
'invent#',
'invent-#',
}
local alias_patterns_date = { -- normal lua patterns for most cs1|2-like templates
'|%s*year%s*=%s*',
'|%s*date%s*=%s*',
'|%s*publication%-?date%s*=%s*',
'|%s*air%-?date%s*=%s*',
}
local alias_patterns_harvc_date = { -- normal lua patterns for harvc template
'|%s*anchor%-year%s*=%s*',
'|%s*year%s*=%s*',
}
local alias_patterns_patent_date = { -- normal lua patterns for cite patent templates
'|%s*issue%-date%s*=%s*',
'|%s*gdate%s*=%s*',
'|%s*publication%-date%s*=%s*',
'|%s*pubdate%s*=%s*',
}
local patterns_date = { -- normal lua patterns
-- '(%d%d%d%d–%d%d%d%d%l?)$', -- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab
'(%d%d%d%d)%D+(%d%d%d%d%l?)$', -- any range with four-digit years; with or without dab; not two captures
'^(%d%d%d%d–%d%d%l?)$', -- YYYY–YY two-digit year range; with or without dab
'^(c%. %d%d%d%d?%l?)$', -- three- or four-digit circa year; with or without dab
'(%d%d%d%d?%l?)$', -- three- or four-digit year at end of date (dmy or mdy); with or without dab
'^(%d%d%d%d?%l?)', -- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab
'^(n%.d%.%l?)$', -- 'no date' with dots; with or without dab
'^(nd%l?)$', -- 'no date' without dots; with or without dab
}
local patterns_tags = {
'<nowiki>.-</nowiki>',
'<!%-%-.-%-%->',
'<pre>.-</pre>',
'<syntaxhighlight.->.-</syntaxhighlight>',
'<source.->.-</source>', -- deprecated alias of syntaxhighlight tag
}
local template_skip = { -- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates
['Citation-attribution'] = true,
}
local Article_content;
local anchor_id_list = {}; -- exported tables
local template_list = {};
local article_whitelist = {};
--[[--------------------------< A R T I C L E _ C O N T E N T _ G E T >----------------------------------------
get article content, remove certain html-like tags and their content so that this code doesn't include any citation
templates inside the tags as valid tagets; they are not.
]]
local function article_content_get ()
if not Article_content then
Article_content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
for _, tag in ipairs (patterns_tags) do
Article_content = Article_content:gsub (tag, ''); -- remove certain html-like tags and their content
end
end
end
--[[--------------------------< S F N R E F _ G E T >----------------------------------------------------------
make an anchor id from the contents of {{sfnref}} or {{harvid}}. this function assumes that {{sfnref}} and {{harvid}}
are correctly formed.
]]
local function sfnref_get (template)
template = template:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim
local parts = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
local anchor_id = {};
if redirects_sfnref[parts[1]:lower()] then
anchor_id[1] = 'CITEREF';
else
return nil; -- not an sfnref or harvid template
end
local i = 2; -- indexer into parts{} table
local j = 2; -- indexer into anchor_id{} table which already has 'CITEREF' at [1]
while parts[i] and 7 > j do -- loop through what should be just positional parameters for names and year (2-6 four names and a date)
if not parts[i]:find ('=') then -- look for equal sign (named paraneter in a template that doesn't support named parameters)
anchor_id[j] = parts[i]; -- positional parameters are saved
j = j+1; -- bump the anchor_id{} indexer
end
i = i+ 1; -- bump the parts{} indexer
end
return table.concat (anchor_id, '');
end
--[[--------------------------< D A T E _ G E T >--------------------------------------------------------------
extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order. Does not error
check (that is left to the cs1|2 templates to do)
also gets date from |<date alias>={{date|...}}
]]
local function date_get (template, aliases)
local rvalue;
for _, pattern in ipairs (aliases) do -- spin through the date alias patterns
rvalue = tostring(template):match (pattern); -- is this |<date alias>= used (tostring() because something makes match() think template is a table)
if rvalue then
rvalue = tostring(template):match (pattern .. '(%b{})'); -- is rvalue a template?
if rvalue then
rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1'); -- strip bounding template markup and trim
local parts = mw.text.split (rvalue, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
if redirects_date[parts[1]:lower()] then -- if parts[1] names {{date}} or redirect
rvalue = parts[2]; -- assume that date template is properly formed, first positional parameter is the date
else
return ''; -- |date= holds some other template than {{date}} or redirect
end
else
rvalue = template:match (pattern .. '([^|}]+)');
if rvalue then -- if rvalue is something
rvalue = mw.text.trim (rvalue); -- trim it
end
if not rvalue or '' == rvalue then -- if rvale was nothing or trimed to nothing
rvalue = nil; -- ensure that it is unset so we can try the next parameter in the list
end
end
if rvalue then
for _, pattern in ipairs (patterns_date) do -- spin through the recognized date formats
-- date = rvalue:match (pattern); -- attempt to extract year portion according to the pattern
local date, date2 = rvalue:match (pattern); -- attempt to extract year portion according to the pattern; <date2> gets second year in any range
if date then
if date2 then -- when a second year
date = table.concat ({date, '–', date2}); -- build a date range
end
return date; -- matched so return;
end
end
break; -- found a date but it was malformed so abandon
end
end
end
return ''; -- no date param or date param doesn't hold a recognized date; empty string for concatenation
end
--[[--------------------------< V N A M E S _ G E T >----------------------------------------------------------
extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter.
splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma-
separated names (corporate)
]]
local function vnames_get (params, vparam)
local vnames = {}; -- first four author or editor names go here
local split = {}; -- temp table to assist in decoding accept-as-witten-markup
if params[vparam] then -- test for |vauthors= or |veditor=
split = mw.text.split (params[vparam], '%s*,%s*'); -- this will separate portions of ((Black, Brown, White, an Co.))
local i = 1; -- an indexer
while split[i] do
if split[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens
local name = split[i];
i=i+1; -- bump indexer to next segment
while split[i] do
name = name .. ', ' .. split[i]; -- concatenate with previous segments
if split[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parens
break; -- and done reassembling so
end
i=i+1; -- bump indexer
end
table.insert (vnames, name); -- and add accept-as-witten name to the vnames table
else
table.insert (vnames, split[i]); -- and add name to the vnames table
end
i=i+1; -- bump indexer
if 5 == i then break; end -- limit to four names
end
for i, vname in ipairs (vnames) do
if not vname:match ('%(%(.-%)%)') then -- without accept-this-value-as-written markup
vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1'); -- extract and save surname(s)
end
end
for i, vname in ipairs (vnames) do -- repeat, this time for accept-this-value-as-written markup
vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1'); -- remove markup if present and save the whole name
end
end
return 0 ~= #vnames and table.concat (vnames) or nil -- return a concatenation of the vnames; nil else
end
--[[--------------------------< N A M E S _ G E T >------------------------------------------------------------
cs1|2 makes anchor id from contributor, author, or editor name-lists in that order
get the names from the cs1|2 template; if there are no contributor names, try author names, then try editor names.
returns concatenated names in enumeration order when successful; nil else
empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not
present) are included as empty string with all other names
]]
local function names_get (params, aliases_list)
local names = {}; -- first four author or editor names go here
local enum_alias; -- alias with '#' replaced with a digit
for enum=1, 4 do -- four names only
for i, alias in ipairs (aliases_list) do
if not names[enum] then -- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum
enum_alias = alias:gsub ('#', enum); -- replace '#' to make 'lastn'
if 1 == enum then -- because |last= and last1= are exact aliases
if params[enum_alias] then -- test |last1= first
names[enum] = params[enum_alias]; -- found so save the value assigned to |last1=
break; -- next enum
else
enum_alias = alias:gsub ('#', ''); -- replace '#' to make 'last'
if params[enum_alias] then
names[enum] = params[enum_alias]; -- found so save the value assigned to |last=
break; -- next enum
end
end
else -- here for enum 2, 3, 4
if params[enum_alias] then
names[enum] = params[enum_alias]; -- found so save the value assigned to |lastn=
break; -- next enum
end
end
end
end
end
for enum=1, 4 do -- spin through the names table and
local name = names[enum];
if not name then -- when nameholding parameter n is not present (nil)
name = ''; -- convert to empty string for concatenation
end
name = name:gsub('%(%((.-)%)%)', '%1'); -- remove accept-as-written markup if present
names[enum] = name; -- save the modified name
end
local name_str = table.concat (names); -- concatenate the names
return '' ~= name_str and name_str or nil; -- return the concatenation if not empty string; nil else
end
--[[--------------------------< T E M P L A T E _ S T R I P >--------------------------------------------------
removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the
citation or harvc template.
Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear. cs1|2 does
not see the template markup but instead sees the result of the template as html. cs1|2 strips the html which
leaves the displayed value for the anchor id. We can't do that here so, because templates aren't allowed in
parameters, we simply discard any templates found in the cs1|2 template.
this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors,
|last2= empty -> CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, & Last3 YYYY' with CITEREFLast1Last3YYYY).
]]
local function template_strip (template)
template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1); -- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace)
template = template:gsub ('%b{}', ''); -- remove any templates from the cs1|2 template
return template;
end
--[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >----------------------------------
Returns a string where all of lua's magic characters have been escaped. This is important because functions like
string.gsub() treat their pattern and replace strings as patterns, not literal strings.
]]
local function escape_lua_magic_chars (argument)
argument = argument:gsub("%%", "%%%%"); -- replace % with %%
argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters
return argument;
end
--[=[-------------------------< W I K I L I N K _ S T R I P >--------------------------------------------------
Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and
harvc templates so here we remove any wiki markup:
[[link|label]] -> label
[[link]] -> link
]=]
local function wikilink_strip (template)
for wikilink in template:gmatch ('%[%b[]%]') do -- get a wikilink
template = template:gsub ('%[%b[]%]', '__57r1P__', 1); -- install a marker
if wikilink:match ('%[%[.-|(.-)%]%]') then
wikilink = wikilink:match ('%[%[.-|(.-)%]%]'); -- extract label from complex [[link|label]] wikilink
else
wikilink = wikilink:match ('%[%[(.-)%]%]'); -- extract link from simple [[link]] wikilinks
end
wikilink = escape_lua_magic_chars (wikilink); -- in case there are lua magic characters in wikilink
template = template:gsub ('__57r1P__', wikilink, 1); -- replace the marker with the appropriate text
end
return template;
end
--[[--------------------------< T E M P L A T E _ N A M E _ G E T >--------------------------------------------
return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace;
when the template is a sandbox the subpage portion of the template name is omitted from the returned template name
{{Cite book/new |...}} returns cite book
]]
local function template_name_get (template)
local template_name = template:match ('^{{%s*([^/|}]+)'); -- get template name; ignore subpages ~/new, ~/sandbox; parser functions
if not template_name or template_name:match ('^#') then -- parser functions, magic words don't count as templates
return nil; -- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this;
end;
template_name = template_name:gsub ('%s*$', ''); -- trim trailing whitespace; leading whitespace already removed
return Lang_obj:ucfirst (template_name); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?
end
--[[--------------------------< T E M P L A T E _ P A R A M S _ G E T >----------------------------------------
parse apart a template's parameters and store in the params table where key is the parameter's name and value is
the parameter's value; empty parameters are not saved
]]
local function template_params_get (template, params_t)
template = wikilink_strip (template); -- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id
-- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed
template = template_strip (template); -- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed
local temp_t = mw.text.split (template, '%s*|%s*'); --split on the pipe
for _, param in ipairs (temp_t) do
if param:find ('=', 1, true) then -- a named parameter?
local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)');
if v then -- there must be a value
if '' ~= v and not v:match ('^%s$') then -- skip when value is empty string or only whitespace
params_t[k] = mw.text.trim (v); -- add trimmed value else
end
end
end
end
end
--[[--------------------------< C I T E R E F _ M A K E _ H A R V C >------------------------------------------
makes anchor_id from {{harvc}} or redirects
]]
local function anchor_id_make_harvc (template)
local date = date_get (template, alias_patterns_harvc_date); -- get date; done here because might be in {{date}}; return date if valid; empty string else
local anchor_id;
local params = {}; -- table of harvc parameters
local id; -- custom anchor id for this {{harvc}} template
id = template:match ('|%s*id%s*=%s*(%b{})'); -- in case |id={{sfnref}}; done here because templates will be stripped
template_params_get (template, params); -- build a table of template parameters and their values; this strips wikilinks and templates
if id then -- when set is {{sfnref}} or {{harvid}} template
return sfnref_get (id); -- returns content of {{sfnref}} or {{harvid}}; nil else
end
if params.id then -- custom anchor for this {{harvc}} template (text)
return params.id; -- |id= value as written
end
anchor_id = names_get (params, aliases_harvc_author); -- get the harvc contributor names
if anchor_id then -- if names were gotten
return 'CITEREF' .. anchor_id .. date;
end
return nil; -- no names; no anchor_id
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ W R A P P E R >----------------------------------
for wrapper templates
inspect externally visible |ref= to decide what to do:
|ref= - empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters
|ref=harv - same as empty or missing
|ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters
|ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters
|ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?
|ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter
]]
local function anchor_id_make_wrapper (template)
local ref; -- content of |ref=
local template_name; -- name of the template
local anchor_id; -- the assembled anchor id from this template
local date;
local name_default;
local date_default;
local vol;
local params = {}; -- table of template parameters
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
if not template_name or template_skip[template_name] then
return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)
end
date = date_get (template, alias_patterns_date); -- get date; done here because might be in {{date}}
-- if '' == date then
-- date = whitelist.wrapper_templates[template_name][2] or ''; -- no externally visible date so get default date
-- end
ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template
if not ref then
if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value
ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value'
if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)
ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace
if '' == ref then -- trimming a string of whitespace makes an empty string
ref = nil; -- make empty ref same as missing ref
end
end
end
end
template_params_get (template, params); -- build a table of template parameters and their values
if whitelist.wrapper_templates[template_name][1] then -- is this wrapper a simple-default wrapper?
name_default = whitelist.wrapper_templates[template_name][1]; -- get the default names
date_default = whitelist.wrapper_templates[template_name][2]; -- get the default date
else
vol = params['volume'] or 'default';
if not whitelist.wrapper_templates[template_name][vol] then -- make sure this volume exists
vol = 'default'; -- doesn't exist, use default volume
end
name_default = whitelist.wrapper_templates[template_name][vol][1]; -- get the default names
date_default = whitelist.wrapper_templates[template_name][vol][2]; -- get the default date
end
if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty
anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names
names_get (params, aliases_author) or
vnames_get (params, 'vauthors') or -- |vauthors=
names_get (params, aliases_editor) or
vnames_get (params, 'veditors') or -- |veditors=
name_default; -- default names from whitelist
-- whitelist.wrapper_templates[template_name][1]; -- default names from whitelist
if '' == date then -- if date not provided in the template
date = date_default; -- use the default date from whitelist
end
if anchor_id then -- if names were gotten
anchor_id = 'CITEREF' .. anchor_id .. date;
end
elseif ref:match ('%b{}') then -- ref holds a template
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
elseif 'none' == ref then -- |ref=none
return nil; -- anchor id expicitly suppressed
else
anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter
end
return anchor_id; -- anchor_id text; nil else
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ C S 1 2 >----------------------------------------
for cs1|2 template and cs1-like templates
inspect |ref= to decide what to do:
|ref= - empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs
|ref=harv - get names and date from template parameters
|ref={{SfnRef|name|name|name|name|year}} - assemble an anchor id from {{sfnref}} positional parameters
|ref={{Harvid|name|name|name|name|year}} - assemble an anchor id from {{harvid}} positional parameters
|ref=none - skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?
|ref=<text> - save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter
]]
local function anchor_id_make_cs12 (template)
local ref; -- content of |ref=
local template_name; -- name of the template
local anchor_id; -- the assembled anchor id from this template
local date;
local params = {}; -- table of template parameters
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
if not template_name or template_skip[template_name] then
return nil; -- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)
end
if redirects_patent[template_name] then
date = date_get (template, alias_patterns_patent_date); -- get date; done here because might be in {{date}}
else
date = date_get (template, alias_patterns_date);
end
ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template
if not ref then
if template:match ('|%s*ref%s*=([^|}]+)') then -- |ref={{template}} not found; if there is a |ref= param with an assigned value
ref = template:match ('|%s*ref%s*=([^|}]+)'); -- get the value; whitespace is a 'value'
if ref then -- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)
ref = mw.text.trim (ref); -- something, could be just whitespace, so trim leading / trailing whitespace
if '' == ref then -- trimming a string of whitespace makes an empty string
ref = nil; -- make empty ref same as missing ref
end
end
end
end
template_params_get (template, params); -- build a table of template parameters and their values
if not ref then -- |ref= not set, might be cite LSA which doesn't support |ref=
if 'cite lsa' == template_name then
return 'CITEREF' .. (params.last or '') .. (params.year or ''); -- cite LSA always creates an anchor id using only |last= and |year= (no aliases)
end
end
if 'harv' == ref or not ref then -- |ref=harv specified or |ref= missing or empty
if redirects_patent[template_name] then -- if this is a cite patent template
anchor_id = names_get (params, aliases_inventor); -- inventor names only
else -- cs1|2 template
anchor_id = names_get (params, aliases_contributor) or -- get contributor, author, or editor names
names_get (params, aliases_author) or
vnames_get (params, 'vauthors') or -- |vauthors=
names_get (params, aliases_editor) or
vnames_get (params, 'veditors'); -- |veditors=
end
if anchor_id then -- if names were gotten
anchor_id = 'CITEREF' .. anchor_id .. date;
end
elseif ref:match ('%b{}') then -- ref holds a template
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
elseif 'none' == ref and not redirects_patent[template_name] then -- |ref=none; not supported by cite patent
return nil; -- anchor id expicitly suppressed
else
anchor_id = ref; -- |ref=<text> may match an anchor id override value in {{harv}} template |ref= parameter
end
return anchor_id; -- anchor_id text; nil else
end
--[[--------------------------< L I S T _ A D D >--------------------------------------------------------------
adds an <item> to <list> table; for anchor IDs, the boolean <encode> argument must be set true; no return value
]]
local function list_add (item, list, encode)
if item then -- if there was an item
if encode then -- for anchor IDs ...
item = mw.uri.anchorEncode (item); -- encode to remove wikimarkup, convert spaces to underscores etc
end
if not list[item] then -- if not already saved
list[item] = 1; -- save it
else -- here when this item already saved
list[item] = list[item] + 1; -- to indicate that there are multiple items
end
end
end
--[[--------------------------< A N C H O R _ I D _ M A K E _ A N C H O R >------------------------------------
make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of
anchors it may hold.
]]
local function anchor_id_make_anchor (template, anchor_id_list)
template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name
template = wikilink_strip (template); -- strip any wikilink markup (there shouldn't be any but just in case)
local params = {};
local anchor_id;
for param in template:gmatch ('%b{}') do -- loop through the template; remove and save templates (presumed to be sfnref or harvid)
table.insert (params, param); -- save it
template = template:gsub ('%b{}', '', 1); -- remove it from source template
end
for _, t in ipairs (params) do -- spin through the templates in params
anchor_id = sfnref_get (t); -- attempt to decode {{sfnref}} and {{harvid}}
if anchor_id then -- nil when not {{sfnref}} or {{harvid}}
list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list
end
end
template = template:gsub ('|%s*|', '|'); -- when pipe follows pipe with or without white space, remove extraneous pipe
template = template:gsub ('^|', ''):gsub('|$', ''); -- remove extraneous leading and trailing pipes
params = mw.text.split (template, '%s*|%s*'); -- split at the pipe and remove extraneous space characters
for _, t in ipairs (params) do -- spin through the anchor IDs
anchor_id = mw.text.trim (t); -- trim white space
if '' ~= anchor_id then -- should always have something
list_add (anchor_id, anchor_id_list, true); -- add anchor ID to the list
end
end
end
--[[--------------------------< T E M P L A T E _ L I S T _ A D D >--------------------------------------------
makes a list of templates use in the article.
]]
local function template_list_add (template)
local template = template:match ('{{%s*(.-)[|}]'); -- keep the case of the template - this is different from template_name_get()
if template and not template:match ('^#') then -- found a template or magic word; ignore magic words
template=mw.text.trim (template); -- trim whitespace
template = Lang_obj:ucfirst (template); -- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?
list_add (template, template_list); -- add to list with (unused) tally
end
end
--[[--------------------------< A N C H O R _ I D _ L I S T _ M A K E >----------------------------------------
makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates
Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper,
these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that
link correctly to those wrapper templates will incorrectly show error messages. Use |ignore-err=yes in the {{harv}},
{{sfn}}, and {{harvc}} templates to supress the error message.
creates a list of templates used in the article for use with the whitelist
creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}}
]]
local function anchor_id_list_make ()
article_content_get (); -- attempt to get this article's content
if '' == Article_content then -- when there is no article content
return ''; -- no point in continuing
end
local template; -- place to hold the template that we found
local template_name;
local anchor_id; -- place to hold an anchor id as it is extracted / decoded
local find_pattern = '%f[{]{{[^{]';
local tstart, tend = Article_content:find (find_pattern); -- find the first template; do not find template variables: {{{template var|}}}
while tstart do
template = Article_content:match ('%b{}', tstart); -- get the whole template
if not template then
break; -- template is nil for some reason (last template missing closing }} for example) so declare ourselves done
end
template_name = template_name_get (template); -- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox
template_list_add (template); -- add this template's name to the list
if data.known_templates_cs12 [template_name] then
anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template
list_add (anchor_id, anchor_id_list, true)
elseif data.known_templates_vcite [template_name] then
local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template
if ref then -- |ref={{template}}
anchor_id = sfnref_get (ref); -- returns content of {{sfnref}} or {{harvid}}; nil else
list_add (anchor_id, anchor_id_list, true);
else
local params = {};
template_params_get (template, params); -- build a table of template parameters and their values
anchor_id = params['ref']; -- when both set, vcite uses value from |ref=
if not anchor_id and params['harvid'] then
anchor_id = 'CITEREF' .. params['harvid']; -- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid=
end
list_add (anchor_id, anchor_id_list, true);
end
elseif data.known_templates_harvc [template_name] then
anchor_id = anchor_id_make_harvc (template); -- extract an anchor id from this template
list_add (anchor_id, anchor_id_list, true);
elseif data.known_templates_wikicite [template_name] then
local ref = template:match ('|%s*ref%s*=%s*(%b{})'); -- first look for |ref={{sfnref}} or |ref={{harvid}}
if ref then
anchor_id = sfnref_get (ref);
elseif template:match ('|%s*ref%s*=([^|}]+)') then
anchor_id = template:match ('|%s*ref%s*=([^|}]+)'); -- plain-text
elseif template:match ('|%s*id%s*=%s*(%b{})') then
ref = template:match ('|%s*id%s*=%s*(%b{})');
anchor_id = 'Reference-' .. sfnref_get (ref);
elseif template:match ('|%s*id%s*=([^|}]+)') then
anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)'); -- plain-text
else
anchor_id = nil; -- no matches, ensure that anchor_id has no value
end
if anchor_id then
list_add (anchor_id, anchor_id_list, true);
end
elseif data.known_templates_anchor [template_name] then
anchor_id_make_anchor (template, anchor_id_list); -- extract anchor ids from this template if any
elseif data.known_templates_sfn_whitelist [template_name] then
template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1); -- remove outer {{ and }} and template name
template = mw.text.trim (template, '%s|'); -- trim leading trailing white space and pipes
template = mw.text.split (template, '%s*|%s*'); -- make a table of the template's parameters
for _, anchor_id in ipairs (template) do -- spin through this template's parameter
if '' ~= anchor_id and not article_whitelist[anchor_id] then
anchor_id = mw.uri.anchorEncode (anchor_id)
article_whitelist[anchor_id] = 1; -- add to the whitelist
end
end
elseif template_name and whitelist.wrapper_templates[template_name] then
anchor_id = anchor_id_make_wrapper (template); -- extract an anchor id from this template if possible
list_add (anchor_id, anchor_id_list, true);
elseif template_name and template_name:match ('^Cit[ea]') then -- not known, not known wrapper; last gasp, try as cs1-like
anchor_id = anchor_id_make_cs12 (template); -- extract an anchor id from this template if possible
list_add (anchor_id, anchor_id_list, true);
end
tstart, tend = Article_content:find (find_pattern, tend); -- search for another template; begin at end of last search
end
mw.logObject (anchor_id_list, 'anchor_id_list');
mw.logObject (template_list, 'template_list');
mw.logObject (article_whitelist, 'article_whitelist');
return anchor_id_list;
end
--[[--------------------------< E X P O R T E D _ T A B L E S >------------------------------------------------
]]
return {
anchor_id_list = anchor_id_list_make(), -- table of anchor ids available in this article
article_whitelist = article_whitelist, -- table of anchor ids with false-positive error message to be suppressed
template_list = template_list, -- table of templates used in this article
}
a827820b3af4a53f9ce6c4a2293bd7f418785903
Module:Footnotes/anchor id list/data
828
898
1987
1986
2023-10-01T10:44:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Footnotes/anchor_id_list/data]]
Scribunto
text/plain
-- copied from Module:Ref info/data - maybe overkill here?
-- for this application make lists from the redirect lists and force all template names first character uppercase
require('strict');
--[[--------------------------< C S 1 _ T E M P L A T E _ P A T T E R N S >------------------------------------
These are patterns for cs1 templates and their redirects. These patterns exclude redirects that are vcite-like
which redirects should be deleted because vcite is not cs1.
]]
local cs1_template_patterns = { -- lua patterns of the cannonical names and redirects
'[Cc]ite ar[Xx]iv', -- arXiv is the canonical name
'[Cc]ite ArXiv',
'[Cc]ite AV media', -- canonical
'[Cc]ite audio', '[Cc]ite AV', '[Cc]ite AV ?Media', '[Cc]ite av media',
'[Cc]ite cd', '[Cc]ite DVD', '[Cc]ite dvd', '[Cc]ite film',
'[Cc]ite image', '[Cc]ite media', '[Cc]ite movie',
'[Cc]ite music video', '[Cc]ite radio', '[Cc]ite song',
'[Cc]ite ?video', '[Cc]ite visual', '[Cc]ite You[Tt]ube',
'[Cc]ita vídeo', -- non-English redirect; TODO: tally separately?
'[Cc]ite AV media notes', -- canonical
'[Cc]ite album[ %-]notes', '[Cc]ite av media notes',
'[Cc]ite DVD[ %-]notes', '[Cc]ite dvd%-notes', '[Cc]ite liner notes',
'[Cc]ite music release notes', '[Ll]iner notes',
'[Cc]ite bio[Rr]xiv', -- bioRxiv is the canonical form
'[Cc]ite [Bb]ook', -- book is the canonical form
'[Bb]ook cite', '[Bb]ook reference', '[Bb]ook reference url',
'[Cc] book', '[Cc]it book', '[Cc]ite books', '[Cc]ite chapter',
'[Cc]ite ebook', '[Cc]ite manual', '[Cc]ite page',
'[Cc]ite publication', '[Cc]ite score',
'[Cc]ite work', '[Cc]ite%-?book',
'[Bb]okref', '[Cc]itace monografie', '[Cc]itar livro', -- non-English redirects; TODO: tally separately?
'[Cc]iteer boek', '[Oo]uvrage', '[Rr]ef%-llibre', '서적 인용',
'[Cc]ite citeseerx', -- canonical
'[Cc]ite conference', -- canonical
'[Cc]ita conferenza', '[Cc]ite proceedings', '[Cc]onference reference', -- cita conferenza is non-English; TODO: tally separately?
'[Cc]ite ?encyclopedia', -- cite encyclopedia is the canonical name
'[Cc]ite contribution', '[Cc]ite dic', '[Cc]ite dictionary',
'[Cc]ite encyclopaedia', '[Cc]ite encyclopædia', '[Ee]ncyclopedia',
'[Cc]ite [Ee]pisode', -- episode is the canonical form
'[Cc]ite show',
'[Cc]ite interview', -- canonical
'[Cc]ite ?journal', -- cite journal is the canonical form
'[Cc] journal', '[Cc]itation journal', '[Cc]ite abstract',
'[Cc]ite document', '[Cc]ite Journal', '[Cc]ite journal zh',
'[Cc]ite ?paper', '[Vv]cite2 journal',
'[Cc]ita pubblicazione', '[Cc]itace periodika', '[Cc]itar jornal', -- non-English redirects; TODO: tally separately?
'[Cc]itar publicació', '[Cc]ytuj pismo', '[Tt]idskriftsref',
'Навод из стручног часописа', '저널 인용',
'[Cc]ite [Mm]agazine', -- magazine is the canonical form
'[Cc]ite mag', '[Cc]ite magazine article', '[Cc]ite newsletter',
'[Cc]ite periodical',
'[Cc]ite mailing ?list', -- mailing list is the canonical form
'[Cc]ite list',
'[Cc]ite maps?', -- map is the canonical form
'[Cc]ite[ %-]?news', -- cite news is the canonical form
'[Cc] news', '[Cc]it news', '[Cc]itation news', '[Cc]ite article',
'[Cc]ite n', '[Cc]ite new', '[Cc]ite newspaper', '[Cc]ite News',
'[Cc]ite news%-q', '[Cc]ite news2', '[Cc]itenewsauthor', '[Cc]ute news',
'[Cc]itar notícia', '[Hh]aber kaynağı', '[Tt]idningsref', 'استشهاد بخبر', -- non-English redirects; TODO: tally separately?
'뉴스 인용',
'[Cc]ite newsgroup', -- canonical
'[Cc]ite usenet',
'[Cc]ite podcast', -- canonical
'[Cc]ite [Pp]ress release', -- press release is the canonical form
'[Cc]ite media release', '[Cc]ite news release', '[Cc]ite pr',
'[Cc]ite press', '[Cc]ite press release\.', '[Cc]ite press[%-]?release',
'[Cc]ite report', -- canonical
'[Cc]ite serial', -- canonical
'[Cc]ite sign', -- canonical
'[Cc]ite plaque',
'[Cc]ite speech', -- canonical
'[Cc]ite ssrn', -- canonical
'[Cc]ite SSRN',
'[Cc]ite tech ?report', -- techreport is the canonical form
'[Cc]ite standard', '[Cc]ite technical report', '[Tt]echrep reference',
'[Cc]ite thesis', -- canonical
'[Cc]ite dissertation',
'[Cc]itar tese', -- non-English redirect; TODO: tally separately?
'[Cc]ite [Ww]eb', -- web is the canonical form
'[Cc] web', '[Cc]it web', '[Cc]ite blog', '[Cc]ite URL', '[Cc]ite url',
'[Cc]ite w', '[Cc]ite wb', '[Cc]ite we', '[Cc]ite web\.',
'[Cc]ite webpage', '[Cc]ite website', '[Cc]ite website article',
'[Cc]ite%-?web', '[Cc]itweb', '[Cc]w', '[Rr]ef web', '[Ww]eb citation',
'[Ww]eb cite', '[Ww]eb link', '[Ww]eb[ %-]reference', '[Ww]eblink',
'[Cc]hú thích web', '[Cc]ita web', '[Cc]itace elektronické monografie', -- non-English redirects; TODO: tally separately?
'[Cc]itat web', 'مرجع ويب', 'یادکرد وب', '웹 인용',
}
--[[--------------------------< C S 2 _ T E M P L A T E _ P A T T E R N S >------------------------------------
These are patterns for cs2 templates redirects.
]]
local cs2_template_patterns = { -- lua patterns of the cannonical names and redirects
'[Cc]itation',
'[Cc]ite', '[Cc]ite citation', '[Cc]ite study',
'[Cc]ite [Tt]echnical standard',
}
--[[--------------------------< V C I T E _ T E M P L A T E _ P A T T E R N S >--------------------------------
These are patterns for Vcite-family templates and their redirects.
]]
local vcite_template_patterns = {
'[Vv]cite book', -- canonical
'[Vv]ancite book', '[Vv]ancite report', '[Vv]cite encyclopedia',
'[Vv]cite report',
'[Vv]cite journal', -- canonical
'[Cc]it journal', '[Cc]it paper', '[Vv]ancite journal', '[Vv]cite paper',
'[Vv]cite news', -- canonical
'[Vv]ancite news',
'[Vv]cite web', -- canonical
'[Vv]ancite web',
}
--[[--------------------------< H A R V C _ T E M P L A T E _ P A T T E R N S >--------------------------------
These are patterns for the harvc template and its redirects.
]]
local harvc_template_patterns = {
'[Hh]arvc', -- canonical
'[Cc]itec',
}
--[[--------------------------< C S 1 _ L I K E _ T E M P L A T E _ P A T T E R N S >--------------------------
These are patterns for miscellaneous templates and their redirects that 'look like' cs1 templates (begin with cite ...)
Because they 'look like' cs1 templates they are handled as if they were cs1 templates. These templates are NOT
wrapper templates; names and dates are always to be extracted from the article instantiation of the template.
]]
local cs1_like_template_patterns = {
'[Cc]ite LSA', -- canonical
}
--[[--------------------------< W I K I C I T E _ T E M P L A T E _ P A T T E R N S >--------------------------
These are patterns for the wikicite template and its redirects.
]]
local wikicite_template_patterns = {
'[Ww]ikicite', -- canonical
}
--[[--------------------------< A N C H O R _ T E M P L A T E _ P A T T E R N S >------------------------------
These are patterns for the anchor template and its redirects.
]]
local anchor_template_patterns = {
'[Aa]nchors?', -- anchor is canonical form
'[Aa]nchor for redirect',
'[Aa]nchro',
'[Aa]ncor',
}
--[[--------------------------< S F N _ W H I T E L I S T _ P A T T E R N S >----------------------------------
These are patterns for the anchor template and its redirects.
]]
local sfn_whitelist_patterns = {
'[Ss]fn whitelist', -- canonical
'[Hh]arv whitelist',
}
--[[--------------------------< K N O W N _ T E M P L A T E S >------------------------------------------------
These tables are created from the *_template_patterns tables. To make these tables, entries in the source tables
are evaluated to replace lua patterns with the appropriate characters to create names for the output tables.
First charqacter is always uppercase
For example:
[Cc]ite ar[Xx]iv
becomes
Cite arXiv
Cite arxiv
]]
local known_templates_cs12 = {}; -- the exported tables
local known_templates_vcite = {};
local known_templates_harvc = {};
local known_templates_wikicite = {};
local known_templates_anchor = {};
local known_templates_sfn_whitelist = {};
local function add_stripped (list, name)
if not list[name] then
list[name] = true;
end
end
local function pattern_convert (pattern, list)
local lead, tail, c, l, name;
local first_char_patterns = {
'^%[(%a)%a%]', -- leading character (usually uppercase)
'^%[%a(%a)%]', -- leading character (usually lowercase)
}
c = tostring (pattern:match ('%u')); -- tostring() required because I don't know why; lua chokes complaining that c is not a string
name = pattern:gsub ('^%[%a%a%]', c); -- replace bracketed first character [Xx] with selected character from the match
if name:match ('(.-)%[(%a)(%a)%](.*)') then -- mixed case optional letters
lead, c, l, tail = name:match ('(.-)%[(%a)(%a)%](.*)');
add_stripped (list, lead .. c .. tail); -- uppercase
add_stripped (list, lead .. l .. tail); -- lowercase
elseif name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$') then -- [ %-]?
lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$');
add_stripped (list, lead .. tail); -- neither char
add_stripped (list, lead .. ' ' .. tail); -- space
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$') then -- [%-]?
lead, c, tail = name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$');
add_stripped (list, lead .. tail); -- no hyphen
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%[]+)(%[ %%%-%])(.+)$') then -- [ %-]
lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%])(.+)$');
add_stripped (list, lead .. ' ' .. tail); -- space
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^([^%?]+)(%%%-%?)(.+)$') then -- %-?
lead, c, tail = name:match ('^([^%?]+)(%%%-%?)(.+)$');
add_stripped (list, lead .. tail); -- no hyphen
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^(.-)(%%%-)(.+)$') then -- %-
lead, c, tail = name:match ('^(.-)(%%%-)(.+)$');
add_stripped (list, lead .. '-' .. tail); -- hyphen
elseif name:match ('^(.-)(.)%?(.*)$') then -- .?
lead, c, tail = name:match ('^(.-)(.)%?(.*)$');
add_stripped (list, lead .. tail); -- no character
add_stripped (list, lead .. c .. tail); -- character
else
add_stripped (list, name); -- no patterns so save as is
end
end
for _, t in ipairs ({
{cs1_template_patterns, known_templates_cs12},
{cs2_template_patterns, known_templates_cs12},
{cs1_like_template_patterns, known_templates_cs12},
{vcite_template_patterns, known_templates_vcite},
{harvc_template_patterns, known_templates_harvc},
{wikicite_template_patterns, known_templates_wikicite},
{anchor_template_patterns, known_templates_anchor},
{sfn_whitelist_patterns, known_templates_sfn_whitelist},
}) do
for _, pattern in ipairs (t[1]) do -- for each patern in *_template_patterns
pattern_convert (pattern, t[2]) -- convert and store in known_templates_*
end
end
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return
{
known_templates_anchor = known_templates_anchor,
known_templates_cs12 = known_templates_cs12,
known_templates_harvc = known_templates_harvc,
known_templates_vcite = known_templates_vcite,
known_templates_wikicite = known_templates_wikicite,
known_templates_sfn_whitelist = known_templates_sfn_whitelist,
}
29b949b2a7e0e2aedfb7399749d699512125a378
Module:Footnotes/whitelist
828
899
1989
1988
2023-10-01T10:44:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Footnotes/whitelist]]
Scribunto
text/plain
--[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S >----------------------------
A list of wrapper templates by their canonical names – spelling and capitalization is important. Each wrapper
template has a table of two values: [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is
the default year. This table is indexed indirectly through the wrapper_templates table.
This table is not available externally.
]]
local wrapper_template_defaults = { -- keys are canonical template names
['Americana'] = {'Rines', '1920'}, -- tables with default name and default year
['Cite EB1911'] = {'Chisholm', '1911'}, -- tables with default name and default year
['EB1911'] = {'Chisholm', '1911'},
['EI3'] = {'FleetKrämerMatringeNawas', ''},
['ODNB'] = {'', ''}, -- there is no default anchor ID; this forces evaluation of {{cite ODNB}} redirects
}
--[[--------------------------< W R A P P E R _ T E M P L A T E _ D E F A U L T S _ V O L >--------------------
For wrapper templates that use |volume= to specify default name (often editor names) and year. Wrapper templates
are indexed by their canonical names – spelling and capitalization is important. Each wrapper template has a table
of values for every volume. Volumes may be indexed by Arabic or Roman numerals. Each volume index has a table of
twp values" [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year. Each
wrapper template in this table must have a ['default'] key for those occasions when |volume= is omitted or empty.
This table is indexed indirectly through the wrapper_templates table.
This table is not available externally.
]]
local wrapper_template_defaults_vol = { -- primary keys are canonical template names; TODO: do these keys have to be canonical template names?
['Cite Catholic Encyclopedia'] = { -- secondary keys are volume
['1'] = {'Herbermann', '1907'},
['2'] = {'Herbermann', '1907'},
['3'] = {'Herbermann', '1908'},
['4'] = {'Herbermann', '1908'},
['5'] = {'Herbermann', '1909'},
['6'] = {'Herbermann', '1909'},
['7'] = {'Herbermann', '1910'},
['8'] = {'Herbermann', '1910'},
['9'] = {'Herbermann', '1910'},
['10'] = {'Herbermann', '1911'},
['11'] = {'Herbermann', '1911'},
['12'] = {'Herbermann', '1911'},
['13'] = {'Herbermann', '1912'},
['14'] = {'Herbermann', '1912'},
['15'] = {'Herbermann', '1912'},
['default'] = {'Herbermann', '1913'},
},
['Cite EB9'] = {
['1'] = {'Baynes', '1878'}, ['I'] = {'Baynes', '1878'},
['2'] = {'Baynes', '1878'}, ['II'] = {'Baynes', '1878'},
['3'] = {'Baynes', '1878'}, ['III'] = {'Baynes', '1878'},
['4'] = {'Baynes', '1878'}, ['IV'] = {'Baynes', '1878'},
['5'] = {'Baynes', '1878'}, ['V'] = {'Baynes', '1878'},
['6'] = {'Baynes', '1878'}, ['VI'] = {'Baynes', '1878'},
['7'] = {'Baynes', '1878'}, ['VII'] = {'Baynes', '1878'},
['8'] = {'Baynes', '1878'}, ['VIII'] = {'Baynes', '1878'},
['9'] = {'Baynes', '1879'}, ['IX'] = {'Baynes', '1879'},
['10'] = {'Baynes', '1879'}, ['X'] = {'Baynes', '1879'},
['11'] = {'BaynesSmith', '1880'}, ['XI'] = {'BaynesSmith', '1880'},
['12'] = {'BaynesSmith', '1881'}, ['XII'] = {'BaynesSmith', '1881'},
['13'] = {'BaynesSmith', '1881'}, ['XIII'] = {'BaynesSmith', '1881'},
['14'] = {'BaynesSmith', '1882'}, ['XIV'] = {'BaynesSmith', '1882'},
['15'] = {'BaynesSmith', '1883'}, ['XV'] = {'BaynesSmith', '1883'},
['16'] = {'BaynesSmith', '1883'}, ['XVI'] = {'BaynesSmith', '1883'},
['17'] = {'BaynesSmith', '1884'}, ['XVII'] = {'BaynesSmith', '1884'},
['18'] = {'BaynesSmith', '1885'}, ['XVIII'] = {'BaynesSmith', '1885'},
['19'] = {'BaynesSmith', '1885'}, ['XIX'] = {'BaynesSmith', '1885'},
['20'] = {'BaynesSmith', '1886'}, ['XX'] = {'BaynesSmith', '1886'},
['21'] = {'BaynesSmith', '1886'}, ['XXI'] = {'BaynesSmith', '1886'},
['22'] = {'BaynesSmith', '1887'}, ['XXII'] = {'BaynesSmith', '1887'},
['23'] = {'BaynesSmith', '1888'}, ['XXIII'] = {'BaynesSmith', '1888'},
['24'] = {'BaynesSmith', '1888'}, ['XXIV'] = {'BaynesSmith', '1888'},
['default'] = {'Baynes', '1875–1889'},
},
['Encyclopaedia of Islam, New Edition'] = {
['1'] = {'GibbKramersLévi-ProvençalSchacht', '1960'},
['2'] = {'LewisPellatSchacht', '1965'},
['3'] = {'LewisMénagePellatSchacht', '1971'},
['4'] = {'van_DonzelLewisPellatBosworth', '1978'},
['5'] = {'Bosworthvan_DonzelLewisPellat', '1986'},
['6'] = {'Bosworthvan_DonzelPellat', '1991'},
['7'] = {'Bosworthvan_DonzelHeinrichsPellat', '1993'},
['8'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1995'},
['9'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1997'},
['10'] = {'BearmanBianquisBosworthvan_Donzel', '2000'},
['11'] = {'BearmanBianquisBosworthvan_Donzel', '2002'},
['12'] = {'BearmanBianquisBosworthvan_Donzel', '2004'},
['atlas'] = {'Brice', '1981'},
['abridged'] = {'van_Donzel', '1994'},
['default'] = {'BearmanBianquisBosworthvan_Donzel', '1960–2005'},
},
['New Cambridge Medieval History'] = {
['1'] = {'Fouracre', '2005'},
['2'] = {'McKitterick', '1995'},
['3'] = {'Reuter', '2000'},
['4a'] = {'LuscombeRiley-Smith', '2004'},
['4b'] = {'LuscombeRiley-Smith', '2004'},
['5'] = {'Abulafia', '1999'},
['6'] = {'Jones', '2000'},
['7'] = {'Allmand', '1998'},
['default'] = {'', '1995–2005'},
},
['The History of al-Tabari'] = {
['1'] = {'Rosenthal', '1989'},
['2'] = {'Brinner', '1986'},
['3'] = {'Brinner', '1991'},
['4'] = {'Perlmann', '1987'},
['5'] = {'Bosworth', '1999'},
['6'] = {'WattMcDonald', '1989'},
['7'] = {'McDonald', '1987'},
['8'] = {'Fishbein', '1997'},
['9'] = {'Poonawala', '1990'},
['10'] = {'Donner', '1993'},
['11'] = {'Blankinship', '1993'},
['12'] = {'Friedmann', '1992'},
['13'] = {'Juynboll', '1989'},
['14'] = {'Smith', '1994'},
['15'] = {'Humphreys', '1990'},
['16'] = {'Brockett', '1997'},
['17'] = {'Hawting', '1996'},
['18'] = {'Morony', '1987'},
['19'] = {'Howard', '1990'},
['20'] = {'Hawting', '1989'},
['21'] = {'Fishbein', '1990'},
['22'] = {'Rowson', '1989'},
['23'] = {'Hinds', '1990'},
['24'] = {'Powers', '1989'},
['25'] = {'Blankinship', '1989'},
['26'] = {'Hillenbrand', '1989'},
['27'] = {'Williams', '1985'},
['28'] = {'McAuliffe', '1995'},
['29'] = {'Kennedy', '1990'},
['30'] = {'Bosworth', '1989'},
['31'] = {'Fishbein', '1992'},
['32'] = {'Bosworth', '1987'},
['33'] = {'Bosworth', '1991'},
['34'] = {'Kraemer', '1989'},
['35'] = {'Saliba', '1985'},
['36'] = {'Waines', '1992'},
['37'] = {'Fields', '1987'},
['38'] = {'Rosenthal', '1985'},
['39'] = {'Landau-Tasseron', '1998'},
['40'] = {'Popovkin', '2007'},
['default'] = {'Yarshater', '1985–2007'},
},
}
--[[--------------------------< W R A P P E R _ T E M P L A T E S >--------------------------------------------
A list of wrapper templates and their redirects – spelling and capitalization is important; first character is
always uppercase. Each wrapper template gets its value from a k/v pair in the wrapper_template_defaults table.
article reader queries this table to see if template_name is a wrapper template
]]
local wrapper_templates = { -- keys are names of wrapper templates and their redirects
['Americana'] = wrapper_template_defaults['Americana'], -- canonical name; this template calls Cite Americana
['Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['1913Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Catholic encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CatholicEncyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CE13'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite Americana'] = wrapper_template_defaults['Americana'], -- canonical name
['Cite Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['CathEncy'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite Catholic Encyclopædia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],
['Cite EB1911'] = wrapper_template_defaults['Cite EB1911'], -- canonical name
['1911EB'] = wrapper_template_defaults['Cite EB1911'], -- redirects
['EB1911 cite'] = wrapper_template_defaults['Cite EB1911'],
['Wikisource1911Enc Citation'] = wrapper_template_defaults['Cite EB1911'],
['Wikisource1911Enc citation'] = wrapper_template_defaults['Cite EB1911'],
['Cite EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical
['Eb9'] = wrapper_template_defaults_vol['Cite EB9'],
['Cite ODNB'] = wrapper_template_defaults['ODNB'], -- canonical
['Cite odnb'] = wrapper_template_defaults['ODNB'],
['DNBweb'] = wrapper_template_defaults['ODNB'],
['OBDNweb'] = wrapper_template_defaults['ODNB'],
['ODNB'] = wrapper_template_defaults['ODNB'],
['ODNBref'] = wrapper_template_defaults['ODNB'],
['ODNBweb'] = wrapper_template_defaults['ODNB'],
['EB1911'] = wrapper_template_defaults['EB1911'], -- canonical name; this template calls Cite EB1911
['1911'] = wrapper_template_defaults['EB1911'], -- redirects
['1911s'] = wrapper_template_defaults['EB1911'],
['Britannica 1911'] = wrapper_template_defaults['EB1911'],
['Encyclopedia Britannica 1911'] = wrapper_template_defaults['EB1911'],
['Encyclopædia Britannica 1911'] = wrapper_template_defaults['EB1911'],
['EB9'] = wrapper_template_defaults_vol['Cite EB9'], -- canonical; this template calls Cite EB9
['Encyclopaedia of Islam, New Edition'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'], -- canonical
['EI2'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'],
['Encyclopaedia of Islam, THREE'] = wrapper_template_defaults['EI3'], -- canonical
['EI3'] = wrapper_template_defaults['EI3'],
['New Cambridge Medieval History'] = wrapper_template_defaults_vol['New Cambridge Medieval History'], -- canonical
['The History of al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- canonical
['The History of Al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects
['The History of al-Ṭabarī'] = wrapper_template_defaults_vol['The History of al-Tabari'], -- redirects
}
--[[--------------------------< T E M P L A T E _ N A M E S >--------------------------------------------------
This table holds the names of templates and the names of their redirects. Template names must be written exactly
as they are named at their templatespace page. This same also applies to redirects.
The indexes in this table are not critical but should be short and concise.
]]
local template_names = {
['ADB'] = {'Allgemeine Deutsche Biographie', 'Cite ADB'},
['Butt_Stations'] = {'Butt-Stations', 'Butt-stations'},
['Cam_Hist_Iran'] = {'Cambridge History of Iran', 'The Cambridge History of Iran'},
['DNB'] = {'Cite DNB', 'DNB', 'DNB Cite', 'Cite DNBSupp', 'DNBSupp', 'Cite DNB12', 'Cite DNBIE', 'DNB12', 'DNBIE', 'DNBfirst'},
['ME-ref'] = {'ME-ref', 'Me-ref'},
['ODB'] = {'ODB', 'Oxford Dictionary of Byzantium'},
['ODLA'] = {'ODLA', 'Oxford Dictionary of Late Antiquity'},
['NDB'] = {'Cite NDB', 'NDB'},
['Iranica'] = {'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},
}
--[[--------------------------< S P E C I A L _ P A T T E R N S >----------------------------------------------
Lua patterns. These are scanned sequentially which costs time and processing far and above the time and processing
needed to index into whitelist{}. Do not create a pattern here if a normal whitelist entry or entries can be created.
]]
local special_patterns = {
'CITEREFACAD%u%u%u?%u?%d+%u%u?', -- {{Acad}} ID appears to be 2-4 letters, then 3 numbers, then 1-2 letters
'CITEREFAHD%d+', -- {{Cite AHD}}
'CITEREFHistoric_England%d+', -- {{National Heritage List for England}} & {{PastScape}}
'CITEREFHistoric_Environment_Scotland%u%u%u?%u?%d', -- {{Historic Environment Scotland}} %u can be BTL, GLD, HMPA, LB, SM
'CITEREFQHR%d+', -- {{Cite QHR}}
'CITEREF[%d%a_%pöüäß→]+_at_Bach_Digital', -- {{BDh}}
'CITEREF[BR]GBl_[12]%d%d%d%-?I?I?%/%d+', -- {{Cite Austrian gazette}}
'CITEREFStGBl_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}}
'CITEREFGBlÖ_[12]%d%d%d%/%d+', -- {{Cite Austrian gazette}}
}
--[[--------------------------< D N B _ S P E C I A L _ P A T T E R N S >--------------------------------------
Lua patterns. Note at special_patterns applies. These for the DNB templates only; these will be tried only when
there is a DNB template in the article.
Pretty much any author name during the period 1885–1901 inclusive, and 1912.
The DNBIE was published in 1903, and Template:DNBIE says that its use is deprecated, but we do not fight that battle here.
]]
local DNB_special_patterns = {
'CITEREF%a[%a%-_\']*188[5-9]', -- 1885–1889
'CITEREF%a[%a%-_\']*189%d', -- 1890–1899
'CITEREF%a[%a%-_\']*190[0-1]', -- 1900–1901
'CITEREF%a[%a%-_\']*1903', -- 1903 IE
'CITEREF%a[%a%-_\']*1912', -- 1912 supplement
}
--[[--------------------------< W H I T E L I S T >------------------------------------------------------------
This is a list of anchor IDs known to be associated with specific wrapper templates. The anchor ID serves as an
index into the table. The assigned value is another table that lists the associated template and any redirects.
Except for year disambiguators, anchor IDs must have the same form as the anchor creator makes; must be the
anchor-encoded form. Remove the year disambiguator.
Template names must be written exactly as they are named at their templatespace page. This same also applies to
redirects. Module:Footnotes reads the template names left to right so most-commonly-used template or redirect name
should appear first. When there are more than one name and when those templates have various anchor IDs the template
namelist should be added to the template_names{} table.
Note that references to Template:EB1911 are listed under "E" in the alphabetical list below to keep them organized.
]]
local whitelist = {
----------< # >----------
['CITEREF2013_Statistical_Yearbook_of_the_Republic_of_Croatia'] = {'Croatia Yearbook 2013'},
----------< A >----------
['CITEREFAGA_1884–1897'] = {'Schubert\'s compositions (references)'},
['CITEREFATOC2009'] = {'ATOCConnectingCommunitiesReportS10'},
['CITEREFAbaevBailey1985'] = template_names['Iranica'],
['CITEREFAbbas1988'] = template_names['Iranica'],
['CITEREFAbbas1989'] = template_names['Iranica'],
['CITEREFAbramowitzStegun1983'] = {'Abramowitz Stegun ref'},
['CITEREFActa_Lipsiensium1723'] = {'Bach\'s compositions (sources)'},
['CITEREFAdamsFranzosa2009'] = {'Adams Franzosa Introduction to Topology Pure and Applied'},
['CITEREFAdaschErnstKeim1978'] = {'Adasch Topological Vector Spaces'},
['CITEREFAffleck1978'] = {'Affleck-On Track'},
['CITEREFAhlgrimm1969'] = {'Bach\'s compositions (sources)'},
['CITEREFAhmadiNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFAhrons1927'] = {'Book-Ahrons-British Steam Railway Locomotive'},
['CITEREFAl-Kindi1912'] = {'The Governors and Judges of Egypt'},
['CITEREFAlbert_Schumann1886'] = {'Cite ADB'},
['CITEREFAlden1916'] = {'Shakespeare sonnets bibliography'},
['CITEREFAldrich1969'] = {'Aldrich-LocosGER7'},
['CITEREFAleksidze2018'] = template_names['ODLA'],
['CITEREFAlexiou2010'] = {'Cite flatiron'},
['CITEREFAlgar1983'] = template_names['Iranica'],
['CITEREFAlgar1989'] = template_names['Iranica'],
['CITEREFAlgar1990'] = template_names['Iranica'],
['CITEREFAlgar2003'] = template_names['Iranica'],
['CITEREFAlizadeh1990'] = template_names['Iranica'],
['CITEREFAllamaniPanagiotopoulou1978'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFAllcockDaviesle_FlemingMaskelyne1968'] = {'RCTS-LocosGWR-1'},
['CITEREFAllenBoddyBrownFry1970'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},
['CITEREFAllenBoddyBrownFry1971'] = {'RCTS-LocosLNER-8B', 'RCTS-LocosLNER'},
['CITEREFAllenBoddyBrownFry1983'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},
['CITEREFAmanat1998'] = template_names['Iranica'],
['CITEREFAmanat1999'] = template_names['Iranica'],
['CITEREFAmbartsumian2014'] = template_names['Iranica'],
['CITEREFAmerican_Railway_Association1922'] = {'1922 Locomotive Cyclopedia'},
['CITEREFAnderson1952'] = {'Naval Wars in the Levant 1559–1853'},
['CITEREFAndo2000'] = template_names['Iranica'],
['CITEREFAngelov2018'] = template_names['ODLA'],
['CITEREFAnwārEIr1985'] = template_names['Iranica'],
['CITEREFArkhangel'skiiPonomarev1984'] = {'Arkhangel\'skii Ponomarev Fundamentals of General Topology Problems and Exercises'},
['CITEREFArrey_von_Dommer1875'] = {'Cite ADB'},
['CITEREFAshraf2006'] = template_names['Iranica'],
['CITEREFAslanianBerberian2009'] = template_names['Iranica'],
['CITEREFAsmus1966'] = template_names['NDB'],
['CITEREFAsmussen1985'] = template_names['Iranica'],
['CITEREFAspreas1929'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFAtkins2007'] = {'Shakespeare sonnets bibliography'},
['CITEREFAube2011'] = template_names['Iranica'],
['CITEREFAudiKondevWangHuang2017'] = {'NUBASE2016'},
['CITEREFAvdoyan2018'] = template_names['ODLA'],
['CITEREFAwdry1990'] = {'Awdry-RailCo', 'Carnarvonshire Railway'},
['CITEREFAzarnoosh2021'] = template_names['Iranica'],
['CITEREFRamelli2018'] = {'Oxford Dictionary of Late Antiquity'},['CITEREFA_History_of_the_Crusades'] = {'Setton-A History of the Crusades'},
----------< B >----------
['CITEREFBabinger1962'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBabinger1978'] = {'Mehmed the Conqueror and His Time'},
['CITEREFBabinger1992'] = {'Mehmed the Conqueror and His Time'},
['CITEREFBachAgricola1754'] = {'Bach\'s compositions (sources)'},
['CITEREFBadura-SkodaBranscombe2008'] = {'Schubert\'s compositions (references)'},
['CITEREFBagley1999'] = {'Cite Cambridge History of China'},
['CITEREFBahramianHirtensteinGholami2013'] = {'Encyclopaedia Islamica'},
['CITEREFBalcer1990'] = template_names['Iranica'],
['CITEREFBaldwin1969'] = {'Setton-A History of the Crusades'},
['CITEREFBaldwin1985'] = {'Setton-A History of the Crusades'},
['CITEREFBaldwinKazhdan1991'] = template_names['ODB'],
['CITEREFBaldwinTalbot1991'] = template_names['ODB'],
['CITEREFBaltzer1916'] = {'Baltzer-Kolonialbahnen'},
['CITEREFBanach1932'] = {'Banach Théorie des Opérations Linéaires'},
['CITEREFBandy2021'] = template_names['Iranica'],
['CITEREFBartusis1991'] = template_names['ODB'],
['CITEREFBaxter1971'] = {'Baxter-BritishLocoCat1'},
['CITEREFBaxter1977'] = {'Baxter-BritishLocoCat1'},
['CITEREFBaxter1978'] = {'Baxter-BritishLocoCat2A'},
['CITEREFBaxter1979'] = {'Baxter-BritishLocoCat2B'},
['CITEREFBaxter1982'] = {'Baxter-BritishLocoCat3A', 'Baxter-BritishLocoCat3B'},
['CITEREFBaxter1984'] = {'Baxter-BritishLocoCat4'},
['CITEREFBaxter1986'] = {'Baxter-BritishLocoCat5A'},
['CITEREFBaxter1988'] = {'Baxter-BritishLocoCat5B'},
['CITEREFBaxter2012'] = {'Baxter-BritishLocoCat6'},
['CITEREFBeattie1986'] = template_names['Iranica'],
['CITEREFBeißwenger1991'] = {'Bach\'s compositions (sources)'},
['CITEREFBek2001'] = {'Cite Grove'},
['CITEREFBelke1996'] = {'Tabula Imperii Byzantini'},
['CITEREFBelkeMersisch1990'] = {'Tabula Imperii Byzantini'},
['CITEREFBelkeRestle1984'] = {'Tabula Imperii Byzantini'},
['CITEREFBellini2008'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBernardini2003'] = template_names['Iranica'],
['CITEREFBernhard_von_Poten1889'] = template_names['ADB'],
['CITEREFBernhard_von_Poten1898'] = template_names['ADB'],
['CITEREFBernjian2008'] = {'Encyclopaedia Islamica'},
['CITEREFBezilla1980'] = {'Bezilla-PRR-Electric-Traction'},
['CITEREFBianquis1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},
['CITEREFBickerman1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBierstedt1988'] = {'Bierstedt An Introduction to Locally Convex Inductive Limits'},
['CITEREFBiran2009'] = template_names['Iranica'],
['CITEREFBirken1976'] = {'Die Provinzen des Osmanischen Reiches'},
['CITEREFBivar1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBivar2003'] = template_names['Iranica'],
['CITEREFBlair2002'] = template_names['Iranica'],
['CITEREFBlair2021'] = template_names['Iranica'],
['CITEREFBlake1966'] = {'DisraeliRef'},
['CITEREFBlanken2019'] = {'Bach\'s compositions (sources)'},
['CITEREFBlankinship1994'] = {'The End of the Jihâd State', 'The End of the Jihad State'},
['CITEREFBlautSchulze2008'] = {'Bach\'s compositions (sources)'},
['CITEREFBloom2007'] = {'Cite Routledge Broadway', 'Cite Broadway Routledge', 'Cite Routledge Guide to Broadway', 'Routledge Guide to Broadway'},
['CITEREFBock1978'] = {'Audie-bock-directors'},
['CITEREFBodde1986'] = {'Cite Cambridge History of China'},
['CITEREFBoddyBrownFryHennigan1968'] = {'RCTS-LocosLNER-4', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1975'] = {'RCTS-LocosLNER-2B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1977'] = {'RCTS-LocosLNER-9A', 'RCTS-LocosLNER-9B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownFryHennigan1979'] = {'RCTS-LocosLNER-3A', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownHenniganHoole1984'] = {'RCTS-LocosLNER-6C', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownHenniganNeve1981'] = {'RCTS-LocosLNER-3B', 'RCTS-LocosLNER'},
['CITEREFBoddyBrownNeveYeadon1983'] = {'RCTS-LocosLNER-6B', 'RCTS-LocosLNER'},
['CITEREFBoddyFryHenniganHoole1990'] = {'RCTS-LocosLNER-10B', 'RCTS-LocosLNER'},
['CITEREFBoddyFryHenniganProud1963'] = {'RCTS-LocosLNER-1', 'RCTS-LocosLNER'},
['CITEREFBoddyNeveTeeYeadon1982'] = {'RCTS-LocosLNER-6A', 'RCTS-LocosLNER'},
['CITEREFBoddyNeveYeadon1973'] = {'RCTS-LocosLNER-2A', 'RCTS-LocosLNER'},
['CITEREFBody1989'] = {'Body-Railways-Vol2'},
['CITEREFBon1969'] = {'La Morée franque'},
['CITEREFBonebakker1997'] = template_names['Iranica'],
['CITEREFBonner2010'] = {'New Cambridge History of Islam'},
['CITEREFBonnett2005'] = {'Bonnett Practical Rail Engineering'},
['CITEREFBonporti1712'] = {'Bach\'s compositions (sources)'},
['CITEREFBooth2000'] = {'Shakespeare sonnets bibliography'},
['CITEREFBorsari1964'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFBossert1914'] = {'Schaff-Herzog'},
['CITEREFBosworth1968'] = template_names['Cam_Hist_Iran'],
['CITEREFBosworth1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBosworth1983'] = template_names['Iranica'],
['CITEREFBosworth1984'] = template_names['Iranica'],
['CITEREFBosworth1987'] = template_names['Iranica'],
['CITEREFBosworth1988'] = template_names['Iranica'],
['CITEREFBosworth1989'] = template_names['Iranica'],
['CITEREFBosworth1994'] = template_names['Iranica'],
['CITEREFBosworth1995'] = template_names['Iranica'],
['CITEREFBosworth1997'] = template_names['Iranica'],
['CITEREFBosworth1998'] = template_names['Iranica'],
['CITEREFBosworth2000'] = template_names['Iranica'],
['CITEREFBosworth2001'] = template_names['Iranica'],
['CITEREFBosworth2002'] = template_names['Iranica'],
['CITEREFBosworth2003'] = template_names['Iranica'],
['CITEREFBosworth2008'] = template_names['Iranica'],
['CITEREFBosworth2009'] = template_names['Iranica'],
['CITEREFBosworth2010'] = template_names['Iranica'],
['CITEREFBosworth2011'] = template_names['Iranica'],
['CITEREFBosworthCrane1984'] = template_names['Iranica'],
['CITEREFBottoMitchell2002'] = {'Cite ATT Broadway', 'Cite At This Theatre Broadway', 'Cite Broadway At This Theatre', 'Cite Broadway ATT'},
['CITEREFBourbaki1987'] = {'Bourbaki Topological Vector Spaces', 'Bourbaki Topological Vector Spaces Part 1 Chapters 1–5'},
['CITEREFBourbaki1989'] = {'Bourbaki General Topology Part I Chapters 1-4', 'Bourbaki General Topology Part II Chapters 5-10', 'Bourbaki Algebra I Chapters 1-3 Springer'},
['CITEREFBourbaki1994'] = {'Bourbaki EHM'},
['CITEREFBowen1928'] = {'The Life and Times of Ali ibn Isa'},
['CITEREFBowmanCameronGarnsey2005'] = {'Cambridge Ancient History'},
['CITEREFBoyce1983'] = template_names['Iranica'],
['CITEREFBoyce1986'] = template_names['Iranica'],
['CITEREFBoyce1989'] = template_names['Iranica'],
['CITEREFBoyce2000'] = template_names['Iranica'],
['CITEREFBoyce2009'] = template_names['Iranica'],
['CITEREFBoyd1970'] = {'Boyd-MidWales'},
['CITEREFBoyd1975'] = {'Boyd-FR1'},
['CITEREFBoyd1985'] = {'Boyd-NCaerns2Penrhyn'},
['CITEREFBoyd1986'] = {'Boyd-NCaerns3Dinorwic'},
['CITEREFBoyd1988'] = {'Boyd-SCaerns1'},
['CITEREFBoyd1989'] = {'Boyd-SCaerns2'},
['CITEREFBoyd1990'] = {'Boyd-NCaerns1'},
['CITEREFBradshaw1968'] = {'Bradshaw-1910April'},
['CITEREFBradshaw1985'] = {'Bradshaw-1922July'},
['CITEREFBradshaw2011'] = {'Bradshaw-1895December'},
['CITEREFBradshaw2012'] = {'Bradshaw-1850March'},
['CITEREFBrand1968'] = {'Byzantium Confronts the West'},
['CITEREFBrand1991'] = {'DBI', 'ODB', 'Oxford Dictionary of Byzantium'},
['CITEREFBray2010'] = {'Bray-SDJR'},
['CITEREFBrett2010'] = {'New Cambridge History of Islam'},
['CITEREFBriant1985'] = template_names['Iranica'],
['CITEREFBrosius2000'] = template_names['Iranica'],
['CITEREFBrown2000'] = template_names['Iranica'],
['CITEREFBrown2008'] = {'The Cambridge History of the Byzantine Empire'},
['CITEREFBrown2021'] = {'Cite Gaia EDR3'},
['CITEREFBrunner1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBrunner1983'] = template_names['Cam_Hist_Iran'],
['CITEREFBrunner1984'] = template_names['Iranica'],
['CITEREFBrunner1986'] = template_names['Iranica'],
['CITEREFBryan1886'] = {'Bryan (3rd edition)'},
['CITEREFBryan1889'] = {'Bryan (3rd edition)'},
['CITEREFBuhle1909'] = {'Bach\'s compositions (sources)'},
['CITEREFBulliet1984'] = template_names['Iranica'],
['CITEREFBulookbashiNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFBunbury1857'] = {'DGRG'},
['CITEREFBurant1987'] = {'Cite DCB'},
['CITEREFBurch1911'] = {'Burch Electric Traction'},
['CITEREFBurke1866'] = {'O\'Donnell family tree'},
['CITEREFBurn1985'] = template_names['Cam_Hist_Iran'],
['CITEREFBurrowsWallace1999'] = {'Cite gotham'},
['CITEREFBury1911'] = {'The Imperial Administrative System of the Ninth Century'},
['CITEREFBusse1975'] = template_names['Cam_Hist_Iran'],
['CITEREFBusse1982'] = template_names['Iranica'],
['CITEREFButcherNicholson2018'] = template_names['ODLA'],
['CITEREFButt1995'] = template_names['Butt_Stations'],
['CITEREFBöwering1995'] = template_names['Iranica'],
['CITEREFBürgelMottahedeh1988'] = template_names['Iranica'],
----------< C >----------
['CITEREFCIC1983'] = {'CIC1983bib'},
['CITEREFCalifornia1988'] = {'CA-Rail Passenger Development Plan-1988'},
['CITEREFCalmard1988'] = template_names['Iranica'],
['CITEREFCalmard1999'] = template_names['Iranica'],
['CITEREFCaltrans1984'] = {'Countrystudy'},
['CITEREFCameronWard-PerkinsWhitby2000'] = {'Cambridge Ancient History'},
['CITEREFCanepa2018'] = template_names['ODLA'],
['CITEREFCanny2008'] = {'O\'Donnell family tree'},
['CITEREFCappelCutlerKazhdan1991'] = template_names['ODB'],
['CITEREFCarl_von_Prantl1879'] = {'Cite ADB'},
['CITEREFCarlson2010'] = {'Dlmf'},
['CITEREFCaro1974'] = {'Cite Power Broker'},
['CITEREFCarpenter1977'] = template_names['ME-ref'],
['CITEREFCarpenter1981'] = template_names['ME-ref'],
['CITEREFCarra_de_VauxHodgson1965'] = {'EI2'},
['CITEREFCarter2006'] = {'Carter-RailwaysMotivePowerArgentina'},
['CITEREFCasserley1968'] = {'Casserley-joint'},
['CITEREFCasserleyJohnston1966'] = {'Casserley-LocoGrouping3'},
['CITEREFCasserleyJohnston1974'] = {'Casserley-LocoGrouping3', 'Casserley-LocoGrouping2', '0-7110-0554-0'},
['CITEREFCasway1984'] = {'O\'Donnell family tree'},
['CITEREFCavanna_Ciappina2001'] = {'DBI'},
['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley', 'MLCC'},
['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley'},
['CITEREFCawley2010'] = {'MLCC'},
['CITEREFCawley2011'] = {'MLCC'},
['CITEREFChaléardChanson-JabeurBéranger2006'] = {'Chaléard-Le cdf en Afrique'},
['CITEREFChambers1728'] = {'Cyclopaedia 1728'},
['CITEREFChasiotis1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFChaumont1985'] = template_names['Iranica'],
['CITEREFChaumont1986'] = template_names['Iranica'],
['CITEREFChaumont1987'] = template_names['Iranica'],
['CITEREFChaumont1990'] = template_names['Iranica'],
['CITEREFChaumontSchippmann1988'] = template_names['Iranica'],
['CITEREFCheyneBlack1899'] = {'Biblica', 'Cite Biblica'},
['CITEREFCheyneBlack1899–1903'] = {'Cite Biblica'},
['CITEREFCheyneBlack1901'] = {'Cite Biblica'},
['CITEREFCheyneBlack1902'] = {'Cite Biblica'},
['CITEREFCheyneBlack1903'] = {'Cite Biblica'},
['CITEREFChisholm1922'] = {'EB1922', 'Cite EB1922'},
['CITEREFChittick1997'] = template_names['Iranica'],
['CITEREFChkeidze2001'] = template_names['Iranica'],
['CITEREFChoniates1984'] = {'O City of Byzantium'},
['CITEREFChrista_Jost1999'] = template_names['NDB'],
['CITEREFChung1994'] = {'Country study'},
['CITEREFChurchmanHurst2001'] = {'Churchman & Hurst Railways of New Zealand'},
['CITEREFChurchman_&_Hurst2001'] = {'Churchman & Hurst Railways of New Zealand'},
['CITEREFChurella2013'] = {'Churella-PRR-1'},
['CITEREFClementsMcMahon2008'] = {'ClementsMcMahon-GSR Locomotives'},
['CITEREFClinker1978'] = {'Clinker-Stations'},
['CITEREFClinker1988'] = {'Clinker-Stations'},
['CITEREFCoates1990'] = {'Coates-Reading'},
['CITEREFColbyWilliams1916'] = {'New International Encyclopedia', 'NIE'},
['CITEREFColledgeWarlow2006'] = {'Colledge', 'Cite Colledge2006'},
['CITEREFColledgeWarlow2010'] = {'Cite Colledge2010'},
['CITEREFCollins2016'] = {'Cite Collins 2016'},
['CITEREFConolly1998'] = {'IanAllan-PreGroup-Atlas1998'},
['CITEREFConway1990'] = {'Conway A Course in Functional Analysis'},
['CITEREFCosentino2008'] = {'DBI'},
['CITEREFCoulthard-Clark2002'] = {'Australian Dictionary of Biography'},
['CITEREFCousin1910'] = {'A Short Biographical Dictionary of English Literature', 'Cite SBDEL'},
['CITEREFCox1967'] = {'Cox-Upper Darby'},
['CITEREFCox2011'] = {'Cox-Dixie'},
['CITEREFCrevier1993'] = {'Crevier 1993'},
['CITEREFCrockett2007'] = {'Australian Dictionary of Biography'},
['CITEREFCroke2018'] = template_names['ODLA'],
['CITEREFCrone1980'] = {'Slaves on Horses'},
['CITEREFCronin2011'] = template_names['Iranica'],
['CITEREFCroughtonKidnerYoung1982'] = {'Croughton-PrivateStations'},
['CITEREFCruickshanks1970'] = {'HistoryofParliament'},
['CITEREFCudahy2002'] = {'Cudahy-Hudson'},
['CITEREFCudahy2003'] = {'Cudahy-Subways'},
['CITEREFCurta2006'] = {'Southeastern Europe in the Middle Ages, 500–1250'},
----------< D >----------
['CITEREFDBI'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFDZS2015'] = {'Croatia Yearbook 2015'},
['CITEREFDadelsen1957'] = {'Bach\'s compositions (sources)'},
['CITEREFDaftary1990'] = {'Daftary-The Ismailis'},
['CITEREFDaftary2003'] = template_names['Iranica'],
['CITEREFDaftary2007'] = {'Daftary-The Ismailis'},
['CITEREFDaftary2015'] = template_names['Iranica'],
['CITEREFDaiber1988'] = template_names['Iranica'],
['CITEREFDandamayevShahbaziLecoq1986'] = template_names['Iranica'],
['CITEREFDaniel2000'] = template_names['Iranica'],
['CITEREFDaniel2010'] = {'New Cambridge History of Islam'},
['CITEREFDanielsDench1963'] = {'Daniels-NoMore'},
['CITEREFDanielsDench1973'] = {'Daniels-NoMore'},
['CITEREFDanner1975'] = template_names['Cam_Hist_Iran'],
['CITEREFDarleyCanepa2018'] = {'Oxford Dictionary of Late Antiquity'},
['CITEREFDaryaee2009'] = template_names['Iranica'],
['CITEREFDaryaee2018'] = template_names['ODLA'],
['CITEREFDaryaeeCanepa2018'] = template_names['ODLA'],
['CITEREFDavid1961'] = {'Bach\'s compositions (sources)'},
['CITEREFDavidson2010'] = {'HistoryofParliament'},
['CITEREFDavidsonThrush2010'] = {'HistoryofParliament'},
['CITEREFDavies1996'] = {'Davies-PLMLocoList'},
['CITEREFDavies1997'] = {'Davies-NordLocoList'},
['CITEREFDavies2001'] = {'Davies-EstLocoList3', 'Davies-ÉtatLocoList'},
['CITEREFDavies2003'] = {'Davies-SNCFLocoList'},
['CITEREFDaviesFirthLuckingThomas1966'] = {'RCTS-LocosGWR-10'},
['CITEREFDavud2018'] = {'Encyclopaedia Islamica'},
['CITEREFDavudNazerian2008'] = {'Encyclopaedia Islamica'},
['CITEREFDe_Negri1997'] = {'DBI'},
['CITEREFDemircan2010'] = {'TDV Encyclopedia of Islam'},
['CITEREFDeutsch1951'] = {'Schubert\'s compositions (references)'},
['CITEREFDeutsch1978'] = {'Schubert\'s compositions (references)'},
['CITEREFDeutsche_Autos,_Band_2,2001'] = {'Deutsche Autos-2'},
['CITEREFDeutsche_Autos,_Band_3,2001'] = {'Deutsche Autos-3'},
['CITEREFDeutsche_Autos,_Band_4,2001'] = {'Deutsche Autos-4'},
['CITEREFDeutsche_Autos,_Band_5,2001'] = {'Deutsche Autos-5'},
['CITEREFDeutsche_Autos,_Band_6,2001'] = {'Deutsche Autos-6'},
['CITEREFDewick2005'] = {'Dewick-Atlas'},
['CITEREFDiamonstein-Spielvogel2011'] = {'Cite landmarks'},
['CITEREFDickens2018'] = template_names['ODLA'],
['CITEREFDirksen1998'] = {'Bach\'s compositions (sources)'},
['CITEREFDirksen2010'] = {'Bach\'s compositions (sources)'},
['CITEREFDirksen2016'] = {'Bach\'s compositions (sources)'},
['CITEREFDixmier1984'] = {'Dixmier General Topology'},
['CITEREFDoerfer1989'] = template_names['Iranica'],
['CITEREFDoganis1930'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFDoleckiMynard2016'] = {'Dolecki Mynard Convergence Foundations Of Topology'},
['CITEREFDolkart1998'] = {'Cite morningside'},
['CITEREFDonner1995'] = template_names['Iranica'],
['CITEREFDonohue2003'] = {'The Buwayhid Dynasty in Iraq'},
['CITEREFDorin1972'] = {'Dorin-North Western'},
['CITEREFDow1962'] = {'Dow-GC2'},
['CITEREFDow1965'] = {'Dow-GC3'},
['CITEREFDow1985'] = {'Dow-GC1'},
['CITEREFDowney2007'] = {'Downey-Chicago'},
['CITEREFDrechsler2005'] = template_names['Iranica'],
['CITEREFDrummond1964'] = {'HistoryofParliament'},
['CITEREFDrury1985'] = {'Drury Historical Guide 1985'},
['CITEREFDrury1993'] = {'Drury-North American Steam'},
['CITEREFDuchesne-Guillemin1994'] = template_names['Iranica'],
['CITEREFDugundji1966'] = {'Dugundji Topology'},
['CITEREFDuke1995'] = {'Duke-Santa Fe-1'},
['CITEREFDukeKeilty1990'] = {'Duke-RDC'},
['CITEREFDumbarton_Oaks_Hagiography_Database'] = {'Dumbarton Oaks Hagiography Database'},
['CITEREFDunbar1969'] = {'Dunbar-Railroads'},
['CITEREFDuncan-Jones2010'] = {'Shakespeare sonnets bibliography'},
['CITEREFDunlop1895'] = {'O\'Donnell family tree'},
['CITEREFDunlop1985'] = template_names['Iranica'],
['CITEREFDunn2013'] = {'Dunn-Comeng-5'},
['CITEREFDurand-Guédy2008'] = template_names['Iranica'],
['CITEREFDurand-Guédy2010'] = template_names['Iranica'],
['CITEREFDurand-Guédy2013'] = {'Encyclopaedia Islamica'},
['CITEREFDurham1998'] = {'California\'s Geographic Names'},
['CITEREFDurrant1972'] = {'Durrant-Steam Locos Eastern Europe'},
['CITEREFDurrant1981'] = {'Durrant-Garratt-Rev'},
['CITEREFDurrantLewisJorgensen1981'] = {'Durrant-SteamAfrica'},
['CITEREFDömlingKohlhase1971'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1952'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1954'] = {'Bach\'s compositions (sources)'},
['CITEREFDürr1987'] = {'Bach\'s compositions (sources)'},
['CITEREFDürrJones2006'] = {'Bach\'s compositions (sources)'},
['CITEREFDürrKobayashi1998'] = {'Bach\'s compositions (sources)'},
['CITEREFde_Blois2000'] = template_names['Iranica'],
['CITEREFde_Planhol1987'] = template_names['Iranica'],
['CITEREFde_Planhol1988'] = template_names['Iranica'],
----------< E >----------
['CITEREFEIr.1994'] = template_names['Iranica'],
['CITEREFEarle2018'] = {'Gymnosperm Database'},
['CITEREFEbata2019'] = {'BDh'},
['CITEREFEbata2020'] = {'BDh'},
['CITEREFEbrahimKhodaverdian2018'] = {'Encyclopaedia Islamica'},
['CITEREFEdwards1995'] = {'Edwards Functional Analysis Theory and Applications'},
['CITEREFEichberg1976'] = {'Bach\'s compositions (sources)'},
['CITEREFEilers1983'] = template_names ['Cam_Hist_Iran'],
['CITEREFEkbal1991'] = template_names['Iranica'],
['CITEREFEl-Hibri2010'] = {'New Cambridge History of Islam'},
['CITEREFEldredgeHorenstein2014'] = {'Cite concrete'},
['CITEREFElsholz1982'] = {'Schubert\'s compositions (references)'},
['CITEREFElwell-Sutton1984'] = template_names['Iranica'],
['CITEREFEppstein1966'] = {'Bach\'s compositions (sources)'},
['CITEREFEppstein1982'] = {'Bach\'s compositions (sources)'},
['CITEREFEquasis'] = {'Csr', 'Cite ship register'},
['CITEREFEuDaly2009'] = {'Complete Book of North American Railroading'},
['CITEREFEuDalySchaferJessupBoyd2009'] = {'Complete Book of North American Railroading'},
----------< F >----------
['CITEREFFacella2021'] = template_names['Iranica'],
['CITEREFFang1943'] = {'Cite ECCP'},
['CITEREFFarinella2001'] = {'DBI'},
['CITEREFFatehi-NezhadAzarnooshNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFFatehi-nezhadRahimi2008'] = {'Encyclopaedia Islamica'},
['CITEREFFeder1958'] = {'Bach\'s compositions (sources)'},
['CITEREFFederal_Writers'_Project1939'] = {'Cite fednyc'},
['CITEREFFelixMadelung1995'] = template_names['Iranica'],
['CITEREFFernandez1983'] = {'Fernandez1983'},
['CITEREFFerneyhough1980'] = {'Ferneyhough-LMR'},
['CITEREFFesharaki2015'] = {'Encyclopaedia Islamica'},
['CITEREFFiaccadori1991'] = template_names['ODB'],
['CITEREFFikratUmar2008'] = template_names['Iranica'],
['CITEREFFine1991'] = {'The Early Medieval Balkans'},
['CITEREFFine1994'] = {'The Late Medieval Balkans'},
['CITEREFFletcher,_Great_Tank_Scandal'] = {'Book-Fletcher-Great Tank Scandal'},
['CITEREFFletcher,_Universal_Tank'] = {'Book-Fletcher-Universal Tank'},
['CITEREFFloor1992'] = template_names['Iranica'],
['CITEREFFloor2005'] = template_names['Iranica'],
['CITEREFFlora_of_North_America'] = {'EFloras'},
['CITEREFFlora_of_North_America2009'] = {'EFloras'},
['CITEREFFluckMarshallWilson1996'] = {'FluMarWil-LocRailCR'},
['CITEREFFonstad1991'] = template_names['ME-ref'],
['CITEREFForkelTerry1920'] = {'Bach\'s compositions (sources)'},
['CITEREFFornaçon,_Siegfried1957'] = template_names['NDB'],
['CITEREFForrestal1999'] = {'Forrestal-Wineries'},
['CITEREFForster1990'] = {'Cite DCB'},
['CITEREFFoss1991'] = template_names['ODB'],
['CITEREFFoster1971'] = template_names['ME-ref'],
['CITEREFFoster1996'] = {'Foster-Field Guide'},
['CITEREFFrailey2010'] = {'Frailey-Twilight'},
['CITEREFFranke1994'] = {'Cite Cambridge History of China'},
['CITEREFFranz_Schnorr_von_Carolsfeld1883'] = {'Cite ADB'},
['CITEREFFriedrich_Wilhelm_Bautz1975'] = {'BBKL'},
['CITEREFFriedrich_Wilhelm_Bautz1990'] = {'BBKL'},
['CITEREFFry1964'] = {'RCTS-LocosLNER-7', 'RCTS-LocosLNER'},
['CITEREFFry1966'] = {'RCTS-LocosLNER-5', 'RCTS-LocosLNER'},
['CITEREFFrye1975'] = template_names['Cam_Hist_Iran'],
['CITEREFFrye1983'] = template_names['Cam_Hist_Iran'],
['CITEREFFrye2004'] = template_names['Iranica'],
['CITEREFFubini2012'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFFudenbergTirole1991'] = {'Cite Fudenberg Tirole 1991'},
['CITEREFFultonHarris1991'] = {'Fulton-Harris'},
----------< G >----------
['CITEREFGarakaniBrown2013'] = {'Encyclopaedia Islamica'},
['CITEREFGardner2005'] = {'MSW3 Microbiotheria'},
['CITEREFGardoni2015'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGareyJohnson1979'] = {'Garey-Johnson'},
['CITEREFGarsoian2000'] = template_names['Iranica'],
['CITEREFGarsoian2004'] = template_names['Iranica'],
['CITEREFGarsoian2005'] = template_names['Iranica'],
['CITEREFGarth2003'] = template_names['ME-ref'],
['CITEREFGazette34205'] = {'London Gazette'},
['CITEREFGazette34339'] = {'London Gazette'},
['CITEREFGazette34390'] = {'London Gazette'},
['CITEREFGazette34427'] = {'London Gazette'},
['CITEREFGazette34558'] = {'London Gazette'},
['CITEREFGazette34870'] = {'London Gazette'},
['CITEREFGazette34978'] = {'London Gazette'},
['CITEREFGazette34989'] = {'London Gazette'},
['CITEREFGazette35037'] = {'London Gazette'},
['CITEREFGazette35107'] = {'London Gazette'},
['CITEREFGazette35134'] = {'London Gazette'},
['CITEREFGazette35284'] = {'London Gazette'},
['CITEREFGazette37560'] = {'London Gazette'},
['CITEREFGazette37590'] = {'London Gazette'},
['CITEREFGazette37598'] = {'London Gazette'},
['CITEREFGazette37610'] = {'London Gazette'},
['CITEREFGazette38020'] = {'London Gazette'},
['CITEREFGazette38611'] = {'London Gazette'},
['CITEREFGeanakoplos1959'] = {'Emperor Michael Palaeologus and the West'},
['CITEREFGeorg_von_Dadelsen1953'] = template_names['NDB'],
['CITEREFGhanoonparvar1989'] = template_names['Iranica'],
['CITEREFGhereghlou2009'] = template_names['Iranica'],
['CITEREFGhereghlou2016'] = template_names['Iranica'],
['CITEREFGhulamiyan2015'] = template_names['Iranica'],
['CITEREFGhulamiyan2015'] = {'Encyclopaedia Islamica'},
['CITEREFGiannasi1975'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGibb1923'] = {'The Arab Conquests in Central Asia'},
['CITEREFGignoux1983'] = template_names['Iranica'],
['CITEREFGignoux1994'] = template_names['Iranica'],
['CITEREFGil1997'] = {'A History of Palestine, 634-1099', 'A History of Palestine, 634–1099'},
['CITEREFGillham2001'] = {'Gillham-Waterloo-City'},
['CITEREFGilliland1969'] = {'Gilliland'},
['CITEREFGilliland1994'] = {'Pop Chronicles 40s'},
['CITEREFGilliverMarshallWeiner2006'] = template_names['ME-ref'],
['CITEREFGilmanPeckColby1905'] = {'Cite NIE', 'New International Encyclopedia', 'NIE'},
['CITEREFGilmanPeckColby1916'] = {'New International Encyclopedia', 'NIE'},
['CITEREFGiunashvili2016'] = template_names['Iranica'],
['CITEREFGleaves1921'] = {'Gleaves'},
['CITEREFGlischinski1997'] = {'Glischinski-Santa Fe'},
['CITEREFGlöckner1983'] = {'Bach\'s compositions (sources)'},
['CITEREFGoldberg1981'] = {'Goldberg-Amtrak'},
['CITEREFGordon2001'] = {'Gordon-The Breaking of a Thousand Swords'},
['CITEREFGraham1974'] = {'Cite DCB'},
['CITEREFGrant1994'] = {'Grant-Death'},
['CITEREFGrant2010'] = {'Grant-Twilight'},
['CITEREFGrant2017'] = {'Grant-RailCo'},
['CITEREFGrassi2018'] = template_names['Iranica'],
['CITEREFGray1986'] = template_names['Cam_Hist_Iran'],
['CITEREFGreenlaw2007'] = {'Greenlaw-Via Rail'},
['CITEREFGregory1991'] = template_names['ODB'],
['CITEREFGregoryŠevčenko1991'] = template_names['ODB'],
['CITEREFGrete_Schemann1957'] = template_names['NDB'],
['CITEREFGrey2002'] = {'Australian Dictionary of Biography'},
['CITEREFGrierson1903'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1908'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1919'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGrierson1967'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},
['CITEREFGriffith1991'] = template_names['ODB'],
['CITEREFGriffithsSmith1999'] = {'Griffiths-Sheds1'},
['CITEREFGriffithsSmith2000'] = {'Griffiths-Sheds2'},
['CITEREFGrothendieck1955'] = {'Grothendieck Produits Tensoriels Topologiques et Espaces Nucléaires'},
['CITEREFGrothendieck1973'] = {'Grothendieck Topological Vector Spaces'},
['CITEREFGrothendieckDieudonné1960'] = {'EGA'},
['CITEREFGrothendieckDieudonné1961'] = {'EGA'},
['CITEREFGrothendieckDieudonné1963'] = {'EGA'},
['CITEREFGrothendieckDieudonné1964'] = {'EGA'},
['CITEREFGrothendieckDieudonné1965'] = {'EGA'},
['CITEREFGrothendieckDieudonné1966'] = {'EGA'},
['CITEREFGrothendieckDieudonné1967'] = {'EGA'},
['CITEREFGrothendieckDieudonné1971'] = {'EGA'},
['CITEREFGroves2005'] = {'MSW3 Primates', 'MSW3 Groves'},
['CITEREFGrubb2005'] = {'MSW3 Artiodactyla'},
['CITEREFGuilland1967'] = {'Recherches sur les institutions byzantines'},
['CITEREFGulino2005'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFGunzburg1984'] = {'Gunzburg-History WAGR Steam'},
['CITEREFGurneyNabavi1993'] = template_names['Iranica'],
['CITEREFGutas1987'] = template_names['Iranica'],
['CITEREFGvakharia2001'] = template_names['Iranica'],
['CITEREFGüner1997'] = {'TDV Encyclopedia of Islam'},
----------< H >----------
['CITEREFHaarer2018'] = template_names['ODLA'],
['CITEREFHabibi2021'] = template_names['Iranica'],
['CITEREFHadidi2000'] = template_names['Iranica'],
['CITEREFHaji2008'] = template_names['Iranica'],
['CITEREFHaldon1999'] = {'Warfare, State and Society in the Byzantine World, 565–1204'},
['CITEREFHalliday1985'] = {'Halliday-AustWineCompend'},
['CITEREFHalliday2008'] = {'Halliday-JHWAtlasAust2008'},
['CITEREFHalliday2009'] = {'Halliday-AustWineEncyc'},
['CITEREFHalm1998'] = template_names['Iranica'],
['CITEREFHalpenny1990'] = {'Canadabio'},
['CITEREFHambly1990'] = template_names['Cam_Hist_Iran'],
['CITEREFHambly1991'] = template_names['Cam_Hist_Iran'],
['CITEREFHammondAnderson1993'] = template_names['ME-ref'],
['CITEREFHammondScull1995'] = template_names['ME-ref'],
['CITEREFHammondScull2005'] = template_names['ME-ref'],
['CITEREFHammondScull2006'] = template_names['ME-ref'],
['CITEREFHanaway1988'] = template_names['Iranica'],
['CITEREFHanaway1989'] = template_names['Iranica'],
['CITEREFHanawayLewisohn2004'] = template_names['Iranica'],
['CITEREFHans_Heinrich_Borcherdt1955'] = template_names['NDB'],
['CITEREFHans_Knudsen1972'] = template_names['NDB'],
['CITEREFHansen1988'] = {'Book-Hansen-US Nuclear Weapons'},
['CITEREFHansman1991'] = template_names['Iranica'],
['CITEREFHartshorne1977'] = {'Hartshorne AG'},
['CITEREFHassanpour1989'] = template_names['Iranica'],
['CITEREFHassanpour1995'] = template_names['Iranica'],
['CITEREFHasumi2003'] = {'Hasumi-shiguehiko-ozu-2003'},
['CITEREFHaswell-Smith2004'] = {'Haswell-Smith'},
['CITEREFHaugic1908'] = {'Schaff-Herzog'},
['CITEREFHawting1987'] = {'The First Dynasty of Islam'},
['CITEREFHawting2000'] = {'The First Dynasty of Islam'},
['CITEREFHaynes2011'] = {'RubberBible92nd'},
['CITEREFHeinichen1728'] = {'Bach\'s compositions (sources)'},
['CITEREFHeinrich_Welti1890'] = {'Cite ADB'},
['CITEREFHelgen2005'] = {'MSW3 Scandentia'},
['CITEREFHellmann1965'] = {'Bach\'s compositions (sources)'},
['CITEREFHenrici1725'] = {'Bach\'s compositions (sources)'},
['CITEREFHenryOrsmond1928'] = {'Raiatea family tree'},
['CITEREFHermann_Palm1876'] = {'Cite ADB'},
['CITEREFHerr2000'] = {'Herr-LN'},
['CITEREFHeschel2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},
['CITEREFHewsen1988'] = template_names['Iranica'],
['CITEREFHidyHidyScottHofsummer2004'] = {'Hidy-Great Northern'},
['CITEREFHildHellenkemper1990'] = {'Tabula Imperii Byzantini'},
['CITEREFHildHellenkemper1994'] = {'Tabula Imperii Byzantini'},
['CITEREFHildRestle1981'] = {'Tabula Imperii Byzantini'},
['CITEREFHillenbrand1986'] = template_names['Iranica'],
['CITEREFHills,_Power_from_Steam'] = {'Book-Hills-Power from Steam'},
['CITEREFHills1989'] = {'Book-Hills-Power from Steam'},
['CITEREFHilmarJestremski2004'] = {'Schubert\'s compositions (references)'},
['CITEREFHilton1980'] = {'Hilton-Amtrak'},
['CITEREFHilton1990'] = {'Hilton Narrow Gauge'},
['CITEREFHiltonDue1960'] = {'Hilton-Interurban'},
['CITEREFHinton1986'] = {'HistoryofParliament'},
['CITEREFHirsch1906'] = {'Cite JE1906'},
['CITEREFHistoric_Environment_Scotland'] = {'Canmore'},
['CITEREFHistoric_Environment_Scotland1972'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland1976'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland2020'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_Scotland:_Rusco_Tower2020'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_ScotlandLB33744'] = {'Historic Environment Scotland'},
['CITEREFHistoric_Environment_ScotlandLB50114'] = {'Historic Environment Scotland'},
['CITEREFHob.'] = {'Schubert\'s compositions (references)'},
['CITEREFHoffmanSmith2005'] = {'MSW3 Lagomorpha'},
['CITEREFHoffmann1738'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1983'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1987'] = {'Bach\'s compositions (sources)'},
['CITEREFHofmann1999'] = {'Bach\'s compositions (sources)'},
['CITEREFHolland1972'] = {'Holland-Vol 2'},
['CITEREFHolland1988'] = {'Cite DCB'},
['CITEREFHolland2001'] = {'Holland-Classic'},
['CITEREFHollingsworth1980'] = {'Hollingsworth-Atlas-Rigby'},
['CITEREFHollingsworth1991'] = template_names['ODB'],
['CITEREFHollingsworthCutler1991'] = template_names['ODB'],
['CITEREFHolmgren2003'] = {'EFloras'},
['CITEREFHoltBiddle1986'] = {'Holt-NorthWest'},
['CITEREFHolton1989'] = {'Holton-Reading-1'},
['CITEREFHonigmann1935'] = {'Byzance et les Arabes'},
['CITEREFHopley1983'] = {'Australian Dictionary of Biography'},
['CITEREFHort1911'] = {'DCBL'},
['CITEREFHorváth1966'] = {'Horváth Topological Vector Spaces and Distributions Volume 1 1966'},
['CITEREFHosseini2017'] = template_names['Iranica'],
['CITEREFHounshell1984'] = {'Hounshell1984'},
['CITEREFHudson1997'] = {'Country study'},
['CITEREFHughes1990'] = {'Hughes-IndianLocos1'},
['CITEREFHughes1992'] = {'Hughes-IndianLocos2'},
['CITEREFHughes1994'] = {'Hughes-IndianLocos3'},
['CITEREFHughes1996'] = {'Hughes-IndianLocos4'},
['CITEREFHummel1943'] = {'Cite ECCP'},
['CITEREFHumphreys2018'] = template_names['ODLA'],
['CITEREFHunter-Crawley2018'] = template_names['ODLA'],
['CITEREFHunter2008'] = {'Country study'},
['CITEREFHutter2009'] = template_names['Iranica'],
['CITEREFHutterer2005'] = {'MSW3 Soricomorpha'},
['CITEREFHütter2012'] = {'Hütter-50bis53'},
['CITEREFHütter2015'] = {'Hütter-54bis59'},
['CITEREFHütter2021'] = {'Hütter-60bis91'},
----------< I >----------
['CITEREFIbn_Khallikan1843'] = {'Ibn Khallikan\'s Biographical Dictionary'},
['CITEREFImber2002'] = {'Imber-The Ottoman Empire, 1300–1650'},
['CITEREFInalcik1989'] = {'Setton-A History of the Crusades'},
['CITEREFIranica:_Bahrām'] = template_names['Iranica'],
['CITEREFIrvine2006'] = template_names['Iranica'],
['CITEREFIshino1998'] = {'Teishajo'},
['CITEREFIshkevariNejad2008'] = {'Encyclopaedia Islamica'},
['CITEREFIvey1919'] = {'Ivey-Marquette'},
----------< J >----------
['CITEREFJackson1908'] = {'Schaff-Herzog'},
['CITEREFJackson1988'] = template_names['Iranica'],
['CITEREFJackson1989'] = template_names['Iranica'],
['CITEREFJackson1995'] = {'Cite enc-nyc'},
['CITEREFJackson2010'] = {'Cite enc-nyc2'},
['CITEREFJacksonMelville2001'] = template_names['Iranica'],
['CITEREFJacobs1904'] = {'Cite Jewish Encyclopedia'},
['CITEREFJarchow1981'] = {'Jarchow Locally Convex Spaces'},
['CITEREFJavadiBurrill1988'] = template_names['Iranica'],
['CITEREFJohn_O'Donovan1856'] = {'Cite AFM'},
['CITEREFJohnstonWelshSchafer2001'] = {'Johnston-Streamliner'},
['CITEREFJones2011'] = {'Cite EPD'},
['CITEREFJordan2002'] = {'Jordan-WineWABest'},
['CITEREFJoshi1983'] = {'Joshi Introduction to General Topology'},
['CITEREFJoslen2003'] = {'Joslen-OOB'},
['CITEREFJowett1867'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFJowett1989'] = {'Jowett-Atlas', 'Carnarvonshire Railway'},
['CITEREFJowett2000'] = {'Jowett-Nationalised'},
['CITEREFJullien2018'] = template_names['ODLA'],
['CITEREFJupp1986'] = {'HistoryofParliament'},
----------< K >----------
['CITEREFK.'] = {'Schubert\'s compositions (references)'},
['CITEREFKadinsky2016'] = {'Cite Hidden Waters NYC'},
['CITEREFKaegi1991'] = template_names['ODB'],
['CITEREFKamaly2006'] = template_names['Iranica'],
['CITEREFKamp1981'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFKang2008'] = {'Country study'},
['CITEREFKaramatiMelvin-Koushki2021'] = template_names['Iranica'],
['CITEREFKaramatiMelvin-Koushki2021'] = {'Encyclopaedia Islamica'},
['CITEREFKarimi-Hakkak1997'] = template_names['Iranica'],
['CITEREFKarimiMaghsoodi2013'] = {'Encyclopaedia Islamica'},
['CITEREFKarl_Frohnmeyer1953'] = template_names['NDB'],
['CITEREFKarnow1989'] = {'Cite-Karnow'},
['CITEREFKasheff2001'] = template_names['Iranica'],
['CITEREFKayvaniGholami2008'] = {'Encyclopaedia Islamica'},
['CITEREFKazhdan1991'] = template_names['ODB'],
['CITEREFKazhdanCutler1991'] = template_names['ODB'],
['CITEREFKazhdanJeffreys1991'] = template_names['ODB'],
['CITEREFKazhdanŠevčenko1991'] = template_names['ODB'],
['CITEREFKeall1987'] = template_names['Iranica'],
['CITEREFKeefe2006'] = {'Schubert\'s compositions (references)'},
['CITEREFKeightley1999'] = {'Cite Cambridge History of China'},
['CITEREFKeller1937'] = {'Bach\'s compositions (sources)'},
['CITEREFKelly1988'] = {'Cite GEIL'},
['CITEREFKellyBurrage1920'] = {'Cite AMB1920'},
['CITEREFKennedy1998'] = {'The Cambridge History of Egypt', 'Cite Kennedy 1998', 'Cambridge History of Egypt'},
['CITEREFKennedy2001'] = {'Kennedy-The Armies of the Caliphs'},
['CITEREFKennedy2004'] = {'The Prophet and the Age of the Caliphates'},
['CITEREFKennedy2007'] = {'Kennedy-The Great Arab Conquests'},
['CITEREFKennedy2016'] = {'The Prophet and the Age of the Caliphates'},
['CITEREFKenyon2011'] = {'Bach\'s compositions (sources)'},
['CITEREFKerrigan1995'] = {'Shakespeare sonnets bibliography'},
['CITEREFKettenhofen1995'] = template_names['Iranica'],
['CITEREFKettenhofen2001'] = template_names['Iranica'],
['CITEREFKettenhofenBournoutianHewsen1998'] = template_names['Iranica'],
['CITEREFKhaleelulla1982'] = {'Khaleelulla Counterexamples in Topological Vector Spaces'},
['CITEREFKhaleghi-Motlagh1999'] = template_names['Iranica'],
['CITEREFKhaleghi-Motlagh2001'] = template_names['Iranica'],
['CITEREFKhan2012'] = {'Cite Banglapedia'},
['CITEREFKhatibiNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFKim1994'] = {'Country study'},
['CITEREFKirnberger1774'] = {'Bach\'s compositions (sources)'},
['CITEREFKirnberger1780'] = {'Bach\'s compositions (sources)'},
['CITEREFKlein2006'] = {'Klein-UP-2'},
['CITEREFKlíma1988'] = template_names['Iranica'],
['CITEREFKobayashi1978'] = {'Bach\'s compositions (sources)'},
['CITEREFKoderHild1976'] = {'Tabula Imperii Byzantini'},
['CITEREFKoderSoustalKoder1998'] = {'Tabula Imperii Byzantini'},
['CITEREFKoeppel2015'] = {'Cite citygrid'},
['CITEREFKofos1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFKohler1902'] = {'Cite Jewish Encyclopedia'},
['CITEREFKolde1914'] = {'Schaff-Herzog'},
['CITEREFKoliopoulos1978'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFKolmogorovFomin1957'] = {'Kolmogorov Fomin Elements of the Theory of Functions and Functional Analysis'},
['CITEREFKonrad_Ameln1985'] = template_names['NDB'],
['CITEREFKoska2011'] = {'Bach\'s compositions (sources)'},
['CITEREFKratville1962'] = {'Kratville-SSL'},
['CITEREFKretzschmar1910'] = {'Bach\'s compositions (sources)'},
['CITEREFKube2009'] = {'Schubert\'s compositions (references)'},
['CITEREFKurz1983'] = template_names['Cam_Hist_Iran'],
['CITEREFKuznik2008'] = {'Bach\'s compositions (sources)'},
['CITEREFKöthe1969'] = {'Köthe Topological Vector Spaces I'},
['CITEREFKöthe1979'] = {'Köthe Topological Vector Spaces II'},
['CITEREFKöthe1983'] = {'Köthe Topological Vector Spaces I'},
['CITEREFKülzer2008'] = {'Tabula Imperii Byzantini'},
['CITEREFKüçükaşcı2001'] = {'TDV Encyclopedia of Islam'},
----------< L >----------
['CITEREFLa_Porta2018'] = template_names['ODLA'],
['CITEREFLacourcière1974'] = {'Cite DCB'},
['CITEREFLadefogedMaddieson1996'] = {'SOWL'},
['CITEREFLandau-Tasseron2010'] = {'New Cambridge History of Islam'},
['CITEREFLandauCondit1996'] = {'Cite nysky'},
['CITEREFLandmann1907'] = {'Bach\'s compositions (sources)'},
['CITEREFLang1983'] = template_names['Cam_Hist_Iran'],
['CITEREFLangaroodiCooper2008'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiCooper2015'] = template_names['Iranica'],
['CITEREFLangaroodiCooper2015'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroodiNegahban2015'] = template_names['Iranica'],
['CITEREFLangaroodiNegahban2015'] = {'Encyclopaedia Islamica'},
['CITEREFLangaroudi2001'] = template_names['Iranica'],
['CITEREFLatham1982–2021'] = template_names['Iranica'],
['CITEREFLazard1975'] = template_names['Cam_Hist_Iran'],
['CITEREFLaërtius1925'] = {'Cite Lives of the Eminent Philosophers', 'Cite LotEP'},
['CITEREFLeCoq1986'] = template_names['Iranica'],
['CITEREFLe_Quien1740'] = {'Oriens Christianus'},
['CITEREFLe_Strange1900'] = {'Baghdad During the Abbasid Caliphate'},
['CITEREFLe_Strange1905'] = {'Lands of the Eastern Caliphate'},
['CITEREFLe_Strange1922'] = {'Baghdad During the Abbasid Caliphate'},
['CITEREFLeblanc1979'] = {'Cite DCB'},
['CITEREFLee1903'] = {'Cite DNBIE'},
['CITEREFLee2018'] = template_names['ODLA'],
['CITEREFLeisingerWollny1993'] = {'Bach\'s compositions (sources)'},
['CITEREFLerner1988'] = template_names['Iranica'],
['CITEREFLev1999'] = {'Saladin in Egypt'},
['CITEREFLevitan2001'] = {'Springer'},
['CITEREFLewin1925'] = {'Lewin-EarlyRail'},
['CITEREFLewis1969'] = {'Setton-A History of the Crusades'},
['CITEREFLewis1986'] = {'Lewis-Shortline-1986'},
['CITEREFLewis1991'] = {'Lewis-Shortline-1991'},
['CITEREFLewis1996'] = {'Lewis-Shortline-1996'},
['CITEREFLewis2001'] = template_names['Iranica'],
['CITEREFLi2002'] = {'Cite Cambridge History of China'},
['CITEREFLiederNet_Archive'] = {'Schubert\'s compositions (references)'},
['CITEREFLieu1997'] = template_names['Iranica'],
['CITEREFLighthouses_of_Australia_Inc'] = {'Cite loa'},
['CITEREFLind1986'] = {'Lind-Limiteds'},
['CITEREFLittle1974'] = {'Cite DCB'},
['CITEREFLongnon1969'] = {'Setton-A History of the Crusades'},
['CITEREFLosensky2003'] = template_names['Iranica'],
['CITEREFLoverance2018'] = template_names['ODLA'],
['CITEREFLukonin1983'] = {'Cambridge History of Iran'},
['CITEREFLurje2010'] = template_names['Iranica'],
['CITEREFLuttrell1975'] = {'Setton-A History of the Crusades'},
['CITEREFLuttrell1987'] = {'DBI'},
['CITEREFLynch2004'] = {'Lynch-Penn Central'},
['CITEREFLynch2005'] = {'Lynch-New Haven passenger'},
['CITEREFLynch2018'] = template_names['ODLA'],
['CITEREFLéger1990'] = {'Cite DCB'},
['CITEREFle_Fleming1953'] = {'RCTS-LocosGWR-8'},
['CITEREFle_Fleming1960'] = {'RCTS-LocosGWR-8'},
----------< M >----------
['CITEREFMacDermot1927'] = {'Infobox GWR'},
['CITEREFMacDermot1931'] = {'Infobox GWR'},
['CITEREFMacEoin1988'] = template_names['Iranica'],
['CITEREFMacKenzie1992'] = template_names['Iranica'],
['CITEREFMadelung1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMadelung1978'] = {'EI2'},
['CITEREFMadelung1983'] = template_names['Iranica'],
['CITEREFMadelung1984'] = template_names['Iranica'],
['CITEREFMadelung1988'] = template_names['Iranica'],
['CITEREFMadelung1993'] = template_names['Iranica'],
['CITEREFMadelung2003'] = template_names['Iranica'],
['CITEREFMadelungFelix1995'] = template_names['Iranica'],
['CITEREFMaeda2009'] = template_names['Iranica'],
['CITEREFMagdalino2002'] = {'The Empire of Manuel I Komnenos'},
['CITEREFMaiken1989'] = {'Maiken-Night Trains'},
['CITEREFMailer2004'] = {'Mailer-Omaha Road'},
['CITEREFMajidiNegahban'] = {'Encyclopaedia Islamica'},
['CITEREFMalandra2009'] = template_names['Iranica'],
['CITEREFManfred_Knedlik2007'] = {'BBKL'},
['CITEREFMarshak1994'] = template_names['Iranica'],
['CITEREFMarshak2002'] = template_names['Iranica'],
['CITEREFMarshall1823'] = {'Cite RNB1823'},
['CITEREFMarshall1824'] = {'Cite RNB1823'},
['CITEREFMarshall1825'] = {'Cite RNB1823'},
['CITEREFMarshall1827'] = {'Cite RNB1823'},
['CITEREFMarshall1828'] = {'Cite RNB1823'},
['CITEREFMarshall1829'] = {'Cite RNB1823'},
['CITEREFMarshall1830'] = {'Cite RNB1823'},
['CITEREFMarshall1831'] = {'Cite RNB1823'},
['CITEREFMarshall1832'] = {'Cite RNB1823'},
['CITEREFMarshall1833'] = {'Cite RNB1823'},
['CITEREFMarshall1835'] = {'Cite RNB1823'},
['CITEREFMarshall1972'] = {'Lancashire & Yorkshire Railway 3'},
['CITEREFMarshall2001'] = {'Marshall-INGSR'},
['CITEREFMartin_Persch1992'] = {'BBKL'},
['CITEREFMartin_Persch1993'] = {'BBKL'},
['CITEREFMartin_Persch1996'] = {'BBKL'},
['CITEREFMartindale1980'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMartindale1992'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMartindaleJonesMorris1971'] = {'Prosopography of the Later Roman Empire', 'PLRE'},
['CITEREFMasoud_Jalali-Moqaddam2015'] = {'Encyclopaedia Islamica'},
['CITEREFMatini1987'] = template_names['Iranica'],
['CITEREFMatthee2008'] = template_names['Iranica'],
['CITEREFMatthee2015'] = template_names['Iranica'],
['CITEREFMaul2005'] = {'Bach\'s compositions (sources)'},
['CITEREFMayGray2006'] = {'MayGray-WAGRPassCar'},
['CITEREFMazzaoui2002'] = template_names['Iranica'],
['CITEREFMcArthurMcArthur2003'] = {'Cite ogn', 'Cite Oregon Geographic Names'},
['CITEREFMcCaffrey1990'] = template_names['Iranica'],
['CITEREFMcCorduck2004'] = {'McCorduck 2004'},
['CITEREFMcCurdyRogers1902'] = {'Cite Jewish Encyclopedia'},
['CITEREFMcDonnell2015'] = {'McDonnell-Locomotives-2nd'},
['CITEREFMcGhee2008'] = {'Cite McGhee 2008'},
['CITEREFMeiningen1704'] = {'Bach\'s compositions (sources)'},
['CITEREFMeints1992'] = {'Meints-Companies'},
['CITEREFMeints2005'] = {'Meints-Lines'},
['CITEREFMelamed1988'] = {'Bach\'s compositions (sources)'},
['CITEREFMelamed1995'] = {'Bach\'s compositions (sources)'},
['CITEREFMelville1997'] = template_names['Iranica'],
['CITEREFMelville2003'] = template_names['Iranica'],
['CITEREFMennell1892'] = {'Dictionary of Australasian Biography'},
['CITEREFMetcalfe2009'] = {'The Muslims of Medieval Italy'},
['CITEREFMiddleton1961'] = {'Middleton-Interurban'},
['CITEREFMiddleton2001'] = {'Middleton-Electrified-2nd'},
['CITEREFMiddleton2002'] = {'Middleton-PRR-Under-Wire'},
['CITEREFMiddletonSmerkDiehl2007'] = {'Encyclopedia of North American Railroads'},
['CITEREFMiles1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMillar2011'] = {'NZR Steam Locomotive'},
['CITEREFMiller'] = {'Encyclopaedia Islamica'},
['CITEREFMiller1908'] = {'The Latins in the Levant', 'Latins in the Levant'},
['CITEREFMiller1921'] = {'Essays on the Latin Orient'},
['CITEREFMinnich2008'] = {'Country study'},
['CITEREFMiramar_Ship_Index'] = {'Csr', 'Cite ship register'},
['CITEREFMitchell1965'] = {'Mitchell TOC'},
['CITEREFMittermeierKonstantHawkinsLouis2006'] = {'LoM2'},
['CITEREFMittermeierLouisRichardsonSchwitzer2010'] = {'LoM3'},
['CITEREFMittermeierTattersallKonstantMeyers1994'] = {'LoM1'},
['CITEREFMoore1875'] = {'Cite CEM'},
['CITEREFMorana1993'] = {'Bach\'s compositions (sources)'},
['CITEREFMorony2009'] = template_names['Iranica'],
['CITEREFMoschonas1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFMottahedeh1975'] = template_names['Cam_Hist_Iran'],
['CITEREFMozartHaydnHaydn2008'] = {'Schubert\'s compositions (references)'},
['CITEREFMunkres1974'] = {'Munkres Topology'},
['CITEREFMunkres2000'] = {'Munkres Topology'},
['CITEREFMurray2006'] = {'Murray-Illinois Central'},
['CITEREFMusserCarleton2005'] = {'MSW3 Muroidea'},
['CITEREFMüller,_Hans-Christian1966'] = template_names['NDB'],
['CITEREFMyersWang2002'] = {'Cite Cambridge History of China'},
----------< N >----------
['CITEREFNSA_II,_15'] = {'Schubert\'s compositions (references)'},
['CITEREFNSA_scores'] = {'Schubert\'s compositions (references)'},
['CITEREFNSA_website'] = {'Schubert\'s compositions (references)'},
['CITEREFNagel1990'] = template_names['Iranica'],
['CITEREFNariciBeckenstein2011'] = {'Narici Beckenstein Topological Vector Spaces'},
['CITEREFNavāʾī1988'] = template_names['Iranica'],
['CITEREFNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFNersessian2018'] = template_names['ODLA'],
['CITEREFNetzer1998'] = template_names['Iranica'],
['CITEREFNetzer2007'] = template_names['Iranica'],
['CITEREFNeukirch1999'] = {'Neukirch ANT'},
['CITEREFNeukirchSchmidtWingberg2000'] = {'Neukirch et al. CNF'},
['CITEREFNew_York_City_Landmarks_Preservation_CommissionDolkartPostal2009'] = {'Cite nycland'},
['CITEREFNewbould1999'] = {'Schubert\'s compositions (references)'},
['CITEREFNewman1994'] = template_names['Iranica'],
['CITEREFNicholsonCanepaDaryaee2018'] = template_names['ODLA'],
['CITEREFNicol1988'] = {'Byzantium and Venice: A Study in Diplomatic and Cultural Relations'},
['CITEREFNicol1992'] = {'The Immortal Emperor: The Life and Legend of Constantine Palaiologos, Last Emperor of the Romans'},
['CITEREFNicol1993'] = {'The Last Centuries of Byzantium, 1261–1453', 'The Last Centuries of Byzantium'},
['CITEREFNock1974'] = {'Nock-EustonGlasgow'},
----------< O >----------
['CITEREFO'Byrne1849'] = {'Cite NBD1849'},
['CITEREFO'ConnorRobertson'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson1996'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson2000'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'ConnorRobertson2004'] = {'MacTutor Biography', 'MacTutor'},
['CITEREFO'Donoghue1897'] = {'Cite DNB'},
['CITEREFODB'] = template_names['ODB'],
['CITEREFODLA'] = template_names['ODLA'],
['CITEREFOberling1984'] = template_names['Iranica'],
['CITEREFOberling2008'] = template_names['Iranica'],
['CITEREFOberling2010'] = template_names['Iranica'],
['CITEREFOdisheli2018'] = template_names['ODLA'],
['CITEREFOfficial_Guide_of_the_Railways1950'] = {'Official Guide of the Railways'},
['CITEREFOgorek2012'] = {'Ogorek-South Shore'},
['CITEREFOikonomides1991'] = template_names['ODB'],
['CITEREFOikonomou1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFOlbrycht2021'] = template_names['Iranica'],
----------< P >----------
['CITEREFPLP'] = {'Prosopographisches Lexikon der Palaiologenzeit', 'PLP'},
['CITEREFPalmer1875'] = {'Cite ADB'},
['CITEREFPalmerStewart1965'] = {'Palmer & Stewart'},
['CITEREFPanainoAbdollahyBalland1990'] = template_names['Iranica'],
['CITEREFPandariHirtensteinNegahban2013'] = {'Encyclopaedia Islamica'},
['CITEREFParvin2003'] = template_names['Iranica'],
['CITEREFParvin2009'] = template_names['Iranica'],
['CITEREFPatience1996'] = {'Patience-SteamTwilight'},
['CITEREFPatton2005'] = {'MSW3 Geomyidae'},
['CITEREFPaul2000'] = template_names['Iranica'],
['CITEREFPawson1979'] = {'Pawson-Delaware Valley'},
['CITEREFPaxtonBourne1985'] = {'Paxton-Bourne'},
['CITEREFPeacock2011'] = template_names['Iranica'],
['CITEREFPeck1898'] = {'HDCA'},
['CITEREFPerlis2001'] = {'Springer'},
['CITEREFPerreault2004'] = {'Bach\'s compositions (sources)'},
['CITEREFPerry1983'] = template_names['Cam_Hist_Iran'],
['CITEREFPerry1990'] = template_names['Cam_Hist_Iran'],
['CITEREFPerry1991'] = template_names['Cam_Hist_Iran'],
['CITEREFPetropoulosKoumarianou1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFPetrucci1982'] = {'DBI'},
['CITEREFPezeshk2017'] = {'Encyclopaedia Islamica'},
['CITEREFPezeshkKhaleeli2017'] = template_names['Iranica'],
['CITEREFPezeshkKhaleeli2017'] = {'Encyclopaedia Islamica'},
['CITEREFPfau2008'] = {'Bach\'s compositions (sources)'},
['CITEREFPinkepank1973'] = {'Pinkepank diesel spotters guide 2'},
['CITEREFPlantlist2016'] = {'Plantlist'},
['CITEREFPlaten1976'] = {'Bach\'s compositions (sources)'},
['CITEREFPloumidisAlexiou1974'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFPmbZ'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},
['CITEREFPolemis1968'] = {'Polemis-The Doukai'},
['CITEREFPope2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},
['CITEREFPopplewell'] = {'Popplewell-Gazetteer'},
['CITEREFPotts2018'] = template_names['ODLA'],
['CITEREFPottsCanepa2018'] = template_names['ODLA'],
['CITEREFPourshariati2017'] = {'Encyclopædia Iranica Online'},
['CITEREFPozza1992'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFPrawer1985'] = {'Setton-A History of the Crusades'},
['CITEREFPritsak1991'] = template_names['ODB'],
['CITEREFProsopographie_der_mittelbyz._Zeit'] = {'Prosopographie der mittelbyzantinischen Zeit'},
----------< Q >----------
['CITEREFQuick2009'] = {'Quick-Stations'},
['CITEREFQuick2019'] = {'Quick-stations-5'},
['CITEREFQuick2020'] = {'Quick-stations-5'},
['CITEREFQuick2022'] = {'Quick-stations-5'},
['CITEREFQuinn2003'] = template_names['Iranica'],
----------< R >----------
['CITEREFRaditsa1983'] = template_names['Cam_Hist_Iran'],
['CITEREFRahman1983'] = template_names['Iranica'],
['CITEREFRaja'i1987'] = template_names['Iranica'],
['CITEREFRamaer1974'] = {'Ramaer-SteamLocosEAR'},
['CITEREFRansome-Wallis1971'] = {'Ransome-Wallis 1'},
['CITEREFRateliff2007'] = template_names['ME-ref'],
['CITEREFRavegnano2000'] = {'DBI'},
['CITEREFReed1953'] = {'RCTS-LocosGWR-2'},
['CITEREFReed1975'] = {'Reed-Streamline era'},
['CITEREFReed1997'] = {'Schubert\'s compositions (references)'},
['CITEREFReinhard_Tenberg1990'] = {'BBKL'},
['CITEREFRettinghaus2020'] = {'BDh'},
['CITEREFReynolds1921'] = {'Cite Collier\'s', 'Collier\'s'},
['CITEREFReynoldsOroszi2000'] = {'Reynolds-BO'},
['CITEREFRezaHirtensteinGholami2021'] = {'Encyclopaedia Islamica'},
['CITEREFRezakhani2018'] = template_names['ODLA'],
['CITEREFRezvani2014'] = template_names['Iranica'],
['CITEREFRichter-Bernburg2003'] = template_names['Iranica'],
['CITEREFRichter2018'] = {'BDh'},
['CITEREFRigo2005'] = template_names['ODB'],
['CITEREFRipleyDana1863'] = {'New American Cyclopedia'},
['CITEREFRipleyDana1864'] = {'New American Cyclopedia'},
['CITEREFRipleyDana1879'] = {'Cite AmCyc'},
['CITEREFRistaino1988'] = {'Country study'},
['CITEREFRobert_Eitner1891'] = {'Cite ADB'},
['CITEREFRobertson1983'] = {'Robertson-OriginScot'},
['CITEREFRoe1916'] = {'Roe1916'},
['CITEREFRoe1937'] = {'Roe1937'},
['CITEREFRoemer1986'] = template_names['Cam_Hist_Iran'],
['CITEREFRoemer1989'] = template_names['Iranica'],
['CITEREFRoemer2004'] = template_names['Iranica'],
['CITEREFRolt1965'] = {'Rolt1965'},
['CITEREFRoltKichenside1982'] = {'Rolt-Red'},
['CITEREFRose1857'] = {'Cite Newgenbio'},
['CITEREFRosenfeld1974'] = template_names['NDB'],
['CITEREFRosenzweigBlackmar1992'] = {'Cite Central Park History', 'Cite Central Park history'},
['CITEREFRowe2002'] = {'Cite Cambridge History of China'},
['CITEREFRowledge1975'] = {'Rowledge-Engines of the LMS'},
['CITEREFRowledge1993'] = {'Rowledge-Irish Steam Register'},
['CITEREFRowlett'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2007'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2012'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2013'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2016'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowlett2017'] = {'Cite rowlett', 'Cite Rowlett'},
['CITEREFRowson1998'] = template_names['Iranica'],
['CITEREFRudin1973'] = {'Rudin Walter Functional Analysis'},
['CITEREFRudin1991'] = {'Rudin Walter Functional Analysis'},
['CITEREFRunciman1951'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1951–1954'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1952'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1954'] = {'Runciman-A History of the Crusades'},
['CITEREFRunciman1989'] = {'Runciman-A History of the Crusades'},
['CITEREFRussell1985'] = {'Setton-A History of the Crusades', 'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},
['CITEREFRussell1986'] = template_names['Iranica'],
['CITEREFRussell1987'] = template_names['Iranica'],
['CITEREFRussellNorvig2003'] = {'Russell Norvig 2003'},
['CITEREFRybczynski2000'] = {'Rybczynski2000'},
['CITEREFRypka1968'] = template_names['Cam_Hist_Iran'],
----------< S >----------
['CITEREFSR_staff2013'] = {'Houston family tree'},
['CITEREFSadeghiTehrani2008'] = {'Encyclopaedia Islamica'},
['CITEREFSadıkoğlu1996'] = {'TDV Encyclopedia of Islam'},
['CITEREFSafa1987'] = template_names['Iranica'],
['CITEREFSafa1988'] = template_names['Iranica'],
['CITEREFSafa1989'] = template_names['Iranica'],
['CITEREFSafa1994'] = template_names['Iranica'],
['CITEREFSafa2003'] = template_names['Iranica'],
['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica Online'},
['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica'},
['CITEREFSajjadiAsatryanMelvin-Koushki2021'] = template_names['Iranica'],
['CITEREFSalbiev2021'] = template_names['Iranica'],
['CITEREFSalo2004'] = template_names['ME-ref'],
['CITEREFSamiʿiMelvin-Koushki2013'] = {'Encyclopaedia Islamica'},
['CITEREFSanders1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},
['CITEREFSanders2003'] = {'Sanders-Indiana'},
['CITEREFSanders2006'] = {'Sanders-Heartland'},
['CITEREFSanders2007'] = {'Sanders-Akron'},
['CITEREFSarikakis1974'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSaunders2001'] = {'Saunders-Merging Lines'},
['CITEREFSaunders2013'] = {'Saunders-Giants of the Seas'},
['CITEREFSavadaShaw1992'] = {'Country study'},
['CITEREFSavoryKaramustafa1998'] = template_names['Iranica'],
['CITEREFScarce1986'] = template_names['Iranica'],
['CITEREFSchaeferWolff1999'] = {'Schaefer Wolff Topological Vector Spaces'},
['CITEREFSchafer1996'] = {'Schafer-Classic-Railroads-1'},
['CITEREFSchafer1998'] = {'Schafer-Vintage Diesel'},
['CITEREFSchafer2000'] = {'Schafer-More-Classic'},
['CITEREFSchafer2003'] = {'Schafer-Classic-Railroads-3'},
['CITEREFSchaferSolomon1997'] = {'Schafer-Pennsylvania'},
['CITEREFSchaferWelsh1997'] = {'Schafer-Classic'},
['CITEREFSchaferWelsh2002'] = {'Schafer-Streamliners'},
['CITEREFSchaferWelshHolland2001'] = {'Schafer-American passenger train'},
['CITEREFSchaff-Herzog'] = {'Schaff-Herzog'},
['CITEREFSchechter1996'] = {'Schechter Handbook of Analysis and Its Foundations'},
['CITEREFScheide1960'] = {'Bach\'s compositions (sources)'},
['CITEREFSchicht1805'] = {'Bach\'s compositions (sources)'},
['CITEREFSchilling1997'] = {'Schilling-pop-culture'},
['CITEREFSchindel2013'] = template_names['Iranica'],
['CITEREFSchippmann1986'] = template_names['Iranica'],
['CITEREFSchippmann1987'] = template_names['Iranica'],
['CITEREFSchlitter2005'] = {'MSW3 Tubulidentata'},
['CITEREFSchlumberger1983'] = template_names['Cam_Hist_Iran'],
['CITEREFSchmieder1950'] = {'Bach\'s compositions (sources)'},
['CITEREFSchmieder1990'] = {'Bach\'s compositions (sources)'},
['CITEREFSchmitt1986'] = template_names['Iranica'],
['CITEREFSchmitt1989'] = template_names['Iranica'],
['CITEREFSchmitt1993'] = template_names['Iranica'],
['CITEREFSchmitt1994'] = template_names['Iranica'],
['CITEREFSchmitt1995'] = template_names['Iranica'],
['CITEREFSchmitt2002'] = template_names['Iranica'],
['CITEREFSchmitt2004'] = template_names['Iranica'],
['CITEREFSchmitt2005'] = template_names['Iranica'],
['CITEREFSchmitt2018'] = template_names['Iranica'],
['CITEREFSchmittBailey1986'] = template_names['Iranica'],
['CITEREFSchmitz1870'] = {'Cite DGRBM'},
['CITEREFSchneider1907'] = {'Bach\'s compositions (sources)'},
['CITEREFSchneider1912'] = {'Bach\'s compositions (sources)'},
['CITEREFScholze1736'] = {'Bach\'s compositions (sources)'},
['CITEREFSchroeter1961'] = {'Schroeter-Eisenbahnen'},
['CITEREFSchroeterRamaer1993'] = {'Schroeter-Ramaer-Eisenbahnen'},
['CITEREFSchubert-online'] = {'Schubert\'s compositions (references)'},
['CITEREFSchubert1968'] = {'Schubert Topology'},
['CITEREFSchulenberg2010'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulenberg2013'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1980'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1983'] = {'Bach\'s compositions (sources)'},
['CITEREFSchulze1984'] = {'Bach\'s compositions (sources)'},
['CITEREFSchwieterman2001'] = {'Schwieterman-Leaves-Eastern'},
['CITEREFScottNegus2011'] = {'Scott-Negus-Cellar Door'},
['CITEREFScribbins1970'] = {'Scribbins-Hiawatha'},
['CITEREFScribbins2008'] = {'Scribbins-400-2008', 'Scribbins-Remembered'},
['CITEREFSearle'] = {'Cite sslidx'},
['CITEREFSegal1982'] = template_names['Iranica'],
['CITEREFSellwood1983'] = template_names['Cam_Hist_Iran'],
['CITEREFSemmensGoldfinch2003'] = {'Book-Semmens-Goldfinch-How Steam Locomotives Really Work'},
['CITEREFSemsarZand2008'] = {'Encyclopaedia Islamica'},
['CITEREFSetton1975'] = {'Setton-A History of the Crusades'},
['CITEREFSetton1976'] = {'The Papacy and the Levant'},
['CITEREFSetton1978'] = {'The Papacy and the Levant'},
['CITEREFSetton1984'] = {'The Papacy and the Levant'},
['CITEREFSettonHazard1975'] = {'Setton-A History of the Crusades'},
['CITEREFSfyroeras1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFShahbazi1986'] = template_names['Iranica'],
['CITEREFShahbazi1987'] = template_names['Iranica'],
['CITEREFShahbazi1988'] = template_names['Iranica'],
['CITEREFShahbazi1989'] = template_names['Iranica'],
['CITEREFShahbazi1991'] = template_names['Iranica'],
['CITEREFShahbazi1994'] = template_names['Iranica'],
['CITEREFShahbazi2002'] = template_names['Iranica'],
['CITEREFShahbazi2003'] = template_names['Iranica'],
['CITEREFShahbazi2004'] = template_names['Iranica'],
['CITEREFShahbazi2005'] = template_names['Iranica'],
['CITEREFShahbaziBosworth1990'] = template_names['Iranica'],
['CITEREFShahbaziRichter-Bernburg2002'] = template_names['Iranica'],
['CITEREFShaki1991'] = template_names['Iranica'],
['CITEREFShaughnessy1997'] = {'Shaughnessy-DH'},
['CITEREFShaw1978'] = {'Shaw-RailroadAccidents'},
['CITEREFShayegan2004'] = template_names['Iranica'],
['CITEREFShayesteh2013'] = template_names['Iranica'],
['CITEREFSheikhsofla2018'] = {'Encyclopaedia Islamica'},
['CITEREFShindo2004'] = {'Kaneto-shindo-shinario-jinsei'},
['CITEREFShoarian-SattariRezaeeNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFShoshani2005'] = {'MSW3 Shoshani'},
['CITEREFShtern2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSiegele1957'] = {'Bach\'s compositions (sources)'},
['CITEREFSilanos2014'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFSilke2006'] = {'O\'Donnell family tree'},
['CITEREFSimmons2005'] = {'MSW3 Chiroptera'},
['CITEREFSimon1966'] = {'Simon-Wines Australia'},
['CITEREFSimonWarner2011'] = {'Amtrak By the Numbers'},
['CITEREFSinclair1911'] = {'DCBL'},
['CITEREFSinger1905'] = {'Jewish Encyclopedia'},
['CITEREFSix1934'] = {'Cite Six', 'Cite six'},
['CITEREFSkjærvø2018'] = template_names['ODLA'],
['CITEREFSkoulatos1980'] = {'Les personnages byzantins de l\'Alexiade'},
['CITEREFSloan1964'] = {'Sloan1964'},
['CITEREFSmith1854'] = {'Cite DGRG', 'DGRG'},
['CITEREFSmith1870'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1873'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1876'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith1880'] = {'DGRBM', 'Cite DGRBM'},
['CITEREFSmith2010'] = {'Smith-Cruise Ships-2010'},
['CITEREFSolomentsev2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSolomon2000'] = {'Solomon-American Diesel', 'Solomon-UP'},
['CITEREFSolomon2003'] = {'Solomon-Masterpieces'},
['CITEREFSolomon2004'] = {'Solomon-Amtrak'},
['CITEREFSolomon2005'] = {'Solomon-SP-Passenger'},
['CITEREFSolomon2006'] = {'Solomon-EMD Locomotives'},
['CITEREFSolomon2011'] = {'Solomon-Modern Diesel'},
['CITEREFSolomon2014'] = {'Solomon-GE and EMD'},
['CITEREFSolomonSchafer2007'] = {'Solomon-New York Central'},
['CITEREFSolopova2009'] = template_names['ME-ref'],
['CITEREFSoucek1982'] = template_names['Iranica'],
['CITEREFSoucek1983'] = template_names['Iranica'],
['CITEREFSoustal1991'] = {'Tabula Imperii Byzantini'},
['CITEREFSoustalKoder1981'] = {'Tabula Imperii Byzantini'},
['CITEREFSpielhoff1991'] = {'Spielhoff-EL'},
['CITEREFSpitta1894'] = {'Bach\'s compositions (sources)'},
['CITEREFSpitta1899'] = {'Bach\'s compositions (sources)'},
['CITEREFSpringirth2016'] = {'Springirth-Philadelphia'},
['CITEREFSpuhler1986'] = template_names['Cam_Hist_Iran'],
['CITEREFSpuler1983'] = template_names['Iranica'],
['CITEREFSpuler1987'] = template_names['Iranica'],
['CITEREFStagner1993'] = {'Stagner-Transition'},
['CITEREFStansfield1999'] = {'Stansfield-AyrRenfrew'},
['CITEREFStatistical_Yearbook_of_the_Republic_of_Croatia_2015'] = {'Croatia Yearbook 2015'},
['CITEREFStaufer1993'] = {'Staufer-Pennsy_III'},
['CITEREFStauferPennypacker1962'] = {'Staufer-Pennsy'},
['CITEREFStauferPennypacker1968'] = {'Staufer-Pennsy Power II'},
['CITEREFStaunton1988'] = {'Australian Dictionary of Biography'},
['CITEREFSternFishmanTilove2006'] = {'Cite New York 2000', 'Cite NY2000', 'Cite ny2000', 'Cite NY 2000', 'Cite ny 2000'},
['CITEREFSternGilmartinMassengale1983'] = {'Cite New York 1900', 'Cite NY1900'},
['CITEREFSternGilmartinMellins1987'] = {'Cite New York 1930', 'Cite NY 1930', 'Cite NY1930', 'Cite ny1930', 'Cite ny 1930'},
['CITEREFSternMellinsFishman1995'] = {'Cite New York 1960', 'Cite NY1960', 'Cite NY 1960', 'Cite ny1960', 'Cite ny 1960'},
['CITEREFSternMellinsFishman1999'] = {'Cite New York 1880', 'Cite NY1880', 'Cite NY 1880', 'Cite ny1880', 'Cite ny 1880'},
['CITEREFStewart1974'] = {'When Steam Was King'},
['CITEREFStrachey1981'] = template_names['ME-ref'],
['CITEREFStrickland1983'] = {'Strickland Locomotive Directory'},
['CITEREFStähelin1909'] = {'Schaff-Herzog'},
['CITEREFSuetin2001'] = {'Springer', 'SpringerEOM'},
['CITEREFSundermann1988'] = template_names['Iranica'],
['CITEREFSusanne_Schurr1992'] = {'BBKL'},
['CITEREFSusanne_Siebert1992'] = {'BBKL'},
['CITEREFSvolopoulos1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSwartz1992'] = {'Swartz An Introduction to Functional Analysis'},
----------< T >----------
['CITEREFLondon_Gazette'] = {'London Gazette'},
['CITEREFTaber1977'] = {'Taber-DLW-19th'},
['CITEREFTaberTaber1980'] = {'Taber-DLW-20th-1'},
['CITEREFTaberTaber1981'] = {'Taber-DLW-20th-2'},
['CITEREFTafazzoli1999'] = template_names['Iranica'],
['CITEREFTafazzoli1999'] = {'Encyclopaedia Islamica'},
['CITEREFTafazzoli2000'] = template_names['Iranica'],
['CITEREFTalbot1991'] = template_names['ODB'],
['CITEREFTalbotKazhdan1991'] = template_names['ODB'],
['CITEREFTanındı2008'] = template_names['Iranica'],
['CITEREFTao2009'] = {'Cite Cambridge History of China'},
['CITEREFTer-Ghewondyan1976'] = {'The Arab Emirates in Bagratid Armenia'},
['CITEREFThe_London_Gazette1950'] = {'London Gazette'},
['CITEREFThe_London_Gazette_26_September_1919'] = {'London Gazette'},
['CITEREFThielemann2012'] = {'Bach\'s compositions (sources)'},
['CITEREFThomas1970'] = {'HistoryofParliament'},
['CITEREFThomas1971'] = {'Thomas-History-VI'},
['CITEREFThrush2010'] = {'HistoryofParliament'},
['CITEREFTikhomirov2001'] = {'Springer'},
['CITEREFTittel1966'] = {'Bach\'s compositions (sources)'},
['CITEREFTodt1996'] = {'BBKL'},
['CITEREFTodtVest2014'] = {'Tabula Imperii Byzantini'},
['CITEREFTolkien1937'] = template_names['ME-ref'],
['CITEREFTolkien1954'] = template_names['ME-ref'],
['CITEREFTolkien1955'] = template_names['ME-ref'],
['CITEREFTolkien1964'] = template_names['ME-ref'],
['CITEREFTolkien1966'] = template_names['ME-ref'],
['CITEREFTolkien1977'] = template_names['ME-ref'],
['CITEREFTolkien1980'] = template_names['ME-ref'],
['CITEREFTolkien1982'] = template_names['ME-ref'],
['CITEREFTolkien1983'] = template_names['ME-ref'],
['CITEREFTolkien1984'] = template_names['ME-ref'],
['CITEREFTolkien1985'] = template_names['ME-ref'],
['CITEREFTolkien1986'] = template_names['ME-ref'],
['CITEREFTolkien1987'] = template_names['ME-ref'],
['CITEREFTolkien1988'] = template_names['ME-ref'],
['CITEREFTolkien1989'] = template_names['ME-ref'],
['CITEREFTolkien1990'] = template_names['ME-ref'],
['CITEREFTolkien1992'] = template_names['ME-ref'],
['CITEREFTolkien1993'] = template_names['ME-ref'],
['CITEREFTolkien1994'] = template_names['ME-ref'],
['CITEREFTolkien1996'] = template_names['ME-ref'],
['CITEREFTolkien1998'] = template_names['ME-ref'],
['CITEREFTolkien1999'] = template_names['ME-ref'],
['CITEREFTolkien2007'] = template_names['ME-ref'],
['CITEREFTolkienSwann1978'] = template_names['ME-ref'],
['CITEREFTolkienTolkien1992'] = template_names['ME-ref'],
['CITEREFTonks1988'] = {'Tonks ironstone'},
['CITEREFTonks1989'] = {'Tonks ironstone'},
['CITEREFTonks1992'] = {'Tonks ironstone'},
['CITEREFTorri2013'] = {'Bach\'s compositions (sources)'},
['CITEREFTougher2018'] = template_names['ODLA'],
['CITEREFToumanoff1986'] = template_names['Iranica'],
['CITEREFToumanoff2010'] = template_names['Iranica'],
['CITEREFToumanoffChaumont1987'] = template_names['Iranica'],
['CITEREFTourret1995'] = {'Tourret-Allied Military Locomotives'},
['CITEREFTrapp1991'] = template_names['ODB'],
['CITEREFTrappBeyerSturm-Schnabl1983'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTrappWaltherBeyer1976'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTrappWaltherBeyerSturm-Schnabl1978'] = {'Prosopographisches Lexikon der Palaiologenzeit'},
['CITEREFTreadgold1988'] = {'The Byzantine Revival, 780–842'},
['CITEREFTreadgold1997'] = {'A History of the Byzantine State and Society'},
['CITEREFTrèves2006'] = {'Trèves François Topological vector spaces, distributions and kernels'},
['CITEREFTucker2009'] = {'Encyclopaedia Islamica'},
['CITEREFTurim1998'] = {'Turim-oshima'},
['CITEREFTuring1950'] = {'Turing 1950'},
----------< U >----------
['CITEREFUS-NHub_Music_Deposit_31_(Klavierbüchlein_für_W._F._Bach)_at_Bach_Digital'] = {'Bach\'s compositions (sources)'},
['CITEREFUtas2002'] = template_names['Iranica'],
['CITEREFUwe_Eckardt2001'] = {'BBKL'},
['CITEREFunknown_author1881'] = {'Cite ADB'},
['CITEREFunknown_author1882'] = {'Cite ADB'},
----------< V >----------
['CITEREFVakalopoulos1975'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFVan_Cleve1969'] = {'Setton-A History of the Crusades'},
['CITEREFVan_Hoorickx1971'] = {'Schubert\'s compositions (references)'},
['CITEREFVan_Hoorickx_1974–1976'] = {'Schubert\'s compositions (references)'},
['CITEREFVan_Lint2018'] = template_names['ODLA'],
['CITEREFVan_Riemsdijk,_Compound_Locomotives'] = {'Book-Van Riemsdijk-Compound Locomotives'},
['CITEREFVan_Tricht2011'] = {'The Latin Renovatio of Byzantium'},
['CITEREFVandenberghen1989'] = {'Vandenberghen-SNCB12.2'},
['CITEREFVarzos1984'] = {'Η Γενεαλογία των Κομνηνών', 'Varzos-Genealogy of the Komnenoi'},
['CITEREFVasiliev1935'] = {'Byzance et les Arabes'},
['CITEREFVasiliev1968'] = {'Byzance et les Arabes'},
['CITEREFVendler1997'] = {'Shakespeare sonnets bibliography'},
['CITEREFVenetis2012'] = template_names['Iranica'],
['CITEREFVenn1954'] = {'VennAC'},
['CITEREFVesel1999'] = template_names['Iranica'],
['CITEREFVetter1713'] = {'Bach\'s compositions (sources)'},
['CITEREFVevainaCanepa2018'] = template_names['ODLA'],
['CITEREFVeysey1958'] = {'Veysey-PE-1958'},
['CITEREFVischer1912'] = {'Schaff-Herzog'},
['CITEREFVogelsang2003'] = template_names['Iranica'],
['CITEREFVolkmer1991'] = {'Volkmer-Pennsy-Electric'},
['CITEREFvan_Leyden1956'] = {'Bach\'s compositions (sources)'},
['CITEREFvan_Lint2018'] = template_names['ODLA'],
['CITEREFvon_Prantl1879'] = {'Cite ADB'},
----------< W >----------
['CITEREFWagnerBäzoldZschechLüderitz1990'] = {'Wagner-EFA2.3.2'},
['CITEREFWalter_Asmus1966'] = template_names['NDB'],
['CITEREFWayner1972'] = {'Wayner - Car names, numbers, consists'},
['CITEREFWayner1973'] = {'Wayner-Spotter-2nd'},
['CITEREFWebb2018'] = template_names['ODLA'],
['CITEREFWeber2016'] = template_names['Iranica'],
['CITEREFWechsler1979'] = {'Cite Cambridge History of China'},
['CITEREFWegman2008'] = {'Wegman-Illustrated'},
['CITEREFWeibel1994'] = {'Weibel IHA'},
['CITEREFWeinrebHibbertKeayKeay2008'] = {'London encyclopedia'},
['CITEREFWeisbrod1991'] = {'Weisbrod-EFA1.5'},
['CITEREFWeisbrodMüllerPetznik1978'] = {'Weisbrod-EFA1.2'},
['CITEREFWeiskopf1987'] = template_names['Iranica'],
['CITEREFWeiskopf1989'] = template_names['Iranica'],
['CITEREFWeiskopf1990'] = template_names['Iranica'],
['CITEREFWeiskopf1993'] = template_names['Iranica'],
['CITEREFWellhausen1927'] = {'The Arab Kingdom and its Fall'},
['CITEREFWells1982'] = {'Accents of English'},
['CITEREFWells2008'] = {'Cite LPD'},
['CITEREFWelsh2006'] = {'Welsh-Broadway'},
['CITEREFWelsh2008'] = {'Welsh-UP'},
['CITEREFWerner_Raupp2001'] = {'BBKL'},
['CITEREFWestcott1911'] = {'DCBL'},
['CITEREFWestermayer,_Georg1882'] = {'Cite ADB'},
['CITEREFWham1997'] = {'Wham-Ayrshire'},
['CITEREFWharton1991'] = template_names['ODB'],
['CITEREFWhishaw1842'] = {'Whishaw-RailofGB-2ndEd'},
['CITEREFWhishaw1969'] = {'Whishaw-RailofGB'},
['CITEREFWhite1985'] = {'White-Passenger-1985'},
['CITEREFWhite1993'] = {'White - American railroad freight car'},
['CITEREFWhiteWillenskyLeadon2010'] = {'Cite aia5'},
['CITEREFWhitehurst1973'] = {'Whitehurst GW Engines from 1940'},
['CITEREFWhittow1996'] = {'The Making of Byzantium, 600–1025'},
['CITEREFWickman1982'] = {'Country study'},
['CITEREFWiesehöfer1986'] = template_names['Iranica'],
['CITEREFWiesehöfer2018'] = template_names['ODLA'],
['CITEREFWilansky2013'] = {'Wilansky Modern Methods in Topological Vector Spaces'},
['CITEREFWillard2004'] = {'Willard General Topology'},
['CITEREFWilliams1998'] = {'Williams-Philadelphia'},
['CITEREFWilliams2003'] = {'Bach\'s compositions (sources)'},
['CITEREFWilliams2014'] = template_names['Iranica'],
['CITEREFWillis1750'] = {'Cite Notitia Parliamentaria'},
['CITEREFWilson2017'] = {'Wilson-Guide'},
['CITEREFWilsonFiske1891'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWilsonFiske1892'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWilsonFiske1900'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFWiltshire2000'] = {'Lloyd-Margaret River'},
['CITEREFWinfieldLyon2004'] = {'Winfield'},
['CITEREFWinkler1883'] = template_names['ADB'],
['CITEREFWitakowski2018'] = template_names['ODLA'],
['CITEREFWolff1969'] = {'Setton-A History of the Crusades'},
['CITEREFWollny2015'] = {'Bach\'s compositions (sources)'},
['CITEREFWood1907'] = {'Cite Nuttall', 'Nuttall'},
['CITEREFWoodsKilpatrick2005'] = {'MSW3 Hystricognathi'},
['CITEREFWorden2008'] = {'Country study'},
['CITEREFWortley2010'] = {'John Skylitzes: A Synopsis of Byzantine History, 811–1057'},
['CITEREFWozencraft2005'] = {'MSW3 Carnivora'},
['CITEREFWright1979'] = {'Cite Cambridge History of China'},
['CITEREFWright2000'] = {'Bach\'s compositions (sources)'},
['CITEREFWägliJacobi2010'] = {'Schienennetz Schweiz'},
['CITEREFWürsch2013'] = template_names['Iranica'],
----------< X >----------
----------< Y >----------
['CITEREFYakubova2016'] = template_names['Iranica'],
['CITEREFYarshater1983'] = template_names['Iranica'],
['CITEREFYarshater1986'] = template_names['Cam_Hist_Iran'],
['CITEREFYarshater1988'] = template_names['Iranica'],
['CITEREFYarshater2018'] = template_names['Iranica'],
['CITEREFYarshater2021'] = template_names['Iranica'],
['CITEREFYazici2002'] = template_names['Iranica'],
['CITEREFYenne2005'] = {'Yenne-Chiefs'},
['CITEREFYildiz2004'] = template_names['Iranica'],
['CITEREFYonge1990'] = {'Quail-4'},
['CITEREFYonge1994'] = {'Quail-5'},
['CITEREFYonge2002'] = {'Quail-5'},
['CITEREFYonge2008'] = {'Quail-5'},
['CITEREFYonge2016'] = {'Quail-2-2016'},
['CITEREFYongePadgettSzwenk2013'] = {'Quail-4-Paper-3rdEd'},
['CITEREFYu1986'] = {'Cite Cambridge History of China'},
['CITEREFYusofi1990'] = template_names['Iranica'],
----------< Z >----------
['CITEREFZahn1889–1893'] = {'Bach\'s compositions (sources)'},
['CITEREFZakeri2021'] = template_names['Iranica'],
['CITEREFZarrinkoubNegahban2008'] = {'Encyclopaedia Islamica'},
['CITEREFZarrinkub1975'] = template_names['Cam_Hist_Iran'],
['CITEREFZeiniWiesehöfer2018'] = template_names['ODLA'],
['CITEREFZekulich2000'] = {'Zekulich-WineWA'},
['CITEREFZimmermann2004'] = {'Zimmermann-Burlington'},
['CITEREFZimmermann2007'] = {'Zimmermann-GrandLuxe'},
['CITEREFZuccaric._1747'] = {'Bach\'s compositions (sources)'},
----------< UNSORTED >----------
['CITEREFGazette27462'] = {'London Gazette'},
['CITEREFCawley2012'] = {'Medieval Lands by Charles Cawley'},
['CITEREFCrone2003'] = {'Slaves on Horses'},
['CITEREFΙστορία_του_Ελληνικού_Έθνους'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFSpyropoulos1928'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFPikros1977'] = {'Ιστορία του Ελληνικού Έθνους'},
['CITEREFÖz1993'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzgüdenli2008'] = template_names['Iranica'],
['CITEREFÖzaydın2002'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzaydın2006'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖzkuyumcu2006'] = {'TDV Encyclopedia of Islam'},
['CITEREFÖztürk2013'] = {'TDV Encyclopedia of Islam'},
['CITEREFΜεγάλη_Στρατιωτικὴ_καὶ_Ναυτικὴ_Ἐγκυκλοπαιδεία'] = {'Great Military and Naval Encyclopaedia'},
['CITEREFŞeşen1988'] = {'TDV Encyclopedia of Islam'},
['CITEREFFranke1994'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFTao2009'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFWechsler1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFWright1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},
['CITEREFHistoric_England_Benty_Grange'] = {'NHLE'},
['CITEREFWalter1967'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFAliprantisBorder2006'] = {'Aliprantis Border Infinite Dimensional Analysis A Hitchhiker\'s Guide Third Edition'},
['CITEREFAmanat1985'] = template_names['Iranica'],
['CITEREFBaldwin1991'] = template_names['ODB'],
['CITEREFCallwell1999'] = {'Muni Chronology'},
['CITEREFHalmos1982'] = {'Halmos A Hilbert Space Problem Book 1982'},
['CITEREFHistoric_England'] = {'NHLE', 'National Heritage List for England'},
['CITEREFHitchins2001'] = template_names['Iranica'],
['CITEREFJohnson1906'] = {'BDA1906', 'Cite BDA1906'},
['CITEREFMachinery's_Handbook1996'] = {'MachinerysHandbook25e'},
['CITEREFMatthee2012'] = template_names['Iranica'],
['CITEREFNicholson2018'] = template_names['ODLA'],
['CITEREFNicol1968'] = {'The Byzantine Family of Kantakouzenos'},
['CITEREFWilsonFiske1889'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},
['CITEREFShippey2005'] = template_names['ME-ref'],
['CITEREFColvin1947'] = {'Colvin1947'},
['CITEREFSorensen1956'] = {'Sorensen1956'},
['CITEREFBosworth1999'] = template_names['Iranica'],
['CITEREFGregoryKazhdan1991'] = template_names['ODB'],
['CITEREFKelley1975'] = {'Kelley General Topology'},
['CITEREFIacocca1984'] = {'Iacocca1984'},
['CITEREFNestruev2020'] = {'Nestruev Smooth Manifolds and Observables 2020'},
['CITEREFOrmsby1982'] = {'Cite DCB'},
['CITEREFVentura1963'] = {'DBI', 'Dizionario Biografico degli Italiani'},
['CITEREFZălinescu2002'] = {'Zălinescu Convex Analysis in General Vector Spaces 2002'},
['CITEREFGreenwoodEarnshaw1997'] = {'Greenwood&Earnshaw2nd'},
['CITEREFMullié1852'] = {'Cite Mullié', 'Mullié'},
['CITEREFEl-Hibri2021'] = {'The Abbasid Caliphate: A History'},
['CITEREFHolland1989'] = {'Holland1989'},
['CITEREFHowes1995'] = {'Howes Modern Analysis and Topology 1995'},
['CITEREFRockafellarWets2009'] = {'Rockafellar Wets Variational Analysis 2009 Springer'},
['CITEREFSearle1980'] = {'Searle 1980'},
['CITEREFVan_Riemsdijk1994'] = {'Book-Van Riemsdijk-Compound Locomotives'},
['CITEREFGaines2008'] = {'Cite Gaines 2008'},
['CITEREFSmid2008'] = {'Smid2008'},
['CITEREFSmid2010'] = {'Smid2010'},
['CITEREFNesbittOikonomides1991'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittOikonomides1994'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittOikonomides1996'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFMcGeerNesbittOikonomides2001'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFMcGeerNesbittOikonomides2005'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFNesbittMorrisson2009'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITETEFCotsonis2020'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},
['CITEREFTolkienSwann2002'] = {'ME-ref'},
['CITEREFApostol1976'] = {'Apostol IANT'},
['CITEREFBournoutian2018'] = {'Cite Armenia and Imperial Decline'},
['CITEREFCsászár1978'] = {'Császár General Topology'},
['CITEREFHovannisian1971'] = {'Cite The Republic of Armenia Volume 1'},
['CITEREFКавказский_календарь_на_1913_год'] = {'Cite Kavkazskiy Kalendar 1913'},
['CITEREFКавказский_календарь_на_1917_год'] = {'Cite Kavkazskiy Kalendar 1917'},
['CITEREFLang2002'] = {'Lang Algebra'},
['CITEREFLurie'] = {'Lurie-HA'},
['CITEREFTsutsiev2014'] = {'Cite Atlas of the Ethno-Political History of the Caucasus'},
['CITEREFVenables1911'] = {'DCBL'},
['CITEREFWilansky2008'] = {'Wilansky Topology for Analysis 2008'},
['CITEREFKazemzadeh1951'] = {'The Struggle for Transcaucasia'},
['CITEREFNicol1984'] = {'The Despotate of Epiros, 1267–1479'},
['CITEREFKorkotyan1932'] = {'Cite The Population of Soviet Armenia'},
['CITEREFHalm1991'] = {'Das Reich des Mahdi'},
['CITEREFHalm2014'] = {'Kalifen und Assassinen'},
['CITEREFHovannisian1982'] = {'Cite The Republic of Armenia Volume 2'},
['CITEREFHovannisian1996'] = {'Cite The Republic of Armenia Volume 3', 'Cite The Republic of Armenia Volume 4'},
['CITEREFHovannisian1967'] = {'Cite Armenia on the Road to Independence'},
['CITEREFKazemzadeh1951'] = {'Cite The Struggle for Transcaucasia'},
['CITEREFКавказский_календарь_на_1910_год'] = {'Cite Kavkazskiy Kalendar 1910'},
['CITEREFКавказский_календарь_на_1915_год'] = {'Cite Kavkazskiy Kalendar 1915'},
['CITEREFNicol1994'] = {'The Byzantine Lady: Ten Portraits, 1250–1500'},
['CITEREFTolkien1979'] = {'ME-ref'},
['CITEREFTopping1975'] = {'Setton-A History of the Crusades', 'Wisconsin History of the Crusades'},
['CITEREFHalm2003'] = {'Die Kalifen von Kairo'},
['CITEREFLilieLudwigPratschZielke1999'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},
['CITEREFDer_Matossian2020'] = {'Cite The First Republic of Armenia'},
['CITEREFEaston1897'] = {'Eastons', 'EBD'},
['CITEREFLilieLudwigPratschZielke2000'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2001'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2002'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2009'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFLilieLudwigPratschZielke1998–2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},
['CITEREFWells2000'] = {'Cite LPD'},
['CITEREFWells1990'] = {'Cite LPD'},
['CITEREFHunter2012'] = {'Cite HGOC', 'Cite Hunter'},
['CITEREFFordCrowther1922'] = {'Ford1922'},
['CITEREFLegifrance'] = {'Cite Legifrance'},
['CITEREFCoverdale_&_Colpitts1946'] = {'Coverdale & Colpitts 1', 'Coverdale & Colpitts 2', 'Coverdale & Colpitts 3'},
['CITEREFDonaghy1972'] = {'Donaghy-LMR'},
['CITEREFKubrusly2011'] = {'Kubrusly The Elements of Operator Theory 2nd Edition 2011'},
['CITEREFNemiroffBonnell1998'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2004'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2005'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2006'] = {'Cite APOD'},
['CITEREFNemiroffBonnell2007'] = {'Cite APOD'},
}
--[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------
]]
return {
DNB_special_patterns = DNB_special_patterns,
DNB_template_names = template_names['DNB'],
special_patterns = special_patterns,
whitelist = whitelist,
wrapper_templates = wrapper_templates,
}
23630084de31b60e3f29b5c4182432ec14252600
Template:Sfnm/doc
10
900
1991
1990
2023-10-01T10:44:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Sfnm/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{lua |Module:Footnotes}}
<!-- PLEASE ADD TEMPLATE CATEGORIES AT THE BOTTOM OF THIS PAGE. -->
This is a companion template to {{tlx|Sfn}}; see there for a more general introduction. Unlike {{tld|Sfn}}, however, {{tlx|Sfnm}} supports the inclusion of multiple sources in a single footnote.
==Usage==
Each of the several sources listed in the template is identified using a set of numbered ({{var|n}}) parameters where the first source is numbered <code>1</code>, the second <code>2</code>, etc. There is no set limit to the number of sources that may be listed in a single template though editors should be aware that readability suffers with an increase of the number of sources.
The following markup:
<code><nowiki>{{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50}}</nowiki></code>
will produce the following footnote: {{Sfnm|1a1=Smith|1a2=Jones|1a3=Johnson|1y=2005|1p=15|1ignore-err=yes|2a1=Jones|2a2=Johnson|2a3=Smith|2y=2004|2p=50|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
===Parameters===
The following parameters are used where {{var|n}} always begins at 1, increases by one for each successive source; {{var|n}} has no set limit.
*{{para|{{var|n}}a{{var|m}}}} – source {{var|n}} author (required) – has the form: <code>{{var|n}}a{{var|m}}</code> where <code>{{var|n}}</code> is the source number, <code>a</code> indicates that this is an author parameter, and <code>{{var|m}}</code> identifies the {{var|m}}th author of source {{var|n}} → {{para|1a1}} is first source author one, {{para|5a4}} is fifth source author four; author numbers (<code>{{var|m}}</code>) greater than <code>4</code> are ignored;
*{{para|{{var|n}}y}} – year – accepted formats are: <code>YYYY</code>, <code>n.d.</code> or <code>nd</code> (no date), <code>c. YYYY</code>, <code>YYYY–YYYY</code> (endash separator); all dates may have a single lowercase letter disambiguator suffix; see [[Template:Sfn#More than one work in a year|sfn §More than one work in a year]]
*{{para|{{var|n}}p}} – in-source page cited
*{{para|{{var|n}}pp}} – in-source pages cited
*{{para|{{var|n}}loc}} – in-source location when not pagination – appended to {{para|{{var|n}}p}} or {{para|{{var|n}}pp}} if present
*{{para|{{var|n}}ref}} – alternate reference identifier used to link source to its full citation; the special keyword <code>none</code> inhibits creation of a link from source to its long form reference
*{{para|{{var|n}}ps}} – source postscript – terminal character or text; defaults to none; the special keyword <code>none</code> (used by {{tld|sfn}}) is silently ignored
*{{para|ps}} – postscript – template's final terminal character or text; defaults to period (<code>.</code>); the special keyword <code>none</code> inhibits the postscript character; yields to {{para|{{var|n}}ps}} where {{var|n}} is the last source
When a source has a single author, use of positional parameters for author and year is supported; both <code>|{{var|author}}</code> and <code>|{{var|year}}</code> are required when there is more than one of these single-author sources listed in the template:
<code><nowiki>{{Sfnm|Smith|2005|1p=15|Jones|2004|2p=2}}</nowiki></code>
which will produce the following footnote: {{Sfnm|Smith|2005|1p=15|1ignore-err=yes|Jones|2004|2p=2|2ignore-err=yes}} <!-- |#ignore-err=yes here because template can't see into transcluded doc page -->
:{| style="border: 1px solid black"
|{{reflist}}
|}
==Literature cited==
*{{cite journal|last1=Jones|first1=John|year=2004|title=My Journal Article|journal=Journal of Important Studies|volume=509|issue=13 |pages=10–23}}
*{{cite book|last1=Jones|first1=John|last2=Johnson|first2=John|last3=Smith|first3=John|year=2004|title=Our First Book}}
*{{cite journal|last1=Smith|first1=John|year=2005|title=Another Journal Article|journal=Journal of Important Studies|volume=510|issue=14 |pages=100–134}}
*{{cite book|last1=Smith|first1=John|last2=Jones|first2=John|last3=Johnson|first3=John|year=2005|title=Our Second Book}}
==See also==
*{{tlx|sfnmp}} – a similar template that renders source year in parentheses
<includeonly>{{sandbox other||
<!-- ADD TEMPLATE CATEGORIES BELOW THIS LINE -->
[[Category:Footnote templates]]
[[Category:Author–date citation templates]]
}}</includeonly>
fef2c7fdc6e4e76c768655462ac23beb02f19157
Module:Citation/CS1/Utilities/doc
828
901
1993
1992
2023-10-01T10:45:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Utilities/doc]]
wikitext
text/x-wiki
{{#lst:Module:Citation/CS1/doc|header}}
This page contains various functions and tables that are common to multiple of the various modules that make up [[Module:Citation/CS1]].
{{#lst:Module:Citation/CS1/doc|module_components_table}}
c4f3e7c1767fa08a7f9f535de814b7de4d01a10f
Social Democracy
0
902
1994
2023-10-01T10:46:19Z
Führerredux
2
Created page with "{{Short description|Political ideology within the socialist movement}} {{About|the political ideology within the socialist movement|socialism emphasizing democracy sometimes described as social democracy|Democratic socialism|the policy regime in Northern Europe sometimes described as social democracy|Nordic model|the social welfare model in Western Europe sometimes described as social democracy|Social market economy}} {{Hatnote|See also: Social Democrats (disambiguat..."
wikitext
text/x-wiki
{{Short description|Political ideology within the socialist movement}}
{{About|the political ideology within the socialist movement|socialism emphasizing democracy sometimes described as social democracy|Democratic socialism|the policy regime in Northern Europe sometimes described as social democracy|Nordic model|the social welfare model in Western Europe sometimes described as social democracy|Social market economy}}
{{Hatnote|See also: [[Social Democrats (disambiguation)]], [[Social Democratic Party]], and [[List of social democratic parties]].}}
{{Use dmy dates|date=October 2021}}
{{Use Oxford spelling|date=October 2021}}
{{Social democracy sidebar}}
{{Party politics|platform}}
'''Social democracy''' is a [[Political philosophy|political]], [[Social philosophy|social]], and [[economic philosophy]] within [[socialism]]{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5|3a1=Heywood|3y=2007|3pp=101, 134–136, 139|4a1=Ypi|4y=2018|5a1=Watson|5y=2019}} that supports [[Liberal democracy|political]] and [[economic democracy]].{{sfnm|1a1=Wintrop|1y=1983|1p=306|2a1=Archer|2y=1995|3a1=Jones|3y=2001|3p=737|4a1=Ritzer|4y=2004|4p=479}} As a policy regime, it is described by academics as advocating [[Economic interventionism|economic]] and [[social intervention]]s to promote [[social justice]] within the framework of a [[liberal-democratic]] [[polity]] and a [[capitalist]]-oriented [[mixed economy]].{{sfnm|1a1=McCarthy|1y=2018|2a1=Berman|2y=2020}} The protocols and norms used to accomplish this involve a commitment to [[Representative democracy|representative]] and [[participatory democracy]], measures for [[income redistribution]], [[regulation of the economy]] in the [[Common good|general interest]], and [[social welfare]] provisions.{{sfnm|1a1=Miller|1y=1998|1p=827|2a1=Badie|2a2=Berg-Schlosser|2a3=Morlino|2y=2011|2p=2423|3a1=Heywood|3y=2012|3p=128}} Due to longstanding governance by social democratic parties during the [[post-war consensus]] and their influence on socioeconomic policy in Northern and Western Europe, social democracy became associated with [[Keynesianism]], the [[Nordic model]], the [[social-liberal]] paradigm, and [[welfare state]]s within political circles in the late 20th century.{{sfnm|1a1=Gombert|1y=2009|1p=8|2a1=Sejersted|2y=2011}} It has been described as the most common form of Western or modern socialism,{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=81, 100|2a1=Pruitt|2y=2019|3a1=Berman|3y=2020}} as well as the [[reformist]] wing of [[democratic socialism]].{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Foley|2y=1994|2p=23|3a1=Eatwell|3a2=Wright|3y=1999|3p=80|4a1=Busky|4y=2000|4p=8|5a1=Sargent|5y=2008|5p=117|6a1=Heywood|6y=2012|6p=97|7a1=Hain|7y=2015|7p=3}}
The [[history of social democracy]] stretches back to the 19th-century [[labour movement]]. It is a [[Left-wing politics|left-wing]]<ref>{{harvnb|Tsakalotos|2001|p=26}}: "...{{nbsp}}most left-wing approaches (social democratic, democratic socialist, and so on) to how the market economy works."); {{harvnb|Brandal|Bratberg|Thorsen|2013|loc=Introduction}}: "In Scandinavia, as in the rest of the world, 'social democracy' and 'democratic socialism' have often been used interchangeably to define the part of the left pursuing gradual reform through democratic means."</ref> political ideology that advocates for a [[Democracy|peaceful democratic]] [[Reformism|evolution]] from laissez-faire or [[crony capitalism]] towards [[Social_market_economy#Social_capitalism_model|social capitalism]] sometimes also referred to as a [[social market economy]]. Social democracy opposes the [[Planned economy|full centralization]] of an economy as proposed by some socialists. The main difference between social democracy and [[democratic socialism]] is that democratic socialism is a [[political philosophy]] within socialism,{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5|3a1=Heywood|3y=2007|3pp=101, 134–136, 139|4a1=Ypi|4y=2018|5a1=Watson|5y=2019}} advocating an [[Reformism|evolutionary]] and peaceful transition from [[Capitalist mode of production (Marxist theory)|capitalism]] to [[Socialist mode of production|socialism]], using established political processes, as opposed to the [[revolutionary socialist]] approach to transition associated with [[orthodox Marxism]].{{sfn|Duignan|Kalsang Bhutia|Mahajan|2014}} On the other hand, social democracy seeks to improve the lives of people living within a [[Freedom|free]] and [[Democracy|democratic]] society, by having a well regulated [[Social_market_economy#Social_capitalism_model|market economy]].
In the early [[post-war]] era in Western Europe, social democratic parties rejected the [[Stalinism|Stalinist]] political and economic model then-current in the Soviet Union, committing themselves either to an alternative path to socialism or a compromise between capitalism and socialism.{{sfn|Adams|1993|pp=102–103}} In this period, social democrats embraced a mixed economy based on the predominance of [[private property]], with only a minority of essential utilities and public services under public ownership. Social democrats promoted [[Keynesian economics]], [[state interventionism]], and the welfare state while placing less emphasis on the goal of replacing the capitalist system ([[factor market]]s, [[private property]], and [[wage labour]]) with a qualitatively different socialist [[economic system]].{{sfnm|1a1=Weisskopf|1y=1992|1p=10|2a1=Miller|2a2=1998|2p=827|3a1=Jones|3y=2001|3p=1410|4a1=Heywood|4y=2012|4pp=125–128}} Along with [[communism]], social democracy became the dominant political tendency within the international socialist movement by the early 1920s.<ref>{{harvnb|Newman|2005|p=5}}: "Chapter 1 looks at the foundations of the doctrine by examining the contribution made by various traditions of socialism in the period between the early 19th century and the aftermath of the First World War. The two forms that emerged as dominant by the early 1920s were social democracy and communism."</ref>
While retaining socialism as a long-term goal,{{sfnm|1a1=Roemer|1y=1994|1pp=25–27|2a1=Berman|2y=1998|2p=57|3a1=Bailey|3y=2009|3p=77|4a1=Lamb|4y=2015|4pp=415–416}} social democracy is distinguished from some modern forms of democratic socialism for seeking to humanize capitalism and create the conditions for it to lead to greater democratic, [[egalitarian]], and [[solidaristic]] outcomes.{{sfn|Weisskopf|1992|p=10}} It is characterized by a commitment to policies aimed at curbing [[Social inequality|inequality]], eliminating [[oppression]] of [[Social privilege|underprivileged]] groups, and eradicating [[poverty]],{{sfnm|1a1=Heywood|1y=2012|1p=97|2a1=Hoefer|2y=2013|2p=29}} as well as support for universally accessible public services like [[child care]], [[Universal education|education]], [[elderly care]], [[Universal health care|health care]], and [[workers' compensation]].{{sfn|Hinchman|Meyer|2007|p=137}} It has strong connections with the [[labour movement]] and [[trade unions]], being supportive of [[collective bargaining]] rights for workers and measures to extend decision-making beyond politics into the economic sphere in the form of [[co-determination]], or [[social ownership]], for employees and stakeholders.{{sfnm|1a1=Hinchman|1a2=Meyer|1y=2007|1p=91|2a1=Mathers|2a2=Taylor|2a3=Upchurch|2y=2009|2p=51}}
The [[Third Way]], which ostensibly aims to fuse [[liberal economics]] with social democratic [[welfare]] policies, is an ideology that developed in the 1990s and is sometimes associated with social democratic parties; some analysts have characterized the Third Way as part of the [[Neoliberalism|neoliberal]] movement.{{sfn|Romano|2006|p=11}}
{{toc limit|3}}
==Overview==
===Definition===
Social democracy is defined as one of many [[socialist traditions]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80–103|2a1=Newman|2y=2005|2p=5}} As a [[political movement]], it aims to achieve socialism through [[Gradualism|gradual]] and [[Democracy|democratic]] means.{{sfnm|1a1=Steger|1y=1997|2a1=Safra|2y=1998|2p=920|3a1=Stevens|3y=2000|3p=1504|4a1=Duignan|4a2=Kalsang Bhutia|4a3=Mahajan|4y=2014}} This definition goes back to the influence of both the [[reformist socialism]] of [[Ferdinand Lassalle]] and the [[Proletarian internationalism|internationalist]] [[revolutionary socialism]] advanced by [[Karl Marx]] and [[Friedrich Engels]], by whom social democracy was influenced.{{sfn|Aspalter|2001|p=52}} As an international political movement and [[ideology]], social democracy has undergone various major forms throughout its history.{{sfnm|1a1=Miller|1y=1998|1p=827|2a1=Durlauf|2a2=Lawrence|2y=2008}} Whereas in the 19th century, it was "organized Marxism", social democracy became "organized reformism" by the 20th century.{{sfn|Eatwell|Wright|1999|p=80}} As a policy regime,{{sfnm|1a1=Egle|1a2=Henkes|1a3=Merkel|1a4=Petring|1y=2008|2a1=Kotz|2y=2009|3a1=Foster|3a2=Tsakiroglou|3y=2014}} social democracy entails support for a [[mixed economy]] and ameliorative measures to benefit the [[working class]] within the framework of [[democratic capitalism]].{{sfnm|1a1=Hinchman|1a2=Meyer|1y=2007|1p=112|2a1=Badie|2a2=Berg-Schlosser|2a3=Morlino|2y=2011|2p=2423|3a1=Heywood|3y=2012|3p=128}} By the 21st century, a social democratic policy regime{{refn|"Social democracy therefore came to stand for a broad balance between the market economy, on the one hand, and state intervention, on the other. Although this stance has been most clearly associated with reformist socialism, it has also been embraced, to a greater or lesser extent, by others, notably modern liberals and paternalist conservatives."{{sfn|Heywood|2012}}|group=nb}} is generally defined as an increase in [[welfare]] policies or an increase in [[public service]]s and may be used synonymously with the [[Nordic model]].{{sfn|Bolton|2020}}
In political science, ''democratic socialism'' and ''social democracy'' are largely seen as synonyms,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3}} while they are distinguished in journalistic use.{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Cooper|5y=2018|6a1=Rodriguez|6y=2018|7a1=Levitz, April 2019}} Under this democratic socialist definition,{{refn|"Social democracy is a political ideology focusing on an evolutionary road to socialism or the humanization of capitalism. It includes parliamentary process of reform, the provision of state benefits to the population, agreements between labor and the state, and the revisionist movement away from revolutionary socialism."{{sfn|O'Hara|2003|p=538}} "By the early twentieth century, ... many such [social democratic] parties had come to adopt parliamentary tactics and were committed to a gradual and peaceful transition to socialism. As a result, social democracy was increasingly taken to refer to democratic socialism, in contrast to revolutionary socialism."{{sfn|Heywood|2012}} "Social democracy refers to a political theory, a social movement or a society that aims to achieve the egalitarian objectives of socialism while remaining committed to the values and institutions of liberal democracy."{{sfn|Blume|Durlauf|2016|p=606}} "In general, a label for any person or group who advocates the pursuit of socialism by democratic means. Used especially by parliamentary socialists who put parliamentarism ahead of socialism, and therefore oppose revolutionary action against democratically elected governments. Less ambiguous than social democracy, which has had, historically, the opposite meanings of (1) factions of Marxism, and (2) groupings on the right of socialist parties."{{sfn|Brown|McLean|McMillan|2018}}|group=nb}} social democracy is an ideology seeking to gradually build an alternative [[socialist economy]] through the institutions of [[liberal democracy]].{{sfn|O'Hara|2003|p=538}} Starting in the post-war period, social democracy was defined as a policy regime advocating the reformation of capitalism to align it with the ethical ideals of [[social justice]].{{sfn|Kornai|Yingi|2009|pp=11–24}} In the 19th century, it encompassed various non-revolutionary and revolutionary currents of socialism, excluding [[anarchism]].{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Eatwell|2a2=Wright|2y=1999|2p=80|3a1=Lamb|3y=2015|3pp=415–416}} In the early 20th century, social democracy came to refer to support for a process of developing society through existing political structures and opposition to revolutionary means, which are often associated with Marxism.{{sfn|O'Hara|2003|p=538}}
===Political party===
''Social Democratic'' is the name of socialist parties in several countries. The term came to be associated with the positions of the German and Swedish parties. The first advocated [[revisionist Marxism]], while the second advocated a comprehensive [[welfare state]]. By the 21st century, parties advocating social democracy include Labour, Left,{{sfn|Lafontaine|2009|pp=3–4}} and some Green parties.{{sfn|March|2008}}{{refn|"The far left is becoming the principal challenge to mainstream social democratic parties, in large part because its main parties are no longer extreme, but present themselves as defending the values and policies that social democrats have allegedly abandoned."{{sfn|March|2008}}|group=nb}} Most social democratic parties consider themselves democratic socialists and are categorized as socialists.{{sfnm|1a1=Lightfoot|1y=2005|1p=17|2a1=Docherty|2a2=Lamb|2y=2006|3a1=Lamb|3y=2015}} They continue to reference socialism,{{sfn|Adams|1998|pp=144–145}} either as a [[post-capitalist]] order{{sfnm|1a1=Schweizer Radio und Fernsehen|1y=2010|2a1=Schweizer Radio und Fernsehen, November 2016|3a1=Schweizer Radio und Fernsehen, December 2016}} or, in more ethical terms, as a just society, described as representing democratic socialism,{{sfnm|1a1=New Democratic Party of Canada|1y=2013|2a1=New Democratic Party of Canada|2y=2018}} without any explicit reference to the economic system or its structure.{{sfn|Ludlam|Smith|2017|p=3}} Parties such as the [[Social Democratic Party of Germany]] and the [[Swedish Social Democratic Party]]{{refn|The party's first chapter in its statutes says "the intention of the Swedish Social Democratic Labour Party is the struggle towards the Democratic Socialism", which is defined as a society with a democratic economy based on the socialist principle "From each according to his ability, to each according to his need."{{sfn|Samuelsson|1968}}|group=nb}} describe their goal as developing democratic socialism,{{sfn|Egle|Henkes|Merkel|Petring|2008|p=180}} with social democracy as the principle of action.{{sfn|Social Democratic Party of Germany|2007}} In the 21st century, European social democratic parties represent the [[Centre-left politics|centre-left]] and most are part of the [[European Socialist Party]], while democratic socialist parties are to their left within the [[Party of the European Left]]. Many of those social democratic parties are members of the [[Socialist International]], including several democratic socialist parties, whose [[Frankfurt Declaration]] declares the goal of developing democratic socialism.{{sfn|Busky|2000|p=8}} Others are also part of the [[Progressive Alliance]], founded in 2013 by most contemporary or former member parties of the Socialist International.{{sfnm|1a1=Lambin|1y=2014|1p=269|2a1=Imlay|2y=2018|2p=465}}
What [[socialists]] such as [[anarchists]], [[communists]], social democrats, [[syndicalists]], and some social democratic proponents of the [[Third Way]] share in common is history, specifically that they can all be traced back to the individuals, groups, and literature of the [[First International]], and have retained some of the terminology and symbolism such as the colour [[Red (political adjective)|red]]. How far society should intervene and whether the government, mainly the existing government, is the right vehicle for change are issues of disagreement.{{sfn|Docherty|Lamb|2006|pp=1–2}} As the ''Historical Dictionary of Socialism'' summarizes, "there were general criticisms about the social effects of the private ownership and control of capital", "a general view that the solution to these problems lay in some form of collective control (with the degree of control varying among the proponents of socialism) over the means of production, distribution, and exchange", and "there was agreement that the outcomes of this collective control should be a society that provided social equality and justice, economic protection, and generally a more satisfying life for most people".{{sfn|Docherty|Lamb|2006|pp=1–2}} ''Socialism'' became a catch-all term for the [[critics of capitalism]] and industrial society.{{sfn|Docherty|Lamb|2006|p=2}} Social democrats are [[anti-capitalists|anticapitalists]] insofar as criticism about "poverty, low wages, unemployment, economic and social inequality, and a lack of economic security" is linked to the [[private ownership]] of the [[means of production]].{{sfn|Docherty|Lamb|2006|pp=1–2}}
===Terminology===
In the 19th century, ''social democrat'' was a broad catch-all for international socialists owing their primary ideological allegiance to Lassalle or Marx, in contrast to those advocating various forms of [[utopian socialism]]. In one of the first scholarly works on European socialism written for an American audience, [[Richard T. Ely]]'s 1883 book ''French and German Socialism in Modern Times'', social democrats were characterized as "the extreme wing of the socialists" who were "inclined to lay so much stress on equality of enjoyment, regardless of the value of one's labor, that they might, perhaps, more properly be called communists".{{sfn|Ely|1883|p=204}} Many parties in this era described themselves as ''Social Democrats'', including the [[General German Workers' Association]] and the [[Social Democratic Workers' Party of Germany]], which merged to form the [[Social Democratic Party of Germany]], the [[Social Democratic Federation]] in Britain, and the [[Russian Social Democratic Labour Party]]. ''Social Democrat'' continued to be used in this context until the [[Bolshevik Revolution]] of October 1917, when ''Communist'' came into vogue for individuals and organizations espousing a revolutionary road to socialism.{{sfn|Williams|1985|p=289}}{{refn|According to [[Richard T. Ely]], "[social democrats] have two distinguishing characteristics. The vast majority of them are laborers, and, as a rule, they expect the violent overthrow of existing institutions by revolution to precede the introduction of the socialistic state. I would not, by any means, say that they are all revolutionists, but the most of them undoubtedly are. The most general demands of the social democrats are the following: The state should exist exclusively for the laborers; land and capital must become collective property, and production be carried on unitedly. Private competition, in the ordinary sense of the term, is to cease."{{sfn|Ely|1883|pp=204–205}}|group=nb}}
''Social democracy'' or ''social democratic'' remains controversial among socialists.{{sfn|Busky|2000|p=8}}{{refn|Donald F. Busky wrote: "Social democracy is a somewhat controversial term among democratic socialists. Many democratic socialists use ''social democracy '' as a synonym for ''democratic socialism'', while others, particularly revolutionary democratic socialists, do not, the latter seeing social democracy as something less than socialism—a milder, evolutionary ideology that seeks merely to reform capitalism. Communists also use the term ''social democratic'' to mean something less than true socialism that sought only to preserve capitalism by reform rather than by overthrowing and establishing socialism. Even revolutionary democratic socialists and Communists have at times, particularly the past, called their parties 'social democratic.'"{{sfn|Busky|2000|p=8}}|group=nb}} Some define it as representing a [[Marxist]] faction and non-communist socialists or the ''right-wing'' of socialism during the split with [[communism]].{{sfn|Brown|McLean|McMillan|2018}} Others have noted its pejorative use among communists and other socialists. According to [[Lyman Tower Sargent]], "''socialism'' refers to ''social'' theories rather than to theories oriented to the individual. Because many communists now call themselves ''democratic socialists'', it is sometimes difficult to know what a political label really means. As a result, ''social democratic'' has become a common new label for democratic socialist political parties."{{sfn|Sargent|2008|p=117}}
====Marxist revisionism====
[[Marxist revisionist]] [[Eduard Bernstein]]'s views influenced and laid the groundwork for developing post-war social democracy as a policy regime, [[Labour revisionism]], and the neo-revisionism{{sfn|Eatwell|Wright|1999|p=99}} of the [[Third Way]].{{sfn|Giddens|2003|p=2}} This definition of social democracy is focused on ethical terms, with the [[type of socialism]] advocated being [[Ethical socialism|ethical]] and [[Liberal socialism|liberal]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=86|2a1=Bastow|2a2=Martin|2y=2003|2pp=72–79|3a1=Heywood|3y=2012|3p=128}} Bernstein described socialism and social democracy in particular as organized liberalism;{{sfnm|1a1=Steger|1y=1997|1p=139|2a1=O'Meara|2y=2013|2p=16|3a1=Laidler|3y=2013|3p=253}} in this sense, [[liberalism]] is the predecessor and precursor of socialism,{{sfn|Freeden|Sargent|Stears|2013|p=350}} whose restricted view of [[Liberty (liberalism)|freedom]] is to be [[Liberty (socialism)|socialized]], while democracy must entail social democracy.{{sfn|Eatwell|Wright|1999|pp=83, 86}} For those social democrats, who still describe and see themselves as socialists, ''socialism'' is used in ethical or moral terms,{{sfnm|1a1=Giddens|1y=1998a|1p=71|2a1=Jackson|2a2=Tansey|2y=2008|2p=97}} representing democracy, egalitarianism, and social justice rather than a specifically socialist economic system.{{sfn|Kornai|Yingi|2009|pp=11–24}} Under this type of definition, social democracy's goal is that of advancing those values within a capitalist [[market economy]], as its support for a mixed economy no longer denotes the coexistence between [[Private property|private]] and [[public ownership]] or that between [[Economic planning|planning]] and [[market mechanism]]s but rather, it represents [[free market]]s combined with [[government intervention]] and [[Regulated market|regulations]].{{sfn|Eatwell|Wright|1999|p=100}}
Social democracy has been seen as a revision of [[orthodox Marxism]],{{sfn|Duignan|Kalsang Bhutia|Mahajan|2014}} although this has been described as misleading for modern social democracy.{{sfn|Eatwell|Wright|1999|p=86}} Some distinguish between ideological social democracy as part of the broad socialist movement and social democracy as a policy regime. The first is called ''classical social democracy'' or ''classical socialism'',{{sfnm|1a1=Adams|1y=1999|1loc="British socialism and the Labour movement", "Social democracy to New Labour"|1pp=103–106, 128–131|2a1=Romano|2y=2006|2p=4}} contrasted with ''competitive socialism'',{{sfn|Döring|2007|p=3}} ''liberal socialism'',{{sfn|Adams|1999|loc="British socialism and the Labour movement", "Social democracy to New Labour"|pp=103–106, 128–131}} ''neo-social democracy'',{{sfnm|1a1=Walters|1y=2001|1p=66|2a1=Katseli|2a2=Milios|2a3=Pelagidis|2y=2018}} and ''new social democracy''.{{sfnm|1a1=Gamble|1a2=Wright|1y=1999|1p=6|2a1=Fitzpatrick|2y=2003|3a1=Bailey|3y=2009|3pp=14–17|4a1=Meyer|4a2=Rutherford|4y=2011|4pp=111–119|5a1=Taylor|5y=2013|5p=133}}
==Philosophy==
As a form of reformist [[democratic socialism]],{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Foley|2y=1994|2p=23|3a1=Eatwell|3a2=Wright|3y=1999|3p=80|4a1=Busky|4y=2000|4p=8|5a1=Sargent|5y=2008|5p=117|6a1=Heywood|6y=2012|6p=97|7a1=Hain|7y=2015|7p=3}} social democracy rejects the either/or interpretation of capitalism versus socialism.{{sfn|Harrington|2011|p=93}} It claims that fostering a progressive evolution of capitalism will gradually result in the evolution of a capitalist economy into a socialist economy.{{sfn|Bose|2005|p=41}} All citizens should be legally entitled to certain social rights: universal access to public services such as education, health care, workers' compensation, and other services, including child care and care for the elderly.{{sfn|Hinchman|Meyer|2007|p=137}} Social democrats advocate freedom from discrimination based on differences in ability/disability, age, ethnicity, gender, language, race, religion, sexual orientation, and social class.{{sfn|Groenke|Hatch|2009|p=192}}
[[File:Arbeiterbew.jpg|thumb|upright|200px|A portrait highlighting the five leaders of early social democracy in Germany{{refn|They include from top to row [[August Bebel]] and [[Wilhelm Liebknecht]] from the [[Social Democratic Workers' Party of Germany]]; [[Karl Marx]] as an ideal pulse in the middle; and [[Carl Wilhelm Tölcke]] and [[Ferdinand Lassalle]] from the [[General German Workers' Association]] in the bottom row.|group=nb}}]]
Later in their life, [[Karl Marx]] and [[Friedrich Engels]] argued that in some countries, workers might be able to achieve their aims through peaceful means.{{sfn|Gray|Johnson|Walker|2014|pp=119–120}} In this sense, Engels argued that socialists were evolutionists, although both Marx and Engels remained committed to [[social revolution]].{{sfn|Steger|1999|p=186}} In developing social democracy,{{sfn|Steger|1997|pp=133, 146}} [[Eduard Bernstein]] rejected [[orthodox Marxism]]'s revolutionary and materialist foundations.{{sfn|Steger|1997|pp=80, 137}} Rather than [[class conflict]] and [[socialist revolution]],{{sfn|Freeden|Sargent|Stears|2013|p=350}} Bernstein's [[Marxist revisionism]] reflected that socialism could be achieved through cooperation between people regardless of class.{{sfn|Steger|1997|p=146}} Nonetheless, Bernstein paid deference to Marx, describing him as the father of social democracy but declaring that it was necessary to revise Marx's thought in light of changing conditions.{{sfn|Lerner|1993|p=65}} Influenced by the gradualist platform favoured by the [[Fabian movement]] in Britain,{{sfn|Mosse|2018|p=269}} Bernstein advocated a similar evolutionary approach to socialist politics that he termed ''evolutionary socialism''.{{sfn|Steger|1997|pp=4, 14, 135}} Evolutionary means include [[representative democracy]] and cooperation between people regardless of class. Bernstein accepted the Marxist analysis that the creation of socialism is interconnected with the evolution of capitalism.{{sfn|Steger|1997|p=146}}
[[August Bebel]], Bernstein, Engels, [[Wilhelm Liebknecht]], Marx, and [[Carl Wilhelm Tölcke]] are all considered founders of social democracy in Germany. However, Bernstein and Lassalle, along with labourists and reformists such as [[Louis Blanc]] in France,{{sfn|Wright|1999|p=82}} led to the widespread association of social democracy with socialist reformism.{{sfnm|1a1=Megill|1y=1970|1p=37|2a1=Lipset|2y=1995|2p=1149|3a1=Brandal|3a2=Bratberg|3a3=Thorsen|3y=2013|3p=24}} While Lassalle was a reformist [[state socialist]],{{sfn|Berlau|1949|p=21}} Bernstein predicted a long-term coexistence of democracy with a [[mixed economy]] during the reforming of capitalism into socialism and argued that socialists needed to accept this.{{sfn|Steger|1997|p=146}} This mixed economy would involve [[State-owned enterprise|public]], [[cooperative]], and [[private enterprise]]s, and it would be necessary for an extended period before private enterprises evolve of their own accord into cooperative enterprises.{{sfn|Pierson|2001|p=25}} Bernstein supported state ownership only for certain parts of the economy that the state could best manage and rejected a mass scale of state ownership as being too burdensome to be manageable.{{sfn|Steger|1997|p=146}} Bernstein was an advocate of Kantian socialism and [[neo-Kantianism]].{{sfnm|1a1=Steger|1y=1997|1pp=96, 115–116|2a1=Eatwell|2a2=Wright|2y=1999|2p=86|3a1=Freeden|3a2=Sargent|3a3=Stears|3y=2013|3p=349}} Although unpopular early on, his views became mainstream after World War I.{{sfn|Mosse|2018}}
In ''[[The Future of Socialism]]'' (1956), [[Anthony Crosland]] argued that "traditional capitalism has been reformed and modified almost out of existence, and it is with a quite different form of society that socialists must now concern themselves. Pre-war anti-capitalism will give us very little help", for a new kind of capitalism required a new kind of socialism. Crosland believed that these features of reformed managerial capitalism were irreversible, but it has been argued within the [[Labour Party (UK)|Labour Party]] and by others that [[Margaret Thatcher]] and [[Ronald Reagan]] brought about its reversal in the 1970s and 1980s. Although the post-war consensus represented a period where social democracy was "most buoyant", it has been argued that "post-war social democracy had been altogether too confident in its analysis" because "gains which were thought to be permanent turned out to be conditional and as the reservoir of capitalist growth showed signs of drying up".{{sfn|Eatwell|Wright|1999|p=93}} In ''Socialism Now'' (1974), Crosland argued that "[m]uch more should have been achieved by a Labour Government in office and Labour pressure in opposition. Against the dogged resistance to change, we should have pitted a stronger will to change. I conclude that a move to the Left is needed".{{sfn|Crosland|1974|p=44}}
In ''Origin, Ideology and Transformation of Political Parties: East-Central and Western Europe Compared'', Vít Hloušek and Lubomír Kopecek explain how socialist parties have evolved from the 19th to the early 21st centuries. As the number of people in traditional working-class occupations such as factory workers and miners declined, socialists have successfully widened their appeal to the middle class by diluting their ideology;{{sfn|Hloušek|Kopecek|2013|pp=15–40}} however, there is still continuity between parties such as the SPD, the Labour Party in Britain, and other socialist parties which remain part of the same ''famille spirituelle'', or ideological party family, as outlined by most political scientists.{{sfn|Hloušek|Kopecek|2013|pp=41–66}} For many social democrats, [[Marxism]] is loosely held to be valuable for its emphasis on changing the world for a more just, better future.{{sfn|Berman|2006|p=153}}
===Development===
{{Marxism|related}}
During the late 19th century and the early 20th century, social democracy was a broad labour movement within socialism that aimed to replace [[private ownership]] with [[social ownership]] of the [[means of production, distribution and exchange]], taking influence from both [[Marxism]] and the supporters of [[Ferdinand Lassalle]].{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Lamb|2y=2015|2pp=415–416}} By 1868–1869, the socialism associated with [[Karl Marx]] had become the official theoretical basis of the first social democratic party established in Europe, the [[Social Democratic Workers' Party of Germany]].{{sfn|Schorske|1993|p=2}} By the early 20th century, the German social democratic politician [[Eduard Bernstein]] rejected the ideas in [[orthodox Marxism]] that proposed [[Historical materialism|specific historical progression]] and [[Proletarian revolution|revolution]] as a means to achieve [[social equality]], advancing the position that socialism should be grounded in [[Ethical socialism|ethical and moral arguments]] for [[social justice]] and [[egalitarianism]] that are to be achieved through [[Gradualism#Politics and society|gradual]] legislative [[reform]].{{sfn|Steger|1997|pp=80, 137}} Following the split between [[reformist]] and [[Revolutionary socialism|revolutionary]] socialists in the [[Second International]], socialist parties influenced by Bernstein rejected [[revolutionary politics]] in favour of [[parliamentary]] reform while remaining committed to [[Socialization (Marxism)|socialization]].{{sfn|Miller|1998|p=827}}
During the 1920s and 1930s, social democracy became dominant in the socialist movement, mainly associated with reformist socialism while [[communism]] represented revolutionary socialism.{{sfn|Newman|2005|p=5}} Under the influence of politicians like [[Carlo Rosselli]] in Italy, social democrats began disassociating themselves from orthodox Marxism altogether as represented by [[Marxism–Leninism]],{{sfn|Bronner|1999|p=103}} embracing [[liberal socialism]],{{sfn|Bronner|1999|pp=103–104}} [[Keynesianism]],{{sfn|Bronner|1999|p=103}} and appealing to morality rather than any consistent systematic, [[Scientific method|scientific]], or [[materialist]] worldview.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=86|2a1=Heywood|2y=2012|2p=128}} Social democracy appealed to [[communitarian]], [[corporatist]], and sometimes [[nationalist]] sentiments while rejecting the [[Economic determinism|economic]] and [[technological determinism]] generally characteristic of orthodox Marxism and [[economic liberalism]].{{sfn|Berman|2008|pp=12–13}}
By the post-[[World War II]] period and its [[Post-war consensus|economic consensus]] and [[Post–World War II economic expansion|expansion]], most social democrats in Europe had abandoned their ideological connection to orthodox Marxism. They shifted their emphasis toward social policy reform as a compromise between [[capitalism]] to [[socialism]].{{sfn|Adams|1993|p=146}} According to [[Michael Harrington]], the primary reason for this was the perspective that viewed the Stalinist-era [[Soviet Union]] as having succeeded in usurping the legacy of Marxism and distorting it in propaganda to justify [[totalitarianism]].{{sfn|Harrington|2011|p=162}} In its foundation, the [[Socialist International]] denounced the Bolshevik-inspired communist movement, "for [it] falsely claims a share in the Socialist tradition".{{sfn|Socialist International|1951}} Furthermore, core tenets of Marxism have been regarded by social democrats as having become obsolete, including the prediction that the working class was the decisive class with the development of capitalism. In their view, this did not materialize in the aftermath of mass industrialization during World War II.{{sfn|Harrington|2011|p=162}}
During the [[Third Way]] development of social democracy, social democrats adjusted to the neoliberal political climate that had existed since the 1980s. Those social democrats recognized that outspoken [[opposition to capitalism]] was politically non-viable and that accepting the [[The powers that be (phrase)|powers that be]], seeking to challenge [[free-market]] and ''[[laissez-faire]]'' variations of capitalism, was a more immediate concern.{{sfn|Romano|2006|p=113}} The Third Way stands for a modernized social democracy,{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2006|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=3}} but the social democracy that remained committed to the gradual abolition of capitalism and social democrats opposed to the Third Way merged into democratic socialism.{{sfn|Lafontaine|2009}} Although social democracy originated as a revolutionary socialist or communist movement,{{sfn|Ely|1883|pp=204–205}} one distinction between democratic socialism and social democracy is that the former can include revolutionary means.{{sfnm|1a1=Duignan|1a2=Kalsang Bhutia|1a3=Mahajan|1y=2009|2a1=Abjorensen|2y=2019|2p=115}} The latter proposes [[representative democracy]] under the [[rule of law]] as the only acceptable constitutional form of government.{{sfn|Hinchman|Meyer|2007|p=91}}
Social democracy has been described as the evolutionary form of democratic socialism that aims to gradually and peacefully achieve socialism through established political processes rather than [[social revolution]] as advocated by revolutionary socialists.{{sfnm|1a1=Steger|1y=1997|2a1=Safra|2y=1998|2p=920|3a1=Stevens|3y=2000|3p=1504|4a1=Duignan|4a2=Kalsang Bhutia|4a3=Mahajan|4y=2014}} In this sense, social democracy is synonymous with ''democratic socialism'' and represents its original form, that of socialism achieved by [[Democracy|democratic]] means, usually through the [[parliament]].{{sfn|O'Hara|2003|p=539}} While social democrats continue to call and describe themselves as ''democratic socialists'' or simply ''socialists'',{{sfnm|1a1=O'Reilly|1y=2007|1p=91|2a1=Raza|2y=2012|2p=86|3a1=Gage|3y=2018}} with time, the post-war association of social democracy as a policy regime,{{sfnm|1a1=Kornai|1a2=Yingi|1y=2009|1pp=11–24|2a1=Ludlam|2a2=Smith|2y=2017|2pp=1–15}} and the development of the Third Way,{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1pp=9–26|2a1=Cammack|2y=2004|2pp=151–166|3a1=Romano|3y=2006|4a1=Hinnfors|4y=2006|5a1=Lafontaine|5y=2009|6a1=Corfe|6y=2010}} ''democratic socialism'' has come to include [[communist]] and [[revolutionary]] tendencies,{{sfnm|1a1=Busky|1y=2000|1pp=8–10|2a1=Sargent|2y=2008|2p=117|3a1=Alt|3a2=Chambers|3a3=Garrett|3a4=Kurian|3y=2010|3p=401|4a1=Abjorensen|4y=2019|4p=115}} representing the original meaning of ''social democracy'',{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Ludlam|2a2=Smith|2y=2017|2p=5}} as the latter has shifted towards reformism.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=80|2a1=Ludlam|2a2=Smith|2y=2017|2p=5}}
===Communism and the Third Way===
[[File:Lenin 1920.jpg|thumb|left|upright|[[Vladimir Lenin]], one revolutionary social democrat who paved the way for the split between Communists and Social Democrats{{refn|"The notion of 'socialism' became associated with social democratic parties and the notion of 'communism' with communist parties."{{sfn|Fuchs|2019}}|group=nb}}]]
Before social democracy was associated with a policy regime with a specific set of socioeconomic policies, its economics ranged from [[communism]]{{sfnm|1a1=Ely|1y=1883|1pp=204–205|2a1=Busky|2y=2000|2p=8}} to [[syndicalism]] and the [[guild socialists]],{{sfn|Busky|2000|p=5}} who rejected or were opposed to the approach of some [[Fabians]],{{sfn|Wright|1983|p=62}} regarded as being "an excessively bureaucratic and insufficiently democratic prospect".{{sfn|Eatwell|Wright|1999|p=88}} Communists and revolutionary socialists were a significant part of social democracy and represented its revolutionary wing.{{sfn|Ely|1883|pp=204–205}} Although they remained committed to social democracy representing the highest form of democracy,{{sfn|Ritzer|2004|pp=478–479}} social democracy became associated with its reformist wing since the communist split starting in 1917.{{sfn|Eatwell|Wright|1999|p=80}}
The [[Russian Revolution]] further exacerbated this division, resulting in a split between those supporting the [[October Revolution]] renaming themselves as ''Communist'' and those opposing the [[Bolshevik]] development (favouring the liberal social democratic development as argued by the [[Mensheviks]]) remaining with the ''Social Democrat'' label.{{sfn|Naarden|2002|p=441}} Rather than abandoning social democracy, Communists remained committed to revolutionary social democracy, merging into communism;{{sfn|Ritzer|2004|pp=478–479}} however, they saw ''Social Democrat'' associated with reformism, found it irredeemably lost and chose ''Communist'' to represent their views.{{sfnm|1a1=Williams|1y=1985|1p=289|2a1=Busky|2y=2000|2p=8}} For the Communists, the Social Democrats betrayed the world's [[working class]] by supporting the imperialist [[Great War]] and leading their national governments into the war. The Communists also criticized their reformism, arguing that it represented "reformism without reforms".{{sfn|Steger|1997|pp=217–219}} This reformist–revolutionary division culminated in the [[German Revolution of 1919]],{{sfn|Chickering|1998|p=155}} in which the Communists wanted to overthrow the German government to turn it into a [[Soviet republic (system of government)|soviet republic]] like it was done in Russia, while the Social Democrats wanted to preserve it as what came to be known as the [[Weimar Republic]].{{sfnm|1a1=Berman|1y=1998|1pp=145–146|2a1=Childs|2y=2000|2p=2}} Those revolutions transformed the social democracy from "Marxist revolutionary" into a form of "moderate parliamentary socialism".{{sfn|Adams|2001|p=108}}
[[File:Charles-Anthony-Raven-Crosland (cropped).jpg<!-- File:Ford A9572, File:Crosland Kissinger crop.jpg, File:Anthonycrossland.jpg -->|thumb|upright|[[Anthony Crosland]], who argued that traditional capitalism had been reformed and modified almost out of existence by the social democratic welfare policy regime after World War II]]
While evolutionary and reformist social democrats believe that [[capitalism]] can be reformed into [[socialism]],{{sfn|Steger|1997|p=137}} revolutionary social democrats argue that this is impossible and that a [[social revolution]] would still be necessary. The revolutionary criticism of reformism but not necessarily of reforms which are part of the class struggle goes back to Marx, who proclaimed that social democrats had to support the bourgeoisie wherever it acted as a revolutionary, progressive class because "bourgeois liberties had first to be conquered and then criticised".{{sfn|Bernstein|1897}} Internal rivalry in the social democratic movement within the [[Second International]] between reformists and revolutionaries resulted in the Communists, led by the [[Bolsheviks]], founding their own separate [[Communist International]] (Comintern) in 1919 that sought to rally revolutionary social democrats together for socialist revolution. With this split, the social democratic movement was now dominated by reformists, who founded the [[Labour and Socialist International]] (LSI) in 1923. The LSI had a history of rivalry with the Comintern, with which it competed over the leadership of the international socialist and labour movement.{{sfn|Vickers|2004|p=72}}
In Britain, the social democratic [[Gaitskellites]] emphasized the goals of [[personal liberty]], [[social welfare]], and [[social equality]].{{sfn|Brivati|Heffernan|2000|p=301}} The Gaitskellites were part of a political consensus between the [[Labour Party (UK)|Labour]] and [[Conservative Party (UK)|Conservative]] parties, famously dubbed [[Butskellism]].{{sfn|Haseler|1969}} Some social democratic Third Way figures such as [[Anthony Giddens]] and [[Tony Blair]], who has described himself as a Christian socialist and a socialist in ethical terms,{{sfn|Jackson|Tansey|2008|p=97}} insist that they are socialists,{{sfn|Giddens|1998b|p=71}} for they claim to believe in the same values that their anti-Third Way critics do.{{sfnm|1a1=Blair|1y=1995|1p=2|1loc="Labour Past, Present and Future"|2a1=''The Guardian''|2y=2006|3a1=Diamond|3y=2015|4a1=Eaton|4y=2017}} According to those self-proclaimed social democratic modernizers, [[Clause IV]]'s open advocacy of state socialism was alienating potential middle-class Labour supporters, and nationalization policies had been so thoroughly attacked by neoliberal economists and politicians, including rhetorical comparisons by the right of state-owned industry in the West to that in the Soviet Union and the Eastern Bloc, and nationalizations and state socialism became unpopular. [[Thatcherite]] Conservatives were adept at condemning [[state-owned enterprise]]s as economically inefficient.{{sfn|Campbell|2009|p=95}} For the Gaitskellites, nationalization was not essential to achieve all major socialist objectives; [[public ownership]] and [[nationalization]] were not explicitly rejected but were seen as merely one of numerous useful devices.{{sfn|Brivati|Heffernan|2000|p=301}} According to social democratic modernizers like Blair, nationalization policies had become politically unviable by the 1990s.{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2007|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=1–15}}
Some critics and analysts argue that many prominent social democratic parties,{{refn|"With the rise of neoliberalism, social democracy turned towards the right and increasingly adopted neoliberal policies. When Tony Blair became British Prime Minister in 1997, his neoliberal vision of social democracy influenced social democracy around the world. The consequence was that social democracy became in many respects indistinguishable from conservative parties, especially in respect to class politics."{{sfn|Fuchs|2019}}|group=nb}} such as the Labour Party in Britain and the [[Social Democratic Party of Germany]], even while maintaining references to socialism and declaring themselves democratic socialist parties, have abandoned socialism in practice, whether unwillingly or not.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1p=18|2a1=Cammack|2y=2004|2p=155|3a1=Romano|3y=2006|3p=11|4a1=Hinnfors|4y=2006|4pp=117, 137–139|5a1=Lafontaine|5y=2009|5p=7|6a1=Corfe|6y=2010|6pp=33, 178}}
==Social democracy and democratic socialism==
{{Further|Democratic socialism}}
{{Socialism sidebar|variants}}
Social democracy has some significant overlap in practical policy positions with democratic socialism,{{sfnm|1a1=Denitch|1y=1981|2a1=Picard|2y=1985|3a1=Foley|3y=1994|3p=23|4a1=Busky|4y=2000|4p=8|5a1=Heywood|5y=2012|5p=97|6a1=Sunkara|6y=2020}} although they are usually distinguished from each other.{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1pp=80|2a1=Busky|2y=2000|2p=8|3a1=Anderson|3a2=Herr|3y=2007|4a1=Alt|4a2=Chambers|4a3=Garrett|4a4=Kurian|4y=2010|5a1=Sunkara|5y=2020}} In Britain, the revised version of [[Clause IV]] to the [[Labour Party Constitution]], which was implemented in the 1990s by the [[New Labour]] faction led by [[Tony Blair]],{{sfn|Ludlam|Smith|2017|pp=1–15}} affirms a formal commitment to democratic socialism,{{sfn|Adams|1998|pp=144–145}} describing it as a modernized form of social democracy;{{sfnm|1a1=Lowe|1y=2004|2a1=Romano|2y=2007|2p=3|3a1=Ludlam|3a2=Smith|3y=2017|3p=3}} however, it no longer commits the party to public ownership of industry and in its place advocates "the enterprise of the market and the rigour of competition" along with "high quality public services either owned by the public or accountable to them".{{sfn|Adams|1998|pp=144–145}} Many social democrats "refer to themselves as socialists or democratic socialists", and some such as Blair{{sfnm|1a1=Blair|1y=1995|1p=2|1loc="Labour Past, Present and Future"|2a1=''The Guardian''|2y=2006|3a1=Diamond|3y=2015|4a1=Eaton|4y=2017}} "use or have used these terms interchangeably".{{sfnm|1a1=O'Reilly|1y=2007|1p=91|2a1=Raza|2y=2012|2p=86|3a1=Gage|3y=2018}} Others argue that "there are clear differences between the three terms, and preferred to describe their own political beliefs by using the term 'social democracy' only".{{sfn|Brandal|Bratberg|Thorsen|2013|p=7}}
''Democratic socialism''{{refn|Democratic socialism is generally defined as an [[anti-Stalinist]] left-wing [[big tent]] that opposes [[authoritarian socialism]], rejecting [[self-described socialist states]], as well as [[Marxism–Leninism]] and its derivatives such as [[Maoism]] and [[Stalinism]].{{sfnm|1a1=Busky|1y=2000|1pp=7–8|2a1=Schweickart|2y=2007|2p=448}} Besides social democrats, democratic socialists also include some [[anarchists]],{{sfn|Dongyoun|2016|pp=171–174}} [[classical Marxist]]s,{{sfn|Sargent|2008|p=118}} [[democratic communists]],{{sfnm|1a1=Megill|1y=1970|1p=45|2a1=Fleet|2y=1973|3a1=Sargent|3y=2008|3p=117}} [[libertarian socialists]],{{sfnm|1a1=Draper|1y=1966|2a1=Poulantzas|2y=1978|3a1=Hain|3y=1995|4a1=Hain|4y=2000}} [[market socialist]]s,{{sfn|Schweickart|2007|p=448}} and [[orthodox Marxists]] such as [[Karl Kautsky]]{{sfnm|1a1=Muldoon|1y=2019|2a1=Post|2y=2019|3a1=Blanc|3y=2019}} and [[Rosa Luxemburg]],{{sfnm|1a1=Draper|1y=1966|1loc="The 'Revisionist' Facade"|2a1=Sunkara|2y=2020}} as well as [[Revisionism (Marxism)|revisionists]] such as [[Eduard Bernstein]], who supported social democracy.{{sfnm|1a1=Bernstein|1y=1907|2a1=Steger|2y=1997}}|group=nb}} represents social democracy before the 1970s,{{sfnm|1a1=Schumpeter|1y=1942|2a1=Thomas|2y=1953|3a1=Williams|3y=1985|4a1=Hattersley|4y=1987|5a1=Tomlinson|5y=1997|6a1=Medearis|6y=1997}} when the [[post-war displacement of Keynesianism]] by [[monetarism]] and neoliberalism caused many social democratic parties to adopt the Third Way ideology, accepting [[capitalism]] as the ''[[status quo]]'' for the time being and redefining [[socialism]] in a way that maintains the capitalist structure intact.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|2a1=Romano|2y=2006|3a1=Hinnfors|3y=2006|4a1=Lafontaine|4y=2009|5a1=Corfe|5y=2010}} Like modern social democracy, democratic socialism tends to follow a gradual or evolutionary path to socialism rather than a revolutionary one.{{sfn|Hamilton|1989}}{{sfnm|1a1=Busky|1y=2000|1p=10|2a1=Pierson|2y=2005|3a1=Heywood|3y=2012|3p=97}} Policies commonly supported are [[Keynesian]] and include some degree of [[regulation over the economy]], [[social insurance]] schemes, public [[pension]] programs, and a gradual expansion of [[public ownership]] over major and strategic industries.{{sfn|Sargent|2008|p=117}}
===Internal debates===
During the late 20th century, those labels were embraced, contested and rejected due to the emergence of developments within the European left,{{sfn|Wintrop|1983|p=306}} such as [[Eurocommunism]],{{sfn|Kindersley|2016}} the rise of neoliberalism,{{sfnm|1a1=Lavelle|1y=2005|2a1=Birch|2a2=MacLeavy|2a3=Springer|2y=2016|3a1=Humphrys|3y=2018}} the [[Dissolution of the Soviet Union|fall of the Soviet Union]] and the [[Revolutions of 1989]],{{sfn|Docherty|Lamb|2006|p=82}} the [[Third Way]],{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1pp=9–26|2a1=Cammack|2y=2004|2pp=151–166|3a1=Romano|3y=2006|4a1=Hinnfors|4y=2006|5a1=Lafontaine|5y=2009|6a1=Corfe|6y=2010}} and the rise of [[Anti-austerity movement|anti-austerity]]{{sfn|Calossi|2016}} and [[Occupy movement|Occupy]]{{sfn|Kwok|Rieger|2013|p=40}} movements due to the global [[financial crisis of 2007–2008]]{{refn|It peaked after the mid-September 2008 outbreak.{{sfn|CNBC|2009}}|group=nb}} and the [[Great Recession]],{{sfnm|1a1=Dionne|1a2=Galtson|1y=2019|2a1=Cassidy|2y=2019|3a1=Kvitrud|3y=2019|4a1=Sears|4y=2019|4p=243}} the causes of which have been attributed by some to the neoliberal shift and deregulation economic policies.{{sfnm|1a1=Palley|1y=2013|2a1=Amadeo|2y=2019|3a1=Sitaraman|3y=2019}} This latest development contributed to the rise of politicians, such as [[Jeremy Corbyn]] in Britain and [[Bernie Sanders]] in the United States,{{sfn|Tarnoff|2017}} who rejected [[centrist]] politicians that supported [[Triangulation (politics)|triangulation]] within the [[Labour Party (UK)|Labour]] and [[Democratic Party (United States)|Democratic]] parties.{{sfnm|1a1=Huges|1y=2016|2a1=Associated Press|2y=2018}}
According to both right-wing critics and supporters alike, policies such as universal [[Universal healthcare|health care]] and [[Universal education|education]] are "pure Socialism" because they are opposed to "the hedonism of capitalist society".{{sfn|Bevan|1952|p=106}} Because of this overlap, ''democratic socialism'' refers to European socialism as represented by social democracy,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3|5a1=Levitz, April 2019}} especially in the United States,{{sfnm|1a1=Benson|1y=2015|2a1=Gram|2y=2015|3a1=Murphy|3y=2017}} where it is tied to the [[New Deal]].{{sfnm|1a1=Prokop|1y=2015|2a1=Sanders|2y=2015|3a1=Frizell|3y=2019|4a1=Sanders|4y=2019|5a1=Golshan|5y=2019}} Some democratic socialists who follow social democracy support practical, [[Progressivism|progressive]] reforms of capitalism and are more concerned with administrating and humanising it, with socialism relegated to the indefinite future.{{sfnm|1a1=Berman|1y=1998|1p=57|2a1=Bailey|2y=2009|2p=77}} Other democratic socialists want to go beyond mere meliorist reforms and advocate the systematic transformation of the [[mode of production]] from [[Capitalist mode of production (Marxist theory)|capitalism]] to [[Socialist mode of production|socialism]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=80|2a1=Anderson|2a2=Herr|2y=2007|3a1=Alt|3a2=Chambers|3a3=Garrett|3a4=Kurian|3y=2010}}
===In the United States===
Despite the long history of overlap between the two, with social democracy considered a form of democratic or parliamentary socialism and social democrats calling themselves democratic socialists,{{sfnm|1a1=Busky|1y=2000|1p=8|2a1=Sargent|2y=2008|2p=118|3a1=Heywood|3y=2012|3p=97|4a1=Hain|4y=2015|4p=3}} ''democratic socialism'' is considered a misnomer in the United States.{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Levitz, April 2019}} One issue is that ''social democracy'' is equated with wealthy countries in the Western world, especially in Northern and Western Europe, while ''democratic socialism'' is conflated either with the [[pink tide]] in Latin America, especially with Venezuela,{{sfnm|1a1=Stephens|1y=2019|2a1=Faiola|2y=2019|3a1=Haltiwanger|3y=2020|4a1=Krugman|4y=2020}} or with communism in the form of [[Marxist–Leninist]] socialism as practised in the Soviet Union and other [[Communist state|self-declared socialist states]].{{sfnm|1a1=Qiu|1y=2015|2a1=Barro|2y=2015|3a1=Tupy|3y=2016|4y=2016|5a1=Cooper|5y=2018|6a1=Rodriguez|6y=2018|7a1=Levitz, April 2019}} ''Democratic socialism'' has been described as representing the left-wing{{sfn|Levitz, April 2019}} or socialist tradition of the [[New Deal]].{{sfnm|1a1=Marcetic|1y=2019|2a1=Ackerman|2y=2019}}
The lack of a strong and influential [[socialist movement in the United States]] has been linked to the [[Red Scare]],{{sfnm|1a1=Foner|1y=1984|2a1=Oshinsky|2y=1988|3a1=Zimmerman|3y=2010}} and any ideology associated with socialism brings social stigma due to its association with [[Authoritarian socialism|authoritarian]] [[socialist states]].{{sfn|Leibovich|2007}} ''Socialism'' has been used as a pejorative term by members of the [[Right-wing politics|political right]] to stop the implementation of [[Liberalism in the United States|liberal]] and [[Progressivism in the United States|progressive]] policies and proposals and to criticize the public figures trying to implement them.{{sfnm|1a1=Truman|1y=1952|2a1=Jackson|2y=2012|3a1=Astor|3y=2019}} Although Americans may reject the idea that the United States has characteristics of a European-style social democracy, it has been argued by some observers that it has a comfortable [[social safety net]], albeit severely underfunded in comparison to other Western countries.{{sfn|Zimmerman|2010}} It has also been argued that many policies that may be considered socialist are popular but that socialism is not.{{sfn|Levitz, April 2019}} Others, such as [[Tony Judt]], described [[modern liberalism in the United States]] as representing European social democracy.{{sfn|''The Economist''|2010}}
===In South Africa===
South Africa has been governed by the [[African National Congress]] (ANC), a social-democratic party, since 1994. In 2022, The World Economic Forum said that South Africa risks state collapse and identified five major risks facing the country.<ref>{{cite web |last=Head |first=Tom |url=https://www.thesouthafrican.com/news/breaking-is-south-africa-military-coup-state-collapse-threats/ |title=South Africa 'at risk of STATE COLLAPSE' - according to top experts |date=12 January 2022 |archive-url=https://web.archive.org/web/20220112083527/https://www.thesouthafrican.com/news/breaking-is-south-africa-military-coup-state-collapse-threats/ |archive-date=12 January 2022}}</ref> Former minister Jay Naidoo has said that South Africa is in serious trouble and is showing signs of a failed state, with record unemployment levels and the fact that many young people will not find a job in their lifetime.<ref>{{cite web |url=https://mybroadband.co.za/news/investing/464455-south-africa-showing-signs-of-a-failed-state.html |title=South Africa showing signs of a failed state |date=13 October 2022 |website=mybroadband.co.za |archive-url=https://web.archive.org/web/20221013112128/https://mybroadband.co.za/news/investing/464455-south-africa-showing-signs-of-a-failed-state.html |archive-date=13 October 2022}}</ref>
==Policy regime==
In the 21st century, it has become commonplace to reference social democracy as the European social democracies, namely the actually-existing states in Northern and Western European countries,{{sfn|Blume|Durlauf|2016|pp=610–611}} usually in reference to their model of the [[welfare state]] and [[corporatist]] system of [[collective bargaining]].{{sfn|Egle|Henkes|Merkel|Petring|2008}} European social democracies represent a socioeconomic order that has been described as starting in the 1930s, 1940s, or 1950s and ending in the 1970s, 1980s, or 1990s. Henning Meyer and Jonathan Rutherford associate social democracy with the socioeconomic order in Europe from the post-war period until the early 1990s.{{sfn|Meyer|Rutherford|2011}} This has been accepted or adopted across the political spectrum,{{sfn|Heywood|2012}} including [[conservatives]] ([[Christian democrats]]), [[Liberalism|liberals]] ([[social liberals]]), and [[socialists]] (social democrats);{{sfn|Esping-Andersen|2013}} one notable difference is that socialists see the welfare state "not merely to provide benefits but to build the foundation for emancipation and self-determination".{{sfn|Sacks|2019}} Social democratic roots are also observed in Latin America during the early 20th century; this was the case in Uruguay during the two presidential terms of [[José Batlle y Ordóñez]].{{sfn|Altman|2011}}
Social democracy influenced the development of [[social corporatism]], a form of economic [[Tripartism|tripartite]] corporatism based upon a social partnership between the interests of [[Capital (economics)|capital]] and [[Labour (economics)|labour]], involving collective bargaining between representatives of employers and labour mediated by the government at the national level.{{sfn|Hicks|1988}} During the [[post-war consensus]], this form of social democracy has been a major component of the [[Nordic model]] and, to a lesser degree, the West European [[social market economies]].{{sfn|Rosser|Rosser|2003|p=226}} The development of social corporatism began in Norway and [[Sweden]] in the 1930s and was consolidated in the 1960s and 1970s.{{sfn|Moschonas|2002|p=65}} The system was based upon the dual compromise of capital and labour as one component and the market and the state as the other.{{sfn|Moschonas|2002|p=65}} From the 1940s through the 1970s, defining features of social democracy as a policy regime included Keynesian economic policies and industrial agreements to balance the power of capital and labour and the welfare state.{{sfn|O'Hara|2003|p=538}} This is especially associated with the Swedish [[Swedish Social Democratic Party|Social Democrats]].{{sfnm|1a1=Samuelsson|1y=1968|2a1=Carlsson|2a2=Lindgren|2y=1998}} In the 1970s, social corporatism evolved into [[neo-corporatism]], which replaced it. Neo-corporatism has represented an important concept of [[Third Way social democracy]].{{sfn|Whyman|2005|p=208}} Social democratic theorist Robin Archer wrote about the importance of social corporatism to social democracy in his work ''Economic Democracy: The Politics of a Feasible Socialism'' (1995).{{sfn|Archer|1995}} As a welfare state, social democracy is a specific type of welfare state and policy regime described as being universalist, supportive of collective bargaining, and more supportive of public provision of welfare. It is especially associated with the Nordic model.{{sfnm|1a1=Esping-Andersen|1y=2013|2a1=Brandal|2a2=Bratberg|2a3=Thorsen|2y=2013}}
Social democracy rests on three fundamental features, namely "(1) democracy (e.g., equal rights to vote and form parties), (2) an economy partly regulated by the state (e.g., through Keynesianism), and (3) a welfare state offering social support to those in need (e.g., equal rights to education, health service, employment, and pensions)".{{sfn|Badie|Berg-Schlosser|Morlino|2011|p=2423}} In practice, social democratic parties have been instrumental in the social-liberal paradigm, lasting from the 1940s and 1970s, and called such because it was developed by social liberals but implemented by social democrats.{{sfnm|1a1=Adams|1y=2001|p=31|2a1=Árnason|2a2=Wittrock|2y=2012|2pp=30, 192}} Since those policies were mostly implemented by social democrats, social liberalism is sometimes called ''social democracy''.{{sfn|Kenworthy|2014}} In Britain, the social-liberal [[Beveridge Report]] drafted by the [[Liberal (UK)|Liberal]] economist [[William Beveridge]] influenced the [[Labour Party (UK)|Labour Party]]'s social policies, such as the [[National Health Service]] and Labour's welfare state development.{{sfn|Jefferys|1994}} This social-liberal paradigm represented the post-war consensus and was accepted across the political spectrum by conservatives, liberals and socialists until the 1970s.{{sfn|Adams|2001|p=37}} Similarly, the neoliberal paradigm, which replaced the previous paradigm, was accepted across the mainstream political parties, including social democratic supporters of the Third Way.{{sfn|Adams|2001|pp=212–213}} This has caused much controversy within the social democratic movement.{{sfnm|1a1=Barrientos|1a2=Powell|1y=2004|1p=18|2a1=Cammack|2y=2004|2p=155|3a1=Romano|3y=2006|3p=11|4a1=Hinnfors|4y=2006|4pp=117, 137–139|5a1=Lafontaine|5y=2009|5p=7|6a1=Corfe|6y=2010|6pp=33, 178}}
===Implementation===
From the late 19th century until the mid to late 20th century, there was greater public confidence in the idea of a state-managed economy that was a major pillar of communism, and to a substantial degree by [[conservatives]] and [[left-liberal]]s.{{sfnm|1a1=Rothestein|1y=1998|1pp=18–27|2a1=Esping-Andersen|2y=2013}} Aside from [[anarchists]] and other [[libertarian socialists]], there was confidence amongst socialists in the concept of [[state socialism]] as being the most effective form of socialism. Some early British social democrats in the 19th century and 20th century, such as the [[Fabians]], said that British society was already mostly socialist and that the economy was significantly socialist through government-run enterprises created by conservative and liberal governments which could be run for the interests of the people through their representatives' influence,{{sfn|Eatwell|Wright|1999|pp=87–88}} an argument reinvoked by some socialists in post-war Britain.{{sfnm|1a1=Crosland|1y=1952|2a1=Kynaston|2y=2009|2p=82}} Advents in economics and observation of the failure of state socialism in the [[Eastern Bloc]] countries{{sfn|Gey|Kosta|Quaisser|1987}} and the Western world with the crisis and stagflation of the 1970s,{{sfnm|1a1=Miller|1y=2008|2a1=Ehns|2y=2016|2pp=4–5}} combined with the neoliberal rebuke of [[state interventionism]], resulted in socialists re-evaluating and redesigning socialism.{{sfn|Eatwell|Wright|1999|pp=93–95}} Some social democrats have sought to keep what they deem are socialism's core values while changing their position on state involvement in the economy and retaining significant social regulations.{{sfn|Eatwell|Wright|1999|pp=96–103}}
{{multiple image|total_width=330|image1=Aneurin Bevan (1943).jpg|width1=230|height1=300|caption1=[[Aneurin Bevan]], [[Minister of Health (United Kingdom)|minister of health]] (1945–1951)|image2=Bundesarchiv Bild 183-1988-0108-059, Paris, Besuch Erich Honecker, Mitterrand (cropped).jpg|width2=230|height2=300|caption2=[[François Mitterrand]], [[president of France]]<br>(1981–1995)}}
When [[nationalization]] of large industries was relatively widespread in the 20th century until the 1970s, it was not uncommon for commentators to describe some European social democracies as democratic socialist states seeking to move their countries toward a [[socialist economy]].{{sfnm|1a1=Heilbroner|1y=1991|1pp=96–110|2a1=Kendall|2y=2011|2pp=125–127|3a1=Li|3y=2015|3pp=60–69}} In 1956, leading [[Labour Party (UK)|Labour Party]] politician and British author [[Anthony Crosland]] said that capitalism had been abolished in Britain,{{sfnm|1a1=Crosland|1y=1952|2a1=Eatwell|2a2=Wright|2y=1999|2p=93}} although others such as Welshman [[Aneurin Bevan]], Minister of Health in the first [[post-war Labour government]] and the architect of the [[National Health Service]], disputed the claim.{{sfnm|1a1=Socialist Party of Great Britain|1y=1958|2a1=Crosland|2y=2006|2pp=9, 89}} For Crosland and others who supported his views, Britain was a socialist state.{{sfnm|1a1=Crosland|1y=1952|2a1=Kynaston|2y=2009|2p=82}} According to Bevan, Britain had a socialist [[National Health Service]], which opposed the [[hedonism]] of Britain's capitalist society.{{sfn|Bevan|1952|p=106}}
Although, as in the rest of Europe, the [[Capital accumulation|laws of capitalism]] still operated fully and [[private enterprise]] dominated the economy,{{sfn|Batson|2017}} some political commentators stated that during the post-war period, when social democratic parties were in power, countries such as Britain and France were democratic socialist states. The same claim has been applied to Nordic countries with the Nordic model.{{sfnm|1a1=Heilbroner|1y=1991|1pp=96–110|2a1=Kendall|2y=2011|2pp=125–127|3a1=Li|3y=2015|3pp=60–69}} In the 1980s, the government of President [[François Mitterrand]] aimed to expand [[dirigism]] and attempted to nationalize all French banks, but this attempt faced opposition from the [[European Economic Community]] because it demanded a free-market economy among its members.{{sfnm|1a1=Cobham|1y=1984|21pp=351–358|2a1=Cohen|2y=2010}} [[Public ownership]] never accounted for more than 15–20% of [[capital formation]], further dropping to 8% in the 1980s and below 5% in the 1990s after the rise of neoliberalism.{{sfn|Batson|2017}}
One issue of social democracy is the response to the collapse of legitimacy of state socialism and state-interventionist economics of [[Keynesianism]] with the discovery of the phenomenon of [[stagflation]] which has been an issue for the legitimacy of state socialism.{{sfnm|1a1=Miller|1y=2008|2a1=Ehns|2y=2016|2pp=4–5}} This has provoked re-thinking of how socialism should be achieved by social democrats,{{sfn|Egle|Henkes|Merkel|Petring2008|p=253}} including changing views by social democrats on private property—anti-Third Way social democrats such as Robert Corfe have advocated a socialist form of private property as part of new socialism (although Corfe technically objects to ''[[private property]]'' as a term to collectively describe property that is not publicly owned as being vague) and rejecting state socialism as a failure.{{sfnm|1a1=Corfe|1y=2001|1p=74|2a1=Corfe|2a2=Miller|2y=2002|2p=51|3a1=Corfe|3y=2005|3p=20}} Third Way social democracy was formed in response to what its proponents saw as a crisis in the legitimacy of socialism—especially state socialism—and the rising legitimacy of neoliberalism, especially ''laissez-faire'' capitalism. The Third Way's view of the crisis is criticized for being too simplistic.{{sfn|Lemke|Marks|1992|p=5}} Others have criticized it because with the fall of state socialism, it was possible for "a new kind of 'third way' socialism (combining social ownership with markets and democracy), thereby heralding a revitalization of the social democratic tradition";{{sfn|Eatwell|Wright|1999|p=95}} however, it has been argued that the prospect of a new socialism was "a chimera, a hopeful invention of Western socialists who had not understood how '[[actually existing socialism]]' had totally discredited ''any'' version of socialism among those who had lived under it".{{sfn|Eatwell|Wright|1999|p=95}}
==Analysis==
===Legacy===
{{Corporatism sidebar|related}}
{{Progressivism|related}}
Social democratic policies were first adopted in the [[German Empire]] between the 1880s and 1890s, when the [[Conservatism in Germany|conservative]] Chancellor [[Otto von Bismarck]] put in place many [[social welfare]] proposals initially suggested by the [[Social Democratic Party of Germany|Social Democrats]] to hinder their electoral success after he instituted the [[Anti-Socialist Laws]], laying the ground of the first modern [[welfare state]].{{sfn|Sacks|2019}} Those policies were dubbed [[State Socialism (Germany)|State Socialism]] by the [[Liberalism in Germany|liberal]] opposition, but Bismarck later accepted and re-appropriated the term.{{sfn|Feuchtwanger|2002|p=221}} It was a set of social programs implemented in Germany that Bismarck initiated in 1883 as remedial measures to appease the [[working class]] and reduce support for [[socialism]] and the Social Democrats following earlier attempts to achieve the same objective through Bismarck's Anti-Socialist Laws.{{sfnm|1a1=Bismarck|1y=1884|2a1=Gregory|2a2=Stuart|2y=2003|2p=207|3a1=Sacks|3y=2019}} This did not prevent the Social Democrats from becoming the biggest party in parliament by 1912.{{sfn|Boissoneault|2017}}
Similar policies were later adopted in most of Western Europe, including France and the United Kingdom (the latter in the form of the [[Liberal welfare reforms]]),{{sfn|The National Archive (Liberal Welfare Reforms 1906–11)}} with both socialist and liberal parties adopting those policies.{{sfn|Esping-Andersen|2013}} In the United States, the [[Progressivism in the United States|progressive movement]], a similar social democratic movement predominantly influenced more by [[Modern liberalism in the United States|social liberalism]] than [[Socialism in the United States|socialism]], supported progressive liberals such as [[Democratic Party (United States)|Democratic]] presidents [[Woodrow Wilson]] and [[Franklin D. Roosevelt]], whose [[The New Freedom|New Freedom]] and [[New Deal]] programmes adopted many social democratic policies.{{sfnm|1a1=Schlesinger|1y=1962|2a1=Zimmerman|2y=2010}} With the [[Great Depression]], [[economic interventionism]] and [[nationalizations]] became more common worldwide and the [[post-war consensus]] until the 1970s saw [[Keynesian]] social democratic and [[mixed economy]] policies put in place, leading to the [[post-World War II boom]] in which the United States, the Soviet Union, the Western European, and East Asian countries experienced unusually high and sustained [[economic growth]], together with [[full employment]]. Contrary to early predictions, this period of high economic growth and national development also included many countries that were devastated by the war, such as Japan ([[Japanese post-war economic miracle]]), West Germany and Austria ([[Wirtschaftswunder]]), South Korea ([[Miracle of the Han River]]), France ([[Trente Glorieuses]]), Italy ([[Italian economic miracle]]), and Greece ([[Greek economic miracle]]).{{sfnm|1a1=Marglin|1a2=Schor|1y=1991|2a1=Marglin|2a2=Schor|2y=2017}}
With the [[1970s energy crisis]], the abandonment of both the [[gold standard]] and the [[Bretton Woods system]] along with Keynesian social democratic, mixed-economy policies and the implementation of [[Market-oriented economy|market-oriented]], [[monetarist]], and neoliberal policies ([[privatization]], [[deregulation]], [[free trade]], [[economic globalization]], and anti-[[inflation]]ary [[fiscal policy]], among others), the social democratic welfare state was put in doubt.{{sfn|Lewis|Surender|2004}} This caused several social democratic parties to adopt the [[Third Way]], a centrist ideology combining [[progressivism]] and [[social liberalism]] with neoliberalism;{{sfn|Whyman|2005}} however, the [[Great Recession]] in the late 2000s and early 2010s cast doubts on the [[Washington Consensus]], and [[Anti-austerity movement|protests]] against [[austerity measures]] ensued. There was a resurgence of social democratic parties and policies, especially in the United States and the United Kingdom, with the rise of politicians such as [[Bernie Sanders]] and [[Jeremy Corbyn]], who rejected the Third Way,{{sfnm|1a1=Huges|1y=2016|2a1=Tarnoff|2y=2017|3a1=Associated Press|3y=2018}} after the [[economic recession]] caused the [[Pasokification]] of many social democratic parties.{{sfnm|1a1=Lowen|1y=2013|2a1=Ludwigshafen|2a2=Piraeus|2a3=Valletta|2y=2016|3a1=Younge|3y=2017|4a1=Eaton|4y=2018|5a1=''The Economist''|5y=2018}}
The United Nations [[World Happiness Report]] shows that the happiest nations are concentrated in social democratic nations,{{sfn|Conley|2019}}{{Better source needed|reason=The current source is insufficiently reliable ([[WP:NOTRS]]).|date=June 2023}} especially in Northern Europe, where the [[Nordic model]] is applied.{{sfnm|1a1=Cappelen|1a2=Fagerberg|1a3=Mjøset|1a4=Skarstein|1y=1990|1pp=60–94|2a1=Veggel|2y=2014|2pp=60–94|3a1=Dølvik|3a2=Fløtten|3a3=Hippe|3a4=Jordfald|3y=2015|3p=23|4a1=Simon Reid|4y=2015|4p=132}} This is at times attributed to the success of the social democratic Nordic model in the region, where similar [[democratic socialist]], [[labourist]], and social democratic parties dominated the region's political scene and laid the ground for their [[universal welfare state]]s in the 20th century.{{sfnm|1a1=Esping-Andersen|1y=1985|2a1=Hicks|2y=1988|3a1=Moschonas|3y=2002|4a1=Rosser |4a2=Rosser|4y=2003|5a1=Ferragina|5a2=Seeleib-Kaiser|5y=2011|6a1=Brandal|6a2=Bratberg|6a3=Thorsen|6y=2013}} The Nordic countries, including Denmark, Finland, Iceland, Norway, and Sweden, as well as Greenland and the Faroe Islands, also ranks highest on the metrics of real [[GDP per capita]], [[economic equality]], [[public health]], [[life expectancy]], [[solidarity]], perceived [[Freedom of choice|freedom to make life choices]], [[generosity]], [[quality of life]], and [[Human development (economics)|human development]], while countries practising a neoliberal form of government have registered relatively poorer results.{{sfnm|1a1=Gregoire|1y=2013|2a1=Conley|2y=2019}}{{Better source needed|reason=The current source is insufficiently reliable ([[WP:NOTRS]]).|date=June 2023}} Similarly, several reports have listed Scandinavian and other social democratic countries as ranking high on indicators such as [[civil liberties]],{{sfnm|1a1=Abramowitz|1y=2018|2a1=Aghekyan|2a2=Bhatia|2a3=Dunham|2a4=O'Toole|2y=2018|3a1=Abramowitz|3y=2019|4a1=Repucci|4y=2020}} [[democracy]],{{sfn|''The Economist''|2020}} [[Press freedom|press]],{{sfnm|1a1=Reporters Without Borders 2019 (table)|2a1=Reporters Without Borders 2019 (analysis)}} [[Labour rights|labour]] and [[Economic freedom|economic]] freedoms,{{sfnm|1a1=Kim|1a2=Miller|1y=2016|2a1=The Heritage Foundation|2y=2017}} [[peace]],{{sfn|Vision of Humanity|2019}} and freedom from [[corruption]].{{sfnm|1a1=Transparency International 2020 (table)|2a1=Transparency International 2020 (analysis)}} Numerous studies and surveys indicate that people live happier lives in countries ruled by social democratic parties than those ruled by neoliberal, centrist, and right-wing governments.{{sfnm|1a1=Pani|1a2=Panic|1y=2011|2a1=Radcliff|2y=2013|3a1=Brown|3y=2014|4a1=Flavin|4a2=Pacek|4a3=Radcliff|4y=2014|5a1=Sullivan|5a2=Hickel|5y=2023}}
===Criticism===
{{See also|Criticism of welfare|Criticism of welfare states}}
Other socialists criticize social democracy because it serves to devise new means to strengthen the capitalist system, which conflicts with the socialist goal of replacing capitalism with a socialist system.{{sfn|Clarke|1981|p=2}} According to this view, social democracy fails to address the systemic issues inherent in capitalism. The American democratic socialist philosopher [[David Schweickart]] contrasts social democracy with [[democratic socialism]] by defining the former as an attempt to strengthen the [[welfare state]] and the latter as an alternative economic system to capitalism. According to Schweickart, the democratic socialist critique of social democracy is that capitalism can never be sufficiently humanized and that any attempt to suppress its economic contradictions will only cause them to emerge elsewhere. He gives the example that attempts to reduce unemployment too much would result in inflation, and too much job security would erode labour discipline.{{sfn|Schweickart|2007|p=447}} In contrast to social democracy's [[mixed economy]], democratic socialists advocate a [[post-capitalist]] economic system based on either a [[Market economy#Market socialism|market economy]] combined with [[workers' self-management]] or on some form of [[Participatory economy|participatory]], [[decentralized planning]] of the economy.{{sfn|Schweickart|2007|p=448}}
[[Marxian economics|Marxian]] socialists argue that social democratic welfare policies cannot resolve the fundamental structural issues of capitalism, such as [[Business cycle#Marxian economics|cyclical fluctuations]], [[Exploitation of labour#Marxist theory|exploitation]], and [[Marx's theory of alienation|alienation]]. Accordingly, social democratic programs intended to ameliorate living conditions in capitalism, such as unemployment benefits and taxation on profits, creates further contradictions by further limiting the efficiency of the capitalist system by reducing incentives for capitalists to invest in further production.{{sfn|Ticktin|1998|pp=60–61}} The welfare state only serves to legitimize and prolong the exploitative and contradiction-laden system of capitalism to society's detriment. Critics of contemporary social democracy, such as Jonas Hinnfors, argue that when social democracy abandoned [[Marxism]], it also abandoned socialism and became a liberal capitalist movement, effectively making social democrats similar to non-socialist parties like the [[Democratic Party (United States)|Democratic Party]] in the United States.{{sfn|Hinnfors|2006|pp=117, 137–139}}
[[Market socialism]] is also critical of social democratic welfare states. While one common goal of both concepts is to achieve greater social and economic equality, market socialism does so through changes in enterprise ownership and management. Social democracy attempts to do so by subsidies and taxes on privately owned enterprises to finance welfare programs. [[Franklin Delano Roosevelt III]] (grandson of United States President [[Franklin D. Roosevelt]]) and David Belkin criticize social democracy for maintaining a [[Property income|property-owning capitalist class]] with an active interest in reversing social democratic welfare policies and a disproportionate amount of power as a class to influence government policy.{{sfn|Weisskopf|1994|pp=314–315}} The economists [[John Roemer]] and [[Pranab Bardhan]] point out that social democracy requires a strong [[labour movement]] to sustain its heavy redistribution through taxes and that it is idealistic to think such redistribution can be accomplished in other countries with weaker labour movements, noting that social democracy in Scandinavian countries has been in decline as the labour movement weakened.{{sfn|Bardhan|Roemer|1992|p=104}}
Some critics say social democracy abandoned socialism in the 1930s by endorsing Keynesian [[welfare capitalism]].{{sfnm|1a1=Eatwell|1a2=Wright|1y=1999|1p=91|2a1=Fitzpatrick|2y=2003|2pp=2–3}} The democratic socialist political theorist [[Michael Harrington]] argued that social democracy historically supported [[Keynesianism]] as part of a "social democratic compromise" between capitalism and socialism. Although this compromise did not allow for the immediate creation of socialism, it created welfare states and "recognized noncapitalist, and even anticapitalist, principles of human need over and above the imperatives of profit".{{sfn|Harrington|2011|p=93}} Social democrats in favour of the [[Third Way]] have been accused of endorsing capitalism, including anti-Third Way social democrats who have accused Third Way proponents such as [[Anthony Giddens]] of being anti-social democratic and anti-socialist in practice.{{sfn|Cammack|2004|p=155}}
Social democracy's reformism has been criticized by both the left and right,{{sfnm|1a1=Socialist Party of Great Britain|1y=2002|2a1=Patnaik|2y=2010|2pp=3–21|3a1=Nagin|3y=2018}} for if the left was to govern a capitalist economy, it would have to do so according to capitalist, not socialist, logic. This argument was previously echoed by [[Joseph Schumpeter]] in ''[[Capitalism, Socialism and Democracy]]'' (1942), writing: "Socialists had to govern in an essentially capitalist world..., a social and economic system that would not function except on capitalist lines. ... If they were to run it, they would have to run it according to its own logic. They would have to "administer" capitalism".{{sfn|Romano|2006|p=114}} [[Irving Kristol]] argued: "Democratic socialism turns out to be an inherently unstable compound, a contradiction in terms. Every social democratic party, once in power, soon finds itself choosing, at one point after another, between the socialist society it aspires to and the liberal society that lathered it".{{sfn|Barrett|1978}} [[Joseph Stalin]] was a vocal critic of reformist social democrats, later coining the term ''[[social fascism]]'' to describe social democracy in the 1930s because, in this period, it embraced a similar [[corporatist]] economic model to the model supported by [[fascism]]. This view was adopted by the [[Communist International]], which argued that capitalist society had entered the [[Third Period]] in which a [[proletarian revolution]] was imminent but could be prevented by social democrats and other fascist forces.{{sfn|Haro|2011}}
==See also==
{{Div col}}
* [[Economic progressivism]]
* [[History of the Social Democratic Party of Austria]]
* [[History of the Social Democratic Party of Germany]]
* [[International Group of Democratic Socialists]]
* [[List of anti-capitalist and communist parties with national parliamentary representation]]
* [[List of social democratic and democratic socialist parties that have governed]]
* [[List of democratic socialist parties and organizations]]
* [[List of democratic socialists]]
* [[List of Labour parties]]
* [[List of left-wing political parties]]
* [[List of social democratic parties]]
* [[List of social democrats]]
* [[Social Democratic Party]]
* [[Socialist Party]]
* [[Socialist Union of Central-Eastern Europe]]
{{Div col end}}
==References==
===Citations===
{{Reflist}}
===Notes===
{{Reflist|group=nb|30em}}
{{Notelist|30em}}
===Sources===
====Books====
{{refbegin|30em|indent=yes}}
* {{cite book |last=Abjorensen |first=Norman |year=2019 |title=Historical Dictionary of Democracy |publisher=[[Rowman & Littlefield]] |isbn=978-1-5381-2074-3}}
* {{cite book |last=Adams |first=Ian |year=1993 |title=Political Ideology Today |edition=1st hardcover |series=Politics Today |publisher=[[Manchester University Press]] |isbn=978-0-7190-3346-9}}
* {{cite book |last=Adams |first=Ian |year=1998 |title=Ideology and Politics in Britain Today |edition=illustrated, reprint |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-5056-5}}
* {{cite book |last=Adams |first=Ian |year=1999|title=Ideology and Politics in Britain Today |edition=illustrated, reprint |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-5056-5}}
* {{cite book |last=Adams |first=Ian |year=2001 |title=Political Ideology Today |edition=2nd reprint, revised |series=Politics Today |location=Manchester, England |publisher=[[Manchester University Press]] |isbn=978-0-7190-6019-9 |url=https://archive.org/details/politicalideolog0000adam}}
* {{cite book |last1=Anderson |first1=Gary L. |last2=Herr |first2=Kathryn G. |title=Encyclopedia of Activism and Social Justice |publisher=[[SAGE Publications]] |year=2007 |isbn=978-1-4129-1812-1}}
* {{cite book |last=Archer |first=Robin |year=1995 |title=Economic Democracy: The Politics of Feasible Socialism |publisher=[[Clarendon Press]] |isbn=978-0-19-827891-7 |url=https://archive.org/details/economicdemocrac0000arch}}
* {{cite book |editor1-last=Árnason |editor1-first=Jóhann Páll |editor2-last=Wittrock |editor2-first=Björn |year=2012|title=Nordic Paths to Modernity |publisher=[[Berghahn Books]] |isbn=978-0-85745-269-6}}
* {{cite book |last=Aspalter |first=Christian |year=2001 |title=Importance of Christian and Social Democratic Movements in Welfare Politics: With Special Reference to Germany, Austria and Sweden |location=Huntington, New York |publisher=Nova Science Publishers |isbn=978-1-56072-975-4}}
* {{cite book |last=Bailey |first=David J. |year=2009 |title=The Political Economy of European Social Democracy: A Critical Realist Approach |publisher=[[Routledge]] |isbn=978-0-415-60425-3}}
* {{cite book |last1=Barrientos |first1=Armando |last2=Powell |first2=Martin |year=2004 |chapter=The Route Map of the Third Way |editor1-last=Hale |editor1-first=Sarah |editor2-last=Leggett |editor2-first=Will |editor3-last=Martell |editor3-first=Luke |title=The Third Way and Beyond: Criticisms, Futures and Alternatives |publisher=[[Manchester University Press]] |pages=9–26 |isbn=978-0-7190-6598-9}}
* {{cite book |last1=Bastow |first1=Steve |last2=Martin |first2=James |year=2003 |title=Third Way Discourse: European Ideologies in the Twentieth Century |location=Edinburgh, Scotland |publisher=[[Edinburgh University Press]] |isbn=978-0-7486-1560-5}}
* {{cite book |last=Berlau |first=Abraham Joseph |year=1949 |title=The German Social Democratic Party, 1914–1921 |location=New York |publisher=[[Columbia University Press]] |asin=B007T3SD0A}}
* {{cite book |last=Berman |first=Sheri |year=1998 |title=The Social Democratic Moment: Ideas and Politics in the Making of Interwar Europe |url=https://archive.org/details/socialdemocratic00berm_0 |location=Cambridge, Massachusetts |publisher=[[Harvard University Press]] |isbn=978-0-674-44261-0}}
* {{cite book |last=Berman |first=Sheri |year=2006 |title=The Primacy of Politics: Social Democracy and the Making of Europe's Twentieth Century |publisher=[[Cambridge University Press]] |isbn=978-0-521-81799-8}}
* {{cite book |last=Bernstein |first=Eduard |translator-last=Harvey |translator-first=Edith C. |date=1907 |orig-year=1899 |url=https://www.marxists.org/reference/archive/bernstein/works/1899/evsoc/index.htm |title=Evolutionary Socialism |publisher=[[Independent Labour Party]] |via=[[Marxists Internet Archive]]}}
* {{cite book |last=Bevan |first=Aneurin |year=1952 |title=In Place of Fear |location=New York |publisher=[[Simon & Schuster]]}}
* {{cite book |editor1-last=Birch |editor1-first=Kean |editor2-last=MacLeavy |editor2-first=Julie |editor3-last=Springer |editor3-first=Simon |year=2016 |title=The Handbook of Neoliberalism |publisher=[[Routledge]] |isbn=978-1-138-84400-1}}
* {{cite book |last=Blair |first=Tony |year=1995 |title=Let Us Face the Future |series=Fabian phamplets |location=London |publisher=[[Fabian Society]] |isbn=978-0-7163-0571-2}}
* {{cite book |editor1-last=Blume |editor1-first=Lawrence E. |editor2-last=Durlauf |editor2-first=Steven N. |year=2016 |title=The New Palgrave Dictionary of Economics |edition=2nd, illustrated |publisher=Springer |isbn=978-0-7163-0571-2}}
* {{cite book |last=Bose |first=Pradip |year=2005 |title=Social Democracy in Practice: Socialist International, 1951–2001 |location=Delhi |publisher=Authorspress |isbn=978-81-7273-175-5}}
* {{cite book |last1=Brandal |first1=Nik |last2=Bratberg |first2=Øivind |last3=Thorsen |first3=Dag Einar |year=2013 |title=The Nordic Model of Social Democracy |location=Basingstoke, England |publisher=[[Palgrave Macmillan]] |isbn=978-1-137-01326-2}}
* {{cite book |editor1-last=Brivati |editor1-first=Brian |editor2-last=Heffernan |editor2-first=Richard |year=2000 |title=The Labour Party: A Centenary History |publisher=Macmillan |isbn=978-0-333-74650-9}}
* {{cite book |last=Bronner |first=Stephen Eric |year=1999 |title=Ideas in Action: Political Tradition in the Twentieth Century |url=https://archive.org/details/ideasinactionpol0000bron |location=Oxford |publisher=[[Rowman & Littlefield]] Publishers |isbn=978-0-8476-9387-0}}
* {{cite book |last1=Brown |first1=Garrett W. |last2=McLean |first2=Ian |last3=McMillan |first3=Alistair |year=2018 |title=The Concise Oxford Dictionary of Politics and International Relations |location=Oxford |publisher=[[Oxford University Press]] |isbn=978-0-19-254584-8}}
* {{cite book |last=Busky |first=Donald F. |year=2000 |title=Democratic Socialism: A Global Survey |location=Westport, Connecticut |publisher=[[Praeger Publishers]] |isbn=978-0-275-96886-1}}
* {{cite book |last=Calossi |first=Enrico |year=2016 |title=Anti-Austerity Left Parties in the European Union. Competition, Coordination, Integration |location=Pisa |publisher=[[Pisa University Press]] |isbn=978-88-6741-665-3}}
* {{cite book |last=Cammack |first=Paul |year=2004 |chapter=Giddens's Way with Words |editor1-last=Hale |editor1-first=Sarah |editor2-last=Leggett |editor2-first=Will |editor3-last=Martell |editor3-first=Luke |title=The Third Way and Beyond: Criticisms, Futures and Alternatives |publisher=[[Manchester University Press]] |pages=151–166 |isbn=978-0-7190-6598-9}}
* {{cite book |last=Campbell |first=John |year=2009 |title=The Iron Lady: Margaret Thatcher from Grocer's Daughter to Prime Minister |publisher=[[Penguin Books]] |isbn=978-0-09-954003-8}}
* {{cite book |last1=Carlsson|first1=Ingvar |last2=Lindgren |first2=Anne-Marie |year=1998 |title=What is Social Democracy?: A Book about Social Democracy |location=Stockholm |publisher=Socialdemokraterna |isbn=978-91-532-0413-8}}
* {{cite book |last=Chickering |first=Roger |year=1998 |title=Imperial Germany and the Great War, 1914–1918 |publisher=[[Cambridge University Press]] |isbn=978-0-521-56754-1 |url=https://archive.org/details/imperialgermany00roge}}
* {{cite book |last=Childs |first=David |year=2000 |title=The Two Red Flags: European Social Democracy and Soviet Communism since 1945 |location=London |publisher=[[Routledge]] |isbn=978-0-415-22195-5}}
* {{cite book |last=Clarke |first=Peter |title=Liberals and Social Democrats |publisher=[[Cambridge University Press]] |year=1981 |isbn=978-0-521-28651-0}}
* {{cite book |last=Corfe |first=Robert |year=2010 |title=The Future of Politics: With the Demise of the Left/Right Confrontational System |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-1-906791-46-9}}
* {{cite book |last=Corfe |first=Robert |year=2001 |title=Foundations of New Socialism: A Vision for the New Millennium |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9538460-2-3}}
* {{cite book |last1=Corfe |first1=Robert |last2=Miller |first2=Eddie |year=2002 |title=New Socialist Business Values: For Industrial Resurgence |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9538460-4-7}}
* {{cite book |last=Corfe |first=Robert |year=2005 |title=The Spirit of New Socialism and the End of Class-based Politics |location=Bury St Edmunds, England |publisher=Arena Books |isbn=978-0-9543161-2-9}}
* {{cite book |last=Crosland |first=Anthony |editor-last=Crossman |editor-first=Richard |editor-link=Richard Crossman |year=1952 |title=New Fabian Essays |chapter=The Transition from Capitalism |location=London |publisher=Turnstile Press |isbn=978-0-7146-4655-8 |url=https://archive.org/details/socialismcommong0000unse}}
* {{cite book |last=Crosland |first=Anthony |year=1974 |title=Socialism Now |publisher=Jonathan Cape |isbn=978-0-224-00996-6 |url=https://archive.org/details/socialismnowothe0000cros}}
* {{cite book |last=Crosland |first=Anthony |year=2006 |orig-year=1956 |title=The Future of Socialism |publisher=Constable |isbn=978-1-84529-485-4}}
* {{cite book |last=Denitch |first=Bogdan |year=1981 |title=Democratic Socialism: The Mass Left in Advanced Industrial Societies |publisher=[[Rowman & Littlefield]] |isbn=978-0-86598-015-0 |url=https://archive.org/details/democraticsocial0000unse_g3k8}}
* {{cite book |last=Diamond |first=Patrick |year=2015 |title=New Labour's Old Roots: Revisionist Thinkers in Labour's History |edition=2nd |publisher=Andrews UK Limited |isbn=978-1-84540-797-1}}
* {{cite book |last1=Dølvik |first1=Jon Erik |last2=Fløtten |first2=Tone |last3=Hippe |first3=Jon M. |last4=Jordfald |first4= Bård |date=2015 |title=The Nordic Model Towards 2030: A New Chapter? |publisher=Nordmod 2030 |isbn=978-82-324-0185-7}}
* {{cite book |last=Dongyoun |first=Hwang |year=2016|title=Anarchism in Korea: Independence, Transnationalism, and the Question of National Development, 1919–1984 |publisher=[[SUNY Press]] |isbn=978-1-4384-6167-0}}
* {{cite book |last=Döring |first=Daniel |year=2007 |title=Is 'Third Way' Social Democracy Still a Form of Social Democracy?|location=Norderstedt, Germany |publisher=GRIN Publishing |isbn=978-3-638-86832-7}}
* {{cite book |last1=Eatwell |first1=Roger |last2=Wright |first2=Anthony |date=1999 |title=Contemporary Political Ideologies |edition=2nd |location=London |publisher=[[Continuum International Publishing Group|Continuum]] |isbn=978-1-85567-605-3}}
* {{cite book |last1=Egle |first1=Christoph |last2=Henkes |first2=Christian |last3=Merkel |first3=Wolfgang |last4=Petring |first4=Alexander |year=2008 |title=Social Democracy in Power: The Capacity to Reform |series=Routledge Research in Comparative Politics |location=London |publisher=[[Routledge]] |isbn=978-0-415-43820-9}}
* {{cite book |last=Ehns |first=Dirk H. |year=2016 |title=Modern Monetary Theory and European Macroeconomics |publisher=[[Routledge]] |isbn=978-1-138-65477-8}}
* {{cite book |last=Ely |first=Richard |year=1883 |title=French and German Socialism in Modern Times |url=https://archive.org/details/in.ernet.dli.2015.213907 |location=New York |publisher=Harper and Brothers |isbn=978-1-104-06955-1}}
* {{cite book |last=Esping-Andersen |first=Gøsta |year=1985 |title=Politics Against Markets: The Social Democratic Road to Power |url=https://archive.org/details/politicsagainstm0000espi |publisher=[[Princeton University Press]] |isbn=978-0-691-65418-8 |jstor=j.ctt1m322zp}}
* {{cite book |last=Esping-Andersen |first=Gøsta |year=2013 |orig-year=1990 |title=The Three Worlds of Welfare Capitalism |publisher=[[John Wiley & Sons]] |isbn=978-0-7456-6675-4}}
* {{cite book |last=Feuchtwanger |first=Edgar |year=2002 |title=Bismarck |publisher=[[Routledge]] |isbn=978-0-415-21614-2}}
* {{cite book |last=Fitzpatrick |first=Tony |year=2003 |title=After the New Social Democracy: Social Welfare for the Twenty-First Century |publisher=[[Manchester University Press]] |isbn=978-0-7190-6477-7}}
* {{cite book |last=Foley |first=Michael |year=1994 |title=Ideas that Shape Politics |publisher=[[Manchester University Press]] |isbn=978-0-7190-3825-9}}
* {{cite book |editor1-last=Freeden |editor1-first=Michael |editor2-last=Sargent |editor2-first=Lyman Tower |editor3-last=Stears |editor3-first=Marc |year=2013|title=The Oxford Handbook of Political Ideologies |location=Oxford |publisher=[[Oxford University Press]] |isbn=978-0-19-958597-7}}
* {{cite book |last=Fuchs |first=Christian |year=2019 |title=Marxism: Karl Marx's Fifteen Key Concepts for Cultural and Communication Studies |location=[[Routledge]] |isbn=978-1-000-75049-2}}
* {{cite book |editor1-last=Gamble |editor1-first=Peter |editor2-last=Wright |editor2-first=Tony |year=1999 |title=The New Social Democracy |publisher=[[Taylor & Francis]] |isbn=978-0-631-21765-7 |url=https://archive.org/details/newsocialdemocra0000unse}}
* {{cite book |last1=Gey |first1=Peter |last2=Kosta |first2=H. G. Jiří |last3=Quaisser |first3=Wolfgang |year=1987 |title=Crisis and Reform in Socialist Economies |publisher=Avalon Publishing |isbn=978-0-8133-7332-4 |url=https://archive.org/details/crisisreforminso0000unse}}
* {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |date=1998a |orig-year=1994 |title=Beyond Left and Right: The Future of Radical Politics |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-1439-7 |url=https://archive.org/details/beyondleftrightf0000gidd}}
* {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |date=1998b |title=The Third Way: The Renewal of Social Democracy |url=https://archive.org/details/thirdwayrenewalo0000gidd |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-2266-8}}
* {{cite book |last=Giddens |first=Anthony |author-link=Anthony Giddens |year=2003 |chapter=Neoprogressivism: A New Agenda for Social Democracy |editor1-last=Giddens |editor1-first=Anthony |title=The Progressive Manifesto: New Ideas for the Centre-Left |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-3295-7 |url=https://archive.org/details/progressivemanif0000unse}}
* {{cite book |last=Gombert |first=Tobias |editor1-last=Bläsius |editor1-first=Julia |editor2-last=Krell |editor2-first=Christian |editor3-last=Timpe |editor3-first=Martin |year=2009 |title=Foundations of Social Democracy|series=Social Democratic Reader |volume=1 |translator1-last=Patterson |translator1-first=James |location=Berlin |publisher=Friedrich-Ebert-Stiftung |isbn=978-3-86872-215-4}}
* {{cite book |last1=Gray |first1=Daniel |last2=Johnson |first2=Elliott |last3=Walker |first3=David |year=2014 |title=Historical Dictionary of Marxism |series=Historical Dictionaries of Religions, Philosophies, and Movements |edition=2nd |location=Lanham, Maryland |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-3798-8}}
* {{cite book |last1=Gregory |first1=Paul R. |last2=Stuart|first2=Robert C. |year=2003 |title=Comparing Economic Systems in the Twenty-First Century |edition=7th |publisher=[[Cengage Learning]] |isbn=978-0-618-26181-9}}
* {{cite book |editor1-last=Groenke |editor1-first=Susan L. |editor2-last=Hatch |editor2-first=J. Amos |year=2009 |title=Critical Pedagogy and Teacher Education in the Neoliberal Era: Small Openings |publisher=Springer |isbn=978-1-4020-9588-7}}
* {{cite book |last=Hain |first=Peter |year=1995 |title=Ayes to the Left |publisher=[[Lawrence and Wishart]] |isbn=978-0-85315-832-5 |url=https://archive.org/details/ayestoleftfuture0000hain}}
* {{cite book |last=Hain |first=Peter |year=2015 |title=Back to the Future of Socialism |publisher=Policy Press |isbn=978-1-4473-2168-2}}
* {{cite book |last=Hamilton |first=Malcolm |year=1989 |title=Democratic Socialism in Britain and Sweden |publisher=[[St Martin's Press]] |isbn=978-1-349-09234-5}}
* {{cite book |last=Harrington |first=Michael |year=2011 |orig-year=1989 |title=Socialism: Past and Future |location=New York |publisher=Arcade Publishing |isbn=978-1-61145-335-5 |url=https://archive.org/details/socialismpastfut2011harr}}
* {{cite book |last=Haseler |first=Stephen |year=1969 |title=The Gaitskellites: Revisionism in the British Labour Party, 1951–1964 |publisher=Macmillan |isbn=978-1-349-00258-0}}
* {{cite book |last=Hattersley |first=Roy |year=1987 |title=Choose Freedom: The Future of Democratic Socialism |location=Harmondsworth, England |publisher=[[Penguin Books|Penguin]] |isbn=978-0-14-010494-3}}
* {{cite book |last=Heywood |first=Andrew |year=2007 |title=Political Ideologies: An Introduction |edition=4th |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-52180-3}}
* {{cite book |last=Heywood |first=Andrew |year=2012 |title=Political Ideologies: An Introduction |edition=5th |location=Basingstoke, England |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-36725-8}}
* {{cite book |last1=Hinchman |first1=Lewis P. |last2=Meyer |first2=Thomas |year=2007 |title=The Theory of Social Democracy |location=Cambridge, England |publisher=[[Polity Press]] |isbn=978-0-7456-4113-3}}
* {{cite book |last=Hinnfors |first=Jonas |year=2006 |title=Reinterpreting Social Democracy: A History of Stability in the British Labour Party and Swedish Social Democratic Party |series=Critical Labour Movement Studies |publisher=[[Manchester University Press]] |isbn=978-0-7190-7362-5}}
* {{cite book |last1=Hloušek |first1=Vít |last2=Kopecek |first2=Lubomír |date=2013 |title=Origin, Ideology and Transformation of Political Parties: East-Central and Western Europe Compared |publisher=Ashgate |isbn=978-1-4094-9977-0}}
* {{cite book |last=Hoefer |first=Richard |year=2013 |chapter=Social Welfare Policy and Politics |editor1-last=Colby |editor1-first=Ira C. |editor2-last=Dolmus |editor2-first=Catherine N. |editor3-last=Sowers |editor3-first=Karen M. |title=Connecting Social Welfare Policy to Fields of Practice |location=Hoboken, New Jersey |publisher=[[John Wiley & Sons]] |isbn=978-1-118-17700-6}}
* {{cite book |last=Humphrys |first=Elizabeth |title=How Labour Built Neoliberalism: Australia's Accord, the Labour Movement and the Neoliberal Project |publisher=[[Brill Publishers|Brill Academic Publishers]] |date=8 October 2018 |isbn=978-90-04-38346-3}}
* {{cite book |last=Imlay |first=Talbot C. |year=2018 |title=The Practice of Socialist Internationalism: European Socialists and International Politics, 1914–1960 |publisher=[[Oxford University Press]] |isbn=978-0-19-964104-8}}
* {{cite book |last1=Jackson |first1=Nigel |last2=Tansey |first2=Stephen D. |year=2008 |title=Politics: The Basics |edition=4th |location=London |publisher=[[Routledge]] |isbn=978-0-415-42244-4}}
* {{cite book |editor-last=Jefferys |editor-first=Kevin |year=1994 |title=War and Reform: British Politics during the Second World War |location=Manchester |publisher=[[Manchester University Press]] |isbn=978-0-7190-3970-6}}
* {{cite book |editor-last1=Katseli |editor-first1=Louka T. |editor-last2=Milios |editor-first2=John |editor-last3=Pelagidis |editor-first3=Theodore |year=2018 |title=Welfare State and Democracy in Crisis: Reforming the European Model |publisher=[[Routledge]] |isbn=978-1-351-78839-7}}
* {{cite book |last=Kendall |first=Diana |year=2011 |title=Sociology in Our Time: The Essentials |publisher=[[Cengage Learning]] |isbn=978-1-111-30550-5}}
* {{cite book |editor-last=Kindersley |editor-first=Richard |year=2016 |title=In Search of Eurocommunism |publisher=Springer |isbn=978-1-349-16581-0}}
* {{cite book |editor1-last=Kornai |editor1-first=János |editor2-last=Yingi |editor2-first=Qian |year=2009 |title=Market and Socialism: In the Light of the Experiences of China and Vietnam |location=New York |publisher=[[Palgrave Macmillan]] |isbn=978-0-230-55354-5}}
* {{cite book |last1=Kwok |first1=Pui-lan |last2=Rieger |first2=Joerg |year=2013 |title=Occupy Religion: Theology of the Multitude |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-1792-8}}
* {{cite book |last=Kynaston |first=David |year=2009 |title=Family Britain 1951–1957 |publisher=Bloomsbury |location=London |isbn=978-0-7475-8385-1 |url=https://archive.org/details/familybritain1950000kyna}}
* {{cite book |last=Lafontaine |first=Oskar |year=2009 |title=Left Parties Everywhere?|series=Socialist Renewal |location=Nottingham, England |publisher=Spokesman Books |isbn=978-0-85124-764-9}}
* {{cite book |last=Laidler |first=Harry W. |year=2013 |title=History of Socialism: An Historical Comparative Study of Socialism, Communism, Utopia |publisher=[[Routledge]] |isbn=978-1-136-23143-8}}
* {{cite book |last=Lambin |first=Jean-Jacques |year=2014 |title=Rethinking the Market Economy: New Challenges, New Ideas, New Opportunities |publisher=[[Palgrave Macmillan]] |isbn=978-1-137-39291-6}}
* {{cite book |last=Lerner |first=Warren |year=1993 |title=A History of Socialism and Communism in Modern Times: Theorists, Activists, and Humanists |publisher=[[Prentice Hall]] |isbn=978-0-13-389552-0}}
* {{cite book |editor1-last=Lemke |editor1-first=Christiane |editor2-last=Marks |editor2-first=Gary |date=1992 |title=The Crisis of Socialism in Europe |location= Durham, North Carolina |publisher=[[Duke University Press]] |isbn=978-0-8223-1197-3 |url=https://archive.org/details/crisisofsocialis01unse_2}}
* {{cite book |editor1-last=Lewis |editor1-first=Jane |editor1-link=Jane Lewis (academic) |editor2-last=Surender |editor2-first=Rebecca |year=2004 |title=Welfare State Change: Towards a Third Way? |publisher=[[Oxford University Press]] |isbn=978-0-19-926672-2}}
* {{cite book |last=Lightfoot |first=Simon |year=2005 |title=Europeanizing Social Democracy?: The Rise of the Party of European Socialists |publisher=[[Routledge]] |isbn=978-1-134-27647-9}}
* {{cite book |last=Li |first=He |year=2015 |title=Political Thought and China's Transformation: Ideas Shaping Reform in Post-Mao China |publisher=Springer |isbn=978-1-137-42781-6}}
* {{cite book |last=Lowe |first=Rodney |year=2004 |orig-year=1993 |title=The Welfare State in Britain Since 1945|edition=3rd, illustrated |publisher=Macmillan Education UK |isbn=978-1-4039-1193-3}}
* {{cite book |editor1-last=Ludlam |editor1-first=Steve |editor2-last=Smith |editor2-first=Martin J. |year=2017 |title=Governing as New Labour: Policy and Politics Under Blair |publisher=Macmillan International Higher Education |isbn=978-1-4039-0678-6}}
* {{cite book |last=March |first=Luke |year=2008 |url=http://library.fes.de/pdf-files/id/ipa/05818.pdf |title=Contemporary Far Left Parties in Europe: From Marxism to the Mainstream? |location=Berlin |publisher=Friedrich-Ebert-Stiftung |isbn=978-3-86872-000-6 |access-date=9 November 2021}}
* {{cite book |last1=Marglin |first1=Stephen A. |last2=Schor |first2=Juliet B. |year=1991 |title=The Golden Age of Capitalism: Reinterpreting the Postwar Experience |publisher=[[Clarendon Press]] |isbn=978-0-19-828741-4 |doi=10.1093/acprof:oso/9780198287414.001.0001 |url=https://archive.org/details/goldenageofcapit0000unse}}
* {{cite book |last1=Marglin |first1=Stephen A. |last2=Schor |first2=Juliet B. |year=2017 |title=Reflecting on Seventy Years of Development Policy Analysis |chapter=Post-war reconstruction and development in the Golden Age of Capitalism |work=World Economic and Social Survey 2017 |series=World Economic and Social Survey |publisher=[[United Nations]] iLibrary |doi=10.18356/8310f38c-en |isbn=978-92-1-060598-4}}
* {{cite book |last1=Mathers |first1=Andrew |last2=Taylor |first2=Graham |last3=Upchurch |first3=Martin |year=2009 |title=The Crisis of Social Democratic Trade Unionism in Western Europe: The Search for Alternatives |series=Contemporary Employment Relations |location=Farnham, England |publisher=[[Ashgate Publishing]] |isbn=978-0-7546-7053-7}}
* {{cite book |last=Megill |first=Kenneth A. |year=1970 |title=The New Democratic Theory |location=New York |publisher=The Free Press |isbn=978-0-02-920790-1 |url=https://archive.org/details/newdemocraticthe0000unse}}
* {{cite book |editor1-last=Meyer |editor1-first=Henning |editor2-last=Rutherford |editor2-first=Jonathan |year=2011 |title=The Future of European Social Democracy: Building the Good Society |publisher=Springer |isbn=978-0-230-35504-0}}
* {{cite book |last=Miller |first=Toby |year=2008 |title=A Companion to Cultural Studies |publisher=[[Wiley (publisher)|Wiley]] |isbn=978-0-470-99879-3}}
* {{cite book |last=Moschonas |first=Gerassimos |year=2002 |title=In the Name of Social Democracy: The Great Transformation, 1945 to the Present |translator-last=Elliott |translator-first=Gregory |location=London |publisher=[[Verso Books]] |isbn=978-1-85984-639-1}}
* {{cite book |last=Mosse |first=George |year=2018 |chapter=Marxism |title=The Culture Of Western Europe: The Nineteenth And Twentieth Centuries |publisher=[[Routledge]] |isbn=978-0-429-97252-2}}
* {{cite book |last=Naarden |first=Bruno |year=2002 |orig-year=1992 |title=Socialist Europe and Revolutionary Russia: Perception and Prejudice, 1848–1923 |publisher=[[Cambridge University Press]] |isbn=978-0-521-89283-4}}
* {{cite book |last=Newman |first=Michael |year=2005 |title=Socialism: A Very Short Introduction |publisher=[[Oxford University Press]] |isbn=978-0-19-280431-0}}
* {{cite book |last=O'Reilly |first=David |year=2007 |title=The New Progressive Dilemma: Australia and Tony Blair's Legacy |publisher=Springer |isbn=978-0-230-62547-1}}
* {{cite book |last=Palley |first=Thomas I. |year=2013 |title=From Financial Crisis to Stagnation: The Destruction of Shared Prosperity and the Role of Economics |publisher=[[Cambridge University Press]] |isbn=978-1-107-61246-4}}
* {{cite book |last1=Pani |first1=Mica |last2=Panic |first2=M. |year=2011 |chapter=Neoliberalism versus Social Democracy: Empirical Evidence |title=Globalization: A Threat to International Cooperation and Peace? |publisher=Springer |pages=109–141 |isbn=978-0-230-30701-8}}
* {{cite book |last=Picard |first=Robert |date=6 December 1985 |title=The Press and the Decline of Democracy: Democratic Socialist Response in Public Policy |publisher=Praeger |isbn=978-0-86598-015-0 |url=https://archive.org/details/democraticsocial0000unse_g3k8}}
* {{cite book |last=Pierson |first=Christopher |year=2001 |title=Hard Choices: Social Democracy in the Twenty-First Century |location=Cambridge, England; Oxford, England; Malden, Massachusetts |publisher=[[Polity Press]] |isbn=978-0-7456-1985-9}}
* {{cite book |last=Raza |first=Syed Ali |year=2012 |title=Social Democratic System |publisher=[[Global Peace Trust]] |isbn=978-969-9757-00-6}}
* {{cite book |last=Roemer |first=John E. |year=1994 |title=A Future for Socialism |chapter=The long term and the short term |publisher=[[Harvard University Press]] |isbn=978-0-674-33946-0}}
* {{cite book |last=Romano |first=Flavio |year=2006 |title=Clinton and Blair: The Political Economy of the Third Way |series=Routledge Frontiers of Political Economy |volume=75 |location=London |publisher=[[Routledge]] |isbn=978-0-415-37858-1}}
* {{cite book |last=Romano |first=Flavio |year=2007 |title=Clinton and Blair: The Political Economy of the Third Way |series=Routledge Frontiers of Political Economy |volume=75 |location=London |publisher=[[Routledge]] |isbn=978-1-134-18252-7}}
* {{cite book |last1=Rosser |first1=J. Barkley Jr. |last2=Rosser |first2=Marina V. |year=2003 |title=Comparative Economics in a Transforming World Economy |edition=2nd |location=Cambridge, Massachusetts |publisher=[[MIT Press]] |isbn=978-0-262-18234-8}}
* {{cite book |last=Rothestein |first=Bo |date=1998 |title=Just Institutions Matter: The Moral and Political Logic of the Universal Welfare State |location=Cambridge, England |publisher=[[Cambridge University Press]] |isbn=978-0-521-59893-4}}
* {{cite book |last=Samuelsson |first=Kurt |year=1968 |title=From Great Power to Welfare State: 300 Years of Swedish Social Development |location=London |publisher=[[George Allen and Unwin]] |isbn=978-0-04-948002-5}}
* {{cite book |last=Sargent |first=Lyman Tower |year=2008| title=Contemporary Political Ideologies: A Comparative Analysis |url=https://archive.org/details/contemporarypoli00sarg_0 |edition=14th |publisher=Wadsworth Publishing |isbn=978-0-495-56939-8}}
* {{cite book |last=Schlesinger |first=Arthur M. Jr. |year=1962 |chapter=Liberalism in America: A Note for Europeans |title=The Politics of Hope and The Bitter Heritage |location=Boston |publisher=[[Riverside Press]]}}
* {{cite book |last=Schorske |first=Carl E. |year=1993 |orig-year=1955 |title=German Social Democracy, 1905–1917: The Development of the Great Schism |series=Harvard Historical Studies |volume=65 |location=Cambridge, Massachusetts |publisher=[[Harvard University Press]] |isbn=978-0-674-35125-7 |url=https://archive.org/details/germansocialdemo0000scho}}
* {{cite book |last=Schumpeter |first=Joseph |year=1942 |title=Capitalism, Socialism and Democracy |title-link=Capitalism, Socialism and Democracy |location=New York |publisher=Harper & Brothers |isbn=978-0-06-133008-7 |oclc=22556726}}
* {{cite book |last=Sears |first=Kathleen |year=2019 |title=Socialism 101: From the Bolsheviks and Karl Marx to Universal Healthcare and the Democratic Socialists, Everything You Need to Know about Socialism |publisher=[[Simon & Schuster]] |isbn=978-1-5072-1136-6}}
* {{cite book |last=Sejersted |first=Francis |year=2011 |editor1-last=Adams |editor1-first=Madeleine B. |title=The Age of Social Democracy: Norway and Sweden in the Twentieth Century |translator-last=Daly |translator-first=Richard |publisher=[[Princeton University Press]] |isbn=978-0-691-14774-1}}
* {{cite book |last=Simon Reid |first=Henry |year=2015 |title=The Political Origins of Inequality: Why a More Equal World Is Better for Us All |publisher=[[University of Chicago Press]] |isbn=978-0-226-23679-7}}
* {{cite book |last=Steger |first=Manfred B. |year=1997 |title=The Quest for Evolutionary Socialism: Eduard Bernstein and Social Democracy |location=Cambridge, United Kingdom; New York City, United States; Melbourne, Australia |publisher=[[Cambridge University Press]] |isbn=978-0-521-58200-1}}
* {{cite book |last=Steger |first=Manfred B. |year=1999 |chapter=Friedrich Engels and the Origins of German Revisionism: Another Look |editor1-last=Carver |editor1-first=Terrell |editor2-last=Steger |editor2-first=Manfred B. |title=Engels After Marx |location=University Park, Pennsylvania |publisher=[[Pennsylvania State University]] |pages=181–196 |isbn=978-0-271-01891-1}}
* {{cite book |last=Taylor |first=Andrew J. |year=2013 |chapter=Trade Unions and the Politics of Social Democratic Renewal |editor1-last=Gillespie |editor1-first=Richard |editor2-last=Paterson |editor2-first=William E. |title=Rethinking Social Democracy in Western Europe |publisher=[[Routledge]] |isbn=978-1-135-23618-2}}
* {{cite book |last=Thomas |first=Norman |year=1953 |title=Democratic Socialism: A New Appraisal |location=New York |publisher=League for Industrial Democracy |isbn=978-0-598-69160-6}}
* {{cite book |last=Ticktin |first=Hillel |year=1998 |chapter=The Problem is Market Socialism |editor1-last=Ollman |editor1-first=Bertell |title=Market Socialism: The Debate Among Socialists |location=New York |publisher=[[Routledge]] |pages=55–80 |isbn=978-0-415-91966-1}}
* {{cite book |last=Tomlinson |first=Jim |year=1997 |title=Democratic Socialism and Economic Policy: The Attlee Years, 1945–1951 |url=https://archive.org/details/democraticsocial0000toml |location=Cambridge |publisher=[[Cambridge University Press]] |isbn=978-0-521-55095-6}}
* {{cite book |last=Walters |first=William |year=2001 |chapter=Governing Unemployment: Transforming "the Social"? |editor1-last=Pavlich |editor1-first=George |editor2-last=Wickham |editor2-first=Gary |title=Rethinking Law, Society and Governance: Foucault's Bequest |publisher=Hart Publishing |isbn=978-1-84113-293-8}}
* {{cite book |last=Weisskopf |first=Thomas E. |year=1994 |chapter=Challenges to Market Socialism: A Response to Critics |editor1-last=Roosevelt |editor1-first=Frank |editor1-link=Franklin Delano Roosevelt III |editor2-last=Belkin |editor2-first=David |title=Why Market Socialism? Voices from Dissent |location=Armonk, New York |publisher=[[M. E. Sharpe]] |pages=297–318 |isbn=978-1-56324-465-0}}
* {{cite book |last=Whyman |first=Philip |year=2005 |title=Third Way Economics: Theory and Evaluation |publisher=Springer |isbn=978-0-230-51465-2}}
* {{cite book |last=Williams |first=Raymond |year=1985 |orig-year=1976 |title=Keywords: A Vocabulary of Culture and Society |url=https://archive.org/details/keywordsvocabula0000will |edition=revised |location=New York |publisher=[[Oxford University Press]]|isbn=978-0-19-520469-8 |oclc=1035920683}}
* {{cite book |last=Wintrop |first=Norman |year=1983 |orig-year=1982 |title=Liberal Democratic Theory and Its Critics |edition=reprint |publisher=Croom Helm |isbn=978-0-7099-2766-2}}
* {{cite book |last=Wright |first=Anthony |year=1983|title=British Socialism: Socialist Thought from the 1880s to the 1960s |location=London |publisher=Longman |isbn=978-0-582-29561-2}}
{{refend}}
====Conferences====
{{refbegin|30em|indent=yes}}
* {{cite conference |last=Berman |first=Sheri |year=2008 |url=http://www.people.fas.harvard.edu/~ces/conferences/left/left_papers/berman.pdf |title=Understanding Social Democracy |conference=What's Left of the Left: Liberalism and Social Democracy in a Globalized World |conference-url=http://www.people.fas.harvard.edu/~ces/conferences/left/left_papers.html |location=Cambridge, Massachusetts |publisher=Minda de Gunzburg Center for European Studies, [[Harvard University]] |access-date=29 January 2016}}
* {{cite conference |author=[[Social Democratic Party of Germany]] |date=28 October 2007 |url=https://www.spd.de/fileadmin/Dokumente/Beschluesse/Grundsatzprogramme/hamburger_programm_englisch.pdf |title=Hamburg Programme. Principal guidelines of the Social Democratic Party of Germany |conference=Federal Party Conference of the SPD |location=Hamburg |publisher=[[Social Democratic Party of Germany]] |access-date=26 April 2020}}
{{refend}}
====Encyclopedias====
{{refbegin|30em|indent=yes}}
* {{cite encyclopedia |last1=Alt |first1=James E. |last2=Chambers |first2=Simone |last3=Garrett |first3=Geoffrey |last4=Kurian |first4=George Thomas |last5=Levi |first5=Margaret |last6=McClain |first6=Paula D. |year=2010 |title=The Encyclopedia of Political Science Set |publisher=[[CQ Press]] |isbn=978-1-933116-44-0}}
* {{cite encyclopedia |editor1-first=Bertrand |editor1-last=Badie |editor1-link=Bertrand Badie |editor2-first=Dirk |editor2-last=Berg-Schlosser |editor2-link=Dirk Berg-Schlosser |editor3-first=Leonardo |editor3-last=Morlino |editor3-link=Leonardo Morlino |year=2011 |title=Social Democracy |encyclopedia=International Encyclopedia of Political Science |volume=8 |publisher=[[SAGE Publications]] |isbn=978-1-4129-5963-6}}
* {{cite encyclopedia |editor1-last=Docherty |editor1-first=James C. |editor2-last=Lamb |editor2-first=Peter |year=2006 |title=Social democracy |encyclopedia=Historical Dictionary of Socialism |series=Historical Dictionaries of Religions, Philosophies, and Movements |volume=73 |edition=2nd |location=Lanham, Maryland |publisher=[[Scarecrow Press]] |isbn=978-0-8108-5560-1}}
* {{cite web |last1=Duignan |first1=Brian |last2=Kalsang Bhutia |first2=Thinley |last3=Mahajan |first3=Deepti |url=http://www.britannica.com/topic/social-democracy |title=Social democracy |website=Encyclopædia Britannica Online |date=17 June 2014 |archive-url=https://web.archive.org/web/20160602003943/https://www.britannica.com/topic/social-democracy |archive-date=2 June 2016 |access-date=29 February 2020}}
* {{cite encyclopedia |last1=Durlauf |first1=Steven |last2=Lawrence |first2=Blume |year=2008 |title=Social Democracy |encyclopedia=New Palgrave Dictionary of Economics |edition=2nd |publisher=[[Palgrave Macmillan]] UK |isbn=978-0-333-78676-5}}
* {{cite encyclopedia |editor-last=Jones |editor-first=R. J. Barry |year=2001 |title=Routledge Encyclopedia of International Political Economy |volume=III |publisher=[[Taylor & Francis]] |isbn=978-0-415-14532-9}}
* {{cite encyclopedia |last=Lamb |first=Peter |year=2015 |title=Social democracy |encyclopedia=Historical Dictionary of Socialism |edition=3rd |series=Historical Dictionaries of Religions, Philosophies, and Movements |publisher=[[Rowman & Littlefield]] |isbn=978-1-4422-5826-6}}
* {{cite encyclopedia |last=Lipset |first=Seymour Martin |year=1995 |title=The Encyclopedia of Democracy |volume=4 |publisher=Congressional Quarterly |isbn=978-0-87187-889-2}}
* {{cite encyclopedia |last=Miller |first=David |year=1998 |title=Social Democracy |editor-last=Craig |editor-first=Edward |editor-link=Edward Craig (philosopher) |encyclopedia=Routledge Encyclopedia of Philosophy |volume=8 |publisher=[[Routledge]] |isbn=978-0-415-18713-8}}
* {{cite encyclopedia |last=O'Hara |first=Phillip |year=2003 |title=Social Democracy |encyclopedia=Encyclopedia of Political Economy |volume=2 |publisher=[[Routledge]] |isbn=978-0-415-24187-8}}
* {{cite encyclopedia |last=Ritzer |first=George |year=2004 |title=Marxism |encyclopedia=Encyclopedia of Social Theory |location=Thousand Oaks, California |publisher=[[SAGE Publications]] |isbn=978-1-4522-6546-9}}
* {{cite encyclopedia |last=Safra |first=Jacob E. |year=1998 |title=Social democracy |encyclopedia=The New Encyclopædia Britannica |edition=15th |volume=10 |publisher=Encyclopædia Britannica}}
* {{cite encyclopedia |last=Schweickart |first=David |year=2007 |editor1-last=Anderson |editor1-first=Gary L. |editor2-last=Herr |editor2-first=Kathryn G. |encyclopedia=Encyclopedia of Activism and Social Justice |title=Democratic Socialism |publisher=[[SAGE Publications]] |volume=1 |location=Thousand Oaks, California |isbn=978-1-4129-1812-1}}
* {{cite encyclopedia |last=Stevens |first=Mark A. |year=2000 |title=Social democracy |encyclopedia=Merriam-Webster's Collegiate Encyclopedia |publisher=[[Merriam-Webster]] |isbn=978-0-87779-017-4}}
* {{cite encyclopedia |last=Tsakalotos |first=Euclid |editor1-last=Arestis |editor1-first=Philip |editor2-last=Sawyer |editor2-first=Malcolm C. |date=2001 |encyclopedia=The Economics of the Third Way: Experiences from Around the World |title=European Employment Policies: A New Social Democratic Model for Europe |publisher=Edward Elgar Publishing |pages=26–45 |isbn=9781843762836}}
{{refend}}
====Journals====
{{refbegin|30em|indent=yes}}
* {{cite journal |last=Altman |first=David |title=Collegiate Executives and Direct Democracy in Switzerland and Uruguay: Similar Institutions, Opposite Political Goals, Distinct Results |journal=Swiss Political Science Review |year=2011 |volume=14 |issue=3 |pages=483–520 |doi=10.1002/j.1662-6370.2008.tb00110.x |url=https://doi.org/10.1002/j.1662-6370.2008.tb00110.x}}
* {{cite journal |last1=Bardhan |first1=Pranab |last2=Roemer |first2=John E. |year=1992 |title=Market Socialism: A Case for Rejuvenation |journal=[[Journal of Economic Perspectives]] |volume=6 |issue=3 |pages=101–116 |doi=10.1257/jep.6.3.101 |issn=0895-3309 |doi-access=free}}
* {{cite report |last=Batson |first=Andrew |date=March 2017 |url=http://www.cebc.org.br/sites/default/files/the_state_of_the_state_sector.pdf |title=The State of the State Sector |publisher=[[Gavekal Dragonomics]] |access-date=15 June 2020}}
* {{cite journal |last=Bernstein |first=Eduard |author-link=Eduard Bernstein |date=April 1897 |url=https://www.marxists.org/reference/archive/bernstein/works/1897/04/marx-reform.htm |title=Karl Marx and Social Reform |journal=Progressive Review |issue=7 |via=[[Marxists Internet Archive]]}}
* {{cite journal |last=Bolton |first=Matt |date=March 2020 |title=Democratic Socialism and the Concept of (Post)Capitalism |journal=The Political Quarterly |publisher=[[Wiley (publisher)|Wiley]] |volume=91 |issue=2 |pages=334–342 |doi=10.1111/1467-923X.12830 |s2cid=216159023}}
* {{cite journal |last1=Cappelen |first1=Adne |last2=Fagerberg |first2=Jan |last3=Mjøset |first3=Lars |last4=Skarstein |first4=Rune |date=May 1990 |title=The Decline of Social-Democratic State Capitalism in Norway |journal=New Left Review |issue=181 |pages=60–94}}
* {{cite journal |last=Cobham |first=David |date=November 1984 |title=The Nationalisation of the Banks in Mitterand's France: Rationalisations and Reasons |journal=[[Journal of Public Policy]] |publisher=[[Cambridge University Press]] |volume=4 |issue=4 |pages=351–358 |doi=10.1017/S0143814X00002798 |jstor=3998375 |s2cid=154543259}}
* {{cite journal |last=Cohen |first=Paul |date=Winter 2010 |url=https://www.dissentmagazine.org/article/lessons-from-the-nationalization-nation-state-owned-enterprises-in-france |title=Lessons from the Nationalization Nation: State-Owned Enterprises in France |journal=Dissident |publisher=[[University of Pennsylvania Press]] |volume=57 |issue=1 |pages=15–20 |doi=10.1353/dss.0.0107 |s2cid=153581946 |issn=1946-0910 |access-date=14 April 2020}}
* {{cite journal |last=Draper |first=Hal |year=1966 |url=https://www.marxists.org/archive/draper/1966/twosouls/index.htm |title=The Two Souls of Socialism |journal=New Politics |volume=5 |issue=1 |pages=57–84 |via=[[Marxists Internet Archive]]}}
* {{cite journal |last1=Ferragina |first1=Emanuele |last2=Seeleib-Kaiser |first2=Martin |year=2011 |url=https://halshs.archives-ouvertes.fr/halshs-01347336/document |title=Welfare regime debate: past, present, futures |journal=Policy & Politics |volume=39 |issue=4 |pages=583–611 |doi=10.1332/030557311X603592 |s2cid=146986126}}
* {{cite journal |last1=Flavin|first1=Patrick |last2=Pacek|first2=Alexander C.|last3=Radcliff|first3=Benjamin |date=2014 |title=Assessing the Impact of the Size and Scope of Government on Human Well-Being|url= |journal=[[Social Forces]]|volume=92 |issue=4 |pages=1241–1258|doi=10.1093/sf/sou010|access-date=}}
* {{cite journal |last=Fleet |first=Michael H. |date=December 1973 |title=Chile's Democratic Road to Socialism |journal=The Western Political Quarterly |volume=26 |issue=4 |pages=766–786 |jstor=447149 |doi=10.2307/447149}}
* {{cite journal |last=Foner |first=Eric |date=Spring 1984 |url=http://www.nyu.edu/steinhardt/e/pdf/humsocsci/mias/readings07/21.pdf |title=Why is there no socialism in the United States |journal=[[History Workshop Journal]] |volume=17 |issue=1 |pages=57–80 |doi=10.1093/hwj/17.1.57 |jstor=4288545}}
* {{cite journal |last=Hain |first=Peter |date=July–August 2000 |url=https://www.chartist.org.uk/articles/britpol/july_hain.html |title=Rediscovering our libertarian roots |journal=Chartist |archive-url=https://web.archive.org/web/20130621010116/https://www.chartist.org.uk/articles/britpol/july_hain.html |archive-date=21 June 2013}}
* {{cite journal |last=Haro |first=Lea |year=2011 |title=Entering a Theoretical Void: The Theory of Social Fascism and Stalinism in the German Communist Party |journal=Critique |volume=39 |issue=4 |pages=563–582 |doi=10.1080/03017605.2011.621248 |s2cid=146848013}}
* {{cite journal |last=Heilbroner |first=Robert L. |date=Winter 1991 |url=https://www.dissentmagazine.org/article/from-sweden-to-socialism-social-democracy-symposium |title=From Sweden to Socialism: A Small Symposium on Big Questions |journal=Dissident |others=Barkan, Joanne; Brand, Horst; Cohen, Mitchell; Coser, Lewis; Denitch, Bogdan; Fehèr, Ferenc; Heller, Agnès; Horvat, Branko; Tyler, Gus |pages=96–110 |access-date=14 April 2020}}
* {{cite journal |last=Hicks |first=Alexander |year=1988 |title=Social Democratic Corporatism and Economic Growth |journal=The Journal of Politics |publisher=[[University of Chicago Press]] |volume=50 |issue=3 |pages=677–704 |issn=0022-3816 |jstor=2131463 |doi=10.2307/2131463 |s2cid=154785976}}
* {{cite journal |last=Kotz |first=David M. |date=4 May 2009 |url=http://people.umass.edu/dmkotz/Fin_Cr_and_NL_08_12.pdf |title=The Financial and Economic Crisis of 2008: A Systemic Crisis of Neoliberal Capitalism |journal=Review of Radical Political Economics |volume=41 |issue=3 |pages=305–317 |doi=10.1177/0486613409335093 |s2cid=154726132 |doi-access=free}}
* {{cite journal |last=Lavelle |first=Ashley |title=Social Democrats and Neo-Liberalism: A Case Study of the Australian Labor Party |journal=Political Studies |date=1 December 2005 |volume=53 |issue=4 |pages=753–771 |doi=10.1111/j.1467-9248.2005.00555.x |s2cid=144842245}}
* {{cite journal |last=Medearis |first=John |year=1997 |title=Schumpeter, the New Deal, and Democracy |journal=American Political Science Review |volume=91 |issue=4 |pages=819–832 |doi=10.2307/2952166 |jstor=2952166 |s2cid=144892143}}
* {{cite journal |last=Patnaik |first=Prabhat |date=May–June 2010 |title=Socialism or Reformism? |journal=[[Social Scientist]] |volume=38 |issue=5/6 |pages=3–21 |jstor=27866707}}
* {{cite journal |last=Pierson |first=Chris |year=2005 |title=Lost property: What the Third Way lacks |url=https://www.academia.edu/3423326 |journal=[[Journal of Political Ideologies]] |volume=10 |issue=2 |pages=145–163 |doi=10.1080/13569310500097265 |s2cid=144916176}}
* {{cite journal |last=Poulantzas |first=Nicos |date=May–June 1978 |url=https://newleftreview.org/issues/I109/articles/nicos-poulantzas-towards-a-democratic-socialism |title=Towards a Democratic Socialism |journal=New Left Review |volume=I |issue=109}}
* {{cite journal |author=[[Socialist Party of Great Britain]] |date=January 1958 |url=http://www.worldsocialism.org/spgb/socialist-standard/1950s/1958/no-641-january-1958/managerial-society-part-three-—-fabian-version |title=The Managerial Society Part Three — Fabian Version |journal=Socialist Standard |publisher=[[Socialist Party of Great Britain]] |issue=641 |access-date=7 March 2021 |archive-date=3 March 2016 |archive-url=https://web.archive.org/web/20160303232840/http://www.worldsocialism.org/spgb/socialist-standard/1950s/1958/no-641-january-1958/managerial-society-part-three-%E2%80%94-fabian-version |url-status=dead}}
* {{cite journal |author=[[Socialist Party of Great Britain]] |date=March 2002 |url=https://www.worldsocialism.org/spgb/socialist-standard/2002/2000s/no-1171-march-2002/reformism-or-socialism/ |title=Reformism – or socialism? |journal=Socialist Standard |publisher=[[Socialist Party of Great Britain]] |issue=1171 |access-date=31 January 2020}}
* {{cite journal |last1=Sullivan |first1=Dylan |last2=Hickel |first2=Jason |author2-link=Jason Hickel |date=2023 |title=Capitalism and extreme poverty: A global analysis of real wages, human height, and mortality since the long 16th century |url= |journal=[[World Development (journal)|World Development]] |volume=161 |issue= |page=106026 |doi=10.1016/j.worlddev.2022.106026 |s2cid=252315733 |access-date=}}
* {{cite journal |last=Veggel |first=Noralv |date=November 2014 |title=The Nordic Model—Its Arrival and Decline |journal=Global Journal of Management and Business Research: Administration and Management |volume=14 |issue=9 |pages=60–94 |doi=10.13140/2.1.1557.9848}}
* {{cite journal |last=Weisskopf |first=Thomas E. |year=1992 |url=https://deepblue.lib.umich.edu/bitstream/2027.42/68447/2/10.1177_048661349202400302.pdf |title=Toward the Socialism of the Future, in the Wake of the Demise of the Socialism of the Past |journal=Review of Radical Political Economics |volume=24 |issue=3–4 |pages=1–28 |doi=10.1177/048661349202400302 |issn=0486-6134 |hdl=2027.42/68447 |s2cid=20456552 |hdl-access=free}}
{{refend}}
====News====
{{refbegin|30em|indent=yes}}
* {{cite news |last=Ackerman |first=Seth |date=19 June 2019 |url=https://jacobinmag.com/2019/06/new-deal-socialism-bernie-sanders-democratic-primary |title=Why Bernie Talks About the New Deal |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=15 November 2019}}
* {{cite news |date=20 July 2018 |url=https://www.nbcnews.com/politics/elections/democratic-socialism-hits-heartland-ocasio-cortez-sanders-campaign-deep-red-n893076 |title=Democratic socialism hits the heartland: Ocasio-Cortez, Sanders to campaign in deep-red Kansas |work=[[NBC News]] |agency=[[Associated Press]] |access-date=14 May 2019 |ref={{harvid|Associated Press|2018}} }}
* {{cite news |last=Astor |first=Maggie |date=12 June 2019 |url=https://www.nytimes.com/2019/06/12/us/politics/democratic-socialism-facts-history.html |archive-url=https://web.archive.org/web/20190612170048/https://www.nytimes.com/2019/06/12/us/politics/democratic-socialism-facts-history.html |archive-date=12 June 2019 |url-access=subscription |url-status=live |title=What Is Democratic Socialism? Whose Version Are We Talking About? |newspaper=[[The New York Times]] |access-date=10 February 2020}}
* {{cite news |editor-last=Barrett |editor-first=William |date=1 April 1978 |url=https://www.commentarymagazine.com/articles/capitalism-socialism-and-democracy/ |title=Capitalism, Socialism, and Democracy: A Symposium |newspaper=Commentary |access-date=12 March 2020}}
* {{cite news |last=Barro |first=Josh |date=20 October 2015 |url=https://www.nytimes.com/2015/10/20/upshot/bernie-sanders-democratic-socialist-capitalist.html |archive-url=https://web.archive.org/web/20151020085134/http://www.nytimes.com/2015/10/20/upshot/bernie-sanders-democratic-socialist-capitalist.html |archive-date=2015-10-20 |url-access=subscription |url-status=live |title=Bernie Sanders, Democratic Socialist Capitalist |newspaper=[[The New York Times]] |access-date=26 March 2019}}
* {{cite news |last=Benson |first=Thor |date=30 April 2015 |url=https://newrepublic.com/article/121680/bernie-sanders-democratic-socialist-not-just-socialist |title=Stop Calling Bernie Sanders a Socialist |newspaper=[[The New Republic]] |access-date=14 April 2020}}
* {{cite news |last=Berman |first=Sheri |date=15 January 2020 |url=https://foreignpolicy.com/2020/01/15/social-democracy-save-world-again-socialism/ |title=Can Social Democrats Save the World (Again)? |website=[[Foreign Policy]] |access-date=10 February 2020}}
* {{cite news |last=Blanc |first=Eric |date=2 April 2019 |url=https://www.jacobinmag.com/2019/04/karl-kautsky-democratic-socialism-elections-rupture |title=Why Kautsky Was Right (and Why You Should Care) |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}}
* {{cite news |last=Boissoneault |first=Lorraine |date=14 July 2017 |url=https://www.smithsonianmag.com/history/bismarck-tried-end-socialisms-grip-offering-government-healthcare-180964064/ |title=Bismarck Tried to End Socialism's Grip—By Offering Government Healthcare |newspaper=[[Smithsonian]] |access-date=30 January 2020}}
* {{cite news |last=Brown |first=Andrew |date=12 September 2014 |url=https://www.theguardian.com/commentisfree/2014/sep/12/europe-happiest-progressives-conservatives-social-democracies-wellbeing-poll |title=Who are Europe's happiest people – progressives or conservatives? |newspaper=[[The Guardian]] |access-date=20 October 2014}}
* {{cite news |last=Brown |first=Craig |date=11 May 2009 |url=https://www.commondreams.org/further/2009/05/11/worlds-happiest-countries-social-democracies |title=World's Happiest Countries? Social Democracies |website=Common Dreams |archive-url=https://web.archive.org/web/20141020154608/https://www.commondreams.org/further/2009/05/11/worlds-happiest-countries-social-democracies |access-date=11 November 2021 |archive-date=20 October 2014}}
* {{cite magazine |last=Cassidy |first=John |date=18 June 2019 |url=https://www.newyorker.com/news/our-columnists/why-socialism-is-back |title=Why Socialism Is Back |magazine=[[The New Yorker]] |access-date=14 April 2020}}
* {{cite news |author=[[CNBC]] |url=https://www.cnbc.com/2009/09/14/the-financial-crisis-this-dayone-year-ago-sept-15-2008.html |title=The Financial Crisis: This Day—One Year Ago, Sept. 15, 2008 |date=14 September 2009 |access-date=26 October 2021}}
* {{cite news |last=Conley |first=Julia |date=20 March 2019 |url=https://www.commondreams.org/news/2019/03/20/social-democratic-nations-rank-happiest-global-index-again-us-ranking-falls-again |title=Social Democratic Nations Rank Happiest on Global Index (Again). US Ranking Falls (Again) |agency=Common Dreams |access-date=14 April 2020}}
* {{cite news |last=Eaton |first=George |date=10 August 2017 |url=https://www.newstatesman.com/politics/uk/2017/08/tony-blair-isnt-only-new-labour-figure-far-left-past |title=Tony Blair isn't the only New Labour figure with a far-left past |newspaper=[[New Statesman]] |access-date=23 February 2020}}
* {{cite news |last=Eaton |first=George |date=8 February 2018 |url=https://www.newstatesman.com/politics/staggers/2018/02/germany-s-spd-may-have-signed-its-death-warrant |title=Germany's SPD may have signed its death warrant |newspaper=[[New Statesman]] |access-date=23 February 2020}}
* {{cite news |author=The Economist |date=31 May 2010 |url=https://www.economist.com/books-and-arts/2010/03/31/a-plea-for-liberalism |title=Social democracy – A plea for liberalism |newspaper=[[The Economist]] |access-date=29 April 2020}}
* {{cite news |author=The Economist |date=30 June 2018 |url=https://www.economist.com/britain/2018/06/30/why-labour-is-obsessed-with-greek-politics |title=Why Labour is obsessed with Greek politics |newspaper=[[The Economist]] |access-date=23 February 2020}}
* {{cite news |author=The Economist |date=21 January 2020 |url=https://www.eiu.com/topic/democracy-index |title=Democracy Index 2019 |newspaper=[[The Economist]] |publisher=Economist Intelligence Unit |access-date=4 February 2020}}
* {{cite news |last=Faiola |first=Anthony |date=11 February 2019 |url=https://www.washingtonpost.com/world/the_americas/in-socialist-venezuela-a-crisis-of-faith-not-in-just-their-leader-but-their-economic-model/2019/02/11/ea67849e-2b33-11e9-906e-9d55b6451eb4_story.html |title=In socialist Venezuela, a crisis of faith not in just their leader but their economic model |newspaper=[[The Washington Post]] |access-date=23 February 2020}}
* {{cite news |last1=Foster |first1=John Bellamy |author1-link=John Bellamy Foster |last2=Tsakiroglou |first2=Tassos |date=18 January 2014 |url=https://mronline.org/2014/01/18/foster180114-html-2/ |title=The Death of Social Democracy in the Age of Global Monopoly-Finance Capital": An Interview with John Bellamy Foster |newspaper=Monthly Review |publisher=MR Online |access-date=29 April 2020}}
* {{cite news |last=Frizell |first=Sam |date=20 February 2019 |url=https://time.com/4121126/bernie-sanders-democratic-socialism/ |title=Here's How Bernie Sanders Explained Democratic Socialism |newspaper=[[Time (magazine)|Time]] |access-date=1 March 2020}}
* {{cite news |last=Gage |first=Beverly |date=17 July 2018 |url=https://www.nytimes.com/2018/07/17/magazine/america-can-never-sort-out-whether-socialism-is-marginal-or-rising.html |archive-url=https://web.archive.org/web/20180717140954/https://www.nytimes.com/2018/07/17/magazine/america-can-never-sort-out-whether-socialism-is-marginal-or-rising.html |archive-date=2018-07-17 |url-access=subscription |url-status=live |title=America Can Never Sort Out Whether 'Socialism' Is Marginal or Rising |newspaper=[[The New York Times]] |access-date=17 February 2020}}
* {{cite news |last=Golshan |first=Tara |date=12 June 2019 |url=https://www.vox.com/policy-and-politics/2019/6/12/18661708/bernie-sanders-definition-democratic-socialism-explained |title=Bernie Sanders's definition of democratic socialism, explained |website=[[Vox (website)|Vox]] |access-date=1 March 2020}}
* {{cite news |last=Gram |first=David |date=11 May 2015 |url=https://apnews.com/572f29cef5f3431398aeb279f5aa2301 |title=Bernie Sanders has had consistent message for 4 decades |agency=[[Associated Press]] |newspaper=[[The Seattle Times]] |issn=0745-9696 |access-date=14 April 2020}}
* {{cite news |last=Gregoire |first=Carolyn |date=10 September 2013 |url=https://www.huffpost.com/entry/happiest-countries_n_3894274?guccounter=1 |title=The Happiest Countries In The World |website=[[The Huffington Post]] |access-date=1 October 2013}}
* {{cite news |author=[[The Guardian]] |date=16 June 2006 |url=https://www.theguardian.com/politics/2006/jun/16/past.labour |title='Dear Michael, I'm Tony Blair' |newspaper=[[The Guardian]] |access-date=15 March 2020}}
* {{cite news |last=Haltiwanger |first=John |date=11 February 2020 |url=https://www.businessinsider.com/difference-between-socialist-and-democratic-socialist-2018-6?IR=T |title=Here's the difference between a 'socialist' and a 'democratic socialist' |newspaper=[[Business Insider]] |access-date=23 February 2020}}
* {{cite news |last=Huges |first=Laura |date=24 February 2016 |url=https://www.telegraph.co.uk/news/politics/tony-blair/12171297/Tony-Blair-admits-he-cant-understand-the-popularity-of-Jeremy-Corbyn-and-Bernie-Sanders.html |archive-url=https://ghostarchive.org/archive/20220111/https://www.telegraph.co.uk/news/politics/tony-blair/12171297/Tony-Blair-admits-he-cant-understand-the-popularity-of-Jeremy-Corbyn-and-Bernie-Sanders.html |archive-date=11 January 2022 |url-access=subscription |url-status=live |title=Tony Blair admits he can't understand the popularity of Jeremy Corbyn and Bernie Sanders |newspaper=[[The Daily Telegraph]] |access-date=14 May 2019}}{{cbignore}}
* {{cite news |last=Jackson |first=Samuel |date=6 January 2012 |url=https://www.economist.com/johnson/2012/01/06/the-failure-of-american-political-speech |title=The failure of American political speech |newspaper=[[The Economist]] |access-date=15 June 2019}}
* {{cite news |last=Kenworthy |first=Lane |date=1 January 2014 |url=https://www.foreignaffairs.com/articles/united-states/2013-12-06/americas-social-democratic-future| title=America's Social Democratic Future: The Arc of Policy Is Long but Bends Toward Justice |newspaper=[[Foreign Affairs]] |issue=January/February 2014 |access-date=29 April 2020}}
* {{cite news |last=Krugman |first=Paul |date=13 February 2020 |url=https://www.nytimes.com/2020/02/13/opinion/bernie-sanders-socialism.html |archive-url=https://web.archive.org/web/20200213203202/https://www.nytimes.com/2020/02/13/opinion/bernie-sanders-socialism.html |archive-date=13 February 2020 |url-access=subscription |url-status=live |title=Bernie Sanders Isn't a Socialist |newspaper=[[The New York Times]] |access-date=23 February 2020}}
* {{cite news |last=Kvitrud |first=Erlend |date=29 June 2019 |url=https://foreignpolicy.com/2019/06/29/what-the-right-gets-wrong-about-socialism/ |title=What the Right Gets Wrong About Socialism |newspaper=[[Foreign Policy]] |access-date=14 April 2020}}
* {{cite news |last=Leibovich |first=Mark |date=21 January 2007 |url=https://www.nytimes.com/2007/01/21/magazine/21Sanders.t.html?pagewanted=all&_r=0 |title=The Socialist Senator |newspaper=[[The New York Times]] |access-date=15 November 2019}}
* {{cite news |last=Levitz |first=Eric |date=23 April 2019 |url=https://nymag.com/intelligencer/2019/04/bernie-sanders-democratic-socialism-new-deal-liberalism-cnn-town-hall.html |title=Bernie Sanders: 'Democratic Socialist' Is Just a Synonym for New Deal Liberal |newspaper=[[New York (magazine)|New York]] |access-date=24 January 2020 |ref={{harvid|Levitz, April 2019}} }}
* {{cite news |last=Lowen |first=Mark |date=5 April 2013|url=https://www.bbc.co.uk/news/world-europe-22025714 |title=How Greece's once-mighty Pasok party fell from grace |agency=[[BBC News]] |access-date=23 February 2020}}
* {{cite news |author1=Ludwigshafen |author2=Piraeus |author3=Valletta |date=2 April 2016 |url=https://www.economist.com/news/briefing/21695887-centre-left-sharp-decline-across-europe-rose-thou-art-sick |title=Rose thou art sick |newspaper=[[The Economist]] |access-date=23 February 2020}}
* {{cite news |last=McCarthy |first=Michael |date=7 August 2018 |url=https://jacobinmag.com/2018/08/democratic-socialism-social-democracy-nordic-countries |title=Democratic Socialism Isn't Social Democracy |work=[[Jacobin (magazine)|Jacobin]] |access-date=26 October 2021}}
* {{cite news |last=Muldoon |first=James |date=5 January 2019|url=https://www.jacobinmag.com/2019/01/karl-kautsky-german-revolution-democracy-socialism |title=Reclaiming the Best of Karl Kautsky |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}}
* {{cite news |last=Murphy |first=Patricia |date=13 April 2017 |url=https://www.thedailybeast.com/real-socialists-think-bernies-a-sellout |title=Real Socialists Think Bernie's a Sellout |website=[[The Daily Beast]] |access-date=14 April 2020}}
* {{cite news |last=Nagin |first=Rick |date=20 August 2018 |url=https://www.peoplesworld.org/article/the-difference-between-socialism-and-reformism/ |title=The difference between socialism and reformism |newspaper=People's World |access-date=31 January 2020}}
* {{cite news |last=Oshinsky |first=David |date=24 July 1988 |url=https://www.nytimes.com/1988/07/24/books/it-wasn-t-easy-being-a-leftist.html |title=It Wasn't Easy Being a Leftist |newspaper=[[The New York Times]] |access-date=15 November 2019}}
* {{cite news |last=Prokop |first=Andrew |date=12 October 2015 |url=https://www.vox.com/2015/7/28/18093566/bernie-sanders-issues-policies |title=Bernie Sanders 2016: a primer |website=[[Vox (website)|Vox]] |access-date=1 March 2020}}
* {{cite news |last=Post |first=Charlie |date=9 March 2019 |url=https://www.jacobinmag.com/2019/03/karl-kautsky-socialist-strategy-german-revolution |title=The "Best" of Karl Kautsky Isn't Good Enough |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=20 June 2019}}
* {{cite news |last=Radcliff |first=Benjamin |date=25 September 2013 |url=http://edition.cnn.com/2013/09/25/opinion/radcliff-politics-of-happiness/ |title=Western nations with social safety net happier |agency=[[CNN]] |access-date=20 October 2014}}
* {{cite news |agency=[[Reuters]] |date=2 August 2018|url=https://www.reuters.com/article/us-spain-politics/spains-socialists-seen-easily-winning-election-new-poll-shows-idUSKBN1KN1FW |title=Spain's Socialists seen easily winning election, new poll shows |work=[[Reuters]] |access-date=4 August 2018}}
* {{cite news |last=Sacks |first=Adam J. |date=5 December 2019 |title=Why the Early German Socialists Opposed the World's First Modern Welfare State |newspaper=[[Jacobin (magazine)|Jacobin]] |url=https://jacobinmag.com/2019/12/otto-von-bismarck-germany-social-democratic-party-spd |access-date=10 September 2020}}
* {{cite news |author=[[Schweizer Radio und Fernsehen]] |date=7 April 2010 |url=http://www.srf.ch/sendungen/rendez-vous/ueberwindung-des-kapitalismus-bleibt-sp-fernziel |title=Überwindung des Kapitalismus bleibt SP-Fernziel |trans-title=Overcoming capitalism remains SP's long-term goal |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020}}
* {{cite web |author=[[Schweizer Radio und Fernsehen]] |date=19 November 2016 |url=http://www.srf.ch/news/schweiz/positionspapier-sorgt-fuer-rote-koepfe-bei-genossen |title=Positionspapier sorgt für rote Köpfe bei Genossen |trans-title=Position paper causes red heads among comrades |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020 |ref={{harvid|Schweizer Radio und Fernsehen, November 2016}}}}
* {{cite web |author=[[Schweizer Radio und Fernsehen]] |date=3 December 2016 |url=http://www.srf.ch/news/schweiz/sp-will-die-ueberwindung-des-kapitalismus-konkretisieren |title=SP will die "Überwindung des Kapitalismus" konkretisieren |trans-title=SP wants to put the "overcoming of capitalism" in concrete terms |agency=[[Schweizer Radio und Fernsehen]] |language=de |access-date=30 April 2020 |ref={{harvid|Schweizer Radio und Fernsehen, December 2016}}}}
* {{cite news |last=Sitaraman |first=Ganesh |date=23 December 2019 |url=https://newrepublic.com/article/155970/collapse-neoliberalism |title=The Collapse of Neoliberalism |newspaper=[[The New Republic]] |access-date=10 April 2020}}
* {{cite news |last=Stephens |first=Bret |date=25 January 2019 |url=https://www.nytimes.com/2019/01/25/opinion/venezuela-maduro-socialism-government.html |archive-url=https://web.archive.org/web/20190126044835/https://www.nytimes.com/2019/01/25/opinion/venezuela-maduro-socialism-government.html |archive-date=26 January 2019 |url-access=subscription |url-status=live |title=Yes, Venezuela Is a Socialist Catastrophe |newspaper=[[The New York Times]] |access-date=23 February 2020}}
* {{cite news |last=Sunkara |first=Bhaskar |date=15 January 2020 |url=https://jacobinmag.com/2020/01/social-democracy-democratic-socialism-capital-unions-strategy |title=The Long Shot of Democratic Socialism Is Our Only Shot |newspaper=[[Jacobin (magazine)|Jacobin]] |access-date=14 February 2020}}
* {{cite news |last=Tarnoff |first=Ben |date=12 July 2017 |url=https://www.theguardian.com/media/2017/jul/12/social-media-socialism-jeremy-corbyn-bernie-sanders |title=How social media saved socialism |newspaper=[[The Guardian]] |access-date=14 May 2019}}
* {{cite news |last=Tupy |first=Marian |date=1 March 2016 |url=https://www.theatlantic.com/international/archive/2016/03/bernie-sanders-democratic-socialism/471630/ |title=Bernie Is Not a Socialist and America Is Not Capitalist |newspaper=[[The Atlantic]] |access-date=26 March 2019}}
* {{cite news |last=Watson |first=Kathryn |date=7 March 2019 |url=https://www.cbsnews.com/news/what-does-socialism-mean-and-how-is-it-shaping-2020/ |title=Defining socialism: What it means and how it's shaping 2020 |agency=[[CBS News]] |access-date=26 October 2021}}
* {{cite news |last=Younge |first=Gary |date=22 May 2017 |url=https://www.theguardian.com/commentisfree/2017/may/22/jeremy-corbyn-labour-anti-austerity-manifesto |title=Jeremy Corbyn has defied his critics to become Labour's best hope of survival |newspaper=[[The Guardian]] |access-date=23 February 2020}}
* {{cite news |last=Zimmerman |first=Klaus |date=19 February 2010|url=https://www.nytimes.com/2010/02/20/opinion/20iht-edzimmermann.html |archive-url=https://web.archive.org/web/20100224075910/http://www.nytimes.com/2010/02/20/opinion/20iht-edzimmermann.html |archive-date=24 February 2010 |url-access=subscription |url-status=live |title=Social Democracy in America?|newspaper=[[The Atlantic]] |access-date=1 February 2017}}
{{refend}}
====Speeches====
{{refbegin|30em|indent=yes}}
* {{cite speech |last=Bismarck |first=Otto |author-link=Otto von Bismarck |date=15 March 1884 |url=http://germanhistorydocs.ghi-dc.org/sub_document.cfm?document_id=1809 |title=Reichstag Speech on the Law for Workers' Compensation |location=Berlin |access-date=23 February 2020}}
* {{cite speech |last=Sanders |first=Bernie |author-link=Bernie Sanders |date=19 November 2015 |url=https://www.vox.com/2015/11/19/9762028/bernie-sanders-democratic-socialism |title=Democratic Socialism in the United States |location=Georgetown University, Washington, D.C. |access-date=1 March 2020 |via=[[Vox (website)|Vox]]}}
{{refend}}
====Websites====
{{refbegin|30em|indent=yes}}
* {{cite web |last=Abramowitz |first=Michael J. |author-link=Michael J. Abramowitz |date=16 January 2018 |url=https://freedomhouse.org/report/freedom-world/freedom-world-2018 |title=Freedom in the World 2018 — Democracy in Crisis |publisher=Freedom House |access-date=4 February 2020}}
* {{cite web |last=Abramowitz |first=Michael J. |author-link=Michael J. Abramowitz |date=5 February 2019 |url=https://freedomhouse.org/report/freedom-world/2019/democracy-retreat |title=Freedom in the World 2019 — Democracy in Retreat |publisher=Freedom House |access-date=12 March 2020}}
* {{cite web |last1=Aghekyan |first1=Elen |last2=Bhatia |first2=Rukmani |last3=Dunham |first3=Jennifer |last4=O'Toole |first4=Shannon |last5=Puddington |first5=Arch |last6=Repucci |first6=Sarah |last7=Roylance |first7=Tyler |last8=Tucker |first8=Vanessa |date=16 January 2018 |url=https://freedomhouse.org/report/freedom-world-2018-table-country-scores |title=Table of Countries Score |publisher=Freedom House |archive-url=https://web.archive.org/web/20200219094235/https://freedomhouse.org/report/freedom-world-2018-table-country-scores |archive-date=19 February 2020 |access-date=4 February 2020}}
* {{cite web |last=Amadeo |first=Kimberly |date=14 December 2019 |url=https://www.thebalance.com/what-caused-2008-global-financial-crisis-3306176 |title=What Caused 2008 Global Financial Crisis |website=The Balance |access-date=14 April 2020}}
* {{cite web |last1=Dionne|first1=E. J.|last2=Galtson|first2=William|date=13 May 2019|url=https://www.brookings.edu/blog/fixgov/2019/05/13/socialism-a-short-primer/|title=Socialism: A Short Primer |publisher=[[Brookings Institution]] |access-date=14 April 2020}}
* {{cite web |last=Eskow |first=Richard |date=15 October 2014 |url=http://ourfuture.org/20141015/new-study-finds-big-government-makes-people-happy-free-markets-dont |title=New Study Finds Big Government Makes People Happy, "Free Markets" Don't |website=Our Future |publisher=People's Action |access-date=20 October 2014}}
* {{cite web |author=[[The Heritage Foundation]] |date=17 February 2017 |url=https://www.heritage.org/international-economies/impact/2017-index-economic-freedom-us-score-declines-further-world-average |title=2017 Index of Economic Freedom: U.S. Score Declines Further as World Average Increases |publisher=[[The Heritage Foundation]] |access-date=4 February 2020}}
* {{cite web |last1=Kim |first1=Anthony B. |last2=Miller |first2=Terry |date=13 December 2016 |url=https://www.heritage.org/index/pdf/2017/book/index_2017.pdf |title=2017 |work=Index of Economic Freedom |publisher=[[The Heritage Foundation]] |access-date=4 February 2020}}
* {{cite web |author=The [[National Archives]] |url=http://www.learningcurve.gov.uk/britain1906to1918/g1/gallery1.htm |title=Liberal Welfare Reforms 1906–11 |website=Learning Curve |publisher=The [[National Archives]] |archive-url=https://web.archive.org/web/20120202153903/http://www.nationalarchives.gov.uk/education/britain1906to1918/g1/gallery1.htm|archive-date=2 February 2012 |access-date=24 January 2010 |ref={{harvid|The National Archive (Liberal Welfare Reforms 1906–11)}} }}
* {{cite web |author=[[New Democratic Party of Canada]] |date=April 2013 |url=http://xfer.ndp.ca/2013/constitution/2013_CONSTITUTION_E.pdf |title=Constitution of the New Democratic Party of Canada |publisher=[[New Democratic Party of Canada]] |access-date=9 February 2020}}
* {{cite web |author=[[New Democratic Party of Canada]] |date=February 2018 |url=https://xfer.ndp.ca/2018/Documents/2018-CONSTITUTION.pdf |title=Constitution of the New Democratic Party of Canada |publisher=[[New Democratic Party of Canada]] |access-date=9 February 2020}}
* {{cite web |last=Pruitt |first=Sarah |date=22 October 2019 |url=https://www.history.com/news/socialism-communism-differences |title=How Are Socialism and Communism Different? |publisher=History |access-date=10 February 2020}}
* {{cite web |last=Qiu |first=Linda |title=Bernie Sanders — socialist or democratic socialist? |website=[[PolitiFact]] |date=26 August 2015 |url=https://www.politifact.com/truth-o-meter/article/2015/aug/26/bernie-sanders-socialist-or-democratic-socialist/ |access-date=26 March 2019}}
* {{cite web |author=[[Reporters Without Borders]] |date=18 April 2019 |url=https://rsf.org/en/ranking |title=2019 World Press Freedom Index |publisher=[[Reporters Without Borders]] |access-date=4 February 2020 |ref={{harvid|Reporters Without Borders 2019 (table)}}}}
* {{cite web |author=[[Reporters Without Borders]] |date=18 April 2019 |url=https://rsf.org/en/2019-world-press-freedom-index-cycle-fear |title=2019 World Press Freedom Index – A cycle of fear |publisher=[[Reporters Without Borders]] |access-date=4 February 2020 |ref={{harvid|Reporters Without Borders 2019 (analysis)}}}}
* {{cite web |last=Repucci |first=Sarah |date=4 March 2020 |url=https://freedomhouse.org/report/freedom-world/2020/leaderless-struggle-democracy |title=Freedom in the World 2020 — A Leaderless Struggle for Democracy |publisher=Freedom House |access-date=12 March 2020}}
* {{cite web |last=Sanders |first=Bernie |author-link=Bernie Sanders |date=28 May 2019 |url=https://www.sanders.senate.gov/press-releases/legislative-package-introduced-to-encourage-employee-owned-companies-3/ |title=Legislative Package Introduced to Encourage Employee-Owned Companies |publisher=Senator Bernie Sanders of Vermont |access-date=4 February 2020}}
* {{cite web |author=Socialist International |date=3 July 1951 |url=http://www.socialistinternational.org/viewArticle.cfm?ArticleID=39 |title=Aims and Tasks of Democratic Socialism: Declaration of the Socialist International |publisher=Socialist International |archive-url=https://web.archive.org/web/20190122222330/https://www.socialistinternational.org/viewArticle.cfm?ArticleID=39 |archive-date=22 January 2019 |access-date=22 January 2019}}
* {{cite web |author=Transparency International |date=23 January 2020 |url=https://www.transparency.org/cpi2019|title=Corruption Perceptions Index 2019 |publisher=Transparency International |access-date=4 February 2020 |ref={{harvid|Transparency International 2020 (table)}}}}
* {{cite web |author=Transparency International |date=23 January 2020|url=https://www.transparency.org/en/press/2019-CPI-efforts-stagnate-in-G7 |title=2019 Corruption Perceptions Index shows anti-corruption efforts stagnating in G7 countries |publisher=Transparency International |access-date=4 February 2020 |ref={{harvid|Transparency International 2020 (analysis)}}}}
* {{cite web |last=Truman |first=Harry S. |author-link=Harry S. Truman |date=10 October 1952 |url=https://www.trumanlibrary.gov/library/public-papers/289/rear-platform-and-other-informal-remarks-new-york |title=Rear Platform and Other Informal Remarks in New York |publisher=Harry S. Truman Presidential Library and Museum |access-date=10 February 2020}}
* {{cite web |author=Vision of Humanity |date=June 2019 |url=http://visionofhumanity.org/app/uploads/2019/06/GPI-2019-web003.pdf |title=Global Peace Index 2019 |website=Vision of Humanity |publisher=Institute for Economics & Peace |access-date=4 February 2020 |archive-date=27 August 2019 |archive-url=https://web.archive.org/web/20190827155045/http://visionofhumanity.org/app/uploads/2019/06/GPI-2019-web003.pdf|url-status=dead}}
* {{cite web |last=Ypi |first=Lea |date=22 November 2018 |url=https://blogs.lse.ac.uk/politicsandpolicy/no-left-wing-case-for-brexit/ |title=There is no left-wing case for Brexit: 21st century socialism requires transnational organization |website=British Politics and Policy |publisher=[[London School of Economics]] |access-date=26 October 2021}}
{{refend}}
==Further reading==
{{Library resources box}}
{{Refbegin|40em|indent=yes}}
* {{cite book |editor1-last=Cronin |editor1-first=James E. |editor2-last=Ross |editor2-first=George W. |editor3-last=Shoch |editor3-first=James |year=2011 |title=What's Left of the Left: Democrats and Social Democrats in Challenging Times |location=Durham, North Carolina |publisher=[[Duke University Press]] |isbn=978-0-8223-5079-8 |url=https://archive.org/details/whatsleftofleftd00unse |ref=none}}
* {{cite book |last=Draper |first=Theodore |year=1966 |chapter=The Historic Left |title=The Roots of American Communism |publisher=[[Transaction Publishers]] |isbn=978-1-4128-3880-1 |ref=none}}
* {{cite book |editor1-last=Evans |editor1-first=Bryan |editor2-last=Schmidt |editor2-first=Ingo |year=2012 |title=Social Democracy After the Cold War |location=Edmonton, Alberta |publisher=[[Athabasca University Press]] |isbn=978-1-926836-87-4 |url=https://archive.org/details/socialdemocracya0000unse |ref=none}}
* {{cite book |last=Kenworthy |first=Lane |year=2014 |title=Social Democratic America |location=New York |publisher=[[Oxford University Press]] |isbn=978-0-19-932251-0 |ref=none}}
* {{cite book |last=Lavelle |first=Ashley |year=2008 |title=The Death of Social Democracy: Political Consequences in the 21st Century |location=Aldershot, England |publisher=[[Ashgate Publishing]] |isbn=978-0-7546-7014-8 |ref=none}}
* {{cite web |last=Martell |first=Luke |year=2011 |url=http://www.policy-network.net/pno_detail.aspx?ID=4089 |title=Conflicts in Cosmopolitanism and the Global Left |location=London |publisher=Policy Network |access-date=3 August 2016 |archive-date=4 February 2018 |archive-url=https://web.archive.org/web/20180204020826/http://www.policy-network.net/pno_detail.aspx?ID=4089 |url-status=dead |ref=none}}
* Minehan, Philip B. ''Anti-Leftist Politics in Modern World History: Avoiding "Socialism" at All Costs'' (Bloomsbury Academic, 2022) [http://www.h-net.org/reviews/showrev.php?id=58641 online scholarly review]
* {{cite journal |last=Sachs |first=Jeffrey D. |year=2006 |url=http://www.sciam.com/article.cfm?chanID=sa006&articleID=000AF3D5-6DC9-152E-A9F183414B7F0000&colID=31 |journal=[[Scientific American]] |title=The Social Welfare State, beyond Ideology |volume=295 |issue=5 |page=42 |location=New York |issn=0036-8733 |archive-url=https://web.archive.org/web/20071012141326/http://www.sciam.com/article.cfm?chanID=sa006&articleID=000AF3D5-6DC9-152E-A9F183414B7F0000&colID=31 |archive-date=12 October 2007 |access-date=2 August 2016 |ref=none}}
* {{cite web |last1=Thorsen |first1=Dag Einar |last2=Brandal |first2=Nik |last3=Bratberg |first3=Øivind |year=2013 |url=http://www.fabians.org.uk/utopia-sustained-the-nordic-model-of-social-democracy/ |title=Utopia Sustained: The Nordic Model of Social Democracy |location=London |publisher=[[Fabian Society]] |access-date=2 August 2016 |ref=none}}
{{Refend}}
==External links==
{{Sister project links|auto=1|wikt=social democracy|d=Q121254}}
*{{Britannica|551073}}
*{{cite web |url=http://www.misc-iecm.mcgill.ca/socdem/epaper.htm |title=Papers on the Future of Social Democracy in Canada |publisher=McGill Institute for the Study of Canada |archive-url=https://web.archive.org/web/20060412171332/http://www.misc-iecm.mcgill.ca/socdem/epaper.htm|archive-date=12 April 2006 |access-date=11 February 2020 |ref=none}}
*{{cite web |last=Shaw |first=Martin |year=1999 |url=http://users.sussex.ac.uk/~hafa3/socdem.htm |title=Social democracy in the unfinished global revolution |publisher=[[University of Sussex]] |access-date=11 February 2020 |ref=none}}
{{Social democracy}}
{{Socialism}}
{{Portal bar|Society|Socialism}}
{{Authority control}}
{{DEFAULTSORT:Social Democracy}}
[[Category:Social democracy]]
[[Category:Capitalist systems]]
[[Category:Centre-left politics]]
[[Category:Centrism]]
[[Category:Political philosophy]]
[[Category:Types of democracy]]
[[Category:Types of socialism]]
[[Category:Anti-capitalism]]
[[Category:Anti-Stalinist left]]
[[Category:Centre-left ideologies]]
[[Category:Democracy]]
[[Category:Democratic socialism]]
[[Category:Economic ideologies]]
[[Category:Ideologies of capitalism]]
[[Category:Economic progressivism]]
[[Category:Left-wing ideologies]]
[[Category:Liberal socialism]]
[[Category:Capitalism]]
[[Category:Anti-fascism]]
[[Category:Mixed economies]]
[[Category:Political-economic models]]
[[Category:Political ideologies]]
[[Category:Progressivism]]
[[Category:Social justice]]
[[Category:Social philosophy|Democracy]]
[[Category:Socialism]]
[[Category:Welfare economics]]
120431dc54c2e55c96c0bf5a6ee7e12e0e84f634
Template:Cite news
10
970
2131
2130
2023-10-01T10:48:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_news]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=news
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
d8c42e9ff15cc4f8c922db4f02cd5ea0ef1c14ee
Template:Cite web
10
971
2133
2132
2023-10-01T10:49:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_web]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=web
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
ea1b0f38afd9728a1cf9f2e3f540887a402fab8e
Template:Cite speech
10
972
2135
2134
2023-10-01T10:49:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_speech]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=speech
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
cf9cd1f1cc50d72b2e007ae130b09b98802fb607
Template:Use Oxford spelling
10
973
2137
2136
2023-10-01T10:49:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Use_Oxford_spelling]]
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{DMCA|Use Oxford spelling|from|{{{date|}}}}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Oxford spelling template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Use Oxford spelling|Oxford spelling template]] with unknown parameter "_VALUE_"|ignoreblank=y| cs1-dates | date }}<noinclude>{{Documentation}}</noinclude>
1eda85fc7798888a17dcf7b9c4cbf511134ce261
Adam Dressler
0
464
2138
1016
2023-10-01T11:41:52Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox officeholder
| name = Adam Dressler
| image = File:AdamDressler.png
| office = Führer of Germany
| order = 1st
| native_name = Adam Dressler
| native_name_lang = de
| alt = Portrait of Adam Dressler
| country = Das Deutsche Reich
| party = Valkistische Deutsche Volkspartei
| cabinet = [[Dressler's Cabinet]]
| allegiance = {{Unbulleted list|[[German Empire]]|[[Weimar Republic]]}}
| branch_label = Branch
| branch = {{Tree list}}
* [[Imperial German Army]]
** [[Bavarian Army]]
* ''[[Reichswehr]]''
{{Tree list/end}}
| serviceyears = 1914–1920
| rank = {{lang|de|[[Gefreiter]]}}
| unit = 16th Bavarian Reserve Regiment
| battles_label = Wars
| battles = {{Tree list}}
* [[World War I]]
** [[Western Front (World War I)|Western Front]]
*** [[First Battle of Ypres]]
*** [[Battle of the Somme]] {{WIA}}
*** [[Battle of Arras (1917)|Battle of Arras]]
*** [[Battle of Passchendaele]]
{{Tree list/end}}
| mawards = {{Unbulleted list|[[Iron Cross First Class]]|Iron Cross Second Class|[[Wound Badge]]}}
}}
'''Adam Dressler''' is a notable figure in Germany, whose political journey is marked by his military service, intellectual pursuits, and eventual rise to power within the Valkist movement. Born out of the chaos of post-World War I Germany, Dressler's ascent to political prominence was a complex interplay of military exploits, intellectual pursuits, and strategic alliances.
===Military Service and Intellectual Development===
In 1914, Dressler volunteered for the German Imperial Army and quickly rose to the rank of Lieutenant. His experiences during World War I profoundly shaped his worldview. Wounded multiple times and decorated with honors such as the Iron Cross, Pour le Merit, and the Ritterkreuz, Dressler's war diaries served as the foundation for his later writings. During his military service breaks, he immersed himself in philosophical works, delving into the writings of Nietzsche, Schopenhauer, and other prominent thinkers.
===Post-War Years and Involvement in Nationalist Circles===
After the war, Dressler's intellectual pursuits led him to dadaist circles, where he encountered the writings of Oswald Spengler. His own writings on World War I garnered significant attention, propelling him into the public eye. In 1922, he joined the Freikorps, becoming a key intermediary between different nationalist movements. His association with the Organisation Consul, founded by his friend Hermann Ehrhardt, marked a crucial period in Dressler's political evolution. Following Ehrhardt's death, Dressler assumed a leading role within the Organisation Consul, skillfully leveraging his connections to expand its reach.
===Formation of the Valkist Movement===
Dressler's imprisonment in 1923 did little to dampen his influence. Upon his release, he took charge of the semi-secret Bund Wiking, incorporating smaller Freikorps organizations into a disciplined paramilitary force loyal to him. Under Dressler's leadership, the Viking League emerged, marked by the adoption of the Valknut, a symbol associated with Viking warriors. Dressler's strategic acumen came to the fore as he united the Viking League with the larger Werewolf League, creating a powerful alliance with a detailed national-revolutionary agenda.
===Political Maneuvering and Path to Power===
Dressler's political ambitions gained momentum as he skillfully navigated the volatile German political landscape. In 1927, he merged various Völkisch movements and small parties into the Valkist German People Party (VGPP), which he led. Under his leadership, the VGPP incorporated Karl Otto Paetel's movement, strengthening its populist appeal.
The Valkists' popularity surged amid the economic challenges of the Great Depression. By 1930, Dressler's movement had become a significant political force, allying with agrarian movements and gaining considerable influence. Sensing the impending chaos in Germany, Dressler orchestrated strategic alliances, eventually forcing his way into power in 1933. With the support of the DNVP, Papen, and Schleicher, Dressler became the Chancellor in March, marking a pivotal moment in German politics.
Dressler's ascent to power was characterized by political maneuvering, strategic alliances, and a careful consolidation of his authority. His position as Führer und Reichskanzler solidified his control, laying the groundwork for a restructuring of the German Republic, albeit with opposition and internal tensions. Despite initial skepticism, Dressler's rule reshaped the political landscape, establishing him as a prominent figure in Germany's political history.
a06a6b917344b30b4ba462faa507ccc3532c9e3d
Greece
0
243
2139
944
2023-10-01T11:55:39Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name = Ἑλληνικὴ Δημοκρατία
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = [[Flag of Greece|National flag]]
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic Republic (1935).svg
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = [[Athens]]
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of Greece|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «[[Hymn to Liberty|Ύμνος εις την Ελευθερίαν]]»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = [[Greek language|Greek]] ([[Katharevousa]] had official status, while [[Demotic Greek|Demotic]] was popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| largest_city = capital
| languages = [[Greek language|Greek]]
| demonym = [[Greeks|Greek]], [[Greeks|Hellene]]
| leader1 = [[Pavlos Kountouriotis]]
| year_leader1 = 1924–1926
| leader2 = [[Theodoros Pangalos (general)|Theodoros Pangalos]]
| year_leader2 = 1926
| leader3 = [[Pavlos Kountouriotis]]
| year_leader3 = 1926–1929
| leader4 = [[Alexandros Zaimis]]
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = [[Prime Minister of Greece|Prime Minister]]
| leader_title1 = [[President of Greece|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = [[Prime Minister of Greece|Prime Minister]]
| legislature = [[Hellenic Parliament|Parliament]]
| house1 = [[Greek Senate|Senate]]
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = [[History of Greece|Establishment history]]
| established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST -->
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]])
| established_event2 = [[London Protocol (1830)|Recognised]]
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
e745a8f83cb40c3a4e8bfde557e51641497eb4d8
2141
2139
2023-10-01T12:09:06Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name = Ἑλληνικὴ Δημοκρατία
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = [[Flag of Greece|National flag]]
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic_Republic(1936).png
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = [[Athens]]
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of Greece|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «[[Hymn to Liberty|Ύμνος εις την Ελευθερίαν]]»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = [[Greek language|Greek]] ([[Katharevousa]] had official status, while [[Demotic Greek|Demotic]] was popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.34% [[Albabians]] | 9.47% [[Turks]] }}
| largest_city = capital
| languages = [[Greek language|Greek]]
| demonym = [[Greeks|Greek]], [[Greeks|Hellene]]
| leader1 = [[Pavlos Kountouriotis]]
| year_leader1 = 1924–1926
| leader2 = [[Theodoros Pangalos (general)|Theodoros Pangalos]]
| year_leader2 = 1926
| leader3 = [[Pavlos Kountouriotis]]
| year_leader3 = 1926–1929
| leader4 = [[Alexandros Zaimis]]
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = [[Prime Minister of Greece|Prime Minister]]
| leader_title1 = [[President of Greece|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = [[Prime Minister of Greece|Prime Minister]]
| legislature = [[Hellenic Parliament|Parliament]]
| house1 = [[Greek Senate|Senate]]
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = [[History of Greece|Establishment history]]
| established_event1 = [[Greek War of Independence|Independence declared]] {{nobold|from the [[Ottoman Empire]]}} <!-- PLEASE DO NOT AMEND THE ESTABLISHED EVENTS SECTION WITHOUT OPENING A DISCUSSION ON THE TALK PAGE FIRST -->
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the [[Greek War of Independence]]), {{nowrap|15 January 1822}} ([[First National Assembly at Epidaurus|official declaration]])
| established_event2 = [[London Protocol (1830)|Recognised]]
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|[[Constitution of Greece|Current constitution]]}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
e60960ac1267d8fa255c5de3e209203a1f5f869a
File:Hellenic Republic(1936).png
6
974
2140
2023-10-01T12:08:16Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
MediaWiki:Mobile.css
8
975
2142
2023-10-01T12:44:32Z
Führerredux
2
Created page with "/* * This is the CSS common to all mobile skins on en.Wikipedia. * Styling inside .mw-parser-output should generally use TemplateStyles. * * [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be * worth reviewing. * * special note that this page loads late by Javascript, which may cause * [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]] */ /* Reset user agent styles. We don't reset small or blockquote here deliberat..."
css
text/css
/*
* This is the CSS common to all mobile skins on en.Wikipedia.
* Styling inside .mw-parser-output should generally use TemplateStyles.
*
* [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be
* worth reviewing.
*
* special note that this page loads late by Javascript, which may cause
* [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]]
*/
/* Reset user agent styles. We don't reset small or blockquote here deliberately */
cite,
dfn {
font-style: inherit;
}
q {
quotes: '"' '"' "'" "'";
}
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and
[[MediaWiki:Group-autoconfirmed.css]]. */
.checkuser-show,
.sysop-show,
.templateeditor-show,
.extendedmover-show,
.patroller-show,
.extendedconfirmed-show,
.autoconfirmed-show {
display: none;
}
/* Prevent flags in tables from collapsing
Fix for T116318
*/
.flagicon img {
min-width: 25px;
}
/* Prevent unnecessary margin at the bottom of centralnotices */
.cnotice {
margin-bottom: 0 !important;
}
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/*
.infobox
DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile.
*/
/* removed inline from module as we work toward Tstyles support
* Use three classes to match specificity of MobileFrontend/Minerva selectors */
.content .mw-parser-output .infobox-header,
.content .mw-parser-output .infobox-subheader,
.content .mw-parser-output .infobox-above,
.content .mw-parser-output .infobox-title,
.content .mw-parser-output .infobox-image,
.content .mw-parser-output .infobox-full-data,
.content .mw-parser-output .infobox-below {
text-align: center;
}
/* Prevent line breaks in silly places:
1) Where desired
2) Links when we don't want them to
*/
.mw-parser-output .nowrap,
.nowraplinks a {
white-space: nowrap;
}
.mw-parser-output .infobox .nowrap {
white-space: normal !important;
}
/* But allow wrapping where desired: */
.wrap,
.wraplinks a {
white-space: normal;
}
/* Generic class texhtml class for inline math */
span.texhtml {
font-family: serif;
white-space: nowrap;
}
/* Normal font styling for wikitable row headers with scope="row" tag */
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
/* @noflip */
text-align: left;
}
/* One of the not TemplateStyles things */
/* https://phabricator.wikimedia.org/T180396#5317728 */
@media print {
.navbox,
.hatnote,
.ambox {
display: none !important;
}
}
935872706d3867dbe7425e4ae0ce5ab209853be8
Main page
0
976
2143
2023-10-01T12:46:36Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:If empty
10
425
2145
925
2023-10-01T12:50:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:If_empty]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:If empty|main}}
0882eceea8d0ea6f2b8509518c8f1dd1779a1bb8
Module:If empty
828
426
2147
927
2023-10-01T12:50:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:If_empty]]
Scribunto
text/plain
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false})
-- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank,
-- even though there's really no legitimate use case for this. At some point, this will be removed.
local lowestNil = math.huge
for i = 8,1,-1 do
if args[i] == nil then
args[i] = ''
lowestNil = i
end
end
for k,v in ipairs(args) do
if v ~= '' then
if lowestNil < k then
-- If any uses of this template depend on the behavior above, add them to a tracking category.
-- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified
-- by it.
frame:extensionTag('ref', '[[Category:Instances of Template:If_empty missing arguments]]', {group = 'TrackingCategory'})
frame:extensionTag('references', '', {group = 'TrackingCategory'})
end
return v
end
end
end
return p
39b83f8d043283ec767774d927e2f6f3fb3078b4
Template:Icon
10
977
2149
2148
2023-10-01T12:50:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Icon]]
wikitext
text/x-wiki
{{#invoke:Icon|main}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
bd5b855953c5eec9d9c48400aa39315cb4218558
Template:TOC limit
10
978
2151
2150
2023-10-01T12:50:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TOC_limit]]
wikitext
text/x-wiki
<templatestyles src="Template:TOC limit/styles.css" /><div class="toclimit-{{{1|{{{limit|3}}}}}}">__TOC__</div><noinclude>
{{documentation}}
</noinclude>
76fd91b1053a09dfa5aece7e60e48693d38dfc03
Template:TOC limit/styles.css
10
979
2153
2152
2023-10-01T12:50:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TOC_limit/styles.css]]
sanitized-css
text/css
/* {{pp-template}}
Allow limiting of which header levels are shown in a TOC;
<div class="toclimit-3">, for instance, will limit to
showing ==headings== and ===headings=== but no further
(as long as there are no =headings= on the page, which
there shouldn't be according to the MoS). */
.toclimit-2 .toclevel-1 ul,
.toclimit-3 .toclevel-2 ul,
.toclimit-4 .toclevel-3 ul,
.toclimit-5 .toclevel-4 ul,
.toclimit-6 .toclevel-5 ul,
.toclimit-7 .toclevel-6 ul {
display: none;
}
6bdcbe092c6376237fc1740ef6832611c1f3c8fa
Module:Icon
828
980
2155
2154
2023-10-01T12:50:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Icon]]
Scribunto
text/plain
-- This module implements [[Template:Icon]].
require("strict")
local yesNo = require("Module:Yesno")
local getArgs = require("Module:Arguments").getArgs
local getPlain = nil
local p = {}
-- Determine whether we're being called from a sandbox
local sandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true) and '/sandbox' or ''
-- Implements [[Template:Icon]]
-- Returns the icon image corresponding to a string (like 'B')
function p._main(args, data)
local data_module = 'Module:Icon/data'..sandbox
data = data or mw.loadData(data_module)
local code = args.class or args[1]
local iconData
if code then
code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case
iconData = data[code]
end
if not iconData then
iconData = data._DEFAULT
end
return string.format(
'[[File:%s%s%s|%s|class=noviewer|alt=%s]]',
iconData.image,
iconData.tooltip and '|' .. iconData.tooltip or '',
iconData.link == false and '|link=' or '',
args.size or '16x16px',
iconData.alt or ''
)
end
-- Implements [[Template:Icon link]], a superset of [[Template:Icon]]
-- Returns an icon, plus a suitably formatted wikilink
function p._link(args, data)
args.size = args.size or args.iconsize
local icon = p._main(args, data)
-- If no link given in args[2], default back to [[Template:Icon]]
if not args[2] then
return icon
end
-- Strip wiki markup out of link
getPlain = getPlain or require("Module:Text").Text().getPlain
local link = getPlain(args[2])
local display = args[3] or args[2]
-- italicize display string, if requested
if yesNo(args.i) or yesNo(args.italic) or yesNo(args.italics) then
display = '<i>'..display..'</i>'
end
-- if display is link, just use standard wlink
if link == display then
return icon..' [['..link..']]'
end
return icon..' [['..link..'|'..display..']]'
end
function p.main(frame)
local args = getArgs(frame,{parentFirst=true})
return p._main(args)
end
function p.link(frame)
local args = getArgs(frame,{parentFirst=true})
return p._link(args)
end
return p
7688d9a465bd7c4caa51f7e5c02676c162d583f5
Module:Icon/data
828
981
2157
2156
2023-10-01T12:50:37Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Icon/data]]
Scribunto
text/plain
-- This module stores icon data for [[Module:Icon]].
--------------------------------------------------------------------------------
-- Icon data
--------------------------------------------------------------------------------
local data = {
fa = {
image = "Featured article star.svg",
tooltip = "Featured article",
link = true,
},
far = {
image = "Cscr-star piece.png",
tooltip = "Featured article review",
link = true,
},
farc = {
image = "Cscr-star piece.png",
tooltip = "Featured article removal candidate",
link = true,
},
ffa = {
aliases = {"dfa"},
image = "Featured article star - cross.svg",
tooltip = "Former featured article",
link = true,
},
fac = {
aliases = {"fan"},
image = "Cscr-candidate.svg",
tooltip = "Featured article candidate",
link = true,
},
ffac = {
aliases = {"nofa"},
image = "Featured article star - cross.svg",
tooltip = "Failed featured article candidate",
link = true,
},
fl = {
image = "Featured article star.svg",
tooltip = "Featured list",
link = true,
},
flrc = {
aliases = {"flr"},
image = "Cscr-star piece.png",
tooltip = "Featured list removal candidate",
link = true,
},
ffl = {
aliases = {"dfl"},
image = "Cscr-featured-strike.svg",
tooltip = "Former featured list",
link = true,
},
flc = {
aliases = {"fln"},
image = "Cscr-candidate.svg",
tooltip = "Featured list candidate",
link = true,
},
fflc = {
aliases = {"nofl"},
image = "Cscr-former.svg",
tooltip = "Failed featured list candidate",
link = true,
},
a = {
image = "Symbol a class.svg",
tooltip = "A-Class article",
link = true,
},
dac = {
aliases = {"daa"},
image = "Symbol unsupport A vote.svg",
tooltip = "Demoted A-Class article",
link = true,
},
acc = {
aliases = {"acn", "aac"},
image = "A candidate.svg",
tooltip = "A-Class article candidate",
link = true,
},
noac = {
aliases = {"faac"},
image = "Symbol unsupport A vote.svg",
tooltip = "Failed A-Class article candidate",
link = true,
},
ga = {
image = "Symbol support vote.svg",
tooltip = "Good article",
link = false,
},
gar = {
image = "GA Candidate Neutral vote(ChaosNil).svg",
tooltip = "Good article reassessment",
link = false,
},
dga = {
image = "Symbol unsupport vote.svg",
tooltip = "Delisted good article",
link = false,
},
gan = {
aliases = {"gac"},
image = "GA candidate.svg",
tooltip = "Good article nominee",
link = false,
},
ga2 = {
image = "Symbol neutral vote.svg",
tooltip = "Good article, 2nd opinion",
link = false,
},
gah = {
image = "Symbol wait.svg",
tooltip = "Good article on hold",
link = false,
},
fgan = {
aliases = {"noga", "gaf", "gf"},
image = "Symbol oppose vote.svg",
tooltip = "Failed good article nominee",
link = false,
},
fp = {
image = "Cscr-featured.svg",
tooltip = "Featured picture",
link = true,
},
fpc = {
aliases = {"fpn"},
image = "Cscr-candidate.svg",
tooltip = "Featured picture candidate",
link = true,
},
ffp = {
image = "Cscr-former.svg",
tooltip = "Former featured picture",
link = true,
},
vp = {
image = "ENWP VP Logo.svg",
tooltip = "Valued picture",
link = true,
},
vpc = {
image = "Valued pics 1.svg",
tooltip = "Valued picture candidate",
link = true,
},
fs = {
image = "Cscr-featured.svg",
tooltip = "Featured sound",
link = true,
},
ffs = {
image = "Cscr-former.svg",
tooltip = "Former featured sound",
link = true,
},
fsc = {
image = "Cscr-candidate.svg",
tooltip = "Featured sound candidate",
link = true,
},
fpo = {
image = "Linecons big-star.svg",
tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.",
link = true,
},
fpor = {
image = "Cscr-star piece.png",
tooltip = "Featured portal review",
link = true,
},
ffpo = {
image = "Featured article star - cross.svg",
tooltip = "Former featured portal",
link = true,
},
fpoc = {
image = "Cscr-candidate.svg",
tooltip = "Featured portal candidate",
link = true,
},
ft = {
image = "Cscr-featuredtopic.svg",
tooltip = "Featured topic",
link = true,
},
ftrc = {
image = "Cscr-star piece.png",
tooltip = "Featured topic removal candidate",
link = true,
},
fft = {
aliases = {"dft"},
image = "DFT candidate_cluster.svg",
tooltip = "Former featured topic",
link = true,
},
ftc = {
aliases = {"ftn"},
image = "FT candidate cluster.svg",
tooltip = "Featured topic candidate",
link = false,
},
gt = {
image = "Support cluster.svg",
tooltip = "Good topic",
link = false,
},
gtrc = {
image = "Symbol unsupport vote.svg",
tooltip = "Good topic removal candidate",
link = false,
},
gtc = {
aliases = {"gtn"},
image = "GA candidate cluster.svg",
tooltip = "Good topic candidate",
link = false,
},
bplus = {
aliases = {"b+"},
image = "Symbol bplus class.svg",
tooltip = "Bplus-Class article",
link = true,
},
b = {
image = "Symbol b class.svg",
tooltip = "B-Class article",
link = true,
},
br = {
aliases = {"bcr"},
image = "Bclass-checklist.svg",
tooltip = "B-Class review",
link = true,
},
c = {
image = "Symbol c class.svg",
tooltip = "C-Class article",
link = true,
},
start = {
image = "Symbol start class.svg",
tooltip = "Start-Class article",
link = true,
},
stub = {
image = "Symbol stub class.svg",
tooltip = "Stub-Class article",
link = true,
},
list = {
aliases = {"comparison"},
image = "Symbol list class.svg",
tooltip = "List-Class article",
link = false,
},
no = {
image = "Crystal button cancel.svg",
tooltip = "Unknown-Class article",
link = true,
},
book = {
image = "Symbol book class2.svg",
tooltip = "Wikipedia book",
link = true,
},
category = {
aliases = {"cat", "categ"},
image = "Symbol category class.svg",
tooltip = "Category",
link = false,
},
disambiguation = {
aliases = {"dab", "disamb", "disambig"},
image = "Symbol dab class.svg",
tooltip = "Disambiguation page",
link = true,
},
image = {
aliases = {"file"},
image = "Symbol file class.svg",
tooltip = "File",
link = true,
},
needed = {
image = "Symbol needed class.svg",
tooltip = "Needed article",
link = false,
},
outline = {
image = "Global thinking.svg",
tooltip = "Outline",
link = false,
},
portal = {
image = "Symbol portal class.svg",
tooltip = "Portal",
link = true,
},
project = {
image = "Symbol project class.svg",
tooltip = "Project page",
link = false,
},
redirect = {
aliases = {"red", "redir"},
image = "Symbol redirect vote2.svg",
tooltip = "Redirect",
link = true,
},
template = {
aliases = {"temp", "templ"},
image = "Symbol template class.svg",
tooltip = "Template",
link = false,
},
essay = {
image = "Essay.svg",
tooltip = "Essay",
link = false,
},
na = {
image = "Symbol na class.svg",
tooltip = "Non-article page",
link = true,
},
aa = {
image = "Yes check.svg",
tooltip = "Audited article of limited subject matter",
link = false,
},
da = {
image = "Symbol oppose vote.svg",
tooltip = "Demoted article",
link = false,
},
dyk = {
image = "Symbol question.svg",
tooltip = "Did You Know?",
link = false,
},
dyk2 = {
image = "DYK questionmark icon.svg",
tooltip = "Did You Know?",
link = false,
},
pr = {
image = "Nuvola apps kedit.png",
tooltip = "Peer review",
link = true,
},
ppr = {
image = "Nuvola apps kedit.png",
tooltip = "Portal peer review",
link = true,
},
q = {
aliases = {"question"},
image = "Symbol question.svg",
tooltip = "Question",
link = false,
},
cleanup = {
image = "Edit-clear.svg",
tooltip = "Cleanup work",
link = false,
},
qi = {
image = "Quality images logo.svg",
tooltip = "Quality image on Wikimedia Commons",
link = false,
},
vi = {
image = "Valued image seal.svg",
tooltip = "Valued image on Wikimedia Commons",
link = false,
},
tfa = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured Article",
link = true,
},
tfl = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured List",
link = true,
},
itn = {
image = "Globe current.svg",
tooltip = "In The News",
link = true,
},
otd = {
image = "Nuvola apps date.svg",
tooltip = "On This Day",
link = true,
},
wikiproject = {
image = "People icon.svg",
tooltip = "WikiProject",
link = false,
},
goce = {
image = "Writing Magnifying.PNG",
tooltip = "Guild of Copy Editors",
link = true,
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
link = true,
},
commons = {
image = "Commons-logo.svg",
tooltip = "Commons page",
link = false,
},
wikiquote = {
image = "Wikiquote-logo.svg",
tooltip = "Wikiquote page",
link = false,
},
wikiversity = {
image = "Wikiversity logo 2017.svg",
tooltip = "Wikiversity page",
link = true,
},
wikibooks = {
image = "Wikibooks-logo.svg",
tooltip = "Wikibooks page",
link = true,
},
wikisource = {
image = "Wikisource-logo.svg",
tooltip = "Wikisource page",
link = true,
},
wiktionary = {
image = "Wiktionary-logo.svg",
tooltip = "Wiktionary page",
link = true,
},
wikinews = {
image = "Wikinews-logo.svg",
tooltip = "Wikinews page",
link = true,
},
wikispecies = {
image = "Wikispecies-logo.svg",
tooltip = "Wikispecies page",
link = true,
},
wikidata = {
image = "Wikidata-logo.svg",
tooltip = "Wikidata page",
link = false,
},
wikivoyage = {
image = "Wikivoyage-logo.svg",
tooltip = "Wikivoyage page",
link = true,
},
mediawiki = {
image = "MediaWiki-2020-icon.svg",
tooltip = "MediaWiki",
link = false,
},
phabricator = {
aliases = {"phab"},
image = "Favicon-Phabricator-WM.svg",
tooltip = "Phabricator",
link = false,
},
wikitech = {
image = "Wikitech-2021-blue-icon.svg",
tooltip = "Wikitech",
link = false,
},
meta = {
image = "Wikimedia Community Logo.svg",
tooltip = "Meta-wiki page",
link = false,
},
four = {
aliases = {"4a"},
image = "Four Award.svg",
tooltip = "Four Award",
link = false,
},
million = {
image = "Million award logo.svg",
tooltip = "Million Award",
link = true,
},
module = {
image = "Lua-logo-nolabel.svg",
tooltip = "Module",
link = false,
},
vital = {
image = "Círculos_Concéntricos.svg",
tooltip = "Vital article",
link = false,
},
potd = {
image = "Wikipedia-logo.svg",
tooltip = "Picture of the Day",
link = true,
},
_DEFAULT = {
image = "Symbol question.svg",
link = false,
}
}
--------------------------------------------------------------------------------
-- End icon data
--------------------------------------------------------------------------------
-- Make aliases work the same as normal keys, and remove the "aliases" subtables.
local ret= {}
for code, iconData in pairs(data) do
iconData.canonicalCode = code
if iconData.aliases then
for _, alias in ipairs(iconData.aliases) do
ret[alias] = iconData
end
iconData.aliases = nil
end
ret[code] = iconData
end
return ret
d8e668d4755103abdbc8325fa35964e99198c29d
Template:Further
10
982
2159
2158
2023-10-01T12:50:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Further]]
wikitext
text/x-wiki
<includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}| on {{{topic|}}}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
dd29c6dfb3894a2dc3f20144a654b7012c9a9214
Template:Color
10
213
2161
483
2023-10-01T12:50:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Color]]
wikitext
text/x-wiki
<span style="color:{{{1|}}}">{{{2|{{{1|}}}}}}</span><noinclude>{{Documentation}}[[Category:Inline talk templates]]</noinclude>
fc48e80484b6d4a0cd1821c712d8cbbdfd9a233e
Template:See
10
983
2163
2162
2023-10-01T12:50:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:See]]
wikitext
text/x-wiki
#REDIRECT [[Template:Further]]
5d02b5a16045ac62c67ba614e550dec3a5661db7
Template:Minor planet
10
984
2165
2164
2023-10-01T12:50:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Minor_planet]]
wikitext
text/x-wiki
{{#switch: {{{1}}}
| s =
| S = {{nowrap|S/{{{2}}} ({{{3}}}{{#if: {{{5|}}} |<sub>{{{4}}}</sub>) {{{5}}}|) {{{4}}}}}}}
| {{#expr: {{{1}}}*1 }} = {{nowrap|({{{1}}}) {{{2}}}{{#if: {{{3|}}} |<sub>{{{3}}}</sub>|}}}}
| #default = {{nowrap|{{{1}}}{{#if: {{{2|}}} |<sub>{{{2}}}</sub>|}}}}
}}<noinclude>
{{Documentation}}
</noinclude>
853353b9192dc27e9ad940f8ffd53dfa024dd92e
Template:Mp
10
985
2167
2166
2023-10-01T12:50:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Mp]]
wikitext
text/x-wiki
#REDIRECT [[Template:Minor planet]]
{{Redirect category shell|
{{R from move}}
}}
8ce86e91382eef3030101b778977c0f2311084fc
Template:Startplainlist
10
986
2169
2168
2023-10-01T12:50:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Startplainlist]]
wikitext
text/x-wiki
#REDIRECT [[Template:Plainlist]]
004e758d1686df1d3da2ef0f1c8778ff1f12077d
Template:Vad
10
987
2171
2170
2023-10-01T12:50:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Vad]]
wikitext
text/x-wiki
#redirect [[Template:Vertically aligned date]]
{{rcat shell|{{r from template shortcut}}}}
[[Category:Typing-aid templates|{{PAGENAME}}]]
b90a5de41f13a9857edeae26aa461f4c09a00c01
Template:Vertically aligned date
10
988
2173
2172
2023-10-01T12:50:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Vertically_aligned_date]]
wikitext
text/x-wiki
<includeonly><span style="display:inline-block; width:{{if empty|{{{2|}}}|{{{width|}}}|3.6em}}; text-align:{{if empty|{{{3|}}}|{{{align|}}}|right}}; font-weight:{{if empty|{{{4|}}}|{{{font|}}}|normal}};">{{{1}}}</span></includeonly><noinclude>{{documentation}}</noinclude>
5d09cbb92ba4b8bdbd1feae1e19a300def099a81
Template:Always substitute
10
989
2175
2174
2023-10-01T12:50:49Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Always_substitute]]
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Unsubst|main|$B=
{{Ombox
| name = Subst only
| type = notice
| text = '''This template {{#switch:{{{yesnomaybe|}}}|may=may be [[Help:Substitution|substituted]]'''|never=should ''not'' be [[Help:Substitution|substituted]]'''||#default=should always be [[Help:Substitution|substituted]]''' (i.e., use <!--
-->{{{actualtemplate|{{template other|{{Tlsp|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{BASEPAGENAME}}|{{PAGENAME}}}}}}|{{Tlsu|{{FULLPAGENAME}}}}}}}}})}}. <!--
-->{{#if:{{yesno|{{{auto|no}}}}} |Any accidental transclusions will be automatically substituted by a bot.{{{1|}}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia templates to be automatically substituted]]}}}} <!--
-->{{#if:{{{alt|}}} |For transcluding, use {{Tl|{{{alt|}}}}} instead.}}
}}{{#switch:{{SUBPAGENAME}}|doc|sandbox=|[[Category:Wikipedia substituted templates]]}}}}<noinclude>{{Documentation}}</noinclude>
8e567c153f4f9a6a329e76bf6a71e8a216e87919
Template:Never substitute
10
990
2177
2176
2023-10-01T12:50:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Never_substitute]]
wikitext
text/x-wiki
{{Always substitute|yesnomaybe=never}}<noinclude>
{{Documentation}}
</noinclude>
fda3e0330f5da78bbcd49a4f97ec81a6a3c78cd5
Module:Transclusion count/data/M
828
991
2179
2178
2023-10-01T12:50:52Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]]
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 3900,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 829000,
["MONTHNUMBER"] = 846000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3700,
["MacTutor"] = 2000,
["Main"] = 341000,
["Main_article"] = 30000,
["Main_other"] = 9560000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9500,
["Main_page_image/ITN/styles.css"] = 2600,
["Main_page_image/TFA"] = 4800,
["Maintenance_category"] = 39000,
["Malay_name"] = 2300,
["Map_requested"] = 8700,
["Map_requested/Category_helper"] = 8600,
["Maplink"] = 29000,
["Maplink-road"] = 6000,
["Marriage"] = 73000,
["Marriage/doc"] = 72000,
["Marriage/styles.css"] = 73000,
["Math"] = 9600,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 248000,
["Maybe_free_media"] = 12000,
["Mbox"] = 2970000,
["Mdash"] = 8800,
["MeSH_name"] = 6100,
["Medal"] = 113000,
["MedalBottom"] = 17000,
["MedalBronze"] = 54000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3100,
["MedalCountry"] = 78000,
["MedalGold"] = 53000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3500,
["Merged-from"] = 16000,
["Merged-to"] = 18000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7300,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2100,
["MilHist"] = 4800,
["Military_navigation"] = 83000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5400,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 15000,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3500,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7200,
["Monthyear"] = 75000,
["Monthyear-1"] = 72000,
["MoreInfo"] = 2000,
["More_citations_needed"] = 367000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2200,
["More_references"] = 3200,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7300,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 211000,
["Multiple_image"] = 50000,
["Multiple_image/styles.css"] = 50000,
["Multiple_issues"] = 124000,
["Multiple_issues/styles.css"] = 124000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5100,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 95000,
["Mvar"] = 6900,
["Mw_lang"] = 79000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 429000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18000000,
["Module:Message_box/ambox.css"] = 3110000,
["Module:Message_box/cmbox.css"] = 424000,
["Module:Message_box/configuration"] = 9500000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 924000,
["Module:Message_box/ombox.css"] = 1580000,
["Module:Message_box/tmbox.css"] = 12300000,
["Module:Military_navigation"] = 83000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1260000,
["Module:Multiple_image"] = 50000,
["Module:Music_ratings"] = 95000,
["Module:Mw_lang"] = 79000,
}
d6618357c3b12c8b70e8e96c698bc6bb513282ef
Template:Hatnote templates
10
992
2181
2180
2023-10-01T12:50:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Hatnote_templates]]
wikitext
text/x-wiki
{{Navbox
| name = Hatnote templates
| state = {{{state|<includeonly>autocollapse</includeonly>}}}
| bodyclass = hlist
| belowclass = hlist
| title = [[WP:Hatnote#Hatnote templates|Hatnote templates]]
| above =
*[[Wikipedia:Hatnote]]
*[[Wikipedia:Disambiguation]]
*[[Wikipedia:Redirect]]
| group1 = Generic
| list1 =
*{{tl|Hatnote}}
*{{tl|Self-reference}}
| group2 = For and about
| list2 =
*{{tl|For}}
*{{tl|For-text}} (for custom text)
*{{tl|For-multi}} (for multiple uses)
*{{tl|About}}
*Variations: {{tl|Other uses}}
*{{tl|Other uses of}}
*{{tl|Redirect-distinguish-for}}
*{{tl|About-distinguish}}
*{{tl|About-distinguish-text}}
| group3 = Other topics
| list3 =
*{{tl|Other people}}
*{{tl|About other people}} (adds "about" description)
*{{tl|Similar names}}
*{{tl|Other storms}}
*{{tl|Other places}}
*{{tl|Other ships}}
| group4 = Redirect
| list4 =
*{{tl|Redirect}}
*{{tl|Redirect2}} (for two redirects)
*{{tl|Redirect-multi}} (for multiple redirects)
*{{tl|Redirect-several}} (for several redirects, without listing each)
*{{tl|Redirect-synonym}}
*{{tl|Redirect-distinguish}}
*{{tl|Redirect-distinguish-text}}
*{{tl|Redirect-distinguish-for}}
*{{tl|Technical reasons}}
| group5 = Distinguish
| list5 =
*{{tl|Distinguish}} (supports custom text)
*{{tl|About-distinguish}}
*{{tl|About-distinguish-text}} (for custom text)
*{{tl|Redirect-distinguish}}
*{{tl|Redirect-distinguish-text}} (for custom text)
*{{tl|Redirect-distinguish-for}}
| group6 = For use in sections
| list6 =
*{{tl|Main}}
*{{tl|Main if exists}}
*{{tl|Main list}}
*{{tl|Further}}
*{{tl|Further-text}} (for custom text)
*{{tl|Further interlanguage link}}
*{{tl|See also}}
*{{tl|See also if exists}}
*{{tl|See also-text}} (for custom text)
*{{tl|For outline}}
*{{tl|For timeline}}
| group7 = Special
| list7 =
*{{tl|Broader}}
*{{tl|For introduction}}
*{{tl|See Wiktionary}}
*{{tl|Transcluding article}}
*{{tl|Transcluded section}}
| group8 = Subject specific
| list8 =
* {{tl|About year}}
* {{tl|Highway detail hatnote}}
* {{tl|For LMST}}
* {{tl|WikiIPA}}
| below =
*{{Icon|cat}} [[:Category:Hatnote templates]]
**[[:Category:Hatnote modules|modules]]
**[[:Category:Hatnote templates for names|for [family] names]]
**[[:Category:Hatnote templates for lists|for lists]]
*[[Template:Category hatnote templates|hatnote templates for category pages]]
}}<noinclude>
{{Documentation}}
</noinclude>
5ea17ab2381b3c2002e4846f08d462d2574b6015
Template:Main/doc
10
451
2183
1002
2023-10-01T12:50:54Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Main/doc]]
wikitext
text/x-wiki
==Description==
This template is used at the start of a section to link to the main article on that subject.
==Syntax==
Type {{tlx|main|page name}} anywhere on the page. For example, {{tlx|main|Help:Contents}} gives...
:{{main|Help:Contents}}
You can add multiple pages, up to a maximum of five. For example, {{tlx|Main|One|Two|Three|Four|Five}} gives...
:{{Main|One|Two|Three|Four|Five}}
==Credits==
This template's code came from [[wikia:w:c:sims:Template:Main|Template:Main]] on The Sims Wiki.
<includeonly>[[Category:Other templates|{{PAGENAME}}]]</includeonly>
<noinclude>[[Category:Template documentation pages|{{PAGENAME}}]]</noinclude>
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Page 1",
"description": "The name of the first page that you want to link to. If this is not specified, the current page name (without the namespace prefix) is used instead.",
"type": "string"
},
"2": {
"label": "Page 2",
"description": "The name of the second page you want to link to.",
"type": "string"
},
"3": {
"label": "Page 3",
"description": "The name of the third page you want to link to.",
"type": "string"
},
"4": {
"label": "Page 4",
"description": "The name of the fourth page you want to link to.",
"type": "string"
},
"5": {
"label": "Page 5",
"description": "The name of the fifth page you want to link to.",
"type": "string"
},
"6": {
"label": "Page 6",
"description": "The name of the sixth page you want to link to.",
"type": "string"
}
},
"description": "This template is used after the heading of a section, to link to a sub-article (or sub-articles) that is entirely about the topic of the section. The template will display in italics: \"Main article: Article 1, Article 2 and Article 3\".",
"paramOrder": [
"1",
"2",
"3",
"4",
"5",
"6"
]
}
</templatedata>
06d3a43cfa1555d654afcc6d7860e3f8a1006194
Template:Lang-gr
10
995
2187
2186
2023-10-01T14:11:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-gr]]
wikitext
text/x-wiki
#REDIRECT [[Template:lang-el]]
5d94e6e51e5276de93e697f3f837f9a3586261c9
Template:Lang-el
10
996
2189
2188
2023-10-01T14:12:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-el]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_inherit
|code=el
}}</includeonly>{{#if:{{{2|}}}|{{Main other|[[Category:Instances of Lang-el using second unnamed parameter]]}}}}<noinclude>
{{Documentation}}
</noinclude>
1898a92fadc3297db4e90db7600d5d1d8a945355
Template:Lang-ru
10
997
2191
2190
2023-10-01T14:12:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-ru]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_inherit
|code=ru
}}</includeonly><noinclude>
{{Documentation|Template:Lang-x/doc}}
[[Category:Balto-Slavic multilingual support templates]]
</noinclude>
695925373c486c81a8f6581d4c8d3f95e56c469c
Template:Lang-fr
10
998
2193
2192
2023-10-01T14:12:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-fr]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=fr
}}</includeonly><noinclude>
{{documentation|Template:Lang-x/doc}}
[[Category:Italic multilingual support templates]]
</noinclude>
d931674bb3f25747fd413f72d24d104de98129b6
Template:Lang-de
10
999
2195
2194
2023-10-01T14:12:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-de]]
wikitext
text/x-wiki
<includeonly>{{#invoke:lang|lang_xx_italic
|code=de
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
fce950f3988f353d598dd94038c50a0016c8f3e7
Template:Dagger
10
1000
2197
2196
2023-10-01T14:12:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Dagger]]
wikitext
text/x-wiki
†<noinclude>{{Documentation}}
</noinclude>
c1cff92219225378143384ca5156377ca50dd713
Template:Tlc
10
1001
2199
2198
2023-10-01T14:12:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tlc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link code]]
{{Redirect category shell|
{{R from template shortcut}}
{{R from high-use template}}
{{R from move}}
}}
48ef4a029c0e27cccb1148a29fb8b7ccb211a4a2
Template:Deprecated code
10
1002
2201
2200
2023-10-01T14:12:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Deprecated_code]]
wikitext
text/x-wiki
<del class="deprecated-content {{{class|}}}" style="color:{{#if:{{{red|}}}|#8B0000|#808080}}; text-decoration:none; {{#if:{{{style|}}}|{{{style}}}|}}" {{#if:{{{id|}}}|id="{{{id}}}"|}} {{#if:{{{title|{{{2|}}}}}}|title="{{{title|{{{2}}}}}}"|}}>{{{1}}}</del><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
c8fa271da275bc211fa5f70ab12b5ed41d822332
Template:!mxt
10
1003
2203
2202
2023-10-01T14:12:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:!mxt]]
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example deprecated-content example-bad monospaced example-mono" style="font-family: monospace, monospace; color: #8B0000;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
123b663ea682585bd66d348c0b22b9356b6082bb
Template:Mxt
10
1004
2205
2204
2023-10-01T14:12:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Mxt]]
wikitext
text/x-wiki
{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{FormattingError|[[:{{#invoke:TEMPLATENAME|main}}]] is only for examples of style and formatting. Do not use it in actual articles.}}|<span class="example monospaced example-mono" style="font-family: monospace, monospace; color: #006400;" {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|Example text}}}</span>}}<!--"monospace, monospace" needed per Wikipedia:Typography#The_monospace_'bug'--><noinclude>
{{Documentation|Template:Xt/doc}}
<!--This category has to be done on a per-template basis, not in the shared docs, since it only apply to four templates in the family.-->
[[Category:Programming typing-aid templates]]
</noinclude>
b00aa06d96188f3a153fd18bd7f0eebcb7f3b8d2
Module:Lang/documentor tool
828
1005
2207
2206
2023-10-01T14:12:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lang/documentor_tool]]
Scribunto
text/plain
require('strict')
local p = {}
--[[ -------------------------< P R I V A T E _ T A G S >------------------------------------------------------
{{#invoke:Lang/documentor tool|private_tags}}
Reads the override{} table in Module:Lang/data and renders a wiki table of private tags and their associated languages
]]
local function private_tags (frame)
local override_t = mw.loadData ('Module:Lang/data').override; -- get the override table
local private_t = {};
for tag, lang in pairs (override_t) do
if tag:find ('%-x%-') then
table.insert (private_t, table.concat ({'\n|-\n|', lang, '||', tag}))
end
end
table.sort (private_t)
table.insert (private_t, 1, '{| class="wikitable sortable"');
table.insert (private_t, 2, '\n|+ Supported private-use IETF language tags')
table.insert (private_t, 3, '\n! Language !! Private-use tag')
return table.concat (private_t) .. '\n|}';
-- return '<pre>' .. table.concat (private_t) .. '\n|}' .. '</pre>'
--error (mw.dumpObject (private_t))
end
--[[ -------------------------< L A N G - X X _ S E T T I N G S >----------------------------------------------
{{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}}
Reads the content of the template and extracts the parameters from {{#invoke:Lang|...}} for display on the template's
documentation page.
]]
local function lang_xx_settings(frame)
local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace
if not page then
return '' -- TODO: error message?
end
local content = page:getContent() -- get unparsed content
if not page then
return '' -- TODO: error message?
end
local out = {}
local params
local style
if content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+|[^}]+}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+|[^}]+}}') then -- if this template uses [[Module:Lang]]
params = content:match('{{%s*#invoke:%s*[Ll]ang%s*|[^|]+(|[^}]+)}}') or content:match('{{%s*#invoke:%s*[Ll]ang/sandbox%s*|[^|]+(|[^}]+)}}') -- extract the #invoke:'s parameters
if not params then
return '' -- there should be at least one or the template/module won't work TODO: error message?
end
table.insert(out, '{| class="wikitable" style="text-align: right; float: right;"\n|+settings') -- start a wikitable
for k, v in params:gmatch('%s*|%s*([^%s=]+)%s*=%s*([^%s|]+)') do -- get the parameter names (k) and values (v)
if 'label' == k then -- special case for labels because spaces and pipes
v = params:match('label%s*=%s*(%[%[[^%]]+%]%])') or params:match('label%s*=%s*([^|\n]+)') or 'missing label'
end
table.insert(out, table.concat({k, '\n|', v})) -- make rudimentary wikitable entries
end
style = content:match('lang_xx_([^|]+)');
if not style or ('italic' ~= mw.text.trim (style) and 'inherit' ~= mw.text.trim (style)) then
return '<span style="color:#d33">Error: template #invoke calls unknown function</span>';
end
return table.concat({table.concat(out,'\n|-\n! scope="row" | '), '\n|-\n|colspan="2"|style: ', style, '\n|-\n|}'}) -- add inter-row markup and close the wikitable and done
else
return '' -- does not use [[Module:Lang]] so abandon quietly
end
end
--[[ -------------------------- < U S E S _ M O D U L E > --------------------------
{{#invoke:Lang/documentor tool|uses_module|template={{ROOTPAGENAME}}}}
Reads the content of the template to determine if this {{lang-xx}} template uses Module:Lang.
Returns the index of the substring '{{#invoke|lang|' in the template page content if true; empty string if false.
Used in template documentation {{#if:}} parser functions.
]]
local function uses_module(frame)
local page = mw.title.makeTitle('Template', frame.args['template'] or frame.args[1]) -- get a page object for this page in 'Template:' namespace
if not page then
return '' -- TODO: error message?
end
local content = page:getContent() -- get unparsed content
if not page then
return '' -- TODO: error message?
end
return content:find('{{%s*#invoke:[Ll]ang%s*|') or '' -- return index or empty string
end
--[[ -------------------------- < S H A R E D _ C O D E > --------------------------
- Tables:
-- language_categories
-- error_messages
-- strings
- Functions:
-- make_error(message, layout, parent_category, nocat)
-- get_language_link(language_name, language_code)
-- get_see_also_section(page_title, language_name, language_code)
-- get_hidden_category_template(frame)
-- get_top_section(frame)
-- get_bottom_section(frame, language_name, see_also_section, parent_category)
]]
local language_categories = {
["LANGUAGES_SOURCES"] = "Articles with %s-language sources (%s)",
["LANGUAGES_COLLECTIVE_SOURCES"] = "Articles with %s-collective sources (%s)",
["CS1"] = "CS1 %s-language sources (%s)",
["LANGUAGE_TEXT"] = "Articles containing %s-language text",
-- old version ["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text from the %s collective",
["LANGUAGES_COLLECTIVE_TEXT"] = "Articles with text in %s",
["ENGLISH"] = "Articles containing explicitly cited %s-language text",
}
local error_assistance = " Please see [[Template talk:Lang]] for assistance."
local error_messages = {
["ASSISTANCE"] = "Please see [[Template talk:Lang]] for assistance.",
["INCORRECT_CATEGORY_TITLE"] = "[[:%s]] is not the category being populated by the {{tlx|%s}} template. The correct category is located at: [[:%s]].",
["NO_CATEGORY_TITLE_FOUND"] = "No language category found for '''%s.'''" .. error_assistance,
["NOT_VALID_CATEGORY_FORMAT"] = "'''%s''' is not a a valid category title." .. error_assistance,
["NOT_VALID_LANGUAGE_CODE"] = "[[%s]] is not a valid ISO 639 or IETF language name." .. error_assistance,
}
local strings = {
["ERROR_CATEGORY"] = "[[Category:Lang and lang-xx template errors]]",
["ERROR_SPAN"] = '<span style="font-size: 100%%; font-style: normal;" class="error">Error: %s </span>',
["PURGE_DIV"] = '<div style="font-size: x-small;">%s</div>',
["SEE_ALSO"] = "\n==See also==",
["SEE_ALSO_ITEM"] = "* [[:%s]]",
}
--[[ -------------------------- < M A K E _ E R R O R > --------------------------
Create an error message.
Does not place page in error category if args.nocat is used.
Does not categorize in parent cateogory if used in category namespace (usually for /testcases).
]]
local function make_error(message, layout, parent_category, nocat)
table.insert(layout, string.format(strings["ERROR_SPAN"], message))
if not nocat then
table.insert(layout, strings["ERROR_CATEGORY"])
end
if mw.title.getCurrentTitle().nsText == "Category" then
table.insert(layout, parent_category)
end
return table.concat(layout)
end
--[[ -------------------------- < G E T _ L A N G U A G E _ L I N K > --------------------------
Generates a language link for the correct style.
Collective languages use the name_from_tag value,
while other languages use a display name of "x-language".
]]
local function get_language_link(language_name, language_code)
local lang_module = require('Module:Lang')
-- Is a language collective?
if language_name:find('languages') then
return lang_module.name_from_tag({language_code, link = "yes"})
else
return lang_module.name_from_tag({language_code, link = "yes", label = lang_module.name_from_tag({language_code}) .. "-language"})
end
end
--[[ -------------------------- < G E T _ S E E _ A L S O _ S E C T I O N > --------------------------
Generates a consistent style See also section for
{{Category articles containing non-English-language text}} and {{Non-English-language source category}}.
If {{CS1 language sources}} is converted, it should also use it.
]]
local function get_see_also_section(page_title, language_name, language_code)
local see_also_section = {}
for _, category_name in pairs(language_categories) do
local category = mw.title.new(string.format(category_name, language_name, language_code), 14)
if category and page_title ~= category.text and category.exists then
table.insert(see_also_section, string.format(strings["SEE_ALSO_ITEM"], category.prefixedText))
end
end
table.sort(see_also_section)
table.insert(see_also_section, 1, strings["SEE_ALSO"])
if table.getn(see_also_section) == 1 then
return ""
else
return table.concat(see_also_section, "\n")
end
end
--[[ -------------------------- < G E T _ H I D D E N _ C A T E G O R Y _ T E M P L A T E > --------------------------
Generates the Template:Hidden category template.
This function is separate from the get_top_section() function
as this should be used in both error categories and valid categories.
]]
local function get_hidden_category_template(frame)
return frame:expandTemplate{title = 'Hidden category'}
end
--[[ -------------------------- < G E T _ T O P _ S E C T I O N > --------------------------
Generates a consistent top maintenance template section which consists of:
-- Template:Possibly empty category
-- Template:Purge
]]
local function get_top_section(frame)
local top_section = {}
if mw.site.stats.pagesInCategory(mw.title.getCurrentTitle().text, "all") == 0 then
table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category'})
else
table.insert(top_section, frame:expandTemplate{title = 'Possibly empty category', args = {hidden=true}})
end
local purge_module = require('Module:Purge')
table.insert(top_section, string.format(strings["PURGE_DIV"], purge_module._main({"Purge page cache"})))
return table.concat(top_section, "\n\n")
end
--[[ -------------------------- < G E T _ B O T T O M _ S E C T I O N > --------------------------
Generates a consistent non-text section which consists of:
-- Template:CatAutoTOC
-- A see also section
-- {{DEFAULTSORT}}
-- Categorization in parent category
]]
local function get_bottom_section(frame, language_name, see_also_section, parent_category)
local bottom_section = {}
table.insert(bottom_section, frame:expandTemplate{title = 'CatAutoTOC'})
table.insert(bottom_section, see_also_section)
if mw.title.getCurrentTitle().nsText == "Category" then
table.insert(bottom_section, frame:preprocess{text = "{{DEFAULTSORT:" .. language_name .. "}}"})
table.insert(bottom_section, parent_category)
end
return table.concat(bottom_section, "\n\n\n")
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ T E X T _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_text_category}}
This function implements {{Non-English-language text category}}.
]]
local non_english_language_text_strings = {
["LINE1"] = "This category contains articles with %s%s text. The primary purpose of these categories is to facilitate manual or automated checking of text in other languages.",
["LINE2"] = "This category should only be added with the %s family of templates, never explicitly.",
["LINE3"] = 'For example %s, which wraps the text with <code><span lang="%s"></code>.%s',
["LINE3_EXTRA"] = " Also available is %s which displays as %s.",
["IN_SCRIPT"] = " (in %s)",
["EXAMPLE_DEFAULT_TEXT"] = "text in %s language here",
["PARENT_CATEGORY"] = "[[Category:Articles containing non-English-language text]]",
["TEMPLATE"] = "Lang",
}
local function non_english_language_text_category(frame)
local page = mw.title.getCurrentTitle()
local args = require('Module:Arguments').getArgs(frame)
-- args.test is used for /testcases
if args.test then
page = mw.title.new(args.test)
end
-- Naming style: Articles with text from the Berber languages collective
local page_title_modified = page.text
local split_title = "([^,]+)%%s([^,]*)"
local part1 = ""
local part2 = ""
if page_title_modified:find('Articles with text in') then
-- Naming style: Category:Articles with text from Afro-Asiatic languages (as currently implemented in Module:lang)
part1, part2 = language_categories["LANGUAGES_COLLECTIVE_TEXT"]:match(split_title)
elseif page_title_modified:find('explicitly cited') then
part1, part2 = language_categories["ENGLISH"]:match(split_title)
else
-- Naming style: Category:Articles containing French-language text
part1, part2 = language_categories["LANGUAGE_TEXT"]:match(split_title)
end
page_title_modified = page_title_modified:gsub(part1, "")
page_title_modified = page_title_modified:gsub(part2, "")
local language_name = page_title_modified
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local parent_category = non_english_language_text_strings["PARENT_CATEGORY"]
if language_name == page.text then
-- Error: Category title format not supported.
return make_error(string.format(error_messages["NOT_VALID_CATEGORY_FORMAT"], page.text), layout, parent_category, args.nocat)
end
local lang_module = require('Module:Lang')
local language_code = lang_module._tag_from_name({language_name})
if language_code:find('[Ee]rror') then
-- Error: Language code not found in database.
return make_error(string.format(error_messages["NOT_VALID_LANGUAGE_CODE"], language_name), layout, parent_category, args.nocat)
end
local correct_language_category_title = lang_module._category_from_tag({language_code})
if correct_language_category_title:find('[Ee]rror') then
-- Error: No category title found for language code.
return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat)
end
local current_category_title = page.prefixedText
if current_category_title ~= correct_language_category_title then
-- Error: The current title used is not in the supported format. TODO: can this still be reached?
return make_error(
string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_text_strings["LANG"], correct_language_category_title),
layout, parent_category, args.nocat)
end
table.insert(layout, get_top_section(frame))
local script_text = ""
if args.script then
script_text = string.format(non_english_language_text_strings["IN_SCRIPT"], args.script)
end
local language_link = get_language_link(language_name, language_code)
table.insert(layout, string.format(non_english_language_text_strings["LINE1"], language_link, script_text))
local lang_template = frame:expandTemplate{title = 'Tl', args = {non_english_language_text_strings["TEMPLATE"]}}
table.insert(layout, string.format(non_english_language_text_strings["LINE2"], lang_template))
local language_code_link = lang_module._name_from_tag({language_code, link="yes", label=language_code})
local example_default_text = string.format(non_english_language_text_strings["EXAMPLE_DEFAULT_TEXT"], language_name)
local example_text = args.example or example_default_text
local lang_template_example = frame:expandTemplate{title = 'Tlx', args = {non_english_language_text_strings["TEMPLATE"], language_code_link, example_text}}
local lang_x = mw.title.makeTitle(10, "Lang-" .. language_code)
local line3_extra = ""
if lang_x.exists then
local lang_x_template_example = frame:expandTemplate{title = 'Tlx', args = {lang_x.text, example_text}}
local lang_x_template = frame:expandTemplate{title = lang_x.text, args = {example_text}}
line3_extra = string.format(non_english_language_text_strings["LINE3_EXTRA"], lang_x_template_example, lang_x_template)
end
table.insert(layout, string.format(non_english_language_text_strings["LINE3"], lang_template_example, language_code, line3_extra))
local see_also_section = get_see_also_section(page.text, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_text_strings["PARENT_CATEGORY"])
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ S O U R C E S _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_sources_category}}
This function implements {{Non-English-language sources category}}.
]]
local non_english_language_sources_strings = {
["LINE1"] = "This is a tracking category for articles that use %s to identify %s sources.",
["PARENT_CATEGORY"] = "[[Category:Articles with non-English-language sources]]",
["TEMPLATE"] = "In lang",
}
local function non_english_language_sources_category(frame)
local page = mw.title.getCurrentTitle()
local args = require('Module:Arguments').getArgs(frame)
-- args.test is used for /testcases
if args.test then
page = mw.title.new(args.test)
end
local page_title = page.text
local language_code = page_title:match('%(([%a%-]+)%)')
local language_name = require('Module:Lang')._name_from_tag({language_code})
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local parent_category = non_english_language_sources_strings["PARENT_CATEGORY"]
local correct_language_category_title = require('Module:In lang')._in_lang({language_code, ["list-cats"]="yes"})
if correct_language_category_title == "" then
-- Error: No category title found for language code.
return make_error(string.format(error_messages["NO_CATEGORY_TITLE_FOUND"], language_code), layout, parent_category, args.nocat)
end
local current_category_title = page.prefixedText
if correct_language_category_title ~= current_category_title then
-- Error: The current title used is not in the supported format.
return make_error(
string.format(error_messages["INCORRECT_CATEGORY_TITLE"], current_category_title, non_english_language_sources_strings["TEMPLATE"], correct_language_category_title),
layout, parent_category, args.nocat)
end
local language_link = get_language_link(language_name, language_code)
local text = string.format(non_english_language_sources_strings["LINE1"], frame:expandTemplate{title = 'Tlx', args = {non_english_language_sources_strings["TEMPLATE"], language_code}}, language_link)
table.insert(layout, get_top_section(frame))
table.insert(layout, text)
local see_also_section = get_see_also_section(page_title, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, parent_category)
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < N O N _ E N G L I S H _ L A N G U A G E _ C S 1 _ S O U R C E S _ C A T E G O R Y > --------------------------
{{#invoke:Lang/documentor tool|non_english_language_cs1_sources_category}}
This function implements {{Non-English-language CS1 sources category}}.
]]
local non_english_language_cs1_text_strings = {
["LINE1"] = "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to identify a source in [[%s language|%s]]. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
["PARENT_CATEGORY"] = "[[Category:CS1 foreign language sources]]", -- #TODO change to "Articles with non-english CS1 language sources" or "CS1 non-English language sources"
}
--"This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
--"[[Category:CS1 uses foreign language script]]",
-- "This is a tracking category for [[WP:CS1|CS1 citations]] that use the parameter %s. Pages in this category should only be added by CS1 templates and [[Module:Citation/CS1]].",
-- "to identify a source in [[%s language|%s]].",
-- "to hold a citation title that uses %s characters and contains the language prefix <code>%s:</code>.",
local function non_english_language_cs1_sources_category(frame)
local page_title_object = mw.title.getCurrentTitle()
local page_title = page_title_object.text
local language_code = page_title:match('%(([%a%-]+)%)')
local language_name = require('Module:Lang')._name_from_tag({language_code})
local layout = {}
table.insert(layout, get_hidden_category_template(frame))
local see_also_section = ""
local parameter_doc = frame:expandTemplate{title = 'para', args = {"language", language_code}}
table.insert(layout, get_top_section(frame))
table.insert(layout, string.format(non_english_language_cs1_text_strings["LINE1"], parameter_doc, language_name, language_name))
local see_also_section = get_see_also_section(page_title, language_name, language_code)
local bottom = get_bottom_section(frame, language_name, see_also_section, non_english_language_cs1_text_strings["PARENT_CATEGORY"])
return table.concat(layout, "\n\n") .. bottom
end
--[[ -------------------------- < T E S T _ C A S E S _ S H A R E D _ C O D E > --------------------------
]]
local function compare_by_keys2(a, b) -- local function used by table.sort()
return a[2] < b[2] -- ascending sort by code
end
local function compare_by_keys(a, b) -- local function used by table.sort()
return a[1] < b[1] -- ascending sort by code
end
-- Used by testcases_iso_code_to_name()
local function get_language_code_table_from_code(args)
local entry = {}
--if args.override_table[args.language_code] then
-- table.insert(entry, args.override_table[args.language_code][1]) -- :gsub(' %b()$', '') fails here
--else
table.insert(entry, args.language_code)
-- end
return entry
end
-- Used by testcases_name_from_tag()
local function get_language_code_and_name_table_from_code(args)
local entry = {}
if args.override_table[args.language_code] then
table.insert(entry, args.language_code)
local language_code, _ = args.override_table[args.language_code][1]:gsub(' %b()$', '')
table.insert(entry, language_code)
else
table.insert(entry, args.language_code)
table.insert(entry, args.language_table[args.language_code])
end
return entry
end
-- Used by testcases_category_from_tag()
local function get_language_code_and_category_table_from_code(args)
local entry = {}
table.insert(entry, args.language_code)
table.insert(entry, args.test_function({args.language_code}))
return entry
end
-- Used by testcases_iso_name_to_code() and testcases_tag_from_name()
local function get_language_name_and_code_table_from_code(args)
local entry = {}
if args.override_table[args.language_code] then
table.insert(entry, args.override_table[args.language_code][1]) -- only the first name when there are multiples
table.insert(entry, args.language_code)
else
table.insert(entry, args.language_names[1]) -- only the first name when there are multiples
table.insert(entry, args.language_code)
end
return entry
end
local function get_table(table_function, language_table, length, range, iso_number, test_function)
local table_of_language_name_and_code_tables = {}
local override_table_name = "override"
if iso_number then
override_table_name = "override_" .. iso_number
end
local override_table = require("Module:Language/data/ISO_639_override/sandbox")[override_table_name]
-- For most ISO 639s.
if range then
for language_code, language_names in pairs(language_table) do
if language_code:find(range) then
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
-- For ISO 639-1.
elseif length then
for language_code, language_names in pairs(language_table) do
if language_code:len() == 2 then
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
-- For general /testcases.
else
for language_code, language_names in pairs(language_table) do
table.insert(table_of_language_name_and_code_tables, table_function({
override_table = override_table,
language_code = language_code,
language_names = language_names,
test_function = test_function,
language_table = language_table
}))
end
end
return table_of_language_name_and_code_tables
end
local function get_undabbed_table(language_list, length, range)
local undabbed_language_table = {} -- for this test, ISO 639-3 language name disambiguators must be removed; un-dabbed names go here
for language_code, language_names in pairs(language_list) do
-- For most ISO 639s.
if range then
if language_code:find(range) then
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code
end
-- For ISO 639-1.
elseif length then
if language_code:len() == 2 then
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '') -- undab and save only the first name; ignore all other names assigned to a code
end
-- For general /testcases.
else
undabbed_language_table[language_code] = language_names[1]:gsub(' %b()$', '')
end
end
return undabbed_language_table
end
--[[ -------------------------- < T E S T C A S E S _ C A T E G O R Y _ F R O M _ T A G > --------------------------
Entry point for the various category_from_tag testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_code>", "<category name according to Module:Lang>"}
- "Expected" column value is the category name according to Module:Lang.
- "Actual" column value is the result of {{#invoke:Lang/sandbox|category_from_tag|<language_code>}}.
TODO: Currently not working.
]]
local function testcases_category_from_tag(self, args)
local cat_from_tag_function = require('Module:Lang')._category_from_tag
local language_tables = get_table(get_language_code_and_category_table_from_code, args.language_list, args.length, args.range, args.iso_number, cat_from_tag_function)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|category_from_tag|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ N A M E _ F R O M _ T A G > --------------------------
Entry point for the various name_from_tag testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_code>", "<language_name>"}
- "Expected" column value is the <language_name>.
- "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|name_from_tag|<language_code>}}.
]]
local function testcases_name_from_tag(self, args)
local undabbed_language_table = get_undabbed_table(args.language_list, args.length, args.range, nil)
local language_tables = get_table(get_language_code_and_name_table_from_code, undabbed_language_table, args.length, args.range)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|name_from_tag|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ T A G _ F R O M _ N A M E > --------------------------
Entry point for the various tag_from_name testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_name>", "<language_code>"}
- "Expected" column value is the <language_code>.
- "Actual" column value is the result of sandbox version {{#invoke:Lang/sandbox|tag_from_name|<language_name>}}.
TODO: Currently not working.
]]
local function testcases_tag_from_name(self, args)
local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys2)
local ordered_table = {}
table.sort(unordered_table)
for _, key in ipairs(unordered_table) do
table.insert(ordered_table, {key, reverse_table[key]})
end
self:preprocess_equals_preprocess_many(
'{{#invoke:Lang/sandbox|tag_from_name|', '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ I S O _ C O D E _ T O _ N A M E > --------------------------
Entry point for the various iso_code_to_name testcases.
Build a table of test patterns where each entry in the table is a table with one member:
{"<language_code>"}
- "Expected" column value is the result of the live version of {{#invoke:ISO 639 name|iso_639_name_to_code|<language_code>}}.
- "Actual" column value is the result of sandbox version {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_code>}}.
]]
local function testcases_iso_code_to_name(self, args)
local language_tables = get_table(get_language_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys)
self:preprocess_equals_preprocess_many(
'{{#invoke:ISO 639 name/sandbox|iso_639_code_to_name|link=yes|', '}}', '{{#invoke:ISO 639 name|iso_639_code_to_name|link=yes|', '}}',
language_tables,
{nowiki=false}
)
end
--[[ -------------------------- < T E S T C A S E S _ I S O _ N A M E _ T O _ C O D E > --------------------------
Entry point for the various iso_name_to_code testcases.
Build a table of test patterns where each entry in the table is a table with two members:
{"<language_name>", "<language_code>"}
- "Expected" column value is the <language_code>.
- "Actual" column is value the result of {{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|<language_name>}}.
]]
local function testcases_iso_name_to_code(self, args)
local language_tables = get_table(get_language_name_and_code_table_from_code, args.language_list, args.length, args.range, args.iso_number, nil)
table.sort(language_tables, compare_by_keys2)
self:preprocess_equals_preprocess_many(
'{{#invoke:ISO 639 name/sandbox|iso_639_name_to_code|2=' .. args.iso_number .. "|", '}}', '', '',
language_tables,
{nowiki=false}
)
end
--[[--------------------------< S E E _ A L S O >--------------------------------------------------------------
adds items to the list of items in §See also section of Template:Lang-x/doc; Evaluates single positional parameter
which is a comma-separated list of items including list markup.
{{#invoke:Lang/documentor tool|see_also|*{{tl|Lang-tt-Cyrl}}, *{{tl|Lang-tt-Latn}}, *{{tl|Lang-tt-Arab}}}}
]]
local function see_also (frame)
if nil == frame.args[1] or '' == frame.args[1] then -- if empty, ...
return; -- ... return nothing
end
return frame:preprocess (frame.args[1]:gsub ('%s*,%s', '\n')); -- preprocess so any templates are rendered before saving and done
end
--[[ -------------------------< E X P O R T E D _ F U N C T I O N S > -----------------------------------------
]]
return {
lang_xx_settings = lang_xx_settings,
uses_module = uses_module,
see_also = see_also,
non_english_language_text_category = non_english_language_text_category,
non_english_language_sources_category = non_english_language_sources_category,
non_english_language_cs1_sources_category = non_english_language_cs1_sources_category,
private_tags = private_tags,
-- Module:Lang testcases
testcases_category_from_tag = testcases_category_from_tag,
testcases_name_from_tag = testcases_name_from_tag,
testcases_tag_from_name = testcases_tag_from_name,
-- Module:ISO 639 name testcases
testcases_iso_code_to_name = testcases_iso_code_to_name,
testcases_iso_name_to_code = testcases_iso_name_to_code,
}
3db6b7c36a439f8240ae6575fc41416c18ae47fe
Template:COinS safe
10
1006
2209
2208
2023-10-01T14:12:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:COinS_safe]]
wikitext
text/x-wiki
{{notice
|image={{#ifeq: {{{1|}}}|n|Stop hand nuvola.svg}}
|{{#ifeq: {{{1|}}}|n
|This template should not be used in citation templates such as [[Help:Citation Style 1|Citation Style 1]] and [[Help:Citation Style 2|Citation Style 2]], because it includes markup that will pollute the [[COinS]] metadata they produce; see [[Wikipedia:COinS]]. {{{addtext|}}}{{Sandbox other||[[Category:Templates not safe for use in citation templates]]}}
|This template is safe for use in citation templates that produce [[COinS]] metadata; see [[Wikipedia:COinS]]. If HTML or other markup is added, then the template must be reevaluated. {{{addtext|}}}
}}
}}<noinclude>
{{Documentation}}
<!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) -->
</noinclude>
47abee673d74440d28e801111bf6ee765cd998df
Template:Lang-x/doc/parameters
10
1007
2211
2210
2023-10-01T14:12:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-x/doc/parameters]]
wikitext
text/x-wiki
==lang-xx==
<section begin=lang_xx_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}} -->
{| class="wikitable"
|+lang-xx supported parameters
!parameter !! definition !! yields to !! alias
|-
|<code>text</code> || non-English text || – || <code><nowiki>{{{1}}}</nowiki></code>
|-
|<code>translit</code> || Latin script transliteration of the content in <code>text</code> || – || <code><nowiki>{{{2}}}</nowiki></code>
|-
|<code>translit-std</code> || standard used for the transliteration of the value of <code>translit</code>; accepted values are: <kbd>ISO</kbd>, <kbd>DIN</kbd>, <kbd>IAST</kbd>, <kbd>ALA</kbd>, <kbd>ALA-LC</kbd> || – ||
|-
|{{nowrap|<code>translit-script</code>}} || transliteration standard's script identifier || – ||
|-
|<code>translation</code> || literal English translation or gloss of the content in <code>text</code> || – || <code>lit</code>, <code><nowiki>{{{3}}}</nowiki></code>
|-
|<code>label</code> || label to be used instead of template-provided language label; may be wikilinked; special keyword <kbd>none</kbd> causes the template to render without any labels (including transliteration and translation labels) || – ||
|-
|<code>link</code> || <kbd>yes</kbd> (default) links language name and static text associated with <code>translit</code> and <code>translation</code>; accepted values are: <kbd>no</kbd>, <kbd>yes</kbd>; {{para|link|no}} does not unlink wikilinked labels set by {{para|label}} || – || <code>links</code>
|-
|-
|<code>code</code> || [[IETF language tag]] for the content in <code>text</code>; set by the template, overriding the template setting is discouraged || – ||
|-
|<code>script</code> || IETF language script subtag; sometimes set by the template when the language of the content in <code>text</code> uses more than one writing system; always four alpha characters; a value of <kbd>Latn</kbd> <small>({{em|not}} "Latin"!)</small> forces italic rendering unless overridden by <code>italic</code>; overrides <code>rtl</code> || <code>italic</code> ||
|-
|<code>region</code> || IETF language region subtag || – ||
|-
|<code>variant</code> || IETF language variant subtag || – ||
|-
|<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || <code>script</code> ||
|-
|<code>italic</code> || {{crossref|see table "lang-xx {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code>
|-
|<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – ||
|-
|<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – ||
|-
|<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – ||
|-
|}
{| class="wikitable"
|+lang-xx {{pipe}}italic= parameter operation
|-
!{{pipe}}italic= value !! description !! example code !! result !! html markup
|-
|rowspan="4"| {{plainlist|
*parameter not present;
*parameter present, not set;
*invalid value}}
|rowspan="7"| {{plainlist|
*module applies style from:
* template setting, or
* {{para|script|latn}};
*else inherits from external markup;
*invalid values treated as default}}
| <code><nowiki>{{lang-ru|тундра}}</nowiki></code> || {{lang-ru|тундра}} || {{code|{{lang-ru|тундра}}}}
|-
| <code>{{deprecated code|red=yes|<nowiki>{{lang-ru|tûndra}}</nowiki>}}</code> || {{lang-ru|tûndra}} || {{code|{{lang-ru|tûndra}}}}<br />Incorrect markup; this requires {{para|script|latn}}.
|-
| <code><nowiki>{{lang-fr|toundra}}</nowiki></code> || {{lang-fr|toundra}} || {{code|{{lang-fr|toundra}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra}}</nowiki></code> || {{lang-ru|script=latn|tûndra}} || {{code|{{lang-ru|script=latn|tûndra}}}}
|-
|rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang-ru|тундра|italic=default}}</nowiki></code> || {{lang-ru|тундра|italic=default}} || {{code|{{lang-ru|тундра|italic=default}}}}
|-
| <code><nowiki>{{lang-fr|toundra|italic=default}}</nowiki></code> || {{lang-fr|toundra|italic=default}} || {{code|{{lang-fr|toundra|italic=default}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=default}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=default}} || {{code|{{lang-ru|script=latn|tûndra|italic=default}}}}
|-
|rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist|
*module applies upright style;
*overrides {{para|script|latn}};
*overrides external markup}}
| <code><nowiki>{{lang-ru|тундра|italic=no}}</nowiki></code> || {{lang-ru|тундра|italic=no}} || {{code|{{lang-ru|тундра|italic=no}}}}
|-
| <code><nowiki>{{lang-fr|toundra|italic=no}}</nowiki></code> || {{lang-fr|toundra|italic=no}} || {{code|{{lang-fr|toundra|italic=no}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=no}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=no}} || {{code|{{lang-ru|script=latn|tûndra|italic=no}}}}
|-
| <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=no}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=no}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=no}}''}}
|-
|rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist|
*module applies italic style;
*ignores {{para|script|latn}}}}
| <code><nowiki>{{lang-ru|тундра|italic=yes}}</nowiki></code> || {{lang-ru|тундра|italic=yes}} || {{code|{{lang-ru|тундра|italic=yes}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=yes}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=yes}} || {{code|{{lang-ru|script=latn|tûndra|italic=yes}}}}
|-
|rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inherits style from external markup;
*overrides {{para|script|latn}}}}
| <code><nowiki>{{lang-ru|тундра|italic=unset}}</nowiki></code> || {{lang-ru|тундра|italic=unset}} || {{code|{{lang-ru|тундра|italic=unset}}}}
|-
| <code><nowiki>''{{lang-ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang-ru|тундра|italic=unset}}'' || {{code|''{{lang-ru|тундра|italic=unset}}''}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=unset}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=unset}} || {{code|{{lang-ru|script=latn|tûndra|italic=unset}}}}
|-
| <code><nowiki>''{{lang-ru|script=latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang-ru|script=latn|tûndra|italic=unset}}'' || {{code|''{{lang-ru|script=latn|tûndra|italic=unset}}''}}
|-
|rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inverts style in internal markup{{dagger}};
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang-ru|тундра|italic=invert}}</nowiki></code> || {{lang-ru|тундра|italic=invert}} || {{code|{{lang-ru|тундра|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|''тундра''|italic=invert}}</nowiki></code> || {{lang-ru|''тундра''|italic=invert}} || {{code|{{lang-ru|''тундра''|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|tûndra|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|tûndra|italic=invert}} || {{code|{{lang-ru|script=latn|tûndra|italic=invert}}}}
|-
| <code><nowiki>{{lang-ru|script=latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang-ru|script=latn|''tûndra''|italic=invert}} || {{code|{{lang-ru|script=latn|''tûndra''|italic=invert}}}}
|-
|}
{{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}:
:<code><nowiki>{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code>
::{{Lang-de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}
:<code><nowiki>{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code>
::{{Lang-de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}
<section end=lang_xx_parameters />
==lang==
<section begin=lang_parameters /><!-- {{#lst:Template:Lang-x/doc/parameters|lang_parameters}} -->
{| class="wikitable"
|+lang supported parameters
!parameter !! definition !! yields to !! alias
|-
|<code>code</code> || [[IETF language tag]] for the content in <code>text</code> || – || <code><nowiki>{{{1}}}</nowiki></code>
|-
|<code>text</code> || non-English text || – || <code><nowiki>{{{2}}}</nowiki></code>
|-
|<code>rtl</code> || <kbd>yes</kbd> indicates that the writing system used for the content in <code>text</code> is right-to-left; accepted values are: <kbd>no</kbd> (default), <kbd>yes</kbd> || IETF script subtag in <code>code</code> (if provided) ||
|-
|<code>italic</code> || {{crossref|see table "lang {{pipe}}italic{{=}} parameter operation"}}; accepted values are: <kbd>yes</kbd>, <kbd>no</kbd>, <kbd>unset</kbd>, <kbd>invert</kbd>, <kbd>default</kbd> || – || <code>italics</code>,<code>i</code>
|-
|<code>size</code> || specifies font size of the content in <code>text</code>; use a value suitable for use with the CSS <code>font-size</code> property; this should almost always be a relative value supplied in <kbd>{{mxt|%}}</kbd> or <kbd>{{mxt|em}}</kbd> units, not a fixed <kbd>{{!mxt|px}}</kbd> value. || – ||
|-
|<code>nocat</code> || inhibits automatic categorization; mirror version of <code>cat</code>; accepted values are: <kbd>yes</kbd>, <kbd>y</kbd>, <kbd>true</kbd>, <kbd>t</kbd>, <kbd>on</kbd>, <kbd>1</kbd> || – ||
|-
|<code>cat</code> || inhibits automatic categorization; mirror version of <code>nocat</code>; accepted values are: <kbd>no</kbd>, <kbd>n</kbd>, <kbd>false</kbd>, <kbd>f</kbd>, <kbd>off</kbd>, <kbd>0</kbd> || – ||
|-
|}
{| class="wikitable" id="italic parameter"
|+lang {{pipe}}italic= parameter operation
|-
!{{pipe}}italic= value !! description !! example code !! result !! html markup
|-
|rowspan="4"| {{plainlist|
*parameter not present;
*parameter present, not set;
*invalid value}}
|rowspan="7"| {{plainlist|
*module applies style from:
* auto-italics or
* script subtag <code>latn</code>;
*else inherits from external markup;
*invalid values treated as default}}
| <code><nowiki>{{lang|ru|тундра}}</nowiki></code> || {{lang|ru|тундра}} || {{code|{{lang|ru|тундра}}}}
|-
| <code>{{deprecated code|red=yes|<nowiki>{{lang|ru|tûndra}}</nowiki>}}</code> || {{lang|ru|tûndra}} || {{code|{{lang|ru|tûndra}}}}<br />Incorrect markup; this requires {{para||ru-Latn}}.
|-
| <code><nowiki>{{lang|fr|toundra}}</nowiki></code> || {{lang|fr|toundra}} || {{code|{{lang|fr|toundra}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra}}</nowiki></code> || {{lang|ru-Latn|tûndra}} || {{code|{{lang|ru-Latn|tûndra}}}}
|-
|rowspan="3"| <kbd>default</kbd> || <code><nowiki>{{lang|ru|тундра|italic=default}}</nowiki></code> || {{lang|ru|тундра|italic=default}} || {{code|{{lang|ru|тундра|italic=default}}}}
|-
| <code><nowiki>{{lang|fr|toundra|italic=default}}</nowiki></code> || {{lang|fr|toundra|italic=default}} || {{code|{{lang|fr|toundra|italic=default}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=default}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=default}} || {{code|{{lang|ru-Latn|tûndra|italic=default}}}}
|-
|rowspan="4"| <kbd>no</kbd> ||rowspan="4"| {{plainlist|
*module applies upright style;
*overrides auto-italics
*overrides script subtag <code>latn</code>;
*overrides external markup}}
| <code><nowiki>{{lang|ru|тундра|italic=no}}</nowiki></code> || {{lang|ru|тундра|italic=no}} || {{code|{{lang|ru|тундра|italic=no}}}}
|-
| <code><nowiki>{{lang|fr|toundra|italic=no}}</nowiki></code> || {{lang|fr|toundra|italic=no}} || {{code|{{lang|fr|toundra|italic=no}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=no}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=no}} || {{code|{{lang|ru-Latn|tûndra|italic=no}}}}
|-
| <code><nowiki>''{{lang|fr|toundra|italic=no}}''</nowiki></code> || ''{{lang|fr|toundra|italic=no}}'' || {{code|''{{lang|fr|toundra|italic=no}}''}}
|-
|rowspan="2" | <kbd>yes</kbd> ||rowspan="2" | {{plainlist|
*module applies italic style;
*ignores auto-italics;
*ignores script subtag <code>latn</code>}}
| <code><nowiki>{{lang|ru|тундра|italic=yes}}</nowiki></code> || {{lang|ru|тундра|italic=yes}} || {{code|{{lang|ru|тундра|italic=yes}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=yes}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=yes}} || {{code|{{lang|ru-Latn|tûndra|italic=yes}}}}
|-
|rowspan="4"| <kbd>unset</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inherits style from external markup;
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang|ru|тундра|italic=unset}}</nowiki></code> || {{lang|ru|тундра|italic=unset}} || {{code|{{lang|ru|тундра|italic=unset}}}}
|-
| <code><nowiki>''{{lang|ru|тундра|italic=unset}}''</nowiki></code> || ''{{lang|ru|тундра|italic=unset}}'' || {{code|''{{lang|ru|тундра|italic=unset}}''}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=unset}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=unset}} || {{code|{{lang|ru-Latn|tûndra|italic=unset}}}}
|-
| <code><nowiki>''{{lang|ru-Latn|tûndra|italic=unset}}''</nowiki></code> || ''{{lang|ru-Latn|tûndra|italic=unset}}'' || {{code|''{{lang|ru-Latn|tûndra|italic=unset}}''}}
|-
|rowspan="4"| <kbd>invert</kbd> ||rowspan="4"| {{plainlist|
*module applies no style;
*inverts style in internal markup{{dagger}};
*disables auto-italics
*overrides script subtag <code>latn</code>;}}
| <code><nowiki>{{lang|ru|тундра|italic=invert}}</nowiki></code> || {{lang|ru|тундра|italic=invert}} || {{code|{{lang|ru|тундра|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru|''тундра''|italic=invert}}</nowiki></code> || {{lang|ru|''тундра''|italic=invert}} || {{code|{{lang|ru|''тундра''|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru-Latn|tûndra|italic=invert}}</nowiki></code> || {{lang|ru-Latn|tûndra|italic=invert}} || {{code|{{lang|ru-Latn|tûndra|italic=invert}}}}
|-
| <code><nowiki>{{lang|ru-Latn|''tûndra''|italic=invert}}</nowiki></code> || {{lang|ru-Latn|''tûndra''|italic=invert}} || {{code|{{lang|ru-Latn|''tûndra''|italic=invert}}}}
|-
|}
{{dagger}} compare {{para|italic|invert}} to {{para|italic|unset}}:
:<code><nowiki>{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}</nowiki></code>
::{{Lang|de|... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.|italic=invert}}
:<code><nowiki>{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}</nowiki></code>
::{{Lang|de|''... ein neues Opernprojekt in Angriff: ''Das Käthchen von Heilbronn'', nach Heinrich von Kleists gleichnamigem Drama.''|italic=unset}}
<section end=lang_parameters />
9f872259d64409fe61de99a33ab37b30ea8b89c5
Module:Transclusion count/data/L
828
1008
2213
2212
2023-10-01T14:12:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/L]]
Scribunto
text/plain
return {
["LASTYEAR"] = 711000,
["LAT"] = 3600,
["LCAuth"] = 3400,
["LDSproject"] = 2800,
["LTU"] = 4300,
["LUX"] = 2300,
["LVA"] = 4200,
["La"] = 453000,
["Label"] = 6300,
["LabourProject"] = 3100,
["Lafc"] = 5500,
["Lake_project"] = 5200,
["Lang"] = 354000,
["Lang-ar"] = 42000,
["Lang-az"] = 4500,
["Lang-ba"] = 3400,
["Lang-be"] = 4300,
["Lang-bg"] = 10000,
["Lang-bn"] = 7600,
["Lang-cs"] = 3600,
["Lang-cy"] = 3800,
["Lang-da"] = 3600,
["Lang-de"] = 41000,
["Lang-el"] = 23000,
["Lang-en"] = 17000,
["Lang-es"] = 19000,
["Lang-et"] = 2200,
["Lang-fa"] = 76000,
["Lang-fi"] = 3000,
["Lang-fr"] = 24000,
["Lang-ga"] = 7600,
["Lang-gd"] = 3800,
["Lang-gr"] = 2700,
["Lang-grc"] = 7300,
["Lang-he"] = 16000,
["Lang-hr"] = 3000,
["Lang-hu"] = 9500,
["Lang-hy"] = 6700,
["Lang-id"] = 2200,
["Lang-it"] = 12000,
["Lang-ja"] = 4500,
["Lang-ka"] = 5400,
["Lang-kk"] = 2600,
["Lang-ko"] = 3700,
["Lang-ku"] = 4200,
["Lang-la"] = 12000,
["Lang-lt"] = 2200,
["Lang-lv"] = 2100,
["Lang-mk"] = 3600,
["Lang-ms"] = 2600,
["Lang-my"] = 4700,
["Lang-ne"] = 3400,
["Lang-nl"] = 4900,
["Lang-no"] = 6100,
["Lang-oc"] = 7100,
["Lang-pl"] = 8600,
["Lang-pt"] = 6800,
["Lang-ro"] = 3800,
["Lang-ru"] = 92000,
["Lang-rus"] = 3100,
["Lang-sa"] = 2300,
["Lang-si"] = 2000,
["Lang-sl"] = 3900,
["Lang-sq"] = 3500,
["Lang-sr"] = 4900,
["Lang-sr-Cyrl"] = 13000,
["Lang-sr-cyr"] = 5400,
["Lang-sr-cyrl"] = 3000,
["Lang-sv"] = 6500,
["Lang-ta"] = 2600,
["Lang-th"] = 11000,
["Lang-tr"] = 7600,
["Lang-uk"] = 19000,
["Lang-ur"] = 9300,
["Lang-zh"] = 72000,
["Lang2iso"] = 5400,
["Language_with_name"] = 9200,
["Languages"] = 2700,
["Large"] = 229000,
["Large_category_TOC"] = 11000,
["Large_category_TOC/tracking"] = 11000,
["Last_edited_by"] = 68000,
["Last_word"] = 20000,
["LaunchesByYear_footer"] = 3300,
["LaunchesByYear_header"] = 3300,
["Lc"] = 8900,
["Lcfirstletter"] = 2500,
["Lead_too_short"] = 8900,
["League_icon"] = 3300,
["Leagueicon"] = 3100,
["Leave_feedback/link"] = 75000,
["Left"] = 8600,
["Legend"] = 31000,
["Legend/styles.css"] = 129000,
["Legend0"] = 8100,
["Legend2"] = 18000,
["Legend_inline"] = 21000,
["LepIndex"] = 12000,
["LepidopteraTalk"] = 56000,
["Letter-NumberCombDisambig"] = 3700,
["Letter–number_combination_disambiguation"] = 4900,
["Libera.Chat"] = 11000,
["Library_link_about"] = 3900,
["Library_resources_box"] = 4000,
["Librivox_author"] = 6700,
["Librivox_book"] = 3600,
["License_migration"] = 52000,
["License_migration_complete"] = 23000,
["License_migration_is_redundant"] = 7600,
["License_migration_not_eligible"] = 6700,
["License_migration_redundant"] = 22000,
["Like"] = 2400,
["Like_resume"] = 3700,
["Likely"] = 4500,
["Line_link"] = 10000,
["Linescore_Amfootball"] = 2300,
["LinkCatIfExists2"] = 58000,
["LinkStatusLocal"] = 44000,
["LinkSummary"] = 241000,
["LinkSummaryLive"] = 8100,
["Link_if_exists"] = 75000,
["Link_note"] = 64000,
["Link_summary"] = 254000,
["Link_target"] = 14000,
["Linkcolor"] = 2300,
["Linkless_exists"] = 15000,
["Linksummarylive"] = 4000,
["Linktext"] = 22000,
["List-Class"] = 16000,
["Listen"] = 14000,
["Listen_live"] = 2300,
["Lists_of_people_editnotice"] = 2600,
["Lit"] = 5000,
["Literal_translation"] = 10000,
["Lnl"] = 8100,
["LoMP"] = 4200,
["Location_map"] = 711000,
["Location_map+"] = 25000,
["Location_map_data_documentation"] = 6400,
["Location_map_many"] = 4100,
["Location_map~"] = 24000,
["Log"] = 3600,
["Logo_fur"] = 30000,
["Logo_requested"] = 3500,
["London_Gazette"] = 33000,
["Long_plot"] = 3900,
["Longitem"] = 660000,
["Longlink"] = 6400,
["Look_from"] = 9300,
["Lookfrom"] = 4900,
["Loop"] = 104000,
["Loss"] = 3000,
["Low-Class"] = 15000,
["Low-importance"] = 15000,
["Lower"] = 8000,
["Lowercase"] = 5200,
["Lowercase_title"] = 15000,
["Lowercasetitle"] = 2400,
["Lt"] = 2400,
["Lua"] = 9800,
["Lx"] = 22000,
["Module:Labelled_list_hatnote"] = 545000,
["Module:Lang"] = 1470000,
["Module:Lang-zh"] = 72000,
["Module:Lang/ISO_639_synonyms"] = 1470000,
["Module:Lang/data"] = 1470000,
["Module:Lang/documentor_tool"] = 3900,
["Module:Lang/tag_from_name"] = 3000,
["Module:Language"] = 2900,
["Module:Language/data"] = 2900,
["Module:Language/data/ISO_639-1"] = 9300,
["Module:Language/data/ISO_639-2"] = 2900,
["Module:Language/data/ISO_639-3_(dep)"] = 20000,
["Module:Language/data/ISO_639_deprecated"] = 20000,
["Module:Language/data/ISO_639_name_to_code"] = 5400,
["Module:Language/data/ISO_639_override"] = 20000,
["Module:Language/data/iana_languages"] = 1470000,
["Module:Language/data/iana_regions"] = 1470000,
["Module:Language/data/iana_scripts"] = 1470000,
["Module:Language/data/iana_suppressed_scripts"] = 1470000,
["Module:Language/data/iana_variants"] = 1470000,
["Module:Large_category_TOC"] = 11000,
["Module:Large_category_TOC/styles.css"] = 11000,
["Module:Latin"] = 8300,
["Module:Librivox_book"] = 3600,
["Module:Lighthouse_tracking"] = 2600,
["Module:List"] = 2140000,
["Module:Listen"] = 14000,
["Module:Listen/styles.css"] = 13000,
["Module:Location_map"] = 745000,
["Module:Location_map/data/Antarctica"] = 2700,
["Module:Location_map/data/Arkansas"] = 3300,
["Module:Location_map/data/Australia"] = 2200,
["Module:Location_map/data/Australia_New_South_Wales"] = 3600,
["Module:Location_map/data/Australia_Queensland"] = 6000,
["Module:Location_map/data/Australia_South_Australia"] = 2400,
["Module:Location_map/data/Austria"] = 3400,
["Module:Location_map/data/Azerbaijan"] = 4900,
["Module:Location_map/data/Bangladesh"] = 2000,
["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400,
["Module:Location_map/data/Brazil"] = 4800,
["Module:Location_map/data/California"] = 6000,
["Module:Location_map/data/Canada"] = 4600,
["Module:Location_map/data/Canada_Alberta"] = 2400,
["Module:Location_map/data/Canada_British_Columbia"] = 3100,
["Module:Location_map/data/Canada_Ontario"] = 2400,
["Module:Location_map/data/China"] = 2900,
["Module:Location_map/data/Croatia"] = 3500,
["Module:Location_map/data/Czech_Republic"] = 6800,
["Module:Location_map/data/Estonia"] = 3000,
["Module:Location_map/data/Europe"] = 4300,
["Module:Location_map/data/Florida"] = 2600,
["Module:Location_map/data/France"] = 40000,
["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400,
["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900,
["Module:Location_map/data/France_Grand_Est"] = 5300,
["Module:Location_map/data/France_Hauts-de-France"] = 3900,
["Module:Location_map/data/France_Normandy"] = 3400,
["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800,
["Module:Location_map/data/France_Occitanie"] = 4700,
["Module:Location_map/data/Germany"] = 17000,
["Module:Location_map/data/Germany_Bavaria"] = 2900,
["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600,
["Module:Location_map/data/Greece"] = 4000,
["Module:Location_map/data/Hungary"] = 2800,
["Module:Location_map/data/Illinois"] = 3400,
["Module:Location_map/data/India"] = 23000,
["Module:Location_map/data/India3"] = 2900,
["Module:Location_map/data/India_Andhra_Pradesh"] = 2500,
["Module:Location_map/data/India_Karnataka"] = 2100,
["Module:Location_map/data/India_Kerala"] = 2700,
["Module:Location_map/data/India_Maharashtra"] = 2700,
["Module:Location_map/data/India_Punjab"] = 2200,
["Module:Location_map/data/India_Tamil_Nadu"] = 3100,
["Module:Location_map/data/India_Uttar_Pradesh"] = 3200,
["Module:Location_map/data/India_West_Bengal"] = 3300,
["Module:Location_map/data/Indiana"] = 3400,
["Module:Location_map/data/Iowa"] = 3000,
["Module:Location_map/data/Iran"] = 50000,
["Module:Location_map/data/Ireland"] = 3600,
["Module:Location_map/data/Italy"] = 12000,
["Module:Location_map/data/Japan"] = 14000,
["Module:Location_map/data/Maine"] = 2000,
["Module:Location_map/data/Massachusetts"] = 4700,
["Module:Location_map/data/Mexico"] = 3400,
["Module:Location_map/data/Michigan"] = 3800,
["Module:Location_map/data/Minnesota"] = 4600,
["Module:Location_map/data/Nepal"] = 4600,
["Module:Location_map/data/Netherlands"] = 3000,
["Module:Location_map/data/New_York"] = 8100,
["Module:Location_map/data/North_Carolina"] = 3500,
["Module:Location_map/data/Norway"] = 4400,
["Module:Location_map/data/Ohio"] = 2200,
["Module:Location_map/data/Pakistan"] = 2800,
["Module:Location_map/data/Pennsylvania"] = 5900,
["Module:Location_map/data/Peru"] = 2900,
["Module:Location_map/data/Philippines"] = 3100,
["Module:Location_map/data/Poland"] = 52000,
["Module:Location_map/data/Queensland"] = 2200,
["Module:Location_map/data/Romania"] = 5900,
["Module:Location_map/data/Russia"] = 26000,
["Module:Location_map/data/Russia_Bashkortostan"] = 4500,
["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200,
["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800,
["Module:Location_map/data/Serbia"] = 4000,
["Module:Location_map/data/Slovakia"] = 2100,
["Module:Location_map/data/Slovenia"] = 6700,
["Module:Location_map/data/South_Africa"] = 3200,
["Module:Location_map/data/Spain"] = 7700,
["Module:Location_map/data/Sweden"] = 2800,
["Module:Location_map/data/Switzerland"] = 6200,
["Module:Location_map/data/Syria"] = 2200,
["Module:Location_map/data/Texas"] = 3400,
["Module:Location_map/data/Turkey"] = 18000,
["Module:Location_map/data/USA"] = 110000,
["Module:Location_map/data/USA_Alabama"] = 2300,
["Module:Location_map/data/USA_Alaska"] = 2100,
["Module:Location_map/data/USA_Arizona"] = 2100,
["Module:Location_map/data/USA_Arkansas"] = 3500,
["Module:Location_map/data/USA_California"] = 7700,
["Module:Location_map/data/USA_Colorado"] = 2200,
["Module:Location_map/data/USA_Florida"] = 3300,
["Module:Location_map/data/USA_Georgia"] = 2000,
["Module:Location_map/data/USA_Illinois"] = 3700,
["Module:Location_map/data/USA_Indiana"] = 3600,
["Module:Location_map/data/USA_Iowa"] = 3200,
["Module:Location_map/data/USA_Kentucky"] = 3200,
["Module:Location_map/data/USA_Maine"] = 2200,
["Module:Location_map/data/USA_Maryland"] = 2500,
["Module:Location_map/data/USA_Massachusetts"] = 5000,
["Module:Location_map/data/USA_Michigan"] = 4200,
["Module:Location_map/data/USA_Minnesota"] = 5000,
["Module:Location_map/data/USA_Missouri"] = 2100,
["Module:Location_map/data/USA_New_Jersey"] = 2900,
["Module:Location_map/data/USA_New_York"] = 9100,
["Module:Location_map/data/USA_North_Carolina"] = 4300,
["Module:Location_map/data/USA_Ohio"] = 2500,
["Module:Location_map/data/USA_Oregon"] = 2600,
["Module:Location_map/data/USA_Pennsylvania"] = 7000,
["Module:Location_map/data/USA_Texas"] = 3800,
["Module:Location_map/data/USA_Virginia"] = 5100,
["Module:Location_map/data/USA_Washington"] = 2900,
["Module:Location_map/data/USA_West_Virginia"] = 4400,
["Module:Location_map/data/USA_Wisconsin"] = 2700,
["Module:Location_map/data/Ukraine"] = 3200,
["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200,
["Module:Location_map/data/Virginia"] = 4000,
["Module:Location_map/data/Washington"] = 2200,
["Module:Location_map/data/West_Virginia"] = 4100,
["Module:Location_map/data/Wisconsin"] = 2300,
["Module:Location_map/data/doc"] = 6400,
["Module:Location_map/info"] = 6400,
["Module:Location_map/multi"] = 29000,
["Module:Location_map/styles.css"] = 740000,
["Module:London_Gazette_util"] = 33000,
["Module:Lua_banner"] = 9800,
}
10610ced68ec302961944d7f5a685ac098e736e5
Template:Lang-el/doc
10
1009
2215
2214
2023-10-01T14:12:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lang-el/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{COinS safe|n}}
{{high-use|18556}}
{{lua|Module:lang}}
{{hatnote|'''This template is only for tagging [[Modern Greek]] text.''' For Ancient Greek, see {{tlx|lang-grc}}; for Medieval Greek, see {{tlx|lang-gkm}}. For custom labels, no labels, or other uses, see {{tlx|lang}}.}}
==Usage==
{{#invoke:Lang/documentor tool|lang_xx_settings|template={{ROOTPAGENAME}}}}
The primary objective of this template (and of the other {{tlx|lang}} templates) is to tag non-English text so that ''both'' human ''and'' machine readers are able to properly interpret, display and understand non-English text as part of an effort to move towards a [[semantic web]]. To that end, proper use of these templates helps web browsers to choose the correct display font, text-to-speech screen readers to select a more appropriate pronunciation, search engines to better index and relate the context of the content, translation services to properly interpret the words, spell checkers to properly allow and/or require diacritics, and so on.
===Important metadata===
''Regardless of the label that is displayed in front of the text'' (e.g.: "Ancient Greek:" vs. "Greek:" vs. "Modern Greek"), this template will ''always'' wrap the supplied Greek text inside of appropriate HTML {{tag|span}} tags – that is to say that the Greek text will be tagged using the [[ISO 639-1]] language code for '''Modern Greek''': "'''el'''". The following example wikicode:
::{{tlc|lang-el|άτομο}}
produces the following HTML:
::<code><nowiki><a href="/wiki/Greek language" title="Greek language">Greek</a>:</nowiki></code>
::<code><nowiki><span </nowiki>'''lang="el" xml:lang="el"'''<nowiki>>άτομο</span></nowiki></code>
This [[metadata]] identifies the enclosed text as Modern Greek for the benefit of search engines, browsers, screen readers, translators, typesetters, and so on. To these "non-human readers", Modern Greek (encoded as "el") has important distinctions from e.g. Ancient Greek (appropriately encoded using "grc" by other {{tlx|lang}} templates). '''For that reason, this template should never be used with Ancient or Medieval or other Greek text'''.
== Parameters ==
{{#lst:Template:Lang-x/doc/parameters|lang_xx_parameters}}
==Syntax==
:'''<nowiki>{{lang-el</nowiki>'''
::'''|{{var|Modern Greek text}}''' – using the Greek alphabet (with [[Greek diacritics|diacritics]]). ''(mandatory)''
::'''|{{var|<nowiki>links=value</nowiki>}}''' – valid values: '''yes''' to have the language name linked (default) and '''no''' to prevent the language name from being linked. '' (optional)''
::'''|{{var|<nowiki>lit=string</nowiki>}}''' – valid strings are English translations of the Greek text. ''(optional)''
::'''|{{var|<nowiki>translit=string</nowiki>}}''' – valid strings are transliterations (with the [[Latin script]]) of the Greek text. ''(optional)''
:'''<nowiki>}}</nowiki>'''
==Examples==
:{| class="wikitable"
|-
! Code
! Result
|-
| {{tlf|lang-el|άτομο}}
| {{lang-el|άτομο}}
|-
| {{tlf|lang-el|άτομο|links{{=}}yes}}
| {{lang-el|άτομο|links=yes}}
|-
| {{tlf|lang-el|άτομο|links{{=}}no}}
| {{lang-el|άτομο|links=no}}
|-
| <code><nowiki>'''Nea Dimokratia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}</nowiki></code>
| '''Nea Dimokratia''' - {{Lang-el|Νέα Δημοκρατία|translit=Nea Dimokratia}}
|-
| <code><nowiki>'''Eleftherotypia''' -</nowiki></code><br/><code><nowiki>{{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}</nowiki></code>
| '''Eleftherotypia''' - {{Lang-el|Ελευθεροτυπία|lit=Freedom of the Press}}
|}
== Tracking categories ==
* Articles using this template are automatically placed in {{clc|Articles containing Greek-language text}}.
* {{clc|Instances of Lang-el using second unnamed parameter}} - nothing inherently wrong if supplied <code>{{{2}}}</code>, but was created to check for compliance with template scheme.
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Text",
"description": "The Greek text to be displayed",
"type": "line",
"required": true
},
"links": {
"label": "Link?",
"description": "If a link to the article Greek language is included",
"type": "boolean",
"default": "yes"
},
"lit": {
"label": "Lit",
"description": "English translation of Greek text",
"type": "string"
},
"translit": {
"label": "Transliteration",
"description": "A Latin alphabet respelling of Greek text",
"suggested": true,
"type": "string"
},
"translit-std": {
"label": "Transliteration standard",
"description": "The identifier for the standard used for transliteration. Accepted value must be one of: ISO, DIN, IAST, ALA, and ALA-LC.",
"suggested": true,
"example": "ISO",
"type": "string"
},
"label": {
"label": "Label",
"description": "label to be used instead of template-provided language label; may be wikilinked; special keyword none causes the template to render without any labels (including transliteration and translation labels)",
"example": "none"
}
},
"description": "Insert Greek text. This template should only be used with modern Greek."
}
</templatedata>
== See also ==
* {{tlx|lang-gkm}} for Medieval Greek.
* {{tlx|lang-grc}} for Ancient Greek.
* {{tlx|lang-grc-gre}} for which the Ancient Greek description is not satisfactory or limiting.
* {{tlx|lang|2=el}} tags Modern Greek text, without the label (for use with custom display, and other uses).
* {{tlx|lang|2=ell}} tags Modern Greek text, without the label (for use with custom display, and other uses).
* {{tlx|lang|2=grc}} tags Ancient Greek text, without the label (for use with custom display, and other uses).
* {{tlx|transl|2=el}} tags text as "Greek Transliteration" (has no visible effect other than said tag when pointer is placed on text).
<includeonly>{{Sandbox other||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Greek multilingual support templates|{{PAGENAME}}]]
[[Category:Lang-x templates|el]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
9299cd14ca31df398ffd6c1bbb96c9a03855f67c
Template:Greece Old Style dating
10
1010
2217
2216
2023-10-01T14:13:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Greece_Old_Style_dating]]
wikitext
text/x-wiki
#REDIRECT [[Template:Greece Old Style dates]]
{{Redirect category shell|
{{R from move}}
}}
072c262c3e4b7221bec65f6293cf294008cd349f
Template:Redirect category shell
10
1011
2219
2218
2023-10-01T14:13:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Redirect_category_shell]]
wikitext
text/x-wiki
__NONEWSECTIONLINK__{{Mbox
| name = Redirect category shell
| type = move
| image = none
| style = margin-top: 1.1em; border: solid 1px darkblue; border-left-width: 0.5em;
| textstyle = padding-top: 0.9em; padding-bottom: 0.9em;
| text = '''This {{Talk other|talk page|page}} is a [[Wikipedia:Redirect|redirect]]. <small>The following [[Wikipedia:Categorizing redirects|categories]] are used to track and monitor this redirect:</small>'''{{#if:{{{h|}}}
|:: ''{{{h}}}''
}}<!--
Automatically detect protected redirects:
--><includeonly>{{#switch: {{PROTECTIONLEVEL:move}}
|sysop|templateeditor|extendedconfirmed={{pp-move|small=yes}}
}}{{#switch: {{PROTECTIONLEVEL:edit}}
|sysop={{R protected|embed=yes}}
|templateeditor={{pp-protected|small=yes}}{{R template protected|embed=yes}}
|extendedconfirmed={{pp-protected|small=yes}}{{R extended-protected|embed=yes}}
|autoconfirmed={{pp-protected|small=yes}}{{R semi-protected|embed=yes}}
| <!--Not protected, or only semi-move-protected-->
}}</includeonly>{{#if: {{{1|}}}||<includeonly>
* {{red|'''Important – Please Read! {{maroon|This template should {{em|not}} be applied without parameters by bot nor by any automated or semi-automated process. It should {{em|not}} be used without parameters {{em|unless you want to learn how to categorize redirects}}. For editors who want to learn how to categorize redirects, this template is a {{em|learning tool}}. {{em|Only}} those editors who intend to return to the redirect to learn which rcats to use should apply this template without parameters, or with an empty first parameter!}}'''}}</includeonly>
* '''Manifold sort''': If help is needed to determine appropriate categories, then this redirect populates '''{{Cat|Miscellaneous redirects}}'''. Monitors of that category will check this redirect and add or remove [[Wikipedia:Categorizing redirects|rcats]] as needed.{{#ifeq: {{lc:{{{nocat|false}}}}} | false |{{{category|<includeonly>[[Category:Miscellaneous redirects]]</includeonly>}}}}}
}}
{{#if: {{{2|}}}|{{{2}}}|{{{1|}}}}}{{#if: {{{1|}}}{{{2|}}}||{{#ifeq: {{ROOTPAGENAME}}|Redirect category shell||[[Category:Redirect category shell without parameters]]}}}}
''<small>When appropriate, [[Wikipedia:Protection policy|protection levels]] are automatically sensed, described and categorized.</small>''
}}<noinclude>
{{Documentation}}
</noinclude>
554b3ada8f7ca8c0e840ea18a0344d3e94d13c38
Template:Talk other
10
1012
2221
2220
2023-10-01T14:13:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Talk_other]]
wikitext
text/x-wiki
{{#switch:
<!--If no or empty "demospace" parameter then detect namespace-->
{{#if:{{{demospace|}}}
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"-->
| {{#ifeq:{{NAMESPACE}}|{{TALKSPACE}}
| talk
| other
}}
}}
| talk = {{{1|}}}
| other
| #default = {{{2|}}}
}}<!--End switch--><noinclude>
{{documentation}}
</noinclude>
a8a973e372c5984a59953eb0cb4767a03dc6cd3c
Template:Redirect template
10
1013
2223
2222
2023-10-01T14:13:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Redirect_template]]
wikitext
text/x-wiki
{{#invoke:Redirect template|main}}<noinclude>
{{Documentation}}</noinclude>
0b8db63883716ef3a4d3a9492f8571ae96028547
Template:R from move
10
1014
2225
2224
2023-10-01T14:13:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:R_from_move]]
wikitext
text/x-wiki
<noinclude>{{hatnote|This rcat template is automatically added to all new redirects that result from page moves; it must be added manually to older redirects when appropriate.}}{{This is a redirect/rcat}}
</noinclude>{{Redirect template
|id=R from move
|name=From a page move
|from=a page that has been moved (renamed)
|info=This page was kept as a redirect to avoid breaking links, both internal and external, that may have been made to the old page name.
|all category=Redirects from moves
}}<includeonly>{{R from move/except}}</includeonly><noinclude>
<!-- Place categories on /doc subpage; interwikis go to Wikidata. -->
{{Documentation}}
</noinclude>
a54816f5e100ad6245cbc939f9c0c04671b65c05
Template:R from move/except
10
1015
2227
2226
2023-10-01T14:13:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:R_from_move/except]]
wikitext
text/x-wiki
<noinclude>This is the exception page for {{tl|R from move}}. This page makes exceptions that include certain pages that should not inhabit either {{cat|Unsynchronized talk page redirects}} or {{cat|Redirects from moves}}. If necessary, new exceptions may be added with no need to edit the main template, {{tl|R from move}}.
</noinclude>{{#switch: {{FULLPAGENAME}}
|MediaWiki:Move-redirect-text=
|Template:R from move/except=
|#default=[[Category:Redirects from moves]]
}}{{#ifeq: {{NAMESPACENUMBER}}|1|
{{#ifeq: {{#invoke:redirect|isRedirect|{{FULLPAGENAME}}}}|yes|
{{#ifeq: {{#invoke:redirect|isRedirect|{{SUBJECTPAGENAME}}}}|yes|
{{#ifeq: {{PAGENAME:{{#invoke:redirect|main|{{TALKPAGENAME}}}}}}|{{PAGENAME:{{#invoke:redirect|main|{{SUBJECTPAGENAME}}}}}}||
{{#ifeq: {{FULLPAGENAME}}|{{SUBJECTPAGENAME}}||
{{#ifeq: {{Str left|{{PAGENAME}}|16}}|List of ships of||[[Category:Unsynchronized talk page redirects]]
}}
}}
}}
|{{#ifexist:{{SUBJECTPAGENAME}}|
{{#ifeq: {{SUBJECTPAGENAME}}|{{Target of|{{SUBJECTPAGENAME:{{Target of|{{FULLPAGENAME}}}}}}}}|[[Category:Articles with unsynchronized talk page redirects]]|
{{#ifexpr: {{#invoke:string|find|{{#invoke:page|getContent|{{SUBJECTPAGENAME}}|as=raw}}|#invoke:RfD}}|[[Category:Redirects for discussion with talk page redirects]]|[[Category:Articles with talk page redirects]]}}}}
}}
}}
|{{error|Page is not a redirect, misplaced [[Template:R from move]]}}
}}
}}<noinclude>
{{Documentation|Template:R from move/doc}}
</noinclude>
58acac66a7de5fe499db8890decc66a5ef426bd4
Module:Redirect template
828
1016
2229
2228
2023-10-01T14:13:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Redirect_template]]
Scribunto
text/plain
require('strict')
local p = {}
-- key is beginning of arg name. value is table with namespace number and link
-- alternatively, a function taking the namespace number and returning a validity
-- can be used
local namespaceCategories = {
all = { function() return true end },
main = { 0, '[[wp:mainspace|main]]' },
help = { 12, '[[wp:help namespace|help]]' },
portal = { 100, '[[wp:portal|portal]]' },
talk = { function(n) return n > 0 and n%2 == 1 end, '[[Help:Talk pages|talk]]' },
template = { 10, '[[wp:template namespace|template]]' },
wikipedia = { 4, '[[wp:project namespace|Wikipedia project]]' },
category = { 14, '[[wp:categorization|category]]' },
user = { 2, '[[wp:user pages|user]]' },
}
-- remove whitespaces from beginning and end of args
local function valueFunc(key, val)
if type(val) == 'string' then
val = val:match('^%s*(.-)%s*$')
if val == '' then
return nil
end
end
return val
end
local function getPrettyName(args)
for k in pairs(namespaceCategories) do
if args[k .. ' category'] then
return string.format("'''[[:Category:%s|%s]]''': ", args[k .. ' category'], args.name)
end
end
return string.format("'''%s''': ", args.name)
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:Redirect template', valueFunc = valueFunc})
local namespace = mw.title.getCurrentTitle().namespace
--- XXX: this is a HORRIBLE HACK. kill it with fire as soon as https://bugzilla.wikimedia.org/show_bug.cgi?id=12974 is fixed
local beCompatibleWithBug12974 = args.info and (args.info:find('^[:;#*]', 1) == 1 or args.info:find('{|', 1, true) == 1) and '\n' or ' '
local content = string.format('\n<div class="rcat %s">\n*%sThis is a redirect%s%s.%s%s\n</div>',
args.id and ('rcat-' .. string.gsub(args.id, ' ', '_')) or '',
args.name and getPrettyName(args) or '',
args.from and (' from ' .. args.from) or '',
args.to and (' to ' .. args.to) or '',
args.info and beCompatibleWithBug12974 or '',
args.info or ''
)
for k,v in pairs(namespaceCategories) do
if args[k .. ' category'] then
if type(v[1]) == 'function' and v[1](namespace) or v[1] == namespace then
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args[k .. ' category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args[k .. ' category'])
end
elseif args['other category'] then
if args.sortkey then
content = content .. string.format('[[Category:%s|%s]]', args['other category'], args.sortkey)
else
content = content .. string.format('[[Category:%s]]', args['other category'])
end
else
content = content .. frame:expandTemplate{title = 'Incorrect redirect template', args = {v[2]}}
end
end
end
if namespace == 0 then
local yesno = require('Module:Yesno')
if yesno(args.printworthy) == true then
return content .. '[[Category:Printworthy redirects]]'
elseif yesno(args.printworthy) == false then
return content .. '[[Category:Unprintworthy redirects]]'
end
end
return content
end
return p
bcc2d5353cffbfcb00be2d9a7c2f9f276613e488
Module:Message box/ambox.css
828
1017
2231
2230
2023-10-01T14:14:00Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Message_box/ambox.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.ambox {
border: 1px solid #a2a9b1;
/* @noflip */
border-left: 10px solid #36c; /* Default "notice" blue */
background-color: #fbfbfb;
box-sizing: border-box;
}
/* Single border between stacked boxes. Take into account base templatestyles,
* user styles, and Template:Dated maintenance category.
* remove link selector when T200206 is fixed
*/
.ambox + link + .ambox,
.ambox + link + style + .ambox,
.ambox + link + link + .ambox,
/* TODO: raise these as "is this really that necessary???". the change was Dec 2021 */
.ambox + .mw-empty-elt + link + .ambox,
.ambox + .mw-empty-elt + link + style + .ambox,
.ambox + .mw-empty-elt + link + link + .ambox {
margin-top: -1px;
}
/* For the "small=left" option. */
/* must override .ambox + .ambox styles above */
html body.mediawiki .ambox.mbox-small-left {
/* @noflip */
margin: 4px 1em 4px 0;
overflow: hidden;
width: 238px;
border-collapse: collapse;
font-size: 88%;
line-height: 1.25em;
}
.ambox-speedy {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
background-color: #fee7e6; /* Pink */
}
.ambox-delete {
/* @noflip */
border-left: 10px solid #b32424; /* Red */
}
.ambox-content {
/* @noflip */
border-left: 10px solid #f28500; /* Orange */
}
.ambox-style {
/* @noflip */
border-left: 10px solid #fc3; /* Yellow */
}
.ambox-move {
/* @noflip */
border-left: 10px solid #9932cc; /* Purple */
}
.ambox-protection {
/* @noflip */
border-left: 10px solid #a2a9b1; /* Gray-gold */
}
.ambox .mbox-text {
border: none;
/* @noflip */
padding: 0.25em 0.5em;
width: 100%;
}
.ambox .mbox-image {
border: none;
/* @noflip */
padding: 2px 0 2px 0.5em;
text-align: center;
}
.ambox .mbox-imageright {
border: none;
/* @noflip */
padding: 2px 0.5em 2px 0;
text-align: center;
}
/* An empty narrow cell */
.ambox .mbox-empty-cell {
border: none;
padding: 0;
width: 1px;
}
.ambox .mbox-image-div {
width: 52px;
}
/* Hack around MobileFrontend being opinionated */
html.client-js body.skin-minerva .mbox-text-span {
margin-left: 23px !important;
}
@media (min-width: 720px) {
.ambox {
margin: 0 10%; /* 10% = Will not overlap with other elements */
}
}
29898fdc5160b39a8f580c76efe77afa1f6f58a4
Template:Pp
10
1018
2233
2232
2023-10-01T14:14:03Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pp]]
wikitext
text/x-wiki
{{#invoke:Protection banner|main}}<noinclude>
{{documentation}}
</noinclude>
4b195ffc44cfde864ef77b55a54c006333226ced
Template:Greece Old Style dates
10
1019
2235
2234
2023-10-01T14:14:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Greece_Old_Style_dates]]
wikitext
text/x-wiki
<ref>Note: Greece officially [[Adoption of the Gregorian calendar#Adoption in Eastern Europe|adopted]] the [[Gregorian calendar]] on 16 February 1923 (which became 1 March). All dates prior to that, unless specifically denoted, are [[Old Style]].</ref><noinclude>
[[Category:Greece templates|Old Style dating]]
[[Category:Time, date and calendar templates]]
</noinclude>
e9074de84202392ef3087519a6a003437ebcbfe8
Template:More citations needed
10
1020
2237
2236
2023-10-01T14:14:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:More_citations_needed]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B=
{{Ambox
| name = {{{name|More citations needed}}}
| small = {{#if:{{{small|}}}|left}}
| type = content
| class = ambox-Refimprove
| image = [[File:Question book-new.svg|50x40px|alt=]]
| issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''.
| fix = Please help [[Special:Edit/{{FULLPAGENAME}}|improve this article]] by [[Help:Referencing for beginners|adding citations to reliable sources]]{{#if:{{{1|}}}|{{sp}}in this {{{1}}}}}. Unsourced material may be challenged and removed.{{#if:{{{find2|{{{unquoted|}}}}}}| <br /><small>{{find sources mainspace|{{#if:{{{find|}}}|{{{find}}}|.}}|{{{find2|{{{unquoted|}}}}}}}}</small> |{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} }}
| removalnotice = yes
| talk = {{{talk|}}}
| date = {{{date|}}}
| cat = Articles needing additional references
| all = All articles needing additional references
}}
}}<noinclude>
<!-- Please add categories to the /doc subpage, thanks -->
{{Documentation}}
</noinclude>
f2f3be3f3c3586a16c3e9caeb10bd8b6b751fab3
Template:Ambox
10
1021
2239
2238
2023-10-01T14:14:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ambox]]
wikitext
text/x-wiki
{{#invoke:Message box|ambox}}{{#ifeq:{{{small}}};{{NAMESPACENUMBER}}|left;0|[[Category:Articles using small message boxes]]}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
0c13ec156138ae0499c998cc3d7fbbeac4aeeed6
Module:Category handler
828
143
2241
336
2023-10-01T14:14:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Category_handler]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- --
-- CATEGORY HANDLER --
-- --
-- This module implements the {{category handler}} template in Lua, --
-- with a few improvements: all namespaces and all namespace aliases --
-- are supported, and namespace names are detected automatically for --
-- the local wiki. This module requires [[Module:Namespace detect]] --
-- and [[Module:Yesno]] to be available on the local wiki. It can be --
-- configured for different wikis by altering the values in --
-- [[Module:Category handler/config]], and pages can be blacklisted --
-- from categorisation by using [[Module:Category handler/blacklist]]. --
-- --
--------------------------------------------------------------------------------
-- Load required modules
local yesno = require('Module:Yesno')
-- Lazily load things we don't always need
local mShared, mappings
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function trimWhitespace(s, removeBlanks)
if type(s) ~= 'string' then
return s
end
s = s:match('^%s*(.-)%s*$')
if removeBlanks then
if s ~= '' then
return s
else
return nil
end
else
return s
end
end
--------------------------------------------------------------------------------
-- CategoryHandler class
--------------------------------------------------------------------------------
local CategoryHandler = {}
CategoryHandler.__index = CategoryHandler
function CategoryHandler.new(data, args)
local obj = setmetatable({ _data = data, _args = args }, CategoryHandler)
-- Set the title object
do
local pagename = obj:parameter('demopage')
local success, titleObj
if pagename then
success, titleObj = pcall(mw.title.new, pagename)
end
if success and titleObj then
obj.title = titleObj
if titleObj == mw.title.getCurrentTitle() then
obj._usesCurrentTitle = true
end
else
obj.title = mw.title.getCurrentTitle()
obj._usesCurrentTitle = true
end
end
-- Set suppression parameter values
for _, key in ipairs{'nocat', 'categories'} do
local value = obj:parameter(key)
value = trimWhitespace(value, true)
obj['_' .. key] = yesno(value)
end
do
local subpage = obj:parameter('subpage')
local category2 = obj:parameter('category2')
if type(subpage) == 'string' then
subpage = mw.ustring.lower(subpage)
end
if type(category2) == 'string' then
subpage = mw.ustring.lower(category2)
end
obj._subpage = trimWhitespace(subpage, true)
obj._category2 = trimWhitespace(category2) -- don't remove blank values
end
return obj
end
function CategoryHandler:parameter(key)
local parameterNames = self._data.parameters[key]
local pntype = type(parameterNames)
if pntype == 'string' or pntype == 'number' then
return self._args[parameterNames]
elseif pntype == 'table' then
for _, name in ipairs(parameterNames) do
local value = self._args[name]
if value ~= nil then
return value
end
end
return nil
else
error(string.format(
'invalid config key "%s"',
tostring(key)
), 2)
end
end
function CategoryHandler:isSuppressedByArguments()
return
-- See if a category suppression argument has been set.
self._nocat == true
or self._categories == false
or (
self._category2
and self._category2 ~= self._data.category2Yes
and self._category2 ~= self._data.category2Negative
)
-- Check whether we are on a subpage, and see if categories are
-- suppressed based on our subpage status.
or self._subpage == self._data.subpageNo and self.title.isSubpage
or self._subpage == self._data.subpageOnly and not self.title.isSubpage
end
function CategoryHandler:shouldSkipBlacklistCheck()
-- Check whether the category suppression arguments indicate we
-- should skip the blacklist check.
return self._nocat == false
or self._categories == true
or self._category2 == self._data.category2Yes
end
function CategoryHandler:matchesBlacklist()
if self._usesCurrentTitle then
return self._data.currentTitleMatchesBlacklist
else
mShared = mShared or require('Module:Category handler/shared')
return mShared.matchesBlacklist(
self.title.prefixedText,
mw.loadData('Module:Category handler/blacklist')
)
end
end
function CategoryHandler:isSuppressed()
-- Find if categories are suppressed by either the arguments or by
-- matching the blacklist.
return self:isSuppressedByArguments()
or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist()
end
function CategoryHandler:getNamespaceParameters()
if self._usesCurrentTitle then
return self._data.currentTitleNamespaceParameters
else
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
return mShared.getNamespaceParameters(
self.title,
mappings
)
end
end
function CategoryHandler:namespaceParametersExist()
-- Find whether any namespace parameters have been specified.
-- We use the order "all" --> namespace params --> "other" as this is what
-- the old template did.
if self:parameter('all') then
return true
end
if not mappings then
mShared = mShared or require('Module:Category handler/shared')
mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData
end
for ns, params in pairs(mappings) do
for i, param in ipairs(params) do
if self._args[param] then
return true
end
end
end
if self:parameter('other') then
return true
end
return false
end
function CategoryHandler:getCategories()
local params = self:getNamespaceParameters()
local nsCategory
for i, param in ipairs(params) do
local value = self._args[param]
if value ~= nil then
nsCategory = value
break
end
end
if nsCategory ~= nil or self:namespaceParametersExist() then
-- Namespace parameters exist - advanced usage.
if nsCategory == nil then
nsCategory = self:parameter('other')
end
local ret = {self:parameter('all')}
local numParam = tonumber(nsCategory)
if numParam and numParam >= 1 and math.floor(numParam) == numParam then
-- nsCategory is an integer
ret[#ret + 1] = self._args[numParam]
else
ret[#ret + 1] = nsCategory
end
if #ret < 1 then
return nil
else
return table.concat(ret)
end
elseif self._data.defaultNamespaces[self.title.namespace] then
-- Namespace parameters don't exist, simple usage.
return self._args[1]
end
return nil
end
--------------------------------------------------------------------------------
-- Exports
--------------------------------------------------------------------------------
local p = {}
function p._exportClasses()
-- Used for testing purposes.
return {
CategoryHandler = CategoryHandler
}
end
function p._main(args, data)
data = data or mw.loadData('Module:Category handler/data')
local handler = CategoryHandler.new(data, args)
if handler:isSuppressed() then
return nil
end
return handler:getCategories()
end
function p.main(frame, data)
data = data or mw.loadData('Module:Category handler/data')
local args = require('Module:Arguments').getArgs(frame, {
wrappers = data.wrappers,
valueFunc = function (k, v)
v = trimWhitespace(v)
if type(k) == 'number' then
if v ~= '' then
return v
else
return nil
end
else
return v
end
end
})
return p._main(args, data)
end
return p
b74dd63857b24904ac452429b11213f18647471f
Module:Category handler/data
828
1022
2243
2242
2023-10-01T14:14:50Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Category_handler/data]]
Scribunto
text/plain
-- This module assembles data to be passed to [[Module:Category handler]] using
-- mw.loadData. This includes the configuration data and whether the current
-- page matches the title blacklist.
local data = require('Module:Category handler/config')
local mShared = require('Module:Category handler/shared')
local blacklist = require('Module:Category handler/blacklist')
local title = mw.title.getCurrentTitle()
data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(
title.prefixedText,
blacklist
)
data.currentTitleNamespaceParameters = mShared.getNamespaceParameters(
title,
mShared.getParamMappings()
)
return data
abbc68048ff698e88dda06b64ecf384bbf583120
Module:Category handler/config
828
1023
2245
2244
2023-10-01T14:14:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Category_handler/config]]
Scribunto
text/plain
--------------------------------------------------------------------------------
-- [[Module:Category handler]] configuration data --
-- Language-specific parameter names and values can be set here. --
-- For blacklist config, see [[Module:Category handler/blacklist]]. --
--------------------------------------------------------------------------------
local cfg = {} -- Don't edit this line.
--------------------------------------------------------------------------------
-- Start configuration data --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- Parameter names --
-- These configuration items specify custom parameter names. --
-- To add one extra name, you can use this format: --
-- --
-- foo = 'parameter name', --
-- --
-- To add multiple names, you can use this format: --
-- --
-- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, --
--------------------------------------------------------------------------------
cfg.parameters = {
-- The nocat and categories parameter suppress
-- categorisation. They are used with Module:Yesno, and work as follows:
--
-- cfg.nocat:
-- Result of yesno() Effect
-- true Categorisation is suppressed
-- false Categorisation is allowed, and
-- the blacklist check is skipped
-- nil Categorisation is allowed
--
-- cfg.categories:
-- Result of yesno() Effect
-- true Categorisation is allowed, and
-- the blacklist check is skipped
-- false Categorisation is suppressed
-- nil Categorisation is allowed
nocat = 'nocat',
categories = 'categories',
-- The parameter name for the legacy "category2" parameter. This skips the
-- blacklist if set to the cfg.category2Yes value, and suppresses
-- categorisation if present but equal to anything other than
-- cfg.category2Yes or cfg.category2Negative.
category2 = 'category2',
-- cfg.subpage is the parameter name to specify how to behave on subpages.
subpage = 'subpage',
-- The parameter for data to return in all namespaces.
all = 'all',
-- The parameter name for data to return if no data is specified for the
-- namespace that is detected.
other = 'other',
-- The parameter name used to specify a page other than the current page;
-- used for testing and demonstration.
demopage = 'page',
}
--------------------------------------------------------------------------------
-- Parameter values --
-- These are set values that can be used with certain parameters. Only one --
-- value can be specified, like this: --
-- --
-- cfg.foo = 'value name' -- --
--------------------------------------------------------------------------------
-- The following settings are used with the cfg.category2 parameter. Setting
-- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2
-- is present but equal to anything other than cfg.category2Yes or
-- cfg.category2Negative then it supresses cateogrisation.
cfg.category2Yes = 'yes'
cfg.category2Negative = '¬'
-- The following settings are used with the cfg.subpage parameter.
-- cfg.subpageNo is the value to specify to not categorise on subpages;
-- cfg.subpageOnly is the value to specify to only categorise on subpages.
cfg.subpageNo = 'no'
cfg.subpageOnly = 'only'
--------------------------------------------------------------------------------
-- Default namespaces --
-- This is a table of namespaces to categorise by default. The keys are the --
-- namespace numbers. --
--------------------------------------------------------------------------------
cfg.defaultNamespaces = {
[ 0] = true, -- main
[ 6] = true, -- file
[ 12] = true, -- help
[ 14] = true, -- category
[100] = true, -- portal
[108] = true, -- book
}
--------------------------------------------------------------------------------
-- Wrappers --
-- This is a wrapper template or a list of wrapper templates to be passed to --
-- [[Module:Arguments]]. --
--------------------------------------------------------------------------------
cfg.wrappers = 'Template:Category handler'
--------------------------------------------------------------------------------
-- End configuration data --
--------------------------------------------------------------------------------
return cfg -- Don't edit this line.
373cd107b13a5b00e6a1b7e66a749f12502c849d
Module:Category handler/shared
828
1024
2247
2246
2023-10-01T14:14:51Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Category_handler/shared]]
Scribunto
text/plain
-- This module contains shared functions used by [[Module:Category handler]]
-- and its submodules.
local p = {}
function p.matchesBlacklist(page, blacklist)
for i, pattern in ipairs(blacklist) do
local match = mw.ustring.match(page, pattern)
if match then
return true
end
end
return false
end
function p.getParamMappings(useLoadData)
local dataPage = 'Module:Namespace detect/data'
if useLoadData then
return mw.loadData(dataPage).mappings
else
return require(dataPage).mappings
end
end
function p.getNamespaceParameters(titleObj, mappings)
-- We don't use title.nsText for the namespace name because it adds
-- underscores.
local mappingsKey
if titleObj.isTalkPage then
mappingsKey = 'talk'
else
mappingsKey = mw.site.namespaces[titleObj.namespace].name
end
mappingsKey = mw.ustring.lower(mappingsKey)
return mappings[mappingsKey] or {}
end
return p
d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5
Module:Category handler/blacklist
828
1025
2249
2248
2023-10-01T14:14:52Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Category_handler/blacklist]]
Scribunto
text/plain
-- This module contains the blacklist used by [[Module:Category handler]].
-- Pages that match Lua patterns in this list will not be categorised unless
-- categorisation is explicitly requested.
return {
'^Main Page$', -- don't categorise the main page.
-- Don't categorise the following pages or their subpages.
-- "%f[/\0]" matches if the next character is "/" or the end of the string.
'^Wikipedia:Cascade%-protected items%f[/\0]',
'^User:UBX%f[/\0]', -- The userbox "template" space.
'^User talk:UBX%f[/\0]',
-- Don't categorise subpages of these pages, but allow
-- categorisation of the base page.
'^Wikipedia:Template index/.*$',
-- Don't categorise archives.
'/[aA]rchive',
"^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$",
}
87469d7a9ef2a3c41b2bf04ae18f7c59a18fb855
Template:Snd
10
1026
2251
2250
2023-10-01T14:14:52Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Snd]]
wikitext
text/x-wiki
#REDIRECT [[Template:Spaced en dash]]
{{Redirect category shell|
{{R from template shortcut}}
}}
3b75d99127048894a5fec4237592923ea987cd13
Template:Spaced en dash
10
1027
2253
2252
2023-10-01T14:14:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Spaced_en_dash]]
wikitext
text/x-wiki
– <noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
235afe8e7aca71d984c1bba5d8c96db414594b53
Template:Find sources mainspace
10
1028
2255
2254
2023-10-01T14:14:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Find_sources_mainspace]]
wikitext
text/x-wiki
{{#invoke:Find sources|Find sources mainspace}}<noinclude>
{{#invoke:Find sources/autodoc|Find sources mainspace}}
</noinclude>
47c0ba9d406528e894f4077dd33ec0fe489d0af2
Module:Find sources
828
1029
2257
2256
2023-10-01T14:14:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Find_sources]]
Scribunto
text/plain
-- This module implements {{find sources}} and other similar templates, and
-- also provides a mechanism to easily create new source-finding templates.
-- Define constants
local ROOT_PAGE = 'Module:Find sources'
local TEMPLATE_ROOT = ROOT_PAGE .. '/templates/' -- for template config modules
local LINK_CONFIG = ROOT_PAGE .. '/links' -- for link config modules
local CONFIG_PAGE = ROOT_PAGE .. '/config' -- for global config
-- Load required modules
local checkType = require('libraryUtil').checkType
local cfg = mw.loadData(CONFIG_PAGE)
local p = {}
local function maybeLoadData(page)
local success, data = pcall(mw.loadData, page)
return success and data
end
local function substituteParams(msg, ...)
return mw.message.newRawMessage(msg, ...):plain()
end
local function renderSearchString(searchTerms, separator, transformFunc)
-- This takes a table of search terms and turns it into a search string
-- that can be used in a URL or in a display value. The transformFunc
-- parameter can be used to transform each search term in some way (for
-- example, URL-encoding them).
local searchStrings = {}
for i, s in ipairs(searchTerms) do
searchStrings[i] = s
end
if transformFunc then
for i, s in ipairs(searchStrings) do
searchStrings[i] = transformFunc(s)
end
end
return table.concat(searchStrings, separator)
end
function p._renderLink(code, searchTerms, display, tooltip)
-- Renders the external link wikicode for one link, given the link code,
-- a table of search terms, and an optional display value and tooltip.
-- Get link config.
local links = maybeLoadData(LINK_CONFIG)
local linkCfg = links[code]
if not linkCfg then
error(string.format(
"invalid link code '%s'; no link config found at [[%s]]",
code,
LINK_CONFIG
))
end
-- Make URL.
local url
do
local separator = linkCfg.separator or "+"
local searchString = renderSearchString(
searchTerms,
separator,
mw.uri.encode
)
url = substituteParams(linkCfg.url, searchString)
end
if tooltip then
return string.format('<span title="%s" style="border-bottom: 1px dotted;">[%s %s]</span>',
mw.text.encode(tooltip), url, display or linkCfg.display)
else
return string.format('[%s %s]', url, display or linkCfg.display)
end
end
function p._main(template, args)
-- The main access point from Lua.
checkType('_main', 1, template, 'string')
checkType('_main', 2, args, 'table', true)
args = args or {}
local title = mw.title.getCurrentTitle()
-- Get the template config.
local templateCfgPage = TEMPLATE_ROOT .. template
local templateCfg = maybeLoadData(templateCfgPage)
if not templateCfg then
error(string.format(
"invalid template name '%s'; no template config found at [[%s]]",
template, templateCfgPage
))
end
-- Namespace check.
if not templateCfg.isUsedInMainspace and title.namespace == 0 then
local formatString = '<strong class="error">%s</strong>'
if cfg['namespace-error-category'] then
formatString = formatString .. '[[%s:%s]]'
end
return string.format(
formatString,
cfg['namespace-error'],
mw.site.namespaces[14].name,
cfg['namespace-error-category']
)
end
-- Get the search terms from the arguments.
local searchTerms = {}
for i, s in ipairs(args) do
searchTerms[i] = s
end
if not searchTerms[1] then
-- Use the current subpage name as the default search term, unless
-- another title is provided. If the page uses a disambiguator like
-- "Foo (bar)", make "Foo" the first term and "bar" the second.
local searchTitle = args.title or title.subpageText
local term, dab = searchTitle:match('^(.*) (%b())$')
if dab then
dab = dab:sub(2, -2) -- Remove parens
end
if term and dab then
searchTerms[1] = term
searchTerms[2] = dab
else
searchTerms[1] = searchTitle
end
end
searchTerms[1] = '"' .. searchTerms[1] .. '"'
-- Make the intro link
local introLink
if templateCfg.introLink then
local code = templateCfg.introLink.code
local display = templateCfg.introLink.display or renderSearchString(
searchTerms,
' '
)
local tooltip = templateCfg.introLink.tooltip
introLink = p._renderLink(code, searchTerms, display, tooltip)
else
introLink = ''
end
-- Make the other links
local links = {}
local separator = templateCfg.separator or cfg['default-separator']
local sep = ''
for i, t in ipairs(templateCfg.links) do
links[i] = sep .. p._renderLink(t.code, searchTerms, t.display, t.tooltip) ..
(t.afterDisplay or '')
sep = t.separator or separator
end
links = table.concat(links)
-- Make the blurb.
local blurb = substituteParams(templateCfg.blurb, introLink, links)
local span = mw.html.create('span')
span
:addClass('plainlinks')
:addClass(templateCfg.class)
:cssText(templateCfg.style)
:wikitext(blurb)
return tostring(span)
end
setmetatable(p, { __index = function(t, template)
-- The main access point from #invoke.
-- Invocations will look like {{#invoke:Find sources|template name}},
-- where "template name" is a subpage of [[Module:Find sources/templates]].
local tname = template
if tname:sub(-8) == '/sandbox' then
-- This makes {{Find sources/sandbox|Albert Einstein}} work.
tname = tname:sub(1, -9)
end
return function(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = mw.site.namespaces[10].name .. ':' .. tname
})
return t._main(template, args)
end
end})
return p
10c2d5c5a05295b49581eecba936dae039a4a290
Module:Find sources/config
828
1030
2259
2258
2023-10-01T14:14:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Find_sources/config]]
Scribunto
text/plain
-- Configuration data for [[Module:Find sources]].
return {
-- Define the error message and category to be used if the module is used in
-- the main namespace and the template config doesn't set the
-- isUsedInMainspace key to true. The category is optional; if it is not
-- wanted, it can be removed.
['namespace-error'] = 'Error: Please do not use this template in articles.',
['namespace-error-category'] = 'Pages with templates in the wrong namespace',
-- The separator to be used if no separator is specified in the template
-- config.
['default-separator'] = mw.message.new('Dot-separator'):plain()
}
412ea800b842be74cd74e8289e346e8b30b1df91
Module:Find sources/templates/Find sources mainspace
828
1031
2261
2260
2023-10-01T14:14:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Find_sources/templates/Find_sources_mainspace]]
Scribunto
text/plain
return {
blurb = "''Find sources:'' $1 – $2",
introLink = {
code = 'google'
},
links = {
{
code = 'google news',
display = 'news'
},
{
code = 'google newspapers',
display = 'newspapers'
},
{
code = 'google books',
display = 'books'
},
{
code = 'google scholar',
display = 'scholar'
},
{
code = 'jstor',
display = 'JSTOR'
}
},
isUsedInMainspace = true
}
abfeb1a778b232887c9400ca7667092141e60257
Module:Find sources/links
828
1032
2263
2262
2023-10-01T14:14:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Find_sources/links]]
Scribunto
text/plain
-- This is a list of links used by [[Module:Find sources]].
return {
["archive.org"] = {
url = 'https://archive.org/search.php?query=$1%20AND%20mediatype:texts',
display = 'Archive.org',
description = "The [[Internet Archive]], a digital library of public websites.",
},
["bing"] = {
url = 'https://www.bing.com/search?q=$1',
display = 'Bing',
description = "[[Bing (search engine)|Bing]], Microsoft's flagship search engine.",
},
["britannica"] = {
url = 'https://www.britannica.com/search?nop=1a15&cse=on&query=$1&cx=ccef96e8363da4b5f&tbm=3&fxx=3',
display = 'Encyclopedia Britannica',
description = "[[Encyclopedia Britannica]]",
},
["british library"] = {
url = 'https://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=local_tab&indx=1&dum=true&srt=rank&vid=BLVU1&frbg=&tb=t&vl%28freeText0%29=$1',
display = 'British Library',
description = "National library of the United Kingdom",
},
["ccsearch"] = {
url = "https://search.creativecommons.org/search?q=$1&license_type=commercial,modification",
display = "CC Search",
description = "CC Search: The official search engine of [[Creative Commons]]",
},
["cochrane"] = {
url = "https://www.cochranelibrary.com/en/advanced-search?searchBy=-1&isWordVariations=&resultPerPage=25&searchType=advanced&selectedType=review&displayText=&orderBy=relevancy&p_p_id=scolarissearchresultsportlet_WAR_scolarissearchresults&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&searchText=$1",
display = "Cochrane",
description = "[[Cochrane Library]]: Leading publisher of systematic reviews.",
},
["doaj"] = {
url = "https://www.doaj.org/search/articles?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A$1%2C%22default_operator%22%3A%22AND%22%7D%7D%7D",
display = "DOAJ",
description = "[[Directory of Open Access Journals|DOAJ]]: Directory of Open Access Journals",
},
["duckduckgo"] = {
url = 'https://duckduckgo.com/?q=$1',
display = 'DuckDuckGo',
description = "[[DuckDuckGo]], a search engine that emphasizes protecting searchers' privacy and avoiding the \"filter bubble\" of personalized search results.",
},
["eowb"] = {
url = 'https://search.lib.umich.edu/everything?query=$1',
display = 'Encyclopedia of World Biography',
tooltip = 'Encyclopedia of World Biography, by Gale Research; online results provided by University of Michigan.',
},
["free news sources"] = {
url = 'https://en.wikipedia.org/wiki/Wikipedia:Free_English_newspaper_sources',
display = 'free news sources',
},
["gale"] = {
url = "https://go.gale.com/ps/basicSearch.do?inputFieldNames%5B0%5D=OQE&nwf=y&searchType=BasicSearchForm&userGroupName=anon%7Ee3e4f4eb&prodId=AONE&spellCheck=true&method=doSearch&dblist=&stw.option=&ebook=&singleLimiterFieldValues%5BAC%5D=y&_singleLimiterFieldValues%5BAC%5D=on&_singleLimiterFieldValues%5BRE%5D=on&standAloneLimiters=LI&_singleLimiterFieldValues%5BLI%5D=on&inputFieldValues%5B0%5D=$1",
display = "Gale Academic OneFile",
description = " Gale Academic OneFile: Academic publisher portal from [[Gale (publisher)|Gale]]. Access via [[Wikipedia:The Wikipedia Library|Wikipedia Library]]",
},
["gin"] = {
url = "https://guidelines.ebmportal.com/guidelines-international-network?type=search&search=$1",
display = "GIN guidelines",
tooltip = "Content from the library and the registry of guidelines in development provided by the Guidelines International Network",
},
["globe and mail"] = {
url = 'https://www.theglobeandmail.com/search/?q=$1',
display = "''The Globe and Mail''",
description = "The website of ''[[The Globe and Mail]]'', a [[newspaper of record]] for Canada.",
},
["google"] = {
url = 'https://www.google.com/search?as_eq=wikipedia&q=$1',
display = 'Google',
description = "[[Google]], the flagship search engine from Google Inc.",
},
["google books"] = {
url = 'https://www.google.com/search?tbs=bks:1&q=$1+-wikipedia',
display = 'Google Books',
description = "[[Google Books]], Google's search engine for books."
},
["google free images"] = {
url = 'https://www.google.com/search?safe=off&tbs=sur:fmc&tbm=isch&q=$1+-site:wikipedia.org+-site:wikimedia.org',
display = 'Free Google Images',
description = "[[Google Images]], Google's search engine for images. Only images compatible with Wikipedia's licensing are included.",
},
["google news"] = {
url = 'https://www.google.com/search?tbm=nws&q=$1+-wikipedia&tbs=ar:1',
display = 'Google News',
description = "[[Google News]], Google's search engine for news sites.",
notes = "In the past this link searched news archives, but this functionality has been removed by Google. Currently, only recent news articles are searched.",
},
["google newspapers"] = {
url = 'https://www.google.com/search?&q=$1&tbs=bkt:s&tbm=bks',
display = 'Google Newspapers',
description = "Google Newspapers, a search of Google's digital archive of print newspapers.",
},
["google scholar"] = {
url = 'https://scholar.google.com/scholar?q=$1',
display = 'Google Scholar',
description = "[[Google Scholar]], Google's search engine for academic papers and other scholarly research.",
},
["haaretz"] = {
url = 'https://www.haaretz.com/search-results?q=$1',
display = "''Haaretz''",
description = "The website of ''[[Haaretz]]'', a [[newspaper of record]] for Israel.",
},
["internet archive scholar"] = {
url = 'https://scholar.archive.org/search?&sort_order=time_desc&q=$1',
display = 'IA scholar',
description = "The [[Internet Archive Scholar]], a digital library of open access academic journals.",
tooltip = "The [[Internet Archive Scholar]], a digital library of open access academic journals.",
},
["infoplease"] = {
url = 'https://www.infoplease.com/search/$1',
display = 'Infoplease',
tooltip = 'Infoplease encyclopedia, dictionary, and almanac',
},
["jstor"] = {
url = 'https://www.jstor.org/action/doBasicSearch?Query=$1&acc=on&wc=on',
display = 'JSTOR',
description = "[[JSTOR]], an online library containing digitised versions of academic journals. Requires a subscription."
},
["library of congress"] = {
url = 'https://www.loc.gov/search/?in=&q=$1',
display = "Library of Congress",
description = "U.S. [[Library of Congress]]",
},
["mail and guardian"] = {
url = 'https://mg.co.za/?s=$1',
display = "''Mail & Guardian''",
description = "The website of the ''[[Mail & Guardian]]'', a [[newspaper of record]] for South Africa.",
},
["medrs"] = {
url = "https://en.wikipedia.org/wiki/Wikipedia:Identifying_reliable_sources_(medicine)",
display = "find medical sources",
tooltip = "Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content at Wikipedia at WP:MEDRS.",
description = "[[WP:MEDRS|MEDRS]]: Ideal sources for biomedical material include recent literature reviews and medical guidelines; learn how to identify reliable sources for medical content.",
},
["muse"] = {
url = 'https://muse.jhu.edu/search?action=search&min=1&max=10&t=header&query=content:$1:and',
display = 'MUSE',
tooltip = 'Project MUSE: humanities and social science content from academic journals and societies.',
},
["new york times"] = {
url = 'https://www.nytimes.com/search/$1',
display = "''New York Times''",
description = "The website of ''[[The New York Times]]'', a [[newspaper of record]] for the United States.",
},
["new zealand herald"] = {
url = 'https://www.nzherald.co.nz/search/$1/',
display = "''The New Zealand Herald''",
description = "The website of ''[[The New Zealand Herald]]'', a [[newspaper of record]] for New Zealand.",
},
["openlibrary"] = {
url = 'https://openlibrary.org/search?q=$1&mode=everything',
display = 'OpenLibrary',
separator = '+',
},
["openmd"] = {
url = "https://openmd.com/search?q=$1",
display = "OpenMD",
description = "OpenMD: Search engine for medical literature.",
},
["pubmed"] = {
url = "https://pubmed.ncbi.nlm.nih.gov/?term=$1&filter=pubt.meta-analysis&filter=pubt.review&filter=pubt.systematicreview&filter=datesearch.y_10",
display = "PubMed",
description = "[[PubMed]]: Search engine for biomedical literature from [[United States National Library of Medicine|NLM]].",
},
["sciencedirect"] = {
url = "https://www.sciencedirect.com/search?qs=$1&articleTypes=REV%2CEN%2CCH%2CSSU%2CPGL&lastSelectedFacet=articleTypes",
display = "ScienceDirect",
description = "ScienceDirect: [[Elsevier]]'s scientific, technical, and medical research portal.",
},
["south china morning post"] = {
url = 'https://www.scmp.com/search/$1',
display = "''South China Morning Post''",
description = "The website of the ''[[South China Morning Post]]'', a [[newspaper of record]] for Hong Kong.",
},
["springer"] = {
url = "https://link.springer.com/search?query=$1",
display = "Springer",
description = "Springer Nature's portal for journals, books, and reference works.",
},
["statpearls"] = {
url = "https://www.ncbi.nlm.nih.gov/books/NBK430685/?term=$1",
display = "StatPearls",
description = "StatPearls: the largest provider of healthcare continuing education worldwide, providing peer-reviewed practice-guiding knowledge authored by clinical experts.",
},
["straits times"] = {
url = 'https://www.straitstimes.com/search?searchkey=$1',
display = "''The Straits Times''",
description = "The website of ''[[The Straits Times]]'', a [[newspaper of record]] for Singapore.",
},
["sydney morning herald"] = {
url = 'https://www.smh.com.au/search?text=$1',
display = "''The Sydney Morning Herald''",
description = "The website of ''[[The Sydney Morning Herald]]'', a [[newspaper of record]] for Australia.",
},
["the age"] = {
url = 'https://www.theage.com.au/search?text=$1',
display = "''The Age''",
description = "The website of ''[[The Age]]'', a [[newspaper of record]] for Australia.",
},
["the guardian"] = {
url = 'https://www.google.co.uk/search?as_sitesearch=www.theguardian.com&q=$1',
display = 'The Guardian',
description = "''[[The Guardian]]'' newspaper, U.K.",
},
["the hindu"] = {
url = 'https://www.thehindu.com/search/?q=$1',
display = "''The Hindu''",
description = "The website of ''[[The Hindu]]'', a [[newspaper of record]] for India.",
},
["the times"] = {
url = 'https://www.thetimes.co.uk/search?source=search-page&q=$1',
display = "''The Times''",
description = "The website of ''[[The Times]]'', a [[newspaper of record]] for the United Kingdom.",
},
["times of india"] = {
url = 'https://timesofindia.indiatimes.com/topic/$1',
display = "''The Times of India''",
description = "The website of ''[[The Times of India]]'', a [[newspaper of record]] for India.",
},
["trip"] = {
url = "https://www.tripdatabase.com/Searchresult?search_type=standard&criteria=$1&from_date=2012",
display = "Trip Database",
description = "Trip Database: Search engine for clinical research evidence.",
},
["uptodate"] = {
url = "https://www.uptodate.com/contents/search?sp=0&searchType=PLAIN_TEXT&source=USER_INPUT&searchControl=TOP_PULLDOWN&searchOffset=1&autoComplete=false&language=en&max=10&search=$1",
display = "UpToDate",
tooltip = "Evidence-based resource for clinical decision support written for and by physicians",
},
["vgrl"] = {
url = 'https://en.wikipedia.org/wiki/Special:Search?search=$1&prefix=Wikipedia%3AWikiProject+Video+games%2FReference+library&fulltext=Search+reference+library&fulltext=Search',
display = 'VGRL',
description = "[[Wikipedia:WikiProject Video games/Reference library]] internal archive search.",
},
["vgrs"] = {
url = 'https://www.google.com/cse?cx=009782238053898643791%3A8naerdbd-oy&q=$1',
display = 'VGRS',
description = "[http://www.google.com/cse/home?cx=003516479746865699832:leawcwkqifq Google RS], a [[custom Google search engine]] that limits the search to sites listed in [[Wikipedia:WikiProject Video games/Sources]].",
},
["vgtalk"] = {
url = 'https://en.wikipedia.org/w/index.php?search=$1+prefix%3AWikipedia+talk%3AWikiProject+Video+games&title=Special:Search&profile=default&fulltext=1',
display = 'WPVG Talk',
description = "A search in the WikiProject Video games talk page and its archives under [[Wikipedia talk:WikiProject Video games]].",
},
["wikipedia library"] = {
url = "https://wikipedialibrary.wmflabs.org/search/?q=$1",
display = "TWL",
tooltip = "The Wikipedia Library",
description = "Search results from dozens of services provided via EBSCOhost to Wikipedians via [[Wikipedia:The Wikipedia Library]].",
},
["wikipedia reference search"] = {
url = 'https://www.google.com/custom?hl=en&cx=007734830908295939403%3Agalkqgoksq0&cof=FORID%3A13%3BAH%3Aleft%3BCX%3AWikipedia%2520Reference%2520Search&q=$1',
display = 'Wikipedia Reference Search',
description = "[[WP:WRS|Wikipedia Reference Search]], a Google search that only searches sites vetted by Wikipedians.",
},
["wiley"] = {
url = "https://onlinelibrary.wiley.com/action/doSearch?AllField=$1",
display = "Wiley",
description = "Wiley Online Library: [[Wiley (publisher)|Wiley's]] portal for academic articles, books, and collections.",
},
}
4817c288e68e87936971b4b7bb22926dc62c114c
Module:Redirect hatnote
828
1033
2265
2264
2023-10-01T14:15:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Redirect_hatnote]]
Scribunto
text/plain
--[[
-- This module produces a "redirect" hatnote. It looks like this:
-- '"X" redirects here. For other uses, see Y.'
-- It implements the {{redirect}} template.
--]]
local mHatnote = require('Module:Hatnote')
local mHatList = require('Module:Hatnote list')
local mArguments --lazily initialize
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkTypeMulti = libraryUtil.checkTypeMulti
local p = {}
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
local function getTitle(...)
--Calls mw.title.new and returns either a title object, or nil on error
local success, titleObj = pcall(mw.title.new, ...)
return success and titleObj or nil
end
--------------------------------------------------------------------------------
-- Main functions
--------------------------------------------------------------------------------
function p.redirect(frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame, {parentOnly=true})
--Get number of redirects
local numRedirects = tonumber(frame.args[1]) or 1
-- Create the options table.
local options = {}
options.selfref = args.selfref
return p._redirect(args, numRedirects, options)
end
function p._redirect(args, numRedirects, options, currentTitle, redirectTitle, targetTitle)
-- Validate the input. Don't bother checking currentTitle, redirectTitle or
-- targetTitle, as they are only used in testing.
checkType('_redirect', 1, args, 'table')
checkType('_redirect', 2, numRedirects, 'number', true)
numRedirects = numRedirects or 1
checkType('_redirect', 3, options, 'table', true)
options = options or {}
currentTitle = currentTitle or mw.title.getCurrentTitle()
-- Get the table of redirects
local redirect = {}
for i = 1, numRedirects do
-- Return an error if a redirect parameter is missing.
if not args[i] then
return mHatnote.makeWikitextError(
'missing redirect parameter',
'Template:Redirect#Errors',
args.category
)
end
redirect[i] = args[i]
end
-- Generate the text.
local formattedRedirect = {}
for k,v in pairs(redirect) do
formattedRedirect[k] = mHatnote.quote(v)
end
local text = {
mHatList.andList(formattedRedirect) .. ' ' .. (#redirect == 1 and 'redirects' or 'redirect') .. ' here.',
mHatList._forSee(args, #redirect + 1, {title = redirect[1], extratext = args.text})
}
text = table.concat(text, ' ')
-- Functionality for adding categories
local categoryTable = {}
local function addCategory(cat)
if cat and cat ~= '' then
-- Add by index to avoid duplicates
categoryTable[string.format('[[Category:%s]]', cat)] = true
end
end
--Generate tracking categories
local mhOptions = {}
local redirTitle
for k,v in pairs(redirect) do
-- We don't need a tracking category if the template invocation has been
-- copied directly from the docs, or if we aren't in main- or category-space.
if not v:find('^REDIRECT%d*$') and v ~= 'TERM' --
and currentTitle.namespace == 0 or currentTitle.namespace == 14
then
redirTitle = redirectTitle or getTitle(v)
if not redirTitle or not redirTitle.exists then
addCategory('Missing redirects')
elseif not redirTitle.isRedirect then
if string.find(redirTitle:getContent(), '#invoke:RfD') then
addCategory('Articles with redirect hatnotes impacted by RfD')
else
addCategory('Articles with redirect hatnotes needing review')
end
else
local target = targetTitle or redirTitle.redirectTarget
if target and target ~= currentTitle then
addCategory('Articles with redirect hatnotes needing review')
end
end
end
-- Generate the options to pass to [[Module:Hatnote]].
if currentTitle.namespace == 0 and not mhOptions.selfref
and redirTitle and redirTitle.namespace ~= 0
then
-- We are on a mainspace page, and the hatnote starts with something
-- like "Wikipedia:Foo redirects here", so automatically label it as
-- a self-reference.
mhOptions.selfref = true
else
mhOptions.selfref = options.selfref
end
end
--concatenate all the categories
local category = ''
for k,v in pairs(categoryTable) do
category = category .. k
end
return mHatnote._hatnote(text, mhOptions) .. category
end
return p
6609c6166f6a1124c96c97915bc7b4182f1874f9
Template:Redirect
10
1034
2267
2266
2023-10-01T14:15:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Redirect]]
wikitext
text/x-wiki
<includeonly>{{#invoke:redirect hatnote|redirect|1}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
c764f9cf8b31b4d5aa3e131bf254bfc78e5ba39b
Template:Redirect-distinguish
10
1035
2269
2268
2023-10-01T14:15:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Redirect-distinguish]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Redirect-distinguish|redirectDistinguish}}</includeonly><noinclude>{{Documentation}}</noinclude>
c08b04d280b5edf1a7dbf07eefb2d946e18de6d2
Module:Redirect-distinguish
828
1036
2271
2270
2023-10-01T14:15:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Redirect-distinguish]]
Scribunto
text/plain
local mHatnote = require('Module:Hatnote')
local mHatlist = require('Module:Hatnote list')
local mArguments --initialize lazily
local mTableTools = require('Module:TableTools')
local p = {}
function p.redirectDistinguish (frame)
mArguments = require('Module:Arguments')
local args = mArguments.getArgs(frame)
return p._redirectDistinguish(args)
end
function p._redirectDistinguish(args)
if not args[1] then
return mHatnote.makeWikitextError(
'no redirect supplied',
'Template:Redirect-distinguish',
args.category
)
end
local redirectTitle = mw.title.new(args[1])
local currentTitle = currentTitle or mw.title.getCurrentTitle()
if
string.match(args[1], 'REDIRECT%d+') or
args[1] == 'TERM' or
currentTitle.namespace ~= 0
then
--do nothing
elseif not redirectTitle or not redirectTitle.exists then
args[1] = args[1] .. '[[Category:Missing redirects]]'
elseif not redirectTitle.isRedirect then
if string.find(redirectTitle:getContent(), '#invoke:RfD') then
args[1] = args[1] ..
'[[Category:Articles with redirect hatnotes impacted by RfD]]'
else
args[1] = args[1] ..
'[[Category:Articles with redirect hatnotes needing review]]'
end
end
if not args[2] then
return mHatnote.makeWikitextError(
'no page to be distinguished supplied',
'Template:Redirect-distinguish',
args.category
)
end
args = mTableTools.compressSparseArray(args)
--Assignment by removal here makes for convenient concatenation later
local redirect = table.remove(args, 1)
local text = string.format(
'"%s" redirects here. Not to be confused with %s.',
redirect,
mHatlist.orList(args, true)
)
return mHatnote._hatnote(text)
end
return p
4bdb55228ac3e76fde51e08f10054d210d702b91
Template:Template link general
10
1037
2273
2272
2023-10-01T14:15:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_link_general]]
wikitext
text/x-wiki
{{{{{|safesubst:}}}#Invoke:Template link general|main}}<noinclude>
{{Documentation}}
</noinclude>
9871d2f490eaedd832a0ae8016adbf807ddf7b71
Template:Tlg
10
1038
2275
2274
2023-10-01T14:15:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tlg]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template link general]]
{{Redirect category shell|
{{R from move}}
}}
707ce913a3ffa8193c9377c3ded7db7b72407500
Template:Twinkle standard installation
10
1039
2277
2276
2023-10-01T14:15:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Twinkle_standard_installation]]
wikitext
text/x-wiki
{{Mbox
| image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]]
| text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle]]'s users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as the standard installation of Twinkle adds and removes this template. Thank you!{{#if:{{{1|}}}|<br>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
e0d214332002dd4766de972883ae89580baeaa69
Template:Template redirect
10
1040
2279
2278
2023-10-01T14:15:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_redirect]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Shortcut|main|template=yes|redirect=yes}}</includeonly><noinclude>{{Documentation}}</noinclude>
ec5365d4636ace45dd2b6b23308dc97a0b73a7ad
Template:Citation and verifiability article maintenance templates
10
1041
2281
2280
2023-10-01T14:15:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Citation_and_verifiability_article_maintenance_templates]]
wikitext
text/x-wiki
{{Navbox
| name = Citation and verifiability article maintenance templates
| title = [[Wikipedia:Template index/Cleanup/Verifiability and sources|Citation and verifiability article maintenance templates]]
| listclass = hlist
| state = {{{state|autocollapse}}}
| group1 = Sourcing
| list1 =
* {{Tlg|Circular}}
* {{Tlg|Dubious}}
* {{Tlg|Excessive citations}}
* {{Tlg|Further reading cleanup}}
* {{Tlg|More citations needed}}
** {{Tlg|More citations needed section}}
* {{Tlg|More footnotes needed}}
* {{Tlg|No footnotes}}
* {{Tlg|No significant coverage}}
* {{Tlg|One source}}
** {{Tlg|One source section}}
* {{Tlg|Only primary sources}}
** {{Tlg|NRIS only}}
* {{Tlg|Primary sources}}
** {{Tlg|Primary sources section}}
* {{Tlg|Religious text primary}}
* {{Tlg|Self-published}}
* {{Tlg|Self-reference cleanup}}
* {{Tlg|Self-sourcing examples}}
** {{Tlg|Refexample section}}
* {{Tlg|Sources exist}}
* {{Tlg|Text-source}}
* {{Tlg|Third-party}}
* {{Tlg|Unreferenced}}
** {{Tlg|Unreferenced section}}
* {{Tlg|Unreferenced category}}
* {{Tlg|Unreliable sources}}
** {{Tlg|Unreliable sources section}}
* {{tlg|User-generated}}
| group2 = [[Wikipedia:Biographies of living persons|BLP]]-specific
| list2 =
* {{Tlg|BLP unreferenced}}
** {{Tlg|BLP unreferenced section}}
* {{Tlg|BLP primary sources}}
* {{Tlg|BLP self-published}}
* {{Tlg|BLP sources}}
** {{Tlg|BLP sources section}}
* {{Tlg|BLP IMDb-only refimprove}}
* {{Tlg|BLP IMDb refimprove}}
* {{Tlg|BLP no footnotes}}
* {{Tlg|BLP more footnotes needed}}
* {{Tlg|BLP one source}}
| group3 = Topic specific
| list3 =
* {{Tlg|Localist}}
* {{Tlg|Media IMDb refimprove}}
* {{Tlg|More medical citations needed}}
* {{Tlg|More science citations needed}}
* {{Tlg|Neologism}}
* {{Tlg|Science review}}
* {{Tlg|Unreferenced law}}
** {{Tlg|Unreferenced-law section}}
* {{Tlg|Unreferenced medical section}}
| group4 = Dispute-related
| list4 =
* {{Tlg|Cite check}}
** {{Tlg|Cite check section}}
* {{Tlg|Content}}
* {{Tlg|Disputed}}
** {{Tlg|Dispute about}}
** {{Tlg|Disputed section}}
** {{Tlg|Disputed chem}}
** {{Tlg|Disputed list}}
** {{Tlg|Disputed map}}
* {{Tlg|Expert needed}}
* {{Tlg|Hoax}}
* {{Tlg|Original research}}
** {{Tlg|Original research section}}
* {{Tlg|Speculation}}
** {{Tlg|Speculation section}}
* {{Tlg|Synthesis}}
* {{Tlg|Verifiability}}
* {{Tlg|Verify sources}}
| group5 = Citation improvements
| list5 =
* {{Tlg|Citation style}}
* {{Tlg|Citations broken}}
* {{Tlg|Cleanup bare URLs}}
* {{Tlg|Format footnotes}}
* {{Tlg|Full citations needed}}
* {{Tlg|Ibid}}
* {{Tlg|Page numbers improve}}
* {{Tlg|Page numbers needed}}
* {{Tlg|Shallow references}}
| group6 = General advice
| list6 =
* [[Wikipedia:Citing sources|Citing sources]]
* [[Wikipedia:Reliable sources|Reliable sources]]
* [[Help:Maintenance template removal |Maintenance template removal]]
* [[Wikipedia:Citation needed|Citation needed]]
* [[Help:Find sources|Find sources]]
* [[Wikipedia:Combining sources|Combining sources]]
* [[Help:Overview of referencing styles|Referencing styles]]
}}<noinclude>{{Documentation}}</noinclude>
55a6785749a09717fef857138042ad0d8abef5ef
Template:AWB standard installation
10
1042
2283
2282
2023-10-01T14:15:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:AWB_standard_installation]]
wikitext
text/x-wiki
{{ mbox
| image = [[File:AWB logo draft.svg|44x50px|alt=|link=]]
| text = This template is used by the standard installation of [[Wikipedia:AutoWikiBrowser|AutoWikiBrowser]] (AWB). If you are planning to make any major changes to this template, how it should be used, or nominate it for deletion, please notify AWB's user base and maintainers beforehand at [[Wikipedia talk:AutoWikiBrowser|Wikipedia talk:AWB]] as a courtesy.{{#if:{{{1|}}}|<p>
{{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by AutoWikiBrowser|{{PAGENAME}}]]}}}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude>
5d0e869b7d352225e1fc0aa75cb27988220928aa
Template:More citations needed/doc
10
1043
2285
2284
2023-10-01T14:15:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:More_citations_needed/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{redirect-distinguish|Template:Additional citations|Template:Additional citation needed}}
{{redirect-distinguish|Template:Not verified|Template:Failed verification}}
{{redirect|Template:Verify|the template used to request clarification of the preceding sentence|Template:Clarify}}
{{redirect-distinguish|Template:Mcn|Template:Medical citation needed}}
{{High-use}}
{{Twinkle standard installation}}
{{AWB standard installation}}
{{Template shortcut|rip|mcn|verify}}
{{Template redirect|Additional citations|Not verified}}
==Usage==
===When to use===
This [[Wikipedia:Templates|template]] indicates that the article needs additional inline citations. This template should be used only for articles where there are some, but insufficient, inline citations to support the material currently in the article. Don't use this tag for articles that contain no unreferenced material, even if all the material is supported by a single citation.
Some editors understand this template to be redundant when it is used on articles clearly marked as [[Wikipedia:Stub|stubs]], since by definition stubs are unlikely to be well referenced.
For articles that have no inline citations at all, but contain some sources, use [[:Template:No footnotes]]. Only use [[:Template:Unreferenced]] for articles that have no references at all.
* For articles about living persons, the more specific template {{tl|BLP sources}} should be used instead.
* For articles containing biomedical information, the more specific template {{tl|More medical citations needed}} should be used instead.
* Please consider marking individual unreferenced statements with the {{tl|Citation needed}} inline template, instead of placing this template.
* If most of an article is supported by inline citations and a few of those use unreliable sources, use {{tlx|Unreliable source?|date{{=}}{{#time:F Y}}}} and if you are certain, then add the parameters {{tlx|Unreliable source|certain{{=}}y|reason{{=}}{{var|1=your WP:RS-based reason here.}}|date{{=}}{{#time:F Y}}}}
'''Placement'''
: According to [[MOS:LAYOUT]], maintenance templates, such as this one, should (except when section-specific) be placed after hatnotes, at the start of the article. That placement is supported by consensus obtained in an RfC at {{section link|Template talk:More citations needed/Archive 4|RfC: Location of Tag}}.
'''User warning'''
: A user warning template, {{tl|uw-refimprove}}, is available to notify contributors that an article they created needs its referencing improved.
'''Auto-categorization'''
: This template adds the article to [[:Category:Articles needing additional references from {{CURRENTMONTHNAME}} {{CURRENTYEAR}}]], and [[:Category:All articles needing additional references]], both [[Wikipedia:HIDDENCAT|hidden categories]].
== Parameters ==
There are six parameters, one positional, and five named parameters. All parameters are optional.
* {{para|1}}{{snd}}scope of notification (e.g., 'section', 'article') default: 'article'.
* {{para|date}}{{snd}}month name and year; e.g. '{{CURRENTMONTHNAME}} {{CURRENTYEAR}}' (no default)
* {{para|find}}{{snd}}search keywords for {{tl|find sources}} param 1 (double-quoted search); default: page title. See details [[#Details|below]].
* {{para|find2}}{{snd}}search keywords for {{tl|find sources}} param 2 (unquoted search). Alias: <code>unquoted</code>. See [[#Details|below]].
* {{para|small}}{{snd}}set to <code>left</code> or <code>no</code>; see details at [[Template:Ambox/doc#small|Ambox]]. Default: standard-width banner.
* {{para|talk}}{{snd}}title of talk page section where discussion can be found
=== Details ===
'''Talk parameter'''
: A {{para|talk}} parameter is allowed; setting this to any value will result in the message "See talk page for details." being included in the tag. If the value is a valid anchor on the talk page (e.g., the title of a section or subsection heading), then the talk page link will go directly to that anchor; if not, then to the top of the page.
'''Date parameter'''
: This template also includes support for using the {{para|date}} parameter. Adding this parameter sorts the article into subcategories of [[:Category:Articles needing additional references]] and out of the parent category, allowing the oldest problems to be identified and dealt with first. A [[Wikipedia:Bot policy|bot]] will add this parameter, if it is omitted. Be careful '''''not''''' to abbreviate the date, because then it will automatically add a redlinked category instead of the correct category. The simplest way to use this parameter manually is <code><nowiki>{{More citations needed|{{subst:DATE}}}}</nowiki></code>, but it can be done more explicitly as <code><nowiki>{{More citations needed|date=</nowiki>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}<nowiki>}}</nowiki></code> (both result in the same output). Do ''not'' use <code><nowiki>{{More citations needed|date={{subst:DATE}}}}</nowiki></code> because <code><nowiki>{{subst:DATE}}</nowiki></code> already includes the leading <code>date=</code> code.
'''Find parameters:'''
: There are two 'find' parameters available to control the presentation and operation of the {{tl|find sources}} links optionally displayed by the {{tl|Unreferenced}} template. By default, the template displays {{tl|find sources}} with a quoted search query equivalent to the exact article title. Sometimes, especially if the article has a long, [[WP:NDESC|descriptive title]], or if it includes [[WP:PARENDIS|parenthetical disambiguation terms]], this may not give useful results. The find parameters can be used to provide the search keywords of your choice to the {{tl|find sources}} links. Use:
:* {{para|find}} to specify keywords for an exact search (double-quoted query); this corresponds to {{tl|find sources}} positional param <code>|1</code>.
:* {{para|find2}} to specify keywords for an unquoted search; this corresponds to {{tl|find sources}} param <code>|2</code>. The alias {{para|unquoted}} may be used instead.
The value "none" may be passed to 'find' ({{para|find|none}}) to suppress display of ''find sources'' links. (Note that specifying {{para|find|none}} and a nonempty value for {{para|find2}} is not a valid combination.)
== Examples ==
Listed below are several examples of usage:
:{{tlc|More citations needed|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or the common redirect: {{tlc|Refimprove|2=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
:{{tlc|More citations needed|2=section|3=date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} or use the alternative template: {{tlx|More citations needed section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
::The template can be made smaller with {{tlc|More citations needed|section|small{{=}}y}} or use the alternative template {{tlx|More citations needed section|small{{=}}y}}
:{{tlc|More citations needed|section|<nowiki>{{subst:DATE}}</nowiki>|talk{{=}}{{var|Talk page section name}}|small{{=}}y}}
The optional {{para|find}} parameter is available, for modifying the operation of the {{tl|find sources mainspace}} links displayed by the template:
{{tlc|More citations needed|find{{=}}search keyword(s)|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}
==Differences from related templates==
==={{tl|BLP sources}}===
* Use ''BLP sources'' in [[WP:BLP|articles about living persons]] that need additional references. If the article needs additional references but is not about a living or recently deceased subject, then use ''More citations needed''.
==={{Tl|More footnotes needed}}===
* Use ''More footnotes needed'' when the article includes a list of sources, perhaps in a "Bibliography" or "Works" appendix, but its sources remain unclear because there are [[WP:INLINECITE|insufficient inline citations]]. The ''More citations needed'' tag is more specific than ''More footnotes needed'', and should be used preferentially to that template.
==={{Tl|Unreferenced}} and {{Tl|Citation needed}}===
* Use ''Unreferenced'' when there are no citations of any kind in an article. If citations have been added to an article, but they are insufficient, then use ''More citations needed''.
* Alternatively, if an article has sufficient inline citations, but lacks citations covering specific information (such as [[WP:PROVEIT|missing a citation on a quotation]]), then use the inline citation template {{Tl|Citation needed}} to indicate more precisely where additional citations are needed. Unlike the inline ''Citation needed'', ''More citations needed'' is placed as a general banner at the top of an article.
* The {{Tl|More citations needed section}} and {{tl|Unreferenced section}} templates are available to use for problems that are not article-wide.
* If you decide to change a tag from ''Unreferenced'' to ''More citations needed'', don't forget to update the date stamp in the tag, if necessary.
==={{Tl|Primary sources}}===
* If an article has a sufficient amount of inline citations, but the citations are from primary sources (see [[WP:USEPRIMARY]]), then use ''{{tl|Primary sources}}''.
==={{Tl|Third-party}}===
* If an article has sufficient inline citations, but the citations are from sources affiliated with the subject (see [[WP:INDY]]), then use ''{{tl|Third-party}}''.
==={{Tl|One source}}===
* If an article has exactly one source '''and''' that single source is likely to result in bias or other problems in the article (e.g., it cites one fringe-y book instead of a good textbook), then use ''{{tl|One source}}''.
==={{Tl|More medical citations needed}}===
* If the article contains biomedical information, sources must meet the standards of [[WP:MEDRS]] ("it is vital that the biomedical information in articles be based on reliable, third-party, published sources and accurately reflect current medical knowledge"). If there are inline citations for biomedical information, but they do not meet the required standards, then use ''{{Tl|More medical citations needed}}''.
==={{Tl|Citation style}}===
* The ''More citations needed'' template is intended for use in articles that need additional citations, while the ''citation style'' template is used to request consistency within the citations present in an article (see [[WP:CITEVAR]]). For example, use ''citation style'' when there is a mixture of [[WP:CITE#Footnotes|footnotes]] and [[WP:CITE#Parenthetical referencing|parenthetical references]].
==={{Tl|No footnotes}} and {{Tl|More footnotes needed}}===
* ''More citations needed'' can be used when there are no "References" or "Further reading" sections present in the article.
==={{Tl|Sources exist}}===
* ''Sources exist'' is similar to ''More citations needed'', because both templates indicate the need for more references. However, {{tlx|Sources exist}} indicates that a user has already checked that reliable sources are available to be cited, but has not yet added them to the article. By using this template, the assertion is made that the article is notable, but needs more citations.
==<span id="Template data"></span>TemplateData==
{{TemplateData header}}
<templatedata>
{
"description": "This template generates a tag to indicate that the article needs additional inline citations.",
"format": "inline",
"params": {
"1": {
"label": "Affected area",
"description": "Text to replace the word \"article\", usually \"section\"",
"type": "line",
"example": "section"
},
"date": {
"label": "Month and year",
"description": "The month and year that the template was placed (in full). \"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}\" inserts the current month and year automatically.",
"type": "line",
"autovalue": "{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}",
"example": "June 2013",
"suggested": true
},
"talk": {
"label": "Talk page section",
"description": "Section name on the talk page for further discussion",
"type": "line"
},
"small": {
"label": "Make template small",
"description": "Enter any text here to make the template box small and aligned to the left.",
"type": "line",
"autovalue": "y",
"example": "y"
},
"find": {
"label": "Find",
"description": "Search keywords for double-quoted search to pass to 'find sources'.",
"type": "line"
},
"find2": {
"label": "Find2",
"aliases": ["Unquoted"],
"description": "Search keywords for unquoted search to pass to 'find sources'.",
"type": "line"
},
"name": {}
},
"paramOrder": [
"1",
"talk",
"small",
"find",
"find2",
"date",
"name"
]
}
</templatedata>
==Redirects==
<!-- regex (Ri|RI|tl|Additional|Cite[ _]+sources|Cleanup-cite|Cleanup-verify|Cleanup[ _]+cite|DisputeCheck|Fact-check|Fact[ _]+check|Factual|Few[ _]+references|Fewreferences|Improve-references|Improve-refs|Improve[ _]+references|Improve[ _]+refs|Improvereferences|Improverefs|More[ _]+references|More[ _]+sources|Moreref|Morereferences|Morerefs|Moresources|Not[ _]+verified|Notverified|Ref-improve|Ref[ _]+improve|Reference-improve|Refimprove|Sources|Unreliable|Verification|Verify) -->
Include:
{{columns-list|colwidth=15em|
#{{Tl|+r}}
#{{Tl|+R}}
#{{tl|Add references}}
#{{tl|Additional citations}}
#{{Tl|Citations missing}}
#{{Tl|Citations needed}}
#{{Tl|Cite sources}}
#{{Tl|Cleanup-cite}}
#{{Tl|Cleanup-verify}}
#{{Tl|Few references}}
#{{Tl|Few refs}}
#{{tl|Few sources}}
#{{Tl|Improve-refs}}
#{{Tl|Improve references}}
#{{tl|Improve sources}}
#{{Tl|Missing citations}}
#{{tl|More citations}}
#{{tl|More cn}}
#{{Tl|More references}}
#{{tl|More references needed}}
#{{tl|More refs}}
#{{Tl|More sources}}
#{{tl|More sources needed}}
#{{tl|Needs additional citations}}
#{{tl|Needs more citations}}
#{{tl|Needs more references}}
#{{tl|Needs more sources}}
#{{Tl|Not verified}}
#{{Tl|Ref-improve}}
#{{Tl|Ref improve}}
#{{tl|Reference improve}}
#{{tl|Referenced}}
#{{Tl|Refimprove}}
#{{Tl|Sources}}
#{{tl|Sources needed}}
#{{Tl|Verification}}
#{{Tl|Verify}}
}}
==See also==
* {{Tl|Refbegin}}
* {{Tl|Refend}}
* {{Tl|Reflist}}
* {{Tl|Verify source}}
* [[:Template:Citation needed/doc#Inline templates]]
* [[Wikipedia:Template index/Cleanup/Verifiability and sources]]
{{Citation and verifiability article maintenance templates}}
<includeonly>{{sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Citation and verifiability maintenance templates]]
}}</includeonly>
1774ccdf3cf6159e006865ed3f0a94a770bba1f2
Template:Authority control
10
1044
2287
2286
2023-10-01T14:16:44Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Authority_control]]
wikitext
text/x-wiki
{{#invoke:Authority control|authorityControl}}<noinclude>
{{documentation}}
</noinclude>
e826e6e9609d825b483c2678d80f78742d321d92
Module:EditAtWikidata
828
1045
2289
2288
2023-10-01T14:16:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:EditAtWikidata]]
Scribunto
text/plain
-- Module to display an icon with a tooltip such as "Edit this at Wikidata".
-- Icon is linked to the Wikidata entry for the article where this is placed.
-- This message is only displayed if a local_parameter is not supplied
-- i.e. when called from a template, it can be coded not to display the message.
-- The qid of a Wikidata entry can optionally be supplied for testing outside the article.
-- Usage:
-- {{#invoke:EditAtWikidata|showMessage|local_parameter}}
-- {{#invoke:EditAtWikidata|showMessage|qid=<ArticleID>|local_parameter}}
local p = {}
local i18n =
{
["message"] = "Edit this at Wikidata"
}
local function trimToNil(text)
-- Return trimmed non-empty text, or nil.
if type(text) == 'string' then
return text:match('(%S.-)%s*$')
end
end
function p._showMessage(args)
local local_parm = trimToNil(args[1])
if local_parm then return "" end
-- Parameter qid=x specifies the Wikidata ID for the article.
-- This is not normally used except for testing outside the article.
local qid = trimToNil(args.qid) or mw.wikibase.getEntityIdForCurrentPage()
if qid and mw.wikibase.entityExists(qid) then
-- Parameter pid=x uses x as an anchor in the link to the Wikidata entry.
local anchor = trimToNil(args.pid)
-- Parameter nbsp replaces the leading space with
local space = trimToNil(args.nbsp) and " " or " "
return
space ..
"[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px" ..
"|alt=" .. i18n.message ..
"|link=https://www.wikidata.org/wiki/" .. qid ..
(anchor and ("#" .. anchor) or "") ..
"|class=noprint" ..
"|" .. i18n.message ..
"]]"
end
return ""
end
function p.showMessage(frame)
return p._showMessage(frame.args)
end
return p
9753d108ec0b308834a1e692bedfe5473e10de2a
Module:Authority control
828
1046
2291
2290
2023-10-01T14:16:58Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Authority_control]]
Scribunto
text/plain
require('strict')
local p = {}
local configfile = 'Module:Authority control/config' -- default configuation module
local arg = mw.getCurrentFrame().args.config
if arg and arg~='' then
configfile = 'Module:Authority control/config/' .. arg
end
local config
if mw.title.new(configfile).exists then
config = mw.loadData(configfile)
else
return error('Invalid configuration file',0)
end
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = title.subpageText == config.i18n.testcases
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
local function getCatForId(id,faulty)
local cat = string.format(
config.i18n.cat,
(faulty and config.i18n.faulty..' ' or '') .. id
)
return addCat(cat)
end
local function getIdsFromWikidata(qid,property)
local function getquals(statement,qualid)
if statement.qualifiers and statement.qualifiers['P'..qualid] then
return mw.wikibase.renderSnak(statement.qualifiers['P'..qualid][1])
else
return false
end
end
local ids = {}
if qid then
for _, statement in ipairs(mw.wikibase.getBestStatements(qid,property)) do
if statement.mainsnak.datavalue then
local val = statement.mainsnak.datavalue.value
if val then
local namedas = getquals(statement,1810) or getquals(statement,742) or ''
table.insert(ids,{id=val,name=namedas})
end
end
end
end
return ids
end
local _makelink = function(conf,val,nextid,qid) --validate values and create a link
local function tooltip(text,label)
if label and label~='' then
return mw.getCurrentFrame():expandTemplate{title = "Tooltip", args = {text,label}}
else
return text
end
end
local link
if nextid==1 then
if conf.prefix then
link = '*' .. conf.prefix .. '\n**'
else
link = '*'
end
else
link = '\n**'
end
local valid_value = false
if conf.customlink then -- use function to validate and generate link
local label = nextid>1 and nextid
local newlink= require(config.auxiliary)[conf.customlink](val.id,label)
if newlink then
link = link .. newlink
valid_value = true
end
else
if conf.pattern then -- use pattern to determine validity if defined
valid_value = string.match(val.id,'^'..conf.pattern..'$')
elseif conf.patterns then
for _,pattern in ipairs(conf.patterns) do
valid_value = val.id:match('^'..pattern..'$')
if valid_value then break end
end
elseif conf.valid then -- otherwise use function to determine validity
valid_value = require(config.auxiliary)[conf.valid](val.id)
else -- no validation possible
valid_value = val.id
end
if valid_value then
local newlink
local label = conf.label
if not label or nextid>1 then
label = tostring(nextid)
end
if conf.link then
valid_value = valid_value:gsub('%%', '%%%%')
newlink = '[' .. mw.ustring.gsub(conf.link,'%$1',valid_value) .. ' ' .. label .. ']'
else
newlink = valid_value
end
link = link .. '<span class="uid">'..tooltip(newlink,val.name)..'</span>'
end
end
if valid_value then
link = link .. getCatForId(conf.category or conf[1])
else
--local preview = require("Module:If preview")
local wdlink = qid and '[[:wikidata:' .. qid .. '#P' .. conf.property .. ']]' or ''
local tooltip = string.format(
config.i18n.idnotvalid,
conf[1],
val.id
)
link = link .. '[[File:' .. config.i18n.warningicon .. '|20px|frameless|link=' .. wdlink .. '|' .. tooltip .. '.]]'
if conf.errorcat then
link = link .. addCat(conf.errorcat)
else
link = link .. getCatForId(conf.category or conf[1],true)
end
link = link .. addCat(config.i18n.allfaultycat,conf[1])-- .. preview._warning({'The '..conf[1]..' id '..val..' is not valid.'})
end
return link
end
--[[==========================================================================]]
--[[ Main ]]
--[[==========================================================================]]
function p.authorityControl(frame)
local function resolveQID(qid)
if qid then
qid = 'Q'..mw.ustring.gsub(qid, '^[Qq]', '')
if mw.wikibase.isValidEntityId(qid) and mw.wikibase.entityExists(qid) then
local sitelink = mw.wikibase.getSitelink(qid)
if sitelink then
return mw.wikibase.getEntityIdForTitle(sitelink) or mw.wikibase.getEntity(qid).id
end
return mw.wikibase.getEntity(qid).id
end
end
end
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = ''
local rct = false -- boolean to track if there are any links to be returned
local qid,topic
local wikilink = function(qid,hideifequal)
local label,sitelink = mw.wikibase.getLabel(qid),mw.wikibase.getSitelink(qid)
if label then
if sitelink then
local target = mw.title.new(sitelink)
if target==title or (target.isRedirect and target.redirectTarget==title) then -- do not link
return label
else -- make wikilink to article
return '[[' .. sitelink .. '|' .. label .. ']]'
end
else
return label
end
else
auxCats = auxCats .. needsAttention('L')
return qid
end
end
if namespace == 0 then
qid = mw.wikibase.getEntityIdForCurrentPage()
end
if qid then -- article is connected to Wikidata item
if parentArgs.qid and (resolveQID(parentArgs.qid) ~= qid) then -- non-matching qid parameter
auxCats = auxCats .. needsAttention('D')
end
else -- page is not connected to any Wikidata item
qid = resolveQID(parentArgs.qid) -- check qid parameter if no wikidata item is connected
if qid then -- qid parameter is valid, set topic to display
topic = mw.wikibase.getLabel(qid)
if topic then
if mw.ustring.lower(title.subpageText) == mw.ustring.lower(topic) then -- suppress topic display if subpagename equals topic up to case change
topic = nil
end
if topic and mw.wikibase.getSitelink(qid) then -- make wikilink to article
topic = '[[' .. mw.wikibase.getSitelink(qid) .. '|' .. topic .. ']]'
end
else
auxCats = auxCats .. needsAttention('L')
end
elseif parentArgs.qid and parentArgs.qid~='' then -- invalid qid has been supplied, add to tracking cat
auxCats = auxCats .. needsAttention('Q')
end
end
local qids = {} -- setup any additional QIDs
if parentArgs.additional=='auto' and qid then -- check P527 for parts to add additional qids
local checkparts = function(property)
local parts = mw.wikibase.getBestStatements(qid,property)
if parts then
for _,part in ipairs(parts) do
if part.mainsnak.datavalue and part.mainsnak.datavalue.value.id then
local resolvedqid = resolveQID(part.mainsnak.datavalue.value.id)
if resolvedqid then
table.insert(qids,resolvedqid)
end end end end end
for _,part in ipairs(config.auto_additional) do
checkparts('P'..tostring(part))
end
elseif parentArgs.additional and parentArgs.additional ~= '' then
for _,v in ipairs(mw.text.split(parentArgs.additional,"%s*,%s*")) do
v = resolveQID(v)
if v then
if v == qid then -- duplicate of qid parameter
auxCats = auxCats .. needsAttention('R')
end
table.insert(qids,v)
else -- invalid QID specified
auxCats = auxCats .. needsAttention('A')
end
end
end
local sections = {}
local localparams = false
local numsections = 0
for _,_ in ipairs(config.sections) do numsections = numsections + 1 end
for _ = 1,#qids+numsections do table.insert(sections,{}) end
local qslink = '' -- setup link to add using QuickStatements
-- check which identifiers to show/suppress in template
local show = {} -- setup list
local showall = true
local function stripP(pid)
if pid:match("^[Pp]%d+$") then
pid = mw.ustring.gsub(pid,'[Pp]','') --strip P from property number
end
if pid:match("^%d+$") then
return tonumber(pid)
end
end
local function addshowlist(list)
if list and list ~= '' then
for _,v in ipairs(mw.text.split(string.lower(list),"%s*,%s*")) do
local vprop = stripP(v)
if vprop then -- e.g. show=P214 to show one particular property
show[vprop] = true
else -- e.g. show=arts to use whitelist
if config.whitelists[v] then
for _,w in ipairs(config.whitelists[v].properties) do
show[w] = true
end
end
end
end
showall = false
end
end
addshowlist(frame.args.show) -- check show= parameter on wrapper template
addshowlist(parentArgs.show or parentArgs.country) -- check show parameter on article template
if parentArgs.suppress then
local suppresslist = mw.text.split(parentArgs.suppress,"%s*,%s*") -- split parameter by comma
for _,v in ipairs(suppresslist) do
v = stripP(string.upper(v))
if v then
show[v] = false
auxCats = auxCats .. '[[' .. config.i18n.category .. ':' .. config.i18n.suppressedcat .. ']]'
else
auxCats = auxCats .. needsAttention('P')
end
end
end
local function makeSections(qid,addit)
local tval = {}
local function parameter_is_used(property)
local used = false
if property then
if tval[property] then
if tval[property][1] then
used = true
end
elseif tval[property] == false then -- property has been manually suppressed
used = true
end
end
return used
end
for _, params in ipairs(conf) do
tval[params.property] = getIdsFromWikidata(qid, 'P' .. params.property) -- setup table for values with property number as key
local showb = true
if (show[params.property] == nil) and (show[string.upper(params[1])] == nil ) then
showb = showall -- if not specified then depends on showall
elseif (show[params.property] == false) or (show[string.upper(params[1])] == false) then -- if either are false then id will be suppressed
showb = false
end
if not showb then
tval[params.property] = false -- indicates the identifier is suppressed
elseif not addit then
local val = parentArgs[mw.ustring.lower(params[1])] or parentArgs[params[1]]
if val and val~='' then -- add local parameter to list if not already in
localparams = true
local bnew = true
for _, w in pairs(tval[params.property]) do
if val == w.id then
bnew = false
end
end
if bnew then -- add new value to table
if qid then
qslink = qslink .. '%7C%7C' .. qid .. '%7CP' .. params.property .. '%7C%22' .. mw.uri.encode(val,"PATH") .. '%22%7CS143%7CQ328'
end
table.insert(tval[params.property],{id=val,name=''})
end
end
end
local suppress = false
if params.suppressedbyproperty then
for _,sc in ipairs(params.suppressedbyproperty) do
if parameter_is_used(sc) then
suppress = true
end
end
end
if tval[params.property] ~= false and not suppress then
local tlinks = {} -- setup table for links
local nextIdVal = 1
local row = ''
for _,val in ipairs(tval[params.property]) do
local link = _makelink(params,val,nextIdVal,qid)
row = row .. link
table.insert(tlinks,link)
nextIdVal = nextIdVal + 1
end
if nextIdVal>=2 then
row = row .. '\n'
table.insert(sections[addit or params.section],row)
rct = true
end
end
end
end
local function pencil(qid)
if not qid then
return ''
end
local args = { pid = 'identifiers' } -- #target the list of identifiers
args.qid = qid
return require('Module:EditAtWikidata')._showMessage(args)
end
makeSections(qid,false)
for c = 1,#qids do
makeSections(qids[c],numsections+c)
end
--configure Navbox
local outString = ''
if rct or localparams then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect,lastsect = 0,0
local navboxArgs = {
name = 'Authority control',
navboxclass = 'authority-control',
bodyclass = 'hlist',
state = parentArgs.state or config.i18n.autocollapse,
navbar = 'off'
}
for c=1,numsections+#qids do
if #sections[c] ~= 0 then -- section is non-empty
sect = sect + 1
lastsect = c
local sectname
if c <= numsections then -- regular section
sectname = config.sections[c].name
else -- section from additional qid
local qid = qids[c-numsections]
sectname = wikilink(qid) .. pencil(qid)
end
navboxArgs['group' .. c] = sectname
navboxArgs['list' .. c] = table.concat(sections[c])
end
end
if localparams then
lastsect = lastsect + 1
sect = sect + 1
navboxArgs['group' .. lastsect] = config.i18n.warning
local warning = frame:expandTemplate{title = config.i18n.errortemplate, args = {config.i18n.localparams}}
if qslink ~= '' then
warning = warning .. ' ' .. config.i18n.movetowd .. '<span class="qs autoconfirmed-show"> [[File:Commons to Wikidata QuickStatements.svg|20px|link=https://quickstatements.toolforge.org/#/v1=' .. qslink .. '|' .. config.i18n.addtowd .. ']]</span>'
elseif not qid then
if namespace == 0 then
warning = warning .. ' ' .. config.i18n.connecttowd
elseif namespace==14 or namespace==2 or namespace==118 then
warning = warning .. ' ' .. config.i18n.qidcode
end
end
navboxArgs['list' .. lastsect] = warning
end
if topic then -- display in expanded form with topic
navboxArgs.title = config.i18n.aclink .. ' – ' .. topic .. pencil(qid)
elseif sect == 1 then -- special display when only one section
if lastsect <= numsections then
if config.sections[lastsect].hidelabelwhenalone then -- no special label when only general or other IDs are present
navboxArgs['group' .. lastsect] = config.i18n.aclink .. pencil(qid)
else -- other regular section
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect] .. pencil(qid)
end
else -- section from additional qid
navboxArgs['group' .. lastsect] = config.i18n.aclink .. ': ' .. navboxArgs['group' .. lastsect]
end
else -- add title to navbox
navboxArgs.title = config.i18n.aclink .. pencil(qid)
end
outString = Navbox._navbox(navboxArgs)
end
if parentArgs.state
and parentArgs.state~=''
and parentArgs.state~=config.i18n.collapsed
and parentArgs.state~=config.i18n.expanded
and parentArgs.state~=config.i18n.autocollapse then --invalid state parameter
auxCats = auxCats .. needsAttention('S')
end
if testcases then
auxCats = mw.ustring.gsub(auxCats, '(%[%[)(' .. config.i18n.category .. ')', '%1:%2') --for easier checking
end
--out
outString = outString..auxCats
if namespace ~= 0 then
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.Articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
outString = mw.ustring.gsub(outString,'(%[%[)(' .. config.i18n.category .. ':' .. config.i18n.All_articles .. ')([^%|%]]+)%|?[^%|%]]*(%]%])','%1:%2%3%4')
end
local check = require('Module:Check for unknown parameters')._check
local sortkey
if namespace == 0 then
sortkey = '*' .. title.text
else
sortkey = title.fullText
end
outString = outString .. check({
['unknown'] = '[[' .. config.i18n.category .. ':' .. config.i18n.pageswithparams .. '|' .. sortkey .. ']]',
['preview'] = config.i18n.previewwarning, 'show', 'country', 'suppress', 'additional', 'qid', 'state'
}, parentArgs)
return outString
end
p.makelink = function(conf,val,nextid,qid)
return _makelink(conf,val,nextid,qid)
end
return p
53aaca83d7c22230cefa966b7911d2ab311588a9
Template:See also
10
1047
2293
2292
2023-10-01T14:16:59Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:See_also]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
74d2ab6a0df5605fbe2085c405925ec659be52b7
Module:Wd
828
1048
2295
2294
2023-10-01T14:17:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Wd]]
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local arg = ...
local i18n
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = arg
end
if not i18n then
i18n = require(title .. "/i18n").init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, param)
local text = i18n["errors"][code]
if param then text = mw.ustring.gsub(text, "$1", param) end
return text
end
local function throwError(errorMessage, param)
error(errorText(errorMessage, param))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels?
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local key, citeWeb, citeQ, label
local params = {}
local citeParams = {['web'] = {}, ['q'] = {}}
local citeMismatch = {}
local useCite = nil
local useParams = nil
local value = ""
local ref = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local numAuthorParameters = 0
local numAuthorNameStringParameters = 0
local tempLink
local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID
local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any
local version = 4 -- increment this each time the below logic is changed to avoid conflict errors
if statement.snaks then
-- don't include "imported from", which is added by a bot
if statement.snaks[aliasesP.importedFrom] then
statement.snaks[aliasesP.importedFrom] = nil
end
-- don't include "Wikimedia import URL"
if statement.snaks[aliasesP.wikimediaImportURL] then
statement.snaks[aliasesP.wikimediaImportURL] = nil
-- don't include "retrieved" if no "referenceURL" is present,
-- as "retrieved" probably belongs to "Wikimedia import URL"
if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then
statement.snaks[aliasesP.retrieved] = nil
end
end
-- don't include "inferred from", which is added by a bot
if statement.snaks[aliasesP.inferredFrom] then
statement.snaks[aliasesP.inferredFrom] = nil
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference
-- find the "Wikidata property" properties in the item from "stated in"
wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL.
additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- don't include "subject named as", but use it as the title when "title" is not present but a URL is
if statement.snaks[aliasesP.subjectNamedAs] then
if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then
additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value
end
statement.snaks[aliasesP.subjectNamedAs] = nil
end
-- retrieve all the parameters
for i in pairs(statement.snaks) do
label = ""
-- multiple authors may be given
if i == aliasesP.author or i == aliasesP.authorNameString then
params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true
else
params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #params[i] == 0 then
params[i] = nil
else
referenceEmpty = false
if statement.snaks[i][1].datatype == 'external-id' then
key = "external-id"
label = self.conf:getLabel(i)
if label ~= "" then
label = label .. " "
end
else
key = i
end
-- add the parameter to each matching type of citation
for j in pairs(citeParams) do
-- do so if there was no mismatch with a previous parameter
if not citeMismatch[j] then
-- check if this parameter is not mismatching itself
if i18n['cite'][j][key] then
-- continue if an option is available in the corresponding cite template
if i18n['cite'][j][key] ~= "" then
-- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter)
if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then
citeParams[j][i18n['cite'][j][key]] = label .. params[i][1]
-- to avoid problems with non-author multiple parameters (if existent), the following old code is retained
for k=2, #params[i] do
citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k]
end
-- handle "author" and "author name string" specially if they use the same template parameter
elseif i == aliasesP.author or i == aliasesP.authorNameString then
if params[aliasesP.author] ~= nil then
numAuthorParameters = #params[aliasesP.author]
else
numAuthorParameters = 0
end
if params[aliasesP.authorNameString] ~= nil then
numAuthorNameStringParameters = #params[aliasesP.authorNameString]
else
numAuthorNameStringParameters = 0
end
-- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks
-- reason: parameters are added to params each iteration of the loop, not before the loop
if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then
for k=1, numAuthorParameters + numAuthorNameStringParameters do
if k <= numAuthorParameters then -- now handling the authors from the "author" property
citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k]
else -- now handling the authors from "author name string"
citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters]
end
end
end
end
end
else
citeMismatch[j] = true
end
end
end
end
end
-- use additional properties
for i in pairs(additionalRefProperties) do
for j in pairs(citeParams) do
if not citeMismatch[j] and i18n["cite"][j][i] then
citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i]
else
citeMismatch[j] = true
end
end
end
-- get title of general template for citing web references
citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front
-- get title of template that expands stated-in references into citations
citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front
-- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present
if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then
useCite = citeWeb
useParams = citeParams['web']
-- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present
elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then
-- we need the raw "stated in" Q-identifier for the this template
citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true
useCite = citeQ
useParams = citeParams['q']
end
if useCite and useParams then
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(useParams) do
value = value .. "|" .. i .. "=" .. v
end
value = "{{" .. useCite .. value .. "}}"
else
value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams}
end
-- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error
elseif not referenceEmpty then
value = "<span style=\"color: crimson\">" .. errorText("malformed-reference") .. "</span>"
end
if value ~= "" then
value = {value} -- create one value object
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version)
end
ref = {value} -- wrap the value object in an array
end
end
return ref
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
local valuesArray, refHash
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true)
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
a84f46cf7d14594003fea6e756cf41b723dd67cd
Module:Wd/i18n
828
1049
2297
2296
2023-10-01T14:17:02Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Wd/i18n]]
Scribunto
text/plain
-- The values and functions in this submodule should be localized per wiki.
local p = {}
function p.init(aliasesP)
p = {
["errors"] = {
["unknown-data-type"] = "Unknown or unsupported datatype '$1'.",
["missing-required-parameter"] = "No required parameters defined, needing at least one",
["extra-required-parameter"] = "Parameter '$1' must be defined as optional",
["no-function-specified"] = "You must specify a function to call", -- equal to the standard module error message
["main-called-twice"] = 'The function "main" cannot be called twice',
["no-such-function"] = 'The function "$1" does not exist', -- equal to the standard module error message
["malformed-reference"] = "Error: Unable to display the reference properly. See [[Module:wd/doc#References|the documentation]] for details.[[Category:Module:Wd reference errors]]"
},
["info"] = {
["edit-on-wikidata"] = "Edit this on Wikidata"
},
["numeric"] = {
["decimal-mark"] = ".",
["delimiter"] = ","
},
["datetime"] = {
["prefixes"] = {
["decade-period"] = ""
},
["suffixes"] = {
["decade-period"] = "s",
["millennium"] = " millennium",
["century"] = " century",
["million-years"] = " million years",
["billion-years"] = " billion years",
["year"] = " year",
["years"] = " years"
},
["julian-calendar"] = "Julian calendar", -- linked page title
["julian"] = "Julian",
["BCE"] = "BCE",
["CE"] = "CE",
["common-era"] = "Common Era" -- linked page title
},
["coord"] = {
["latitude-north"] = "N",
["latitude-south"] = "S",
["longitude-east"] = "E",
["longitude-west"] = "W",
["degrees"] = "°",
["minutes"] = "'",
["seconds"] = '"',
["separator"] = ", "
},
["values"] = {
["unknown"] = "unknown",
["none"] = "none"
},
["cite"] = {
["version"] = "4", -- increment this each time the below parameters are changed to avoid conflict errors
["web"] = {
-- <= left side: all allowed reference properties for *web page sources* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite web]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "website",
[aliasesP.referenceURL] = "url",
[aliasesP.publicationDate] = "date",
[aliasesP.retrieved] = "access-date",
[aliasesP.title] = "title",
[aliasesP.archiveURL] = "archive-url",
[aliasesP.archiveDate] = "archive-date",
[aliasesP.language] = "language",
[aliasesP.author] = "author", -- existence of author1, author2, author3, etc. is assumed
[aliasesP.authorNameString] = "author",
[aliasesP.publisher] = "publisher",
[aliasesP.quote] = "quote",
[aliasesP.pages] = "pages", -- extra option
[aliasesP.publishedIn] = "website"
},
["q"] = {
-- <= left side: all allowed reference properties for *sources other than web pages* per https://www.wikidata.org/wiki/Help:Sources
-- => right side: corresponding parameter names in (equivalent of) [[:en:Template:Cite Q]] (if non-existent, keep empty i.e. "")
[aliasesP.statedIn] = "1",
[aliasesP.pages] = "pages",
[aliasesP.column] = "at",
[aliasesP.chapter] = "chapter",
[aliasesP.sectionVerseOrParagraph] = "section",
["external-id"] = "id", -- used for any type of database property ID
[aliasesP.title] = "title",
[aliasesP.publicationDate] = "date",
[aliasesP.retrieved] = "access-date"
}
}
}
p.getOrdinalSuffix = function(num)
if tostring(num):sub(-2,-2) == '1' then
return "th" -- 10th, 11th, 12th, 13th, ... 19th
end
num = tostring(num):sub(-1)
if num == '1' then
return "st"
elseif num == '2' then
return "nd"
elseif num == '3' then
return "rd"
else
return "th"
end
end
p.addDelimiters = function(n)
local left, num, right = string.match(n, "^([^%d]*%d)(%d*)(.-)$")
if left and num and right then
return left .. (num:reverse():gsub("(%d%d%d)", "%1" .. p['numeric']['delimiter']):reverse()) .. right
else
return n
end
end
return p
end
return p
a860785cf3b9ad3ba0c8096d5627eae877d4e9ab
Template:Tooltip
10
1050
2299
2298
2023-10-01T14:17:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tooltip]]
wikitext
text/x-wiki
<templatestyles src="Template:Tooltip/styles.css" />{{#ifeq:{{yesno-no|{{{link}}}}}|yes
|[[{{{1}}}|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</span>]]
|<span class="rt-commentedText tooltip {{#ifeq:{{yesno-yes|{{{dotted}}}}}|no||tooltip-dotted}} {{{class|}}}" {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} title="{{#tag:nowiki|{{#invoke:String|replace|{{{2|}}}|"|"}}}}">{{{1|}}}</span>
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using tooltip with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Tooltip]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | class | dotted | id | link | style }}<noinclude>
{{Documentation|Template:Abbr/doc}}
</noinclude>
0bc4ac1b7ea7d4f2cdbb94b76559770a78cd10d9
Template:Tooltip/styles.css
10
1051
2301
2300
2023-10-01T14:17:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tooltip/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.tooltip-dotted {
border-bottom: 1px dotted;
cursor: help;
}
567ab0781901eeeb93077ef25052613364378d1e
Template:Details
10
1052
2303
2302
2023-10-01T14:17:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Details]]
wikitext
text/x-wiki
#REDIRECT [[Template:Further]]
{{Redirect category shell|
{{R from merge}}
}}
1a90a51d85f6cb700979ea38f5f69bee0ff2c85e
Template:Replace
10
1053
2305
2304
2023-10-01T14:17:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Replace]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|{{{2}}}|{{{3}}}|plain={{{plain|true}}}|count={{{count|}}}}}<noinclude>
{{documentation}}
</noinclude>
4192ba916713e0f44fdfd0f8e0d9d105c0c85472
Template:Wikidata
10
1054
2307
2306
2023-10-01T14:17:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikidata]]
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:Wd|main}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
5bf277586915dfd4207113978658a5f0bfd87abf
Template:Endflatlist
10
1055
2309
2308
2023-10-01T14:17:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Endflatlist]]
wikitext
text/x-wiki
<includeonly></div></includeonly><noinclude>
{{documentation|Template:Flatlist/doc}}
</noinclude>
05fe2bc6790622a0a6caf09151a0c0640fed63dd
Template:TOC right
10
1056
2311
2310
2023-10-01T14:17:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TOC_right]]
wikitext
text/x-wiki
<templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!--
--><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" {{#if:{{{width|{{{1|}}}}}}|style="width: {{{width|{{{1}}}}}};"}}>__TOC__</div><noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
</noinclude>
67c60b46e441afa40d8c4c1227aa6580a0cda2e9
Template:TOC right/styles.css
10
1057
2313
2312
2023-10-01T14:17:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TOC_right/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
/* The TOC is hidden on Minerva (mobile skin) for width < 720px so must also hide this wrapper */
@media all and (max-width: 720px) {
body.skin-minerva .tocright {
display: none;
}
.tocright {
width: 100% !important; /* fix the inline width while at small resolution */
}
}
@media all and (min-width: 720px) {
.tocright {
float: right;
clear: right;
width: auto;
margin: 0 0 0.5em 1em;
}
.tocright-clear-left {
clear: left;
}
.tocright-clear-both {
clear: both;
}
.tocright-clear-none {
clear: none;
}
}
60435a52ddabf7eb321fa80dbf78c0d63d13f95b
Template:Str left
10
1058
2315
2314
2023-10-01T14:17:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Str_left]]
wikitext
text/x-wiki
<includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
2048b0d7b35e156528655b1d090e8b5ffab3f400
Template:Q
10
1059
2317
2316
2023-10-01T14:17:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Q]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wikidata entity link]]
[[Category:Wikidata templates]]
{{Redirect category shell|
{{R from template shortcut}}
{{R from move}}
}}
7f19fdcb2b05d966cd3f0f5f540cf8fa37935869
Template:Wikidata entity link
10
1060
2319
2318
2023-10-01T14:17:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikidata_entity_link]]
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}
| {{#switch:{{padleft:|1|{{uc:{{{1}}}}}}}
| Q | P = [[d:Special:EntityPage/{{uc:{{{1}}}}}|{{#invoke:wd|label|{{uc:{{{1}}}}}}} <small>({{uc:{{{1}}}}})</small>]]
| #default = [[d:Special:EntityPage/Q{{uc:{{{1}}}}}|{{#invoke:wd|label|Q{{uc:{{{1}}}}}}} <small>(Q{{uc:{{{1|}}}}})</small>]]
}}
| {{#if:{{#invoke:wd|label|raw}}
| [[d:Special:EntityPage/{{#invoke:wd|label|raw}}|{{#invoke:wd|label}} <small>({{#invoke:wd|label|raw}})</small>]]
| <small>(no entity)</small>
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
3eaf99f5fdf869bc08932bb8eda9eba23858c9c8
Template:Authority control (arts)
10
1061
2321
2320
2023-10-01T14:17:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Authority_control_(arts)]]
wikitext
text/x-wiki
{{#invoke:Authority control | authorityControl | show=arts }}<noinclude>
{{documentation}}
</noinclude>
9b8aaaf1725393b12ec20ed303eb6ff24f720e7f
Template:Collapsible option
10
1062
2323
2322
2023-10-01T14:17:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Collapsible_option]]
wikitext
text/x-wiki
This template's '''initial visibility currently defaults to {{param value|{{#switch:{{{default|}}}|collapsed=collapsed|expanded=expanded|autocollapse|#default=autocollapse}}}}''', meaning that {{#switch:{{{default|}}}|collapsed=it is hidden apart from its title bar.|expanded=it is fully visible.|autocollapse|#default=if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar; if not, it is fully visible.}}
To change this template's initial visibility, the {{para|{{{parameter_name|state}}}}} [[Help:Template#Parameters|parameter]] may be used:
<ul>
{{#ifeq:{{{default|}}}|collapsed|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}}| |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=collapsed}}</nowiki></code> will show the template collapsed, i.e. hidden apart from its title bar.</li>}}
{{#ifeq:{{{default|}}}|expanded|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=expanded}}</nowiki></code> will show the template expanded, i.e. fully visible.</li>}}
{{#ifeq:{{{default|autocollapse}}}|autocollapse|<!-- don't show -->|<li><code><nowiki>{{</nowiki><includeonly>{{</includeonly>{{#if:{{{nobase|}}} | |BASE}}PAGENAME<includeonly>}}</includeonly><nowiki>|</nowiki>{{{parameter_name|state}}}<nowiki>=autocollapse}}</nowiki></code> will show the template autocollapsed, i.e. if there is another collapsible item on the page (a [[Wikipedia:Navigation_template#Types|navbox, sidebar]], or [[Help:Collapsing|table with the collapsible attribute]]), it is hidden apart from its title bar, but if not, it is fully visible.</li>}}</ul><!--
-->{{#if:{{{align|}}}|{{para|align|{{var|value}}}} is also available; where {{var|value}} can be either <code>right</code> or <code>left</code>. The default is {{kbd|center}}.
}}{{#if:{{{title-background|}}}|{{para|title-background|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|navbox}} or a {{kbd|color}}. The default is {{kbd|none}}, and {{{kbd|navbox}}} defaults to the default navbox color.
}}{{#if:{{{width|}}}|
{{para|width|{{var|value}}}} is also available; where {{var|value}} can be either {{kbd|{{var|N}} [em/%/px]}} or {{kbd|auto}}. The default is {{kbd|100%}}.
}}<!--
Add {{pp-template}} if template page where this template is transcluded is protected:
-->{{template other
| {{#if:{{PROTECTIONLEVEL:edit}} |{{pp-template|docusage=yes}}
| {{#if:{{PROTECTIONLEVEL:move}} |{{pp-move|docusage=yes|small=yes}} }}
}} }}<noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage, interwikis to Wikidata, not here -->
</noinclude>
fa727f26d272a237bc7017c83ebd236a8ebb743a
Template:Kbd
10
1063
2325
2324
2023-10-01T14:17:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Kbd]]
wikitext
text/x-wiki
<kbd {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} style="background:#EEEEEE; {{#if:{{{spacing|}}}| padding-left:{{{padding|0.2em}}}; padding-right:{{{padding|0.2em}}};| letter-spacing:0.05em; padding-left:0.25em; padding-right:0.2em;}}{{#if:{{{style|}}}|{{{style}}}}}" {{#if:{{{lang|}}}|lang="{{{lang}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1|user input}}}</kbd><noinclude>
<!--Categories go near the bottom of the /doc page.-->
{{Documentation}}
</noinclude>
4717d3a6d1c5c1b826066ac2a794cc6c92b43ac3
Template:Collapse
10
1064
2327
2326
2023-10-01T14:17:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Collapse]]
wikitext
text/x-wiki
{| <!-- Template:Collapse --> class="mw-collapsible mw-archivedtalk {{#switch:{{lc:{{{expand|no}}}}}|uncollapse|uncollapsed|expand|expanded|yes|y=mw-uncollapsed|#default=mw-collapsed}} {{{class|}}}" style="{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|display: none;}}background-color: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|silver}}}; {{{{{|safesubst:}}}#switch:{{{float|}}}
| left = margin:0.2em 0.5em 0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: left; clear: {{{clear|left}}}
| right = margin:0.2em 0 0.2em 0.5em; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; float: right; clear: {{{clear|right}}}
| none = margin:0.2em 0; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|none}}}
| center | centre = margin:0.2em auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|auto}}; clear: {{{clear|both}}}
| #default = margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}
}}; padding: 1px;"
|-
! style="background-color: {{{background|{{{bg|#F0F2F5}}}}}}; font-size:87%; padding:0.2em 0.3em; text-align: {{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{center|}}}|center|left}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display: inline; font-size: 115%;">{{{2|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div>
|-
| style="border: solid {{{border2|1px silver}}}; padding: {{{padding|8px}}}; background-color: {{{bg2|white}}};" |
<div>{{{content|{{{text|{{{1<noinclude>|{{lorem ipsum|3}}</noinclude>}}}}}}}}}</div>
|}{{{{{|safesubst:}}}#ifeq:{{NAMESPACEE}}|{{ns:0}}|<span class="error noprint">[[Template:collapse]] is not available for use in articles (see [[MOS:COLLAPSE]]).</span>}}<noinclude>
{{Documentation}}
</noinclude>
0ab1d915780bc1110ec074c518c6f94b0bfbc597
Template:TemplateDataHeader
10
1065
2329
2328
2023-10-01T14:17:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:TemplateDataHeader]]
wikitext
text/x-wiki
#REDIRECT [[Template:TemplateData header]]
{{R from move}}
61e461016bcb3a0a6fc4d8aea35d590298c19630
Template:Template display
10
1066
2331
2330
2023-10-01T14:17:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_display]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Message box|ombox|type=notice
|image={{#switch:{{{1}}}|adaptive=[[File:Different devices simple.svg|65x65px|link=|alt=]]|nomobile=[[File:Handheld devices no.svg|55px|link=|alt=]]|nodesktop=[[File:Desktop devices no.svg|55px|link=|alt=]]}}
|text={{#switch:{{{1}}}
| adaptive = This template is [[Adaptive web design|responsive]] and <strong>displays differently in mobile and desktop view</strong>. Read the documentation for an explanation of the differences and why they exist.
| nomobile = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the documentation for an explanation.
| nodesktop = This template does ''not'' display in the desktop view of Wikipedia; it is <strong>mobile only</strong>. Read the documentation for an explanation.
| nomobilesidebar = This template does ''not'' display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the [[Template:Sidebar/doc|parent documentation]] for an explanation.
| vector2022 = This template does not work properly in the [[Wikipedia:Vector 2022|Vector 2022]] skin. Read the documentation for an explanation.
| #default = {{{1}}}
}}}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
47cc41eacc2d2dec246f01b81111b280cec901a3
Template:Lua sidebar/styles.css
10
1067
2333
2332
2023-10-01T14:17:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Lua_sidebar/styles.css]]
sanitized-css
text/css
.lua-sidebar {
width: auto;
max-width: 22em;
}
9984d36eb49fae70dd00527c993784d775409a6b
Template:Param value
10
1068
2335
2334
2023-10-01T14:17:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Param_value]]
wikitext
text/x-wiki
<code style="border:{{{border|{{{b|thin solid #caa}}}}}};background-color:{{{bg-color|{{{bg|white}}}}}};padding:1px 2px 0 1px;margin:0 2px 0 1px;white-space:nowrap;{{{style|}}}">{{replace|{{replace|{{replace|{{replace|{{replace|<includeonly>⊗ϑ{{{1|}}}⊗ϑ</includeonly><noinclude>value</noinclude>| |{{{space|{{{sp| }}}}}}}}|#|#}}|*|*}}|:|:}}|⊗ϑ|}}</code><noinclude>
{{Documentation}}
</noinclude>
6298b021570fa18e8e9016184d0b7a3c00563553
Template:Uses Wikidata
10
1069
2337
2336
2023-10-01T14:17:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Uses_Wikidata]]
wikitext
text/x-wiki
{{Sister project
| position = {{{position|}}}
| project = data
| text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see [[#{{{section}}}|§ {{{section}}}]] for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}:
{{#invoke:Uses Wikidata|usesProperty}}
}}}}{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default={{#ifeq:{{PAGENAME}} |Uses Wikidata ||{{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }} }}
}}<!--
--><noinclude>{{documentation}}</noinclude>
4b6f6f2ef4c6d4b84fa8aab733189b440b156a3f
Module:Interval
828
1070
2339
2338
2023-10-01T14:17:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Interval]]
Scribunto
text/plain
-- This module powers {{interval}}.
local p = {}
-- Constants
local lang = mw.language.getContentLanguage()
local getArgs = require('Module:Arguments').getArgs
local function getArgNums(args)
-- Returns an array containing the keys of all positional arguments
-- that contain data (i.e. non-whitespace values).
-- (from Module:Unbulleted_list)
local nums = {}
for k, v in pairs(args) do
if type(k) == 'number' and
k >= 1 and
math.floor(k) == k and
mw.ustring.match(v, '%S') then
table.insert(nums, k)
end
end
table.sort(nums)
return nums
end
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
local n, rule, format = args.n, args.rule, args.format
local numbers = getArgNums(args)
local low, high, lowpos, highpos = nil, nil, 0, #numbers + 1
-- If comparing times, convert them all to seconds after the epoch
if format == 'time' then
if n then
n = lang:formatDate('U', '@' .. n)
else
n = os.time() -- Set n to now if no time provided
end
end
n = tonumber(n)
for i, num in ipairs(numbers) do
local interval
if format == 'time' then
interval = tonumber(lang:formatDate('U', '@' .. args[num]))
else
interval = tonumber(args[num])
end
if n and ((n >= interval and not rule) or (n > interval and rule == '>')) then
low = interval
lowpos = num
else
high = high and math.min(interval, high) or interval
if high == interval then highpos = num end
end
end
return lowpos .. '-' .. highpos
end
return p
e9162c263908d88338f24fa3293ff72adfbc9277
Template:Wikidata property link
10
1071
2341
2340
2023-10-01T14:17:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikidata_property_link]]
wikitext
text/x-wiki
<includeonly>{{#switch:{{str left|{{uc:{{{id|}}}}}|1}}
| N <!--none--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}}]]
}}
| O <!--only--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]
}}
| F <!--first--> = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|{{uc:{{{1|}}}}}}}</small>}}
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|P{{uc:{{{1|}}}}}]]{{#if:{{wikidata|label|P{{uc:{{{1|}}}}}}}|: <small>{{wikidata|label|P{{uc:{{{1|}}}}}}}</small>}}
}}
| #default = {{#switch:{{str left|{{uc:{{{1|}}}}}|1}}
| P = [[d:Special:EntityPage/{{uc:{{{1|}}}}}|{{wikidata|label|{{uc:{{{1|}}}}}}} <small>({{uc:{{{1|}}}}})</small>]]
| [[d:Special:EntityPage/P{{uc:{{{1|}}}}}|{{wikidata|label|P{{uc:{{{1|}}}}}}} <small>(P{{uc:{{{1|}}}}})</small>]]
}}
}}</includeonly><noinclude>{{Documentation}}</noinclude>
ad40089191f2bfc6ae162a4c12411f2860ccb493
Template:Wikidata fallback link
10
1072
2343
2342
2023-10-01T14:17:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wikidata_fallback_link]]
wikitext
text/x-wiki
{{#if:{{#invoke:wd|label|raw|eid={{{1|}}}}}
|{{#ifexist:{{#invoke:wd|title|{{{1|}}}}}
|{{#invoke:wd|label|linked|{{{1|}}}}}
|{{#if:{{#invoke:wd|label|{{{1|}}}}}
|{{#ifexist:{{#invoke:wd|label|{{{1|}}}}}
|{{#invoke:wd|label|{{{1|}}}}}<!--Do not link to label if it targets the wrong article-->
|[[{{#invoke:wd|label|{{{1|}}}}}]]
}}
}}{{#switch:{{{wd|on}}}
|off=
|icon=<span class="noprint metadata ill">[[File:OOjs UI icon edit-ltr-progressive.svg|10px|link=:d:Special:EntityPage/{{{1}}}|Edit on Wikidata]]</span>
|on
|#default=<span class="noprint metadata ill"><small>[[[:d:Special:EntityPage/{{{1}}}|{{#switch:{{{short|{{{s|}}}}}}|yes|y|true|t|on|set|1=d|Wikidata}}]]]</small></span>
}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
4ecc9c0b6a3ff7a4df16e1793dfc11b7c649aa45
Module:Transclusion count/data/A
828
1073
2345
2344
2023-10-01T14:17:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/A]]
Scribunto
text/plain
return {
["A-Class"] = 5500,
["AARTalk"] = 8900,
["ACArt"] = 5300,
["AFB_game_box_end"] = 2500,
["AFB_game_box_start"] = 2500,
["AFC_comment"] = 14000,
["AFC_submission"] = 24000,
["AFC_submission_category_header"] = 4600,
["AFD_help"] = 108000,
["AFD_help/styles.css"] = 108000,
["AFI/Picture_box/show_picture"] = 3700,
["AFI_film"] = 8100,
["AFL_Car"] = 2600,
["AFL_Col"] = 2500,
["AFL_Ess"] = 2500,
["AFL_Gee"] = 2500,
["AFL_Haw"] = 2400,
["AFL_Mel"] = 2700,
["AFL_NM"] = 2300,
["AFL_Ric"] = 2400,
["AFL_StK"] = 2900,
["AFL_Tables"] = 12000,
["AFL_Year"] = 2500,
["ALG"] = 2500,
["AMARB"] = 4400,
["AML"] = 4500,
["AMQ"] = 4500,
["AM_station_data"] = 4400,
["ARG"] = 6400,
["ASIN"] = 4600,
["ASN"] = 3400,
["ATP"] = 5000,
["AUS"] = 14000,
["AUT"] = 9500,
["AZE"] = 2600,
["A_note"] = 4300,
["A_or_an"] = 29000,
["Aan"] = 48000,
["Abbr"] = 796000,
["Abbreviation"] = 2300,
["Abbrlink"] = 18000,
["Abot"] = 12000,
["About"] = 152000,
["Absolute_page_title"] = 3900,
["Acad"] = 6500,
["Access_icon"] = 2900,
["According_to_whom"] = 4300,
["AchievementTable"] = 10000,
["Active_politician"] = 20000,
["AdSenseSummary"] = 4100,
["Added"] = 2400,
["Adjacent_communities"] = 26000,
["Adjacent_stations"] = 38000,
["Adjacent_stations/styles.css"] = 38000,
["Adjacent_stations_doc"] = 2000,
["Adjstn"] = 2200,
["Admin"] = 14000,
["Administrator_note"] = 6500,
["Adminnote"] = 3500,
["Advert"] = 18000,
["Aet"] = 5200,
["AfC_age_category"] = 3500,
["AfC_comment"] = 14000,
["AfC_date_category"] = 196000,
["AfC_status/age"] = 3600,
["AfC_status/backlog"] = 4100,
["AfC_submission"] = 37000,
["AfC_submission/comments"] = 23000,
["AfC_submission/declined"] = 23000,
["AfC_submission/declinedivbox"] = 23000,
["AfC_submission/draft"] = 16000,
["AfC_submission/helptools"] = 39000,
["AfC_submission/pending"] = 3500,
["AfC_submission/tools"] = 3600,
["AfC_submission_category_header"] = 5700,
["AfC_submission_category_header/day"] = 5500,
["AfC_submission_category_header/td"] = 5500,
["AfC_talk/C_percentage"] = 3300,
["AfC_topic"] = 25000,
["AfD_categories_horizontal_shortnames"] = 4400,
["AfD_count_link"] = 3800,
["Afd-merged-from"] = 8000,
["AfricaProject"] = 28000,
["Africa_topic"] = 6200,
["After_extra_time"] = 5200,
["Age"] = 37000,
["Age_in_days"] = 4400,
["Age_in_years"] = 3700,
["Age_in_years,_months,_weeks_and_days"] = 4100,
["Age_in_years,_months_and_days"] = 17000,
["Age_in_years_and_days"] = 4000,
["Age_in_years_and_days_nts"] = 3100,
["Agree"] = 2100,
["Ahnentafel"] = 8300,
["Ahnentafel/styles.css"] = 8300,
["Air_Force_Historical_Research_Agency"] = 4300,
["Air_force"] = 5900,
["Air_force/core"] = 5900,
["Aircontent"] = 9400,
["Aircraft_specs"] = 12000,
["Aircraft_specs/convert"] = 12000,
["Aircraft_specs/eng"] = 12000,
["Aircraft_specs/length"] = 12000,
["Aircraft_specs/range"] = 12000,
["Aircraft_specs/speed"] = 12000,
["Airport-dest-list"] = 3600,
["Airport_codes"] = 15000,
["Airport_destination_list"] = 4900,
["Aka"] = 2100,
["Al"] = 66000,
["Album"] = 204000,
["Album_chart"] = 29000,
["Album_chart/chartnote"] = 29000,
["Album_cover_fur"] = 53000,
["Album_label_category"] = 2200,
["Album_label_category/core"] = 2200,
["Album_ratings"] = 76000,
["Album_reviews"] = 5600,
["Albums"] = 7600,
["Albums_category"] = 24000,
["Albums_category/core"] = 24000,
["Albums_category/type/default"] = 24000,
["Align"] = 174000,
["Aligned_table"] = 13000,
["AllIrelandByCountyCatNav"] = 3100,
["AllMovie_name"] = 5800,
["AllMovie_title"] = 28000,
["AllMusic"] = 77000,
["Allcaps"] = 9000,
["Allcaps/styles.css"] = 9000,
["Allmovie"] = 4200,
["Allmovie_title"] = 2200,
["Allmusic"] = 17000,
["Allow_wrap"] = 19000,
["Alumni"] = 2400,
["Always_substitute"] = 8400,
["Ambox"] = 1460000,
["Ambox_globe"] = 36000,
["Ambox_globe_current_red"] = 34000,
["American_English"] = 18000,
["American_football_roster/Footer"] = 3200,
["American_football_roster/Header"] = 3200,
["American_football_roster/Player"] = 3200,
["Americanfootballbox"] = 3300,
["Amg_movie"] = 11000,
["Amg_name"] = 3200,
["Anarchism_announcements"] = 3100,
["Anarchism_announcements/shell"] = 3100,
["Anchor"] = 80000,
["Angbr"] = 2100,
["Angle_bracket"] = 3100,
["Anglican_navbox_titlestyle"] = 14000,
["Anglicise_rank"] = 569000,
["Animal_tasks"] = 19000,
["Anime_News_Network"] = 11000,
["Ann"] = 4700,
["Annotated_link"] = 7900,
["Annual_readership"] = 51000,
["Anonblock"] = 33000,
["Antonym_of_(dis)establish"] = 8700,
["Apostrophe"] = 77000,
["ArbCom_Arab-Israeli_editnotice"] = 2200,
["ArbCom_Arab-Israeli_enforcement"] = 3000,
["Arbitration_Committee_candidate/data"] = 76000,
["Archive"] = 155000,
["Archive-nav"] = 5800,
["Archive_bottom"] = 46000,
["Archive_box"] = 18000,
["Archive_list"] = 73000,
["Archive_navigation"] = 7400,
["Archive_top"] = 28000,
["Archive_top/styles.css"] = 28000,
["Archive_top_green"] = 3000,
["Archivebottom"] = 3600,
["Archivebox"] = 2600,
["Archives"] = 50000,
["Archivetop"] = 3600,
["Army"] = 15000,
["Army/core"] = 15000,
["Art_UK_bio"] = 2400,
["Art_UK_bio/plural"] = 2400,
["Article"] = 2900,
["ArticleHistory"] = 29000,
["Article_alerts_box"] = 3600,
["Article_alerts_box/styles.css"] = 3600,
["Article_for_improvement_banner/Picture_box"] = 3700,
["Article_for_improvement_banner/Picture_box/show_picture"] = 3700,
["Article_history"] = 47000,
["Articles_by_Quality"] = 2300,
["Articles_by_Quality/down"] = 2300,
["Articles_by_Quality/total"] = 2400,
["Articles_by_Quality/up"] = 2300,
["As_of"] = 79000,
["Asbox"] = 2390000,
["Asbox/styles.css"] = 2390000,
["Asia_topic"] = 9900,
["Asof"] = 7200,
["Assessed-Class"] = 18000,
["Assignment"] = 6300,
["Assignment_milestones"] = 5600,
["AstDys"] = 2900,
["Asterisk"] = 2200,
["AthAbbr"] = 4600,
["Atnhead"] = 6000,
["Atop"] = 4700,
["Atopg"] = 2600,
["Attached_KML"] = 14000,
["Au"] = 2500,
["AuEduNewbie"] = 2500,
["Audio"] = 27000,
["Audio_sample"] = 2900,
["AustralianFootball"] = 7400,
["Australian_Dictionary_of_Biography"] = 2400,
["Australian_English"] = 2800,
["Australian_party_style"] = 6000,
["Australian_politics/name"] = 4200,
["Australian_politics/party_colours"] = 6100,
["Austria_metadata_Wikidata"] = 2100,
["Austria_population_Wikidata"] = 2100,
["Aut"] = 8200,
["Authority_control"] = 2020000,
["Authority_control_(arts)"] = 16000,
["Auto_link"] = 79000,
["Autobiography"] = 2100,
["Automated_tools"] = 85000,
["Automated_tools/core"] = 85000,
["Automatic_Taxobox"] = 2500,
["Automatic_archive_navigator"] = 133000,
["Automatic_taxobox"] = 75000,
["Aviation_accidents_and_incidents"] = 2300,
["Awaiting_admin"] = 2600,
["Awaitingadmin"] = 2500,
["Award2"] = 2400,
["Awards"] = 2400,
["Awards_table"] = 5600,
["Awards_table/styles.css"] = 5600,
["Ayd"] = 3000,
["Aye"] = 26000,
["Module:A_or_an"] = 29000,
["Module:A_or_an/words"] = 29000,
["Module:About"] = 153000,
["Module:Adjacent_stations"] = 74000,
["Module:Adjacent_stations/Amtrak"] = 2600,
["Module:Adjacent_stations/Indian_Railways"] = 3200,
["Module:Adjacent_stations/JR_East"] = 2200,
["Module:Adjacent_stations/i18n"] = 74000,
["Module:Administrators'_noticeboard_archives"] = 2000,
["Module:AfC_submission_catcheck"] = 376000,
["Module:AfC_topic"] = 25000,
["Module:Age"] = 1190000,
["Module:Ahnentafel"] = 8300,
["Module:Airport_destination_list"] = 4900,
["Module:Aligned_dates_list"] = 2300,
["Module:Aligned_table"] = 13000,
["Module:Anchor"] = 80000,
["Module:Ancient_Egypt_era"] = 2800,
["Module:Ancient_Egypt_era/data"] = 2800,
["Module:Ancient_Egypt_kings"] = 2800,
["Module:Ancient_Egypt_kings/data"] = 2800,
["Module:Ancient_Olympiads"] = 2800,
["Module:Ancient_Olympiads/data"] = 2800,
["Module:Annotated_link"] = 7900,
["Module:Archive_list"] = 75000,
["Module:Arguments"] = 31900000,
["Module:Armenian"] = 2800,
["Module:Article_history"] = 47000,
["Module:Article_history/Category"] = 47000,
["Module:Article_history/config"] = 47000,
["Module:Article_history/styles.css"] = 47000,
["Module:Asbox"] = 2390000,
["Module:Asbox_stubtree"] = 36000,
["Module:Attached_KML"] = 14000,
["Module:Attached_KML/styles.css"] = 14000,
["Module:Australian_place_map"] = 16000,
["Module:Authority_control"] = 2040000,
["Module:Authority_control/auxiliary"] = 575000,
["Module:Authority_control/config"] = 2040000,
["Module:Automated_taxobox"] = 369000,
["Module:Automatic_archive_navigator"] = 133000,
["Module:Automatic_archive_navigator/config"] = 133000,
["Module:Autotaxobox"] = 569000,
}
a8ee40712bf0669ff0e9be9f1b4924a5abda651e
Template:Template error report
10
1074
2347
2346
2023-10-01T14:17:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Template_error_report]]
wikitext
text/x-wiki
#REDIRECT [[Template:Template parameter usage]]
ec2d98a233a7e573eee70a96c736db071107fc23
Template:Authority control/doc
10
1075
2349
2348
2023-10-01T14:17:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Authority_control/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Template display|nomobile}}
{{Lua|Module:Authority control|Module:Authority control/config|Module:Check for unknown parameters}}
{{Uses Wikidata|section=Wikidata}}
{{Authority control/related}}
{{TOC right}}
== Description ==
{{details|Authority control|Wikipedia:Authority control}}
This template links Wikipedia articles to various library (and other) catalogue systems, for biographies and other topics.
This template draws its values from [[Wikidata]]. A pencil icon [[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px]] gives convenient access to the "Identifiers" section of the corresponding Wikidata item.
=== Empty instances ===
If there is no information in Wikidata for the specific subject, an empty instance of this template will be ''dormant'', meaning it will be invisible on the rendered page. Thus, using this template on a page with no authority information is harmless. An empty instance of this template stays dormant in an article, until values are added to Wikidata, when it will then display them.
=== Validation ===
The template attempts to validate digits for all values and shows an error if the check fails.
<!--Wherever possible, the template also generates a link to [[WorldCat Identities]], using VIAF or LCCN values, or manually via {{para|WORLDCATID}}.-->
=== Position ===
{{See also|Wikipedia:Manual of Style/Layout#Standard appendices and footers{{!}}Wikipedia:Manual of Style/Layout}}
As a metadata template, the Authority control template should be placed on a new line, after the [[Wikipedia:External links|external links]] section and [[Wikipedia:Navigation templates|navigation templates]], immediately before the categories.
==Usage==
:{{kbd|<nowiki>{{Authority control}}</nowiki>}}
As a general guideline:
# Insert the empty version
# Click "[[Help:Show preview|Show preview]]" to see which sources are automatically pulled from Wikidata
# If you know of more sources, add those sources to the article's [[WP:Wikidata#Access from Wikipedia|Wikidata item]], so that other language versions of Wikipedia will automatically benefit.
=== Suppression of identifiers ===
Identifiers can be selectively suppressed via the {{para|suppress}} parameter. For example {{Q|P434}} can be suppressed by typing:
:{{kbd|<nowiki>{{Authority control |suppress=P434}}</nowiki>}}
=== Specifying the Wikidata item ===
If a page is not connected to a Wikidata item (for example, a page in draft space, user space or project space), you can specify the appropriate item to draw data from, by using the {{para|qid}} parameter.
:{{kbd|<nowiki>{{Authority control |qid=Q49605590}}</nowiki>}}
To find the correct item, you can [[wikidata:Special:Search|search the database]]. If there is not yet an existing item, you can [[wikidata:Special:NewItem|create a new item]].
As soon as the page is connected to a Wikidata item, this parameter will be ignored so you can remove it from the template.
=== Additional Wikidata items ===
In some cases, you might need to specify additional items to draw data from. For example,
* [[Bonnie and Clyde]] also draws data from {{Q|Q2319886}} and {{Q|Q3320282}}
* [[North Rona]] also draws data from {{Q|Q28831543}}
To specify additional items, you can use the {{para|additional}} parameter. For example:
{{kbd|<nowiki>{{Authority control | additional = Q2319886, Q3320282}}</nowiki>}}
To automatically add additional links from related items, use {{para|additional|auto}}. This is useful for married couples, musical groups, etc.
=== Whitelists ===
A number of whitelists are configured, which allow only a limited selection of identifiers to be displayed. These can be used with the {{para|show}} parameter. For example, including {{para|show|arts}} will only show identifiers which have identified as particularly relevant to the arts.
Multiple whitelists may be used. For example:
{{kbd|<nowiki>{{Authority control|show=arts,SV}}</nowiki>}} adds identifiers from the arts and Sweden whitelists.
{{para|country}} can be used as an alias for {{para|show}} (but they can't both be used simultaneously).
{{collapse|{{#invoke:Authority control/documentation|whitelisttable}}|List of whitelists}}
==Examples==
;[[Victor Hugo]]
<kbd><nowiki>{{Authority control |qid=Q535}}</nowiki></kbd>
{{Authority control |qid=Q535}}
;[[Alexander Graham Bell]]
<kbd><nowiki>{{Authority control |qid=Q34286}}</nowiki></kbd>
{{Authority control |qid=Q34286}}
;[[Harry Forbes Witherby]]:
<kbd><nowiki>{{Authority control |qid=Q352545}}</nowiki></kbd>
{{Authority control |qid=Q352545}}
;[[Carl Larsson]]:
<kbd><nowiki>{{Authority control (arts) |country=SV |qid=Q187310}}</nowiki></kbd>
{{Authority control (arts) |country=SV |qid=Q187310}}
== Rendering ==
The template is split into a number of sections, including "International", "National", "Academics", "Artists" etc. The template usually displays as a navbox with a header:
{{Authority control |qid=Q921242}}
If all identifiers are in the same section, {{para|state}} is ignored, and the template displays on one line.
If you use additional qids to draw data from additional wikidata items, then a new section will be added for each. In this case, the identifiers will not be separated further:
{{Authority control |qid=Q219937|additional=Q2319886,Q3320282}}
{{collapsible option}}
{{Anchor|Wikidata|Tracking categories}}
=== Microformat ===
The template wraps each UID value with the [[HTML]] markup: <code><nowiki><span class="uid">...</span></nowiki></code>, which enables the first-found value to be included in an [[hCard]] [[microformat]].
== List of identifiers ==
{{#ifexpr:{{PAGESINCAT:All articles with faulty authority control information}}|{{error|Warning: {{plural|{{PAGESINCAT:All articles with faulty authority control information}}|article has|articles have}} faulty authority control information}}, see [[:Category:All articles with faulty authority control information|All articles with faulty authority control information]].}}
The template gets its information from the following properties on [[Wikidata]]:
{{#invoke:Authority control/documentation{{#ifeq:{{SUBPAGENAME}}|sandbox|/sandbox}}|docConfTable|config={{#switch:{{SUBPAGENAME}}|sandbox=sandbox|staging=staging}}}}
== Additional tracking categories ==
This template may add the following categories:
* {{Category link with count|Pages with authority control identifiers needing attention|pages}} – category to track errors
** {{Category link with count|Pages using authority control with parameters}} – identifiers should be migrated to Wikidata
** {{Category link with count|All articles with faulty authority control information}} – faulty identifiers to fix
=== Error reports ===
{{Template error report}}
==See also==
* [[Wikipedia:Authority control]] – editor information
* [[Help:Authority control]] – reader help
* [[Template:Taxonbar]] – authority control style template for taxonomic databases
* [[Template:Sports links]] – authority control style template for sports articles
* [[User:UBX/Authority control]] – for self-identifying as an AC user
* [[:Commons:Template:Authority control]] – template on Commons
== TemplateData ==
{{TemplateDataHeader}}
<templatedata>
{
"description": "A template to link Wikipedia articles to various library catalogue systems",
"params": {
"state": {
"description": "Initial state of the template",
"type": "string",
"suggestedvalues": [
"autocollapse",
"expanded",
"collapsed"
],
"default": "autocollapse"
},
"qid": {
"label": "qid",
"description": "Wikidata QID number for an article not yet connected to a Wikidata item. Once the article is connected to a Wikidata item, then this parameter will be ignored.",
"example": "Q49605590",
"type": "string"
},
"suppress": {
"description": "Comma-separated list of identifers to suppress from the template, in the form of the Wikidata property ID (e.g. P227),",
"example": "P227, P1986",
"type": "string"
},
"additional": {
"description": "Comma-seprated list of additional Wikidata QIDs of items to display data for. Each should be related and covered by the article.",
"type": "string",
"example": "Q28831543"
},
"show": {
"aliases": [
"country"
],
"label": "whitelist",
"example": "ES",
"type": "string",
"suggestedvalues": [
"arts"
],
"suggested": true,
"description": "Whitelist (e.g. arts) or country code (e.g. ES) or property (e.g. P214) to show. If not specified, then every supported identifier will be displayed."
}
},
"format": "\n{{_|_=_}}\n",
"paramOrder": [
"show",
"suppress",
"qid",
"additional",
"state"
]
}
</templatedata>
<includeonly>{{Sandbox other||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Wikipedia authority control]]
[[Category:Templates using data from Wikidata]]
[[Category:Templates that add a tracking category]]
[[Category:External link templates using Wikidata]]
}}</includeonly>
d58567c78dce9fd58e573d100f1f9ec327aef132
Module:Authority control/config
828
1076
2351
2350
2023-10-01T14:17:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Authority_control/config]]
Scribunto
text/plain
require('strict')
local p = {}
p.auxiliary = 'Module:Authority control/auxiliary'
p.i18n = {
aclink = '[[Help:Authority control|Authority control databases]]',
ACmodule = 'Module:Authority control',
addtowd = 'Add values to Wikidata',
attentioncat = 'Pages with authority control identifiers needing attention',
All_articles = 'All articles',
allfaultycat = 'All articles with faulty authority control information',
Appears_as = 'Appears as', -- used on documentation table to show example
Articles = 'Articles',
autocollapse = 'autocollapse', -- Navbox state parameter
cat = 'Articles with %s identifiers',
category = 'Category',
Code = 'Code',
collapsed = 'collapsed', -- Navbox state parameter
connecttowd = 'Please connect this article to a Wikidata item.',
Description = 'Description',
errortemplate = 'Error', -- e.g. [[Template:Error]],
expanded = 'expanded', -- Navbox state parameter
faultcat = 'Articles with faulty authority control information',
Faults = 'Faults',
faulty = 'faulty',
identifier = 'identifier',
identifiers = 'identifiers',
idnotvalid = 'The %s identifier %s is not valid.',
linktemplate = 'Wikidata property link', -- refers to [[Template:Wikidata property link]]
localparams = 'Local parameters are deprecated.',
maincat = 'Articles with authority control information',
movetowd = 'Please move values to Wikidata.',
name = 'Authority control',
navbox = 'Module:Navbox',
pages = 'pages',
pageswithparams = 'Pages using authority control with parameters', -- name of category for tracking uses with parameters
previewwarning = 'Warning: Local parameters are deprecated. Please move any identifiers to Wikidata.', -- preview message when local parameters are used
qidcode = 'Please use the <code>|qid=</code> parameter to specify the Wikidata item.',
sandbox = 'sandbox',
Section = 'Section',
suppressedcat = 'Articles with suppressed authority control identifiers',
testcases = 'testcases',
Topic = 'Topic',
Totals = 'Totals',
Tracking_category = 'Tracking category',
warning = 'Warning',
warningicon = '345-409 Ambox warning centered.svg', -- icon used for faulty ids
WDproperty = 'Wikidata property',
}
p.config = {
{ 'AAG',
property = 3372,
section = 5,
link = 'https://www.aucklandartgallery.com/explore-art-and-ideas/artist/$1/',
label = 'Auckland',
pattern = '%d+',
},
{ 'ACM-DL',
property = 864,
section = 4,
pattern = '%d%d%d%d%d%d%d%d%d%d%d',
link = 'https://dl.acm.org/profile/$1',
label = 'Association for Computing Machinery',
},
{ 'ADB',
property = 1907,
section = 6,
patterns = {'[a-z][-a-z]+-[1-3]%d%d?%d?%d?', '[a-z][-a-z]+-[1-9]%d?%d?%d?'},
link = 'http://adb.anu.edu.au/biography/$1',
label = 'Australia',
},
{ 'ADK',
property = 4114,
section = 5,
link = 'https://www.adk.de/de/akademie/mitglieder/?we_objectID=$1',
label = 'ADK',
patterns = {'4999[6-9]', '5[0-4]%d%d%d', '55[0-6]%d%d', '5570%d', '5571[0-8]'}
},
{ 'admiralty',
property = 3562,
patterns = {'[A-Q]%d%d%d%d', '[A-Q]%d%d%d%d%.%d+'},
section = 3,
prefix = '[[Admiralty (identifier)|Admiralty]]'
},
{ 'AGSA',
property = 6804,
section = 5,
pattern = '[1-9]%d*',
link = 'https://www.agsa.sa.gov.au/collection-publications/collection/creators/_/$1/',
label = 'South Australia',
},
{ 'ARLHS',
property = 2980,
section = 3,
pattern = '[A-Z][A-Z][A-Z]%d%d%d%d?[A-Z]?',
link = 'http://wlol.arlhs.com/lighthouse/$1.html',
label = 'ARLHS',
},
{ 'autores.uy',
property = 2558,
section = 6,
pattern = '[1-9]%d?%d?%d?%d?',
link = 'https://autores.uy/autor/$1',
label = 'Uruguay',
remark = "autores.uy is an author's database, that focus on [[Uruguay]]an authors. It was created and maintained by the Uruguayan chapter of Creative Commons. It also provides access to digitized works of the authors in public domain."
},
{ 'AWR',
property = 4186,
section = 6,
patterns = {'[A-Z][A-Z][A-Z]%d%d%d%d[a-z]', '[A-Z][A-Z]%d%d%d%d%d[a-z]'},
link = 'http://www.womenaustralia.info/biogs/$1.htm',
label = 'Australian Women\'s Register',
},
{ 'BGCI',
property = 5818,
section = 3,
link = 'https://www.bgci.org/garden.php?id=$1',
label = 'BGCI garden',
pattern = '%d+'
},
{ 'BIBSYS',
property = 1015,
section = 2,
patterns = {'[1-9]%d?%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d'},
link = 'https://authority.bibsys.no/authority/rest/authorities/html/$1',
label = 'Norway',
remark = 'BIBSYS is a supplier of library and information systems for all Norwegian university Libraries, the National Library of Norway, college libraries, and a number of research libraries and institutions.'
},
{ 'Bildindex',
property = 2092,
section = 7,
pattern = '%d+',
link = 'https://www.bildindex.de/document/obj$1',
label = 'Bildindex',
},
{ 'BMLO',
property = 865,
section = 6,
link = 'https://bmlo.de/$1',
label = 'BMLO',
pattern = '[a-z][0-9][0-9][0-9][0-9]'
},
{ 'BNC',
property = 1890,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://www.bncatalogo.cl/F?func=direct&local_base=red10&doc_number=$1',
label = 'Chile',
},
{ 'BNE',
property = 950,
section = 2,
patterns = {'[XF][XF]%d%d%d%d%d?%d?%d?', 'a%d%d%d%d%d?%d?%d?', 'bi[mcsv][aoei]%d%d%d%d%d%d%d%d%d%d', 'Mi[sm][eoa]%d%d%d%d%d%d%d%d%d%d'},
link = 'http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&authority_id=$1',
label = 'Spain',
remark = "National Library of Spain (BNE: ''Biblioteca Nacional de España'') is a major public library, the largest in Spain."
},
{ 'BNF',
property = 268,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]',
link = 'https://catalogue.bnf.fr/ark:/12148/cb$1',
label = 'France',
remark = 'Authority data of people listed in the general catalogue of the National Library of France'
},
{ 'BNFdata',
property = 268,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[0-9bcdfghjkmnpqrstvwxz]',
link = 'https://data.bnf.fr/ark:/12148/cb$1',
label = 'BnF data'
},
{ 'BNMM',
property = 3788,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://catalogo.bn.gov.ar/F/?func=direct&local_base=BNA10&doc_number=$1',
label = 'Argentina',
},
{ 'Botanist',
property = 428,
section = 4,
valid = 'botanistV',
link = 'https://www.ipni.org/ipni/advAuthorSearch.do?find_abbreviation=$1',
label = 'International Plant Names Index',
remark = 'Author citation (botany): standard form (official abbreviation) of a personal name for use in an author citation (only for names of algae, fungi and plants). Links to page at [[International Plant Names Index]] (IPNI).'
},
{ 'BPN',
property = 651,
section = 6,
patterns = {'%d%d%d%d%d%d%d%d', '0?%d%d%d%d%d%d%d', '0?0?%d%d%d%d%d%d'},
link = 'http://www.biografischportaal.nl/en/persoon/$1',
label = 'Netherlands',
remark = 'Dutch project with material for 40,000 digitized biographies, including former colonies of the Netherlands.'
},
{ 'BRAHMS artist',
property = 5226,
section = 5,
link = 'http://brahms.ircam.fr/$1',
label = 'BRAHMS',
pattern = '[a-z%-\\]+',
remark = 'Identifier of an artist in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database), by the IRCAM'
},
{ 'BRAHMS work',
property = 5302,
section = 7,
link = 'https://brahms.ircam.fr/works/work/$1/',
label = 'BRAHMS',
pattern = '[1-9]%d*',
remark = "Identifier for a musical work in the B.R.A.H.M.S. (Base Relationnelle d\'Articles Hypertextes sur la Musique du 20e Siècle database) database, by the IRCAM"
},
{ 'CANTICN',
property = 9984,
section = 2,
pattern = '981[0-1]%d%d%d%d%d%d%d%d%d06706',
link = 'https://cantic.bnc.cat/registre/$1',
label = 'Catalonia',
},
{ 'CCG',
property = 3920,
section = 3,
customlink = 'ccg',
remark = 'Identifier from one of 4 volumes of List of Lights, Buoys and Fog Signals issued by the Canadian Coast Guard.'
},
{ 'CINII',
property = 271,
section = 4,
pattern = 'D[AB]%d%d%d%d%d%d%d[%dX]',
link = 'https://ci.nii.ac.jp/author/$1?l=en',
label = 'CiNii',
remark = 'CiNii is a bibliographic database service for material in Japanese academic libraries. It is maintained by the [[National Institute of Informatics]].'
},
{ 'CWGC',
property = 1908,
section = 6,
pattern = '[1-9]%d*',
link = 'https://www.cwgc.org/find-war-dead/casualty/$1/',
label = 'Commonwealth War Graves Commission',
},
{ 'DAAO',
property = 1707,
section = 5,
pattern = '[a-z%-]+%d*',
link = 'https://www.daao.org.au/bio/$1',
label = 'Australian Artists',
},
{ 'Danish List of Lights and Fog signals',
property = 4038,
section = 3,
pattern = '[1-9]%d*[A-Za-z]?',
prefix = 'Denmark',
},
{ 'DB',
property = 8671,
section = 7,
label = 'Deutsche Bahn',
link = 'https://iris.noncd.db.de/wbt/js/index.html?bhf=$1&zeilen=50&seclang=en',
remark = 'Deutsche Bahn station code, identifier for train stations and other operating points used by Deutsche Bahn',
pattern = '[ABCDEFHIJKLMNOPQRSTUVWXYZ][A-Z0-9%s][A-Z0-9%s]?[A-Z0-9%s]?[A-Z0-9%s]?'
},
{ 'DBI',
property = 1986,
section = 6,
link = 'https://www.treccani.it/enciclopedia/$1_(Dizionario-Biografico)',
label = 'Italian People',
},
{ 'DBLP',
property = 2456,
section = 4,
patterns = {'%d%d%d?%/%d+-?[%d]*[%a]*-?[%d]*', '[%a]+%/[%w]*-?[%d]*'},
link = 'https://dblp.org/pid/$1',
label = 'DBLP',
},
{ 'Deutsche Synchronkartei',
property = 11646,
section = 6,
label = 'Deutsche Synchronkartei',
link = 'https://www.synchronkartei.de/person/$1',
remark = 'Online database of voice actors in film and television productions',
pattern = string.rep('[0-9a-zA-Z_-]',9)
},
{ 'DIB',
property = 6829,
section = 6,
pattern = '0[01]%d%d%d%d%.?[A-D]?',
link = 'https://doi.org/10.3318/dib.$1.v1',
label = 'Ireland',
},
{ 'DSI',
property = 2349,
section = 5,
pattern = '[1-9]%d*',
link = 'http://www.uni-stuttgart.de/hi/gnt/dsi2/index.php?table_name=dsi&function=details&where_field=id&where_value=$1',
label = 'Scientific illustrators',
},
{ 'DTBIO',
property = 7902,
section = 6,
pattern = '1[0-9]%d%d%d%d%d%d%d?[0-9X]',
link = 'https://www.deutsche-biographie.de/pnd$1.html?language=en',
label = 'Deutsche Biographie',
},
{ 'EBIDAT',
property = 9725,
section = 3,
label = 'EBIDAT',
link = 'https://www.ebidat.de/cgi-bin/ebidat.pl?id=$1',
remark = 'Identifier for an entry in the castles inventory database EBIDAT',
pattern = '[1-9]%d?%d?%d?'
},
{ 'Emmy',
property = 8381,
section = 5,
link = 'https://www.emmys.com/bios/$1',
label = 'Emmy Awards'
},
{ 'EMU',
property = 4613,
section = 7,
pattern = '%d%d?%d?%d?%d?%d?',
link = 'http://esu.com.ua/search_articles.php?id=$1',
label = 'Encyclopedia of Modern Ukraine',
},
{ 'EUTA',
property = 4535,
section = 3,
label = 'EUTA theatre',
link = 'http://www.theatre-architecture.eu/db/?theatreId=$1',
pattern = '[1-9]%d*'
},
{ 'EUTA person',
property = 4534,
section = 6,
label = 'EUTA',
link = 'http://www.theatre-architecture.eu/db.html?personId=$1',
pattern = '[1-9]%d?%d?%d?%d?%d?%d?'
},
{ 'FAST',
property = 2163,
section = 1,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?',
link = 'http://id.worldcat.org/fast/$1/',
label = 'FAST',
},
{ 'Finnish List of Lights',
property = 4143,
section = 3,
pattern = '%d+',
prefix = 'Finland',
},
{ 'FNZA',
property = 6792,
section = 5,
pattern = '[1-9]%d*',
link = 'https://findnzartists.org.nz/artist/$1/',
label = 'New Zealand Artists',
},
{ 'GND',
property = 227,
section = 2,
patterns = {'1[0123]?%d%d%d%d%d%d%d[0-9X]', '[47]%d%d%d%d%d%d%-%d', '[1-9]%d?%d?%d?%d?%d?%d?%d?%-[0-9X]', '3%d%d%d%d%d%d%d[0-9X]'},
link = 'https://d-nb.info/gnd/$1',
label = 'Germany',
remark = 'Authority data on people, corporations and subjects from the [[German National Library]] (DNB)'
},
{ 'Google Scholar',
property = 1960,
section = 4,
pattern = '[%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u][%-_%d%l%u]',
link = 'https://scholar.google.com/citations?user=$1',
label = 'Google Scholar',
},
{ 'Grammy',
property = 7303,
section = 5,
pattern = '%w[%w-]+%/%d+',
link = 'https://www.grammy.com/grammys/artists/$1',
label = 'Grammy Awards',
},
{ 'GVP',
property = 1886,
section = 3,
link = 'https://volcano.si.edu/volcano.cfm?vn=$1',
label = 'Global Volcanism Program',
pattern = '%d%d%d%d%d%d'
},
{ 'HDS',
property = 902,
section = 7,
pattern = '%d%d%d%d%d%d',
label = 'Historical Dictionary of Switzerland',
link = 'https://hls-dhs-dss.ch/fr/articles/$1',
remark = 'Historical Dictionary of Switzerland is an encyclopedia on the history of Switzerland.'
},
{ 'IAAF',
property = 1146,
section = 6,
pattern = '%d+',
link = 'https://www.iaaf.org/athletes/_/$1',
label = 'World Athletics',
remark = 'The IAAF athlete database lists information about [[sport of athletics]] competitors.'
},
{ 'ICCU',
property = 396,
section = 2,
pattern = '%u%u[%u0-3]V%d%d%d%d%d%d',
link = 'https://opac.sbn.it/nome/$1',
label = 'Italy',
remark = 'Central Institute for the Union Catalogue (ICCU: {{lang|it|Istituto Centrale per il Catalogo Unico}}) is an Italian government agency created to build a single catalog of all the libraries in the nation. It manages National Library Service ({{lang|it|Servizio bibliotecario nazionale}}).'
},
{ 'ICIA',
property = 1736,
section = 5,
pattern = '%d+',
link = 'https://www.imj.org.il/artcenter/newsite/en/?artist=$1',
label = 'ICIA (Israel)',
},
{ 'IEU',
property = 9070,
section = 7,
pattern = '[A-Z]\\[A-Z]\\%w+',
link = 'http://www.encyclopediaofukraine.com/display.asp?linkpath=pages\\$1',
label = 'Internet Encyclopedia of Ukraine',
},
{ 'ISIL',
property = 791,
section = 6,
customlink = 'ISILlink',
remark = 'Libraries, museums and archives, decentralized national databases.'
},
{ 'ISNI',
property = 213,
section = 1,
label = 'ISNI',
valid = 'validateIsni',
link = 'https://isni.org/isni/$1',
remark = 'ISNI is a method for uniquely identifying the public identities of contributors to media content such as books, TV programmes, and newspaper articles. Please take care not to confuse ISNI and ORCID identifiers.'
},
{ 'J9U',
property = 8189,
section = 2,
pattern = '9870[0-1]%d%d%d%d%d%d%d%d05171',
link = 'http://uli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=$1',
label = 'Israel',
},
{ 'Joconde',
property = 347,
section = 7,
pattern = ''..string.rep('[%-0-9A-Za-z]', 11)..'',
link = 'https://www.pop.culture.gouv.fr/notice/joconde/$1',
label = 'Joconde',
},
{ 'KANTO',
property = 8980,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://urn.fi/URN:NBN:fi:au:finaf:$1',
label = 'Finland',
},
{ 'KBR',
property = 11249,
section = 2,
pattern = '%d%d%d%d%d%d%d%d',
link = 'https://opac.kbr.be/LIBRARY/doc/AUTHORITY/$1',
label = 'Belgium',
},
{ 'KULTURNAV',
property = 1248,
section = 5,
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'http://kulturnav.org/$1',
label = 'KulturNav',
remark = 'KulturNav is a Norwegian cloud-based software service, allowing users to create, manage and distribute name authorities and terminology, focusing on the needs of museums and other cultural heritage institutions. The software is developed by KulturIT ANS and the development project is funded by the [[Arts Council Norway]].'
},
{ 'LCCN',
property = 244,
section = 2,
pattern = '%l%l?%d%d%d%d%d%d%d%d%d?%d?',
link = 'https://id.loc.gov/authorities/$1',
label = 'United States',
remark = 'See [[Wikipedia:Authority control#LCCN]] for formatting instructions'
},
{ 'Leopoldina',
property = 10299,
section = 4,
link = 'https://www.leopoldina.org/mitgliederverzeichnis/mitglieder/member/Member/show/$1/',
label = 'Leopoldina',
pattern = '[%-a-z]+%d?'
},
{ 'LexM',
property = 9692,
section = 5,
link = 'https://www.lexm.uni-hamburg.de/object/lexm_lexmperson_$1',
label = 'LexM',
remark = 'Identifier for a musician in the Lexikon verfolgter Musiker und Musikerinnen der NS-Zeit',
pattern = '%d%d%d%d%d%d%d%d'
},
{ 'Libris',
property = 5587,
section = 2,
pattern = '%w+',
link = 'https://libris.kb.se/$1',
label = 'Sweden'
},
{ 'LIR',
property = 886,
section = 7,
pattern = '%d+',
link = 'http://www.e-lir.ch/e-LIR___Lexicon.$1.450.0.html',
label = 'Lexicon Istoric Retic',
remark = '{{lang|rm|Lexicon Istoric Retic}} (LIR) is a two volume version with a selection of articles published in Romansh.'
},
{ 'LNB',
property = 1368,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'https://kopkatalogs.lv/F?func=direct&local_base=lnc10&doc_number=$1&P_CON_LNG=ENG',
label = 'Latvia',
},
{ 'Marina Militare',
property = 3863,
section = 3,
pattern = '[1-9]%d*',
link = 'http://www.marina.difesa.it/cosa-facciamo/per-la-difesa-sicurezza/fari/Pagine/$1.aspx',
label = 'Italy',
},
{ 'MarineTraffic',
property = 3601,
section = 3,
pattern = '%d%d%d%d%d%d%d%d%d%d',
link = 'https://www.marinetraffic.com/en/ais/details/lights/$1',
label = 'MarineTraffic',
},
{ 'MATHSN',
property = 4955,
section = 4,
pattern = '[1-9]%d%d%d%d%d?%d?',
link = 'https://mathscinet.ams.org/mathscinet/MRAuthorID/$1',
label = 'MathSciNet',
},
{ 'MBA',
property = 434,
section = 5,
category = 'MusicBrainz',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/artist/$1',
label = 'MusicBrainz',
remark = 'MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.'
},
{ 'MBAREA',
property = 982,
section = 3,
category = 'MusicBrainz area',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/area/$1',
label = 'MusicBrainz area',
},
{ 'MBI',
property = 1330,
section = 7,
category = 'MusicBrainz instrument',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/instrument/$1',
label = 'MusicBrainz instrument',
},
{ 'MBL',
property = 966,
section = 7,
category = 'MusicBrainz label',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
label = 'MusicBrainz label',
link = 'https://musicbrainz.org/label/$1',
},
{ 'MBP',
property = 1004,
section = 3,
category = 'MusicBrainz place',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/place/$1',
label = 'MusicBrainz place',
},
{ 'MBRG',
property = 436,
section = 7,
category = 'MusicBrainz release group',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/release-group/$1',
label = 'MusicBrainz release group',
},
{ 'MBS',
property = 1407,
section = 7,
category = 'MusicBrainz series',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/series/$1',
label = 'MusicBrainz series',
},
{ 'MBW',
property = 435,
section = 7,
category = 'MusicBrainz work',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x',
link = 'https://musicbrainz.org/work/$1',
label = 'MusicBrainz work',
},
{ 'Mérimée',
property = 380,
section = 3,
link = 'https://www.pop.culture.gouv.fr/notice/merimee/$1',
label = 'Mérimée',
patterns = {'[PEI]A%d[0-9AB]%d%d%d%d%d%d','ACR%d%d%d%d%d%d%d', 'MI%d%d%dB?', 'JAR%d%d%d%d%d%d%d', 'SPR%d%d%d%d%d%d%d'}
},
{ 'MGP',
property = 549,
section = 4,
pattern = '%d%d?%d?%d?%d?%d?',
link = 'https://www.mathgenealogy.org/id.php?id=$1',
label = 'Mathematics Genealogy Project',
remark = 'Mathematics Genealogy Project is a web-based database for the academic genealogy of mathematicians.'
},
{ 'MoMA',
property = 2174,
section = 5,
link = 'https://www.moma.org/artists/$1',
label = 'Museum of Modern Art',
pattern = '%d+'
},
{ 'Musée d\'Orsay',
property = 2268,
section = 5,
link = 'https://www.musee-orsay.fr/en/ressources/repertoire-artistes-personnalites/$1',
label = 'Musée d\'Orsay',
pattern = '[1-9]%d?%d?%d?%d?%d?'
},
{ 'NARA',
property = 1225,
section = 7,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://catalog.archives.gov/id/$1',
label = 'NARA',
remark = 'National Archives and Records Administration (NARA) is an independent agency of the United States government charged with preserving and documenting government and historical records.'
},
{ 'National Gallery of Canada',
property = 5368,
section = 5,
label = 'National Gallery of Canada',
link = 'https://www.gallery.ca/collection/artist/$1',
pattern = '%C+'
},
{ 'NCL',
property = 1048,
section = 2,
pattern = '%d+',
link = 'http://aleweb.ncl.edu.tw/F/?func=accref&acc_sequence=$1&CON_LNG=ENG',
label = 'Taiwan',
remark = 'National Central Library is the national library of Taiwan, Republic of China.'
},
{ 'NDL',
property = 349,
section = 2,
link = 'https://id.ndl.go.jp/auth/ndlna/$1',
patterns = {'a1%d?%d%d%d%d%d%d%d%d', 's?%d?%d%d%d%d%d%d%d%d'},
label = 'Japan',
remark = 'Authority data listed in the catalog of the national library of Japan. Search also available via [http://viaf.org/ VIAF].'
},
{ 'NGA',
property = 3563,
section = 3,
pattern = '11[0-6]%-%d+%.?%d*',
link = 'https://wikidata-externalid-url.toolforge.org/?url=https%3A%2F%2Fmsi.nga.mil%2FqueryResults%3Fpublications%2Fngalol%2Flights-buoys%3Fvolume%3D%251%26featureNumber%3D%252%26includeRemovals%3Dfalse%26output%3Dhtml&exp=(%5Cd%7B3%7D)-(.*)&id=$1',
label = 'NGA',
},
{ 'NGV',
property = 2041,
section = 5,
pattern = '%d+',
link = 'https://www.ngv.vic.gov.au/explore/collection/artist/$1/',
label = 'Victoria',
},
{ 'NKC',
property = 691,
section = 2,
pattern = '[a-z][a-z][a-z]?[a-z]?%d%d%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=$1&CON_LNG=ENG',
label = 'Czech Republic',
remark = 'National Library of the Czech Republic ({{lang|cs|Národní knihovna České republiky}}) is the central library of the Czech Republic.'
},
{ 'NLA',
property = 409,
section = 2,
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'https://nla.gov.au/anbd.aut-an$1',
label = 'Australia',
remark = "NLA Trove's People and Organisation view allows the discovery of biographical and other contextual information about people and organisations. Search also available via [http://viaf.org/ VIAF]."
},
{ 'NLG',
property = 3348,
section = 2,
pattern = '[1-9]%d*',
link = 'https://data.nlg.gr/resource/authority/record$1',
label = 'Greece',
},
{ 'NLK',
property = 5034,
section = 2,
link = 'https://lod.nl.go.kr/resource/$1',
label = 'Korea',
patterns = {'%u%u%u%d%d%d%d%a?%d%d%d%d%d?%d?', 'CNTS%-%d%d%d%d%d%d%d%d%d%d%d'}
},
{ 'NLR',
property = 1003,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://aleph.bibnat.ro:8991/F/?func=direct&local_base=NLR10&doc_number=$1',
label = 'Romania',
},
{ 'Norwegian List of Lights',
property = 4055,
section = 3,
pattern = '%d+',
prefix = 'Norway',
},
{ 'NSK',
property = 1375,
section = 2,
pattern = '%d%d%d%d%d%d%d%d%d',
link = 'http://katalog.nsk.hr/F/?func=direct&doc_number=$1&local_base=nsk10',
label = 'Croatia',
},
{ 'NTA',
property = 1006,
section = 2,
pattern = '%d%d%d%d%d%d%d%d[%dX]',
link = 'http://data.bibliotheken.nl/id/thes/p$1',
label = 'Netherlands',
},
{ 'Online List of Lights',
property = 3223,
section = 3,
pattern = '[1-9]%d*',
label = 'OLL',
link = 'http://listoflights.org/leuchtfeuer/detail?id=$1.aspx'
},
{ 'ORCID',
property = 496,
section = 4,
label = 'ORCID',
valid = 'orcidV',
link = 'https://orcid.org/$1',
remark = 'Authority data on researchers, academics, etc. The ID range is a subset of the [[ISNI]] range. For free text links (for example when mentioning a person on page which is not about them), it is also possible to use {{tl|ORCID}}. Authors—including Wikipedia editors—may obtain an ORCID by signing up at [https://orcid.org/register orcid.org/register]. Please take care not to confuse ORCID and ISNI identifiers.'
},
{ 'PIC',
property = 2750,
section = 5,
pattern = '[1-9]%d*',
link = 'https://pic.nypl.org/constituents/$1',
label = 'Photographers\' Identities',
remark = "PIC is a photographer's database. It is maintained by the New York Public Library."
},
{ 'Pleiades',
property = 1584,
section = 3,
label = 'Pleiades',
link = 'https://pleiades.stoa.org/places/$1',
pattern = '[1-9]%d?%d?%d?%d?%d?%d?%d?%d?',
remark = "Pleiades is a joint project of the Institute for the Study of the Ancient World at [[New York University]] and the Ancient World Mapping Center at the [[University of North Carolina]] at Chapel Hill."
},
{ 'PLWABN',
property = 7293,
section = 2,
pattern = '981%d%d%d%d%d%d%d%d05606*',
link = 'https://dbn.bn.org.pl/descriptor-details/$1',
label = 'Poland',
},
{ 'PortugalA',
property = 1005,
section = 2,
pattern = '[1-9]%d*',
link = 'http://id.bnportugal.gov.pt/aut/catbnp/$1',
label = 'Portugal',
},
{ 'Portuguese lighthouse',
property = 4423,
section = 3,
patterns = {'[1-9]%d*', '[1-9]%d*.%d+'},
prefix = 'Portugal',
},
{ 'NLP',
property = 1695,
section = 2,
pattern = 'a%d%d%d%d%d%d%d%d%d%d%d%d%d',
link = 'https://dbn.bn.org.pl/descriptor-details/$1',
label = 'Poland',
suppressedbyproperty = {7293}
},
{ 'PhilPeople',
property = 3233,
section = 4,
link = 'https://philpeople.org/profiles/$1',
label = 'PhilPeople',
patterns = {'[a-z%-]+', '[a-z%-]+%-%d'}
},
{ 'Prado',
property = 5321,
section = 5,
link = 'https://www.museodelprado.es/en/the-collection/artist/wd/$1',
label = 'Prado',
pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x'
},
{ 'Publons',
property = 3829,
section = 4,
pattern = '%d+',
link = 'https://publons.com/author/$1/',
label = 'Publons'
},
{ 'RID',
property = 1053,
section = 4,
patterns = {'[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-19%d%d', '[A-Z][A-Z]?[A-Z]?%-%d%d%d%d%-20%d%d'},
link = 'https://www.researcherid.com/rid/$1',
label = 'ResearcherID',
remark = 'An identifying system for scientific authors. The system was introduced in January 2008 by [[Thomson Reuters]]. The combined use of the [[digital object identifier]] with the ResearcherID allows for a unique association of authors and scientific articles.'
},
{ 'RISM',
property = 5504,
section = 7,
label = 'RISM',
patterns = {'pe[1-9]%d*', 'ks[1-9]%d*', '[1-9]%d*'},
link = 'https://opac.rism.info/search?id=$1',
},
{ 'RKDartists',
property = 650,
section = 5,
pattern = '[1-9]%d?%d?%d?%d?%d?',
link = 'https://rkd.nl/en/explore/artists/$1',
label = 'RKD Artists',
remark = 'RKDartists is an online database using a controlled vocabulary currently containing around 200,000+ names and other information about artists. Names in RKDartists may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).'
},
{ 'RKDID',
property = 350,
section = 7,
pattern = '[1-9]%d?%d?%d?%d?%d?',
link = 'https://rkd.nl/nl/explore/images/$1',
label = 'RKD ID',
},
{ 'RSL',
property = 947,
section = 2,
pattern = '%d%d?%d?%d?%d?%d?%d?%d?%d?',
link = 'http://aleph.rsl.ru/F?func=find-b&find_code=SYS&adjacent=Y&local_base=RSL11&request=$1&CON_LNG=ENG',
label = 'Russia',
remark = 'Russian State Library ({{lang|ru|Российская государственная библиотека}}) is the national library of Russia.'
},
{ 'Scopus',
property = 1153,
section = 4,
pattern = '[1-9]%d%d%d%d%d%d%d%d%d%d?',
link = 'https://www.scopus.com/authid/detail.uri?authorId=$1',
label = 'Scopus',
remark = 'SciVerse Scopus is a bibliographic database containing abstracts and citations for academic journal articles. It covers nearly 19,500 titles from over 5,000 international publishers, of which 16,500 are peer-reviewed journals in the scientific, technical, medical, and social sciences (including arts and humanities).'
},
{ 'SELIBR',
property = 906,
section = 2,
pattern = '[1-9]%d%d%d%d%d?',
link = 'https://libris.kb.se/auth/$1',
label = 'Sweden',
remark = 'Authority data from the [[National Library of Sweden]]',
suppressedbyproperty = {5587}
},
{ 'SIKART',
property = 781,
section = 5,
pattern = '%d%d%d%d%d%d%d%d?%d?',
link = 'http://www.sikart.ch/KuenstlerInnen.aspx?id=$1&lng=en',
label = 'SIKART',
remark = 'SIKART is a biographical dictionary and a database on visual art in Switzerland and Liechtenstein. It is published online by the Swiss Institute for Art Research (SIAR).'
},
{ 'SNAC-ID',
property = 3430,
section = 7,
pattern = '%d*[A-Za-z][0-9A-Za-z]*',
link = 'https://snaccooperative.org/ark:/99166/$1',
label = 'SNAC',
},
{ 'Städel',
property = 4581,
section = 5,
label = 'Städel',
link = 'https://sammlung.staedelmuseum.de/en/person/$1',
pattern = '%C+'
},
{ 'StadiumDB',
property = 5288,
section = 3,
label = 'StadiumDB',
link = 'http://stadiumdb.com/stadiums/$1',
pattern = '%l%l%l/[_%w]+'
},
{ 'Structurae structure',
property = 454,
section = 3,
pattern = '[12]0%d%d%d%d%d%d',
label = 'Structurae',
link = 'https://structurae.net/structures/$1',
},
{ 'Structurae person',
property = 2418,
section = 6,
pattern = '10%d%d%d%d%d',
label = 'Structurae',
link = 'https://structurae.net/persons/$1',
},
{ 'SUDOC',
property = 269,
section = 7,
label = 'IdRef',
pattern = '%d%d%d%d%d%d%d%d[%dxX]',
link = 'https://www.idref.fr/$1',
remark = 'Authority data of people listed in the general catalogue of the University Documentation System of France. Also available from [http://www.sudoc.abes.fr/xslt//DB=2.1/SET=2/TTL=1/LNG=EN/ English-speaking catalog] (search author, click one book, click author name, take PPN= value of the URL)'
},
{ 'Sycomore',
property = 1045,
section = 6,
link = 'https://www2.assemblee-nationale.fr/sycomore/fiche/(num_dept)/$1',
label = 'Sycomore',
pattern = '[1-9]%d?%d?%d?%d?'
},
{ 'TA98',
property = 1323,
section = 7,
pattern = 'A%d%d%.%d%.%d%d%.%d%d%d[FM]?',
link = 'http://tools.wmflabs.org/wikidata-externalid-url/?p=1323&url_prefix=https:%2F%2Fwww.unifr.ch%2Fifaa%2FPublic%2FEntryPage%2FTA98%20Tree%2FEntity%20TA98%20EN%2F&url_suffix=%20Entity%20TA98%20EN.htm&id=$1',
label = 'Terminologia Anatomica',
},
{ 'TDVİA',
property = 7314,
section = 7,
pattern = '[%d%l/-]+',
link = 'https://islamansiklopedisi.org.tr/$1',
label = 'İslâm Ansiklopedisi',
},
{ 'TePapa',
property = 3544,
section = 5,
pattern = '%d+',
link = 'https://collections.tepapa.govt.nz/agent/$1',
label = 'Te Papa (New Zealand)'
},
{ 'TLS',
property = 1362,
section = 7,
valid = 'tlsV',
link = 'http://tls.theaterwissenschaft.ch/wiki/$1',
label = 'Theaterlexikon',
remark = '{{lang|de|Theaterlexikon der Schweiz}} (TLS) is an encyclopedia about theatre in Switzerland. It was developed by the Institute of Theatre Studies of the [[University of Berne]].'
},
{ 'Trove',
property = 1315,
section = 6,
label = 'Trove',
pattern = '[1-9]%d%d%d%d%d%d?%d?',
link = 'https://trove.nla.gov.au/people/$1',
},
{ 'UKPARL',
property = 6213,
section = 6,
pattern = '[a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d][a-zA-Z%d]',
link = 'https://id.parliament.uk/$1',
label = 'UK Parliament',
remark = 'UK parliament member data'
},
{ 'ULAN',
property = 245,
section = 5,
pattern = '500%d%d%d%d%d%d',
link = 'https://www.getty.edu/vow/ULANFullDisplay?find=&role=&nation=&subjectid=$1',
label = 'ULAN',
remark = 'ULAN is an online database using a controlled vocabulary currently containing around 293,000 names and other information about artists. Names in ULAN may include given names, pseudonyms, variant spellings, names in multiple languages, and names that have changed over time (e.g., married names).'
},
{ 'USCG',
property = 3723,
section = 3,
prefix = '[[USCG (identifier)|USCG]]',
customlink = 'uscgLink'
},
{ 'USCongress',
property = 1157,
section = 6,
pattern = '[A-Z]00[01]%d%d%d',
link = 'http://bioguide.congress.gov/scripts/biodisplay.pl?index=$1',
label = 'US Congress',
remark = 'Biographical Directory of the United States Congress is a biographical dictionary of all present and former members of the United States Congress and its predecessor, the Continental Congress. Also included are Delegates from territories and the District of Columbia and Resident Commissioners from the Philippines and Puerto Rico.'
},
{ 'VcBA',
property = 8034,
section = 2,
pattern = '49[0-9]%/[1-9][0-9]?[0-9]?[0-9]?[0-9]?[0-9]?',
link = 'https://wikidata-externalid-url.toolforge.org/?p=8034&url_prefix=https://opac.vatlib.it/auth/detail/&id=$1',
label = 'Vatican',
remark = 'Vatican Library document data'
},
{ 'VIAF',
property = 214,
section = 1,
label = 'VIAF',
patterns = {'[1-9]%d%d?%d?%d?%d?%d?%d?%d?', '[1-9]%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d?%d?%d?'},
link = 'https://viaf.org/viaf/$1',
remark = 'International authority data from the Online Computer Library Center (OCLC)'
},
{ 'Vitaskrá',
property = 3993,
section = 3,
pattern = '[1-9]%d*',
prefix = 'Iceland'
},
{ 'WorldCat Entities',
property = 10832,
section = 1,
link = 'https://id.oclc.org/worldcat/entity/$1',
label = 'WorldCat',
patterns = {'%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w%w', '[QP][1-9]%d*'},
remark = 'WorldCat Entities for persons and works, by [[OCLC]]',
},
{ 'World Waterfall',
property = 3326,
section = 3,
link = 'https://www.worldwaterfalldatabase.com/index.php/waterfall/$1',
label = 'World Waterfall',
pattern = '%d+'
},
{ 'ZBMATH',
property = 1556,
section = 4,
patterns = {'%l[%l%-]*','%l[%l%-]*%.%l[%l%-]*','%l[%l%-]*.%d*','%l[%l%-]*%.%l[%l%-]*%.%d*'},
link = 'https://zbmath.org/authors/?q=ai:$1',
label = 'zbMATH',
}
}
p.sections = {
[1] = {name = 'International', hidelabelwhenalone = true},
[2] = {name = 'National'},
[3] = {name = 'Geographic'},
[4] = {name = 'Academics'},
[5] = {name = 'Artists'},
[6] = {name = 'People'},
[7] = {name = 'Other', hidelabelwhenalone = true}
}
p.whitelists = {
arts = {
topic = 2018526,
properties = {268, 214, 7859, 3372, 6804, 1907, 4186, 2092, 1908, 1707, 6829, 2349, 6792, 227, 1960, 347, 1248, 244, 1225, 2041, 409, 2750, 650, 350, 781, 3430, 3544, 1315, 245, 1986, 7902, 651, 791, 7303}
},
lighthouse = {
topic = 39715,
properties = {3563, 4055, 3223, 4423, 3723, 3993, 3562, 2980, 4038, 3920, 4143, 3863, 3601}
},
ch = {
topic = 39,
properties = {902, 886, 3065, 781, 1362},
},
cz = {topic = 213, properties = {691}},
cl = {topic = 298, properties = {1890}},
es = {topic = 29, properties = {950, 9984}},
gr = {topic = 41, properties = {3348}},
hr = {topic = 224, properties = {1375}},
il = {topic = 801, properties = {8189, 1736}},
it = {topic = 38, properties = {396, 3863, 1986, 8034}},
ja = {topic = 17, properties = {349, 271}},
kr = {topic = 884, properties = {5034}},
lv = {topic = 211, properties = {1368}},
nl = {topic = 55, properties = {651, 1006, 650, 350}},
pl = {topic = 36, properties = {1695, 7293}},
ro = {topic = 218, properties = {1003}},
ru = {topic = 159, properties = {947}},
sv = {topic = 34, properties = {906, 5587}},
tr = {topic = 43, properties = {7314}},
tw = {topic = 865, properties = {1048}},
uy = {topic = 77, properties = {2558}}
}
p.auto_additional = { -- defines properties to check when additional=auto
527, -- has part(s)
150, -- contains the administrative territorial entity
355, -- has subsidiary
}
return p
9ae0144b113daabc4b65bcd79ccd0ae3152eea27
Module:Authority control/auxiliary
828
1077
2353
2352
2023-10-01T14:17:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Authority_control/auxiliary]]
Scribunto
text/plain
require('strict')
local p = {}
--[[======================================================]]
--[[ Format validation functions ]]
--[[======================================================]]
p.botanistV = function(id)
return mw.ustring.match(id,"^[%u%l%d%. '-]+$")
end
p.validateIsni = function(id) --Validate ISNI (and ORCID) and retuns it as a 16 characters string or returns false if it's invalid. See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
id = id:gsub( '[ %-]', '' ):upper()
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
local total = 0
for i = 1, 15 do
local digit = id:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
local remainder = total % 11
local result = (12 - remainder) % 11
local checkdigit
if result == 10 then
checkdigit = 'X'
else
checkdigit=tostring( result )
end
if checkdigit ~= string.char( id:byte( 16 ) ) then
return false
end
return id
end
p.orcidV = function(id)
id = p.validateIsni(id)
if not id then
return false
end
return id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
end
p.tlsV = function(id)
id = id:gsub(' +', '_')
local idlen = mw.ustring.len(id)
if idlen < 4 or idlen > 90 then
return false
end
local regex = '^%u'..string.rep("[%w_',%.%-%(%)%*%/–&]", idlen - 1)..'$'
if not mw.ustring.match(id,regex ) then
return false
end
return id
end
--[[======================================================]]
--[[ Custom link functions ]]
--[[======================================================]]
p.ISILlink = function(id,label)
if not id:match('^%D%D?%D?%D?%-.+$') then
return false
end
for _,prefix in ipairs({'AT','AU','BE','CA','CH','DE','FI','FR','IT','KR','NZ','US','ZDB'}) do
if id:match('^'..prefix..'%-') then
return '<span class="uid">[https://w3id.org/isil/'..id..' ' .. (label or 'ISIL') .. ']</span>'
end
end
return '[[International Standard Identifier for Libraries and Related Organizations|ISIL]]\n**<span class="uid">' .. id .. '</span>'
end
p.uscgLink = function(id)
local id2 = id:match( '^[1-7]%-%d%d?%d?%d?%d?$' ) or id:match( '^[1-7]%-%d%d?%d?%d?%d?%.%d*[1-9]$' )
if id2 then
return '<span class="uid">[https://www.navcen.uscg.gov/pdf/lightlists/LightList%20V'..mw.ustring.sub(id2,1,1)..'.pdf '..id2..']</span>'
else
return false
end
end
p.ccg = function(id)
id = id:match('^[NAIP]?[1-9]%d*$') or id:match('^[NAIP]?[1-9]%d*%.%d+$')
if not id then return false end
local link = 'https://www.notmar.gc.ca/'
local prefix = string.sub(id, 1, 1) -- get first character of id
local suffix = string.sub(id, 2) -- remove first character of id
local interval = require('Module:Interval')._main
local v
if prefix=='N' then
local int = interval({1,7.5,14.4,100,121,173,211,235,269.99,326,396,450.1,471.7,499,n=suffix})
if int=='1-2' then v = 1
elseif int=='2-3' then v = 75
elseif int=='3-4' then v = 144
elseif int=='4-5' then v = 100
elseif int=='5-6' then v = 121
elseif int=='6-7' then v = 173
elseif int=='7-8' then v = 211
elseif int=='8-9' then v = 235
elseif int=='9-10' then v = 26999
elseif int=='10-11' then v = 326
elseif int=='11-12' then v = 396
elseif int=='12-13' then v = 4501
elseif int=='13-14' then v = 4717
elseif int=='14-15' then v = 499
end
link = link .. 'publications/list-lights/newfoundland/n' .. v .. '-en'
elseif prefix=='A' then
local int = interval({5,114.5,145,163,268,271,301.5,327,686.5,704.85,883.2,942,1085,1169.1,1584.5,1773,1823.55,2190,2369,2389,n=suffix})
if int=='1-2' then v = 5
elseif int=='2-3' then v = 1145
elseif int=='3-4' then v = 145
elseif int=='4-5' then v = 162
elseif int=='5-6' then v = 268
elseif int=='6-7' then v = 271
elseif int=='7-8' then v = 3015
elseif int=='8-9' then v = 327
elseif int=='9-10' then v = 6865
elseif int=='10-11' then v = 7048
elseif int=='11-12' then v = 883
elseif int=='12-13' then v = 942
elseif int=='13-14' then v = 1085
elseif int=='14-15' then v = 11691
elseif int=='15-16' then v = 15845
elseif int=='16-17' then v = 1773
elseif int=='17-18' then v = 182355
elseif int=='18-19' then v = 2190
elseif int=='19-20' then v = 2369
elseif int=='20-21' then v = 2389
end
link = link .. 'publications/list-lights/atl/a' .. v .. '-en'
elseif prefix=='I' then
local int = interval({0.05,401.1,403.4,551.06,552,624,708,731.2,768,814,983,1046,1059.6,1082,1162,1204.7,1233.3,1328,1330,1346.2,1377.8,1408,1410,1420,1445,1470,1520,1534,1540.6,1554,1557.7,1558.8,1563.1,1625.5,1671.7,1716.96,2545,n=suffix})
if int=='1-2' then v = '01'
elseif int=='2-3' then v = 4011
elseif int=='3-4' then v = 4034
elseif int=='4-5' then v = 55106
elseif int=='5-6' then v = 552
elseif int=='6-7' then v = 624
elseif int=='7-8' then v = 708
elseif int=='8-9' then v = 7312
elseif int=='9-10' then v = 768
elseif int=='10-11' then v = 814
elseif int=='11-12' then v = 983
elseif int=='12-13' then v = 1046
elseif int=='13-14' then v = 10596
elseif int=='14-15' then v = 1082
elseif int=='15-16' then v = 1162
elseif int=='16-17' then v = 12047
elseif int=='17-18' then v = 12333
elseif int=='18-19' then v = 1328
elseif int=='19-20' then v = 1330
elseif int=='20-21' then v = 13462
elseif int=='21-22' then v = 13778
elseif int=='22-23' then v = 1408
elseif int=='23-24' then v = 1410
elseif int=='24-25' then v = 1420
elseif int=='25-26' then v = 1445
elseif int=='26-27' then v = 1470
elseif int=='27-28' then v = 1520
elseif int=='28-29' then v = 1534
elseif int=='29-30' then v = 15406
elseif int=='30-31' then v = 1554
elseif int=='31-32' then v = 15577
elseif int=='32-33' then v = 15588
elseif int=='33-34' then v = 1562
elseif int=='34-35' then v = 16255
elseif int=='35-36' then v = 16717
elseif int=='36-37' then v = 171696
elseif int=='37-38' then v = 2545
end
link = link .. 'publications/list-lights/inland-waters/i' .. v .. '-en'
elseif prefix=='P' then
link = link .. 'publications/list-lights/pac/p'
else
link = link .. 'list-lights'
end
return '[[CCG (identifier)|CCG]] <span class="uid">[' .. link .. ' ' .. id .. ']</span>'
end
return p
4fe1ede4f4598dd1edc3073b3d484dee8411e094
Module:Authority control/documentation
828
1078
2355
2354
2023-10-01T14:17:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Authority_control/documentation]]
Scribunto
text/plain
require('strict')
local p = {}
local configfile = 'Module:Authority control/config' -- default configuation module
local arg = mw.getCurrentFrame().args.config
if arg and arg~='' then
configfile = 'Module:Authority control/config/' .. arg
end
local config
if mw.title.new(configfile).exists then
config = mw.loadData(configfile)
else
return error('Invalid configuration file',0)
end
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local testcases = title.subpageText == config.i18n.testcases
local makelink = require(config.i18n.ACmodule).makelink
local lang = mw.getContentLanguage()
local function needsAttention(sortkey)
return '[[' .. config.i18n.category .. ':' .. config.i18n.attentioncat .. '|' .. sortkey .. title.text .. ']]'
end
local function addCat(cat,sortkey)
if cat and cat ~= '' and (namespace == 0 or namespace == 14 or testcases) then
local redlinkcat = ''
if testcases == false and mw.title.new(cat, 14).exists == false then
redlinkcat = needsAttention('N')
end
if sortkey then
cat = '[[' .. config.i18n.category .. ':'..cat..'|' .. sortkey .. title.text .. ']]'
else
cat = '[[' .. config.i18n.category .. ':'..cat..']]'
end
cat = cat .. redlinkcat
return cat
else
return ''
end
end
-- Creates a human-readable standalone wikitable version of conf, and tracking categories with page counts, for use in the documentation
function p.docConfTable(frame)
local function checkcat(category,label)
local ret='[[:Category:'..category..'|'..label..']]'
--if mw.title.new(category,14).exists == false then
--ret = ret..' <span class="plainlinks" style="font-size:85%;">[['..tostring(mw.uri.fullUrl('Category:'..category,'action=edit&preload=Template:Authority_control/preload'))..' create]]</span>'
--end
return ret
end
local doc = ''
local a, P, f = 0, 0, 0 --cumulative sums
local count = frame.args.count or false
local columns = 3 + (count and 1 or 0)
local row = function(conf)
local category = conf.category or conf[1]
local articleCat = string.format(config.i18n.cat,category)
local articleCount = mw.site.stats.pagesInCategory(articleCat,config.i18n.pages)
local errorCat = conf.errorcat or string.format(
config.i18n.cat,
config.i18n.faulty .. ' ' .. category
)
local errorCount = mw.site.stats.pagesInCategory(errorCat,config.i18n.pages)
P = P + 1 --property count
a = a + articleCount
f = f + errorCount
local getstatement = function(id,propid,qualid)
local statement = mw.wikibase.getBestStatements('P' .. id, 'P' .. propid)
local value
if statement and statement[1] and statement[1].mainsnak.datavalue.value.id then
value = statement[1].mainsnak.datavalue.value.id
local qual
if qualid and statement[1].qualifiers['P' .. qualid][1].datavalue.value then
qual = statement[1].qualifiers['P' .. qualid][1].datavalue.value
end
return value, qual
end
end
local _, example = getstatement(conf.property, 1855, conf.property)
if not example then example = '' end
example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink(conf,{id=example},1)}} .. '\n'
local getname = function(nameprop)
local name = getstatement(conf.property,nameprop)
if name then
return frame:expandTemplate{title='Wikidata fallback link',args={name}}
end
end
local name = getname(1629) or getname(10726) or ''
local out = ''
if conf.remark then
out = out .. '<tr><td rowspan=2>'
else
out = out .. '<tr><td>'
end
out = out .. name .. '</td>' ..
'<td style="text-align: center">' .. config.sections[conf.section].name .. '</td>' ..
'<td data-sort-value=' .. conf.property .. '>' .. frame:expandTemplate{title='Wikidata property link',args={id='f',conf.property}} .. '</td>' ..
'<td>' .. example .. '</td>'
if count then
out = out .. '<td style="text-align: right;">'..checkcat(articleCat,lang:formatNum(articleCount))..' ('..checkcat(errorCat,errorCount)..')</td>'
end
out = out .. '</tr>'
if conf.remark then
out = out .. "<tr class='expand-child'><td colspan=" .. columns .. ">'''Remarks:''' " .. frame:preprocess{text = conf.remark} .. "</td></tr>"
end
return out
end
local doc = '<table class="wikitable sortable">' ..
'<tr><th>' .. lang:ucfirst(config.i18n.identifier) .. '</th>' ..
'<th>' .. config.i18n.Section .. '</th>' ..
'<th data-sort-type=number>' .. config.i18n.WDproperty .. '</th>' ..
'<th>' .. config.i18n.Appears_as .. '</th>'
if count then
doc = doc .. '<th>[[:' .. config.i18n.category .. ':' .. config.i18n.maincat .. '|' .. config.i18n.Articles .. ']] '
.. '([[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Faults .. ']])</th>'
end
doc = doc .. '</tr>'
for _, conf in pairs(config.config) do
doc = doc .. row(conf)
end
if count then
doc = doc .. '<tr><th style="text-align: right;" colspan=' .. columns-1 .. '>' .. config.i18n.Totals .. '</th>' ..
'<th style="text-align: right;">' .. P .. '</th>' ..
'<th style="text-align: right;">' .. lang:formatNum(a) .. ' ([[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. f .. ']])</th></tr>'
end
doc = doc .. '</table>'
return doc
end
function p.errorTable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.WDproperty .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.faulty) .. ' ' .. config.i18n.identifiers .. '</th>'..
'<th>[[:' .. config.i18n.category .. ':' .. config.i18n.faultcat .. '|' .. config.i18n.Tracking_category .. ']]</th></tr>'
local f, P = 0, 0, 0 --cumulative sums
for _, conf in pairs(config.config) do
local category = conf.errorcat or string.format(
config.i18n.cat,
config.i18n.faulty .. ' ' .. (conf.category or conf[1])
)
local count = mw.site.stats.pagesInCategory(category,'pages')
if count > 0 then
P = P + 1
f = f + count
Table = Table..'<tr><td>'..frame:expandTemplate{ title = config.i18n.linktemplate, args = { id = 'f', conf.property } } .. '</td>'..
'<td style="text-align:center;">'..tostring(count)..'</td>'..
'<td>[[:' .. config.i18n.category .. ':'..category..']]</td></tr>'
end
end
Table = Table..'<tr><th>' .. config.i18n.Totals .. '</th>'..
'<th style="text-align:center;">' .. '[[:' .. config.i18n.category .. ':' .. config.i18n.allfaultycat .. '|' .. tostring(f) .. ']]</th>'..
'<th style="text-align:center;">'..tostring(P)..'</th></tr></table>'
return Table
end
function p.whitelisttable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.Code .. '</th>'..
'<th>' .. config.i18n.Topic .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>'
for code, wlist in pairs(config.whitelists) do
Table = Table .. '<tr><th>' .. code .. '</th>'..
'<td>[[' .. mw.wikibase.getSitelink('Q' .. wlist.topic) .. ']]</td>'
local plist = {}
for _, property in pairs(wlist.properties) do
table.insert(plist,frame:expandTemplate{title='Wikidata property link', args={'P' .. property}})
end
Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>'
end
Table = Table .. '</table>'
return Table
end
function p.sectiontable(frame)
local Table = '<table class="wikitable sortable">'..
'<tr><th>' .. config.i18n.Section .. '</th>' ..
'<th>' .. config.i18n.Description .. '</th>'..
'<th>' .. lang:ucfirst(config.i18n.identifiers) .. '</th></tr>'
for number,section in ipairs(config.sections) do
Table = Table .. '<tr><th>' .. number .. '</th>' .. '<td>' .. section.name .. '</td>'
local plist = {}
for _,id in pairs(config.config) do
if id.section == number then
table.insert(plist,frame:expandTemplate{title=config.i18n.linktemplate, args={'P' .. id.property}})
end
end
Table = Table .. '<td>' .. table.concat(plist,', ') .. '</td></tr>'
end
Table = Table .. '</table>'
return Table
end
-- Main/External Call for Pages with authority control identifiers
function p.autoDetect(frame)
local function whichTOC(frame) -- standardize TOC behavior via {{CatAutoTOC}}
return frame:expandTemplate{ title = 'CatAutoTOC', args = { align = 'center' } }
end
local function wpa(frame,id,faulty)
for _,conf in pairs(config.config) do
if conf.category == id or conf[1] == id then
local getname = function(nameprop)
local name = mw.wikibase.getBestStatements('P'..conf.property,nameprop)
if name and name[1] and name[1].mainsnak.datavalue.value.id then
return frame:expandTemplate{title='Wikidata fallback link',args={name[1].mainsnak.datavalue.value.id}}
end
end
local name = getname('P1629') or getname('P10726') or ''
local outString = frame:expandTemplate{ title = 'Category explanation', args = {'articles with '..name..' identifiers.'..' Please do not add [[Wikipedia:Categorization#Subcategorization|subcategories]].\nPages in this category should only be added by [[Module:Authority control]].'}}
.. frame:expandTemplate{ title = 'Cat more', args = {'Wikipedia:Authority control', ':d:Property:P'..conf.property} }
.. frame:expandTemplate{ title = 'Possibly empty category' }
.. frame:expandTemplate{ title = 'Wikipedia category', args = { hidden = 'yes', tracking = 'yes' } }
.. frame:expandTemplate{ title = 'Polluted category' }
.. whichTOC( frame )
if faulty then
outString = outString .. addCat(config.i18n.faultcat,id) .. addCat(string.format(config.i18n.cat, id))
else
outString = outString .. addCat(config.i18n.maincat,id)
end
return outString
end
end
end
if namespace == 14 then --cat space
local wpfaultyID = mw.ustring.match(title.text, 'Articles with faulty (.+) identifiers')
local wpID = mw.ustring.match(title.text, 'Articles with (.+) identifiers')
if wpfaultyID then
return wpa(frame,wpfaultyID,true)-- must be before wpID check, in case they both match
elseif wpID then
return wpa(frame,wpID,false)
else
return needsAttention('U')
end
end
end
function p.idproposal(frame)
local property = frame.args.property or ''
local out = '<ul><li>Wikidata property: ' .. frame:expandTemplate{title='Wikidata property link', args={'P' .. property}} .. '</li>'
out = out .. '<li>Section: '
local section = frame.args.section or ''
if section~='' then
out = out .. config.sections[section].name .. ' (' .. section .. ')'
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Link: '
local link = frame.args.link or ''
if link=='' then
link = mw.wikibase.getBestStatements('P'..property,'P1630') or ''
link = link[1].mainsnak.datavalue.value
end
if link~='' then
out = out .. '<code>' .. link .. '</code>'
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Label: '
local label = frame.args.label or ''
if label~='' then
out = out .. label
else
out = out .. 'Not specified'
end
out = out .. '</li><li>Example: '
local example = mw.wikibase.getBestStatements('P'..property,'P1855') or ''
if example then
example = example[1].qualifiers['P'..property][1].datavalue.value
example = frame:expandTemplate{title = "Hlist", args = {'\n' .. makelink({[1]='',link=link,label=label},{id=example},1)}} .. '\n'
out = out .. example
else
out = out .. 'Not available'
end
out = out .. '</li></ul>'
return out
end
return p
0cc6ccce20ffd440b927baba266e176d5980bc71
Template:Authority control/related
10
1079
2357
2356
2023-10-01T14:17:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Authority_control/related]]
wikitext
text/x-wiki
{{Sidebar
| templatestyles = Template:Lua sidebar/styles.css
| title = [[Wikipedia:Authority control]]
| content2 = '''[[Template:Authority control|Template]]''' {{flatlist}}
* [[Template talk:Authority control|talk]]
* [[Template:Authority control/sandbox|sandbox]]
* [[Template:Authority control/staging|staging]]
* [[Template:Authority control/testcases|testcases]]
* [[Template:Authority control/doc|doc]]
* [[Special:PrefixIndex/Template:Authority control/|subpages]]
{{endflatlist}}
| content3 = '''[[Module:Authority control|Module]]''' {{flatlist}}
* [[Module:Authority control/sandbox|sandbox]]
* [[Module talk:Authority control/testcases|testcases]]
* [[Module:Authority control/doc|doc]]
* [[Special:PrefixIndex/Module:Authority control/|subpages]]
{{endflatlist}}
| content4 = '''[[Module:Authority control/config|Config]]''' {{flatlist}}
* [[Module:Authority control/config/sandbox|sandbox]]
* [[Module:Authority control/config/staging|staging]]
{{endflatlist}}
| content5 = '''[[Module:Authority control/auxiliary|Auxiliary]]''' {{flatlist}}
* [[Module:Authority control/auxiliary/sandbox|sandbox]]
{{endflatlist}}
| content6 = '''[[Module:Authority control/documentation|Doc module]]''' {{flatlist}}
* [[Module:Authority control/documentation/sandbox|sandbox]]
{{endflatlist}}
| content7 = '''[[:Category:Wikipedia authority control|Category]]''' {{flatlist}}
* [[:Category:Pages with authority control identifiers needing attention|attention]]
* [[Wikipedia:Authority control/dashboard|dashboard]]
{{endflatlist}}
}}
9c16571badbcf205b4c1f96317d8abab39779051
Bonnie Parker
0
1080
2359
2358
2023-10-01T14:17:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Bonnie_Parker]]
wikitext
text/x-wiki
#REDIRECT [[Bonnie and Clyde#Bonnie Parker]]
{{Redirect category shell|1=
{{R with Wikidata item|Q2319886}}
{{R to section}}
{{R to joint biography}}
}}
{{Authority control}}
{{DEFAULTSORT:Parker, Bonnie}}
[[Category:1910 births]]
[[Category:1934 deaths]]
[[Category:American female murderers]]
[[Category:People from Runnels County, Texas]]
[[Category:Barrow Gang]]
[[Category:People from Dallas]]
e7a0b6232a498c351b7fb36411246efb85cbee9e
Clyde Barrow
0
1081
2361
2360
2023-10-01T14:17:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Clyde_Barrow]]
wikitext
text/x-wiki
#REDIRECT [[Bonnie and Clyde#Clyde Barrow]]
{{Redirect category shell|1=
{{R with Wikidata item|Q3320282}}
{{R to section}}
{{R to joint biography}}
}}
{{DEFAULTSORT:Barrow, Clyde}}
{{Authority control}}
[[Category:1909 births]]
[[Category:Barrow Gang]]
[[Category:People from Ellis County, Texas]]
[[Category:Male murderers]]
[[Category:American male criminals]]
[[Category:People from Dallas]]
261d36161d41327ced8a82681d5d9a5e12814e83
Module:Authority control/doc
828
1082
2363
2362
2023-10-01T14:18:04Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Authority_control/doc]]
wikitext
text/x-wiki
{{High-risk}}
{{Module rating|protected}}
{{Authority control/related}}
{{Lua|Module:Navbox|Module:ResolveEntityId}}
This module contains the code for the {{T|Authority control}} template.
Please see [[Template:Authority control/doc]].
<includeonly>{{sandbox other||
[[Category:Modules using data from Wikidata]]
[[Category:Wikipedia authority control]]
}}</includeonly>
7b92fcf75d5208e71e4bbc4dd06b8171884722e4
Megali Idea
0
1083
2366
2365
2023-10-01T14:19:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Megali_Idea]]
wikitext
text/x-wiki
{{Short description|Irredentist concept}}
{{Redirect|Greater Greece|the Ancient Greek settlements in southern Italy|Magna Graecia}}
[[File:ParisPeace-Venizelos-Map.png|thumb|Map showing Greek ambitions at the Paris Peace Conference after WWI, 1919]]
[[File:Map of Greater Greece.png|thumb|Map of Megali Hellas (Greater Greece) as proposed at the Paris Peace Conference of 1919 by [[Eleftherios Venizelos]], the leading major proponent of the Megali Idea at the time.]]
[[File:Map Greece expansion 1832-1947-en.svg|thumb|The territorial expansion of Greece, 1832–1947.]]
The '''Megali Idea''' ({{lang-el|Μεγάλη Ιδέα|Megáli Idéa|Great Idea}})<ref>{{cite book |url=https://books.google.com/books?id=AjDYlMB9amwC |title=The Mediterranean in the Age of Globalization: Migration, Welfare & Borders |last=Mateos |first=Natalia Ribas |publisher=[[Transaction Publishers]]|isbn=9781412837750 }}</ref> is a [[nationalist]]<ref>{{Citation |last=Miller |first=James Edward |title=Introduction: Manifest Destiny Meets the Megali Idea |date=2009-02-01 |url=http://dx.doi.org/10.5149/9780807887943_miller.6 |work=The United States and the Making of Modern Greece |pages=1–22 |publisher=University of North Carolina Press |doi=10.5149/9780807887943_miller.6 |isbn=9780807832479 |access-date=2022-10-21}}</ref><ref>{{Cite book |last=A. |first=Jenkins, Mary |url=http://worldcat.org/oclc/35675237 |title=To megali idea - dead or alive? : the domestic determinants of Greek foreign policy |date=1994 |publisher=Naval Postgraduate School |oclc=35675237}}</ref> and [[irredentist]] concept that expresses the goal of reviving the [[Byzantine Empire]],<ref>Roumen Daskalov, Tchavdar Marinov, Entangled Histories of the Balkans - Volume One: National Ideologies and Language Policies; BRILL, 2013; {{ISBN|900425076X}}, p. 200.</ref> by establishing a Greek state, which would include the large Greek populations that were still under [[Ottoman Empire|Ottoman]] rule after the end of the [[Greek War of Independence]] (1821–1829) and all the regions that had large Greek populations (parts of the southern [[Balkans]], [[Anatolia]] and [[Cyprus]]).<ref>{{Cite web|url=https://o.nsd.no/european_election_database/country/greece/introduction.html|title=European Election Database - Background - Greece|website=o.nsd.no}}</ref>
The term appeared for the first time during the debates of [[Prime Ministers of Greece|Prime Minister]] [[Ioannis Kolettis]] with [[Otto of Greece|King Otto]] that preceded the promulgation of the 1844 constitution.<ref name="BA0">[https://www.britannica.com/place/Greece/Building-the-nation-1832-1913 ''History of Greece''] Encyclopædia Britannica Online</ref> It came to dominate foreign relations and played a significant role in domestic politics for much of the first century of Greek independence. The expression was new in 1844 but the concept had roots in the Greek popular psyche, which long had hopes of liberation from Ottoman rule and restoration of the Byzantine Empire.<ref name="BA0" />
<blockquote>Πάλι με χρόνια με καιρούς,
:πάλι δικά μας θα 'ναι!
(''Once more, as years and time go by, once more they shall be ours'').<ref name="BK0">D. Bolukbasi and D. Bölükbaşı, ''Turkey And Greece: The Aegean Disputes'', Routledge Cavendish 2004</ref></blockquote>
The Megali Idea implies establishing a Greek state, which would be a territory encompassing mostly the former Byzantine lands from the [[Ionian Sea]] in the west to Anatolia and the [[Black Sea]] to the east and from [[Thrace]], [[Macedonia (region)|Macedonia]] and [[Epirus]] in the north to [[Crete]] and [[Cyprus]] to the south. This new state would have [[Constantinople]] as its capital: it would be the "Greece of Two Continents and Five Seas" ([[Europe]] and [[Asia]], the Ionian, [[Aegean Sea|Aegean]], [[Sea of Marmara|Marmara]], Black and [[Libyan Sea|Libyan]] Seas). If realized, this would expand modern Greece to roughly the same size and extent of the later Byzantine Empire, after its [[Byzantine Empire under the Palaiologos dynasty|restoration]] in 1261 AD.
The Megali Idea dominated foreign policy and domestic politics of [[Greece]] from the [[Greek War of Independence|War of Independence]] in the 1820s through the [[Balkan wars]] in the beginning of the 20th century. It started to fade after the [[Greco-Turkish War (1919–1922)]], followed by the [[population exchange between Greece and Turkey]] in 1923. Despite the end of the Megali Idea project in 1922, by then the Greek state had expanded four times, either through military conquest or diplomacy (often with British support). After the creation of Greece in 1830, it annexed the [[Ionian Islands]] ([[Treaty of London, 1864]]), [[Thessaly]] ([[Convention of Constantinople (1881)]]), [[Macedonia (Greece)|Macedonia]], [[Crete]], [[Epirus (region)|(southern) Epirus]] and the Eastern Aegean Islands ([[Treaty of Bucharest (1913)|Treaty of Bucharest]]), and [[Western Thrace]] ([[Treaty of Neuilly]], 1920). The [[Dodecanese]] were annexed after the Second World War ([[Treaty of Peace with Italy, 1947]]).
A related concept is ''[[enosis]]''.
==Fall of Constantinople==
{{Main|Fall of Constantinople}}
[[File:Zonaro GatesofConst.jpg|thumb|180px|Sultan [[Mehmed the Conqueror|Mehmed II]]'s entry into Constantinople.]]
The [[Byzantine Empire]] was [[Division of the Roman Empire|Eastern Roman]] in origin and was called the "Roman Empire" by its inhabitants, though often not by the [[Latin West]], which regarded it as [[Greek East|Greek]]. After its fall, [[Hieronymus Wolf]] popularized the usage of "Byzantium". An informal cultural division had existed within the Roman Empire for centuries before the official political split of the Empire into Eastern and Western halves. Although Latin was the official language of the empire, Greek was the lingua franca in the East and was regularly used alongside Latin in official business. Following the adoption of Christianity in the 4th century, Greek was also the dominant liturgical language, as exemplified by the fact the New Testament was written in Greek. [[Byzantium under the Heraclians|Greek replaced Latin as the official language]] in AD 620.
Byzantium held out against numerous invasions over the centuries and during the 10th and early 11th centuries managed to reclaim considerable territory in the Balkans, Anatolia and to a lesser extent Syria. The Turkish invasion of the mid to late 11th century however greatly weakened the Empire and, although it partially recovered under the [[Byzantine Empire under the Komnenos dynasty|Komnenos dynasty]], it never managed to regain control of the Anatolian interior, cutting the empire off from a valuable source of manpower and tax revenue. In 1204 Constantinople was besieged and sacked during the [[Fourth Crusade]] and became the Capital of what has come to be known as the [[Latin Empire]], a French dominated crusader state, until it was liberated by the [[Empire of Nicaea]], the Byzantine state in exile, in 1261. However, Byzantine strength would rapidly diminish towards the end of the 13th century and evaporated almost entirely during the 14th century, to the extent that by 1400 little remained of the Empire except Constantinople, the city’s immediate surroundings and some small territories in modern-day Greece. In 1453 the Ottoman Turks besieged and captured Constantinople officially marking the end of the Roman Empire and also the end of Greek predominance in the city; although it would continue to have a considerable [[Greeks in Turkey|Greek speaking population]] and the Patriarch of Constantinople continued to reside in the city.
== Greeks under Ottoman rule==
{{Further|Ottoman Greece|Greek Plan}}
[[File:Subject Nationalities of the German Alliance (1917) (cropped).jpg|thumb|Ethnic map of [[Asia Minor]] in 1917.{{Unbulleted list|{{legend|black|Bulgars and Turks}}|{{legend|maroon|Greeks}}|{{legend|yellow|Armenians}}|{{legend|teal|Kurds}}|{{legend|orange|Lazes}}|{{legend|olive|Arabs}}|{{legend|green|Nestorians}}}}]]
Under the ''[[Millet (Ottoman Empire)|millet]]'' system which was in force during the [[Ottoman Empire]], the population was classified according to religion rather than language or ethnicity. Orthodox Greeks were seen as part of the ''millet-i Rûm'' (literally "Roman community") which included all [[Orthodoxy#Christianity|Orthodox Christians]], including beside Greeks also [[Bulgarians]], [[Serbs]], [[Vlachs]], [[Slavs]], [[Georgians]], [[Romanians]] and [[Albanians]], despite their differences in ethnicity and language and despite the fact that the religious hierarchy was Greek dominated. It is not clear to what extent one can speak of a Greek identity during those times as opposed to a Christian or Orthodox identity.<ref>{{cite book |title=Greece: The Modern Sequel |last1=Koliopoulos |first1=John S. |last2=Veremis |first2=Thanos |year=2007 |publisher=C Hurst & Co Publishers Ltd }}</ref> In the late 1780s, [[Catherine II of Russia]] and [[Joseph II of Austria]] intended to reclaim the Byzantine heritage and restore the Greek statehood as part of their joint [[Greek Plan]].
During the Middle Ages and the Ottoman period, Greek-speaking Christians identified as ''Romans'' and thought of themselves as the descendants of the [[Roman Empire]] (including the medieval [[Eastern Roman Empire]]). The term ''Roman'' was often interpreted as synonymous with ''Christian'' throughout Europe and the Mediterranean during this time. The terms ''Greek'' or ''Hellene'' were largely seen by Ottoman Christians as referring to the ancient pagan peoples of the region. This changed during the late stages of the Ottoman Empire and the emergence of the Greek independence movement.<ref>{{cite book |title=Standard Languages and Multilingualism in European History |date=31 May 2012 |editor1=Honing, Matthias |editor2=Vogl, Ulrik |editor3=Moliner, Olivier |publisher=John Benjamins |url=https://books.google.com/books?id=tXAc72rjwBcC |page=163|isbn=9789027273918 }}</ref><ref>{{cite book |title=Hellenisms: Culture, Identity, and Ethnicity from Antiquity to Modernity |year=2008 |editor=Zacharia, Katerina |publisher=Ashgate Publishing |url=https://books.google.com/books?id=H1fGJRxUG6wC |page=240|isbn=9780754665250 }}</ref>
==Greek War of Independence and later==
{{Main|Greek War of Independence|First Hellenic Republic|Kingdom of Greece}}
{{Quote box2
|width= 30em |border= 1px |align= right |halign= left
|quote= "The Kingdom of Greece is not Greece; it is merely a part: the smallest, poorest part of Greece. The Greek is not only he who inhabits the Kingdom, but also he who inhabits [[Ioannina]], [[Salonika]] or [[Serres]] or [[Adrianople]] or [[Constantinople]] or [[Trabzon|Trebizond]] or [[Crete]] or [[Samos]] or any other region belonging to the Greek history or the Greek race... There are two great centres of Hellenism. [[Athens]] is the capital of the Kingdom. Constantinople is the great capital, the dream and hope of all Greeks."
|source=Kolettis voicing his convictions in the National Assembly in January 1844.<ref>Smith M., ''Ionian Vision'', (1999), p. 2</ref>}}
After the [[Greek War of Independence]] ended in 1829, a new southern Greek state was established, with assistance from the [[United Kingdom of Great Britain and Ireland|British Empire]], [[July Monarchy|Kingdom of France]], and [[Imperial Russia]]. However, this new Greek state under [[John Capodistrias]] after the Greek War of Independence was, with Serbia, one of the only two countries of the era whose population was smaller than the population of the same ethnicity outside its borders; most ethnic Greeks still resided within the borders of the Ottoman Empire. This version of Greece was designed by the [[Great Powers]], who had no desire to see a larger Greek state replace the Ottoman Empire.
The Great Idea embodied a desire to bring all ethnic Greeks into the Greek state, and subsequently revive the [[Byzantine Empire]]; it applied specifically to the Greeks in [[Epirus]], [[Thessaly]], [[Macedonia (region)|Macedonia]], [[Thrace]], the [[Aegean Islands]], [[Crete]], [[Cyprus]], parts of [[Anatolia]], and the city of [[Istanbul|Constantinople]] (which would replace [[Athens]] as the capital).
When the young Danish prince [[George I of Greece|Wilhelm Georg]] was elected king in 1863, the title offered to him by the Greek National Assembly was ''not'' "King of Greece", the title of his deposed predecessor, King [[Otto of Greece|Otto]]; but rather "King of ''the [[Hellene]]s''". Implicit in the wording was that George I was to be king of all Greeks, regardless of whether they then lived within the borders of his new kingdom.
The first additional areas to be incorporated into the Kingdom were the [[Ionian islands]] in 1864, and later [[Thessaly]] with the [[Treaty of Berlin (1878)]].
==Revolts, Cretan crisis and Greco-Turkish War (1897)==
{{See also|Epirus Revolt of 1854|Cretan Revolt (1866–69)|Epirus Revolt of 1878|1878 Greek Macedonian rebellion|Greco-Turkish War of 1897|Macedonian Struggle}}
[[File:P. A. de László - Constantine I of Greece, King of the Hellenes.jpg|thumb|140px|[[Constantine I of Greece]] was called ''Constantine XII'' by his supporters, the purported successor to the Emperor [[Constantine XI Palaiologos]]]]
[[File:Elefteriosvenizelos--victoryofvenizel00seliuoft.jpg|thumb|140px|[[Eleftherios Venizelos]] tried to realize the Megali Idea]]
In January 1897, violence and disorder were escalating in Crete, polarizing the population. Massacres of the Christian population took place in Chania and Rethimno. The Greek government, pressured by public opinion, intransigent political elements, extreme nationalist groups (e.g. [[Ethniki Etairia]]) and with the Great Powers reluctant to intervene, decided to send warships and personnel to assist the Cretans. The Great Powers had no option then but to proceed with the occupation of the island, but they were too late. A Greek force of 1,500 men had landed at Kolymbari on 1 February 1897, and its commanding officer, Colonel [[Timoleon Vassos]], declared that he was taking over the island "in the name of the King of the Hellenes" and that he was announcing the union of Crete with Greece. This led to an uprising that spread immediately throughout the island. The Great Powers finally decided to land their troops and stopped the Greek army force from approaching Chania. At the same time their fleets blockaded Crete, preventing both Greeks and Turks from bringing any more troops to the island.
The Ottoman Empire, in reaction to the rebellion of Crete and the assistance sent by Greece, relocated a significant part of its army in the Balkans to the north of Thessaly, close to the borders with Greece. Greece in reply reinforced its borders in Thessaly. However, irregular Greek forces and followers of the Megali Idea acted without orders and raided Turkish outposts, leading the Ottoman Empire to declare war on Greece; the war is known as the [[Greco-Turkish War of 1897]]. The Turkish army, far outnumbering the Greek, was also better prepared, due to the recent reforms carried out by a German mission under [[Colmar Freiherr von der Goltz|Baron von der Goltz]]. The Greek army fell back in retreat. The other Great Powers then intervened and an armistice was signed in May 1897. The war, however, only ended in December of that year.
The military failure in the Greco-Turkish war cost Greece small territorial losses along the border line in northern Thessaly, and a large sum of financial reparations that wrecked Greece's economy for years, while giving no lasting solution to the Cretan Question. The Great Powers (Britain, France, Russia, and Italy) in order to prevent future clashes and trying to avoid the creation of a revanchist climate in Greece, imposed what they thought of as a lasting solution; Crete was proclaimed an autonomous ''[[Cretan State]]''. The four Great Powers assumed the administration of Crete; and, in a decisive diplomatic victory for Greece, Prince George of Greece (second son of King George I) became High Commissioner.
==Early 20th century==
===Balkan Wars===
{{Main|Greece in the Balkan Wars}}
[[File:Maximal Greek claims in Epirus and Macedonia.png|thumb|200px|Greek claims in Epirus and Macedonia after the first Balkan war]]
[[File:New Greece.jpg|thumb|200px|Poster celebrating the "New Hellas" after the [[Balkan Wars]].]]
A major proponent of the Megali Idea was [[Eleftherios Venizelos]], under whose leadership Greek territory doubled in the [[Balkan Wars]] of 1912–13 — southern [[Epirus]], [[Crete]], [[Lesbos]], [[Chios]], [[Ikaria]], [[Samos]], [[Samothrace]], [[Lemnos]] and the majority of [[Macedonia (region)|Macedonia]] were attached to Greece. Born and raised in Crete, in 1909 Venizelos was already a prominent Cretan and had influence in mainland Greece. As such, he was invited after the [[Goudi coup]] in 1909 by the Military League to become Prime Minister of Greece. Venizelos pressed forward a series of reforms in society, as well as the military and administration, which helped Greece succeed in its goals during the Balkan Wars.
===World War I===
{{Main|Greece during World War I|Treaty of Sèvres}}
[[File:Greece in the Treaty of Sèvres.jpg|thumb|200px|Map of Megali Hellas after the [[Treaty of Sèvres]] and featuring a picture of [[Eleftherios Venizelos]].]]
Following the Greek gains in the Balkan Wars, the Ottomans began to persecute ethnic Greeks living in the Empire, which led to [[ethnic cleansing]] in the [[Greek genocide]]. This persecution continued into [[World War I]] when the Ottomans declared for the [[Central Powers]] on late 1914. Greece remained neutral until 1917 when they joined the [[Allies of World War I|Allies]]. Refugees reports of Turkish atrocities as well as the Allied victory in [[World War I]] seemed to promise an even greater realization of the Megali Idea. Greece gained a foothold in Asia Minor with a protectorate over [[Smyrna]] and its hinterland. Following 5 years of Greek administration, a referendum was to be held to determine whether the territory would revert to Ottoman control or join Greece. Greece also gained the islands of [[Imbros]] and [[Tenedos]], [[Western Thrace|Western]] and [[Eastern Thrace]], the border then drawn a few miles from the walls of [[Constantinople]].
===Greco-Turkish War (1919–1922)===
{{Main|Greco-Turkish War (1919–1922)|Great Fire of Smyrna|Treaty of Lausanne|Population exchange between Greece and Turkey}}
[[File:Izmir15Mayis1919.jpg|thumb|200px|Greek soldiers in Smyrna, May 1919.]]
Greece's efforts to take control of Smyrna in accordance with the Treaty of Sèvres were thwarted by [[Turkish revolutionaries]], who were resisting the Allies. The Turks finally prevailed and expelled the Greeks from Anatolia during the [[Greco-Turkish War (1919–1922)]] (part of the [[Turkish War of Independence]]). The war was concluded by the [[Treaty of Lausanne]] which saw Greece cede Eastern Thrace, Imbros, Tenedos and [[Smyrna]] to the nascent Turkish Republic. To avoid any further territorial claims, both Greece and Turkey engaged in an "[[exchange of populations]]": During the conflict, 151,892 Greeks had already fled Asia Minor. The Treaty of Lausanne moved 1,104,216 Greeks from Turkey,<ref>André Billy, ''La Grèce'', Arthaud, 1937, p. 188.</ref> while 380,000 Turks left the Greek territory for Turkey. The transfers ended any further appetite for pursuing the concept of a Greater Greece and ended the 3000 year Greek habitation of Asia Minor. Further population exchanges occurred after World War I, including 40,027 Greeks from Bulgaria, 58,522 from Russia (because of the defeat of the [[White Army]] led by [[Pyotr Wrangel]]) and 10,080 from other lands (for example [[Dodecanese]] or [[Albania]]), while 70,000 Bulgarians from [[Thrace]] and [[Macedonia (Greece)|Macedonia]] had moved to [[Bulgaria]].<ref>''The [[Treaty of Neuilly-sur-Seine]] led to an exchange of 50,000 Greeks for 70,000 Bulgarians between the two countries.'' For more see: Rutsel Silvestre, J. Martha; The Financial Obligation in International Law, Oxford University Press, 2015; {{ISBN|0191055956}}, p. 70.</ref> From the Bulgarian refugees ca. 66,000 were from Greek Macedonia.<ref>"''The second wave of Bulgarian refugees took place in the 1920s, following the signing of the Neilly Treaty (1919) concerning the so-called "voluntary" exchange of population between Greece and Bulgaria. Of them 66,126 people from Greek Macedonia.''" For more see: Victor Roudometof, Collective Memory, National Identity, and Ethnic Conflict: Greece, Bulgaria, and the Macedonian Question; Greenwood Publishing Group, 2002
{{ISBN|0275976483}}, p. 97.</ref>
The immediate reception of refugees to Greece cost 45 million francs, so the League of Nations arranged for a loan of 150 million francs to aid settlement of refugees. In 1930, Venizelos even went on an official visit to [[Turkey]], where he proposed that [[Mustafa Kemal Atatürk|Mustafa Kemal]] be awarded the [[Nobel Peace Prize]].
The Greek novelist [[Yiorgos Theotokas]] described the psychological impact of the defeat of 1922:<blockquote>"For a short time, while the Treaty of Serves ran its joyful but uncertain course, it seemed to them that the...long-buried hopes of their ancestors were to be fulfilled. But the terrible summer of 1922 came all too soon. From the hermitage of Arsenios they watched, tense with anxiety, the daily unfolding of the national tragedy, the last desperate efforts of the Royalist Governments of Greece to save the situation, the failure of King Constantine's attempt to take Constantinople, and the final Catastrophe.<br>In mid-August Mustapha Kemal broke through the Greek front and the Greek army, exhausted by ten years of warfare and the privations of the Asia Minor campaign, was vanquished in two weeks. The Turks, advancing rapidly, recaptured in quick succession Afion-Karahisar, Eski-Shehir, Kiutahia, Brussa, Oushak—and then Smyrna! Once again the banners of Islam floated proudly, tauntingly, over the Aegean coast opposite Chios and Mytilene. The whole of Ionia was in flames. Slaughter and pillage descended on the smiling city of Smyrna and in a few short days turned it into a ruin...As day succeeded day, Greece seemed to have become paralyzed, to have lost all will, all ability to resist the blows of fate. The swiftness of the catastrophe completely overwhelmed the State, flooded as it was by the thousands of fleeting soldiers and refugees who sought shelter on the Greek coasts.The nation was plunged into deep despair...<br>Greece had lost her big gamble and had been uprooted from Asia Minor. St. Sophia remained in the hands of the Moslems. The brilliant plans of 1918 were mocking visions, hallucinations, dreams. And the return of reality was truly heartbreaking. The tale of the years was not yet told, then, the historic hour, the fulfillment of the Great Idea, the moment they had longed for with such faith and such anxiety for five tortured, bloody centuries, had not yet come! It was all a lie!"<ref>Kaloudis, George "Ethnic Cleansing in Asia Minor and the Treaty of Lausanne" p.59-89 from ''International Journal on World Peace'', Volume 31, No. 1, March 2014 p.83-84</ref></blockquote>
== World War II, annexation of Dodecanese and Cyprus dispute ==
{{See also|Military history of Greece during World War II|EOKA|1974 Cypriot coup d'état}}
Although the Great Idea ceased to be a driving force behind Greek foreign policy, some remnants continued to influence Greek foreign policy throughout the remainder of the 20th century.
Thus, after his coup d'état of 4 August 1936, [[Ioannis Metaxas]] proclaimed the advent of the "Third Hellenic Civilization", similar to Adolf Hitler's Third Reich (influenced by [[pan-germanism|pan-Germanism]]).<ref>R. Clogg, p. 118.</ref> The attack by Italy from Albania and the Greek victories enabled Greece to conquer, during the winter of 1940–1941, parts of southern [[Albania]] ([[Northern Epirus]], as it is identified by [[Greeks]]) which were administered as a province of Greece for a short time until the German offensive of April 1941.
The occupation, resistance and the [[Greek civil war|civil war]] initially put the Great Idea in the background. Nevertheless, another very good diplomatic performance by the Greek side at the [[Paris Peace Conference, 1946]] secured a further enlargement of Greek territory, in the form of the Dodecanese Islands, despite the very strong opposition of [[Vyacheslav Molotov]] and the Soviet delegates.<ref>K. Svolopoulos, Greek Foreign Policy 1945–1981, p. 134.</ref>
The British colony of [[Cyprus]] became the "apple of discord" between the two countries, putting an end to the positive Greco-Turkish relations that had existed since the Kemal-Venizelos agreement in the 1930s. In 1955, a [[Hellenic Army|Greek army]] colonel of Greek Cypriot origin, [[George Grivas]], began a campaign of civil disobedience whose purpose was primarily to drive the British from the island, then move for ''[[Enosis]]'' with Greece. The Greek prime minister, [[Alexandros Papagos]], was not unfavourable to this idea.{{citation needed|date=June 2014}} There was increasing polarisation of opinion between the dominant Greek population and the minority Turks.{{citation needed|date=June 2014}}
The problems in Cyprus affected the continent itself. In September 1955, in response to the demand for ''Énosis'', an anti-Greek riot took place in Istanbul. During the [[Istanbul Pogrom]] 4,000 stores, 100 hotels and restaurants and 70 churches were destroyed or damaged.<ref>R. Clogg, p. 153.</ref> This led to the last great wave of migration from Turkey to Greece.
[[File:Cyprus districts named.png|thumb|200px|The island of Cyprus, showing the areas controlled by the ethnic Greek Cypriots of the [[Republic of Cyprus]] (south), and the areas controlled by ethnic Turkish Cypriots (north).]]
The [[Zürich and London Agreement|Zürich Agreement]] of 1959 culminated in independence of the island with Greece, Turkey and UK as guarantee powers. The inter-ethnic clashes from 1960 led to the dispatch of a [[United Nations Peacekeeping Force in Cyprus|peacekeeping force]] of the [[United Nations Organisation|United Nations]] in 1964.
The Cyprus issue was revived by the [[Greek military junta of 1967-1974|dictatorship of the colonels]], who presented their April 21, 1967, ''coup d'état'' as the only way to defend the traditional values of what they called the "Hellenic-Christian Civilization".
Brigadier General Ioannidis arranged, in July 1974, to overthrow Cypriot President [[Archbishop]] [[Makarios III|Makarios]], and proceed with ''[[Enosis]]'' (union with Greece).{{citation needed|date= June 2014}} This led to Turkey invading the island in response, with the expulsion of Greek Cypriots in areas controlled by Turkey, and the flight of Turkish Cypriots from the south. In 1983, the north declared independence, but to this day, the only country that recognizes [[Northern Cyprus]] is Turkey.
==Attempted revival by Golden Dawn==
The [[Greek nationalism|ultra-nationalist]] [[Golden Dawn (political party)|Golden Dawn party]], which had electoral support from 2010 to 2019, supports the Megali Idea,<ref name="stoxos.gr">{{cite news|script-title=el:Μιχαλολιάκος: Του χρόνου στην Κωνσταντινούπολη, στην Σμύρνη, στην Τραπεζούντα…|url=http://www.stoxos.gr/2012/12/blog-post_7247.html|access-date=3 November 2013|newspaper=[[Stochos]]|date=31 December 2012|language=el}}</ref> with party leader, [[Nikolaos Michaloliakos]] stating:
{{quote|For two thousand years, the Jews would say a wish during their festivals, "[[next year in Jerusalem]]", and ultimately after many centuries they managed to make it a reality. So I too conclude with a wish: Next year in [[Constantinople]], in [[Smyrna]], in [[Trabzon|Trebizond]]!|<ref name="stoxos.gr"/>}}
Michaloliakos criticized [[Thessaloniki]] mayor [[Yiannis Boutaris]] for wanting to name a street after Atatürk, who was born in the city when it was still part of the Ottoman Empire.<ref name="todayszaman1">{{Citation |title=Greek far-right leader vows to 'take back' İstanbul, İzmir |newspaper=Today's Zaman|date=15 June 2012 |url=http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |access-date=12 September 2012 | archive-url=https://web.archive.org/web/20131103095534/http://www.todayszaman.com/newsDetail_getNewsById.action?newsId=283673 |archive-date=3 November 2013}}</ref><ref name="smyrna">{{Cite web|url=https://www.hurriyetdailynews.com/greek-fuhrer-vows-to-take-back-izmir-after-istanbul-23248|title=Greek 'Führer' vows to 'take back İzmir' after Istanbul|website=Hürriyet Daily News}}</ref>
In January 2013, a group of Golden Dawn supporters attacked the car of Turkish [[consul (representative)|consul-general]] Osman İlhan Şener and hurled insults at Atatürk, during an [[Anti-Turkism|anti-Turkey]] protest in [[Komotini]].<ref name=komotiniAttack>{{cite web|title=Yunanistan'da Türk konsolosun aracına saldırı|url=https://www.ntvmsnbc.com/id/25412725|publisher=NTVMSNBC|access-date=10 January 2013|language=tr}}</ref>
Mihaloliakos has also called for the "liberation"{{citation needed|date=March 2021}} of Northern Epirus. Golden Dawn and its former Cypriot counterpart [[ELAM (Cyprus)|ELAM]] support enosis.
In 2015, close to 100 Golden Dawn members and leaders were arrested on a range of charges, including murder and racketeering. In 2019, the party's level of support, slumped to less than 2%. In October 2020, most of Golden Dawn's leadership was convicted, including Michaloliakos. As of 2023, the party, which never enjoyed electoral support above 10% of the popular vote, now has no remaining members in either the Hellenic or European Parliament.<ref>Gatopoulos, Derek; Becatoros, Elena (7 October 2020). "Greek court rules Golden Dawn party criminal organization". Associated Press. Retrieved January 3, 2020.</ref>
== See also ==
{{Portal|Greece}}
* [[Greek diaspora]]
* [[Northern Epirus]]
* [[Autonomous Republic of Northern Epirus]]
* [[Greece during World War I]]
* [[Occupation of Constantinople]]
* [[Irredentism]]
* [[Zone of Smyrna]]
* [[Republic of Pontus]]
*
* [[Georgios Grivas]]
* [[Foreign relations of Greece]]
* [[Greek Plan]]
* [[Enosis]]
* [[Succession of the Roman Empire]]
==References==
{{Reflist|2}}
{{Balkan Wars}}
{{Megali Idea}}
{{Greek nationalism}}
{{Irredentism}}
{{Pan-nationalist concepts}}
{{Stateless nationalism in Europe}}
[[Category:Megali Idea| ]]
[[Category:National unifications]]
[[Category:Foreign relations of Greece]]
[[Category:Greece–Turkey relations]]
[[Category:History of modern Greece]]
[[Category:19th century in the Ottoman Empire]]
[[Category:Greek nationalism]]
[[Category:Nationalist movements in Europe]]
[[Category:Pan-nationalism]]
[[Category:Political history of Greece]]
[[Category:Political movements of the Ottoman Empire]]
f45ac96163cdb251665c56e33fbee9b5df193b2a
Template:Citation needed
10
1084
2368
2367
2023-10-01T14:19:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Citation_needed]]
wikitext
text/x-wiki
{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B=
{{Fix
|name={{{name|Citation needed}}}
|link=Wikipedia:Citation needed
|text=citation needed
|class=Template-Fact
|title={{{reason|This claim needs references to reliable sources.}}}
|date={{{date|}}}
|cat=[[Category:All articles with unsourced statements]]
|cat-date=Category:Articles with unsourced statements
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages containing citation needed template with unsupported parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Citation needed]] with unknown parameter "_VALUE_"|ignoreblank=y| date | name | reason }}}}<noinclude>
{{Documentation}}
</noinclude>
0da00647cf516584566df3fd518b1d55696e4b25
Template:Category handler
10
1085
2370
2369
2023-10-01T14:20:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Category_handler]]
wikitext
text/x-wiki
{{#invoke:Category handler|main}}<noinclude>
{{documentation}}
<!-- Add categories to the /doc subpage, and interwikis to Wikidata. -->
</noinclude>
d14e9f545cf1833acbe174ae70b615c39b18cf63
Template:Fix
10
1086
2372
2371
2023-10-01T14:20:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Fix]]
wikitext
text/x-wiki
{{#switch:{{{subst|¬}}}
|¬={{category handler
|template=[[Category:Templates needing substitution checking]]
|nocat={{{nocat|<noinclude>true</noinclude>}}}
}}
|SUBST=[[Category:Pages with incorrectly substituted templates]]
}}{{Category handler
|main={{Fix/category
|cat-date={{{cat-date|}}}
|cat={{{cat|}}}
|cat-date2={{{cat-date2|}}}
|cat2={{{cat2|}}}
|cat-date3={{{cat-date3|}}}
|cat3={{{cat3|}}}
|date={{{date|}}}
}}
|template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}}
|subpage=no
}}{{#if:{{{text|}}}
|<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">[<i>{{#if:{{{pre-text|}}}
|{{{pre-text}}} 
}}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:string|replace|source={{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}| ({{{date}}})}}}}|pattern=" |replace=" |plain=true}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}}
| {{{post-text}}}
}}</i>]</sup>|{{{special|}}}
}}<noinclude>
{{Documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
64d5219edf0f07567b3006bfc9681f9408b164b0
Template:Quote box
10
1087
2374
2373
2023-10-01T14:20:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Quote_box]]
wikitext
text/x-wiki
<templatestyles src="Template:Quote_box/styles.css" /><div class="quotebox pullquote {{#switch: {{lc:{{{align|}}}}}
| center = centered
| left = floatleft
| none =
| floatright
}} {{{class|}}}" style="
{{#if:{{{width|}}} |width:{{{width}}};}}
{{#ifeq:{{{border}}}|none|border:none;|{{#if:{{{border|}}}|border-width: {{{border}}}}};}}
{{#if:{{{fontsize|}}}|font-size: {{{fontsize}}};}}
{{#if:{{{bgcolor|}}}|background-color: {{#ifeq:{{{bgcolor|}}}|none|transparent|{{{bgcolor}}}}};}}
{{{style|}}}">
{{#if:{{{title|}}}
|<div class="quotebox-title {{{tclass|}}}" style="
{{#if:{{{title_bg|{{{bgcolor|}}}}}}|background-color: {{#ifeq:{{{title_bg|{{{bgcolor}}}}}}|none|transparent|{{{title_bg|{{{bgcolor}}}}}}}};}}
{{#if:{{{title_fnt|}}}|color: {{{title_fnt}}};}}
{{{tstyle|}}}">{{{title}}}</div>
}}
<blockquote class="quotebox-quote {{main other||{{#if:{{{quoted|}}}|quoted}}}} {{#switch: {{lc:{{{qalign|{{{halign|left}}}}}}}}
|right = right-aligned
|center = center-aligned
|left-aligned
}} {{{qclass|}}}" style="
{{{qstyle|}}}">
{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}
</blockquote>
{{#if:{{{author|{{{source|}}}}}}{{{2|}}}{{{3|}}}|<cite class="{{#switch: {{lc:{{{salign|{{{qalign|{{{halign|left}}} }}} }}} }}
|right = right-aligned
|center = center-aligned
|left-aligned
}}" style="{{{sstyle|}}}"><!--Manually inserted dashes will need to be removed from uses of the template first, I guess, then enable this:--><!--— -->{{{author|{{{2|}}}}}}{{#if:{{{author|}}}{{{2|}}}|{{#if:{{{source|}}}{{{3|}}}|<!--Display comma-space only if both cite parameters are present.-->, }}}}{{{source|{{{3|}}}}}}</cite>}}
</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using quote box with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Quote box]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | align | author | bgcolor | border | class | content | fontsize | halign | qalign | qclass | qstyle | quote | quoted | quotetext | salign | source | sstyle | style | tclass | text | title | title_bg | title_fnt | tstyle | width }}<noinclude>
{{Documentation}}
</noinclude>
2aa78cc6cbf64f216a9f86c2027aee9ba5b873e1
Template:Quote box/styles.css
10
1088
2376
2375
2023-10-01T14:20:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Quote_box/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.quotebox {
background-color: #F9F9F9;
border: 1px solid #aaa;
box-sizing: border-box;
padding: 10px;
font-size: 88%;
max-width: 100%;
}
.quotebox.floatleft {
margin: .5em 1.4em .8em 0;
}
.quotebox.floatright {
margin: .5em 0 .8em 1.4em;
}
.quotebox.centered {
overflow: hidden;
position: relative;
margin: .5em auto .8em auto;
}
.quotebox.floatleft span,
.quotebox.floatright span {
font-style: inherit;
}
.quotebox > blockquote {
margin: 0;
padding: 0;
/* Styling from Minerva */
border-left: 0;
font-family: inherit;
font-size: inherit;
}
.quotebox-title {
background-color: #F9F9F9;
text-align: center;
font-size: 110%;
font-weight: bold;
}
.quotebox-quote > :first-child {
margin-top: 0;
}
.quotebox-quote:last-child > :last-child {
margin-bottom: 0;
}
.quotebox-quote.quoted:before {
font-family:'Times New Roman',serif;
font-weight:bold;
font-size: large;
color: gray;
content: ' “ ';
vertical-align: -45%;
line-height: 0;
}
.quotebox-quote.quoted:after {
font-family:'Times New Roman',serif;
font-weight:bold;
font-size: large;
color: gray;
content: ' ” ';
line-height: 0;
}
.quotebox .left-aligned {
text-align: left;
}
.quotebox .right-aligned {
text-align: right;
}
.quotebox .center-aligned {
text-align: center;
}
.quotebox .quote-title,
.quotebox .quotebox-quote {
display: block;
}
.quotebox cite {
display:block;
font-style:normal;
}
@media screen and (max-width:640px) {
.quotebox {
/*override inline styles */
width: 100% !important;
margin: 0 0 .8em !important;
float: none !important;
}
}
c6ed92a92ff9774be727e66a8b57231cb39829ff
Template:Fix/category
10
1089
2378
2377
2023-10-01T14:20:15Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Fix/category]]
wikitext
text/x-wiki
<noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}}
|[[{{{cat-date}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}}
|[[{{{cat-date2}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date2}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}}
|[[{{{cat-date3}}} {{#if:{{{date|}}}
|from {{{date}}}
}}]]{{#if:{{{date|}}}
|{{#ifexist:{{{cat-date3}}} from {{{date}}}|
|[[Category:Articles with invalid date parameter in template]]
}}
}}
}}
8f0a79cdee91c3d967a6d70cf7bfab4093b3d6ae
Template:Comma separated entries
10
1090
2380
2379
2023-10-01T14:20:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Comma_separated_entries]]
wikitext
text/x-wiki
{{<includeonly>safesubst:</includeonly>#invoke:Separated entries|comma}}<noinclude>
{{documentation}}
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. -->
</noinclude>
f9811ed089bab742e4aad8b8463eddcc7607f062
Template:Citation
10
1091
2382
2381
2023-10-01T14:20:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Citation]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=citation
}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
682134a60c143dec260ce779777d3be2d4c94eaa
Template:Catalog lookup link
10
1092
2384
2383
2023-10-01T14:20:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Catalog_lookup_link]]
wikitext
text/x-wiki
{{#invoke:Catalog lookup link|main}}<noinclude>
{{documentation}}
</noinclude>
90f05b4ea15a4a853b2f27af3c21c60276189820
Module:Catalog lookup link
828
1093
2386
2385
2023-10-01T14:20:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Catalog_lookup_link]]
Scribunto
text/plain
--[[
|1=, |2=, |3=, |4=, |5=, |6=, |7=, |8=, |9=: Optional unnamed parameters for 0 to 9 items to be listed.
Whitespace is trimmed off both ends and the strings are urlencoded as if they were query strings.
|article-link=: Optional Wikipedia article name to link to.
|article-name=: Optional alternative text to be displayed for |article-link= link in front of catalog link.
If not specified, |article-link= is used for display as well. If both parameters are not specified, the prefix is omitted completely.
|article-suffix=: Optional symbol to be displayed after article name or link (f.e. ":"; omitted, if not defined).
|link-prefix=: Optional prefix portion of url to external catalog item(s).
|link-suffix=: Optional suffix portion of url to external catalog item(s).
|item-prefix=: Optional text displayed in front of each external link (omitted, if not defined)
|item-suffix=: Optional text displayed immediately after each external link (omitted, if not defined)
|list-separator=: Optional alternative separator displayed between list items (default: ", ", if not specified). Whitespace must be encoded.
|list-leadout=: Optional alternative leadout text displayed between the last two list items (f.e. "and", "or", "as well as", etc., default is the |list-separator= or ", ".)
|leadout-suffix=: Optional alternative suffix text of the leadout (see |list-leadout=) displayed between the last two list items.
This gets added in front of the last list item instead of the default whitespace which is added without this parameter.
This may be necessary if |list-separator= is used not only to define the list separator but also parts of the item prefix
(except for the first one). (At present, this is used only to cope with format oddities of the {{MR}} template.)
new parameters that support access icons:
|allowed_icons= – comma-separated list of keywords: free, limited, registration, subscription, none, all (default; 'all' implied when this parameter empty or omitted)
the icons specified in the following parameters are checked agains the list in |allowed-icons=; not in the list? not displayed
|url-access-all= – applies specified icon to all items in the list; accepted keywords: free, limited, registration, subscription;
|url-accessn= – applies specified icon to item n of the list (the nth positional parameter); accepted keywords: free, limited, registration, subscription;
]]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local lock_icons = { --icon classes are defined in Module:Citation/CS1/styles.css
['free'] = {'id-lock-free', 'Freely accessible'},
['registration'] = {'id-lock-registration', 'Free registration required'},
['limited'] = {'id-lock-limited', 'Free access subject to limited trial, subscription normally required'},
['subscription'] = {'id-lock-subscription', 'Paid subscription required'},
}
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[=[-------------------------< M A K E _ L A B E L >----------------------------------------------------------
Makes a wikilinked or plain text label from arguments; when both link and display text is provided, makes a
wikilink in the form [[L|D]]; if only link is provided, makes a wikilinked label in the form [[L]]; if only display
is provided, makes a plain-text label; if neither are provided makes a label from suffix, returns an empty string else.
]=]
local function make_label (link, display, suffix)
local label = '';
if is_set (link) then
if is_set (display) then
label = table.concat ({'[[', link, '|', display, ']]'}); -- make [[L|D]] wikilinked label
else
label = table.concat ({'[[', link, ']]'}); -- make [[L]] wikilinked label
end
elseif is_set (display) then
label = display; -- plain-text label
end
if is_set (label) then
return table.concat ({label, suffix, ' '}); -- assemble the complete label
else
return suffix; -- no space after suffix if no label
end
end
--[[--------------------------< I C O N _ I N D E X _ G E T >--------------------------------------------------
returns index into lock_icons[] if value assigned to |url-access= or |url-access-all= is a valid icon selector
(free, limited, registration, subscription)
icon selection may be limited to a subset of the icons with:
|allow_icons=<comma-separated list of allowed icons>
<comma-separated list of allowed icons> may be any of the keywords: free, limited, registration, subscription, none, all
keyword 'all' is default condition; 'all' is implied when |allowed=icons= is empty or omitted
keyword 'none' for use with identifiers where icons are inappropriate (isbn, issn, oclc)
Templates using this module should set:
|allow_icons=free for most identifiers;
|allow_icons=none for isbn, issn, oclc, etc
|url-access= is alias of |url-access1=
]]
local function icon_index_get (args, k)
local icon;
local param_name = (1 == k and is_set (args['url-access']) and 'url-access') or table.concat ({'url-access', k}); -- make an enumerated parameter name
if is_set (args['url-access-all']) and lock_icons[args['url-access-all']] then -- if set and valid
icon = args['url-access-all']; -- tentatively
elseif is_set (args[param_name]) and lock_icons[args[param_name]] then -- if set and valid
icon = args[param_name]; -- tentatively
else
return nil; -- neither |url-access-all= nor |url-accessn= set so return nil
end
if args['allow_icons'] and args['allow_icons']:find ('none') then -- if 'none' keyword is present
return nil; -- icons display not allowed
end
if not is_set (args['allow_icons']) or args['allow_icons']:find ('all') or args['allow_icons']:find (icon) then --if all allowed or specified icon is allowed
return icon; -- return selected icon as index into icon table
end
end
--[[--------------------------< M A I N >----------------------------------------------------------------------
Template entrypoint to this module; arguments come primarily from the parent frame though in templates that use
this module, |allowed-icons= is typically set, if needed, in the {{#invoke:}}.
]]
local function main (frame)
local args = getArgs (frame);
local out_text = '';
if is_set(args[1]) then
local result = {};
local label;
local article_suffix = args['article-suffix'] or args['article-postfix'] or '';
local link_prefix = args['link-prefix'] or '';
local link_suffix = args['link-suffix'] or args['link-postfix'] or '';
local item_prefix = args['item-prefix'] or '';
local item_suffix = args['item-suffix'] or args['item-postfix'] or '';
local list_separator = args['list-separator'] or ', ';
local leadout_suffix = args['leadout-suffix'] or args['leadout-postfix'] or ' ';
local list_leadout;
local icon_index;
if is_set (args['list-leadout']) then
list_leadout = table.concat ({
mw.ustring.gsub (args['list-leadout'], '^(%a)', ' %1'), -- insert leading space if first character is a letter
leadout_suffix,
});
else
list_leadout = '';
end
label = make_label (args['article-link'], args['article-name'], article_suffix);
for k, item in ipairs (args) do -- for each of the positional parameters
item = mw.text.trim (item); -- remove extraneous whitespace
if is_set (link_prefix) then -- if there is link prefix...
item = table.concat ({ -- create an external link item
'[', -- open ext link markup
link_prefix, -- url prefix
mw.uri.encode (item), -- item is part of url
link_suffix, -- url suffix
' ', -- required space between url and label
item_prefix, -- label prefix
item, -- item as label
item_suffix, -- item suffix
']' -- close ext link markup
});
icon_index = icon_index_get (args, k); -- set if icon specified and allowed for this item; nil else
if icon_index then
item = table.concat ({ -- add access icon markup to this item
'<span class="', -- open the opening span tag; icon classes are defined in Module:Citation/CS1/styles.css
lock_icons[icon_index][1], -- add the appropriate lock icon class
'" title="', -- and the title attribute
lock_icons[icon_index][2], -- for an appropriate tool tip
'">', -- close the opening span tag
item,
'</span>', -- and close the span
});
end
else
item = table.concat ({ -- create an unlinked item
item_prefix, -- label prefix
item, -- item as label
item_suffix, -- item suffix
});
end
table.insert (result, item); -- add the item to the result list
end
out_text = frame:callParserFunction('#tag', {'templatestyles', '', src=table.concat({
'Module:Citation/CS1',
mw.ustring.match(frame:getTitle(), '/sandbox$') or '',
'/styles.css',
})});
if is_set (args['list-leadout']) then
out_text = table.concat ({out_text, label, mw.text.listToText (result, list_separator, list_leadout)});
else
out_text = table.concat ({out_text, label, table.concat (result, list_separator)});
end
end --is_set (args[1])
return out_text
end
return {main = main};
21695b34c26d41971bb011f905ec0f995ecc28b7
Module:Check isxn
828
1094
2388
2387
2023-10-01T14:20:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Check_isxn]]
Scribunto
text/plain
--[[
This code is derived from the ISXN validation code at Module:Citation/CS1. It allows validating ISBN,
ISMN, and ISSN without invoking a citation template.
]]
local p = {}
--[[--------------------------< E R R _ M S G _ S U P L _ T >--------------------------------------------------
error message supplements for check_isbn(); adapted from a similarly named table at Module:Citation/CS1/Configuration
]]
local err_msg_supl_t = {
['char'] = 'invalid character',
['check'] = 'checksum',
['form'] = 'invalid form',
['group'] = 'invalid group id',
['length'] = 'length',
['prefix'] = 'invalid prefix',
}
--[[--------------------------< IS _ V A L I D _ I S X N >-----------------------------------------------------
ISBN-10 and ISSN validator code calculates checksum across all isbn/issn digits including the check digit. ISBN-13 is checked in check_isbn().
If the number is valid the result will be 0. Before calling this function, issbn/issn must be checked for length and stripped of dashes,
spaces and other non-isxn characters.
]]
local function is_valid_isxn (isxn_str, len)
local temp = 0;
isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58
len = len+1; -- adjust to be a loop counter
for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum
if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58)
temp = temp + 10*( len - i ); -- it represents 10 decimal
else
temp = temp + tonumber( string.char(v) )*(len-i);
end
end
return temp % 11 == 0; -- returns true if calculation result is zero
end
--[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >----------------------------------------------
ISBN-13 and ISMN validator code calculates checksum across all 13 isbn/ismn digits including the check digit.
If the number is valid, the result will be 0. Before calling this function, isbn-13/ismn must be checked for length
and stripped of dashes, spaces and other non-isxn-13 characters.
]]
local function is_valid_isxn_13 (isxn_str)
local temp=0;
isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39
for i, v in ipairs( isxn_str ) do
temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit
end
return temp % 10 == 0; -- sum modulo 10 is zero when isbn-13/ismn is correct
end
--[[--------------------------< C H E C K _ I S B N >------------------------------------------------------------
Determines whether an ISBN string is valid. Implements an ISBN validity check for {{ISBN}}, {{ISBNT}}, {{SBN}}, and
{{Format ISBN}}.
]]
local function check_isbn (isbn_str, frame)
local function return_result (check, err_type) -- local function to render the various error returns
if not check then -- <check> false when there is an error
local template = ((frame.args.template_name and '' ~= frame.args.template_name) and frame.args.template_name) or nil; -- get template name
if not template then
return '<span class="error" style="font-size:100%"> calling template requires template_name parameter</span>';
end
local out_t = {'<span class="error" style="font-size:100%">'}; -- open the error message span
table.insert (out_t, ' Parameter error in {{[[Template:'); -- open 'template' markup; open wikilink with Template namespace
table.insert (out_t, template); -- template name wikilink
table.insert (out_t, '|'); -- its pipe
table.insert (out_t, template); -- wikilink label
table.insert (out_t, ']]}}: '); -- close wikilink; close 'template' markup
table.insert (out_t, err_type); -- type of isbn error
table.insert (out_t, '</span>') -- close the error message span
if 0 == mw.title.getCurrentTitle().namespace then -- categorize only when this template is used in mainspace
local category = table.concat ({'[[Category:Pages with ISBN errors]]'});
table.insert (out_t, category);
end
return table.concat (out_t); -- make a big string and done
end
return ''; -- no error, return an empty string
end
if nil ~= isbn_str:match ('[^%s-0-9X]') then
return return_result (false, err_msg_supl_t.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X
end
local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace
local len = id:len();
if len ~= 10 and len ~= 13 then
return return_result (false, err_msg_supl_t.length); -- fail if incorrect length
end
if len == 10 then
if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position
return return_result (false, err_msg_supl_t.form);
end
if id:find ('^63[01]') then -- 630xxxxxxx and 631xxxxxxx are (apparently) not valid isbn group ids but are used by amazon as numeric identifiers (asin)
return return_result (false, err_msg_supl_t.group); -- fail if isbn-10 begins with 630/1
end
return return_result (is_valid_isxn (id, 10), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum)
else
if id:match ('^%d+$') == nil then
return return_result (false, err_msg_supl_t.char); -- fail if ISBN-13 is not all digits
end
if id:match ('^97[89]%d*$') == nil then
return return_result (false, err_msg_supl_t.prefix); -- fail when ISBN-13 does not begin with 978 or 979
end
if id:match ('^9790') then
return return_result (false, err_msg_supl_t.group); -- group identifier '0' is reserved to ISMN
end
return return_result (is_valid_isxn_13 (id), err_msg_supl_t.check); -- pass if isbn-10 is numerically valid (checksum)
end
end
--[[--------------------------< C H E C K _ I S M N >------------------------------------------------------------
Determines whether an ISMN string is valid. Similar to isbn-13, ismn is 13 digits begining 979-0-... and uses the
same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf
section 2, pages 9–12.
]]
local function check_ismn (id, error_string)
local text;
local valid_ismn = true;
id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the ismn
if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ismn must be 13 digits and begin 9790
valid_ismn = false;
else
valid_ismn=is_valid_isxn_13 (id); -- validate ismn
end
return valid_ismn and '' or error_string
end
--[[--------------------------< I S S N >----------------------------------------------------------------------
Validate and format an issn. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four
digits with a space. When that condition occurred, the resulting link looked like this:
|issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link
This code now prevents that by inserting a hyphen at the issn midpoint. It also validates the issn for length and makes sure that the checkdigit agrees
with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check issn
error message.
]]
local function check_issn(id, error_string)
local issn_copy = id; -- save a copy of unadulterated issn; use this version for display if issn does not validate
local text;
local valid_issn = true;
if not id:match ('^%d%d%d%d%-%d%d%d[%dX]$') then
return error_string;
end
id=id:gsub( "[%s-–]", "" ); -- strip spaces, hyphens, and endashes from the issn
if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the issn: 8 digits long, containing only 0-9 or X in the last position
valid_issn=false; -- wrong length or improper character
else
valid_issn=is_valid_isxn(id, 8); -- validate issn
end
return valid_issn and '' or error_string
end
------------------------------< E N T R Y P O I N T S >--------------------------------------------------====
function p.check_isbn(frame)
return check_isbn(frame.args[1] or frame:getParent().args[1], frame)
end
function p.check_ismn(frame)
return check_ismn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error')
end
function p.check_issn(frame)
return check_issn(frame.args[1] or frame:getParent().args[1], frame.args['error'] or frame:getParent().args['error'] or 'error')
end
return p
177daafde5a0a7d4292a7ae725b9db16f2079e4e
Template:ISBN
10
1095
2390
2389
2023-10-01T14:20:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:ISBN]]
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{Catalog lookup link
|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|
article-link={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||{{#ifeq:{{yesno-yes|{{{link|}}}}}|no||ISBN (identifier)}}}}
|article-name={{#ifeq:{{yesno-no|{{{plainlink|}}}}}|yes||ISBN}}
|link-prefix=[Special:BookSources/
|item-prefix={{!}}
|item-postfix=]
|list-leadout={{{leadout|}}}
}}{{#ifeq:{{yesno-no|{{{invalid1|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{1|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{2|}}}
|{{#ifeq:{{yesno-no|{{{invalid2|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{2|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{3|}}}
|{{#ifeq:{{yesno-no|{{{invalid3|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{3|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{4|}}}
|{{#ifeq:{{yesno-no|{{{invalid4|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{4|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{5|}}}
|{{#ifeq:{{yesno-no|{{{invalid5|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{5|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{6|}}}
|{{#ifeq:{{yesno-no|{{{invalid6|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{6|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{7|}}}
|{{#ifeq:{{yesno-no|{{{invalid7|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{7|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{8|}}}
|{{#ifeq:{{yesno-no|{{{invalid8|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{8|}}}|template_name={{{template_name|ISBN}}}}}}}{{#if:{{{9|}}}
|{{#ifeq:{{yesno-no|{{{invalid9|}}}}}|yes|{{main other|[[Category:Pages with listed invalid ISBNs]]}}|{{#invoke:check isxn|check_isbn|{{{9|}}}|template_name={{{template_name|ISBN}}}}}}}}}}}}}}}}}}}}}}}|
{{error-small|Parameter error in {{tl|ISBN}}: Missing [[ISBN]].}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using ISBN template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:ISBN]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | invalid1 | invalid2 | invalid3 | invalid4 | invalid5 | invalid6 | invalid7 | invalid8 | invalid9 | leadout | link | plainlink |template_name }}</includeonly><noinclude>{{documentation}}<!-- Add categories and interwiki lines to the /doc subpage, not here! --></noinclude>
113f1e5cb33437d5e9ada6d1e37a951670fae7d9
Template:Interlanguage link
10
1096
2392
2391
2023-10-01T14:20:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Interlanguage_link]]
wikitext
text/x-wiki
<includeonly>{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#if:{{{italic|}}}{{{italics|}}}|''}}[[{{{1}}}{{safesubst:#if:{{{lt|}}}|{{safesubst:!}}{{{lt}}}}}]]{{safesubst:#if:{{{italic|}}}{{{italics|}}}| ''}}{{safesubst:#if:{{{quote|}}}{{{quotes|}}}|"}}{{safesubst:#ifeq:{{subst:Substcheck}}|SUBST||<!--
-->{{#if:{{#if:{{{preserve|{{{display|}}}}}}|1|{{#ifexist:{{{1|}}}|{{#invoke:redirect|isRedirect|{{{1|}}}}}|1}}}}<!--
-->
|<{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}} class="noprint" style="{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|ib|font-size:100%;|sup|super|sub=|font-size:85%;}} font-style: normal; {{#if:{{{nobold|}}}|font-weight: normal;}}"> [{{#if:{{{WD|{{{wd|}}}}}}
| [[d:Special:EntityPage/{{{WD|{{{wd}}}}}}#sitelinks-wikipedia|<span title=""{{{1}}}" in other languages">{{#if:{{{short|{{{s|}}}}}}|d|Wikidata}}</span>]]<!--
-->{{main other||{{#if:{{{reasonator|}}}|<nowiki />; [https://tools.wmflabs.org/reasonator/?q={{urlencode:{{{WD|{{{wd}}}}}}}} Reasonator]}}}}
| {{Separated entries|separator=; 
| {{#if:{{{2|}}}|[[:{{{2}}}:{{#if:{{{3|}}}|{{{3}}}|{{{1}}}}}|{{{2}}}]]}}
| {{#if:{{{4|}}}|[[:{{{4}}}:{{#if:{{{5|}}}|{{{5}}}|{{{1}}}}}|{{{4}}}]]}}
| {{#if:{{{6|}}}|[[:{{{6}}}:{{#if:{{{7|}}}|{{{7}}}|{{{1}}}}}|{{{6}}}]]}}
| {{#if:{{{8|}}}{{{10|}}}{{{12|}}}|{{Separated entries|separator=; 
| {{#if:{{{8|}}}|[[:{{{8}}}:{{#if:{{{9|}}}|{{{9}}}|{{{1}}}}}|{{{8}}}]]}}
| {{#if:{{{10|}}}|[[:{{{10}}}:{{#if:{{{11|}}}|{{{11}}}|{{{1}}}}}|{{{10}}}]]}}
| {{#if:{{{12|}}}|[[:{{{12}}}:{{#if:{{{13|}}}|{{{13}}}|{{{1}}}}}|{{{12}}}]]}}
| {{#if:{{{14|}}}|[[:{{{14}}}:{{#if:{{{15|}}}|{{{15}}}|{{{1}}}}}|{{{14}}}]]}}
| {{#if:{{{16|}}}|[[:{{{16}}}:{{#if:{{{17|}}}|{{{17}}}|{{{1}}}}}|{{{16}}}]]}}
| {{#if:{{{18|}}}|[[:{{{18}}}:{{#if:{{{19|}}}|{{{19}}}|{{{1}}}}}|{{{18}}}]]}}
| {{#if:{{{20|}}}|[[:{{{20}}}:{{#if:{{{21|}}}|{{{21}}}|{{{1}}}}}|{{{20}}}]]}}
| {{#if:{{{22|}}}|[[:{{{22}}}:{{#if:{{{23|}}}|{{{23}}}|{{{1}}}}}|{{{22}}}]]}}
| {{#if:{{{24|}}}|[[:{{{24}}}:{{#if:{{{25|}}}|{{{25}}}|{{{1}}}}}|{{{24}}}]]}}
}}}}
| {{#if:{{{reasonator|}}}|[https://tools.wmflabs.org/reasonator/test/?find={{urlencode:{{{1}}}}} Reasonator search]}}
}}}}]</{{#switch:{{{vertical-align|{{{valign|{{{v|}}}}}}}}}|sup|super=sup|sub=sub|span}}>
| [[Category:Interlanguage link template existing link]]<nowiki />
}}}}</includeonly>{{main other|{{#if:{{{preserve|{{{display|}}}}}}|[[Category:Interlanguage link template forcing interwiki links]]}}}}<noinclude>
{{documentation}}
</noinclude>
4c50a05de0c11d15b5feac4c7e31ab97094984bb
Template:Separated entries
10
1097
2394
2393
2023-10-01T14:20:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Separated_entries]]
wikitext
text/x-wiki
{{{{{|safesubst:}}}#invoke:Separated entries|main}}<noinclude>
{{Documentation|Module:Separated entries/doc}}
</noinclude>
f3648d40ca0c91acbdf52ad7f89c181d7f691251
Template:Military navigation
10
1098
2396
2395
2023-10-01T14:20:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Military_navigation]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Military navigation|main}}</includeonly><noinclude>
{{Documentation|Wikipedia:WikiProject Military history/Military navigation}}
{{Sandbox other||
[[Category:Navigational box wrapper templates]]
[[Category:Military navigational boxes| ]]
}}</noinclude>
10eb2cd55540aab60dd8603c113e21995e9bb545
Module:Military navigation
828
1099
2398
2397
2023-10-01T14:20:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Military_navigation]]
Scribunto
text/plain
local p = { }
local Navbox = require('Module:Navbox')
local Styles = require('Module:WPMILHIST Infobox style')
local function isblank(s)
return (not s) or s == ''
end
local function isnotblank(s)
return s and s ~= ''
end
function p.main(frame)
local args = { }
local pargs = frame:getParent().args
local sargs = {}
local tcats = ''
-- process bodystyle and titlestyle
if (pargs['style'] or '') == 'wide' then
args['titlestyle'] = Styles['nav_box_wide_header']
args['bodystyle'] = Styles['nav_box_wide']
else
args['titlestyle'] = Styles['nav_box_header']
if (pargs['border'] or '') == 'child' or
(pargs['border'] or '') == 'subgroup' then
args['bodystyle'] = Styles['nav_box_child']
tcats = tcats .. '[[Category:Pages using military navigation subgroups without wide style]]'
else
args['bodystyle'] = Styles['nav_box']
end
end
sargs['titlestyle'] = 1
sargs['bodystyle'] = 1
-- process groupstyle, abovestyle, belowstyle
args['groupstyle'] = Styles['nav_box_label'] .. (pargs['groupstyle'] or '')
sargs['groupstyle'] = 1
args['abovestyle'] = Styles['nav_box_label'] .. (pargs['abovestyle'] or '')
sargs['abovestyle'] = 1
args['belowstyle'] = Styles['nav_box_label'] .. (pargs['belowstyle'] or '')
sargs['belowstyle'] = 1
-- process oddstyle, evenstyle
args['oddstyle'] = isnotblank(pargs['odd_color'])
and ('background:' .. pargs['odd_color']) or nil
sargs['oddstyle'] = 1
args['evenstyle'] = isnotblank(pargs['even_color'])
and ('background:' .. pargs['even_color']) or nil
sargs['evenstyle'] = 1
-- process name and rawname
args['name'] = (isnotblank(pargs['name']) and pargs['name']) or pargs['rawname']
if isblank(args['name']) then args['navbar'] = 'plain' end
sargs['name'] = 1
sargs['rawname'] = 1
-- copy the remaining args
for k, v in pairs(pargs) do
if v and v ~= '' and sargs[k] == nil then
args[k] = v
end
end
-- add allow wrap
if args['title'] and (pargs['style'] or '') ~= 'wide' then
if not mw.ustring.match(args['title'], '<span class="wrap">') then
-- probably a more efficient way to match 15 or more characters
local m = '[^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|][^%[%]<>|]'
m = m .. m .. m
args['title'] = mw.ustring.gsub(args['title'],
'%[%[(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%1</span>]]')
args['title'] = mw.ustring.gsub(args['title'],
'%[%[([^%[%]<>|]*)|(' .. m .. '[^%[%]<>|]*)%]%]',
'[[%1|<span class="wrap">%2</span>]]')
end
end
-- add navbox-vertical for non-wide format
if (pargs['style'] or '') ~= 'wide' then
args['bodyclass'] = 'navbox-vertical' .. (args['bodyclass'] and (' ' .. args['bodyclass']) or '')
end
return tcats .. Navbox._navbox(args)
end
return p
26dd1b8952c65fbc4d05e418e8d7c3daed93fa49
Module:WPMILHIST Infobox style
828
1100
2400
2399
2023-10-01T14:20:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:WPMILHIST_Infobox_style]]
Scribunto
text/plain
local retval = {
main_box_raw_auto_width = 'border-spacing:2px;',
header_raw = 'background-color:#C3D6EF;text-align:center;vertical-align:middle;font-size:110%;',
sub_header_raw = 'background-color:#DCDCDC;text-align:center;vertical-align:middle;',
header_color = 'background-color:#C3D6EF;',
nav_box = 'margin:0;float:right;clear:right;width:25.5em;margin-bottom:0.5em;margin-left:1em;',
nav_box_child = 'margin:0;float:right;clear:right;width:25em;margin-bottom:0.5em;',
nav_box_wide = '',
nav_box_header = 'background-color:#C3D6EF;',
nav_box_wide_header = 'background-color:#C3D6EF;',
nav_box_label = 'background-color:#DCDCDC;',
image_box_raw = 'text-align:center;border-bottom:1px solid #aaa;line-height:1.5em;',
image_box_plain_raw = 'text-align:center;line-height:1.5em;',
internal_border = '1px dotted #aaa;',
section_border = '1px solid #aaa;'
}
retval.main_box_raw = 'width:25.5em;' .. retval.main_box_raw_auto_width
retval.header_bar = 'style="' .. retval.header_raw .. '"'
retval.sub_header_bar = 'style="' .. retval.sub_header_raw .. '"'
retval.image_box = 'style="' .. retval.image_box_raw .. '"'
retval.image_box_plain = 'style="' .. retval.image_box_plain_raw .. '"'
return retval
0f9ea47bc17e40cdabbae6de54f63e40ae502f8e
Template:Quote
10
1101
2402
2401
2023-10-01T14:20:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Quote]]
wikitext
text/x-wiki
#REDIRECT [[Template:Blockquote]]
{{Redirect category shell|
{{R from move}}
}}
405f136736cb7a6c3831adc68bce0bf0a7b18c45
Template:Greater color contrast ratio
10
1102
2404
2403
2023-10-01T14:20:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Greater_color_contrast_ratio]]
wikitext
text/x-wiki
<includeonly>{{safesubst:#invoke:Color contrast|greatercontrast}}</includeonly><noinclude>
{{documentation}}
</noinclude>
eaba2f8ea92d1caa3afd9d70142b65215c23038d
Template:Legend
10
1103
2406
2405
2023-10-01T14:20:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Legend]]
wikitext
text/x-wiki
<includeonly><!--
--><templatestyles src="Legend/styles.css" /><!--
--><div class="legend"><!--
--><span class="legend-color mw-no-invert" style="<!--
-->{{#if:{{{border|}}}|border: {{{border}}};|{{#if:{{{outline|}}}|border: 1px solid {{{outline}}};}}}}<!--
-->{{#if:{{{1|}}}|{{greater color contrast ratio|{{{1}}}|white|black|css=y}}}}<!--
-->{{#if:{{{textcolor|}}}|color:{{{textcolor}}};}}<!--
-->{{#if:{{{size|}}}|font-size:{{{size}}};}}"><!--
-->{{#if:{{{text|}}}{{{alt|}}}
| <span class="legend-text" style="{{#if:{{{alt|}}}|color:{{{1|}}};}}font-family: monospace, monospace;">{{If empty|{{{alt|}}}|{{{text|}}}| }}</span>| }}<!--
--></span><!--
--> {{{2|}}}<!--
--></div><!--
--></includeonly><noinclude>
{{Documentation}}
</noinclude>
bbd1ff4b07414421f82b44f2eabe760b816e56e2
Template:Legend/styles.css
10
1104
2408
2407
2023-10-01T14:20:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Legend/styles.css]]
sanitized-css
text/css
/* {{pp-template}} */
.legend {
page-break-inside: avoid;
break-inside: avoid-column;
}
.legend-color {
display: inline-block;
min-width: 1.25em;
height: 1.25em;
line-height: 1.25;
margin: 1px 0;
text-align: center;
border: 1px solid black;
background-color: transparent;
color: black;
}
.legend-text {/*empty for now, but part of the design!*/}
f55cad65402533fc931db7fefc801536194952d7
Module:Portal/images/g
828
1105
2410
2409
2023-10-01T14:20:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Portal/images/g]]
Scribunto
text/plain
--[==[ This is the "G" list of portal image names. It contains a list of portal images for use with [[Module:Portal]]
-- for portal names that start with the letter "G". For aliases to existing portal names, and for portal names that
-- start with other letters, please use the appropriate page from the following list:
-- [[Module:Portal/images/a]] - for portal names beginning with "A".
-- [[Module:Portal/images/b]] - for portal names beginning with "B".
-- [[Module:Portal/images/c]] - for portal names beginning with "C".
-- [[Module:Portal/images/d]] - for portal names beginning with "D".
-- [[Module:Portal/images/e]] - for portal names beginning with "E".
-- [[Module:Portal/images/f]] - for portal names beginning with "F".
-- [[Module:Portal/images/h]] - for portal names beginning with "H".
-- [[Module:Portal/images/i]] - for portal names beginning with "I".
-- [[Module:Portal/images/j]] - for portal names beginning with "J".
-- [[Module:Portal/images/k]] - for portal names beginning with "K".
-- [[Module:Portal/images/l]] - for portal names beginning with "L".
-- [[Module:Portal/images/m]] - for portal names beginning with "M".
-- [[Module:Portal/images/n]] - for portal names beginning with "N".
-- [[Module:Portal/images/o]] - for portal names beginning with "O".
-- [[Module:Portal/images/p]] - for portal names beginning with "P".
-- [[Module:Portal/images/q]] - for portal names beginning with "Q".
-- [[Module:Portal/images/r]] - for portal names beginning with "R".
-- [[Module:Portal/images/s]] - for portal names beginning with "S".
-- [[Module:Portal/images/t]] - for portal names beginning with "T".
-- [[Module:Portal/images/u]] - for portal names beginning with "U".
-- [[Module:Portal/images/v]] - for portal names beginning with "V".
-- [[Module:Portal/images/w]] - for portal names beginning with "W".
-- [[Module:Portal/images/x]] - for portal names beginning with "X".
-- [[Module:Portal/images/y]] - for portal names beginning with "Y".
-- [[Module:Portal/images/z]] - for portal names beginning with "Z".
-- [[Module:Portal/images/other]] - for portal names beginning with any other letters. This includes numbers,
-- letters with diacritics, and letters in non-Latin alphabets.
-- [[Module:Portal/images/aliases]] - for adding aliases for existing portal names. Use this page for variations
-- in spelling and diacritics, etc., no matter what letter the portal begins with.
-- When adding entries, please use alphabetical order. The format of the images table entries is as follows:
-- ["portal name"] = "image.svg",
-- The portal name should be the name of your portal, in lower case. For example, the portal name for
-- "Portal:United Kingdom" would be "united kingdom". The image name should be capitalised normally, and the "File:"
-- namespace prefix should be omitted.
]==]
return {
["gabon"] = "Flag of Gabon.svg|border|link=|alt=flag",
["game theory"] = "Tictactoe-cgt-star.svg|link=|alt=icon",
["gaeilge"] = "Ireland smaller.svg|link=|alt=map",
["gaelic games"] = "GaelicGamesProjectLogo.png|link=|alt=icon",
["games"] = "Nuvola apps kbackgammon.png|alt=icon",
["gaming"] = "WPVG icon 2016.svg|link=|alt=",
["gardening"] = "France Loiret La Bussiere Potager 05.jpg|alt=icon",
["gastropods"] = "Grapevinesnail 01a.jpg|alt=icon",
["gene wiki"] = "Gene Wiki logo.png|link=|alt=",
["genocide"] = "GenocidePortalLogo(ESR)2.JPG|link=Genocide|alt=icon",
["geodesy"] = "Latitude and longitude graticule on an ellipsoid.svg|link=|alt=icon",
["geographical coordinates"] = "Earth clip art.svg|link=|alt=icon",
["geography"] = "Terra.png|link=|alt=icon",
["geography of india"] = "India physical map.svg|link=|alt=map",
["geology"] = "WikiProject Geology.svg|alt=icon",
["geophysics"] = "Geodynamo Between Reversals.gif|alt=icon",
["georgia (country)"] = "Flag of Georgia.svg|border|link=|alt=flag",
["georgia (u.s. state)"] = "Flag of Georgia (U.S. state).svg|border|link=|alt=flag",
["german"] = "German dialectal map.PNG|border|link=German language|alt=map",
["german empire"] = "Flag of the German Empire.svg|border|link=|alt=flag",
["germany"] = "Flag of Germany.svg|border|link=|alt=flag",
["ghana"] = "Flag of Ghana.svg|border|link=|alt=flag",
["gibraltar"] = "Flag of Gibraltar.svg|border|link=|alt=flag",
["gilbert and sullivan"] = "Pinaforeplaybill.jpg|link=|alt=",
["gilgit-baltistan"] = "Flag of Pakistan.svg|border|link=|alt=flag",
["glaciers"] = "Baltoro Glacier, Pakistan 2012.png|link=|alt=icon",
["global warming"] = "Change in Average Temperature.svg|alt=icon",
---Please do not add the file "Flag of Goa.svg" for Portal:Goa. This is due to the flag not being the offical flag and discussions on [[Template_talk:Portal#Goa_(2)]
["go"] = "GO game.png|alt=",
["goa"] = "GOA Colva Beach - panoramio.jpg|link=|alt=",
["governments of canada"] = "Canada Parliament2.jpg|alt=icon",
["great britain"] = "Flag of the United Kingdom.svg|border|link=|alt=flag",
["greater los angeles"] = "Flag of Los Angeles County, California.svg|border|link=|alt=flag",
["greater manchester"] = "England Greater Manchester numbered.svg|alt=icon",
["greece"] = "Flag of Greece.svg|border|link=|alt=flag",
["greenland"] = "Flag of Greenland.svg|border|link=|alt=flag",
["grenada"] = "Flag of Grenada.svg|border|link=|alt=flag",
["guadeloupe"] = "Flag of Guadeloupe (local).svg|border|link=|alt=flag",
["guam"] = "Flag of Guam.svg|border|link=|alt=flag",
["guatemala"] = "Flag of Guatemala.svg|border|link=|alt=flag",
["guernsey"] = "Flag of Guernsey.svg|border|link=|alt=flag",
["guinea"] = "Flag of Guinea.svg|border|link=|alt=flag",
["guinea-bissau"] = "Flag of Guinea-Bissau.svg|border|link=|alt=flag",
["gujarat"] = "Seal of Gujarat.svg|link=|alt=",
["guyana"] = "Flag of Guyana.svg|border|link=|alt=flag",
}
68a8319ad516f2d3220b70d30b2ad1356bcba06f
Template:Ill
10
1106
2412
2411
2023-10-01T14:20:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Ill]]
wikitext
text/x-wiki
#REDIRECT [[Template:Interlanguage link]]
{{R from template shortcut}}
55504a3a5908b8242853cfc46ecf93ac892b00a5
Template:Balkan Wars
10
1107
2414
2413
2023-10-01T14:20:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Balkan_Wars]]
wikitext
text/x-wiki
{{Military navigation
| name = Balkan Wars
| style = wide
| state = {{{state<includeonly>|{{{1|collapsed}}}</includeonly>}}}
| bodyclass = hlist
| title = [[Balkan Wars]]
| category = Balkan Wars
| group1 = Background
| list1 =
* [[Rise of nationalism in the Ottoman Empire|Nationalism in the Ottoman Empire]]
** [[Greater Albania|Albanian]]
** [[Bulgarian irredentism|Bulgarian]]
** [[Megali Idea|Greek]]
** [[Greater Serbia|Serbian]]
* [[Congress of Berlin]]
* Annexation of [[Eastern Rumelia]]
* [[Serbo-Bulgarian War]]
* [[Greco-Turkish War (1897)|Greco-Turkish War of 1897]]
* [[Cretan State]]
* [[Internal Macedonian Revolutionary Organization|IMRO]] & [[Ilinden–Preobrazhenie Uprising]]
* [[Macedonian Struggle]]
* [[Young Turk Revolution]]
* [[Bosnian Crisis]]
* [[Bulgarian Declaration of Independence|Bulgarian Independence]]
* [[31 March Incident]]
* [[Goudi coup]]
* [[Italo-Turkish War]]
* [[Albanian revolt of 1912]]
* [[Balkan League]]
|list2style = background: gainsboro;
|list2 = '''[[First Balkan War]]'''
| group3 = Battles
| list3 =
* [[Battle of Sarantaporo|Sarantaporo]]
* [[Battle of Kardzhali|Kardzhali]]
* [[Battle of Pente Pigadia|Pente Pigadia]]
* [[Battle of Sorovich|Sorovich]]
* [[Battle of Kumanovo|Kumanovo]]
* [[Battle of Kirk Kilisse|Kirk Kilisse]]
* [[Siege of Scutari (1912–1913)|Scutari]]
* [[Battle of Lule Burgas|Lule Burgas]]
* [[Battle of Yenidje|Yenidje]]
* [[Siege of Adrianople (1912–1913)|Adrianople]]
* [[Battle of Prilep|Prilep]]
* [[Himara revolt of 1912|Himara]]
* [[Battle of Monastir|Monastir]]
* [[First Battle of Çatalca|First Çatalca]]
* [[Battle of Kaliakra (1912)|Kaliakra]]
* [[Battle of Merhamli|Merhamli]]
* [[Battle of Driskos|Driskos]]
* [[Battle of Elli|Elli]]
* [[Capture of Korytsa|Korytsa]]
* [[Battle of Lemnos (1913)|Lemnos]]
* [[Battle of Bulair|Bulair]]
* [[Battle of Şarköy|Şarköy]]
* [[Battle of Bizani|Bizani]]
* [[Second Battle of Çatalca|Second Çatalca]]
| group4 = Diplomacy and politics
| list4 =
* [[London Conference of 1912–1913|London Conference]]
* [[Independent Albania|Albanian Independence]]
* [[1913 Ottoman coup d'état]]
* [[Treaty of London (1913)|Treaty of London]]
|list5style = background: gainsboro;
|list5 = '''[[Second Balkan War]]'''
| group6 = Battles
| list6 =
* [[Battle of Kilkis–Lachanas|Kilkis–Lachanas]]
* [[Battle of Doiran (1913)|Doiran]]
* [[Battle of Bregalnica|Bregalnica]]
* [[Battle of Knjaževac|Knjaževac]]
* [[Battle of Kalimanci|Kalimanci]]
* [[Battle of Kresna Gorge|Kresna Gorge]]
* [[Southern Dobruja Offensive|Southern Dobruja]]
* [[Romanian landings in Bulgaria]]
* [[Siege of Vidin (1913)|Vidin]]
* [[Battle of Pirot (1913)|Pirot]]
| group7 = Diplomacy and politics
| list7 =
* [[Greek–Serbian Alliance of 1913|Greek–Serbian Alliance]]
* [[Provisional Government of Western Thrace]]
* [[Treaty of Bucharest (1913)|Treaty of Bucharest]]
* [[Treaty of Constantinople (1913)|Treaty of Constantinople]]
* [[Treaty of Athens]]
| group8 = Other
| list8 =
* [[1913 Romanian Army cholera outbreak]]
|list9style = background: gainsboro;
|list9 = '''General'''
| group10 = Aftermath
| list10 =
* [[Autonomous Republic of Northern Epirus|Autonomy of Northern Epirus]]
* [[Greco-Turkish crisis of 1914]]
* [[Assassination of Archduke Franz Ferdinand|Sarajevo Assassination]] and [[World War I]]
* [[Ottoman–Bulgarian alliance]]
* [[Balkans theatre|Balkans campaign of WWI]]
** [[Serbian campaign]]
** [[Macedonian front]]
| group11 = Atrocities
| list11 =
* [[Report of the International Commission on the Balkan Wars|Carnegie Commission]]
* [[Massacres of Albanians in the Balkan Wars|Massacres of Albanians]]
* [[Destruction of the Thracian Bulgarians in 1913|Bulgarians deportation program]]
* [[Greek genocide#Events|Initial phase of the Greek genocide]]
* [[List of places burned during the Balkan Wars|Places burned down]]
| group12 = Participants
| list12 =
* [[Kingdom of Bulgaria|Bulgaria]]
** [[Ferdinand I of Bulgaria|Ferdinand I]]
** [[Ivan Evstratiev Geshov|Ivan Geshov]]
** [[Stoyan Danev]]
** [[Mihail Savov]]
** [[Ivan Fichev]]
** [[Vasil Kutinchev]]
** [[Nikola Ivanov]]
** [[Radko Dimitriev]]
** [[Stiliyan Kovachev]]
** [[Georgi Todorov (general)|Georgi Todorov]]
* [[Greece in the Balkan Wars|Greece]]
** [[George I of Greece|George I]]
** [[Constantine I of Greece|Constantine I]]
** [[Eleftherios Venizelos]]
** [[Panagiotis Danglis]]
** [[Pavlos Kountouriotis]]
** [[Konstantinos Sapountzakis]]
** [[Viktor Dousmanis]]
* [[Kingdom of Montenegro|Montenegro]]
** [[Nicholas I of Montenegro|Nicholas I]]
** [[Danilo, Crown Prince of Montenegro|Crown Prince Danilo]]
** [[Janko Vukotić]]
* [[Ottoman Empire]]
** [[Mehmed V]]
** [[Nazim Pasha]]
** [[Zeki Pasha]]
** [[Mehmet Esat Bülkat|Esad Pasha]]
** [[Kölemen Abdullah Pasha]]
** [[Ali Rıza Pasha]]
** [[Hasan Tahsin Pasha]]
** [[Enver Pasha|Enver Bey]]
** [[Ahmed Izzet Pasha]]
* [[Kingdom of Romania|Romania]]
** [[Carol I of Romania|Carol I]]
** [[Ferdinand I of Romania|Crown Prince Ferdinand]]
** [[Alexandru Averescu]]
* [[Serbia in the Balkan Wars|Serbia]]
** [[Peter I of Serbia|Peter I]]
** [[Alexander I of Yugoslavia|Crown Prince Alexander]]
** [[Radomir Putnik]]
** [[Petar Bojović]]
** [[Stepa Stepanović]]
** [[Božidar Janković (general)|Božidar Janković]]
* Other Balkan states: [[Albania during the Balkan Wars|Albania]] ([[Ismail Kemal]])
| below =
* [[:Category:Balkan Wars|Category]]
}}<noinclude>
{{collapsible option |statename=optional |default=collapsed}}
[[Category:Europe war and conflict navigational boxes]]
</noinclude>
66e26a69be983c820e6ca2c449f43206837f4fed
Template:Quote box2
10
1108
2416
2415
2023-10-01T14:20:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Quote_box2]]
wikitext
text/x-wiki
#REDIRECT [[Template:Quote box]]
{{redirect category shell|{{R from merge}}{{R tsh}}}}
4b306c94366d95b16edcb871c5a56c3885f5a64e
Template:Irredentism
10
1109
2418
2417
2023-10-01T14:20:38Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Irredentism]]
wikitext
text/x-wiki
{{Navbox
|name = Irredentism
|title = [[Irredentism]]
|listclass = hlist
|group1 = Africa
|list1 =
* [[Azawagh]]
* [[Beninese irredentism|Benin]]
* [[Burundian irredentism|Burundi]]
* [[Burkinabè irredentism|Burkina Faso]]
* [[Cameroonian irredentism|Cameroon]]
* [[Chadian irredentism|Chad]]
* [[Comorian irredentism|Comoros]]
* [[Congolese (Democratic Republic of the Congo) irredentism|Democratic Republic of the Congo]]
* [[Djiboutian irredentism|Djibouti]]
* [[East African Federation]]
* [[Ethiopian irredentism|Ethiopia]]
* [[Egyptian irredentism|Egypt]]
* [[Equatoguinean irredentism|Equatorial Guinea]]
* [[Gabonese irredentism|Gabon]]
* [[Guinean irredentism|Guinea]]
* [[Bundu dia Kongo|Kongo]]
* [[Libyan irredentism|Libya]]
* [[Malagasy irredentism|Madagascar]]
* [[Malawian irredentism|Malawi]]
* [[Greater Mauritania|Mauritania]]
* [[Mauritian irredentism|Mauritius]]
** [[Chagos Archipelago sovereignty dispute]]
* [[Greater Morocco|Morocco]]
** [[Western Sahara conflict|Western Sahara]]
* [[Nigerian irredentism|Nigeria]]
* [[Nubia]]
* [[Congolese (Republic of the Congo) irredentism|Republic of the Congo]]
* [[Rwandan irredentism|Rwanda]]
* [[Swazi irredentism|Eswatini]]
* [[Seychellois irredentism|Seychelles]]
* [[Greater Somalia|Somalia]]
* [[Greater South Africa|South Africa]]
* [[South Sudanese irredentism|South Sudan]]
* [[Sudanese irredentism|Sudan]]
* [[Union of Sahel States]]
* [[Ugandan irredentism|Uganda]]
* [[Zambian irredentism|Zambia]]
* [[Zimbabwean irredentism|Zimbabwe]]
|group2 = North America
|list2 =
* [[Proposed Canadian annexation of the Turks and Caicos Islands|Canada]]
* [[Belizean–Guatemalan territorial dispute|Guatemala]]
* [[Reconquista (Mexico)|Mexico]]
** [[Mexica Movement|Mexica]]
* [[Manifest destiny|United States]]
** [[51st state]]
** [[Movements for the annexation of Canada to the United States|movement for the annexation of Canada]]
* [[Saint Christopher-Nevis-Anguilla|Saint Kitts and Nevis]]
* [[Unification of Saint Martin|Saint Martin]]
|group3 = South America
|list3 =
* [[Argentine irredentism|Argentina]]
** [[United Provinces of the Río de la Plata|Gran La Plata]]
* [[Día del Mar|Bolivia]]
**[[Bolivian–Peruvian territorial dispute|Acre and Pando]]
* [[Chilean expansionism|Chile]]
** [[Tricontinental Chile|Tricontinental]]
* [[Gran Colombia|Colombia]]
** [[Colombian–Peruvian territorial dispute|Jaén and Maynas]]
* [[Ecuadorian–Peruvian territorial dispute|Ecuador]]
* [[Chilean–Peruvian territorial dispute|Peru]]
** [[Peru–Bolivian Confederation|Bolivia]]
* [[Borders of Suriname|Suriname]]
* [[Guayana Esequiba|Venezuela]]
|group4 = Western Asia
|list4 =
* [[United Armenia|Armenia]]
** [[Miatsum|Artsakh]]
** [[Javakheti]]
** [[Western Armenia]]
* [[Assyrian homeland|Assyria]]
* [[Whole Azerbaijan|Azerbaijan]]
** [[Western Azerbaijan (irredentist concept)|Western Azerbaijan]]
** [[Southern Azerbaijan National Awakening Movement|Southern Azerbaijan]]
* [[Annan Plan|Cyprus]]
* [[Kurdistan]]
** [[Iraqi Kurdistan]]
** [[Iranian Kurdistan]]
** [[Turkish Kurdistan]]
** [[Syrian Kurdistan]]
* [[Pan-Iranism|Iran]]
* [[Iraqi nationalism|Iraq]]
** [[Kuwait Governorate|Kuwait]]
* [[Greater Israel|Israel]]
* [[Lebanese nationalism|Lebanon]]
* [[Greater Palestine|Palestine]]
* [[Unification of Saudi Arabia|Saudi Arabia]]
* [[Greater Syria|Syria]]
** [[Hatay Province|Hatay]]
* [[Misak-ı Millî|Turkey]]
** [[Taksim (politics)|Cyprus]]
** [[Pan-Turkism]]
* [[Greater Yemen|Yemen]]
|group5 = Southern Asia
|list5 =
* [[Akhand Bharat|India]]
* [[Pashtunistan]]
|group6 = Central Asia
|list6 =
* [[Politics of Tajikistan#Tajiks in Uzbekistan|Tajikistan]]
|group7 = Eastern and Southeastern Asia
|list7 =
* [[Cambodian irredentism|Cambodia]]
* [[Chinese irredentism|China]]
** [[Senkaku Islands dispute|Diaoyu]]
** [[Chinese unification|Taiwan]]
* [[Korean reunification|Korea]]
** [[Korean claim to Tsushima Island|Daemado]]
** [[Jiandao|Gando]]
** [[Noktundo|Nokdundo]]
* [[Greater Indonesia|Indonesia]]
* [[Empire of Japan|Japan]]
** [[Kuril Islands dispute|Chishima]]
** [[Greater East Asia Co-Prosperity Sphere]]
** [[Liancourt Rocks dispute|Takeshima]]
* [[Pan-Mongolism|Mongolia]]
* [[Territories claimed by the Philippines|Philippines]]
** [[North Borneo dispute|Sabah]]
* [[Pan-Thaiism|Thailand]]
* [[Great Timor|Timor]]
* [[Vietnamese irredentism|Vietnam]]
|group8 = Central and Eastern Europe
|list8 =
* [[Belarusian Democratic Republic#Territory|Belarus]]
** [[Belastok Region]]
** [[Vilnius Region#Vilnius dispute|Vilnius Region]]
** [[Smolensk Governorate]]
* [[Czechoslovakia]]
** [[Carpathian Ruthenia#Subcarpathian Rus' (1928–1938)|Carpathian Ruthenia]]
** [[Kłodzko Land|Kłodzko]]
* [[Hungarian irredentism|Hungary]]
* [[Greater Moldova|Moldova]]
* [[Ossetia]]
** [[North Ossetia–Alania|North Ossetia]]
** [[South Ossetia]]
* [[Polish irredentism|Poland]]
** [[Kresy]]
** [[Trans-Olza]]
* [[Greater Romania|Romania]]
** [[Unification of Moldova and Romania|Moldova]]
* [[Russian irredentism|Russia]]
* [[United Slovenia|Slovenia]]
* [[Ukrainian irredentism|Ukraine]]
|group9 = Southern Europe
|list9 =
* [[Greater Albania|Albania]]
** [[Unification of Albania and Kosovo|Kosovo]]
** [[Albanian nationalism in North Macedonia|North Macedonia]]
* [[Greater Bosnia|Bosnia and Herzegovina]]
* [[Bulgarian irredentism|Bulgaria]]
* [[Greater Croatia|Croatia]]
** [[Croatian Republic of Herzeg-Bosnia|Bosnia]]
* [[Galicia irredenta|Galicia]]
* [[Megali Idea|Greece]]
** [[Enosis|Cyprus]]
* [[Italian irredentism|Italy]]
** [[Italian irredentism in Corsica|Corsica]]
** [[Italian irredentism in Dalmatia|Dalmatia]]
** [[Italian irredentism in Istria|Istria]]
** [[Italian irredentism in Switzerland|Italian Grisons]]
** [[Italian irredentism in Malta|Malta]]
** [[Italian irredentism in Nice|Nice]]
** [[Italian irredentism in Savoy|Savoy]]
** [[Italian irredentism in Switzerland|Ticino]]
* [[United Macedonia|North Macedonia]]
* [[Greater Serbia|Serbia]]
** [[Partition of Kosovo|Kosovo]]
** [[Proposed secession of Republika Srpska|Republika Srpska]]
* [[Spanish irredentism|Spain]]
** [[Status of Gibraltar|Gibraltar]]
** [[Iberian federalism|Portugal]]
* [[Yugoslav irredentism|Yugoslavia]]
|group10 = Northern Europe
|list10 =
* [[Lands of Denmark|Denmark]]
* [[Greater Finland|Finland]]
* [[Rockall Bank dispute|Iceland]]
* [[Historical Latvian Lands|Latvia]]
** [[Pytalovsky_District#History|Abrene]]
** [[Walk crisis#Runö question|Ruhnu]]
* [[Cultural regions of Lithuania|Lithuania]]
* [[Greater Norway#Former dependencies and homelands|Norway]]
* [[Lands of Sweden#Historical lands|Sweden]]
|group11 = Western Europe
|list11 =
* [[Greater Belgium|Belgium]]
* [[Celtic union|Celtics]]
* [[South Tyrolean secessionist movement|South Tyrol and Austria]]
* [[Natural borders of France|France]]
** [[Rattachism|Wallonia]]
* [[Pan-Germanism|Germany]]
** [[German nationalism in Austria|Austria]]
*** [[Annexation of Austria]]
** [[Greater Germanic Reich]]
** [[Lebensraum]]
* [[United Ireland|Ireland]]
* [[Greater Netherlands|Netherlands]]
* [[Enlargement of Switzerland|Switzerland]]
|group12 = Oceania
|list12 =
* [[List of proposed states of Australia|Australia]]
* [[Gilbert and Ellice Islands|Kiribati]]
* [[Papuan unification|Papua New Guinea]]
* [[Samoan unification|Samoa]]
* [[Matthew Island and Hunter Island|Vanuatu]]
|below =
''Related concepts:'' '''''[[List of national border changes since 1914|Border changes since 1914]] · [[Partition (politics)|Partitionism]] · [[Political union|Reunification]] · [[Revanchism]] · [[Revanchism|Revisionism]] · [[Rump state]]'''''
}}<noinclude>
{{Doc|content=
==See also==
* [[:Category:Irredentism]]
[[Category:Nationalism navigational boxes]]
}}</noinclude>
5723d28ede391007e2d337926eeffd7d136d803a
Template:Pan-nationalist concepts
10
1110
2420
2419
2023-10-01T14:20:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Pan-nationalist_concepts]]
wikitext
text/x-wiki
{{Navbox
|name = Pan-nationalist concepts
|title = [[Pan-nationalism|Pan-nationalist concepts]]
|listclass = hlist
|group1 = Ideas
|list1 =
*[[Pan-Africanism]]
*[[Pan-Americanism]]
*[[Pan-Arabism]]
*[[Pan-Asianism]]
*[[Berberism]]
*[[Pan-Caucasianism]]
*[[Pan-Celticism]]
*[[Czechoslovakism]]
*[[Pan-Finnicism]]
*[[Pan-Germanism]]
*[[Eurasianism]]
*[[Pan-European nationalism]]
*[[Panhispanism]]
*[[Iberian federalism|Pan-Iberism]]
*[[Pan-Indianism]]
*[[Pan-Iranism]]
*[[Pan-Latinism]]
*[[Mediterraneanism]]
*[[Pan-Mongolism]]
*[[Pan-Oceanian|Pan-Oceanianism]]
*[[Scandinavism]]
*[[Greater Serbia|Pan-Serbism]]
*[[Pan-Slavism]]
*[[Rattachism]]
*{{ill|Pan-Tatarism|ru|Пантатаризм|tt|Пантатаризм}}
*[[Turanism]]
*[[Pan-Turkism]]
*[[Yugoslavism]]
|group2 = Territorial<br />concepts
|list2 =
*[[Greater Albania]]
*[[Basque Country (greater region)|Basque Country]]
*[[Greater Bosnia]]
*[[Unionism in the United Kingdom|British unionism]]
*[[Bulgarian irredentism]]
*[[Cambodian irredentism|Greater Cambodia]]
*[[Greater Antilles|Caribbean Antilles]]
*[[Catalan Countries]]
*[[Celtic union]]
*[[Gran Colombia]]
*[[Greater China]]
*[[Greater Croatia]]
*[[Eritrean nationalism|Eritrean national identity nationalism]]
*[[Ethiopian nationalism|Ethiopian national identity nationalism]]
*[[Greater Finland]]
*''[[Galicia irredenta]]''
*[[Hungarian irredentism|Greater Hungary]]
*[[Greater India]]
*[[Greater Indonesia]]
*[[Greater Iran]]
*[[Greater Iraq]]
*[[Greater Israel]]
*[[Italian imperialism under Fascism|Greater Italy]]
*[[Greater Mauritania]]
*[[Reconquista (Mexico)|Greater Mexico]]
*[[Greater Moldova]]
*[[Greater Morocco]]
*[[Greater Netherlands]]
*[[Greater Norway]]
*[[Greater Palestine]]
*[[Polish irredentism|Greater Poland]]
*{{ill|Portugaliza|lt=Greater Portugal|pt|Portugaliza}}
*[[Greater Romania]]
*[[Russian irredentism|Greater Russia]]
*[[Greater Serbia]]
*[[Greater Somalia]]
*[[Spanish irredentism|Greater Spain]]
*[[Greater Syria]]
*[[Ukrainian irredentism|Greater Ukraine]]
*[[Vietnamese irredentism|Greater Vietnam]]
*[[Yugoslav irredentism|Greater Yugoslavia]]
*[[Megali Idea|Megali Idea (Greece)]]
*[[Kurdish nationalism|Kurdistan]]
*[[Occitan nationalism|Occitania]]
*[[Padanian nationalism]]
*[[Patria Grande]]
*[[Tamazgha]]
*[[Misak-ı Millî|Misak-ı Millî (Turkey)]]
*[[United Armenia]]
*[[United Ireland]]
*[[United Macedonia]]
*[[Whole Azerbaijan]]
*[[Turan]]
|group3 = [[Panethnicity|Pan-ethnic]]<br />groups
|list3 =
*[[Hispanic and Latino Americans|Latinos]], [[Hispanic|Hispanic peoples]]
*[[Habesha peoples]]
}}<noinclude>
{{Documentation|content =
This template shows articles about pan-nationalist concepts.
==See also==
* [[:Category:Irredentism]]
[[Category:Political ideology navigational boxes]]
[[Category:Nationalism navigational boxes]]
}}</noinclude>
b8b566c0a1d134ef4baafdb951998c12e3cb04b2
Template:Stateless nationalism in Europe
10
1111
2422
2421
2023-10-01T14:20:39Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Stateless_nationalism_in_Europe]]
wikitext
text/x-wiki
{{navbox
|navbar=
|name=Stateless nationalism in Europe
|title=[[List of active separatist movements in Europe|Movements]] of [[Regionalism (politics)|regionalism]], [[separatism]] and [[Stateless nation|stateless]] [[nationalism]] in Europe
|listclass=hlist
| group1 = Albania
| list1 =
*[[Autonomous Republic of Northern Epirus|Northern Epirus]]
| group2 = Azerbaijan
| list2 =
*[[Republic of Artsakh|Artsakh]]
*[[Lezgin nationalism|Lezgin]]
*[[Talysh-Mughan Autonomous Republic|Talysh]]
| group3 = Belgium
| list3 =
*[[Flemish Movement|Flemish]]
*[[Walloon Movement|Walloon]]
| group4 = Bosnia and<br />Herzegovina
| list4 =
*[[Proposed secession of Republika Srpska|Republika Srpska]]
| group5 = Croatia
| list5 =
*[[Istrianism|Istrian]]
| group6 = Cyprus
| list6 =
*[[Turkish Cypriot nationalism|Turkish Cypriot]]
| group7 = Denmark
| list7 =
*[[Greenlandic independence|Greenlandic]]
*[[Faroese independence movement|Faroese]]
| group8 = Finland
| list8 =
*[[Future of Åland|Ålandic]]
*[[Sápmi|Sámi]]
| group9 = France
| list9 =
*[[Alsace independence movement|Alsatian]]
*[[Basque nationalism|Basque]]
*[[Breton nationalism|Breton]]
*[[Corsican nationalism|Corsican]]
*[[Occitan nationalism|Occitan]]
*[[Catalan nationalism|North Catalan]]
| group10 = Georgia
| list10 =
*[[Abkhazia]]n
*[[Adjaria]]n
*[[United Javakhk Democratic Alliance|Javakheti]]
*[[Ossetia]]n
| group11 = Germany
| list11 =
*[[Bavarian nationalism|Bavarian]]
*[[Sorbs]]
*[[Swabians]]
| group12 = Greece
| list12 =
*[[Chameria|Cham Albanian]]
| group13 = Italy
| list13 =
*[[Lombard nationalism|Lombard]]
*[[Padanian nationalism|Padanian]]
*[[Sardinian nationalism|Sardinian]]
*[[Sicilian nationalism|Sicilian]]
*[[South Tyrolean independence movement|South Tyrolean]]
*[[Venetian nationalism|Venetian]]
| group14 = North Macedonia
| list14 =
*[[Ilirida]]
| group15 = Moldova
| list15 =
*[[Gagauzia]]
*[[Transnistria]]
| group16 = Netherlands
| list16 =
*[[Frisian nationalism|Frisian]]
| group17 = Norway
| list17 =
*[[Sápmi|Sámi]]
| group18 = Poland
| list18 =
*[[Kaszëbskô Jednota|Kashubian]]
*[[Silesian Autonomy Movement|Silesian]]
*[[Free City of Danzig Government in Exile|Free City of Danzig]]
| group19 = Romania
| list19 =
*[[Székely autonomy movement|Székely]]
*[[Transylvania–Banat League|Transylvania–Banat]]
| group20 = Russia
| list20 =
*[[Balkar and Karachay nationalism|Balkar and Karachay]]
*[[Bashkortostan|Bashkir]]
*[[Chechen Republic of Ichkeria|Chechen]]
*[[Chuvash nationalism|Chuvash]]
*[[Circassian nationalism|Circassian]]
*[[Crimean People's Republic|Crimean Tatar]]
*[[Karelia]]n
*[[Lezgin nationalism|Lezgin]]
*[[Ossetia]]n
*[[Sápmi|Sámi]]
*[[Siberian regionalism|Siberian]]
*[[Tatar nationalism|Tatar]]
| group21 = Serbia
| list21 =
*[[Vojvodina Autonomist Movement|Vojvodina]]
*[[Kosovo]]
| group22 = Spain
| list22 =
*[[Andalusian nationalism|Andalusian]]
*[[Aragonese nationalism|Aragonese]]
*[[Asturian nationalism|Asturian]]
*[[Basque nationalism|Basque]]
*[[Canarian nationalism|Canarian]]
*[[Castilian nationalism|Castilian]]
*[[Catalan nationalism|Catalan]]
*[[Galician nationalism|Galician]]
*[[Navarrese nationalism|Navarrese]]
*[[Valencian nationalism|Valencian]]
| group23 = Sweden
| list23 =
*[[Sápmi|Sámi]]
*[[Scania Party|Scania]]
| group24 = Turkey
| list24 =
*[[Assyrian nationalism|Assyrian]]
*[[Kurdish nationalism|Kurdish]]
| group25 = Ukraine
| list25 =
*[[Crimean People's Republic|Crimean Tatar]]
*[[Donetsk People's Republic|Donetsk]]
*[[Luhansk People's Republic|Luhansk]]
| group26 = United Kingdom
| list26 =
*[[Cornish nationalism|Cornish]]
*[[Ulster nationalism|Northern Irish]]
*[[Scottish nationalism|Scottish]]
*[[Welsh nationalism|Welsh]]
*[[Yorkshire Party|Yorkshire]]
|group27= See also
|list27=
*[[First-level NUTS of the European Union]]
|group28= Notes
}}<noinclude>
{{Doc|content=
==See also==
* [[:Category:Stateless nationalism in Europe]]
[[Category:Europe politics and government navigational boxes|Nationalism]]
[[Category:Nationalism navigational boxes|Europe]]
}}</noinclude>
b87180dad1a4664fe28e781822eba7c933c7979b
Template:Megali Idea
10
1112
2424
2423
2023-10-01T14:20:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Megali_Idea]]
wikitext
text/x-wiki
{{Navbox
|name = Megali Idea
|title = [[Megali Idea]]
|state = {{{state|autocollapse}}}
|listclass = hlist
|titlestyle = background:;
|groupstyle = text-align:center; background:;
|image= [[File:ParisPeace-Venizelos-Map.png|120px]]
|group1 = Background
|list1 =
* [[Fall of Constantinople]]
* [[Ottoman Greece]]
* [[Greek Plan]]
* [[Greek War of Independence]]
* [[First Hellenic Republic]]
* [[Kingdom of Greece]]
|group2 = Annexations
|list2 =
* [[Ionian Islands]] (1864)
* [[Thessaly]] (1881)
* [[Crete]] (1912)
* [[Epirus (region)|Epirus]] (1912)
* [[Macedonia (Greece)|Macedonia]] (1912)
* [[North Aegean islands]] (1912)
* [[Western Thrace]] (1919)
* [[Dodecanese]] (1947)
|group3 = Temporary<br/>acquisitions
|list3 =
* [[Eastern Thrace]] (1920–23)
* [[Imbros]] and [[Tenedos]] (1912–13, 1920–23)
* [[Northern Epirus]] (1914–17, 1919–21, 1940–41)
* [[Smyrna Zone]] (1919–22 as dependency)
* [[Occupation of Istanbul|Constantinople, Zone of the Straits]] (1918–23 with France, Italy and United Kingdom)
|group4 = Other areas
|list4 =
* [[Asia Minor]] which included: [[Ionia]]
*[[Aeolis]]
*[[Doris (Asia Minor)|Doris]]
*[[Cappadocia]] ([[Cappadocian Greeks]])
*[[Lydia]]
*[[Caria]]
*[[Mysia]]
*[[Troad|Troas]]
*[[Phrygia]]
*[[Galatia]]
*[[Bithynia]]
*[[Lycia]]
*[[Cilicia]]
*[[Cataonia]]
*[[Lycaonia]]
*[[Pamphylia]]
*[[Isauria]]
*[[Pisidia]]
*[[Paphlagonia]]
*[[Chamanene]]
*[[Armenia Minor]]
*Part of [[Commagene]]
* [[Cyprus]]
* [[Eastern Rumelia]]
* [[Pelagonia]] ([[Bitola|Monastiri]] region)
* [[Gevgelija|Gevgeli]]
* [[Sazan|Sazan island]]
* [[Pontus (region)|Pontus]]
|group5 = Ideas
|list5 =
* [[Greek nationalism]]
* [[Hellenization]]
* [[Enosis]]
|group6 = People/Organizations
|list6 =
* [[Ioannis Kolettis]]
* [[Aristotelis Valaoritis]]
* [[Ethniki Etaireia]]
* [[Macedonian Committee]]
* [[Alexandros Koumoundouros]]
* [[Dimitrios Kalapothakis]]
* [[Stephanos Dragoumis]]
* [[Pavlos Melas]]
* [[Kostis Palamas]]
* [[Goudi coup|Military League]]
* [[Eleftherios Venizelos]]
* [[Penelope Delta]]
* [[Themistoklis Sofoulis]]
* [[Nikolaos Plastiras]]
* [[Georgios Christakis-Zografos]]
* [[Theodoros Pangalos (general)|Theodoros Pangalos]]
* [[Northern Epirus Liberation Front]]
* [[EOKA]]
* [[Georgios Grivas]]
* [[Dimitrios Ioannidis]]
|group7 = Events
|list7 =
* [[Party of Radicals (Ionian Islands)]]
* [[Epirus Revolt of 1854]]
* [[1854 Macedonian rebellion]]
* [[1867 Macedonian rebellion]]
* [[Cretan revolt (1866–1869)]]
* [[Cretan revolt (1878)]]
* [[Epirus Revolt of 1878]]
* [[1878 Macedonian rebellion]]
* [[Macedonian Struggle]]
* [[Greco-Turkish War (1897)]]
* [[Theriso revolt]]
* [[Balkan League]]
* [[Greece in the Balkan Wars|Balkan Wars]]
* [[Himara revolt of 1912]]
* [[Autonomous Republic of Northern Epirus]]
* [[Provisional Government of National Defence]]
* [[National Defence Army Corps]]
* [[Greece during World War I|Greece in WWI]]
* [[Occupation of Constantinople]]
* [[Greek landing at Smyrna]]
* [[Republic of Pontus]]
* [[Greco-Turkish War (1919–1922)]]
* [[Great Fire of Smyrna]]
* [[1931 Cyprus Revolt]]
* [[Military history of Greece during World War II|Greece in WWII]]
* [[Greco-Italian War]]
* [[Cyprus Emergency]]
* [[1974 Cypriot coup d'état]]
|group8 = Treaties
|list8 =
* [[Treaty of London (1864)]]
* [[Greek-Serbian Alliance of 1867]]
* [[Treaty of Berlin (1878)]]
* [[Convention of Constantinople (1881)]]
* [[Treaty of Constantinople (1897)]]
* [[Greek-Serbian Alliance of 1913]]
* [[Treaty of London (1913)]]
* [[Treaty of Bucharest (1913)]]
* [[Treaty of Athens]] (1913)
* [[Protocol of Corfu]] (1914)
* [[Venizelos–Tittoni agreement]] (1919)
* [[Treaty of Neuilly-sur-Seine]] (1919)
* [[Treaty of Sèvres]] (1920)
* [[Treaty of Lausanne|Treaty of Lausanne (1923)]]
* [[Treaty of Peace with Italy, 1947|Treaty of Paris (1947)]]
* [[Treaty of Guarantee (1960)]]
|below =
|belowstyle = background:;
}}<noinclude>
{{collapsible option}}
[[Category:Megali Idea|τ]]
[[Category:Greek nationalism|τ]]
[[Category:Pan-nationalism|*]]
</noinclude>
16782fa2ee56cebd2c36eca2c8f7b99db0bdd539
Greater Greece
0
1113
2426
2425
2023-10-01T14:20:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Greater_Greece]]
wikitext
text/x-wiki
#REDIRECT [[Megali Idea]]
{{R hatnote}}
1e2421e237e64daf0b351ac051651fb9c1da961b
Template:Greek nationalism
10
1114
2428
2427
2023-10-01T14:20:41Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Greek_nationalism]]
wikitext
text/x-wiki
{{Navbox
|name = Greek nationalism
|state = {{{state<includeonly>|collapsed</includeonly>}}}
|title = [[Greek nationalism]]
|listclass = hlist
|group1 = Ideology
|list1 =
* [[Modern Greek Enlightenment]]
* [[Megali Idea]]
* [[Hellenization]]
** [[Grecoman]]
* [[Venizelism]]
* [[Metaxism]]
* [[Enosis]]
|group2 = Organizations
|list2 =
* [[Filiki Eteria]]
* [[Ethniki Etaireia]]
* [[Macedonian Committee]]
* [[Goudi coup|Military League]]
* [[National Youth Organisation (Greece)|National Youth Organisation]]
* [[EDES]]
* [[Northern Epirus Liberation Front]]
* [[EOKA]]
* [[EOKA B]]
|group3 = Political parties
|list3 =
*[[Russian Party|Napist Party]]
*[[Nationalist Party (Greece)|Nationalist Party]]
*[[New Party (Greece, 1873)|New Party (1873)]]
*[[New Party (Greece, 1947)|New Party (1947)]]
*[[Liberal Party (Greece)|Liberal Party]]
*[[Freethinkers' Party]]
*[[Politically Independent Alignment]]
*[[Greek Rally]]
*[[National Party of Greece]]
*[[4th of August Party]]
*[[National Democratic Union (Greece)|National Democratic Union]]
*[[National Alignment]]
* [[United Nationalist Movement]]
*[[Party of Hellenism]]
*[[National Political Union (1984)|National Political Union]]
*[[Hellenic Front]]
*[[Front Line (political party)|Front Line]]
*[[Patriotic Alliance (Greece)|Patriotic Alliance]]
*[[Political Spring]]
*[[National Front (Greece)]]
*[[Popular Orthodox Rally]]
*[[Golden Dawn (Greece)|Golden Dawn]]
*[[ELAM (Cyprus)]]
*[[National Unity Association]]
*[[Greek Solution]]
*[[LEPEN (political party)|LEPEN]]
*[[Greeks for the Fatherland]]
|group4 = People
|list4 =
* [[Adamantios Korais]]
* [[Rigas Feraios]]
* [[Alexander Ypsilantis]]
* [[Ioannis Kapodistrias]]
* [[Athanasios Diakos]]
* [[Theodoros Kolokotronis]]
* [[Dionysios Solomos]]
* [[Constantine Paparrigopoulos]]
* [[Aristotelis Valaoritis]]
* [[Alexandros Koumoundouros]]
* [[Theodoros Diligiannis]]
* [[Kostis Palamas]]
* [[Pavlos Melas]]
* [[Ion Dragoumis]]
* [[Eleftherios Venizelos]]
* [[Nikolaos Plastiras]]
* [[Ioannis Metaxas]]
* [[Angelos Sikelianos]]
* [[Alexandros Papagos]]
* [[Napoleon Zervas]]
* [[Georgios Grivas]]
* [[Georgios Papadopoulos]]
* [[Dimitrios Ioannidis]]
* [[Antonis Samaras]]
|group5 = Historical events
|list5 =
* [[Greco-Persian Wars]]
* [[Byzantine Empire under the Palaiologos dynasty]]
* [[Greek War of Independence]]
* [[Epirus Revolt of 1854]]
* [[1854 Macedonian rebellion]]
* [[1867 Macedonian rebellion]]
* [[Cretan revolt (1866–1869)]]
* [[Cretan revolt (1878)]]
* [[Epirus Revolt of 1878]]
* [[1878 Macedonian rebellion]]
* [[1896–1897 Macedonian rebellion]]
* [[Greco-Turkish War (1897)]]
* [[Macedonian Struggle]]
* [[Maratha, Santalaris and Aloda massacre]]
* [[Theriso revolt]]
* [[Greece in the Balkan Wars]]
* [[Autonomous Republic of Northern Epirus]]
* [[Greece during World War I]]
* [[Greco-Turkish War (1919–1922)]]
* [[1931 Cyprus revolt]]
* [[4th of August Regime]]
* [[Greek resistance]]
* [[Cyprus Emergency]] (1955–59)
* [[Cypriot intercommunal violence#Crisis of 1963–1964|Cyprus crisis of 1963–64]]
* [[Bloody Christmas (1963)]]
* [[Greek junta]] (1967–74)
* [[1974 Cypriot coup d'état]]
* [[1990 Komotini events]]
|group6 = Policies
|list6 =
* [[Aromanian question]]
* [[Geographical name changes in Greece|Geographical name changes]]
* [[Greek language question]]
}}<noinclude>
{{collapsible option}}
[[Category:Greek nationalism|τ]]
[[Category:Greece politics and government templates|Nationalism]]
</noinclude>
3ac46bed7a0ab70e714050fa2c139f6db2f06842
MediaWiki:Common.js
8
449
2429
975
2023-10-01T14:59:59Z
Führerredux
2
javascript
text/javascript
// /**
// * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
// * loaded for all users on every wiki page. If possible create a gadget that is
// * enabled by default instead of adding it here (since gadgets are fully
// * optimized ResourceLoader modules with possibility to add dependencies etc.)
// *
// * Since Common.js isn't a gadget, there is no place to declare its
// * dependencies, so we have to lazy load them with mw.loader.using on demand and
// * then execute the rest in the callback. In most cases these dependencies will
// * be loaded (or loading) already and the callback will not be delayed. In case a
// * dependency hasn't arrived yet it'll make sure those are loaded before this.
// */
// /* global mw, $ */
// /* jshint strict:false, browser:true */
// mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
// /* Begin of mw.loader.using callback */
// /**
// * Map addPortletLink to mw.util
// * @deprecated: Use mw.util.addPortletLink instead.
// */
// mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
// /**
// * Test if an element has a certain class
// * @deprecated: Use $(element).hasClass() instead.
// */
// mw.log.deprecate( window, 'hasClass', function ( element, className ) {
// return $( element ).hasClass( className );
// }, 'Use jQuery.hasClass() instead' );
// /**
// * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
// * @rev 6
// */
// var extraCSS = mw.util.getParamValue( 'withCSS' ),
// extraJS = mw.util.getParamValue( 'withJS' );
// if ( extraCSS ) {
// if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
// mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
// } else {
// mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
// }
// }
// if ( extraJS ) {
// if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
// mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
// } else {
// mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
// }
// }
// /**
// * WikiMiniAtlas
// *
// * Description: WikiMiniAtlas is a popup click and drag world map.
// * This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
// * The script itself is located on the Meta-Wiki because it is used by many projects.
// * See [[Meta:WikiMiniAtlas]] for more information.
// * Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
// */
// $( function () {
// var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
// if ( requireWikiminiatlas ) {
// mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
// }
// } );
// /**
// * Collapsible tables; reimplemented with mw-collapsible
// * Styling is also in place to avoid FOUC
// *
// * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
// * @version 3.0.0 (2018-05-20)
// * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
// * @author [[User:R. Koot]]
// * @author [[User:Krinkle]]
// * @author [[User:TheDJ]]
// * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
// * is supported in MediaWiki core. Shimmable since MediaWiki 1.32
// *
// * @param {jQuery} $content
// */
// function makeCollapsibleMwCollapsible( $content ) {
// var $tables = $content
// .find( 'table.collapsible:not(.mw-collapsible)' )
// .addClass( 'mw-collapsible' );
// $.each( $tables, function ( index, table ) {
// // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
// if ( $( table ).hasClass( 'collapsed' ) ) {
// $( table ).addClass( 'mw-collapsed' );
// // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
// }
// } );
// if ( $tables.length > 0 ) {
// mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
// $tables.makeCollapsible();
// } );
// }
// }
// mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
// /**
// * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
// *
// * Maintainers: TheDJ
// */
// function mwCollapsibleSetup( $collapsibleContent ) {
// var $element,
// $toggle,
// autoCollapseThreshold = 2;
// $.each( $collapsibleContent, function ( index, element ) {
// $element = $( element );
// if ( $element.hasClass( 'collapsible' ) ) {
// $element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
// }
// if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
// $element.data( 'mw-collapsible' ).collapse();
// } else if ( $element.hasClass( 'innercollapse' ) ) {
// if ( $element.parents( '.outercollapse' ).length > 0 ) {
// $element.data( 'mw-collapsible' ).collapse();
// }
// }
// // because of colored backgrounds, style the link in the text color
// // to ensure accessible contrast
// $toggle = $element.find( '.mw-collapsible-toggle' );
// if ( $toggle.length ) {
// // Make the toggle inherit text color (Updated for T333357 2023-04-29)
// if ( $toggle.parent()[ 0 ].style.color ) {
// $toggle.css( 'color', 'inherit' );
// $toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
// }
// }
// } );
// }
// mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
// /**
// * Magic editintros ****************************************************
// *
// * Description: Adds editintros on disambiguation pages and BLP pages.
// * Maintainers: [[User:RockMFR]]
// *
// * @param {string} name
// */
// function addEditIntro( name ) {
// $( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
// el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
// } );
// }
// if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
// $( function () {
// if ( document.getElementById( 'disambigbox' ) ) {
// addEditIntro( 'Template:Disambig_editintro' );
// }
// } );
// $( function () {
// var cats = mw.config.get( 'wgCategories' );
// if ( !cats ) {
// return;
// }
// if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
// addEditIntro( 'Template:BLP_editintro' );
// }
// } );
// }
// /* End of mw.loader.using callback */
// } );
// /* DO NOT ADD CODE BELOW THIS LINE */
f0c2a0a14f54b923392496e02ccf2f1b3f4eaff2
2430
2429
2023-10-01T15:07:16Z
Führerredux
2
javascript
text/javascript
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
/*
A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up.
*/
// Text to be used on button here:
label = 'Edit';
// Text for mouse hover:
title = 'Edit this page';
// Only run script if not in editor
if (!(/veaction=edit/).test(window.location.search)){
// Unhide button if it's just hidden
if(document.querySelector("#ca-ve-edit")){
if (document.querySelector("#ca-ve-edit").style.display == 'none'){
document.querySelector("#ca-ve-edit").style.display = 'block';
}
}
// Only run if Edit button does not already exist and Edit source button does exist
if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) {
// Edit Source element
editSource = document.querySelector("#ca-edit");
// Copy Edit Source element
newEdit = editSource.cloneNode(true);
// Get current page title
pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_');
// Place correct link and text inside new element
newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>';
// Change to correct id for new element
newEdit.id = 'ca-ve-edit';
// Add new element before Edit Source
editSource.before(newEdit);
document.querySelector("#ca-ve-edit").style.display = 'inline-block';
}
}
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
fdfa19ec6bcc038f9472931ff865595578ec682b
2431
2430
2023-10-01T15:12:11Z
Führerredux
2
javascript
text/javascript
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
// /*
// A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up.
// */
// label = 'Edit';
// title = 'Edit this page';
// if (!(/veaction=edit/).test(window.location.search)){
// // Unhide button if it's just hidden
// if(document.querySelector("#ca-ve-edit")){
// if (document.querySelector("#ca-ve-edit").style.display == 'none'){
// document.querySelector("#ca-ve-edit").style.display = 'block';
// }
// }
// // Only run if Edit button does not already exist and Edit source button does exist
// if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) {
// // Edit Source element
// editSource = document.querySelector("#ca-edit");
// // Copy Edit Source element
// newEdit = editSource.cloneNode(true);
// // Get current page title
// pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_');
// // Place correct link and text inside new element
// newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>';
// // Change to correct id for new element
// newEdit.id = 'ca-ve-edit';
// // Add new element before Edit Source
// editSource.before(newEdit);
// document.querySelector("#ca-ve-edit").style.display = 'inline-block';
// }
// }
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
34b575f9c9ece0cb82007ddc48d1ccb61f54f370
2432
2431
2023-10-02T11:45:40Z
Führerredux
2
javascript
text/javascript
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
/*
A script to add an Edit button for Visual Editor if the extension is enabled but the button is not showing up.
*/
label = 'Edit';
title = 'Edit this page';
if (!(/veaction=edit/).test(window.location.search)){
// Unhide button if it's just hidden
if(document.querySelector("#ca-ve-edit")){
if (document.querySelector("#ca-ve-edit").style.display == 'none'){
document.querySelector("#ca-ve-edit").style.display = 'block';
}
}
// Only run if Edit button does not already exist and Edit source button does exist
if((!document.querySelector("#ca-ve-edit") && document.querySelector('#ca-edit'))) {
// Edit Source element
editSource = document.querySelector("#ca-edit");
// Copy Edit Source element
newEdit = editSource.cloneNode(true);
// Get current page title
pageTitle = document.querySelector('meta[property="og:title"]').content.replace(/\s/g, '_');
// Place correct link and text inside new element
newEdit.innerHTML = '<a href="/w/index.php?title=' + pageTitle + '&veaction=edit" title="' + title + ' [alt-shift-v]" accesskey="v">' + label + '</a>';
// Change to correct id for new element
newEdit.id = 'ca-ve-edit';
// Add new element before Edit Source
editSource.before(newEdit);
document.querySelector("#ca-ve-edit").style.display = 'inline-block';
}
}
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
5b356d39c5f7982ce3ca39d760b3ec4a064ec78e
2433
2432
2023-10-02T11:46:29Z
Führerredux
2
javascript
text/javascript
/**
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
* loaded for all users on every wiki page. If possible create a gadget that is
* enabled by default instead of adding it here (since gadgets are fully
* optimized ResourceLoader modules with possibility to add dependencies etc.)
*
* Since Common.js isn't a gadget, there is no place to declare its
* dependencies, so we have to lazy load them with mw.loader.using on demand and
* then execute the rest in the callback. In most cases these dependencies will
* be loaded (or loading) already and the callback will not be delayed. In case a
* dependency hasn't arrived yet it'll make sure those are loaded before this.
*/
/* global mw, $ */
/* jshint strict:false, browser:true */
mw.loader.using( [ 'mediawiki.util' ] ).done( function () {
/* Begin of mw.loader.using callback */
/**
* Map addPortletLink to mw.util
* @deprecated: Use mw.util.addPortletLink instead.
*/
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
/**
* Test if an element has a certain class
* @deprecated: Use $(element).hasClass() instead.
*/
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );
/**
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
* @rev 6
*/
var extraCSS = mw.util.getParamValue( 'withCSS' ),
extraJS = mw.util.getParamValue( 'withJS' );
if ( extraCSS ) {
if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
}
}
if ( extraJS ) {
if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
} else {
mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
}
/**
* WikiMiniAtlas
*
* Description: WikiMiniAtlas is a popup click and drag world map.
* This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
* The script itself is located on the Meta-Wiki because it is used by many projects.
* See [[Meta:WikiMiniAtlas]] for more information.
* Note - use of this service is recommended to be replaced with mw:Help:Extension:Kartographer
*/
$( function () {
var requireWikiminiatlas = $( 'a.external.text[href*="geohack"]' ).length || $( 'div.kmldata' ).length;
if ( requireWikiminiatlas ) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
}
} );
/**
* Collapsible tables; reimplemented with mw-collapsible
* Styling is also in place to avoid FOUC
*
* Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
* @version 3.0.0 (2018-05-20)
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
* @author [[User:R. Koot]]
* @author [[User:Krinkle]]
* @author [[User:TheDJ]]
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
* is supported in MediaWiki core. Shimmable since MediaWiki 1.32
*
* @param {jQuery} $content
*/
function makeCollapsibleMwCollapsible( $content ) {
var $tables = $content
.find( 'table.collapsible:not(.mw-collapsible)' )
.addClass( 'mw-collapsible' );
$.each( $tables, function ( index, table ) {
// mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
if ( $( table ).hasClass( 'collapsed' ) ) {
$( table ).addClass( 'mw-collapsed' );
// mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
}
} );
if ( $tables.length > 0 ) {
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$tables.makeCollapsible();
} );
}
}
mw.hook( 'wikipage.content' ).add( makeCollapsibleMwCollapsible );
/**
* Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
*
* Maintainers: TheDJ
*/
function mwCollapsibleSetup( $collapsibleContent ) {
var $element,
$toggle,
autoCollapseThreshold = 2;
$.each( $collapsibleContent, function ( index, element ) {
$element = $( element );
if ( $element.hasClass( 'collapsible' ) ) {
$element.find( 'tr:first > th:first' ).prepend( $element.find( 'tr:first > * > .mw-collapsible-toggle' ) );
}
if ( $collapsibleContent.length >= autoCollapseThreshold && $element.hasClass( 'autocollapse' ) ) {
$element.data( 'mw-collapsible' ).collapse();
} else if ( $element.hasClass( 'innercollapse' ) ) {
if ( $element.parents( '.outercollapse' ).length > 0 ) {
$element.data( 'mw-collapsible' ).collapse();
}
}
// because of colored backgrounds, style the link in the text color
// to ensure accessible contrast
$toggle = $element.find( '.mw-collapsible-toggle' );
if ( $toggle.length ) {
// Make the toggle inherit text color (Updated for T333357 2023-04-29)
if ( $toggle.parent()[ 0 ].style.color ) {
$toggle.css( 'color', 'inherit' );
$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
}
}
} );
}
mw.hook( 'wikipage.collapsibleContent' ).add( mwCollapsibleSetup );
/**
* Magic editintros ****************************************************
*
* Description: Adds editintros on disambiguation pages and BLP pages.
* Maintainers: [[User:RockMFR]]
*
* @param {string} name
*/
function addEditIntro( name ) {
$( '.mw-editsection, #ca-edit, #ca-ve-edit' ).find( 'a' ).each( function ( i, el ) {
el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
} );
}
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
$( function () {
if ( document.getElementById( 'disambigbox' ) ) {
addEditIntro( 'Template:Disambig_editintro' );
}
} );
$( function () {
var cats = mw.config.get( 'wgCategories' );
if ( !cats ) {
return;
}
if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
addEditIntro( 'Template:BLP_editintro' );
}
} );
}
/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */
d286d64c90e941bffbeb6dcea56850dd1ba857a5
Main Page
0
1
2434
548
2023-10-03T14:13:21Z
Führerredux
2
anim html
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
<div class="anim-wrap">
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
</div>
551287cac4290c788e43cac1951a0075c4430d9f
2436
2434
2023-10-03T14:16:59Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
<link rel="stylesheet" href="styles.css">
<div class="anim-wrap">
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
</div>
8bd9146ffbe0418dcc1632b244c73829666346bc
2437
2436
2023-10-03T14:17:09Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
333c236e306a4538e312b13d2b5f86f58a3b2d5f
Template:Improve documentation
10
1677
3109
2023-10-03T18:00:15Z
wikipedia>MusikBot II
0
Changed protection settings for "[[Template:Improve documentation]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 2513 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require extended confirmed access] (indefinite) [Move=Require extended confirmed access] (indefinite))
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B={{Ombox
| type = content
| name = Improve documentation
| class = ambox-Refimprove
| image = [[File:Edit-copy green with red question mark.svg|50x40px|link=|alt=Edit-copy green with red question mark]]
| text = This {{#switch:{{NAMESPACE}}|Module=module|#default=template}}'s [[Wikipedia:Template documentation|documentation]] is '''missing, inadequate, or does not accurately describe its functionality and/or the [[Help:Template#Parameters|parameters]] in its code.''' Please help [{{fullurl:{{FULLPAGENAME}}{{#ifexist:{{FULLPAGENAME}}/doc|/doc}}|action=edit}} to expand and improve it]. {{#if:{{{talk|{{{1|}}}}}} |See [[{{TALKPAGENAME}}|talk page]] for details.|}} {{#if:{{{date|{{{2|}}}}}} |{{smaller|''({{{date}}})''}}}}
}}<includeonly>{{Subpage other||{{Dated maintenance category|||Templates with missing or incorrect documentation}}}}</includeonly>}}<noinclude>
{{Documentation}}
</noinclude>
f5ee14f86927e9f4417e5b2feb60ce1f765cd49f
MediaWiki:Common.css
8
240
2967
539
2023-10-04T15:36:29Z
Führerredux
2
css
text/css
/* CSS placed here will be applied to all skins */
/*
* Styling inside .mw-parser-output should generally use TemplateStyles.
*/
/* Reset italic styling set by user agent */
/*cite,*/
/*dfn {*/
/* font-style: inherit;*/
/*}*/
/* Straight quote marks for <q> */
/*q {*/
/* quotes: '"' '"' "'" "'";*/
/*}*/
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
/*blockquote {*/
/* overflow: hidden;*/
/* margin: 1em 0;*/
/* padding: 0 40px;*/
/*}*/
/* Consistent size for <small>, <sub> and <sup> */
/*small {*/
/* font-size: 85%;*/
/*}*/
/*.mw-body-content sub,*/
/*.mw-body-content sup {*/
/* font-size: 80%;*/
/*}*/
/* Same spacing for indented and unindented paragraphs on talk pages */
/*.ns-talk .mw-body-content dd {*/
/* margin-top: 0.4em;*/
/* margin-bottom: 0.4em;*/
/*}*/
/* Reduce page jumps by hiding collapsed/dismissed content */
/*.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),*/
/* Avoid FOUC/reflows on collapsed elements. */
/* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */
/* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */
/* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */
/*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,*/
/*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,*/
/*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,*/
/*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),*/
/*.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,*/
/* Hide charinsert base for those not using the gadget */
/*#editpage-specialchars {*/
/* display: none;*/
/*}*/
/* Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
*/
/*ol.references {*/
/* font-size: 90%;*/
/* margin-bottom: 0.5em;*/
/*}*/
/* Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
*/
/*span[ rel="mw:referencedBy" ] {*/
/* counter-reset: mw-ref-linkback 0;*/
/*}*/
/*span[ rel='mw:referencedBy' ] > a::before {*/
/* content: counter( mw-ref-linkback, lower-alpha );*/
/* font-size: 80%;*/
/* font-weight: bold;*/
/* font-style: italic;*/
/*}*/
/*a[ rel="mw:referencedBy" ]::before {*/
/* font-weight: bold;*/
/* content: "^";*/
/*}*/
/*span[ rel="mw:referencedBy" ]::before {*/
/* content: "^ ";*/
/*}*/
/*.mw-ref > a[data-mw-group=lower-alpha]::after {*/
/* content: '[' counter( mw-Ref, lower-alpha ) ']';*/
/*}*/
/*.mw-ref > a[data-mw-group=upper-alpha]::after {*/
/* content: '[' counter( mw-Ref, upper-alpha ) ']';*/
/*}*/
/*.mw-ref > a[data-mw-group=decimal]::after {*/
/* content: '[' counter( mw-Ref, decimal ) ']';*/
/*}*/
/*.mw-ref > a[data-mw-group=lower-roman]::after {*/
/* content: '[' counter( mw-Ref, lower-roman ) ']';*/
/*}*/
/*.mw-ref > a[data-mw-group=upper-roman]::after {*/
/* content: '[' counter( mw-Ref, upper-roman ) ']';*/
/*}*/
/*.mw-ref > a[data-mw-group=lower-greek]::after {*/
/* content: '[' counter( mw-Ref, lower-greek ) ']';*/
/*}*/
/* Styling for jQuery makeCollapsible, matching that of collapseButton */
/*.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {*/
/* font-weight: normal;*/
/* padding-right: 0.2em;*/
/* padding-left: 0.2em;*/
/*}*/
/*.mw-collapsible-leftside-toggle .mw-collapsible-toggle {*/
/* @noflip */
/* float: left;*/
/*}*/
/* Lists in wikitable data cells are always left-aligned */
/*.wikitable td ul,*/
/*.wikitable td ol,*/
/*.wikitable td dl {*/
/* @noflip */
/* text-align: left;*/
/*}*/
/* Change the external link icon to a PDF icon for all PDF files */
/*.mw-parser-output a[href$=".pdf"].external,*/
/*.mw-parser-output a[href*=".pdf?"].external,*/
/*.mw-parser-output a[href*=".pdf#"].external,*/
/*.mw-parser-output a[href$=".PDF"].external,*/
/*.mw-parser-output a[href*=".PDF?"].external,*/
/*.mw-parser-output a[href*=".PDF#"].external {*/
/* background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;*/
/* @noflip */
/* padding: 8px 18px 8px 0;*/
/*}*/
/* System messages styled similarly to fmbox */
/* for .mw-warning-with-logexcerpt, behavior of this line differs between
* the edit-protected notice and the special:Contribs for blocked users
* The latter has specificity of 3 classes so we have to triple up here.
*/
/*.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,*/
/*div.mw-lag-warn-high,*/
/*div.mw-cascadeprotectedwarning,*/
/*div#mw-protect-cascadeon {*/
/* clear: both;*/
/* margin: 0.2em 0;*/
/* border: 1px solid #bb7070;*/
/* background-color: #ffdbdb;*/
/* padding: 0.25em 0.9em;*/
/* box-sizing: border-box;*/
/*}*/
/* default colors for partial block message */
/* gotta get over the hump introduced by the triple class above */
/*.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {*/
/* border-color: #fc3;*/
/* background-color: #fef6e7;*/
/*}*/
/* Minimum thumb width */
/*figure[typeof~='mw:File/Thumb'],*/
/*figure[typeof~='mw:File/Frame'],*/
/*.thumbinner {*/
/* min-width: 100px;*/
/*}*/
/* Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views. */
/*#mw-subcategories,*/
/*#mw-pages,*/
/*#mw-category-media,*/
/*#filehistory,*/
/*#wikiPreview,*/
/*#wikiDiff {*/
/* clear: both;*/
/*}*/
/* Styling for tags in changes pages */
/*.mw-tag-markers {*/
/* font-style: italic;*/
/* font-size: 90%;*/
/*}*/
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */
/*.checkuser-show,*/
/*.sysop-show,*/
/*.abusefilter-show,*/
/*.abusefilter-helper-show,*/
/*.patroller-show,*/
/*.templateeditor-show,*/
/*.extendedmover-show,*/
/*.extendedconfirmed-show,*/
/*.autoconfirmed-show,*/
/*.user-show {*/
/* display: none;*/
/*}*/
/* Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive. */
/*.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,*/
/*.ve-ui-mwNoticesPopupTool-item .mbox-image,*/
/*.ve-ui-mwNoticesPopupTool-item .mbox-imageright {*/
/* display: none !important;*/
/*}*/
/* Remove bullets when there are multiple edit page warnings */
/*ul.permissions-errors {*/
/* margin: 0;*/
/*}*/
/*ul.permissions-errors > li {*/
/* list-style: none;*/
/*}*/
/* larger inline math */
/*span.mwe-math-mathml-inline {*/
/* font-size: 118%;*/
/*}*/
/* Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
*/
/*.mwe-math-fallback-image-display,*/
/*.mwe-math-mathml-display {*/
/* margin-left: 1.6em !important;*/
/* margin-top: 0.6em;*/
/* margin-bottom: 0.6em;*/
/*}*/
/*.mwe-math-mathml-display math {*/
/* display: inline;*/
/*}*/
/*@media screen {*/
/* Put a chequered background behind images, only visible if they have transparency,
* except on main, user, and portal namespaces
*/
/* body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {*/
/* background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;*/
/* }*/
/* Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode */
/* #siteSub {*/
/* display: block;*/
/* }*/
/*}*/
/* Hide FlaggedRevs notice UI when there are no pending changes */
/*.flaggedrevs_draft_synced,*/
/*.flaggedrevs_stable_synced,*/
/* "Temporary" to remove links in sidebar T255381 */
/*#t-upload,*/
/* Hide broken download box on Special:Book pending T285400 */
/*.mw-special-Book #coll-downloadbox {*/
/* display: none;*/
/*}*/
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/* Infobox template style */
/*.infobox {*/
/* border: 1px solid #a2a9b1;*/
/* border-spacing: 3px;*/
/* background-color: #f8f9fa;*/
/* color: black;*/
/* @noflip */
/* margin: 0.5em 0 0.5em 1em;*/
/* padding: 0.2em;*/
/* @noflip */
/* float: right;*/
/* @noflip */
/* clear: right;*/
/* font-size: 88%;*/
/* line-height: 1.5em;*/
/* width: 22em;*/
/*}*/
/*.infobox-header,*/
/*.infobox-label,*/
/*.infobox-above,*/
/*.infobox-full-data,*/
/*.infobox-data,*/
/*.infobox-below,*/
/*.infobox-subheader,*/
/*.infobox-image,*/
/*.infobox-navbar,*/
/* Remove element selector when every .infobox thing is using the standard module/templates */
/*.infobox th,*/
/*.infobox td {*/
/* vertical-align: top;*/
/*}*/
/*.infobox-label,*/
/*.infobox-data,*/
/* Remove element selector when every .infobox thing is using the standard module/templates */
/*.infobox th,*/
/*.infobox td {*/
/* @noflip */
/* text-align: left;*/
/*}*/
/* Remove .infobox when element selectors above are removed */
/*.infobox .infobox-above,*/
/*.infobox .infobox-title,*/
/* Remove element selector when every .infobox thing is using the standard module/templates */
/*.infobox caption {*/
/* font-size: 125%;*/
/* font-weight: bold;*/
/* text-align: center;*/
/*}*/
/*.infobox-title,*/
/* Remove element selector when every .infobox thing is using the standard module/templates */
/*.infobox caption {*/
/* padding: 0.2em;*/
/*}*/
/* Remove .infobox when element selectors above are removed */
/*.infobox .infobox-header,*/
/*.infobox .infobox-subheader,*/
/*.infobox .infobox-image,*/
/*.infobox .infobox-full-data,*/
/*.infobox .infobox-below {*/
/* text-align: center;*/
/*}*/
/* Remove .infobox when element selectors above are removed */
/*.infobox .infobox-navbar {*/
/* @noflip */
/* text-align: right;*/
/*}*/
/* Normal font styling for wikitable row headers with scope="row" tag */
/*.wikitable.plainrowheaders th[scope=row],*/
/*.wikitable.plainrowheaders th[scope=rowgroup] {*/
/* font-weight: normal;*/
/* @noflip */
/* text-align: left;*/
/*}*/
/* Remove underlines from certain links */
/*.nounderlines a,*/
/*.IPA a:link,*/
/*.IPA a:visited {*/
/* text-decoration: none !important;*/
/*}*/
/* Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a) */
/*.nowrap,*/
/*.nowraplinks a {*/
/* white-space: nowrap;*/
/*}*/
/* But allow wrapping where desired: */
/*.wrap,*/
/*.wraplinks a {*/
/* white-space: normal;*/
/*}*/
/* texhtml class for inline math (based on generic times-serif class) */
/*span.texhtml {*/
/* font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;*/
/* font-size: 118%;*/
/* line-height: 1;*/
/* white-space: nowrap;*/
/* Force tabular and lining display for texhtml */
/* font-variant-numeric: lining-nums tabular-nums;*/
/* font-kerning: none;*/
/*}*/
/*span.texhtml span.texhtml {*/
/* font-size: 100%;*/
/*}*/
/*@media screen {*/
/* .nochecker .gallerybox .thumb img {*/
/* background-image: none;*/
/* }*/
/*}*/
/* Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
*/
aab2bcf6c196b0e3e7a66df81c748044d846b50b
2969
2967
2023-10-04T15:41:17Z
Führerredux
2
css
text/css
CSS placed here will be applied to all skins
* Styling inside .mw-parser-output should generally use TemplateStyles.
Reset italic styling set by user agent
cite,
dfn {
font-style: inherit;
}
Straight quote marks for <q>
q {
quotes: '"' '"' "'" "'";
}
Avoid collision of blockquote with floating elements by swapping margin and padding
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
Consistent size for <small>, <sub> and <sup>
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup {
font-size: 80%;
}
Same spacing for indented and unindented paragraphs on talk pages
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
Reduce page jumps by hiding collapsed/dismissed content
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
Avoid FOUC/reflows on collapsed elements.
This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115).
TODO: Use :is() selector at some reasonable future when support is good for Most Clients
Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
Hide charinsert base for those not using the gadget
#editpage-specialchars {
display: none;
}
Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
ol.references {
font-size: 90%;
margin-bottom: 0.5em;
}
Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
span[ rel="mw:referencedBy" ] {
counter-reset: mw-ref-linkback 0;
}
span[ rel='mw:referencedBy' ] > a::before {
content: counter( mw-ref-linkback, lower-alpha );
font-size: 80%;
font-weight: bold;
font-style: italic;
}
a[ rel="mw:referencedBy" ]::before {
font-weight: bold;
content: "^";
}
span[ rel="mw:referencedBy" ]::before {
content: "^ ";
}
.mw-ref > a[data-mw-group=lower-alpha]::after {
content: '[' counter( mw-Ref, lower-alpha ) ']';
}
.mw-ref > a[data-mw-group=upper-alpha]::after {
content: '[' counter( mw-Ref, upper-alpha ) ']';
}
.mw-ref > a[data-mw-group=decimal]::after {
content: '[' counter( mw-Ref, decimal ) ']';
}
.mw-ref > a[data-mw-group=lower-roman]::after {
content: '[' counter( mw-Ref, lower-roman ) ']';
}
.mw-ref > a[data-mw-group=upper-roman]::after {
content: '[' counter( mw-Ref, upper-roman ) ']';
}
.mw-ref > a[data-mw-group=lower-greek]::after {
content: '[' counter( mw-Ref, lower-greek ) ']';
}
Styling for jQuery makeCollapsible, matching that of collapseButton
.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
font-weight: normal;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
@noflip
float: left;
}
Lists in wikitable data cells are always left-aligned
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
@noflip
text-align: left;
}
Change the external link icon to a PDF icon for all PDF files
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
@noflip
padding: 8px 18px 8px 0;
}
System messages styled similarly to fmbox
for .mw-warning-with-logexcerpt, behavior of this line differs between
* the edit-protected notice and the special:Contribs for blocked users
* The latter has specificity of 3 classes so we have to triple up here.
.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
default colors for partial block message
gotta get over the hump introduced by the triple class above
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {
border-color: #fc3;
background-color: #fef6e7;
}
Minimum thumb width
figure[typeof~='mw:File/Thumb'],
figure[typeof~='mw:File/Frame'],
.thumbinner {
min-width: 100px;
}
Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views.
#mw-subcategories,
#mw-pages,
#mw-category-media,
#filehistory,
#wikiPreview,
#wikiDiff {
clear: both;
}
Styling for tags in changes pages
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]].
.checkuser-show,
.sysop-show,
.abusefilter-show,
.abusefilter-helper-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive.
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
Remove bullets when there are multiple edit page warnings
ul.permissions-errors {
margin: 0;
}
ul.permissions-errors > li {
list-style: none;
}
larger inline math
span.mwe-math-mathml-inline {
font-size: 118%;
}
Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
@media screen {
Put a chequered background behind images, only visible if they have transparency,
* except on main, user, and portal namespaces
body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode
#siteSub {
display: block;
}
}
Hide FlaggedRevs notice UI when there are no pending changes
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced,
"Temporary" to remove links in sidebar T255381
#t-upload,
Hide broken download box on Special:Book pending T285400
.mw-special-Book #coll-downloadbox {
display: none;
}
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
Infobox template style
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
@noflip
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
@noflip
float: right;
@noflip
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
Remove element selector when every .infobox thing is using the standard module/templates
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
Remove element selector when every .infobox thing is using the standard module/templates
.infobox th,
.infobox td {
@noflip
text-align: left;
}
Remove .infobox when element selectors above are removed
.infobox .infobox-above,
.infobox .infobox-title,
Remove element selector when every .infobox thing is using the standard module/templates
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
Remove element selector when every .infobox thing is using the standard module/templates
.infobox caption {
padding: 0.2em;
}
Remove .infobox when element selectors above are removed
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
Remove .infobox when element selectors above are removed
.infobox .infobox-navbar {
@noflip
text-align: right;
}
Normal font styling for wikitable row headers with scope="row" tag
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
@noflip
text-align: left;
}
Remove underlines from certain links
.nounderlines a,
.IPA a:link,
.IPA a:visited {
text-decoration: none !important;
}
Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a)
.nowrap,
.nowraplinks a {
white-space: nowrap;
}
But allow wrapping where desired:
.wrap,
.wraplinks a {
white-space: normal;
}
texhtml class for inline math (based on generic times-serif class)
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
white-space: nowrap;
Force tabular and lining display for texhtml
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
span.texhtml span.texhtml {
font-size: 100%;
}
@media screen {
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
70d32240e903c0adfce5a825a305c0c21f5d142d
MediaWiki:Mobile.css
8
975
2968
2142
2023-10-04T15:37:10Z
Führerredux
2
test
css
text/css
/*
* This is the CSS common to all mobile skins on en.Wikipedia.
* Styling inside .mw-parser-output should generally use TemplateStyles.
*
* [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be
* worth reviewing.
*
* special note that this page loads late by Javascript, which may cause
* [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]]
*/
/* Reset user agent styles. We don't reset small or blockquote here deliberately */
/*cite,*/
/*dfn {*/
/* font-style: inherit;*/
/*}*/
/*q {*/
/* quotes: '"' '"' "'" "'";*/
/*}*/
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and
[[MediaWiki:Group-autoconfirmed.css]]. */
/*.checkuser-show,*/
/*.sysop-show,*/
/*.templateeditor-show,*/
/*.extendedmover-show,*/
/*.patroller-show,*/
/*.extendedconfirmed-show,*/
/*.autoconfirmed-show {*/
/* display: none;*/
/*}*/
/* Prevent flags in tables from collapsing
Fix for T116318
*/
/*.flagicon img {*/
/* min-width: 25px;*/
/*}*/
/* Prevent unnecessary margin at the bottom of centralnotices */
/*.cnotice {*/
/* margin-bottom: 0 !important;*/
/*}*/
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/*
.infobox
DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile.
*/
/* removed inline from module as we work toward Tstyles support
* Use three classes to match specificity of MobileFrontend/Minerva selectors */
/*.content .mw-parser-output .infobox-header,*/
/*.content .mw-parser-output .infobox-subheader,*/
/*.content .mw-parser-output .infobox-above,*/
/*.content .mw-parser-output .infobox-title,*/
/*.content .mw-parser-output .infobox-image,*/
/*.content .mw-parser-output .infobox-full-data,*/
/*.content .mw-parser-output .infobox-below {*/
/* text-align: center;*/
/*}*/
/* Prevent line breaks in silly places:
1) Where desired
2) Links when we don't want them to
*/
/*.mw-parser-output .nowrap,*/
/*.nowraplinks a {*/
/* white-space: nowrap;*/
/*}*/
/*.mw-parser-output .infobox .nowrap {*/
/* white-space: normal !important;*/
/*}*/
/* But allow wrapping where desired: */
/*.wrap,*/
/*.wraplinks a {*/
/* white-space: normal;*/
/*}*/
/* Generic class texhtml class for inline math */
/*span.texhtml {*/
/* font-family: serif;*/
/* white-space: nowrap;*/
/*}*/
/* Normal font styling for wikitable row headers with scope="row" tag */
/*.wikitable.plainrowheaders th[scope=row],*/
/*.wikitable.plainrowheaders th[scope=rowgroup] {*/
/* font-weight: normal;*/
/* @noflip */
/* text-align: left;*/
/*}*/
/* One of the not TemplateStyles things */
/* https://phabricator.wikimedia.org/T180396#5317728 */
/*@media print {*/
/* .navbox,*/
/* .hatnote,*/
/* .ambox {*/
/* display: none !important;*/
/* }*/
/*}*/
ee5c004652378db46acd1601c8da50dc419cb547
2970
2968
2023-10-04T15:42:54Z
Führerredux
2
css
text/css
* This is the CSS common to all mobile skins on en.Wikipedia.
* Styling inside .mw-parser-output should generally use TemplateStyles.
*
* [[mw:Recommendations for mobile friendly articles on Wikimedia wikis]] may be
* worth reviewing.
*
* special note that this page loads late by Javascript, which may cause
* [[FOUC]]s for "lead" content if styled from here. See [[phab:T190083]]
Reset user agent styles. We don't reset small or blockquote here deliberately
cite,
dfn {
font-style: inherit;
}
q {
quotes: '"' '"' "'" "'";
}
Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]] and
[[MediaWiki:Group-autoconfirmed.css]].
.checkuser-show,
.sysop-show,
.templateeditor-show,
.extendedmover-show,
.patroller-show,
.extendedconfirmed-show,
.autoconfirmed-show {
display: none;
}
Prevent flags in tables from collapsing
Fix for T116318
.flagicon img {
min-width: 25px;
}
Prevent unnecessary margin at the bottom of centralnotices
.cnotice {
margin-bottom: 0 !important;
}
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
.infobox
DO NOT style infobox's here. That should be taken care of in the associated templates via template styles. Styles here will lead to flash of unstyled content on mobile.
removed inline from module as we work toward Tstyles support
* Use three classes to match specificity of MobileFrontend/Minerva selectors
.content .mw-parser-output .infobox-header,
.content .mw-parser-output .infobox-subheader,
.content .mw-parser-output .infobox-above,
.content .mw-parser-output .infobox-title,
.content .mw-parser-output .infobox-image,
.content .mw-parser-output .infobox-full-data,
.content .mw-parser-output .infobox-below {
text-align: center;
}
Prevent line breaks in silly places:
1) Where desired
2) Links when we don't want them to
.mw-parser-output .nowrap,
.nowraplinks a {
white-space: nowrap;
}
.mw-parser-output .infobox .nowrap {
white-space: normal !important;
}
But allow wrapping where desired:
.wrap,
.wraplinks a {
white-space: normal;
}
Generic class texhtml class for inline math
span.texhtml {
font-family: serif;
white-space: nowrap;
}
Normal font styling for wikitable row headers with scope="row" tag
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
@noflip
text-align: left;
}
One of the not TemplateStyles things
https://phabricator.wikimedia.org/T180396#5317728
@media print {
.navbox,
.hatnote,
.ambox {
display: none !important;
}
}
037be40e4ef43fbba33014ba0748fba093e80e9a
Module:Lang/data
828
465
3131
1034
2023-10-06T12:06:36Z
wikipedia>Trappist the monk
0
+xsc-x-pontic;
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage();
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table_t = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------
For internationalization; not used at en.wiki
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki
language list for the local language.
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens
add an appropriate entry to the override table below.
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply
spelling differences:
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym
dv: IANA: Dhivehi MW: Divehi
el: IANA: Modern Greek MW: Greek
ht: IANA: Haitian MW: Haitian Creole
ky: IANA: Kirghiz MW: Kyrgyz
li: IANA: Limburgan MW: Limburgish
or: IANA: Oriya MW: Odia
os: IANA: Ossetian MW: Ossetic
"pa: IANA: Panjabi MW: Punjabi
"ps: IANA: Pushto MW: Pashto
"to: IANA: Tonga MW: Tongan
"ug: IANA: Uighur MW: Uyghur
use the override table to override language names that are incorrect for your project
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))
(replacing <tag> with the language tag for your language)
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.
]]
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all
if true == media_wiki_override_enable then
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list
if lang_name_table_t.lang[tag] then -- if the tag is in the main list
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki
end
end
end
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------
["ab"] = "Abkhaz", -- to match en.wiki article name
["ca-valencia"] = "Valencian",
["cu"] = "Church Slavonic", -- 2nd IANA name;
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names
["de-ch"] = "Swiss Standard German",
["en-au"] = "Australian English",
["en-ca"] = "Canadian English",
["en-emodeng"] = "Early Modern English",
["en-gb"] = "British English",
["en-ie"] = "Irish English",
["en-in"] = "Indian English",
["en-nz"] = "New Zealand English",
["en-us"] = "American English",
["en-za"] = "South African English",
["fy"] = "West Frisian", -- Western Frisian
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title
["nl-be"] = "Flemish", -- match MediaWiki
["oc-provenc"] = "Provençal",
["ps"] = "Pashto", -- Pushto
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki
["tw-asante"] = "Asante Twi",
["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["av"] = "Avar", -- Avaric
["bo"] = "Standard Tibetan", -- Tibetan
["el"] = "Greek", -- Modern Greek
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa
["ff"] = "Fula", -- Fulah
["ht"] = "Haitian Creole", -- Haitian
["hz"] = "Otjiherero", -- Herero
["ii"] = "Yi", -- Sichuan Yi
["ki"] = "Gikuyu", -- Kikuyu
["kl"] = "Greenlandic", -- Kalaallisut
["ky"] = "Kyrgyz", -- Kirghiz
["lg"] = "Luganda", -- Ganda
["li"] = "Limburgish", -- Limburgan
["mi"] = "Māori", -- Maori
["na"] = "Nauruan", -- Nauru
["nb"] = "Bokmål", -- Norwegian Bokmål
["nd"] = "Northern Ndebele", -- North Ndebele
["nn"] = "Nynorsk", -- Norwegian Nynorsk
["nr"] = "Southern Ndebele", -- South Ndebele
["ny"] = "Chichewa", -- Nyanja
["oj"] = "Ojibwe", -- Ojibwa
["or"] = "Odia", -- Oriya
["pa"] = "Punjabi", -- Panjabi
["rn"] = "Kirundi", -- Rundi
["sl"] = "Slovene", -- Slovenian
["ss"] = "Swazi", -- Swati
["st"] = "Sotho", -- Southern Sotho
["to"] = "Tongan", -- Tonga
--<end do-not-edit except to comment out>--
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)
["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name
["art"] = "constructed", -- to match en.wiki article; lowercase for category name
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat
["bxr"] = "Russian Buryat", -- Russia Buriat;
["bxu"] = "Chinese Buryat", -- China Buriat;
["byr"] = "Yipma", -- Baruya, Yipma
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)
["frr"] = "North Frisian", -- Northern Frisian
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian
["gsw-fr"] = "Alsatian", -- match MediaWiki
["haa"] = "Hän", -- Han; to match en.wiki article title
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title
["jam"] = "Jamaican Patois", -- Jamaican Creole English
["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo
["mhr"] = "Meadow Mari", -- Eastern Mari
["mid"] = "Modern Mandaic", -- Mandaic
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)
["mla"] = "Tamambo", -- Malo
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text
["nrf-gg"] = "Guernésiais", -- match MediaWiki
["nrf-je"] = "Jèrriais", -- match MediaWiki
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)
["orv"] = "Old East Slavic", -- Old Russian
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title
["stq"] = "Saterland Frisian", -- Saterfriesisch
["und"] = "undetermined", -- capitalization to match existing category
["wrg"] = "Warrongo", -- Warungu
["xal-ru"] = "Kalmyk", -- to match en.wiki article title
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title
["zxx"] = "no linguistic content", -- capitalization
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["ace"] = "Acehnese", -- Achinese
["aec"] = "Sa'idi Arabic", -- Saidi Arabic
["akl"] = "Aklan", -- Aklanon
["alt"] = "Altay", -- Southern Altai
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache
["bal"] = "Balochi", -- Baluchi
-- ["bcl"] = "Central Bicolano", -- Central Bikol
["bin"] = "Edo", -- Bini
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya
["chg"] = "Chagatay", -- Chagatai
["ckb"] = "Sorani Kurdish", -- Central Kurdish
["cnu"] = "Shenwa", -- Chenoua
["coc"] = "Cocopah", -- Cocopa
["diq"] = "Zazaki", -- Dimli
["fit"] = "Meänkieli", -- Tornedalen Finnish
["fkv"] = "Kven", -- Kven Finnish
["frk"] = "Old Frankish", -- Frankish
["gez"] = "Ge'ez", -- Geez
["gju"] = "Gujari", -- Gujari
["gsw"] = "Alemannic German", -- Swiss German
["gul"] = "Gullah", -- Sea Island Creole English
["hak"] = "Hakka", -- Hakka Chinese
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew
["hnd"] = "Hindko", -- Southern Hindko
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun
["kaa"] = "Karakalpak", -- Kara-Kalpak
["khb"] = "Tai Lü", -- Lü
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish
["kpo"] = "Kposo", -- Ikposo
["krj"] = "Kinaray-a", -- Kinaray-A
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan
["lez"] = "Lezgian", -- Lezghian
["liv"] = "Livonian", -- Liv
["lng"] = "Lombardic", -- Langobardic
["mia"] = "Miami-Illinois", -- Miami
["miq"] = "Miskito", -- Mískito
["mix"] = "Mixtec", -- Mixtepec Mixtec
["mni"] = "Meitei", -- Manipuri
["mrj"] = "Hill Mari", -- Western Mari
["mww"] = "White Hmong", -- Hmong Daw
["nds-nl"] = "Dutch Low Saxon", -- Low German
-- ["new"] = "Nepal Bhasa", -- Newari
["nso"] = "Northern Sotho", -- Pedi
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari
["ood"] = "O'odham", -- Tohono O'odham
["otk"] = "Old Turkic", -- Old Turkish
["pal"] = "Middle Persian", -- Pahlavi
["pam"] = "Kapampangan", -- Pampanga
["phr"] = "Potwari", -- Pahari-Potwari
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit
-- ["pnb"] = "Punjabi", -- Western Panjabi
["psu"] = "Shauraseni", -- Sauraseni Prākrit
["rap"] = "Rapa Nui", -- Rapanui
["rar"] = "Cook Islands Māori", -- Rarotongan
["rmu"] = "Scandoromani", -- Tavringer Romani
["rom"] = "Romani", -- Romany
["rup"] = "Aromanian", -- Macedo-Romanian
["ryu"] = "Okinawan", -- Central Okinawan
["sdc"] = "Sassarese", -- Sassarese Sardinian
["sdn"] = "Gallurese", -- Gallurese Sardinian
["shp"] = "Shipibo", -- Shipibo-Conibo
["src"] = "Logudorese", -- Logudorese Sardinian
["sro"] = "Campidanese", -- Campidanese Sardinian
["tkl"] = "Tokelauan", -- Tokelau
["tvl"] = "Tuvaluan", -- Tuvalu
["tyv"] = "Tuvan", -- Tuvinian
["vls"] = "West Flemish", -- Vlaams
["wep"] = "Westphalian", -- Westphalien
["xal"] = "Oirat", -- Kalmyk
["xcl"] = "Old Armenian", -- Classical Armenian
["yua"] = "Yucatec Maya", -- Yucateco
--<end do-not-edit except to comment out>--
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------
["akk-x-latbabyl"] = "Late Babylonian",
["akk-x-midassyr"] = "Middle Assyrian Akkadian",
["akk-x-midbabyl"] = "Middle Babylonian Akkadian",
["akk-x-neoassyr"] = "Neo-Assyrian Akkadian",
["akk-x-neobabyl"] = "Neo-Babylonian Akkadian",
["akk-x-old"] = "Old Akkadian",
["akk-x-oldassyr"] = "Old Assyrian Akkadian",
["akk-x-oldbabyl"] = "Old Babylonian Akkadian",
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages
["ca-x-old"] = "Old Catalan",
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages
["egy-x-demotic"] = "Demotic Egyptian",
["egy-x-late"] = "Late Egyptian",
["egy-x-middle"] = "Middle Egyptian",
["egy-x-old"] = "Old Egyptian",
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages
["gmw-x-ecg"] = "East Central German",
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
["grc-x-attic"] = "Attic Greek",
["grc-x-biblical"] = "Biblical Greek",
["grc-x-byzant"] = "Byzantine Greek",
["grc-x-classic"] = "Classical Greek",
["grc-x-doric"] = "Doric Greek",
["grc-x-hellen"] = "Hellenistic Greek",
["grc-x-ionic"] = "Ionic Greek",
["grc-x-koine"] = "Koinē Greek",
["grc-x-medieval"] = "Medieval Greek",
["grc-x-patris"] = "Patristic Greek",
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages
["inc-x-mitanni"] = "Mitanni-Aryan", -- inc in IANA is Indic languages
["inc-x-proto"] = "Proto-Indo-Aryan",
["ine-x-proto"] = "Proto-Indo-European",
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there
["la-x-medieval"] = "Medieval Latin",
["la-x-new"] = "New Latin",
["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages
["prg-x-old"] = "Old Prussian",
["sem-x-ammonite"] = "Ammonite",
["sem-x-aramaic"] = "Aramaic",
["sem-x-canaan"] = "Canaanite languages",
["sem-x-dumaitic"] = "Dumaitic",
["sem-x-egurage"] = "Eastern Gurage",
["sem-x-hatran"] = "Hatran Aramaic",
["sem-x-oldsoara"] = "Old South Arabian",
["sem-x-palmyren"] = "Palmyrene Aramaic",
["sem-x-proto"] = "Proto-Semitic",
["sem-x-taymanit"] = "Taymanitic",
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai
["yuf-x-wal"] = "Walapai",
["yuf-x-yav"] = "Yavapai",
["xsc-x-pontic"] = "Pontic Scythian", -- xsc in IANA is Scythian
["xsc-x-saka"] = "Saka",
["xsc-x-sarmat"] = "Sarmatian",
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon)
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page
["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon)
["toi"] = "Tonga language (Zambia and Zimbabwe)", -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo)
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['hno'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['pnb'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['skr'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
this_wiki_lang_tag = this_wiki_lang_tag,
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction
article_name = article_name,
lang_name_table = lang_name_table_t,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};
120387552d6d88bcddb6260de37dcd404c28ccdf
Template:Tracks Wikidata
10
1255
3081
2589
2023-10-06T19:37:14Z
wikipedia>SWinxy
0
{{Section link}}
wikitext
text/x-wiki
{{Sister project
| image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]]
| position = {{{position|}}}
| text = This {{template other
| template
| {{module other
| module
| {{category other
| category
| page <!-- not template, module, or category -->
}}
}}
}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}}
| one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details.
| the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}}
}}
}}<includeonly>{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default = {{template other
| [[Category:Templates tracking Wikidata]]
| {{module other
| [[Category:Modules tracking Wikidata]]
| {{category other
| <!-- if used in a category, don't automatically add parent category -->
| <!-- not template, module, or category -->
}}
}}
}}
}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc sub-page -->
</noinclude>
42e72b2011b4a187af0427756de66dc2772894cc
Template:Uses Wikidata
10
1069
3087
2337
2023-10-06T20:05:41Z
wikipedia>SWinxy
0
Wrap catting in <includeonly> instead of an ifeq
wikitext
text/x-wiki
{{Sister project
| position = {{{position|}}}
| project = data
| text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}:
{{#invoke:Uses Wikidata|usesProperty}}
}}}}<includeonly>{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default={{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }}
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage -->
</noinclude>
dd057e93ccd4b8fe8d6acd82c6d1d3ee2589a36a
Template:Coord/doc
10
1663
3067
2023-10-10T08:18:03Z
Materialscientist
50
Reverted edits by [[Special:Contributions/68.168.231.24|68.168.231.24]] ([[User talk:68.168.231.24|talk]]) ([[WP:HG|HG]]) (3.4.12)
wikitext
text/x-wiki
{{Documentation subpage}}
{{#ifeq: {{FULLPAGENAME}} | Template:Coord | {{high-use|all-pages=yes}} }}
{{Transwiki guide candidate}}
{{lua|Module:Coordinates}}
{{#switch: {{FULLPAGENAME}} | Template:Coord | Template:Coord/doc = {{Uses Wikidata|P625}} {{Tracks Wikidata|P625|cat=Coordinates Wikidata tracking categories}} }}
When this template is used with '''display=title''', the template is not displayed on mobile. {{Navbox visibility}}
This template is still displayed on mobile when used with '''display=inline''', e.g. in infoboxes.
==Quick guide==
{{Coord how-to}}
__TOC__
==Purpose==
{{tlf|Coord}} provides a standard notation for encoding locations by their [[latitude]] and [[longitude]] coordinates. It is primarily for specifying the [[World Geodetic System|WGS84]] geographic coordinates of locations on [[Earth]], at the same time emitting a machine-readable [[Geo (microformat)|Geo microformat]]. However, it can also encode locations on natural satellites, dwarf planets, and planets other than Earth.
* To specify celestial coordinates, use {{tl|Sky}} instead.
* Tag articles which lack coordinates (but need them) with {{tl|Coord missing}}.
* If the subject's location is truly unknown or disputed, note this with {{tl|Coord unknown}}.
* If the coordinates were [[meta:Wikidata/Notes/Inclusion syntax|transcluded from Wikidata]], use {{tl|WikidataCoord}}.
See also: [[Wikipedia:WikiProject Geographical coordinates]].
==Features==
Latitude and longitude may be specified (with appropriate precision) either in decimal notation or as degrees/minutes/seconds. By default, coordinates appear in the format used to specify them. However, the <code>format=</code> parameter can be used to force display in a particular format. The template also accepts and displays coordinates formatted as degrees and decimal minutes as found on charts and maritime references.
The template displays the formatted coordinates with a [[hyperlink]] to [[mw:GeoHack|GeoHack]]. GeoHack displays information customized to the location, including links to external mapping services.
For terrestrial locations, a blue globe ([[Image:Erioll_world.svg|18px]]) appears to the left of the hyperlink. Clicking on the globe activates the [[:meta:WikiMiniAtlas|WikiMiniAtlas]] (requires [[JavaScript]]).
By default, coordinates appear "in line" with the adjacent text. However, the <code>display=</code> parameter can be used to move the coordinates up near the page title (in desktop view only; title coordinates do not display in mobile view)—or display them in both places at once.
The template outputs coordinates in three formats:
* [[Degree (angle)|Degree]]/[[Minute of arc|minutes]]/[[Second of arc|seconds]] ("DMS", precision is degrees, or degrees/minutes, or degrees/minutes/seconds, based on input precision).
* [[Decimal degrees]] (varying the number of decimal places based on input precision)
* A machine readable [[Geo (microformat)|Geo microformat]].
Additional features
* Logged-in users can [[#Per-user_display_customization|customize]] how coordinates appear in their browsers.
* You can get coordinates from Wikidata by transcluding this template without any numbered arguments.
* You can extract information from the Coord template for use in mathematical expressions. For details, see [[:Module:Coordinates]].
* All coordinates used in a page through this template are registered in the [[mw:API:Geosearch|geosearch API]]. If a coordinate is using title display, then these coordinates will be marked as the primary coordinates with regards to the page and therefore the topic of that page.
==Caveats==
The template '''must not''' be modified without prior discussion. External tools can depend on the format of both the wikitext and/or the generated html.
== Usage ==
'''{{coord|'''''latitude'''''|'''''longitude'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''N/S'''''|'''''dd'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''mm'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
The hemisphere identifiers (''N/S'') and (''E/W''), if used, must be adjacent to the enclosing pipe "'''<code>|</code>'''" characters, and cannot be preceded or succeeded by spaces.
There are two kinds of parameters, all optional:
*<span id="1">'''Coordinate parameters'''</span> are parameters that {{tl|Coord}} passes to the map server. These have the format ''parameter:value'' and are separated from each other by the underscore character ( _ ). The supported coordinate parameters are ''dim:'', ''globe:'', ''region:'', ''scale:'', ''source:'', and ''type:''. See [[#Coordinate parameters|coordinate parameters]] for details and examples.
*<span id="2">'''Template parameters'''</span> are parameters used by the {{tl|Coord}} template. These have format ''parameter=value'' and are separated from each other by the pipe character ( | ). The supported template parameters are ''display='', ''format='', ''name='', and ''notes=''.
:* '''display=''' can be one of the following:
::* <code>display=inline</code> – Display the coordinate inline (default)
::* <code>display=title</code> – Display the coordinate at the top of the article, beside the article's title (replaces {{tl|coor title dms}} family; coordinates are displayed in desktop view only; title coordinates do not display in mobile view)
::** shortcut: <code>display=t</code>
::* <code>display=inline,title</code> – Display the coordinate both inline and beside the article's title (replaces {{tl|coor at dms}} family)
::** shortcut: <code>display=it</code>
::* <code>display=title,inline</code> has the same effect as <code>display=inline,title</code>
::Note: the <code>title</code> attribute indicates that the coordinates apply to the entire article, and not just one of (perhaps many) places mentioned in it—so it should only be omitted in the latter case. Additionally the title option will mark the coordinates as the primary coordinates for the page (and topic of the page) in the [[mw:API:Geosearch|geosearch API]].
:* '''format=''' can be used to force ''dec'' or ''dms'' coordinate display.
::* <code>format=dec</code> reformats the coordinates to <span style="text-decoration:underline;">decimal degrees</span> format.
::* <code>format=dms</code> reformats the coordinates to <span style="text-decoration:underline;">degrees | minutes | seconds</span> format.
:* '''name=''' can be used to annotate inline coordinates for display in map services such as the [[:meta:WikiMiniAtlas|WikiMiniAtlas]]. If omitted, the article's title (PAGENAME) is assumed.
::Note: a ''name='' parameter causes {{tl|Coord}} to emit an [[hCard]] [[microformat]] using that name, ''even if used within an existing hCard''. Do not use when the name is that of a person (e.g for a gravesite), as the generated hCard would be invalid. Also, do not use square brackets in names.
:* '''notes=''' specifies text to be displayed immediately following the coordinates. This is primarily intended for adding footnotes to coordinates displayed beside the title.
:* '''qid=''' specify Q item to display the coordinates of. Used primarily by Wikidata powered infoboxes.
==Helper functions==
Helper functions are available to manipulate the output from {{tl|Coord}} when it appears in a container template such as an infobox.
===To extract the latitude from a Coord template===
{{See also|Geographic coordinate conversion}}
Use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki> </code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}
and similarly to extract the longitude, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}
:'''Note: this method removes the microformat markup, and should not be used inside templates which emit parent microformats, such as infoboxes or table-row templates.'''
=== Displaying all coordinate links on one map ===
The template {{tl|GeoGroup}} can be used in an article with coordinates. This template creates links to mapping services which display all the coordinates on a single map, and links to other services which allow the coordinates to be used or downloaded in a variety of formats.
== Examples ==
{{for|the guideline on coordinate precision|WP:OPCOORD}}
{| class="wikitable"
| <code><nowiki>{{coord|43.651234|-79.383333}}</nowiki></code>
| {{coord|43.651234|-79.383333}}
| Toronto – Fully decimal – western hemisphere implied by negation
|-
| <code><nowiki>{{coord|43.65|-79.38}}</nowiki></code>
| {{coord|43.65|-79.38}}
| Toronto – low precision decimal
|-
| <code><nowiki>{{coord|43.6500|-79.3800}}</nowiki></code>
| {{coord|43.6500|-79.3800}}
| Toronto – medium precision decimal with trailing zeroes
|-
| <code><nowiki>{{coord|43.653500|N|79.384000|W}}</nowiki></code>
| {{coord|43.653500|N|79.384000|W}}
| Toronto – high precision decimal with explicit hemisphere notation
|-
| <code><nowiki>{{coord|43|29|N|79|23|W}}</nowiki></code>
| {{coord|43|29|N|79|23|W}}
| Toronto – degrees & minutes
|-
| <code><nowiki>{{coord|43|29|13|N|79|23|02|W}}</nowiki></code>
| {{coord|43|29|4|N|79|23|0|W}}
| Toronto – degrees, minutes & seconds
|-
| <code><nowiki>{{coord|43|29|12.6|N|79|23|02.4|W}}</nowiki></code>
| {{coord|43|29|12.6|N|79|23|02.4|W}}
| Toronto – degrees, minutes, seconds & fractions of seconds
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E}}
| Moscow – N & E
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dms}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E|format=dms}}
| Convert to dms format
|-
| <code><nowiki>{{coord|39.098095|-94.587307|format=dms}}</nowiki></code>
| {{coord|39.098095|-94.587307|format=dms}}
| Decimal conversion without N/S/E/W
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}
| Convert to decimal and label on some maps
|-
| <code><nowiki>{{coord|33|55|S|18|25|E}}</nowiki></code>
| {{coord|33|55|S|18|25|E}}
| Cape Town – S & E
|-
| <code><nowiki>{{coord|35|00|N|105|00|E}}</nowiki></code>
| {{coord|35|00|N|105|00|E}}
| People's Republic of China
|-
| <code><nowiki>{{coord|22|54|30|S|43|14|37|W}}</nowiki></code>
| {{coord|22|54|30|S|43|14|37|W}}
| Rio – S & W
|-
| <code><nowiki>{{coord|22|S|43|W}}</nowiki></code>
| {{coord|22|S|43|W}}
| A [[Degree Confluence Project|degree confluence]].
|-
| <code><nowiki>{{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}</nowiki></code>
| {{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}
| Birmingham – with display, notes, and parameter settings; note that these coordinates are also displayed at the top of this page.
|-
| <code><nowiki>{{coord|51|25.813|N|0|43.945|E}}</nowiki></code>
| {{coord|51|25.813|N|0|43.945|E}}
| Navigation buoy in the River Medway, England.
|-
| <code><nowiki>{{coord|51|36.287|N|8|32.018|W}}</nowiki></code>
| {{coord|51|36.287|N|8|32.018|W}}
| Lighthouse at the [[Old Head of Kinsale]] as defined by the [[Commissioners of Irish Lights]].
|}
===References===
{{reflist}}
== Coordinate parameters ==
The first unnamed parameter following the longitude is an optional string of coordinate parameters, separated by underscores. These parameters help [[mw:GeoHack|GeoHack]] select suitable map resources, and they will become more important when [[meta:Wikimaps|Wikimaps]] becomes fully functional.
===== type:''T'' =====
{{Wikipedia:WikiProject Geographical coordinates/type:}}
===== scale:''N'' =====
{{Wikipedia:WikiProject Geographical coordinates/scale:}}
===== dim:''D'' =====
The <code>dim:</code> parameter defines the [[diameter]] of a viewing circle centered on the coordinate. While the default unit of measurement is metres, the <code>km</code> suffix may be appended to indicate kilometres.
[[tswiki:GeoHack|GeoHack]] uses <code>dim:</code> to select a [[Scale (map)|map scale]] such that the viewing circle appears roughly {{convert|10|cm|in|0}} in diameter on a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default viewing circle of {{convert|30|km|mi}}.
{| class="wikitable"
|+ Samples
! Subject
! View diameter
! Markup
! Result
|-
| [[Western Hemisphere]]
| style="text-align:right;" | {{convert|10000|km|mi}}
| <code><nowiki>{{coord|0|N|90|W|dim:10000km}}</nowiki></code>
| {{coord|0|N|90|W|dim:10000km}}
|-
| [[Ohio]]
| style="text-align:right;" | {{convert|400|km|mi}}
| <code><nowiki>{{coord|40.5|-82.5|dim:400km}}</nowiki></code>
| {{coord|40.5|-82.5|dim:400km}}
|-
| [[Dresden]]
| style="text-align:right;" | {{convert|20000|m|mi}}
| <code><nowiki>{{coord|51.03|13.73|dim:20000}}</nowiki></code>
| {{coord|51.03|13.73|dim:20000}}
|-
| [[Statue of Liberty]]
| style="text-align:right;" | {{convert|100|m|ft}}
| <code><nowiki>{{coord|40.6892|-74.0445|dim:100}}</nowiki></code>
| {{coord|40.6892|-74.0445|dim:100}}
|-
|}
===== region:''R'' =====
{{Wikipedia:WikiProject Geographical coordinates/region:}}
===== globe:''G'' =====
{{Wikipedia:WikiProject Geographical coordinates/globe:}}
===== source:''S'' =====
{{Wikipedia:WikiProject Geographical coordinates/source:}}
==Per-user display customization==
{{UF-coord-classes}}
==Incorrect uses and maintenance categories==
The template has some input checks built in. Most errors display a <span style="color:red;">'''bold, red'''</span> message inline and categorize the article in the [[Wikipedia:Hidden category|hidden]] [[Wikipedia:Categorization#Non-article and maintenance categories|maintenance category]] '''[[:Category:Pages with malformed coordinate tags|Pages with malformed coordinate tags]]'''. There {{#IFEQ:{{PAGESINCATEGORY:Pages with malformed coordinate tags}}|1|is currently '''1''' page|are currently '''{{PAGESINCATEGORY:Pages with malformed coordinate tags}}''' pages}} in that category. See the category description for further instructions.
A more thorough daily report of coordinates needing repair is at [[tools:~dispenser/view/File viewer#log:coord-enwiki.log]].
''See also:'' [[WT:GEO#To do]]
==Internals==
This template is completely powered by the [[Wikipedia:Lua|Lua]] <code>[[:Module:Coordinates]]</code>.
===Class names===
The class names '''geo''', '''latitude''' and '''longitude''' are used to generate the microformat and '''MUST NOT''' be changed.
===History===
This template used to use a lot of [[Template:Coord/doc/internals|sub templates]] but these have all been replaced by {{tlm|Coordinates}}.
===Template Data===
This template uses overloading{{clarify|reason=What does this mean? Where is it defined?}} which does not work well with the [[Wikipedia:TemplateData|VisualEditor/TemplateData]]. Consider using "Edit source" instead of the visual editor until this defect is corrected. To facilitate visual editing in the meantime, consider using {{tl|coordDec}} for signed decimal degrees, {{tl|coordDMS}} when degrees minutes and seconds are specified, and {{tl|coordDM}} when just degrees and minutes are given.
{{TemplateData header}}
<templatedata>{
"description": "Encodes the latitude and longitude coordinates of a location, provides a link to map of the location. This template does not work well with the Visual Editor, consider using {{coordDec}} for signed decimal degrees, {{coordDMS}} when degrees minutes and seconds are specified {{coordDM}} when only degrees and minutes are specified. To use this template you will need to use positional parameter following one of these schemes: {{coord | D | M | S | NS | D | M | S | EW | geo | opts}}, {{coord | D | M | NS | D | M | EW | geo | opts}}, {{coord | D| NS | D| EW | geo | opts}} {{coord | sD | sD | geo | opts}} where D is degrees, M is minutes, S seconds, sD signed decimal degrees, NS is N or S, EW is E or W, opts are named parameter and geo are the coordinate parameters described on the main doc page.",
"params": {
"1": {
"label": "1",
"description": "Either degrees latitude or a signed decimal degrees latitude",
"type": "number",
"required": false,
"suggested": true
},
"2": {
"label": "2",
"description": "Either: minutes latitude, signed decimal degrees longitude or 'N' or 'S'.",
"type": "string",
"required": false,
"suggested": true
},
"3": {
"label": "3",
"description": "Either: second latitude, degrees longitude, 'N' or 'S' or GeoHack parameters",
"type": "string",
"required": false
},
"4": {
"label": "4",
"description": "Either: degrees longitude, 'N', 'S', 'E' or 'W' or GeoHack parameters",
"type": "string",
"required": false
},
"5": {
"label": "5",
"description": "Either: degrees longitude, minutes longitude or GeoHack parameters",
"type": "string",
"required": false
},
"6": {
"label": "6",
"description": "Either: minutes longitude, 'E' or 'W' or GeoHack parameters",
"type": "string",
"required": false
},
"7": {
"label": "7",
"description": "Either second longitude, or GeoHack parameters",
"type": "string",
"required": false
},
"8": {
"label": "8",
"description": "'E' or 'W'.",
"type": "string",
"required": false
},
"9": {
"label": "9",
"description": "GeoHack parameters. Example: dim:30_region:US-WI_type:event",
"type": "string",
"required": false
},
"qid": {
"label": "Wikidata item",
"description": "Retrieve coordinates from a WikiData entry instead of from this template's parameters",
"type": "line",
"required": false,
"example": "Q513"
},
"display": {
"label": "Display",
"description": "Where it is displayed. Can be one of: 'inline' in the body of the article, 'title' at the top of the article or 'inline,title' both",
"type": "line",
"default": "inline",
"suggested": true,
"required": false,
"suggestedvalues": [
"inline",
"title",
"inline,title"
]
},
"name": {
"label": "Name",
"description": "a label to place on maps (default is PAGENAME)",
"type": "string",
"required": false
},
"notes": {
"label": "Notes",
"description": "text displayed immediately following the coordinates",
"type": "string",
"required": false
},
"format": {
"label": "Format",
"description": "How the coordinates are displayed, either 'dec' or 'dms'",
"type": "line",
"required": false,
"suggestedvalues": [
"dec",
"dms"
]
},
"nosave": {
"label": "Geosearch",
"description": "Set to 'true' if you want to avoid this coordinate to be registered in the geosearch API.",
"type": "string",
"required": false
}
}
}</templatedata>
<!--
"1": {
"label": "Latitude degrees",
"description": "The degrees part of the latitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for south e.g. -79.38.",
"type": "number",
"required": true
},
"2": {
"label": "Latitude minutes",
"description": "The minutes part of the latitude. Do not be overly precise, 1' is approximately 1.5km, Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"3": {
"label": "Latitude seconds",
"description": "The minutes part of the latitude. Do not be overly precise, 1\" is approximately 30m. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"4": {
"label": "Latitude direction",
"description": "Direction part of latitude: N or S. Not used if decimal degrees are specified.",
"type": "string",
"required": false
},
"5": {
"label": "Longitude degrees",
"description": "The degrees part of the longitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for west e.g. -79.38.",
"type": "number",
"required": true
},
"6": {
"label": "Longitude minutes",
"description": "The minutes part of the longitude. Do not be overly precise—1' is approximately 1.5 km. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"7": {
"label": "Longitude seconds",
"description": "The minutes part of the longitude. Do not be overly precise—1\" is approximately 30 m. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"8": {
"label": "Longitude direction",
"description": "Direction part of longitude: E or W. Not used if decimal degrees are specified.",
"type": "string",
"required": false
},
"9": {
"label": "Coordinate parameters",
"description": "Optional parameters separated by an underscore '_', dim:N (viewing diameter in metres), region:R (ISO 3166-1 alpha-2 or ISO 3166-2 code), type:T (e.g. landmark or city (30,000)). For example 'dim:30_region:US-WI_type:event'",
"type": "string",
"required": false
},
-->
== See also ==
* [[Special:PrefixIndex/Template:GeoTemplate]], for the geohack page templates used on Earth and other bodies
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Coordinates conversion templates]]
[[Category:Coordinates templates]]
[[Category:TemplateData documentation with overload problems]]
[[Category:Templates generating Geo]]
[[Category:Title templates]]
}}</includeonly>
4d777f808441ad8f957e551b553ab13de52277e4
Module:Navbar
828
37
3055
164
2023-10-10T22:34:57Z
Pppery
6
Per edit request on talk
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = 'Special:EditPage/' .. title.fullText, ['url'] = false },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = 'Special:PageHistory/' .. title.fullText, ['url'] = false },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
047f307758c878eb3e99ed1768cc40920a6ec5fa
Module:Disambiguation/templates
828
156
3159
362
2023-10-19T07:05:59Z
wikipedia>MSGJ
0
+Hurricane season disambiguation
Scribunto
text/plain
-- This page contains a table of all disambiguation templates and their
-- redirects. Templates names are capitalized, and the Template: prefix is
-- removed. Templates are grouped with the main template first, followed by
-- its redirects.
return {
["Disambiguation"] = true,
["Begriffsklärung"] = true,
["DAB"] = true,
["Dab"] = true,
["Dabpage"] = true,
["Dbig"] = true,
["Dis"] = true,
["Disam"] = true,
["Disamb"] = true,
["Disambig"] = true,
["Disambig misspelling"] = true,
["Disambig-plants"] = true,
["Disambiguation page"] = true,
["Meta disambig"] = true,
["Project disambiguation"] = true,
["Shortcut disambig"] = true,
["WP disambig"] = true,
["WP-disambig"] = true,
["Wikipedia disambiguation"] = true,
["Airport disambiguation"] = true,
["Airport disambig"] = true,
["Biology disambiguation"] = true,
["Call sign disambiguation"] = true,
["Callsigndis"] = true,
["Caselaw disambiguation"] = true,
["Case law disambiguation"] = true,
["Chinese title disambiguation"] = true,
["CJKVdab"] = true,
["Chinese title disambig"] = true,
["Disambig-Chinese-char-title"] = true,
["Disambiguation cleanup"] = true,
["Cleanup disambig"] = true,
["Cleanup disambiguation"] = true,
["CleanupDisambig"] = true,
["Dab cleanup"] = true,
["Dab-cleanup"] = true,
["Dabclean"] = true,
["Disamb-cleanup"] = true,
["Disambcleanup"] = true,
["Disambig cleanup"] = true,
["Disambig-CU"] = true,
["Disambig-cleanup"] = true,
["Disambig-cu"] = true,
["Disambigcleanup"] = true,
["Disambiguate-cleanup"] = true,
["Disambiguation-cleanup"] = true,
["Geodis-cleanup"] = true,
["Genus disambiguation"] = true,
["Genus disambig"] = true,
["Hangul title disambiguation"] = true,
["Hospital disambiguation"] = true,
["Hospitaldis"] = true,
["Human name disambiguation"] = true,
["Bio-dab"] = true,
["HNDIS"] = true,
["HnDis"] = true,
["Hndab"] = true,
["Hndis"] = true,
["Hndisambig"] = true,
["Human name dab"] = true,
["Personal name"] = true,
["Personal name disambiguation"] = true,
["Human name disambiguation cleanup"] = true,
["Hndis-cleanup"] = true,
["Personal name disambiguation cleanup"] = true,
["Hurricane season disambiguation"] = true,
["Letter–number combination disambiguation"] = true,
["LNCD"] = true,
["Letter-Number Combination Disambiguation"] = true,
["Letter-Number combination disambiguation"] = true,
["Letter-NumberCombDisambig"] = true,
["Letter-NumberCombdisambig"] = true,
["Letter-NumberCombinationDisambiguation"] = true,
["Letter-number combination disambiguation"] = true,
["Mathematical disambiguation"] = true,
["Math dab"] = true,
["Math disambiguation"] = true,
["Mathdab"] = true,
["Mathematics disambiguation"] = true,
["Maths disambiguation"] = true,
["Military unit disambiguation"] = true,
["Mil-unit-dis"] = true,
["Mil-unit-disambig"] = true,
["Music disambiguation"] = true,
["Music disambig"] = true,
["Number disambiguation"] = true,
["Numberdis"] = true,
["Numdab"] = true,
["Numdisambig"] = true,
["Opus number disambiguation"] = true,
["Phonetics disambiguation"] = true,
["Place name disambiguation"] = true,
["DisambigG"] = true,
["DisambigGeo"] = true,
["Disambiggeo"] = true,
["Geo-dis"] = true,
["Geodab"] = true,
["Geodis"] = true,
["Geodisambig"] = true,
["Geographic disambiguation"] = true,
["Portal disambiguation"] = true,
["Portal disambig"] = true,
["Road disambiguation"] = true,
["Roaddis"] = true,
["School disambiguation"] = true,
["School disambig"] = true,
["Schooldab"] = true,
["Schooldis"] = true,
["Species Latin name abbreviation disambiguation"] = true,
["Species Latin name disambiguation"] = true,
["LatinNameDisambig"] = true,
["SpeciesLatinNameDisambig"] = true,
["Station disambiguation"] = true,
["Station dab"] = true,
["Synagogue disambiguation"] = true,
["Taxonomic authority disambiguation"] = true,
["Taxonomic authorities disambiguation"] = true,
["Taxonomy disambiguation"] = true,
["Species disambiguation"] = true,
["Template disambiguation"] = true,
["Template ambiguous"] = true,
["Template dab"] = true,
["Template disambig"] = true,
["WoO number disambiguation"] = true,
}
2cbee297a6101d351aacad836d4c2061407218dd
Template:GeoTemplate
10
1685
3129
2023-10-24T21:59:21Z
wikipedia>Mxn
0
Unlinked icons
wikitext
text/x-wiki
<templatestyles src="GeoTemplate/styles.css"/><div class="toccolours plainlinks" style="font-size:92%; max-width:60em; float:right; margin-top:1rem;">
<!-- Input -->
{| style="background:none; text-align:left; width:100%; border-collapse:collapse;"
|- style="vertical-align:top;"
! DMS<br>Decimal
| colspan="3" style="width:95%;" | <span title="Latitude">{latdegabs}° {latminint}′ {latsecdec}″ {latNS}</span>, <span title="Longitude">{londegabs}° {lonminint}′ {lonsecdec}″ {lonEW}</span><br /><span class="geo h-geo"><span class="latitude p-latitude" title="Latitude">{latdegdec}</span>, <span class="longitude p-longitude" title="Longitude">{londegdec}</span></span>
| rowspan="6" class="nomobile" style="width:364px;" |<!-- minimap -->
<div style="position:relative; width:360px; height:180px;">
<div style="position:absolute;">[[File:Earthmap1000x500.jpg|360x180px|Map the location of {title}|alt=|link=]]</div>
<div style="position:absolute; top:94px; left:176px;">
<div style="position:absolute; bottom:{latdegint}px; left:{londegint}px;" title="Location on {title}">[[File:Locator Dot.svg|8x8px|alt=|link=]]</div>
</div>
<div style="position:absolute; top:0; left:0; width:360px; height:180px;"> </div>
</div>
|-
! [[Geo URI]]
| colspan="3" | geo:{latdegdec},{londegdec}
|-
! [[Universal Transverse Mercator coordinate system|UTM]]
| colspan="3" | <span title="Zone">{utmzone}</span> <span title="Easting">{utmeasting}</span> <span title="Northing">{utmnorthing}</span>
|-
|
| colspan="3" style="text-align:center" |[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={params}_globe:export&title={titlee} More formats...]
|-
! [[WP:GEO#type:T|Type]]
| style="min-width:5em;" | {type}
! [[WP:GEO#region:R|Region]]
| style="min-width:5em;" | [{{SERVER}}/wiki/ISO_3166-2:{region} {region}]
|- style="vertical-align:top;"
! Article
| colspan="3" style="padding-bottom:1.5em;"| [{{SERVER}}/wiki/{pagenamee} {title}] <br><span class="noprint" style="text-transform:lowercase; visibility:hidden{pagename};">([{{SERVER}}{{SCRIPTPATH}}/index.php?title={pagenamee}&action=edit Edit] | [{{SERVER}}{{SCRIPTPATH}}/index.php?title={{ns:1}}:{pagenamee}&action=edit§ion=new&editintro=Template:Geodata-check/report_editintro&preloadtitle={{urlencode:Coordinate error}}&preload=Template:Geodata-check/preload Report inaccuracies])</span>
|- style="border-top:2px solid #bbb; vertical-align:top;"
! Contents: __NOTOC__
| colspan="5" | [[#Global services|Global services]] '''·''' [[#GEOTEMPLATE-LOCAL|Local services]] '''·''' [[#Photos|Photos]] '''·''' [[#Wikipedia articles|Wikipedia articles]] '''·''' [[#Other information|Other]]
|}
</div>
<div class="plainlinks" style="text-align:center;">
<h2 style="min-width:192px; display:inline-block; margin-top:1rem;">Popular</h2><br>
<div style="min-width:192px; display:inline-block;">
[https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ <span style="display:inline-block; text-align:center; width:96px;">[[File:Bing favicon.svg|64x64px|link=|alt=]]<br>Bing Maps</span>][https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Maps icon (2020).svg|64x64px|link=|alt=]]<br>Google Maps</span>]
</div><div style="min-width:192px; display:inline-block;">
[{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Earth icon.svg|64x64px|link=|alt=]]<br/>Google Earth</span>]
[https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M <span style="display:inline-block; text-align:center; width:96px;">[[File:Openstreetmap logo.svg|64x64px|link=|alt=]]<br>OpenStreetMap</span>]
</div></div>
<!-- services -->
{| class="mobile-linearize plainlinks geoservices" cellpadding="0" cellspacing="0" style="background:none; border-collapse:collapse; table-layout:fixed; width:100%;"
|- style="vertical-align:top;"
| class="directory" style="background:#fff; overflow:hidden; width:50%;" | <div id="GEOTEMPLATE-GLOBAL">
__NOEDITSECTION__
== Global/Trans-national services ==
{| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; width:98%; margin-left:0.25em"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | More
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] ACME Mapper
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=M&marker0={latdegdec},{londegdec},{titlee} Map]
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=SL&marker0={latdegdec},{londegdec},{titlee} Satellite]
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=R&marker0={latdegdec},{londegdec},{titlee} Terrain], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=K&marker0={latdegdec},{londegdec},{titlee} Mapnik]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Apple Maps (WatchOS).svg|16x16px|link=|alt=]] [[Apple Maps]] (Apple devices only)
| [https://maps.apple.com/?q={latdegdec},{londegdec}&t=m Map]
|[https://maps.apple.com/?q={latdegdec},{londegdec}&t=k Satellite]
|[https://duckduckgo.com/?q={latdegdec},{londegdec}&iaxm=maps via DuckDuckGo] (other devices)
|- style="background:#e0eef7" class="nomobile" <!-- goes to web search on mobile Mar-2017 -->
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Bing favicon.svg|16x16px|link=|alt=]] '''[[Bing Maps]]'''
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Map]
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=h&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Aerial]
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=o&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Bird's Eye]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Blue Marble Navigator
|
| [https://blue-marble.de?lon={londegdec}&nlat={latdegdec}&borders&geonames&townnames&zoom&overlay=14&base=7 Satellite]
| [https://blue-marble.de/nightlights?ll={latdegdec},{londegdec} Night Lights]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Copernix
| [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&map_type=roadmap&pagename={pagenamee}?language={language} Map]
| [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&pagename={pagenamee}?language={language} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[John_Walker_(programmer)#Fourmilab|Fourmilab]]
|
| [https://www.fourmilab.ch/cgi-bin/uncgi/Earth?imgsize=320&opt=-l&lat={latdegdec}&ns=North&lon={londegneg}&ew=West&alt={altitude}&img=nasa.evif Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeaBios]]
|
| [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span}&title={titlee} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeoNames]]
|
| [http://www.geonames.org/maps/google_{latdegdec}_{londegdec}.html Satellite]
| [http://ws.geonames.org/extendedFindNearby?lat={latdegdec}&lng={londegdec} Text (XML)]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Earth icon.svg|16x16px|link=|alt=]] [[Google Earth]]<sup>[[Template talk:GeoTemplate/FAQ#Google|note]]</sup>
|
| [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} Open]
| [{{fullurl:toollabs:geocommons/earth.kml|latdegdec={latdegdec}&londegdec={londegdec}&scale={scale}&title={titlee}}} w/ meta data]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Maps icon (2020).svg|16x16px|link=|alt=]] '''[[Google Maps]]'''
| [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} Map]
| [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom} Satellite]
| [https://www.google.com/maps/place//@{latdegdec},{londegdec},{osmzoom}z/data=!4m2!3m1!1s0x0:0x0!5m1!1e4?hl={language} Terrain], [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom}&layer=c&cbll={latdegdec},{londegdec} Street View], [https://earthengine.google.com/timelapse/#v={latdegdec},{londegdec},{osmzoom},latLng&t=3.04 Earth Timelapse]
|- class="nomobile" <!-- Mobile users can't use files -->
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] GPS Visualizer
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_openstreetmap&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Map]
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_aerial_arcgis&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Satellite]
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_arcgistopo_world&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo], [https://www.gpsvisualizer.com/draw/?zoom={zoom}¢er={latdegdec},{londegdec}&marker={titlee} Drawing Utility]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:HERE logo.svg|16x16px|link=|alt=]] [[HERE WeGo]]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},normal&msg={titlee} Map]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},satellite&msg={titlee} Satellite]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},terrain&msg={titlee} Terrain]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[MapQuest]]
| [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=map Map]
| [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=sat Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:NASA logo.svg|16x16px|link=|alt=]] [[NASA WorldWind]]
|
| [worldwind://goto/world=Earth&lat={latdegdec}&lon={londegdec}&view={span} Open]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] [[OpenHistoricalMap|Open<wbr>Historical<wbr>Map]]
| [https://www.openhistoricalmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=O Map]
|
| [https://nominatim.openhistoricalmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] '''[[OpenStreetMap|Open<wbr>Street<wbr>Map]]'''
| [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M Map]
|
| [https://geohack.toolforge.org/geohack.php?language={language}&project=osm&pagename={pagenamee}¶ms={params}&title={titlee} more maps], [https://nominatim.openstreetmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)], [https://openstreetbrowser.org/#map={osmzoom}/{latdegdec}/{londegdec} OpenStreetBrowser]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Sentinel-2]]
|
| [https://apps.sentinel-hub.com/sentinel-playground/?source=S2L2A&lat={latdegdec}&lng={londegdec} Open]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] maps.vlasenko.net
|
|
| [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Waze]]
| [https://www.waze.com/livemap/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map]
|
| [https://www.waze.com/editor/?lon={londegdec}&lat={latdegdec} Editor], App: [http://waze.to/?ll={latdegdec},{londegdec} Open], [http://waze.to/?ll={latdegdec},{londegdec}&navigate=yes Navigate]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Wikimapia logo without label.svg|16x16px|link=|alt=]] [[Wikimapia]]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=w Map]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b Satellite]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b&v=8 + old places]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Erioll world 2.svg|16x16px|link=|alt=]] WikiMiniAtlas
| [https://wma.wmflabs.org/iframe.html?wma={latdegdec}_{londegdec}_700_500_{{CONTENTLANG}}_{zoom}_en&globe=Earth&lang={{CONTENTLANG}}&page={pagenamee} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Yandex Maps]]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Zoom Earth
|
| [https://zoom.earth/?lat={latdegdec}&lon={londegdec}&z=15&r=0&src=ggl Satellite]
|
|}
</div>
| class="directory" rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| <div id="GEOTEMPLATE-LOCAL">
== Wikimedia maps ==
<!-- [[MediaWiki:GeoHack.js]] -->
<div class="center" style="margin-left:0.25em">
<div class="thumb tnone">
<div class="thumbinner">
<div id="osmEmbed" class="OSM:{latdegdec}_{londegdec}_{osmzoom}_mapnik" style="background:#aaa; width:100%; height:500px; height:80vh;">JavaScript disabled or out of map range.</div>
</div>
</div>
</div>
</div><!--/GEOTEMPLATE-LOCAL-->
<div style="text-align:center; font-weight:bold;">[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={params}_region:#regional See all regions]</div>
|-
| rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"|
==Photos==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Commons-logo.svg|16x16px|link=|alt=]] Commons
| [https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language}&wp=false WikiMap] ([https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]),<!-- see https://de.wikipedia.org/wiki/Benutzer:DB111/Tools#WikiMap --> [https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang=commons osm-gadget-leaflet map] ([https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia])
<!-- failing as of 2020-07-27: [https://www.google.com/maps?ll={latdegdec},{londegdec}&hq=https://geocommons.toolforge.org/web.kml&hl={language}&z={osmzoom} Map], -->
<!-- failing as of 2020-07-27: [https://geocommons.toolforge.org/proximityrama?latlon={latdegdec},{londegdec} Proximityrama] -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Flickr large white chiclet logo - no rounded corners, no border.svg|16x16px|link=|alt=]] Flickr
| [https://www.flickr.com/map/?fLat={latdegdec}&fLon={londegdec}&zl=5 Map], [https://www.flickr.com/nearby/{latdegdec},{londegdec}?show=thumb&fromfilter=1&by=everyone&taken=alltime&sort=mostrecent Listing]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Loc.alize.us
| [https://loc.alize.us/#/geo:{latdegdec},{londegdec},14,m/sort:date/ Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] VirtualGlobetrotting
| [https://virtualglobetrotting.com/ll/{latdegdec},{londegdec} Listing]
|}
<!-- blacklisted
| [https://www.360cities.net/map#lat={latdegdec}&lng={londegdec}&zoom={osmzoom} 360 Cities] ([[Panoramic photography|pano]])
-->
<!-- Shutdown
| [https://www.panoramio.com/map/#lt={latdegdec}&ln={londegdec}&z=0&k=0&a=1&tab=2 Panoramio]
<!-- ?
| [http://www.planeteye.com/maps?refcon=wikipedia&pll={latdegdec},{londegdec}&z={osmzoom}&title={titlee}&type={type}&scale={scale}®ion={region}&sd=photos PlanetEye]
-->
</div>
|}
==Wikipedia articles==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Aspect
! scope="col" | Link
|-
| List of nearby articles
| [{{fullurl:toollabs:wikinearby/|lang={language}&q={latdegdec},+{londegdec}}} WikiNearby]<br>[https://{language}.wikipedia.org/wiki/Special:Nearby#/coord/{latdegdec},{londegdec} Wikipedia]
|-
<!-- for [[Category talk:Lines of latitude#Redirects]] -->
| Article on {latdegabs}° {latNS}
| [https://{language}.wikipedia.org/wiki/Latitude_{latdegabs}_degrees_{latNS} Wikipedia]
|-
<!-- for [[Category talk:Lines of longitude#Redirects]] -->
| Article on {londegabs}° {lonEW}
| [https://{language}.wikipedia.org/wiki/Longitude_{londegabs}_degrees_{lonEW} Wikipedia]
|-
| Map of all coordinates on ''{pagename}''
| [{{fullurl:toollabs:wikimap/|lang={language}&page={pagenamee}}} WikiMap]<br>[{{fullurl:toollabs:osm4wiki/cgi-bin/wiki/wiki-osm.pl|project={language}&article={pagenamee}}} OSM for Wiki]
|-
| Map of nearby articles
| [{{fullurl:toollabs:wikimap/|lang={language}&lon={londegdec}&lat={latdegdec}&zoom={osmzoom}&commons=false}} WikiMap]<br>[https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?la={language}&uselang={language}&lon={londegdec}&lat={latdegdec}&rang=50&map=1 Wikipedia World]
|-
| Map of nearby Wikidata items
| [https://wikidata-todo.toolforge.org/around.html?lat={latdegdec}&lon={londegdec}&radius=15&lang={language} Wikidata Todo]
|-
| Map of nearby places with no images
| [https://wikishootme.toolforge.org/#lat={latdegdec}&lng={londegdec} WikiShootMe]
|}
</div>
==Other information==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geocaching.com
| [https://www.geocaching.com/seek/nearest.aspx?origin_lat={latdegdec}&origin_long={londegdec}&dist=20&submit3=Search Near by locations], [https://www.geocaching.com/map/default.aspx?lat={latdegdec}&lng={londegdec} Map this location]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NASA Weather
| Satellite images: [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=Global%20Composite&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Radar] (Currently not updating<!-- and I don't think it is radar?-->)
|-
! scope="row" style="font-weight:normal; text-align:left;" | Megalithic Portal
| [https://www.megalithic.co.uk/article.php?long={londegdec}&lat={latdegdec} Prehistoric Sites, nearby]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Earthtools.org
| [http://new.earthtools.org/height/{latdegdec}/{londegdec} Elevation (Europe and America)], [http://new.earthtools.org/timezone/{latdegdec}/{londegdec} Time zone (Outdated<!--for data in e.g. South Sudan-->)] ([[Extensible Markup Language|XML]] output)
|-
! scope="row" style="font-weight:normal; text-align:left;" | SunriseSunset.com
| [http://www.sunrisesunset.com/calendar.asp?comb_city_info=Long:{londegneg},Lat:{latdegdec};{londegneg};{latdegdec};0;0&month={{CURRENTMONTH}}&year={{CURRENTYEAR}}&time_type=1&use_dst=0&want_twi_civ=1&want_twi_naut=1&want_twi_astro=1&want_mrms=1&want_mphase=1 Sunrise, Sunset, Twilight, and Moon Calendar]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geody
| [https://www.geody.com/geolook.php?world=terra&lat={latdegdec}&lon={londegdec} Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Heavens-Above.Com
| [https://www.heavens-above.com/?Loc=Newark&Lat={latdegdec}&Lng={londegdec}&Alt={altitude} Satellite / Planet Spotter]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Echolink
| [http://www.echolink.org/links.jsp?sel=latlon&lat_deg={latdegdec}&lat_min={latmindec}&lon_deg={londegabs}&lon_min={lonmindec}&lon_EW={lonEW} Nearest gateway network] for amateur radio VoIP
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findu.com
| [http://www.findu.com/cgi-bin/near.cgi?lat={latdegdec}&lon={londegdec} APRS stations]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Degree Confluence Project
| [http://www.confluence.org/confluence.php?lat={latdeground}&lon={londeground} Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoHack
| [https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={latantipodes}_N_{longantipodes}_E_scale:10000000_type:{type}&title=The+Antipodes+of+{titlee} Antipodes]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapIt (from [[mySociety]])
| [https://global.mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas] (political boundaries, etc.)
|-
! scope="row" style="font-weight:normal; text-align:left;" | PeakFinder.org
| [https://www.peakfinder.org/?lat={latdegdec}&lng={londegdec}&name={titlee} 360° panoramic mountain views]
|-
! scope="row" style="font-weight:normal; text-align:left;" | SkyVector
| [https://skyvector.com/?ll={latdegdec},{londegdec}&zoom=2 Aeronautical chart]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Flightradar24
| [https://www.flightradar24.com/{latdegdec},{londegdec}/{osmzoom} Planes flying in the area]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Great Circle Mapper
| [http://www.gcmap.com/search?Q={latdegdecabs}{latNS}+{londegdecabs}{lonEW} Nearby Airports]
|-
! scope="row" style="font-weight:normal; text-align:left;" | OpenSeaMap
| [https://map.openseamap.org/map/?zoom={osmzoom}&mlat={latdegdec}&mlon={londegdec}&layers=BTTFFFTFFFF0TFFTFTFF Sea lanes, beacons, traffic, etc.]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MarineTraffic
| [https://www.marinetraffic.com/en/ais/home/centerx:{londegdec}/centery:{latdegdec}/zoom:{osmzoom} Ships in the area]
|-
! scope="row" style="font-weight:normal; text-align:left;" | OpenRailwayMap
| [https://www.openrailwaymap.org/?lang=en&lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&style=standard Railways]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Strava
| [https://labs.strava.com/heatmap/#10.86/{londegdec}/{latdegdec}/hot/all Fitness tracking heatmap]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LightningMaps.org
| [https://www.lightningmaps.org/?lang=fr#y={latdegdec};x={londegdec};z=12;t=1;m=oss;r=0;s=201;o=0;b=0.00;n=0;d=2;dl=2;dc=0;ts=0; Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapillary.com
| [https://www.mapillary.com/app/?lat={latdegdec}&lng={londegdec}&z=osmzoom} Crowdsourced street view]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Old Maps Online
| [http://www.oldmapsonline.org/?lat={latdegdec}&lon={londegdec} Old maps]
|}
</div>
<!--
[http://mapmaker.nationalgeographic.org/ National Geographic MapMaker]
-->
<!-- Begin region specific -->
<div id="GEOTEMPLATE-REGIONS" class="directory" style="margin-top:1.5em;>
{| id="regional" class="toc plainlinks" summary="Other regions"
|-
! scope="row" style="padding-left: 0.5em" |Regional services:
|style="padding:0 0.5em" |
[[#Africa|Africa]] '''·'''
[[#Asia|Asia]] '''·'''
[[#Australia|Australia]] '''·'''
[[#Europe A–M|Europe (A–M)]] '''·'''
[[#Europe N–Z|Europe (N–Z)]] '''·'''
[[#North America|North America]] '''·'''
[[#South America|South America]] '''·'''
[[#Antarctica|Antarctica/Arctic]]
|}
=North America=
<div id="GEOTEMPLATE-CA">
==Canada==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer
| [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=nrcan_toporama&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Atlas of Canada
| [http://atlas.nrcan.gc.ca/site/english/toporama/index.html Topo] (Indirect link)
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest
| [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=8&map=50k Topo]
|}
</div>
<div id="GEOTEMPLATE-US">
==United States==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | ACME
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=N&marker0={latdegdec},{londegdec},{titlee} NEXRAD] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=O&marker0={latdegdec},{londegdec},{titlee} DOQ]
|-
! scope="row" style="font-weight:normal; text-align:left;" | CalTopo
| [http://caltopo.com/map.html#ll={latdegdec},{londegdec}&z={osmzoom}&b=t Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer
| [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=naip_aerial&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USDA Aerial], [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=google_arcgistopo_us&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USGS Topo]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | Historic Aerials
| [https://historicaerials.com/?layer=map&zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Historic Aerials]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NASA/MSFC GOES
| [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=GOES-E%20CONUS&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Weather Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Weather Service
| [https://forecast.weather.gov/MapClick.php?textField1={latdegdec}&textField2={londegdec} Area weather and forecast]<br/> [https://forecast.weather.gov/MapClick.php?lat={latdegdec}&lon={londegdec}&unit=0&lg=english&FcstType=graphical Graphical hourly pinpoint forecast]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Natural Atlas
| [https://naturalatlas.com/map/@{latdegdec},{londegdec},{osmzoom}z Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TerraFly
| [http://vn4.cs.fiu.edu/cgi-bin/gnis.cgi?Lat={latdegdec}&Long={londegdec}&vid=&tfaction=&referer=tfhome Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest
| [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4&map=sat1m USGS Aerial], [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4 Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Trails.com
| [http://www.topozone.com/map.asp?lat={latdegdec}&lon={londegdec}&datum=nad83 Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | US EPA
| [https://water.usgs.gov/cgi-bin/pointinhuc.pl?latitude={latdegabs}{latminint}{latsecint}{latNS}&longitude={londegabs}{lonminint}{lonsecint}{lonEW} Watershed Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | USGS National Map Viewer
| [https://apps.nationalmap.gov/viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map] <!-- before 2021: [https://viewer.nationalmap.gov/advanced-viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map],--><!-- Advanced TNM Viewer: might need to make sure scale is what we expect; also, commas should be filtered out in pagename and title somehow --> <!-- [https://viewer.nationalmap.gov/viewer/?q={latdegdec},{londegdec} Legacy TNM] -- ending May 2017 --> <!-- even older/long gone: [http://nmviewogc.cr.usgs.gov/viewer.htm?CenterPoint={latdegdec},{londegdec}&Scale=CITY&Classes=OTHER%20IMAGERY Map] -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | USGS TopoView
| [https://ngmdb.usgs.gov/topoview/viewer/#{osmzoom}/{latdegdec}/{londegdec} Historic topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | WeatherUSA
| [https://www.weatherusa.net/weathernet/live/?q={latdegdec},{londegdec}&zoom={osmzoom}&layers=obs-t,radar,alerts Live]
|}
</div>
=Europe A–M=
<div id="GEOTEMPLATE-AT">
== Austria ==
<!--
Dokumentation zum Geolink-Dienst siehe http://de.wikipedia.org/wiki/Vorlage:GeoTemplate/GeolinkConfig
-->
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
| Austrian map amap.at (max 1:50,000)
|[https://wikitools.toolforge.org/geolink.php?config=austriamap&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|
|}
===Local===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kärnten Atlas (Carinthia)
| [https://wikitools.toolforge.org/geolink.php?config=kaerntenatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NÖ Atlas (Lower Austria)
| [https://wikitools.toolforge.org/geolink.php?config=noeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | DORIS interMap (Upper Austria)
| [https://wikitools.toolforge.org/geolink.php?config=ooeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | SAGIS (Salzburg)
| [https://wikitools.toolforge.org/geolink.php?config=salzburg&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Digitaler Atlas Steiermark (Styria)
| [https://wikitools.toolforge.org/geolink.php?config=steiermark&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | tirisMaps (Tyrol)
| [https://wikitools.toolforge.org/geolink.php?config=tirol&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | VoGIS (Vorarlberg)
|[https://wikitools.toolforge.org/geolink.php?config=vorarlberg&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|}
</div>
<div id="GEOTEMPLATE-BY">
==Belarus==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map]
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
<div id="GEOTEMPLATE-BG">
==Bulgaria==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | eMaps.bg
| [http://2cyr.com/emaps-bg.php?q={latdegdec},{londegdec} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 360.bg
|
| [http://www.360.bg/index.php?lat={latdegdec}&lon={londegdec} Satellite]
|}
<!-- This service would be good to include, but #expr doesn't work as MediaWiki doesn't know the {} parameters, so it needs a GeoHack modification for the offset -->
<!-- *[http://www.emaps.bg/emaps/content.asp?mapSize=1&cboMaps=0&minx={{#expr: {utmeasting}-14425}}&maxx={{#expr: {utmeasting}+14425}}&miny={{#expr: {utmnorthing}-10000}}&maxy={{#expr: {utmnorthing}+10000}} Find this location] on emaps.bg [http://www.emaps.bg/].-->
</div>
<div id="GEOTEMPLATE-CY">
==Cyprus==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Cyprus on-line
| [http://www.col.com.cy/?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map]
|}
</div>
<div id="GEOTEMPLATE-CZ">
==Czech Republic==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapy.cz
| [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Map]
| [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW}&base=ophoto Labeled satellite]
| [https://en.mapy.cz/19stoleti?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Historical], [https://en.mapy.cz/turisticka?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Touristic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | iDnes
| [http://mapy.idnes.cz/#query=search({latdegabs}%C2%B0{latminint}%27{latsecdec}%22{latNS}%20{londegabs}%C2%B0{lonminint}%27{lonsecdec}%22{lonEW}@0@1) Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | ikatastr.cz
| [https://www.ikatastr.cz/#&kde={latdegdec},{londegdec},19 Cadastral Map] on ikatastr.cz
|
|
|}
</div>
<div id="GEOTEMPLATE-DK">
==Denmark==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk
| [http://www.findvej.dk/?longitude={londegdec}&latitude={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk with Wikipedia
| [http://www.findvej.dk/wikipedia?template=1&longitude={londegdec}&latitude={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kort.eniro.dk/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-EE">
==Estonia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Estonian Land Board
| [http://geoportaal.maaamet.ee/url/xgis-latlon.php?lat={latdegdec}&lon={londegdec}&out=xgis Orthophoto/Map]
|}
</div>
<div id="GEOTEMPLATE-FI">
==Finland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kartor.eniro.se/?q={latdegdec},{londegdec}&z={zoom} Map]
| [http://kartat.eniro.fi/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Land Survey of Finland MapSite
| [http://toolserver.org/%7Epara/EPSG3067.php?lat={latdegdec}&lon={londegdec}&url=http://kansalaisen.karttapaikka.fi/linkki?scale={scale}&srs=EPSG%3A3067&y={n}&x={e}&lang=fi&text=Coordinate%20from%20GeoHack Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 02.fi
| [https://para.toolforge.org/geo/convert/02.fi-grc.html#latlon={latdegdec},{londegdec} Map]
|
|}
===Local===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | eKarjala
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.ekarjala.fi/WebEK/Default.aspx?layers=Etel%C3%A4-Karjalan%20Seutukartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Espoo
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartat.espoo.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Helsinki
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartta.hel.fi/opas/main/?l=1&m=1&o=1&n={Plocal}&e={Ilocal}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Hämeenlinna
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=2500000&link=http://kartta.hameenlinna.fi/cgi-bin/GifMap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=600&Width=650&Command=DisplayLink&Language=fin&Info={Plocal},{Ilocal},{title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Jyväskylä
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6890000&Iref=3400000&link=http://kartta.jkl.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kokkola
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7000000&Iref=2400000&link=http://ipp.kokkola.fi/cgi-bin/gifmap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=400&Width=500&Command=DisplayLink_fin&Language=fin&Info={Plocal},{Ilocal},{title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kotka
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6000000&Iref=3000000&link=http://karttapalvelu.kotka.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kouvola
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6740000&Iref=3470000&link=http://kartta.kouvola.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kuopio
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.kuopionseutu.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Lahti
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=840&Iref=-23053970&link=http://kartta.lahti.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Lappeenranta
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=3500000&link=http://kartta.lappeenranta.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Oulu
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7200000&Iref=2500000&link=http://kartta.ouka.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Pohjois-Karjala
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://pk-kartat.jns.fi/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Pori
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6800000&Iref=1500000&link=http://kartta.pori.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rauma
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=1000000&link=http://opaskartta.rauma.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rovaniemi
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.rovaniemi.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Tampere
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://www.tampere.fi/ytoteto/kartta/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Turku
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=1500000&link=http://opaskartta.turku.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vaasa
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6900000&Iref=1500000&link=http://kartta.vaasa.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Vantaa
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.vantaa.fi/Default.aspx?easting={Ilocal}&northing={Plocal}}} Map]
|
|-
| Retkikartta
|
| [http://www.retkikartta.fi/?x={utmeasting}&y={utmnorthing}&zoom=1 Topographical map]
|}
</div>
<div id="GEOTEMPLATE-FR">
==France==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | FranceTopo
|
|
| [http://francetopo.fr/api.html?map_x={londegdec}&map_y={latdegdec}&zoom_osm={osmzoom} Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | IGN Géoportail
| [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.MAPS.3D$GEOPORTAIL:OGC:WMTS@aggregate(1)&permalink=yes Map]
|[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Aerial]
|[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=CADASTRALPARCELS.PARCELS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cadastral], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOLOGY.GEOLOGY$EXTERNAL:OGC:EXTERNALWMS(1)&permalink=yes Geological], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.CASSINI$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cassini (18th century)]
|}
</div>
<div id="GEOTEMPLATE-GB">
==Great Britain==
[[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing})
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Topo
! scope="col" | Aerial
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Bing Maps]] UK
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title} Map]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=s OS maps]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=h Aerial]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sty=o Bird's Eye]
|-
! scope="row" style="font-weight:normal; text-align:left;" | StreetMap
| [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_106 Map]
| [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_120 OS maps]
|
| [http://streetmap.co.uk/idgc.srf?x={osgb36easting}&y={osgb36northing} Convert]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vision of Britain historical maps
| [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} Map]
| [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey
|
| [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d OS maps]
|
| ''See other OS<br />map links below''
|-
! scope="row" style="font-weight:normal; text-align:left;" | {{abbr|Defra|Department for Environment, Food and Rural Affairs}}'s {{abbr|MAGIC|Multi-Agency Geographic Information for the Countryside}} service
| [http://magic.defra.gov.uk/MagicMap.aspx?xygridref={osgb36easting},{osgb36northing} Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Elgin roadworks information
| [http://v5.roadworks.org/index.cfm?api=1&page=map&coord={osgb36easting},{osgb36northing}&scale=5000 Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Library of Scotland
|
|[http://maps.nls.uk/geo/explore/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=1&b=1&marker={latdegdec},{londegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin UK
| [http://www.viamichelin.co.uk/viamichelin/gbr/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map]
|
|
| [http://www.viamichelin.co.uk/viamichelin/gbr/search/Trafic/{londegdec}*{latdegdec}?zoomLevel=12 Traffic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Old OS maps
|
| [http://www.ponies.me.uk/maps/osmap.html?z=14&x={londegdec}&y={latdegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Where's the Path?
| [https://wtp2.appspot.com/wheresthepath.htm?lat={latdegdec}&lon={londegdec} Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | SABRE Maps
| [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=OSMMap&layer=0 Map]
| [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=NPEMap&layer=0 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Systematic Maps
|
| [http://www.sysmaps.co.uk/sysmaps_os.html?!{latdegdec}~{londegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapIt<br />(from [[mySociety]])
|
|
|
|[https://mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas]<br />(ward, constituency, etc.) <!-- different to global version, above -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[British Geological Survey]]
|
|
|
| [https://www.bgs.ac.uk/data/services/mapCreator/WmsMap.html?mapCentreLat={latdegdec}&mapCentreLong={londegdec}&mapZoom=14&boxWidth=800&boxHeight=450&geologyType=bedrock50k&mapType=HYBRID Geology]
<!-- Commenting out section while OpenStreetMap street mapservers are down
|-
| colspan=5 | ''More OS maps''
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE 1:50000<br />(England / Wales), 1945-1955<br />(via [[OpenStreetMap]])
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0000 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE/7th<br />1:50000 (Scotland), 1945-1955<br />(via OpenStreetMap)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=0B000 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 7th series<br />1:50000, 1947-1960 (via<br />OpenStreetMap; partial coverage)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=00B00 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 1st edition<br />1:25000, 1946-1960<br />(via OpenStreetMap)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=000B0 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OpenStreet data<br />(via OpenStreetMap)
|
| [http://os.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0 OS maps]
|
|
end of comment -->|}
<!--<br />-->
{| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; margin-top:1em"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Information
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Geograph Britain and Ireland]]
| [https://www.geograph.org.uk/gridref/{osgb36ref} Photos]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UKVillages
| [http://www.ukvillages.co.uk/ukvillages.nsf/b!open&s=village%20map&x={osgb36easting}&y={osgb36northing} villages]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UK-postcodes.com
| [http://www.uk-postcodes.com/latlng/{latdegdec},{londegdec} Postal code and local government]<br />
|-
! scope="row" style="font-weight:normal; text-align:left;" | GlobalGuide.org
| [https://www.globalguide.org/index.html?lat={latdegdec}&long={londegdec}&zoom=17&title={titlee} View land use]
|}
</div>
<div id="GEOTEMPLATE-GR">
==Greece==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | in.gr
| [http://maps.in.gr/Default.aspx?c={latdegdec},{londegdec}&z={zoom} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | umap.gr
| [http://www.umap.gr/webcruiser/umap.html?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map]
|}
</div>
<div id="GEOTEMPLATE-IS">
==Iceland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Já.is
| [http://en.ja.is/kort#lat={latdegdec}&lon={londegdec}&z=6&mark=1 Map]
|}
</div>
<div id="GEOTEMPLATE-IE">
==Ireland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" |Ordnance Survey Ireland
|[http://map.geohive.ie/ Ordnance Survey Ireland]
|}
</div>
<div id="GEOTEMPLATE-IM">
==Isle of Man==
[[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing})
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Multimap
| [http://www.multimap.com/p/browse.cgi?scale={mmscale}&lon={londegdec}&lat={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | StreetMap
| [http://www.streetmap.co.uk/newsearch.srf?mapp=newmap&searchp=newsearch&name={latdegdec},{londegdec}&Submit1=search&type=LatLong Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OS Maps
| [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d Map]
|}
* [https://www.geograph.org.uk/gridref/{osgb36ref} View photos of this location] from [[Geograph Britain and Ireland]]
</div>
<div id="GEOTEMPLATE-IT">
==Italy==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin Italia
| [http://www.viamichelin.it/viamichelin/int/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map]
|}
</div>
<div id="GEOTEMPLATE-LI">
==Liechtenstein==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch
| [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Swisstopo
| [http://map.geodataviewer.admin.ch/geodatenviewer.php?x={ch1903easting}&y={ch1903northing}&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch
| [http://map.search.ch/{ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com
| [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac
| [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map]
|}
</div><!--
div id="GEOTEMPLATE-LT">
==Lithuania==
* Geographic Information portal of Lithuania [http://www.geoportal.lt/map/#x=533712&y=6060907&l=3&s=3346 Map and Satellite]
</div-->
=Europe N–Z=
<div id="GEOTEMPLATE-NO">
== Norway ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
! scope="col" | Hybrid
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/+land Map]
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+flybilder Aerial]
|
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+sjo Sea], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+terreng Terrain], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+enkel Basic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norge i bilder
|
| [http://norgeibilder.no/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Aerial]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Høydedata
| [https://hoydedata.no/LaserInnsyn/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norkart Virtual Globe
|
| [http://www.virtual-globe.info/VirtualGlobeStarter.php?request=page&dataset=http://www.virtual-globe.info/norge-globe-features.vgml&lookat={londegdec},{latdegdec},{scale} Satellite]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Finn.no
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=normap Map]
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norortho Aerial]
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norhybrid Hybrid]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gulesider.no
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom} Map]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=aerial Aerial]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=hybrid Hybrid]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=nautical Sea], [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&orientation=N&l=oblique Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | 1881
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=0&r=&o=&layer= Map]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=1&r=&o=&layer= Aerial]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=2&r=&o=&layer= Hybrid]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=5&r=&o=&layer= Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Statens Vegvesen
| [https://www.vegvesen.no/vegkart/vegkart/#kartlag:geodata/@{utm33easting},{utm33northing},{osmzoom} Map]
| [https://www.vegvesen.no/vegkart/vegkart/#kartlag:nib/@{utm33easting},{utm33northing},{osmzoom} Aerial]
|
| [http://www.vegvesen.no/Trafikkbeta/?lat={latdegdec}&long={londegdec}&zoom={osmzoom} Traffic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UT.no
| [https://www.ut.no/kart?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map]
|
|
|
|}
<div id="GEOTEMPLATE-SJ">
<!-- Vennligst ikke flytt Svalbard og Jan Mayen til alfabetisk plassering. Dette for at kodene NO-21 og NO-22 skal gi resultat.-->
== Svalbard and Jan Mayen ==
=== Svalbard ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoSvalbard
| [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map]
| [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial]
|-style="background:#f5f5f5"
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+svalbard Svalbard]
|
|}
=== Jan Mayen ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoJanMayen
| [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map]
| [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial]
|-style="background:#f5f5f5"
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+janmayen Jan Mayen]
|
|}
</div>
</div>
<div id="GEOTEMPLATE-PL">
==Poland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapa Polski Targeo
| [http://mapa.targeo.pl/{title},{londegdec},{latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Szukacz.pl
| [http://mapa.szukacz.pl/?n={latdegdec}&e={londegdec}&z=3 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Zumi
| [http://www.zumi.pl/namapie.html?long={londegdec}&lat={latdegdec}&type=3&scale=3 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Autopilot
| [http://mapa.autopilot.pl/?long={londegdec}&lat={latdegdec}&zoom=12 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Polish Railways Map
| [http://www.bazakolejowa.pl/index.php?dzial=mapa#{osmzoom}/{latdegdec}/{londegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UMP
| [http://mapa.ump.waw.pl/ump-www/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&mlat={latdegdec}&mlon={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-PT">
==Portugal==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | Instituto Geográfico do Exército <br /><small>Requires Internet Explorer</small>
| [http://www.igeoe.pt/igeoearcweb/igeoesig/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Continente] (Portuguese mainland)
|-
| [http://www.igeoe.pt/igeoearcweb/acores/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Açores]
|-
| [http://www.igeoe.pt/igeoearcweb/madeira/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Madeira]
|-
! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | SAPO <br />
| [https://mapas.sapo.pt/?o=0&M={londegdec},{latdegdec} Continente e Ilhas]
|}
</div>
<div id="GEOTEMPLATE-RU">
==Russia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (Russian) {{pipe}} {{lang|ru|Яндекс Карть}}
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (English) {{pipe}} {{lang|ru|Яндекс Карть}}
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki {{pipe}} {{lang|ru|Космоснимки}}
| [http://www.kosmosnimki.ru/index.html#mode=map&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Map]
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rambler Maps {{pipe}} {{lang|ru|Рамблер}}
| [http://maps.rambler.ru/?ll={londegdec},{latdegdec}&z={osmzoom} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Maps@Mail.ru {{pipe}} {{lang|ru|Карты@Mail.ru}}
| [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom} Map]
| [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom}&mode=satellite Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | eAtlas
| [http://www.eatlas.ru/#z={zoom}&lat={latdegdec}&lon={londegdec} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Navitel
| [http://maps.navitel.su/api/map.html?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=BF Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Progorod {{pipe}} {{lang|ru|Прогород}}
| [http://www.pro-gorod.ru/maps/?z={osmzoom}&lon={londegdec}&lat={latdegdec} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Roscosmos Geoportal
| [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Map]
| [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 2GIS {{pipe}} {{lang|ru|2ГИС}}
| [https://2gis.ru/moscow/geo/4504222442088225,{latdegdec},{londegdec} Map]
|
|
|}
=== City-specific ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Region
|-
! scope="row" style="font-weight:normal; text-align:left;" | Moscow Map {{pipe}} {{lang|ru|Карта Москвы}}
| [http://www.moscowmap.ru/imap_moscow.shtml?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map]
| Moscow
|-
! scope="row" style="font-weight:normal; text-align:left;" | Cheboksary.ws {{pipe}} {{lang|ru|Чебоксары}}
| [http://www.cheboksary.ws/?xy={latdegdec},{londegdec}&z={osmzoom}&t=coordinate Map]
| Cheboksary
|}
<!--
[http://www.kartaspb.ru/index.php?v=2&x=14752&y=22463&z=6&pt=1]
-->
</div>
<div id="GEOTEMPLATE-SK">
==Slovakia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapy. Atlas.sk
| [http://mapy.atlas.sk/GPS%3A{latdegdec}N+{londegdec}E Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TuristickaMapa.sk
| [http://www.turistickamapa.sk/?y={latdegdec}&x={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-SI">
==Slovenia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | [[Orthophoto]]
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Online map services of Slovenia|Geopedia]]
| [http://www.geopedia.si/#L381_T13_b4_c{latdegdec},{londegdec}_s16 Map]
| [http://www.geopedia.si/#L381_T13_b2_c{latdegdec},{londegdec}_s16 Orthophoto]
| [http://www.geopedia.si/#L381_T13_b1-3_c{latdegdec},{londegdec}_s16 Terrain]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[GeaBios]]
| [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gaea+
|
|
| [http://gaeaplus.si/webstart?version=gaeaplus&command=FlyLookAt;{latdegdec};{londegdec};2500;WGS84;0.0;45.0; 3D Satellite]
|}
</div>
<div id="GEOTEMPLATE-ES">
==Spain==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Coverage
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | SigPac
| style="text-align:center" | all
| [http://sigpac.mapa.es/fega/antiguovisor/?ube={utm33easting};{utm33northing};{utm33easting};{utm33northing};33 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vissir – ICC
| Catalonia
| [http://www.icc.cat/vissir3/?lang=eng&mp_zoom=n:{zoom}&etrs89x={londegdec}&etrs89y={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Nomecalles
| Community of Madrid
| [http://gestiona.madrid.org/nomecalles/Inicio.icm?idioma=en&utmX={utmeasting}&utmY={utmnorthing}&zoom={altitude} Map]
|}
</div>
<div id="GEOTEMPLATE-SE">
==Sweden==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map]
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};h Labeled satellite]
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o View]
|-
! scope="row" style="font-weight:normal; text-align:left;" | hitta.se
| [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3Fz%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Map]
| [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3FShowSatellite%3Dtrue%26z%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Satellite]
|
|}
</div>
<div id="GEOTEMPLATE-CH">
==Switzerland==
[[Swiss Grid]] coordinates: '''{ch1903easting} / {ch1903northing}'''
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Cantons covered
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch
| style="text-align:center" | all
| [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch
| style="text-align:center" | all
| [http://map.search.ch/{ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com
| style="text-align:center" | all
| [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac
| style="text-align:center" | all
| [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | geoportal.ch
| St. Gallen, Appenzell
| [http://www.geoportal.ch/schnittstelle/aufruf.aspx?VERSION=1.0&REQUEST=GetIGis&MAP=94&TOPIC=Coord&ATTRIBUTE1={ch1903easting}&ATTRIBUTE2={ch1903northing}&sign=0&WIDTH=2000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | AGISviewer Kanton Aargau
| Aargau
| [http://www.ag.ch/agisviewer/mapFrame.asp?MapWidth=531&MapHeight=492&bitte%20ausw%E4hlen!&Cmd=zoomIn&MinX={ch1903easting}.00001&MinY={ch1903northing}.1&MaxX={ch1903easting}.9&MaxY={ch1903northing}.9 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoPortal Basel-Stadt
| Basel-City
| [http://www.geo-bs.ch/stadtplan_stadtplan_karte.cfm?X={ch1903easting}&Y={ch1903northing}&Jump=3&Zoom=1000&ZIparkhaeuser=1&ZIspitaeler=1 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | geoView.BL
| Basel-Country
|[https://www.geo.bl.ch/parzis/automap.jsp?LAYERS=map_3&ZOOM={ch1903easting}.000001%7C{ch1903northing}.000001%7C{ch1903easting}.99%7C{ch1903northing}.99 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GéoPortail du Canton de Jura
| Jura
| [https://www.jura.ch/sit/geoportail/IndexRedir.html?Y={ch1903easting}&X={ch1903northing}&echelle=5000&theme=photoaerienne Map]
|-
! scoEast={IlocalE}pe="row" style="font-weight:normal; text-align:left;" | SITN
| Neuchâtel
|[http://sitn.ne.ch/index.html?x={ch1903easting}&y={ch1903northing}&echelle=25000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GIS Schaffhausen
| Schaffhausen
| [http://www.gis.sh.ch/gis_sh_internet/mapservice.asp?IDProjekt=3&MapServiceUserGroup=1&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@1000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoShop vs.geo
| Valais
| [http://mapserver3.internetgalerie.ch/vs-geo/vs-geo.php?recenter_bbox={ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | ZugMap
| Zug
| [http://www.zugmap.ch/bm2_zugmap/mapservice.asp?IDProjekt=1&MapServiceUserGroup=29&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@5726&MapServiceDatenauswahl=89@g@94 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GIS-Browser Kanton Zürich
| Zurich
| [http://maps.zh.ch?topic=BASISKARTEZH&scale=10000&x={ch1903easting}&y={ch1903northing}&markers=ring Map]
|}
</div>
<div id="GEOTEMPLATE-UA">
==Ukraine==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map]
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Visicom Maps
| [http://maps.visicom.ua/#lng={londegdec};lat={latdegdec};z=6;map=ukraine_en;lngm={londegdec};latm={latdegdec}; Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
=Oceania=
<div id="GEOTEMPLATE-AU">
==Australia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Street-Directory.com.au
| [http://www.street-directory.com.au/sd_new/genmap.cgi?x={londegdec}&y={latdegdec}&sizex=800&sizey=800&level=5&star=6 Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Bonzle Digital Atlas
| [http://maps.bonzle.com/c/a?a=p&x={londegdec}&y={latdegdec} Map]
| [http://maps.bonzle.com/c/a?a=p&d=ter&x={londegdec}&y={latdegdec} Terrain Slice]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Australian Geographic Reference Image
|
| [http://agri.openstreetmap.org/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Aerial] (via [[OpenStreetMap]])
|}
</div>
=Asia=
<div id="GEOTEMPLATE-AZ">
== Azerbaijan ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | GoMap.Az
| [https://gomap.az/maps/en/@/map;lt={latdegdec};ln={londegdec};z=13 Map]
|}
</div>
<div id="GEOTEMPLATE-CN">
==China==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Baidu Maps (百度地图)
| [http://map.baidu.com/?latlng={latdegdec},{londegdec}&title={titlee}&content={titlee}&autoOpen=true&l= Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Amap (高德地图)
| [http://ditu.amap.com/regeo?lng={londegdec}&lat={latdegdec}&name={titlee} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | QQ Map (腾讯地图)
|[https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx={londegdec}&pointy={latdegdec}&name={titlee}&addr=ADDRESS Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Tianditu / Map World (天地图)
|[https://map.tianditu.gov.cn/ Map] (Indirect link)
|-
| colspan="2" style="font-size:smaller" | Due to [[restrictions on geographic data in China]], all Chinese map services provide distorted maps that are shifted from GeoHack's coordinates. You may obtain coordinates suitable for these maps from [https://artoria2e5.github.io/PRCoords/demo?lat={latdegdec}&lon={londegdec}#output this link]. (Use "WGS → BD" for Baidu and "WGS → GCJ" for all other services including Google.)
|}
<!--
Sogou [http://map.sogou.com/index.html#c=12957437.5,4833843.75,{osmzoom}] look like 100,000*{latdegdec}
^^ Can be some sort of "web mercator" too.
^^ Official api available for conversion from WGS84/GCJ02/BD coordinate into Sougou coordinate, see http://map.sogou.com/api/documentation/javascript/api2.5/examples/index.html
^^ Fed http://api.go2map.com/maps/js/api_v2.5.1.js into https://lelinhtinh.github.io/de4js/: looks like a baidu-like web mercator with big LL2MC/MC2LL arrays for polynomial work
^^ Fed the site js /v708/js/z20190219.js in there too, no direct code paths to parse normal lat-lng
Mapbar - to be investigate
-->
</div>
<div id="GEOTEMPLATE-HK">
== Hong Kong ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | CentaMap
| [https://hk.centamap.com Map] (Indirect link)
|-
!GeoInfo Map
| [https://www2.map.gov.hk/gih3/view/index.jsp Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-IN">
== India ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | Bhuvan
| [https://bhuvan-app1.nrsc.gov.in/bhuvan2d/bhuvan/bhuvan2d.php Map] (Indirect link)
|-
!scope="row" style="font-weight:normal; text-align:right;" |MapmyIndia
| [https://maps.mapmyindia.com/@{latdegdec},{londegdec} Map]
|-
!scope="row" style="font-weight:normal; text-align:right;" |Survey of India
| [https://indiamaps.gov.in/soiapp/ Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-IR">
== Iran ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | Parsijoo map
| [https://map.parsijoo.ir/?lat={latdegdec}&lon={londegdec}&z=14 Map]
|-
!scope="row" style="font-weight:normal; text-align:right;" | Balad Maps
| [https://balad.ir/location?latitude={latdegdec}&longitude={londegdec}&zoom=16.500000 Map]
|}
</div>
<div id="GEOTEMPLATE-PS">
==Palestine==
:''In addition to Palestine Open Maps, Israeli maps tend to cover the State of Palestine fairly well.''<br /><br /><!--<br />Please do not move the Palestine entry and put it in its normal alphabetical place. It is here as part of a hack, so that it shows Israeli maps.-->
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Maps from 1870s to modern
|-
! scope="row" style="font-weight:normal; text-align:left;" | Palestine Open Maps
| [https://palopenmaps.org/view/9999/@{latdegdec},{londegdec} Maps]
|}
<div id="GEOTEMPLATE-IL">
==Israel==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Topo
! scope="col" | Historical
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Amud Anan<br />{{lang|he|עמוד ענן|rtl=yes}}
|
|
| [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec} Topo]
| [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec}&map=pef 1880]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | govmap
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=0 Map]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=1 Sat.] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=2 <small>[hybrid]</small>]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=9 Topo]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=6 1935] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=4 1940]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=3 3D buildings] [http://old.govmap.gov.il/viewer.asp alt.]
|}
===City specific===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | City
! scope="col" | Map
! scope="col" | Historical
! scope="col" | Other
|-
! rowspan="3" scope="row" style="font-weight:normal; text-align:left;" | govmap
| Haifa
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=8 1919]
|
|-
| Jerusalem
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=7 1926]
|
|-
| Tel Aviv
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=5 1930]
|
|}
</div>
</div>
<div id="GEOTEMPLATE-JP">
==Japan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geographical Survey Institute/CyberJapan
|
|
| [http://maps.gsi.go.jp/#15/{latdegdec}/{londegdec} Topo/Aerial], [http://cyberjapandata.gsi.go.jp/3d/site/index.html?did=std&lat={latdegdec}&lon={londegdec}&z=14 WebGL 3D]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapion
| [http://www.mapion.co.jp/m2/{latdegdec},{londegdec},{osmzoom} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapFan Web
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.mapfan.com/m.cgi?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yahoo! Japan
| [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom} Map]
| [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom}&mode=aero Aero]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Goo
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://map.goo.ne.jp/map.php?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Its-mo Guide
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.its-mo.com/z.htm?m={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}&l=8}} Map]
|
|
|}
</div>
<div id="GEOTEMPLATE-KZ">
==Kazakhstan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
<div id="GEOTEMPLATE-MO">
==Macao==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapa On-line de Macau
| [https://webmap.gis.gov.mo/InetGIS/port/index.html Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-SG">
==Singapore==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gothere
| [http://gothere.sg/maps#q:@{latdegdec}%2C%20{londegdec}: Map]
|}
</div>
<div id="GEOTEMPLATE-KO">
==South Korea==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" |Naver Map
| [https://map.naver.com/?lat={latdegdec}&lng={londegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" |Kakao Map
| [https://map.kakao.com/link/map/{latdegdec},{londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-TW">
==Taiwan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Urmap
| [http://www.urmap.com/map?center={latdegdec},{londegdec}&zoom={osmzoom} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Taiwan Map Service
| [https://maps.nlsc.gov.tw/T09E/mapshow.action?lat={latdegdec}?lon={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-TH">
==Thailand==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Longdo Map
| [https://map.longdo.com/?locale=en&search={latdegdec},{londegdec} Map]
|}
</div>
=South America=
No specific resources added yet.
=Africa=
<div id="GEOTEMPLATE-NA">
==Namibia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | South African Chief Directorate: Surveys and Mapping 1:50k Topographic (1970s/1980s)
| [https://namibia-topo.openstreetmap.org.za/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] (via OpenStreetMap South Africa)
|}
</div>
<div id="GEOTEMPLATE-ZA">
==South Africa==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Chief Directorate: National Geo-spatial Information]] aerial
| [http://aerial.openstreetmap.org.za/?lon={londegdec}&lat={latdegdec}&zoom={osmzoom} Aerial Imagery] (via OpenStreetMap South Africa)
|}
</div>
<div id="GEOTEMPLATE-AQ"><div id="GEOTEMPLATE-XS"><!--XS: Wiki assigned code elements per [[de:Vorlage:Coordinate#Ozeane]] for Southern Ocean -->
=Antarctica=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Antarctic Digital Database Map Viewer
| [https://www.add.scar.org/ Map] (Indirect link)
|}
</div></div>
<div id="GEOTEMPLATE-XN">
=Arctic=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Arctic Web Map
| [https://webmap.arcticconnect.ca/index.html#ac_3573/{osmzoom}/{latdegdec}/{londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-XZ">
=International waters (XZ)=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Open Sea Map
| [https://map.openseamap.org/?zoom=14&lat={latdegdec}&lon={londegdec} Map]
|}
</div>
<!-- End region-specific -->
</div><noinclude>
{{documentation|Template:GeoTemplate/doc}}
</noinclude>
f660ba8db3681adb40f06e1a48d7a6ab1c479523
Module:String
828
17
2998
998
2023-10-25T18:17:50Z
wikipedia>Trappist the monk
0
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The first index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
2ad0905c56ef4955950b75a8f00974fe82aed5e4
Module:Wd
828
1048
3279
2295
2023-10-26T14:36:14Z
wikipedia>Jonesey95
0
update version number per talk page
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local arg = ...
local i18n
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = arg
end
if not i18n then
i18n = require(title .. "/i18n").init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, param)
local text = i18n["errors"][code]
if param then text = mw.ustring.gsub(text, "$1", param) end
return text
end
local function throwError(errorMessage, param)
error(errorText(errorMessage, param))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels?
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local key, citeWeb, citeQ, label
local params = {}
local citeParams = {['web'] = {}, ['q'] = {}}
local citeMismatch = {}
local useCite = nil
local useParams = nil
local value = ""
local ref = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local numAuthorParameters = 0
local numAuthorNameStringParameters = 0
local tempLink
local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID
local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any
local version = 5 -- increment this each time the below logic is changed to avoid conflict errors
if statement.snaks then
-- don't include "imported from", which is added by a bot
if statement.snaks[aliasesP.importedFrom] then
statement.snaks[aliasesP.importedFrom] = nil
end
-- don't include "Wikimedia import URL"
if statement.snaks[aliasesP.wikimediaImportURL] then
statement.snaks[aliasesP.wikimediaImportURL] = nil
-- don't include "retrieved" if no "referenceURL" is present,
-- as "retrieved" probably belongs to "Wikimedia import URL"
if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then
statement.snaks[aliasesP.retrieved] = nil
end
end
-- don't include "inferred from", which is added by a bot
if statement.snaks[aliasesP.inferredFrom] then
statement.snaks[aliasesP.inferredFrom] = nil
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference
-- find the "Wikidata property" properties in the item from "stated in"
wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL.
additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- don't include "subject named as", but use it as the title when "title" is not present but a URL is
if statement.snaks[aliasesP.subjectNamedAs] then
if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then
additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value
end
statement.snaks[aliasesP.subjectNamedAs] = nil
end
-- retrieve all the parameters
for i in pairs(statement.snaks) do
label = ""
-- multiple authors may be given
if i == aliasesP.author or i == aliasesP.authorNameString then
params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true
else
params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #params[i] == 0 then
params[i] = nil
else
referenceEmpty = false
if statement.snaks[i][1].datatype == 'external-id' then
key = "external-id"
label = self.conf:getLabel(i)
if label ~= "" then
label = label .. " "
end
else
key = i
end
-- add the parameter to each matching type of citation
for j in pairs(citeParams) do
-- do so if there was no mismatch with a previous parameter
if not citeMismatch[j] then
-- check if this parameter is not mismatching itself
if i18n['cite'][j][key] then
-- continue if an option is available in the corresponding cite template
if i18n['cite'][j][key] ~= "" then
-- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter)
if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then
citeParams[j][i18n['cite'][j][key]] = label .. params[i][1]
-- to avoid problems with non-author multiple parameters (if existent), the following old code is retained
for k=2, #params[i] do
citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k]
end
-- handle "author" and "author name string" specially if they use the same template parameter
elseif i == aliasesP.author or i == aliasesP.authorNameString then
if params[aliasesP.author] ~= nil then
numAuthorParameters = #params[aliasesP.author]
else
numAuthorParameters = 0
end
if params[aliasesP.authorNameString] ~= nil then
numAuthorNameStringParameters = #params[aliasesP.authorNameString]
else
numAuthorNameStringParameters = 0
end
-- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks
-- reason: parameters are added to params each iteration of the loop, not before the loop
if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then
for k=1, numAuthorParameters + numAuthorNameStringParameters do
if k <= numAuthorParameters then -- now handling the authors from the "author" property
citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k]
else -- now handling the authors from "author name string"
citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters]
end
end
end
end
end
else
citeMismatch[j] = true
end
end
end
end
end
-- use additional properties
for i in pairs(additionalRefProperties) do
for j in pairs(citeParams) do
if not citeMismatch[j] and i18n["cite"][j][i] then
citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i]
else
citeMismatch[j] = true
end
end
end
-- get title of general template for citing web references
citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front
-- get title of template that expands stated-in references into citations
citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front
-- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present
if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then
useCite = citeWeb
useParams = citeParams['web']
-- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present
elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then
-- we need the raw "stated in" Q-identifier for the this template
citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true
useCite = citeQ
useParams = citeParams['q']
end
if useCite and useParams then
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(useParams) do
value = value .. "|" .. i .. "=" .. v
end
value = "{{" .. useCite .. value .. "}}"
else
value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams}
end
-- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error
elseif not referenceEmpty then
value = "<span style=\"color:#dd3333\">" .. errorText("malformed-reference") .. "</span>"
end
if value ~= "" then
value = {value} -- create one value object
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version)
end
ref = {value} -- wrap the value object in an array
end
end
return ref
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
local valuesArray, refHash
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true)
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
279887e54847ae34d319ff4c305ab2c65fdbc474
Module:Location map
828
1395
2977
2730
2023-10-27T00:08:43Z
Pppery
6
Copy from sandbox per request on talk
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99
if map('image' .. digits) ~= '' then
return map('image' .. digits)
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noviewer noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:addClass('od')
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
e4ccfcc6e71c45a4355aa7240a0a8b81dc19f8eb
Module:Documentation/config
828
52
2985
174
2023-10-28T01:25:16Z
Pppery
6
Split [[Category:Templates sandboxes]] per CfD
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category'] - A category to add to all template sandboxes.
-- cfg['module-sandbox-category'] - A category to add to all module sandboxes.
-- cfg['module-sandbox-category'] - A category to add to all sandboxe not in templates or modules.
cfg['sandbox-category'] = 'Template sandboxes'
cfg['module-sandbox-category'] = 'Module sandboxes'
cfg['other-sandbox-category'] = 'Sandboxes outside of template or module namespace'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
56b6127664e31128dea1cecf2e392cf9313df6a3
2986
2985
2023-11-09T13:08:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Documentation/config]]
Scribunto
text/plain
----------------------------------------------------------------------------------------------------
--
-- Configuration for Module:Documentation
--
-- Here you can set the values of the parameters and messages used in Module:Documentation to
-- localise it to your wiki and your language. Unless specified otherwise, values given here
-- should be string values.
----------------------------------------------------------------------------------------------------
local cfg = {} -- Do not edit this line.
----------------------------------------------------------------------------------------------------
-- Protection template configuration
----------------------------------------------------------------------------------------------------
-- cfg['protection-reason-edit']
-- The protection reason for edit-protected templates to pass to
-- [[Module:Protection banner]].
cfg['protection-reason-edit'] = 'template'
--[[
----------------------------------------------------------------------------------------------------
-- Sandbox notice configuration
--
-- On sandbox pages the module can display a template notifying users that the current page is a
-- sandbox, and the location of test cases pages, etc. The module decides whether the page is a
-- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the
-- messages that the notices contains.
----------------------------------------------------------------------------------------------------
--]]
-- cfg['sandbox-notice-image']
-- The image displayed in the sandbox notice.
cfg['sandbox-notice-image'] = '[[File:Sandbox.svg|50px|alt=|link=]]'
--[[
-- cfg['sandbox-notice-pagetype-template']
-- cfg['sandbox-notice-pagetype-module']
-- cfg['sandbox-notice-pagetype-other']
-- The page type of the sandbox page. The message that is displayed depends on the current subject
-- namespace. This message is used in either cfg['sandbox-notice-blurb'] or
-- cfg['sandbox-notice-diff-blurb'].
--]]
cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page'
cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page'
cfg['sandbox-notice-pagetype-other'] = 'sandbox page'
--[[
-- cfg['sandbox-notice-blurb']
-- cfg['sandbox-notice-diff-blurb']
-- cfg['sandbox-notice-diff-display']
-- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence
-- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page
-- type, which is either cfg['sandbox-notice-pagetype-template'],
-- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what
-- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between
-- the sandbox and the main template. The display value of the diff link is set by
-- cfg['sandbox-notice-compare-link-display'].
--]]
cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.'
cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).'
cfg['sandbox-notice-compare-link-display'] = 'diff'
--[[
-- cfg['sandbox-notice-testcases-blurb']
-- cfg['sandbox-notice-testcases-link-display']
-- cfg['sandbox-notice-testcases-run-blurb']
-- cfg['sandbox-notice-testcases-run-link-display']
-- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit. $1 is a link to the test cases page.
-- cfg['sandbox-notice-testcases-link-display'] is the display value for that link.
-- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page
-- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test
-- cases page, and $2 is a link to the page to run it.
-- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test
-- cases.
--]]
cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.'
cfg['sandbox-notice-testcases-link-display'] = 'test cases'
cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).'
cfg['sandbox-notice-testcases-run-link-display'] = 'run'
-- cfg['sandbox-category'] - A category to add to all template sandboxes.
-- cfg['module-sandbox-category'] - A category to add to all module sandboxes.
-- cfg['module-sandbox-category'] - A category to add to all sandboxe not in templates or modules.
cfg['sandbox-category'] = 'Template sandboxes'
cfg['module-sandbox-category'] = 'Module sandboxes'
cfg['other-sandbox-category'] = 'Sandboxes outside of template or module namespace'
----------------------------------------------------------------------------------------------------
-- Start box configuration
----------------------------------------------------------------------------------------------------
-- cfg['documentation-icon-wikitext']
-- The wikitext for the icon shown at the top of the template.
cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- cfg['template-namespace-heading']
-- The heading shown in the template namespace.
cfg['template-namespace-heading'] = 'Template documentation'
-- cfg['module-namespace-heading']
-- The heading shown in the module namespace.
cfg['module-namespace-heading'] = 'Module documentation'
-- cfg['file-namespace-heading']
-- The heading shown in the file namespace.
cfg['file-namespace-heading'] = 'Summary'
-- cfg['other-namespaces-heading']
-- The heading shown in other namespaces.
cfg['other-namespaces-heading'] = 'Documentation'
-- cfg['view-link-display']
-- The text to display for "view" links.
cfg['view-link-display'] = 'view'
-- cfg['edit-link-display']
-- The text to display for "edit" links.
cfg['edit-link-display'] = 'edit'
-- cfg['history-link-display']
-- The text to display for "history" links.
cfg['history-link-display'] = 'history'
-- cfg['purge-link-display']
-- The text to display for "purge" links.
cfg['purge-link-display'] = 'purge'
-- cfg['create-link-display']
-- The text to display for "create" links.
cfg['create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Link box (end box) configuration
----------------------------------------------------------------------------------------------------
-- cfg['transcluded-from-blurb']
-- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page.
cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Help:Transclusion|transcluded]] from $1.'
--[[
-- cfg['create-module-doc-blurb']
-- Notice displayed in the module namespace when the documentation subpage does not exist.
-- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the
-- display cfg['create-link-display'].
--]]
cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
----------------------------------------------------------------------------------------------------
-- Experiment blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['experiment-blurb-template']
-- cfg['experiment-blurb-module']
-- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages.
-- It is only shown in the template and module namespaces. With the default English settings, it
-- might look like this:
--
-- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages.
--
-- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links.
--
-- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending
-- on what namespace we are in.
--
-- Parameters:
--
-- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display'])
--
-- If the sandbox doesn't exist, it is in the format:
--
-- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display'])
--
-- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload']
-- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display']
-- loads a default edit summary of cfg['mirror-edit-summary'].
--
-- $2 is a link to the test cases page. If the test cases page exists, it is in the following format:
--
-- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display'])
--
-- If the test cases page doesn't exist, it is in the format:
--
-- cfg['testcases-link-display'] (cfg['testcases-create-link-display'])
--
-- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the
-- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current
-- namespace.
--]]
cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages."
cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages."
----------------------------------------------------------------------------------------------------
-- Sandbox link configuration
----------------------------------------------------------------------------------------------------
-- cfg['sandbox-subpage']
-- The name of the template subpage typically used for sandboxes.
cfg['sandbox-subpage'] = 'sandbox'
-- cfg['template-sandbox-preload']
-- Preload file for template sandbox pages.
cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox'
-- cfg['module-sandbox-preload']
-- Preload file for Lua module sandbox pages.
cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox'
-- cfg['sandbox-link-display']
-- The text to display for "sandbox" links.
cfg['sandbox-link-display'] = 'sandbox'
-- cfg['sandbox-edit-link-display']
-- The text to display for sandbox "edit" links.
cfg['sandbox-edit-link-display'] = 'edit'
-- cfg['sandbox-create-link-display']
-- The text to display for sandbox "create" links.
cfg['sandbox-create-link-display'] = 'create'
-- cfg['compare-link-display']
-- The text to display for "compare" links.
cfg['compare-link-display'] = 'diff'
-- cfg['mirror-edit-summary']
-- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the
-- template page.
cfg['mirror-edit-summary'] = 'Create sandbox version of $1'
-- cfg['mirror-link-display']
-- The text to display for "mirror" links.
cfg['mirror-link-display'] = 'mirror'
-- cfg['mirror-link-preload']
-- The page to preload when a user clicks the "mirror" link.
cfg['mirror-link-preload'] = 'Template:Documentation/mirror'
----------------------------------------------------------------------------------------------------
-- Test cases link configuration
----------------------------------------------------------------------------------------------------
-- cfg['testcases-subpage']
-- The name of the template subpage typically used for test cases.
cfg['testcases-subpage'] = 'testcases'
-- cfg['template-testcases-preload']
-- Preload file for template test cases pages.
cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases'
-- cfg['module-testcases-preload']
-- Preload file for Lua module test cases pages.
cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases'
-- cfg['testcases-link-display']
-- The text to display for "testcases" links.
cfg['testcases-link-display'] = 'testcases'
-- cfg['testcases-edit-link-display']
-- The text to display for test cases "edit" links.
cfg['testcases-edit-link-display'] = 'edit'
-- cfg['testcases-run-link-display']
-- The text to display for test cases "run" links.
cfg['testcases-run-link-display'] = 'run'
-- cfg['testcases-create-link-display']
-- The text to display for test cases "create" links.
cfg['testcases-create-link-display'] = 'create'
----------------------------------------------------------------------------------------------------
-- Add categories blurb configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['add-categories-blurb']
-- Text to direct users to add categories to the /doc subpage. Not used if the "content" or
-- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a
-- link to the /doc subpage with a display value of cfg['doc-link-display'].
--]]
cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.'
-- cfg['doc-link-display']
-- The text to display when linking to the /doc subpage.
cfg['doc-link-display'] = '/doc'
----------------------------------------------------------------------------------------------------
-- Subpages link configuration
----------------------------------------------------------------------------------------------------
--[[
-- cfg['subpages-blurb']
-- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a
-- display value of cfg['subpages-link-display']. In the English version this blurb is simply
-- the link followed by a period, and the link display provides the actual text.
--]]
cfg['subpages-blurb'] = '$1.'
--[[
-- cfg['subpages-link-display']
-- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'],
-- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in
-- the template namespace, the module namespace, or another namespace.
--]]
cfg['subpages-link-display'] = 'Subpages of this $1'
-- cfg['template-pagetype']
-- The pagetype to display for template pages.
cfg['template-pagetype'] = 'template'
-- cfg['module-pagetype']
-- The pagetype to display for Lua module pages.
cfg['module-pagetype'] = 'module'
-- cfg['default-pagetype']
-- The pagetype to display for pages other than templates or Lua modules.
cfg['default-pagetype'] = 'page'
----------------------------------------------------------------------------------------------------
-- Doc link configuration
----------------------------------------------------------------------------------------------------
-- cfg['doc-subpage']
-- The name of the subpage typically used for documentation pages.
cfg['doc-subpage'] = 'doc'
-- cfg['docpage-preload']
-- Preload file for template documentation pages in all namespaces.
cfg['docpage-preload'] = 'Template:Documentation/preload'
-- cfg['module-preload']
-- Preload file for Lua module documentation pages.
cfg['module-preload'] = 'Template:Documentation/preload-module-doc'
----------------------------------------------------------------------------------------------------
-- HTML and CSS configuration
----------------------------------------------------------------------------------------------------
-- cfg['templatestyles']
-- The name of the TemplateStyles page where CSS is kept.
-- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed.
cfg['templatestyles'] = 'Module:Documentation/styles.css'
-- cfg['container']
-- Class which can be used to set flex or grid CSS on the
-- two child divs documentation and documentation-metadata
cfg['container'] = 'documentation-container'
-- cfg['main-div-classes']
-- Classes added to the main HTML "div" tag.
cfg['main-div-classes'] = 'documentation'
-- cfg['main-div-heading-class']
-- Class for the main heading for templates and modules and assoc. talk spaces
cfg['main-div-heading-class'] = 'documentation-heading'
-- cfg['start-box-class']
-- Class for the start box
cfg['start-box-class'] = 'documentation-startbox'
-- cfg['start-box-link-classes']
-- Classes used for the [view][edit][history] or [create] links in the start box.
-- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]]
cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks'
-- cfg['end-box-class']
-- Class for the end box.
cfg['end-box-class'] = 'documentation-metadata'
-- cfg['end-box-plainlinks']
-- Plainlinks
cfg['end-box-plainlinks'] = 'plainlinks'
-- cfg['toolbar-class']
-- Class added for toolbar links.
cfg['toolbar-class'] = 'documentation-toolbar'
-- cfg['clear']
-- Just used to clear things.
cfg['clear'] = 'documentation-clear'
----------------------------------------------------------------------------------------------------
-- Tracking category configuration
----------------------------------------------------------------------------------------------------
-- cfg['display-strange-usage-category']
-- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage
-- or a /testcases subpage. This should be a boolean value (either true or false).
cfg['display-strange-usage-category'] = true
-- cfg['strange-usage-category']
-- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a
-- /doc subpage or a /testcases subpage.
cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage'
--[[
----------------------------------------------------------------------------------------------------
-- End configuration
--
-- Don't edit anything below this line.
----------------------------------------------------------------------------------------------------
--]]
return cfg
56b6127664e31128dea1cecf2e392cf9313df6a3
Module:Documentation
828
51
2983
172
2023-10-28T01:26:52Z
Pppery
6
Split [[Category:Template sandboxes]] per CfD
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
local format = mw.ustring.format
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return format('[[%s|%s]]', page, display)
else
return format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return format(
'<span class="%s">(%s)</span>',
message('toolbar-class'),
table.concat(ret, ' | ')
)
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.canonicalUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
-- 'module-sandbox-category' --> 'Module sandboxes'
-- 'other-sandbox-category' --> 'Sandboxes outside of template or module namespace'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype, sandboxCat
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
sandboxCat = message('sandbox-category')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
sandboxCat = message('module-sandbox-category')
else
pagetype = message('sandbox-notice-pagetype-other')
sandboxCat = message('other-sandbox-category')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(sandboxCat)
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
return {
title = title,
docTitle = docTitle,
-- View, display, edit, and purge links if /doc exists.
viewLinkDisplay = message('view-link-display'),
editLinkDisplay = message('edit-link-display'),
historyLinkDisplay = message('history-link-display'),
purgeLinkDisplay = message('purge-link-display'),
preload = preload,
createLinkDisplay = message('create-link-display')
}
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local docTitle = data.docTitle
-- yes, we do intend to purge the template page on which the documentation appears
local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay)
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay)
return "[" .. viewLink .. "] [" .. editLink .. "] [" .. historyLink .. "] [" .. purgeLink .. "]"
else
local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
return "[" .. createLink .. "] [" .. purgeLink .. "]"
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editDisplay = message('edit-link-display')
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay)
local historyDisplay = message('history-link-display')
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
0f0f558e631e573a8b022c2a20bfc47c4137d640
2984
2983
2023-11-09T13:08:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Documentation]]
Scribunto
text/plain
-- This module implements {{documentation}}.
-- Get required modules.
local getArgs = require('Module:Arguments').getArgs
-- Get the config table.
local cfg = mw.loadData('Module:Documentation/config')
local p = {}
-- Often-used functions.
local ugsub = mw.ustring.gsub
local format = mw.ustring.format
----------------------------------------------------------------------------
-- Helper functions
--
-- These are defined as local functions, but are made available in the p
-- table for testing purposes.
----------------------------------------------------------------------------
local function message(cfgKey, valArray, expectType)
--[[
-- Gets a message from the cfg table and formats it if appropriate.
-- The function raises an error if the value from the cfg table is not
-- of the type expectType. The default type for expectType is 'string'.
-- If the table valArray is present, strings such as $1, $2 etc. in the
-- message are substituted with values from the table keys [1], [2] etc.
-- For example, if the message "foo-message" had the value 'Foo $2 bar $1.',
-- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
local msg = cfg[cfgKey]
expectType = expectType or 'string'
if type(msg) ~= expectType then
error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2)
end
if not valArray then
return msg
end
local function getMessageVal(match)
match = tonumber(match)
return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4)
end
return ugsub(msg, '$([1-9][0-9]*)', getMessageVal)
end
p.message = message
local function makeWikilink(page, display)
if display then
return format('[[%s|%s]]', page, display)
else
return format('[[%s]]', page)
end
end
p.makeWikilink = makeWikilink
local function makeCategoryLink(cat, sort)
local catns = mw.site.namespaces[14].name
return makeWikilink(catns .. ':' .. cat, sort)
end
p.makeCategoryLink = makeCategoryLink
local function makeUrlLink(url, display)
return format('[%s %s]', url, display)
end
p.makeUrlLink = makeUrlLink
local function makeToolbar(...)
local ret = {}
local lim = select('#', ...)
if lim < 1 then
return nil
end
for i = 1, lim do
ret[#ret + 1] = select(i, ...)
end
-- 'documentation-toolbar'
return format(
'<span class="%s">(%s)</span>',
message('toolbar-class'),
table.concat(ret, ' | ')
)
end
p.makeToolbar = makeToolbar
----------------------------------------------------------------------------
-- Argument processing
----------------------------------------------------------------------------
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame, {
valueFunc = function (key, value)
if type(value) == 'string' then
value = value:match('^%s*(.-)%s*$') -- Remove whitespace.
if key == 'heading' or value ~= '' then
return value
else
return nil
end
else
return value
end
end
})
return p[funcName](args)
end
end
----------------------------------------------------------------------------
-- Entry points
----------------------------------------------------------------------------
function p.nonexistent(frame)
if mw.title.getCurrentTitle().subpageText == 'testcases' then
return frame:expandTemplate{title = 'module test cases notice'}
else
return p.main(frame)
end
end
p.main = makeInvokeFunc('_main')
function p._main(args)
--[[
-- This function defines logic flow for the module.
-- @args - table of arguments passed by the user
--]]
local env = p.getEnvironment(args)
local root = mw.html.create()
root
:wikitext(p._getModuleWikitext(args, env))
:wikitext(p.protectionTemplate(env))
:wikitext(p.sandboxNotice(args, env))
:tag('div')
-- 'documentation-container'
:addClass(message('container'))
:attr('role', 'complementary')
:attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil)
:attr('aria-label', args.heading == '' and 'Documentation' or nil)
:newline()
:tag('div')
-- 'documentation'
:addClass(message('main-div-classes'))
:newline()
:wikitext(p._startBox(args, env))
:wikitext(p._content(args, env))
:tag('div')
-- 'documentation-clear'
:addClass(message('clear'))
:done()
:newline()
:done()
:wikitext(p._endBox(args, env))
:done()
:wikitext(p.addTrackingCategories(env))
-- 'Module:Documentation/styles.css'
return mw.getCurrentFrame():extensionTag (
'templatestyles', '', {src=cfg['templatestyles']
}) .. tostring(root)
end
----------------------------------------------------------------------------
-- Environment settings
----------------------------------------------------------------------------
function p.getEnvironment(args)
--[[
-- Returns a table with information about the environment, including title
-- objects and other namespace- or path-related data.
-- @args - table of arguments passed by the user
--
-- Title objects include:
-- env.title - the page we are making documentation for (usually the current title)
-- env.templateTitle - the template (or module, file, etc.)
-- env.docTitle - the /doc subpage.
-- env.sandboxTitle - the /sandbox subpage.
-- env.testcasesTitle - the /testcases subpage.
--
-- Data includes:
-- env.protectionLevels - the protection levels table of the title object.
-- env.subjectSpace - the number of the title's subject namespace.
-- env.docSpace - the number of the namespace the title puts its documentation in.
-- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace.
-- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template.
--
-- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value
-- returned will be nil.
--]]
local env, envFuncs = {}, {}
-- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value
-- returned by that function is memoized in the env table so that we don't call any of the functions
-- more than once. (Nils won't be memoized.)
setmetatable(env, {
__index = function (t, key)
local envFunc = envFuncs[key]
if envFunc then
local success, val = pcall(envFunc)
if success then
env[key] = val -- Memoise the value.
return val
end
end
return nil
end
})
function envFuncs.title()
-- The title object for the current page, or a test page passed with args.page.
local title
local titleArg = args.page
if titleArg then
title = mw.title.new(titleArg)
else
title = mw.title.getCurrentTitle()
end
return title
end
function envFuncs.templateTitle()
--[[
-- The template (or module, etc.) title object.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
-- 'testcases-subpage' --> 'testcases'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local subpage = title.subpageText
if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then
return mw.title.makeTitle(subjectSpace, title.baseText)
else
return mw.title.makeTitle(subjectSpace, title.text)
end
end
function envFuncs.docTitle()
--[[
-- Title object of the /doc subpage.
-- Messages:
-- 'doc-subpage' --> 'doc'
--]]
local title = env.title
local docname = args[1] -- User-specified doc page.
local docpage
if docname then
docpage = docname
else
docpage = env.docpageBase .. '/' .. message('doc-subpage')
end
return mw.title.new(docpage)
end
function envFuncs.sandboxTitle()
--[[
-- Title object for the /sandbox subpage.
-- Messages:
-- 'sandbox-subpage' --> 'sandbox'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage'))
end
function envFuncs.testcasesTitle()
--[[
-- Title object for the /testcases subpage.
-- Messages:
-- 'testcases-subpage' --> 'testcases'
--]]
return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage'))
end
function envFuncs.protectionLevels()
-- The protection levels table of the title object.
return env.title.protectionLevels
end
function envFuncs.subjectSpace()
-- The subject namespace number.
return mw.site.namespaces[env.title.namespace].subject.id
end
function envFuncs.docSpace()
-- The documentation namespace number. For most namespaces this is the
-- same as the subject namespace. However, pages in the Article, File,
-- MediaWiki or Category namespaces must have their /doc, /sandbox and
-- /testcases pages in talk space.
local subjectSpace = env.subjectSpace
if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then
return subjectSpace + 1
else
return subjectSpace
end
end
function envFuncs.docpageBase()
-- The base page of the /doc, /sandbox, and /testcases subpages.
-- For some namespaces this is the talk page, rather than the template page.
local templateTitle = env.templateTitle
local docSpace = env.docSpace
local docSpaceText = mw.site.namespaces[docSpace].name
-- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon.
return docSpaceText .. ':' .. templateTitle.text
end
function envFuncs.compareUrl()
-- Diff link between the sandbox and the main template using [[Special:ComparePages]].
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
if templateTitle.exists and sandboxTitle.exists then
local compareUrl = mw.uri.canonicalUrl(
'Special:ComparePages',
{ page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText}
)
return tostring(compareUrl)
else
return nil
end
end
return env
end
----------------------------------------------------------------------------
-- Auxiliary templates
----------------------------------------------------------------------------
p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext')
function p._getModuleWikitext(args, env)
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.contentModel ~= 'Scribunto' then return end
pcall(require, currentTitle.prefixedText) -- if it fails, we don't care
local moduleWikitext = package.loaded["Module:Module wikitext"]
if moduleWikitext then
return moduleWikitext.main()
end
end
function p.sandboxNotice(args, env)
--[=[
-- Generates a sandbox notice for display above sandbox pages.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-notice-image' --> '[[File:Sandbox.svg|50px|alt=|link=]]'
-- 'sandbox-notice-blurb' --> 'This is the $1 for $2.'
-- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).'
-- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page'
-- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page'
-- 'sandbox-notice-pagetype-other' --> 'sandbox page'
-- 'sandbox-notice-compare-link-display' --> 'diff'
-- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.'
-- 'sandbox-notice-testcases-link-display' --> 'test cases'
-- 'sandbox-category' --> 'Template sandboxes'
-- 'module-sandbox-category' --> 'Module sandboxes'
-- 'other-sandbox-category' --> 'Sandboxes outside of template or module namespace'
--]=]
local title = env.title
local sandboxTitle = env.sandboxTitle
local templateTitle = env.templateTitle
local subjectSpace = env.subjectSpace
if not (subjectSpace and title and sandboxTitle and templateTitle
and mw.title.equals(title, sandboxTitle)) then
return nil
end
-- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text".
local omargs = {}
omargs.image = message('sandbox-notice-image')
-- Get the text. We start with the opening blurb, which is something like
-- "This is the template sandbox for [[Template:Foo]] (diff)."
local text = ''
local pagetype, sandboxCat
if subjectSpace == 10 then
pagetype = message('sandbox-notice-pagetype-template')
sandboxCat = message('sandbox-category')
elseif subjectSpace == 828 then
pagetype = message('sandbox-notice-pagetype-module')
sandboxCat = message('module-sandbox-category')
else
pagetype = message('sandbox-notice-pagetype-other')
sandboxCat = message('other-sandbox-category')
end
local templateLink = makeWikilink(templateTitle.prefixedText)
local compareUrl = env.compareUrl
if compareUrl then
local compareDisplay = message('sandbox-notice-compare-link-display')
local compareLink = makeUrlLink(compareUrl, compareDisplay)
text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink})
else
text = text .. message('sandbox-notice-blurb', {pagetype, templateLink})
end
-- Get the test cases page blurb if the page exists. This is something like
-- "See also the companion subpage for [[Template:Foo/testcases|test cases]]."
local testcasesTitle = env.testcasesTitle
if testcasesTitle and testcasesTitle.exists then
if testcasesTitle.contentModel == "Scribunto" then
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink})
else
local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display')
local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay)
text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink})
end
end
-- Add the sandbox to the sandbox category.
omargs.text = text .. makeCategoryLink(sandboxCat)
-- 'documentation-clear'
return '<div class="' .. message('clear') .. '"></div>'
.. require('Module:Message box').main('ombox', omargs)
end
function p.protectionTemplate(env)
-- Generates the padlock icon in the top right.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'protection-template' --> 'pp-template'
-- 'protection-template-args' --> {docusage = 'yes'}
local protectionLevels = env.protectionLevels
if not protectionLevels then
return nil
end
local editProt = protectionLevels.edit and protectionLevels.edit[1]
local moveProt = protectionLevels.move and protectionLevels.move[1]
if editProt then
-- The page is edit-protected.
return require('Module:Protection banner')._main{
message('protection-reason-edit'), small = true
}
elseif moveProt and moveProt ~= 'autoconfirmed' then
-- The page is move-protected but not edit-protected. Exclude move
-- protection with the level "autoconfirmed", as this is equivalent to
-- no move protection at all.
return require('Module:Protection banner')._main{
action = 'move', small = true
}
else
return nil
end
end
----------------------------------------------------------------------------
-- Start box
----------------------------------------------------------------------------
p.startBox = makeInvokeFunc('_startBox')
function p._startBox(args, env)
--[[
-- This function generates the start box.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make
-- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox
-- which generate the box HTML.
--]]
env = env or p.getEnvironment(args)
local links
local content = args.content
if not content or args[1] then
-- No need to include the links if the documentation is on the template page itself.
local linksData = p.makeStartBoxLinksData(args, env)
if linksData then
links = p.renderStartBoxLinks(linksData)
end
end
-- Generate the start box html.
local data = p.makeStartBoxData(args, env, links)
if data then
return p.renderStartBox(data)
else
-- User specified no heading.
return nil
end
end
function p.makeStartBoxLinksData(args, env)
--[[
-- Does initial processing of data to make the [view] [edit] [history] [purge] links.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'view-link-display' --> 'view'
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'purge-link-display' --> 'purge'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'docpage-preload' --> 'Template:Documentation/preload'
-- 'create-link-display' --> 'create'
--]]
local subjectSpace = env.subjectSpace
local title = env.title
local docTitle = env.docTitle
if not title or not docTitle then
return nil
end
if docTitle.isRedirect then
docTitle = docTitle.redirectTarget
end
-- Create link if /doc doesn't exist.
local preload = args.preload
if not preload then
if subjectSpace == 828 then -- Module namespace
preload = message('module-preload')
else
preload = message('docpage-preload')
end
end
return {
title = title,
docTitle = docTitle,
-- View, display, edit, and purge links if /doc exists.
viewLinkDisplay = message('view-link-display'),
editLinkDisplay = message('edit-link-display'),
historyLinkDisplay = message('history-link-display'),
purgeLinkDisplay = message('purge-link-display'),
preload = preload,
createLinkDisplay = message('create-link-display')
}
end
function p.renderStartBoxLinks(data)
--[[
-- Generates the [view][edit][history][purge] or [create][purge] links from the data table.
-- @data - a table of data generated by p.makeStartBoxLinksData
--]]
local docTitle = data.docTitle
-- yes, we do intend to purge the template page on which the documentation appears
local purgeLink = makeWikilink("Special:Purge/" .. data.title.prefixedText, data.purgeLinkDisplay)
if docTitle.exists then
local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay)
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, data.editLinkDisplay)
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, data.historyLinkDisplay)
return "[" .. viewLink .. "] [" .. editLink .. "] [" .. historyLink .. "] [" .. purgeLink .. "]"
else
local createLink = makeUrlLink(docTitle:canonicalUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay)
return "[" .. createLink .. "] [" .. purgeLink .. "]"
end
return ret
end
function p.makeStartBoxData(args, env, links)
--[=[
-- Does initial processing of data to pass to the start-box render function, p.renderStartBox.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error.
--
-- Messages:
-- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]'
-- 'template-namespace-heading' --> 'Template documentation'
-- 'module-namespace-heading' --> 'Module documentation'
-- 'file-namespace-heading' --> 'Summary'
-- 'other-namespaces-heading' --> 'Documentation'
-- 'testcases-create-link-display' --> 'create'
--]=]
local subjectSpace = env.subjectSpace
if not subjectSpace then
-- Default to an "other namespaces" namespace, so that we get at least some output
-- if an error occurs.
subjectSpace = 2
end
local data = {}
-- Heading
local heading = args.heading -- Blank values are not removed.
if heading == '' then
-- Don't display the start box if the heading arg is defined but blank.
return nil
end
if heading then
data.heading = heading
elseif subjectSpace == 10 then -- Template namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading')
elseif subjectSpace == 828 then -- Module namespace
data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading')
elseif subjectSpace == 6 then -- File namespace
data.heading = message('file-namespace-heading')
else
data.heading = message('other-namespaces-heading')
end
-- Heading CSS
local headingStyle = args['heading-style']
if headingStyle then
data.headingStyleText = headingStyle
else
-- 'documentation-heading'
data.headingClass = message('main-div-heading-class')
end
-- Data for the [view][edit][history][purge] or [create] links.
if links then
-- 'mw-editsection-like plainlinks'
data.linksClass = message('start-box-link-classes')
data.links = links
end
return data
end
function p.renderStartBox(data)
-- Renders the start box html.
-- @data - a table of data generated by p.makeStartBoxData.
local sbox = mw.html.create('div')
sbox
-- 'documentation-startbox'
:addClass(message('start-box-class'))
:newline()
:tag('span')
:addClass(data.headingClass)
:attr('id', 'documentation-heading')
:cssText(data.headingStyleText)
:wikitext(data.heading)
local links = data.links
if links then
sbox:tag('span')
:addClass(data.linksClass)
:attr('id', data.linksId)
:wikitext(links)
end
return tostring(sbox)
end
----------------------------------------------------------------------------
-- Documentation content
----------------------------------------------------------------------------
p.content = makeInvokeFunc('_content')
function p._content(args, env)
-- Displays the documentation contents
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
local content = args.content
if not content and docTitle and docTitle.exists then
content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText}
end
-- The line breaks below are necessary so that "=== Headings ===" at the start and end
-- of docs are interpreted correctly.
return '\n' .. (content or '') .. '\n'
end
p.contentTitle = makeInvokeFunc('_contentTitle')
function p._contentTitle(args, env)
env = env or p.getEnvironment(args)
local docTitle = env.docTitle
if not args.content and docTitle and docTitle.exists then
return docTitle.prefixedText
else
return ''
end
end
----------------------------------------------------------------------------
-- End box
----------------------------------------------------------------------------
p.endBox = makeInvokeFunc('_endBox')
function p._endBox(args, env)
--[=[
-- This function generates the end box (also known as the link box).
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
--]=]
-- Get environment data.
env = env or p.getEnvironment(args)
local subjectSpace = env.subjectSpace
local docTitle = env.docTitle
if not subjectSpace or not docTitle then
return nil
end
-- Check whether we should output the end box at all. Add the end
-- box by default if the documentation exists or if we are in the
-- user, module or template namespaces.
local linkBox = args['link box']
if linkBox == 'off'
or not (
docTitle.exists
or subjectSpace == 2
or subjectSpace == 828
or subjectSpace == 10
)
then
return nil
end
-- Assemble the link box.
local text = ''
if linkBox then
text = text .. linkBox
else
text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]."
if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then
-- We are in the user, template or module namespaces.
-- Add sandbox and testcases links.
-- "Editors can experiment in this template's sandbox and testcases pages."
text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />'
if not args.content and not args[1] then
-- "Please add categories to the /doc subpage."
-- Don't show this message with inline docs or with an explicitly specified doc page,
-- as then it is unclear where to add the categories.
text = text .. (p.makeCategoriesBlurb(args, env) or '')
end
text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template"
end
end
local box = mw.html.create('div')
-- 'documentation-metadata'
box:attr('role', 'note')
:addClass(message('end-box-class'))
-- 'plainlinks'
:addClass(message('end-box-plainlinks'))
:wikitext(text)
:done()
return '\n' .. tostring(box)
end
function p.makeDocPageBlurb(args, env)
--[=[
-- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)".
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'edit-link-display' --> 'edit'
-- 'history-link-display' --> 'history'
-- 'transcluded-from-blurb' -->
-- 'The above [[Wikipedia:Template documentation|documentation]]
-- is [[Help:Transclusion|transcluded]] from $1.'
-- 'module-preload' --> 'Template:Documentation/preload-module-doc'
-- 'create-link-display' --> 'create'
-- 'create-module-doc-blurb' -->
-- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].'
--]=]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local ret
if docTitle.exists then
-- /doc exists; link to it.
local docLink = makeWikilink(docTitle.prefixedText)
local editDisplay = message('edit-link-display')
local editLink = makeWikilink("Special:EditPage/" .. docTitle.prefixedText, editDisplay)
local historyDisplay = message('history-link-display')
local historyLink = makeWikilink("Special:PageHistory/" .. docTitle.prefixedText, historyDisplay)
ret = message('transcluded-from-blurb', {docLink})
.. ' '
.. makeToolbar(editLink, historyLink)
.. '<br />'
elseif env.subjectSpace == 828 then
-- /doc does not exist; ask to create it.
local createUrl = docTitle:canonicalUrl{action = 'edit', preload = message('module-preload')}
local createDisplay = message('create-link-display')
local createLink = makeUrlLink(createUrl, createDisplay)
ret = message('create-module-doc-blurb', {createLink})
.. '<br />'
end
return ret
end
function p.makeExperimentBlurb(args, env)
--[[
-- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
--
-- Messages:
-- 'sandbox-link-display' --> 'sandbox'
-- 'sandbox-edit-link-display' --> 'edit'
-- 'compare-link-display' --> 'diff'
-- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'sandbox-create-link-display' --> 'create'
-- 'mirror-edit-summary' --> 'Create sandbox version of $1'
-- 'mirror-link-display' --> 'mirror'
-- 'mirror-link-preload' --> 'Template:Documentation/mirror'
-- 'sandbox-link-display' --> 'sandbox'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display'--> 'edit'
-- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox'
-- 'testcases-create-link-display' --> 'create'
-- 'testcases-link-display' --> 'testcases'
-- 'testcases-edit-link-display' --> 'edit'
-- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases'
-- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases'
-- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.'
-- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
local sandboxTitle = env.sandboxTitle
local testcasesTitle = env.testcasesTitle
local templatePage = templateTitle.prefixedText
if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then
return nil
end
-- Make links.
local sandboxLinks, testcasesLinks
if sandboxTitle.exists then
local sandboxPage = sandboxTitle.prefixedText
local sandboxDisplay = message('sandbox-link-display')
local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay)
local sandboxEditDisplay = message('sandbox-edit-link-display')
local sandboxEditLink = makeWikilink("Special:EditPage/" .. sandboxPage, sandboxEditDisplay)
local compareUrl = env.compareUrl
local compareLink
if compareUrl then
local compareDisplay = message('compare-link-display')
compareLink = makeUrlLink(compareUrl, compareDisplay)
end
sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink)
else
local sandboxPreload
if subjectSpace == 828 then
sandboxPreload = message('module-sandbox-preload')
else
sandboxPreload = message('template-sandbox-preload')
end
local sandboxCreateUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = sandboxPreload}
local sandboxCreateDisplay = message('sandbox-create-link-display')
local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay)
local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)})
local mirrorPreload = message('mirror-link-preload')
local mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary}
if subjectSpace == 828 then
mirrorUrl = sandboxTitle:canonicalUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary}
end
local mirrorDisplay = message('mirror-link-display')
local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay)
sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
end
if testcasesTitle.exists then
local testcasesPage = testcasesTitle.prefixedText
local testcasesDisplay = message('testcases-link-display')
local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay)
local testcasesEditUrl = testcasesTitle:canonicalUrl{action = 'edit'}
local testcasesEditDisplay = message('testcases-edit-link-display')
local testcasesEditLink = makeWikilink("Special:EditPage/" .. testcasesPage, testcasesEditDisplay)
-- for Modules, add testcases run link if exists
if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then
local testcasesRunLinkDisplay = message('testcases-run-link-display')
local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay)
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink)
else
testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink)
end
else
local testcasesPreload
if subjectSpace == 828 then
testcasesPreload = message('module-testcases-preload')
else
testcasesPreload = message('template-testcases-preload')
end
local testcasesCreateUrl = testcasesTitle:canonicalUrl{action = 'edit', preload = testcasesPreload}
local testcasesCreateDisplay = message('testcases-create-link-display')
local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay)
testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink)
end
local messageName
if subjectSpace == 828 then
messageName = 'experiment-blurb-module'
else
messageName = 'experiment-blurb-template'
end
return message(messageName, {sandboxLinks, testcasesLinks})
end
function p.makeCategoriesBlurb(args, env)
--[[
-- Generates the text "Please add categories to the /doc subpage."
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'doc-link-display' --> '/doc'
-- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.'
--]]
local docTitle = env.docTitle
if not docTitle then
return nil
end
local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display'))
return message('add-categories-blurb', {docPathLink})
end
function p.makeSubpagesBlurb(args, env)
--[[
-- Generates the "Subpages of this template" link.
-- @args - a table of arguments passed by the user
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'template-pagetype' --> 'template'
-- 'module-pagetype' --> 'module'
-- 'default-pagetype' --> 'page'
-- 'subpages-link-display' --> 'Subpages of this $1'
--]]
local subjectSpace = env.subjectSpace
local templateTitle = env.templateTitle
if not subjectSpace or not templateTitle then
return nil
end
local pagetype
if subjectSpace == 10 then
pagetype = message('template-pagetype')
elseif subjectSpace == 828 then
pagetype = message('module-pagetype')
else
pagetype = message('default-pagetype')
end
local subpagesLink = makeWikilink(
'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/',
message('subpages-link-display', {pagetype})
)
return message('subpages-blurb', {subpagesLink})
end
----------------------------------------------------------------------------
-- Tracking categories
----------------------------------------------------------------------------
function p.addTrackingCategories(env)
--[[
-- Check if {{documentation}} is transcluded on a /doc or /testcases page.
-- @env - environment table containing title objects, etc., generated with p.getEnvironment
-- Messages:
-- 'display-strange-usage-category' --> true
-- 'doc-subpage' --> 'doc'
-- 'testcases-subpage' --> 'testcases'
-- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage'
--
-- /testcases pages in the module namespace are not categorised, as they may have
-- {{documentation}} transcluded automatically.
--]]
local title = env.title
local subjectSpace = env.subjectSpace
if not title or not subjectSpace then
return nil
end
local subpage = title.subpageText
local ret = ''
if message('display-strange-usage-category', nil, 'boolean')
and (
subpage == message('doc-subpage')
or subjectSpace ~= 828 and subpage == message('testcases-subpage')
)
then
ret = ret .. makeCategoryLink(message('strange-usage-category'))
end
return ret
end
return p
0f0f558e631e573a8b022c2a20bfc47c4137d640
Template:Transclusionless
10
1686
3143
2023-10-30T21:26:42Z
wikipedia>ClydeFranklin
0
use {{[[Template:Yesno|Yesno]]}}
wikitext
text/x-wiki
{{Mbox|text=This template {{Yesno|{{{should|}}}|yes=should|no=may}} have no transclusions, because {{{reason|it is substituted by a tool or script, it is used as part of a short-term or less active Wikipedia process, or for some other reason}}}.}}<!--
--><includeonly>{{#switch: {{SUBPAGENAME}} |doc |sandbox= |[[Category:Wikipedia transclusionless templates]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
8a93407123b10ff7ce9ba5557b71bda67df7ec45
Module:Icon/data
828
981
3053
2157
2023-11-02T20:20:40Z
wikipedia>SWinxy
0
Add draft icon [[File:Symbol draft class.svg]], per edit request
Scribunto
text/plain
-- This module stores icon data for [[Module:Icon]].
--------------------------------------------------------------------------------
-- Icon data
--------------------------------------------------------------------------------
local data = {
fa = {
image = "Featured article star.svg",
tooltip = "Featured article",
link = true,
},
far = {
image = "Cscr-star piece.png",
tooltip = "Featured article review",
link = true,
},
farc = {
image = "Cscr-star piece.png",
tooltip = "Featured article removal candidate",
link = true,
},
ffa = {
aliases = {"dfa"},
image = "Featured article star - cross.svg",
tooltip = "Former featured article",
link = true,
},
fac = {
aliases = {"fan"},
image = "Cscr-candidate.svg",
tooltip = "Featured article candidate",
link = true,
},
ffac = {
aliases = {"nofa"},
image = "Featured article star - cross.svg",
tooltip = "Failed featured article candidate",
link = true,
},
fl = {
image = "Featured article star.svg",
tooltip = "Featured list",
link = true,
},
flrc = {
aliases = {"flr"},
image = "Cscr-star piece.png",
tooltip = "Featured list removal candidate",
link = true,
},
ffl = {
aliases = {"dfl"},
image = "Cscr-featured-strike.svg",
tooltip = "Former featured list",
link = true,
},
flc = {
aliases = {"fln"},
image = "Cscr-candidate.svg",
tooltip = "Featured list candidate",
link = true,
},
fflc = {
aliases = {"nofl"},
image = "Cscr-former.svg",
tooltip = "Failed featured list candidate",
link = true,
},
a = {
image = "Symbol a class.svg",
tooltip = "A-Class article",
link = true,
},
dac = {
aliases = {"daa"},
image = "Symbol unsupport A vote.svg",
tooltip = "Demoted A-Class article",
link = true,
},
acc = {
aliases = {"acn", "aac"},
image = "A candidate.svg",
tooltip = "A-Class article candidate",
link = true,
},
noac = {
aliases = {"faac"},
image = "Symbol unsupport A vote.svg",
tooltip = "Failed A-Class article candidate",
link = true,
},
ga = {
image = "Symbol support vote.svg",
tooltip = "Good article",
link = false,
},
gar = {
image = "GA Candidate Neutral vote(ChaosNil).svg",
tooltip = "Good article reassessment",
link = false,
},
dga = {
image = "Symbol unsupport vote.svg",
tooltip = "Delisted good article",
link = false,
},
gan = {
aliases = {"gac"},
image = "GA candidate.svg",
tooltip = "Good article nominee",
link = false,
},
ga2 = {
image = "Symbol neutral vote.svg",
tooltip = "Good article, 2nd opinion",
link = false,
},
gah = {
image = "Symbol wait.svg",
tooltip = "Good article on hold",
link = false,
},
fgan = {
aliases = {"noga", "gaf", "gf"},
image = "Symbol oppose vote.svg",
tooltip = "Failed good article nominee",
link = false,
},
fp = {
image = "Cscr-featured.svg",
tooltip = "Featured picture",
link = true,
},
fpc = {
aliases = {"fpn"},
image = "Cscr-candidate.svg",
tooltip = "Featured picture candidate",
link = true,
},
ffp = {
image = "Cscr-former.svg",
tooltip = "Former featured picture",
link = true,
},
vp = {
image = "ENWP VP Logo.svg",
tooltip = "Valued picture",
link = true,
},
vpc = {
image = "Valued pics 1.svg",
tooltip = "Valued picture candidate",
link = true,
},
fs = {
image = "Cscr-featured.svg",
tooltip = "Featured sound",
link = true,
},
ffs = {
image = "Cscr-former.svg",
tooltip = "Former featured sound",
link = true,
},
fsc = {
image = "Cscr-candidate.svg",
tooltip = "Featured sound candidate",
link = true,
},
fpo = {
image = "Linecons big-star.svg",
tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.",
link = true,
},
fpor = {
image = "Cscr-star piece.png",
tooltip = "Featured portal review",
link = true,
},
ffpo = {
image = "Featured article star - cross.svg",
tooltip = "Former featured portal",
link = true,
},
fpoc = {
image = "Cscr-candidate.svg",
tooltip = "Featured portal candidate",
link = true,
},
ft = {
image = "Cscr-featuredtopic.svg",
tooltip = "Featured topic",
link = true,
},
ftrc = {
image = "Cscr-star piece.png",
tooltip = "Featured topic removal candidate",
link = true,
},
fft = {
aliases = {"dft"},
image = "DFT candidate_cluster.svg",
tooltip = "Former featured topic",
link = true,
},
ftc = {
aliases = {"ftn"},
image = "FT candidate cluster.svg",
tooltip = "Featured topic candidate",
link = false,
},
gt = {
image = "Support cluster.svg",
tooltip = "Good topic",
link = false,
},
gtrc = {
image = "Symbol unsupport vote.svg",
tooltip = "Good topic removal candidate",
link = false,
},
gtc = {
aliases = {"gtn"},
image = "GA candidate cluster.svg",
tooltip = "Good topic candidate",
link = false,
},
bplus = {
aliases = {"b+"},
image = "Symbol bplus class.svg",
tooltip = "Bplus-Class article",
link = true,
},
b = {
image = "Symbol b class.svg",
tooltip = "B-Class article",
link = true,
},
br = {
aliases = {"bcr"},
image = "Bclass-checklist.svg",
tooltip = "B-Class review",
link = true,
},
c = {
image = "Symbol c class.svg",
tooltip = "C-Class article",
link = true,
},
start = {
image = "Symbol start class.svg",
tooltip = "Start-Class article",
link = true,
},
stub = {
image = "Symbol stub class.svg",
tooltip = "Stub-Class article",
link = true,
},
list = {
aliases = {"comparison"},
image = "Symbol list class.svg",
tooltip = "List-Class article",
link = false,
},
no = {
image = "Crystal button cancel.svg",
tooltip = "Unknown-Class article",
link = true,
},
book = {
image = "Symbol book class2.svg",
tooltip = "Wikipedia book",
link = true,
},
category = {
aliases = {"cat", "categ"},
image = "Symbol category class.svg",
tooltip = "Category",
link = false,
},
disambiguation = {
aliases = {"dab", "disamb", "disambig"},
image = "Symbol dab class.svg",
tooltip = "Disambiguation page",
link = true,
},
image = {
aliases = {"file"},
image = "Symbol file class.svg",
tooltip = "File",
link = true,
},
needed = {
image = "Symbol needed class.svg",
tooltip = "Needed article",
link = false,
},
outline = {
image = "Global thinking.svg",
tooltip = "Outline",
link = false,
},
portal = {
image = "Symbol portal class.svg",
tooltip = "Portal",
link = true,
},
project = {
image = "Symbol project class.svg",
tooltip = "Project page",
link = false,
},
redirect = {
aliases = {"red", "redir"},
image = "Symbol redirect vote2.svg",
tooltip = "Redirect",
link = true,
},
template = {
aliases = {"temp", "templ"},
image = "Symbol template class.svg",
tooltip = "Template",
link = false,
},
essay = {
image = "Essay.svg",
tooltip = "Essay",
link = false,
},
na = {
image = "Symbol na class.svg",
tooltip = "Non-article page",
link = true,
},
aa = {
image = "Yes check.svg",
tooltip = "Audited article of limited subject matter",
link = false,
},
da = {
image = "Symbol oppose vote.svg",
tooltip = "Demoted article",
link = false,
},
dyk = {
image = "Symbol question.svg",
tooltip = "Did You Know?",
link = false,
},
dyk2 = {
image = "DYK questionmark icon.svg",
tooltip = "Did You Know?",
link = false,
},
pr = {
image = "Nuvola apps kedit.png",
tooltip = "Peer review",
link = true,
},
ppr = {
image = "Nuvola apps kedit.png",
tooltip = "Portal peer review",
link = true,
},
q = {
aliases = {"question"},
image = "Symbol question.svg",
tooltip = "Question",
link = false,
},
cleanup = {
image = "Edit-clear.svg",
tooltip = "Cleanup work",
link = false,
},
qi = {
image = "Quality images logo.svg",
tooltip = "Quality image on Wikimedia Commons",
link = false,
},
vi = {
image = "Valued image seal.svg",
tooltip = "Valued image on Wikimedia Commons",
link = false,
},
tfa = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured Article",
link = true,
},
tfl = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured List",
link = true,
},
itn = {
image = "Globe current.svg",
tooltip = "In The News",
link = true,
},
otd = {
image = "Nuvola apps date.svg",
tooltip = "On This Day",
link = true,
},
wikiproject = {
image = "People icon.svg",
tooltip = "WikiProject",
link = false,
},
goce = {
image = "Writing Magnifying.PNG",
tooltip = "Guild of Copy Editors",
link = true,
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
link = true,
},
commons = {
image = "Commons-logo.svg",
tooltip = "Commons page",
link = false,
},
wikiquote = {
image = "Wikiquote-logo.svg",
tooltip = "Wikiquote page",
link = false,
},
wikiversity = {
image = "Wikiversity logo 2017.svg",
tooltip = "Wikiversity page",
link = true,
},
wikibooks = {
image = "Wikibooks-logo.svg",
tooltip = "Wikibooks page",
link = true,
},
wikisource = {
image = "Wikisource-logo.svg",
tooltip = "Wikisource page",
link = true,
},
wiktionary = {
image = "Wiktionary-logo.svg",
tooltip = "Wiktionary page",
link = true,
},
wikinews = {
image = "Wikinews-logo.svg",
tooltip = "Wikinews page",
link = true,
},
wikispecies = {
image = "Wikispecies-logo.svg",
tooltip = "Wikispecies page",
link = true,
},
wikidata = {
image = "Wikidata-logo.svg",
tooltip = "Wikidata page",
link = false,
},
wikivoyage = {
image = "Wikivoyage-logo.svg",
tooltip = "Wikivoyage page",
link = true,
},
mediawiki = {
image = "MediaWiki-2020-icon.svg",
tooltip = "MediaWiki",
link = false,
},
phabricator = {
aliases = {"phab"},
image = "Favicon-Phabricator-WM.svg",
tooltip = "Phabricator",
link = false,
},
wikitech = {
image = "Wikitech-2021-blue-icon.svg",
tooltip = "Wikitech",
link = false,
},
meta = {
image = "Wikimedia Community Logo.svg",
tooltip = "Meta-wiki page",
link = false,
},
four = {
aliases = {"4a"},
image = "Four Award.svg",
tooltip = "Four Award",
link = false,
},
million = {
image = "Million award logo.svg",
tooltip = "Million Award",
link = true,
},
module = {
image = "Lua-logo-nolabel.svg",
tooltip = "Module",
link = false,
},
vital = {
image = "Círculos_Concéntricos.svg",
tooltip = "Vital article",
link = false,
},
potd = {
image = "Wikipedia-logo.svg",
tooltip = "Picture of the Day",
link = true,
},
draft = {
image = "Symbol draft class.svg",
tooltip = "Draft-Class article",
link = false,
},
_DEFAULT = {
image = "Symbol question.svg",
link = false,
}
}
--------------------------------------------------------------------------------
-- End icon data
--------------------------------------------------------------------------------
-- Make aliases work the same as normal keys, and remove the "aliases" subtables.
local ret= {}
for code, iconData in pairs(data) do
iconData.canonicalCode = code
if iconData.aliases then
for _, alias in ipairs(iconData.aliases) do
ret[alias] = iconData
end
iconData.aliases = nil
end
ret[code] = iconData
end
return ret
6a708101e10a591a8d58b2ba30b9f8dc18ff1b7e
3054
3053
2023-11-09T17:59:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Icon/data]]
Scribunto
text/plain
-- This module stores icon data for [[Module:Icon]].
--------------------------------------------------------------------------------
-- Icon data
--------------------------------------------------------------------------------
local data = {
fa = {
image = "Featured article star.svg",
tooltip = "Featured article",
link = true,
},
far = {
image = "Cscr-star piece.png",
tooltip = "Featured article review",
link = true,
},
farc = {
image = "Cscr-star piece.png",
tooltip = "Featured article removal candidate",
link = true,
},
ffa = {
aliases = {"dfa"},
image = "Featured article star - cross.svg",
tooltip = "Former featured article",
link = true,
},
fac = {
aliases = {"fan"},
image = "Cscr-candidate.svg",
tooltip = "Featured article candidate",
link = true,
},
ffac = {
aliases = {"nofa"},
image = "Featured article star - cross.svg",
tooltip = "Failed featured article candidate",
link = true,
},
fl = {
image = "Featured article star.svg",
tooltip = "Featured list",
link = true,
},
flrc = {
aliases = {"flr"},
image = "Cscr-star piece.png",
tooltip = "Featured list removal candidate",
link = true,
},
ffl = {
aliases = {"dfl"},
image = "Cscr-featured-strike.svg",
tooltip = "Former featured list",
link = true,
},
flc = {
aliases = {"fln"},
image = "Cscr-candidate.svg",
tooltip = "Featured list candidate",
link = true,
},
fflc = {
aliases = {"nofl"},
image = "Cscr-former.svg",
tooltip = "Failed featured list candidate",
link = true,
},
a = {
image = "Symbol a class.svg",
tooltip = "A-Class article",
link = true,
},
dac = {
aliases = {"daa"},
image = "Symbol unsupport A vote.svg",
tooltip = "Demoted A-Class article",
link = true,
},
acc = {
aliases = {"acn", "aac"},
image = "A candidate.svg",
tooltip = "A-Class article candidate",
link = true,
},
noac = {
aliases = {"faac"},
image = "Symbol unsupport A vote.svg",
tooltip = "Failed A-Class article candidate",
link = true,
},
ga = {
image = "Symbol support vote.svg",
tooltip = "Good article",
link = false,
},
gar = {
image = "GA Candidate Neutral vote(ChaosNil).svg",
tooltip = "Good article reassessment",
link = false,
},
dga = {
image = "Symbol unsupport vote.svg",
tooltip = "Delisted good article",
link = false,
},
gan = {
aliases = {"gac"},
image = "GA candidate.svg",
tooltip = "Good article nominee",
link = false,
},
ga2 = {
image = "Symbol neutral vote.svg",
tooltip = "Good article, 2nd opinion",
link = false,
},
gah = {
image = "Symbol wait.svg",
tooltip = "Good article on hold",
link = false,
},
fgan = {
aliases = {"noga", "gaf", "gf"},
image = "Symbol oppose vote.svg",
tooltip = "Failed good article nominee",
link = false,
},
fp = {
image = "Cscr-featured.svg",
tooltip = "Featured picture",
link = true,
},
fpc = {
aliases = {"fpn"},
image = "Cscr-candidate.svg",
tooltip = "Featured picture candidate",
link = true,
},
ffp = {
image = "Cscr-former.svg",
tooltip = "Former featured picture",
link = true,
},
vp = {
image = "ENWP VP Logo.svg",
tooltip = "Valued picture",
link = true,
},
vpc = {
image = "Valued pics 1.svg",
tooltip = "Valued picture candidate",
link = true,
},
fs = {
image = "Cscr-featured.svg",
tooltip = "Featured sound",
link = true,
},
ffs = {
image = "Cscr-former.svg",
tooltip = "Former featured sound",
link = true,
},
fsc = {
image = "Cscr-candidate.svg",
tooltip = "Featured sound candidate",
link = true,
},
fpo = {
image = "Linecons big-star.svg",
tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.",
link = true,
},
fpor = {
image = "Cscr-star piece.png",
tooltip = "Featured portal review",
link = true,
},
ffpo = {
image = "Featured article star - cross.svg",
tooltip = "Former featured portal",
link = true,
},
fpoc = {
image = "Cscr-candidate.svg",
tooltip = "Featured portal candidate",
link = true,
},
ft = {
image = "Cscr-featuredtopic.svg",
tooltip = "Featured topic",
link = true,
},
ftrc = {
image = "Cscr-star piece.png",
tooltip = "Featured topic removal candidate",
link = true,
},
fft = {
aliases = {"dft"},
image = "DFT candidate_cluster.svg",
tooltip = "Former featured topic",
link = true,
},
ftc = {
aliases = {"ftn"},
image = "FT candidate cluster.svg",
tooltip = "Featured topic candidate",
link = false,
},
gt = {
image = "Support cluster.svg",
tooltip = "Good topic",
link = false,
},
gtrc = {
image = "Symbol unsupport vote.svg",
tooltip = "Good topic removal candidate",
link = false,
},
gtc = {
aliases = {"gtn"},
image = "GA candidate cluster.svg",
tooltip = "Good topic candidate",
link = false,
},
bplus = {
aliases = {"b+"},
image = "Symbol bplus class.svg",
tooltip = "Bplus-Class article",
link = true,
},
b = {
image = "Symbol b class.svg",
tooltip = "B-Class article",
link = true,
},
br = {
aliases = {"bcr"},
image = "Bclass-checklist.svg",
tooltip = "B-Class review",
link = true,
},
c = {
image = "Symbol c class.svg",
tooltip = "C-Class article",
link = true,
},
start = {
image = "Symbol start class.svg",
tooltip = "Start-Class article",
link = true,
},
stub = {
image = "Symbol stub class.svg",
tooltip = "Stub-Class article",
link = true,
},
list = {
aliases = {"comparison"},
image = "Symbol list class.svg",
tooltip = "List-Class article",
link = false,
},
no = {
image = "Crystal button cancel.svg",
tooltip = "Unknown-Class article",
link = true,
},
book = {
image = "Symbol book class2.svg",
tooltip = "Wikipedia book",
link = true,
},
category = {
aliases = {"cat", "categ"},
image = "Symbol category class.svg",
tooltip = "Category",
link = false,
},
disambiguation = {
aliases = {"dab", "disamb", "disambig"},
image = "Symbol dab class.svg",
tooltip = "Disambiguation page",
link = true,
},
image = {
aliases = {"file"},
image = "Symbol file class.svg",
tooltip = "File",
link = true,
},
needed = {
image = "Symbol needed class.svg",
tooltip = "Needed article",
link = false,
},
outline = {
image = "Global thinking.svg",
tooltip = "Outline",
link = false,
},
portal = {
image = "Symbol portal class.svg",
tooltip = "Portal",
link = true,
},
project = {
image = "Symbol project class.svg",
tooltip = "Project page",
link = false,
},
redirect = {
aliases = {"red", "redir"},
image = "Symbol redirect vote2.svg",
tooltip = "Redirect",
link = true,
},
template = {
aliases = {"temp", "templ"},
image = "Symbol template class.svg",
tooltip = "Template",
link = false,
},
essay = {
image = "Essay.svg",
tooltip = "Essay",
link = false,
},
na = {
image = "Symbol na class.svg",
tooltip = "Non-article page",
link = true,
},
aa = {
image = "Yes check.svg",
tooltip = "Audited article of limited subject matter",
link = false,
},
da = {
image = "Symbol oppose vote.svg",
tooltip = "Demoted article",
link = false,
},
dyk = {
image = "Symbol question.svg",
tooltip = "Did You Know?",
link = false,
},
dyk2 = {
image = "DYK questionmark icon.svg",
tooltip = "Did You Know?",
link = false,
},
pr = {
image = "Nuvola apps kedit.png",
tooltip = "Peer review",
link = true,
},
ppr = {
image = "Nuvola apps kedit.png",
tooltip = "Portal peer review",
link = true,
},
q = {
aliases = {"question"},
image = "Symbol question.svg",
tooltip = "Question",
link = false,
},
cleanup = {
image = "Edit-clear.svg",
tooltip = "Cleanup work",
link = false,
},
qi = {
image = "Quality images logo.svg",
tooltip = "Quality image on Wikimedia Commons",
link = false,
},
vi = {
image = "Valued image seal.svg",
tooltip = "Valued image on Wikimedia Commons",
link = false,
},
tfa = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured Article",
link = true,
},
tfl = {
image = "Wikipedia-logo.svg",
tooltip = "Today's Featured List",
link = true,
},
itn = {
image = "Globe current.svg",
tooltip = "In The News",
link = true,
},
otd = {
image = "Nuvola apps date.svg",
tooltip = "On This Day",
link = true,
},
wikiproject = {
image = "People icon.svg",
tooltip = "WikiProject",
link = false,
},
goce = {
image = "Writing Magnifying.PNG",
tooltip = "Guild of Copy Editors",
link = true,
},
wikipedia = {
image = "Wikipedia-logo.svg",
tooltip = "Wikipedia page",
link = true,
},
commons = {
image = "Commons-logo.svg",
tooltip = "Commons page",
link = false,
},
wikiquote = {
image = "Wikiquote-logo.svg",
tooltip = "Wikiquote page",
link = false,
},
wikiversity = {
image = "Wikiversity logo 2017.svg",
tooltip = "Wikiversity page",
link = true,
},
wikibooks = {
image = "Wikibooks-logo.svg",
tooltip = "Wikibooks page",
link = true,
},
wikisource = {
image = "Wikisource-logo.svg",
tooltip = "Wikisource page",
link = true,
},
wiktionary = {
image = "Wiktionary-logo.svg",
tooltip = "Wiktionary page",
link = true,
},
wikinews = {
image = "Wikinews-logo.svg",
tooltip = "Wikinews page",
link = true,
},
wikispecies = {
image = "Wikispecies-logo.svg",
tooltip = "Wikispecies page",
link = true,
},
wikidata = {
image = "Wikidata-logo.svg",
tooltip = "Wikidata page",
link = false,
},
wikivoyage = {
image = "Wikivoyage-logo.svg",
tooltip = "Wikivoyage page",
link = true,
},
mediawiki = {
image = "MediaWiki-2020-icon.svg",
tooltip = "MediaWiki",
link = false,
},
phabricator = {
aliases = {"phab"},
image = "Favicon-Phabricator-WM.svg",
tooltip = "Phabricator",
link = false,
},
wikitech = {
image = "Wikitech-2021-blue-icon.svg",
tooltip = "Wikitech",
link = false,
},
meta = {
image = "Wikimedia Community Logo.svg",
tooltip = "Meta-wiki page",
link = false,
},
four = {
aliases = {"4a"},
image = "Four Award.svg",
tooltip = "Four Award",
link = false,
},
million = {
image = "Million award logo.svg",
tooltip = "Million Award",
link = true,
},
module = {
image = "Lua-logo-nolabel.svg",
tooltip = "Module",
link = false,
},
vital = {
image = "Círculos_Concéntricos.svg",
tooltip = "Vital article",
link = false,
},
potd = {
image = "Wikipedia-logo.svg",
tooltip = "Picture of the Day",
link = true,
},
draft = {
image = "Symbol draft class.svg",
tooltip = "Draft-Class article",
link = false,
},
_DEFAULT = {
image = "Symbol question.svg",
link = false,
}
}
--------------------------------------------------------------------------------
-- End icon data
--------------------------------------------------------------------------------
-- Make aliases work the same as normal keys, and remove the "aliases" subtables.
local ret= {}
for code, iconData in pairs(data) do
iconData.canonicalCode = code
if iconData.aliases then
for _, alias in ipairs(iconData.aliases) do
ret[alias] = iconData
end
iconData.aliases = nil
end
ret[code] = iconData
end
return ret
6a708101e10a591a8d58b2ba30b9f8dc18ff1b7e
Module:Language/data/iana languages
828
468
3133
1036
2023-11-03T15:39:53Z
wikipedia>Trappist the monk
0
update to 2023-10-16 data;
Scribunto
text/plain
-- File-Date: 2023-10-16
local active = {
["aa"] = {"Afar"},
["ab"] = {"Abkhazian"},
["ae"] = {"Avestan"},
["af"] = {"Afrikaans"},
["ak"] = {"Akan"},
["am"] = {"Amharic"},
["an"] = {"Aragonese"},
["ar"] = {"Arabic"},
["as"] = {"Assamese"},
["av"] = {"Avaric"},
["ay"] = {"Aymara"},
["az"] = {"Azerbaijani"},
["ba"] = {"Bashkir"},
["be"] = {"Belarusian"},
["bg"] = {"Bulgarian"},
["bh"] = {"Bihari languages"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengali", "Bangla"},
["bo"] = {"Tibetan"},
["br"] = {"Breton"},
["bs"] = {"Bosnian"},
["ca"] = {"Catalan", "Valencian"},
["ce"] = {"Chechen"},
["ch"] = {"Chamorro"},
["co"] = {"Corsican"},
["cr"] = {"Cree"},
["cs"] = {"Czech"},
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},
["cv"] = {"Chuvash"},
["cy"] = {"Welsh"},
["da"] = {"Danish"},
["de"] = {"German"},
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Modern Greek (1453-)"},
["en"] = {"English"},
["eo"] = {"Esperanto"},
["es"] = {"Spanish", "Castilian"},
["et"] = {"Estonian"},
["eu"] = {"Basque"},
["fa"] = {"Persian"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faroese"},
["fr"] = {"French"},
["fy"] = {"Western Frisian"},
["ga"] = {"Irish"},
["gd"] = {"Scottish Gaelic", "Gaelic"},
["gl"] = {"Galician"},
["gn"] = {"Guarani"},
["gu"] = {"Gujarati"},
["gv"] = {"Manx"},
["ha"] = {"Hausa"},
["he"] = {"Hebrew"},
["hi"] = {"Hindi"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croatian"},
["ht"] = {"Haitian", "Haitian Creole"},
["hu"] = {"Hungarian"},
["hy"] = {"Armenian"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indonesian"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Icelandic"},
["it"] = {"Italian"},
["iu"] = {"Inuktitut"},
["ja"] = {"Japanese"},
["jv"] = {"Javanese"},
["ka"] = {"Georgian"},
["kg"] = {"Kongo"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kazakh"},
["kl"] = {"Kalaallisut", "Greenlandic"},
["km"] = {"Khmer", "Central Khmer"},
["kn"] = {"Kannada"},
["ko"] = {"Korean"},
["kr"] = {"Kanuri"},
["ks"] = {"Kashmiri"},
["ku"] = {"Kurdish"},
["kv"] = {"Komi"},
["kw"] = {"Cornish"},
["ky"] = {"Kirghiz", "Kyrgyz"},
["la"] = {"Latin"},
["lb"] = {"Luxembourgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgan", "Limburger", "Limburgish"},
["ln"] = {"Lingala"},
["lo"] = {"Lao"},
["lt"] = {"Lithuanian"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvian"},
["mg"] = {"Malagasy"},
["mh"] = {"Marshallese"},
["mi"] = {"Maori"},
["mk"] = {"Macedonian"},
["ml"] = {"Malayalam"},
["mn"] = {"Mongolian"},
["mr"] = {"Marathi"},
["ms"] = {"Malay (macrolanguage)"},
["mt"] = {"Maltese"},
["my"] = {"Burmese"},
["na"] = {"Nauru"},
["nb"] = {"Norwegian Bokmål"},
["nd"] = {"North Ndebele"},
["ne"] = {"Nepali (macrolanguage)"},
["ng"] = {"Ndonga"},
["nl"] = {"Dutch", "Flemish"},
["nn"] = {"Norwegian Nynorsk"},
["no"] = {"Norwegian"},
["nr"] = {"South Ndebele"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Occitan (post 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromo"},
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},
["os"] = {"Ossetian", "Ossetic"},
["pa"] = {"Panjabi", "Punjabi"},
["pi"] = {"Pali"},
["pl"] = {"Polish"},
["ps"] = {"Pushto", "Pashto"},
["pt"] = {"Portuguese"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh"},
["rn"] = {"Rundi"},
["ro"] = {"Romanian", "Moldavian", "Moldovan"},
["ru"] = {"Russian"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardinian"},
["sd"] = {"Sindhi"},
["se"] = {"Northern Sami"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Croatian"},
["si"] = {"Sinhala", "Sinhalese"},
["sk"] = {"Slovak"},
["sl"] = {"Slovenian"},
["sm"] = {"Samoan"},
["sn"] = {"Shona"},
["so"] = {"Somali"},
["sq"] = {"Albanian"},
["sr"] = {"Serbian"},
["ss"] = {"Swati"},
["st"] = {"Southern Sotho"},
["su"] = {"Sundanese"},
["sv"] = {"Swedish"},
["sw"] = {"Swahili (macrolanguage)"},
["ta"] = {"Tamil"},
["te"] = {"Telugu"},
["tg"] = {"Tajik"},
["th"] = {"Thai"},
["ti"] = {"Tigrinya"},
["tk"] = {"Turkmen"},
["tl"] = {"Tagalog"},
["tn"] = {"Tswana"},
["to"] = {"Tonga (Tonga Islands)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsonga"},
["tt"] = {"Tatar"},
["tw"] = {"Twi"},
["ty"] = {"Tahitian"},
["ug"] = {"Uighur", "Uyghur"},
["uk"] = {"Ukrainian"},
["ur"] = {"Urdu"},
["uz"] = {"Uzbek"},
["ve"] = {"Venda"},
["vi"] = {"Vietnamese"},
["vo"] = {"Volapük"},
["wa"] = {"Walloon"},
["wo"] = {"Wolof"},
["xh"] = {"Xhosa"},
["yi"] = {"Yiddish"},
["yo"] = {"Yoruba"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Chinese"},
["zu"] = {"Zulu"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Arbëreshë Albanian"},
["aaf"] = {"Aranadan"},
["aag"] = {"Ambrak"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Algerian Saharan Arabic"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Eastern Abnaki"},
["aas"] = {"Aasáx"},
["aat"] = {"Arvanitika Albanian"},
["aau"] = {"Abau"},
["aav"] = {"Austro-Asiatic languages"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasi"},
["aba"] = {"Abé"},
["abb"] = {"Bankon"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Western Abnaki"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Tajiki Arabic"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinese"},
["acf"] = {"Saint Lucian Creole French"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Mesopotamian Arabic"},
["acn"] = {"Achang"},
["acp"] = {"Eastern Acipa"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Hijazi Arabic"},
["acx"] = {"Omani Arabic"},
["acy"] = {"Cypriot Arabic"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Dhofari Arabic"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Adamorobe Sign Language"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Amdo Tibetan"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"Tunisian Arabic"},
["aec"] = {"Saidi Arabic"},
["aed"] = {"Argentine Sign Language"},
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Armenian Sign Language"},
["aeq"] = {"Aer"},
["aer"] = {"Eastern Arrernte"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"Afro-Asiatic languages"},
["afb"] = {"Gulf Arabic"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Afghan Sign Language"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Afro-Seminole Creole"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Central Cagayan Agta"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Southern Alta"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (China)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Antigua and Barbuda Creole English"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Assyrian Neo-Aramaic"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (Japan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (South Sudan)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleut"},
["alf"] = {"Alege"},
["alg"] = {"Algonquian languages"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Gheg Albanian"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutor"},
["als"] = {"Tosk Albanian"},
["alt"] = {"Southern Altai"},
["alu"] = {"'Are'are"},
["alv"] = {"Atlantic-Congo languages"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papua New Guinea)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Southern Amami-Oshima"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Western Neo-Aramaic"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Old English (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (India)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (India)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"Apache languages"},
["apb"] = {"Sa'a"},
["apc"] = {"Levantine Arabic"},
["apd"] = {"Sudanese Arabic"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Jicarilla Apache"},
["apk"] = {"Kiowa Apache"},
["apl"] = {"Lipan Apache"},
["apm"] = {"Mescalero-Chiricahua Apache"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatani"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Western Apache"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"Alacalufan languages"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"Algic languages"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Northern Alta"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Standard Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["ard"] = {"Arabana"},
["are"] = {"Western Arrarnta"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungun", "Mapuche"},
["aro"] = {"Araona"},
["arp"] = {"Arapaho"},
["arq"] = {"Algerian Arabic"},
["arr"] = {"Karo (Brazil)"},
["ars"] = {"Najdi Arabic"},
["art"] = {"Artificial languages"},
["aru"] = {"Aruá (Amazonas State)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Rodonia State)"},
["ary"] = {"Moroccan Arabic"},
["arz"] = {"Egyptian Arabic"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"American Sign Language"},
["asf"] = {"Auslan", "Australian Sign Language"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Algerian Sign Language"},
["asq"] = {"Austrian Sign Language"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Australian Aborigines Sign Language"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"Athapascan languages"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Northern Altai"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"Arauan languages"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (Nigeria)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"Australian languages"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Uzbeki Arabic"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Eastern Egyptian Bedawi Arabic"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papua New Guinea)"},
["awc"] = {"Cicipu"},
["awd"] = {"Arawakan languages"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"South Awyu"},
["awt"] = {"Araweté"},
["awu"] = {"Central Awyu"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Central African Republic)"},
["axl"] = {"Lower Southern Aranda"},
["axm"] = {"Middle Armenian"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Southern Aymara"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Hadrami Arabic"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Libyan Arabic"},
["ayn"] = {"Sanaani Arabic"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"North Mesopotamian Arabic"},
["ayq"] = {"Ayi (Papua New Guinea)"},
["ayr"] = {"Central Aymara"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"South Azerbaijani"},
["azc"] = {"Uto-Aztecan languages"},
["azd"] = {"Eastern Durango Nahuatl"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"North Azerbaijani"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Western Durango Nahuatl"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Highland Puebla Nahuatl"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"Banda languages"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Bahamas Creole English"},
["bai"] = {"Bamileke languages"},
["baj"] = {"Barakai"},
["bal"] = {"Baluchi"},
["ban"] = {"Balinese"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Bavarian"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"Baltic languages"},
["bau"] = {"Bada (Nigeria)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},
["bbp"] = {"West Central Banda"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (Nigeria)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Central Bai"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Southern Balochi"},
["bcd"] = {"North Babar"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Central Bikol"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (Nigeria)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Democratic Republic of Congo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (South Sudan)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (South Sudan)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Indonesian Bajau"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"West Coast Bajau"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (Zambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"Berber languages"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papua New Guinea)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Northern Bai"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"British Sign Language"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Ban Khor Sign Language"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Southern Bai"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (Laos)"},
["bgn"] = {"Western Balochi"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Eastern Balochi"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Balkan Gagauz Turkish"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Bohtan Neo-Aramaic"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (Indonesia)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Southern Birifor"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papua New Guinea)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Mid-Southern Banda"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Democratic Republic of Congo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Northern Sorsoganon"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (South Sudan)"},
["bln"] = {"Southern Catanduanes Bikol"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Northern Betsimisaraka Malagasy"},
["bmn"] = {"Bina (Papua New Guinea)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (Indonesia)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Eastern Tawbuid"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"Bantu languages"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Bamako Sign Language"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Central African Republic)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Banda Malay"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papua New Guinea)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Bulgarian Sign Language"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (Nigeria)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Bengkala Sign Language"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Berbice Creole Dutch"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Eastern Bru"},
["brv"] = {"Western Bru"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (India)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardi"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Bacanese Malay"},
["btk"] = {"Batak languages"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buriat"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginese"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Berau Malay"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Bolivian Sign Language"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (Indonesia)"},
["bvu"] = {"Bukit Malay"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Southern Bobo Madaré"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (Ghana)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Mongolia Buriat"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Russia Buriat"},
["bxs"] = {"Busam"},
["bxu"] = {"China Buriat"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (Nigeria)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Southern Betsimisaraka Malagasy"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Belize Kriol English"},
["bzk"] = {"Nicaragua Creole English"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (Indonesia)"},
["bzr"] = {"Biri"},
["bzs"] = {"Brazilian Sign Language"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (Nigeria)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifuna"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Southern Carrier"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"Central American Indian languages"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinian"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Galibi Carib"},
["cas"] = {"Tsimané"},
["cau"] = {"Caucasian languages"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"Chibchan languages"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalian"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Cafundo Creole"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Malaccan Creole Malay"},
["ccn"] = {"North Caucasian languages"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"South Caucasian languages"},
["cda"] = {"Choni"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Min Dong Chinese"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Chadian Sign Language"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Lower Chehalis"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Eastern Khumi Chin"},
["cel"] = {"Celtic languages"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Highland Oaxaca Chontal"},
["chf"] = {"Tabasco Chontal"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Mari (Russia)"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chq"] = {"Quiotepec Chinantec"},
["chr"] = {"Cherokee"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Ozumacín Chinantec"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasaw"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrian"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Western Cham"},
["cje"] = {"Chru"},
["cjh"] = {"Upper Chehalis"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Eastern Cham"},
["cjn"] = {"Chenapian"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Jinyu Chinese"},
["ckb"] = {"Central Kurdish"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavian"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Chukot"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Chaldean Neo-Aramaic"},
["cle"] = {"Lealao Chinantec"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Lowland Oaxaca Chontal"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Eastern Highland Chatino"},
["cma"] = {"Maa"},
["cmc"] = {"Chamic languages"},
["cme"] = {"Cerma"},
["cmg"] = {"Classical Mongolian"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Mandarin Chinese"},
["cmo"] = {"Central Mnong"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Northern Qiang"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrin"},
["cns"] = {"Central Asmat"},
["cnt"] = {"Tepetotutla Chinantec"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Middle Cornish"},
["coa"] = {"Cocos Islands Malay"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comanche"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptic"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"English-based creoles and pidgins"},
["cpf"] = {"French-based creoles and pidgins"},
["cpg"] = {"Cappadocian Greek"},
["cpi"] = {"Chinese Pidgin English"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"Portuguese-based creoles and pidgins"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Pu-Xian Chinese"},
["cpy"] = {"South Ucayali Ashéninka"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Island Carib"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["cri"] = {"Sãotomense"},
["crj"] = {"Southern East Cree"},
["crk"] = {"Plains Cree"},
["crl"] = {"Northern East Cree"},
["crm"] = {"Moose Cree"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crow"},
["crp"] = {"Creoles and pidgins"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Carolina Algonquian"},
["crs"] = {"Seselwa Creole French"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chiltepec Chinantec"},
["csb"] = {"Kashubian"},
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Chiangmai Sign Language"},
["cse"] = {"Czech Sign Language"},
["csf"] = {"Cuba Sign Language"},
["csg"] = {"Chilean Sign Language"},
["csh"] = {"Asho Chin"},
["csi"] = {"Coast Miwok"},
["csj"] = {"Songlai Chin"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Chinese Sign Language"},
["csm"] = {"Central Sierra Miwok"},
["csn"] = {"Colombian Sign Language"},
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},
["csq"] = {"Croatia Sign Language"},
["csr"] = {"Costa Rican Sign Language"},
["css"] = {"Southern Ohlone"},
["cst"] = {"Northern Ohlone"},
["csu"] = {"Central Sudanic languages"},
["csv"] = {"Sumtu Chin"},
["csw"] = {"Swampy Cree"},
["csx"] = {"Cambodian Sign Language"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Tedim Chin"},
["cte"] = {"Tepinapa Chinantec"},
["ctg"] = {"Chittagonian"},
["cth"] = {"Thaiphum Chin"},
["ctl"] = {"Tlacoatzintepec Chinantec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Western Highland Chatino"},
["cts"] = {"Northern Catanduanes Bikol"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Zacatepec Chatino"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"Cushitic languages"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Woods Cree"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Huizhou Chinese"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Min Zhong Chinese"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"Land Dayak languages"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slave (Athapascan)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Central African Republic)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Southern Dagaare"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Northern Dagara"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (individual language)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"South Central Dinka"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Southwestern Dinka"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Northeastern Dinka"},
["diq"] = {"Dimli (individual language)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Northwestern Dinka"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Southeastern Dinka"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmatian"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Upper Kinabatangan"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"Mande languages"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"East Damar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Upper Grand Valley Dani"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Lower Grand Valley Dani"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Northern Lendu"},
["dnr"] = {"Danaru"},
["dnt"] = {"Mid Grand Valley Dani"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Western Dani"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Northern Dong"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (macrolanguage)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papua New Guinea)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Dominican Sign Language"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"Dravidian languages"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"West Damar"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Lower Sorbian"},
["dse"] = {"Dutch Sign Language"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Danish Sign Language"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Mardin Sign Language"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Central Dusun"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Middle Dutch (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyula"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Eastern Bontok"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Ecuadorian Sign Language"},
["ecy"] = {"Eteocypriot"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilian"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"Egyptian languages"},
["egy"] = {"Egyptian (Ancient)"},
["ehs"] = {"Miyakubo Sign Language"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Standard Estonian"},
["ekl"] = {"Kol (Bangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Eastern Kayah"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamite"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Eastern Meohang"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Eastern Maninkakan"},
["emm"] = {"Mamulique"},
["emn"] = {"Eman"},
["emp"] = {"Northern Emberá"},
["emq"] = {"Eastern Minyag"},
["ems"] = {"Pacific Gulf Yupik"},
["emu"] = {"Eastern Muria"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Epigraphic Mayan"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Forest Enets"},
["enh"] = {"Tundra Enets"},
["enl"] = {"Enlhet"},
["enm"] = {"Middle English (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Edo State)"},
["enw"] = {"Enwan (Akwa Ibom State)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (Côte d'Ivoire)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"South Efate"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"North Alaskan Inupiatun"},
["esk"] = {"Northwest Alaska Inupiatun"},
["esl"] = {"Egypt Sign Language"},
["esm"] = {"Esuma"},
["esn"] = {"Salvadoran Sign Language"},
["eso"] = {"Estonian Sign Language"},
["esq"] = {"Esselen"},
["ess"] = {"Central Siberian Yupik"},
["esu"] = {"Central Yupik"},
["esx"] = {"Eskimo-Aleut languages"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Ethiopian Sign Language"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscan"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Basque (family)"},
["eve"] = {"Even"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenki"},
["ewo"] = {"Ewondo"},
["ext"] = {"Extremaduran"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"South Fali"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Equatorial Guinea)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Southwestern Fars"},
["faz"] = {"Northwestern Fars"},
["fbl"] = {"West Albay Bikol"},
["fcs"] = {"Quebec Sign Language"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Filipino", "Pilipino"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Tornedalen Finnish", "Meänkieli"},
["fiu"] = {"Finno-Ugrian languages"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Kven Finnish"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"North Fali"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Far Western Muria"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"Formosan languages"},
["fpe"] = {"Fernando Po Creole English"},
["fqs"] = {"Fas"},
["frc"] = {"Cajun French"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Middle French (ca. 1400-1600)"},
["fro"] = {"Old French (842-ca. 1400)"},
["frp"] = {"Arpitan", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["frt"] = {"Fortsenal"},
["fse"] = {"Finnish Sign Language"},
["fsl"] = {"French Sign Language"},
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaar"},
["fud"] = {"East Futuna"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["fuh"] = {"Western Niger Fulfulde"},
["fui"] = {"Bagirmi Fulfulde"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Central-Eastern Niger Fulfulde"},
["fur"] = {"Friulian"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Nigerian Fulfulde"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Mixed Great Andamanese"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauz"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Gan Chinese"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"West Central Oromo"},
["gba"] = {"Gbaya (Central African Republic)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Northern Grebo"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Eastern Xwla Gbe"},
["gby"] = {"Gbari"},
["gbz"] = {"Zoroastrian Dari"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Guadeloupean Creole French"},
["gcl"] = {"Grenadian Creole English"},
["gcn"] = {"Gaina"},
["gcr"] = {"Guianese Creole French"},
["gct"] = {"Colonia Tovar German"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Ghandruk Sign Language"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Hutterite German", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"Germanic languages"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Hiberno-Scottish Gaelic"},
["ghe"] = {"Southern Ghale"},
["ghh"] = {"Northern Ghale"},
["ghk"] = {"Geko Karen"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertese"},
["gim"] = {"Gimi (Eastern Highlands)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (West New Britain)"},
["giq"] = {"Green Gelao"},
["gir"] = {"Red Gelao"},
["gis"] = {"North Giziga"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"White Gelao"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"South Giziga"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Gurindji Kriol"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Madang Province)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Guinea Kpelle"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Chad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"East Germanic languages"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Middle High German (ca. 1050-1500)"},
["gml"] = {"Middle Low German"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"North Germanic languages"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"West Germanic languages"},
["gmx"] = {"Magoma"},
["gmy"] = {"Mycenaean Greek"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guanche"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Northern Gondi"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Western Bolivian Guaraní"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Old High German (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothic"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Ghanaian Pidgin English"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (Brazil)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Rajput Garasia"},
["grb"] = {"Grebo"},
["grc"] = {"Ancient Greek (to 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Southern Grebo"},
["grk"] = {"Greek languages"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Central Grebo"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Barclayville Grebo"},
["grz"] = {"Guramalum"},
["gse"] = {"Ghanaian Sign Language"},
["gsg"] = {"German Sign Language"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Guatemalan Sign Language"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Southwest Gbaya"},
["gsp"] = {"Wasembo"},
["gss"] = {"Greek Sign Language"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Paraguayan Guaraní"},
["guh"] = {"Guahibo"},
["gui"] = {"Eastern Bolivian Guaraní"},
["guk"] = {"Gumuz"},
["gul"] = {"Sea Island Creole English"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Guinean Sign Language"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (Paraguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Southern"},
["gya"] = {"Northwest Gbaya"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Guyanese Creole English"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Hanoi Sign Language"},
["hac"] = {"Gurani"},
["had"] = {"Hatam"},
["hae"] = {"Eastern Oromo"},
["haf"] = {"Haiphong Sign Language"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Hakka Chinese"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiian"},
["hax"] = {"Southern Haida"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Ancient Hebrew"},
["hbu"] = {"Habu"},
["hca"] = {"Andaman Creole Hindi"},
["hch"] = {"Huichol"},
["hdn"] = {"Northern Haida"},
["hds"] = {"Honduras Sign Language"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Northern Qiandong Miao"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Fiji Hindi"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hinduri"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittite"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Hieroglyphic Luwian"},
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},
["hmf"] = {"Hmong Don"},
["hmg"] = {"Southwestern Guiyang Hmong"},
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},
["hmn"] = {"Hmong", "Mong"},
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},
["hmq"] = {"Eastern Qiandong Miao"},
["hmr"] = {"Hmar"},
["hms"] = {"Southern Qiandong Miao"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},
["hmx"] = {"Hmong-Mien languages"},
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},
["hmz"] = {"Hmong Shua", "Sinicized Miao"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Southern Hindko"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Northern Hindko"},
["hns"] = {"Caribbean Hindustani"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Mari (Madang Province)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothi", "Haroti"},
["hok"] = {"Hokan languages"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Ho Chi Minh City Sign Language"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Horned Miao"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrik"},
["hrz"] = {"Harzani"},
["hsb"] = {"Upper Sorbian"},
["hsh"] = {"Hungarian Sign Language"},
["hsl"] = {"Hausa Sign Language"},
["hsn"] = {"Xiang Chinese"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Middle Hittite"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastec"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzib"},
["hvc"] = {"Haitian Vodoun Culture Language"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Western Armenian"},
["hyx"] = {"Armenian (family)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Icelandic Sign Language"},
["icr"] = {"Islander Creole English"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Indo-Portuguese"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Based Pidgin"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"Indo-Iranian languages"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"Ijo languages"},
["ijs"] = {"Southeast Ijo"},
["ike"] = {"Eastern Canadian Inuktitut"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Inuit Sign Language"},
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (Malaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (Philippines)"},
["ils"] = {"International Sign"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsian"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingush"},
["inj"] = {"Jungle Inga"},
["inl"] = {"Indonesian Sign Language"},
["inm"] = {"Minaean"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Indian Sign Language"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"Iranian languages"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"Iroquoian languages"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Italian Sign Language"},
["isg"] = {"Irish Sign Language"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Israeli Sign Language"},
["ist"] = {"Istriot"},
["isu"] = {"Isu (Menchum Division)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"Italic languages"},
["itd"] = {"Southern Tidung"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Judeo-Italian"},
["itl"] = {"Itelmen"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatec"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (Congo)"},
["izh"] = {"Ingrian"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Jamaican Creole English"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"New Caledonian Javanese"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Jambi Malay"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Judeo-Berber"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Jamaican Country Sign Language"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Judeo-Tat"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Judeo-Georgian"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Jhankot Sign Language"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Kaduna State)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Youle Jinuo"},
["jiv"] = {"Shuar"},
["jiy"] = {"Buyuan Jinuo"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Mobwa Karen"},
["jko"] = {"Kubo"},
["jkp"] = {"Paku Karen"},
["jkr"] = {"Koro (India)"},
["jks"] = {"Amami Koniya Sign Language"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Jamaican Sign Language"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (Nigeria)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (Nigeria)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Western Juxtlahuaca Mixtec"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Jordanian Sign Language"},
["jow"] = {"Jowulu"},
["jpa"] = {"Jewish Palestinian Aramaic"},
["jpr"] = {"Judeo-Persian"},
["jpx"] = {"Japanese (family)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Judeo-Arabic"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Japanese Sign Language"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Jumla Sign Language"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Caribbean Javanese"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Judeo-Yemeni Arabic"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpak", "Karakalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Central African Republic)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (Kenya)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"Karen languages"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardian"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Central African Republic)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (Indonesia)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantan"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},
["kcm"] = {"Gula (Central African Republic)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"Kordofanian languages"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaim"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Eastern Keres"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Democratic Republic of Congo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"West Kewa"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Northwestern Kolami"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (India)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kannada Kurumba"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnauri"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsari"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (Côte d'Ivoire)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhi", "Kutchi"},
["kfs"] = {"Bilaspuri"},
["kft"] = {"Kanjari"},
["kfu"] = {"Katkari"},
["kfv"] = {"Kurmukar"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Selangor Sign Language"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"Khoisan languages"},
["khj"] = {"Kuturmi"},
["khk"] = {"Halh Mongolian"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanese", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Democratic Republic of Congo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Eastern Parbate Kham"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (individual language)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Northeast Kiwai"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Coastal Konjo"},
["kjd"] = {"Southern Kiwai"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Highland Konjo"},
["kjl"] = {"Western Parbate Kham"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Harijan Kinnauri"},
["kjp"] = {"Pwo Eastern Karen"},
["kjq"] = {"Western Keres"},
["kjr"] = {"Kurudu"},
["kjs"] = {"East Kewa"},
["kjt"] = {"Phrae Pwo Karen"},
["kju"] = {"Kashaya"},
["kjv"] = {"Kaikavian Literary Language"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Mabaka Valley Kalinga"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (Nigeria)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Southern Dong"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papua New Guinea)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (Nigeria)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (India)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Northern Kurdish"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Karipúna Creole French"},
["kmw"] = {"Komo (Democratic Republic of Congo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Khorasani Turkish"},
["kna"] = {"Dera (Nigeria)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Central Kanuri"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Western Kanjobal"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (individual language)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (Guinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komi-Permyak"},
["kok"] = {"Konkani (macrolanguage)"},
["kol"] = {"Kol (Papua New Guinea)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraean"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komi-Zyrian"},
["kpw"] = {"Kobon"},
["kpx"] = {"Mountain Koiali"},
["kpy"] = {"Koryak"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Eastern Krahn"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Northern Kissi"},
["kqt"] = {"Klias River Kadazan"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karachay-Balkar"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelian"},
["krn"] = {"Sapo"},
["kro"] = {"Kru languages"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (Sudan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Western Krahn"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Southern Kalinga"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Southern Kisi"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"S'gaw Karen"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"North Muyu"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"South Muyu"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kituba (Democratic Republic of Congo)"},
["ktv"] = {"Eastern Katu"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Bas-Uélé District)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papua New Guinea)"},
["kuf"] = {"Western Katu"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumyk"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Upper Kuskokwim"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (Indonesia)"},
["kve"] = {"Kalabakan"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Korean Sign Language"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Geba Karen"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Lahta Karen", "Lahta"},
["kvu"] = {"Yinbaw Karen"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Yintale Karen", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["kwx"] = {"Khirwar"},
["kwy"] = {"San Salvador Kongo"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (Ethiopia)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Zayein Karen"},
["kxm"] = {"Northern Khmer"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papua New Guinea)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Northern Binukidnon"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Western Kayah"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Western Karaboro"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Tshopo District)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Southern Subanen"},
["lab"] = {"Linear A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladino"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Uganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Chad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lak"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Central Bontok"},
["lbl"] = {"Libon Bikol"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Libyan Sign Language"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Western Lawa"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Luri"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Democratic Republic of Congo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papua New Guinea)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lezghian"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (South Sudan)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (Indonesia)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"West-Central Limba"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligurian"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Liberian English"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (Guinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papua New Guinea)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Chad)"},
["llp"] = {"North Efate"},
["llq"] = {"Lolak"},
["lls"] = {"Lithuanian Sign Language"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"East Limba"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"South Lembata"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"West Lembata"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombard"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardic"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"South Central Banda"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (Côte d'Ivoire)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (Liberia)"},
["lon"] = {"Malawi Lomwe"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Louisiana Creole"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozi"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Northern Luri"},
["lre"] = {"Laurentian"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Southern Yamphu"},
["lrt"] = {"Larantuka Malay"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},
["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Latvian Sign Language"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Tibetan Sign Language"},
["lso"] = {"Laos Sign Language"},
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Trinidad and Tobago Sign Language"},
["lsv"] = {"Sivia Sign Language"},
["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Mauritian Sign Language"},
["ltc"] = {"Late Middle Chinese"},
["ltg"] = {"Latgalian"},
["lth"] = {"Thur"},
["lti"] = {"Leti (Indonesia)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludian"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Southern Luri"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Standard Latvian"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"White Lachi"},
["lwl"] = {"Eastern Lawa"},
["lwm"] = {"Laomian"},
["lwo"] = {"Luwo"},
["lws"] = {"Malawian Sign Language"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Literary Chinese"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"San Jerónimo Tecóatl Mazatec"},
["mab"] = {"Yutanduchi Mixtec"},
["mad"] = {"Madurese"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithili"},
["maj"] = {"Jalapa De Díaz Mazatec"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"Austronesian languages"},
["maq"] = {"Chiquihuitlán Mazatec"},
["mas"] = {"Masai"},
["mat"] = {"San Francisco Matlatzinca"},
["mau"] = {"Huautla Mazatec"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"North Moluccan Malay"},
["maz"] = {"Central Mazahua"},
["mba"] = {"Higaonon"},
["mbb"] = {"Western Bukidnon Manobo"},
["mbc"] = {"Macushi"},
["mbd"] = {"Dibabawon Manobo"},
["mbe"] = {"Molale"},
["mbf"] = {"Baba Malay"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Ilianen Manobo"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Sarangani Manobo"},
["mbt"] = {"Matigsalug Manobo"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (East Sepik Province)"},
["mby"] = {"Memoni"},
["mbz"] = {"Amoltepec Mixtec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Itundujia Mixtec"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Malaccan Creole Portuguese"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Cameroon Mambila"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Chad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"South Watut"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (Nigeria)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papua New Guinea)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Chad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Maltese Sign Language"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papua New Guinea)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Santa Lucía Monteverde Mixtec"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (Ethiopia)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Southwestern Tlaxiaco Mixtec"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Central Melanau"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Kedah Malay"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"North Mofu"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi South"},
["mfn"] = {"Cross River Mbembe"},
["mfo"] = {"Mbe"},
["mfp"] = {"Makassar Malay"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Mexican Sign Language"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Middle Irish (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Eastern Magar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (India)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (Zambia)"},
["mhp"] = {"Balinese Malay"},
["mhq"] = {"Mandan"},
["mhr"] = {"Eastern Mari"},
["mhs"] = {"Buru (Indonesia)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Mor Islands)"},
["mia"] = {"Miami"},
["mib"] = {"Atatláhuca Mixtec"},
["mic"] = {"Mi'kmaq", "Micmac"},
["mid"] = {"Mandaic"},
["mie"] = {"Ocotepec Mixtec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"San Miguel El Grande Mixtec"},
["mih"] = {"Chayuco Mixtec"},
["mii"] = {"Chigmecatitlán Mixtec"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Peñoles Mixtec"},
["mim"] = {"Alacatlatzala Mixtec"},
["min"] = {"Minangkabau"},
["mio"] = {"Pinotepa Nacional Mixtec"},
["mip"] = {"Apasco-Apoala Mixtec"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"Uncoded languages"},
["mit"] = {"Southern Puebla Mixtec"},
["miu"] = {"Cacaloxtepec Mixtec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtepec Mixtec"},
["miy"] = {"Ayutla Mixtec"},
["miz"] = {"Coatzospan Mixtec"},
["mjb"] = {"Makalero"},
["mjc"] = {"San Juan Colorado Mixtec"},
["mjd"] = {"Northwest Maidu"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papua New Guinea)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mahican"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (China)"},
["mkh"] = {"Mon-Khmer languages"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilese"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Kupang Malay"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Silacayoapan Mixtec"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kituba (Congo)"},
["mkx"] = {"Kinamiging Manobo"},
["mky"] = {"East Makian"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Western Maninkakan"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Michoacán Mazahua"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"North Ambrym"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Western Xiangxi Miao"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Manchu"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundani"},
["mng"] = {"Eastern Mnong"},
["mnh"] = {"Mono (Democratic Republic of Congo)"},
["mni"] = {"Manipuri"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinka"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Southern Mnong"},
["mno"] = {"Manobo languages"},
["mnp"] = {"Min Bei Chinese"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (USA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilian"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawk"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mopán Maya"},
["moq"] = {"Mor (Bomberai Peninsula)"},
["mor"] = {"Moro"},
["mos"] = {"Mossi"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Chad)"},
["mpl"] = {"Middle Watut"},
["mpm"] = {"Yosondúa Mixtec"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidian"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (Indonesia)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Kota Bangun Kutai Malay"},
["mqh"] = {"Tlazoyaltepec Mixtec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"South Marquesan"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"West Makian"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Western Magar"},
["mre"] = {"Martha's Vineyard Sign Language"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Western Mari"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockese"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"North Marquesan"},
["mrr"] = {"Maria (India)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Central"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Yucatec Maya Sign Language"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Masikoro Malagasy"},
["msi"] = {"Sabah Malay"},
["msj"] = {"Ma (Democratic Republic of Congo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Mongolian Sign Language"},
["mss"] = {"West Masela"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Cotabato Manobo"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Solomon Islands)"},
["mtf"] = {"Murik (Papua New Guinea)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papua New Guinea)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Tututepec Mixtec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Southern Binukidnon"},
["mtx"] = {"Tidaá Mixtec"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Mednyj Aleut"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Multiple languages"},
["mum"] = {"Maiwala"},
["mun"] = {"Munda languages"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Eastern Xiangxi Miao"},
["mur"] = {"Murle"},
["mus"] = {"Creek"},
["mut"] = {"Western Muria"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (Pakistan)"},
["mvf"] = {"Peripheral Mongolian"},
["mvg"] = {"Yucuañe Mixtec"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (Australia)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Indus Kohistani"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Kita Maninkakan"},
["mwl"] = {"Mirandese"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Central Maewo"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Northwest Oaxaca Mixtec"},
["mxb"] = {"Tezoatlán Mixtec"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabic"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (Indonesia)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (Malaysia)"},
["mxs"] = {"Huitepec Mixtec"},
["mxt"] = {"Jamiltepec Mixtec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Metlatónoc Mixtec"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Southeastern Nochixtlán Mixtec"},
["mxz"] = {"Central Masela"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"Mayan languages"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Classical Mandaic"},
["mza"] = {"Santa María Zacatepec Mixtec"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Madagascar Sign Language"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Monastic Sign Language"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Ixcatlán Mazatec"},
["mzj"] = {"Manya"},
["mzk"] = {"Nigeria Mambila"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderani"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanese"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Mozambican Sign Language"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Southern Nambikuára"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Pidgin"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Min Nan Chinese"},
["nao"] = {"Naaba"},
["nap"] = {"Neapolitan"},
["naq"] = {"Khoekhoe", "Nama (Namibia)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Coatepec Nahuatl"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Namibian Sign Language"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Southern Ngbandi"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Central Nicobarese"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Central Huasteca Nahuatl"},
["nci"] = {"Classical Nahuatl"},
["ncj"] = {"Northern Puebla Nahuatl"},
["nck"] = {"Na-kara"},
["ncl"] = {"Michoacán Nahuatl"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Northern Katang"},
["ncr"] = {"Ncane"},
["ncs"] = {"Nicaraguan Sign Language"},
["nct"] = {"Chothe Naga"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Central Puebla Nahuatl"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndau"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvian"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Low German", "Low Saxon"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Eastern Ngad'a"},
["neb"] = {"Toura (Côte d'Ivoire)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Neo-Hittite"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"North Central Mixe"},
["ner"] = {"Yahadian"},
["nes"] = {"Bhoti Kinnauri"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Northern Ngbandi"},
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},
["ngd"] = {"Ngando (Central African Republic)"},
["nge"] = {"Ngemba"},
["ngf"] = {"Trans-New Guinea languages"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Ngatik Men's Creole"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Guerrero Nahuatl"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Tabasco Nahuatl"},
["nhd"] = {"Chiripá", "Ava Guaraní"},
["nhe"] = {"Eastern Huasteca Nahuatl"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Tetelcingo Nahuatl"},
["nhh"] = {"Nahari"},
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},
["nhm"] = {"Morelos Nahuatl"},
["nhn"] = {"Central Nahuatl"},
["nho"] = {"Takuu"},
["nhp"] = {"Isthmus-Pajapan Nahuatl"},
["nhq"] = {"Huaxcaleca Nahuatl"},
["nhr"] = {"Naro"},
["nht"] = {"Ometepec Nahuatl"},
["nhu"] = {"Noone"},
["nhv"] = {"Temascaltepec Nahuatl"},
["nhw"] = {"Western Huasteca Nahuatl"},
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},
["nhy"] = {"Northern Oaxaca Nahuatl"},
["nhz"] = {"Santa María La Alta Nahuatl"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"Niger-Kordofanian languages"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Southern Nicobarese"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasan"},
["niq"] = {"Nandi"},
["nir"] = {"Nimboran"},
["nis"] = {"Nimi"},
["nit"] = {"Southeastern Kolami"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyak"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Nocte Naga"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Lotha Naga"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Liangmai Naga"},
["njo"] = {"Ao Naga"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Pidgin"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Khoibu Naga"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Inpui Naga"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Khezha Naga"},
["nki"] = {"Thangal Naga"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"North Asmat"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi and Zambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"East Nyala"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Lao Naga"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Maram Naga"},
["nmb"] = {"Big Nambas", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Mzieme Naga"},
["nmf"] = {"Tangkhul Naga (India)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Monsang Naga"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Central African Republic)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Moyon Naga"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Northeast Maidu"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papua New Guinea)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"West Ambae"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Maring Naga"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"North Nuaulu"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Northern Rengma Naga"},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Wancho Naga"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (Australia)"},
["nnw"] = {"Southern Nuni"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Northern Thai"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogai"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Old Norse"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Eastern Nisu"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Ponyo-Gongwang Naga"},
["nph"] = {"Phom Naga"},
["npi"] = {"Nepali (individual language)"},
["npl"] = {"Southeastern Puebla Nahuatl"},
["npn"] = {"Mondropolon"},
["npo"] = {"Pochuri Naga"},
["nps"] = {"Nipsan"},
["npu"] = {"Puimei Naga"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Southern Nago"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Kyan-Karyaw Naga"},
["nqt"] = {"Nteng"},
["nqy"] = {"Akyaung Ari Naga"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Noric"},
["nre"] = {"Southern Rengma Naga"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Chokri Naga"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Norn"},
["nrp"] = {"North Picene"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Northern Kalapuya"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Sangtam Naga"},
["nsb"] = {"Lower Nossob"},
["nsc"] = {"Nshi"},
["nsd"] = {"Southern Nisu"},
["nse"] = {"Nsenga"},
["nsf"] = {"Northwestern Nisu"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Nigerian Sign Language"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Norwegian Sign Language"},
["nsm"] = {"Sumi Naga"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},
["nsp"] = {"Nepalese Sign Language"},
["nsq"] = {"Northern Sierra Miwok"},
["nsr"] = {"Maritime Sign Language"},
["nss"] = {"Nali"},
["nst"] = {"Tase Naga"},
["nsu"] = {"Sierra Negra Nahuatl"},
["nsv"] = {"Southwestern Nisu"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Northern Tidung"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Northern Tepehuan"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Tangkhul Naga (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"Nubian languages"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Northern Nuni"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Tlamacazapa Nahuatl"},
["nvh"] = {"Nasarian"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Southwest Tanna"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Middle Newar"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Democratic Republic of Congo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Koki Naga"},
["nxl"] = {"South Nuaulu"},
["nxm"] = {"Numidian"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (Sudan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"New Zealand Sign Language"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},
["oav"] = {"Old Avar"},
["obi"] = {"Obispeño"},
["obk"] = {"Southern Bontok"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Old Burmese"},
["obt"] = {"Old Breton"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Old Chinese"},
["ocm"] = {"Old Cham"},
["oco"] = {"Old Cornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Old Dutch"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Old Frisian"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Old Georgian"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Old Hittite"},
["ohu"] = {"Old Hungarian"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"Northwestern Ojibwa"},
["ojc"] = {"Central Ojibwa"},
["ojg"] = {"Eastern Ojibwa"},
["ojp"] = {"Old Japanese"},
["ojs"] = {"Severn Ojibwa"},
["ojv"] = {"Ontong Java"},
["ojw"] = {"Western Ojibwa"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Southwestern Edo)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Old Kentish Sign Language"},
["okm"] = {"Middle Korean (10th-16th cent.)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Old Korean (3rd-9th cent.)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Northwestern Edo)"},
["okz"] = {"Old Khmer"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvi"},
["olr"] = {"Olrat"},
["olt"] = {"Old Lithuanian"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"East Ambae"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Old Manipuri"},
["omq"] = {"Oto-Manguean languages"},
["omr"] = {"Old Marathi"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"Omotic languages"},
["omw"] = {"South Tairora"},
["omx"] = {"Old Mon"},
["omy"] = {"Old Malay"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"Northern One"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Old Nubian"},
["onx"] = {"Onin Based Pidgin"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Old Ossetic"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Old Russian"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Old Sundanese"},
["oso"] = {"Ososo"},
["osp"] = {"Old Spanish"},
["ost"] = {"Osatu"},
["osu"] = {"Southern One"},
["osx"] = {"Old Saxon"},
["ota"] = {"Ottoman Turkish (1500-1928)"},
["otb"] = {"Old Tibetan"},
["otd"] = {"Ot Danum"},
["ote"] = {"Mezquital Otomi"},
["oti"] = {"Oti"},
["otk"] = {"Old Turkish"},
["otl"] = {"Tilapa Otomi"},
["otm"] = {"Eastern Highland Otomi"},
["otn"] = {"Tenango Otomi"},
["oto"] = {"Otomian languages"},
["otq"] = {"Querétaro Otomi"},
["otr"] = {"Otoro"},
["ots"] = {"Estado de México Otomi"},
["ott"] = {"Temoaya Otomi"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Texcatepec Otomi"},
["oty"] = {"Old Tamil"},
["otz"] = {"Ixtenco Otomi"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Old Uighur"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalian", "Övdalian"},
["owi"] = {"Owiniga"},
["owl"] = {"Old Welsh"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"Papuan languages"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Northern Paiute"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauan"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawnee"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Mezontla Popoloca"},
["pbf"] = {"Coyotepec Popoloca"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (Nigeria)"},
["pbm"] = {"Puebla Mazatec"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Central Pame"},
["pbt"] = {"Southern Pashto"},
["pbu"] = {"Northern Pashto"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papua New Guinea)"},
["pca"] = {"Santa Inés Ahuatempan Popoloca"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picard"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Nigerian Pidgin"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Pennsylvania German"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Peranakan Indonesian"},
["peb"] = {"Eastern Pomo"},
["ped"] = {"Mala (Papua New Guinea)"},
["pee"] = {"Taje"},
["pef"] = {"Northeastern Pomo"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Northern Pomo"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},
["pep"] = {"Kunja"},
["peq"] = {"Southern Pomo"},
["pes"] = {"Iranian Persian"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Eastern Penan"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Sudanese Creole Arabic"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Primitive Irish"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Papua New Guinean Sign Language"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"Philippine languages"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"Phoenician"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Phu Thai"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavani"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapese"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatan"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Pakistan Sign Language"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Central Palawano"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"Central Malayo-Polynesian languages"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Kohistani Shina"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Oluta Popoluca"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},
["plt"] = {"Plateau Malagasy"},
["plu"] = {"Palikúr"},
["plv"] = {"Southwest Palawano"},
["plw"] = {"Brooke's Point Palawano"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Northern Pumi"},
["pmj"] = {"Southern Pumi"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Northern Pame"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piemontese"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Plains Miwok"},
["pmx"] = {"Poumei Naga"},
["pmy"] = {"Papuan Malay"},
["pmz"] = {"Southern Pame"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Western Panjabi"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Western Penan"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontic"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Central African Republic)"},
["poc"] = {"Poqomam"},
["poe"] = {"San Juan Atzingo Popoloca"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Highland Popoluca"},
["pok"] = {"Pokangá"},
["pom"] = {"Southeastern Pomo"},
["pon"] = {"Pohnpeian"},
["poo"] = {"Central Pomo"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Texistepec Popoluca"},
["pos"] = {"Sayula Popoluca"},
["pot"] = {"Potawatomi"},
["pov"] = {"Upper Guinea Crioulo"},
["pow"] = {"San Felipe Otlaltepec Popoloca"},
["pox"] = {"Polabian"},
["poy"] = {"Pogolo"},
["poz"] = {"Malayo-Polynesian languages"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"San Luís Temalacayuca Popoloca"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["prc"] = {"Parachi"},
["prd"] = {"Parsi-Dari"},
["pre"] = {"Principense"},
["prf"] = {"Paranan"},
["prg"] = {"Prussian"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Peruvian Sign Language"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Dari", "Afghan Persian"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Providencia Sign Language"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Iranian Sign Language", "Persian Sign Language"},
["psd"] = {"Plains Indian Sign Language"},
["pse"] = {"Central Malay"},
["psg"] = {"Penang Sign Language"},
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},
["psl"] = {"Puerto Rican Sign Language"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Polish Sign Language"},
["psp"] = {"Philippine Sign Language"},
["psq"] = {"Pasi"},
["psr"] = {"Portuguese Sign Language"},
["pss"] = {"Kaulong"},
["pst"] = {"Central Pashto"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patani"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Western Highland Purepecha"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatese"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Pwo Western Karen"},
["pwr"] = {"Powari"},
["pww"] = {"Pwo Northern Karen"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Huallaga Huánuco Quechua"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Calderón Highland Quichua"},
["quf"] = {"Lambayeque Quechua"},
["qug"] = {"Chimborazo Highland Quichua"},
["quh"] = {"South Bolivian Quechua"},
["qui"] = {"Quileute"},
["quk"] = {"Chachapoyas Quechua"},
["qul"] = {"North Bolivian Quechua"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Southern Pastaza Quechua"},
["quq"] = {"Quinqui"},
["qur"] = {"Yanahuanca Pasco Quechua"},
["qus"] = {"Santiago del Estero Quichua"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Tena Lowland Quichua"},
["qux"] = {"Yauyos Quechua"},
["quy"] = {"Ayacucho Quechua"},
["quz"] = {"Cusco Quechua"},
["qva"] = {"Ambo-Pasco Quechua"},
["qvc"] = {"Cajamarca Quechua"},
["qve"] = {"Eastern Apurímac Quechua"},
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},
["qvi"] = {"Imbabura Highland Quichua"},
["qvj"] = {"Loja Highland Quichua"},
["qvl"] = {"Cajatambo North Lima Quechua"},
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},
["qvn"] = {"North Junín Quechua"},
["qvo"] = {"Napo Lowland Quechua"},
["qvp"] = {"Pacaraos Quechua"},
["qvs"] = {"San Martín Quechua"},
["qvw"] = {"Huaylla Wanca Quechua"},
["qvy"] = {"Queyu"},
["qvz"] = {"Northern Pastaza Quichua"},
["qwa"] = {"Corongo Ancash Quechua"},
["qwc"] = {"Classical Quechua"},
["qwe"] = {"Quechuan (family)"},
["qwh"] = {"Huaylas Ancash Quechua"},
["qwm"] = {"Kuman (Russia)"},
["qws"] = {"Sihuas Ancash Quechua"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Chiquián Ancash Quechua"},
["qxc"] = {"Chincha Quechua"},
["qxh"] = {"Panao Huánuco Quechua"},
["qxl"] = {"Salasaca Highland Quichua"},
["qxn"] = {"Northern Conchucos Ancash Quechua"},
["qxo"] = {"Southern Conchucos Ancash Quechua"},
["qxp"] = {"Puno Quechua"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Cañar Highland Quichua"},
["qxs"] = {"Southern Qiang"},
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},
["qxu"] = {"Arequipa-La Unión Quechua"},
["qxw"] = {"Jauja Wanca Quechua"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Western Meohang"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthani"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Northern Bontok"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Réunion Creole French"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Romano-Greek"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnol"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Southern Roglai"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (India)"},
["rib"] = {"Bribri Sign Language"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Carpathian Romani"},
["rmd"] = {"Traveller Danish"},
["rme"] = {"Angloromani"},
["rmf"] = {"Kalo Finnish Romani"},
["rmg"] = {"Traveller Norwegian"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Baltic Romani"},
["rmm"] = {"Roma"},
["rmn"] = {"Balkan Romani"},
["rmo"] = {"Sinte Romani"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Romanian Sign Language"},
["rmt"] = {"Domari"},
["rmu"] = {"Tavringer Romani"},
["rmv"] = {"Romanova"},
["rmw"] = {"Welsh Romani"},
["rmx"] = {"Romam"},
["rmy"] = {"Vlax Romani"},
["rmz"] = {"Marma"},
["rnb"] = {"Brunca Sign Language"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"Romance languages"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Northern Roglai"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romany"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Romano-Serbian"},
["rsk"] = {"Ruthenian", "Rusnak"},
["rsl"] = {"Russian Sign Language"},
["rsm"] = {"Miriwoong Sign Language"},
["rsn"] = {"Rwandan Sign Language"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yurats"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusyn"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro Romanian"},
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},
["ruq"] = {"Megleno Romanian"},
["rut"] = {"Rutul"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (Nigeria)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Uganda)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (India)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Northern Amami-Oshima"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Central Okinawan"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papua New Guinea)"},
["sbd"] = {"Southern Samo"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"San Miguel Creole French"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Sri Lankan Creole Malay"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Sicilian"},
["sco"] = {"Scots"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"North Slavey"},
["sct"] = {"Southern Katang"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sassarese Sardinian"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Southern Kurdish"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Saudi Arabian Sign Language"},
["sdn"] = {"Gallurese Sardinian"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"Eastern Sudanic languages"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},
["sfe"] = {"Eastern Subanen"},
["sfm"] = {"Small Flowery Miao"},
["sfs"] = {"South African Sign Language"},
["sfw"] = {"Sehwi"},
["sga"] = {"Old Irish (to 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Swiss-German Sign Language"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Sign languages"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitian"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Sierra Leone Sign Language"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Chadian Arabic"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Akkala Sami"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papua New Guinea)"},
["sio"] = {"Siouan languages"},
["sip"] = {"Sikkimese"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"Sino-Tibetan languages"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Kildin Sami"},
["sje"] = {"Pite Sami"},
["sjg"] = {"Assangori"},
["sjk"] = {"Kemi Sami"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Ter Sami"},
["sju"] = {"Ume Sami"},
["sjw"] = {"Shawnee"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Southern Sierra Miwok"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Sakalava Malagasy"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Skepi Creole Dutch"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"Slavic languages"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Swiss-Italian Sign Language"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Southern Puget Sound Salish"},
["sli"] = {"Lower Silesian"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Singapore Sign Language"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Southern Sami"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smk"] = {"Bolinao"},
["sml"] = {"Central Sama"},
["smm"] = {"Musasa"},
["smn"] = {"Inari Sami"},
["smp"] = {"Samaritan"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Skolt Sami"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Democratic Republic of Congo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Southern Ma'di"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Thai Song"},
["sob"] = {"Sobei"},
["soc"] = {"So (Democratic Republic of Congo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdian"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"Songhai languages"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Southern Thai"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (Indonesia)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papua New Guinea)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Loreto-Ucayali Spanish"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"South Picene"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"Albanian languages"},
["sqk"] = {"Albanian Sign Language"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Siculo Arabic"},
["sqs"] = {"Sri Lankan Sign Language"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Logudorese Sardinian"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Campidanese Sardinian"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Southern Sorsoganon"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"Nilo-Saharan languages"},
["ssb"] = {"Southern Sama"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Shihhi Arabic"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Western Sisaala"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Spanish Sign Language"},
["ssq"] = {"So'a"},
["ssr"] = {"Swiss-French Sign Language"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Northern Subanen"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stoney"},
["stp"] = {"Southeastern Tepehuan"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Straits Salish"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalese"},
["sty"] = {"Siberian Tatar"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Western Subanon"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerian"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Vincentian Creole English"},
["sve"] = {"Serili"},
["svk"] = {"Slovakian Sign Language"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvian"},
["swb"] = {"Maore Comorian"},
["swc"] = {"Congo Swahili"},
["swf"] = {"Sere"},
["swg"] = {"Swabian"},
["swh"] = {"Swahili (individual language)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Swedish Sign Language"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanian"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Southern Kalapuya"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptic"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Upper Saxon"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Central Subanen"},
["syc"] = {"Classical Syriac"},
["syd"] = {"Samoyedic languages"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Syriac"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Al-Sayyid Bedouin Sign Language"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Silesian"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Solomon Islands Sign Language"},
["szv"] = {"Isu (Fako Division)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Lower Tanana"},
["tab"] = {"Tabassaran"},
["tac"] = {"Lowland Tarahumara"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"Tai languages"},
["taj"] = {"Eastern Tamang"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Central Tarahumara"},
["tas"] = {"Tay Boi"},
["tau"] = {"Upper Tanana"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"North Tairora"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"Tibeto-Burman languages"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Southern Tutchone"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Turks And Caicos Creole English"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Torres Strait Creole", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Southeastern Tarahumara"},
["tcw"] = {"Tecpatlán Totonac"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Thado Chin"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Western Tamang"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Tandroy-Mahafaly Malagasy"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelche"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (Colombia)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (USA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Eastern Gorkha Tamang"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Tobagonian Creole English"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Central Tagbanwa"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Northern Tarahumara"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tidikelt Tamazight"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Southern Tiwa"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Northern Tujia"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Temacine Tamazight"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Southern Tujia"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Tesaka Malagasy"},
["tkl"] = {"Tokelau"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhur"},
["tks"] = {"Takestani"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Upper Necaxa Totonac"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Southwestern Tepehuan"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Yecuatla Totonac"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Chad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (Indonesia)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Western Tunebo"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"North Tanna"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Coyutla Totonac"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (Zambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Xicotepec De Juárez Totonac"},
["top"] = {"Papantla Totonac"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Highland Totonac"},
["tou"] = {"Tho"},
["tov"] = {"Upper Taromi"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Pisaflores Tepehua"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tlachichilco Tepehua"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Western Totonac"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"East Tarangan"},
["trf"] = {"Trinidadian Creole English"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"Turkic languages"},
["trl"] = {"Traveller Scottish"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"San Martín Itunyoso Triqui"},
["trr"] = {"Taushiro"},
["trs"] = {"Chicahuaxtla Triqui"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Tringgus-Sembaan Bidayuh"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonian"},
["tse"] = {"Tunisian Sign Language"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},
["tsp"] = {"Northern Toussian"},
["tsq"] = {"Thai Sign Language"},
["tsr"] = {"Akei"},
["tss"] = {"Taiwan Sign Language"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Tebul Sign Language"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Upper Ta'oih"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Northern Tutchone"},
["ttn"] = {"Towei"},
["tto"] = {"Lower Ta'oih"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tawallammat Tamajaq"},
["ttr"] = {"Tera"},
["tts"] = {"Northeastern Thai"},
["ttt"] = {"Muslim Tat"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Central Tunebo"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbuka"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"Tupi languages"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"Altaic languages"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"Tungus languages"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Southeast Ambrym"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Tutsa Naga"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timor Pidgin"},
["twa"] = {"Twana"},
["twb"] = {"Western Tawbuid"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (Indonesia)"},
["twf"] = {"Northern Tiwa"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Southwestern Tarahumara"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharian B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thracian"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"West Tarangan"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessian"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Tanosy Malagasy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvinian"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Tanzanian Sign Language"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Central Atlas Tamazight"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykh"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurt"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Ugaritic"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Ugandan Sign Language"},
["ugo"] = {"Ugong"},
["ugy"] = {"Uruguayan Sign Language"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (India)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Ukrainian Sign Language"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithian"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinian"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"North Watut"},
["und"] = {"Undetermined"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"Uralic languages"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papua New Guinea)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Southern Paiute"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Solomon Islands)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"West Uvean", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Northern Uzbek"},
["uzs"] = {"Southern Uzbek"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Southeast Babar"},
["vbk"] = {"Southwestern Bontok"},
["vec"] = {"Venetian"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Veps"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},
["vic"] = {"Virgin Islands Creole English"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Korlai Creole Portuguese"},
["vkt"] = {"Tenggarong Kutai Malay"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Juxtlahuaca Mixtec"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"East Masela"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Ixtayutla Mixtec"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mitlatongo Mixtec"},
["vmp"] = {"Soyaltepec Mazatec"},
["vmq"] = {"Soyaltepec Mixtec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Valley Maidu"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Tamazola Mixtec"},
["vmy"] = {"Ayautla Mazatec"},
["vmz"] = {"Mazatlán Mazatec"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voro"},
["vot"] = {"Votic"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Moldova Sign Language"},
["vsl"] = {"Venezuelan Sign Language"},
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (China)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (Philippines)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"West Bengal Sign Language"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Western"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"Sorbian languages"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroon Pidgin"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"North Wahgi"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Southern Toussian"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Mwali Comorian"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (Sudan)"},
["wlm"] = {"Middle Welsh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisian"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (Ghana)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (Nigeria)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Western Minyag"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (Indonesia)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papua New Guinea)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Ndzwani Comorian"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Northern"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaian"},
["wof"] = {"Gambian Wolof"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (Nigeria)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hanga Hundi"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (Australia)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Wu Chinese"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Western Fijian"},
["xaa"] = {"Andalusian Arabic"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequian"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmyk", "Oirat"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalachee"},
["xaq"] = {"Aquitanian"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Lower Burdekin"},
["xbc"] = {"Bactrian"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Middle Breton"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarian"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbric"},
["xcc"] = {"Camunic"},
["xce"] = {"Celtiberian"},
["xcg"] = {"Cisalpine Gaulish"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Classical Armenian"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmian"},
["xcr"] = {"Carian"},
["xct"] = {"Classical Tibetan"},
["xcu"] = {"Curonian"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dacian"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomite"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Malayic Dayak"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscan"},
["xga"] = {"Galatian"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"Mongolian languages"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Harami"},
["xhc"] = {"Hunnic"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Middle Khmer (1400 to 1850 CE)"},
["xhr"] = {"Hernican"},
["xht"] = {"Hattic"},
["xhu"] = {"Hurrian"},
["xhv"] = {"Khua"},
["xib"] = {"Iberian"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrian"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Indus Valley Language"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Northern Nago"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Mendalam Kayan"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Kenyan Sign Language"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Mainstream Kenyah"},
["xkn"] = {"Kayan River Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lycian"},
["xld"] = {"Lydian"},
["xle"] = {"Lemnian"},
["xlg"] = {"Ligurian (Ancient)"},
["xli"] = {"Liburnian"},
["xln"] = {"Alanic"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontic"},
["xls"] = {"Lusitanian"},
["xlu"] = {"Cuneiform Luwian"},
["xly"] = {"Elymian"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Median"},
["xmf"] = {"Mingrelian"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Ancient Macedonian"},
["xml"] = {"Malaysian Sign Language"},
["xmm"] = {"Manado Malay"},
["xmn"] = {"Manichaean Middle Persian"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitic"},
["xms"] = {"Moroccan Sign Language"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},
["xmw"] = {"Tsimihety Malagasy"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Ancient North Arabian"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"Na-Dene languages"},
["xng"] = {"Middle Mongolian"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Northern Kankanay"},
["xno"] = {"Anglo-Norman"},
["xnq"] = {"Ngoni (Mozambique)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (Sudan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Oyster Bay Tasmanian"},
["xpe"] = {"Liberia Kpelle"},
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},
["xpg"] = {"Phrygian"},
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Port Sorell Tasmanian"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Mohegan-Pequot"},
["xpr"] = {"Parthian"},
["xps"] = {"Pisidian"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punic"},
["xpv"] = {"Northern Tasmanian", "Tommeginne"},
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},
["xpx"] = {"Southwestern Tasmanian", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Bruny Island Tasmanian"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Eastern Karaboro"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazic"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetic"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythian"},
["xsd"] = {"Sidetic"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"South Slavey"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (Nigeria)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovian"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Alcozauca Mixtec"},
["xtb"] = {"Chazumba Mixtec"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Diuxi-Tilantongo Mixtec"},
["xte"] = {"Ketengban"},
["xtg"] = {"Transalpine Gaulish"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Sinicahua Mixtec"},
["xtj"] = {"San Juan Teita Mixtec"},
["xtl"] = {"Tijaltepec Mixtec"},
["xtm"] = {"Magdalena Peñasco Mixtec"},
["xtn"] = {"Northern Tlaxiaco Mixtec"},
["xto"] = {"Tokharian A"},
["xtp"] = {"San Miguel Piedras Mixtec"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Early Tripuri"},
["xts"] = {"Sindihui Mixtec"},
["xtt"] = {"Tacahua Mixtec"},
["xtu"] = {"Cuyamecalco Mixtec"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Yoloxochitl Mixtec"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrian"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Upper Umpqua"},
["xur"] = {"Urartian"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetic"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalic"},
["xvo"] = {"Volscian"},
["xvs"] = {"Vestinian"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Western Xwla Gbe"},
["xwo"] = {"Written Oirat"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (Ghana)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalian"},
["xzp"] = {"Ancient Zapotec"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Pass Valley Yali"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Democratic Republic of Congo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"West Yugur"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Yilan Creole"},
["yda"] = {"Yanda"},
["ydd"] = {"Eastern Yiddish"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanic"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Yolŋu Sign Language"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Judeo-Iraqi Arabic"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Yan-nhaŋu Sign Language"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Western Yiddish"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Yimchungru Naga"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"North Awyu"},
["yis"] = {"Yis"},
["yit"] = {"Eastern Lalu"},
["yiu"] = {"Awu"},
["yiv"] = {"Northern Nisu"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Northern Yukaghir"},
["ykh"] = {"Khamnigan Mongol"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Angguruk Yali"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Southern Muji"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysian"},
["ymx"] = {"Northern Muji"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Naukan Yupik"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"Yupik languages"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenets"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassic"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Yugoslavian Sign Language"},
["ysm"] = {"Myanmar Sign Language"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (China)"},
["ysp"] = {"Southern Lolopo"},
["ysr"] = {"Sirenik Yupik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Yucatec Maya"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Judeo-Tripolitanian Arabic"},
["yue"] = {"Yue Chinese", "Cantonese"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (Nigeria)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Morobe Province)"},
["yux"] = {"Southern Yukaghir"},
["yuy"] = {"East Yugur"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Western Lalu"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Central Lalo"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Sandaun Province)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Sierra de Juárez Zapotec"},
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},
["zac"] = {"Ocotlán Zapotec"},
["zad"] = {"Cajonos Zapotec"},
["zae"] = {"Yareni Zapotec"},
["zaf"] = {"Ayoquesco Zapotec"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Isthmus Zapotec"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Miahuatlán Zapotec"},
["zao"] = {"Ozolotepec Zapotec"},
["zap"] = {"Zapotec"},
["zaq"] = {"Aloápam Zapotec"},
["zar"] = {"Rincón Zapotec"},
["zas"] = {"Santo Domingo Albarradas Zapotec"},
["zat"] = {"Tabaa Zapotec"},
["zau"] = {"Zangskari"},
["zav"] = {"Yatzachi Zapotec"},
["zaw"] = {"Mitla Zapotec"},
["zax"] = {"Xadani Zapotec"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Central Berawan"},
["zbe"] = {"East Berawan"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Bauchi State)"},
["zbw"] = {"West Berawan"},
["zca"] = {"Coatecas Altas Zapotec"},
["zcd"] = {"Las Delicias Zapotec"},
["zch"] = {"Central Hongshuihe Zhuang"},
["zdj"] = {"Ngazidja Comorian"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Eastern Hongshuihe Zhuang"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Guibei Zhuang"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zgm"] = {"Minz Zhuang"},
["zgn"] = {"Guibian Zhuang"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Dai Zhuang"},
["zhi"] = {"Zhire"},
["zhn"] = {"Nong Zhuang"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Chinese (family)"},
["zia"] = {"Zia"},
["zib"] = {"Zimbabwe Sign Language"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmian"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"São Paulo Kaingáng"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinian"},
["zkz"] = {"Khazar"},
["zla"] = {"Zula"},
["zle"] = {"East Slavic languages"},
["zlj"] = {"Liujiang Zhuang"},
["zlm"] = {"Malay (individual language)"},
["zln"] = {"Lianshan Zhuang"},
["zlq"] = {"Liuqian Zhuang"},
["zls"] = {"South Slavic languages"},
["zlu"] = {"Zul"},
["zlw"] = {"West Slavic languages"},
["zma"] = {"Manda (Australia)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Negeri Sembilan Malay"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Democratic Republic of Congo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"Zande languages"},
["zne"] = {"Zande (individual language)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Copainalá Zoque"},
["zoh"] = {"Chimalapa Zoque"},
["zom"] = {"Zou"},
["zoo"] = {"Asunción Mixtepec Zapotec"},
["zoq"] = {"Tabasco Zoque"},
["zor"] = {"Rayón Zoque"},
["zos"] = {"Francisco León Zoque"},
["zpa"] = {"Lachiguiri Zapotec"},
["zpb"] = {"Yautepec Zapotec"},
["zpc"] = {"Choapan Zapotec"},
["zpd"] = {"Southeastern Ixtlán Zapotec"},
["zpe"] = {"Petapa Zapotec"},
["zpf"] = {"San Pedro Quiatoni Zapotec"},
["zpg"] = {"Guevea De Humboldt Zapotec"},
["zph"] = {"Totomachapan Zapotec"},
["zpi"] = {"Santa María Quiegolani Zapotec"},
["zpj"] = {"Quiavicuzas Zapotec"},
["zpk"] = {"Tlacolulita Zapotec"},
["zpl"] = {"Lachixío Zapotec"},
["zpm"] = {"Mixtepec Zapotec"},
["zpn"] = {"Santa Inés Yatzechi Zapotec"},
["zpo"] = {"Amatlán Zapotec"},
["zpp"] = {"El Alto Zapotec"},
["zpq"] = {"Zoogocho Zapotec"},
["zpr"] = {"Santiago Xanica Zapotec"},
["zps"] = {"Coatlán Zapotec"},
["zpt"] = {"San Vicente Coatlán Zapotec"},
["zpu"] = {"Yalálag Zapotec"},
["zpv"] = {"Chichicapan Zapotec"},
["zpw"] = {"Zaniza Zapotec"},
["zpx"] = {"San Baltazar Loxicha Zapotec"},
["zpy"] = {"Mazaltepec Zapotec"},
["zpz"] = {"Texmelucan Zapotec"},
["zqe"] = {"Qiubei Zhuang"},
["zra"] = {"Kara (Korea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatic"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskean"},
["zsl"] = {"Zambian Sign Language"},
["zsm"] = {"Standard Malay"},
["zsr"] = {"Southern Rincon Zapotec"},
["zsu"] = {"Sukurum"},
["zte"] = {"Elotepec Zapotec"},
["ztg"] = {"Xanaguía Zapotec"},
["ztl"] = {"Lapaguía-Guivini Zapotec"},
["ztm"] = {"San Agustín Mixtepec Zapotec"},
["ztn"] = {"Santa Catarina Albarradas Zapotec"},
["ztp"] = {"Loxicha Zapotec"},
["ztq"] = {"Quioquitani-Quierí Zapotec"},
["zts"] = {"Tilquiapan Zapotec"},
["ztt"] = {"Tejalapan Zapotec"},
["ztu"] = {"Güilá Zapotec"},
["ztx"] = {"Zaachila Zapotec"},
["zty"] = {"Yatee Zapotec"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzari"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zyb"] = {"Yongbei Zhuang"},
["zyg"] = {"Yang Zhuang"},
["zyj"] = {"Youjiang Zhuang"},
["zyn"] = {"Yongnan Zhuang"},
["zyp"] = {"Zyphe Chin"},
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},
["zzj"] = {"Zuojiang Zhuang"}
}
local deprecated = {
["in"] = {"Indonesian"},
["iw"] = {"Hebrew"},
["ji"] = {"Yiddish"},
["jw"] = {"Javanese"},
["mo"] = {"Moldavian", "Moldovan"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"South Levantine Arabic"},
["ajt"] = {"Judeo-Tunisian Arabic"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (China)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Babalia Creole Arabic"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Southern Betsimisaraka Malagasy"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Democratic Republic of Congo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Democratic Republic of Congo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Chilean Quechua"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (India)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (India)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Eastern Karnic"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Eastern Gurung"},
["ggo"] = {"Southern Gondi"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (Nigeria)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Upper Tanudan Kalinga"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Indo-Iranian]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Paku Karen"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Nepali Kurux"},
["kxu"] = {"Kui (India)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (Nigeria)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (South Sudan)"},
["lsg"] = {"Lyons Sign Language"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Pidgin"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (India)"},
["myq"] = {"Forest Maninka"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Durango Nahuatl"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Mirpur Panjabi"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Rennellese Sign Language"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"South Wemale"},
["tmk"] = {"Northwestern Tamang"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Southwestern Tamang"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (Brazil)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmanian"},
["ybd"] = {"Yangbye"},
["yds"] = {"Yiddish Sign Language"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
7e8fcbc627dace0b48345e47103fa5243cc7add3
Module:Language/data/iana scripts
828
470
3135
1038
2023-11-03T15:39:55Z
wikipedia>Trappist the monk
0
update to 2023-10-16 data;
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["Adlm"] = {"Adlam"},
["Afak"] = {"Afaka"},
["Aghb"] = {"Caucasian Albanian"},
["Ahom"] = {"Ahom", "Tai Ahom"},
["Arab"] = {"Arabic"},
["Aran"] = {"Arabic (Nastaliq variant)"},
["Armi"] = {"Imperial Aramaic"},
["Armn"] = {"Armenian"},
["Avst"] = {"Avestan"},
["Bali"] = {"Balinese"},
["Bamu"] = {"Bamum"},
["Bass"] = {"Bassa Vah"},
["Batk"] = {"Batak"},
["Beng"] = {"Bengali", "Bangla"},
["Bhks"] = {"Bhaiksuki"},
["Blis"] = {"Blissymbols"},
["Bopo"] = {"Bopomofo"},
["Brah"] = {"Brahmi"},
["Brai"] = {"Braille"},
["Bugi"] = {"Buginese"},
["Buhd"] = {"Buhid"},
["Cakm"] = {"Chakma"},
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},
["Cari"] = {"Carian"},
["Cham"] = {"Cham"},
["Cher"] = {"Cherokee"},
["Chis"] = {"Chisoi"},
["Chrs"] = {"Chorasmian"},
["Cirt"] = {"Cirth"},
["Copt"] = {"Coptic"},
["Cpmn"] = {"Cypro-Minoan"},
["Cprt"] = {"Cypriot syllabary"},
["Cyrl"] = {"Cyrillic"},
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},
["Deva"] = {"Devanagari", "Nagari"},
["Diak"] = {"Dives Akuru"},
["Dogr"] = {"Dogra"},
["Dsrt"] = {"Deseret", "Mormon"},
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},
["Egyd"] = {"Egyptian demotic"},
["Egyh"] = {"Egyptian hieratic"},
["Egyp"] = {"Egyptian hieroglyphs"},
["Elba"] = {"Elbasan"},
["Elym"] = {"Elymaic"},
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},
["Gara"] = {"Garay"},
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},
["Glag"] = {"Glagolitic"},
["Gong"] = {"Gunjala Gondi"},
["Gonm"] = {"Masaram Gondi"},
["Goth"] = {"Gothic"},
["Gran"] = {"Grantha"},
["Grek"] = {"Greek"},
["Gujr"] = {"Gujarati"},
["Gukh"] = {"Gurung Khema"},
["Guru"] = {"Gurmukhi"},
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},
["Hano"] = {"Hanunoo", "Hanunóo"},
["Hans"] = {"Han (Simplified variant)"},
["Hant"] = {"Han (Traditional variant)"},
["Hatr"] = {"Hatran"},
["Hebr"] = {"Hebrew"},
["Hira"] = {"Hiragana"},
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},
["Hmng"] = {"Pahawh Hmong"},
["Hmnp"] = {"Nyiakeng Puachue Hmong"},
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},
["Hung"] = {"Old Hungarian", "Hungarian Runic"},
["Inds"] = {"Indus", "Harappan"},
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},
["Java"] = {"Javanese"},
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},
["Jurc"] = {"Jurchen"},
["Kali"] = {"Kayah Li"},
["Kana"] = {"Katakana"},
["Kawi"] = {"Kawi"},
["Khar"] = {"Kharoshthi"},
["Khmr"] = {"Khmer"},
["Khoj"] = {"Khojki"},
["Kitl"] = {"Khitan large script"},
["Kits"] = {"Khitan small script"},
["Knda"] = {"Kannada"},
["Kore"] = {"Korean (alias for Hangul + Han)"},
["Kpel"] = {"Kpelle"},
["Krai"] = {"Kirat Rai"},
["Kthi"] = {"Kaithi"},
["Lana"] = {"Tai Tham", "Lanna"},
["Laoo"] = {"Lao"},
["Latf"] = {"Latin (Fraktur variant)"},
["Latg"] = {"Latin (Gaelic variant)"},
["Latn"] = {"Latin"},
["Leke"] = {"Leke"},
["Lepc"] = {"Lepcha", "Róng"},
["Limb"] = {"Limbu"},
["Lina"] = {"Linear A"},
["Linb"] = {"Linear B"},
["Lisu"] = {"Lisu", "Fraser"},
["Loma"] = {"Loma"},
["Lyci"] = {"Lycian"},
["Lydi"] = {"Lydian"},
["Mahj"] = {"Mahajani"},
["Maka"] = {"Makasar"},
["Mand"] = {"Mandaic", "Mandaean"},
["Mani"] = {"Manichaean"},
["Marc"] = {"Marchen"},
["Maya"] = {"Mayan hieroglyphs"},
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},
["Mend"] = {"Mende Kikakui"},
["Merc"] = {"Meroitic Cursive"},
["Mero"] = {"Meroitic Hieroglyphs"},
["Mlym"] = {"Malayalam"},
["Modi"] = {"Modi", "Moḍī"},
["Mong"] = {"Mongolian"},
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},
["Mroo"] = {"Mro", "Mru"},
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},
["Mult"] = {"Multani"},
["Mymr"] = {"Myanmar", "Burmese"},
["Nagm"] = {"Nag Mundari"},
["Nand"] = {"Nandinagari"},
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},
["Nbat"] = {"Nabataean"},
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},
["Nkoo"] = {"N’Ko", "N'Ko"},
["Nshu"] = {"Nüshu"},
["Ogam"] = {"Ogham"},
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},
["Onao"] = {"Ol Onal"},
["Orkh"] = {"Old Turkic", "Orkhon Runic"},
["Orya"] = {"Oriya", "Odia"},
["Osge"] = {"Osage"},
["Osma"] = {"Osmanya"},
["Ougr"] = {"Old Uyghur"},
["Palm"] = {"Palmyrene"},
["Pauc"] = {"Pau Cin Hau"},
["Pcun"] = {"Proto-Cuneiform"},
["Pelm"] = {"Proto-Elamite"},
["Perm"] = {"Old Permic"},
["Phag"] = {"Phags-pa"},
["Phli"] = {"Inscriptional Pahlavi"},
["Phlp"] = {"Psalter Pahlavi"},
["Phlv"] = {"Book Pahlavi"},
["Phnx"] = {"Phoenician"},
["Piqd"] = {"Klingon (KLI pIqaD)"},
["Plrd"] = {"Miao", "Pollard"},
["Prti"] = {"Inscriptional Parthian"},
["Psin"] = {"Proto-Sinaitic"},
["Ranj"] = {"Ranjana"},
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},
["Rohg"] = {"Hanifi Rohingya"},
["Roro"] = {"Rongorongo"},
["Runr"] = {"Runic"},
["Samr"] = {"Samaritan"},
["Sara"] = {"Sarati"},
["Sarb"] = {"Old South Arabian"},
["Saur"] = {"Saurashtra"},
["Sgnw"] = {"SignWriting"},
["Shaw"] = {"Shavian", "Shaw"},
["Shrd"] = {"Sharada", "Śāradā"},
["Shui"] = {"Shuishu"},
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},
["Sidt"] = {"Sidetic"},
["Sind"] = {"Khudawadi", "Sindhi"},
["Sinh"] = {"Sinhala"},
["Sogd"] = {"Sogdian"},
["Sogo"] = {"Old Sogdian"},
["Sora"] = {"Sora Sompeng"},
["Soyo"] = {"Soyombo"},
["Sund"] = {"Sundanese"},
["Sunu"] = {"Sunuwar"},
["Sylo"] = {"Syloti Nagri"},
["Syrc"] = {"Syriac"},
["Syre"] = {"Syriac (Estrangelo variant)"},
["Syrj"] = {"Syriac (Western variant)"},
["Syrn"] = {"Syriac (Eastern variant)"},
["Tagb"] = {"Tagbanwa"},
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},
["Tale"] = {"Tai Le"},
["Talu"] = {"New Tai Lue"},
["Taml"] = {"Tamil"},
["Tang"] = {"Tangut"},
["Tavt"] = {"Tai Viet"},
["Tayo"] = {"Tai Yo"},
["Telu"] = {"Telugu"},
["Teng"] = {"Tengwar"},
["Tfng"] = {"Tifinagh", "Berber"},
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},
["Thaa"] = {"Thaana"},
["Thai"] = {"Thai"},
["Tibt"] = {"Tibetan"},
["Tirh"] = {"Tirhuta"},
["Tnsa"] = {"Tangsa"},
["Todr"] = {"Todhri"},
["Tols"] = {"Tolong Siki"},
["Toto"] = {"Toto"},
["Tutg"] = {"Tulu-Tigalari"},
["Ugar"] = {"Ugaritic"},
["Vaii"] = {"Vai"},
["Visp"] = {"Visible Speech"},
["Vith"] = {"Vithkuqi"},
["Wara"] = {"Warang Citi", "Varang Kshiti"},
["Wcho"] = {"Wancho"},
["Wole"] = {"Woleai"},
["Xpeo"] = {"Old Persian"},
["Xsux"] = {"Sumero-Akkadian cuneiform"},
["Yezi"] = {"Yezidi"},
["Yiii"] = {"Yi"},
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},
["Zinh"] = {"Code for inherited script"},
["Zmth"] = {"Mathematical notation"},
["Zsye"] = {"Symbols (Emoji variant)"},
["Zsym"] = {"Symbols"},
["Zxxx"] = {"Code for unwritten documents"},
["Zyyy"] = {"Code for undetermined script"},
["Zzzz"] = {"Code for uncoded script"}
}
90e7ff616b305955e94fca8cce479cc69e5277c4
Module:Language/data/iana regions
828
472
3137
1040
2023-11-03T15:39:57Z
wikipedia>Trappist the monk
0
update to 2023-10-16 data;
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["AC"] = {"Ascension Island"},
["AD"] = {"Andorra"},
["AE"] = {"United Arab Emirates"},
["AF"] = {"Afghanistan"},
["AG"] = {"Antigua and Barbuda"},
["AI"] = {"Anguilla"},
["AL"] = {"Albania"},
["AM"] = {"Armenia"},
["AO"] = {"Angola"},
["AQ"] = {"Antarctica"},
["AR"] = {"Argentina"},
["AS"] = {"American Samoa"},
["AT"] = {"Austria"},
["AU"] = {"Australia"},
["AW"] = {"Aruba"},
["AX"] = {"Åland Islands"},
["AZ"] = {"Azerbaijan"},
["BA"] = {"Bosnia and Herzegovina"},
["BB"] = {"Barbados"},
["BD"] = {"Bangladesh"},
["BE"] = {"Belgium"},
["BF"] = {"Burkina Faso"},
["BG"] = {"Bulgaria"},
["BH"] = {"Bahrain"},
["BI"] = {"Burundi"},
["BJ"] = {"Benin"},
["BL"] = {"Saint Barthélemy"},
["BM"] = {"Bermuda"},
["BN"] = {"Brunei Darussalam"},
["BO"] = {"Bolivia"},
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},
["BR"] = {"Brazil"},
["BS"] = {"Bahamas"},
["BT"] = {"Bhutan"},
["BV"] = {"Bouvet Island"},
["BW"] = {"Botswana"},
["BY"] = {"Belarus"},
["BZ"] = {"Belize"},
["CA"] = {"Canada"},
["CC"] = {"Cocos (Keeling) Islands"},
["CD"] = {"The Democratic Republic of the Congo"},
["CF"] = {"Central African Republic"},
["CG"] = {"Congo"},
["CH"] = {"Switzerland"},
["CI"] = {"Côte d'Ivoire"},
["CK"] = {"Cook Islands"},
["CL"] = {"Chile"},
["CM"] = {"Cameroon"},
["CN"] = {"China"},
["CO"] = {"Colombia"},
["CP"] = {"Clipperton Island"},
["CQ"] = {"Sark"},
["CR"] = {"Costa Rica"},
["CU"] = {"Cuba"},
["CV"] = {"Cabo Verde", "Cape Verde"},
["CW"] = {"Curaçao"},
["CX"] = {"Christmas Island"},
["CY"] = {"Cyprus"},
["CZ"] = {"Czechia", "Czech Republic"},
["DE"] = {"Germany"},
["DG"] = {"Diego Garcia"},
["DJ"] = {"Djibouti"},
["DK"] = {"Denmark"},
["DM"] = {"Dominica"},
["DO"] = {"Dominican Republic"},
["DZ"] = {"Algeria"},
["EA"] = {"Ceuta, Melilla"},
["EC"] = {"Ecuador"},
["EE"] = {"Estonia"},
["EG"] = {"Egypt"},
["EH"] = {"Western Sahara"},
["ER"] = {"Eritrea"},
["ES"] = {"Spain"},
["ET"] = {"Ethiopia"},
["EU"] = {"European Union"},
["EZ"] = {"Eurozone"},
["FI"] = {"Finland"},
["FJ"] = {"Fiji"},
["FK"] = {"Falkland Islands (Malvinas)"},
["FM"] = {"Federated States of Micronesia"},
["FO"] = {"Faroe Islands"},
["FR"] = {"France"},
["GA"] = {"Gabon"},
["GB"] = {"United Kingdom"},
["GD"] = {"Grenada"},
["GE"] = {"Georgia"},
["GF"] = {"French Guiana"},
["GG"] = {"Guernsey"},
["GH"] = {"Ghana"},
["GI"] = {"Gibraltar"},
["GL"] = {"Greenland"},
["GM"] = {"Gambia"},
["GN"] = {"Guinea"},
["GP"] = {"Guadeloupe"},
["GQ"] = {"Equatorial Guinea"},
["GR"] = {"Greece"},
["GS"] = {"South Georgia and the South Sandwich Islands"},
["GT"] = {"Guatemala"},
["GU"] = {"Guam"},
["GW"] = {"Guinea-Bissau"},
["GY"] = {"Guyana"},
["HK"] = {"Hong Kong"},
["HM"] = {"Heard Island and McDonald Islands"},
["HN"] = {"Honduras"},
["HR"] = {"Croatia"},
["HT"] = {"Haiti"},
["HU"] = {"Hungary"},
["IC"] = {"Canary Islands"},
["ID"] = {"Indonesia"},
["IE"] = {"Ireland"},
["IL"] = {"Israel"},
["IM"] = {"Isle of Man"},
["IN"] = {"India"},
["IO"] = {"British Indian Ocean Territory"},
["IQ"] = {"Iraq"},
["IR"] = {"Islamic Republic of Iran"},
["IS"] = {"Iceland"},
["IT"] = {"Italy"},
["JE"] = {"Jersey"},
["JM"] = {"Jamaica"},
["JO"] = {"Jordan"},
["JP"] = {"Japan"},
["KE"] = {"Kenya"},
["KG"] = {"Kyrgyzstan"},
["KH"] = {"Cambodia"},
["KI"] = {"Kiribati"},
["KM"] = {"Comoros"},
["KN"] = {"Saint Kitts and Nevis"},
["KP"] = {"Democratic People's Republic of Korea"},
["KR"] = {"Republic of Korea"},
["KW"] = {"Kuwait"},
["KY"] = {"Cayman Islands"},
["KZ"] = {"Kazakhstan"},
["LA"] = {"Lao People's Democratic Republic"},
["LB"] = {"Lebanon"},
["LC"] = {"Saint Lucia"},
["LI"] = {"Liechtenstein"},
["LK"] = {"Sri Lanka"},
["LR"] = {"Liberia"},
["LS"] = {"Lesotho"},
["LT"] = {"Lithuania"},
["LU"] = {"Luxembourg"},
["LV"] = {"Latvia"},
["LY"] = {"Libya"},
["MA"] = {"Morocco"},
["MC"] = {"Monaco"},
["MD"] = {"Moldova"},
["ME"] = {"Montenegro"},
["MF"] = {"Saint Martin (French part)"},
["MG"] = {"Madagascar"},
["MH"] = {"Marshall Islands"},
["MK"] = {"North Macedonia"},
["ML"] = {"Mali"},
["MM"] = {"Myanmar"},
["MN"] = {"Mongolia"},
["MO"] = {"Macao"},
["MP"] = {"Northern Mariana Islands"},
["MQ"] = {"Martinique"},
["MR"] = {"Mauritania"},
["MS"] = {"Montserrat"},
["MT"] = {"Malta"},
["MU"] = {"Mauritius"},
["MV"] = {"Maldives"},
["MW"] = {"Malawi"},
["MX"] = {"Mexico"},
["MY"] = {"Malaysia"},
["MZ"] = {"Mozambique"},
["NA"] = {"Namibia"},
["NC"] = {"New Caledonia"},
["NE"] = {"Niger"},
["NF"] = {"Norfolk Island"},
["NG"] = {"Nigeria"},
["NI"] = {"Nicaragua"},
["NL"] = {"Netherlands"},
["NO"] = {"Norway"},
["NP"] = {"Nepal"},
["NR"] = {"Nauru"},
["NU"] = {"Niue"},
["NZ"] = {"New Zealand"},
["OM"] = {"Oman"},
["PA"] = {"Panama"},
["PE"] = {"Peru"},
["PF"] = {"French Polynesia"},
["PG"] = {"Papua New Guinea"},
["PH"] = {"Philippines"},
["PK"] = {"Pakistan"},
["PL"] = {"Poland"},
["PM"] = {"Saint Pierre and Miquelon"},
["PN"] = {"Pitcairn"},
["PR"] = {"Puerto Rico"},
["PS"] = {"State of Palestine"},
["PT"] = {"Portugal"},
["PW"] = {"Palau"},
["PY"] = {"Paraguay"},
["QA"] = {"Qatar"},
["RE"] = {"Réunion"},
["RO"] = {"Romania"},
["RS"] = {"Serbia"},
["RU"] = {"Russian Federation"},
["RW"] = {"Rwanda"},
["SA"] = {"Saudi Arabia"},
["SB"] = {"Solomon Islands"},
["SC"] = {"Seychelles"},
["SD"] = {"Sudan"},
["SE"] = {"Sweden"},
["SG"] = {"Singapore"},
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {"Slovenia"},
["SJ"] = {"Svalbard and Jan Mayen"},
["SK"] = {"Slovakia"},
["SL"] = {"Sierra Leone"},
["SM"] = {"San Marino"},
["SN"] = {"Senegal"},
["SO"] = {"Somalia"},
["SR"] = {"Suriname"},
["SS"] = {"South Sudan"},
["ST"] = {"Sao Tome and Principe"},
["SV"] = {"El Salvador"},
["SX"] = {"Sint Maarten (Dutch part)"},
["SY"] = {"Syrian Arab Republic"},
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},
["TA"] = {"Tristan da Cunha"},
["TC"] = {"Turks and Caicos Islands"},
["TD"] = {"Chad"},
["TF"] = {"French Southern Territories"},
["TG"] = {"Togo"},
["TH"] = {"Thailand"},
["TJ"] = {"Tajikistan"},
["TK"] = {"Tokelau"},
["TL"] = {"Timor-Leste"},
["TM"] = {"Turkmenistan"},
["TN"] = {"Tunisia"},
["TO"] = {"Tonga"},
["TR"] = {"Türkiye", "Turkey"},
["TT"] = {"Trinidad and Tobago"},
["TV"] = {"Tuvalu"},
["TW"] = {"Taiwan, Province of China"},
["TZ"] = {"United Republic of Tanzania"},
["UA"] = {"Ukraine"},
["UG"] = {"Uganda"},
["UM"] = {"United States Minor Outlying Islands"},
["UN"] = {"United Nations"},
["US"] = {"United States"},
["UY"] = {"Uruguay"},
["UZ"] = {"Uzbekistan"},
["VA"] = {"Holy See (Vatican City State)"},
["VC"] = {"Saint Vincent and the Grenadines"},
["VE"] = {"Venezuela"},
["VG"] = {"British Virgin Islands"},
["VI"] = {"U.S. Virgin Islands"},
["VN"] = {"Viet Nam"},
["VU"] = {"Vanuatu"},
["WF"] = {"Wallis and Futuna"},
["WS"] = {"Samoa"},
["YE"] = {"Yemen"},
["YT"] = {"Mayotte"},
["ZA"] = {"South Africa"},
["ZM"] = {"Zambia"},
["ZW"] = {"Zimbabwe"},
["001"] = {"World"},
["002"] = {"Africa"},
["003"] = {"North America"},
["005"] = {"South America"},
["009"] = {"Oceania"},
["011"] = {"Western Africa"},
["013"] = {"Central America"},
["014"] = {"Eastern Africa"},
["015"] = {"Northern Africa"},
["017"] = {"Middle Africa"},
["018"] = {"Southern Africa"},
["019"] = {"Americas"},
["021"] = {"Northern America"},
["029"] = {"Caribbean"},
["030"] = {"Eastern Asia"},
["034"] = {"Southern Asia"},
["035"] = {"South-Eastern Asia"},
["039"] = {"Southern Europe"},
["053"] = {"Australia and New Zealand"},
["054"] = {"Melanesia"},
["057"] = {"Micronesia"},
["061"] = {"Polynesia"},
["142"] = {"Asia"},
["143"] = {"Central Asia"},
["145"] = {"Western Asia"},
["150"] = {"Europe"},
["151"] = {"Eastern Europe"},
["154"] = {"Northern Europe"},
["155"] = {"Western Europe"},
["202"] = {"Sub-Saharan Africa"},
["419"] = {"Latin America and the Caribbean"}
}
38ed555cd3945668fad81deefcc2ce6558bff172
Module:Language/data/iana variants
828
473
3139
1042
2023-11-03T15:39:59Z
wikipedia>Trappist the monk
0
update to 2023-10-16 data;
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["1606nict"] = {
["descriptions"] = {"Late Middle French (to 1606)"},
["prefixes"] = {"frm"},
},
["1694acad"] = {
["descriptions"] = {"Early Modern French"},
["prefixes"] = {"fr"},
},
["1901"] = {
["descriptions"] = {"Traditional German orthography"},
["prefixes"] = {"de"},
},
["1959acad"] = {
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},
["prefixes"] = {"be"},
},
["1994"] = {
["descriptions"] = {"Standardized Resian orthography"},
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},
},
["1996"] = {
["descriptions"] = {"German orthography of 1996"},
["prefixes"] = {"de"},
},
["abl1943"] = {
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},
["prefixes"] = {"pt-br"},
},
["akuapem"] = {
["descriptions"] = {"Akuapem Twi"},
["prefixes"] = {"tw"},
},
["alalc97"] = {
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},
["prefixes"] = {},
},
["aluku"] = {
["descriptions"] = {"Aluku dialect", "Boni dialect"},
["prefixes"] = {"djk"},
},
["ao1990"] = {
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},
["prefixes"] = {"pt", "gl"},
},
["aranes"] = {
["descriptions"] = {"Aranese"},
["prefixes"] = {"oc"},
},
["arkaika"] = {
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},
["prefixes"] = {"eo"},
},
["asante"] = {
["descriptions"] = {"Asante Twi", "Ashanti Twi"},
["prefixes"] = {"tw"},
},
["auvern"] = {
["descriptions"] = {"Auvergnat"},
["prefixes"] = {"oc"},
},
["baku1926"] = {
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},
},
["balanka"] = {
["descriptions"] = {"The Balanka dialect of Anii"},
["prefixes"] = {"blo"},
},
["barla"] = {
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["basiceng"] = {
["descriptions"] = {"Basic English"},
["prefixes"] = {"en"},
},
["bauddha"] = {
["descriptions"] = {"Buddhist Hybrid Sanskrit"},
["prefixes"] = {"sa"},
},
["bciav"] = {
["descriptions"] = {"BCI Blissymbolics AV"},
["prefixes"] = {"zbl"},
},
["bcizbl"] = {
["descriptions"] = {"BCI Blissymbolics"},
["prefixes"] = {"zbl"},
},
["biscayan"] = {
["descriptions"] = {"Biscayan dialect of Basque"},
["prefixes"] = {"eu"},
},
["biske"] = {
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["blasl"] = {
["descriptions"] = {"Black American Sign Language dialect"},
["prefixes"] = {"ase", "sgn-ase"},
},
["bohoric"] = {
["descriptions"] = {"Slovene in Bohorič alphabet"},
["prefixes"] = {"sl"},
},
["boont"] = {
["descriptions"] = {"Boontling"},
["prefixes"] = {"en"},
},
["bornholm"] = {
["descriptions"] = {"Bornholmsk"},
["prefixes"] = {"da"},
},
["cisaup"] = {
["descriptions"] = {"Cisalpine"},
["prefixes"] = {"oc"},
},
["colb1945"] = {
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},
["prefixes"] = {"pt"},
},
["cornu"] = {
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},
["prefixes"] = {"en"},
},
["creiss"] = {
["descriptions"] = {"Occitan variants of the Croissant area"},
["prefixes"] = {"oc"},
},
["dajnko"] = {
["descriptions"] = {"Slovene in Dajnko alphabet"},
["prefixes"] = {"sl"},
},
["ekavsk"] = {
["descriptions"] = {"Serbian with Ekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["emodeng"] = {
["descriptions"] = {"Early Modern English (1500-1700)"},
["prefixes"] = {"en"},
},
["fonipa"] = {
["descriptions"] = {"International Phonetic Alphabet"},
["prefixes"] = {},
},
["fonkirsh"] = {
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},
["prefixes"] = {},
},
["fonnapa"] = {
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},
["prefixes"] = {},
},
["fonupa"] = {
["descriptions"] = {"Uralic Phonetic Alphabet"},
["prefixes"] = {},
},
["fonxsamp"] = {
["descriptions"] = {"X-SAMPA transcription"},
["prefixes"] = {},
},
["gallo"] = {
["descriptions"] = {"Gallo"},
["prefixes"] = {"fr"},
},
["gascon"] = {
["descriptions"] = {"Gascon"},
["prefixes"] = {"oc"},
},
["grclass"] = {
["descriptions"] = {"Classical Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["grital"] = {
["descriptions"] = {"Italian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},
},
["grmistr"] = {
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["hepburn"] = {
["descriptions"] = {"Hepburn romanization"},
["prefixes"] = {"ja-latn"},
},
["hognorsk"] = {
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},
["prefixes"] = {"nn"},
},
["hsistemo"] = {
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
},
["ijekavsk"] = {
["descriptions"] = {"Serbian with Ijekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["itihasa"] = {
["descriptions"] = {"Epic Sanskrit"},
["prefixes"] = {"sa"},
},
["ivanchov"] = {
["descriptions"] = {"Bulgarian in 1899 orthography"},
["prefixes"] = {"bg"},
},
["jauer"] = {
["descriptions"] = {"Jauer dialect of Romansh"},
["prefixes"] = {"rm"},
},
["jyutping"] = {
["descriptions"] = {"Jyutping Cantonese Romanization"},
["prefixes"] = {"yue"},
},
["kkcor"] = {
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["kociewie"] = {
["descriptions"] = {"The Kociewie dialect of Polish"},
["prefixes"] = {"pl"},
},
["kscor"] = {
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},
["prefixes"] = {"kw"},
},
["laukika"] = {
["descriptions"] = {"Classical Sanskrit"},
["prefixes"] = {"sa"},
},
["lemosin"] = {
["descriptions"] = {"Limousin"},
["prefixes"] = {"oc"},
},
["lengadoc"] = {
["descriptions"] = {"Languedocien"},
["prefixes"] = {"oc"},
},
["lipaw"] = {
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["ltg1929"] = {
["descriptions"] = {"The Latgalian language orthography codified in 1929"},
["prefixes"] = {"ltg"},
},
["ltg2007"] = {
["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"},
["prefixes"] = {"ltg"},
},
["luna1918"] = {
["descriptions"] = {"Post-1917 Russian orthography"},
["prefixes"] = {"ru"},
},
["metelko"] = {
["descriptions"] = {"Slovene in Metelko alphabet"},
["prefixes"] = {"sl"},
},
["monoton"] = {
["descriptions"] = {"Monotonic Greek"},
["prefixes"] = {"el"},
},
["ndyuka"] = {
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},
["prefixes"] = {"djk"},
},
["nedis"] = {
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},
["prefixes"] = {"sl"},
},
["newfound"] = {
["descriptions"] = {"Newfoundland English"},
["prefixes"] = {"en-ca"},
},
["nicard"] = {
["descriptions"] = {"Niçard"},
["prefixes"] = {"oc"},
},
["njiva"] = {
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["nulik"] = {
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},
["prefixes"] = {"vo"},
},
["osojs"] = {
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["oxendict"] = {
["descriptions"] = {"Oxford English Dictionary spelling"},
["prefixes"] = {"en"},
},
["pahawh2"] = {
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh3"] = {
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh4"] = {
["descriptions"] = {"Pahawh Hmong Final Version orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pamaka"] = {
["descriptions"] = {"Pamaka dialect"},
["prefixes"] = {"djk"},
},
["peano"] = {
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},
["prefixes"] = {"la"},
},
["petr1708"] = {
["descriptions"] = {"Petrine orthography"},
["prefixes"] = {"ru"},
},
["pinyin"] = {
["descriptions"] = {"Pinyin romanization"},
["prefixes"] = {"zh-latn", "bo-latn"},
},
["polyton"] = {
["descriptions"] = {"Polytonic Greek"},
["prefixes"] = {"el"},
},
["provenc"] = {
["descriptions"] = {"Provençal"},
["prefixes"] = {"oc"},
},
["puter"] = {
["descriptions"] = {"Puter idiom of Romansh"},
["prefixes"] = {"rm"},
},
["rigik"] = {
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},
["prefixes"] = {"vo"},
},
["rozaj"] = {
["descriptions"] = {"Resian", "Resianic", "Rezijan"},
["prefixes"] = {"sl"},
},
["rumgr"] = {
["descriptions"] = {"Rumantsch Grischun"},
["prefixes"] = {"rm"},
},
["scotland"] = {
["descriptions"] = {"Scottish Standard English"},
["prefixes"] = {"en"},
},
["scouse"] = {
["descriptions"] = {"Scouse"},
["prefixes"] = {"en"},
},
["simple"] = {
["descriptions"] = {"Simplified form"},
["prefixes"] = {},
},
["solba"] = {
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["sotav"] = {
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["spanglis"] = {
["descriptions"] = {"Spanglish"},
["prefixes"] = {"en", "es"},
},
["surmiran"] = {
["descriptions"] = {"Surmiran idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sursilv"] = {
["descriptions"] = {"Sursilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sutsilv"] = {
["descriptions"] = {"Sutsilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["synnejyl"] = {
["descriptions"] = {"Synnejysk", "South Jutish"},
["prefixes"] = {"da"},
},
["tarask"] = {
["descriptions"] = {"Belarusian in Taraskievica orthography"},
["prefixes"] = {"be"},
},
["tongyong"] = {
["descriptions"] = {"Tongyong Pinyin romanization"},
["prefixes"] = {"zh-latn"},
},
["tunumiit"] = {
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},
["prefixes"] = {"kl"},
},
["uccor"] = {
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ucrcor"] = {
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ulster"] = {
["descriptions"] = {"Ulster dialect of Scots"},
["prefixes"] = {"sco"},
},
["unifon"] = {
["descriptions"] = {"Unifon phonetic alphabet"},
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},
},
["vaidika"] = {
["descriptions"] = {"Vedic Sanskrit"},
["prefixes"] = {"sa"},
},
["valencia"] = {
["descriptions"] = {"Valencian"},
["prefixes"] = {"ca"},
},
["vallader"] = {
["descriptions"] = {"Vallader idiom of Romansh"},
["prefixes"] = {"rm"},
},
["vecdruka"] = {
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},
["prefixes"] = {"lv"},
},
["vivaraup"] = {
["descriptions"] = {"Vivaro-Alpine"},
["prefixes"] = {"oc"},
},
["wadegile"] = {
["descriptions"] = {"Wade-Giles romanization"},
["prefixes"] = {"zh-latn"},
},
["xsistemo"] = {
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
}
}
fe5d6330175026010e0d8d9aef185dbd571c3d57
Module:Language/data/iana suppressed scripts
828
474
3141
1044
2023-11-03T15:40:00Z
wikipedia>Trappist the monk
0
update to 2023-10-16 data;
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["Arab"] = {"ar", "fa", "ps", "ur"},
["Armn"] = {"hy"},
["Beng"] = {"as", "bn"},
["Blis"] = {"zbl"},
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},
["Ethi"] = {"am", "ti"},
["Geor"] = {"ka"},
["Grek"] = {"el"},
["Gujr"] = {"gu"},
["Guru"] = {"pa"},
["Hebr"] = {"he", "iw", "yi"},
["Jpan"] = {"ja"},
["Khmr"] = {"km"},
["Knda"] = {"kn"},
["Kore"] = {"ko"},
["Laoo"] = {"lo"},
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",
"tpi", "tvl"},
["Mlym"] = {"ml"},
["Mymr"] = {"my"},
["Nkoo"] = {"nqo"},
["Orya"] = {"or"},
["Sinh"] = {"si"},
["Taml"] = {"ta"},
["Telu"] = {"te"},
["Thaa"] = {"dv"},
["Thai"] = {"th"},
["Tibt"] = {"dz"}
}
1708132b06b72c9ca4217aaa0ddc8a1e8b234646
Module:Transclusion count/data/C
828
595
3051
1339
2023-11-05T05:08:49Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["C"] = 660000,
["C-Class"] = 17000,
["C-SPAN"] = 13000,
["C-cmn"] = 2300,
["C-pl"] = 51000,
["C."] = 4300,
["CAN"] = 20000,
["CANelec"] = 14000,
["CANelec/gain"] = 2600,
["CANelec/hold"] = 4900,
["CANelec/source"] = 7100,
["CANelec/top"] = 6500,
["CANelec/total"] = 6600,
["CAS"] = 3800,
["CBB_Standings_End"] = 15000,
["CBB_Standings_Entry"] = 14000,
["CBB_Standings_Start"] = 14000,
["CBB_Yearly_Record_End"] = 3100,
["CBB_Yearly_Record_Entry"] = 3100,
["CBB_Yearly_Record_Start"] = 3000,
["CBB_Yearly_Record_Subhead"] = 3700,
["CBB_Yearly_Record_Subtotal"] = 2900,
["CBB_roster/Footer"] = 8200,
["CBB_roster/Header"] = 8200,
["CBB_roster/Player"] = 8200,
["CBB_schedule_end"] = 11000,
["CBB_schedule_entry"] = 11000,
["CBB_schedule_start"] = 11000,
["CBB_standings_end"] = 16000,
["CBB_standings_entry"] = 16000,
["CBB_standings_start"] = 16000,
["CBB_yearly_record_end"] = 4100,
["CBB_yearly_record_end/legend"] = 3700,
["CBB_yearly_record_entry"] = 4100,
["CBB_yearly_record_start"] = 4000,
["CBB_yearly_record_subhead"] = 3800,
["CBB_yearly_record_subtotal"] = 3800,
["CBSB_Standings_End"] = 4300,
["CBSB_Standings_Entry"] = 4300,
["CBSB_Standings_Start"] = 4300,
["CBSB_link"] = 3500,
["CBSB_standings_end"] = 4400,
["CBSB_standings_entry"] = 4500,
["CBSB_standings_start"] = 4500,
["CC0"] = 3800,
["CENTURY"] = 16000,
["CFB_Standings_End"] = 34000,
["CFB_Standings_Entry"] = 34000,
["CFB_Standings_Start"] = 34000,
["CFB_Yearly_Record_End"] = 6900,
["CFB_Yearly_Record_End/legend"] = 2400,
["CFB_Yearly_Record_Entry"] = 6900,
["CFB_Yearly_Record_Start"] = 6900,
["CFB_Yearly_Record_Subhead"] = 6900,
["CFB_Yearly_Record_Subtotal"] = 6800,
["CFB_schedule"] = 26000,
["CFB_schedule_entry"] = 19000,
["CFB_standings_end"] = 34000,
["CFB_standings_entry"] = 34000,
["CFB_standings_start"] = 34000,
["CFL_Year"] = 5700,
["CGF_year"] = 2600,
["CHE"] = 10000,
["CHI"] = 2800,
["CHL"] = 3700,
["CHN"] = 11000,
["CN"] = 3500,
["CO2"] = 3300,
["COI"] = 14000,
["COIUL"] = 130000,
["COI_editnotice"] = 6700,
["COL"] = 5000,
["COLON"] = 13000,
["CRI"] = 2200,
["CRO"] = 5600,
["CSK"] = 2800,
["CSS_image_crop"] = 4700,
["CUB"] = 3800,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2100,
["CZE"] = 15000,
["Calendar"] = 2400,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 23000,
["CanProvName"] = 14000,
["CanadaByProvinceCatNav"] = 8400,
["CanadaProvinceThe"] = 4000,
["Canadian_English"] = 7100,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 14000,
["Canadian_election_result/gain"] = 2700,
["Canadian_election_result/hold"] = 5000,
["Canadian_election_result/source"] = 8200,
["Canadian_election_result/top"] = 14000,
["Canadian_election_result/total"] = 11000,
["Canadian_party_colour"] = 8300,
["Canadian_party_colour/colour"] = 18000,
["Canadian_party_colour/colour/default"] = 18000,
["Canadian_party_colour/name"] = 15000,
["Canadian_party_colour/name/default"] = 6900,
["Canned_search"] = 5900,
["Cascite"] = 15000,
["Caselaw_source"] = 4000,
["Cassini-Ehess"] = 2900,
["Cast_listing"] = 16000,
["Castlist"] = 2600,
["Cat"] = 360000,
["CatAutoTOC"] = 664000,
["CatAutoTOC/core"] = 663000,
["CatRel"] = 3800,
["CatTrack"] = 3100,
["Cat_class"] = 6900,
["Cat_in_use"] = 50000,
["Cat_main"] = 201000,
["Cat_more"] = 102000,
["Cat_more_if_exists"] = 40000,
["Cat_see_also"] = 3600,
["Catalog_lookup_link"] = 518000,
["Category-Class"] = 14000,
["Category-inline"] = 8700,
["Category_TOC"] = 72000,
["Category_TOC/tracking"] = 72000,
["Category_U.S._State_elections_by_year"] = 7300,
["Category_U.S._State_elections_by_year/core"] = 7300,
["Category_class"] = 36000,
["Category_class/column"] = 36000,
["Category_class/second_row_column"] = 36000,
["Category_described_in_year"] = 5700,
["Category_diffuse"] = 7900,
["Category_disambiguation"] = 2400,
["Category_disambiguation/category_link"] = 2400,
["Category_explanation"] = 276000,
["Category_handler"] = 3330000,
["Category_ifexist"] = 5100,
["Category_importance"] = 10000,
["Category_importance/column"] = 10000,
["Category_importance/second_row_column"] = 10000,
["Category_link"] = 137000,
["Category_link_with_count"] = 7000,
["Category_more"] = 112000,
["Category_more_if_exists"] = 40000,
["Category_ordered_by_date"] = 11000,
["Category_other"] = 910000,
["Category_redirect"] = 109000,
["Category_see_also"] = 40000,
["Category_see_also/Category_pair_check"] = 40000,
["Category_see_also_if_exists"] = 73000,
["Category_see_also_if_exists_2"] = 89000,
["Category_series_navigation"] = 486000,
["Category_title"] = 2400,
["Catexp"] = 8000,
["CathEncy"] = 2300,
["Catholic"] = 4000,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 28000,
["Catmore"] = 9400,
["Cbb_link"] = 8800,
["Cbignore"] = 100000,
["Cbsb_link"] = 2100,
["Cc-by-2.5"] = 3700,
["Cc-by-3.0"] = 8400,
["Cc-by-sa-2.5"] = 2500,
["Cc-by-sa-2.5,2.0,1.0"] = 2600,
["Cc-by-sa-3.0"] = 25000,
["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200,
["Cc-by-sa-3.0-migrated"] = 23000,
["Cc-by-sa-4.0"] = 10000,
["Cc-zero"] = 3700,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 6800,
["Cent"] = 5800,
["Center"] = 291000,
["Centralized_discussion"] = 6200,
["Centralized_discussion/core"] = 6200,
["Centralized_discussion/styles.css"] = 6200,
["Centre"] = 3300,
["Century"] = 2100,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 89000,
["Century_name_from_title_decade"] = 7700,
["Century_name_from_title_year"] = 7600,
["Certification_Cite/Title"] = 31000,
["Certification_Cite/URL"] = 34000,
["Certification_Cite/archivedate"] = 6100,
["Certification_Cite/archiveurl"] = 6100,
["Certification_Cite_Ref"] = 30000,
["Certification_Table_Bottom"] = 30000,
["Certification_Table_Entry"] = 31000,
["Certification_Table_Entry/Foot"] = 29000,
["Certification_Table_Entry/Foot/helper"] = 29000,
["Certification_Table_Entry/Region"] = 30000,
["Certification_Table_Entry/Sales"] = 29000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100,
["Certification_Table_Entry/Sales/DanishPeriod"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4000,
["Certification_Table_Entry/Sales/ItalianHelper"] = 3300,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100,
["Certification_Table_Separator"] = 2400,
["Certification_Table_Top"] = 31000,
["Cfb_link"] = 24000,
["Cfd_result"] = 2400,
["Cfdend"] = 4000,
["Chart"] = 4600,
["Chart/end"] = 4700,
["Chart/start"] = 4700,
["Chart_bottom"] = 3600,
["Chart_top"] = 3600,
["Check_completeness_of_transclusions"] = 40000,
["Check_talk"] = 31000,
["Check_talk_wp"] = 1420000,
["Check_winner_by_scores"] = 13000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 13000,
["Checkuser"] = 76000,
["Checkuserblock-account"] = 19000,
["Chem"] = 5800,
["Chem/atom"] = 5800,
["Chem/link"] = 5800,
["Chem2"] = 5200,
["Chem_molar_mass"] = 18000,
["Chem_molar_mass/format"] = 18000,
["Chembox"] = 14000,
["Chembox/styles.css"] = 14000,
["Chembox_3DMet"] = 14000,
["Chembox_3DMet/format"] = 14000,
["Chembox_AllOtherNames"] = 13000,
["Chembox_AllOtherNames/format"] = 13000,
["Chembox_Appearance"] = 6200,
["Chembox_BoilingPt"] = 3800,
["Chembox_CASNo"] = 14000,
["Chembox_CASNo/format"] = 14000,
["Chembox_CalcTemperatures"] = 6700,
["Chembox_ChEBI"] = 14000,
["Chembox_ChEBI/format"] = 14000,
["Chembox_ChEMBL"] = 14000,
["Chembox_ChEMBL/format"] = 14000,
["Chembox_ChemSpiderID"] = 14000,
["Chembox_ChemSpiderID/format"] = 14000,
["Chembox_CompTox"] = 14000,
["Chembox_CompTox/format"] = 14000,
["Chembox_Datapage_check"] = 14000,
["Chembox_Density"] = 4900,
["Chembox_DrugBank"] = 14000,
["Chembox_DrugBank/format"] = 14000,
["Chembox_ECHA"] = 7600,
["Chembox_ECNumber"] = 14000,
["Chembox_ECNumber/format"] = 14000,
["Chembox_Elements"] = 14000,
["Chembox_Elements/molecular_formula"] = 18000,
["Chembox_Footer"] = 14000,
["Chembox_Footer/tracking"] = 14000,
["Chembox_GHS_(set)"] = 3500,
["Chembox_Hazards"] = 12000,
["Chembox_IUPHAR_ligand"] = 14000,
["Chembox_IUPHAR_ligand/format"] = 14000,
["Chembox_Identifiers"] = 14000,
["Chembox_InChI"] = 13000,
["Chembox_InChI/format"] = 13000,
["Chembox_Indexlist"] = 14000,
["Chembox_Jmol"] = 14000,
["Chembox_Jmol/format"] = 14000,
["Chembox_KEGG"] = 14000,
["Chembox_KEGG/format"] = 14000,
["Chembox_MeltingPt"] = 5900,
["Chembox_Properties"] = 14000,
["Chembox_PubChem"] = 14000,
["Chembox_PubChem/format"] = 14000,
["Chembox_RTECS"] = 14000,
["Chembox_RTECS/format"] = 14000,
["Chembox_Related"] = 3400,
["Chembox_SMILES"] = 13000,
["Chembox_SMILES/format"] = 13000,
["Chembox_SolubilityInWater"] = 3900,
["Chembox_Structure"] = 2100,
["Chembox_UNII"] = 14000,
["Chembox_UNII/format"] = 14000,
["Chembox_headerbar"] = 14000,
["Chembox_image"] = 13000,
["Chembox_image_cell"] = 12000,
["Chembox_image_sbs"] = 13000,
["Chembox_parametercheck"] = 13000,
["Chembox_setDatarow"] = 4500,
["Chembox_setHeader"] = 4500,
["Chembox_templatePar/formatPreviewMessage"] = 14000,
["Chembox_verification"] = 7200,
["Chemicals"] = 7300,
["Chemistry"] = 3100,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3700,
["Chinese"] = 6900,
["Chr"] = 9100,
["ChristianityWikiProject"] = 5700,
["Circa"] = 75000,
["Circular_reference"] = 4600,
["Citation"] = 414000,
["Citation/make_link"] = 6200,
["Citation/styles.css"] = 46000,
["Citation_needed"] = 551000,
["Citation_needed_span"] = 3500,
["Citation_style"] = 4200,
["Cite_AV_media"] = 43000,
["Cite_AV_media_notes"] = 26000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 3300,
["Cite_Catholic_Encyclopedia"] = 8300,
["Cite_Colledge2006"] = 3100,
["Cite_DCB"] = 2800,
["Cite_DNB"] = 18000,
["Cite_EB1911"] = 25000,
["Cite_GNIS"] = 2300,
["Cite_Gaia_DR2"] = 2100,
["Cite_Google_Maps"] = 15000,
["Cite_IUCN"] = 58000,
["Cite_Instagram"] = 2300,
["Cite_Jewish_Encyclopedia"] = 3000,
["Cite_NIE"] = 3600,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2600,
["Cite_ODNB"] = 18000,
["Cite_POWO"] = 2100,
["Cite_Q"] = 48000,
["Cite_QHR"] = 3000,
["Cite_QPN"] = 4000,
["Cite_Rotten_Tomatoes"] = 2000,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3200,
["Cite_Sports-Reference"] = 54000,
["Cite_USGov"] = 24000,
["Cite_WoRMS"] = 5500,
["Cite_act"] = 2800,
["Cite_arXiv"] = 5100,
["Cite_bcgnis"] = 3500,
["Cite_book"] = 1610000,
["Cite_certification"] = 34000,
["Cite_cgndb"] = 3400,
["Cite_comic"] = 2100,
["Cite_conference"] = 16000,
["Cite_court"] = 5400,
["Cite_court/styles.css"] = 5400,
["Cite_dictionary"] = 3500,
["Cite_encyclopedia"] = 206000,
["Cite_episode"] = 17000,
["Cite_gnis"] = 33000,
["Cite_interview"] = 7900,
["Cite_iucn"] = 58000,
["Cite_journal"] = 974000,
["Cite_magazine"] = 282000,
["Cite_map"] = 42000,
["Cite_news"] = 1540000,
["Cite_newspaper_The_Times"] = 6600,
["Cite_patent"] = 5600,
["Cite_patent/authors"] = 4600,
["Cite_patent/core"] = 5900,
["Cite_peakbagger"] = 4600,
["Cite_podcast"] = 4000,
["Cite_press_release"] = 67000,
["Cite_report"] = 37000,
["Cite_rowlett"] = 2500,
["Cite_simbad"] = 4500,
["Cite_sports-reference"] = 59000,
["Cite_thesis"] = 33000,
["Cite_tweet"] = 37000,
["Cite_video"] = 12000,
["Cite_video_game"] = 3100,
["Cite_web"] = 4620000,
["Cite_wikisource"] = 5700,
["Cite_wikisource/make_link"] = 59000,
["Civil_navigation"] = 2900,
["Cl"] = 134000,
["Clade"] = 7700,
["Clade/styles.css"] = 7800,
["Clarify"] = 41000,
["Class"] = 42000,
["Class/colour"] = 9210000,
["Class/icon"] = 21000,
["Class_mask"] = 314000,
["Class_mask/b"] = 272000,
["Classical"] = 6800,
["Classicon"] = 4800,
["Clc"] = 6100,
["Cleanup"] = 10000,
["Cleanup_bare_URLs"] = 25000,
["Cleanup_reorganize"] = 2500,
["Cleanup_rewrite"] = 6000,
["Clear"] = 3000000,
["Clear-left"] = 4100,
["Clear_left"] = 31000,
["Clear_right"] = 2600,
["Clerk-Note"] = 9900,
["Clerk_Request"] = 2100,
["Clerknote"] = 7500,
["Clickable_button"] = 17000,
["Clickable_button_2"] = 974000,
["Closed_access"] = 4700,
["Closed_rfc_top"] = 2300,
["Clr"] = 3500,
["Clubplayerscat"] = 8900,
["Cmbox"] = 425000,
["Cn"] = 95000,
["Cnote2"] = 2300,
["Cnote2_Begin"] = 2300,
["Cnote2_End"] = 2300,
["Coat_of_arms"] = 4800,
["Cob"] = 12000,
["Code"] = 53000,
["Col-1-of-2"] = 2400,
["Col-2"] = 172000,
["Col-2-of-2"] = 2300,
["Col-3"] = 10000,
["Col-4"] = 3600,
["Col-begin"] = 214000,
["Col-break"] = 212000,
["Col-end"] = 213000,
["Col-float"] = 2700,
["Col-float-break"] = 2600,
["Col-float-end"] = 2700,
["Col-float/styles.css"] = 2700,
["Col-start"] = 18000,
["Colbegin"] = 21000,
["Colend"] = 23000,
["Collapse"] = 9900,
["Collapse_bottom"] = 51000,
["Collapse_top"] = 52000,
["Collapsebottom"] = 3900,
["Collapsetop"] = 3800,
["Collapsible_list"] = 52000,
["Collapsible_option"] = 135000,
["College"] = 9100,
["CollegePrimaryHeader"] = 6200,
["CollegePrimaryStyle"] = 98000,
["CollegeSecondaryStyle"] = 3400,
["College_Athlete_Recruit_End"] = 3000,
["College_Athlete_Recruit_Entry"] = 3100,
["College_Athlete_Recruit_Start"] = 3100,
["College_athlete_recruit_end"] = 4200,
["College_athlete_recruit_entry"] = 4300,
["College_athlete_recruit_start"] = 4300,
["College_color_list"] = 3900,
["College_stripe_style"] = 2100,
["Colon"] = 18000,
["Color"] = 474000,
["Color_box"] = 74000,
["Colorbox"] = 3500,
["Colorbull"] = 4800,
["Colored_link"] = 64000,
["Colors"] = 3800,
["Colour"] = 5800,
["Colour_box"] = 2000,
["Coloured_link"] = 6900,
["Column"] = 2400,
["Column/styles.css"] = 2500,
["Columns-end"] = 2200,
["Columns-list"] = 96000,
["Columns-start"] = 2200,
["Comedy"] = 2600,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3500,
["Comics-replaceability"] = 2900,
["Comics_infobox_sec/creator_nat"] = 2800,
["Comics_infobox_sec/formcat"] = 3300,
["Comics_infobox_sec/genre"] = 4100,
["Comics_infobox_sec/genrecat"] = 3700,
["Comics_infobox_sec/styles.css"] = 8200,
["Comicsproj"] = 28000,
["Comma_separated_entries"] = 432000,
["Comma_separated_values"] = 49000,
["Comment"] = 5200,
["Committed_identity"] = 3000,
["Committed_identity/styles.css"] = 3000,
["Commons"] = 65000,
["Commons-inline"] = 20000,
["Commons_cat"] = 48000,
["Commons_category"] = 849000,
["Commons_category-inline"] = 150000,
["Commons_category_inline"] = 6100,
["Commonscat"] = 64000,
["Commonscat-inline"] = 17000,
["Commonscat_inline"] = 2400,
["Commonscatinline"] = 6800,
["Compact_TOC"] = 7000,
["Compact_ToC"] = 4700,
["Compare"] = 5300,
["Compare_image_with_Wikidata"] = 10000,
["Composition_bar"] = 11000,
["Confirmed"] = 17000,
["Confused"] = 2800,
["Confusing"] = 2300,
["CongBio"] = 9600,
["CongLinks"] = 4600,
["Connected_contributor"] = 18000,
["Connected_contributor_(paid)"] = 6900,
["Constellation_navbox"] = 6800,
["Container"] = 11000,
["Container_cat"] = 7600,
["Container_category"] = 43000,
["Containercat"] = 2600,
["Contains_special_characters"] = 4300,
["Contains_special_characters/core"] = 4300,
["Contains_special_characters/styles.css"] = 4300,
["Content_category"] = 7700,
["Contentious_topics/list"] = 13000,
["Contentious_topics/page_restriction_editnotice_base"] = 2700,
["Contentious_topics/page_restriction_talk_notice_base"] = 3800,
["Contentious_topics/talk_notice"] = 6300,
["Context"] = 2700,
["Continent2continental"] = 16000,
["Continent_adjective_to_noun"] = 2200,
["Controversial"] = 3300,
["Convert"] = 1180000,
["Convinfobox"] = 207000,
["Convinfobox/2"] = 17000,
["Convinfobox/3"] = 120000,
["Convinfobox/pri2"] = 64000,
["Convinfobox/prisec2"] = 3400,
["Convinfobox/prisec3"] = 26000,
["Convinfobox/sec2"] = 9300,
["Coord"] = 1340000,
["Coord_missing"] = 94000,
["Coord_missing/CheckCat"] = 93000,
["Coords"] = 7800,
["Copied"] = 19000,
["Copy_edit"] = 2700,
["Copy_to_Wikimedia_Commons"] = 107000,
["Cospar"] = 2600,
["Cot"] = 12000,
["Count"] = 673000,
["Country2continent"] = 36000,
["Country2continental"] = 2400,
["Country2nationality"] = 321000,
["CountryPrefixThe"] = 111000,
["Country_abbreviation"] = 89000,
["Country_alias"] = 16000,
["Country_at_games_navbox"] = 2700,
["Country_at_games_navbox/below"] = 2700,
["Country_data"] = 7300,
["Country_data_AFG"] = 2300,
["Country_data_ALB"] = 6900,
["Country_data_ALG"] = 9600,
["Country_data_AND"] = 3100,
["Country_data_ANG"] = 4000,
["Country_data_ARG"] = 48000,
["Country_data_ARM"] = 7600,
["Country_data_AUS"] = 77000,
["Country_data_AUT"] = 46000,
["Country_data_AZE"] = 9500,
["Country_data_Afghanistan"] = 13000,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 20000,
["Country_data_Alberta"] = 3700,
["Country_data_Algeria"] = 25000,
["Country_data_American_Samoa"] = 3000,
["Country_data_Andorra"] = 8200,
["Country_data_Angola"] = 12000,
["Country_data_Anguilla"] = 2500,
["Country_data_Antigua_and_Barbuda"] = 6300,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 82000,
["Country_data_Arizona"] = 2300,
["Country_data_Arkansas"] = 2000,
["Country_data_Armenia"] = 22000,
["Country_data_Aruba"] = 3700,
["Country_data_Australia"] = 128000,
["Country_data_Austria"] = 79000,
["Country_data_Azerbaijan"] = 28000,
["Country_data_BAH"] = 4100,
["Country_data_BAN"] = 4100,
["Country_data_BAR"] = 2400,
["Country_data_BEL"] = 52000,
["Country_data_BER"] = 2400,
["Country_data_BHR"] = 4900,
["Country_data_BIH"] = 13000,
["Country_data_BLR"] = 24000,
["Country_data_BOL"] = 6000,
["Country_data_BOT"] = 2500,
["Country_data_BRA"] = 59000,
["Country_data_BUL"] = 26000,
["Country_data_Bahamas"] = 9900,
["Country_data_Bahrain"] = 12000,
["Country_data_Bangladesh"] = 19000,
["Country_data_Barbados"] = 8200,
["Country_data_Belarus"] = 44000,
["Country_data_Belgium"] = 90000,
["Country_data_Belize"] = 5300,
["Country_data_Benin"] = 7600,
["Country_data_Bermuda"] = 5900,
["Country_data_Bhutan"] = 4800,
["Country_data_Bolivia"] = 15000,
["Country_data_Bosnia_and_Herzegovina"] = 29000,
["Country_data_Botswana"] = 9400,
["Country_data_Brazil"] = 103000,
["Country_data_British_Columbia"] = 3500,
["Country_data_British_Raj"] = 2300,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6400,
["Country_data_Bulgaria"] = 53000,
["Country_data_Burkina_Faso"] = 10000,
["Country_data_Burma"] = 2700,
["Country_data_Burundi"] = 6300,
["Country_data_CAM"] = 2200,
["Country_data_CAN"] = 60000,
["Country_data_CGO"] = 2600,
["Country_data_CHE"] = 4900,
["Country_data_CHI"] = 18000,
["Country_data_CHL"] = 2100,
["Country_data_CHN"] = 43000,
["Country_data_CIV"] = 8400,
["Country_data_CMR"] = 9000,
["Country_data_COD"] = 3300,
["Country_data_COL"] = 26000,
["Country_data_CPV"] = 2100,
["Country_data_CRC"] = 6700,
["Country_data_CRO"] = 34000,
["Country_data_CUB"] = 10000,
["Country_data_CYP"] = 9400,
["Country_data_CZE"] = 47000,
["Country_data_California"] = 6000,
["Country_data_Cambodia"] = 9100,
["Country_data_Cameroon"] = 18000,
["Country_data_Canada"] = 124000,
["Country_data_Cape_Verde"] = 6500,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3100,
["Country_data_Cayman_Islands"] = 4200,
["Country_data_Central_African_Republic"] = 5200,
["Country_data_Chad"] = 5600,
["Country_data_Chile"] = 41000,
["Country_data_China"] = 85000,
["Country_data_Chinese_Taipei"] = 20000,
["Country_data_Colombia"] = 47000,
["Country_data_Colorado"] = 5700,
["Country_data_Comoros"] = 4500,
["Country_data_Confederate_States_of_America"] = 3000,
["Country_data_Connecticut"] = 3200,
["Country_data_Cook_Islands"] = 3900,
["Country_data_Costa_Rica"] = 18000,
["Country_data_Croatia"] = 58000,
["Country_data_Cuba"] = 23000,
["Country_data_Curaçao"] = 3600,
["Country_data_Cyprus"] = 23000,
["Country_data_Czech_Republic"] = 83000,
["Country_data_Czechoslovakia"] = 19000,
["Country_data_DEN"] = 35000,
["Country_data_DEU"] = 8900,
["Country_data_DNK"] = 3700,
["Country_data_DOM"] = 7500,
["Country_data_DRC"] = 2100,
["Country_data_Democratic_Republic_of_the_Congo"] = 13000,
["Country_data_Denmark"] = 70000,
["Country_data_Djibouti"] = 4700,
["Country_data_Dominica"] = 4300,
["Country_data_Dominican_Republic"] = 18000,
["Country_data_ECU"] = 12000,
["Country_data_EGY"] = 14000,
["Country_data_ENG"] = 48000,
["Country_data_ESA"] = 2300,
["Country_data_ESP"] = 74000,
["Country_data_EST"] = 15000,
["Country_data_ETH"] = 3700,
["Country_data_EU"] = 3700,
["Country_data_East_Germany"] = 15000,
["Country_data_East_Timor"] = 5100,
["Country_data_Ecuador"] = 25000,
["Country_data_Egypt"] = 32000,
["Country_data_El_Salvador"] = 13000,
["Country_data_Empire_of_Japan"] = 4000,
["Country_data_England"] = 98000,
["Country_data_Equatorial_Guinea"] = 5300,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 35000,
["Country_data_Eswatini"] = 5100,
["Country_data_Ethiopia"] = 13000,
["Country_data_Europe"] = 2400,
["Country_data_European_Union"] = 7400,
["Country_data_FIJ"] = 3900,
["Country_data_FIN"] = 35000,
["Country_data_FRA"] = 100000,
["Country_data_FRG"] = 15000,
["Country_data_FRO"] = 2100,
["Country_data_FR_Yugoslavia"] = 4000,
["Country_data_Faroe_Islands"] = 5500,
["Country_data_Federated_States_of_Micronesia"] = 3100,
["Country_data_Fiji"] = 12000,
["Country_data_Finland"] = 70000,
["Country_data_Florida"] = 6600,
["Country_data_France"] = 195000,
["Country_data_French_Guiana"] = 2200,
["Country_data_French_Polynesia"] = 3900,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2100,
["Country_data_GBR"] = 56000,
["Country_data_GDR"] = 8600,
["Country_data_GEO"] = 14000,
["Country_data_GER"] = 84000,
["Country_data_GHA"] = 10000,
["Country_data_GRE"] = 26000,
["Country_data_GUA"] = 5100,
["Country_data_GUI"] = 3300,
["Country_data_GUY"] = 2300,
["Country_data_Gabon"] = 7700,
["Country_data_Gambia"] = 7000,
["Country_data_Georgia"] = 11000,
["Country_data_Georgia_(U.S._state)"] = 2800,
["Country_data_Georgia_(country)"] = 29000,
["Country_data_German_Empire"] = 5400,
["Country_data_Germany"] = 153000,
["Country_data_Ghana"] = 24000,
["Country_data_Gibraltar"] = 5000,
["Country_data_Great_Britain"] = 75000,
["Country_data_Greece"] = 58000,
["Country_data_Greenland"] = 2900,
["Country_data_Grenada"] = 5400,
["Country_data_Guadeloupe"] = 2900,
["Country_data_Guam"] = 4900,
["Country_data_Guatemala"] = 13000,
["Country_data_Guernsey"] = 2200,
["Country_data_Guinea"] = 8600,
["Country_data_Guinea-Bissau"] = 5200,
["Country_data_Guyana"] = 7500,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 13000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 38000,
["Country_data_Haiti"] = 9000,
["Country_data_Honduras"] = 12000,
["Country_data_Hong_Kong"] = 27000,
["Country_data_Hungary"] = 71000,
["Country_data_IDN"] = 5100,
["Country_data_INA"] = 11000,
["Country_data_IND"] = 31000,
["Country_data_IRE"] = 11000,
["Country_data_IRI"] = 5700,
["Country_data_IRL"] = 22000,
["Country_data_IRN"] = 6500,
["Country_data_IRQ"] = 4400,
["Country_data_ISL"] = 8800,
["Country_data_ISR"] = 21000,
["Country_data_ITA"] = 88000,
["Country_data_Iceland"] = 23000,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 111000,
["Country_data_Indiana"] = 2700,
["Country_data_Indonesia"] = 37000,
["Country_data_Iowa"] = 2900,
["Country_data_Iran"] = 92000,
["Country_data_Iraq"] = 14000,
["Country_data_Ireland"] = 35000,
["Country_data_Isle_of_Man"] = 2900,
["Country_data_Israel"] = 47000,
["Country_data_Italy"] = 147000,
["Country_data_Ivory_Coast"] = 18000,
["Country_data_JAM"] = 10000,
["Country_data_JOR"] = 4200,
["Country_data_JP"] = 8200,
["Country_data_JPN"] = 61000,
["Country_data_Jamaica"] = 22000,
["Country_data_Japan"] = 121000,
["Country_data_Jersey"] = 2600,
["Country_data_Jordan"] = 12000,
["Country_data_KAZ"] = 20000,
["Country_data_KEN"] = 7700,
["Country_data_KGZ"] = 4000,
["Country_data_KOR"] = 32000,
["Country_data_KOS"] = 2600,
["Country_data_KSA"] = 6300,
["Country_data_KUW"] = 4300,
["Country_data_Kazakhstan"] = 34000,
["Country_data_Kenya"] = 20000,
["Country_data_Kingdom_of_France"] = 2200,
["Country_data_Kingdom_of_Great_Britain"] = 4800,
["Country_data_Kingdom_of_Italy"] = 4200,
["Country_data_Kiribati"] = 3000,
["Country_data_Kosovo"] = 9200,
["Country_data_Kuwait"] = 12000,
["Country_data_Kyrgyzstan"] = 9600,
["Country_data_LAT"] = 15000,
["Country_data_LBN"] = 2500,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3300,
["Country_data_LIT"] = 3200,
["Country_data_LTU"] = 13000,
["Country_data_LUX"] = 11000,
["Country_data_LVA"] = 2600,
["Country_data_Laos"] = 7600,
["Country_data_Latvia"] = 33000,
["Country_data_Lebanon"] = 15000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7400,
["Country_data_Libya"] = 8900,
["Country_data_Liechtenstein"] = 8000,
["Country_data_Lithuania"] = 32000,
["Country_data_Luxembourg"] = 24000,
["Country_data_MAC"] = 2500,
["Country_data_MAD"] = 2100,
["Country_data_MAR"] = 13000,
["Country_data_MAS"] = 11000,
["Country_data_MDA"] = 7900,
["Country_data_MEX"] = 31000,
["Country_data_MGL"] = 3100,
["Country_data_MKD"] = 7800,
["Country_data_MLI"] = 4600,
["Country_data_MLT"] = 5800,
["Country_data_MNE"] = 8100,
["Country_data_MON"] = 3900,
["Country_data_MOZ"] = 2300,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3200,
["Country_data_MYS"] = 3800,
["Country_data_Macau"] = 6500,
["Country_data_Macedonia"] = 4900,
["Country_data_Madagascar"] = 9300,
["Country_data_Malawi"] = 5800,
["Country_data_Malaysia"] = 37000,
["Country_data_Maldives"] = 6400,
["Country_data_Mali"] = 13000,
["Country_data_Malta"] = 17000,
["Country_data_Manitoba"] = 2600,
["Country_data_Marshall_Islands"] = 3800,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3000,
["Country_data_Massachusetts"] = 3000,
["Country_data_Mauritania"] = 5900,
["Country_data_Mauritius"] = 8300,
["Country_data_Mexico"] = 68000,
["Country_data_Michigan"] = 4400,
["Country_data_Minnesota"] = 3800,
["Country_data_Missouri"] = 2000,
["Country_data_Moldova"] = 20000,
["Country_data_Monaco"] = 10000,
["Country_data_Mongolia"] = 10000,
["Country_data_Montana"] = 2100,
["Country_data_Montenegro"] = 19000,
["Country_data_Montserrat"] = 2500,
["Country_data_Morocco"] = 28000,
["Country_data_Mozambique"] = 7500,
["Country_data_Myanmar"] = 14000,
["Country_data_NAM"] = 3600,
["Country_data_NED"] = 62000,
["Country_data_NEP"] = 3000,
["Country_data_NGA"] = 8400,
["Country_data_NGR"] = 8300,
["Country_data_NIR"] = 10000,
["Country_data_NLD"] = 6300,
["Country_data_NOR"] = 31000,
["Country_data_NZ"] = 3200,
["Country_data_NZL"] = 33000,
["Country_data_Namibia"] = 10000,
["Country_data_Nauru"] = 2600,
["Country_data_Nazi_Germany"] = 9900,
["Country_data_Nepal"] = 17000,
["Country_data_Netherlands"] = 115000,
["Country_data_Netherlands_Antilles"] = 2300,
["Country_data_New_Brunswick"] = 2500,
["Country_data_New_Caledonia"] = 3400,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 5800,
["Country_data_New_York"] = 4900,
["Country_data_New_York_(state)"] = 7000,
["Country_data_New_Zealand"] = 68000,
["Country_data_Newfoundland_and_Labrador"] = 2300,
["Country_data_Nicaragua"] = 8500,
["Country_data_Niger"] = 6100,
["Country_data_Nigeria"] = 33000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 14000,
["Country_data_North_Macedonia"] = 18000,
["Country_data_Northern_Ireland"] = 16000,
["Country_data_Northern_Mariana_Islands"] = 2900,
["Country_data_Norway"] = 74000,
["Country_data_Nova_Scotia"] = 2400,
["Country_data_OMA"] = 2900,
["Country_data_Ohio"] = 4800,
["Country_data_Oman"] = 9000,
["Country_data_Ontario"] = 3800,
["Country_data_Ottoman_Empire"] = 2500,
["Country_data_PAK"] = 8200,
["Country_data_PAN"] = 5900,
["Country_data_PAR"] = 10000,
["Country_data_PER"] = 13000,
["Country_data_PHI"] = 12000,
["Country_data_PHL"] = 2600,
["Country_data_PNG"] = 2700,
["Country_data_POL"] = 51000,
["Country_data_POR"] = 32000,
["Country_data_PRC"] = 2200,
["Country_data_PRK"] = 4700,
["Country_data_PRT"] = 2900,
["Country_data_PUR"] = 7400,
["Country_data_Pakistan"] = 29000,
["Country_data_Palau"] = 3100,
["Country_data_Palestine"] = 6900,
["Country_data_Panama"] = 16000,
["Country_data_Papua_New_Guinea"] = 8100,
["Country_data_Paraguay"] = 21000,
["Country_data_Pennsylvania"] = 3700,
["Country_data_People's_Republic_of_China"] = 3200,
["Country_data_Peru"] = 31000,
["Country_data_Philippines"] = 35000,
["Country_data_Poland"] = 152000,
["Country_data_Portugal"] = 69000,
["Country_data_Prussia"] = 2600,
["Country_data_Puerto_Rico"] = 18000,
["Country_data_QAT"] = 8100,
["Country_data_Qatar"] = 18000,
["Country_data_Quebec"] = 4200,
["Country_data_ROM"] = 13000,
["Country_data_ROU"] = 27000,
["Country_data_RSA"] = 32000,
["Country_data_RUS"] = 63000,
["Country_data_RWA"] = 2100,
["Country_data_Republic_of_China"] = 5700,
["Country_data_Republic_of_Ireland"] = 26000,
["Country_data_Republic_of_the_Congo"] = 7900,
["Country_data_Romania"] = 69000,
["Country_data_Russia"] = 116000,
["Country_data_Russian_Empire"] = 4900,
["Country_data_Rwanda"] = 7800,
["Country_data_SAM"] = 3200,
["Country_data_SCG"] = 3100,
["Country_data_SCO"] = 27000,
["Country_data_SEN"] = 8200,
["Country_data_SER"] = 3600,
["Country_data_SGP"] = 3000,
["Country_data_SIN"] = 7100,
["Country_data_SLO"] = 20000,
["Country_data_SLV"] = 3100,
["Country_data_SMR"] = 3200,
["Country_data_SPA"] = 5000,
["Country_data_SRB"] = 27000,
["Country_data_SRI"] = 4800,
["Country_data_SUI"] = 43000,
["Country_data_SUR"] = 2100,
["Country_data_SVK"] = 29000,
["Country_data_SVN"] = 6800,
["Country_data_SWE"] = 58000,
["Country_data_SWI"] = 4900,
["Country_data_SYR"] = 3700,
["Country_data_Saint_Kitts_and_Nevis"] = 4900,
["Country_data_Saint_Lucia"] = 5100,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000,
["Country_data_Samoa"] = 7800,
["Country_data_San_Marino"] = 8600,
["Country_data_Saskatchewan"] = 2900,
["Country_data_Saudi_Arabia"] = 20000,
["Country_data_Scotland"] = 52000,
["Country_data_Senegal"] = 18000,
["Country_data_Serbia"] = 55000,
["Country_data_Serbia_and_Montenegro"] = 5100,
["Country_data_Seychelles"] = 5600,
["Country_data_Sierra_Leone"] = 7500,
["Country_data_Singapore"] = 27000,
["Country_data_Slovakia"] = 51000,
["Country_data_Slovenia"] = 43000,
["Country_data_Solomon_Islands"] = 4800,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 71000,
["Country_data_South_Carolina"] = 3200,
["Country_data_South_Korea"] = 67000,
["Country_data_South_Sudan"] = 4300,
["Country_data_Soviet_Union"] = 37000,
["Country_data_Spain"] = 135000,
["Country_data_Sri_Lanka"] = 19000,
["Country_data_Sudan"] = 8300,
["Country_data_Suriname"] = 6600,
["Country_data_Sweden"] = 102000,
["Country_data_Switzerland"] = 84000,
["Country_data_Syria"] = 16000,
["Country_data_São_Tomé_and_Príncipe"] = 3400,
["Country_data_TAN"] = 2700,
["Country_data_TCH"] = 11000,
["Country_data_THA"] = 22000,
["Country_data_TJK"] = 2800,
["Country_data_TKM"] = 2900,
["Country_data_TOG"] = 2100,
["Country_data_TPE"] = 16000,
["Country_data_TRI"] = 4800,
["Country_data_TTO"] = 2000,
["Country_data_TUN"] = 11000,
["Country_data_TUR"] = 29000,
["Country_data_Taiwan"] = 13000,
["Country_data_Tajikistan"] = 9200,
["Country_data_Tanzania"] = 13000,
["Country_data_Texas"] = 5300,
["Country_data_Thailand"] = 45000,
["Country_data_Togo"] = 7200,
["Country_data_Tonga"] = 6500,
["Country_data_Trinidad_and_Tobago"] = 14000,
["Country_data_Tunisia"] = 23000,
["Country_data_Turkey"] = 72000,
["Country_data_Turkmenistan"] = 8100,
["Country_data_Turks_and_Caicos_Islands"] = 2800,
["Country_data_Tuvalu"] = 2900,
["Country_data_U.S."] = 2100,
["Country_data_U.S._Virgin_Islands"] = 4900,
["Country_data_UAE"] = 9500,
["Country_data_UGA"] = 4300,
["Country_data_UK"] = 19000,
["Country_data_UKGBI"] = 3100,
["Country_data_UKR"] = 38000,
["Country_data_URS"] = 15000,
["Country_data_URU"] = 15000,
["Country_data_US"] = 4900,
["Country_data_USA"] = 135000,
["Country_data_USSR"] = 4500,
["Country_data_UZB"] = 12000,
["Country_data_Uganda"] = 13000,
["Country_data_Ukraine"] = 75000,
["Country_data_United_Arab_Emirates"] = 20000,
["Country_data_United_Kingdom"] = 89000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4500,
["Country_data_United_Nations"] = 4100,
["Country_data_United_States"] = 285000,
["Country_data_United_States_of_America"] = 4900,
["Country_data_Uruguay"] = 30000,
["Country_data_Uzbekistan"] = 21000,
["Country_data_VEN"] = 17000,
["Country_data_VIE"] = 6600,
["Country_data_Vanuatu"] = 5200,
["Country_data_Vatican_City"] = 2400,
["Country_data_Venezuela"] = 34000,
["Country_data_Vietnam"] = 24000,
["Country_data_Virginia"] = 2900,
["Country_data_WAL"] = 18000,
["Country_data_Wales"] = 34000,
["Country_data_Washington"] = 3400,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3600,
["Country_data_West_Germany"] = 24000,
["Country_data_West_Indies"] = 2600,
["Country_data_Wisconsin"] = 5200,
["Country_data_YUG"] = 9900,
["Country_data_Yemen"] = 7900,
["Country_data_Yugoslavia"] = 18000,
["Country_data_ZAF"] = 4800,
["Country_data_ZAM"] = 3400,
["Country_data_ZIM"] = 8400,
["Country_data_Zambia"] = 9900,
["Country_data_Zimbabwe"] = 18000,
["Country_flagbio"] = 28000,
["Country_name"] = 23000,
["Country_showdata"] = 6200,
["Country_topics"] = 22000,
["County"] = 7900,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 6400,
["Course_instructor"] = 2500,
["Cquote"] = 37000,
["Cr"] = 4300,
["Cr-rt"] = 2100,
["Create_taxonomy/link"] = 109000,
["Cref2"] = 2300,
["Cricinfo"] = 24000,
["Cricketarchive"] = 3100,
["Croatian_Census_2021"] = 3600,
["Cross"] = 3100,
["Crossreference"] = 2600,
["Crossreference/styles.css"] = 2600,
["Csv"] = 3000,
["Ct"] = 12000,
["Curlie"] = 6800,
["Currency"] = 3700,
["Current_events"] = 8300,
["Current_events/styles.css"] = 8300,
["Currentdate"] = 23000,
["Cvt"] = 106000,
["Cycling_Archives"] = 4300,
["Cycling_archives"] = 2400,
["Cycling_data_LTD"] = 2100,
["Cycling_data_MOV_men"] = 2000,
["Cycling_data_TJV"] = 2100,
["Cycling_team_link"] = 12000,
["Module:CFB_schedule"] = 26000,
["Module:CallAssert"] = 247000,
["Module:CanadaByProvinceCatNav"] = 8400,
["Module:Cat_main"] = 201000,
["Module:Catalog_lookup_link"] = 518000,
["Module:Category_described_in_year"] = 5700,
["Module:Category_described_in_year/conf"] = 5700,
["Module:Category_handler"] = 4560000,
["Module:Category_handler/blacklist"] = 4560000,
["Module:Category_handler/config"] = 4560000,
["Module:Category_handler/data"] = 4560000,
["Module:Category_handler/shared"] = 4560000,
["Module:Category_more_if_exists"] = 40000,
["Module:Category_pair"] = 6300,
["Module:Category_see_also"] = 40000,
["Module:Category_series_navigation"] = 486000,
["Module:Celestial_object_quadrangle"] = 2300,
["Module:Check_DYK_hook"] = 115000,
["Module:Check_for_clobbered_parameters"] = 1240000,
["Module:Check_for_deprecated_parameters"] = 63000,
["Module:Check_for_unknown_parameters"] = 19700000,
["Module:Check_isxn"] = 482000,
["Module:Check_winner_by_scores"] = 13000,
["Module:Checkuser"] = 77000,
["Module:Chem2"] = 5200,
["Module:Chem2/styles.css"] = 5200,
["Module:Citation/CS1"] = 5650000,
["Module:Citation/CS1/COinS"] = 5650000,
["Module:Citation/CS1/Configuration"] = 5650000,
["Module:Citation/CS1/Date_validation"] = 5650000,
["Module:Citation/CS1/Identifiers"] = 5650000,
["Module:Citation/CS1/Suggestions"] = 25000,
["Module:Citation/CS1/Utilities"] = 5650000,
["Module:Citation/CS1/Whitelist"] = 5650000,
["Module:Citation/CS1/styles.css"] = 5790000,
["Module:Cite_IUCN"] = 58000,
["Module:Cite_Q"] = 48000,
["Module:Cite_tweet"] = 37000,
["Module:Cite_web"] = 41000,
["Module:Clade"] = 7800,
["Module:Class"] = 10300000,
["Module:Class/definition.json"] = 10300000,
["Module:Class/styles.css"] = 9400000,
["Module:Class_mask"] = 10600000,
["Module:Clickable_button_2"] = 974000,
["Module:Collapsible_list"] = 54000,
["Module:College_color"] = 129000,
["Module:College_color/data"] = 129000,
["Module:Color_contrast"] = 505000,
["Module:Color_contrast/colors"] = 508000,
["Module:Commons_link"] = 260000,
["Module:Complex_date"] = 66000,
["Module:Convert"] = 1250000,
["Module:Convert/data"] = 1250000,
["Module:Convert/helper"] = 8800,
["Module:Convert/text"] = 1250000,
["Module:Convert/wikidata"] = 3300,
["Module:Convert/wikidata/data"] = 3300,
["Module:ConvertNumeric"] = 15000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1340000,
["Module:Coordinates/styles.css"] = 1340000,
["Module:Copied"] = 19000,
["Module:CountryAdjectiveDemonym"] = 45000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 45000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 45000,
["Module:CountryAdjectiveDemonym/The"] = 45000,
["Module:CountryData"] = 143000,
["Module:CountryData/cacheA"] = 12000,
["Module:CountryData/cacheB"] = 8400,
["Module:CountryData/cacheC"] = 12000,
["Module:CountryData/cacheD"] = 4600,
["Module:CountryData/cacheE"] = 2800,
["Module:CountryData/cacheF"] = 2700,
["Module:CountryData/cacheG"] = 2700,
["Module:CountryData/summary"] = 143000,
["Module:Country_adjective"] = 4400,
["Module:Country_alias"] = 53000,
["Module:Country_alias/data"] = 53000,
["Module:Currency"] = 3700,
["Module:Currency/Presentation"] = 3700,
}
d1b95c4fa4b55f69795be7c6bde731f2d8bdb767
3052
3051
2023-11-09T17:59:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/C]]
Scribunto
text/plain
return {
["C"] = 660000,
["C-Class"] = 17000,
["C-SPAN"] = 13000,
["C-cmn"] = 2300,
["C-pl"] = 51000,
["C."] = 4300,
["CAN"] = 20000,
["CANelec"] = 14000,
["CANelec/gain"] = 2600,
["CANelec/hold"] = 4900,
["CANelec/source"] = 7100,
["CANelec/top"] = 6500,
["CANelec/total"] = 6600,
["CAS"] = 3800,
["CBB_Standings_End"] = 15000,
["CBB_Standings_Entry"] = 14000,
["CBB_Standings_Start"] = 14000,
["CBB_Yearly_Record_End"] = 3100,
["CBB_Yearly_Record_Entry"] = 3100,
["CBB_Yearly_Record_Start"] = 3000,
["CBB_Yearly_Record_Subhead"] = 3700,
["CBB_Yearly_Record_Subtotal"] = 2900,
["CBB_roster/Footer"] = 8200,
["CBB_roster/Header"] = 8200,
["CBB_roster/Player"] = 8200,
["CBB_schedule_end"] = 11000,
["CBB_schedule_entry"] = 11000,
["CBB_schedule_start"] = 11000,
["CBB_standings_end"] = 16000,
["CBB_standings_entry"] = 16000,
["CBB_standings_start"] = 16000,
["CBB_yearly_record_end"] = 4100,
["CBB_yearly_record_end/legend"] = 3700,
["CBB_yearly_record_entry"] = 4100,
["CBB_yearly_record_start"] = 4000,
["CBB_yearly_record_subhead"] = 3800,
["CBB_yearly_record_subtotal"] = 3800,
["CBSB_Standings_End"] = 4300,
["CBSB_Standings_Entry"] = 4300,
["CBSB_Standings_Start"] = 4300,
["CBSB_link"] = 3500,
["CBSB_standings_end"] = 4400,
["CBSB_standings_entry"] = 4500,
["CBSB_standings_start"] = 4500,
["CC0"] = 3800,
["CENTURY"] = 16000,
["CFB_Standings_End"] = 34000,
["CFB_Standings_Entry"] = 34000,
["CFB_Standings_Start"] = 34000,
["CFB_Yearly_Record_End"] = 6900,
["CFB_Yearly_Record_End/legend"] = 2400,
["CFB_Yearly_Record_Entry"] = 6900,
["CFB_Yearly_Record_Start"] = 6900,
["CFB_Yearly_Record_Subhead"] = 6900,
["CFB_Yearly_Record_Subtotal"] = 6800,
["CFB_schedule"] = 26000,
["CFB_schedule_entry"] = 19000,
["CFB_standings_end"] = 34000,
["CFB_standings_entry"] = 34000,
["CFB_standings_start"] = 34000,
["CFL_Year"] = 5700,
["CGF_year"] = 2600,
["CHE"] = 10000,
["CHI"] = 2800,
["CHL"] = 3700,
["CHN"] = 11000,
["CN"] = 3500,
["CO2"] = 3300,
["COI"] = 14000,
["COIUL"] = 130000,
["COI_editnotice"] = 6700,
["COL"] = 5000,
["COLON"] = 13000,
["CRI"] = 2200,
["CRO"] = 5600,
["CSK"] = 2800,
["CSS_image_crop"] = 4700,
["CUB"] = 3800,
["CURRENTDATE"] = 3600,
["CURRENTMINUTE"] = 2500,
["CYP"] = 2100,
["CZE"] = 15000,
["Calendar"] = 2400,
["California/color"] = 12000,
["Call_sign_disambiguation"] = 3100,
["Campaignbox"] = 23000,
["CanProvName"] = 14000,
["CanadaByProvinceCatNav"] = 8400,
["CanadaProvinceThe"] = 4000,
["Canadian_English"] = 7100,
["Canadian_Parliament_links"] = 5100,
["Canadian_election_result"] = 14000,
["Canadian_election_result/gain"] = 2700,
["Canadian_election_result/hold"] = 5000,
["Canadian_election_result/source"] = 8200,
["Canadian_election_result/top"] = 14000,
["Canadian_election_result/total"] = 11000,
["Canadian_party_colour"] = 8300,
["Canadian_party_colour/colour"] = 18000,
["Canadian_party_colour/colour/default"] = 18000,
["Canadian_party_colour/name"] = 15000,
["Canadian_party_colour/name/default"] = 6900,
["Canned_search"] = 5900,
["Cascite"] = 15000,
["Caselaw_source"] = 4000,
["Cassini-Ehess"] = 2900,
["Cast_listing"] = 16000,
["Castlist"] = 2600,
["Cat"] = 360000,
["CatAutoTOC"] = 664000,
["CatAutoTOC/core"] = 663000,
["CatRel"] = 3800,
["CatTrack"] = 3100,
["Cat_class"] = 6900,
["Cat_in_use"] = 50000,
["Cat_main"] = 201000,
["Cat_more"] = 102000,
["Cat_more_if_exists"] = 40000,
["Cat_see_also"] = 3600,
["Catalog_lookup_link"] = 518000,
["Category-Class"] = 14000,
["Category-inline"] = 8700,
["Category_TOC"] = 72000,
["Category_TOC/tracking"] = 72000,
["Category_U.S._State_elections_by_year"] = 7300,
["Category_U.S._State_elections_by_year/core"] = 7300,
["Category_class"] = 36000,
["Category_class/column"] = 36000,
["Category_class/second_row_column"] = 36000,
["Category_described_in_year"] = 5700,
["Category_diffuse"] = 7900,
["Category_disambiguation"] = 2400,
["Category_disambiguation/category_link"] = 2400,
["Category_explanation"] = 276000,
["Category_handler"] = 3330000,
["Category_ifexist"] = 5100,
["Category_importance"] = 10000,
["Category_importance/column"] = 10000,
["Category_importance/second_row_column"] = 10000,
["Category_link"] = 137000,
["Category_link_with_count"] = 7000,
["Category_more"] = 112000,
["Category_more_if_exists"] = 40000,
["Category_ordered_by_date"] = 11000,
["Category_other"] = 910000,
["Category_redirect"] = 109000,
["Category_see_also"] = 40000,
["Category_see_also/Category_pair_check"] = 40000,
["Category_see_also_if_exists"] = 73000,
["Category_see_also_if_exists_2"] = 89000,
["Category_series_navigation"] = 486000,
["Category_title"] = 2400,
["Catexp"] = 8000,
["CathEncy"] = 2300,
["Catholic"] = 4000,
["Catholic_Encyclopedia"] = 5100,
["Catmain"] = 28000,
["Catmore"] = 9400,
["Cbb_link"] = 8800,
["Cbignore"] = 100000,
["Cbsb_link"] = 2100,
["Cc-by-2.5"] = 3700,
["Cc-by-3.0"] = 8400,
["Cc-by-sa-2.5"] = 2500,
["Cc-by-sa-2.5,2.0,1.0"] = 2600,
["Cc-by-sa-3.0"] = 25000,
["Cc-by-sa-3.0,2.5,2.0,1.0"] = 2200,
["Cc-by-sa-3.0-migrated"] = 23000,
["Cc-by-sa-4.0"] = 10000,
["Cc-zero"] = 3700,
["CensusAU"] = 9100,
["Census_2016_AUS"] = 6800,
["Cent"] = 5800,
["Center"] = 291000,
["Centralized_discussion"] = 6200,
["Centralized_discussion/core"] = 6200,
["Centralized_discussion/styles.css"] = 6200,
["Centre"] = 3300,
["Century"] = 2100,
["Century_name_from_decade"] = 2400,
["Century_name_from_decade_or_year"] = 89000,
["Century_name_from_title_decade"] = 7700,
["Century_name_from_title_year"] = 7600,
["Certification_Cite/Title"] = 31000,
["Certification_Cite/URL"] = 34000,
["Certification_Cite/archivedate"] = 6100,
["Certification_Cite/archiveurl"] = 6100,
["Certification_Cite_Ref"] = 30000,
["Certification_Table_Bottom"] = 30000,
["Certification_Table_Entry"] = 31000,
["Certification_Table_Entry/Foot"] = 29000,
["Certification_Table_Entry/Foot/helper"] = 29000,
["Certification_Table_Entry/Region"] = 30000,
["Certification_Table_Entry/Sales"] = 29000,
["Certification_Table_Entry/Sales/AustrianPeriod"] = 2000,
["Certification_Table_Entry/Sales/BelgianPeriod"] = 2100,
["Certification_Table_Entry/Sales/DanishPeriod"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper1"] = 3300,
["Certification_Table_Entry/Sales/DanishPeriodHelper2"] = 3300,
["Certification_Table_Entry/Sales/GermanPeriod"] = 4000,
["Certification_Table_Entry/Sales/ItalianHelper"] = 3300,
["Certification_Table_Entry/Sales/NewZealandPeriod"] = 2100,
["Certification_Table_Entry/Sales/SwedishPeriod"] = 2100,
["Certification_Table_Separator"] = 2400,
["Certification_Table_Top"] = 31000,
["Cfb_link"] = 24000,
["Cfd_result"] = 2400,
["Cfdend"] = 4000,
["Chart"] = 4600,
["Chart/end"] = 4700,
["Chart/start"] = 4700,
["Chart_bottom"] = 3600,
["Chart_top"] = 3600,
["Check_completeness_of_transclusions"] = 40000,
["Check_talk"] = 31000,
["Check_talk_wp"] = 1420000,
["Check_winner_by_scores"] = 13000,
["CheckedSockpuppet"] = 7200,
["Checked_sockpuppet"] = 18000,
["Checkedsockpuppet"] = 5300,
["Checkip"] = 13000,
["Checkuser"] = 76000,
["Checkuserblock-account"] = 19000,
["Chem"] = 5800,
["Chem/atom"] = 5800,
["Chem/link"] = 5800,
["Chem2"] = 5200,
["Chem_molar_mass"] = 18000,
["Chem_molar_mass/format"] = 18000,
["Chembox"] = 14000,
["Chembox/styles.css"] = 14000,
["Chembox_3DMet"] = 14000,
["Chembox_3DMet/format"] = 14000,
["Chembox_AllOtherNames"] = 13000,
["Chembox_AllOtherNames/format"] = 13000,
["Chembox_Appearance"] = 6200,
["Chembox_BoilingPt"] = 3800,
["Chembox_CASNo"] = 14000,
["Chembox_CASNo/format"] = 14000,
["Chembox_CalcTemperatures"] = 6700,
["Chembox_ChEBI"] = 14000,
["Chembox_ChEBI/format"] = 14000,
["Chembox_ChEMBL"] = 14000,
["Chembox_ChEMBL/format"] = 14000,
["Chembox_ChemSpiderID"] = 14000,
["Chembox_ChemSpiderID/format"] = 14000,
["Chembox_CompTox"] = 14000,
["Chembox_CompTox/format"] = 14000,
["Chembox_Datapage_check"] = 14000,
["Chembox_Density"] = 4900,
["Chembox_DrugBank"] = 14000,
["Chembox_DrugBank/format"] = 14000,
["Chembox_ECHA"] = 7600,
["Chembox_ECNumber"] = 14000,
["Chembox_ECNumber/format"] = 14000,
["Chembox_Elements"] = 14000,
["Chembox_Elements/molecular_formula"] = 18000,
["Chembox_Footer"] = 14000,
["Chembox_Footer/tracking"] = 14000,
["Chembox_GHS_(set)"] = 3500,
["Chembox_Hazards"] = 12000,
["Chembox_IUPHAR_ligand"] = 14000,
["Chembox_IUPHAR_ligand/format"] = 14000,
["Chembox_Identifiers"] = 14000,
["Chembox_InChI"] = 13000,
["Chembox_InChI/format"] = 13000,
["Chembox_Indexlist"] = 14000,
["Chembox_Jmol"] = 14000,
["Chembox_Jmol/format"] = 14000,
["Chembox_KEGG"] = 14000,
["Chembox_KEGG/format"] = 14000,
["Chembox_MeltingPt"] = 5900,
["Chembox_Properties"] = 14000,
["Chembox_PubChem"] = 14000,
["Chembox_PubChem/format"] = 14000,
["Chembox_RTECS"] = 14000,
["Chembox_RTECS/format"] = 14000,
["Chembox_Related"] = 3400,
["Chembox_SMILES"] = 13000,
["Chembox_SMILES/format"] = 13000,
["Chembox_SolubilityInWater"] = 3900,
["Chembox_Structure"] = 2100,
["Chembox_UNII"] = 14000,
["Chembox_UNII/format"] = 14000,
["Chembox_headerbar"] = 14000,
["Chembox_image"] = 13000,
["Chembox_image_cell"] = 12000,
["Chembox_image_sbs"] = 13000,
["Chembox_parametercheck"] = 13000,
["Chembox_setDatarow"] = 4500,
["Chembox_setHeader"] = 4500,
["Chembox_templatePar/formatPreviewMessage"] = 14000,
["Chembox_verification"] = 7200,
["Chemicals"] = 7300,
["Chemistry"] = 3100,
["Chemspidercite"] = 11000,
["Chessgames_player"] = 3700,
["Chinese"] = 6900,
["Chr"] = 9100,
["ChristianityWikiProject"] = 5700,
["Circa"] = 75000,
["Circular_reference"] = 4600,
["Citation"] = 414000,
["Citation/make_link"] = 6200,
["Citation/styles.css"] = 46000,
["Citation_needed"] = 551000,
["Citation_needed_span"] = 3500,
["Citation_style"] = 4200,
["Cite_AV_media"] = 43000,
["Cite_AV_media_notes"] = 26000,
["Cite_Appletons'"] = 2400,
["Cite_Australian_Dictionary_of_Biography"] = 3300,
["Cite_Catholic_Encyclopedia"] = 8300,
["Cite_Colledge2006"] = 3100,
["Cite_DCB"] = 2800,
["Cite_DNB"] = 18000,
["Cite_EB1911"] = 25000,
["Cite_GNIS"] = 2300,
["Cite_Gaia_DR2"] = 2100,
["Cite_Google_Maps"] = 15000,
["Cite_IUCN"] = 58000,
["Cite_Instagram"] = 2300,
["Cite_Jewish_Encyclopedia"] = 3000,
["Cite_NIE"] = 3600,
["Cite_NSW_Parliament"] = 3300,
["Cite_NSW_SHR"] = 2600,
["Cite_ODNB"] = 18000,
["Cite_POWO"] = 2100,
["Cite_Q"] = 48000,
["Cite_QHR"] = 3000,
["Cite_QPN"] = 4000,
["Cite_Rotten_Tomatoes"] = 2000,
["Cite_Rowlett"] = 2500,
["Cite_Russian_law"] = 7800,
["Cite_Ryan"] = 3200,
["Cite_Sports-Reference"] = 54000,
["Cite_USGov"] = 24000,
["Cite_WoRMS"] = 5500,
["Cite_act"] = 2800,
["Cite_arXiv"] = 5100,
["Cite_bcgnis"] = 3500,
["Cite_book"] = 1610000,
["Cite_certification"] = 34000,
["Cite_cgndb"] = 3400,
["Cite_comic"] = 2100,
["Cite_conference"] = 16000,
["Cite_court"] = 5400,
["Cite_court/styles.css"] = 5400,
["Cite_dictionary"] = 3500,
["Cite_encyclopedia"] = 206000,
["Cite_episode"] = 17000,
["Cite_gnis"] = 33000,
["Cite_interview"] = 7900,
["Cite_iucn"] = 58000,
["Cite_journal"] = 974000,
["Cite_magazine"] = 282000,
["Cite_map"] = 42000,
["Cite_news"] = 1540000,
["Cite_newspaper_The_Times"] = 6600,
["Cite_patent"] = 5600,
["Cite_patent/authors"] = 4600,
["Cite_patent/core"] = 5900,
["Cite_peakbagger"] = 4600,
["Cite_podcast"] = 4000,
["Cite_press_release"] = 67000,
["Cite_report"] = 37000,
["Cite_rowlett"] = 2500,
["Cite_simbad"] = 4500,
["Cite_sports-reference"] = 59000,
["Cite_thesis"] = 33000,
["Cite_tweet"] = 37000,
["Cite_video"] = 12000,
["Cite_video_game"] = 3100,
["Cite_web"] = 4620000,
["Cite_wikisource"] = 5700,
["Cite_wikisource/make_link"] = 59000,
["Civil_navigation"] = 2900,
["Cl"] = 134000,
["Clade"] = 7700,
["Clade/styles.css"] = 7800,
["Clarify"] = 41000,
["Class"] = 42000,
["Class/colour"] = 9210000,
["Class/icon"] = 21000,
["Class_mask"] = 314000,
["Class_mask/b"] = 272000,
["Classical"] = 6800,
["Classicon"] = 4800,
["Clc"] = 6100,
["Cleanup"] = 10000,
["Cleanup_bare_URLs"] = 25000,
["Cleanup_reorganize"] = 2500,
["Cleanup_rewrite"] = 6000,
["Clear"] = 3000000,
["Clear-left"] = 4100,
["Clear_left"] = 31000,
["Clear_right"] = 2600,
["Clerk-Note"] = 9900,
["Clerk_Request"] = 2100,
["Clerknote"] = 7500,
["Clickable_button"] = 17000,
["Clickable_button_2"] = 974000,
["Closed_access"] = 4700,
["Closed_rfc_top"] = 2300,
["Clr"] = 3500,
["Clubplayerscat"] = 8900,
["Cmbox"] = 425000,
["Cn"] = 95000,
["Cnote2"] = 2300,
["Cnote2_Begin"] = 2300,
["Cnote2_End"] = 2300,
["Coat_of_arms"] = 4800,
["Cob"] = 12000,
["Code"] = 53000,
["Col-1-of-2"] = 2400,
["Col-2"] = 172000,
["Col-2-of-2"] = 2300,
["Col-3"] = 10000,
["Col-4"] = 3600,
["Col-begin"] = 214000,
["Col-break"] = 212000,
["Col-end"] = 213000,
["Col-float"] = 2700,
["Col-float-break"] = 2600,
["Col-float-end"] = 2700,
["Col-float/styles.css"] = 2700,
["Col-start"] = 18000,
["Colbegin"] = 21000,
["Colend"] = 23000,
["Collapse"] = 9900,
["Collapse_bottom"] = 51000,
["Collapse_top"] = 52000,
["Collapsebottom"] = 3900,
["Collapsetop"] = 3800,
["Collapsible_list"] = 52000,
["Collapsible_option"] = 135000,
["College"] = 9100,
["CollegePrimaryHeader"] = 6200,
["CollegePrimaryStyle"] = 98000,
["CollegeSecondaryStyle"] = 3400,
["College_Athlete_Recruit_End"] = 3000,
["College_Athlete_Recruit_Entry"] = 3100,
["College_Athlete_Recruit_Start"] = 3100,
["College_athlete_recruit_end"] = 4200,
["College_athlete_recruit_entry"] = 4300,
["College_athlete_recruit_start"] = 4300,
["College_color_list"] = 3900,
["College_stripe_style"] = 2100,
["Colon"] = 18000,
["Color"] = 474000,
["Color_box"] = 74000,
["Colorbox"] = 3500,
["Colorbull"] = 4800,
["Colored_link"] = 64000,
["Colors"] = 3800,
["Colour"] = 5800,
["Colour_box"] = 2000,
["Coloured_link"] = 6900,
["Column"] = 2400,
["Column/styles.css"] = 2500,
["Columns-end"] = 2200,
["Columns-list"] = 96000,
["Columns-start"] = 2200,
["Comedy"] = 2600,
["Comic_Book_DB"] = 3500,
["Comicbookdb"] = 3500,
["Comics-replaceability"] = 2900,
["Comics_infobox_sec/creator_nat"] = 2800,
["Comics_infobox_sec/formcat"] = 3300,
["Comics_infobox_sec/genre"] = 4100,
["Comics_infobox_sec/genrecat"] = 3700,
["Comics_infobox_sec/styles.css"] = 8200,
["Comicsproj"] = 28000,
["Comma_separated_entries"] = 432000,
["Comma_separated_values"] = 49000,
["Comment"] = 5200,
["Committed_identity"] = 3000,
["Committed_identity/styles.css"] = 3000,
["Commons"] = 65000,
["Commons-inline"] = 20000,
["Commons_cat"] = 48000,
["Commons_category"] = 849000,
["Commons_category-inline"] = 150000,
["Commons_category_inline"] = 6100,
["Commonscat"] = 64000,
["Commonscat-inline"] = 17000,
["Commonscat_inline"] = 2400,
["Commonscatinline"] = 6800,
["Compact_TOC"] = 7000,
["Compact_ToC"] = 4700,
["Compare"] = 5300,
["Compare_image_with_Wikidata"] = 10000,
["Composition_bar"] = 11000,
["Confirmed"] = 17000,
["Confused"] = 2800,
["Confusing"] = 2300,
["CongBio"] = 9600,
["CongLinks"] = 4600,
["Connected_contributor"] = 18000,
["Connected_contributor_(paid)"] = 6900,
["Constellation_navbox"] = 6800,
["Container"] = 11000,
["Container_cat"] = 7600,
["Container_category"] = 43000,
["Containercat"] = 2600,
["Contains_special_characters"] = 4300,
["Contains_special_characters/core"] = 4300,
["Contains_special_characters/styles.css"] = 4300,
["Content_category"] = 7700,
["Contentious_topics/list"] = 13000,
["Contentious_topics/page_restriction_editnotice_base"] = 2700,
["Contentious_topics/page_restriction_talk_notice_base"] = 3800,
["Contentious_topics/talk_notice"] = 6300,
["Context"] = 2700,
["Continent2continental"] = 16000,
["Continent_adjective_to_noun"] = 2200,
["Controversial"] = 3300,
["Convert"] = 1180000,
["Convinfobox"] = 207000,
["Convinfobox/2"] = 17000,
["Convinfobox/3"] = 120000,
["Convinfobox/pri2"] = 64000,
["Convinfobox/prisec2"] = 3400,
["Convinfobox/prisec3"] = 26000,
["Convinfobox/sec2"] = 9300,
["Coord"] = 1340000,
["Coord_missing"] = 94000,
["Coord_missing/CheckCat"] = 93000,
["Coords"] = 7800,
["Copied"] = 19000,
["Copy_edit"] = 2700,
["Copy_to_Wikimedia_Commons"] = 107000,
["Cospar"] = 2600,
["Cot"] = 12000,
["Count"] = 673000,
["Country2continent"] = 36000,
["Country2continental"] = 2400,
["Country2nationality"] = 321000,
["CountryPrefixThe"] = 111000,
["Country_abbreviation"] = 89000,
["Country_alias"] = 16000,
["Country_at_games_navbox"] = 2700,
["Country_at_games_navbox/below"] = 2700,
["Country_data"] = 7300,
["Country_data_AFG"] = 2300,
["Country_data_ALB"] = 6900,
["Country_data_ALG"] = 9600,
["Country_data_AND"] = 3100,
["Country_data_ANG"] = 4000,
["Country_data_ARG"] = 48000,
["Country_data_ARM"] = 7600,
["Country_data_AUS"] = 77000,
["Country_data_AUT"] = 46000,
["Country_data_AZE"] = 9500,
["Country_data_Afghanistan"] = 13000,
["Country_data_Alaska"] = 2100,
["Country_data_Albania"] = 20000,
["Country_data_Alberta"] = 3700,
["Country_data_Algeria"] = 25000,
["Country_data_American_Samoa"] = 3000,
["Country_data_Andorra"] = 8200,
["Country_data_Angola"] = 12000,
["Country_data_Anguilla"] = 2500,
["Country_data_Antigua_and_Barbuda"] = 6300,
["Country_data_Apulia"] = 7900,
["Country_data_Argentina"] = 82000,
["Country_data_Arizona"] = 2300,
["Country_data_Arkansas"] = 2000,
["Country_data_Armenia"] = 22000,
["Country_data_Aruba"] = 3700,
["Country_data_Australia"] = 128000,
["Country_data_Austria"] = 79000,
["Country_data_Azerbaijan"] = 28000,
["Country_data_BAH"] = 4100,
["Country_data_BAN"] = 4100,
["Country_data_BAR"] = 2400,
["Country_data_BEL"] = 52000,
["Country_data_BER"] = 2400,
["Country_data_BHR"] = 4900,
["Country_data_BIH"] = 13000,
["Country_data_BLR"] = 24000,
["Country_data_BOL"] = 6000,
["Country_data_BOT"] = 2500,
["Country_data_BRA"] = 59000,
["Country_data_BUL"] = 26000,
["Country_data_Bahamas"] = 9900,
["Country_data_Bahrain"] = 12000,
["Country_data_Bangladesh"] = 19000,
["Country_data_Barbados"] = 8200,
["Country_data_Belarus"] = 44000,
["Country_data_Belgium"] = 90000,
["Country_data_Belize"] = 5300,
["Country_data_Benin"] = 7600,
["Country_data_Bermuda"] = 5900,
["Country_data_Bhutan"] = 4800,
["Country_data_Bolivia"] = 15000,
["Country_data_Bosnia_and_Herzegovina"] = 29000,
["Country_data_Botswana"] = 9400,
["Country_data_Brazil"] = 103000,
["Country_data_British_Columbia"] = 3500,
["Country_data_British_Raj"] = 2300,
["Country_data_British_Virgin_Islands"] = 3300,
["Country_data_Brunei"] = 6400,
["Country_data_Bulgaria"] = 53000,
["Country_data_Burkina_Faso"] = 10000,
["Country_data_Burma"] = 2700,
["Country_data_Burundi"] = 6300,
["Country_data_CAM"] = 2200,
["Country_data_CAN"] = 60000,
["Country_data_CGO"] = 2600,
["Country_data_CHE"] = 4900,
["Country_data_CHI"] = 18000,
["Country_data_CHL"] = 2100,
["Country_data_CHN"] = 43000,
["Country_data_CIV"] = 8400,
["Country_data_CMR"] = 9000,
["Country_data_COD"] = 3300,
["Country_data_COL"] = 26000,
["Country_data_CPV"] = 2100,
["Country_data_CRC"] = 6700,
["Country_data_CRO"] = 34000,
["Country_data_CUB"] = 10000,
["Country_data_CYP"] = 9400,
["Country_data_CZE"] = 47000,
["Country_data_California"] = 6000,
["Country_data_Cambodia"] = 9100,
["Country_data_Cameroon"] = 18000,
["Country_data_Canada"] = 124000,
["Country_data_Cape_Verde"] = 6500,
["Country_data_Castile_and_León"] = 2000,
["Country_data_Catalonia"] = 3100,
["Country_data_Cayman_Islands"] = 4200,
["Country_data_Central_African_Republic"] = 5200,
["Country_data_Chad"] = 5600,
["Country_data_Chile"] = 41000,
["Country_data_China"] = 85000,
["Country_data_Chinese_Taipei"] = 20000,
["Country_data_Colombia"] = 47000,
["Country_data_Colorado"] = 5700,
["Country_data_Comoros"] = 4500,
["Country_data_Confederate_States_of_America"] = 3000,
["Country_data_Connecticut"] = 3200,
["Country_data_Cook_Islands"] = 3900,
["Country_data_Costa_Rica"] = 18000,
["Country_data_Croatia"] = 58000,
["Country_data_Cuba"] = 23000,
["Country_data_Curaçao"] = 3600,
["Country_data_Cyprus"] = 23000,
["Country_data_Czech_Republic"] = 83000,
["Country_data_Czechoslovakia"] = 19000,
["Country_data_DEN"] = 35000,
["Country_data_DEU"] = 8900,
["Country_data_DNK"] = 3700,
["Country_data_DOM"] = 7500,
["Country_data_DRC"] = 2100,
["Country_data_Democratic_Republic_of_the_Congo"] = 13000,
["Country_data_Denmark"] = 70000,
["Country_data_Djibouti"] = 4700,
["Country_data_Dominica"] = 4300,
["Country_data_Dominican_Republic"] = 18000,
["Country_data_ECU"] = 12000,
["Country_data_EGY"] = 14000,
["Country_data_ENG"] = 48000,
["Country_data_ESA"] = 2300,
["Country_data_ESP"] = 74000,
["Country_data_EST"] = 15000,
["Country_data_ETH"] = 3700,
["Country_data_EU"] = 3700,
["Country_data_East_Germany"] = 15000,
["Country_data_East_Timor"] = 5100,
["Country_data_Ecuador"] = 25000,
["Country_data_Egypt"] = 32000,
["Country_data_El_Salvador"] = 13000,
["Country_data_Empire_of_Japan"] = 4000,
["Country_data_England"] = 98000,
["Country_data_Equatorial_Guinea"] = 5300,
["Country_data_Eritrea"] = 5500,
["Country_data_Estonia"] = 35000,
["Country_data_Eswatini"] = 5100,
["Country_data_Ethiopia"] = 13000,
["Country_data_Europe"] = 2400,
["Country_data_European_Union"] = 7400,
["Country_data_FIJ"] = 3900,
["Country_data_FIN"] = 35000,
["Country_data_FRA"] = 100000,
["Country_data_FRG"] = 15000,
["Country_data_FRO"] = 2100,
["Country_data_FR_Yugoslavia"] = 4000,
["Country_data_Faroe_Islands"] = 5500,
["Country_data_Federated_States_of_Micronesia"] = 3100,
["Country_data_Fiji"] = 12000,
["Country_data_Finland"] = 70000,
["Country_data_Florida"] = 6600,
["Country_data_France"] = 195000,
["Country_data_French_Guiana"] = 2200,
["Country_data_French_Polynesia"] = 3900,
["Country_data_GAB"] = 2500,
["Country_data_GAM"] = 2100,
["Country_data_GBR"] = 56000,
["Country_data_GDR"] = 8600,
["Country_data_GEO"] = 14000,
["Country_data_GER"] = 84000,
["Country_data_GHA"] = 10000,
["Country_data_GRE"] = 26000,
["Country_data_GUA"] = 5100,
["Country_data_GUI"] = 3300,
["Country_data_GUY"] = 2300,
["Country_data_Gabon"] = 7700,
["Country_data_Gambia"] = 7000,
["Country_data_Georgia"] = 11000,
["Country_data_Georgia_(U.S._state)"] = 2800,
["Country_data_Georgia_(country)"] = 29000,
["Country_data_German_Empire"] = 5400,
["Country_data_Germany"] = 153000,
["Country_data_Ghana"] = 24000,
["Country_data_Gibraltar"] = 5000,
["Country_data_Great_Britain"] = 75000,
["Country_data_Greece"] = 58000,
["Country_data_Greenland"] = 2900,
["Country_data_Grenada"] = 5400,
["Country_data_Guadeloupe"] = 2900,
["Country_data_Guam"] = 4900,
["Country_data_Guatemala"] = 13000,
["Country_data_Guernsey"] = 2200,
["Country_data_Guinea"] = 8600,
["Country_data_Guinea-Bissau"] = 5200,
["Country_data_Guyana"] = 7500,
["Country_data_HAI"] = 3300,
["Country_data_HKG"] = 13000,
["Country_data_HON"] = 4400,
["Country_data_HUN"] = 38000,
["Country_data_Haiti"] = 9000,
["Country_data_Honduras"] = 12000,
["Country_data_Hong_Kong"] = 27000,
["Country_data_Hungary"] = 71000,
["Country_data_IDN"] = 5100,
["Country_data_INA"] = 11000,
["Country_data_IND"] = 31000,
["Country_data_IRE"] = 11000,
["Country_data_IRI"] = 5700,
["Country_data_IRL"] = 22000,
["Country_data_IRN"] = 6500,
["Country_data_IRQ"] = 4400,
["Country_data_ISL"] = 8800,
["Country_data_ISR"] = 21000,
["Country_data_ITA"] = 88000,
["Country_data_Iceland"] = 23000,
["Country_data_Illinois"] = 4500,
["Country_data_India"] = 111000,
["Country_data_Indiana"] = 2700,
["Country_data_Indonesia"] = 37000,
["Country_data_Iowa"] = 2900,
["Country_data_Iran"] = 92000,
["Country_data_Iraq"] = 14000,
["Country_data_Ireland"] = 35000,
["Country_data_Isle_of_Man"] = 2900,
["Country_data_Israel"] = 47000,
["Country_data_Italy"] = 147000,
["Country_data_Ivory_Coast"] = 18000,
["Country_data_JAM"] = 10000,
["Country_data_JOR"] = 4200,
["Country_data_JP"] = 8200,
["Country_data_JPN"] = 61000,
["Country_data_Jamaica"] = 22000,
["Country_data_Japan"] = 121000,
["Country_data_Jersey"] = 2600,
["Country_data_Jordan"] = 12000,
["Country_data_KAZ"] = 20000,
["Country_data_KEN"] = 7700,
["Country_data_KGZ"] = 4000,
["Country_data_KOR"] = 32000,
["Country_data_KOS"] = 2600,
["Country_data_KSA"] = 6300,
["Country_data_KUW"] = 4300,
["Country_data_Kazakhstan"] = 34000,
["Country_data_Kenya"] = 20000,
["Country_data_Kingdom_of_France"] = 2200,
["Country_data_Kingdom_of_Great_Britain"] = 4800,
["Country_data_Kingdom_of_Italy"] = 4200,
["Country_data_Kiribati"] = 3000,
["Country_data_Kosovo"] = 9200,
["Country_data_Kuwait"] = 12000,
["Country_data_Kyrgyzstan"] = 9600,
["Country_data_LAT"] = 15000,
["Country_data_LBN"] = 2500,
["Country_data_LIB"] = 2600,
["Country_data_LIE"] = 3300,
["Country_data_LIT"] = 3200,
["Country_data_LTU"] = 13000,
["Country_data_LUX"] = 11000,
["Country_data_LVA"] = 2600,
["Country_data_Laos"] = 7600,
["Country_data_Latvia"] = 33000,
["Country_data_Lebanon"] = 15000,
["Country_data_Lesotho"] = 5400,
["Country_data_Liberia"] = 7400,
["Country_data_Libya"] = 8900,
["Country_data_Liechtenstein"] = 8000,
["Country_data_Lithuania"] = 32000,
["Country_data_Luxembourg"] = 24000,
["Country_data_MAC"] = 2500,
["Country_data_MAD"] = 2100,
["Country_data_MAR"] = 13000,
["Country_data_MAS"] = 11000,
["Country_data_MDA"] = 7900,
["Country_data_MEX"] = 31000,
["Country_data_MGL"] = 3100,
["Country_data_MKD"] = 7800,
["Country_data_MLI"] = 4600,
["Country_data_MLT"] = 5800,
["Country_data_MNE"] = 8100,
["Country_data_MON"] = 3900,
["Country_data_MOZ"] = 2300,
["Country_data_MRI"] = 2200,
["Country_data_MYA"] = 3200,
["Country_data_MYS"] = 3800,
["Country_data_Macau"] = 6500,
["Country_data_Macedonia"] = 4900,
["Country_data_Madagascar"] = 9300,
["Country_data_Malawi"] = 5800,
["Country_data_Malaysia"] = 37000,
["Country_data_Maldives"] = 6400,
["Country_data_Mali"] = 13000,
["Country_data_Malta"] = 17000,
["Country_data_Manitoba"] = 2600,
["Country_data_Marshall_Islands"] = 3800,
["Country_data_Martinique"] = 2900,
["Country_data_Maryland"] = 3000,
["Country_data_Massachusetts"] = 3000,
["Country_data_Mauritania"] = 5900,
["Country_data_Mauritius"] = 8300,
["Country_data_Mexico"] = 68000,
["Country_data_Michigan"] = 4400,
["Country_data_Minnesota"] = 3800,
["Country_data_Missouri"] = 2000,
["Country_data_Moldova"] = 20000,
["Country_data_Monaco"] = 10000,
["Country_data_Mongolia"] = 10000,
["Country_data_Montana"] = 2100,
["Country_data_Montenegro"] = 19000,
["Country_data_Montserrat"] = 2500,
["Country_data_Morocco"] = 28000,
["Country_data_Mozambique"] = 7500,
["Country_data_Myanmar"] = 14000,
["Country_data_NAM"] = 3600,
["Country_data_NED"] = 62000,
["Country_data_NEP"] = 3000,
["Country_data_NGA"] = 8400,
["Country_data_NGR"] = 8300,
["Country_data_NIR"] = 10000,
["Country_data_NLD"] = 6300,
["Country_data_NOR"] = 31000,
["Country_data_NZ"] = 3200,
["Country_data_NZL"] = 33000,
["Country_data_Namibia"] = 10000,
["Country_data_Nauru"] = 2600,
["Country_data_Nazi_Germany"] = 9900,
["Country_data_Nepal"] = 17000,
["Country_data_Netherlands"] = 115000,
["Country_data_Netherlands_Antilles"] = 2300,
["Country_data_New_Brunswick"] = 2500,
["Country_data_New_Caledonia"] = 3400,
["Country_data_New_Jersey"] = 4200,
["Country_data_New_South_Wales"] = 5800,
["Country_data_New_York"] = 4900,
["Country_data_New_York_(state)"] = 7000,
["Country_data_New_Zealand"] = 68000,
["Country_data_Newfoundland_and_Labrador"] = 2300,
["Country_data_Nicaragua"] = 8500,
["Country_data_Niger"] = 6100,
["Country_data_Nigeria"] = 33000,
["Country_data_North_Carolina"] = 3500,
["Country_data_North_Korea"] = 14000,
["Country_data_North_Macedonia"] = 18000,
["Country_data_Northern_Ireland"] = 16000,
["Country_data_Northern_Mariana_Islands"] = 2900,
["Country_data_Norway"] = 74000,
["Country_data_Nova_Scotia"] = 2400,
["Country_data_OMA"] = 2900,
["Country_data_Ohio"] = 4800,
["Country_data_Oman"] = 9000,
["Country_data_Ontario"] = 3800,
["Country_data_Ottoman_Empire"] = 2500,
["Country_data_PAK"] = 8200,
["Country_data_PAN"] = 5900,
["Country_data_PAR"] = 10000,
["Country_data_PER"] = 13000,
["Country_data_PHI"] = 12000,
["Country_data_PHL"] = 2600,
["Country_data_PNG"] = 2700,
["Country_data_POL"] = 51000,
["Country_data_POR"] = 32000,
["Country_data_PRC"] = 2200,
["Country_data_PRK"] = 4700,
["Country_data_PRT"] = 2900,
["Country_data_PUR"] = 7400,
["Country_data_Pakistan"] = 29000,
["Country_data_Palau"] = 3100,
["Country_data_Palestine"] = 6900,
["Country_data_Panama"] = 16000,
["Country_data_Papua_New_Guinea"] = 8100,
["Country_data_Paraguay"] = 21000,
["Country_data_Pennsylvania"] = 3700,
["Country_data_People's_Republic_of_China"] = 3200,
["Country_data_Peru"] = 31000,
["Country_data_Philippines"] = 35000,
["Country_data_Poland"] = 152000,
["Country_data_Portugal"] = 69000,
["Country_data_Prussia"] = 2600,
["Country_data_Puerto_Rico"] = 18000,
["Country_data_QAT"] = 8100,
["Country_data_Qatar"] = 18000,
["Country_data_Quebec"] = 4200,
["Country_data_ROM"] = 13000,
["Country_data_ROU"] = 27000,
["Country_data_RSA"] = 32000,
["Country_data_RUS"] = 63000,
["Country_data_RWA"] = 2100,
["Country_data_Republic_of_China"] = 5700,
["Country_data_Republic_of_Ireland"] = 26000,
["Country_data_Republic_of_the_Congo"] = 7900,
["Country_data_Romania"] = 69000,
["Country_data_Russia"] = 116000,
["Country_data_Russian_Empire"] = 4900,
["Country_data_Rwanda"] = 7800,
["Country_data_SAM"] = 3200,
["Country_data_SCG"] = 3100,
["Country_data_SCO"] = 27000,
["Country_data_SEN"] = 8200,
["Country_data_SER"] = 3600,
["Country_data_SGP"] = 3000,
["Country_data_SIN"] = 7100,
["Country_data_SLO"] = 20000,
["Country_data_SLV"] = 3100,
["Country_data_SMR"] = 3200,
["Country_data_SPA"] = 5000,
["Country_data_SRB"] = 27000,
["Country_data_SRI"] = 4800,
["Country_data_SUI"] = 43000,
["Country_data_SUR"] = 2100,
["Country_data_SVK"] = 29000,
["Country_data_SVN"] = 6800,
["Country_data_SWE"] = 58000,
["Country_data_SWI"] = 4900,
["Country_data_SYR"] = 3700,
["Country_data_Saint_Kitts_and_Nevis"] = 4900,
["Country_data_Saint_Lucia"] = 5100,
["Country_data_Saint_Vincent_and_the_Grenadines"] = 5000,
["Country_data_Samoa"] = 7800,
["Country_data_San_Marino"] = 8600,
["Country_data_Saskatchewan"] = 2900,
["Country_data_Saudi_Arabia"] = 20000,
["Country_data_Scotland"] = 52000,
["Country_data_Senegal"] = 18000,
["Country_data_Serbia"] = 55000,
["Country_data_Serbia_and_Montenegro"] = 5100,
["Country_data_Seychelles"] = 5600,
["Country_data_Sierra_Leone"] = 7500,
["Country_data_Singapore"] = 27000,
["Country_data_Slovakia"] = 51000,
["Country_data_Slovenia"] = 43000,
["Country_data_Solomon_Islands"] = 4800,
["Country_data_Somalia"] = 6300,
["Country_data_South_Africa"] = 71000,
["Country_data_South_Carolina"] = 3200,
["Country_data_South_Korea"] = 67000,
["Country_data_South_Sudan"] = 4300,
["Country_data_Soviet_Union"] = 37000,
["Country_data_Spain"] = 135000,
["Country_data_Sri_Lanka"] = 19000,
["Country_data_Sudan"] = 8300,
["Country_data_Suriname"] = 6600,
["Country_data_Sweden"] = 102000,
["Country_data_Switzerland"] = 84000,
["Country_data_Syria"] = 16000,
["Country_data_São_Tomé_and_Príncipe"] = 3400,
["Country_data_TAN"] = 2700,
["Country_data_TCH"] = 11000,
["Country_data_THA"] = 22000,
["Country_data_TJK"] = 2800,
["Country_data_TKM"] = 2900,
["Country_data_TOG"] = 2100,
["Country_data_TPE"] = 16000,
["Country_data_TRI"] = 4800,
["Country_data_TTO"] = 2000,
["Country_data_TUN"] = 11000,
["Country_data_TUR"] = 29000,
["Country_data_Taiwan"] = 13000,
["Country_data_Tajikistan"] = 9200,
["Country_data_Tanzania"] = 13000,
["Country_data_Texas"] = 5300,
["Country_data_Thailand"] = 45000,
["Country_data_Togo"] = 7200,
["Country_data_Tonga"] = 6500,
["Country_data_Trinidad_and_Tobago"] = 14000,
["Country_data_Tunisia"] = 23000,
["Country_data_Turkey"] = 72000,
["Country_data_Turkmenistan"] = 8100,
["Country_data_Turks_and_Caicos_Islands"] = 2800,
["Country_data_Tuvalu"] = 2900,
["Country_data_U.S."] = 2100,
["Country_data_U.S._Virgin_Islands"] = 4900,
["Country_data_UAE"] = 9500,
["Country_data_UGA"] = 4300,
["Country_data_UK"] = 19000,
["Country_data_UKGBI"] = 3100,
["Country_data_UKR"] = 38000,
["Country_data_URS"] = 15000,
["Country_data_URU"] = 15000,
["Country_data_US"] = 4900,
["Country_data_USA"] = 135000,
["Country_data_USSR"] = 4500,
["Country_data_UZB"] = 12000,
["Country_data_Uganda"] = 13000,
["Country_data_Ukraine"] = 75000,
["Country_data_United_Arab_Emirates"] = 20000,
["Country_data_United_Kingdom"] = 89000,
["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 4500,
["Country_data_United_Nations"] = 4100,
["Country_data_United_States"] = 285000,
["Country_data_United_States_of_America"] = 4900,
["Country_data_Uruguay"] = 30000,
["Country_data_Uzbekistan"] = 21000,
["Country_data_VEN"] = 17000,
["Country_data_VIE"] = 6600,
["Country_data_Vanuatu"] = 5200,
["Country_data_Vatican_City"] = 2400,
["Country_data_Venezuela"] = 34000,
["Country_data_Vietnam"] = 24000,
["Country_data_Virginia"] = 2900,
["Country_data_WAL"] = 18000,
["Country_data_Wales"] = 34000,
["Country_data_Washington"] = 3400,
["Country_data_Washington,_D.C."] = 2200,
["Country_data_Washington_(state)"] = 3600,
["Country_data_West_Germany"] = 24000,
["Country_data_West_Indies"] = 2600,
["Country_data_Wisconsin"] = 5200,
["Country_data_YUG"] = 9900,
["Country_data_Yemen"] = 7900,
["Country_data_Yugoslavia"] = 18000,
["Country_data_ZAF"] = 4800,
["Country_data_ZAM"] = 3400,
["Country_data_ZIM"] = 8400,
["Country_data_Zambia"] = 9900,
["Country_data_Zimbabwe"] = 18000,
["Country_flagbio"] = 28000,
["Country_name"] = 23000,
["Country_showdata"] = 6200,
["Country_topics"] = 22000,
["County"] = 7900,
["County_(judet)_of_Romania"] = 3300,
["Course_assignment"] = 4200,
["Course_details"] = 6400,
["Course_instructor"] = 2500,
["Cquote"] = 37000,
["Cr"] = 4300,
["Cr-rt"] = 2100,
["Create_taxonomy/link"] = 109000,
["Cref2"] = 2300,
["Cricinfo"] = 24000,
["Cricketarchive"] = 3100,
["Croatian_Census_2021"] = 3600,
["Cross"] = 3100,
["Crossreference"] = 2600,
["Crossreference/styles.css"] = 2600,
["Csv"] = 3000,
["Ct"] = 12000,
["Curlie"] = 6800,
["Currency"] = 3700,
["Current_events"] = 8300,
["Current_events/styles.css"] = 8300,
["Currentdate"] = 23000,
["Cvt"] = 106000,
["Cycling_Archives"] = 4300,
["Cycling_archives"] = 2400,
["Cycling_data_LTD"] = 2100,
["Cycling_data_MOV_men"] = 2000,
["Cycling_data_TJV"] = 2100,
["Cycling_team_link"] = 12000,
["Module:CFB_schedule"] = 26000,
["Module:CallAssert"] = 247000,
["Module:CanadaByProvinceCatNav"] = 8400,
["Module:Cat_main"] = 201000,
["Module:Catalog_lookup_link"] = 518000,
["Module:Category_described_in_year"] = 5700,
["Module:Category_described_in_year/conf"] = 5700,
["Module:Category_handler"] = 4560000,
["Module:Category_handler/blacklist"] = 4560000,
["Module:Category_handler/config"] = 4560000,
["Module:Category_handler/data"] = 4560000,
["Module:Category_handler/shared"] = 4560000,
["Module:Category_more_if_exists"] = 40000,
["Module:Category_pair"] = 6300,
["Module:Category_see_also"] = 40000,
["Module:Category_series_navigation"] = 486000,
["Module:Celestial_object_quadrangle"] = 2300,
["Module:Check_DYK_hook"] = 115000,
["Module:Check_for_clobbered_parameters"] = 1240000,
["Module:Check_for_deprecated_parameters"] = 63000,
["Module:Check_for_unknown_parameters"] = 19700000,
["Module:Check_isxn"] = 482000,
["Module:Check_winner_by_scores"] = 13000,
["Module:Checkuser"] = 77000,
["Module:Chem2"] = 5200,
["Module:Chem2/styles.css"] = 5200,
["Module:Citation/CS1"] = 5650000,
["Module:Citation/CS1/COinS"] = 5650000,
["Module:Citation/CS1/Configuration"] = 5650000,
["Module:Citation/CS1/Date_validation"] = 5650000,
["Module:Citation/CS1/Identifiers"] = 5650000,
["Module:Citation/CS1/Suggestions"] = 25000,
["Module:Citation/CS1/Utilities"] = 5650000,
["Module:Citation/CS1/Whitelist"] = 5650000,
["Module:Citation/CS1/styles.css"] = 5790000,
["Module:Cite_IUCN"] = 58000,
["Module:Cite_Q"] = 48000,
["Module:Cite_tweet"] = 37000,
["Module:Cite_web"] = 41000,
["Module:Clade"] = 7800,
["Module:Class"] = 10300000,
["Module:Class/definition.json"] = 10300000,
["Module:Class/styles.css"] = 9400000,
["Module:Class_mask"] = 10600000,
["Module:Clickable_button_2"] = 974000,
["Module:Collapsible_list"] = 54000,
["Module:College_color"] = 129000,
["Module:College_color/data"] = 129000,
["Module:Color_contrast"] = 505000,
["Module:Color_contrast/colors"] = 508000,
["Module:Commons_link"] = 260000,
["Module:Complex_date"] = 66000,
["Module:Convert"] = 1250000,
["Module:Convert/data"] = 1250000,
["Module:Convert/helper"] = 8800,
["Module:Convert/text"] = 1250000,
["Module:Convert/wikidata"] = 3300,
["Module:Convert/wikidata/data"] = 3300,
["Module:ConvertNumeric"] = 15000,
["Module:Convert_character_width"] = 2800,
["Module:Convert_character_width/data"] = 2800,
["Module:Coordinates"] = 1340000,
["Module:Coordinates/styles.css"] = 1340000,
["Module:Copied"] = 19000,
["Module:CountryAdjectiveDemonym"] = 45000,
["Module:CountryAdjectiveDemonym/Adjectives"] = 45000,
["Module:CountryAdjectiveDemonym/Demonyms"] = 45000,
["Module:CountryAdjectiveDemonym/The"] = 45000,
["Module:CountryData"] = 143000,
["Module:CountryData/cacheA"] = 12000,
["Module:CountryData/cacheB"] = 8400,
["Module:CountryData/cacheC"] = 12000,
["Module:CountryData/cacheD"] = 4600,
["Module:CountryData/cacheE"] = 2800,
["Module:CountryData/cacheF"] = 2700,
["Module:CountryData/cacheG"] = 2700,
["Module:CountryData/summary"] = 143000,
["Module:Country_adjective"] = 4400,
["Module:Country_alias"] = 53000,
["Module:Country_alias/data"] = 53000,
["Module:Currency"] = 3700,
["Module:Currency/Presentation"] = 3700,
}
d1b95c4fa4b55f69795be7c6bde731f2d8bdb767
Module:Transclusion count/data/F
828
1725
3252
2023-11-05T05:09:19Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["F1"] = 4700,
["FA-Class"] = 15000,
["FAA-airport"] = 3700,
["FACClosed"] = 5100,
["FAR_link"] = 102000,
["FCC-LMS-Facility"] = 5500,
["FIDE"] = 2200,
["FIFA_player"] = 10000,
["FIN"] = 9200,
["FIPS"] = 2000,
["FJC_Bio"] = 4200,
["FL-Class"] = 12000,
["FLCClosed"] = 2600,
["FM-Class"] = 2800,
["FMA"] = 3300,
["FMARB"] = 10000,
["FML"] = 9100,
["FMQ"] = 12000,
["FMXL"] = 2400,
["FM_station_data"] = 8700,
["FPCnom/VotingEnds"] = 9700,
["FPCresult"] = 16000,
["FRA"] = 19000,
["FRG"] = 3700,
["FULLBASEPAGENAME"] = 5400,
["FULLROOTPAGENAME"] = 2440000,
["FXL"] = 2200,
["Fa_bottom"] = 2200,
["Fa_top"] = 2200,
["Facebook"] = 14000,
["Facepalm"] = 2600,
["Fact"] = 36000,
["FadedPage"] = 2400,
["FailedGA"] = 3300,
["Failed_verification"] = 15000,
["Family_name_explanation"] = 80000,
["Family_name_explanation/core"] = 80000,
["Family_name_hatnote"] = 79000,
["Farl"] = 102000,
["Fb"] = 26000,
["Fb-rt"] = 5800,
["Fb_cs_footer"] = 2900,
["Fb_gd"] = 8800,
["Fb_overview"] = 3700,
["Fb_overview2"] = 3400,
["Fb_rs"] = 8500,
["Fb_rs_footer"] = 8400,
["Fba/core"] = 24000,
["Fba/list"] = 29000,
["Fbaicon"] = 7200,
["Fbaicon/core"] = 8200,
["Fbicon"] = 2900,
["Fbu"] = 3700,
["Fbu-rt"] = 2200,
["Fbw"] = 4900,
["Fdacite"] = 14000,
["FeaturedPicture"] = 6300,
["Featured_article"] = 6700,
["Featured_article_tools"] = 11000,
["Featured_list"] = 4300,
["Featured_picture"] = 7700,
["Featured_topic_box"] = 3100,
["Featured_topic_box/styles.css"] = 3100,
["Feedback_link"] = 4600,
["Fiction-based_redirects_to_list_entries_category_handler"] = 2300,
["File-Class"] = 12000,
["File_other"] = 934000,
["Film"] = 54000,
["Film_date"] = 119000,
["Film_lists_by_country"] = 2300,
["Find"] = 8200,
["FindYDCportal"] = 176000,
["Find_a_Grave"] = 28000,
["Find_a_Grave_cemetery"] = 2300,
["Find_country"] = 233000,
["Find_general_sources"] = 868000,
["Find_medical_sources"] = 7400,
["Find_page_text"] = 636000,
["Find_sources"] = 631000,
["Find_sources/proj/is_biography"] = 619000,
["Find_sources/proj/is_med"] = 631000,
["Find_sources/proj/is_video"] = 624000,
["Find_sources/top_proj"] = 631000,
["Find_sources_AFD"] = 200000,
["Find_sources_mainspace"] = 694000,
["Find_video_game_sources"] = 5000,
["Find_video_game_sources_short"] = 3100,
["Findsources"] = 42000,
["First_nonempty"] = 14000,
["First_word"] = 442000,
["FishBase"] = 14000,
["FishBase_genus"] = 4600,
["Fishproject"] = 10000,
["Fix"] = 913000,
["Fix-span"] = 55000,
["Fix/category"] = 867000,
["Fix_comma_category"] = 562000,
["Fixed"] = 8900,
["Flag"] = 567000,
["Flag/core"] = 567000,
["FlagIOC"] = 11000,
["FlagIOC2"] = 16000,
["FlagIOC2athlete"] = 11000,
["FlagIOC2medalist"] = 4500,
["FlagIOC2team"] = 6700,
["FlagIOCathlete"] = 17000,
["FlagIOCteam"] = 2700,
["FlagIPC"] = 3400,
["FlagPASO"] = 2700,
["FlagPASOathlete"] = 2500,
["Flag_data"] = 7300,
["Flag_icon"] = 15000,
["Flagathlete"] = 28000,
["Flagbig"] = 4500,
["Flagbig/core"] = 7700,
["Flagcountry"] = 40000,
["Flagcountry/core"] = 40000,
["Flagdeco"] = 113000,
["Flagdeco/core"] = 113000,
["Flagg"] = 21000,
["Flagicon"] = 601000,
["Flagicon/core"] = 601000,
["Flagicon/nt"] = 5000,
["Flagicon_image"] = 41000,
["Flaglink/core"] = 78000,
["Flagmedalist"] = 2200,
["Flagmedalist/core"] = 2200,
["Flagright/core"] = 23000,
["Flagteam"] = 6100,
["Flagu"] = 24000,
["Flagu/core"] = 24000,
["Flat_list"] = 8000,
["Flatlist"] = 2090000,
["FloraBase"] = 5600,
["Floruit"] = 4100,
["Fmbox"] = 19000,
["Font"] = 8900,
["Font_color"] = 38000,
["Fontcolor"] = 6600,
["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000,
["Fooian_fooers"] = 13000,
["Football"] = 57000,
["FootballDatabase.eu"] = 8600,
["FootballFacts.ru"] = 5700,
["Football_box"] = 25000,
["Football_box_collapsible"] = 24000,
["Football_kit"] = 48000,
["Football_manager_history"] = 21000,
["Football_squad"] = 47000,
["Football_squad2_player"] = 50000,
["Football_squad_end"] = 19000,
["Football_squad_manager"] = 47000,
["Football_squad_mid"] = 17000,
["Football_squad_player"] = 19000,
["Football_squad_player/role"] = 6800,
["Football_squad_player/styles.css"] = 19000,
["Football_squad_start"] = 19000,
["Footballbox"] = 7200,
["Footballbox_collapsible"] = 7200,
["Footballstats"] = 2900,
["Foo–Bar_relations_category"] = 9200,
["Foo–Bar_relations_category/core"] = 9200,
["Foo–Bar_relations_category/countrynamesortfix"] = 9200,
["Foo–Bar_relations_category/fixcountryname"] = 9200,
["Foo–Bar_relations_category/inner_core"] = 9200,
["Foo–Bar_relations_category/mapname"] = 9200,
["For"] = 186000,
["For-multi"] = 9600,
["For_loop"] = 777000,
["For_multi"] = 7900,
["For_nowiki"] = 8700,
["ForaDeJogo"] = 4100,
["Force_plural"] = 3200,
["Format_linkr"] = 4400,
["Format_numeric_span"] = 3600,
["Format_price"] = 8200,
["Format_price/digits"] = 8100,
["Formatprice"] = 3200,
["Fossil_range"] = 12000,
["Fossil_range/bar"] = 21000,
["Fossil_range/marker"] = 21000,
["Fossilrange"] = 5800,
["Frac"] = 31000,
["Fraction"] = 35000,
["Fraction/styles.css"] = 94000,
["France_metadata_Wikidata"] = 36000,
["Free_access"] = 4300,
["Free_in_US_media"] = 15000,
["Free_media"] = 156000,
["Frequency"] = 3400,
["Friday"] = 2700,
["Fs_end"] = 18000,
["Fs_mid"] = 16000,
["Fs_player"] = 18000,
["Fs_start"] = 18000,
["Full_citation_needed"] = 8300,
["Full_party_name_with_color"] = 4000,
["Fullurl"] = 6500,
["Fullurl:"] = 6400,
["Further"] = 63000,
["Fussballdaten"] = 4300,
["Module:Fb_overview"] = 3800,
["Module:FeaturedTopicSum"] = 6800,
["Module:Fedi-share"] = 3100,
["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2300,
["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2300,
["Module:Fiction_redirect_category_handler"] = 2900,
["Module:File_link"] = 68000,
["Module:FindYDCportal"] = 309000,
["Module:Find_country"] = 184000,
["Module:Find_sources"] = 1570000,
["Module:Find_sources/config"] = 1570000,
["Module:Find_sources/links"] = 1570000,
["Module:Find_sources/templates/Find_general_sources"] = 868000,
["Module:Find_sources/templates/Find_sources_mainspace"] = 694000,
["Module:Find_sources/templates/Find_sources_medical"] = 7400,
["Module:Find_sources/templates/Find_sources_video_games"] = 5000,
["Module:FishRef"] = 7000,
["Module:Flag"] = 51000,
["Module:Flagg"] = 126000,
["Module:Football_box"] = 26000,
["Module:Football_box/styles.css"] = 26000,
["Module:Football_box_collapsible"] = 24000,
["Module:Football_manager_history"] = 21000,
["Module:Football_squad"] = 47000,
["Module:Footnotes"] = 291000,
["Module:Footnotes/anchor_id_list"] = 210000,
["Module:Footnotes/anchor_id_list/data"] = 210000,
["Module:Footnotes/whitelist"] = 210000,
["Module:For"] = 187000,
["Module:For_loop"] = 777000,
["Module:For_nowiki"] = 8700,
["Module:Format_link"] = 1330000,
["Module:Formatted_appearance"] = 5000,
}
2a1e6682573b7aa8fdbcb99e8d139cefa6e9e0f9
Module:Transclusion count/data/K
828
1691
3155
2023-11-05T05:10:09Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["KAZ"] = 4500,
["KEN"] = 3500,
["KIA"] = 8000,
["KOR"] = 7400,
["K_League_player"] = 2100,
["Keep_local"] = 6000,
["Keggcite"] = 4300,
["Kent_tasks"] = 4600,
["Key_press"] = 3700,
["Key_press/styles.css"] = 3800,
["KillMarkers"] = 44000,
["Ko-hhrm"] = 5500,
["Korean"] = 14000,
["Module:Key"] = 3800,
}
d8aa48998c354abd6c316d082ff432f36e3e4b37
Module:Transclusion count/data/L
828
1008
2993
2213
2023-11-05T05:10:19Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["LASTYEAR"] = 717000,
["LAT"] = 3600,
["LCAuth"] = 3400,
["LDSproject"] = 2800,
["LTU"] = 4300,
["LUX"] = 2300,
["LVA"] = 4200,
["La"] = 455000,
["Label"] = 6600,
["LabourProject"] = 3100,
["Lafc"] = 5500,
["Lake_project"] = 5300,
["Lang"] = 357000,
["Lang-ar"] = 43000,
["Lang-az"] = 4500,
["Lang-ba"] = 3400,
["Lang-be"] = 4400,
["Lang-bg"] = 10000,
["Lang-bn"] = 7700,
["Lang-cs"] = 3600,
["Lang-cy"] = 3800,
["Lang-da"] = 3700,
["Lang-de"] = 38000,
["Lang-el"] = 23000,
["Lang-en"] = 17000,
["Lang-es"] = 19000,
["Lang-et"] = 2200,
["Lang-fa"] = 76000,
["Lang-fi"] = 3100,
["Lang-fr"] = 24000,
["Lang-ga"] = 7600,
["Lang-gd"] = 3800,
["Lang-gr"] = 2700,
["Lang-grc"] = 7400,
["Lang-he"] = 17000,
["Lang-hr"] = 3000,
["Lang-hu"] = 9500,
["Lang-hy"] = 6700,
["Lang-id"] = 2300,
["Lang-it"] = 12000,
["Lang-ja"] = 4500,
["Lang-ka"] = 5400,
["Lang-kk"] = 2700,
["Lang-ko"] = 3800,
["Lang-ku"] = 4200,
["Lang-la"] = 13000,
["Lang-lt"] = 2200,
["Lang-lv"] = 2100,
["Lang-mk"] = 3600,
["Lang-ms"] = 2600,
["Lang-my"] = 4700,
["Lang-ne"] = 3400,
["Lang-nl"] = 4900,
["Lang-no"] = 6200,
["Lang-oc"] = 7100,
["Lang-pl"] = 8700,
["Lang-pt"] = 6900,
["Lang-ro"] = 3800,
["Lang-ru"] = 92000,
["Lang-rus"] = 3100,
["Lang-sa"] = 2400,
["Lang-si"] = 2000,
["Lang-sl"] = 3900,
["Lang-sq"] = 3500,
["Lang-sr"] = 4900,
["Lang-sr-Cyrl"] = 13000,
["Lang-sr-cyr"] = 5300,
["Lang-sr-cyrl"] = 3000,
["Lang-sv"] = 6500,
["Lang-ta"] = 2600,
["Lang-th"] = 11000,
["Lang-tr"] = 7700,
["Lang-uk"] = 19000,
["Lang-ur"] = 9300,
["Lang-zh"] = 73000,
["Lang2iso"] = 5400,
["Language_with_name"] = 9200,
["Languages"] = 2700,
["Large"] = 231000,
["Large_category_TOC"] = 11000,
["Large_category_TOC/tracking"] = 10000,
["Last_edited_by"] = 67000,
["Last_word"] = 21000,
["LaunchesByYear_footer"] = 3300,
["LaunchesByYear_header"] = 3300,
["Lc"] = 8900,
["Lcfirstletter"] = 2500,
["Lead_too_short"] = 9000,
["League_icon"] = 3300,
["Leagueicon"] = 3200,
["Leave_feedback/link"] = 76000,
["Left"] = 8700,
["Legend"] = 32000,
["Legend/styles.css"] = 130000,
["Legend0"] = 8200,
["Legend2"] = 18000,
["Legend_inline"] = 21000,
["LepIndex"] = 12000,
["LepidopteraTalk"] = 56000,
["Letter-NumberCombDisambig"] = 3700,
["Letter–number_combination_disambiguation"] = 4900,
["Libera.Chat"] = 11000,
["Library_link_about"] = 3900,
["Library_resources_box"] = 4000,
["Librivox_author"] = 6700,
["Librivox_book"] = 3700,
["License_migration"] = 52000,
["License_migration_complete"] = 23000,
["License_migration_is_redundant"] = 7600,
["License_migration_not_eligible"] = 6800,
["License_migration_redundant"] = 22000,
["Like"] = 2400,
["Like_resume"] = 3800,
["Likely"] = 4600,
["Line_link"] = 10000,
["Linescore_Amfootball"] = 2300,
["LinkCatIfExists2"] = 58000,
["LinkStatusLocal"] = 44000,
["LinkSummary"] = 242000,
["LinkSummaryLive"] = 8300,
["Link_if_exists"] = 75000,
["Link_note"] = 62000,
["Link_summary"] = 255000,
["Link_target"] = 15000,
["Linkcolor"] = 2300,
["Linkless_exists"] = 15000,
["Linksummarylive"] = 4100,
["Linktext"] = 23000,
["List-Class"] = 16000,
["Listen"] = 14000,
["Listen_live"] = 2400,
["Lists_of_people_editnotice"] = 2600,
["Lit"] = 5300,
["Literal_translation"] = 10000,
["Lnl"] = 8100,
["LoMP"] = 4200,
["Location_map"] = 713000,
["Location_map+"] = 25000,
["Location_map_data_documentation"] = 6400,
["Location_map_many"] = 4200,
["Location_map~"] = 24000,
["Log"] = 3600,
["Logo_fur"] = 33000,
["Logo_requested"] = 3800,
["London_Gazette"] = 33000,
["Long_plot"] = 3900,
["Longitem"] = 663000,
["Longlink"] = 6400,
["Look_from"] = 9300,
["Lookfrom"] = 4900,
["Loop"] = 104000,
["Loss"] = 3000,
["Low-Class"] = 15000,
["Low-importance"] = 15000,
["Lower"] = 8000,
["Lowercase"] = 5200,
["Lowercase_title"] = 15000,
["Lowercasetitle"] = 2500,
["Lt"] = 2400,
["Lua"] = 9900,
["Lx"] = 22000,
["Module:Labelled_list_hatnote"] = 548000,
["Module:Lang"] = 1470000,
["Module:Lang-zh"] = 74000,
["Module:Lang/ISO_639_synonyms"] = 1470000,
["Module:Lang/data"] = 1470000,
["Module:Lang/documentor_tool"] = 4000,
["Module:Lang/tag_from_name"] = 3100,
["Module:Language"] = 3000,
["Module:Language/data"] = 3000,
["Module:Language/data/ISO_639-1"] = 9400,
["Module:Language/data/ISO_639-2"] = 2900,
["Module:Language/data/ISO_639-3_(dep)"] = 20000,
["Module:Language/data/ISO_639_deprecated"] = 20000,
["Module:Language/data/ISO_639_name_to_code"] = 5400,
["Module:Language/data/ISO_639_override"] = 20000,
["Module:Language/data/iana_languages"] = 1470000,
["Module:Language/data/iana_regions"] = 1470000,
["Module:Language/data/iana_scripts"] = 1470000,
["Module:Language/data/iana_suppressed_scripts"] = 1470000,
["Module:Language/data/iana_variants"] = 1470000,
["Module:Large_category_TOC"] = 11000,
["Module:Large_category_TOC/styles.css"] = 11000,
["Module:Latin"] = 8300,
["Module:Librivox_book"] = 3700,
["Module:Lighthouse_tracking"] = 2600,
["Module:List"] = 2160000,
["Module:Listen"] = 14000,
["Module:Listen/styles.css"] = 13000,
["Module:Location_map"] = 747000,
["Module:Location_map/data/Antarctica"] = 2700,
["Module:Location_map/data/Arkansas"] = 3300,
["Module:Location_map/data/Australia"] = 2200,
["Module:Location_map/data/Australia_New_South_Wales"] = 3600,
["Module:Location_map/data/Australia_Queensland"] = 6000,
["Module:Location_map/data/Australia_South_Australia"] = 2400,
["Module:Location_map/data/Austria"] = 3400,
["Module:Location_map/data/Azerbaijan"] = 4900,
["Module:Location_map/data/Bangladesh"] = 2000,
["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400,
["Module:Location_map/data/Brazil"] = 4800,
["Module:Location_map/data/California"] = 6000,
["Module:Location_map/data/Canada"] = 4600,
["Module:Location_map/data/Canada_Alberta"] = 2400,
["Module:Location_map/data/Canada_British_Columbia"] = 3100,
["Module:Location_map/data/Canada_Ontario"] = 2400,
["Module:Location_map/data/China"] = 2900,
["Module:Location_map/data/Croatia"] = 3500,
["Module:Location_map/data/Czech_Republic"] = 6800,
["Module:Location_map/data/Estonia"] = 3000,
["Module:Location_map/data/Europe"] = 4400,
["Module:Location_map/data/Florida"] = 2600,
["Module:Location_map/data/France"] = 40000,
["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400,
["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900,
["Module:Location_map/data/France_Grand_Est"] = 5300,
["Module:Location_map/data/France_Hauts-de-France"] = 3900,
["Module:Location_map/data/France_Normandy"] = 3400,
["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800,
["Module:Location_map/data/France_Occitanie"] = 4700,
["Module:Location_map/data/Germany"] = 17000,
["Module:Location_map/data/Germany_Bavaria"] = 2900,
["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600,
["Module:Location_map/data/Greece"] = 4100,
["Module:Location_map/data/Hungary"] = 2800,
["Module:Location_map/data/Illinois"] = 3400,
["Module:Location_map/data/India"] = 23000,
["Module:Location_map/data/India3"] = 2900,
["Module:Location_map/data/India_Andhra_Pradesh"] = 2600,
["Module:Location_map/data/India_Karnataka"] = 2100,
["Module:Location_map/data/India_Kerala"] = 2700,
["Module:Location_map/data/India_Maharashtra"] = 2800,
["Module:Location_map/data/India_Punjab"] = 2200,
["Module:Location_map/data/India_Tamil_Nadu"] = 3100,
["Module:Location_map/data/India_Uttar_Pradesh"] = 3200,
["Module:Location_map/data/India_West_Bengal"] = 3300,
["Module:Location_map/data/Indiana"] = 3400,
["Module:Location_map/data/Iowa"] = 3000,
["Module:Location_map/data/Iran"] = 50000,
["Module:Location_map/data/Ireland"] = 3700,
["Module:Location_map/data/Italy"] = 12000,
["Module:Location_map/data/Japan"] = 14000,
["Module:Location_map/data/Maine"] = 2100,
["Module:Location_map/data/Maryland"] = 2000,
["Module:Location_map/data/Massachusetts"] = 4700,
["Module:Location_map/data/Mexico"] = 3400,
["Module:Location_map/data/Michigan"] = 3800,
["Module:Location_map/data/Minnesota"] = 4600,
["Module:Location_map/data/Nepal"] = 4600,
["Module:Location_map/data/Netherlands"] = 3000,
["Module:Location_map/data/New_York"] = 8100,
["Module:Location_map/data/North_Carolina"] = 3500,
["Module:Location_map/data/Norway"] = 4500,
["Module:Location_map/data/Ohio"] = 2300,
["Module:Location_map/data/Pakistan"] = 2900,
["Module:Location_map/data/Pennsylvania"] = 5900,
["Module:Location_map/data/Peru"] = 2900,
["Module:Location_map/data/Philippines"] = 3100,
["Module:Location_map/data/Poland"] = 53000,
["Module:Location_map/data/Queensland"] = 2200,
["Module:Location_map/data/Romania"] = 5900,
["Module:Location_map/data/Russia"] = 26000,
["Module:Location_map/data/Russia_Bashkortostan"] = 4500,
["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200,
["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800,
["Module:Location_map/data/Serbia"] = 4000,
["Module:Location_map/data/Slovakia"] = 2100,
["Module:Location_map/data/Slovenia"] = 6700,
["Module:Location_map/data/South_Africa"] = 3200,
["Module:Location_map/data/Spain"] = 7700,
["Module:Location_map/data/Sweden"] = 2800,
["Module:Location_map/data/Switzerland"] = 6200,
["Module:Location_map/data/Syria"] = 2200,
["Module:Location_map/data/Texas"] = 3400,
["Module:Location_map/data/Turkey"] = 18000,
["Module:Location_map/data/USA"] = 110000,
["Module:Location_map/data/USA_Alabama"] = 2300,
["Module:Location_map/data/USA_Alaska"] = 2100,
["Module:Location_map/data/USA_Arizona"] = 2100,
["Module:Location_map/data/USA_Arkansas"] = 3500,
["Module:Location_map/data/USA_California"] = 7800,
["Module:Location_map/data/USA_Colorado"] = 2200,
["Module:Location_map/data/USA_Florida"] = 3300,
["Module:Location_map/data/USA_Georgia"] = 2000,
["Module:Location_map/data/USA_Illinois"] = 3700,
["Module:Location_map/data/USA_Indiana"] = 3600,
["Module:Location_map/data/USA_Iowa"] = 3200,
["Module:Location_map/data/USA_Kentucky"] = 3200,
["Module:Location_map/data/USA_Maine"] = 2200,
["Module:Location_map/data/USA_Maryland"] = 2600,
["Module:Location_map/data/USA_Massachusetts"] = 5000,
["Module:Location_map/data/USA_Michigan"] = 4200,
["Module:Location_map/data/USA_Minnesota"] = 5000,
["Module:Location_map/data/USA_Missouri"] = 2100,
["Module:Location_map/data/USA_New_Jersey"] = 2900,
["Module:Location_map/data/USA_New_York"] = 9100,
["Module:Location_map/data/USA_North_Carolina"] = 4300,
["Module:Location_map/data/USA_Ohio"] = 2600,
["Module:Location_map/data/USA_Oregon"] = 2600,
["Module:Location_map/data/USA_Pennsylvania"] = 7100,
["Module:Location_map/data/USA_Texas"] = 3800,
["Module:Location_map/data/USA_Virginia"] = 5100,
["Module:Location_map/data/USA_Washington"] = 3000,
["Module:Location_map/data/USA_West_Virginia"] = 4400,
["Module:Location_map/data/USA_Wisconsin"] = 2700,
["Module:Location_map/data/Ukraine"] = 3300,
["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200,
["Module:Location_map/data/Virginia"] = 4000,
["Module:Location_map/data/Washington"] = 2200,
["Module:Location_map/data/West_Virginia"] = 4100,
["Module:Location_map/data/Wisconsin"] = 2300,
["Module:Location_map/data/doc"] = 6400,
["Module:Location_map/info"] = 6400,
["Module:Location_map/multi"] = 29000,
["Module:Location_map/styles.css"] = 742000,
["Module:London_Gazette_util"] = 33000,
["Module:Lua_banner"] = 9900,
}
85197ddfd1dd0dc8edfd3b21c138215cdc658bbd
2994
2993
2023-11-09T13:08:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/L]]
Scribunto
text/plain
return {
["LASTYEAR"] = 717000,
["LAT"] = 3600,
["LCAuth"] = 3400,
["LDSproject"] = 2800,
["LTU"] = 4300,
["LUX"] = 2300,
["LVA"] = 4200,
["La"] = 455000,
["Label"] = 6600,
["LabourProject"] = 3100,
["Lafc"] = 5500,
["Lake_project"] = 5300,
["Lang"] = 357000,
["Lang-ar"] = 43000,
["Lang-az"] = 4500,
["Lang-ba"] = 3400,
["Lang-be"] = 4400,
["Lang-bg"] = 10000,
["Lang-bn"] = 7700,
["Lang-cs"] = 3600,
["Lang-cy"] = 3800,
["Lang-da"] = 3700,
["Lang-de"] = 38000,
["Lang-el"] = 23000,
["Lang-en"] = 17000,
["Lang-es"] = 19000,
["Lang-et"] = 2200,
["Lang-fa"] = 76000,
["Lang-fi"] = 3100,
["Lang-fr"] = 24000,
["Lang-ga"] = 7600,
["Lang-gd"] = 3800,
["Lang-gr"] = 2700,
["Lang-grc"] = 7400,
["Lang-he"] = 17000,
["Lang-hr"] = 3000,
["Lang-hu"] = 9500,
["Lang-hy"] = 6700,
["Lang-id"] = 2300,
["Lang-it"] = 12000,
["Lang-ja"] = 4500,
["Lang-ka"] = 5400,
["Lang-kk"] = 2700,
["Lang-ko"] = 3800,
["Lang-ku"] = 4200,
["Lang-la"] = 13000,
["Lang-lt"] = 2200,
["Lang-lv"] = 2100,
["Lang-mk"] = 3600,
["Lang-ms"] = 2600,
["Lang-my"] = 4700,
["Lang-ne"] = 3400,
["Lang-nl"] = 4900,
["Lang-no"] = 6200,
["Lang-oc"] = 7100,
["Lang-pl"] = 8700,
["Lang-pt"] = 6900,
["Lang-ro"] = 3800,
["Lang-ru"] = 92000,
["Lang-rus"] = 3100,
["Lang-sa"] = 2400,
["Lang-si"] = 2000,
["Lang-sl"] = 3900,
["Lang-sq"] = 3500,
["Lang-sr"] = 4900,
["Lang-sr-Cyrl"] = 13000,
["Lang-sr-cyr"] = 5300,
["Lang-sr-cyrl"] = 3000,
["Lang-sv"] = 6500,
["Lang-ta"] = 2600,
["Lang-th"] = 11000,
["Lang-tr"] = 7700,
["Lang-uk"] = 19000,
["Lang-ur"] = 9300,
["Lang-zh"] = 73000,
["Lang2iso"] = 5400,
["Language_with_name"] = 9200,
["Languages"] = 2700,
["Large"] = 231000,
["Large_category_TOC"] = 11000,
["Large_category_TOC/tracking"] = 10000,
["Last_edited_by"] = 67000,
["Last_word"] = 21000,
["LaunchesByYear_footer"] = 3300,
["LaunchesByYear_header"] = 3300,
["Lc"] = 8900,
["Lcfirstletter"] = 2500,
["Lead_too_short"] = 9000,
["League_icon"] = 3300,
["Leagueicon"] = 3200,
["Leave_feedback/link"] = 76000,
["Left"] = 8700,
["Legend"] = 32000,
["Legend/styles.css"] = 130000,
["Legend0"] = 8200,
["Legend2"] = 18000,
["Legend_inline"] = 21000,
["LepIndex"] = 12000,
["LepidopteraTalk"] = 56000,
["Letter-NumberCombDisambig"] = 3700,
["Letter–number_combination_disambiguation"] = 4900,
["Libera.Chat"] = 11000,
["Library_link_about"] = 3900,
["Library_resources_box"] = 4000,
["Librivox_author"] = 6700,
["Librivox_book"] = 3700,
["License_migration"] = 52000,
["License_migration_complete"] = 23000,
["License_migration_is_redundant"] = 7600,
["License_migration_not_eligible"] = 6800,
["License_migration_redundant"] = 22000,
["Like"] = 2400,
["Like_resume"] = 3800,
["Likely"] = 4600,
["Line_link"] = 10000,
["Linescore_Amfootball"] = 2300,
["LinkCatIfExists2"] = 58000,
["LinkStatusLocal"] = 44000,
["LinkSummary"] = 242000,
["LinkSummaryLive"] = 8300,
["Link_if_exists"] = 75000,
["Link_note"] = 62000,
["Link_summary"] = 255000,
["Link_target"] = 15000,
["Linkcolor"] = 2300,
["Linkless_exists"] = 15000,
["Linksummarylive"] = 4100,
["Linktext"] = 23000,
["List-Class"] = 16000,
["Listen"] = 14000,
["Listen_live"] = 2400,
["Lists_of_people_editnotice"] = 2600,
["Lit"] = 5300,
["Literal_translation"] = 10000,
["Lnl"] = 8100,
["LoMP"] = 4200,
["Location_map"] = 713000,
["Location_map+"] = 25000,
["Location_map_data_documentation"] = 6400,
["Location_map_many"] = 4200,
["Location_map~"] = 24000,
["Log"] = 3600,
["Logo_fur"] = 33000,
["Logo_requested"] = 3800,
["London_Gazette"] = 33000,
["Long_plot"] = 3900,
["Longitem"] = 663000,
["Longlink"] = 6400,
["Look_from"] = 9300,
["Lookfrom"] = 4900,
["Loop"] = 104000,
["Loss"] = 3000,
["Low-Class"] = 15000,
["Low-importance"] = 15000,
["Lower"] = 8000,
["Lowercase"] = 5200,
["Lowercase_title"] = 15000,
["Lowercasetitle"] = 2500,
["Lt"] = 2400,
["Lua"] = 9900,
["Lx"] = 22000,
["Module:Labelled_list_hatnote"] = 548000,
["Module:Lang"] = 1470000,
["Module:Lang-zh"] = 74000,
["Module:Lang/ISO_639_synonyms"] = 1470000,
["Module:Lang/data"] = 1470000,
["Module:Lang/documentor_tool"] = 4000,
["Module:Lang/tag_from_name"] = 3100,
["Module:Language"] = 3000,
["Module:Language/data"] = 3000,
["Module:Language/data/ISO_639-1"] = 9400,
["Module:Language/data/ISO_639-2"] = 2900,
["Module:Language/data/ISO_639-3_(dep)"] = 20000,
["Module:Language/data/ISO_639_deprecated"] = 20000,
["Module:Language/data/ISO_639_name_to_code"] = 5400,
["Module:Language/data/ISO_639_override"] = 20000,
["Module:Language/data/iana_languages"] = 1470000,
["Module:Language/data/iana_regions"] = 1470000,
["Module:Language/data/iana_scripts"] = 1470000,
["Module:Language/data/iana_suppressed_scripts"] = 1470000,
["Module:Language/data/iana_variants"] = 1470000,
["Module:Large_category_TOC"] = 11000,
["Module:Large_category_TOC/styles.css"] = 11000,
["Module:Latin"] = 8300,
["Module:Librivox_book"] = 3700,
["Module:Lighthouse_tracking"] = 2600,
["Module:List"] = 2160000,
["Module:Listen"] = 14000,
["Module:Listen/styles.css"] = 13000,
["Module:Location_map"] = 747000,
["Module:Location_map/data/Antarctica"] = 2700,
["Module:Location_map/data/Arkansas"] = 3300,
["Module:Location_map/data/Australia"] = 2200,
["Module:Location_map/data/Australia_New_South_Wales"] = 3600,
["Module:Location_map/data/Australia_Queensland"] = 6000,
["Module:Location_map/data/Australia_South_Australia"] = 2400,
["Module:Location_map/data/Austria"] = 3400,
["Module:Location_map/data/Azerbaijan"] = 4900,
["Module:Location_map/data/Bangladesh"] = 2000,
["Module:Location_map/data/Bosnia_and_Herzegovina"] = 5400,
["Module:Location_map/data/Brazil"] = 4800,
["Module:Location_map/data/California"] = 6000,
["Module:Location_map/data/Canada"] = 4600,
["Module:Location_map/data/Canada_Alberta"] = 2400,
["Module:Location_map/data/Canada_British_Columbia"] = 3100,
["Module:Location_map/data/Canada_Ontario"] = 2400,
["Module:Location_map/data/China"] = 2900,
["Module:Location_map/data/Croatia"] = 3500,
["Module:Location_map/data/Czech_Republic"] = 6800,
["Module:Location_map/data/Estonia"] = 3000,
["Module:Location_map/data/Europe"] = 4400,
["Module:Location_map/data/Florida"] = 2600,
["Module:Location_map/data/France"] = 40000,
["Module:Location_map/data/France_Auvergne-Rhône-Alpes"] = 4400,
["Module:Location_map/data/France_Bourgogne-Franche-Comté"] = 3900,
["Module:Location_map/data/France_Grand_Est"] = 5300,
["Module:Location_map/data/France_Hauts-de-France"] = 3900,
["Module:Location_map/data/France_Normandy"] = 3400,
["Module:Location_map/data/France_Nouvelle-Aquitaine"] = 4800,
["Module:Location_map/data/France_Occitanie"] = 4700,
["Module:Location_map/data/Germany"] = 17000,
["Module:Location_map/data/Germany_Bavaria"] = 2900,
["Module:Location_map/data/Germany_Rhineland-Palatinate"] = 2600,
["Module:Location_map/data/Greece"] = 4100,
["Module:Location_map/data/Hungary"] = 2800,
["Module:Location_map/data/Illinois"] = 3400,
["Module:Location_map/data/India"] = 23000,
["Module:Location_map/data/India3"] = 2900,
["Module:Location_map/data/India_Andhra_Pradesh"] = 2600,
["Module:Location_map/data/India_Karnataka"] = 2100,
["Module:Location_map/data/India_Kerala"] = 2700,
["Module:Location_map/data/India_Maharashtra"] = 2800,
["Module:Location_map/data/India_Punjab"] = 2200,
["Module:Location_map/data/India_Tamil_Nadu"] = 3100,
["Module:Location_map/data/India_Uttar_Pradesh"] = 3200,
["Module:Location_map/data/India_West_Bengal"] = 3300,
["Module:Location_map/data/Indiana"] = 3400,
["Module:Location_map/data/Iowa"] = 3000,
["Module:Location_map/data/Iran"] = 50000,
["Module:Location_map/data/Ireland"] = 3700,
["Module:Location_map/data/Italy"] = 12000,
["Module:Location_map/data/Japan"] = 14000,
["Module:Location_map/data/Maine"] = 2100,
["Module:Location_map/data/Maryland"] = 2000,
["Module:Location_map/data/Massachusetts"] = 4700,
["Module:Location_map/data/Mexico"] = 3400,
["Module:Location_map/data/Michigan"] = 3800,
["Module:Location_map/data/Minnesota"] = 4600,
["Module:Location_map/data/Nepal"] = 4600,
["Module:Location_map/data/Netherlands"] = 3000,
["Module:Location_map/data/New_York"] = 8100,
["Module:Location_map/data/North_Carolina"] = 3500,
["Module:Location_map/data/Norway"] = 4500,
["Module:Location_map/data/Ohio"] = 2300,
["Module:Location_map/data/Pakistan"] = 2900,
["Module:Location_map/data/Pennsylvania"] = 5900,
["Module:Location_map/data/Peru"] = 2900,
["Module:Location_map/data/Philippines"] = 3100,
["Module:Location_map/data/Poland"] = 53000,
["Module:Location_map/data/Queensland"] = 2200,
["Module:Location_map/data/Romania"] = 5900,
["Module:Location_map/data/Russia"] = 26000,
["Module:Location_map/data/Russia_Bashkortostan"] = 4500,
["Module:Location_map/data/Russia_Vladimir_Oblast"] = 2200,
["Module:Location_map/data/Russia_Vologda_Oblast"] = 4800,
["Module:Location_map/data/Serbia"] = 4000,
["Module:Location_map/data/Slovakia"] = 2100,
["Module:Location_map/data/Slovenia"] = 6700,
["Module:Location_map/data/South_Africa"] = 3200,
["Module:Location_map/data/Spain"] = 7700,
["Module:Location_map/data/Sweden"] = 2800,
["Module:Location_map/data/Switzerland"] = 6200,
["Module:Location_map/data/Syria"] = 2200,
["Module:Location_map/data/Texas"] = 3400,
["Module:Location_map/data/Turkey"] = 18000,
["Module:Location_map/data/USA"] = 110000,
["Module:Location_map/data/USA_Alabama"] = 2300,
["Module:Location_map/data/USA_Alaska"] = 2100,
["Module:Location_map/data/USA_Arizona"] = 2100,
["Module:Location_map/data/USA_Arkansas"] = 3500,
["Module:Location_map/data/USA_California"] = 7800,
["Module:Location_map/data/USA_Colorado"] = 2200,
["Module:Location_map/data/USA_Florida"] = 3300,
["Module:Location_map/data/USA_Georgia"] = 2000,
["Module:Location_map/data/USA_Illinois"] = 3700,
["Module:Location_map/data/USA_Indiana"] = 3600,
["Module:Location_map/data/USA_Iowa"] = 3200,
["Module:Location_map/data/USA_Kentucky"] = 3200,
["Module:Location_map/data/USA_Maine"] = 2200,
["Module:Location_map/data/USA_Maryland"] = 2600,
["Module:Location_map/data/USA_Massachusetts"] = 5000,
["Module:Location_map/data/USA_Michigan"] = 4200,
["Module:Location_map/data/USA_Minnesota"] = 5000,
["Module:Location_map/data/USA_Missouri"] = 2100,
["Module:Location_map/data/USA_New_Jersey"] = 2900,
["Module:Location_map/data/USA_New_York"] = 9100,
["Module:Location_map/data/USA_North_Carolina"] = 4300,
["Module:Location_map/data/USA_Ohio"] = 2600,
["Module:Location_map/data/USA_Oregon"] = 2600,
["Module:Location_map/data/USA_Pennsylvania"] = 7100,
["Module:Location_map/data/USA_Texas"] = 3800,
["Module:Location_map/data/USA_Virginia"] = 5100,
["Module:Location_map/data/USA_Washington"] = 3000,
["Module:Location_map/data/USA_West_Virginia"] = 4400,
["Module:Location_map/data/USA_Wisconsin"] = 2700,
["Module:Location_map/data/Ukraine"] = 3300,
["Module:Location_map/data/United_Kingdom_Greater_London"] = 2200,
["Module:Location_map/data/Virginia"] = 4000,
["Module:Location_map/data/Washington"] = 2200,
["Module:Location_map/data/West_Virginia"] = 4100,
["Module:Location_map/data/Wisconsin"] = 2300,
["Module:Location_map/data/doc"] = 6400,
["Module:Location_map/info"] = 6400,
["Module:Location_map/multi"] = 29000,
["Module:Location_map/styles.css"] = 742000,
["Module:London_Gazette_util"] = 33000,
["Module:Lua_banner"] = 9900,
}
85197ddfd1dd0dc8edfd3b21c138215cdc658bbd
Module:Transclusion count/data/M
828
991
3063
2179
2023-11-05T05:10:29Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 4000,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 834000,
["MONTHNUMBER"] = 852000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3800,
["MacTutor"] = 2000,
["Main"] = 343000,
["Main_article"] = 30000,
["Main_articles"] = 2000,
["Main_other"] = 9610000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9700,
["Main_page_image/ITN/styles.css"] = 2700,
["Main_page_image/TFA"] = 4900,
["Maintenance_category"] = 38000,
["Malay_name"] = 2300,
["Map_requested"] = 6600,
["Map_requested/Category_helper"] = 6500,
["Maplink"] = 29000,
["Maplink-road"] = 6100,
["Marriage"] = 74000,
["Marriage/doc"] = 73000,
["Marriage/styles.css"] = 74000,
["Math"] = 9800,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 249000,
["Maybe_free_media"] = 12000,
["Mbox"] = 3010000,
["Mdash"] = 8900,
["MeSH_name"] = 6100,
["Medal"] = 114000,
["MedalBottom"] = 17000,
["MedalBronze"] = 55000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3200,
["MedalCountry"] = 79000,
["MedalGold"] = 54000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3600,
["Merged-from"] = 17000,
["Merged-to"] = 19000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7400,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2200,
["MilHist"] = 5200,
["Military_navigation"] = 84000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5700,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 7500,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3500,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7100,
["Monthyear"] = 72000,
["Monthyear-1"] = 71000,
["MoreInfo"] = 2000,
["More_citations_needed"] = 368000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2300,
["More_references"] = 3100,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7400,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 212000,
["Multiple_image"] = 51000,
["Multiple_image/styles.css"] = 51000,
["Multiple_issues"] = 123000,
["Multiple_issues/styles.css"] = 123000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5200,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 96000,
["Mvar"] = 7100,
["Mw_lang"] = 80000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 432000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18100000,
["Module:Message_box/ambox.css"] = 3130000,
["Module:Message_box/cmbox.css"] = 426000,
["Module:Message_box/configuration"] = 9590000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 928000,
["Module:Message_box/ombox.css"] = 1590000,
["Module:Message_box/tmbox.css"] = 12300000,
["Module:Military_navigation"] = 84000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1260000,
["Module:Multiple_image"] = 51000,
["Module:Music_ratings"] = 96000,
["Module:Mw_lang"] = 80000,
}
3398be67b8a99e9a751d47de4b690c5775cf1147
3064
3063
2023-11-09T17:59:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]]
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 4000,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 834000,
["MONTHNUMBER"] = 852000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3800,
["MacTutor"] = 2000,
["Main"] = 343000,
["Main_article"] = 30000,
["Main_articles"] = 2000,
["Main_other"] = 9610000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9700,
["Main_page_image/ITN/styles.css"] = 2700,
["Main_page_image/TFA"] = 4900,
["Maintenance_category"] = 38000,
["Malay_name"] = 2300,
["Map_requested"] = 6600,
["Map_requested/Category_helper"] = 6500,
["Maplink"] = 29000,
["Maplink-road"] = 6100,
["Marriage"] = 74000,
["Marriage/doc"] = 73000,
["Marriage/styles.css"] = 74000,
["Math"] = 9800,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 249000,
["Maybe_free_media"] = 12000,
["Mbox"] = 3010000,
["Mdash"] = 8900,
["MeSH_name"] = 6100,
["Medal"] = 114000,
["MedalBottom"] = 17000,
["MedalBronze"] = 55000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3200,
["MedalCountry"] = 79000,
["MedalGold"] = 54000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3600,
["Merged-from"] = 17000,
["Merged-to"] = 19000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7400,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2200,
["MilHist"] = 5200,
["Military_navigation"] = 84000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5700,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 7500,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3500,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7100,
["Monthyear"] = 72000,
["Monthyear-1"] = 71000,
["MoreInfo"] = 2000,
["More_citations_needed"] = 368000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2300,
["More_references"] = 3100,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7400,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 212000,
["Multiple_image"] = 51000,
["Multiple_image/styles.css"] = 51000,
["Multiple_issues"] = 123000,
["Multiple_issues/styles.css"] = 123000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5200,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 96000,
["Mvar"] = 7100,
["Mw_lang"] = 80000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 432000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18100000,
["Module:Message_box/ambox.css"] = 3130000,
["Module:Message_box/cmbox.css"] = 426000,
["Module:Message_box/configuration"] = 9590000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 928000,
["Module:Message_box/ombox.css"] = 1590000,
["Module:Message_box/tmbox.css"] = 12300000,
["Module:Military_navigation"] = 84000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1260000,
["Module:Multiple_image"] = 51000,
["Module:Music_ratings"] = 96000,
["Module:Mw_lang"] = 80000,
}
3398be67b8a99e9a751d47de4b690c5775cf1147
Template:Infobox country
10
241
3266
1254
2023-11-05T15:16:38Z
wikipedia>Primefac
0
add p/s22 per talk page, simplify param check
wikitext
text/x-wiki
{{infobox
|templatestyles = Template:Infobox country/styles.css
| bodyclass = ib-country vcard
| aboveclass = adr
| above =
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{conventional_long_name|}}}
|<div class="fn org country-name">{{{conventional_long_name|}}}</div>
}}{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
|<div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}}}</div>
}}<!--
-->{{#ifeq:{{{micronation|}}}|yes
|<span class="fn org">[[Micronation]]</span>
}}
}}
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
| class2 = anthem
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}
|'''Anthem:''' {{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}
}}{{#if:{{{anthems|}}}
|'''Anthems:''' {{{anthems}}}
}}{{#if:{{{royal_anthem|}}}
|
<div class="ib-country-anthem">'''[[Royal anthem]]:''' {{{royal_anthem}}}</div>
}}{{#if:{{{flag_anthem|}}}
|
<div class="ib-country-anthem">'''[[Flag anthem]]:''' {{{flag_anthem}}}</div>
}}{{#if:{{{national_march|}}}
|
<div class="ib-country-anthem">'''National march:''' {{{national_march}}}</div>
}}{{#if:{{{territorial_anthem|}}}
|
<div class="ib-country-anthem">'''Territorial anthem:''' {{{territorial_anthem}}}</div>
}}{{#if:{{{regional_anthem|}}}
|
<div class="ib-country-anthem">'''Regional anthem:''' {{{regional_anthem}}}</div>
}}{{#if:{{{state_anthem|}}}
|
<div class="ib-country-anthem">'''State anthem:''' {{{state_anthem}}}</div>
}}{{#if:{{{march|}}}
|
<div class="ib-country-anthem">'''March:''' {{{march}}}</div>
}}
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}
|{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}
| '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!--
-->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}
}}
| data4 = {{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }}
| data5 = {{#if:{{{image_map2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }}
| label6 = Status
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}
| label7 = Location
| data7 = {{{loctext|}}}
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!------------------------------------------
capital is largest_city/_settlement:
-------------------------------------------
--><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div>
}}
| data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}
| label9 = Capital-in-exile
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative center }}
| data10 = {{#switch:{{{admin_center|}}}
|capital | =
|[[{{{capital|}}}]] =
|{{{capital|}}} =
|#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}
| label11 = Largest {{{largest_settlement_type|city}}}
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!-- nothing already appears above -->
| {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}
}}
| rowclass12 = mergedtoprow
| label12 = Official languages
| data12 = {{{official_languages|}}}
| rowclass13 = mergedrow
| label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}} languages</span>
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}
| rowclass14 = mergedrow
| label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national languages</span>
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}
| rowclass15 = mergedrow
| label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional languages</span>
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}
| label16 = Common languages
| data16 = {{{common_languages|}}}
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes
|{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}
|{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}
| label17 ={{#ifeq:{{{languages_sub|}}}|yes
|<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other languages }}</div>
|{{if empty| {{{languages_type|}}} | Other languages }}
}}
| data17 = {{{languages|}}}
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes
|<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other languages }}</div>
|{{if empty|{{{languages2_type|}}} | Other languages }}
}}
| data18 = {{{languages2|}}}
| label19 = [[Ethnic group|Ethnic groups]] <!--
-->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}}
| data19 = {{{ethnic_groups|}}}
| label20 = Religion <!--
-->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}}
| data20 = {{{religion|}}}
| label21 = [[Demonym|Demonym(s)]]
| data21 = {{#if:{{{demonym|}}}
|{{#ifexist:{{{demonym}}} people
| [[{{{demonym}}} people|{{{demonym}}}]]
| {{{demonym}}}
}}
}}
| label22 = Type
| data22 = {{{org_type|}}}
| label23 = {{if empty|{{{membership_type|}}} | Membership }}
| data23 = {{{membership|}}}
| label24 = {{#if:{{{government_type|}}}
| {{#if:{{{politics_link|}}}
| [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!--
-->}}<!--
-->}}<!--
-->}}
| data24 = {{{government_type|}}}
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}
| {{#if:{{{name|}}}{{{membership|}}}
| <!--template being used for geopolitical org:-->Leaders
| <!--template being used for country/territory: -->Government
}}
}} }}
| rowclass26 = mergedrow
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}
| rowclass27 = mergedrow
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}
| data27 = {{#if:{{{title_leader|}}}| }}
| rowclass28 = mergedrow
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}
| rowclass29 = mergedrow
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}
| data29 = {{#if:{{{title_representative|}}}| }}
| rowclass30 = mergedrow
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}
| rowclass31 = mergedrow
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}
| data31 = {{#if:{{{title_deputy|}}}| }}
| rowclass32 = mergedrow
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}
| label40 = Legislature
| data40 = {{{legislature|}}}
| rowclass41 = mergedrow
| label41 = <div class="ib-country-fake-li">• {{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div>
| data41 = {{{upper_house|{{{house1|}}}}}}
| rowclass42 = mergedbottomrow
| label42 = <div class="ib-country-fake-li">• {{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div>
| data42 = {{{lower_house|{{{house2|}}}}}}
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}
|{{#if:{{{sovereignty_type|}}}
| {{{sovereignty_type}}}<!--
-->{{#if:{{{sovereignty_note|}}} | <div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}}
| {{#if:{{{established|}}}| | Establishment }}
}} }}
| label44 = Establishment
| data44 = {{#if:{{{sovereignty_type|}}}
|
|{{{established|}}}
}}
| label45 = {{#if:{{{era|}}}|Historical era|History}}
| data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}| }}}}
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }}
| rowclass60 = mergedtoprow
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}
| {{#if:{{{area_link|}}}
| [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!--
-->}}<!--
-->}} }}
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label61 = <div class="ib-country-fake-li">• {{{area_label|Total}}}{{{FR_foot4|}}}</div>
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}
|{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}
|{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_ha|}}}{{{area_acre|}}}
|{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}
}}
}}{{{area_footnote|}}}{{#if:{{{area_rank|}}} | ([[List of countries and dependencies by area|{{{area_rank}}}]]) }}
}}
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label62 = <div class="ib-country-fake-li">• Land</div>
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}
|{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}
|{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}
|{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}
}}
}}{{{area_land_footnote|}}}
}}
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label63 = <div class="ib-country-fake-li">• Water</div>
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}
|{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}
|{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}
|{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}
}}
}}{{{area_water_footnote|}}}
}}
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label64 = <div class="ib-country-fake-li">• Water (%)</div>
| data64 = {{{percent_water|}}}
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label65 = <div class="ib-country-fake-li">• {{{area_label2|}}}</div>
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label66 = <div class="ib-country-fake-li">• {{{area_label3|}}}</div>
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}
| rowclass72 = mergedrow
| label72 = <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }}
| rowclass73 = mergedrow
| label73 = <div class="ib-country-fake-li2">• [[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div>
| data73 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}
|{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}
}}
}}
| rowclass89 = mergedbottomrow
| label89 = <div class="ib-country-fake-li2">• [[Cadastre]]{{{FR_foot3|}}}</div>
| data89 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}
| {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}
}}
}}
| rowclass90 = mergedtoprow
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}
|{{#if:{{{population_link|}}}
| {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!--
-->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!--
-->| Population<!--
-->}}<!--
-->}} }}
| rowclass91 = mergedrow
| label91 = <div class="ib-country-fake-li">• {{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div>
| data91 = {{#if:{{{population_estimate|}}}
|{{{population_estimate}}}<!--
-->{{#if:{{{population_estimate_rank|}}} | ([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}
}}
| rowclass92 = mergedrow
| label92= <div class="ib-country-fake-li">• {{{population_label2|}}}</div>
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}
| rowclass93= mergedrow
| label93= <div class="ib-country-fake-li">• {{{population_label3|}}}</div>
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}
| rowclass94= mergedrow
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }}
| rowclass95= mergedrow
| label95= <div class="ib-country-fake-li">• {{#if:{{{population_census_year|}}} |{{{population_census_year}}} census|Census}}</div>
| data95= {{#if:{{{population_census|}}}
|{{{population_census}}}<!--
-->{{#if:{{{population_census_rank|}}} | ([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}
}}
| rowclass96= mergedrow
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1= ({{{FR_total_population_estimate_year}}})}}}}}}
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}}
| rowclass97 = mergedrow
| label97= <div class="ib-country-fake-li">• Total{{{FR_foot|}}}</div>
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}
|{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}| ([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}
}} }}
| rowclass98 = mergedrow
| label98= <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}
| ([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}
}}
| rowclass99 = mergedbottomrow
| label99= <div class="ib-country-fake-li">• Density{{{FR_foot5|}}}</div>
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}
| {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!--
-->{{#if:{{{population_density_rank|}}} | ([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}
}}
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}
| label100 = Membership
| data100= {{{nummembers|}}}
| rowclass101= mergedtoprow
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|([[Purchasing power parity|PPP]])}}
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}
|{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}} }}estimate
}}
| rowclass102= mergedrow
| label102= <div class="ib-country-fake-li">• Total</div>
| data102= {{#if:{{{GDP_PPP|}}}
|{{{GDP_PPP}}}<!--
-->{{#if:{{{GDP_PPP_rank|}}} | ([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}
}}
| rowclass103= mergedbottomrow
| label103= <div class="ib-country-fake-li">• Per capita</div>
| data103= {{#if:{{{GDP_PPP_per_capita|}}}
|{{{GDP_PPP_per_capita}}}<!--
-->{{#if:{{{GDP_PPP_per_capita_rank|}}} | ([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}
}}
| rowclass104= mergedtoprow
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|(nominal)}}
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}
|{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}} }}estimate
}}
| rowclass105= mergedrow
| label105= <div class="ib-country-fake-li">• Total</div>
| data105= {{#if:{{{GDP_nominal|}}}
|{{{GDP_nominal}}}<!--
-->{{#if:{{{GDP_nominal_rank|}}} | ([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}
}}
| rowclass106= mergedbottomrow
| label106= <div class="ib-country-fake-li">• Per capita</div>
| data106= {{#if:{{{GDP_nominal_per_capita|}}}
| {{{GDP_nominal_per_capita}}}<!--
-->{{#if:{{{GDP_nominal_per_capita_rank|}}} | ([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}
}}
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} | {{nobold|1=({{{Gini_year}}})}}}}
| data107= {{#if:{{{Gini|}}}
| {{#switch:{{{Gini_change|}}}
|increase = {{increaseNegative}} <!--
-->|decrease = {{decreasePositive}} <!--
-->|steady = {{steady}} <!--
-->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!--
---------Evaluate and add Gini category:----------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{Gini}}}>100 <!--
-->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=46 <!--
-->| {{color|darkred|high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=30 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{Gini}}}>=0 <!--
-->| {{color|forestgreen|low}}<!--
-->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
-----------Add Gini_rank (if supplied):----------
-->{{#if:{{{Gini_rank|}}}
| · [[List of countries by income equality|{{{Gini_rank}}}]]<!--
-->}}<!--
-->}}
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} | {{nobold|1=({{{HDI_year}}})}}}}
| data108= {{#if:{{{HDI|}}}
| {{#switch:{{{HDI_change|}}}
|increase = {{increase}} <!--
-->|decrease = {{decrease}} <!--
-->|steady = {{steady}} <!--
-->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!--
---------Evaluate and add HDI category:---------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{HDI}}}>1 <!--
-->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{HDI}}}>0.799 <!--
-->| {{color|darkgreen|very high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.699 <!--
-->| {{color|forestgreen|high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.549 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{HDI}}}>=0.000<!--
-->| {{color|red|low}}<!--
-->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
----------Add HDI_rank (if supplied):-----------
-->{{#if:{{{HDI_rank|}}}
| · [[List of countries by Human Development Index|{{{HDI_rank}}}]]<!--
-->}}<!--
-->}}
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}
| data109= {{#if:{{{currency|}}}
| {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}
}}
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}
| label119= Time zone
| data119= {{#if:{{{utc_offset|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}
|{{{time_zone|}}}
}}
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}
| label120= <div class="ib-country-fake-li">• Summer ([[Daylight saving time|DST]])</div>
| data120= {{#if:{{{utc_offset_DST|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}
|{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}
}}
| rowclass121= mergedbottomrow
| label121= <nowiki />
| data121= {{{DST_note|}}}
| label122 = [[Antipodes]]
| data122= {{{antipodes|}}}
| label123 = Date format
| data123= {{{date_format|}}}
| label125= [[Left- and right-hand traffic|Driving side]]
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}
| label126= {{#if:{{{calling_code|}}}
|{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]
| Calling code
}}
}}
| data126= {{{calling_code|}}}
| label127= [[ISO 3166|ISO 3166 code]]
| data127= {{#switch:{{{iso3166code|}}}
|omit = <!--(do nothing)-->
| = <!--if iso3166code is not supplied:
-->{{#if:{{{common_name|}}}
| {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}
| [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]
}}
}}
|#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]
}}
| label128= [[Country code top-level domain|Internet TLD]]
| data128= {{{cctld|}}}
| data129 = {{#if:{{{official_website|}}}
|<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div>
}}
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}
| {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}}
}}
| data134 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_p22={{{flag_p22|}}}|image_p22={{{image_p22|}}}|p22={{{p22|}}}|border_p22={{{border_p22|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}|flag_s22={{{flag_s22|}}}|image_s22={{{image_s22|}}}|s22={{{s22|}}}|border_s22={{{border_s22|}}}}}
}}
| label135 = Today part of
| data135 = {{{today|}}}
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-alpha">
{{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li>
}}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li>
}}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li>
}}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li>
}}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li>
}}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li>
}}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li>
}}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}}
</ol></div>}}
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-num">
{{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li>
}}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li>
}}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li>
}}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li>
}}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li>
}}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li>
}}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li>
}}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}}
</ol></div>}}
| data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}}
| belowclass = mergedtoprow noprint
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | regexp1 = border_[ps][%d]+ | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | regexp2 = date_event[%d]+ | date_format | date_post | date_pre | date_start | demonym | regexp3 = deputy[%d]+ | drives_on | DST_note | DST | empire | englishmotto | era | regexp4 = established_date[%d]+ | regexp5 = established_event[%d]+ | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | regexp6 = event[%d]+ | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | regexp7 = flag_[ps][%d]+ | flag_size | flag_type | flag_type_article | flag_width | flag2_border | regexp8 = footnote_[a-h] | regexp9 = footnote[%d]+ | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | regexp10 = image_[ps][%d]+ | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | regexp11 = leader_name[%d]+ | regexp12 = leader_title[%d]+ | regexp13 = leader[%d]+ | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | regexp14 = [ps][%d]+ | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | regexp15 = ref_area[%d]+ | regexp16 = ref_pop[%d]+ | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | regexp17 = representative[%d]+ | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | sovereignty_note | sovereignty_type | regexp18 = stat_area[%d]+ | regexp19 = stat_pop[%d]+ | regexp20 = stat_year[%d]+ | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | regexp21 = year_deputy[%d]+ | year_end | year_exile_end | year_exile_start | regexp22 = year_leader[%d]+ | regexp23 = year_representative[%d]+ | year_start}}{{main other|
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]
}}}}<!--
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.
-->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}
}}<!--End of former country tracking cats--><noinclude>
{{documentation}}
</noinclude>
7b1a18da8309a84e21d417a3332665cdc72535c5
Module:Citation/CS1/Configuration
828
880
3069
1951
2023-11-06T02:06:31Z
wikipedia>Trappist the monk
0
bump s2cid;
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates
--[[--------------------------< S E T T I N G S >--------------------------------------------------------------
boolean settings used to control various things. these setting located here to make them easy to find
]]
-- these settings local to this module only
local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki
local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki;
-- manual translation required else; ; always false at en.wiki
-- these settings exported to other modules
local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki
local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces identifiers for namespaces that will not be included in citation error categories.
Same as setting notracking = true by default.
For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered
list of namespace names and their associated identifiers:
{{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}}
]]
uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id
for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids
uncategorized_namespaces_t[k] = true;
end
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Archived from $1 on $2',
['archived-live'] = '$1 from the original on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1 ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['mismatch'] = '<code class="cs1-code">|$1=</code> / <code class="cs1-code">|$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Retrieved $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Translated by $1',
['type'] = ' ($1)', -- for titletype
['written'] = 'Written at $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2, no. $3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
['issue'] = '$1 No. $2', -- $1 is sepc
['art'] = '$1 Art. $2', -- $1 is sepc; for {{cite conference}} only
['vol-art'] = '$1 Vol. $2, art. $3', -- sepc, volume, article-number; for {{cite conference}} only
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['j-article-num'] = ' $1', -- TODO: any punctuation here? static text?
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 p. $2", -- $1 is sepc
['pp-prefix'] = "$1 pp. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = 'minutes in',
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- categories
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
}
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preview mode.
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.
]]
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
['arxiv'] = 'arXiv',
['audio-visual'] = 'AV media',
['AV-media-notes'] = 'AV media notes',
['biorxiv'] = 'bioRxiv',
['citeseerx'] = 'CiteSeerX',
['encyclopaedia'] = 'encyclopedia',
['mailinglist'] = 'mailing list',
['medrxiv'] = 'medRxiv',
['pressrelease'] = 'press release',
['ssrn'] = 'SSRN',
['techreport'] = 'tech report',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< P R E S E N T A T I O N >------------------------
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
]]
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc
['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored)
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items
['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >---------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ArticleNumber'] = 'article-number',
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifier
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = 'conference-format',
['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = 'edition',
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['Inset'] = 'inset',
['Issue'] = {'issue', 'number'},
['Language'] = {'language', 'lang'},
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = 'name-list-style',
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry',
'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper',
'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = 'time-caption',
['Title'] = 'title', -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = {'title-note', 'department'},
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution',
'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper',
'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given",
"subject-first#", "subject#-first", "subject-given#", "subject#-given",
"given#"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname",
"subject-last#", "subject#-last", "subject-surname#", "subject#-surname",
"author#", 'host#', "subject#", "surname#"},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#",
"subject#-link", "authorlink#", "author#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first',
'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last',
'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#",
"editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link"},
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first',
'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last',
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first',
'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last',
'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< P U N C T _ S K I P >---------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
}
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
}
local function build_skip_table (skip_t, meta_params)
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
skip_t[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
skip_t[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
skip_t[param] = 1; -- add param name without enumerator marker
end
end
end
end
return skip_t;
end
local punct_skip = {};
local url_skip = {};
--[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >----------
this is a list of tlds that are known to have single-letter second-level domain names. This list does not include
ccTLDs which are accepted in is_domain_name().
]]
local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'};
--[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------
This table is primarily here to support internationalization. Translations in
this table are used, for example, when an error message, category name, etc.,
is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
local special_case_translation = {
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots or reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
-- generic titles and patterns in this table should be lowercase only
-- leave ['local'] nil except when there is a matching generic title in your language
-- boolean 'true' for plain-text searches; 'false' for pattern searches
['generic_titles'] = {
['accept'] = {
},
['reject'] = {
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains.com', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'subscribe to read', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', false}, ['local'] = nil},
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
{['en'] = {'log into facebook', true}, ['local'] = nil},
{['en'] = {'login • instagram', true}, ['local'] = nil},
{['en'] = {'redirecting...', true}, ['local'] = nil},
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
{['en'] = {'webcite query result', true}, ['local'] = nil},
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
}
},
-- boolean 'true' for plain-text searches, search string must be lowercase only
-- boolean 'false' for pattern searches
-- leave ['local'] nil except when there is a matching generic name in your language
['generic_names'] = {
['accept'] = {
{['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil},
},
['reject'] = {
{['en'] = {'about us', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil},
{['en'] = {'allmusic', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil},
{['en'] = {'business', true}, ['local'] = nil},
{['en'] = {'cnn', true}, ['local'] = nil},
{['en'] = {'collaborator', true}, ['local'] = nil},
{['en'] = {'contributor', true}, ['local'] = nil},
{['en'] = {'contact us', true}, ['local'] = nil},
{['en'] = {'directory', true}, ['local'] = nil},
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil},
{['en'] = {'facebook', true}, ['local'] = nil},
{['en'] = {'google', true}, ['local'] = nil},
{['en'] = {'home page', true}, ['local'] = nil},
{['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil},
{['en'] = {'instagram', true}, ['local'] = nil},
{['en'] = {'interviewer', true}, ['local'] = nil},
{['en'] = {'linkedIn', true}, ['local'] = nil},
{['en'] = {'^[Nn]ews$', false}, ['local'] = nil},
{['en'] = {'pinterest', true}, ['local'] = nil},
{['en'] = {'policy', true}, ['local'] = nil},
{['en'] = {'privacy', true}, ['local'] = nil},
{['en'] = {'reuters', true}, ['local'] = nil},
{['en'] = {'translator', true}, ['local'] = nil},
{['en'] = {'tumblr', true}, ['local'] = nil},
{['en'] = {'twitter', true}, ['local'] = nil},
{['en'] = {'site name', true}, ['local'] = nil},
{['en'] = {'statement', true}, ['local'] = nil},
{['en'] = {'submitted', true}, ['local'] = nil},
{['en'] = {'super.?user', false}, ['local'] = nil},
{['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil},
{['en'] = {'verfasser', true}, ['local'] = nil},
}
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names.
The code in Date_validation will look first in the local table for valid date names.
If date names are not found in the local table, the code will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is
required when the date-name translation function date_name_xlate() is used.
In these tables, season numbering is defined by
Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard
defines various divisions using numbers 21-41. CS1|2 only supports generic seasons.
EDTF does support the distinction between north and south hemisphere seasons
but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) range of uses for a while.
local_date_names_from_mediawiki is a boolean. When set to:
true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short']
false – module will *not* fetch local month names from MediaWiki
Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test
the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted):
=mw.dumpObject (p.date_names['local'])
While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names
from MediaWiki. Those must be translated manually.
]]
local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short']
-- when true, module fetches long and short month names from MediaWiki
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
-- when local_date_names_from_mediawiki = false
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc.
['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc.
['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled
local long_t = {};
local short_t = {};
for i=1, 12 do -- loop 12x and
local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i
long_t[name] = i; -- save it
name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i
short_t[name] = i; -- save it
end
date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation
date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation
end
-- create inverted date-name tables for reformatting and/or translation
for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do
for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i
date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
end
if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled
local digits_t = {};
for i=0, 9 do -- loop 10x and
digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value
end
date_names['local_digits'] = digits_t;
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local title_object = mw.title.getCurrentTitle();
local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used
if 10 ~= title_object.namespace then -- all namespaces except Template
content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
end
local function get_date_format ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
local use_dates_template = content:match ('%b{}', start); -- get the whole template
if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df; -- TODO: add this to <global_cs1_config_t>?
--[[-----------------< V O L U M E , I S S U E , P A G E S >------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[
These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter
names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1
templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must
not support |volume=.
]]
local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used
'website', 'mailinglist', 'script-website',
}
local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used
'journal', 'magazine', 'newspaper', 'periodical', 'work',
'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work',
}
--[[
Patterns for finding extra text in |volume=, |issue=, |page=, |pages=
]]
local vol_iss_pg_patterns = {
good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not
bad_ppatterns = { -- patterns for |page= and |pages=
'^[Pp][PpGg]?%.?[ %d]',
'^[Pp][Pp]?%. ', -- from {{p.}} and {{pp.}} templates
'^[Pp]ages?',
'^[Pp]gs.?',
},
vpatterns = { -- patterns for |volume=
'^volumes?',
'^vols?[%.:=]?'
},
ipatterns = { -- patterns for |issue=
'^issues?',
'^iss[%.:=]?',
'^numbers?',
'^nos?%A', -- don't match 'november' or 'nostradamus'
'^nr[%.:=]?',
'^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here)
}
}
--[[--------------------------< K E Y W O R D S >-------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[-------------------< K E Y W O R D S T A B L E >--------------------------
this is a list of keywords; each key in the list is associated with a table of
synonymous keywords possibly from different languages.
for I18N: add local-language keywords to value table; do not change the key.
For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis,
it is recommended that the English keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[------------------------< X L A T E _ K E Y W O R D S >---------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[----------------< M A K E _ K E Y W O R D S _ L I S T >---------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[----------------< K E Y W O R D S _ L I S T S >-----------------------------
this is a list of lists of valid keywords for the various parameters in [key].
Generally the keys in this table are the canonical en.wiki parameter names though
some are contrived because of use in multiple differently named parameters:
['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the
appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the
parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< C S 1 _ C O N F I G _ G E T >--------------------------------------------------
fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t>
no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked.
Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors,
DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters
accept numeric values only (|display-authors=etal and the like is not supported).
]]
local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table?
local function get_cs1_config ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else
if start then
local cs1_config_template = content:match ('%b{}', start); -- get the whole template
if not cs1_config_template then
return nil;
end
local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe)
table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair
local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'};
local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here
for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents
if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence,
for _, param in ipairs (aliases[meta_param]) do -- extract its contents
meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t>
end
else
meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t>
end
end
local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters
for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs
for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords
keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map
end
end
for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t>
local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value
if k then
if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters
if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal'
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table
end
else
if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table
end
end
end
end
end
end
get_cs1_config (); -- fill <global_cs1_config_t>
--[[---------------------< S T R I P M A R K E R S >----------------------------
Common pattern definition location for stripmarkers so that we don't have to go
hunting for them if (when) MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[------------< I N V I S I B L E _ C H A R A C T E R S >---------------------
This table holds non-printing or invisible characters indexed either by name or
by Unicode group. Values are decimal representations of UTF-8 codes. The table
is organized as a table of tables because the Lua pairs keyword returns table
data in an arbitrary order. Here, we want to process the table from top to bottom
because the entries at the top of the table are also found in the ranges specified
by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the
delete characters. The nowiki stripmarker is not an error but some others are
because the parameter values that include them become part of the template's
metadata before stripmarker replacement.
]]
local invisible_defs = {
del = '\127', -- used to distinguish between stripmarker and del char
zwj = '\226\128\141', -- used with capture because zwj may be allowed
}
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj
characters must be left in. This pattern covers all of the unicode characters
for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
-- list of emoji that use a zwj character (U+200D) to combine with another emoji
-- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06
-- table created by: [[:en:Module:Make emoji zwj table]]
local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx
[9760] = true, -- U+2620 ☠ skull and crossbones
[9792] = true, -- U+2640 ♀ female sign
[9794] = true, -- U+2642 ♂ male sign
[9877] = true, -- U+2695 ⚕ staff of aesculapius
[9878] = true, -- U+2696 ⚖ scales
[9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign
[9992] = true, -- U+2708 ✈ airplane
[10052] = true, -- U+2744 ❄ snowflake
[10084] = true, -- U+2764 ❤ heavy black heart
[11035] = true, -- U+2B1B ⬛ black large square
[127752] = true, -- U+1F308 🌈 rainbow
[127787] = true, -- U+1F32B 🌫 fog
[127806] = true, -- U+1F33E 🌾 ear of rice
[127859] = true, -- U+1F373 🍳 cooking
[127868] = true, -- U+1F37C 🍼 baby bottle
[127876] = true, -- U+1F384 🎄 christmas tree
[127891] = true, -- U+1F393 🎓 graduation cap
[127908] = true, -- U+1F3A4 🎤 microphone
[127912] = true, -- U+1F3A8 🎨 artist palette
[127979] = true, -- U+1F3EB 🏫 school
[127981] = true, -- U+1F3ED 🏭 factory
[128102] = true, -- U+1F466 👦 boy
[128103] = true, -- U+1F467 👧 girl
[128104] = true, -- U+1F468 👨 man
[128105] = true, -- U+1F469 👩 woman
[128139] = true, -- U+1F48B 💋 kiss mark
[128168] = true, -- U+1F4A8 💨 dash symbol
[128171] = true, -- U+1F4AB 💫 dizzy symbol
[128187] = true, -- U+1F4BB 💻 personal computer
[128188] = true, -- U+1F4BC 💼 brief case
[128293] = true, -- U+1F525 🔥 fire
[128295] = true, -- U+1F527 🔧 wrench
[128300] = true, -- U+1F52C 🔬 microscope
[128488] = true, -- U+1F5E8 🗨 left speech bubble
[128640] = true, -- U+1F680 🚀 rocket
[128658] = true, -- U+1F692 🚒 fire engine
[129309] = true, -- U+1F91D 🤝 handshake
[129455] = true, -- U+1F9AF 🦯 probing cane
[129456] = true, -- U+1F9B0 🦰 emoji component red hair
[129457] = true, -- U+1F9B1 🦱 emoji component curly hair
[129458] = true, -- U+1F9B2 🦲 emoji component bald
[129459] = true, -- U+1F9B3 🦳 emoji component white hair
[129466] = true, -- U+1F9BA 🦺 safety vest
[129468] = true, -- U+1F9BC 🦼 motorized wheelchair
[129469] = true, -- U+1F9BD 🦽 manual wheelchair
[129489] = true, -- U+1F9D1 🧑 adult
[129657] = true, -- U+1FA79 🩹 adhesive bandage
[129778] = true, -- U+1FAF2 🫲 leftwards hand
}
--[[----------------------< L A N G U A G E S U P P O R T >-------------------
These tables and constants support various language-specific functionality.
]]
--local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead
end
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests
local mw_languages_by_name_t = {};
for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language=
v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>]
if mw_languages_by_name_t[v] then -- when name already in the table
if 2 == #k or 3 == #k then -- if tag does not have subtags
mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name
end
else -- here when name not in the table
mw_languages_by_name_t[v] = k; -- so add name and matching tag
end
end
local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local)
if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
--[[--------------------< S C R I P T _ L A N G _ C O D E S >-------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character
language codes that apply only to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he',
'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn',
'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta',
'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh'
};
--[[---------------< L A N G U A G E R E M A P P I N G >----------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{}
lang_tag_remap{}:
key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with <tag>
only one language name per <tag>;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{})
may have multiple keys referring to a common preferred name and tag; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['fkv'] = 'Kven', -- MediaWiki returns Kvensk
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
}
--[[---------------< P R O P E R T I E S _ C A T E G O R I E S >----------------
Properties categories. These are used for investigating qualities of citations.
]]
local prop_cats = {
['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location-test'] = 'CS1 location test',
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[-------------------< T I T L E _ T Y P E S >--------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['document'] = 'Document',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['speech'] = 'Speech',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[===================<< E R R O R M E S S A G I N G >>======================
]]
--[[----------< E R R O R M E S S A G E S U P P L I M E N T S >-------------
I18N for those messages that are supplemented with additional specific text that
describes the reason for the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['invalid language code'] = 'invalid language code', -- |script-<param>=
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['missing prefix'] = 'missing prefix', -- |script-<param>=
['missing title part'] = 'missing title part', -- |script-<param>=
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['unknown language code'] = 'unknown language code', -- |script-<param>=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------< E R R O R _ C O N D I T I O N S >---------------------------
Error condition table. This table has two sections: errors at the top, maintenance
at the bottom. Maint 'messaging' does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the
code. For each ID, we specify a text message to display, an error category to
include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error
and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'CS1 errors: access-date without URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_date_missing_url = {
message = '<code class="cs1-code">|archive-date=</code> requires <code class="cs1-code">|archive-url=</code>',
anchor = 'archive_date_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_date_url_ts_mismatch = {
message = '<code class="cs1-code">|archive-date=</code> / <code class="cs1-code">|archive-url=</code> timestamp mismatch',
anchor = 'archive_date_url_ts_mismatch',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_asintld_missing_asin = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|asin=</code>', -- $1 is parameter name
anchor = 'asintld_missing_asin',
category = 'CS1 errors: ASIN TLD',
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_asin_tld = {
message = 'Check <code class="cs1-code">|asin-tld=</code> value',
anchor = 'bad_asin_tld',
category ='CS1 errors: ASIN TLD',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
message = 'Check date values in: $1', -- $1 is a parameter name list
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_jstor = {
message = 'Check <code class="cs1-code">|jstor=</code> value',
anchor = 'bad_jstor',
category = 'CS1 errors: JSTOR',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_medrxiv = {
message = 'Check <code class="cs1-code">|medrxiv=</code> value',
anchor = 'bad_medrxiv',
category = 'CS1 errors: medRxiv',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_osti = {
message = 'Check <code class="cs1-code">|osti=</code> value',
anchor = 'bad_osti',
category = 'CS1 errors: OSTI',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_rfc = {
message = 'Check <code class="cs1-code">|rfc=</code> value',
anchor = 'bad_rfc',
category = 'CS1 errors: RFC',
hidden = false
},
err_bad_s2cid = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'CS1 errors: URL',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: Zbl',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'CS1 errors: bare URL',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'CS1 errors: missing title',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'CS1 errors: requires URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name; $2 is the assigned value
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_embargo_missing_pmc = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|pmc=</code>', -- $1 is parameter name
anchor = 'embargo_missing_pmc',
category = 'CS1 errors: PMC embargo',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'CS1 errors: empty citation',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_extra_text_edition = {
message = '<code class="cs1-code">|edition=</code> has extra text',
anchor = 'extra_text_edition',
category = 'CS1 errors: extra text: edition',
hidden = false,
},
err_extra_text_issue = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_issue',
category = 'CS1 errors: extra text: issue',
hidden = false,
},
err_extra_text_pages = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_pages',
category = 'CS1 errors: extra text: pages',
hidden = false,
},
err_extra_text_volume = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_volume',
category = 'CS1 errors: extra text: volume',
hidden = true,
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'CS1 errors: format without URL',
hidden = false
},
err_generic_name = {
message = '<code class="cs1-code">|$1=</code> has generic name', -- $1 is parameter name
anchor = 'generic_name',
category = 'CS1 errors: generic name',
hidden = false,
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_medrxiv_missing = {
message = '<code class="cs1-code">|medrxiv=</code> required',
anchor = 'medrxiv_missing',
category = 'CS1 errors: medRxiv', -- same as bad medRxiv
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = true
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_missing_publisher = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1
anchor = 'missing_publisher',
category = 'CS1 errors: missing publisher',
hidden = false
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_periodical_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'periodical_ignored',
category = 'CS1 errors: periodical ignored',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'CS1 errors: redundant parameter',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: SSRN',
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'CS1 errors: unrecognized parameter',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = false
},
err_vancouver = {
message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >-------------------------------------
maint messages do not have a message (message = nil); otherwise the structure
is the same as error messages
]]
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_authors = {
message = nil,
anchor = 'authors',
category = 'CS1 maint: uses authors parameter',
hidden = true,
},
maint_bibcode = {
message = nil,
anchor = 'bibcode',
category = 'CS1 maint: bibcode',
hidden = true,
},
maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite
message = nil,
anchor = 'location_no_publisher',
category = 'CS1 maint: location missing publisher',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: bot: original URL status unknown',
hidden = true,
},
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
message = nil,
anchor = 'date_auto_xlated',
category = 'CS1 maint: date auto-translated',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI inactive',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_others_avm = {
message = nil,
anchor = 'others_avm',
category = 'CS1 maint: others in cite AV media (notes)',
hidden = true,
},
maint_overridden_setting = {
message = nil,
anchor = 'overridden',
category = 'CS1 maint: overridden setting',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_postscript = {
message = nil,
anchor = 'postscript',
category = 'CS1 maint: postscript',
hidden = true,
},
maint_ref_duplicates_default = {
message = nil,
anchor = 'ref_default',
category = 'CS1 maint: ref duplicates default',
hidden = true,
},
maint_unfit = {
message = nil,
anchor = 'unfit',
category = 'CS1 maint: unfit URL',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: unrecognized language',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_url_status = {
message = nil,
anchor = 'url_status',
category = 'CS1 maint: url-status',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: Zbl',
hidden = true,
},
}
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each
identifier we specify a variety of information necessary to properly render the
identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: Wikidata q number for the identifier
label: the label preceding the identifier; label is linked to a Wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if URI should be percent-encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for |asin= and |ol=, which require assembly, use the keyword: url
for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
prefix = 'https://arxiv.org/abs/',
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
prefix = 'https://www.amazon.',
COinS = 'url',
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
prefix = 'https://doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
prefix = 'https://doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International Standard Serial Number#Electronic ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
prefix = 'https://hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
prefix = '', -- not currently used;
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
prefix = 'https://www.jstor.org/stable/',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
prefix = 'https://lccn.loc.gov/',
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MEDRXIV'] = {
parameters = {'medrxiv'},
link = 'medRxiv',
redirect = 'medRxiv (identifier)',
q = 'Q58465838',
label = 'medRxiv',
prefix = 'https://www.medrxiv.org/content/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
prefix = 'https://www.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
id_limit = 10030000000,
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
prefix = 'https://openlibrary.org/',
COinS = 'url',
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
prefix = 'https://www.osti.gov/biblio/',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 23010000,
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = '',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 10700000,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = 'Q2082879',
label = 'PMID',
prefix = 'https://pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = 38400000,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
prefix = 'https://tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 9300,
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 4600000,
custom_access = 'ssrn-access',
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 266000000,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >---------------------------------
]]
return {
use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module
local_lang_cat_enable = local_lang_cat_enable,
date_name_auto_xlate_enable = date_name_auto_xlate_enable,
date_digit_auto_xlate_enable = date_digit_auto_xlate_enable,
-- tables and variables created when this module is loaded
global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format.
global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}}
punct_skip = build_skip_table (punct_skip, punct_meta_params),
url_skip = build_skip_table (url_skip, url_meta_params),
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers = stripmarkers,
invisible_chars = invisible_chars,
invisible_defs = invisible_defs,
indic_script = indic_script,
emoji_t = emoji_t,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
script_lang_codes = script_lang_codes,
lang_tag_remap = lang_tag_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces_t,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
vol_iss_pg_patterns = vol_iss_pg_patterns,
single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t,
inter_wiki_map = inter_wiki_map,
mw_languages_by_tag_t = mw_languages_by_tag_t,
mw_languages_by_name_t = mw_languages_by_name_t,
citation_class_map_t = citation_class_map_t,
citation_issue_t = citation_issue_t,
citation_no_volume_t = citation_no_volume_t,
}
3e2dde0333a73a0a39271b2bb53463ec90587d77
3070
3069
2023-11-09T18:00:46Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Citation/CS1/Configuration]]
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage(); -- make a language object for the local language; used here for languages and dates
--[[--------------------------< S E T T I N G S >--------------------------------------------------------------
boolean settings used to control various things. these setting located here to make them easy to find
]]
-- these settings local to this module only
local local_digits_from_mediawiki = false; -- for i18n; when true, module fills date_names['local_digits'] from MediaWiki; manual fill required else; always false at en.wiki
local local_date_names_from_mediawiki = false; -- for i18n; when true, module fills date_names['local']['long'] and date_names['local']['short'] from MediaWiki;
-- manual translation required else; ; always false at en.wiki
-- these settings exported to other modules
local use_identifier_redirects = true; -- when true use redirect name for identifier label links; always true at en.wiki
local local_lang_cat_enable = false; -- when true categorizes pages where |language=<local wiki's language>; always false at en.wiki
local date_name_auto_xlate_enable = false; -- when true translates English month-names to the local-wiki's language month names; always false at en.wiki
local date_digit_auto_xlate_enable = false; -- when true translates Western date digit to the local-wiki's language digits (date_names['local_digits']); always false at en.wiki
--[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------
List of namespaces identifiers for namespaces that will not be included in citation error categories.
Same as setting notracking = true by default.
For wikis that have a current version of Module:cs1 documentation support, this #invoke will return an unordered
list of namespace names and their associated identifiers:
{{#invoke:cs1 documentation support|uncategorized_namespace_lister|all=<anything>}}
]]
uncategorized_namespaces_t = {[2]=true}; -- init with user namespace id
for k, _ in pairs (mw.site.talkNamespaces) do -- add all talk namespace ids
uncategorized_namespaces_t[k] = true;
end
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize
--[[--------------------------< M E S S A G E S >--------------------------------------------------------------
Translation table
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.
]]
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = 'Archived from $1 on $2',
['archived-live'] = '$1 from the original on $2',
['archived-unfit'] = 'Archived from the original on ',
['archived'] = 'Archived',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1 ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['mismatch'] = '<code class="cs1-code">|$1=</code> / <code class="cs1-code">|$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]: $1',
['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'Retrieved $1',
['season'] = 'Season $1',
['section'] = '§ $1',
['sections'] = '§§ $1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = 'Series $1',
['translated'] = 'Translated by $1',
['type'] = ' ($1)', -- for titletype
['written'] = 'Written at $1',
['vol'] = '$1 Vol. $2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 Vol. $2, no. $3', -- sepc, volume, issue (alternatively insert $1 after $2, but then we'd also have to change capitalization)
['issue'] = '$1 No. $2', -- $1 is sepc
['art'] = '$1 Art. $2', -- $1 is sepc; for {{cite conference}} only
['vol-art'] = '$1 Vol. $2, art. $3', -- sepc, volume, article-number; for {{cite conference}} only
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',
['j-article-num'] = ' $1', -- TODO: any punctuation here? static text?
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc
['p-prefix'] = "$1 p. $2", -- $1 is sepc
['pp-prefix'] = "$1 pp. $2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages
['sheet'] = '$1 Sheet $2', -- $1 is sepc
['sheets'] = '$1 Sheets $2', -- $1 is sepc
['j-sheet'] = ': Sheet $1',
['j-sheets'] = ': Sheets $1',
['language'] = '(in $1)',
['via'] = " – via $1",
['event'] = 'Event occurs at',
['minutes'] = 'minutes in',
-- Determines the location of the help page
['help page link'] = 'Help:CS1 errors',
['help page label'] = 'help',
-- categories
['cat wikilink'] = '[[Category:$1]]', -- $1 is the category name
[':cat wikilink'] = '[[:Category:$1|link]]', -- category name as maintenance message wikilink; $1 is the category name
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',
['warning_msg_e'] = '<span style="color:#d33">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have errors</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
['warning_msg_m'] = '<span style="color:#3a3">One or more <code style="color: inherit; background: inherit; border: none; padding: inherit;">{{$1}}</code> templates have maintenance messages</span>; messages may be hidden ([[Help:CS1_errors#Controlling_error_message_display|help]]).'; -- $1 is template link
}
--[[--------------------------< C I T A T I O N _ C L A S S _ M A P >------------------------------------------
this table maps the value assigned to |CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preview mode.
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.
]]
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
['arxiv'] = 'arXiv',
['audio-visual'] = 'AV media',
['AV-media-notes'] = 'AV media notes',
['biorxiv'] = 'bioRxiv',
['citeseerx'] = 'CiteSeerX',
['encyclopaedia'] = 'encyclopedia',
['mailinglist'] = 'mailing list',
['medrxiv'] = 'medRxiv',
['pressrelease'] = 'press release',
['ssrn'] = 'SSRN',
['techreport'] = 'tech report',
}
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.
]=]
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}
--[[--------------------------< P R E S E N T A T I O N >------------------------
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.
]]
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span class="cs1-hidden-error citation-comment">$1</span>',
['visible-error'] = '<span class="cs1-visible-error citation-comment">$1</span>',
['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>',
['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like
['cite'] = '<cite class="$1">$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist
['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc.
['interwiki'] = ' <span class="cs1-format">[in $1]</span>', -- for interwiki-language-linked author, editor, etc
['interproj'] = ' <span class="cs1-format">[at $1]</span>', -- for interwiki-project-linked author, editor, etc (:d: and :s: supported; :w: ignored)
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space   may work better than nowrap CSS. Or not? Browser support?
['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {class='cs1-lock-registration', title='Free registration required'},
['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'},
['interwiki-icon'] = '<span class="$1" title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',
['italic-title'] = "''$1''",
['kern-left'] = '<span class="cs1-kern-left"></span>$1', -- spacing to use when title contains leading single or double quote mark
['kern-right'] = '$1<span class="cs1-kern-right"></span>', -- spacing to use when title contains trailing single or double quote mark
['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span>
['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space)
['ocins'] = '<span title="$1" class="Z3988"></span>',
['parameter'] = '<code class="cs1-code">|$1=</code>',
['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character
['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string)
['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content
['quoted-title'] = '"$1"',
['sep_cs1'] = '.', -- CS1 element separator
['sep_cs2'] = ',', -- CS2 separator
['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon
['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items
['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names
['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space>
['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma
['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space
['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end
['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items
['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items
['trans-italic-title'] = "[''$1'']",
['trans-quoted-title'] = "[$1]", -- for |trans-title= and |trans-quote=
['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{}
}
--[[--------------------------< A L I A S E S >---------------------------------
Aliases table for commonly passed parameters.
Parameter names on the right side in the assignments in this table must have been
defined in the Whitelist before they will be recognized as valid parameter names
]]
local aliases = {
['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot
['Agency'] = 'agency',
['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot
['ArchiveFormat'] = 'archive-format',
['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot
['ArticleNumber'] = 'article-number',
['ASINTLD'] = 'asin-tld',
['At'] = 'at', -- Used by InternetArchiveBot
['Authors'] = {'authors', 'people', 'credits'},
['BookTitle'] = {'book-title', 'booktitle'},
['Cartography'] = 'cartography',
['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'},
['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format',
'article-format', 'section-format'};
['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl'}, -- Used by InternetArchiveBot
['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access',
'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot
['Class'] = 'class', -- cite arxiv and arxiv identifier
['Collaboration'] = 'collaboration',
['Conference'] = {'conference', 'event'},
['ConferenceFormat'] = 'conference-format',
['ConferenceURL'] = 'conference-url', -- Used by InternetArchiveBot
['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only
['Degree'] = 'degree',
['DF'] = 'df',
['DisplayAuthors'] = {'display-authors', 'display-subjects'},
['DisplayContributors'] = 'display-contributors',
['DisplayEditors'] = 'display-editors',
['DisplayInterviewers'] = 'display-interviewers',
['DisplayTranslators'] = 'display-translators',
['Docket'] = 'docket',
['DoiBroken'] = 'doi-broken-date',
['Edition'] = 'edition',
['Embargo'] = 'pmc-embargo-date',
['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only
['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode?
['Format'] = 'format',
['ID'] = {'id', 'ID'},
['Inset'] = 'inset',
['Issue'] = {'issue', 'number'},
['Language'] = {'language', 'lang'},
['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only
['Map'] = 'map', -- cite map only
['MapFormat'] = 'map-format', -- cite map only
['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot
['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot
['Minutes'] = 'minutes',
['Mode'] = 'mode',
['NameListStyle'] = 'name-list-style',
['Network'] = 'network',
['Newsgroup'] = 'newsgroup', -- cite newsgroup only
['NoPP'] = {'no-pp', 'nopp'},
['NoTracking'] = {'no-tracking', 'template-doc-demo'},
['Number'] = 'number', -- this case only for cite techreport
['OrigDate'] = {'orig-date', 'orig-year', 'origyear'},
['Others'] = 'others',
['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot
['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot
['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'},
['Place'] = {'place', 'location'},
['PostScript'] = 'postscript',
['PublicationDate'] = {'publication-date', 'publicationdate'},
['PublicationPlace'] = {'publication-place', 'publicationplace'},
['PublisherName'] = {'publisher', 'institution'},
['Quote'] = {'quote', 'quotation'},
['QuotePage'] = 'quote-page',
['QuotePages'] = 'quote-pages',
['Ref'] = 'ref',
['Scale'] = 'scale',
['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry',
'script-article', 'script-section'},
['ScriptMap'] = 'script-map',
['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper',
'script-periodical', 'script-website', 'script-work'},
['ScriptQuote'] = 'script-quote',
['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot
['Season'] = 'season',
['Sections'] = 'sections', -- cite map only
['Series'] = {'series', 'version'},
['SeriesLink'] = {'series-link', 'serieslink'},
['SeriesNumber'] = {'series-number', 'series-no'},
['Sheet'] = 'sheet', -- cite map only
['Sheets'] = 'sheets', -- cite map only
['Station'] = 'station',
['Time'] = 'time',
['TimeCaption'] = 'time-caption',
['Title'] = 'title', -- Used by InternetArchiveBot
['TitleLink'] = {'title-link', 'episode-link', 'episodelink'}, -- Used by InternetArchiveBot
['TitleNote'] = {'title-note', 'department'},
['TitleType'] = {'type', 'medium'},
['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution',
'trans-entry', 'trans-section'},
['Transcript'] = 'transcript',
['TranscriptFormat'] = 'transcript-format',
['TranscriptURL'] = 'transcript-url', -- Used by InternetArchiveBot
['TransMap'] = 'trans-map', -- cite map only
['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper',
'trans-periodical', 'trans-website', 'trans-work'},
['TransQuote'] = 'trans-quote',
['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot
['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot
['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot
['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot
['Vauthors'] = 'vauthors',
['Veditors'] = 'veditors',
['Via'] = 'via',
['Volume'] = 'volume',
['Year'] = 'year',
['AuthorList-First'] = {"first#", "author-first#", "author#-first", "author-given#", "author#-given",
"subject-first#", "subject#-first", "subject-given#", "subject#-given",
"given#"},
['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "author-surname#", "author#-surname",
"subject-last#", "subject#-last", "subject-surname#", "subject#-surname",
"author#", 'host#', "subject#", "surname#"},
['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#",
"subject#-link", "authorlink#", "author#link"},
['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask"},
['ContributorList-First'] = {'contributor-first#', 'contributor#-first',
'contributor-given#', 'contributor#-given'},
['ContributorList-Last'] = {'contributor-last#', 'contributor#-last',
'contributor-surname#', 'contributor#-surname', 'contributor#'},
['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'},
['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'},
['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"},
['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#",
"editor#-surname", "editor#"},
['EditorList-Link'] = {"editor-link#", "editor#-link"},
['EditorList-Mask'] = {"editor-mask#", "editor#-mask"},
['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first',
'interviewer-given#', 'interviewer#-given'},
['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last',
'interviewer-surname#', 'interviewer#-surname', 'interviewer#'},
['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'},
['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'},
['TranslatorList-First'] = {'translator-first#', 'translator#-first',
'translator-given#', 'translator#-given'},
['TranslatorList-Last'] = {'translator-last#', 'translator#-last',
'translator-surname#', 'translator#-surname', 'translator#'},
['TranslatorList-Link'] = {'translator-link#', 'translator#-link'},
['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'},
}
--[[--------------------------< P U N C T _ S K I P >---------------------------
builds a table of parameter names that the extraneous terminal punctuation check should not check.
]]
local punct_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters
'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators
'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'MapURL', 'TranscriptURL', 'URL', -- URL-holding parameters
}
local url_meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value
'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'ID', 'MapURL', 'TranscriptURL', 'URL', -- parameters allowed to hold urls
'Page', 'Pages', 'At', 'QuotePage', 'QuotePages', -- insource locators allowed to hold urls
}
local function build_skip_table (skip_t, meta_params)
for _, meta_param in ipairs (meta_params) do -- for each meta parameter key
local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name
if 'string' == type (params) then
skip_t[params] = 1; -- just a single parameter
else
for _, param in ipairs (params) do -- get the parameter name
skip_t[param] = 1; -- add the parameter name to the skip table
local count;
param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters
if 0 ~= count then -- if removed
skip_t[param] = 1; -- add param name without enumerator marker
end
end
end
end
return skip_t;
end
local punct_skip = {};
local url_skip = {};
--[[--------------------------< S I N G L E - L E T T E R S E C O N D - L E V E L D O M A I N S >----------
this is a list of tlds that are known to have single-letter second-level domain names. This list does not include
ccTLDs which are accepted in is_domain_name().
]]
local single_letter_2nd_lvl_domains_t = {'cash', 'company', 'foundation', 'org', 'today'};
--[[-----------< S P E C I A L C A S E T R A N S L A T I O N S >------------
This table is primarily here to support internationalization. Translations in
this table are used, for example, when an error message, category name, etc.,
is extracted from the English alias key. There may be other cases where
this translation table may be useful.
]]
local is_Latn = 'A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143';
local special_case_translation = {
['AuthorList'] = 'authors list', -- used to assemble maintenance category names
['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below
['EditorList'] = 'editors list', -- must match the names of the actual categories
['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names()
['TranslatorList'] = 'translators list',
-- Lua patterns to match pseudo-titles used by InternetArchiveBot and others as placeholder for unknown |title= value
['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title
['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki
['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
},
-- Lua patterns to match generic titles; usually created by bots or reference filling tools
-- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language
-- generic titles and patterns in this table should be lowercase only
-- leave ['local'] nil except when there is a matching generic title in your language
-- boolean 'true' for plain-text searches; 'false' for pattern searches
['generic_titles'] = {
['accept'] = {
},
['reject'] = {
{['en'] = {'^wayback%s+machine$', false}, ['local'] = nil},
{['en'] = {'are you a robot', true}, ['local'] = nil},
{['en'] = {'hugedomains.com', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'page not found', true}, ['local'] = nil},
{['en'] = {'subscribe to read', true}, ['local'] = nil},
{['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil},
{['en'] = {'website is for sale', true}, ['local'] = nil},
{['en'] = {'^404', false}, ['local'] = nil},
{['en'] = {'internet archive wayback machine', true}, ['local'] = nil},
{['en'] = {'log into facebook', true}, ['local'] = nil},
{['en'] = {'login • instagram', true}, ['local'] = nil},
{['en'] = {'redirecting...', true}, ['local'] = nil},
{['en'] = {'usurped title', true}, ['local'] = nil}, -- added by a GreenC bot
{['en'] = {'webcite query result', true}, ['local'] = nil},
{['en'] = {'wikiwix\'s cache', true}, ['local'] = nil},
}
},
-- boolean 'true' for plain-text searches, search string must be lowercase only
-- boolean 'false' for pattern searches
-- leave ['local'] nil except when there is a matching generic name in your language
['generic_names'] = {
['accept'] = {
{['en'] = {'%[%[[^|]*%(author%) *|[^%]]*%]%]', false}, ['local'] = nil},
},
['reject'] = {
{['en'] = {'about us', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]dvisor%f[%A]', false}, ['local'] = nil},
{['en'] = {'allmusic', true}, ['local'] = nil},
{['en'] = {'%f[%a][Aa]uthor%f[%A]', false}, ['local'] = nil},
{['en'] = {'business', true}, ['local'] = nil},
{['en'] = {'cnn', true}, ['local'] = nil},
{['en'] = {'collaborator', true}, ['local'] = nil},
{['en'] = {'contributor', true}, ['local'] = nil},
{['en'] = {'contact us', true}, ['local'] = nil},
{['en'] = {'directory', true}, ['local'] = nil},
{['en'] = {'%f[%(%[][%(%[]%s*eds?%.?%s*[%)%]]?$', false}, ['local'] = nil},
{['en'] = {'[,%.%s]%f[e]eds?%.?$', false}, ['local'] = nil},
{['en'] = {'^eds?[%.,;]', false}, ['local'] = nil},
{['en'] = {'^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]dited%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a][Ee]ditors?%f[%A]', false}, ['local'] = nil},
{['en'] = {'%f[%a]]Ee]mail%f[%A]', false}, ['local'] = nil},
{['en'] = {'facebook', true}, ['local'] = nil},
{['en'] = {'google', true}, ['local'] = nil},
{['en'] = {'home page', true}, ['local'] = nil},
{['en'] = {'^[Ii]nc%.?$', false}, ['local'] = nil},
{['en'] = {'instagram', true}, ['local'] = nil},
{['en'] = {'interviewer', true}, ['local'] = nil},
{['en'] = {'linkedIn', true}, ['local'] = nil},
{['en'] = {'^[Nn]ews$', false}, ['local'] = nil},
{['en'] = {'pinterest', true}, ['local'] = nil},
{['en'] = {'policy', true}, ['local'] = nil},
{['en'] = {'privacy', true}, ['local'] = nil},
{['en'] = {'reuters', true}, ['local'] = nil},
{['en'] = {'translator', true}, ['local'] = nil},
{['en'] = {'tumblr', true}, ['local'] = nil},
{['en'] = {'twitter', true}, ['local'] = nil},
{['en'] = {'site name', true}, ['local'] = nil},
{['en'] = {'statement', true}, ['local'] = nil},
{['en'] = {'submitted', true}, ['local'] = nil},
{['en'] = {'super.?user', false}, ['local'] = nil},
{['en'] = {'%f['..is_Latn..'][Uu]ser%f[^'..is_Latn..']', false}, ['local'] = nil},
{['en'] = {'verfasser', true}, ['local'] = nil},
}
}
}
--[[--------------------------< D A T E _ N A M E S >----------------------------------------------------------
This table of tables lists local language date names and fallback English date names.
The code in Date_validation will look first in the local table for valid date names.
If date names are not found in the local table, the code will look in the English table.
Because citations can be copied to the local wiki from en.wiki, the English is
required when the date-name translation function date_name_xlate() is used.
In these tables, season numbering is defined by
Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/)
which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard
defines various divisions using numbers 21-41. CS1|2 only supports generic seasons.
EDTF does support the distinction between north and south hemisphere seasons
but CS1|2 has no way to make that distinction.
33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each)
The standard does not address 'named' dates so, for the purposes of CS1|2,
Easter and Christmas are defined here as 98 and 99, which should be out of the
ISO 8601 (EDTF) range of uses for a while.
local_date_names_from_mediawiki is a boolean. When set to:
true – module will fetch local month names from MediaWiki for both date_names['local']['long'] and date_names['local']['short']
false – module will *not* fetch local month names from MediaWiki
Caveat lector: There is no guarantee that MediaWiki will provide short month names. At your wiki you can test
the results of the MediaWiki fetch in the debug console with this command (the result is alpha sorted):
=mw.dumpObject (p.date_names['local'])
While the module can fetch month names from MediaWiki, it cannot fetch the quarter, season, and named date names
from MediaWiki. Those must be translated manually.
]]
local local_date_names_from_mediawiki = true; -- when false, manual translation required for date_names['local']['long'] and date_names['local']['short']
-- when true, module fetches long and short month names from MediaWiki
local date_names = {
['en'] = { -- English
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
-- when local_date_names_from_mediawiki = false
['local'] = { -- replace these English date names with the local language equivalents
['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12},
['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12},
['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36},
['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23},
['named'] = {['Easter'] = 98, ['Christmas'] = 99},
},
['inv_local_long'] = {}, -- used in date reformatting & translation; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc.
['inv_local_short'] = {}, -- used in date reformatting & translation; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc.
['inv_local_quarter'] = {}, -- used in date translation; copy of date_names['local'].quarter where k/v are inverted: [1]='<local name>' etc.
['inv_local_season'] = {}, -- used in date translation; copy of date_names['local'].season where k/v are inverted: [1]='<local name>' etc.
['inv_local_named'] = {}, -- used in date translation; copy of date_names['local'].named where k/v are inverted: [1]='<local name>' etc.
['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9
['xlate_digits'] = {},
}
if local_date_names_from_mediawiki then -- if fetching local month names from MediaWiki is enabled
local long_t = {};
local short_t = {};
for i=1, 12 do -- loop 12x and
local name = lang_obj:formatDate('F', '2022-' .. i .. '-1'); -- get long month name for each i
long_t[name] = i; -- save it
name = lang_obj:formatDate('M', '2022-' .. i .. '-1'); -- get short month name for each i
short_t[name] = i; -- save it
end
date_names['local']['long'] = long_t; -- write the long table – overwrites manual translation
date_names['local']['short'] = short_t; -- write the short table – overwrites manual translation
end
-- create inverted date-name tables for reformatting and/or translation
for _, invert_t in pairs {{'long', 'inv_local_long'}, {'short', 'inv_local_short'}, {'quarter', 'inv_local_quarter'}, {'season', 'inv_local_season'}, {'named', 'inv_local_named'}} do
for name, i in pairs (date_names['local'][invert_t[1]]) do -- this table is ['name'] = i
date_names[invert_t[2]][i] = name; -- invert to get [i] = 'name' for conversions from ymd
end
end
if local_digits_from_mediawiki then -- if fetching local digits from MediaWiki is enabled
local digits_t = {};
for i=0, 9 do -- loop 10x and
digits_t [lang_obj:formatNum (i)] = tostring (i); -- format the loop indexer as local lang table index and assign loop indexer (a string) as the value
end
date_names['local_digits'] = digits_t;
end
for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table
date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value
end
local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}}
'{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count
'{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k
'{{ *[Uu]se +(MDY) +dates *[|}]', -- 788
'{{ *[Uu]se +(DMY) +dates *[|}]', -- 343
'{{ *([Mm]dy) *[|}]', -- 176
'{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18
'{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11
'{{ *([Dd]my) *[|}]', -- 56
'{{ *[Uu]se +(MDY) *[|}]', -- 5
'{{ *([Dd]MY) *[|}]', -- 3
'{{ *[Uu]se(mdy)dates *[|}]', -- 1
'{{ *[Uu]se +(DMY) *[|}]', -- 0
'{{ *([Mm]DY) *[|}]', -- 0
}
local title_object = mw.title.getCurrentTitle();
local content; -- done this way so that unused templates appear in unused-template-reports; self-transcluded makes them look like they are used
if 10 ~= title_object.namespace then -- all namespaces except Template
content = title_object:getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625
end
local function get_date_format ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects
local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format
if match then
local use_dates_template = content:match ('%b{}', start); -- get the whole template
if use_dates_template:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length
return match:lower() .. '-' .. use_dates_template:match ('| *cs1%-dates *= *([lsy][sy]?)');
else
return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df=
end
end
end
end
local global_df; -- TODO: add this to <global_cs1_config_t>?
--[[-----------------< V O L U M E , I S S U E , P A G E S >------------------
These tables hold cite class values (from the template invocation) and identify those templates that support
|volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which
is handled in the main module.
]]
local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'}
local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'}
local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'}
--[[
These tables control when it is appropriate for {{citation}} to render |volume= and/or |issue=. The parameter
names in the tables constrain {{citation}} so that its renderings match the renderings of the equivalent cs1
templates. For example, {{cite web}} does not support |volume= so the equivalent {{citation |website=...}} must
not support |volume=.
]]
local citation_no_volume_t = { -- {{citation}} does not render |volume= when these parameters are used
'website', 'mailinglist', 'script-website',
}
local citation_issue_t = { -- {{citation}} may render |issue= when these parameters are used
'journal', 'magazine', 'newspaper', 'periodical', 'work',
'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work',
}
--[[
Patterns for finding extra text in |volume=, |issue=, |page=, |pages=
]]
local vol_iss_pg_patterns = {
good_ppattern = '^P[^%.PpGg]', -- OK to begin with uppercase P: P7 (page 7 of section P), but not p123 (page 123); TODO: this allows 'Pages' which it should not
bad_ppatterns = { -- patterns for |page= and |pages=
'^[Pp][PpGg]?%.?[ %d]',
'^[Pp][Pp]?%. ', -- from {{p.}} and {{pp.}} templates
'^[Pp]ages?',
'^[Pp]gs.?',
},
vpatterns = { -- patterns for |volume=
'^volumes?',
'^vols?[%.:=]?'
},
ipatterns = { -- patterns for |issue=
'^issues?',
'^iss[%.:=]?',
'^numbers?',
'^nos?%A', -- don't match 'november' or 'nostradamus'
'^nr[%.:=]?',
'^n[%.:= ]' -- might be a valid issue without separator (space char is sep char here)
}
}
--[[--------------------------< K E Y W O R D S >-------------------------------
These tables hold keywords for those parameters that have defined sets of acceptable keywords.
]]
--[[-------------------< K E Y W O R D S T A B L E >--------------------------
this is a list of keywords; each key in the list is associated with a table of
synonymous keywords possibly from different languages.
for I18N: add local-language keywords to value table; do not change the key.
For example, adding the German keyword 'ja':
['affirmative'] = {'yes', 'true', 'y', 'ja'},
Because CS1|2 templates from en.wiki articles are often copied to other local wikis,
it is recommended that the English keywords remain in these tables.
]]
local keywords = {
['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style=
['and'] = {'and', 'serial'}, -- |name-list-style=
['affirmative'] = {'yes', 'true', 'y'}, -- |no-tracking=, |no-pp= -- Used by InternetArchiveBot
['afterword'] = {'afterword'}, -- |contribution=
['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot
['cs1'] = {'cs1'}, -- |mode=
['cs2'] = {'cs2'}, -- |mode=
['dead'] = {'dead', 'deviated'}, -- |url-status= -- Used by InternetArchiveBot
['dmy'] = {'dmy'}, -- |df=
['dmy-all'] = {'dmy-all'}, -- |df=
['foreword'] = {'foreword'}, -- |contribution=
['free'] = {'free'}, -- |<id>-access= -- Used by InternetArchiveBot
['harv'] = {'harv'}, -- |ref=; this no longer supported; is_valid_parameter_value() called with <invert> = true
['introduction'] = {'introduction'}, -- |contribution=
['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot
['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot
['mdy'] = {'mdy'}, -- |df=
['mdy-all'] = {'mdy-all'}, -- |df=
['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot
['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=)
['preface'] = {'preface'}, -- |contribution=
['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot
['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot
['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot
['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot
['vanc'] = {'vanc'}, -- |name-list-style=
['ymd'] = {'ymd'}, -- |df=
['ymd-all'] = {'ymd-all'}, -- |df=
-- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki
-- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki
}
--[[------------------------< X L A T E _ K E Y W O R D S >---------------------
this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{}
become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}:
['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{}
becomes
['yes'] = 'affirmative', -- in keywords_xlate{}
['true'] = 'affirmative',
['y'] = 'affirmative',
the purpose of this function is to act as a translator between a non-English keyword and its English equivalent
that may be used in other modules of this suite
]]
local function xlate_keywords ()
local out_table = {}; -- output goes here
for k, keywords_t in pairs (keywords) do -- spin through the keywords table
for _, keyword in ipairs (keywords_t) do -- for each keyword
out_table[keyword] = k; -- create an entry in the output table where keyword is the key
end
end
return out_table;
end
local keywords_xlate = xlate_keywords (); -- the list of translated keywords
--[[----------------< M A K E _ K E Y W O R D S _ L I S T >---------------------
this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter.
keywords_lists{}, is a table of tables from keywords{}
]]
local function make_keywords_list (keywords_lists)
local out_table = {}; -- output goes here
for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords
for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ...
table.insert (out_table, keyword); -- ... as plain text, to the output list
end
end
return out_table;
end
--[[----------------< K E Y W O R D S _ L I S T S >-----------------------------
this is a list of lists of valid keywords for the various parameters in [key].
Generally the keys in this table are the canonical en.wiki parameter names though
some are contrived because of use in multiple differently named parameters:
['yes_true_y'], ['id-access'].
The function make_keywords_list() extracts the individual keywords from the
appropriate list in keywords{}.
The lists in this table are used to validate the keyword assignment for the
parameters named in this table's keys.
]]
local keywords_lists = {
['yes_true_y'] = make_keywords_list ({keywords.affirmative}),
['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}),
['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}),
-- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki
['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}),
['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}),
['ref'] = make_keywords_list ({keywords.harv}), -- inverted check; |ref=harv no longer supported
['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}),
['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}),
['id-access'] = make_keywords_list ({keywords.free}),
}
--[[--------------------------< C S 1 _ C O N F I G _ G E T >--------------------------------------------------
fetch and validate values from {{cs1 config}} template to fill <global_cs1_config_t>
no error messages; when errors are detected, the parameter value from {{cs1 config}} is blanked.
Supports all parameters and aliases associated with the metaparameters: DisplayAuthors, DisplayContributors,
DisplayEditors, DisplayInterviewers, DisplayTranslators, NameListStyle, and Mode. The DisplayWhatever metaparameters
accept numeric values only (|display-authors=etal and the like is not supported).
]]
local global_cs1_config_t = {}; -- TODO: add value returned from get_date_format() to this table?
local function get_cs1_config ()
-- if title_object.namespace == 10 then -- not in template space so that unused templates appear in unused-template-reports;
if not content then -- nil content when we're in template
return nil; -- auto-formatting does not work in Template space so don't set global_df
end
local start = content:find('{{ *[Cc][Ss]1 config *[|}]'); -- <start> is offset into <content> when {{cs1 config}} found; nil else
if start then
local cs1_config_template = content:match ('%b{}', start); -- get the whole template
if not cs1_config_template then
return nil;
end
local params_t = mw.text.split (cs1_config_template:gsub ('^{{%s*', ''):gsub ('%s*}}$', ''), '%s*|%s*'); -- remove '{{' and '}}'; make a sequence of parameter/value pairs (split on the pipe)
table.remove (params_t, 1); -- remove the template name because it isn't a parameter/value pair
local config_meta_params_t = {'DisplayAuthors', 'DisplayContributors', 'DisplayEditors', 'DisplayInterviewers', 'DisplayTranslators', 'NameListStyle', 'Mode'};
local meta_param_map_t = {}; -- list of accepted parameter names usable in {{cs1 config}} goes here
for _, meta_param in ipairs (config_meta_params_t) do -- for i18n using <config_meta_params_t>, map template parameter names to their metaparameter equivalents
if 'table' == type (aliases[meta_param]) then -- if <meta_param> is a sequence,
for _, param in ipairs (aliases[meta_param]) do -- extract its contents
meta_param_map_t[param] = meta_param; -- and add to <meta_param_map_t>
end
else
meta_param_map_t[aliases[meta_param]] = meta_param; -- not a sequence so just add the parameter to <meta_param_map_t>
end
end
local keywords_t = {}; -- map valid keywords to their associate metaparameter; reverse form of <keyword_lists[key] for these metaparameters
for _, metaparam_t in ipairs ({{'NameListStyle', 'name-list-style'}, {'Mode', 'mode'}}) do -- only these metaparameter / keywords_lists key pairs
for _, keyword in ipairs (keywords_lists[metaparam_t[2]]) do -- spin through the list of keywords
keywords_t[keyword] = metaparam_t[1]; -- add [keyword] = metaparameter to the map
end
end
for _, param in ipairs (params_t) do -- spin through the {{cs1 config}} parameters and fill <global_cs1_config_t>
local k, v = param:match ('([^=]-)%s*=%s*(.+)'); -- <k> is the parameter name; <v> is parameter's assigned value
if k then
if k:find ('^display') then -- if <k> is one of the |display-<namelist>= parameters
if v:match ('%d+') then -- the assigned value must be digits; doesn't accept 'etal'
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the display param and its value to globals table
end
else
if keywords_t[v] == meta_param_map_t[k] then -- keywords_t[v] returns nil or the metaparam name; these must be the same
global_cs1_config_t[meta_param_map_t[k]]=v; -- add the parameter and its value to globals table
end
end
end
end
end
end
get_cs1_config (); -- fill <global_cs1_config_t>
--[[---------------------< S T R I P M A R K E R S >----------------------------
Common pattern definition location for stripmarkers so that we don't have to go
hunting for them if (when) MediaWiki changes their form.
]]
local stripmarkers = {
['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker
['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker()
}
--[[------------< I N V I S I B L E _ C H A R A C T E R S >---------------------
This table holds non-printing or invisible characters indexed either by name or
by Unicode group. Values are decimal representations of UTF-8 codes. The table
is organized as a table of tables because the Lua pairs keyword returns table
data in an arbitrary order. Here, we want to process the table from top to bottom
because the entries at the top of the table are also found in the ranges specified
by the entries at the bottom of the table.
Also here is a pattern that recognizes stripmarkers that begin and end with the
delete characters. The nowiki stripmarker is not an error but some others are
because the parameter values that include them become part of the template's
metadata before stripmarker replacement.
]]
local invisible_defs = {
del = '\127', -- used to distinguish between stripmarker and del char
zwj = '\226\128\141', -- used with capture because zwj may be allowed
}
local invisible_chars = {
{'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD
{'zero width joiner', '('.. invisible_defs.zwj .. ')'}, -- U+200D, E2 80 8D; capture because zwj may be allowed
{'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B
{'hair space', '\226\128\138'}, -- U+200A, E2 80 8A
{'soft hyphen', '\194\173'}, -- U+00AD, C2 AD
{'horizontal tab', '\009'}, -- U+0009 (HT), 09
{'line feed', '\010'}, -- U+000A (LF), 0A
{'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0
{'carriage return', '\013'}, -- U+000D (CR), 0D
{'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type
{'delete', '('.. invisible_defs.del .. ')'}, -- U+007F (DEL), 7F; must be done after stripmarker test; capture to distinguish isolated del chars not part of stripmarker
{'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D))
{'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F
-- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF
-- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF
-- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD
-- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD
}
--[[
Indic script makes use of zero width joiner as a character modifier so zwj
characters must be left in. This pattern covers all of the unicode characters
for these languages:
Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf
Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf
Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf
Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf
Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf
Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf
Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf
Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf
Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf
Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf
plus the not-necessarily Indic scripts for Sinhala and Burmese:
Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf
Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf
Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf
Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf
the pattern is used by has_invisible_chars() and coins_cleanup()
]]
local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]';
-- list of emoji that use a zwj character (U+200D) to combine with another emoji
-- from: https://unicode.org/Public/emoji/15.0/emoji-zwj-sequences.txt; version: 15.0; 2022-05-06
-- table created by: [[:en:Module:Make emoji zwj table]]
local emoji_t = { -- indexes are decimal forms of the hex values in U+xxxx
[9760] = true, -- U+2620 ☠ skull and crossbones
[9792] = true, -- U+2640 ♀ female sign
[9794] = true, -- U+2642 ♂ male sign
[9877] = true, -- U+2695 ⚕ staff of aesculapius
[9878] = true, -- U+2696 ⚖ scales
[9895] = true, -- U+26A7 ⚧ male with stroke and male and female sign
[9992] = true, -- U+2708 ✈ airplane
[10052] = true, -- U+2744 ❄ snowflake
[10084] = true, -- U+2764 ❤ heavy black heart
[11035] = true, -- U+2B1B ⬛ black large square
[127752] = true, -- U+1F308 🌈 rainbow
[127787] = true, -- U+1F32B 🌫 fog
[127806] = true, -- U+1F33E 🌾 ear of rice
[127859] = true, -- U+1F373 🍳 cooking
[127868] = true, -- U+1F37C 🍼 baby bottle
[127876] = true, -- U+1F384 🎄 christmas tree
[127891] = true, -- U+1F393 🎓 graduation cap
[127908] = true, -- U+1F3A4 🎤 microphone
[127912] = true, -- U+1F3A8 🎨 artist palette
[127979] = true, -- U+1F3EB 🏫 school
[127981] = true, -- U+1F3ED 🏭 factory
[128102] = true, -- U+1F466 👦 boy
[128103] = true, -- U+1F467 👧 girl
[128104] = true, -- U+1F468 👨 man
[128105] = true, -- U+1F469 👩 woman
[128139] = true, -- U+1F48B 💋 kiss mark
[128168] = true, -- U+1F4A8 💨 dash symbol
[128171] = true, -- U+1F4AB 💫 dizzy symbol
[128187] = true, -- U+1F4BB 💻 personal computer
[128188] = true, -- U+1F4BC 💼 brief case
[128293] = true, -- U+1F525 🔥 fire
[128295] = true, -- U+1F527 🔧 wrench
[128300] = true, -- U+1F52C 🔬 microscope
[128488] = true, -- U+1F5E8 🗨 left speech bubble
[128640] = true, -- U+1F680 🚀 rocket
[128658] = true, -- U+1F692 🚒 fire engine
[129309] = true, -- U+1F91D 🤝 handshake
[129455] = true, -- U+1F9AF 🦯 probing cane
[129456] = true, -- U+1F9B0 🦰 emoji component red hair
[129457] = true, -- U+1F9B1 🦱 emoji component curly hair
[129458] = true, -- U+1F9B2 🦲 emoji component bald
[129459] = true, -- U+1F9B3 🦳 emoji component white hair
[129466] = true, -- U+1F9BA 🦺 safety vest
[129468] = true, -- U+1F9BC 🦼 motorized wheelchair
[129469] = true, -- U+1F9BD 🦽 manual wheelchair
[129489] = true, -- U+1F9D1 🧑 adult
[129657] = true, -- U+1FA79 🩹 adhesive bandage
[129778] = true, -- U+1FAF2 🫲 leftwards hand
}
--[[----------------------< L A N G U A G E S U P P O R T >-------------------
These tables and constants support various language-specific functionality.
]]
--local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code
local this_wiki_code = lang_obj:getCode(); -- get this wiki's language code
if string.match (mw.site.server, 'wikidata') then
this_wiki_code = mw.getCurrentFrame():callParserFunction('int', {'lang'}); -- on Wikidata so use interface language setting instead
end
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a table of language tag/name pairs known to Wikimedia; used for interwiki tests
local mw_languages_by_name_t = {};
for k, v in pairs (mw_languages_by_tag_t) do -- build a 'reversed' table name/tag language pairs know to MediaWiki; used for |language=
v = mw.ustring.lower (v); -- lowercase for tag fetch; get name's proper case from mw_languages_by_tag_t[<tag>]
if mw_languages_by_name_t[v] then -- when name already in the table
if 2 == #k or 3 == #k then -- if tag does not have subtags
mw_languages_by_name_t[v] = k; -- prefer the shortest tag for this name
end
else -- here when name not in the table
mw_languages_by_name_t[v] = k; -- so add name and matching tag
end
end
local inter_wiki_map = {}; -- map of interwiki prefixes that are language-code prefixes
for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base interwiki map (limited to local)
if mw_languages_by_tag_t[v["prefix"]] then -- if the prefix matches a known language tag
inter_wiki_map[v["prefix"]] = true; -- add it to our local map
end
end
--[[--------------------< S C R I P T _ L A N G _ C O D E S >-------------------
This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character
language codes that apply only to |script-title= and |script-chapter=
]]
local script_lang_codes = {
'ab', 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he',
'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'ky', 'lo', 'mk', 'ml', 'mn',
'mni', 'mr', 'my', 'ne', 'or', 'ota', 'pa', 'ps', 'ru', 'sd', 'si', 'sr', 'syc', 'ta',
'te', 'tg', 'th', 'ti', 'tt', 'ug', 'uk', 'ur', 'uz', 'yi', 'yue', 'zh'
};
--[[---------------< L A N G U A G E R E M A P P I N G >----------------------
These tables hold language information that is different (correct) from MediaWiki's definitions
For each ['<tag>'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', '<tag>'} in lang_name_remap{}
lang_tag_remap{}:
key is always lowercase ISO 639-1, -2, -3 language tag or a valid lowercase IETF language tag
value is properly spelled and capitalized language name associated with <tag>
only one language name per <tag>;
key/value pair must have matching entry in lang_name_remap{}
lang_name_remap{}:
key is always lowercase language name
value is a table the holds correctly spelled and capitalized language name [1] and associated tag [2] (tag must match a tag key in lang_tag_remap{})
may have multiple keys referring to a common preferred name and tag; For example:
['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh'
]]
local lang_tag_remap = { -- used for |language= and |script-title= / |script-chapter=
['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch
['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['bn'] = 'Bengali', -- MediaWiki returns Bangla
['ca-valencia'] = 'Valencian', -- IETF variant of Catalan
['fkv'] = 'Kven', -- MediaWiki returns Kvensk
['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name
['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data
['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data
['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name
}
local lang_name_remap = { -- used for |language=; names require proper capitalization; tags must be lowercase
['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org
['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap
['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code
['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org
['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found
['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name
['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh
['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name
['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö)
['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name
['kven'] = {'Kven', 'fkv'}, -- Unicode CLDR have decided not to support English language name for these two...
['kvensk'] = {'Kven', 'fkv'}, -- ...they say to refer to IANA registry for English names
['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639
['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-tw'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese
['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found
['valencian'] = {'Valencian', 'ca-valencia'}, -- variant of Catalan; categorizes as Valencian
}
--[[---------------< P R O P E R T I E S _ C A T E G O R I E S >----------------
Properties categories. These are used for investigating qualities of citations.
]]
local prop_cats = {
['foreign-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code
['foreign-lang-source-2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key
['jul-greg-uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926
['local-lang-source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false
['location-test'] = 'CS1 location test',
['long-vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 characters
['script'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code
['tracked-param'] = 'CS1 tracked parameter: $1', -- $1 is base (enumerators removed) parameter name
['year-range-abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form
}
--[[-------------------< T I T L E _ T Y P E S >--------------------------------
Here we map a template's CitationClass to TitleType (default values for |type= parameter)
]]
local title_types = {
['AV-media-notes'] = 'Media notes',
['document'] = 'Document',
['interview'] = 'Interview',
['mailinglist'] = 'Mailing list',
['map'] = 'Map',
['podcast'] = 'Podcast',
['pressrelease'] = 'Press release',
['report'] = 'Report',
['speech'] = 'Speech',
['techreport'] = 'Technical report',
['thesis'] = 'Thesis',
}
--[[===================<< E R R O R M E S S A G I N G >>======================
]]
--[[----------< E R R O R M E S S A G E S U P P L I M E N T S >-------------
I18N for those messages that are supplemented with additional specific text that
describes the reason for the error
TODO: merge this with special_case_translations{}?
]]
local err_msg_supl = {
['char'] = 'invalid character', -- |isbn=, |sbn=
['check'] = 'checksum', -- |isbn=, |sbn=
['flag'] = 'flag', -- |archive-url=
['form'] = 'invalid form', -- |isbn=, |sbn=
['group'] = 'invalid group id', -- |isbn=
['initials'] = 'initials', -- Vancouver
['invalid language code'] = 'invalid language code', -- |script-<param>=
['journal'] = 'journal', -- |bibcode=
['length'] = 'length', -- |isbn=, |bibcode=, |sbn=
['liveweb'] = 'liveweb', -- |archive-url=
['missing comma'] = 'missing comma', -- Vancouver
['missing prefix'] = 'missing prefix', -- |script-<param>=
['missing title part'] = 'missing title part', -- |script-<param>=
['name'] = 'name', -- Vancouver
['non-Latin char'] = 'non-Latin character', -- Vancouver
['path'] = 'path', -- |archive-url=
['prefix'] = 'invalid prefix', -- |isbn=
['punctuation'] = 'punctuation', -- Vancouver
['save'] = 'save command', -- |archive-url=
['suffix'] = 'suffix', -- Vancouver
['timestamp'] = 'timestamp', -- |archive-url=
['unknown language code'] = 'unknown language code', -- |script-<param>=
['value'] = 'value', -- |bibcode=
['year'] = 'year', -- |bibcode=
}
--[[--------------< E R R O R _ C O N D I T I O N S >---------------------------
Error condition table. This table has two sections: errors at the top, maintenance
at the bottom. Maint 'messaging' does not have a 'message' (message=nil)
The following contains a list of IDs for various error conditions defined in the
code. For each ID, we specify a text message to display, an error category to
include, and whether the error message should be wrapped as a hidden comment.
Anchor changes require identical changes to matching anchor in Help:CS1 errors
TODO: rename error_conditions{} to something more generic; create separate error
and maint tables inside that?
]]
local error_conditions = {
err_accessdate_missing_url = {
message = '<code class="cs1-code">|access-date=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'accessdate_missing_url',
category = 'CS1 errors: access-date without URL',
hidden = false
},
err_apostrophe_markup = {
message = 'Italic or bold markup not allowed in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'apostrophe_markup',
category = 'CS1 errors: markup',
hidden = false
},
err_archive_date_missing_url = {
message = '<code class="cs1-code">|archive-date=</code> requires <code class="cs1-code">|archive-url=</code>',
anchor = 'archive_date_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_date_url_ts_mismatch = {
message = '<code class="cs1-code">|archive-date=</code> / <code class="cs1-code">|archive-url=</code> timestamp mismatch',
anchor = 'archive_date_url_ts_mismatch',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_date = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|archive-date=</code>',
anchor = 'archive_missing_date',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_missing_url = {
message = '<code class="cs1-code">|archive-url=</code> requires <code class="cs1-code">|url=</code>',
anchor = 'archive_missing_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_archive_url = {
message = '<code class="cs1-code">|archive-url=</code> is malformed: $1', -- $1 is error message detail
anchor = 'archive_url',
category = 'CS1 errors: archive-url',
hidden = false
},
err_arxiv_missing = {
message = '<code class="cs1-code">|arxiv=</code> required',
anchor = 'arxiv_missing',
category = 'CS1 errors: arXiv', -- same as bad arxiv
hidden = false
},
err_asintld_missing_asin = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|asin=</code>', -- $1 is parameter name
anchor = 'asintld_missing_asin',
category = 'CS1 errors: ASIN TLD',
hidden = false
},
err_bad_arxiv = {
message = 'Check <code class="cs1-code">|arxiv=</code> value',
anchor = 'bad_arxiv',
category = 'CS1 errors: arXiv',
hidden = false
},
err_bad_asin = {
message = 'Check <code class="cs1-code">|asin=</code> value',
anchor = 'bad_asin',
category ='CS1 errors: ASIN',
hidden = false
},
err_bad_asin_tld = {
message = 'Check <code class="cs1-code">|asin-tld=</code> value',
anchor = 'bad_asin_tld',
category ='CS1 errors: ASIN TLD',
hidden = false
},
err_bad_bibcode = {
message = 'Check <code class="cs1-code">|bibcode=</code> $1', -- $1 is error message detail
anchor = 'bad_bibcode',
category = 'CS1 errors: bibcode',
hidden = false
},
err_bad_biorxiv = {
message = 'Check <code class="cs1-code">|biorxiv=</code> value',
anchor = 'bad_biorxiv',
category = 'CS1 errors: bioRxiv',
hidden = false
},
err_bad_citeseerx = {
message = 'Check <code class="cs1-code">|citeseerx=</code> value',
anchor = 'bad_citeseerx',
category = 'CS1 errors: citeseerx',
hidden = false
},
err_bad_date = {
message = 'Check date values in: $1', -- $1 is a parameter name list
anchor = 'bad_date',
category = 'CS1 errors: dates',
hidden = false
},
err_bad_doi = {
message = 'Check <code class="cs1-code">|doi=</code> value',
anchor = 'bad_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_bad_hdl = {
message = 'Check <code class="cs1-code">|hdl=</code> value',
anchor = 'bad_hdl',
category = 'CS1 errors: HDL',
hidden = false
},
err_bad_isbn = {
message = 'Check <code class="cs1-code">|isbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_isbn',
category = 'CS1 errors: ISBN',
hidden = false
},
err_bad_ismn = {
message = 'Check <code class="cs1-code">|ismn=</code> value',
anchor = 'bad_ismn',
category = 'CS1 errors: ISMN',
hidden = false
},
err_bad_issn = {
message = 'Check <code class="cs1-code">|$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn
anchor = 'bad_issn',
category = 'CS1 errors: ISSN',
hidden = false
},
err_bad_jfm = {
message = 'Check <code class="cs1-code">|jfm=</code> value',
anchor = 'bad_jfm',
category = 'CS1 errors: JFM',
hidden = false
},
err_bad_jstor = {
message = 'Check <code class="cs1-code">|jstor=</code> value',
anchor = 'bad_jstor',
category = 'CS1 errors: JSTOR',
hidden = false
},
err_bad_lccn = {
message = 'Check <code class="cs1-code">|lccn=</code> value',
anchor = 'bad_lccn',
category = 'CS1 errors: LCCN',
hidden = false
},
err_bad_medrxiv = {
message = 'Check <code class="cs1-code">|medrxiv=</code> value',
anchor = 'bad_medrxiv',
category = 'CS1 errors: medRxiv',
hidden = false
},
err_bad_mr = {
message = 'Check <code class="cs1-code">|mr=</code> value',
anchor = 'bad_mr',
category = 'CS1 errors: MR',
hidden = false
},
err_bad_oclc = {
message = 'Check <code class="cs1-code">|oclc=</code> value',
anchor = 'bad_oclc',
category = 'CS1 errors: OCLC',
hidden = false
},
err_bad_ol = {
message = 'Check <code class="cs1-code">|ol=</code> value',
anchor = 'bad_ol',
category = 'CS1 errors: OL',
hidden = false
},
err_bad_osti = {
message = 'Check <code class="cs1-code">|osti=</code> value',
anchor = 'bad_osti',
category = 'CS1 errors: OSTI',
hidden = false
},
err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link=
message = 'Check <code class="cs1-code">|$1=</code> value', -- $1 is parameter name
anchor = 'bad_paramlink',
category = 'CS1 errors: parameter link',
hidden = false
},
err_bad_pmc = {
message = 'Check <code class="cs1-code">|pmc=</code> value',
anchor = 'bad_pmc',
category = 'CS1 errors: PMC',
hidden = false
},
err_bad_pmid = {
message = 'Check <code class="cs1-code">|pmid=</code> value',
anchor = 'bad_pmid',
category = 'CS1 errors: PMID',
hidden = false
},
err_bad_rfc = {
message = 'Check <code class="cs1-code">|rfc=</code> value',
anchor = 'bad_rfc',
category = 'CS1 errors: RFC',
hidden = false
},
err_bad_s2cid = {
message = 'Check <code class="cs1-code">|s2cid=</code> value',
anchor = 'bad_s2cid',
category = 'CS1 errors: S2CID',
hidden = false
},
err_bad_sbn = {
message = 'Check <code class="cs1-code">|sbn=</code> value: $1', -- $1 is error message detail
anchor = 'bad_sbn',
category = 'CS1 errors: SBN',
hidden = false
},
err_bad_ssrn = {
message = 'Check <code class="cs1-code">|ssrn=</code> value',
anchor = 'bad_ssrn',
category = 'CS1 errors: SSRN',
hidden = false
},
err_bad_url = {
message = 'Check $1 value', -- $1 is parameter name
anchor = 'bad_url',
category = 'CS1 errors: URL',
hidden = false
},
err_bad_usenet_id = {
message = 'Check <code class="cs1-code">|message-id=</code> value',
anchor = 'bad_message_id',
category = 'CS1 errors: message-id',
hidden = false
},
err_bad_zbl = {
message = 'Check <code class="cs1-code">|zbl=</code> value',
anchor = 'bad_zbl',
category = 'CS1 errors: Zbl',
hidden = false
},
err_bare_url_missing_title = {
message = '$1 missing title', -- $1 is parameter name
anchor = 'bare_url_missing_title',
category = 'CS1 errors: bare URL',
hidden = false
},
err_biorxiv_missing = {
message = '<code class="cs1-code">|biorxiv=</code> required',
anchor = 'biorxiv_missing',
category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv
hidden = false
},
err_chapter_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'chapter_ignored',
category = 'CS1 errors: chapter ignored',
hidden = false
},
err_citation_missing_title = {
message = 'Missing or empty <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'citation_missing_title',
category = 'CS1 errors: missing title',
hidden = false
},
err_citeseerx_missing = {
message = '<code class="cs1-code">|citeseerx=</code> required',
anchor = 'citeseerx_missing',
category = 'CS1 errors: citeseerx', -- same as bad citeseerx
hidden = false
},
err_cite_web_url = { -- this error applies to cite web and to cite podcast
message = 'Missing or empty <code class="cs1-code">|url=</code>',
anchor = 'cite_web_url',
category = 'CS1 errors: requires URL',
hidden = false
},
err_class_ignored = {
message = '<code class="cs1-code">|class=</code> ignored',
anchor = 'class_ignored',
category = 'CS1 errors: class',
hidden = false
},
err_contributor_ignored = {
message = '<code class="cs1-code">|contributor=</code> ignored',
anchor = 'contributor_ignored',
category = 'CS1 errors: contributor',
hidden = false
},
err_contributor_missing_required_param = {
message = '<code class="cs1-code">|contributor=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'contributor_missing_required_param',
category = 'CS1 errors: contributor',
hidden = false
},
err_deprecated_params = {
message = 'Cite uses deprecated parameter <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'deprecated_params',
category = 'CS1 errors: deprecated parameters',
hidden = false
},
err_disp_name = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name; $2 is the assigned value
anchor = 'disp_name',
category = 'CS1 errors: display-names',
hidden = false,
},
err_doibroken_missing_doi = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|doi=</code>', -- $1 is parameter name
anchor = 'doibroken_missing_doi',
category = 'CS1 errors: DOI',
hidden = false
},
err_embargo_missing_pmc = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|pmc=</code>', -- $1 is parameter name
anchor = 'embargo_missing_pmc',
category = 'CS1 errors: PMC embargo',
hidden = false
},
err_empty_citation = {
message = 'Empty citation',
anchor = 'empty_citation',
category = 'CS1 errors: empty citation',
hidden = false
},
err_etal = {
message = 'Explicit use of et al. in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'explicit_et_al',
category = 'CS1 errors: explicit use of et al.',
hidden = false
},
err_extra_text_edition = {
message = '<code class="cs1-code">|edition=</code> has extra text',
anchor = 'extra_text_edition',
category = 'CS1 errors: extra text: edition',
hidden = false,
},
err_extra_text_issue = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_issue',
category = 'CS1 errors: extra text: issue',
hidden = false,
},
err_extra_text_pages = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_pages',
category = 'CS1 errors: extra text: pages',
hidden = false,
},
err_extra_text_volume = {
message = '<code class="cs1-code">|$1=</code> has extra text', -- $1 is parameter name
anchor = 'extra_text_volume',
category = 'CS1 errors: extra text: volume',
hidden = true,
},
err_first_missing_last = {
message = '<code class="cs1-code">|$1=</code> missing <code class="cs1-code">|$2=</code>', -- $1 is first alias, $2 is matching last alias
anchor = 'first_missing_last',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_format_missing_url = {
message = '<code class="cs1-code">|$1=</code> requires <code class="cs1-code">|$2=</code>', -- $1 is format parameter $2 is url parameter
anchor = 'format_missing_url',
category = 'CS1 errors: format without URL',
hidden = false
},
err_generic_name = {
message = '<code class="cs1-code">|$1=</code> has generic name', -- $1 is parameter name
anchor = 'generic_name',
category = 'CS1 errors: generic name',
hidden = false,
},
err_generic_title = {
message = 'Cite uses generic title',
anchor = 'generic_title',
category = 'CS1 errors: generic title',
hidden = false,
},
err_invalid_param_val = {
message = 'Invalid <code class="cs1-code">|$1=$2</code>', -- $1 is parameter name $2 is parameter value
anchor = 'invalid_param_val',
category = 'CS1 errors: invalid parameter value',
hidden = false
},
err_invisible_char = {
message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number
anchor = 'invisible_char',
category = 'CS1 errors: invisible characters',
hidden = false
},
err_medrxiv_missing = {
message = '<code class="cs1-code">|medrxiv=</code> required',
anchor = 'medrxiv_missing',
category = 'CS1 errors: medRxiv', -- same as bad medRxiv
hidden = false
},
err_missing_name = {
message = 'Missing <code class="cs1-code">|$1$2=</code>', -- $1 is modified NameList; $2 is enumerator
anchor = 'missing_name',
category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator
hidden = false
},
err_missing_periodical = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1
anchor = 'missing_periodical',
category = 'CS1 errors: missing periodical',
hidden = true
},
err_missing_pipe = {
message = 'Missing pipe in: <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'missing_pipe',
category = 'CS1 errors: missing pipe',
hidden = false
},
err_missing_publisher = {
message = 'Cite $1 requires <code class="cs1-code">|$2=</code>', -- $1 is cs1 template name; $2 is canonical publisher parameter name for cite $1
anchor = 'missing_publisher',
category = 'CS1 errors: missing publisher',
hidden = false
},
err_param_access_requires_param = {
message = '<code class="cs1-code">|$1-access=</code> requires <code class="cs1-code">|$1=</code>', -- $1 is parameter name
anchor = 'param_access_requires_param',
category = 'CS1 errors: param-access',
hidden = false
},
err_param_has_ext_link = {
message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name
anchor = 'param_has_ext_link',
category = 'CS1 errors: external links',
hidden = false
},
err_parameter_ignored = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'parameter_ignored',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_parameter_ignored_suggest = {
message = 'Unknown parameter <code class="cs1-code">|$1=</code> ignored (<code class="cs1-code">|$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name
anchor = 'parameter_ignored_suggest',
category = 'CS1 errors: unsupported parameter',
hidden = false
},
err_periodical_ignored = {
message = '<code class="cs1-code">|$1=</code> ignored', -- $1 is parameter name
anchor = 'periodical_ignored',
category = 'CS1 errors: periodical ignored',
hidden = false
},
err_redundant_parameters = {
message = 'More than one of $1 specified', -- $1 is error message detail
anchor = 'redundant_parameters',
category = 'CS1 errors: redundant parameter',
hidden = false
},
err_script_parameter = {
message = 'Invalid <code class="cs1-code">|$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail
anchor = 'script_parameter',
category = 'CS1 errors: script parameters',
hidden = false
},
err_ssrn_missing = {
message = '<code class="cs1-code">|ssrn=</code> required',
anchor = 'ssrn_missing',
category = 'CS1 errors: SSRN',
hidden = false
},
err_text_ignored = {
message = 'Text "$1" ignored', -- $1 is ignored text
anchor = 'text_ignored',
category = 'CS1 errors: unrecognized parameter',
hidden = false
},
err_trans_missing_title = {
message = '<code class="cs1-code">|trans-$1=</code> requires <code class="cs1-code">|$1=</code> or <code class="cs1-code">|script-$1=</code>', -- $1 is base parameter name
anchor = 'trans_missing_title',
category = 'CS1 errors: translated title',
hidden = false
},
err_param_unknown_empty = {
message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list
anchor = 'param_unknown_empty',
category = 'CS1 errors: empty unknown parameters',
hidden = false
},
err_vancouver = {
message = 'Vancouver style error: $1 in name $2', -- $1 is error detail, $2 is the nth name
anchor = 'vancouver',
category = 'CS1 errors: Vancouver style',
hidden = false
},
err_wikilink_in_url = {
message = 'URL–wikilink conflict', -- uses ndash
anchor = 'wikilink_in_url',
category = 'CS1 errors: URL–wikilink conflict', -- uses ndash
hidden = false
},
--[[--------------------------< M A I N T >-------------------------------------
maint messages do not have a message (message = nil); otherwise the structure
is the same as error messages
]]
maint_archived_copy = {
message = nil,
anchor = 'archived_copy',
category = 'CS1 maint: archived copy as title',
hidden = true,
},
maint_authors = {
message = nil,
anchor = 'authors',
category = 'CS1 maint: uses authors parameter',
hidden = true,
},
maint_bibcode = {
message = nil,
anchor = 'bibcode',
category = 'CS1 maint: bibcode',
hidden = true,
},
maint_location_no_publisher = { -- cite book, conference, encyclopedia; citation as book cite or encyclopedia cite
message = nil,
anchor = 'location_no_publisher',
category = 'CS1 maint: location missing publisher',
hidden = true,
},
maint_bot_unknown = {
message = nil,
anchor = 'bot:_unknown',
category = 'CS1 maint: bot: original URL status unknown',
hidden = true,
},
maint_date_auto_xlated = { -- date auto-translation not supported by en.wiki
message = nil,
anchor = 'date_auto_xlated',
category = 'CS1 maint: date auto-translated',
hidden = true,
},
maint_date_format = {
message = nil,
anchor = 'date_format',
category = 'CS1 maint: date format',
hidden = true,
},
maint_date_year = {
message = nil,
anchor = 'date_year',
category = 'CS1 maint: date and year',
hidden = true,
},
maint_doi_ignore = {
message = nil,
anchor = 'doi_ignore',
category = 'CS1 maint: ignored DOI errors',
hidden = true,
},
maint_doi_inactive = {
message = nil,
anchor = 'doi_inactive',
category = 'CS1 maint: DOI inactive',
hidden = true,
},
maint_doi_inactive_dated = {
message = nil,
anchor = 'doi_inactive_dated',
category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string
hidden = true,
},
maint_extra_punct = {
message = nil,
anchor = 'extra_punct',
category = 'CS1 maint: extra punctuation',
hidden = true,
},
maint_isbn_ignore = {
message = nil,
anchor = 'ignore_isbn_err',
category = 'CS1 maint: ignored ISBN errors',
hidden = true,
},
maint_issn_ignore = {
message = nil,
anchor = 'ignore_issn',
category = 'CS1 maint: ignored ISSN errors',
hidden = true,
},
maint_jfm_format = {
message = nil,
anchor = 'jfm_format',
category = 'CS1 maint: JFM format',
hidden = true,
},
maint_location = {
message = nil,
anchor = 'location',
category = 'CS1 maint: location',
hidden = true,
},
maint_mr_format = {
message = nil,
anchor = 'mr_format',
category = 'CS1 maint: MR format',
hidden = true,
},
maint_mult_names = {
message = nil,
anchor = 'mult_names',
category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_numeric_names = {
message = nil,
anchor = 'numeric_names',
category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table
hidden = true,
},
maint_others = {
message = nil,
anchor = 'others',
category = 'CS1 maint: others',
hidden = true,
},
maint_others_avm = {
message = nil,
anchor = 'others_avm',
category = 'CS1 maint: others in cite AV media (notes)',
hidden = true,
},
maint_overridden_setting = {
message = nil,
anchor = 'overridden',
category = 'CS1 maint: overridden setting',
hidden = true,
},
maint_pmc_embargo = {
message = nil,
anchor = 'embargo',
category = 'CS1 maint: PMC embargo expired',
hidden = true,
},
maint_pmc_format = {
message = nil,
anchor = 'pmc_format',
category = 'CS1 maint: PMC format',
hidden = true,
},
maint_postscript = {
message = nil,
anchor = 'postscript',
category = 'CS1 maint: postscript',
hidden = true,
},
maint_ref_duplicates_default = {
message = nil,
anchor = 'ref_default',
category = 'CS1 maint: ref duplicates default',
hidden = true,
},
maint_unfit = {
message = nil,
anchor = 'unfit',
category = 'CS1 maint: unfit URL',
hidden = true,
},
maint_unknown_lang = {
message = nil,
anchor = 'unknown_lang',
category = 'CS1 maint: unrecognized language',
hidden = true,
},
maint_untitled = {
message = nil,
anchor = 'untitled',
category = 'CS1 maint: untitled periodical',
hidden = true,
},
maint_url_status = {
message = nil,
anchor = 'url_status',
category = 'CS1 maint: url-status',
hidden = true,
},
maint_zbl = {
message = nil,
anchor = 'zbl',
category = 'CS1 maint: Zbl',
hidden = true,
},
}
--[[--------------------------< I D _ H A N D L E R S >--------------------------------------------------------
The following contains a list of values for various defined identifiers. For each
identifier we specify a variety of information necessary to properly render the
identifier in the citation.
parameters: a list of parameter aliases for this identifier; first in the list is the canonical form
link: Wikipedia article name
redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number'
q: Wikidata q number for the identifier
label: the label preceding the identifier; label is linked to a Wikipedia article (in this order):
redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true
Wikidata-supplied article name for the local wiki from id_handlers['<id>'].q
local article name from id_handlers['<id>'].link
prefix: the first part of a URL that will be concatenated with a second part which usually contains the identifier
suffix: optional third part to be added after the identifier
encode: true if URI should be percent-encoded; otherwise false
COinS: identifier link or keyword for use in COinS:
for identifiers registered at info-uri.info use: info:.... where '...' is the appropriate identifier label
for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn
for |asin= and |ol=, which require assembly, use the keyword: url
for others make a URL using the value in prefix/suffix and #label, use the keyword: pre (not checked; any text other than 'info', 'rft', or 'url' works here)
set to nil to leave the identifier out of the COinS
separator: character or text between label and the identifier in the rendered citation
id_limit: for those identifiers with established limits, this property holds the upper limit
access: use this parameter to set the access level for all instances of this identifier.
the value must be a valid access level for an identifier (see ['id-access'] in this file).
custom_access: to enable custom access level for an identifier, set this parameter
to the parameter that should control it (normally 'id-access')
]]
local id_handlers = {
['ARXIV'] = {
parameters = {'arxiv', 'eprint'},
link = 'arXiv',
redirect = 'arXiv (identifier)',
q = 'Q118398',
label = 'arXiv',
prefix = 'https://arxiv.org/abs/',
encode = false,
COinS = 'info:arxiv',
separator = ':',
access = 'free', -- free to read
},
['ASIN'] = {
parameters = { 'asin', 'ASIN' },
link = 'Amazon Standard Identification Number',
redirect = 'ASIN (identifier)',
q = 'Q1753278',
label = 'ASIN',
prefix = 'https://www.amazon.',
COinS = 'url',
separator = ' ',
encode = false;
},
['BIBCODE'] = {
parameters = {'bibcode'},
link = 'Bibcode',
redirect = 'Bibcode (identifier)',
q = 'Q25754',
label = 'Bibcode',
prefix = 'https://ui.adsabs.harvard.edu/abs/',
encode = false,
COinS = 'info:bibcode',
separator = ':',
custom_access = 'bibcode-access',
},
['BIORXIV'] = {
parameters = {'biorxiv'},
link = 'bioRxiv',
redirect = 'bioRxiv (identifier)',
q = 'Q19835482',
label = 'bioRxiv',
prefix = 'https://doi.org/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['CITESEERX'] = {
parameters = {'citeseerx'},
link = 'CiteSeerX',
redirect = 'CiteSeerX (identifier)',
q = 'Q2715061',
label = 'CiteSeerX',
prefix = 'https://citeseerx.ist.psu.edu/viewdoc/summary?doi=',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = true,
separator = ' ',
},
['DOI'] = { -- Used by InternetArchiveBot
parameters = { 'doi', 'DOI'},
link = 'Digital object identifier',
redirect = 'doi (identifier)',
q = 'Q25670',
label = 'doi',
prefix = 'https://doi.org/',
COinS = 'info:doi',
separator = ':',
encode = true,
custom_access = 'doi-access',
},
['EISSN'] = {
parameters = {'eissn', 'EISSN'},
link = 'International Standard Serial Number#Electronic ISSN',
redirect = 'eISSN (identifier)',
q = 'Q46339674',
label = 'eISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.eissn',
encode = false,
separator = ' ',
},
['HDL'] = {
parameters = { 'hdl', 'HDL' },
link = 'Handle System',
redirect = 'hdl (identifier)',
q = 'Q3126718',
label = 'hdl',
prefix = 'https://hdl.handle.net/',
COinS = 'info:hdl',
separator = ':',
encode = true,
custom_access = 'hdl-access',
},
['ISBN'] = { -- Used by InternetArchiveBot
parameters = {'isbn', 'ISBN'},
link = 'International Standard Book Number',
redirect = 'ISBN (identifier)',
q = 'Q33057',
label = 'ISBN',
prefix = 'Special:BookSources/',
COinS = 'rft.isbn',
separator = ' ',
},
['ISMN'] = {
parameters = {'ismn', 'ISMN'},
link = 'International Standard Music Number',
redirect = 'ISMN (identifier)',
q = 'Q1666938',
label = 'ISMN',
prefix = '', -- not currently used;
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['ISSN'] = {
parameters = {'issn', 'ISSN'},
link = 'International Standard Serial Number',
redirect = 'ISSN (identifier)',
q = 'Q131276',
label = 'ISSN',
prefix = 'https://www.worldcat.org/issn/',
COinS = 'rft.issn',
encode = false,
separator = ' ',
},
['JFM'] = {
parameters = {'jfm', 'JFM'},
link = 'Jahrbuch über die Fortschritte der Mathematik',
redirect = 'JFM (identifier)',
q = '',
label = 'JFM',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['JSTOR'] = {
parameters = {'jstor', 'JSTOR'},
link = 'JSTOR',
redirect = 'JSTOR (identifier)',
q = 'Q1420342',
label = 'JSTOR',
prefix = 'https://www.jstor.org/stable/',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
custom_access = 'jstor-access',
},
['LCCN'] = {
parameters = {'lccn', 'LCCN'},
link = 'Library of Congress Control Number',
redirect = 'LCCN (identifier)',
q = 'Q620946',
label = 'LCCN',
prefix = 'https://lccn.loc.gov/',
COinS = 'info:lccn',
encode = false,
separator = ' ',
},
['MEDRXIV'] = {
parameters = {'medrxiv'},
link = 'medRxiv',
redirect = 'medRxiv (identifier)',
q = 'Q58465838',
label = 'medRxiv',
prefix = 'https://www.medrxiv.org/content/',
COinS = 'pre', -- use prefix value
access = 'free', -- free to read
encode = false,
separator = ' ',
},
['MR'] = {
parameters = {'mr', 'MR'},
link = 'Mathematical Reviews',
redirect = 'MR (identifier)',
q = 'Q211172',
label = 'MR',
prefix = 'https://mathscinet.ams.org/mathscinet-getitem?mr=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
['OCLC'] = {
parameters = {'oclc', 'OCLC'},
link = 'OCLC',
redirect = 'OCLC (identifier)',
q = 'Q190593',
label = 'OCLC',
prefix = 'https://www.worldcat.org/oclc/',
COinS = 'info:oclcnum',
encode = true,
separator = ' ',
id_limit = 10030000000,
},
['OL'] = {
parameters = { 'ol', 'OL' },
link = 'Open Library',
redirect = 'OL (identifier)',
q = 'Q1201876',
label = 'OL',
prefix = 'https://openlibrary.org/',
COinS = 'url',
separator = ' ',
encode = true,
custom_access = 'ol-access',
},
['OSTI'] = {
parameters = {'osti', 'OSTI'},
link = 'Office of Scientific and Technical Information',
redirect = 'OSTI (identifier)',
q = 'Q2015776',
label = 'OSTI',
prefix = 'https://www.osti.gov/biblio/',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 23010000,
custom_access = 'osti-access',
},
['PMC'] = {
parameters = {'pmc', 'PMC'},
link = 'PubMed Central',
redirect = 'PMC (identifier)',
q = 'Q229883',
label = 'PMC',
prefix = 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC',
suffix = '',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 10700000,
access = 'free', -- free to read
},
['PMID'] = {
parameters = {'pmid', 'PMID'},
link = 'PubMed Identifier',
redirect = 'PMID (identifier)',
q = 'Q2082879',
label = 'PMID',
prefix = 'https://pubmed.ncbi.nlm.nih.gov/',
COinS = 'info:pmid',
encode = false,
separator = ' ',
id_limit = 38400000,
},
['RFC'] = {
parameters = {'rfc', 'RFC'},
link = 'Request for Comments',
redirect = 'RFC (identifier)',
q = 'Q212971',
label = 'RFC',
prefix = 'https://tools.ietf.org/html/rfc',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 9300,
access = 'free', -- free to read
},
['SBN'] = {
parameters = {'sbn', 'SBN'},
link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History
redirect = 'SBN (identifier)',
label = 'SBN',
prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn
COinS = nil, -- nil because we can't use pre or rft or info:
separator = ' ',
},
['SSRN'] = {
parameters = {'ssrn', 'SSRN'},
link = 'Social Science Research Network',
redirect = 'SSRN (identifier)',
q = 'Q7550801',
label = 'SSRN',
prefix = 'https://papers.ssrn.com/sol3/papers.cfm?abstract_id=',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
id_limit = 4600000,
custom_access = 'ssrn-access',
},
['S2CID'] = {
parameters = {'s2cid', 'S2CID'},
link = 'Semantic Scholar',
redirect = 'S2CID (identifier)',
q = 'Q22908627',
label = 'S2CID',
prefix = 'https://api.semanticscholar.org/CorpusID:',
COinS = 'pre', -- use prefix value
encode = false,
separator = ' ',
id_limit = 266000000,
custom_access = 's2cid-access',
},
['USENETID'] = {
parameters = {'message-id'},
link = 'Usenet',
redirect = 'Usenet (identifier)',
q = 'Q193162',
label = 'Usenet:',
prefix = 'news:',
encode = false,
COinS = 'pre', -- use prefix value
separator = ' ',
},
['ZBL'] = {
parameters = {'zbl', 'ZBL' },
link = 'Zentralblatt MATH',
redirect = 'Zbl (identifier)',
q = 'Q190269',
label = 'Zbl',
prefix = 'https://zbmath.org/?format=complete&q=an:',
COinS = 'pre', -- use prefix value
encode = true,
separator = ' ',
},
}
--[[--------------------------< E X P O R T S >---------------------------------
]]
return {
use_identifier_redirects = use_identifier_redirects, -- booleans defined in the settings at the top of this module
local_lang_cat_enable = local_lang_cat_enable,
date_name_auto_xlate_enable = date_name_auto_xlate_enable,
date_digit_auto_xlate_enable = date_digit_auto_xlate_enable,
-- tables and variables created when this module is loaded
global_df = get_date_format (), -- this line can be replaced with "global_df = 'dmy-all'," to have all dates auto translated to dmy format.
global_cs1_config_t = global_cs1_config_t, -- global settings from {{cs1 config}}
punct_skip = build_skip_table (punct_skip, punct_meta_params),
url_skip = build_skip_table (url_skip, url_meta_params),
aliases = aliases,
special_case_translation = special_case_translation,
date_names = date_names,
err_msg_supl = err_msg_supl,
error_conditions = error_conditions,
editor_markup_patterns = editor_markup_patterns,
et_al_patterns = et_al_patterns,
id_handlers = id_handlers,
keywords_lists = keywords_lists,
keywords_xlate = keywords_xlate,
stripmarkers = stripmarkers,
invisible_chars = invisible_chars,
invisible_defs = invisible_defs,
indic_script = indic_script,
emoji_t = emoji_t,
maint_cats = maint_cats,
messages = messages,
presentation = presentation,
prop_cats = prop_cats,
script_lang_codes = script_lang_codes,
lang_tag_remap = lang_tag_remap,
lang_name_remap = lang_name_remap,
this_wiki_code = this_wiki_code,
title_types = title_types,
uncategorized_namespaces = uncategorized_namespaces_t,
uncategorized_subpages = uncategorized_subpages,
templates_using_volume = templates_using_volume,
templates_using_issue = templates_using_issue,
templates_not_using_page = templates_not_using_page,
vol_iss_pg_patterns = vol_iss_pg_patterns,
single_letter_2nd_lvl_domains_t = single_letter_2nd_lvl_domains_t,
inter_wiki_map = inter_wiki_map,
mw_languages_by_tag_t = mw_languages_by_tag_t,
mw_languages_by_name_t = mw_languages_by_name_t,
citation_class_map_t = citation_class_map_t,
citation_issue_t = citation_issue_t,
citation_no_volume_t = citation_no_volume_t,
}
3e2dde0333a73a0a39271b2bb53463ec90587d77
Template:Div col/styles.css
10
46
3071
424
2023-11-07T21:54:12Z
wikipedia>Izno
0
revert per talk page
sanitized-css
text/css
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc
3072
3071
2023-11-09T18:01:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Div_col/styles.css]]
sanitized-css
text/css
/* {{pp|small=yes}} */
.div-col {
margin-top: 0.3em;
column-width: 30em;
}
.div-col-small {
font-size: 90%;
}
.div-col-rules {
column-rule: 1px solid #aaa;
}
/* Reset top margin for lists in div col */
.div-col dl,
.div-col ol,
.div-col ul {
margin-top: 0;
}
/* Avoid elements breaking between columns
See also Template:No col break */
.div-col li,
.div-col dd {
page-break-inside: avoid; /* Removed from CSS in favor of break-inside c. 2020 */
break-inside: avoid-column;
}
c6c2dc0cb2bab7a5f7b4eb938eebc5c67df087bc
Template:Columns-list
10
608
3073
1375
2023-11-08T20:02:10Z
wikipedia>Frietjes
0
wikitext
text/x-wiki
{{#if:{{{1|}}}|{{<includeonly>safesubst:</includeonly>#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude>
{{documentation}}
</noinclude>
6af253b4919acd8f8e076f26b5bbc4c4ffef47b5
3074
3073
2023-11-09T18:01:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Columns-list]]
wikitext
text/x-wiki
{{#if:{{{1|}}}|{{<includeonly>safesubst:</includeonly>#invoke:Template wrapper|wrap|_template=div col|_alias-map=1:content|colwidth=30em}}}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using columns-list with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Columns-list]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | class | content | colwidth | gap | rules | small | style }}<noinclude>
{{documentation}}
</noinclude>
6af253b4919acd8f8e076f26b5bbc4c4ffef47b5
Module:Location map/data/USA Minnesota
828
1631
2972
2971
2023-11-09T13:08:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Minnesota]]
Scribunto
text/plain
return {
name = 'Minnesota',
top = 49.6,
bottom = 43.3,
left = -97.4,
right = -89.3,
image = 'USA Minnesota location map.svg',
image1 = 'USA Minnesota relief location map.svg'
}
cbeccbdc44b6fb67f064c0fd0fe0857151aefb98
Template:Location map+
10
1632
2974
2973
2023-11-09T13:08:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Location_map+]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map/multi|container}}</includeonly><noinclude>{{documentation}}</noinclude>
6d8191274535019dfbe086080294788b4c2e6602
Template:Location map~
10
1633
2976
2975
2023-11-09T13:08:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Location_map~]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map|mark}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
0dc485fa8e546ebe81ad6c28972fbea662afcf39
Module:Location map
828
1395
2978
2977
2023-11-09T13:08:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map]]
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local function round(n, decimals)
local pow = 10^(decimals or 0)
return math.floor(n * pow + 0.5) / pow
end
function p.getMapParams(map, frame)
if not map then
error('The name of the location map definition to use must be specified', 2)
end
local moduletitle = mw.title.new('Module:Location map/data/' .. map)
if not moduletitle then
error(string.format('%q is not a valid name for a location map definition', map), 2)
elseif moduletitle.exists then
local mapData = mw.loadData('Module:Location map/data/' .. map)
return function(name, params)
if name == nil then
return 'Module:Location map/data/' .. map
elseif mapData[name] == nil then
return ''
elseif params then
return mw.message.newRawMessage(tostring(mapData[name]), unpack(params)):plain()
else
return mapData[name]
end
end
else
error('Unable to find the specified location map definition: "Module:Location map/data/' .. map .. '" does not exist', 2)
end
end
function p.data(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local params = {}
for k,v in ipairs(args) do
if k > 2 then
params[k-2] = v
end
end
return map(args[2], #params ~= 0 and params)
end
local hemisphereMultipliers = {
longitude = { W = -1, w = -1, E = 1, e = 1 },
latitude = { S = -1, s = -1, N = 1, n = 1 }
}
local function decdeg(degrees, minutes, seconds, hemisphere, decimal, direction)
if decimal then
if degrees then
error('Decimal and DMS degrees cannot both be provided for ' .. direction, 2)
elseif minutes then
error('Minutes can only be provided with DMS degrees for ' .. direction, 2)
elseif seconds then
error('Seconds can only be provided with DMS degrees for ' .. direction, 2)
elseif hemisphere then
error('A hemisphere can only be provided with DMS degrees for ' .. direction, 2)
end
local retval = tonumber(decimal)
if retval then
return retval
end
error('The value "' .. decimal .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not minutes then
error('Seconds were provided for ' .. direction .. ' without minutes also being provided', 2)
elseif not degrees then
if minutes then
error('Minutes were provided for ' .. direction .. ' without degrees also being provided', 2)
elseif hemisphere then
error('A hemisphere was provided for ' .. direction .. ' without degrees also being provided', 2)
end
return nil
end
decimal = tonumber(degrees)
if not decimal then
error('The degree value "' .. degrees .. '" provided for ' .. direction .. ' is not valid', 2)
elseif minutes and not tonumber(minutes) then
error('The minute value "' .. minutes .. '" provided for ' .. direction .. ' is not valid', 2)
elseif seconds and not tonumber(seconds) then
error('The second value "' .. seconds .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal + (minutes or 0)/60 + (seconds or 0)/3600
if hemisphere then
local multiplier = hemisphereMultipliers[direction][hemisphere]
if not multiplier then
error('The hemisphere "' .. hemisphere .. '" provided for ' .. direction .. ' is not valid', 2)
end
decimal = decimal * multiplier
end
return decimal
end
-- Finds a parameter in a transclusion of {{Coord}}.
local function coord2text(para,coord) -- this should be changed for languages which do not use Arabic numerals or the degree sign
local lat, long = mw.ustring.match(coord,'<span class="p%-latitude latitude">([^<]+)</span><span class="p%-longitude longitude">([^<]+)</span>')
if lat then
return tonumber(para == 'longitude' and long or lat)
end
local result = mw.text.split(mw.ustring.match(coord,'%-?[%.%d]+°[NS] %-?[%.%d]+°[EW]') or '', '[ °]')
if para == 'longitude' then result = {result[3], result[4]} end
if not tonumber(result[1]) or not result[2] then
mw.log('Malformed coordinates value')
mw.logObject(para, 'para')
mw.logObject(coord, 'coord')
return error('Malformed coordinates value', 2)
end
return tonumber(result[1]) * hemisphereMultipliers[para][result[2]]
end
-- effectively make removeBlanks false for caption and maplink, and true for everything else
-- if useWikidata is present but blank, convert it to false instead of nil
-- p.top, p.bottom, and their callers need to use this
function p.valueFunc(key, value)
if value then
value = mw.text.trim(value)
end
if value ~= '' or key == 'caption' or key == 'maplink' then
return value
elseif key == 'useWikidata' then
return false
end
end
local function getContainerImage(args, map)
if args.AlternativeMap then
return args.AlternativeMap
elseif args.relief then
local digits = mw.ustring.match(args.relief,'^[1-9][0-9]?$') or '1' -- image1 to image99
if map('image' .. digits) ~= '' then
return map('image' .. digits)
end
end
return map('image')
end
function p.top(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local width
local default_as_number = tonumber(mw.ustring.match(tostring(args.default_width),"%d*"))
if not args.width then
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
elseif mw.ustring.sub(args.width, -2) == 'px' then
width = mw.ustring.sub(args.width, 1, -3)
else
width = args.width
end
local width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
if width_as_number == 0 then
-- check to see if width is junk. If it is, then use default calculation
width = round((default_as_number or 240) * (tonumber(map('defaultscale')) or 1))
width_as_number = tonumber(mw.ustring.match(tostring(width),"%d*")) or 0;
end
if args.max_width ~= "" and args.max_width ~= nil then
-- check to see if width bigger than max_width
local max_as_number = tonumber(mw.ustring.match(args.max_width,"%d*")) or 0;
if width_as_number>max_as_number and max_as_number>0 then
width = args.max_width;
end
end
local retval = frame:extensionTag{name = 'templatestyles', args = {src = 'Module:Location map/styles.css'}}
if args.float == 'center' then
retval = retval .. '<div class="center">'
end
if args.caption and args.caption ~= '' and args.border ~= 'infobox' then
retval = retval .. '<div class="locmap noviewer noresize thumb '
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'tleft'
elseif args.float == '"center"' or args.float == 'center' or args.float == '"none"' or args.float == 'none' then
retval = retval .. 'tnone'
else
retval = retval .. 'tright'
end
retval = retval .. '"><div class="thumbinner" style="width:' .. (width + 2) .. 'px'
if args.border == 'none' then
retval = retval .. ';border:none'
elseif args.border then
retval = retval .. ';border-color:' .. args.border
end
retval = retval .. '"><div style="position:relative;width:' .. width .. 'px' .. (args.border ~= 'none' and ';border:1px solid lightgray">' or '">')
else
retval = retval .. '<div class="locmap" style="width:' .. width .. 'px;'
if args.float == '"left"' or args.float == 'left' then
retval = retval .. 'float:left;clear:left'
elseif args.float == '"center"' or args.float == 'center' then
retval = retval .. 'float:none;clear:both;margin-left:auto;margin-right:auto'
elseif args.float == '"none"' or args.float == 'none' then
retval = retval .. 'float:none;clear:none'
else
retval = retval .. 'float:right;clear:right'
end
retval = retval .. '"><div style="width:' .. width .. 'px;padding:0"><div style="position:relative;width:' .. width .. 'px">'
end
local image = getContainerImage(args, map)
local currentTitle = mw.title.getCurrentTitle()
retval = string.format(
'%s[[File:%s|%spx|%s%s|class=notpageimage]]',
retval,
image,
width,
args.alt or ((args.label or currentTitle.text) .. ' is located in ' .. map('name')),
args.maplink and ('|link=' .. args.maplink) or ''
)
if args.caption and args.caption ~= '' then
if (currentTitle.namespace == 0) and mw.ustring.find(args.caption, '##') then
retval = retval .. '[[Category:Pages using location map with a double number sign in the caption]]'
end
end
if args.overlay_image then
return retval .. '<div style="position:absolute;top:0;left:0">[[File:' .. args.overlay_image .. '|' .. width .. 'px|class=notpageimage]]</div>'
else
return retval
end
end
function p.bottom(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true, valueFunc = p.valueFunc})
end
if not map then
map = p.getMapParams(args[1], frame)
end
local retval = '</div>'
local currentTitle = mw.title.getCurrentTitle()
if not args.caption or args.border == 'infobox' then
if args.border then
retval = retval .. '<div style="padding-top:0.2em">'
else
retval = retval .. '<div style="font-size:91%;padding-top:3px">'
end
retval = retval
.. (args.caption or (args.label or currentTitle.text) .. ' (' .. map('name') .. ')')
.. '</div>'
elseif args.caption ~= '' then
-- This is not the pipe trick. We're creating a link with no text on purpose, so that CSS can give us a nice image
retval = retval .. '<div class="thumbcaption"><div class="magnify">[[:File:' .. getContainerImage(args, map) .. '|class=notpageimage| ]]</div>' .. args.caption .. '</div>'
end
if args.switcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">' .. args.switcherLabel .. '</span>'
elseif args.autoSwitcherLabel then
retval = retval .. '<span class="switcher-label" style="display:none">Show map of ' .. map('name') .. '</span>'
end
retval = retval .. '</div></div>'
if args.caption_undefined then
mw.log('Removed parameter caption_undefined used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with removed parameters|caption_undefined]]'
end
end
if map('skew') ~= '' or map('lat_skew') ~= '' or map('crosses180') ~= '' or map('type') ~= '' then
mw.log('Removed parameter used in map definition ' .. map())
if currentTitle.namespace == 0 then
local key = (map('skew') ~= '' and 'skew' or '') ..
(map('lat_skew') ~= '' and 'lat_skew' or '') ..
(map('crosses180') ~= '' and 'crosses180' or '') ..
(map('type') ~= '' and 'type' or '')
retval = retval .. '[[Category:Location maps with removed parameters|' .. key .. ' ]]'
end
end
if string.find(map('name'), '|', 1, true) then
mw.log('Pipe used in name of map definition ' .. map())
if currentTitle.namespace == 0 then
retval = retval .. '[[Category:Location maps with a name containing a pipe]]'
end
end
if args.float == 'center' then
retval = retval .. '</div>'
end
return retval
end
local function markOuterDiv(x, y, imageDiv, labelDiv)
return mw.html.create('div')
:addClass('od')
:cssText('top:' .. round(y, 3) .. '%;left:' .. round(x, 3) .. '%')
:node(imageDiv)
:node(labelDiv)
end
local function markImageDiv(mark, marksize, label, link, alt, title)
local builder = mw.html.create('div')
:addClass('id')
:cssText('left:-' .. round(marksize / 2) .. 'px;top:-' .. round(marksize / 2) .. 'px')
:attr('title', title)
if marksize ~= 0 then
builder:wikitext(string.format(
'[[File:%s|%dx%dpx|%s|link=%s%s|class=notpageimage]]',
mark,
marksize,
marksize,
label,
link,
alt and ('|alt=' .. alt) or ''
))
end
return builder
end
local function markLabelDiv(label, label_size, label_width, position, background, x, marksize)
if tonumber(label_size) == 0 then
return mw.html.create('div'):addClass('l0'):wikitext(label)
end
local builder = mw.html.create('div')
:cssText('font-size:' .. label_size .. '%;width:' .. label_width .. 'em')
local distance = round(marksize / 2 + 1)
if position == 'top' then -- specified top
builder:addClass('pv'):cssText('bottom:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'bottom' then -- specified bottom
builder:addClass('pv'):cssText('top:' .. distance .. 'px;left:' .. (-label_width / 2) .. 'em')
elseif position == 'left' or (tonumber(x) > 70 and position ~= 'right') then -- specified left or autodetected to left
builder:addClass('pl'):cssText('right:' .. distance .. 'px')
else -- specified right or autodetected to right
builder:addClass('pr'):cssText('left:' .. distance .. 'px')
end
builder = builder:tag('div')
:wikitext(label)
if background then
builder:cssText('background-color:' .. background)
end
return builder:done()
end
local function getX(longitude, left, right)
local width = (right - left) % 360
if width == 0 then
width = 360
end
local distanceFromLeft = (longitude - left) % 360
-- the distance needed past the map to the right equals distanceFromLeft - width. the distance needed past the map to the left equals 360 - distanceFromLeft. to minimize page stretching, go whichever way is shorter
if distanceFromLeft - width / 2 >= 180 then
distanceFromLeft = distanceFromLeft - 360
end
return 100 * distanceFromLeft / width
end
local function getY(latitude, top, bottom)
return 100 * (top - latitude) / (top - bottom)
end
function p.mark(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map~'})
end
local mapnames = {}
if not map then
if args[1] then
map = {}
for mapname in mw.text.gsplit(args[1], '#', true) do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
mapnames[#mapnames + 1] = mapname
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
args[1] = 'World'
end
end
if type(map) == 'table' then
local outputs = {}
local oldargs = args[1]
for k,v in ipairs(map) do
args[1] = mapnames[k]
outputs[k] = tostring(p.mark(frame, args, v))
end
args[1] = oldargs
return table.concat(outputs, '#PlaceList#') .. '#PlaceList#'
end
local x, y, longitude, latitude
longitude = decdeg(args.lon_deg, args.lon_min, args.lon_sec, args.lon_dir, args.long, 'longitude')
latitude = decdeg(args.lat_deg, args.lat_min, args.lat_sec, args.lat_dir, args.lat, 'latitude')
if args.excludefrom then
-- If this mark is to be excluded from certain maps entirely (useful in the context of multiple maps)
for exclusionmap in mw.text.gsplit(args.excludefrom, '#', true) do
-- Check if this map is excluded. If so, return an empty string.
if args[1] == exclusionmap then
return ''
end
end
end
local builder = mw.html.create()
local currentTitle = mw.title.getCurrentTitle()
if args.coordinates then
-- Temporarily removed to facilitate infobox conversion. See [[Wikipedia:Coordinates in infoboxes]]
-- if longitude or latitude then
-- error('Coordinates from [[Module:Coordinates]] and individual coordinates cannot both be provided')
-- end
longitude = coord2text('longitude', args.coordinates)
latitude = coord2text('latitude', args.coordinates)
elseif not longitude and not latitude and args.useWikidata then
-- If they didn't provide either coordinate, try Wikidata. If they provided one but not the other, don't.
local entity = mw.wikibase.getEntity()
if entity and entity.claims and entity.claims.P625 and entity.claims.P625[1].mainsnak.snaktype == 'value' then
local value = entity.claims.P625[1].mainsnak.datavalue.value
longitude, latitude = value.longitude, value.latitude
end
if args.link and (currentTitle.namespace == 0) then
builder:wikitext('[[Category:Location maps with linked markers with coordinates from Wikidata]]')
end
end
if not longitude then
error('No value was provided for longitude')
elseif not latitude then
error('No value was provided for latitude')
end
if currentTitle.namespace > 0 then
if (not args.lon_deg) ~= (not args.lat_deg) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Degrees]]')
elseif (not args.lon_min) ~= (not args.lat_min) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Minutes]]')
elseif (not args.lon_sec) ~= (not args.lat_sec) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Seconds]]')
elseif (not args.lon_dir) ~= (not args.lat_dir) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Hemisphere]]')
elseif (not args.long) ~= (not args.lat) then
builder:wikitext('[[Category:Location maps with different longitude and latitude precisions|Decimal]]')
end
end
if ((tonumber(args.lat_deg) or 0) < 0) and ((tonumber(args.lat_min) or 0) ~= 0 or (tonumber(args.lat_sec) or 0) ~= 0 or (args.lat_dir and args.lat_dir ~='')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if ((tonumber(args.lon_deg) or 0) < 0) and ((tonumber(args.lon_min) or 0) ~= 0 or (tonumber(args.lon_sec) or 0) ~= 0 or (args.lon_dir and args.lon_dir ~= '')) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lat_min) or 0) < 0) or ((tonumber(args.lat_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if (((tonumber(args.lon_min) or 0) < 0) or ((tonumber(args.lon_sec) or 0) < 0)) then
builder:wikitext('[[Category:Location maps with negative degrees and minutes or seconds]]')
end
if args.skew or args.lon_shift or args.markhigh then
mw.log('Removed parameter used in invocation.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = (args.skew and 'skew' or '') ..
(args.lon_shift and 'lon_shift' or '') ..
(args.markhigh and 'markhigh' or '')
builder:wikitext('[[Category:Location maps with removed parameters|' .. key ..' ]]')
end
end
if map('x') ~= '' then
x = tonumber(mw.ext.ParserFunctions.expr(map('x', { latitude, longitude })))
else
x = tonumber(getX(longitude, map('left'), map('right')))
end
if map('y') ~= '' then
y = tonumber(mw.ext.ParserFunctions.expr(map('y', { latitude, longitude })))
else
y = tonumber(getY(latitude, map('top'), map('bottom')))
end
if (x < 0 or x > 100 or y < 0 or y > 100) and not args.outside then
mw.log('Mark placed outside map boundaries without outside flag set. x = ' .. x .. ', y = ' .. y)
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
if currentTitle.namespace == 0 then
local key = currentTitle.prefixedText
builder:wikitext('[[Category:Location maps with marks outside map and outside parameter not set|' .. key .. ' ]]')
end
end
local mark = args.mark or map('mark')
if mark == '' then
mark = 'Red pog.svg'
end
local marksize = tonumber(args.marksize) or tonumber(map('marksize')) or 8
local imageDiv = markImageDiv(mark, marksize, args.label or mw.title.getCurrentTitle().text, args.link or '', args.alt, args[2])
local labelDiv
if args.label and args.position ~= 'none' then
labelDiv = markLabelDiv(args.label, args.label_size or 91, args.label_width or 6, args.position, args.background, x, marksize)
end
return builder:node(markOuterDiv(x, y, imageDiv, labelDiv))
end
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.main(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map', valueFunc = p.valueFunc})
end
if args.useWikidata == nil then
args.useWikidata = true
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = p.getMapParams(mw.ustring.gsub(mapname, '^%s*(.-)%s*$', '%1'), frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = p.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
outputs[k] = p.main(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return p.top(frame, args, map) .. tostring( p.mark(frame, args, map) ) .. p.bottom(frame, args, map)
end
end
return p
e4ccfcc6e71c45a4355aa7240a0a8b81dc19f8eb
Module:Location map/multi
828
1634
2980
2979
2023-11-09T13:08:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/multi]]
Scribunto
text/plain
require('strict')
local p = {}
local getArgs = require('Module:Arguments').getArgs
local locmap = require('Module:Location map')
local function switcherSeparate(s)
if s == nil then return {} end
local retval = {}
for i in string.gmatch(s .. '#', '([^#]*)#') do
i = mw.text.trim(i)
retval[#retval + 1] = (i ~= '' and i)
end
return retval
end
function p.container(frame, args, map)
local caption_list = {}
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map+', valueFunc = locmap.valueFunc})
end
if not map then
if args[1] then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if args['caption'] then
if args['caption'] == "" then
while #caption_list < #map do
caption_list[#caption_list + 1] = args['caption']
end
else
for caption in mw.text.gsplit(args['caption'], '##', true) do
caption_list[#caption_list + 1] = caption
end
end
end
if #map == 1 then map = map[1] end
else
map = locmap.getMapParams('World', frame)
end
end
if type(map) == 'table' then
local placeslist = mw.text.gsplit(args.places, '#PlaceList#')
local permaplaces = {}
local numbermaps = #map
local count = 0
for i = 1,numbermaps do
permaplaces[i] = {}
end
for place in placeslist do
table.insert(permaplaces[count%numbermaps + 1],place)
count = count + 1
end
local altmaps = switcherSeparate(args.AlternativeMap)
if #altmaps > #map then
error(string.format('%d AlternativeMaps were provided, but only %d maps were provided', #altmaps, #map))
end
local overlays = switcherSeparate(args.overlay_image)
if #overlays > #map then
error(string.format('%d overlay_images were provided, but only %d maps were provided', #overlays, #map))
end
if #caption_list > #map then
error(string.format('%d captions were provided, but only %d maps were provided', #caption_list, #map))
end
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
args.AlternativeMap = altmaps[k]
args.overlay_image = overlays[k]
args.caption = caption_list[k]
args.places = table.concat(permaplaces[k])
outputs[k] = p.container(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
else
return locmap.top(frame, args, map) .. (args.places and args.places:gsub('%s*\n%s*', '') or '') .. locmap.bottom(frame, args, map)
end
end
local function manyMakeArgs(fullArgs, n)
if n == 1 then
return {
lat = fullArgs.lat1 or fullArgs.lat,
long = fullArgs.long1 or fullArgs.long,
coordinates = fullArgs.coordinates1 or fullArgs.coordinates,
lat_deg = fullArgs.lat1_deg or fullArgs.lat_deg,
lat_min = fullArgs.lat1_min or fullArgs.lat_min,
lat_sec = fullArgs.lat1_sec or fullArgs.lat_sec,
lat_dir = fullArgs.lat1_dir or fullArgs.lat_dir,
lon_deg = fullArgs.lon1_deg or fullArgs.lon_deg,
lon_min = fullArgs.lon1_min or fullArgs.lon_min,
lon_sec = fullArgs.lon1_sec or fullArgs.lon_sec,
lon_dir = fullArgs.lon1_dir or fullArgs.lon_dir,
outside = fullArgs.outside1 or fullArgs.outside,
mark = fullArgs.mark1 or fullArgs.mark,
marksize = fullArgs.mark1size or fullArgs.marksize,
link = fullArgs.link1 or fullArgs.link,
label = fullArgs.label1 or fullArgs.label,
label_size = fullArgs.label1_size or fullArgs.label_size,
label_width = fullArgs.label1_width or fullArgs.label_width,
position = fullArgs.position1 or fullArgs.pos1 or fullArgs.position or fullArgs.pos,
background = fullArgs.background1 or fullArgs.bg1 or fullArgs.background or fullArgs.bg
}
else
return {
lat = fullArgs['lat' .. n],
long = fullArgs['long' .. n],
coordinates = fullArgs['coordinates' .. n],
lat_deg = fullArgs['lat' .. n .. '_deg'],
lat_min = fullArgs['lat' .. n .. '_min'],
lat_sec = fullArgs['lat' .. n .. '_sec'],
lat_dir = fullArgs['lat' .. n .. '_dir'],
lon_deg = fullArgs['lon' .. n .. '_deg'],
lon_min = fullArgs['lon' .. n .. '_min'],
lon_sec = fullArgs['lon' .. n .. '_sec'],
lon_dir = fullArgs['lon' .. n .. '_dir'],
outside = fullArgs['outside' .. n],
mark = fullArgs['mark' .. n],
marksize = fullArgs['mark' .. n .. 'size'],
link = fullArgs['link' .. n],
label = fullArgs['label' .. n],
label_size = fullArgs['label' .. n .. '_size'],
label_width = fullArgs['label' .. n .. '_width'],
position = fullArgs['position' .. n] or fullArgs['pos' .. n],
background = fullArgs['background' .. n] or fullArgs['bg' .. n]
}
end
end
function p.many(frame, args, map)
if not args then
args = getArgs(frame, {wrappers = 'Template:Location map many', valueFunc = locmap.valueFunc})
end
if not args[1] then
args[1] = 'World'
end
if not map then
map = {}
for mapname in string.gmatch(args[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.many(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
local markhigh
if args.markhigh then
mw.log('Removed parameter markhigh used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
for k, v in pairs(args) do -- @todo change to uargs once we have that
if v then
if string.sub(k, -4) == '_deg' then
k = string.sub(k, 1, -5)
end
if string.sub(k, 1, 3) == 'lat' then
k = tonumber(string.sub(k, 4))
if k then
table.insert(marks, k)
end
elseif string.sub(k, 1, 11) == 'coordinates' then
k = tonumber(string.sub(k, 12))
if k then
table.insert(marks,k)
end
end
end
end
table.sort(marks)
if marks[1] ~= 1 and (args.lat or args.lat_deg or args.coordinates) then
table.insert(marks, 1, 1)
end
local body = ''
for _, v in ipairs(marks) do
-- don't try to consolidate this into the above loop. ordering of elements from pairs() is unspecified
body = body .. tostring( locmap.mark(frame, manyMakeArgs(args, v), map) )
if args['mark' .. v .. 'high'] then
mw.log('Removed parameter mark' .. v .. 'high used.')
local parent = frame:getParent()
if parent then
mw.log('Parent is ' .. parent:getTitle())
end
mw.logObject(args, 'args')
markhigh = true
end
end
args.label = nil -- there is no global label
return locmap.top(frame, args, map) .. body .. locmap.bottom(frame, args, map) .. (markhigh and '[[Category:Location maps with possible errors|Page using removed parameter]]' or '')
end
function p.load(frame, args, map)
if not args then
args = getArgs(frame, {frameOnly = true})
end
local dataModule = mw.loadData(frame.args[1])
if not map then
map = {}
for mapname in string.gmatch(dataModule.containerArgs[1], '[^#]+') do
map[#map + 1] = locmap.getMapParams(mapname, frame)
end
if #map ~= 1 then
local outputs = {}
args.autoSwitcherLabel = true
for k,v in ipairs(map) do
outputs[k] = p.load(frame, args, v)
end
return '<div class="switcher-container">' .. table.concat(outputs) .. '</div>'
end
map = map[1]
end
local marks = {}
if dataModule.marks then
for k,markArgs in ipairs(dataModule.marks) do
marks[k] = tostring(locmap.mark(frame, markArgs, map))
end
end
if dataModule.secondaryModules then
for _,modname in ipairs(dataModule.secondaryModules) do
for _,markArgs in ipairs(mw.loadData(modname).marks) do
marks[#marks + 1] = tostring(locmap.mark(frame, markArgs, map))
end
end
end
return locmap.top(frame, dataModule.containerArgs, map) .. table.concat(marks) .. locmap.bottom(frame, dataModule.containerArgs, map)
end
return p
1acc0ca37712cbe36ee567f805a46c941859c489
Template:Location map many
10
1635
2982
2981
2023-11-09T13:08:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Location_map_many]]
wikitext
text/x-wiki
<includeonly>{{#invoke:Location map/multi|many}}</includeonly><noinclude>
{{Documentation}}
<!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS -->
</noinclude>
72cc22fd09760697977eba240c5a13c892f971f0
Module:Location map/data/doc
828
1636
2988
2987
2023-11-09T13:08:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/doc]]
wikitext
text/x-wiki
#REDIRECT [[Template:Location map data documentation]]
{{Redirect category shell|
{{R from move}}
{{R from documentation page}}
}}
e51e2661650b2ce62f1b5840282f71fc1c8e86d5
Module:Location map/info
828
1637
2990
2989
2023-11-09T13:08:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/info]]
Scribunto
text/plain
local p = {}
function p.main(frame)
local map = mw.loadData(string.gsub(mw.title.getCurrentTitle().prefixedText,'/doc$',''))
local retval =
[=[{| class="wikitable" style="text-align:center; margin-top:0;"
|+ Location map of ]=] .. map.name .. '\n' .. [=[
|-
! name
|colspan="3"| ]=] .. map.name .. [=[
|-
]=]
if map.top then
retval = retval ..
[=[!rowspan="4"|border<br/>coordinates
|-
|colspan="3"| ]=] .. map.top .. '\n' .. [=[
|-
|style="width:7em;"| ]=] .. map.left .. '\n' .. [=[
| ←↕→
|style="width:7em;"| ]=] .. map.right
if map.right > 180 then
retval = retval .. ' (' .. map.right - 360 .. ')'
end
retval = retval .. '\n' .. [=[
|-
|colspan="3"| ]=] .. map.bottom .. '\n' .. [=[
|-
! map center
|colspan="4"| ]=]
local width = (map.right - map.left) % 360
if width == 0 then
width = 360
end
local center = (map.left + width/2) % 360
if center >= 180 then
center = center - 360
end
retval = retval .. frame:expandTemplate{title = 'coord', args = { (map.top + map.bottom)/2, center }}
retval = retval .. '\n' .. [=[
|-]=]
end
if map.x then
retval = retval .. '\n' .. [=[
! x
|colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.x .. '\n' .. [=[
|-
! y
|colspan="3" style="overflow: auto; white-space: auto; width: 350px"| ]=] .. map.y .. '\n' .. [=[
|-]=]
end
retval = retval .. '\n' .. [=[
! image
|colspan="3"| <code>[[:File:]=] .. map.image .. '|' .. map.image .. [=[]]</code>
|-
|colspan="4"|[[File:]=] .. map.image .. [=[|400x400px]]
|-]=]
local i = 0
while map['image' .. (i+1)] or map['image' .. (i+2)] do
i = i + 1
if map['image' .. i] then
retval = retval .. '\n' .. [=[
! image]=] .. i .. '\n' .. [=[
|colspan="3"| <code>[[:File:]=] .. map['image' .. i] .. '|' .. map['image' .. i] .. [=[]]</code>
|-
|colspan="4"|[[File:]=] .. map['image' .. i] .. [=[|400x400px]]
|-]=]
end
end
if map.skew then
retval = retval .. '\n' .. [=[
! skew
|colspan="3"| ]=] .. map.skew .. '\n' .. [=[
|-]=]
end
if map.lat_skew then
retval = retval .. '\n' .. [=[
! lat_skew
|colspan="3"| ]=] .. map.lat_skew .. '\n' .. [=[
|-]=]
end
if map.mark then
retval = retval .. '\n' .. [=[
! mark
|colspan="3"| <code>[[:File:]=] .. map.mark .. '|' .. map.mark .. [=[]]</code>
|-]=]
end
if map.marksize then
retval = retval .. '\n' .. [=[
! marksize
|colspan="3"| ]=] .. map.marksize .. '\n' .. [=[
|-]=]
end
retval = retval .. '\n|}'
return retval
end
return p
6de577a38f924784dc5d0f48ae864c6199f783ed
Template:Location map data documentation
10
1638
2992
2991
2023-11-09T13:08:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Location_map_data_documentation]]
wikitext
text/x-wiki
<includeonly>__NOEDITSECTION__{{#invoke:Location map/info|main}}
{{{image|}}}
'''{{#titleparts:{{FULLPAGENAME}}|3}}''' is a location map definition used to overlay markers and labels on {{{projection|an [[equirectangular projection]]}}} map of {{{name|[[{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}]]}}}. The markers are placed by [[latitude]] and [[longitude]] coordinates on the default map or a similar map image.
== Usage ==
These definitions are used by the following templates when invoked with parameter "{{#titleparts:{{FULLPAGENAME}}|1|3}}":
* {{tlx|Location map | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map many | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map+ | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
* {{tlx|Location map~ | {{#titleparts:{{FULLPAGENAME}}|1|3}} | ...}}
== Map definition ==
* <code>'''name''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|name}}</code>
*: Name used in the default map caption
* <code>'''image''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image}}]]</code>
*: The default map image, without "Image:" or "File:"
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|
* <code>'''image1''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}]]</code>
*: An alternative map image, usually a relief map, which can be displayed via the ''relief'' or ''AlternativeMap'' parameters
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|
* <code>'''image2''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}]]</code>{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|
* <code>'''image3''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}]]</code>
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|
* <code>'''image4''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}]]</code>
}}
*: Alternative map image{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} which can be displayed via the ''AlternativeMap'' parameter
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}|
* <code>'''top''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}</code>
*: [[Latitude]] at top edge of map, in [[decimal degrees]]
* <code>'''bottom''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}</code>
*: Latitude at bottom edge of map, in decimal degrees
* <code>'''left''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}</code>
*: [[Longitude]] at left edge of map, in decimal degrees
* <code>'''right''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}</code>
*: Longitude at right edge of map, in decimal degrees
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}|
* <code>'''x''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|x}}</code>
*: An expression to calculate a location on the map via its [[longitude]]; evaluates as 0 along the left edge and 100 along the right edge
* <code>'''y''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|y}}</code>
*: An expression to calculate a location on the map via its [[latitude]]; evaluates as 0 along the top edge and 100 along the bottom edge
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|
* <code>'''mark''' = [[:File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}]] ([[File:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|mark}}|8px]])</code>
*: The default mark image to display with this map. This can be overridden by the <code>mark</code> parameter in [[Template:Location map]], which would otherwise default to [[:File:Red pog.svg|Red pog.svg]] ([[File:Red pog.svg|8px]]).
}}{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}|
* <code>'''marksize''' = {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>
*: The default mark size (in [[pixel]]s) for the mark image displayed with this map (should not include <code>px</code>, for example <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}</code>, not <code>marksize={{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|marksize}}px</code>). This can be overridden by the <code>marksize</code> parameter in [[Template:Location map]], which would otherwise default to 8.
}}
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}|
== Alternative map ==
The {{tl|Location map}}, {{tl|Location map many}}, and {{tl|Location map+}} templates have parameters to specify an alternative map image. {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}
| The map displayed as '''image1''' can be used with the ''relief'' or ''AlternativeMap'' parameters.
}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image2}}
| The map{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|s}} displayed as '''image2''' {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image3}}|/ '''image3'''}} {{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image4}}|/ '''image4'''}} can be used with the ''AlternativeMap'' parameter.
}} Examples may be found below or in the following:
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|image1}}|
* [[Template:Location map#Relief parameter]]
* [[Template:Location map+/relief]]
}}
* [[Template:Location map#AlternativeMap parameter]]
* [[Template:Location map+/AlternativeMap]]
}}
{{#if:{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}}{{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}}|
== Precision ==
{{#if:{{{precision|}}}|{{{precision}}}|
[[Longitude]]: from West to East this map definition covers {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 round 4}} degrees.
* At an image width of 200 [[pixel]]s, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 200 round 4}} degrees per pixel.
* At an image width of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|right}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|left}} + 360 ) fmod 360 / 1000 round 4}} degrees per pixel.
[[Latitude]]: from North to South this map definition covers {{#expr: {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} round 4}} degrees.
* At an image height of 200 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 200 round 4}} degrees per pixel.
* At an image height of 1000 pixels, that is {{#expr: ( {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|top}} - {{#invoke:Location map|data|{{#titleparts:{{FULLPAGENAME}}|1|3}}|bottom}} ) / 1000 round 4}} degrees per pixel.
}}}}
{{#if:{{{examples|}}}|
== Examples using location map templates ==
{{{examples}}}
{{clear}}
}}
== See also ==
{{{see also|}}}
=== Location map templates ===
* [[Template:Location map]], to display one mark and label using latitude and longitude
* [[Template:Location map many]], to display up to nine marks and labels
* [[Template:Location map+]], to display an unlimited number of marks and labels
=== Creating new map definitions ===
* [[Template:Location map/Creating a new map definition]]</includeonly><noinclude>
{{Documentation}}
</noinclude>
1fb38b8a638db2fc998cb284051bcbe9a98f1e5e
Module:Location map/data/USA Minnesota/doc
828
1639
2996
2995
2023-11-09T13:08:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Minnesota/doc]]
wikitext
text/x-wiki
<!-- PLEASE ADD CATEGORIES AT THE BOTTOM OF THIS PAGE -->
{{high-use| 3782 }}{{Module:Location map/data/doc
|image=[[File:Map of Minnesota NA.png|thumb|400px|Map of Minnesota (click on map to see larger image)]]
|examples=
=== Location map ===
{{Location map | USA Minnesota
| width = 250
| lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N
| lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W
| label = Saint Paul
}}
<pre style="width:40em">
{{Location map | USA Minnesota
| width = 250
| lat_deg = 44 | lat_min = 56 | lat_sec = 39 | lat_dir = N
| lon_deg = 93 | lon_min = 05 | lon_sec = 07 | lon_dir = W
| label = Saint Paul
}}
</pre>
{{clear}}
=== Location map many ===
{{Location map many | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet
| lat2 = 43.502 | long2 = -93.488 | label2 = Emmons
| lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks
| lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point
}}
<pre style="width:40em">
{{Location map many | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| lat1 = 49.345 | long1 = -95.063 | label1 = Angle Inlet
| lat2 = 43.502 | long2 = -93.488 | label2 = Emmons
| lat3 = 47.930 | long3 = -97.024 | label3 = East Grand Forks
| lat4 = 48.005 | long4 = -89.492 | label4 = Pigeon Point
}}
</pre>
{{clear}}
=== Location map+ ===
{{Location map+ | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| places =
{{Location map~ | USA Minnesota
| lat = 49.345 | long = -95.063 | label = Angle Inlet
}}
{{Location map~ | USA Minnesota
| lat = 43.502 | long = -93.488 | label = Emmons
}}
{{Location map~ | USA Minnesota
| lat = 47.930 | long = -97.024 | label = East Grand Forks
}}
{{Location map~ | USA Minnesota
| lat = 48.005 | long = -89.492 | label = Pigeon Point
}}
}}
<pre style="width:40em">
{{Location map+ | USA Minnesota
| width = 250
| caption = Locations in Minnesota
| places =
{{Location map~ | USA Minnesota
| lat = 49.345 | long = -95.063 | label = Angle Inlet
}}
{{Location map~ | USA Minnesota
| lat = 43.502 | long = -93.488 | label = Emmons
}}
{{Location map~ | USA Minnesota
| lat = 47.930 | long = -97.024 | label = East Grand Forks
}}
{{Location map~ | USA Minnesota
| lat = 48.005 | long = -89.492 | label = Pigeon Point
}}
}}
</pre>
{{clear}}
|see also=
* [[Module:Location map/data/USA]]
}}
<includeonly>
<!-- Categories go here -->
{{DEFAULTSORT:Minnesota, Location map USA}}
[[Category:Minnesota location map modules| ]]
</includeonly>
832b31c167acdd324bb1673432ae8fcb8192fedd
Containment War Against Wickedonezz
0
1640
2997
2023-11-09T13:16:59Z
Führerredux
2
Created page with "{{Infobox military conflict | conflict = Containment War Against Wickedonezz | place = [[Adam Dressler|The Führer's]] office, Berlin, Germany. | partof = [[HOI4 Community Conflicts against Wickedonezz]] | map_type = https://fuhrerredux.miraheze.org/w/index.php?title=Template:USA_Minnesota&action=edit&redlink=1 {{location map | USA Minnesota | width = 250 | label = Cambridge | lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_..."
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community Conflicts against Wickedonezz]]
| map_type = https://fuhrerredux.miraheze.org/w/index.php?title=Template:USA_Minnesota&action=edit&redlink=1
{{location map | USA Minnesota
| width = 250
| label = Cambridge
| lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_dir = N
| lon_deg = 93 | lon_min = 13 | lon_sec = 34 | lon_dir = W
}}
}}
dce6e7e0f54fd482407f72c44b90a5a79876be1f
3006
2997
2023-11-09T13:22:09Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community Conflicts against Wickedonezz]]
| map_type = {{Location map | USA Minnesota
| width = 250
| lat_deg = 45 | lat_min = 33 | lat_sec = 56 | lat_dir = N
| lon_deg = 93 | lon_min = 13 | lon_sec = 34 | lon_dir = W | label = Cambridge
}}
}}
85741a47b52c52913fa2101aec674e19fa4e0148
Module:String
828
17
2999
2998
2023-11-09T13:20:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:String]]
Scribunto
text/plain
--[[
This module is intended to provide access to basic string functions.
Most of the functions provided here can be invoked with named parameters,
unnamed parameters, or a mixture. If named parameters are used, Mediawiki will
automatically remove any leading or trailing whitespace from the parameter.
Depending on the intended use, it may be advantageous to either preserve or
remove such whitespace.
Global options
ignore_errors: If set to 'true' or 1, any error condition will result in
an empty string being returned rather than an error message.
error_category: If an error occurs, specifies the name of a category to
include with the error message. The default category is
[Category:Errors reported by Module String].
no_category: If set to 'true' or 1, no category will be added if an error
is generated.
Unit tests for this module are available at Module:String/tests.
]]
local str = {}
--[[
len
This function returns the length of the target string.
Usage:
{{#invoke:String|len|target_string|}}
OR
{{#invoke:String|len|s=target_string}}
Parameters
s: The string whose length to report
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.
]]
function str.len( frame )
local new_args = str._getParameters( frame.args, {'s'} )
local s = new_args['s'] or ''
return mw.ustring.len( s )
end
--[[
sub
This function returns a substring of the target string at specified indices.
Usage:
{{#invoke:String|sub|target_string|start_index|end_index}}
OR
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}
Parameters
s: The string to return a subset of
i: The first index of the substring to return, defaults to 1.
j: The last index of the string to return, defaults to the last character.
The first character of the string is assigned an index of 1. If either i or j
is a negative value, it is interpreted the same as selecting a character by
counting from the end of the string. Hence, a value of -1 is the same as
selecting the last character of the string.
If the requested indices are out of range for the given string, an error is
reported.
]]
function str.sub( frame )
local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } )
local s = new_args['s'] or ''
local i = tonumber( new_args['i'] ) or 1
local j = tonumber( new_args['j'] ) or -1
local len = mw.ustring.len( s )
-- Convert negatives for range checking
if i < 0 then
i = len + i + 1
end
if j < 0 then
j = len + j + 1
end
if i > len or j > len or i < 1 or j < 1 then
return str._error( 'String subset index out of range' )
end
if j < i then
return str._error( 'String subset indices out of order' )
end
return mw.ustring.sub( s, i, j )
end
--[[
This function implements that features of {{str sub old}} and is kept in order
to maintain these older templates.
]]
function str.sublength( frame )
local i = tonumber( frame.args.i ) or 0
local len = tonumber( frame.args.len )
return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )
end
--[[
_match
This function returns a substring from the source string that matches a
specified pattern. It is exported for use in other modules
Usage:
strmatch = require("Module:String")._match
sresult = strmatch( s, pattern, start, match, plain, nomatch )
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This sub-routine is exported for use in other modules
function str._match( s, pattern, start, match_index, plain_flag, nomatch )
if s == '' then
return str._error( 'Target string is empty' )
end
if pattern == '' then
return str._error( 'Pattern string is empty' )
end
start = tonumber(start) or 1
if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then
return str._error( 'Requested start is out of range' )
end
if match_index == 0 then
return str._error( 'Match index is out of range' )
end
if plain_flag then
pattern = str._escapePattern( pattern )
end
local result
if match_index == 1 then
-- Find first match is simple case
result = mw.ustring.match( s, pattern, start )
else
if start > 1 then
s = mw.ustring.sub( s, start )
end
local iterator = mw.ustring.gmatch(s, pattern)
if match_index > 0 then
-- Forward search
for w in iterator do
match_index = match_index - 1
if match_index == 0 then
result = w
break
end
end
else
-- Reverse search
local result_table = {}
local count = 1
for w in iterator do
result_table[count] = w
count = count + 1
end
result = result_table[ count + match_index ]
end
end
if result == nil then
if nomatch == nil then
return str._error( 'Match not found' )
else
return nomatch
end
else
return result
end
end
--[[
match
This function returns a substring from the source string that matches a
specified pattern.
Usage:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
OR
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index
|match=match_number|plain=plain_flag|nomatch=nomatch_output}}
Parameters
s: The string to search
pattern: The pattern or string to find within the string
start: The index within the source string to start the search. The first
character of the string has index 1. Defaults to 1.
match: In some cases it may be possible to make multiple matches on a single
string. This specifies which match to return, where the first match is
match= 1. If a negative number is specified then a match is returned
counting from the last match. Hence match = -1 is the same as requesting
the last match. Defaults to 1.
plain: A flag indicating that the pattern should be understood as plain
text. Defaults to false.
nomatch: If no match is found, output the "nomatch" value rather than an error.
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from each string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
If the match_number or start_index are out of range for the string being queried, then
this function generates an error. An error is also generated if no match is found.
If one adds the parameter ignore_errors=true, then the error will be suppressed and
an empty string will be returned on any failure.
For information on constructing Lua patterns, a form of [regular expression], see:
* http://www.lua.org/manual/5.1/manual.html#5.4.1
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns
]]
-- This is the entry point for #invoke:String|match
function str.match( frame )
local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} )
local s = new_args['s'] or ''
local start = tonumber( new_args['start'] ) or 1
local plain_flag = str._getBoolean( new_args['plain'] or false )
local pattern = new_args['pattern'] or ''
local match_index = math.floor( tonumber(new_args['match']) or 1 )
local nomatch = new_args['nomatch']
return str._match( s, pattern, start, match_index, plain_flag, nomatch )
end
--[[
pos
This function returns a single character from the target string at position pos.
Usage:
{{#invoke:String|pos|target_string|index_value}}
OR
{{#invoke:String|pos|target=target_string|pos=index_value}}
Parameters
target: The string to search
pos: The index for the character to return
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
The first character has an index value of 1.
If one requests a negative value, this function will select a character by counting backwards
from the end of the string. In other words pos = -1 is the same as asking for the last character.
A requested value of zero, or a value greater than the length of the string returns an error.
]]
function str.pos( frame )
local new_args = str._getParameters( frame.args, {'target', 'pos'} )
local target_str = new_args['target'] or ''
local pos = tonumber( new_args['pos'] ) or 0
if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then
return str._error( 'String index out of range' )
end
return mw.ustring.sub( target_str, pos, pos )
end
--[[
str_find
This function duplicates the behavior of {{str_find}}, including all of its quirks.
This is provided in order to support existing templates, but is NOT RECOMMENDED for
new code and templates. New code is recommended to use the "find" function instead.
Returns the first index in "source" that is a match to "target". Indexing is 1-based,
and the function returns -1 if the "target" string is not present in "source".
Important Note: If the "target" string is empty / missing, this function returns a
value of "1", which is generally unexpected behavior, and must be accounted for
separatetly.
]]
function str.str_find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target'} )
local source_str = new_args['source'] or ''
local target_str = new_args['target'] or ''
if target_str == '' then
return 1
end
local start = mw.ustring.find( source_str, target_str, 1, true )
if start == nil then
start = -1
end
return start
end
--[[
find
This function allows one to search for a target string or pattern within another
string.
Usage:
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}
OR
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}
Parameters
source: The string to search
target: The string or pattern to find within source
start: The index within the source string to start the search, defaults to 1
plain: Boolean flag indicating that target should be understood as plain
text and not as a Lua style regular expression, defaults to true
If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the parameter. In some circumstances this is desirable, in
other cases one may want to preserve the whitespace.
This function returns the first index >= "start" where "target" can be found
within "source". Indices are 1-based. If "target" is not found, then this
function returns 0. If either "source" or "target" are missing / empty, this
function also returns 0.
This function should be safe for UTF-8 strings.
]]
function str.find( frame )
local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['target'] or ''
local start_pos = tonumber(new_args['start']) or 1
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return 0
end
plain = str._getBoolean( plain )
local start = mw.ustring.find( source_str, pattern, start_pos, plain )
if start == nil then
start = 0
end
return start
end
--[[
replace
This function allows one to replace a target string or pattern within another
string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function str.replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } )
local source_str = new_args['source'] or ''
local pattern = new_args['pattern'] or ''
local replace = new_args['replace'] or ''
local count = tonumber( new_args['count'] )
local plain = new_args['plain'] or true
if source_str == '' or pattern == '' then
return source_str
end
plain = str._getBoolean( plain )
if plain then
pattern = str._escapePattern( pattern )
replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences.
end
local result
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count )
else
result = mw.ustring.gsub( source_str, pattern, replace )
end
return result
end
--[[
simple function to pipe string.rep to templates.
]]
function str.rep( frame )
local repetitions = tonumber( frame.args[2] )
if not repetitions then
return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' )
end
return string.rep( frame.args[1] or '', repetitions )
end
--[[
escapePattern
This function escapes special characters from a Lua string pattern. See [1]
for details on how patterns work.
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns
Usage:
{{#invoke:String|escapePattern|pattern_string}}
Parameters
pattern_string: The pattern string to escape.
]]
function str.escapePattern( frame )
local pattern_str = frame.args[1]
if not pattern_str then
return str._error( 'No pattern string specified' )
end
local result = str._escapePattern( pattern_str )
return result
end
--[[
count
This function counts the number of occurrences of one string in another.
]]
function str.count(frame)
local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'})
local source = args.source or ''
local pattern = args.pattern or ''
local plain = str._getBoolean(args.plain or true)
if plain then
pattern = str._escapePattern(pattern)
end
local _, count = mw.ustring.gsub(source, pattern, '')
return count
end
--[[
endswith
This function determines whether a string ends with another string.
]]
function str.endswith(frame)
local args = str._getParameters(frame.args, {'source', 'pattern'})
local source = args.source or ''
local pattern = args.pattern or ''
if pattern == '' then
-- All strings end with the empty string.
return "yes"
end
if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then
return "yes"
else
return ""
end
end
--[[
join
Join all non empty arguments together; the first argument is the separator.
Usage:
{{#invoke:String|join|sep|one|two|three}}
]]
function str.join(frame)
local args = {}
local sep
for _, v in ipairs( frame.args ) do
if sep then
if v ~= '' then
table.insert(args, v)
end
else
sep = v
end
end
return table.concat( args, sep or '' )
end
--[[
Helper function that populates the argument list given that user may need to use a mix of
named and unnamed parameters. This is relevant because named parameters are not
identical to unnamed parameters due to string trimming, and when dealing with strings
we sometimes want to either preserve or remove that whitespace depending on the application.
]]
function str._getParameters( frame_args, arg_list )
local new_args = {}
local index = 1
local value
for _, arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index]
index = index + 1
end
new_args[arg] = value
end
return new_args
end
--[[
Helper function to handle error messages.
]]
function str._error( error_str )
local frame = mw.getCurrentFrame()
local error_category = frame.args.error_category or 'Errors reported by Module String'
local ignore_errors = frame.args.ignore_errors or false
local no_category = frame.args.no_category or false
if str._getBoolean(ignore_errors) then
return ''
end
local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>'
if error_category ~= '' and not str._getBoolean( no_category ) then
error_str = '[[Category:' .. error_category .. ']]' .. error_str
end
return error_str
end
--[[
Helper Function to interpret boolean strings
]]
function str._getBoolean( boolean_str )
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'
or boolean_str == '' then
boolean_value = false
else
boolean_value = true
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
error( 'No boolean value found' )
end
return boolean_value
end
--[[
Helper function that escapes all pattern characters so that they will be treated
as plain text.
]]
function str._escapePattern( pattern_str )
return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" )
end
return str
2ad0905c56ef4955950b75a8f00974fe82aed5e4
Template:U
10
1641
3001
3000
2023-11-09T13:20:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:U]]
wikitext
text/x-wiki
#REDIRECT [[Template:User link]]
{{Redirect category shell|
{{R from template shortcut}}
}}
4e19f83e5bbe5d6e452f64e86adc28c022309e09
Template:User link
10
1642
3003
3002
2023-11-09T13:20:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:User_link]]
wikitext
text/x-wiki
[[User:{{{1<noinclude>|Example</noinclude>}}}|{{<includeonly>safesubst:</includeonly>#if:{{{2|}}}|{{{2}}}|{{{1<noinclude>|Example</noinclude>}}}}}]]<noinclude>
{{documentation}}
</noinclude>
77cabe6631a64537cdf8e5ca3d3d8d3ae2734552
Module:Location map/doc
828
1643
3005
3004
2023-11-09T13:20:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/doc]]
wikitext
text/x-wiki
{{Module rating|protected}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{High-use}}
{{Lua|Module:Arguments}}
{{Uses TemplateStyles|Module:Location map/styles.css}}
== Usage ==
This module implements the {{tl|Location map}} and {{tl|Location map~}} templates. Please see the template pages for usage instructions.
== Known issues ==
Since the introduction of support for different captions when multiple maps are utilized, an issue has been highlighted.<br />
Some infobox templates use their caption parameter directly instead of passing it to this module. This results in the display of a "##" between the two captions.<br />
If you are unable to edit the infobox template, contact {{u|Bellezzasolo}}.
== Tracking/maintenance categories ==
* [[:Category:Location maps with possible errors|Category:Location maps with possible errors]]
** {{clc|Location maps with different longitude and latitude precisions}}
** {{clc|Location maps with marks outside map and outside parameter not set}}
** {{clc|Location maps with a name containing a pipe}}
** {{clc|Location maps with removed parameters}}
** {{clc|Location maps with negative degrees and minutes or seconds}}
* Tracking for a change (see talk): {{clc|Pages using location map with a double number sign in the caption}}
== See also ==
* [https://en.wikipedia.org/wiki/Special:PrefixIndex?prefix=Location+map&namespace=828 All Module: pages beginning with "Location map"]
* [[Module:Location map/info]]
* [[Module:Location map/multi]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
[[Category:Location map modules]]
[[Category:Modules that add a tracking category]]
}}</includeonly>
6f1bdaf5bdd99aa938bc7aade80cdddc02494599
Module:Navbar
828
37
3056
3055
2023-11-09T17:59:36Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Navbar]]
Scribunto
text/plain
local p = {}
local cfg = mw.loadData('Module:Navbar/configuration')
local function get_title_arg(is_collapsible, template)
local title_arg = 1
if is_collapsible then title_arg = 2 end
if template then title_arg = 'template' end
return title_arg
end
local function choose_links(template, args)
-- The show table indicates the default displayed items.
-- view, talk, edit, hist, move, watch
-- TODO: Move to configuration.
local show = {true, true, true, false, false, false}
if template then
show[2] = false
show[3] = false
local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,
talk = 2, edit = 3, hist = 4, move = 5, watch = 6}
-- TODO: Consider removing TableTools dependency.
for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do
local num = index[v]
if num then show[num] = true end
end
end
local remove_edit_link = args.noedit
if remove_edit_link then show[3] = false end
return show
end
local function add_link(link_description, ul, is_mini, font_style)
local l
if link_description.url then
l = {'[', '', ']'}
else
l = {'[[', '|', ']]'}
end
ul:tag('li')
:addClass('nv-' .. link_description.full)
:wikitext(l[1] .. link_description.link .. l[2])
:tag(is_mini and 'abbr' or 'span')
:attr('title', link_description.html_title)
:cssText(font_style)
:wikitext(is_mini and link_description.mini or link_description.full)
:done()
:wikitext(l[3])
:done()
end
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)
if not title then
error(cfg.invalid_title .. title_text)
end
local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or ''
-- TODO: Get link_descriptions and show into the configuration module.
-- link_descriptions should be easier...
local link_descriptions = {
{ ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template',
['link'] = title.fullText, ['url'] = false },
{ ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template',
['link'] = talkpage, ['url'] = false },
{ ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template',
['link'] = 'Special:EditPage/' .. title.fullText, ['url'] = false },
{ ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template',
['link'] = 'Special:PageHistory/' .. title.fullText, ['url'] = false },
{ ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template',
['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true },
{ ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template',
['link'] = title:fullUrl('action=watch'), ['url'] = true }
}
local ul = mw.html.create('ul')
if has_brackets then
ul:addClass(cfg.classes.brackets)
:cssText(font_style)
end
for i, _ in ipairs(displayed_links) do
if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end
end
return ul:done()
end
function p._navbar(args)
-- TODO: We probably don't need both fontstyle and fontcolor...
local font_style = args.fontstyle
local font_color = args.fontcolor
local is_collapsible = args.collapsible
local is_mini = args.mini
local is_plain = args.plain
local collapsible_class = nil
if is_collapsible then
collapsible_class = cfg.classes.collapsible
if not is_plain then is_mini = 1 end
if font_color then
font_style = (font_style or '') .. '; color: ' .. font_color .. ';'
end
end
local navbar_style = args.style
local div = mw.html.create():tag('div')
div
:addClass(cfg.classes.navbar)
:addClass(cfg.classes.plainlinks)
:addClass(cfg.classes.horizontal_list)
:addClass(collapsible_class) -- we made the determination earlier
:cssText(navbar_style)
if is_mini then div:addClass(cfg.classes.mini) end
local box_text = (args.text or cfg.box_text) .. ' '
-- the concatenated space guarantees the box text is separated
if not (is_mini or is_plain) then
div
:tag('span')
:addClass(cfg.classes.box_text)
:cssText(font_style)
:wikitext(box_text)
end
local template = args.template
local displayed_links = choose_links(template, args)
local has_brackets = args.brackets
local title_arg = get_title_arg(is_collapsible, template)
local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle())
local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)
div:node(list)
if is_collapsible then
local title_text_class
if is_mini then
title_text_class = cfg.classes.collapsible_title_mini
else
title_text_class = cfg.classes.collapsible_title_full
end
div:done()
:tag('div')
:addClass(title_text_class)
:cssText(font_style)
:wikitext(args[1])
end
local frame = mw.getCurrentFrame()
-- hlist -> navbar is best-effort to preserve old Common.css ordering.
return frame:extensionTag{
name = 'templatestyles', args = { src = cfg.hlist_templatestyles }
} .. frame:extensionTag{
name = 'templatestyles', args = { src = cfg.templatestyles }
} .. tostring(div:done())
end
function p.navbar(frame)
return p._navbar(require('Module:Arguments').getArgs(frame))
end
return p
047f307758c878eb3e99ed1768cc40920a6ec5fa
Template:Fix-span
10
1659
3058
3057
2023-11-09T17:59:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Fix-span]]
wikitext
text/x-wiki
{{#if:{{{content|}}}|<span class="{{{span-class|cleanup-needed-content}}}" style="padding-left:0.1em; padding-right:0.1em; color:#595959; border:1px solid #DDD;">{{{content|}}}</span>}}{{#switch:{{{subst|¬}}}
|¬={{category handler
|template=[[Category:Templates needing substitution checking]]
|nocat={{{nocat|<noinclude>true</noinclude>}}}
}}
|SUBST=[[Category:Pages with incorrectly substituted templates]]
}}{{Category handler
|main={{Fix/category
|cat-date={{{cat-date|}}}
|cat={{{cat|}}}
|cat-date2={{{cat-date2|}}}
|cat2={{{cat2|}}}
|cat-date3={{{cat-date3|}}}
|cat3={{{cat3|}}}
|date={{{date|}}}
}}
|template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}}
|subpage=no
}}{{#if:{{{special|}}}
|{{{special|}}}
|<sup class="noprint Inline-Template {{{class|}}}" style="margin-left:0.1em; white-space:nowrap;">[<i>{{#if:{{{pre-text|}}}
|{{{pre-text}}} 
}}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{#invoke:decodeEncode|encode|s={{{title|{{{link|Wikipedia:Cleanup}}}}}} {{#if:{{{date|}}}|({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}}
| {{{post-text}}}
}}</i>]</sup>
}}<noinclude>
{{Documentation}}
</noinclude>
317c176dc9f5cfc1624f68935fdea73d852d3991
Module:DecodeEncode
828
1660
3060
3059
2023-11-09T17:59:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:DecodeEncode]]
Scribunto
text/plain
require('strict')
local p = {}
local function _getBoolean( boolean_str )
-- from: module:String; adapted
-- requires an explicit true
local boolean_value
if type( boolean_str ) == 'string' then
boolean_str = boolean_str:lower()
if boolean_str == 'true' or boolean_str == 'yes' or boolean_str == '1' then
boolean_value = true
else
boolean_value = false
end
elseif type( boolean_str ) == 'boolean' then
boolean_value = boolean_str
else
boolean_value = false
end
return boolean_value
end
function p.decode( frame )
local s = frame.args['s'] or ''
local subset_only = _getBoolean(frame.args['subset_only'] or false)
return p._decode( s, subset_only )
end
function p._decode( s, subset_only )
-- U+2009 THIN SPACE: workaround for bug: HTML entity   is decoded incorrect. Entity   gets decoded properly
s = mw.ustring.gsub( s, ' ', ' ' )
-- U+03B5 ε GREEK SMALL LETTER EPSILON: workaround for bug (phab:T328840): HTML entity ε is decoded incorrect for gsub(). Entity ε gets decoded properly
s = mw.ustring.gsub( s, 'ε', 'ε' )
local ret = mw.text.decode( s, not subset_only )
return ret
end
function p.encode( frame )
local s = frame.args['s'] or ''
local charset = frame.args['charset']
return p._encode( s, charset )
end
function p._encode( s, charset )
-- example: charset = '_&©−°\\\"\'\=' -- do escape with backslash not %;
local ret
if charset and charset ~= '' then
ret = mw.text.encode( s, charset )
else
-- use default: chartset = '<>&"\' ' (outer quotes = lua required; space = NBSP)
ret = mw.text.encode( s )
end
return ret
end
return p
9bb0f28593a5597a72c90c6075ceef68f9298cf8
Template:Clarify
10
1661
3062
3061
2023-11-09T17:59:42Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Clarify]]
wikitext
text/x-wiki
{{ safesubst:<noinclude/>#invoke:Unsubst||date=__DATE__ |$B=
{{Fix-span
|link=Wikipedia:Please clarify
|text=clarification needed
|title={{delink|{{{reason|The text near this tag may need clarification or removal of jargon.}}}}}
|date={{{date|}}}
|pre-text={{{pre-text|}}}
|post-text={{{post-text|}}}
|cat-date=Category:Wikipedia articles needing clarification
|content={{{text|}}}
}}
}}<noinclude>
{{documentation}}
</noinclude>
afe686147e4423132c07ddd2f1d9c73c4bdcca30
Template:Navbox visibility
10
1294
3085
2629
2023-11-09T17:59:45Z
wikipedia>MusikBot II
0
Protected "[[Template:Navbox visibility]]": [[Wikipedia:High-risk templates|High-risk template or module]]: 32281 transclusions ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Require template editor access] (indefinite) [Move=Require template editor access] (indefinite))
wikitext
text/x-wiki
Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude>
{{documentation}}
</noinclude>
3b1f65df829fd9f96b9c4f002fba38a0fd987a6b
Module:Math/doc
828
1662
3066
3065
2023-11-09T17:59:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Math/doc]]
wikitext
text/x-wiki
{{for|''formatting'' mathematical expressions, LATEX-style|Template:Math}}
{{High-risk|1,607,000+}}
{{module rating|protected}}
This module provides a number of mathematical functions. These functions can be used from #invoke or from other Lua modules.
== Use from other Lua modules ==
To use the module from normal wiki pages, no special preparation is needed. If you are using the module from another Lua module, first you need to load it, like this:
<syntaxhighlight lang="lua">
local mm = require('Module:Math')
</syntaxhighlight>
(The <code>mm</code> variable stands for '''M'''odule '''M'''ath; you can choose something more descriptive if you prefer.)
Most functions in the module have a version for Lua and a version for #invoke. It is possible to use the #invoke functions from other Lua modules, but using the Lua functions has the advantage that you do not need to access a Lua [[mw:Extension:Scribunto/Lua reference manual#Frame object|frame object]]. Lua functions are preceded by <code>_</code>, whereas #invoke functions are not.
== random ==
{{see also|Module:Random}}
{{#invoke:math|random}}
{{#invoke:math|random|''max_value''}}
{{#invoke:math|random|''min_value''|''max_value''}}
<syntaxhighlight lang="lua">
mm._random()
mm._random(max_value)
mm._random(min_value, max_value)
</syntaxhighlight>
Generates a random number.
* If no arguments are specified, the number produced is greater than or equal to 0 and less than 1.
* If one argument is provided, the number produced is an integer between 1 and that argument. The argument must be a positive integer.
* If two arguments are provided, the number produced is an integer between the first and second arguments. Both arguments must be integers, but can be negative.
This function will not work properly for numbers less than −2<sup>32</sup> and greater than 2<sup>32</sup> − 1. If you need to use numbers outside of this range, it is recommended that you use [[Module:Random]].
== order ==
{{#invoke:math|order|''n''}}
<syntaxhighlight lang="lua">
mm._order(n)
</syntaxhighlight>
Determines the [[order of magnitude]] of a number.
== precision ==
{{#invoke:math|precision|''n''}}
{{#invoke:math|precision|x=''n''}}
<syntaxhighlight lang="lua">
mm._precision(number_string)
</syntaxhighlight>
Detemines the precision of a number. For example, for "4" it will return "0", for "4.567" it will return "3", and for "100" it will return "-2".
The function attempts to parse the string representation of the number, and detects whether the number uses [[Scientific notation#E notation|E notation]]. For this reason, when called from Lua, very large numbers or very precise numbers should be directly input as strings to get accurate results. If they are input as numbers, the Lua interpreter will change them to E notation and this function will return the precision of the E notation rather than that of the original number. This is not a problem when the number is called from #invoke, as all input from #invoke is in string format.
== max ==
{{#invoke:math|max|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._max(v1, v2, v3, ...)
</syntaxhighlight>
Returns the maximum value from the values specified. Values that cannot be converted to numbers are ignored.
== median ==
{{#invoke:math|median|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._median(v1, v2, v3, ...)
</syntaxhighlight>
Returns the [[median]] value from the values specified. Values that cannot be converted to numbers are ignored.
== min ==
{{#invoke:math|min|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._min(v1, v2, v3, ...)
</syntaxhighlight>
Returns the minimum value from the values specified. Values that cannot be converted to numbers are ignored.
== sum ==
{{#invoke:math|sum|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._sum(v1, v2, v3, ...)
</syntaxhighlight>
Returns the sum of the values specified. Values that cannot be converted to numbers are ignored.
== average ==
{{#invoke:math|average|''v1''|''v2''|''v3''|...}}
<syntaxhighlight lang="lua">
mm._average(v1, v2, v3, ...)
</syntaxhighlight>
Returns the average of the values specified. (More precisely, the value returned is the [[Mean#Arithmetic mean (AM)|arithmetic mean]].) Values that cannot be converted to numbers are ignored.
== round ==
{{#invoke:math|round|''value''|''precision''}}
{{#invoke:math|round|value=''value''|precision=''precision''}}
<syntaxhighlight lang="lua">
mm._round(value, precision)
</syntaxhighlight>
[[Rounding|Rounds]] a number to the specified precision{{clarify|reason=What method exactly is used?}}.
Note: As of October 2019, there is a bug in the display of some rounded numbers. When trying to round a number that rounds to "n.0", like "1.02", to the nearest tenth of a digit (i.e. {{para|r|1}}), this function should display "1.0", but it unexpectedly displays "1". Use the {{para|precision_format}} parameter instead.
== log10 ==
{{#invoke:math | log10 | ''x''}}
<syntaxhighlight lang="lua">
mm._log10(x)
</syntaxhighlight>
Returns <code>log<sub>10</sub>(''x'')</code>, the [[logarithm]] of ''x'' using base 10.
== mod ==
{{#invoke:math|mod|''x''|''y''}}
<syntaxhighlight lang="lua">
mm._mod(x, y)
</syntaxhighlight>
Gets <code>''x''</code> [[Modulo operation|modulo]] <code>''y''</code>, or the remainder after <code>''x''</code> has been divided by <code>''y''</code>. This is accurate for integers up to 2<sup>53</sup>; for larger integers Lua's modulo operator may return an erroneous value. This function deals with this problem by returning <code>0</code> if the modulo given by Lua's modulo operator is less than 0 or greater than <code>''y''</code>.
== gcd ==
{{#invoke:math|gcd|''v1''|''v2''|...}}
<syntaxhighlight lang="lua">
mm._gcd(v1, v2, ...)
</syntaxhighlight>
Finds the [[greatest common divisor]] of the values specified. Values that cannot be converted to numbers are ignored.
== precision_format ==
{{#invoke:math|precision_format|''value_string''|''precision''}}
<syntaxhighlight lang="lua">
mm._precision_format(value_string, precision)
</syntaxhighlight>
Rounds a number to the specified precision and formats according to rules originally used for {{tl|Rnd}}. Output is a string.
Parameter <var>precision</var> should be an integer number of digits after the decimal point. Negative values are permitted. Non-integers give unexpected results. Positive values greater than the input precision add zero-padding, negative values greater than the input order can consume all digits.
Formatting 8,765.567 with {{tlc|#invoke:Math|precision_format|8765.567|<var>precision</var>}} gives:
{|class="wikitable"
|+
!<code><var>precision</var></code>!!Result
|-
|style="text-align:right"|2||{{#invoke:Math|precision_format|8765.567|2}}
|-
|style="text-align:right"| -2||{{#invoke:Math|precision_format|8765.567|-2}}
|-
|style="text-align:right"|6||{{#invoke:Math|precision_format|8765.567|6}}
|-
|style="text-align:right"| -6||{{#invoke:Math|precision_format|8765.567|-6}}
|-
|style="text-align:right"|2.5||{{#invoke:Math|precision_format|8765.567|2.5}}
|-
|style="text-align:right"| -2.5||{{#invoke:Math|precision_format|8765.567|-2.5}}
|}
== divide ==
{{#invoke:Math|divide|''x''|''y''|''round=''|''precision=''}}
<syntaxhighlight lang="lua">
mm._divide(x, y, round, precision)
</syntaxhighlight>
Divide x by y.
* If y if not a number, it is returned.
* Otherwise, if x is not a number, it is returned.
* If round is true ("yes" for #invoke), the result has no decimals
* Precision indicates how many digits of precision the result should have
If any of the arguments contain HTML tags, they are returned unchanged, allowing any errors in calculating the arguments to the division function to be propagated to the calling template.
== cleanNumber ==
<syntaxhighlight lang="lua">
local number, number_string = mm._cleanNumber(number_string)
</syntaxhighlight>
A helper function that can be called from other Lua modules, but not from #invoke. This takes a string or a number value as input, and if the value can be converted to a number, cleanNumber returns the number and the number string. If the value cannot be converted to a number, cleanNumber returns <code>nil, nil</code>.
==See also==
{{Math templates}}
58f1eada1ab7de23905e945547ffa5f823a88b94
Template:Coord/doc
10
1663
3068
3067
2023-11-09T18:00:40Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{#ifeq: {{FULLPAGENAME}} | Template:Coord | {{high-use|all-pages=yes}} }}
{{Transwiki guide candidate}}
{{lua|Module:Coordinates}}
{{#switch: {{FULLPAGENAME}} | Template:Coord | Template:Coord/doc = {{Uses Wikidata|P625}} {{Tracks Wikidata|P625|cat=Coordinates Wikidata tracking categories}} }}
When this template is used with '''display=title''', the template is not displayed on mobile. {{Navbox visibility}}
This template is still displayed on mobile when used with '''display=inline''', e.g. in infoboxes.
==Quick guide==
{{Coord how-to}}
__TOC__
==Purpose==
{{tlf|Coord}} provides a standard notation for encoding locations by their [[latitude]] and [[longitude]] coordinates. It is primarily for specifying the [[World Geodetic System|WGS84]] geographic coordinates of locations on [[Earth]], at the same time emitting a machine-readable [[Geo (microformat)|Geo microformat]]. However, it can also encode locations on natural satellites, dwarf planets, and planets other than Earth.
* To specify celestial coordinates, use {{tl|Sky}} instead.
* Tag articles which lack coordinates (but need them) with {{tl|Coord missing}}.
* If the subject's location is truly unknown or disputed, note this with {{tl|Coord unknown}}.
* If the coordinates were [[meta:Wikidata/Notes/Inclusion syntax|transcluded from Wikidata]], use {{tl|WikidataCoord}}.
See also: [[Wikipedia:WikiProject Geographical coordinates]].
==Features==
Latitude and longitude may be specified (with appropriate precision) either in decimal notation or as degrees/minutes/seconds. By default, coordinates appear in the format used to specify them. However, the <code>format=</code> parameter can be used to force display in a particular format. The template also accepts and displays coordinates formatted as degrees and decimal minutes as found on charts and maritime references.
The template displays the formatted coordinates with a [[hyperlink]] to [[mw:GeoHack|GeoHack]]. GeoHack displays information customized to the location, including links to external mapping services.
For terrestrial locations, a blue globe ([[Image:Erioll_world.svg|18px]]) appears to the left of the hyperlink. Clicking on the globe activates the [[:meta:WikiMiniAtlas|WikiMiniAtlas]] (requires [[JavaScript]]).
By default, coordinates appear "in line" with the adjacent text. However, the <code>display=</code> parameter can be used to move the coordinates up near the page title (in desktop view only; title coordinates do not display in mobile view)—or display them in both places at once.
The template outputs coordinates in three formats:
* [[Degree (angle)|Degree]]/[[Minute of arc|minutes]]/[[Second of arc|seconds]] ("DMS", precision is degrees, or degrees/minutes, or degrees/minutes/seconds, based on input precision).
* [[Decimal degrees]] (varying the number of decimal places based on input precision)
* A machine readable [[Geo (microformat)|Geo microformat]].
Additional features
* Logged-in users can [[#Per-user_display_customization|customize]] how coordinates appear in their browsers.
* You can get coordinates from Wikidata by transcluding this template without any numbered arguments.
* You can extract information from the Coord template for use in mathematical expressions. For details, see [[:Module:Coordinates]].
* All coordinates used in a page through this template are registered in the [[mw:API:Geosearch|geosearch API]]. If a coordinate is using title display, then these coordinates will be marked as the primary coordinates with regards to the page and therefore the topic of that page.
==Caveats==
The template '''must not''' be modified without prior discussion. External tools can depend on the format of both the wikitext and/or the generated html.
== Usage ==
'''{{coord|'''''latitude'''''|'''''longitude'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''N/S'''''|'''''dd'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''mm'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
'''{{coord|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''N/S'''''|'''''dd'''''|'''''mm'''''|'''''ss'''''|'''''E/W'''''|'''''[[#1|coordinate parameters]]'''''|'''''[[#2|template parameters]]'''''}}'''
The hemisphere identifiers (''N/S'') and (''E/W''), if used, must be adjacent to the enclosing pipe "'''<code>|</code>'''" characters, and cannot be preceded or succeeded by spaces.
There are two kinds of parameters, all optional:
*<span id="1">'''Coordinate parameters'''</span> are parameters that {{tl|Coord}} passes to the map server. These have the format ''parameter:value'' and are separated from each other by the underscore character ( _ ). The supported coordinate parameters are ''dim:'', ''globe:'', ''region:'', ''scale:'', ''source:'', and ''type:''. See [[#Coordinate parameters|coordinate parameters]] for details and examples.
*<span id="2">'''Template parameters'''</span> are parameters used by the {{tl|Coord}} template. These have format ''parameter=value'' and are separated from each other by the pipe character ( | ). The supported template parameters are ''display='', ''format='', ''name='', and ''notes=''.
:* '''display=''' can be one of the following:
::* <code>display=inline</code> – Display the coordinate inline (default)
::* <code>display=title</code> – Display the coordinate at the top of the article, beside the article's title (replaces {{tl|coor title dms}} family; coordinates are displayed in desktop view only; title coordinates do not display in mobile view)
::** shortcut: <code>display=t</code>
::* <code>display=inline,title</code> – Display the coordinate both inline and beside the article's title (replaces {{tl|coor at dms}} family)
::** shortcut: <code>display=it</code>
::* <code>display=title,inline</code> has the same effect as <code>display=inline,title</code>
::Note: the <code>title</code> attribute indicates that the coordinates apply to the entire article, and not just one of (perhaps many) places mentioned in it—so it should only be omitted in the latter case. Additionally the title option will mark the coordinates as the primary coordinates for the page (and topic of the page) in the [[mw:API:Geosearch|geosearch API]].
:* '''format=''' can be used to force ''dec'' or ''dms'' coordinate display.
::* <code>format=dec</code> reformats the coordinates to <span style="text-decoration:underline;">decimal degrees</span> format.
::* <code>format=dms</code> reformats the coordinates to <span style="text-decoration:underline;">degrees | minutes | seconds</span> format.
:* '''name=''' can be used to annotate inline coordinates for display in map services such as the [[:meta:WikiMiniAtlas|WikiMiniAtlas]]. If omitted, the article's title (PAGENAME) is assumed.
::Note: a ''name='' parameter causes {{tl|Coord}} to emit an [[hCard]] [[microformat]] using that name, ''even if used within an existing hCard''. Do not use when the name is that of a person (e.g for a gravesite), as the generated hCard would be invalid. Also, do not use square brackets in names.
:* '''notes=''' specifies text to be displayed immediately following the coordinates. This is primarily intended for adding footnotes to coordinates displayed beside the title.
:* '''qid=''' specify Q item to display the coordinates of. Used primarily by Wikidata powered infoboxes.
==Helper functions==
Helper functions are available to manipulate the output from {{tl|Coord}} when it appears in a container template such as an infobox.
===To extract the latitude from a Coord template===
{{See also|Geographic coordinate conversion}}
Use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}</nowiki> </code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|lat}}
and similarly to extract the longitude, use:
<code><nowiki>{{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}</nowiki></code> → {{#invoke:coordinates|coord2text|{{Coord|57|18|22|N|4|27|32|E}}|long}}
:'''Note: this method removes the microformat markup, and should not be used inside templates which emit parent microformats, such as infoboxes or table-row templates.'''
=== Displaying all coordinate links on one map ===
The template {{tl|GeoGroup}} can be used in an article with coordinates. This template creates links to mapping services which display all the coordinates on a single map, and links to other services which allow the coordinates to be used or downloaded in a variety of formats.
== Examples ==
{{for|the guideline on coordinate precision|WP:OPCOORD}}
{| class="wikitable"
| <code><nowiki>{{coord|43.651234|-79.383333}}</nowiki></code>
| {{coord|43.651234|-79.383333}}
| Toronto – Fully decimal – western hemisphere implied by negation
|-
| <code><nowiki>{{coord|43.65|-79.38}}</nowiki></code>
| {{coord|43.65|-79.38}}
| Toronto – low precision decimal
|-
| <code><nowiki>{{coord|43.6500|-79.3800}}</nowiki></code>
| {{coord|43.6500|-79.3800}}
| Toronto – medium precision decimal with trailing zeroes
|-
| <code><nowiki>{{coord|43.653500|N|79.384000|W}}</nowiki></code>
| {{coord|43.653500|N|79.384000|W}}
| Toronto – high precision decimal with explicit hemisphere notation
|-
| <code><nowiki>{{coord|43|29|N|79|23|W}}</nowiki></code>
| {{coord|43|29|N|79|23|W}}
| Toronto – degrees & minutes
|-
| <code><nowiki>{{coord|43|29|13|N|79|23|02|W}}</nowiki></code>
| {{coord|43|29|4|N|79|23|0|W}}
| Toronto – degrees, minutes & seconds
|-
| <code><nowiki>{{coord|43|29|12.6|N|79|23|02.4|W}}</nowiki></code>
| {{coord|43|29|12.6|N|79|23|02.4|W}}
| Toronto – degrees, minutes, seconds & fractions of seconds
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E}}
| Moscow – N & E
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dms}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E|format=dms}}
| Convert to dms format
|-
| <code><nowiki>{{coord|39.098095|-94.587307|format=dms}}</nowiki></code>
| {{coord|39.098095|-94.587307|format=dms}}
| Decimal conversion without N/S/E/W
|-
| <code><nowiki>{{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}</nowiki></code>
| {{coord|55.752222|N|37.615556|E|format=dec|name=Moscow}}
| Convert to decimal and label on some maps
|-
| <code><nowiki>{{coord|33|55|S|18|25|E}}</nowiki></code>
| {{coord|33|55|S|18|25|E}}
| Cape Town – S & E
|-
| <code><nowiki>{{coord|35|00|N|105|00|E}}</nowiki></code>
| {{coord|35|00|N|105|00|E}}
| People's Republic of China
|-
| <code><nowiki>{{coord|22|54|30|S|43|14|37|W}}</nowiki></code>
| {{coord|22|54|30|S|43|14|37|W}}
| Rio – S & W
|-
| <code><nowiki>{{coord|22|S|43|W}}</nowiki></code>
| {{coord|22|S|43|W}}
| A [[Degree Confluence Project|degree confluence]].
|-
| <code><nowiki>{{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}</nowiki></code>
| {{coord|52|28|N|1|55|W|region:GB_type:city|notes=<ref>{{cite web|url=http://www.fallingrain.com/world/UK/0/Birmingham.html|title=Birmingham}}</ref>|display=inline,title}}
| Birmingham – with display, notes, and parameter settings; note that these coordinates are also displayed at the top of this page.
|-
| <code><nowiki>{{coord|51|25.813|N|0|43.945|E}}</nowiki></code>
| {{coord|51|25.813|N|0|43.945|E}}
| Navigation buoy in the River Medway, England.
|-
| <code><nowiki>{{coord|51|36.287|N|8|32.018|W}}</nowiki></code>
| {{coord|51|36.287|N|8|32.018|W}}
| Lighthouse at the [[Old Head of Kinsale]] as defined by the [[Commissioners of Irish Lights]].
|}
===References===
{{reflist}}
== Coordinate parameters ==
The first unnamed parameter following the longitude is an optional string of coordinate parameters, separated by underscores. These parameters help [[mw:GeoHack|GeoHack]] select suitable map resources, and they will become more important when [[meta:Wikimaps|Wikimaps]] becomes fully functional.
===== type:''T'' =====
{{Wikipedia:WikiProject Geographical coordinates/type:}}
===== scale:''N'' =====
{{Wikipedia:WikiProject Geographical coordinates/scale:}}
===== dim:''D'' =====
The <code>dim:</code> parameter defines the [[diameter]] of a viewing circle centered on the coordinate. While the default unit of measurement is metres, the <code>km</code> suffix may be appended to indicate kilometres.
[[tswiki:GeoHack|GeoHack]] uses <code>dim:</code> to select a [[Scale (map)|map scale]] such that the viewing circle appears roughly {{convert|10|cm|in|0}} in diameter on a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default viewing circle of {{convert|30|km|mi}}.
{| class="wikitable"
|+ Samples
! Subject
! View diameter
! Markup
! Result
|-
| [[Western Hemisphere]]
| style="text-align:right;" | {{convert|10000|km|mi}}
| <code><nowiki>{{coord|0|N|90|W|dim:10000km}}</nowiki></code>
| {{coord|0|N|90|W|dim:10000km}}
|-
| [[Ohio]]
| style="text-align:right;" | {{convert|400|km|mi}}
| <code><nowiki>{{coord|40.5|-82.5|dim:400km}}</nowiki></code>
| {{coord|40.5|-82.5|dim:400km}}
|-
| [[Dresden]]
| style="text-align:right;" | {{convert|20000|m|mi}}
| <code><nowiki>{{coord|51.03|13.73|dim:20000}}</nowiki></code>
| {{coord|51.03|13.73|dim:20000}}
|-
| [[Statue of Liberty]]
| style="text-align:right;" | {{convert|100|m|ft}}
| <code><nowiki>{{coord|40.6892|-74.0445|dim:100}}</nowiki></code>
| {{coord|40.6892|-74.0445|dim:100}}
|-
|}
===== region:''R'' =====
{{Wikipedia:WikiProject Geographical coordinates/region:}}
===== globe:''G'' =====
{{Wikipedia:WikiProject Geographical coordinates/globe:}}
===== source:''S'' =====
{{Wikipedia:WikiProject Geographical coordinates/source:}}
==Per-user display customization==
{{UF-coord-classes}}
==Incorrect uses and maintenance categories==
The template has some input checks built in. Most errors display a <span style="color:red;">'''bold, red'''</span> message inline and categorize the article in the [[Wikipedia:Hidden category|hidden]] [[Wikipedia:Categorization#Non-article and maintenance categories|maintenance category]] '''[[:Category:Pages with malformed coordinate tags|Pages with malformed coordinate tags]]'''. There {{#IFEQ:{{PAGESINCATEGORY:Pages with malformed coordinate tags}}|1|is currently '''1''' page|are currently '''{{PAGESINCATEGORY:Pages with malformed coordinate tags}}''' pages}} in that category. See the category description for further instructions.
A more thorough daily report of coordinates needing repair is at [[tools:~dispenser/view/File viewer#log:coord-enwiki.log]].
''See also:'' [[WT:GEO#To do]]
==Internals==
This template is completely powered by the [[Wikipedia:Lua|Lua]] <code>[[:Module:Coordinates]]</code>.
===Class names===
The class names '''geo''', '''latitude''' and '''longitude''' are used to generate the microformat and '''MUST NOT''' be changed.
===History===
This template used to use a lot of [[Template:Coord/doc/internals|sub templates]] but these have all been replaced by {{tlm|Coordinates}}.
===Template Data===
This template uses overloading{{clarify|reason=What does this mean? Where is it defined?}} which does not work well with the [[Wikipedia:TemplateData|VisualEditor/TemplateData]]. Consider using "Edit source" instead of the visual editor until this defect is corrected. To facilitate visual editing in the meantime, consider using {{tl|coordDec}} for signed decimal degrees, {{tl|coordDMS}} when degrees minutes and seconds are specified, and {{tl|coordDM}} when just degrees and minutes are given.
{{TemplateData header}}
<templatedata>{
"description": "Encodes the latitude and longitude coordinates of a location, provides a link to map of the location. This template does not work well with the Visual Editor, consider using {{coordDec}} for signed decimal degrees, {{coordDMS}} when degrees minutes and seconds are specified {{coordDM}} when only degrees and minutes are specified. To use this template you will need to use positional parameter following one of these schemes: {{coord | D | M | S | NS | D | M | S | EW | geo | opts}}, {{coord | D | M | NS | D | M | EW | geo | opts}}, {{coord | D| NS | D| EW | geo | opts}} {{coord | sD | sD | geo | opts}} where D is degrees, M is minutes, S seconds, sD signed decimal degrees, NS is N or S, EW is E or W, opts are named parameter and geo are the coordinate parameters described on the main doc page.",
"params": {
"1": {
"label": "1",
"description": "Either degrees latitude or a signed decimal degrees latitude",
"type": "number",
"required": false,
"suggested": true
},
"2": {
"label": "2",
"description": "Either: minutes latitude, signed decimal degrees longitude or 'N' or 'S'.",
"type": "string",
"required": false,
"suggested": true
},
"3": {
"label": "3",
"description": "Either: second latitude, degrees longitude, 'N' or 'S' or GeoHack parameters",
"type": "string",
"required": false
},
"4": {
"label": "4",
"description": "Either: degrees longitude, 'N', 'S', 'E' or 'W' or GeoHack parameters",
"type": "string",
"required": false
},
"5": {
"label": "5",
"description": "Either: degrees longitude, minutes longitude or GeoHack parameters",
"type": "string",
"required": false
},
"6": {
"label": "6",
"description": "Either: minutes longitude, 'E' or 'W' or GeoHack parameters",
"type": "string",
"required": false
},
"7": {
"label": "7",
"description": "Either second longitude, or GeoHack parameters",
"type": "string",
"required": false
},
"8": {
"label": "8",
"description": "'E' or 'W'.",
"type": "string",
"required": false
},
"9": {
"label": "9",
"description": "GeoHack parameters. Example: dim:30_region:US-WI_type:event",
"type": "string",
"required": false
},
"qid": {
"label": "Wikidata item",
"description": "Retrieve coordinates from a WikiData entry instead of from this template's parameters",
"type": "line",
"required": false,
"example": "Q513"
},
"display": {
"label": "Display",
"description": "Where it is displayed. Can be one of: 'inline' in the body of the article, 'title' at the top of the article or 'inline,title' both",
"type": "line",
"default": "inline",
"suggested": true,
"required": false,
"suggestedvalues": [
"inline",
"title",
"inline,title"
]
},
"name": {
"label": "Name",
"description": "a label to place on maps (default is PAGENAME)",
"type": "string",
"required": false
},
"notes": {
"label": "Notes",
"description": "text displayed immediately following the coordinates",
"type": "string",
"required": false
},
"format": {
"label": "Format",
"description": "How the coordinates are displayed, either 'dec' or 'dms'",
"type": "line",
"required": false,
"suggestedvalues": [
"dec",
"dms"
]
},
"nosave": {
"label": "Geosearch",
"description": "Set to 'true' if you want to avoid this coordinate to be registered in the geosearch API.",
"type": "string",
"required": false
}
}
}</templatedata>
<!--
"1": {
"label": "Latitude degrees",
"description": "The degrees part of the latitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for south e.g. -79.38.",
"type": "number",
"required": true
},
"2": {
"label": "Latitude minutes",
"description": "The minutes part of the latitude. Do not be overly precise, 1' is approximately 1.5km, Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"3": {
"label": "Latitude seconds",
"description": "The minutes part of the latitude. Do not be overly precise, 1\" is approximately 30m. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"4": {
"label": "Latitude direction",
"description": "Direction part of latitude: N or S. Not used if decimal degrees are specified.",
"type": "string",
"required": false
},
"5": {
"label": "Longitude degrees",
"description": "The degrees part of the longitude. This can either be a whole number in which case minutes and seconds can also be provided in subsequent parameters, or in decimal format, negative for west e.g. -79.38.",
"type": "number",
"required": true
},
"6": {
"label": "Longitude minutes",
"description": "The minutes part of the longitude. Do not be overly precise—1' is approximately 1.5 km. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"7": {
"label": "Longitude seconds",
"description": "The minutes part of the longitude. Do not be overly precise—1\" is approximately 30 m. Not used if decimal degrees are specified.",
"type": "number",
"required": false
},
"8": {
"label": "Longitude direction",
"description": "Direction part of longitude: E or W. Not used if decimal degrees are specified.",
"type": "string",
"required": false
},
"9": {
"label": "Coordinate parameters",
"description": "Optional parameters separated by an underscore '_', dim:N (viewing diameter in metres), region:R (ISO 3166-1 alpha-2 or ISO 3166-2 code), type:T (e.g. landmark or city (30,000)). For example 'dim:30_region:US-WI_type:event'",
"type": "string",
"required": false
},
-->
== See also ==
* [[Special:PrefixIndex/Template:GeoTemplate]], for the geohack page templates used on Earth and other bodies
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Coordinates conversion templates]]
[[Category:Coordinates templates]]
[[Category:TemplateData documentation with overload problems]]
[[Category:Templates generating Geo]]
[[Category:Title templates]]
}}</includeonly>
4d777f808441ad8f957e551b553ab13de52277e4
Template:Terminate sentence
10
248
3076
550
2023-11-09T18:01:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Terminate_sentence]]
wikitext
text/x-wiki
{{{1}}}{{#if:{{#invoke:text|sentenceTerminated|{{{1|}}}}}||{{{2|.}}}}}<noinclude>{{documentation}}</noinclude>
e4142b47b3d7959b82f582bab87ca10768d4d93b
Template:Navbar-header
10
1664
3078
3077
2023-11-09T18:01:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbar-header]]
wikitext
text/x-wiki
<templatestyles src="Navbar-header/styles.css"/><div class="navbar-header" {{#if:{{{fontcolor|}}}|style="color:{{{fontcolor}}};"}}>{{{1}}}<!--
-->{{#invoke:navbar|navbar
| 1 = {{{2<noinclude>|Navbar-header</noinclude>}}}
| {{#ifeq: {{{plain|}}}
|<!--equals:-->1
|<!--then:-->plain
|<!--else:-->mini
}} = 1
| {{#if: {{{fontcolor|}}}
| fontstyle | NULL }} = color:{{{fontcolor}}};
}}<!--
--></div><noinclude>
{{documentation}}
<!-- Add cats and interwikis to the /doc subpage, not here! -->
</noinclude>
f24c880cdd077ccfcd14829309531bb17c5bb430
Template:Navbar-header/styles.css
10
1665
3080
3079
2023-11-09T18:01:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbar-header/styles.css]]
sanitized-css
text/css
/* {{pp|small=y}} */
.navbar-header {
text-align: center;
position: relative;
white-space: nowrap;
}
.navbar-header .navbar {
position: absolute;
right: 0;
top: 0;
margin: 0 5px;
}
cb7fd125aebdbd99d22411362a9b5007e97c32be
Template:Tracks Wikidata
10
1255
3082
3081
2023-11-09T18:01:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tracks_Wikidata]]
wikitext
text/x-wiki
{{Sister project
| image = [[File:Wikidata-logo-with-magnifying-glass-icon.svg|40px|link=Wikipedia:Wikidata]]
| position = {{{position|}}}
| text = This {{template other
| template
| {{module other
| module
| {{category other
| category
| page <!-- not template, module, or category -->
}}
}}
}} [[:Category:{{{cat|Wikidata tracking categories}}}|tracks]] {{#if:{{{section|}}}
| one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details.
| the [[Wikidata]] propert{{#if:{{{2|}}}|ies:|y:}} {{#invoke:Uses Wikidata|usesProperty}}
}}
}}<includeonly>{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default = {{template other
| [[Category:Templates tracking Wikidata]]
| {{module other
| [[Category:Modules tracking Wikidata]]
| {{category other
| <!-- if used in a category, don't automatically add parent category -->
| <!-- not template, module, or category -->
}}
}}
}}
}}</includeonly><noinclude>
{{Documentation}}<!-- Add categories and interwikis to the /doc sub-page -->
</noinclude>
42e72b2011b4a187af0427756de66dc2772894cc
Template:Coord how-to
10
1666
3084
3083
2023-11-09T18:01:17Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord_how-to]]
wikitext
text/x-wiki
<div class="{{{class|}}}" style="display:table; background:#f5fffa; color: #222; margin: 1em 0; border: 1px solid #a2a9b1;{{{style|}}}">
<div style="background:#cef2e0; font-weight:bold; border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
{{{{{navbar|navbar-header}}}|1= {{{title|Quick how to}}} |2=Coord_how-to}}
</div><!--end header -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
To add {{Coord|57|18|22|N|4|27|32|W}} to the top of an article, use {{Tl|Coord}}, thus:
:'''<code><nowiki>{{Coord|57|18|22|N|4|27|32|W|display=title}}</nowiki></code>'''
These [[Geographic coordinate system|coordinates]] are in [[Degree (angle)|degrees]], [[Minute and second of arc|minutes, and seconds of arc]].
"title" means that the coordinates will be displayed next to the article's title at the top of the page (in desktop view only; title coordinates do not display in mobile view) and before any other text or images. It also records the coordinates as the primary location of the page's subject in Wikipedia's geosearch API.
</div><!-- end of section 1 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
To add {{Coord|44.1124|N|87.9130|W}} to the top of an article, use either
:'''<code><nowiki>{{Coord|44.1124|N|87.9130|W|display=title}}</nowiki></code>'''
(which does not require minutes or seconds but does require the user to specify north/ south and east/west) ''or''
:'''<code><nowiki>{{Coord|44.1124|-87.9130|display=title}}</nowiki></code>'''
(in which the north and east are presumed by positive values while the south and west are negative ones).
These coordinates are in [[decimal degrees]].
</div><!-- end of section 2 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
* Degrees, minutes and seconds, when used, must each be separated by a [[Vertical bar|pipe ("|")]].
* [[Geodetic datum|Map datum]] must be [[WGS84]] if possible (except for off-Earth bodies).
* Avoid [[Wikipedia:WikiProject Geographical coordinates#Precision guidelines|excessive precision]] (0.0001° is <11 m, 1″ is <31 m).
* Maintain [[MOS:UNCERTAINTY|consistency]] of decimal places or minutes/seconds between latitude and longitude.
* Latitude (N/S) must appear before longitude (E/W).
</div><!-- end of section 3 -->
<div style="border-bottom: 1px solid #a2a9b1; padding: 0.2em 0.4em;">
Optional coordinate parameters follow the longitude and are separated by [[Underscore|an underscore ("_")]]:<br />
*[[Template:Coord#dim:D|dim]]: <code>dim:</code>'''''N''''' (viewing <u>d</u>iameter <u>i</u>n <u>m</u>etres)
*[[Template:Coord#region:R|region]]: <code>region:</code>'''''R''''' ([[ISO 3166-1 alpha-2]] or [[ISO 3166-2]] code)
*[[Template:Coord#type:T|type]]: <code>type:</code>'''''T''''' (<code>landmark</code> or <code>city(30,000)</code>, for example)
Other optional parameters are separated by [[Vertical bar|a pipe ("|")]]:<br />
*[[Template:Coord#Display|display]]
*: {{Para|display|inline}} (the default) to display in the body of the article only,
*: {{Para|display|title}} to display at the top of the article only (in desktop view only; title coordinates do not display in mobile view), or
*: {{Para|display|inline,title}} to display in both places.
*[[Template:Coord#Name|name]]
*: <code>name=</code>'''''X''''' to label the place on maps (default is [[mw:Help:Magic words#Page names|PAGENAME]])
Thus: '''<code><nowiki>{{Coord|44.1172|-87.9135|dim:30_region:US-WI_type:event</nowiki></code>'''
::'''<code><nowiki>|display=inline,title|name=accident site}}</nowiki></code>'''
Use {{Para|display|title}} (or {{Para|display|inline,title}}) once per article, for the subject of the article, where appropriate.
</div><!-- end of section 4 -->
<div style="padding: 0.2em 0.4em;">
* Per [[WP:ORDER]], the template is placed at the bottom of the article in the 'end matter', after any [[Wikipedia:Navigation template|navigation templates]], but before all [[Wikipedia:Categorization|categories]], including the {{tl|DEFAULTSORT}} template. This template may also be placed within an [[Help:Infobox|infobox]], instead of at the bottom of the article.
* For full details, refer to {{tl|Coord/doc}}.
* Additional guidance is available at [[Wikipedia:Obtaining geographic coordinates|obtaining coordinates]] and [[Geographic coordinate conversion|converting coordinates]].
</div><!-- end of section 5 -->
</div><noinclude>
{{documentation|content=
==Usage==
This a sub-tempate for {{tl|Coord/doc}}.
[[Category:WikiProject Geographical coordinates]]
}}</noinclude>
35f82b649ae37b5b4c2a11e6a668f083bab05a26
Template:Navbox visibility
10
1294
3086
3085
2023-11-09T18:01:18Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Navbox_visibility]]
wikitext
text/x-wiki
Templates using the classes <code>class=navbox</code> ({{tl|navbox}}) or <code>class=nomobile</code> ({{tl|sidebar}}) are not displayed on the [https://en.m.wikipedia.org/ mobile web site] of English Wikipedia. Mobile page views account for approximately 65% of all page views (90-day average {{as of|May 2023|lc=y}}).<noinclude>
{{documentation}}
</noinclude>
3b1f65df829fd9f96b9c4f002fba38a0fd987a6b
Template:Uses Wikidata
10
1069
3088
3087
2023-11-09T18:01:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Uses_Wikidata]]
wikitext
text/x-wiki
{{Sister project
| position = {{{position|}}}
| project = data
| text = This {{module other|module|template}} uses {{#if:{{{section|}}} | one or more [[Wikidata]] properties; see {{Section link||{{{section}}}}} for details. | the [[Wikidata]] propert{{#if:{{{2|}}}|ies|y}}:
{{#invoke:Uses Wikidata|usesProperty}}
}}}}<includeonly>{{#switch:{{SUBPAGENAME}}
|sandbox |testcases |doc= <!--no category-->
|#default={{module other |[[Category:Modules using data from Wikidata]] |{{template other |[[Category:Templates using data from Wikidata]]}} }}
}}</includeonly><noinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage -->
</noinclude>
dd057e93ccd4b8fe8d6acd82c6d1d3ee2589a36a
Führerredux Wiki:WikiProject Geographical coordinates/globe:
4
1667
3090
3089
2023-11-09T18:01:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/globe:]]
wikitext
text/x-wiki
The <code>globe:</code> parameter specifies the [[planet]], [[dwarf planet]], [[asteroid]], or [[natural satellite]] upon which the coordinates reside. Apart from ''[[earth]]'' (the default), recognized values are: ''[[Mercury (planet)|mercury]]'', ''[[venus]]'', ''[[moon]]'', ''[[mars]]'', ''[[Phobos (moon)|phobos]]'', ''[[Deimos (moon)|deimos]]'', ''[[Ceres (dwarf planet)|ceres]]'', ''[[4 Vesta|vesta]]'', ''[[jupiter]]'', ''[[Ganymede (moon)|ganymede]]'', ''[[Callisto (moon)|callisto]]'', ''[[Io (moon)|io]]'', ''[[Europa (moon)|europa]]'', ''[[Mimas (moon)|mimas]]'', ''[[enceladus]]'', ''[[Tethys (moon)|tethys]]'', ''[[Dione (moon)|dione]]'', ''[[Rhea (moon)|rhea]]'', ''[[Titan (moon)|titan]]'', ''[[Hyperion (moon)|hyperion]]'', ''[[Iapetus (moon)|iapetus]]'', ''[[Phoebe (moon)|phoebe]]'', ''[[Miranda (moon)|miranda]]'', ''[[Ariel (moon)|ariel]]'', ''[[Umbriel (moon)|umbriel]]'', ''[[Titania (moon)|titania]]'', ''[[Oberon (moon)|oberon]]'', ''[[Triton (moon)|triton]]'', ''[[pluto]]'', and ''[[Charon (moon)|charon]]''.
{| class="wikitable sortable"
|+ Samples
! Subject
! G
! Markup
! Result
|-
| [[Kittu (crater)|Kittu Crater]]
| ganymede
| <code><nowiki>{{coord|0.4|N|334.6|W|globe:ganymede}}</nowiki></code>
| {{coord|0.4|N|334.6|W|globe:ganymede}}
|-
| [[Viking 2]] lander
| mars
| <code><nowiki>{{coord|48.269|N|225.990|W|globe:mars}}</nowiki></code>
| {{coord|48.269|N|225.990|W|globe:mars}}
|-
| [[Mozart (crater)|Mozart Crater]]
| mercury
| <code><nowiki>{{coord|7.8|N|190.5|W|globe:mercury}}</nowiki></code>
| {{coord|7.8|N|190.5|W|globe:mercury}}
|-
| [[Apollo 11]] lander
| moon
| <code><nowiki>{{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}</nowiki></code>
| {{coord|0|40|26.69|N|23|28|22.69|E|globe:moon}}
|-
| [[Ksa (crater)|Ksa Crater]]
| titan
| <code><nowiki>{{coord|14.0|N|65.4|W|globe:titan}}</nowiki></code>
| {{coord|14.0|N|65.4|W|globe:titan}}
|-
| [[Venera 13]] lander
| venus
| <code><nowiki>{{coord|7.5|S|303|E|globe:venus}}</nowiki></code>
| {{coord|7.5|S|303|E|globe:venus}}
|-
| [[Stickney (crater)|Stickney Crater]]
| phobos
| <code><nowiki>{{coord|1|N|49|W|globe:phobos}}</nowiki></code>
| {{coord|1|N|49|W|globe:phobos}}
|}
Very rough mapping is provided on geohack for almost all supported globes. The pop-out WikiMiniAtlas system provides limited mapping for Moon, Mars, Mercury, Venus, Io, and Titan, {{as of|2021|02|lc=1}}.
The maps roughly implies a coordinate reference system, but does not clearly specify one (unlike Earth's WGS84). Since the template defaults to east longitude, the <code>|W|</code> direction must be specified for globes that measure longitude westward. For celestial coordinates, use {{tl|Sky}} instead.
[[Category:WikiProject Geographical coordinates]]
ac8ba8717272d81a67cf6d6c89bd07c44965c6dc
Führerredux Wiki:WikiProject Geographical coordinates/region:
4
1668
3092
3091
2023-11-09T18:01:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/region:]]
wikitext
text/x-wiki
The <code>region:</code> parameter specifies the political region for terrestrial coordinates. It is used to select appropriate map resources. If no <code>region:</code> parameter is provided, [[tswiki:GeoHack|GeoHack]] attempts to determine the region from the coordinates.
The region should be supplied as either a two character [[ISO 3166-1 alpha-2]] country code or an [[ISO 3166-2]] region code.
Examples of [[ISO 3166-1 alpha-2]] codes:
{{columns-list|
* '''AQ''' Antarctica
* '''AU''' Australia
* '''BR''' Brazil
* '''DE''' Germany
* '''GB''' United Kingdom
* '''HK''' Hong Kong
* '''IN''' India
* '''LK''' Sri Lanka
* '''RU''' Russia
* '''US''' United States}}
Examples of [[ISO 3166-2]] region codes:
{{columns-list|
* '''DE-TH''' Thuringia, Germany
* '''GB-BIR''' Birmingham, England
* '''NO-03''' Oslo, Norway
* '''US-NY''' New York state, US}}
The oceans have the following Wiki assigned code elements per [[:de:Vorlage:Coordinate#Ozeane]].
* '''XN''' Arctic Ocean
* '''XA''' Atlantic Ocean
* '''XI''' Indian Ocean
* '''XP''' Pacific Ocean
* '''XS''' Southern Ocean
In addition, two Wiki assigned code elements can be used with {{tl|coord}}:
* '''XZ''' for objects in or above international waters (similar to [[UN/LOCODE]]).
* '''ZZ''' for use in examples.
{| class="wikitable" cellpadding="20"
|+ Samples
! Focus region
! Region
! Markup
! Result
|-
| Switzerland
| <code>CH</code>
| <code><nowiki>{{coord|46.9524|N|7.4396|E|region:CH}}</nowiki></code>
| {{coord|46.9524|N|7.4396|E|region:CH}}
|-
| Berlin, Germany
| <code>DE-BE</code>
| <code><nowiki>{{coord|52.5164|N|13.3775|E|region:DE-BE}}</nowiki></code>
| {{coord|52.5164|N|13.3775|E|region:DE-BE}}
|}
[[Category:WikiProject Geographical coordinates]]
af478499a611b769b017fad30805b13e8221cc30
Führerredux Wiki:WikiProject Geographical coordinates/scale:
4
1669
3094
3093
2023-11-09T18:01:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/scale:]]
wikitext
text/x-wiki
The <code>scale:</code> parameter specifies the desired [[scale (map)|map scale]] as 1:''N'', overriding the scale implied by any <code>[[#type:T|type:]]</code> parameter.
[[tswiki:GeoHack|GeoHack]] uses <code>scale:</code> to select a map scale for a 72 [[Dots per inch|dpi]] computer monitor. If no <code>dim:</code>, <code>type:</code>, or <code>scale:</code> parameters are provided, GeoHack uses its default scale of 1:300,000.
{| class="wikitable"
|+ Samples
! Subject
! Scale
! Markup
! Result
|-
|[[Big Ben]]
|align=right|1:500
|<code><nowiki>{{coord|51.500611|N|0.124611|W|scale:500}}</nowiki></code>
|{{coord|51.500611|N|0.124611|W|scale:500}}
|-
|[[Palace of Westminster]]
|align=right|1:5,000
|<code><nowiki>{{coord|51.5006|N|0.1246|W|scale:5000}}</nowiki></code>
|{{coord|51.5006|N|0.1246|W|scale:5000}}
|-
|[[City of Westminster]]
|align=right|1:50,000
|<code><nowiki>{{coord|51.501|N|0.125|W|scale:50000}}</nowiki></code>
|{{coord|51.501|N|0.125|W|scale:50000}}
|-
|[[Greater London]]
|align=right|1:500,000
|<code><nowiki>{{coord|51.50|N|0.12|W|scale:500000}}</nowiki></code>
|{{coord|51.50|N|0.12|W|scale:500000}}
|}
[[Category:WikiProject Geographical coordinates]]
a577d814da250e0ddf28a80dccfa978d6bda0027
Führerredux Wiki:WikiProject Geographical coordinates/source:
4
1670
3096
3095
2023-11-09T18:01:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/source:]]
wikitext
text/x-wiki
Specifies, where present, the data source and data source format/datum, and optionally, the original data, presented in parentheses. This is initially primarily intended for use by geotagging robots, so that data is not blindly repeatedly copied from format to format and Wikipedia to Wikipedia, with progressive loss of precision and attributability.
Examples:
* A lat/long geotag derived from an [[Ordnance Survey]] [[Ordnance Survey National Grid|National Grid Reference]] NM 435 355 found in the English-language Wikipedia would be tagged as "source:enwiki-osgb36(NM435355)"
* A latitude-longitude location sourced from data taken from the German-language Wikipedia would be tagged as "source:dewiki" – and so on, for other language codes;
* A location sourced from the public domain [[GEOnet Names Server|GeoNet Names Server]] database would be tagged as "source:GNS". No datum or format information is needed, since by default all Wikipedia coordinates are in latitude/longitude format based on the [[World Geodetic System|WGS84]] datum. Similarly, US locations sourced from the similar public domain [[Geographic Names Information System|GNIS]] database would be tagged as "source:GNIS".
[[Category:WikiProject Geographical coordinates]]
caf1408990661ff81d9edcc1ee786751081527aa
Führerredux Wiki:WikiProject Geographical coordinates/type:
4
1671
3098
3097
2023-11-09T18:01:24Z
Führerredux
2
1 revision imported from [[:wikipedia:Wikipedia:WikiProject_Geographical_coordinates/type:]]
wikitext
text/x-wiki
The <code>type:</code> parameter specifies the type of location for reverse mapping (for instance, to select a marker icon in the [[Wikipedia:WikiMiniAtlas|WikiMiniAtlas]]).
It also sets the [[Scale (map)|map scale]], which can however be overridden by ''[[#dim:D|dim:]]'' or ''[[#scale:N|scale:]]''.
Valid types are:
{| align="center" class="wikitable"
! T
! Description
! Map scale
|-
| '''adm1st'''
| Administrative unit of country, 1st level (province, state), see [[List of administrative divisions by country|table]], e.g. [[U.S. state]]s
|align="right" | 1:1,000,000
|-
| '''adm2nd'''
| Administrative unit of country, 2nd level, see [[List of administrative divisions by country|table]], e.g. [[county (United States)]]
|align="right" | 1:300,000
|-
| '''adm3rd'''
| Administrative unit of country, 3rd level, see [[List of administrative divisions by country|table]]
|align="right" | 1:100,000
|-
| '''airport'''
| airports and airbases
|align="right" | 1:30,000
|-
| '''city('''''pop''''')'''
| cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with known population<br/>Please replace ''pop'' with a number. Commas in ''pop'' will be ignored. There should be no blanks.
|align="right" | 1:30,000 ... 1:300,000
|-
| '''city'''
| cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with unspecified population</br>These are treated as minor cities.
|align="right" | 1:100,000
|-
| '''country'''
| (e.g. "type:country")
|align="right" | 1:10,000,000
|-
| '''edu'''
| schools, colleges, and universities
|align="right" | 1:10,000
|-
| '''event'''
| one-time or regular events and incidents that occurred at a specific location, including battles, earthquakes, festivals, and shipwrecks
|align="right" | 1:50,000
|-
| '''forest'''
| forests and woodlands
|align="right" | 1:50,000
|-
| '''glacier'''
| glaciers and icecaps
|align="right" | 1:50,000
|-
| '''isle'''
| islands and isles
|align="right" | 1:100,000
|-
| '''landmark'''
| buildings (including churches, factories, museums, theatres, and power plants but excluding schools and railway stations), caves, cemeteries, cultural landmarks, geologic faults, headlands, intersections, mines, ranches, roads, structures (including antennas, bridges, castles, dams, lighthouses, monuments, and stadiums), tourist attractions, valleys, and other points of interest
|align="right" | 1:10,000
|-
| '''mountain'''
| peaks, mountain ranges, hills, submerged reefs, and seamounts
|align="right" | 1:100,000
|-
| '''pass'''
| mountain passes
|align="right" | 1:10,000
|-
| '''railwaystation'''
| stations, stops, and maintenance areas of railways and trains, including railroad, metro, rapid transit, underground, subway, elevated railway, etc.
|align="right" | 1:10,000
|-
| '''river'''
| rivers, canals, creeks, brooks, and streams, including intermittent ones
|align="right" | 1:100,000
|-
| '''satellite'''
| geo-stationary satellites
|align="right" | 1:10,000,000
|-
| '''waterbody'''
| bays, fjords, lakes, reservoirs, ponds, lochs, loughs, meres, lagoons, estuaries, inland seas, and waterfalls
|align="right" | 1:100,000
|-
| '''camera'''
| To indicate the location of where a specific image was taken. This type is used by coordinate templates on File pages.
|align="right" | 1:10,000
|-
|
| ''Default scale: if no type is used or the type is not defined in the GeoHack extension''
|align="right" | 1:300,000
|}
{| class="wikitable"
|+ Samples
! T
! Markup
! Result
|-
| '''waterbody'''
| <code><nowiki>{{coord|46|43|N|7|58|E|type:waterbody}}</nowiki></code>
| {{coord|46|43|N|7|58|E|type:waterbody}}
|}
[[Category:WikiProject Geographical coordinates]]
7016fdfb370cc695e3f6ab439d3a71a4351a5cb8
Template:UF-coord-classes
10
1672
3100
3099
2023-11-09T18:01:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:UF-coord-classes]]
wikitext
text/x-wiki
To always display coordinates as DMS values, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: none }
.geo-dms { display: inline }
</syntaxhighlight>
To always display coordinates as decimal values, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: inline }
.geo-dms { display: none }
</syntaxhighlight>
To display coordinates in both formats, add this to [[Special:Mypage/common.css|your common.css]]:
<syntaxhighlight lang="css" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
.geo-default { display: inline }
.geo-nondefault { display: inline }
.geo-dec { display: inline }
.geo-dms { display: inline }
.geo-multi-punct { display: inline }
</syntaxhighlight>
If CSS is disabled, or you have an old copy of [[MediaWiki:Common.css]] cached, you will see both formats. (You can either clear your cache or manually refresh this URL: {{Plain link|url=https://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=2678400}}.)
To disable display of the blue globe adjacent to coordinates, add this to [[Special:Mypage/common.js|your common.js]]:
<syntaxhighlight lang="javascript" style="display:table; padding:0.5em; margin-left:1em; border-radius:2px">
var wma_settings = {enabled:false}
</syntaxhighlight>
Note that this will disable [[meta:WikiMiniAtlas|WikiMiniAtlas]].
See also: {{section link|Wikipedia:Manual of Style/Dates and numbers|Geographical coordinates}}.<noinclude>
[[Category:Coordinates templates]]
[[Category:Microformat (uF) message templates]]
[[Category:WikiProject Geographical coordinates|τ]]
</noinclude>
31012e4b57af9d700090a8426a0a905684be6518
Template:Tlm
10
1673
3102
3101
2023-11-09T18:01:25Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tlm]]
wikitext
text/x-wiki
{{#invoke:tlm|format_link}}<noinclude>{{documentation}}
4ad7a6ab500f2a6f21da459c329c828b24999af4
Module:Tlm
828
1674
3104
3103
2023-11-09T18:01:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Tlm]]
Scribunto
text/plain
local export = {}
local variables_nullary = {
["CURRENTYEAR"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTH"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented
["CURRENTMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented
["CURRENTMONTHNAME"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time";
["CURRENTMONTHABBREV"] = "mw:Help:Magic words#Date and time";
["CURRENTDAY"] = "mw:Help:Magic words#Date and time";
["CURRENTDAY2"] = "mw:Help:Magic words#Date and time";
["CURRENTDOW"] = "mw:Help:Magic words#Date and time";
["CURRENTDAYNAME"] = "mw:Help:Magic words#Date and time";
["CURRENTTIME"] = "mw:Help:Magic words#Date and time";
["CURRENTHOUR"] = "mw:Help:Magic words#Date and time";
["CURRENTWEEK"] = "mw:Help:Magic words#Date and time";
["CURRENTTIMESTAMP"] = "mw:Help:Magic words#Date and time";
["LOCALYEAR"] = "mw:Help:Magic words#Date and time";
["LOCALMONTH"] = "mw:Help:Magic words#Date and time";
["LOCALMONTH1"] = "mw:Help:Magic words#Date and time"; -- undocumented
["LOCALMONTH2"] = "mw:Help:Magic words#Date and time"; -- undocumented
["LOCALMONTHNAME"] = "mw:Help:Magic words#Date and time";
["LOCALMONTHNAMEGEN"] = "mw:Help:Magic words#Date and time";
["LOCALMONTHABBREV"] = "mw:Help:Magic words#Date and time";
["LOCALDAY"] = "mw:Help:Magic words#Date and time";
["LOCALDAY2"] = "mw:Help:Magic words#Date and time";
["LOCALDOW"] = "mw:Help:Magic words#Date and time";
["LOCALDAYNAME"] = "mw:Help:Magic words#Date and time";
["LOCALTIME"] = "mw:Help:Magic words#Date and time";
["LOCALHOUR"] = "mw:Help:Magic words#Date and time";
["LOCALWEEK"] = "mw:Help:Magic words#Date and time";
["LOCALTIMESTAMP"] = "mw:Help:Magic words#Date and time";
["SITENAME"] = "mw:Help:Magic words#Technical metadata";
["SERVER"] = "mw:Help:Magic words#Technical metadata";
["SERVERNAME"] = "mw:Help:Magic words#Technical metadata";
["DIRMARK"] = "mw:Help:Magic words#Technical metadata";
["DIRECTIONMARK"] = "mw:Help:Magic words#Technical metadata";
["ARTICLEPATH"] = "mw:Help:Magic words#Technical metadata"; -- undocumented
["SCRIPTPATH"] = "mw:Help:Magic words#Technical metadata";
["STYLEPATH"] = "mw:Help:Magic words#Technical metadata";
["CURRENTVERSION"] = "mw:Help:Magic words#Technical metadata";
["CONTENTLANGUAGE"] = "mw:Help:Magic words#Technical metadata";
["CONTENTLANG"] = "mw:Help:Magic words#Technical metadata";
["PAGEID"] = "mw:Help:Magic words#Technical metadata";
["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata";
["REVISIONID"] = "mw:Help:Magic words#Technical metadata";
["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata";
["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata";
["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata";
["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata";
["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata";
["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata";
["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata";
["REVISIONSIZE"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFPAGES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFARTICLES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFFILES"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFEDITS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFVIEWS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFUSERS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFADMINS"] = "mw:Help:Magic words#Technical metadata";
["NUMBEROFACTIVEUSERS"] = "mw:Help:Magic words#Technical metadata";
["FULLPAGENAME"] = "mw:Help:Magic words#Page names";
["PAGENAME"] = "mw:Help:Magic words#Page names";
["BASEPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names";
["TALKPAGENAME"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented
["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names";
["PAGENAMEE"] = "mw:Help:Magic words#Page names";
["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented
["NAMESPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces";
["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACEE"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACEE"] = "mw:Help:Magic words#Namespaces";
["!"] = "mw:Help:Magic words#Other";
["="] = "mw:Help:Magic words#Other";
-- case-insensitive!
["noexternallanglinks"] = "mw:Extension:Wikibase Client";
["wbreponame"] = "mw:Extension:Wikibase Client";
["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet
["numberofwikis"] = "mw:Extension:SiteMatrix";
}
local variables_nonnullary = {
["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata";
["DISPLAYTITLE"] = "mw:Help:Magic words#Technical metadata";
["DEFAULTSORT"] = "mw:Help:Magic words#Technical metadata";
["PAGESINCATEGORY"] = "mw:Help:Magic words#Technical metadata";
["PAGESINCAT"] = "mw:Help:Magic words#Technical metadata";
["NUMBERINGROUP"] = "mw:Help:Magic words#Technical metadata";
["PAGESINNS"] = "mw:Help:Magic words#Technical metadata";
["PAGESINNAMESPACE"] = "mw:Help:Magic words#Technical metadata";
["FULLPAGENAME"] = "mw:Help:Magic words#Page names";
["PAGENAME"] = "mw:Help:Magic words#Page names";
["BASEPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBPAGENAME"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAME"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAME"] = "mw:Help:Magic words#Page names";
["TALKPAGENAME"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAME"] = "mw:Help:Magic words#Page names"; -- undocumented
["FULLPAGENAMEE"] = "mw:Help:Magic words#Page names";
["PAGENAMEE"] = "mw:Help:Magic words#Page names";
["BASEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBPAGENAMEE"] = "mw:Help:Magic words#Page names";
["SUBJECTPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ARTICLEPAGENAMEE"] = "mw:Help:Magic words#Page names";
["TALKPAGENAMEE"] = "mw:Help:Magic words#Page names";
["ROOTPAGENAMEE"] = "mw:Help:Magic words#Page names"; -- undocumented
["NAMESPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACENUMBER"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACE"] = "mw:Help:Magic words#Namespaces";
["ARTICLESPACE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACE"] = "mw:Help:Magic words#Namespaces";
["NAMESPACEE"] = "mw:Help:Magic words#Namespaces";
["SUBJECTSPACEE"] = "mw:Help:Magic words#Namespaces";
["TALKSPACEE"] = "mw:Help:Magic words#Namespaces";
["PAGEID"] = "mw:Help:Magic words#Technical metadata of another page";
["PAGESIZE"] = "mw:Help:Magic words#Technical metadata of another page";
["PROTECTIONLEVEL"] = "mw:Help:Magic words#Technical metadata of another page";
["CASCADINGSOURCES"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONID"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONDAY"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONDAY2"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONMONTH"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONMONTH1"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONYEAR"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONTIMESTAMP"] = "mw:Help:Magic words#Technical metadata of another page";
["REVISIONUSER"] = "mw:Help:Magic words#Technical metadata of another page";
["SHORTDESC"] = "mw:Extension:Wikibase Client";
}
local parser_functions = {
-- built-ins
["localurl"] = "mw:Help:Magic words#URL data";
["localurle"] = "mw:Help:Magic words#URL data";
["fullurl"] = "mw:Help:Magic words#URL data";
["fullurle"] = "mw:Help:Magic words#URL data";
["canonicalurl"] = "mw:Help:Magic words#URL data";
["canonicalurle"] = "mw:Help:Magic words#URL data";
["filepath"] = "mw:Help:Magic words#URL data";
["urlencode"] = "mw:Help:Magic words#URL data";
["urldecode"] = "mw:Help:Magic words#URL data";
["anchorencode"] = "mw:Help:Magic words#URL data";
["ns"] = "mw:Help:Magic words#Namespaces";
["nse"] = "mw:Help:Magic words#Namespaces";
["formatnum"] = "mw:Help:Magic words#Formatting";
["#dateformat"] = "mw:Help:Magic words#Formatting";
["#formatdate"] = "mw:Help:Magic words#Formatting";
["lc"] = "mw:Help:Magic words#Formatting";
["lcfirst"] = "mw:Help:Magic words#Formatting";
["uc"] = "mw:Help:Magic words#Formatting";
["ucfirst"] = "mw:Help:Magic words#Formatting";
["padleft"] = "mw:Help:Magic words#Formatting";
["padright"] = "mw:Help:Magic words#Formatting";
["plural"] = "mw:Help:Magic words#Localization";
["grammar"] = "mw:Help:Magic words#Localization";
["gender"] = "mw:Help:Magic words#Localization";
["int"] = "mw:Help:Magic words#Localization";
["#language"] = "mw:Help:Magic words#Miscellaneous";
["#special"] = "mw:Help:Magic words#Miscellaneous";
["#speciale"] = "mw:Help:Magic words#Miscellaneous";
["#tag"] = "mw:Help:Magic words#Miscellaneous";
-- [[mw:Extension:ParserFunctions]]
["#expr"] = "mw:Help:Extension:ParserFunctions##expr";
["#if"] = "mw:Help:Extension:ParserFunctions##if";
["#ifeq"] = "mw:Help:Extension:ParserFunctions##ifeq";
["#iferror"] = "mw:Help:Extension:ParserFunctions##iferror";
["#ifexpr"] = "mw:Help:Extension:ParserFunctions##ifexpr";
["#ifexist"] = "mw:Help:Extension:ParserFunctions##ifexist";
["#rel2abs"] = "mw:Help:Extension:ParserFunctions##rel2abs";
["#switch"] = "mw:Help:Extension:ParserFunctions##switch";
["#time"] = "mw:Help:Extension:ParserFunctions##time";
["#timel"] = "mw:Help:Extension:ParserFunctions##timel";
["#titleparts"] = "mw:Help:Extension:ParserFunctions##titleparts";
-- other extensions
["#babel"] = "mw:Extension:Babel#Usage";
["#categorytree"] = "mw:Extension:CategoryTree#The {{#categorytree}} parser function";
["#commaseparatedlist"] = "mw:Extension:Wikibase Client";
["#coordinates"] = "mw:Extension:GeoData#Parser function";
["#invoke"] = "mw:Extension:Scribunto#Usage";
["#lst"] = "mw:Extension:Labeled Section Transclusion#How it works";
["#lsth"] = "mw:Extension:Labeled Section Transclusion#How it works"; -- not available, it seems
["#lstx"] = "mw:Extension:Labeled Section Transclusion#How it works";
["noexternallanglinks"] = "mw:Extension:Wikibase Client";
["noreplace"] = "mw:Extension:Wikibase Client";
["pendingchangelevel"] = "mw:Extension:FlaggedRevs"; -- not documented yet
["#property"] = "mw:Extension:Wikibase Client";
["#statements"] = "mw:Extension:Wikibase Client";
["#target"] = "mw:Extension:MassMessage"; -- not documented yet
}
-- rudimentary
local function is_valid_pagename(pagename)
if (pagename == "") or pagename:match("[%[%]%|%{%}#\127<>]") then
return false
end
return true
end
local function hook_special(page)
if is_valid_pagename(page) then
return "[[Special:" .. page .. "|" .. page .. "]]"
else
return page
end
end
local function hook_wdprop(name)
if mw.wikibase.resolvePropertyId(name) then
return ("[[:d:Special:EntityPage/%s|%s]]"):format(mw.wikibase.resolvePropertyId(name), name)
else
return name
end
end
local parser_function_hooks = {
["#special"] = hook_special;
["#speciale"] = hook_special;
["int"] = function (mesg)
if is_valid_pagename(mesg) then
return ("[[:MediaWiki:" .. mesg .. "|" .. mesg .. "]]")
else
return mesg
end
end;
["#categorytree"] = function (cat)
if is_valid_pagename(cat) and not (mw.title.getCurrentTitle().fullText == ("Category:" .. cat)) then
return ("[[:Category:" .. cat .. "|" .. cat .. "]]")
else
return cat
end
end;
["#invoke"] = function (mod)
if is_valid_pagename(mod) and not (mw.title.getCurrentTitle().fullText == ("Module:" .. mod)) then
return ("[[Module:%s|%s]]"):format(mod, mod)
else
return mod
end
end;
-- ["#tag"] = function (tag)
-- local doc_table = require('Module:wikitag link').doc_table
-- if doc_table[tag] then
-- return ("[[%s|%s]]"):format(doc_table[tag], tag)
-- else
-- return tag
-- end
-- end;
["#property"] = hook_wdprop;
["#statements"] = hook_wdprop;
}
function export.format_link(frame)
local args = frame:getParent().args
local output = { frame.args.nested and "{{" or "<code>{{" }
local templ = args[1]
local noargs = true
if not templ then
if mw.title.getCurrentTitle().fullText == frame:getParent():getTitle() then
-- demo mode
return "<code>{{<var>{{{1}}}</var>|<var>{{{2}}}</var>|...}}</code>"
else
error("The template name must be given.")
end
end
for key, value in pairs(args) do
if key ~= 1 then
noargs = false
break
end
end
local function render_title(templ)
local marker, rest
marker, rest = templ:match("^([Ss][Uu][Bb][Ss][Tt]):(.*)")
if not marker then
marker, rest = templ:match("^([Ss][Aa][Ff][Ee][Ss][Uu][Bb][Ss][Tt]):(.*)")
end
if marker then
templ = rest
table.insert(output, ("[[mw:Manual:Substitution|%s]]:"):format(marker))
end
if noargs and variables_nullary[templ] then
table.insert(output, ("[[%s|%s]]"):format(variables_nullary[templ], templ))
return
end
marker, rest = templ:match("^([Mm][Ss][Gg][Nn][Ww]):(.*)")
if marker then
templ = rest
-- not the most accurate documentation ever
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker))
else
marker, rest = templ:match("^([Mm][Ss][Gg]):(.*)")
if marker then
templ = rest
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- ditto
end
end
marker, rest = templ:match("^([Rr][Aa][Ww]):(.*)")
if marker then
table.insert(output, ("[[m:Help:Magic words#Template modifiers|%s]]:"):format(marker)) -- missingno.
templ = rest
end
if templ:match("^%s*/") then
table.insert(output, ("[[%s]]"):format(templ))
return
end
marker, rest = templ:match("^(.-):(.*)")
if marker then
local lcmarker = marker:lower()
if parser_functions[lcmarker] then
if parser_function_hooks[lcmarker] then
rest = parser_function_hooks[lcmarker](rest)
end
table.insert(output, ("[[%s|%s]]:%s"):format(mw.uri.encode(parser_functions[lcmarker], "WIKI"), marker, rest))
return
elseif variables_nonnullary[marker] then
table.insert(output, ("[[%s|%s]]:%s"):format(variables_nonnullary[marker], marker, rest))
return
end
end
if templ:match("[%[%]%|%{%}#\127<>]") then
table.insert(output, templ)
return
end
if marker then
if mw.site.namespaces[marker] then
if (title == "") or (mw.title.getCurrentTitle().fullText == templ) then
table.insert(output, templ)
else
table.insert(output, ("[[:%s|%s]]"):format(templ, templ))
end
return
elseif mw.site.interwikiMap()[marker:lower()] then
-- XXX: not sure what to do now…
table.insert(output, ("[[:%s:|%s]]:%s"):format(marker, marker, rest))
return
end
end
if (templ == "") or (mw.title.getCurrentTitle().fullText == ("Template:" .. templ)) then
table.insert(output, templ)
else
table.insert(output, ("[[Template:%s|%s]]"):format(templ, templ))
end
end
render_title(templ)
local i = 2
while args[i] do
table.insert(output, "|" .. args[i])
i = i + 1
end
for key, value in pairs(args) do
if type(key) == "string" then
table.insert(output, "|" .. key .. "=" .. value)
end
end
table.insert(output, frame.args.nested and "}}" or "}}</code>")
return table.concat(output)
end
return export
526fb2fa1758bae142ff0b2b0cea935a7bf1d07f
Template:Transwiki guide candidate
10
1675
3106
3105
2023-11-09T18:01:27Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Transwiki_guide_candidate]]
wikitext
text/x-wiki
<includeonly>{{ombox
|style=border:#38C400 1px solid;
|image=[[File:Edit-copy purple-wikit.svg|48px|alt=|link=]]
|text=This is a candidate to have a [[Help:Transwiki guide|transwiki guide]]. Due to the complexity of the project or template, this guide will help editors adapt it to a remote wiki when this cannot be done by simply copying the codes of one single template. If you know this template syntax very well, feel free to start the guide in {{#if:{{{1|}}}|[[{{{1}}}]]|[[{{FULLPAGENAME}}/Transwiki guide]]}}. Once the transwiki guide page is complete, replace this tag by {{tl|Transwiki guide}}.
}}[[Category:Transwiki guide candidate|{{{2|{{PAGENAME}}}}}]]</includeonly><noinclude>
{{doc|content=
{{Transwiki guide candidate||*}}
Adding this tag to the page will automatically include it in [[:Category:Transwiki guide candidate]]. If the template has a document page, you should add it inside the <code><nowiki><includeonly></nowiki></code> tag in the document. Parameter {{{1}}} provides the option to change the page name of the transwiki guide if desired, <nowiki>[[{{FULLPAGENAME}}/Transwiki guide]]</nowiki> by default. Parameter {{{2}}} is for changing the category sorting, <nowiki>{{PAGENAME}}</nowiki> by default.
}}
f23b4f6bbbd56c5c856fbb1bcead70c17a389838
Template:Coord/longitude
10
1676
3108
3107
2023-11-09T18:02:23Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord/longitude]]
wikitext
text/x-wiki
{{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|long}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:Coordinates templates]]
[[Category:Wikidata templates]]
}}
</noinclude>
620a82b0a398fde71313e56c3ace7b5f84699cbd
Template:Improve documentation
10
1677
3110
3109
2023-11-09T18:02:29Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Improve_documentation]]
wikitext
text/x-wiki
{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B={{Ombox
| type = content
| name = Improve documentation
| class = ambox-Refimprove
| image = [[File:Edit-copy green with red question mark.svg|50x40px|link=|alt=Edit-copy green with red question mark]]
| text = This {{#switch:{{NAMESPACE}}|Module=module|#default=template}}'s [[Wikipedia:Template documentation|documentation]] is '''missing, inadequate, or does not accurately describe its functionality and/or the [[Help:Template#Parameters|parameters]] in its code.''' Please help [{{fullurl:{{FULLPAGENAME}}{{#ifexist:{{FULLPAGENAME}}/doc|/doc}}|action=edit}} to expand and improve it]. {{#if:{{{talk|{{{1|}}}}}} |See [[{{TALKPAGENAME}}|talk page]] for details.|}} {{#if:{{{date|{{{2|}}}}}} |{{smaller|''({{{date}}})''}}}}
}}<includeonly>{{Subpage other||{{Dated maintenance category|||Templates with missing or incorrect documentation}}}}</includeonly>}}<noinclude>
{{Documentation}}
</noinclude>
f5ee14f86927e9f4417e5b2feb60ce1f765cd49f
Template:No documentation
10
1678
3112
3111
2023-11-09T18:02:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:No_documentation]]
wikitext
text/x-wiki
#REDIRECT [[Template:Improve documentation]]
e143e50c85e46c0394365f74e3688aa439b542fe
Module:Coordinates
828
589
3113
1327
2023-11-09T18:05:04Z
Führerredux
2
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
1592702a4af73583ab80e9e6dba72ae9163d06f5
3114
3113
2023-11-09T18:05:49Z
Führerredux
2
Scribunto
text/plain
--[[
This module is intended to replace the functionality of {{Coord}} and related
templates. It provides several methods, including
{{#invoke:Coordinates | coord }} : General function formatting and displaying
coordinate values.
{{#invoke:Coordinates | dec2dms }} : Simple function for converting decimal
degree values to DMS format.
{{#invoke:Coordinates | dms2dec }} : Simple function for converting DMS format
to decimal degree format.
{{#invoke:Coordinates | link }} : Export the link used to reach the tools
]]
require('strict')
local math_mod = require("Module:Math")
local coordinates = {};
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true);
local current_page = mw.title.getCurrentTitle()
local page_name = mw.uri.encode( current_page.prefixedText, 'WIKI' );
local coord_link = 'https://geohack.toolforge.org/geohack.php?pagename=' .. page_name .. '¶ms='
--[[ Helper function, replacement for {{coord/display/title}} ]]
local function displaytitle(coords)
return mw.getCurrentFrame():extensionTag{
name = 'indicator',
args = { name = 'coordinates' },
content = '<span id="coordinates">Coordinates: ' .. coords .. '</span>'
}
end
--[[ Helper function, used in detecting DMS formatting ]]
local function dmsTest(first, second)
if type(first) ~= 'string' or type(second) ~= 'string' then
return nil
end
local s = (first .. second):upper()
return s:find('^[NS][EW]$') or s:find('^[EW][NS]$')
end
--[[ Wrapper function to grab args, see Module:Arguments for this function's documentation. ]]
local function makeInvokeFunc(funcName)
return function (frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Coord'
})
return coordinates[funcName](args, frame)
end
end
--[[ Helper function, handle optional args. ]]
local function optionalArg(arg, supplement)
return arg and arg .. supplement or ''
end
--[[
Formats any error messages generated for display
]]
local function errorPrinter(errors)
local result = ""
for i,v in ipairs(errors) do
result = result .. '<strong class="error">Coordinates: ' .. v[2] .. '</strong><br />'
end
return result
end
--[[
Determine the required CSS class to display coordinates
Usually geo-nondefault is hidden by CSS, unless a user has overridden this for himself
default is the mode as specificied by the user when calling the {{coord}} template
mode is the display mode (dec or dms) that we will need to determine the css class for
]]
local function displayDefault(default, mode)
if default == "" then
default = "dec"
end
if default == mode then
return "geo-default"
else
return "geo-nondefault"
end
end
--[[
specPrinter
Output formatter. Takes the structure generated by either parseDec
or parseDMS and formats it for inclusion on Wikipedia.
]]
local function specPrinter(args, coordinateSpec)
local uriComponents = coordinateSpec["param"]
if uriComponents == "" then
-- RETURN error, should never be empty or nil
return "ERROR param was empty"
end
if args["name"] then
uriComponents = uriComponents .. "&title=" .. mw.uri.encode(coordinateSpec["name"])
end
local geodmshtml = '<span class="geo-dms" title="Maps, aerial photos, and other data for this location">'
.. '<span class="latitude">' .. coordinateSpec["dms-lat"] .. '</span> '
.. '<span class="longitude">' ..coordinateSpec["dms-long"] .. '</span>'
.. '</span>'
local lat = tonumber( coordinateSpec["dec-lat"] ) or 0
local geodeclat
if lat < 0 then
-- FIXME this breaks the pre-existing precision
geodeclat = tostring(coordinateSpec["dec-lat"]):sub(2) .. "°S"
else
geodeclat = (coordinateSpec["dec-lat"] or 0) .. "°N"
end
local long = tonumber( coordinateSpec["dec-long"] ) or 0
local geodeclong
if long < 0 then
-- FIXME does not handle unicode minus
geodeclong = tostring(coordinateSpec["dec-long"]):sub(2) .. "°W"
else
geodeclong = (coordinateSpec["dec-long"] or 0) .. "°E"
end
local geodechtml = '<span class="geo-dec" title="Maps, aerial photos, and other data for this location">'
.. geodeclat .. ' '
.. geodeclong
.. '</span>'
local geonumhtml = '<span class="geo">'
.. coordinateSpec["dec-lat"] .. '; '
.. coordinateSpec["dec-long"]
.. '</span>'
local inner = '<span class="' .. displayDefault(coordinateSpec["default"], "dms" ) .. '">' .. geodmshtml .. '</span>'
.. '<span class="geo-multi-punct"> / </span>'
.. '<span class="' .. displayDefault(coordinateSpec["default"], "dec" ) .. '">';
if not args["name"] then
inner = inner .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span></span>'
else
inner = inner .. '<span class="vcard">' .. geodechtml
.. '<span style="display:none"> / ' .. geonumhtml .. '</span>'
.. '<span style="display:none"> (<span class="fn org">'
.. args["name"] .. '</span>)</span></span></span>'
end
local stylesheetLink = 'Module:Coordinates' .. ( isSandbox and '/sandbox' or '' ) .. '/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = stylesheetLink }
} .. '<span class="plainlinks nourlexpansion">[' .. coord_link .. uriComponents ..
' ' .. inner .. ']</span>'
end
--[[ Helper function, convert decimal to degrees ]]
local function convert_dec2dms_d(coordinate)
local d = math_mod._round( coordinate, 0 ) .. "°"
return d .. ""
end
--[[ Helper function, convert decimal to degrees and minutes ]]
local function convert_dec2dms_dm(coordinate)
coordinate = math_mod._round( coordinate * 60, 0 );
local m = coordinate % 60;
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m )
end
--[[ Helper function, convert decimal to degrees, minutes, and seconds ]]
local function convert_dec2dms_dms(coordinate)
coordinate = math_mod._round( coordinate * 60 * 60, 0 );
local s = coordinate % 60
coordinate = math.floor( (coordinate - s) / 60 );
local m = coordinate % 60
coordinate = math.floor( (coordinate - m) / 60 );
local d = coordinate % 360 .."°"
return d .. string.format( "%02d′", m ) .. string.format( "%02d″", s )
end
--[[
Helper function, convert decimal latitude or longitude to
degrees, minutes, and seconds format based on the specified precision.
]]
local function convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
local coord = tonumber(coordinate)
local postfix
if coord >= 0 then
postfix = firstPostfix
else
postfix = secondPostfix
end
precision = precision:lower();
if precision == "dms" then
return convert_dec2dms_dms( math.abs( coord ) ) .. postfix;
elseif precision == "dm" then
return convert_dec2dms_dm( math.abs( coord ) ) .. postfix;
elseif precision == "d" then
return convert_dec2dms_d( math.abs( coord ) ) .. postfix;
end
end
--[[
Convert DMS format into a N or E decimal coordinate
]]
local function convert_dms2dec(direction, degrees_str, minutes_str, seconds_str)
local degrees = tonumber(degrees_str)
local minutes = tonumber(minutes_str) or 0
local seconds = tonumber(seconds_str) or 0
local factor = 1
if direction == "S" or direction == "W" then
factor = -1
end
local precision = 0
if seconds_str then
precision = 5 + math.max( math_mod._precision(seconds_str), 0 );
elseif minutes_str and minutes_str ~= '' then
precision = 3 + math.max( math_mod._precision(minutes_str), 0 );
else
precision = math.max( math_mod._precision(degrees_str), 0 );
end
local decimal = factor * (degrees+(minutes+seconds/60)/60)
return string.format( "%." .. precision .. "f", decimal ) -- not tonumber since this whole thing is string based.
end
--[[
Checks input values to for out of range errors.
]]
local function validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, source, strong )
local errors = {};
lat_d = tonumber( lat_d ) or 0;
lat_m = tonumber( lat_m ) or 0;
lat_s = tonumber( lat_s ) or 0;
long_d = tonumber( long_d ) or 0;
long_m = tonumber( long_m ) or 0;
long_s = tonumber( long_s ) or 0;
if strong then
if lat_d < 0 then
table.insert(errors, {source, "latitude degrees < 0 with hemisphere flag"})
end
if long_d < 0 then
table.insert(errors, {source, "longitude degrees < 0 with hemisphere flag"})
end
--[[
#coordinates is inconsistent about whether this is an error. If globe: is
specified, it won't error on this condition, but otherwise it will.
For not simply disable this check.
if long_d > 180 then
table.insert(errors, {source, "longitude degrees > 180 with hemisphere flag"})
end
]]
end
if lat_d > 90 then
table.insert(errors, {source, "latitude degrees > 90"})
end
if lat_d < -90 then
table.insert(errors, {source, "latitude degrees < -90"})
end
if lat_m >= 60 then
table.insert(errors, {source, "latitude minutes >= 60"})
end
if lat_m < 0 then
table.insert(errors, {source, "latitude minutes < 0"})
end
if lat_s >= 60 then
table.insert(errors, {source, "latitude seconds >= 60"})
end
if lat_s < 0 then
table.insert(errors, {source, "latitude seconds < 0"})
end
if long_d >= 360 then
table.insert(errors, {source, "longitude degrees >= 360"})
end
if long_d <= -360 then
table.insert(errors, {source, "longitude degrees <= -360"})
end
if long_m >= 60 then
table.insert(errors, {source, "longitude minutes >= 60"})
end
if long_m < 0 then
table.insert(errors, {source, "longitude minutes < 0"})
end
if long_s >= 60 then
table.insert(errors, {source, "longitude seconds >= 60"})
end
if long_s < 0 then
table.insert(errors, {source, "longitude seconds < 0"})
end
return errors;
end
--[[
parseDec
Transforms decimal format latitude and longitude into the
structure to be used in displaying coordinates
]]
local function parseDec( lat, long, format )
local coordinateSpec = {}
local errors = {}
if not long then
return nil, {{"parseDec", "Missing longitude"}}
elseif not tonumber(long) then
return nil, {{"parseDec", "Longitude could not be parsed as a number: " .. long}}
end
errors = validate( lat, nil, nil, long, nil, nil, 'parseDec', false );
coordinateSpec["dec-lat"] = lat;
coordinateSpec["dec-long"] = long;
local mode = coordinates.determineMode( lat, long );
coordinateSpec["dms-lat"] = convert_dec2dms( lat, "N", "S", mode) -- {{coord/dec2dms|{{{1}}}|N|S|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
coordinateSpec["dms-long"] = convert_dec2dms( long, "E", "W", mode) -- {{coord/dec2dms|{{{2}}}|E|W|{{coord/prec dec|{{{1}}}|{{{2}}}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dec"
end
return coordinateSpec, errors
end
--[[
parseDMS
Transforms degrees, minutes, seconds format latitude and longitude
into the a structure to be used in displaying coordinates
]]
local function parseDMS( lat_d, lat_m, lat_s, lat_f, long_d, long_m, long_s, long_f, format )
local coordinateSpec, errors, backward = {}, {}
lat_f = lat_f:upper();
long_f = long_f:upper();
-- Check if specified backward
if lat_f == 'E' or lat_f == 'W' then
lat_d, long_d, lat_m, long_m, lat_s, long_s, lat_f, long_f, backward = long_d, lat_d, long_m, lat_m, long_s, lat_s, long_f, lat_f, true;
end
errors = validate( lat_d, lat_m, lat_s, long_d, long_m, long_s, 'parseDMS', true );
if not long_d then
return nil, {{"parseDMS", "Missing longitude" }}
elseif not tonumber(long_d) then
return nil, {{"parseDMS", "Longitude could not be parsed as a number:" .. long_d }}
end
if not lat_m and not lat_s and not long_m and not long_s and #errors == 0 then
if math_mod._precision( lat_d ) > 0 or math_mod._precision( long_d ) > 0 then
if lat_f:upper() == 'S' then
lat_d = '-' .. lat_d;
end
if long_f:upper() == 'W' then
long_d = '-' .. long_d;
end
return parseDec( lat_d, long_d, format );
end
end
coordinateSpec["dms-lat"] = lat_d.."°"..optionalArg(lat_m,"′") .. optionalArg(lat_s,"″") .. lat_f
coordinateSpec["dms-long"] = long_d.."°"..optionalArg(long_m,"′") .. optionalArg(long_s,"″") .. long_f
coordinateSpec["dec-lat"] = convert_dms2dec(lat_f, lat_d, lat_m, lat_s) -- {{coord/dms2dec|{{{4}}}|{{{1}}}|0{{{2}}}|0{{{3}}}}}
coordinateSpec["dec-long"] = convert_dms2dec(long_f, long_d, long_m, long_s) -- {{coord/dms2dec|{{{8}}}|{{{5}}}|0{{{6}}}|0{{{7}}}}}
if format then
coordinateSpec.default = format
else
coordinateSpec.default = "dms"
end
return coordinateSpec, errors, backward
end
--[[
Check the input arguments for coord to determine the kind of data being provided
and then make the necessary processing.
]]
local function formatTest(args)
local result, errors
local backward, primary = false, false
local function getParam(args, lim)
local ret = {}
for i = 1, lim do
ret[i] = args[i] or ''
end
return table.concat(ret, '_')
end
if not args[1] then
-- no lat logic
return errorPrinter( {{"formatTest", "Missing latitude"}} )
elseif not tonumber(args[1]) then
-- bad lat logic
return errorPrinter( {{"formatTest", "Unable to parse latitude as a number:" .. args[1]}} )
elseif not args[4] and not args[5] and not args[6] then
-- dec logic
result, errors = parseDec(args[1], args[2], args.format)
if not result then
return errorPrinter(errors);
end
-- formatting for geohack: geohack expects D_N_D_E notation or D;D notation
-- wikiminiatlas doesn't support D;D notation
-- #coordinates parserfunction doesn't support negative decimals with NSWE
result.param = table.concat({
math.abs(tonumber(args[1])),
((tonumber(args[1]) or 0) < 0) and 'S' or 'N',
math.abs(tonumber(args[2])),
((tonumber(args[2]) or 0) < 0) and 'W' or 'E',
args[3] or ''}, '_')
elseif dmsTest(args[4], args[8]) then
-- dms logic
result, errors, backward = parseDMS(args[1], args[2], args[3], args[4],
args[5], args[6], args[7], args[8], args.format)
if args[10] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 9)
elseif dmsTest(args[3], args[6]) then
-- dm logic
result, errors, backward = parseDMS(args[1], args[2], nil, args[3],
args[4], args[5], nil, args[6], args['format'])
if args[8] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 7)
elseif dmsTest(args[2], args[4]) then
-- d logic
result, errors, backward = parseDMS(args[1], nil, nil, args[2],
args[3], nil, nil, args[4], args.format)
if args[6] then
table.insert(errors, {'formatTest', 'Extra unexpected parameters'})
end
if not result then
return errorPrinter(errors)
end
result.param = getParam(args, 5)
else
-- Error
return errorPrinter({{"formatTest", "Unknown argument format"}}) .. '[[Category:Pages with malformed coordinate tags]]'
end
result.name = args.name
local extra_param = {'dim', 'globe', 'scale', 'region', 'source', 'type'}
for _, v in ipairs(extra_param) do
if args[v] then
table.insert(errors, {'formatTest', 'Parameter: "' .. v .. '=" should be "' .. v .. ':"' })
end
end
local ret = specPrinter(args, result)
if #errors > 0 then
ret = ret .. ' ' .. errorPrinter(errors) .. '[[Category:Pages with malformed coordinate tags]]'
end
return ret, backward
end
--[[
Generate Wikidata tracking categories.
]]
local function makeWikidataCategories(qid)
local ret
local qid = qid or mw.wikibase.getEntityIdForCurrentPage()
if mw.wikibase and current_page.namespace == 0 then
if qid and mw.wikibase.entityExists(qid) and mw.wikibase.getBestStatements(qid, "P625") and mw.wikibase.getBestStatements(qid, "P625")[1] then
local snaktype = mw.wikibase.getBestStatements(qid, "P625")[1].mainsnak.snaktype
if snaktype == 'value' then
-- coordinates exist both here and on Wikidata, and can be compared.
ret = 'Coordinates on Wikidata'
elseif snaktype == 'somevalue' then
ret = 'Coordinates on Wikidata set to unknown value'
elseif snaktype == 'novalue' then
ret = 'Coordinates on Wikidata set to no value'
end
else
-- We have to either import the coordinates to Wikidata or remove them here.
ret = 'Coordinates not on Wikidata'
end
end
if ret then
return string.format('[[Category:%s]]', ret)
else
return ''
end
end
--[[
link
Simple function to export the coordinates link for other uses.
Usage:
{{#invoke:Coordinates | link }}
]]
function coordinates.link(frame)
return coord_link;
end
--[[
dec2dms
Wrapper to allow templates to call dec2dms directly.
Usage:
{{#invoke:Coordinates | dec2dms | decimal_coordinate | positive_suffix |
negative_suffix | precision }}
decimal_coordinate is converted to DMS format. If positive, the positive_suffix
is appended (typical N or E), if negative, the negative suffix is appended. The
specified precision is one of 'D', 'DM', or 'DMS' to specify the level of detail
to use.
]]
coordinates.dec2dms = makeInvokeFunc('_dec2dms')
function coordinates._dec2dms(args)
local coordinate = args[1]
local firstPostfix = args[2] or ''
local secondPostfix = args[3] or ''
local precision = args[4] or ''
return convert_dec2dms(coordinate, firstPostfix, secondPostfix, precision)
end
--[[
Helper function to determine whether to use D, DM, or DMS
format depending on the precision of the decimal input.
]]
function coordinates.determineMode( value1, value2 )
local precision = math.max( math_mod._precision( value1 ), math_mod._precision( value2 ) );
if precision <= 0 then
return 'd'
elseif precision <= 2 then
return 'dm';
else
return 'dms';
end
end
--[[
dms2dec
Wrapper to allow templates to call dms2dec directly.
Usage:
{{#invoke:Coordinates | dms2dec | direction_flag | degrees |
minutes | seconds }}
Converts DMS values specified as degrees, minutes, seconds too decimal format.
direction_flag is one of N, S, E, W, and determines whether the output is
positive (i.e. N and E) or negative (i.e. S and W).
]]
coordinates.dms2dec = makeInvokeFunc('_dms2dec')
function coordinates._dms2dec(args)
local direction = args[1]
local degrees = args[2]
local minutes = args[3]
local seconds = args[4]
return convert_dms2dec(direction, degrees, minutes, seconds)
end
--[[
coord
Main entry point for Lua function to replace {{coord}}
Usage:
{{#invoke:Coordinates | coord }}
{{#invoke:Coordinates | coord | lat | long }}
{{#invoke:Coordinates | coord | lat | lat_flag | long | long_flag }}
...
Refer to {{coord}} documentation page for many additional parameters and
configuration options.
Note: This function provides the visual display elements of {{coord}}. In
order to load coordinates into the database, the {{#coordinates:}} parser
function must also be called, this is done automatically in the Lua
version of {{coord}}.
]]
coordinates.coord = makeInvokeFunc('_coord')
function coordinates._coord(args)
if not tonumber(args[1]) and not args[2] then
args[3] = args[1]; args[1] = nil
local entity = mw.wikibase.getEntityObject(args.qid)
if entity
and entity.claims
and entity.claims.P625
and entity.claims.P625[1].mainsnak.snaktype == 'value'
then
local precision = entity.claims.P625[1].mainsnak.datavalue.value.precision
args[1] = entity.claims.P625[1].mainsnak.datavalue.value.latitude
args[2] = entity.claims.P625[1].mainsnak.datavalue.value.longitude
if precision then
precision = -math_mod._round(math.log(precision)/math.log(10),0)
args[1] = math_mod._round(args[1],precision)
args[2] = math_mod._round(args[2],precision)
end
end
end
local contents, backward = formatTest(args)
local Notes = args.notes or ''
local Display = args.display and args.display:lower() or 'inline'
-- it and ti are short for inline,title and title,inline
local function isInline(s)
-- Finds whether coordinates are displayed inline.
return s:find('inline') ~= nil or s == 'i' or s == 'it' or s == 'ti'
end
local function isInTitle(s)
-- Finds whether coordinates are displayed in the title.
return s:find('title') ~= nil or s == 't' or s == 'it' or s == 'ti'
end
local function coord_wrapper(in_args)
-- Calls the parser function {{#coordinates:}}.
return mw.getCurrentFrame():callParserFunction('#coordinates', in_args) or ''
end
local text = ''
if isInline(Display) then
text = text .. '<span class="geo-inline">' .. contents .. Notes .. '</span>'
end
if isInTitle(Display) then
-- Add to output since indicator content is invisible to Lua later on
if not isInline(Display) then
text = text .. '<span class="geo-inline-hidden noexcerpt">' .. contents .. Notes .. '</span>'
end
text = text .. displaytitle(contents .. Notes) .. makeWikidataCategories(args.qid)
end
if not args.nosave then
local page_title, count = mw.title.getCurrentTitle(), 1
if backward then
local tmp = {}
while not string.find((args[count-1] or ''), '[EW]') do tmp[count] = (args[count] or ''); count = count+1 end
tmp.count = count; count = 2*(count-1)
while count >= tmp.count do table.insert(tmp, 1, (args[count] or '')); count = count-1 end
for i, v in ipairs(tmp) do args[i] = v end
else
while count <= 9 do args[count] = (args[count] or ''); count = count+1 end
end
if isInTitle(Display) and not page_title.isTalkPage and page_title.subpageText ~= 'doc' and page_title.subpageText ~= 'testcases' then args[10] = 'primary' end
args.notes, args.format, args.display = nil
text = text .. coord_wrapper(args)
end
return text
end
--[[
coord2text
Extracts a single value from a transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coord2text | {{Coord}} | parameter }}
Valid values for the second parameter are: lat (signed integer), long (signed integer), type, scale, dim, region, globe, source
]]
function coordinates._coord2text(coord,type)
if coord == '' or type == '' or not type then return nil end
type = mw.text.trim(type)
if type == 'lat' or type == 'long' then
local result, negative = mw.text.split((mw.ustring.match(coord,'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if type == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(coord, 'params=.-_' .. type .. ':(.-)[ _]')
end
end
function coordinates.coord2text(frame)
return coordinates._coord2text(frame.args[1],frame.args[2])
end
--[[
coordinsert
Injects some text into the Geohack link of a transclusion of {{Coord}} (if that text isn't already in the transclusion). Outputs the modified transclusion of {{Coord}}.
IF THE GEOHACK LINK SYNTAX CHANGES THIS FUNCTION MUST BE MODIFIED.
Usage:
{{#invoke:Coordinates | coordinsert | {{Coord}} | parameter:value | parameter:value | … }}
Do not make Geohack unhappy by inserting something which isn't mentioned in the {{Coord}} documentation.
]]
function coordinates.coordinsert(frame)
-- for the 2nd or later integer parameter (the first is the coord template, as above)
for i, v in ipairs(frame.args) do
if i ~= 1 then
-- if we cannot find in the coord_template the i_th coordinsert parameter e.g. region
if not mw.ustring.find(frame.args[1], (mw.ustring.match(frame.args[i], '^(.-:)') or '')) then
-- find from the params= up to the first possibly-present underscore
-- and append the i_th coordinsert parameter and a space
-- IDK why we're adding a space but it does seem somewhat convenient
frame.args[1] = mw.ustring.gsub(frame.args[1], '(params=.-)_? ', '%1_'..frame.args[i]..' ')
end
end
end
if frame.args.name then
-- if we can't find the vcard class
if not mw.ustring.find(frame.args[1], '<span class="vcard">') then
-- take something that looks like a coord template and add the vcard span with class and fn org class
local namestr = frame.args.name
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-default">)(<span[^<>]*>[^<>]*</span><span[^<>]*>[^<>]*<span[^<>]*>[^<>]*</span></span>)(</span>)',
'%1<span class="vcard">%2<span style="display:none"> (<span class="fn org">' .. namestr .. '</span>)</span></span>%3'
)
-- then find anything from coordinates parameters to the 'end' and attach the title parameter
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(¶ms=[^&"<>%[%] ]*) ',
'%1&title=' .. mw.uri.encode(namestr) .. ' '
)
end
end
-- replace the existing indicator with a new indicator using the modified content
frame.args[1] = mw.ustring.gsub(
frame.args[1],
'(<span class="geo%-inline[^"]*">(.+)</span>)\127[^\127]*UNIQ%-%-indicator%-%x+%-%-?QINU[^\127]*\127',
function (inline, coord) return inline .. displaytitle(coord) end
)
return frame.args[1]
end
return coordinates
7537667347a7cb2dff4b1094247d64e7b112a9fb
Template:Coord/latitude
10
1679
3116
3115
2023-11-09T18:05:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord/latitude]]
wikitext
text/x-wiki
{{#invoke:coordinates|coord2text|{{{1|{{Coord}}}}}|lat}}<noinclude>
{{documentation
|content=
{{no documentation}}
[[Category:Coordinates templates]]
[[Category:Wikidata templates]]
}}
</noinclude>
bf7d2fa824206215be0980b599e5f89862c58995
Containment War Against Wickedonezz
0
1640
3117
3006
2023-11-09T18:06:25Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community Conflicts against Wickedonezz]]
| map_type = USA_Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}}
| map_size = 300
| map_marksize = 7
}}
7b5c070c9f313fe59a212bb34a1d88cb985b5b53
3128
3117
2023-11-09T18:17:53Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}}
| map_size = 300
| map_marksize = 7
}}
d3b2e7e2bfe45dee5b636709088c85736aa562cc
3151
3128
2023-11-09T20:14:46Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W|type:event|display=inline,title}}
| map_size = 300
| map_marksize = 7
}}
394222b29e14152c1a9faa17e7fac761a595a238
3154
3151
2023-11-09T20:28:46Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W}}
| map_size = 300
| map_marksize = 7
| date = 8, November 2023
| territory = The Modder's Coalition gains control of the rest of the world.
| result = Modder's Coalition Victory
| combatant1 = The Modder's Coalition{{bulletedlist|Führerredux Team|Red Dusk Team|Judgement Day Team}}
}}
5250914723f9f3fe644db15831907b05604224a6
3165
3154
2023-11-09T21:10:17Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W}}
| map_size = 300
| map_marksize = 7
| date = 8, November 2023
| territory = The Modder's Coalition gains control of the rest of the world.
| result = Modder's Coalition Victory
| combatant1 = The Modder's Coalition{{bulletedlist
| Führerredux Team
| Red Dusk Team
| Judgement Day Team
| Other Associates
}}
| combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames)
| commander1 = <strong>Führerredux team</strong>{{bulletedlist
| Dax
| Thanasis Lanaras
| The Detailed Bread
| Pascal
| Denis_MD
}}
<strong>Red Dusk team</strong>{{bulletedlist
| comrade doggo
| DUKESLAYER
| sifi-gayming
| The Masked Hungarian
}}
<strong>Judgement Day team</strong>{{bulletedlist
| Copernicus
| GrievingOhio150
| GDestruction
| Pascal
}}
| commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist
| Wickedonezz {{KIA}}
| KillerKemzstar
| Bookthecook
| Lucien
}}
<strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}}
| casualties2 = Wickedonnezz {{KIA}}
KillerKemzstar {{POW}}
Lucien {{POW}}
}}
dec913c2b49a45ecefe8d0088a05a92a8b1088a2
3166
3165
2023-11-09T21:12:55Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W}}
| map_size = 300
| map_marksize = 7
| date = 8, November 2023
| territory = The Modder's Coalition gains control of the rest of the world.
| result = Modder's Coalition Victory
| combatant1 = The Modder's Coalition{{bulletedlist
| Führerredux Team
| Red Dusk Team
| Judgement Day Team
| Other Associates
}}
| combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames)
| commander1 = <strong>Führerredux team</strong>{{bulletedlist
| Dax
| Thanasis Lanaras
| The Detailed Bread
| Pascal
| Denis_MD
}}
<strong>Red Dusk team</strong>{{bulletedlist
| comrade doggo
| DUKESLAYER
| sifi-gayming
| The Masked Hungarian
}}
<strong>Judgement Day team</strong>{{bulletedlist
| Copernicus
| GrievingOhio150
| GDestruction
| Pascal
}}
<strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist
| Wickedonezz {{KIA}}
| KillerKemzstar
| Bookthecook
| Lucien
}}
<strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}}
| casualties2 = Wickedonnezz {{KIA}}
KillerKemzstar {{POW}}
Lucien {{POW}}
}}
5e0e1ee5129325cf76738f611b2f7a942b63d6f5
Template:Coord/wikidata
10
1680
3119
3118
2023-11-09T18:07:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Coord/wikidata]]
wikitext
text/x-wiki
<includeonly>{{#invoke:coordinates|coord|3={{{1|}}}|format={{{format|}}}|display={{{display|}}}}}</includeonly><noinclude>
{{documentation|content=
This is a temporary fork of [[Template:coord]] for demonstrating the ability to parse coordinates from wikidata.
}}</noinclude>
e4b606dc74efb921276bc7f6eed1ed8a23329387
Module:Location map/data/USA
828
1681
3121
3120
2023-11-09T18:16:53Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/USA]]
Scribunto
text/plain
return {
name = 'the United States',
x = '50.0 + 124.03149777329222 * ((1.9694462586094064-($1 * pi / 180)) * sin(0.6010514667026994 * ($2 + 96) * pi / 180))',
y = '50.0 + 1.6155950752393982 * 124.03149777329222 * ( 0.02613325650382181 - (1.3236744353715044 - (1.9694462586094064 - ($1 * pi / 180)) * cos(0.6010514667026994 * ($2 + 96) * pi / 180)))',
image = 'Usa edcp location map.svg',
image1 = 'Usa edcp relief location map.png'
}
d2c98c333c13b7dc164dbaccae5a3365c15aa096
Module:Location map/data/North America
828
1682
3123
3122
2023-11-09T18:17:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/North_America]]
Scribunto
text/plain
return {
name = 'North America',
x = '(69.398)*( cos( $1*0.01745329252 )*sin( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5) - (-50.0)',
y = '(100 + (-50.0) ) - (68.9773)*( cos( 47.5*0.01745329252 )*sin( $1*0.01745329252 ) - sin( 47.5*0.01745329252 )*cos( $1*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) * ( ((1 + sin( $1*0.01745329252 )*sin( 47.5*0.01745329252 ) + cos( $1*0.01745329252 )*cos( 47.5*0.01745329252 )*cos( ($2-(-100.0))*0.01745329252 ) ) *0.5)^ -0.5)',
image = 'North_America_laea_location map.svg',
image1 = 'North America laea relief location map with borders.jpg'
}
5023e7c80f1e6a04f4c3eba9557784b383579454
Module:Location map/data/USA Tennessee
828
1683
3125
3124
2023-11-09T18:17:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/USA_Tennessee]]
Scribunto
text/plain
return {
name = 'Tennessee',
top = 38.1,
bottom = 33.6,
left = -90.5,
right = -81.4,
image = 'USA Tennessee location map.svg',
image1 = 'USA Tennessee relief location map.svg'
}
575b36ab0fd4a6a90399da47a84bac37db2fd8f9
Module:Location map/data/USA/doc
828
1684
3127
3126
2023-11-09T18:17:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Location_map/data/USA/doc]]
wikitext
text/x-wiki
<!-- Categories go at the bottom of this page. -->
{{Module:Location map/data/doc|name=the [[United States]]|projection=an [[equidistant conic projection]]|examples=
=== Location map, using default map (image) ===
{{Location map | USA
| width = 250
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
<pre style="width:30em">
{{Location map | USA
| width = 250
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
</pre>
{{clear}}
=== Location map many, using relief map (image1) ===
{{Location map many | USA
| relief = yes
| width = 250
| caption = Two locations in the United States
| label1 = Washington, D.C.
| lat1_deg = 38.89
| lon1_deg = -77.04
| label2 = Seattle
| lat2_deg = 47.61
| lon2_deg = -122.33
}}
<pre style="width:30em">
{{Location map many | USA
| relief = yes
| width = 250
| caption = Two locations in the United States
| label1 = Washington, D.C.
| lat1_deg = 38.89
| lon1_deg = -77.04
| label2 = Seattle
| lat2_deg = 47.61
| lon2_deg = -122.33
}}
</pre>
{{clear}}
=== Location map+, using AlternativeMap ===
{{Location map+ | USA
| AlternativeMap = Usa edcp relief location map.png
| caption = Two locations in the United States
| width = 250
| places =
{{Location map~ | USA
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
{{Location map~ | USA
| label = Seattle
| lat_deg = 47.61
| lon_deg = -122.33
}}
}}
<pre style="width:35em">
{{Location map+ | USA
| AlternativeMap = Usa edcp relief location map.png
| caption = Two locations in the United States
| width = 250
| places =
{{Location map~ | USA
| label = Washington, D.C.
| lat_deg = 38.89
| lon_deg = -77.04
}}
{{Location map~ | USA
| label = Seattle
| lat_deg = 47.61
| lon_deg = -122.33
}}
}}
</pre>
=== Location map, one location on three maps ===
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
}}
<pre style="width:30em">
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
}}
</pre>
{{clear}}
=== Location map, three maps and three captions ===
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
| caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]]
}}
<pre style="width:30em">
{{Location map | USA#USA Tennessee#North America
| relief = yes
| width = 250
| lat_deg = 36.167
| lon_deg = -86.783
| label = Nashville
| caption = Location in the [[United States]]##Location in [[Tennessee]]##Location in [[North America]]
}}
</pre>
{{clear}}
}}<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:United States location map modules| ]]
}}</includeonly>
9dd62ef3a72e4f7861f16e83e8a8696e68358a0c
Template:GeoTemplate
10
1685
3130
3129
2023-11-09T20:07:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:GeoTemplate]]
wikitext
text/x-wiki
<templatestyles src="GeoTemplate/styles.css"/><div class="toccolours plainlinks" style="font-size:92%; max-width:60em; float:right; margin-top:1rem;">
<!-- Input -->
{| style="background:none; text-align:left; width:100%; border-collapse:collapse;"
|- style="vertical-align:top;"
! DMS<br>Decimal
| colspan="3" style="width:95%;" | <span title="Latitude">{latdegabs}° {latminint}′ {latsecdec}″ {latNS}</span>, <span title="Longitude">{londegabs}° {lonminint}′ {lonsecdec}″ {lonEW}</span><br /><span class="geo h-geo"><span class="latitude p-latitude" title="Latitude">{latdegdec}</span>, <span class="longitude p-longitude" title="Longitude">{londegdec}</span></span>
| rowspan="6" class="nomobile" style="width:364px;" |<!-- minimap -->
<div style="position:relative; width:360px; height:180px;">
<div style="position:absolute;">[[File:Earthmap1000x500.jpg|360x180px|Map the location of {title}|alt=|link=]]</div>
<div style="position:absolute; top:94px; left:176px;">
<div style="position:absolute; bottom:{latdegint}px; left:{londegint}px;" title="Location on {title}">[[File:Locator Dot.svg|8x8px|alt=|link=]]</div>
</div>
<div style="position:absolute; top:0; left:0; width:360px; height:180px;"> </div>
</div>
|-
! [[Geo URI]]
| colspan="3" | geo:{latdegdec},{londegdec}
|-
! [[Universal Transverse Mercator coordinate system|UTM]]
| colspan="3" | <span title="Zone">{utmzone}</span> <span title="Easting">{utmeasting}</span> <span title="Northing">{utmnorthing}</span>
|-
|
| colspan="3" style="text-align:center" |[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={params}_globe:export&title={titlee} More formats...]
|-
! [[WP:GEO#type:T|Type]]
| style="min-width:5em;" | {type}
! [[WP:GEO#region:R|Region]]
| style="min-width:5em;" | [{{SERVER}}/wiki/ISO_3166-2:{region} {region}]
|- style="vertical-align:top;"
! Article
| colspan="3" style="padding-bottom:1.5em;"| [{{SERVER}}/wiki/{pagenamee} {title}] <br><span class="noprint" style="text-transform:lowercase; visibility:hidden{pagename};">([{{SERVER}}{{SCRIPTPATH}}/index.php?title={pagenamee}&action=edit Edit] | [{{SERVER}}{{SCRIPTPATH}}/index.php?title={{ns:1}}:{pagenamee}&action=edit§ion=new&editintro=Template:Geodata-check/report_editintro&preloadtitle={{urlencode:Coordinate error}}&preload=Template:Geodata-check/preload Report inaccuracies])</span>
|- style="border-top:2px solid #bbb; vertical-align:top;"
! Contents: __NOTOC__
| colspan="5" | [[#Global services|Global services]] '''·''' [[#GEOTEMPLATE-LOCAL|Local services]] '''·''' [[#Photos|Photos]] '''·''' [[#Wikipedia articles|Wikipedia articles]] '''·''' [[#Other information|Other]]
|}
</div>
<div class="plainlinks" style="text-align:center;">
<h2 style="min-width:192px; display:inline-block; margin-top:1rem;">Popular</h2><br>
<div style="min-width:192px; display:inline-block;">
[https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ <span style="display:inline-block; text-align:center; width:96px;">[[File:Bing favicon.svg|64x64px|link=|alt=]]<br>Bing Maps</span>][https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Maps icon (2020).svg|64x64px|link=|alt=]]<br>Google Maps</span>]
</div><div style="min-width:192px; display:inline-block;">
[{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} <span style="display:inline-block; text-align:center; width:96px;">[[File:Google Earth icon.svg|64x64px|link=|alt=]]<br/>Google Earth</span>]
[https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M <span style="display:inline-block; text-align:center; width:96px;">[[File:Openstreetmap logo.svg|64x64px|link=|alt=]]<br>OpenStreetMap</span>]
</div></div>
<!-- services -->
{| class="mobile-linearize plainlinks geoservices" cellpadding="0" cellspacing="0" style="background:none; border-collapse:collapse; table-layout:fixed; width:100%;"
|- style="vertical-align:top;"
| class="directory" style="background:#fff; overflow:hidden; width:50%;" | <div id="GEOTEMPLATE-GLOBAL">
__NOEDITSECTION__
== Global/Trans-national services ==
{| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; width:98%; margin-left:0.25em"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | More
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] ACME Mapper
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=M&marker0={latdegdec},{londegdec},{titlee} Map]
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=SL&marker0={latdegdec},{londegdec},{titlee} Satellite]
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=R&marker0={latdegdec},{londegdec},{titlee} Terrain], [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=K&marker0={latdegdec},{londegdec},{titlee} Mapnik]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Apple Maps (WatchOS).svg|16x16px|link=|alt=]] [[Apple Maps]] (Apple devices only)
| [https://maps.apple.com/?q={latdegdec},{londegdec}&t=m Map]
|[https://maps.apple.com/?q={latdegdec},{londegdec}&t=k Satellite]
|[https://duckduckgo.com/?q={latdegdec},{londegdec}&iaxm=maps via DuckDuckGo] (other devices)
|- style="background:#e0eef7" class="nomobile" <!-- goes to web search on mobile Mar-2017 -->
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Bing favicon.svg|16x16px|link=|alt=]] '''[[Bing Maps]]'''
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=r&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Map]
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=h&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Aerial]
| [https://www.bing.com/maps/?v=2&cp={latdegdec}~{londegdec}&style=o&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{titlee}___ Bird's Eye]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Blue Marble Navigator
|
| [https://blue-marble.de?lon={londegdec}&nlat={latdegdec}&borders&geonames&townnames&zoom&overlay=14&base=7 Satellite]
| [https://blue-marble.de/nightlights?ll={latdegdec},{londegdec} Night Lights]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Copernix
| [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&map_type=roadmap&pagename={pagenamee}?language={language} Map]
| [https://copernix.io/#?where={londegdec},{latdegdec},{osmzoom}&query=&pagename={pagenamee}?language={language} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[John_Walker_(programmer)#Fourmilab|Fourmilab]]
|
| [https://www.fourmilab.ch/cgi-bin/uncgi/Earth?imgsize=320&opt=-l&lat={latdegdec}&ns=North&lon={londegneg}&ew=West&alt={altitude}&img=nasa.evif Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeaBios]]
|
| [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span}&title={titlee} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[GeoNames]]
|
| [http://www.geonames.org/maps/google_{latdegdec}_{londegdec}.html Satellite]
| [http://ws.geonames.org/extendedFindNearby?lat={latdegdec}&lng={londegdec} Text (XML)]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Earth icon.svg|16x16px|link=|alt=]] [[Google Earth]]<sup>[[Template talk:GeoTemplate/FAQ#Google|note]]</sup>
|
| [{{fullurl:toollabs:wp-world/earth.php|long={londegdec}&lat={latdegdec}&name={pagenamee}}} Open]
| [{{fullurl:toollabs:geocommons/earth.kml|latdegdec={latdegdec}&londegdec={londegdec}&scale={scale}&title={titlee}}} w/ meta data]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Google Maps icon (2020).svg|16x16px|link=|alt=]] '''[[Google Maps]]'''
| [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=m&z={osmzoom} Map]
| [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom} Satellite]
| [https://www.google.com/maps/place//@{latdegdec},{londegdec},{osmzoom}z/data=!4m2!3m1!1s0x0:0x0!5m1!1e4?hl={language} Terrain], [https://www.google.com/maps?ll={latdegdec},{londegdec}&q={latdegdec},{londegdec}&hl={language}&t=h&z={osmzoom}&layer=c&cbll={latdegdec},{londegdec} Street View], [https://earthengine.google.com/timelapse/#v={latdegdec},{londegdec},{osmzoom},latLng&t=3.04 Earth Timelapse]
|- class="nomobile" <!-- Mobile users can't use files -->
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] GPS Visualizer
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_openstreetmap&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Map]
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_aerial_arcgis&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Satellite]
| [https://www.gpsvisualizer.com/map_input?special=wikipedia&format=leaflet&bg_map=google_arcgistopo_world&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo], [https://www.gpsvisualizer.com/draw/?zoom={zoom}¢er={latdegdec},{londegdec}&marker={titlee} Drawing Utility]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:HERE logo.svg|16x16px|link=|alt=]] [[HERE WeGo]]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},normal&msg={titlee} Map]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},satellite&msg={titlee} Satellite]
| [https://wego.here.com/location/?map={latdegdec},{londegdec},{osmzoom},terrain&msg={titlee} Terrain]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[MapQuest]]
| [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=map Map]
| [https://www.mapquest.com/latlng/{latdegdec},{londegdec}?zoom={osmzoom}&maptype=sat Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:NASA logo.svg|16x16px|link=|alt=]] [[NASA WorldWind]]
|
| [worldwind://goto/world=Earth&lat={latdegdec}&lon={londegdec}&view={span} Open]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] [[OpenHistoricalMap|Open<wbr>Historical<wbr>Map]]
| [https://www.openhistoricalmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=O Map]
|
| [https://nominatim.openhistoricalmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Openstreetmap logo.svg|16x16px|link=|alt=]] '''[[OpenStreetMap|Open<wbr>Street<wbr>Map]]'''
| [https://www.openstreetmap.org/?mlat={latdegdec}&mlon={londegdec}&zoom={osmzoom}&layers=M Map]
|
| [https://geohack.toolforge.org/geohack.php?language={language}&project=osm&pagename={pagenamee}¶ms={params}&title={titlee} more maps], [https://nominatim.openstreetmap.org/reverse?lat={latdegdec}&lon={londegdec}&zoom={zoom} Nominatim (reverse geocoding)], [https://openstreetbrowser.org/#map={osmzoom}/{latdegdec}/{londegdec} OpenStreetBrowser]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Sentinel-2]]
|
| [https://apps.sentinel-hub.com/sentinel-playground/?source=S2L2A&lat={latdegdec}&lng={londegdec} Open]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] maps.vlasenko.net
|
|
| [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Waze]]
| [https://www.waze.com/livemap/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map]
|
| [https://www.waze.com/editor/?lon={londegdec}&lat={latdegdec} Editor], App: [http://waze.to/?ll={latdegdec},{londegdec} Open], [http://waze.to/?ll={latdegdec},{londegdec}&navigate=yes Navigate]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Wikimapia logo without label.svg|16x16px|link=|alt=]] [[Wikimapia]]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=w Map]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b Satellite]
| [http://wikimapia.org/#lang={language}&lat={latdegdec}&lon={londegdec}&z={osmzoom}&m=b&v=8 + old places]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Erioll world 2.svg|16x16px|link=|alt=]] WikiMiniAtlas
| [https://wma.wmflabs.org/iframe.html?wma={latdegdec}_{londegdec}_700_500_{{CONTENTLANG}}_{zoom}_en&globe=Earth&lang={{CONTENTLANG}}&page={pagenamee} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] [[Yandex Maps]]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Zoom Earth
|
| [https://zoom.earth/?lat={latdegdec}&lon={londegdec}&z=15&r=0&src=ggl Satellite]
|
|}
</div>
| class="directory" rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"| <div id="GEOTEMPLATE-LOCAL">
== Wikimedia maps ==
<!-- [[MediaWiki:GeoHack.js]] -->
<div class="center" style="margin-left:0.25em">
<div class="thumb tnone">
<div class="thumbinner">
<div id="osmEmbed" class="OSM:{latdegdec}_{londegdec}_{osmzoom}_mapnik" style="background:#aaa; width:100%; height:500px; height:80vh;">JavaScript disabled or out of map range.</div>
</div>
</div>
</div>
</div><!--/GEOTEMPLATE-LOCAL-->
<div style="text-align:center; font-weight:bold;">[https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={params}_region:#regional See all regions]</div>
|-
| rowspan="2" style="background:#fff; overflow:hidden; width:50%; vertical-align:top;"|
==Photos==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Commons-logo.svg|16x16px|link=|alt=]] Commons
| [https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language}&wp=false WikiMap] ([https://wikimap.toolforge.org/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia]),<!-- see https://de.wikipedia.org/wiki/Benutzer:DB111/Tools#WikiMap --> [https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang=commons osm-gadget-leaflet map] ([https://osm-gadget-leaflet.toolforge.org/#/?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&lang={language} +Wikipedia])
<!-- failing as of 2020-07-27: [https://www.google.com/maps?ll={latdegdec},{londegdec}&hq=https://geocommons.toolforge.org/web.kml&hl={language}&z={osmzoom} Map], -->
<!-- failing as of 2020-07-27: [https://geocommons.toolforge.org/proximityrama?latlon={latdegdec},{londegdec} Proximityrama] -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Flickr large white chiclet logo - no rounded corners, no border.svg|16x16px|link=|alt=]] Flickr
| [https://www.flickr.com/map/?fLat={latdegdec}&fLon={londegdec}&zl=5 Map], [https://www.flickr.com/nearby/{latdegdec},{londegdec}?show=thumb&fromfilter=1&by=everyone&taken=alltime&sort=mostrecent Listing]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] Loc.alize.us
| [https://loc.alize.us/#/geo:{latdegdec},{londegdec},14,m/sort:date/ Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[File:Spacer.gif|16x16px|link=|alt=]] VirtualGlobetrotting
| [https://virtualglobetrotting.com/ll/{latdegdec},{londegdec} Listing]
|}
<!-- blacklisted
| [https://www.360cities.net/map#lat={latdegdec}&lng={londegdec}&zoom={osmzoom} 360 Cities] ([[Panoramic photography|pano]])
-->
<!-- Shutdown
| [https://www.panoramio.com/map/#lt={latdegdec}&ln={londegdec}&z=0&k=0&a=1&tab=2 Panoramio]
<!-- ?
| [http://www.planeteye.com/maps?refcon=wikipedia&pll={latdegdec},{londegdec}&z={osmzoom}&title={titlee}&type={type}&scale={scale}®ion={region}&sd=photos PlanetEye]
-->
</div>
|}
==Wikipedia articles==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Aspect
! scope="col" | Link
|-
| List of nearby articles
| [{{fullurl:toollabs:wikinearby/|lang={language}&q={latdegdec},+{londegdec}}} WikiNearby]<br>[https://{language}.wikipedia.org/wiki/Special:Nearby#/coord/{latdegdec},{londegdec} Wikipedia]
|-
<!-- for [[Category talk:Lines of latitude#Redirects]] -->
| Article on {latdegabs}° {latNS}
| [https://{language}.wikipedia.org/wiki/Latitude_{latdegabs}_degrees_{latNS} Wikipedia]
|-
<!-- for [[Category talk:Lines of longitude#Redirects]] -->
| Article on {londegabs}° {lonEW}
| [https://{language}.wikipedia.org/wiki/Longitude_{londegabs}_degrees_{lonEW} Wikipedia]
|-
| Map of all coordinates on ''{pagename}''
| [{{fullurl:toollabs:wikimap/|lang={language}&page={pagenamee}}} WikiMap]<br>[{{fullurl:toollabs:osm4wiki/cgi-bin/wiki/wiki-osm.pl|project={language}&article={pagenamee}}} OSM for Wiki]
|-
| Map of nearby articles
| [{{fullurl:toollabs:wikimap/|lang={language}&lon={londegdec}&lat={latdegdec}&zoom={osmzoom}&commons=false}} WikiMap]<br>[https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?la={language}&uselang={language}&lon={londegdec}&lat={latdegdec}&rang=50&map=1 Wikipedia World]
|-
| Map of nearby Wikidata items
| [https://wikidata-todo.toolforge.org/around.html?lat={latdegdec}&lon={londegdec}&radius=15&lang={language} Wikidata Todo]
|-
| Map of nearby places with no images
| [https://wikishootme.toolforge.org/#lat={latdegdec}&lng={londegdec} WikiShootMe]
|}
</div>
==Other information==
<div class="directory">
{| class="plainlinks geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geocaching.com
| [https://www.geocaching.com/seek/nearest.aspx?origin_lat={latdegdec}&origin_long={londegdec}&dist=20&submit3=Search Near by locations], [https://www.geocaching.com/map/default.aspx?lat={latdegdec}&lng={londegdec} Map this location]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NASA Weather
| Satellite images: [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=Global%20Composite&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Radar] (Currently not updating<!-- and I don't think it is radar?-->)
|-
! scope="row" style="font-weight:normal; text-align:left;" | Megalithic Portal
| [https://www.megalithic.co.uk/article.php?long={londegdec}&lat={latdegdec} Prehistoric Sites, nearby]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Earthtools.org
| [http://new.earthtools.org/height/{latdegdec}/{londegdec} Elevation (Europe and America)], [http://new.earthtools.org/timezone/{latdegdec}/{londegdec} Time zone (Outdated<!--for data in e.g. South Sudan-->)] ([[Extensible Markup Language|XML]] output)
|-
! scope="row" style="font-weight:normal; text-align:left;" | SunriseSunset.com
| [http://www.sunrisesunset.com/calendar.asp?comb_city_info=Long:{londegneg},Lat:{latdegdec};{londegneg};{latdegdec};0;0&month={{CURRENTMONTH}}&year={{CURRENTYEAR}}&time_type=1&use_dst=0&want_twi_civ=1&want_twi_naut=1&want_twi_astro=1&want_mrms=1&want_mphase=1 Sunrise, Sunset, Twilight, and Moon Calendar]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geody
| [https://www.geody.com/geolook.php?world=terra&lat={latdegdec}&lon={londegdec} Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Heavens-Above.Com
| [https://www.heavens-above.com/?Loc=Newark&Lat={latdegdec}&Lng={londegdec}&Alt={altitude} Satellite / Planet Spotter]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Echolink
| [http://www.echolink.org/links.jsp?sel=latlon&lat_deg={latdegdec}&lat_min={latmindec}&lon_deg={londegabs}&lon_min={lonmindec}&lon_EW={lonEW} Nearest gateway network] for amateur radio VoIP
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findu.com
| [http://www.findu.com/cgi-bin/near.cgi?lat={latdegdec}&lon={londegdec} APRS stations]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Degree Confluence Project
| [http://www.confluence.org/confluence.php?lat={latdeground}&lon={londeground} Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoHack
| [https://geohack.toolforge.org/geohack.php?language={language}&pagename={pagenamee}¶ms={latantipodes}_N_{longantipodes}_E_scale:10000000_type:{type}&title=The+Antipodes+of+{titlee} Antipodes]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapIt (from [[mySociety]])
| [https://global.mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas] (political boundaries, etc.)
|-
! scope="row" style="font-weight:normal; text-align:left;" | PeakFinder.org
| [https://www.peakfinder.org/?lat={latdegdec}&lng={londegdec}&name={titlee} 360° panoramic mountain views]
|-
! scope="row" style="font-weight:normal; text-align:left;" | SkyVector
| [https://skyvector.com/?ll={latdegdec},{londegdec}&zoom=2 Aeronautical chart]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Flightradar24
| [https://www.flightradar24.com/{latdegdec},{londegdec}/{osmzoom} Planes flying in the area]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Great Circle Mapper
| [http://www.gcmap.com/search?Q={latdegdecabs}{latNS}+{londegdecabs}{lonEW} Nearby Airports]
|-
! scope="row" style="font-weight:normal; text-align:left;" | OpenSeaMap
| [https://map.openseamap.org/map/?zoom={osmzoom}&mlat={latdegdec}&mlon={londegdec}&layers=BTTFFFTFFFF0TFFTFTFF Sea lanes, beacons, traffic, etc.]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MarineTraffic
| [https://www.marinetraffic.com/en/ais/home/centerx:{londegdec}/centery:{latdegdec}/zoom:{osmzoom} Ships in the area]
|-
! scope="row" style="font-weight:normal; text-align:left;" | OpenRailwayMap
| [https://www.openrailwaymap.org/?lang=en&lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&style=standard Railways]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Strava
| [https://labs.strava.com/heatmap/#10.86/{londegdec}/{latdegdec}/hot/all Fitness tracking heatmap]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LightningMaps.org
| [https://www.lightningmaps.org/?lang=fr#y={latdegdec};x={londegdec};z=12;t=1;m=oss;r=0;s=201;o=0;b=0.00;n=0;d=2;dl=2;dc=0;ts=0; Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapillary.com
| [https://www.mapillary.com/app/?lat={latdegdec}&lng={londegdec}&z=osmzoom} Crowdsourced street view]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Old Maps Online
| [http://www.oldmapsonline.org/?lat={latdegdec}&lon={londegdec} Old maps]
|}
</div>
<!--
[http://mapmaker.nationalgeographic.org/ National Geographic MapMaker]
-->
<!-- Begin region specific -->
<div id="GEOTEMPLATE-REGIONS" class="directory" style="margin-top:1.5em;>
{| id="regional" class="toc plainlinks" summary="Other regions"
|-
! scope="row" style="padding-left: 0.5em" |Regional services:
|style="padding:0 0.5em" |
[[#Africa|Africa]] '''·'''
[[#Asia|Asia]] '''·'''
[[#Australia|Australia]] '''·'''
[[#Europe A–M|Europe (A–M)]] '''·'''
[[#Europe N–Z|Europe (N–Z)]] '''·'''
[[#North America|North America]] '''·'''
[[#South America|South America]] '''·'''
[[#Antarctica|Antarctica/Arctic]]
|}
=North America=
<div id="GEOTEMPLATE-CA">
==Canada==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer
| [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=nrcan_toporama&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Atlas of Canada
| [http://atlas.nrcan.gc.ca/site/english/toporama/index.html Topo] (Indirect link)
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest
| [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=8&map=50k Topo]
|}
</div>
<div id="GEOTEMPLATE-US">
==United States==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Aspect
|-
! scope="row" style="font-weight:normal; text-align:left;" | ACME
| [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=T&marker0={latdegdec},{londegdec},{titlee} Topo] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=N&marker0={latdegdec},{londegdec},{titlee} NEXRAD] [https://mapper.acme.com/?ll={latdegdec},{londegdec}&z={osmzoom}&t=O&marker0={latdegdec},{londegdec},{titlee} DOQ]
|-
! scope="row" style="font-weight:normal; text-align:left;" | CalTopo
| [http://caltopo.com/map.html#ll={latdegdec},{londegdec}&z={osmzoom}&b=t Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GPS Visualizer
| [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=naip_aerial&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USDA Aerial], [http://www.gpsvisualizer.com/map_input?special=wikipedia&format=google&bg_map=google_arcgistopo_us&sp_width=50km&google_zoom_level={zoom}&google_wpt_labels=1&form:data=name,latitude,longitude%0D%22{titlee}%22,{latdegdec},{londegdec} USGS Topo]
|- style="background:#e0eef7"
! scope="row" style="font-weight:normal; text-align:left;" | Historic Aerials
| [https://historicaerials.com/?layer=map&zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Historic Aerials]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NASA/MSFC GOES
| [https://weather.msfc.nasa.gov/cgi-bin/get-goes?satellite=GOES-E%20CONUS&lat={latdegdec}&lon={londegdec}&zoom=1&info=ir&palette=spect.pal&width=600&height=500 Weather Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Weather Service
| [https://forecast.weather.gov/MapClick.php?textField1={latdegdec}&textField2={londegdec} Area weather and forecast]<br/> [https://forecast.weather.gov/MapClick.php?lat={latdegdec}&lon={londegdec}&unit=0&lg=english&FcstType=graphical Graphical hourly pinpoint forecast]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Natural Atlas
| [https://naturalatlas.com/map/@{latdegdec},{londegdec},{osmzoom}z Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TerraFly
| [http://vn4.cs.fiu.edu/cgi-bin/gnis.cgi?Lat={latdegdec}&Long={londegdec}&vid=&tfaction=&referer=tfhome Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoQuest
| [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4&map=sat1m USGS Aerial], [https://www.topoquest.com/map.php?lat={latdegdec}&lon={londegdec}&datum=nad83&zoom=4 Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Trails.com
| [http://www.topozone.com/map.asp?lat={latdegdec}&lon={londegdec}&datum=nad83 Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | US EPA
| [https://water.usgs.gov/cgi-bin/pointinhuc.pl?latitude={latdegabs}{latminint}{latsecint}{latNS}&longitude={londegabs}{lonminint}{lonsecint}{lonEW} Watershed Info]
|-
! scope="row" style="font-weight:normal; text-align:left;" | USGS National Map Viewer
| [https://apps.nationalmap.gov/viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map] <!-- before 2021: [https://viewer.nationalmap.gov/advanced-viewer/viewer/index.html?marker={londegdec},{latdegdec},4326,from%20{pagenamee},,{titlee}&scale={scale} Map],--><!-- Advanced TNM Viewer: might need to make sure scale is what we expect; also, commas should be filtered out in pagename and title somehow --> <!-- [https://viewer.nationalmap.gov/viewer/?q={latdegdec},{londegdec} Legacy TNM] -- ending May 2017 --> <!-- even older/long gone: [http://nmviewogc.cr.usgs.gov/viewer.htm?CenterPoint={latdegdec},{londegdec}&Scale=CITY&Classes=OTHER%20IMAGERY Map] -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | USGS TopoView
| [https://ngmdb.usgs.gov/topoview/viewer/#{osmzoom}/{latdegdec}/{londegdec} Historic topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | WeatherUSA
| [https://www.weatherusa.net/weathernet/live/?q={latdegdec},{londegdec}&zoom={osmzoom}&layers=obs-t,radar,alerts Live]
|}
</div>
=Europe A–M=
<div id="GEOTEMPLATE-AT">
== Austria ==
<!--
Dokumentation zum Geolink-Dienst siehe http://de.wikipedia.org/wiki/Vorlage:GeoTemplate/GeolinkConfig
-->
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
| Austrian map amap.at (max 1:50,000)
|[https://wikitools.toolforge.org/geolink.php?config=austriamap&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|
|}
===Local===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kärnten Atlas (Carinthia)
| [https://wikitools.toolforge.org/geolink.php?config=kaerntenatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | NÖ Atlas (Lower Austria)
| [https://wikitools.toolforge.org/geolink.php?config=noeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | DORIS interMap (Upper Austria)
| [https://wikitools.toolforge.org/geolink.php?config=ooeatlas&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | SAGIS (Salzburg)
| [https://wikitools.toolforge.org/geolink.php?config=salzburg&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Digitaler Atlas Steiermark (Styria)
| [https://wikitools.toolforge.org/geolink.php?config=steiermark&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | tirisMaps (Tyrol)
| [https://wikitools.toolforge.org/geolink.php?config=tirol&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | VoGIS (Vorarlberg)
|[https://wikitools.toolforge.org/geolink.php?config=vorarlberg&lat={latdegdec}&lon={londegdec}&scale={scale} Map]
|}
</div>
<div id="GEOTEMPLATE-BY">
==Belarus==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map]
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
<div id="GEOTEMPLATE-BG">
==Bulgaria==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | eMaps.bg
| [http://2cyr.com/emaps-bg.php?q={latdegdec},{londegdec} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 360.bg
|
| [http://www.360.bg/index.php?lat={latdegdec}&lon={londegdec} Satellite]
|}
<!-- This service would be good to include, but #expr doesn't work as MediaWiki doesn't know the {} parameters, so it needs a GeoHack modification for the offset -->
<!-- *[http://www.emaps.bg/emaps/content.asp?mapSize=1&cboMaps=0&minx={{#expr: {utmeasting}-14425}}&maxx={{#expr: {utmeasting}+14425}}&miny={{#expr: {utmnorthing}-10000}}&maxy={{#expr: {utmnorthing}+10000}} Find this location] on emaps.bg [http://www.emaps.bg/].-->
</div>
<div id="GEOTEMPLATE-CY">
==Cyprus==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Cyprus on-line
| [http://www.col.com.cy/?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map]
|}
</div>
<div id="GEOTEMPLATE-CZ">
==Czech Republic==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapy.cz
| [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Map]
| [https://en.mapy.cz/?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW}&base=ophoto Labeled satellite]
| [https://en.mapy.cz/19stoleti?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Historical], [https://en.mapy.cz/turisticka?x={londegdec}&y={latdegdec}&z={osmzoom}&q={latdegdecabs}{latNS}%20{londegdecabs}{lonEW} Touristic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | iDnes
| [http://mapy.idnes.cz/#query=search({latdegabs}%C2%B0{latminint}%27{latsecdec}%22{latNS}%20{londegabs}%C2%B0{lonminint}%27{lonsecdec}%22{lonEW}@0@1) Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | ikatastr.cz
| [https://www.ikatastr.cz/#&kde={latdegdec},{londegdec},19 Cadastral Map] on ikatastr.cz
|
|
|}
</div>
<div id="GEOTEMPLATE-DK">
==Denmark==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk
| [http://www.findvej.dk/?longitude={londegdec}&latitude={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Findvej.dk with Wikipedia
| [http://www.findvej.dk/wikipedia?template=1&longitude={londegdec}&latitude={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kort.eniro.dk/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-EE">
==Estonia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Estonian Land Board
| [http://geoportaal.maaamet.ee/url/xgis-latlon.php?lat={latdegdec}&lon={londegdec}&out=xgis Orthophoto/Map]
|}
</div>
<div id="GEOTEMPLATE-FI">
==Finland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kartor.eniro.se/?q={latdegdec},{londegdec}&z={zoom} Map]
| [http://kartat.eniro.fi/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Land Survey of Finland MapSite
| [http://toolserver.org/%7Epara/EPSG3067.php?lat={latdegdec}&lon={londegdec}&url=http://kansalaisen.karttapaikka.fi/linkki?scale={scale}&srs=EPSG%3A3067&y={n}&x={e}&lang=fi&text=Coordinate%20from%20GeoHack Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 02.fi
| [https://para.toolforge.org/geo/convert/02.fi-grc.html#latlon={latdegdec},{londegdec} Map]
|
|}
===Local===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | eKarjala
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.ekarjala.fi/WebEK/Default.aspx?layers=Etel%C3%A4-Karjalan%20Seutukartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Espoo
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartat.espoo.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Helsinki
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=2500000&link=http://kartta.hel.fi/opas/main/?l=1&m=1&o=1&n={Plocal}&e={Ilocal}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Hämeenlinna
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=2500000&link=http://kartta.hameenlinna.fi/cgi-bin/GifMap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=600&Width=650&Command=DisplayLink&Language=fin&Info={Plocal},{Ilocal},{title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Jyväskylä
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6890000&Iref=3400000&link=http://kartta.jkl.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kokkola
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7000000&Iref=2400000&link=http://ipp.kokkola.fi/cgi-bin/gifmap.dll?Theme=Opaskartta&West={IlocalW}&South={PlocalS}&East={IlocalE}&North={PlocalN}&Height=400&Width=500&Command=DisplayLink_fin&Language=fin&Info={Plocal},{Ilocal},{title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kotka
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6000000&Iref=3000000&link=http://karttapalvelu.kotka.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kouvola
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6740000&Iref=3470000&link=http://kartta.kouvola.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kuopio
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.kuopionseutu.fi/map/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Lahti
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=840&Iref=-23053970&link=http://kartta.lahti.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Lappeenranta
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6700000&Iref=3500000&link=http://kartta.lappeenranta.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Oulu
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=7200000&Iref=2500000&link=http://kartta.ouka.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Pohjois-Karjala
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://pk-kartat.jns.fi/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Pori
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6800000&Iref=1500000&link=http://kartta.pori.fi/web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rauma
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=1000000&link=http://opaskartta.rauma.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rovaniemi
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.rovaniemi.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Tampere
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://www.tampere.fi/ytoteto/kartta/map.php?x={Ilocal}&y={Plocal}&px=1.0&txt={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Turku
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6600000&Iref=1500000&link=http://opaskartta.turku.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vaasa
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=6900000&Iref=1500000&link=http://kartta.vaasa.fi/Web/Default.aspx?layers=Opaskartta&cp={Plocal},{Ilocal}&z=2&title={title}}} Map]
|
|-
| Vantaa
| [{{fullurl:toollabs:para/geo/convert/kkj|latdegdec={latdegdec}&londegdec={londegdec}&Pref=0&Iref=0&link=http://kartta.vantaa.fi/Default.aspx?easting={Ilocal}&northing={Plocal}}} Map]
|
|-
| Retkikartta
|
| [http://www.retkikartta.fi/?x={utmeasting}&y={utmnorthing}&zoom=1 Topographical map]
|}
</div>
<div id="GEOTEMPLATE-FR">
==France==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | FranceTopo
|
|
| [http://francetopo.fr/api.html?map_x={londegdec}&map_y={latdegdec}&zoom_osm={osmzoom} Topo]
|-
! scope="row" style="font-weight:normal; text-align:left;" | IGN Géoportail
| [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.MAPS.3D$GEOPORTAIL:OGC:WMTS@aggregate(1)&permalink=yes Map]
|[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Aerial]
|[http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=CADASTRALPARCELS.PARCELS$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cadastral], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOLOGY.GEOLOGY$EXTERNAL:OGC:EXTERNALWMS(1)&permalink=yes Geological], [http://www.geoportail.gouv.fr/accueil?c={londegdec},{latdegdec}&z=0.000316906&l=GEOGRAPHICALGRIDSYSTEMS.CASSINI$GEOPORTAIL:OGC:WMTS(1)&permalink=yes Cassini (18th century)]
|}
</div>
<div id="GEOTEMPLATE-GB">
==Great Britain==
[[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing})
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Topo
! scope="col" | Aerial
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Bing Maps]] UK
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title} Map]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=s OS maps]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sp=Point.{latdegdec}_{londegdec}_{title}&sty=h Aerial]
| [https://www.bing.com/maps/?mkt=en-gb&v=2&cp={latdegdec}~{londegdec}&lvl={osmzoom}&sty=o Bird's Eye]
|-
! scope="row" style="font-weight:normal; text-align:left;" | StreetMap
| [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_106 Map]
| [http://streetmap.co.uk/grid/{osgb36easting}_{osgb36northing}_120 OS maps]
|
| [http://streetmap.co.uk/idgc.srf?x={osgb36easting}&y={osgb36northing} Convert]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vision of Britain historical maps
| [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} Map]
| [http://www.visionofbritain.org.uk/location_page.jsp?easting={osgb36easting}&northing={osgb36northing} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey
|
| [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d OS maps]
|
| ''See other OS<br />map links below''
|-
! scope="row" style="font-weight:normal; text-align:left;" | {{abbr|Defra|Department for Environment, Food and Rural Affairs}}'s {{abbr|MAGIC|Multi-Agency Geographic Information for the Countryside}} service
| [http://magic.defra.gov.uk/MagicMap.aspx?xygridref={osgb36easting},{osgb36northing} Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Elgin roadworks information
| [http://v5.roadworks.org/index.cfm?api=1&page=map&coord={osgb36easting},{osgb36northing}&scale=5000 Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | National Library of Scotland
|
|[http://maps.nls.uk/geo/explore/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=1&b=1&marker={latdegdec},{londegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin UK
| [http://www.viamichelin.co.uk/viamichelin/gbr/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map]
|
|
| [http://www.viamichelin.co.uk/viamichelin/gbr/search/Trafic/{londegdec}*{latdegdec}?zoomLevel=12 Traffic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Old OS maps
|
| [http://www.ponies.me.uk/maps/osmap.html?z=14&x={londegdec}&y={latdegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Where's the Path?
| [https://wtp2.appspot.com/wheresthepath.htm?lat={latdegdec}&lon={londegdec} Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | SABRE Maps
| [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=OSMMap&layer=0 Map]
| [http://www.sabre-roads.org.uk/maps/index.php?view={latdegdec},{londegdec}&map=NPEMap&layer=0 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Systematic Maps
|
| [http://www.sysmaps.co.uk/sysmaps_os.html?!{latdegdec}~{londegdec} OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapIt<br />(from [[mySociety]])
|
|
|
|[https://mapit.mysociety.org/point/4326/{londegdec},{latdegdec}.html Containing areas]<br />(ward, constituency, etc.) <!-- different to global version, above -->
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[British Geological Survey]]
|
|
|
| [https://www.bgs.ac.uk/data/services/mapCreator/WmsMap.html?mapCentreLat={latdegdec}&mapCentreLong={londegdec}&mapZoom=14&boxWidth=800&boxHeight=450&geologyType=bedrock50k&mapType=HYBRID Geology]
<!-- Commenting out section while OpenStreetMap street mapservers are down
|-
| colspan=5 | ''More OS maps''
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE 1:50000<br />(England / Wales), 1945-1955<br />(via [[OpenStreetMap]])
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0000 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey NPE/7th<br />1:50000 (Scotland), 1945-1955<br />(via OpenStreetMap)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=0B000 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 7th series<br />1:50000, 1947-1960 (via<br />OpenStreetMap; partial coverage)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=00B00 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey 1st edition<br />1:25000, 1946-1960<br />(via OpenStreetMap)
|
| [http://ooc.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=000B0 OS maps]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OpenStreet data<br />(via OpenStreetMap)
|
| [http://os.openstreetmap.org/?zoom=15&lat={latdegdec}&lon={londegdec}&layers=B0 OS maps]
|
|
end of comment -->|}
<!--<br />-->
{| border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse; margin-top:1em"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Information
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Geograph Britain and Ireland]]
| [https://www.geograph.org.uk/gridref/{osgb36ref} Photos]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UKVillages
| [http://www.ukvillages.co.uk/ukvillages.nsf/b!open&s=village%20map&x={osgb36easting}&y={osgb36northing} villages]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UK-postcodes.com
| [http://www.uk-postcodes.com/latlng/{latdegdec},{londegdec} Postal code and local government]<br />
|-
! scope="row" style="font-weight:normal; text-align:left;" | GlobalGuide.org
| [https://www.globalguide.org/index.html?lat={latdegdec}&long={londegdec}&zoom=17&title={titlee} View land use]
|}
</div>
<div id="GEOTEMPLATE-GR">
==Greece==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | in.gr
| [http://maps.in.gr/Default.aspx?c={latdegdec},{londegdec}&z={zoom} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | umap.gr
| [http://www.umap.gr/webcruiser/umap.html?locale=en&lat={latdegdec}&long={londegdec}&level={zoom} Map]
|}
</div>
<div id="GEOTEMPLATE-IS">
==Iceland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Já.is
| [http://en.ja.is/kort#lat={latdegdec}&lon={londegdec}&z=6&mark=1 Map]
|}
</div>
<div id="GEOTEMPLATE-IE">
==Ireland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" |Ordnance Survey Ireland
|[http://map.geohive.ie/ Ordnance Survey Ireland]
|}
</div>
<div id="GEOTEMPLATE-IM">
==Isle of Man==
[[Ordnance Survey National Grid|OS Grid Reference]]: '''{osgb36ref}''' (all-numeric format: {osgb36easting} {osgb36northing})
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Multimap
| [http://www.multimap.com/p/browse.cgi?scale={mmscale}&lon={londegdec}&lat={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | StreetMap
| [http://www.streetmap.co.uk/newsearch.srf?mapp=newmap&searchp=newsearch&name={latdegdec},{londegdec}&Submit1=search&type=LatLong Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Ordnance Survey OS Maps
| [https://explore.osmaps.com/pin?lat={latdegdec}&lon={londegdec}&zoom={osmzoom}&overlays=&style=Standard&type=2d Map]
|}
* [https://www.geograph.org.uk/gridref/{osgb36ref} View photos of this location] from [[Geograph Britain and Ireland]]
</div>
<div id="GEOTEMPLATE-IT">
==Italy==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | ViaMichelin Italia
| [http://www.viamichelin.it/viamichelin/int/search/Cartes/{londegdec}*{latdegdec}?zoomLevel=12 Map]
|}
</div>
<div id="GEOTEMPLATE-LI">
==Liechtenstein==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch
| [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Swisstopo
| [http://map.geodataviewer.admin.ch/geodatenviewer.php?x={ch1903easting}&y={ch1903northing}&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch
| [http://map.search.ch/{ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com
| [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac
| [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map]
|}
</div><!--
div id="GEOTEMPLATE-LT">
==Lithuania==
* Geographic Information portal of Lithuania [http://www.geoportal.lt/map/#x=533712&y=6060907&l=3&s=3346 Map and Satellite]
</div-->
=Europe N–Z=
<div id="GEOTEMPLATE-NO">
== Norway ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
! scope="col" | Hybrid
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/+land Map]
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+flybilder Aerial]
|
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+sjo Sea], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+terreng Terrain], [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+enkel Basic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norge i bilder
|
| [http://norgeibilder.no/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Aerial]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Høydedata
| [https://hoydedata.no/LaserInnsyn/?x={utm33easting}&y={utm33northing}&level={osmzoom}&utm=33&projects=&layers=&planned=0 Map]
|
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Norkart Virtual Globe
|
| [http://www.virtual-globe.info/VirtualGlobeStarter.php?request=page&dataset=http://www.virtual-globe.info/norge-globe-features.vgml&lookat={londegdec},{latdegdec},{scale} Satellite]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Finn.no
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=normap Map]
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norortho Aerial]
| [http://kart.finn.no/?lng={londegdec}&lat={latdegdec}&zoom={osmzoom}&mapType=norhybrid Hybrid]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gulesider.no
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom} Map]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=aerial Aerial]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=hybrid Hybrid]
| [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&l=nautical Sea], [http://kart.gulesider.no/?c={latdegdec},{londegdec}&z={osmzoom}&orientation=N&l=oblique Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | 1881
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=0&r=&o=&layer= Map]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=1&r=&o=&layer= Aerial]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=2&r=&o=&layer= Hybrid]
| [https://kart.1881.no/?lat={latdegdec}&lon={londegdec}&z={osmzoom}&v=5&r=&o=&layer= Oblique]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Statens Vegvesen
| [https://www.vegvesen.no/vegkart/vegkart/#kartlag:geodata/@{utm33easting},{utm33northing},{osmzoom} Map]
| [https://www.vegvesen.no/vegkart/vegkart/#kartlag:nib/@{utm33easting},{utm33northing},{osmzoom} Aerial]
|
| [http://www.vegvesen.no/Trafikkbeta/?lat={latdegdec}&long={londegdec}&zoom={osmzoom} Traffic]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UT.no
| [https://www.ut.no/kart?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map]
|
|
|
|}
<div id="GEOTEMPLATE-SJ">
<!-- Vennligst ikke flytt Svalbard og Jan Mayen til alfabetisk plassering. Dette for at kodene NO-21 og NO-22 skal gi resultat.-->
== Svalbard and Jan Mayen ==
=== Svalbard ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoSvalbard
| [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map]
| [http://toposvalbard.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial]
|-style="background:#f5f5f5"
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+svalbard Svalbard]
|
|}
=== Jan Mayen ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Aerial
|-
! scope="row" style="font-weight:normal; text-align:left;" | TopoJanMayen
| [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=map Map]
| [http://topojanmayen.npolar.no/?lat={latdegdec}&long={londegdec}&zoom={zoom}&layer=aerial Aerial]
|-style="background:#f5f5f5"
! scope="row" style="font-weight:normal; text-align:left;" | Norgeskart.no
| [http://norgeskart.no/#{osmzoom}/{utm33easting}/{utm33northing}/-land/+janmayen Jan Mayen]
|
|}
</div>
</div>
<div id="GEOTEMPLATE-PL">
==Poland==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapa Polski Targeo
| [http://mapa.targeo.pl/{title},{londegdec},{latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Szukacz.pl
| [http://mapa.szukacz.pl/?n={latdegdec}&e={londegdec}&z=3 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Zumi
| [http://www.zumi.pl/namapie.html?long={londegdec}&lat={latdegdec}&type=3&scale=3 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Autopilot
| [http://mapa.autopilot.pl/?long={londegdec}&lat={latdegdec}&zoom=12 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Polish Railways Map
| [http://www.bazakolejowa.pl/index.php?dzial=mapa#{osmzoom}/{latdegdec}/{londegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | UMP
| [http://mapa.ump.waw.pl/ump-www/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&mlat={latdegdec}&mlon={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-PT">
==Portugal==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | Instituto Geográfico do Exército <br /><small>Requires Internet Explorer</small>
| [http://www.igeoe.pt/igeoearcweb/igeoesig/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Continente] (Portuguese mainland)
|-
| [http://www.igeoe.pt/igeoearcweb/acores/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Açores]
|-
| [http://www.igeoe.pt/igeoearcweb/madeira/ExecCmd.asp?cmd=Center&Lng={londegdec}&Lat={latdegdec}&Scale=25000&SC=WGS84 Madeira]
|-
! scope="row" rowspan="3" style="font-weight:normal; text-align:left;" | SAPO <br />
| [https://mapas.sapo.pt/?o=0&M={londegdec},{latdegdec} Continente e Ilhas]
|}
</div>
<div id="GEOTEMPLATE-RU">
==Russia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (Russian) {{pipe}} {{lang|ru|Яндекс Карть}}
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex.Maps (English) {{pipe}} {{lang|ru|Яндекс Карть}}
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.com/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki {{pipe}} {{lang|ru|Космоснимки}}
| [http://www.kosmosnimki.ru/index.html#mode=map&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Map]
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lon={londegdec}&lat={latdegdec} Old Soviet Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Rambler Maps {{pipe}} {{lang|ru|Рамблер}}
| [http://maps.rambler.ru/?ll={londegdec},{latdegdec}&z={osmzoom} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Maps@Mail.ru {{pipe}} {{lang|ru|Карты@Mail.ru}}
| [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom} Map]
| [http://maps.mail.ru/#x={londegdec}&y={latdegdec}&z={zoom}&mode=satellite Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | eAtlas
| [http://www.eatlas.ru/#z={zoom}&lat={latdegdec}&lon={londegdec} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Navitel
| [http://maps.navitel.su/api/map.html?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=BF Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Progorod {{pipe}} {{lang|ru|Прогород}}
| [http://www.pro-gorod.ru/maps/?z={osmzoom}&lon={londegdec}&lat={latdegdec} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Roscosmos Geoportal
| [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Map]
| [http://geoportal.ntsomz.ru/index.php/welcome?x={londegdec}&y={latdegdec}&z={span} Satellite]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | 2GIS {{pipe}} {{lang|ru|2ГИС}}
| [https://2gis.ru/moscow/geo/4504222442088225,{latdegdec},{londegdec} Map]
|
|
|}
=== City-specific ===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Region
|-
! scope="row" style="font-weight:normal; text-align:left;" | Moscow Map {{pipe}} {{lang|ru|Карта Москвы}}
| [http://www.moscowmap.ru/imap_moscow.shtml?lat={latdegdec}&lng={londegdec}&zoom={osmzoom} Map]
| Moscow
|-
! scope="row" style="font-weight:normal; text-align:left;" | Cheboksary.ws {{pipe}} {{lang|ru|Чебоксары}}
| [http://www.cheboksary.ws/?xy={latdegdec},{londegdec}&z={osmzoom}&t=coordinate Map]
| Cheboksary
|}
<!--
[http://www.kartaspb.ru/index.php?v=2&x=14752&y=22463&z=6&pt=1]
-->
</div>
<div id="GEOTEMPLATE-SK">
==Slovakia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapy. Atlas.sk
| [http://mapy.atlas.sk/GPS%3A{latdegdec}N+{londegdec}E Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | TuristickaMapa.sk
| [http://www.turistickamapa.sk/?y={latdegdec}&x={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-SI">
==Slovenia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | [[Orthophoto]]
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Online map services of Slovenia|Geopedia]]
| [http://www.geopedia.si/#L381_T13_b4_c{latdegdec},{londegdec}_s16 Map]
| [http://www.geopedia.si/#L381_T13_b2_c{latdegdec},{londegdec}_s16 Orthophoto]
| [http://www.geopedia.si/#L381_T13_b1-3_c{latdegdec},{londegdec}_s16 Terrain]
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[GeaBios]]
| [http://www.geabios.com/html/services/maps/PublicMap.htm?lat={latdegdec}&lon={londegdec}&fov={span} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gaea+
|
|
| [http://gaeaplus.si/webstart?version=gaeaplus&command=FlyLookAt;{latdegdec};{londegdec};2500;WGS84;0.0;45.0; 3D Satellite]
|}
</div>
<div id="GEOTEMPLATE-ES">
==Spain==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Coverage
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | SigPac
| style="text-align:center" | all
| [http://sigpac.mapa.es/fega/antiguovisor/?ube={utm33easting};{utm33northing};{utm33easting};{utm33northing};33 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Vissir – ICC
| Catalonia
| [http://www.icc.cat/vissir3/?lang=eng&mp_zoom=n:{zoom}&etrs89x={londegdec}&etrs89y={latdegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Nomecalles
| Community of Madrid
| [http://gestiona.madrid.org/nomecalles/Inicio.icm?idioma=en&utmX={utmeasting}&utmY={utmnorthing}&zoom={altitude} Map]
|}
</div>
<div id="GEOTEMPLATE-SE">
==Sweden==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Eniro
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec} Map]
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};h Labeled satellite]
| [http://kartor.eniro.se/query?what=map&mapstate={zoom};{londegdec};{latdegdec};o View]
|-
! scope="row" style="font-weight:normal; text-align:left;" | hitta.se
| [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3Fz%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Map]
| [https://para.toolforge.org/geo/convert/WGS84toRT90.php?lat={latdegdec}&lon={londegdec}&url=http%3A//www.hitta.se/LargeMap.aspx%3FShowSatellite%3Dtrue%26z%3D3%26mp%3D%3Cpts%3E%3Cpt%20x%3D%22%7Brt90x%7D%22%20y%3D%22%7Brt90y%7D%22%20i%3D%22/images/point.png%22%3E%3Ct%3E{title}%3C/t%3E%3C/pt%3E%3C/pts%3E Satellite]
|
|}
</div>
<div id="GEOTEMPLATE-CH">
==Switzerland==
[[Swiss Grid]] coordinates: '''{ch1903easting} / {ch1903northing}'''
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Cantons covered
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.geo.admin.ch
| style="text-align:center" | all
| [http://map.geo.admin.ch/?zoom=5&X={ch1903northing}&Y={ch1903easting}&lang={language}&crosshair=marker Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | map.search.ch
| style="text-align:center" | all
| [http://map.search.ch/{ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | MySwitzerland.com
| style="text-align:center" | all
| [http://map.myswitzerland.com/myswitzerland/?x={ch1903easting}.00&y={ch1903northing}.00&lang={language} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapplus/Tydac
| style="text-align:center" | all
| [http://www.mapplus.ch/frame.php?map=&x={ch1903easting}&y={ch1903northing}&zl=12 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | geoportal.ch
| St. Gallen, Appenzell
| [http://www.geoportal.ch/schnittstelle/aufruf.aspx?VERSION=1.0&REQUEST=GetIGis&MAP=94&TOPIC=Coord&ATTRIBUTE1={ch1903easting}&ATTRIBUTE2={ch1903northing}&sign=0&WIDTH=2000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | AGISviewer Kanton Aargau
| Aargau
| [http://www.ag.ch/agisviewer/mapFrame.asp?MapWidth=531&MapHeight=492&bitte%20ausw%E4hlen!&Cmd=zoomIn&MinX={ch1903easting}.00001&MinY={ch1903northing}.1&MaxX={ch1903easting}.9&MaxY={ch1903northing}.9 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoPortal Basel-Stadt
| Basel-City
| [http://www.geo-bs.ch/stadtplan_stadtplan_karte.cfm?X={ch1903easting}&Y={ch1903northing}&Jump=3&Zoom=1000&ZIparkhaeuser=1&ZIspitaeler=1 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | geoView.BL
| Basel-Country
|[https://www.geo.bl.ch/parzis/automap.jsp?LAYERS=map_3&ZOOM={ch1903easting}.000001%7C{ch1903northing}.000001%7C{ch1903easting}.99%7C{ch1903northing}.99 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GéoPortail du Canton de Jura
| Jura
| [https://www.jura.ch/sit/geoportail/IndexRedir.html?Y={ch1903easting}&X={ch1903northing}&echelle=5000&theme=photoaerienne Map]
|-
! scoEast={IlocalE}pe="row" style="font-weight:normal; text-align:left;" | SITN
| Neuchâtel
|[http://sitn.ne.ch/index.html?x={ch1903easting}&y={ch1903northing}&echelle=25000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GIS Schaffhausen
| Schaffhausen
| [http://www.gis.sh.ch/gis_sh_internet/mapservice.asp?IDProjekt=3&MapServiceUserGroup=1&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@1000 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GeoShop vs.geo
| Valais
| [http://mapserver3.internetgalerie.ch/vs-geo/vs-geo.php?recenter_bbox={ch1903easting},{ch1903northing} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | ZugMap
| Zug
| [http://www.zugmap.ch/bm2_zugmap/mapservice.asp?IDProjekt=1&MapServiceUserGroup=29&MapServiceUser=0&MapServiceURL=Nav@g@22@u@West@g@{ch1903easting}@u@Nord@g@{ch1903northing}@u@B@g@5726&MapServiceDatenauswahl=89@g@94 Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | GIS-Browser Kanton Zürich
| Zurich
| [http://maps.zh.ch?topic=BASISKARTEZH&scale=10000&x={ch1903easting}&y={ch1903northing}&markers=ring Map]
|}
</div>
<div id="GEOTEMPLATE-UA">
==Ukraine==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | maps.vlasenko.net
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec} Map]
| [http://maps.vlasenko.net/?lat={latdegdec}&lon={londegdec}&addmap1=space10 Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Visicom Maps
| [http://maps.visicom.ua/#lng={londegdec};lat={latdegdec};z=6;map=ukraine_en;lngm={londegdec};latm={latdegdec}; Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
=Oceania=
<div id="GEOTEMPLATE-AU">
==Australia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Street-Directory.com.au
| [http://www.street-directory.com.au/sd_new/genmap.cgi?x={londegdec}&y={latdegdec}&sizex=800&sizey=800&level=5&star=6 Map]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Bonzle Digital Atlas
| [http://maps.bonzle.com/c/a?a=p&x={londegdec}&y={latdegdec} Map]
| [http://maps.bonzle.com/c/a?a=p&d=ter&x={londegdec}&y={latdegdec} Terrain Slice]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Australian Geographic Reference Image
|
| [http://agri.openstreetmap.org/?zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Aerial] (via [[OpenStreetMap]])
|}
</div>
=Asia=
<div id="GEOTEMPLATE-AZ">
== Azerbaijan ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | GoMap.Az
| [https://gomap.az/maps/en/@/map;lt={latdegdec};ln={londegdec};z=13 Map]
|}
</div>
<div id="GEOTEMPLATE-CN">
==China==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Baidu Maps (百度地图)
| [http://map.baidu.com/?latlng={latdegdec},{londegdec}&title={titlee}&content={titlee}&autoOpen=true&l= Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Amap (高德地图)
| [http://ditu.amap.com/regeo?lng={londegdec}&lat={latdegdec}&name={titlee} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | QQ Map (腾讯地图)
|[https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx={londegdec}&pointy={latdegdec}&name={titlee}&addr=ADDRESS Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Tianditu / Map World (天地图)
|[https://map.tianditu.gov.cn/ Map] (Indirect link)
|-
| colspan="2" style="font-size:smaller" | Due to [[restrictions on geographic data in China]], all Chinese map services provide distorted maps that are shifted from GeoHack's coordinates. You may obtain coordinates suitable for these maps from [https://artoria2e5.github.io/PRCoords/demo?lat={latdegdec}&lon={londegdec}#output this link]. (Use "WGS → BD" for Baidu and "WGS → GCJ" for all other services including Google.)
|}
<!--
Sogou [http://map.sogou.com/index.html#c=12957437.5,4833843.75,{osmzoom}] look like 100,000*{latdegdec}
^^ Can be some sort of "web mercator" too.
^^ Official api available for conversion from WGS84/GCJ02/BD coordinate into Sougou coordinate, see http://map.sogou.com/api/documentation/javascript/api2.5/examples/index.html
^^ Fed http://api.go2map.com/maps/js/api_v2.5.1.js into https://lelinhtinh.github.io/de4js/: looks like a baidu-like web mercator with big LL2MC/MC2LL arrays for polynomial work
^^ Fed the site js /v708/js/z20190219.js in there too, no direct code paths to parse normal lat-lng
Mapbar - to be investigate
-->
</div>
<div id="GEOTEMPLATE-HK">
== Hong Kong ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | CentaMap
| [https://hk.centamap.com Map] (Indirect link)
|-
!GeoInfo Map
| [https://www2.map.gov.hk/gih3/view/index.jsp Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-IN">
== India ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | Bhuvan
| [https://bhuvan-app1.nrsc.gov.in/bhuvan2d/bhuvan/bhuvan2d.php Map] (Indirect link)
|-
!scope="row" style="font-weight:normal; text-align:right;" |MapmyIndia
| [https://maps.mapmyindia.com/@{latdegdec},{londegdec} Map]
|-
!scope="row" style="font-weight:normal; text-align:right;" |Survey of India
| [https://indiamaps.gov.in/soiapp/ Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-IR">
== Iran ==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
!scope="row" style="font-weight:normal; text-align:right;" | Parsijoo map
| [https://map.parsijoo.ir/?lat={latdegdec}&lon={londegdec}&z=14 Map]
|-
!scope="row" style="font-weight:normal; text-align:right;" | Balad Maps
| [https://balad.ir/location?latitude={latdegdec}&longitude={londegdec}&zoom=16.500000 Map]
|}
</div>
<div id="GEOTEMPLATE-PS">
==Palestine==
:''In addition to Palestine Open Maps, Israeli maps tend to cover the State of Palestine fairly well.''<br /><br /><!--<br />Please do not move the Palestine entry and put it in its normal alphabetical place. It is here as part of a hack, so that it shows Israeli maps.-->
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Maps from 1870s to modern
|-
! scope="row" style="font-weight:normal; text-align:left;" | Palestine Open Maps
| [https://palopenmaps.org/view/9999/@{latdegdec},{londegdec} Maps]
|}
<div id="GEOTEMPLATE-IL">
==Israel==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Topo
! scope="col" | Historical
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Amud Anan<br />{{lang|he|עמוד ענן|rtl=yes}}
|
|
| [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec} Topo]
| [http://amudanan.co.il/?lon={londegdec}&lat={latdegdec}&map=pef 1880]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | govmap
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=0 Map]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=1 Sat.] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=2 <small>[hybrid]</small>]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=9 Topo]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=6 1935] [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=4 1940]
| [http://www.govmap.gov.il/?c={londegdec},{latdegdec}&z={zoom}&b=3 3D buildings] [http://old.govmap.gov.il/viewer.asp alt.]
|}
===City specific===
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | City
! scope="col" | Map
! scope="col" | Historical
! scope="col" | Other
|-
! rowspan="3" scope="row" style="font-weight:normal; text-align:left;" | govmap
| Haifa
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=8 1919]
|
|-
| Jerusalem
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=7 1926]
|
|-
| Tel Aviv
|
| [http://www.govmap.gov.il/?c={londegdec}%7c{latdegdec}&z={zoom}&b=5 1930]
|
|}
</div>
</div>
<div id="GEOTEMPLATE-JP">
==Japan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
! scope="col" | Other
|-
! scope="row" style="font-weight:normal; text-align:left;" | Geographical Survey Institute/CyberJapan
|
|
| [http://maps.gsi.go.jp/#15/{latdegdec}/{londegdec} Topo/Aerial], [http://cyberjapandata.gsi.go.jp/3d/site/index.html?did=std&lat={latdegdec}&lon={londegdec}&z=14 WebGL 3D]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapion
| [http://www.mapion.co.jp/m2/{latdegdec},{londegdec},{osmzoom} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | MapFan Web
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.mapfan.com/m.cgi?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yahoo! Japan
| [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom} Map]
| [http://map.yahoo.co.jp/maps?lat={latdegdec}&lon={londegdec}&z={osmzoom}&mode=aero Aero]
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Goo
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://map.goo.ne.jp/map.php?MAP={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}}} Map]
|
|
|-
! scope="row" style="font-weight:normal; text-align:left;" | Its-mo Guide
| [{{fullurl:toollabs:para/geo/convert/wgs2tky|q={latdegdec},{londegdec}&url=http://www.its-mo.com/z.htm?m={lonEW}{londegabsjp}.{lonminintjp}.{lonsecdecjp}{latNS}{latdegabsjp}.{latminintjp}.{latsecdecjp}&l=8}} Map]
|
|
|}
</div>
<div id="GEOTEMPLATE-KZ">
==Kazakhstan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
! scope="col" | Satellite
|-
! scope="row" style="font-weight:normal; text-align:left;" | Yandex Maps
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=map&pt={londegdec},{latdegdec} Map]
| [https://maps.yandex.ru/?ll={londegdec},{latdegdec}&spn={span},{span}&l=sat&pt={londegdec},{latdegdec} Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Kosmosnimki
|
| [http://www.kosmosnimki.ru/index.html#mode=satellite&x={londegdec}&y={latdegdec}&z=12&fullscreen=true Satellite]
|-
! scope="row" style="font-weight:normal; text-align:left;" | LatLon.org: Navitel
| [http://latlon.org/maxi?zoom={osmzoom}&lat={latdegdec}&lon={londegdec}&layers=000000B0000000FT Map]
|
|}
</div>
<div id="GEOTEMPLATE-MO">
==Macao==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Mapa On-line de Macau
| [https://webmap.gis.gov.mo/InetGIS/port/index.html Map] (Indirect link)
|}
</div>
<div id="GEOTEMPLATE-SG">
==Singapore==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Gothere
| [http://gothere.sg/maps#q:@{latdegdec}%2C%20{londegdec}: Map]
|}
</div>
<div id="GEOTEMPLATE-KO">
==South Korea==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" |Naver Map
| [https://map.naver.com/?lat={latdegdec}&lng={londegdec} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" |Kakao Map
| [https://map.kakao.com/link/map/{latdegdec},{londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-TW">
==Taiwan==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Urmap
| [http://www.urmap.com/map?center={latdegdec},{londegdec}&zoom={osmzoom} Map]
|-
! scope="row" style="font-weight:normal; text-align:left;" | Taiwan Map Service
| [https://maps.nlsc.gov.tw/T09E/mapshow.action?lat={latdegdec}?lon={londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-TH">
==Thailand==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Longdo Map
| [https://map.longdo.com/?locale=en&search={latdegdec},{londegdec} Map]
|}
</div>
=South America=
No specific resources added yet.
=Africa=
<div id="GEOTEMPLATE-NA">
==Namibia==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | South African Chief Directorate: Surveys and Mapping 1:50k Topographic (1970s/1980s)
| [https://namibia-topo.openstreetmap.org.za/#zoom={osmzoom}&lat={latdegdec}&lon={londegdec} Map] (via OpenStreetMap South Africa)
|}
</div>
<div id="GEOTEMPLATE-ZA">
==South Africa==
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | [[Chief Directorate: National Geo-spatial Information]] aerial
| [http://aerial.openstreetmap.org.za/?lon={londegdec}&lat={latdegdec}&zoom={osmzoom} Aerial Imagery] (via OpenStreetMap South Africa)
|}
</div>
<div id="GEOTEMPLATE-AQ"><div id="GEOTEMPLATE-XS"><!--XS: Wiki assigned code elements per [[de:Vorlage:Coordinate#Ozeane]] for Southern Ocean -->
=Antarctica=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Antarctic Digital Database Map Viewer
| [https://www.add.scar.org/ Map] (Indirect link)
|}
</div></div>
<div id="GEOTEMPLATE-XN">
=Arctic=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Arctic Web Map
| [https://webmap.arcticconnect.ca/index.html#ac_3573/{osmzoom}/{latdegdec}/{londegdec} Map]
|}
</div>
<div id="GEOTEMPLATE-XZ">
=International waters (XZ)=
{| class="geoservices" border="1" cellpadding="2" style="border:silver 1px solid; border-collapse:collapse;"
|- style="background:#efefef"
! scope="col" | Service
! scope="col" | Map
|-
! scope="row" style="font-weight:normal; text-align:left;" | Open Sea Map
| [https://map.openseamap.org/?zoom=14&lat={latdegdec}&lon={londegdec} Map]
|}
</div>
<!-- End region-specific -->
</div><noinclude>
{{documentation|Template:GeoTemplate/doc}}
</noinclude>
f660ba8db3681adb40f06e1a48d7a6ab1c479523
Module:Lang/data
828
465
3132
3131
2023-11-09T20:07:30Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Lang/data]]
Scribunto
text/plain
local lang_obj = mw.language.getContentLanguage();
local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag
--[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------
primary table of tables that decode:
lang -> language tags and names
script -> ISO 15924 script tags
region -> ISO 3166 region tags
variant -> iana registered variant tags
suppressed -> map of scripts tags and their associated language tags
all of these data come from separate modules that are derived from the IANA language-subtag-registry file
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches
the first name.
]]
local function key_to_lower (module, src_type)
local out = {};
local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data
if 'var_sup' == src_type then
for k, v in pairs (source) do
out[k:lower()] = v; -- for variant and suppressed everything is needed
end
elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active)
for k, v in pairs (source.active) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated)
for k, v in pairs (source.deprecated) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
else -- here for all other sources
for k, v in pairs (source) do
out[k:lower()] = v[1]; -- ignore multiple names; take first name only
end
end
return out;
end
local lang_name_table_t = {
lang = key_to_lower ('Module:Language/data/iana languages', 'lang'),
lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'),
script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower
region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower
variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'),
suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower
}
--[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >--------------------------------
For internationalization; not used at en.wiki
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.
Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names
in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki
language list for the local language.
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.
When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens
add an appropriate entry to the override table below.
Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply
spelling differences:
bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho
bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym
dv: IANA: Dhivehi MW: Divehi
el: IANA: Modern Greek MW: Greek
ht: IANA: Haitian MW: Haitian Creole
ky: IANA: Kirghiz MW: Kyrgyz
li: IANA: Limburgan MW: Limburgish
or: IANA: Oriya MW: Odia
os: IANA: Ossetian MW: Ossetic
"pa: IANA: Panjabi MW: Punjabi
"ps: IANA: Pushto MW: Pashto
"to: IANA: Tonga MW: Tongan
"ug: IANA: Uighur MW: Uyghur
use the override table to override language names that are incorrect for your project
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:
=mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all'))
(replacing <tag> with the language tag for your language)
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.
]]
local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki
-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all
if true == media_wiki_override_enable then
local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki
for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list
if lang_name_table_t.lang[tag] then -- if the tag is in the main list
lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki
end
end
end
--[[--------------------------< O V E R R I D E >--------------------------------------------------------------
Language codes and names in this table override the BCP47 names in lang_name_table.
indexes in this table shall always be lower case
]]
local override = {
------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------
["ab"] = "Abkhaz", -- to match en.wiki article name
["ca-valencia"] = "Valencian",
["cu"] = "Church Slavonic", -- 2nd IANA name;
["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names
["de-ch"] = "Swiss Standard German",
["en-au"] = "Australian English",
["en-ca"] = "Canadian English",
["en-emodeng"] = "Early Modern English",
["en-gb"] = "British English",
["en-ie"] = "Irish English",
["en-in"] = "Indian English",
["en-nz"] = "New Zealand English",
["en-us"] = "American English",
["en-za"] = "South African English",
["fy"] = "West Frisian", -- Western Frisian
["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title
["nl-be"] = "Flemish", -- match MediaWiki
["oc-provenc"] = "Provençal",
["ps"] = "Pashto", -- Pushto
["pt-br"] = "Brazilian Portuguese", -- match MediaWiki
["tw-asante"] = "Asante Twi",
["ug"] = "Uyghur", -- 2nd IANA name; to match en.wiki article name
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["av"] = "Avar", -- Avaric
["bo"] = "Standard Tibetan", -- Tibetan
["el"] = "Greek", -- Modern Greek
-- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa
["ff"] = "Fula", -- Fulah
["ht"] = "Haitian Creole", -- Haitian
["hz"] = "Otjiherero", -- Herero
["ii"] = "Yi", -- Sichuan Yi
["ki"] = "Gikuyu", -- Kikuyu
["kl"] = "Greenlandic", -- Kalaallisut
["ky"] = "Kyrgyz", -- Kirghiz
["lg"] = "Luganda", -- Ganda
["li"] = "Limburgish", -- Limburgan
["mi"] = "Māori", -- Maori
["na"] = "Nauruan", -- Nauru
["nb"] = "Bokmål", -- Norwegian Bokmål
["nd"] = "Northern Ndebele", -- North Ndebele
["nn"] = "Nynorsk", -- Norwegian Nynorsk
["nr"] = "Southern Ndebele", -- South Ndebele
["ny"] = "Chichewa", -- Nyanja
["oj"] = "Ojibwe", -- Ojibwa
["or"] = "Odia", -- Oriya
["pa"] = "Punjabi", -- Panjabi
["rn"] = "Kirundi", -- Rundi
["sl"] = "Slovene", -- Slovenian
["ss"] = "Swazi", -- Swati
["st"] = "Sotho", -- Southern Sotho
["to"] = "Tongan", -- Tonga
--<end do-not-edit except to comment out>--
------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >----------------------------------------------
["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash)
["arc"] = "Imperial Aramaic (700-300 BCE)", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 'preferred' name
["art"] = "constructed", -- to match en.wiki article; lowercase for category name
["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title
["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title
["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration;
["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat
["bxr"] = "Russian Buryat", -- Russia Buriat;
["bxu"] = "Chinese Buryat", -- China Buriat;
["byr"] = "Yipma", -- Baruya, Yipma
["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic
["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title
["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash)
["frr"] = "North Frisian", -- Northern Frisian
["frs"] = "East Frisian Low Saxon", -- Eastern Frisian
["gsw-fr"] = "Alsatian", -- match MediaWiki
["haa"] = "Hän", -- Han; to match en.wiki article title
["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash)
["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title
["jam"] = "Jamaican Patois", -- Jamaican Creole English
["lij-mc"] = "Monégasque", -- Ligurian as spoken in Monaco
["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo
["mhr"] = "Meadow Mari", -- Eastern Mari
["mid"] = "Modern Mandaic", -- Mandaic
['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope;
["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash)
["mla"] = "Tamambo", -- Malo
['mte'] = "Mono-Alu", -- Mono (Solomon Islands)
['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope;
["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title
["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title
["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash)
["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title
["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text
["nrf-gg"] = "Guernésiais", -- match MediaWiki
["nrf-je"] = "Jèrriais", -- match MediaWiki
["nzi"] = "Nzema", -- Nzima; to match en.wiki article title
["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash)
["orv"] = "Old East Slavic", -- Old Russian
["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article
["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article
["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title
["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()
["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article
["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title
["stq"] = "Saterland Frisian", -- Saterfriesisch
["und"] = "undetermined", -- capitalization to match existing category
["wrg"] = "Warrongo", -- Warungu
["xal-ru"] = "Kalmyk", -- to match en.wiki article title
["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño
["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title
["zxx"] = "no linguistic content", -- capitalization
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages
--<begin do-not-edit except to comment out>--
["ace"] = "Acehnese", -- Achinese
["aec"] = "Sa'idi Arabic", -- Saidi Arabic
["akl"] = "Aklan", -- Aklanon
["alt"] = "Altay", -- Southern Altai
["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache
["bal"] = "Balochi", -- Baluchi
-- ["bcl"] = "Central Bicolano", -- Central Bikol
["bin"] = "Edo", -- Bini
["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya
["chg"] = "Chagatay", -- Chagatai
["ckb"] = "Sorani Kurdish", -- Central Kurdish
["cnu"] = "Shenwa", -- Chenoua
["coc"] = "Cocopah", -- Cocopa
["diq"] = "Zazaki", -- Dimli
["fit"] = "Meänkieli", -- Tornedalen Finnish
["fkv"] = "Kven", -- Kven Finnish
["frk"] = "Old Frankish", -- Frankish
["gez"] = "Ge'ez", -- Geez
["gju"] = "Gujari", -- Gujari
["gsw"] = "Alemannic German", -- Swiss German
["gul"] = "Gullah", -- Sea Island Creole English
["hak"] = "Hakka", -- Hakka Chinese
["hbo"] = "Biblical Hebrew", -- Ancient Hebrew
["hnd"] = "Hindko", -- Southern Hindko
-- ["ikt"] = "Inuvialuk", -- Inuinnaqtun
["kaa"] = "Karakalpak", -- Kara-Kalpak
["khb"] = "Tai Lü", -- Lü
["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish
["kpo"] = "Kposo", -- Ikposo
["krj"] = "Kinaray-a", -- Kinaray-A
["ktz"] = "Juǀ'hoan", -- Juǀʼhoan
["lez"] = "Lezgian", -- Lezghian
["liv"] = "Livonian", -- Liv
["lng"] = "Lombardic", -- Langobardic
["mia"] = "Miami-Illinois", -- Miami
["miq"] = "Miskito", -- Mískito
["mix"] = "Mixtec", -- Mixtepec Mixtec
["mni"] = "Meitei", -- Manipuri
["mrj"] = "Hill Mari", -- Western Mari
["mww"] = "White Hmong", -- Hmong Daw
["nds-nl"] = "Dutch Low Saxon", -- Low German
-- ["new"] = "Nepal Bhasa", -- Newari
["nso"] = "Northern Sotho", -- Pedi
-- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari
["ood"] = "O'odham", -- Tohono O'odham
["otk"] = "Old Turkic", -- Old Turkish
["pal"] = "Middle Persian", -- Pahlavi
["pam"] = "Kapampangan", -- Pampanga
["phr"] = "Potwari", -- Pahari-Potwari
["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit
-- ["pnb"] = "Punjabi", -- Western Panjabi
["psu"] = "Shauraseni", -- Sauraseni Prākrit
["rap"] = "Rapa Nui", -- Rapanui
["rar"] = "Cook Islands Māori", -- Rarotongan
["rmu"] = "Scandoromani", -- Tavringer Romani
["rom"] = "Romani", -- Romany
["rup"] = "Aromanian", -- Macedo-Romanian
["ryu"] = "Okinawan", -- Central Okinawan
["sdc"] = "Sassarese", -- Sassarese Sardinian
["sdn"] = "Gallurese", -- Gallurese Sardinian
["shp"] = "Shipibo", -- Shipibo-Conibo
["src"] = "Logudorese", -- Logudorese Sardinian
["sro"] = "Campidanese", -- Campidanese Sardinian
["tkl"] = "Tokelauan", -- Tokelau
["tvl"] = "Tuvaluan", -- Tuvalu
["tyv"] = "Tuvan", -- Tuvinian
["vls"] = "West Flemish", -- Vlaams
["wep"] = "Westphalian", -- Westphalien
["xal"] = "Oirat", -- Kalmyk
["xcl"] = "Old Armenian", -- Classical Armenian
["yua"] = "Yucatec Maya", -- Yucateco
--<end do-not-edit except to comment out>--
------------------------------< P R I V A T E _ U S E _ T A G S >----------------------------------------------
["akk-x-latbabyl"] = "Late Babylonian",
["akk-x-midassyr"] = "Middle Assyrian Akkadian",
["akk-x-midbabyl"] = "Middle Babylonian Akkadian",
["akk-x-neoassyr"] = "Neo-Assyrian Akkadian",
["akk-x-neobabyl"] = "Neo-Babylonian Akkadian",
["akk-x-old"] = "Old Akkadian",
["akk-x-oldassyr"] = "Old Assyrian Akkadian",
["akk-x-oldbabyl"] = "Old Babylonian Akkadian",
["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages
["ca-x-old"] = "Old Catalan",
["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages
["egy-x-demotic"] = "Demotic Egyptian",
["egy-x-late"] = "Late Egyptian",
["egy-x-middle"] = "Middle Egyptian",
["egy-x-old"] = "Old Egyptian",
["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages
["gmw-x-ecg"] = "East Central German",
["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre
["grc-x-attic"] = "Attic Greek",
["grc-x-biblical"] = "Biblical Greek",
["grc-x-byzant"] = "Byzantine Greek",
["grc-x-classic"] = "Classical Greek",
["grc-x-doric"] = "Doric Greek",
["grc-x-hellen"] = "Hellenistic Greek",
["grc-x-ionic"] = "Ionic Greek",
["grc-x-koine"] = "Koinē Greek",
["grc-x-medieval"] = "Medieval Greek",
["grc-x-patris"] = "Patristic Greek",
["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages
["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages
["inc-x-mitanni"] = "Mitanni-Aryan", -- inc in IANA is Indic languages
["inc-x-proto"] = "Proto-Indo-Aryan",
["ine-x-proto"] = "Proto-Indo-European",
["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages
["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages
["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there
["la-x-medieval"] = "Medieval Latin",
["la-x-new"] = "New Latin",
["lmo-x-milanese"] = "Milanese", -- lmo in IANA is Lombard; Milanese is a dialect
["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages
["prg-x-old"] = "Old Prussian",
["sem-x-ammonite"] = "Ammonite",
["sem-x-aramaic"] = "Aramaic",
["sem-x-canaan"] = "Canaanite languages",
["sem-x-dumaitic"] = "Dumaitic",
["sem-x-egurage"] = "Eastern Gurage",
["sem-x-hatran"] = "Hatran Aramaic",
["sem-x-oldsoara"] = "Old South Arabian",
["sem-x-palmyren"] = "Palmyrene Aramaic",
["sem-x-proto"] = "Proto-Semitic",
["sem-x-taymanit"] = "Taymanitic",
["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages
["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai
["yuf-x-wal"] = "Walapai",
["yuf-x-yav"] = "Yavapai",
["xsc-x-pontic"] = "Pontic Scythian", -- xsc in IANA is Scythian
["xsc-x-saka"] = "Saka",
["xsc-x-sarmat"] = "Sarmatian",
}
--[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------
for those rare occasions when article titles don't fit with the normal '<language name>-language', this table
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as
that is the long-standing method of handling article names that don't fit with the normal pattern
]]
local article_name = {
['kue'] = "Kuman language (New Guinea)", -- Kuman (Papua New Guinea); to avoid Kuman dab page
["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab
['mbo'] = "Mbo language (Cameroon)", -- Mbo (Cameroon)
['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages
['mnr'] = "Mono language (California)", -- Mono (USA)
['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon)
['qwm'] = "Kuman (Russia)", -- Kuman (Russia); to avoid Kuman dab page
["snq"] = "Sangu language (Gabon)", -- Sangu (Gabon)
["toi"] = "Tonga language (Zambia and Zimbabwe)", -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page
["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab
["zmw"] = "Mbo language (Congo)", -- Mbo (Democratic Republic of Congo)
}
--[=[-------------------------< R T L _ S C R I P T S >--------------------------------------------------------
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]
last update to this list: 2017-12-24
]=]
local rtl_scripts = {
'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr',
'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb',
'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg',
'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole',
};
--[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------
This is a table of tables of transliteration standards and the language codes or language scripts that apply to
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed
by some of the {{lang-??}} templates.
These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for
the cases when no |std= parameter value is provided.
]]
local translit_title_table = {
['ahl'] = {
['default'] = 'Academy of the Hebrew Language transliteration',
},
['ala'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['ala-lc'] = {
['default'] = 'American Library Association – Library of Congress transliteration',
},
['batr'] = {
['default'] = 'Bikdash Arabic Transliteration Rules',
},
['bgn/pcgn'] = {
['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration',
},
['din'] = {
['ar'] = 'DIN 31635 Arabic',
['fa'] = 'DIN 31635 Arabic',
['ku'] = 'DIN 31635 Arabic',
['ps'] = 'DIN 31635 Arabic',
['tg'] = 'DIN 31635 Arabic',
['ug'] = 'DIN 31635 Arabic',
['ur'] = 'DIN 31635 Arabic',
['arab'] = 'DIN 31635 Arabic',
['default'] = 'DIN transliteration',
},
['eae'] = {
['default'] = 'Encyclopaedia Aethiopica transliteration',
},
['hepburn'] = {
['default'] = 'Hepburn transliteration',
},
['hunterian'] = {
['default'] = 'Hunterian transliteration',
},
['iast'] = {
['default'] = 'International Alphabet of Sanskrit transliteration',
},
['iso'] = { -- when a transliteration standard is supplied
['ab'] = 'ISO 9 Cyrillic',
['ba'] = 'ISO 9 Cyrillic',
['be'] = 'ISO 9 Cyrillic',
['bg'] = 'ISO 9 Cyrillic',
['kk'] = 'ISO 9 Cyrillic',
['ky'] = 'ISO 9 Cyrillic',
['mn'] = 'ISO 9 Cyrillic',
['ru'] = 'ISO 9 Cyrillic',
['tg'] = 'ISO 9 Cyrillic',
['uk'] = 'ISO 9 Cyrillic',
['bua'] = 'ISO 9 Cyrillic',
['sah'] = 'ISO 9 Cyrillic',
['tut'] = 'ISO 9 Cyrillic',
['xal'] = 'ISO 9 Cyrillic',
['cyrl'] = 'ISO 9 Cyrillic',
['ar'] = 'ISO 233 Arabic',
['ku'] = 'ISO 233 Arabic',
['ps'] = 'ISO 233 Arabic',
['ug'] = 'ISO 233 Arabic',
['ur'] = 'ISO 233 Arabic',
['arab'] = 'ISO 233 Arabic',
['he'] = 'ISO 259 Hebrew',
['yi'] = 'ISO 259 Hebrew',
['hebr'] = 'ISO 259 Hebrew',
['el'] = 'ISO 843 Greek',
['grc'] = 'ISO 843 Greek',
['ja'] = 'ISO 3602 Japanese',
['hira'] = 'ISO 3602 Japanese',
['hrkt'] = 'ISO 3602 Japanese',
['jpan'] = 'ISO 3602 Japanese',
['kana'] = 'ISO 3602 Japanese',
['zh'] = 'ISO 7098 Chinese',
['chi'] = 'ISO 7098 Chinese',
['pny'] = 'ISO 7098 Chinese',
['zho'] = 'ISO 7098 Chinese',
-- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani?
['hans'] = 'ISO 7098 Chinese',
['hant'] = 'ISO 7098 Chinese',
['ka'] = 'ISO 9984 Georgian',
['kat'] = 'ISO 9984 Georgian',
['arm'] = 'ISO 9985 Armenian',
['hy'] = 'ISO 9985 Armenian',
['th'] = 'ISO 11940 Thai',
['tha'] = 'ISO 11940 Thai',
['ko'] = 'ISO 11941 Korean',
['kor'] = 'ISO 11941 Korean',
['awa'] = 'ISO 15919 Indic',
['bho'] = 'ISO 15919 Indic',
['bn'] = 'ISO 15919 Indic',
['bra'] = 'ISO 15919 Indic',
['doi'] = 'ISO 15919 Indic',
['dra'] = 'ISO 15919 Indic',
['gon'] = 'ISO 15919 Indic',
['gu'] = 'ISO 15919 Indic',
['hi'] = 'ISO 15919 Indic',
['hno'] = 'ISO 15919 Indic',
['inc'] = 'ISO 15919 Indic',
['kn'] = 'ISO 15919 Indic',
['kok'] = 'ISO 15919 Indic',
['ks'] = 'ISO 15919 Indic',
['mag'] = 'ISO 15919 Indic',
['mai'] = 'ISO 15919 Indic',
['ml'] = 'ISO 15919 Indic',
['mr'] = 'ISO 15919 Indic',
['ne'] = 'ISO 15919 Indic',
['new'] = 'ISO 15919 Indic',
['or'] = 'ISO 15919 Indic',
['pa'] = 'ISO 15919 Indic',
['pnb'] = 'ISO 15919 Indic',
['raj'] = 'ISO 15919 Indic',
['sa'] = 'ISO 15919 Indic',
['sat'] = 'ISO 15919 Indic',
['sd'] = 'ISO 15919 Indic',
['si'] = 'ISO 15919 Indic',
['skr'] = 'ISO 15919 Indic',
['ta'] = 'ISO 15919 Indic',
['tcy'] = 'ISO 15919 Indic',
['te'] = 'ISO 15919 Indic',
['beng'] = 'ISO 15919 Indic',
['brah'] = 'ISO 15919 Indic',
['deva'] = 'ISO 15919 Indic',
['gujr'] = 'ISO 15919 Indic',
['guru'] = 'ISO 15919 Indic',
['knda'] = 'ISO 15919 Indic',
['mlym'] = 'ISO 15919 Indic',
['orya'] = 'ISO 15919 Indic',
['sinh'] = 'ISO 15919 Indic',
['taml'] = 'ISO 15919 Indic',
['telu'] = 'ISO 15919 Indic',
['default'] = 'ISO transliteration',
},
['jyutping'] = {
['default'] = 'Jyutping transliteration',
},
['mlcts'] = {
['default'] = 'Myanmar Language Commission Transcription System',
},
['mr'] = {
['default'] = 'McCune–Reischauer transliteration',
},
['nihon-shiki'] = {
['default'] = 'Nihon-shiki transliteration',
},
['no_std'] = { -- when no transliteration standard is supplied
['akk'] = 'Semitic transliteration',
['sem'] = 'Semitic transliteration',
['phnx'] = 'Semitic transliteration',
['xsux'] = 'Cuneiform transliteration',
},
['pinyin'] = {
['default'] = 'Pinyin transliteration',
},
['rr'] = {
['default'] = 'Revised Romanization of Korean transliteration',
},
['rtgs'] = {
['default'] = 'Royal Thai General System of Transcription',
},
['satts'] = {
['default'] = 'Standard Arabic Technical Transliteration System transliteration',
},
['scientific'] = {
['default'] = 'scientific transliteration',
},
['ukrainian'] = {
['default'] = 'Ukrainian National system of romanization',
},
['ungegn'] = {
['default'] = 'United Nations Group of Experts on Geographical Names transliteration',
},
['wadegile'] = {
['default'] = 'Wade–Giles transliteration',
},
['wehr'] = {
['default'] = 'Hans Wehr transliteration',
},
};
return
{
this_wiki_lang_tag = this_wiki_lang_tag,
this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction
article_name = article_name,
lang_name_table = lang_name_table_t,
override = override,
rtl_scripts = rtl_scripts,
special_tags_table = special_tags_table,
translit_title_table = translit_title_table,
};
120387552d6d88bcddb6260de37dcd404c28ccdf
Module:Language/data/iana languages
828
468
3134
3133
2023-11-09T20:07:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_languages]]
Scribunto
text/plain
-- File-Date: 2023-10-16
local active = {
["aa"] = {"Afar"},
["ab"] = {"Abkhazian"},
["ae"] = {"Avestan"},
["af"] = {"Afrikaans"},
["ak"] = {"Akan"},
["am"] = {"Amharic"},
["an"] = {"Aragonese"},
["ar"] = {"Arabic"},
["as"] = {"Assamese"},
["av"] = {"Avaric"},
["ay"] = {"Aymara"},
["az"] = {"Azerbaijani"},
["ba"] = {"Bashkir"},
["be"] = {"Belarusian"},
["bg"] = {"Bulgarian"},
["bh"] = {"Bihari languages"},
["bi"] = {"Bislama"},
["bm"] = {"Bambara"},
["bn"] = {"Bengali", "Bangla"},
["bo"] = {"Tibetan"},
["br"] = {"Breton"},
["bs"] = {"Bosnian"},
["ca"] = {"Catalan", "Valencian"},
["ce"] = {"Chechen"},
["ch"] = {"Chamorro"},
["co"] = {"Corsican"},
["cr"] = {"Cree"},
["cs"] = {"Czech"},
["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"},
["cv"] = {"Chuvash"},
["cy"] = {"Welsh"},
["da"] = {"Danish"},
["de"] = {"German"},
["dv"] = {"Dhivehi", "Divehi", "Maldivian"},
["dz"] = {"Dzongkha"},
["ee"] = {"Ewe"},
["el"] = {"Modern Greek (1453-)"},
["en"] = {"English"},
["eo"] = {"Esperanto"},
["es"] = {"Spanish", "Castilian"},
["et"] = {"Estonian"},
["eu"] = {"Basque"},
["fa"] = {"Persian"},
["ff"] = {"Fulah"},
["fi"] = {"Finnish"},
["fj"] = {"Fijian"},
["fo"] = {"Faroese"},
["fr"] = {"French"},
["fy"] = {"Western Frisian"},
["ga"] = {"Irish"},
["gd"] = {"Scottish Gaelic", "Gaelic"},
["gl"] = {"Galician"},
["gn"] = {"Guarani"},
["gu"] = {"Gujarati"},
["gv"] = {"Manx"},
["ha"] = {"Hausa"},
["he"] = {"Hebrew"},
["hi"] = {"Hindi"},
["ho"] = {"Hiri Motu"},
["hr"] = {"Croatian"},
["ht"] = {"Haitian", "Haitian Creole"},
["hu"] = {"Hungarian"},
["hy"] = {"Armenian"},
["hz"] = {"Herero"},
["ia"] = {"Interlingua (International Auxiliary Language Association)"},
["id"] = {"Indonesian"},
["ie"] = {"Interlingue", "Occidental"},
["ig"] = {"Igbo"},
["ii"] = {"Sichuan Yi", "Nuosu"},
["ik"] = {"Inupiaq"},
["io"] = {"Ido"},
["is"] = {"Icelandic"},
["it"] = {"Italian"},
["iu"] = {"Inuktitut"},
["ja"] = {"Japanese"},
["jv"] = {"Javanese"},
["ka"] = {"Georgian"},
["kg"] = {"Kongo"},
["ki"] = {"Kikuyu", "Gikuyu"},
["kj"] = {"Kuanyama", "Kwanyama"},
["kk"] = {"Kazakh"},
["kl"] = {"Kalaallisut", "Greenlandic"},
["km"] = {"Khmer", "Central Khmer"},
["kn"] = {"Kannada"},
["ko"] = {"Korean"},
["kr"] = {"Kanuri"},
["ks"] = {"Kashmiri"},
["ku"] = {"Kurdish"},
["kv"] = {"Komi"},
["kw"] = {"Cornish"},
["ky"] = {"Kirghiz", "Kyrgyz"},
["la"] = {"Latin"},
["lb"] = {"Luxembourgish", "Letzeburgesch"},
["lg"] = {"Ganda", "Luganda"},
["li"] = {"Limburgan", "Limburger", "Limburgish"},
["ln"] = {"Lingala"},
["lo"] = {"Lao"},
["lt"] = {"Lithuanian"},
["lu"] = {"Luba-Katanga"},
["lv"] = {"Latvian"},
["mg"] = {"Malagasy"},
["mh"] = {"Marshallese"},
["mi"] = {"Maori"},
["mk"] = {"Macedonian"},
["ml"] = {"Malayalam"},
["mn"] = {"Mongolian"},
["mr"] = {"Marathi"},
["ms"] = {"Malay (macrolanguage)"},
["mt"] = {"Maltese"},
["my"] = {"Burmese"},
["na"] = {"Nauru"},
["nb"] = {"Norwegian Bokmål"},
["nd"] = {"North Ndebele"},
["ne"] = {"Nepali (macrolanguage)"},
["ng"] = {"Ndonga"},
["nl"] = {"Dutch", "Flemish"},
["nn"] = {"Norwegian Nynorsk"},
["no"] = {"Norwegian"},
["nr"] = {"South Ndebele"},
["nv"] = {"Navajo", "Navaho"},
["ny"] = {"Nyanja", "Chewa", "Chichewa"},
["oc"] = {"Occitan (post 1500)"},
["oj"] = {"Ojibwa"},
["om"] = {"Oromo"},
["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"},
["os"] = {"Ossetian", "Ossetic"},
["pa"] = {"Panjabi", "Punjabi"},
["pi"] = {"Pali"},
["pl"] = {"Polish"},
["ps"] = {"Pushto", "Pashto"},
["pt"] = {"Portuguese"},
["qu"] = {"Quechua"},
["rm"] = {"Romansh"},
["rn"] = {"Rundi"},
["ro"] = {"Romanian", "Moldavian", "Moldovan"},
["ru"] = {"Russian"},
["rw"] = {"Kinyarwanda"},
["sa"] = {"Sanskrit"},
["sc"] = {"Sardinian"},
["sd"] = {"Sindhi"},
["se"] = {"Northern Sami"},
["sg"] = {"Sango"},
["sh"] = {"Serbo-Croatian"},
["si"] = {"Sinhala", "Sinhalese"},
["sk"] = {"Slovak"},
["sl"] = {"Slovenian"},
["sm"] = {"Samoan"},
["sn"] = {"Shona"},
["so"] = {"Somali"},
["sq"] = {"Albanian"},
["sr"] = {"Serbian"},
["ss"] = {"Swati"},
["st"] = {"Southern Sotho"},
["su"] = {"Sundanese"},
["sv"] = {"Swedish"},
["sw"] = {"Swahili (macrolanguage)"},
["ta"] = {"Tamil"},
["te"] = {"Telugu"},
["tg"] = {"Tajik"},
["th"] = {"Thai"},
["ti"] = {"Tigrinya"},
["tk"] = {"Turkmen"},
["tl"] = {"Tagalog"},
["tn"] = {"Tswana"},
["to"] = {"Tonga (Tonga Islands)"},
["tr"] = {"Turkish"},
["ts"] = {"Tsonga"},
["tt"] = {"Tatar"},
["tw"] = {"Twi"},
["ty"] = {"Tahitian"},
["ug"] = {"Uighur", "Uyghur"},
["uk"] = {"Ukrainian"},
["ur"] = {"Urdu"},
["uz"] = {"Uzbek"},
["ve"] = {"Venda"},
["vi"] = {"Vietnamese"},
["vo"] = {"Volapük"},
["wa"] = {"Walloon"},
["wo"] = {"Wolof"},
["xh"] = {"Xhosa"},
["yi"] = {"Yiddish"},
["yo"] = {"Yoruba"},
["za"] = {"Zhuang", "Chuang"},
["zh"] = {"Chinese"},
["zu"] = {"Zulu"},
["aaa"] = {"Ghotuo"},
["aab"] = {"Alumu-Tesu"},
["aac"] = {"Ari"},
["aad"] = {"Amal"},
["aae"] = {"Arbëreshë Albanian"},
["aaf"] = {"Aranadan"},
["aag"] = {"Ambrak"},
["aah"] = {"Abu' Arapesh"},
["aai"] = {"Arifama-Miniafia"},
["aak"] = {"Ankave"},
["aal"] = {"Afade"},
["aan"] = {"Anambé"},
["aao"] = {"Algerian Saharan Arabic"},
["aap"] = {"Pará Arára"},
["aaq"] = {"Eastern Abnaki"},
["aas"] = {"Aasáx"},
["aat"] = {"Arvanitika Albanian"},
["aau"] = {"Abau"},
["aav"] = {"Austro-Asiatic languages"},
["aaw"] = {"Solong"},
["aax"] = {"Mandobo Atas"},
["aaz"] = {"Amarasi"},
["aba"] = {"Abé"},
["abb"] = {"Bankon"},
["abc"] = {"Ambala Ayta"},
["abd"] = {"Manide"},
["abe"] = {"Western Abnaki"},
["abf"] = {"Abai Sungai"},
["abg"] = {"Abaga"},
["abh"] = {"Tajiki Arabic"},
["abi"] = {"Abidji"},
["abj"] = {"Aka-Bea"},
["abl"] = {"Lampung Nyo"},
["abm"] = {"Abanyom"},
["abn"] = {"Abua"},
["abo"] = {"Abon"},
["abp"] = {"Abellen Ayta"},
["abq"] = {"Abaza"},
["abr"] = {"Abron"},
["abs"] = {"Ambonese Malay"},
["abt"] = {"Ambulas"},
["abu"] = {"Abure"},
["abv"] = {"Baharna Arabic"},
["abw"] = {"Pal"},
["abx"] = {"Inabaknon"},
["aby"] = {"Aneme Wake"},
["abz"] = {"Abui"},
["aca"] = {"Achagua"},
["acb"] = {"Áncá"},
["acd"] = {"Gikyode"},
["ace"] = {"Achinese"},
["acf"] = {"Saint Lucian Creole French"},
["ach"] = {"Acoli"},
["aci"] = {"Aka-Cari"},
["ack"] = {"Aka-Kora"},
["acl"] = {"Akar-Bale"},
["acm"] = {"Mesopotamian Arabic"},
["acn"] = {"Achang"},
["acp"] = {"Eastern Acipa"},
["acq"] = {"Ta'izzi-Adeni Arabic"},
["acr"] = {"Achi"},
["acs"] = {"Acroá"},
["act"] = {"Achterhoeks"},
["acu"] = {"Achuar-Shiwiar"},
["acv"] = {"Achumawi"},
["acw"] = {"Hijazi Arabic"},
["acx"] = {"Omani Arabic"},
["acy"] = {"Cypriot Arabic"},
["acz"] = {"Acheron"},
["ada"] = {"Adangme"},
["adb"] = {"Atauran"},
["add"] = {"Lidzonka", "Dzodinka"},
["ade"] = {"Adele"},
["adf"] = {"Dhofari Arabic"},
["adg"] = {"Andegerebinha"},
["adh"] = {"Adhola"},
["adi"] = {"Adi"},
["adj"] = {"Adioukrou"},
["adl"] = {"Galo"},
["adn"] = {"Adang"},
["ado"] = {"Abu"},
["adq"] = {"Adangbe"},
["adr"] = {"Adonara"},
["ads"] = {"Adamorobe Sign Language"},
["adt"] = {"Adnyamathanha"},
["adu"] = {"Aduge"},
["adw"] = {"Amundava"},
["adx"] = {"Amdo Tibetan"},
["ady"] = {"Adyghe", "Adygei"},
["adz"] = {"Adzera"},
["aea"] = {"Areba"},
["aeb"] = {"Tunisian Arabic"},
["aec"] = {"Saidi Arabic"},
["aed"] = {"Argentine Sign Language"},
["aee"] = {"Northeast Pashai", "Northeast Pashayi"},
["aek"] = {"Haeke"},
["ael"] = {"Ambele"},
["aem"] = {"Arem"},
["aen"] = {"Armenian Sign Language"},
["aeq"] = {"Aer"},
["aer"] = {"Eastern Arrernte"},
["aes"] = {"Alsea"},
["aeu"] = {"Akeu"},
["aew"] = {"Ambakich"},
["aey"] = {"Amele"},
["aez"] = {"Aeka"},
["afa"] = {"Afro-Asiatic languages"},
["afb"] = {"Gulf Arabic"},
["afd"] = {"Andai"},
["afe"] = {"Putukwam"},
["afg"] = {"Afghan Sign Language"},
["afh"] = {"Afrihili"},
["afi"] = {"Akrukay", "Chini"},
["afk"] = {"Nanubae"},
["afn"] = {"Defaka"},
["afo"] = {"Eloyi"},
["afp"] = {"Tapei"},
["afs"] = {"Afro-Seminole Creole"},
["aft"] = {"Afitti"},
["afu"] = {"Awutu"},
["afz"] = {"Obokuitai"},
["aga"] = {"Aguano"},
["agb"] = {"Legbo"},
["agc"] = {"Agatu"},
["agd"] = {"Agarabi"},
["age"] = {"Angal"},
["agf"] = {"Arguni"},
["agg"] = {"Angor"},
["agh"] = {"Ngelima"},
["agi"] = {"Agariya"},
["agj"] = {"Argobba"},
["agk"] = {"Isarog Agta"},
["agl"] = {"Fembe"},
["agm"] = {"Angaataha"},
["agn"] = {"Agutaynen"},
["ago"] = {"Tainae"},
["agq"] = {"Aghem"},
["agr"] = {"Aguaruna"},
["ags"] = {"Esimbi"},
["agt"] = {"Central Cagayan Agta"},
["agu"] = {"Aguacateco"},
["agv"] = {"Remontado Dumagat"},
["agw"] = {"Kahua"},
["agx"] = {"Aghul"},
["agy"] = {"Southern Alta"},
["agz"] = {"Mt. Iriga Agta"},
["aha"] = {"Ahanta"},
["ahb"] = {"Axamb"},
["ahg"] = {"Qimant"},
["ahh"] = {"Aghu"},
["ahi"] = {"Tiagbamrin Aizi"},
["ahk"] = {"Akha"},
["ahl"] = {"Igo"},
["ahm"] = {"Mobumrin Aizi"},
["ahn"] = {"Àhàn"},
["aho"] = {"Ahom"},
["ahp"] = {"Aproumu Aizi"},
["ahr"] = {"Ahirani"},
["ahs"] = {"Ashe"},
["aht"] = {"Ahtena"},
["aia"] = {"Arosi"},
["aib"] = {"Ainu (China)"},
["aic"] = {"Ainbai"},
["aid"] = {"Alngith"},
["aie"] = {"Amara"},
["aif"] = {"Agi"},
["aig"] = {"Antigua and Barbuda Creole English"},
["aih"] = {"Ai-Cham"},
["aii"] = {"Assyrian Neo-Aramaic"},
["aij"] = {"Lishanid Noshan"},
["aik"] = {"Ake"},
["ail"] = {"Aimele"},
["aim"] = {"Aimol"},
["ain"] = {"Ainu (Japan)"},
["aio"] = {"Aiton"},
["aip"] = {"Burumakok"},
["aiq"] = {"Aimaq"},
["air"] = {"Airoran"},
["ait"] = {"Arikem"},
["aiw"] = {"Aari"},
["aix"] = {"Aighon"},
["aiy"] = {"Ali"},
["aja"] = {"Aja (South Sudan)"},
["ajg"] = {"Aja (Benin)"},
["aji"] = {"Ajië"},
["ajn"] = {"Andajin"},
["ajs"] = {"Algerian Jewish Sign Language"},
["aju"] = {"Judeo-Moroccan Arabic"},
["ajw"] = {"Ajawa"},
["ajz"] = {"Amri Karbi"},
["akb"] = {"Batak Angkola"},
["akc"] = {"Mpur"},
["akd"] = {"Ukpet-Ehom"},
["ake"] = {"Akawaio"},
["akf"] = {"Akpa"},
["akg"] = {"Anakalangu"},
["akh"] = {"Angal Heneng"},
["aki"] = {"Aiome"},
["akj"] = {"Aka-Jeru"},
["akk"] = {"Akkadian"},
["akl"] = {"Aklanon"},
["akm"] = {"Aka-Bo"},
["ako"] = {"Akurio"},
["akp"] = {"Siwu"},
["akq"] = {"Ak"},
["akr"] = {"Araki"},
["aks"] = {"Akaselem"},
["akt"] = {"Akolet"},
["aku"] = {"Akum"},
["akv"] = {"Akhvakh"},
["akw"] = {"Akwa"},
["akx"] = {"Aka-Kede"},
["aky"] = {"Aka-Kol"},
["akz"] = {"Alabama"},
["ala"] = {"Alago"},
["alc"] = {"Qawasqar"},
["ald"] = {"Alladian"},
["ale"] = {"Aleut"},
["alf"] = {"Alege"},
["alg"] = {"Algonquian languages"},
["alh"] = {"Alawa"},
["ali"] = {"Amaimon"},
["alj"] = {"Alangan"},
["alk"] = {"Alak"},
["all"] = {"Allar"},
["alm"] = {"Amblong"},
["aln"] = {"Gheg Albanian"},
["alo"] = {"Larike-Wakasihu"},
["alp"] = {"Alune"},
["alq"] = {"Algonquin"},
["alr"] = {"Alutor"},
["als"] = {"Tosk Albanian"},
["alt"] = {"Southern Altai"},
["alu"] = {"'Are'are"},
["alv"] = {"Atlantic-Congo languages"},
["alw"] = {"Alaba-K’abeena", "Wanbasana"},
["alx"] = {"Amol"},
["aly"] = {"Alyawarr"},
["alz"] = {"Alur"},
["ama"] = {"Amanayé"},
["amb"] = {"Ambo"},
["amc"] = {"Amahuaca"},
["ame"] = {"Yanesha'"},
["amf"] = {"Hamer-Banna"},
["amg"] = {"Amurdak"},
["ami"] = {"Amis"},
["amj"] = {"Amdang"},
["amk"] = {"Ambai"},
["aml"] = {"War-Jaintia"},
["amm"] = {"Ama (Papua New Guinea)"},
["amn"] = {"Amanab"},
["amo"] = {"Amo"},
["amp"] = {"Alamblak"},
["amq"] = {"Amahai"},
["amr"] = {"Amarakaeri"},
["ams"] = {"Southern Amami-Oshima"},
["amt"] = {"Amto"},
["amu"] = {"Guerrero Amuzgo"},
["amv"] = {"Ambelau"},
["amw"] = {"Western Neo-Aramaic"},
["amx"] = {"Anmatyerre"},
["amy"] = {"Ami"},
["amz"] = {"Atampaya"},
["ana"] = {"Andaqui"},
["anb"] = {"Andoa"},
["anc"] = {"Ngas"},
["and"] = {"Ansus"},
["ane"] = {"Xârâcùù"},
["anf"] = {"Animere"},
["ang"] = {"Old English (ca. 450-1100)"},
["anh"] = {"Nend"},
["ani"] = {"Andi"},
["anj"] = {"Anor"},
["ank"] = {"Goemai"},
["anl"] = {"Anu-Hkongso Chin"},
["anm"] = {"Anal"},
["ann"] = {"Obolo"},
["ano"] = {"Andoque"},
["anp"] = {"Angika"},
["anq"] = {"Jarawa (India)"},
["anr"] = {"Andh"},
["ans"] = {"Anserma"},
["ant"] = {"Antakarinya", "Antikarinya"},
["anu"] = {"Anuak"},
["anv"] = {"Denya"},
["anw"] = {"Anaang"},
["anx"] = {"Andra-Hus"},
["any"] = {"Anyin"},
["anz"] = {"Anem"},
["aoa"] = {"Angolar"},
["aob"] = {"Abom"},
["aoc"] = {"Pemon"},
["aod"] = {"Andarum"},
["aoe"] = {"Angal Enen"},
["aof"] = {"Bragat"},
["aog"] = {"Angoram"},
["aoi"] = {"Anindilyakwa"},
["aoj"] = {"Mufian"},
["aok"] = {"Arhö"},
["aol"] = {"Alor"},
["aom"] = {"Ömie"},
["aon"] = {"Bumbita Arapesh"},
["aor"] = {"Aore"},
["aos"] = {"Taikat"},
["aot"] = {"Atong (India)", "A'tong"},
["aou"] = {"A'ou"},
["aox"] = {"Atorada"},
["aoz"] = {"Uab Meto"},
["apa"] = {"Apache languages"},
["apb"] = {"Sa'a"},
["apc"] = {"Levantine Arabic"},
["apd"] = {"Sudanese Arabic"},
["ape"] = {"Bukiyip"},
["apf"] = {"Pahanan Agta"},
["apg"] = {"Ampanang"},
["aph"] = {"Athpariya"},
["api"] = {"Apiaká"},
["apj"] = {"Jicarilla Apache"},
["apk"] = {"Kiowa Apache"},
["apl"] = {"Lipan Apache"},
["apm"] = {"Mescalero-Chiricahua Apache"},
["apn"] = {"Apinayé"},
["apo"] = {"Ambul"},
["app"] = {"Apma"},
["apq"] = {"A-Pucikwar"},
["apr"] = {"Arop-Lokep"},
["aps"] = {"Arop-Sissano"},
["apt"] = {"Apatani"},
["apu"] = {"Apurinã"},
["apv"] = {"Alapmunte"},
["apw"] = {"Western Apache"},
["apx"] = {"Aputai"},
["apy"] = {"Apalaí"},
["apz"] = {"Safeyoka"},
["aqa"] = {"Alacalufan languages"},
["aqc"] = {"Archi"},
["aqd"] = {"Ampari Dogon"},
["aqg"] = {"Arigidi"},
["aqk"] = {"Aninka"},
["aql"] = {"Algic languages"},
["aqm"] = {"Atohwaim"},
["aqn"] = {"Northern Alta"},
["aqp"] = {"Atakapa"},
["aqr"] = {"Arhâ"},
["aqt"] = {"Angaité"},
["aqz"] = {"Akuntsu"},
["arb"] = {"Standard Arabic"},
["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"},
["ard"] = {"Arabana"},
["are"] = {"Western Arrarnta"},
["arh"] = {"Arhuaco"},
["ari"] = {"Arikara"},
["arj"] = {"Arapaso"},
["ark"] = {"Arikapú"},
["arl"] = {"Arabela"},
["arn"] = {"Mapudungun", "Mapuche"},
["aro"] = {"Araona"},
["arp"] = {"Arapaho"},
["arq"] = {"Algerian Arabic"},
["arr"] = {"Karo (Brazil)"},
["ars"] = {"Najdi Arabic"},
["art"] = {"Artificial languages"},
["aru"] = {"Aruá (Amazonas State)", "Arawá"},
["arv"] = {"Arbore"},
["arw"] = {"Arawak"},
["arx"] = {"Aruá (Rodonia State)"},
["ary"] = {"Moroccan Arabic"},
["arz"] = {"Egyptian Arabic"},
["asa"] = {"Asu (Tanzania)"},
["asb"] = {"Assiniboine"},
["asc"] = {"Casuarina Coast Asmat"},
["ase"] = {"American Sign Language"},
["asf"] = {"Auslan", "Australian Sign Language"},
["asg"] = {"Cishingini"},
["ash"] = {"Abishira"},
["asi"] = {"Buruwai"},
["asj"] = {"Sari"},
["ask"] = {"Ashkun"},
["asl"] = {"Asilulu"},
["asn"] = {"Xingú Asuriní"},
["aso"] = {"Dano"},
["asp"] = {"Algerian Sign Language"},
["asq"] = {"Austrian Sign Language"},
["asr"] = {"Asuri"},
["ass"] = {"Ipulo"},
["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"},
["asu"] = {"Tocantins Asurini"},
["asv"] = {"Asoa"},
["asw"] = {"Australian Aborigines Sign Language"},
["asx"] = {"Muratayak"},
["asy"] = {"Yaosakor Asmat"},
["asz"] = {"As"},
["ata"] = {"Pele-Ata"},
["atb"] = {"Zaiwa"},
["atc"] = {"Atsahuaca"},
["atd"] = {"Ata Manobo"},
["ate"] = {"Atemble"},
["atg"] = {"Ivbie North-Okpela-Arhe"},
["ath"] = {"Athapascan languages"},
["ati"] = {"Attié"},
["atj"] = {"Atikamekw"},
["atk"] = {"Ati"},
["atl"] = {"Mt. Iraya Agta"},
["atm"] = {"Ata"},
["atn"] = {"Ashtiani"},
["ato"] = {"Atong (Cameroon)"},
["atp"] = {"Pudtol Atta"},
["atq"] = {"Aralle-Tabulahan"},
["atr"] = {"Waimiri-Atroari"},
["ats"] = {"Gros Ventre"},
["att"] = {"Pamplona Atta"},
["atu"] = {"Reel"},
["atv"] = {"Northern Altai"},
["atw"] = {"Atsugewi"},
["atx"] = {"Arutani"},
["aty"] = {"Aneityum"},
["atz"] = {"Arta"},
["aua"] = {"Asumboa"},
["aub"] = {"Alugu"},
["auc"] = {"Waorani"},
["aud"] = {"Anuta"},
["auf"] = {"Arauan languages"},
["aug"] = {"Aguna"},
["auh"] = {"Aushi"},
["aui"] = {"Anuki"},
["auj"] = {"Awjilah"},
["auk"] = {"Heyo"},
["aul"] = {"Aulua"},
["aum"] = {"Asu (Nigeria)"},
["aun"] = {"Molmo One"},
["auo"] = {"Auyokawa"},
["aup"] = {"Makayam"},
["auq"] = {"Anus", "Korur"},
["aur"] = {"Aruek"},
["aus"] = {"Australian languages"},
["aut"] = {"Austral"},
["auu"] = {"Auye"},
["auw"] = {"Awyi"},
["aux"] = {"Aurá"},
["auy"] = {"Awiyaana"},
["auz"] = {"Uzbeki Arabic"},
["avb"] = {"Avau"},
["avd"] = {"Alviri-Vidari"},
["avi"] = {"Avikam"},
["avk"] = {"Kotava"},
["avl"] = {"Eastern Egyptian Bedawi Arabic"},
["avm"] = {"Angkamuthi"},
["avn"] = {"Avatime"},
["avo"] = {"Agavotaguerra"},
["avs"] = {"Aushiri"},
["avt"] = {"Au"},
["avu"] = {"Avokaya"},
["avv"] = {"Avá-Canoeiro"},
["awa"] = {"Awadhi"},
["awb"] = {"Awa (Papua New Guinea)"},
["awc"] = {"Cicipu"},
["awd"] = {"Arawakan languages"},
["awe"] = {"Awetí"},
["awg"] = {"Anguthimri"},
["awh"] = {"Awbono"},
["awi"] = {"Aekyom"},
["awk"] = {"Awabakal"},
["awm"] = {"Arawum"},
["awn"] = {"Awngi"},
["awo"] = {"Awak"},
["awr"] = {"Awera"},
["aws"] = {"South Awyu"},
["awt"] = {"Araweté"},
["awu"] = {"Central Awyu"},
["awv"] = {"Jair Awyu"},
["aww"] = {"Awun"},
["awx"] = {"Awara"},
["awy"] = {"Edera Awyu"},
["axb"] = {"Abipon"},
["axe"] = {"Ayerrerenge"},
["axg"] = {"Mato Grosso Arára"},
["axk"] = {"Yaka (Central African Republic)"},
["axl"] = {"Lower Southern Aranda"},
["axm"] = {"Middle Armenian"},
["axx"] = {"Xârâgurè"},
["aya"] = {"Awar"},
["ayb"] = {"Ayizo Gbe"},
["ayc"] = {"Southern Aymara"},
["ayd"] = {"Ayabadhu"},
["aye"] = {"Ayere"},
["ayg"] = {"Ginyanga"},
["ayh"] = {"Hadrami Arabic"},
["ayi"] = {"Leyigha"},
["ayk"] = {"Akuku"},
["ayl"] = {"Libyan Arabic"},
["ayn"] = {"Sanaani Arabic"},
["ayo"] = {"Ayoreo"},
["ayp"] = {"North Mesopotamian Arabic"},
["ayq"] = {"Ayi (Papua New Guinea)"},
["ayr"] = {"Central Aymara"},
["ays"] = {"Sorsogon Ayta"},
["ayt"] = {"Magbukun Ayta"},
["ayu"] = {"Ayu"},
["ayz"] = {"Mai Brat"},
["aza"] = {"Azha"},
["azb"] = {"South Azerbaijani"},
["azc"] = {"Uto-Aztecan languages"},
["azd"] = {"Eastern Durango Nahuatl"},
["azg"] = {"San Pedro Amuzgos Amuzgo"},
["azj"] = {"North Azerbaijani"},
["azm"] = {"Ipalapa Amuzgo"},
["azn"] = {"Western Durango Nahuatl"},
["azo"] = {"Awing"},
["azt"] = {"Faire Atta"},
["azz"] = {"Highland Puebla Nahuatl"},
["baa"] = {"Babatana"},
["bab"] = {"Bainouk-Gunyuño"},
["bac"] = {"Badui"},
["bad"] = {"Banda languages"},
["bae"] = {"Baré"},
["baf"] = {"Nubaca"},
["bag"] = {"Tuki"},
["bah"] = {"Bahamas Creole English"},
["bai"] = {"Bamileke languages"},
["baj"] = {"Barakai"},
["bal"] = {"Baluchi"},
["ban"] = {"Balinese"},
["bao"] = {"Waimaha"},
["bap"] = {"Bantawa"},
["bar"] = {"Bavarian"},
["bas"] = {"Basa (Cameroon)"},
["bat"] = {"Baltic languages"},
["bau"] = {"Bada (Nigeria)"},
["bav"] = {"Vengo"},
["baw"] = {"Bambili-Bambui"},
["bax"] = {"Bamun"},
["bay"] = {"Batuley"},
["bba"] = {"Baatonum"},
["bbb"] = {"Barai"},
["bbc"] = {"Batak Toba"},
["bbd"] = {"Bau"},
["bbe"] = {"Bangba"},
["bbf"] = {"Baibai"},
["bbg"] = {"Barama"},
["bbh"] = {"Bugan"},
["bbi"] = {"Barombi"},
["bbj"] = {"Ghomálá'"},
["bbk"] = {"Babanki"},
["bbl"] = {"Bats"},
["bbm"] = {"Babango"},
["bbn"] = {"Uneapa"},
["bbo"] = {"Northern Bobo Madaré", "Konabéré"},
["bbp"] = {"West Central Banda"},
["bbq"] = {"Bamali"},
["bbr"] = {"Girawa"},
["bbs"] = {"Bakpinka"},
["bbt"] = {"Mburku"},
["bbu"] = {"Kulung (Nigeria)"},
["bbv"] = {"Karnai"},
["bbw"] = {"Baba"},
["bbx"] = {"Bubia"},
["bby"] = {"Befang"},
["bca"] = {"Central Bai"},
["bcb"] = {"Bainouk-Samik"},
["bcc"] = {"Southern Balochi"},
["bcd"] = {"North Babar"},
["bce"] = {"Bamenyam"},
["bcf"] = {"Bamu"},
["bcg"] = {"Baga Pokur"},
["bch"] = {"Bariai"},
["bci"] = {"Baoulé"},
["bcj"] = {"Bardi"},
["bck"] = {"Bunuba"},
["bcl"] = {"Central Bikol"},
["bcm"] = {"Bannoni"},
["bcn"] = {"Bali (Nigeria)"},
["bco"] = {"Kaluli"},
["bcp"] = {"Bali (Democratic Republic of Congo)"},
["bcq"] = {"Bench"},
["bcr"] = {"Babine"},
["bcs"] = {"Kohumono"},
["bct"] = {"Bendi"},
["bcu"] = {"Awad Bing"},
["bcv"] = {"Shoo-Minda-Nye"},
["bcw"] = {"Bana"},
["bcy"] = {"Bacama"},
["bcz"] = {"Bainouk-Gunyaamolo"},
["bda"] = {"Bayot"},
["bdb"] = {"Basap"},
["bdc"] = {"Emberá-Baudó"},
["bdd"] = {"Bunama"},
["bde"] = {"Bade"},
["bdf"] = {"Biage"},
["bdg"] = {"Bonggi"},
["bdh"] = {"Baka (South Sudan)"},
["bdi"] = {"Burun"},
["bdj"] = {"Bai (South Sudan)", "Bai"},
["bdk"] = {"Budukh"},
["bdl"] = {"Indonesian Bajau"},
["bdm"] = {"Buduma"},
["bdn"] = {"Baldemu"},
["bdo"] = {"Morom"},
["bdp"] = {"Bende"},
["bdq"] = {"Bahnar"},
["bdr"] = {"West Coast Bajau"},
["bds"] = {"Burunge"},
["bdt"] = {"Bokoto"},
["bdu"] = {"Oroko"},
["bdv"] = {"Bodo Parja"},
["bdw"] = {"Baham"},
["bdx"] = {"Budong-Budong"},
["bdy"] = {"Bandjalang"},
["bdz"] = {"Badeshi"},
["bea"] = {"Beaver"},
["beb"] = {"Bebele"},
["bec"] = {"Iceve-Maci"},
["bed"] = {"Bedoanas"},
["bee"] = {"Byangsi"},
["bef"] = {"Benabena"},
["beg"] = {"Belait"},
["beh"] = {"Biali"},
["bei"] = {"Bekati'"},
["bej"] = {"Beja", "Bedawiyet"},
["bek"] = {"Bebeli"},
["bem"] = {"Bemba (Zambia)"},
["beo"] = {"Beami"},
["bep"] = {"Besoa"},
["beq"] = {"Beembe"},
["ber"] = {"Berber languages"},
["bes"] = {"Besme"},
["bet"] = {"Guiberoua Béte"},
["beu"] = {"Blagar"},
["bev"] = {"Daloa Bété"},
["bew"] = {"Betawi"},
["bex"] = {"Jur Modo"},
["bey"] = {"Beli (Papua New Guinea)"},
["bez"] = {"Bena (Tanzania)"},
["bfa"] = {"Bari"},
["bfb"] = {"Pauri Bareli"},
["bfc"] = {"Panyi Bai", "Northern Bai"},
["bfd"] = {"Bafut"},
["bfe"] = {"Betaf", "Tena"},
["bff"] = {"Bofi"},
["bfg"] = {"Busang Kayan"},
["bfh"] = {"Blafe"},
["bfi"] = {"British Sign Language"},
["bfj"] = {"Bafanji"},
["bfk"] = {"Ban Khor Sign Language"},
["bfl"] = {"Banda-Ndélé"},
["bfm"] = {"Mmen"},
["bfn"] = {"Bunak"},
["bfo"] = {"Malba Birifor"},
["bfp"] = {"Beba"},
["bfq"] = {"Badaga"},
["bfr"] = {"Bazigar"},
["bfs"] = {"Southern Bai"},
["bft"] = {"Balti"},
["bfu"] = {"Gahri"},
["bfw"] = {"Bondo"},
["bfx"] = {"Bantayanon"},
["bfy"] = {"Bagheli"},
["bfz"] = {"Mahasu Pahari"},
["bga"] = {"Gwamhi-Wuri"},
["bgb"] = {"Bobongko"},
["bgc"] = {"Haryanvi"},
["bgd"] = {"Rathwi Bareli"},
["bge"] = {"Bauria"},
["bgf"] = {"Bangandu"},
["bgg"] = {"Bugun"},
["bgi"] = {"Giangan"},
["bgj"] = {"Bangolan"},
["bgk"] = {"Bit", "Buxinhua"},
["bgl"] = {"Bo (Laos)"},
["bgn"] = {"Western Balochi"},
["bgo"] = {"Baga Koga"},
["bgp"] = {"Eastern Balochi"},
["bgq"] = {"Bagri"},
["bgr"] = {"Bawm Chin"},
["bgs"] = {"Tagabawa"},
["bgt"] = {"Bughotu"},
["bgu"] = {"Mbongno"},
["bgv"] = {"Warkay-Bipim"},
["bgw"] = {"Bhatri"},
["bgx"] = {"Balkan Gagauz Turkish"},
["bgy"] = {"Benggoi"},
["bgz"] = {"Banggai"},
["bha"] = {"Bharia"},
["bhb"] = {"Bhili"},
["bhc"] = {"Biga"},
["bhd"] = {"Bhadrawahi"},
["bhe"] = {"Bhaya"},
["bhf"] = {"Odiai"},
["bhg"] = {"Binandere"},
["bhh"] = {"Bukharic"},
["bhi"] = {"Bhilali"},
["bhj"] = {"Bahing"},
["bhl"] = {"Bimin"},
["bhm"] = {"Bathari"},
["bhn"] = {"Bohtan Neo-Aramaic"},
["bho"] = {"Bhojpuri"},
["bhp"] = {"Bima"},
["bhq"] = {"Tukang Besi South"},
["bhr"] = {"Bara Malagasy"},
["bhs"] = {"Buwal"},
["bht"] = {"Bhattiyali"},
["bhu"] = {"Bhunjia"},
["bhv"] = {"Bahau"},
["bhw"] = {"Biak"},
["bhx"] = {"Bhalay"},
["bhy"] = {"Bhele"},
["bhz"] = {"Bada (Indonesia)"},
["bia"] = {"Badimaya"},
["bib"] = {"Bissa", "Bisa"},
["bid"] = {"Bidiyo"},
["bie"] = {"Bepour"},
["bif"] = {"Biafada"},
["big"] = {"Biangai"},
["bik"] = {"Bikol"},
["bil"] = {"Bile"},
["bim"] = {"Bimoba"},
["bin"] = {"Bini", "Edo"},
["bio"] = {"Nai"},
["bip"] = {"Bila"},
["biq"] = {"Bipi"},
["bir"] = {"Bisorio"},
["bit"] = {"Berinomo"},
["biu"] = {"Biete"},
["biv"] = {"Southern Birifor"},
["biw"] = {"Kol (Cameroon)"},
["bix"] = {"Bijori"},
["biy"] = {"Birhor"},
["biz"] = {"Baloi"},
["bja"] = {"Budza"},
["bjb"] = {"Banggarla"},
["bjc"] = {"Bariji"},
["bje"] = {"Biao-Jiao Mien"},
["bjf"] = {"Barzani Jewish Neo-Aramaic"},
["bjg"] = {"Bidyogo"},
["bjh"] = {"Bahinemo"},
["bji"] = {"Burji"},
["bjj"] = {"Kanauji"},
["bjk"] = {"Barok"},
["bjl"] = {"Bulu (Papua New Guinea)"},
["bjm"] = {"Bajelani"},
["bjn"] = {"Banjar"},
["bjo"] = {"Mid-Southern Banda"},
["bjp"] = {"Fanamaket"},
["bjr"] = {"Binumarien"},
["bjs"] = {"Bajan"},
["bjt"] = {"Balanta-Ganja"},
["bju"] = {"Busuu"},
["bjv"] = {"Bedjond"},
["bjw"] = {"Bakwé"},
["bjx"] = {"Banao Itneg"},
["bjy"] = {"Bayali"},
["bjz"] = {"Baruga"},
["bka"] = {"Kyak"},
["bkc"] = {"Baka (Cameroon)"},
["bkd"] = {"Binukid", "Talaandig"},
["bkf"] = {"Beeke"},
["bkg"] = {"Buraka"},
["bkh"] = {"Bakoko"},
["bki"] = {"Baki"},
["bkj"] = {"Pande"},
["bkk"] = {"Brokskat"},
["bkl"] = {"Berik"},
["bkm"] = {"Kom (Cameroon)"},
["bkn"] = {"Bukitan"},
["bko"] = {"Kwa'"},
["bkp"] = {"Boko (Democratic Republic of Congo)"},
["bkq"] = {"Bakairí"},
["bkr"] = {"Bakumpai"},
["bks"] = {"Northern Sorsoganon"},
["bkt"] = {"Boloki"},
["bku"] = {"Buhid"},
["bkv"] = {"Bekwarra"},
["bkw"] = {"Bekwel"},
["bkx"] = {"Baikeno"},
["bky"] = {"Bokyi"},
["bkz"] = {"Bungku"},
["bla"] = {"Siksika"},
["blb"] = {"Bilua"},
["blc"] = {"Bella Coola"},
["bld"] = {"Bolango"},
["ble"] = {"Balanta-Kentohe"},
["blf"] = {"Buol"},
["blh"] = {"Kuwaa"},
["bli"] = {"Bolia"},
["blj"] = {"Bolongan"},
["blk"] = {"Pa'o Karen", "Pa'O"},
["bll"] = {"Biloxi"},
["blm"] = {"Beli (South Sudan)"},
["bln"] = {"Southern Catanduanes Bikol"},
["blo"] = {"Anii"},
["blp"] = {"Blablanga"},
["blq"] = {"Baluan-Pam"},
["blr"] = {"Blang"},
["bls"] = {"Balaesang"},
["blt"] = {"Tai Dam"},
["blv"] = {"Kibala", "Bolo"},
["blw"] = {"Balangao"},
["blx"] = {"Mag-Indi Ayta"},
["bly"] = {"Notre"},
["blz"] = {"Balantak"},
["bma"] = {"Lame"},
["bmb"] = {"Bembe"},
["bmc"] = {"Biem"},
["bmd"] = {"Baga Manduri"},
["bme"] = {"Limassa"},
["bmf"] = {"Bom-Kim"},
["bmg"] = {"Bamwe"},
["bmh"] = {"Kein"},
["bmi"] = {"Bagirmi"},
["bmj"] = {"Bote-Majhi"},
["bmk"] = {"Ghayavi"},
["bml"] = {"Bomboli"},
["bmm"] = {"Northern Betsimisaraka Malagasy"},
["bmn"] = {"Bina (Papua New Guinea)"},
["bmo"] = {"Bambalang"},
["bmp"] = {"Bulgebi"},
["bmq"] = {"Bomu"},
["bmr"] = {"Muinane"},
["bms"] = {"Bilma Kanuri"},
["bmt"] = {"Biao Mon"},
["bmu"] = {"Somba-Siawari"},
["bmv"] = {"Bum"},
["bmw"] = {"Bomwali"},
["bmx"] = {"Baimak"},
["bmz"] = {"Baramu"},
["bna"] = {"Bonerate"},
["bnb"] = {"Bookan"},
["bnc"] = {"Bontok"},
["bnd"] = {"Banda (Indonesia)"},
["bne"] = {"Bintauna"},
["bnf"] = {"Masiwang"},
["bng"] = {"Benga"},
["bni"] = {"Bangi"},
["bnj"] = {"Eastern Tawbuid"},
["bnk"] = {"Bierebo"},
["bnl"] = {"Boon"},
["bnm"] = {"Batanga"},
["bnn"] = {"Bunun"},
["bno"] = {"Bantoanon"},
["bnp"] = {"Bola"},
["bnq"] = {"Bantik"},
["bnr"] = {"Butmas-Tur"},
["bns"] = {"Bundeli"},
["bnt"] = {"Bantu languages"},
["bnu"] = {"Bentong"},
["bnv"] = {"Bonerif", "Beneraf", "Edwas"},
["bnw"] = {"Bisis"},
["bnx"] = {"Bangubangu"},
["bny"] = {"Bintulu"},
["bnz"] = {"Beezen"},
["boa"] = {"Bora"},
["bob"] = {"Aweer"},
["boe"] = {"Mundabli"},
["bof"] = {"Bolon"},
["bog"] = {"Bamako Sign Language"},
["boh"] = {"Boma"},
["boi"] = {"Barbareño"},
["boj"] = {"Anjam"},
["bok"] = {"Bonjo"},
["bol"] = {"Bole"},
["bom"] = {"Berom"},
["bon"] = {"Bine"},
["boo"] = {"Tiemacèwè Bozo"},
["bop"] = {"Bonkiman"},
["boq"] = {"Bogaya"},
["bor"] = {"Borôro"},
["bot"] = {"Bongo"},
["bou"] = {"Bondei"},
["bov"] = {"Tuwuli"},
["bow"] = {"Rema"},
["box"] = {"Buamu"},
["boy"] = {"Bodo (Central African Republic)"},
["boz"] = {"Tiéyaxo Bozo"},
["bpa"] = {"Daakaka"},
["bpc"] = {"Mbuk"},
["bpd"] = {"Banda-Banda"},
["bpe"] = {"Bauni"},
["bpg"] = {"Bonggo"},
["bph"] = {"Botlikh"},
["bpi"] = {"Bagupi"},
["bpj"] = {"Binji"},
["bpk"] = {"Orowe", "'Ôrôê"},
["bpl"] = {"Broome Pearling Lugger Pidgin"},
["bpm"] = {"Biyom"},
["bpn"] = {"Dzao Min"},
["bpo"] = {"Anasi"},
["bpp"] = {"Kaure"},
["bpq"] = {"Banda Malay"},
["bpr"] = {"Koronadal Blaan"},
["bps"] = {"Sarangani Blaan"},
["bpt"] = {"Barrow Point"},
["bpu"] = {"Bongu"},
["bpv"] = {"Bian Marind"},
["bpw"] = {"Bo (Papua New Guinea)"},
["bpx"] = {"Palya Bareli"},
["bpy"] = {"Bishnupriya"},
["bpz"] = {"Bilba"},
["bqa"] = {"Tchumbuli"},
["bqb"] = {"Bagusa"},
["bqc"] = {"Boko (Benin)", "Boo"},
["bqd"] = {"Bung"},
["bqf"] = {"Baga Kaloum"},
["bqg"] = {"Bago-Kusuntu"},
["bqh"] = {"Baima"},
["bqi"] = {"Bakhtiari"},
["bqj"] = {"Bandial"},
["bqk"] = {"Banda-Mbrès"},
["bql"] = {"Bilakura"},
["bqm"] = {"Wumboko"},
["bqn"] = {"Bulgarian Sign Language"},
["bqo"] = {"Balo"},
["bqp"] = {"Busa"},
["bqq"] = {"Biritai"},
["bqr"] = {"Burusu"},
["bqs"] = {"Bosngun"},
["bqt"] = {"Bamukumbit"},
["bqu"] = {"Boguru"},
["bqv"] = {"Koro Wachi", "Begbere-Ejar"},
["bqw"] = {"Buru (Nigeria)"},
["bqx"] = {"Baangi"},
["bqy"] = {"Bengkala Sign Language"},
["bqz"] = {"Bakaka"},
["bra"] = {"Braj"},
["brb"] = {"Brao", "Lave"},
["brc"] = {"Berbice Creole Dutch"},
["brd"] = {"Baraamu"},
["brf"] = {"Bira"},
["brg"] = {"Baure"},
["brh"] = {"Brahui"},
["bri"] = {"Mokpwe"},
["brj"] = {"Bieria"},
["brk"] = {"Birked"},
["brl"] = {"Birwa"},
["brm"] = {"Barambu"},
["brn"] = {"Boruca"},
["bro"] = {"Brokkat"},
["brp"] = {"Barapasi"},
["brq"] = {"Breri"},
["brr"] = {"Birao"},
["brs"] = {"Baras"},
["brt"] = {"Bitare"},
["bru"] = {"Eastern Bru"},
["brv"] = {"Western Bru"},
["brw"] = {"Bellari"},
["brx"] = {"Bodo (India)"},
["bry"] = {"Burui"},
["brz"] = {"Bilbil"},
["bsa"] = {"Abinomn"},
["bsb"] = {"Brunei Bisaya"},
["bsc"] = {"Bassari", "Oniyan"},
["bse"] = {"Wushi"},
["bsf"] = {"Bauchi"},
["bsg"] = {"Bashkardi"},
["bsh"] = {"Kati"},
["bsi"] = {"Bassossi"},
["bsj"] = {"Bangwinji"},
["bsk"] = {"Burushaski"},
["bsl"] = {"Basa-Gumna"},
["bsm"] = {"Busami"},
["bsn"] = {"Barasana-Eduria"},
["bso"] = {"Buso"},
["bsp"] = {"Baga Sitemu"},
["bsq"] = {"Bassa"},
["bsr"] = {"Bassa-Kontagora"},
["bss"] = {"Akoose"},
["bst"] = {"Basketo"},
["bsu"] = {"Bahonsuai"},
["bsv"] = {"Baga Sobané"},
["bsw"] = {"Baiso"},
["bsx"] = {"Yangkam"},
["bsy"] = {"Sabah Bisaya"},
["bta"] = {"Bata"},
["btc"] = {"Bati (Cameroon)"},
["btd"] = {"Batak Dairi"},
["bte"] = {"Gamo-Ningi"},
["btf"] = {"Birgit"},
["btg"] = {"Gagnoa Bété"},
["bth"] = {"Biatah Bidayuh"},
["bti"] = {"Burate"},
["btj"] = {"Bacanese Malay"},
["btk"] = {"Batak languages"},
["btm"] = {"Batak Mandailing"},
["btn"] = {"Ratagnon"},
["bto"] = {"Rinconada Bikol"},
["btp"] = {"Budibud"},
["btq"] = {"Batek"},
["btr"] = {"Baetora"},
["bts"] = {"Batak Simalungun"},
["btt"] = {"Bete-Bendi"},
["btu"] = {"Batu"},
["btv"] = {"Bateri"},
["btw"] = {"Butuanon"},
["btx"] = {"Batak Karo"},
["bty"] = {"Bobot"},
["btz"] = {"Batak Alas-Kluet"},
["bua"] = {"Buriat"},
["bub"] = {"Bua"},
["buc"] = {"Bushi"},
["bud"] = {"Ntcham"},
["bue"] = {"Beothuk"},
["buf"] = {"Bushoong"},
["bug"] = {"Buginese"},
["buh"] = {"Younuo Bunu"},
["bui"] = {"Bongili"},
["buj"] = {"Basa-Gurmana"},
["buk"] = {"Bugawac"},
["bum"] = {"Bulu (Cameroon)"},
["bun"] = {"Sherbro"},
["buo"] = {"Terei"},
["bup"] = {"Busoa"},
["buq"] = {"Brem"},
["bus"] = {"Bokobaru"},
["but"] = {"Bungain"},
["buu"] = {"Budu"},
["buv"] = {"Bun"},
["buw"] = {"Bubi"},
["bux"] = {"Boghom"},
["buy"] = {"Bullom So"},
["buz"] = {"Bukwen"},
["bva"] = {"Barein"},
["bvb"] = {"Bube"},
["bvc"] = {"Baelelea"},
["bvd"] = {"Baeggu"},
["bve"] = {"Berau Malay"},
["bvf"] = {"Boor"},
["bvg"] = {"Bonkeng"},
["bvh"] = {"Bure"},
["bvi"] = {"Belanda Viri"},
["bvj"] = {"Baan"},
["bvk"] = {"Bukat"},
["bvl"] = {"Bolivian Sign Language"},
["bvm"] = {"Bamunka"},
["bvn"] = {"Buna"},
["bvo"] = {"Bolgo"},
["bvp"] = {"Bumang"},
["bvq"] = {"Birri"},
["bvr"] = {"Burarra"},
["bvt"] = {"Bati (Indonesia)"},
["bvu"] = {"Bukit Malay"},
["bvv"] = {"Baniva"},
["bvw"] = {"Boga"},
["bvx"] = {"Dibole"},
["bvy"] = {"Baybayanon"},
["bvz"] = {"Bauzi"},
["bwa"] = {"Bwatoo"},
["bwb"] = {"Namosi-Naitasiri-Serua"},
["bwc"] = {"Bwile"},
["bwd"] = {"Bwaidoka"},
["bwe"] = {"Bwe Karen"},
["bwf"] = {"Boselewa"},
["bwg"] = {"Barwe"},
["bwh"] = {"Bishuo"},
["bwi"] = {"Baniwa"},
["bwj"] = {"Láá Láá Bwamu"},
["bwk"] = {"Bauwaki"},
["bwl"] = {"Bwela"},
["bwm"] = {"Biwat"},
["bwn"] = {"Wunai Bunu"},
["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"},
["bwp"] = {"Mandobo Bawah"},
["bwq"] = {"Southern Bobo Madaré"},
["bwr"] = {"Bura-Pabir"},
["bws"] = {"Bomboma"},
["bwt"] = {"Bafaw-Balong"},
["bwu"] = {"Buli (Ghana)"},
["bww"] = {"Bwa"},
["bwx"] = {"Bu-Nao Bunu"},
["bwy"] = {"Cwi Bwamu"},
["bwz"] = {"Bwisi"},
["bxa"] = {"Tairaha"},
["bxb"] = {"Belanda Bor"},
["bxc"] = {"Molengue"},
["bxd"] = {"Pela"},
["bxe"] = {"Birale"},
["bxf"] = {"Bilur", "Minigir"},
["bxg"] = {"Bangala"},
["bxh"] = {"Buhutu"},
["bxi"] = {"Pirlatapa"},
["bxj"] = {"Bayungu"},
["bxk"] = {"Bukusu", "Lubukusu"},
["bxl"] = {"Jalkunan"},
["bxm"] = {"Mongolia Buriat"},
["bxn"] = {"Burduna"},
["bxo"] = {"Barikanchi"},
["bxp"] = {"Bebil"},
["bxq"] = {"Beele"},
["bxr"] = {"Russia Buriat"},
["bxs"] = {"Busam"},
["bxu"] = {"China Buriat"},
["bxv"] = {"Berakou"},
["bxw"] = {"Bankagooma"},
["bxz"] = {"Binahari"},
["bya"] = {"Batak"},
["byb"] = {"Bikya"},
["byc"] = {"Ubaghara"},
["byd"] = {"Benyadu'"},
["bye"] = {"Pouye"},
["byf"] = {"Bete"},
["byg"] = {"Baygo"},
["byh"] = {"Bhujel"},
["byi"] = {"Buyu"},
["byj"] = {"Bina (Nigeria)"},
["byk"] = {"Biao"},
["byl"] = {"Bayono"},
["bym"] = {"Bidjara"},
["byn"] = {"Bilin", "Blin"},
["byo"] = {"Biyo"},
["byp"] = {"Bumaji"},
["byq"] = {"Basay"},
["byr"] = {"Baruya", "Yipma"},
["bys"] = {"Burak"},
["byt"] = {"Berti"},
["byv"] = {"Medumba"},
["byw"] = {"Belhariya"},
["byx"] = {"Qaqet"},
["byz"] = {"Banaro"},
["bza"] = {"Bandi"},
["bzb"] = {"Andio"},
["bzc"] = {"Southern Betsimisaraka Malagasy"},
["bzd"] = {"Bribri"},
["bze"] = {"Jenaama Bozo"},
["bzf"] = {"Boikin"},
["bzg"] = {"Babuza"},
["bzh"] = {"Mapos Buang"},
["bzi"] = {"Bisu"},
["bzj"] = {"Belize Kriol English"},
["bzk"] = {"Nicaragua Creole English"},
["bzl"] = {"Boano (Sulawesi)"},
["bzm"] = {"Bolondo"},
["bzn"] = {"Boano (Maluku)"},
["bzo"] = {"Bozaba"},
["bzp"] = {"Kemberano"},
["bzq"] = {"Buli (Indonesia)"},
["bzr"] = {"Biri"},
["bzs"] = {"Brazilian Sign Language"},
["bzt"] = {"Brithenig"},
["bzu"] = {"Burmeso"},
["bzv"] = {"Naami"},
["bzw"] = {"Basa (Nigeria)"},
["bzx"] = {"Kɛlɛngaxo Bozo"},
["bzy"] = {"Obanliku"},
["bzz"] = {"Evant"},
["caa"] = {"Chortí"},
["cab"] = {"Garifuna"},
["cac"] = {"Chuj"},
["cad"] = {"Caddo"},
["cae"] = {"Lehar", "Laalaa"},
["caf"] = {"Southern Carrier"},
["cag"] = {"Nivaclé"},
["cah"] = {"Cahuarano"},
["cai"] = {"Central American Indian languages"},
["caj"] = {"Chané"},
["cak"] = {"Kaqchikel", "Cakchiquel"},
["cal"] = {"Carolinian"},
["cam"] = {"Cemuhî"},
["can"] = {"Chambri"},
["cao"] = {"Chácobo"},
["cap"] = {"Chipaya"},
["caq"] = {"Car Nicobarese"},
["car"] = {"Galibi Carib"},
["cas"] = {"Tsimané"},
["cau"] = {"Caucasian languages"},
["cav"] = {"Cavineña"},
["caw"] = {"Callawalla"},
["cax"] = {"Chiquitano"},
["cay"] = {"Cayuga"},
["caz"] = {"Canichana"},
["cba"] = {"Chibchan languages"},
["cbb"] = {"Cabiyarí"},
["cbc"] = {"Carapana"},
["cbd"] = {"Carijona"},
["cbg"] = {"Chimila"},
["cbi"] = {"Chachi"},
["cbj"] = {"Ede Cabe"},
["cbk"] = {"Chavacano"},
["cbl"] = {"Bualkhaw Chin"},
["cbn"] = {"Nyahkur"},
["cbo"] = {"Izora"},
["cbq"] = {"Tsucuba", "Cuba"},
["cbr"] = {"Cashibo-Cacataibo"},
["cbs"] = {"Cashinahua"},
["cbt"] = {"Chayahuita"},
["cbu"] = {"Candoshi-Shapra"},
["cbv"] = {"Cacua"},
["cbw"] = {"Kinabalian"},
["cby"] = {"Carabayo"},
["ccc"] = {"Chamicuro"},
["ccd"] = {"Cafundo Creole"},
["cce"] = {"Chopi"},
["ccg"] = {"Samba Daka"},
["cch"] = {"Atsam"},
["ccj"] = {"Kasanga"},
["ccl"] = {"Cutchi-Swahili"},
["ccm"] = {"Malaccan Creole Malay"},
["ccn"] = {"North Caucasian languages"},
["cco"] = {"Comaltepec Chinantec"},
["ccp"] = {"Chakma"},
["ccr"] = {"Cacaopera"},
["ccs"] = {"South Caucasian languages"},
["cda"] = {"Choni"},
["cdc"] = {"Chadic languages"},
["cdd"] = {"Caddoan languages"},
["cde"] = {"Chenchu"},
["cdf"] = {"Chiru"},
["cdh"] = {"Chambeali"},
["cdi"] = {"Chodri"},
["cdj"] = {"Churahi"},
["cdm"] = {"Chepang"},
["cdn"] = {"Chaudangsi"},
["cdo"] = {"Min Dong Chinese"},
["cdr"] = {"Cinda-Regi-Tiyal"},
["cds"] = {"Chadian Sign Language"},
["cdy"] = {"Chadong"},
["cdz"] = {"Koda"},
["cea"] = {"Lower Chehalis"},
["ceb"] = {"Cebuano"},
["ceg"] = {"Chamacoco"},
["cek"] = {"Eastern Khumi Chin"},
["cel"] = {"Celtic languages"},
["cen"] = {"Cen"},
["cet"] = {"Centúúm"},
["cey"] = {"Ekai Chin"},
["cfa"] = {"Dijim-Bwilim"},
["cfd"] = {"Cara"},
["cfg"] = {"Como Karim"},
["cfm"] = {"Falam Chin"},
["cga"] = {"Changriwa"},
["cgc"] = {"Kagayanen"},
["cgg"] = {"Chiga"},
["cgk"] = {"Chocangacakha"},
["chb"] = {"Chibcha"},
["chc"] = {"Catawba"},
["chd"] = {"Highland Oaxaca Chontal"},
["chf"] = {"Tabasco Chontal"},
["chg"] = {"Chagatai"},
["chh"] = {"Chinook"},
["chj"] = {"Ojitlán Chinantec"},
["chk"] = {"Chuukese"},
["chl"] = {"Cahuilla"},
["chm"] = {"Mari (Russia)"},
["chn"] = {"Chinook jargon"},
["cho"] = {"Choctaw"},
["chp"] = {"Chipewyan", "Dene Suline"},
["chq"] = {"Quiotepec Chinantec"},
["chr"] = {"Cherokee"},
["cht"] = {"Cholón"},
["chw"] = {"Chuwabu"},
["chx"] = {"Chantyal"},
["chy"] = {"Cheyenne"},
["chz"] = {"Ozumacín Chinantec"},
["cia"] = {"Cia-Cia"},
["cib"] = {"Ci Gbe"},
["cic"] = {"Chickasaw"},
["cid"] = {"Chimariko"},
["cie"] = {"Cineni"},
["cih"] = {"Chinali"},
["cik"] = {"Chitkuli Kinnauri"},
["cim"] = {"Cimbrian"},
["cin"] = {"Cinta Larga"},
["cip"] = {"Chiapanec"},
["cir"] = {"Tiri", "Haméa", "Méa"},
["ciw"] = {"Chippewa"},
["ciy"] = {"Chaima"},
["cja"] = {"Western Cham"},
["cje"] = {"Chru"},
["cjh"] = {"Upper Chehalis"},
["cji"] = {"Chamalal"},
["cjk"] = {"Chokwe"},
["cjm"] = {"Eastern Cham"},
["cjn"] = {"Chenapian"},
["cjo"] = {"Ashéninka Pajonal"},
["cjp"] = {"Cabécar"},
["cjs"] = {"Shor"},
["cjv"] = {"Chuave"},
["cjy"] = {"Jinyu Chinese"},
["ckb"] = {"Central Kurdish"},
["ckh"] = {"Chak"},
["ckl"] = {"Cibak"},
["ckm"] = {"Chakavian"},
["ckn"] = {"Kaang Chin"},
["cko"] = {"Anufo"},
["ckq"] = {"Kajakse"},
["ckr"] = {"Kairak"},
["cks"] = {"Tayo"},
["ckt"] = {"Chukot"},
["cku"] = {"Koasati"},
["ckv"] = {"Kavalan"},
["ckx"] = {"Caka"},
["cky"] = {"Cakfem-Mushere"},
["ckz"] = {"Cakchiquel-Quiché Mixed Language"},
["cla"] = {"Ron"},
["clc"] = {"Chilcotin"},
["cld"] = {"Chaldean Neo-Aramaic"},
["cle"] = {"Lealao Chinantec"},
["clh"] = {"Chilisso"},
["cli"] = {"Chakali"},
["clj"] = {"Laitu Chin"},
["clk"] = {"Idu-Mishmi"},
["cll"] = {"Chala"},
["clm"] = {"Clallam"},
["clo"] = {"Lowland Oaxaca Chontal"},
["clt"] = {"Lautu Chin"},
["clu"] = {"Caluyanun"},
["clw"] = {"Chulym"},
["cly"] = {"Eastern Highland Chatino"},
["cma"] = {"Maa"},
["cmc"] = {"Chamic languages"},
["cme"] = {"Cerma"},
["cmg"] = {"Classical Mongolian"},
["cmi"] = {"Emberá-Chamí"},
["cml"] = {"Campalagian"},
["cmm"] = {"Michigamea"},
["cmn"] = {"Mandarin Chinese"},
["cmo"] = {"Central Mnong"},
["cmr"] = {"Mro-Khimi Chin"},
["cms"] = {"Messapic"},
["cmt"] = {"Camtho"},
["cna"] = {"Changthang"},
["cnb"] = {"Chinbon Chin"},
["cnc"] = {"Côông"},
["cng"] = {"Northern Qiang"},
["cnh"] = {"Hakha Chin", "Haka Chin"},
["cni"] = {"Asháninka"},
["cnk"] = {"Khumi Chin"},
["cnl"] = {"Lalana Chinantec"},
["cno"] = {"Con"},
["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"},
["cnq"] = {"Chung"},
["cnr"] = {"Montenegrin"},
["cns"] = {"Central Asmat"},
["cnt"] = {"Tepetotutla Chinantec"},
["cnu"] = {"Chenoua"},
["cnw"] = {"Ngawn Chin"},
["cnx"] = {"Middle Cornish"},
["coa"] = {"Cocos Islands Malay"},
["cob"] = {"Chicomuceltec"},
["coc"] = {"Cocopa"},
["cod"] = {"Cocama-Cocamilla"},
["coe"] = {"Koreguaje"},
["cof"] = {"Colorado"},
["cog"] = {"Chong"},
["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"},
["coj"] = {"Cochimi"},
["cok"] = {"Santa Teresa Cora"},
["col"] = {"Columbia-Wenatchi"},
["com"] = {"Comanche"},
["con"] = {"Cofán"},
["coo"] = {"Comox"},
["cop"] = {"Coptic"},
["coq"] = {"Coquille"},
["cot"] = {"Caquinte"},
["cou"] = {"Wamey"},
["cov"] = {"Cao Miao"},
["cow"] = {"Cowlitz"},
["cox"] = {"Nanti"},
["coz"] = {"Chochotec"},
["cpa"] = {"Palantla Chinantec"},
["cpb"] = {"Ucayali-Yurúa Ashéninka"},
["cpc"] = {"Ajyíninka Apurucayali"},
["cpe"] = {"English-based creoles and pidgins"},
["cpf"] = {"French-based creoles and pidgins"},
["cpg"] = {"Cappadocian Greek"},
["cpi"] = {"Chinese Pidgin English"},
["cpn"] = {"Cherepon"},
["cpo"] = {"Kpeego"},
["cpp"] = {"Portuguese-based creoles and pidgins"},
["cps"] = {"Capiznon"},
["cpu"] = {"Pichis Ashéninka"},
["cpx"] = {"Pu-Xian Chinese"},
["cpy"] = {"South Ucayali Ashéninka"},
["cqd"] = {"Chuanqiandian Cluster Miao"},
["cra"] = {"Chara"},
["crb"] = {"Island Carib"},
["crc"] = {"Lonwolwol"},
["crd"] = {"Coeur d'Alene"},
["crf"] = {"Caramanta"},
["crg"] = {"Michif"},
["crh"] = {"Crimean Tatar", "Crimean Turkish"},
["cri"] = {"Sãotomense"},
["crj"] = {"Southern East Cree"},
["crk"] = {"Plains Cree"},
["crl"] = {"Northern East Cree"},
["crm"] = {"Moose Cree"},
["crn"] = {"El Nayar Cora"},
["cro"] = {"Crow"},
["crp"] = {"Creoles and pidgins"},
["crq"] = {"Iyo'wujwa Chorote"},
["crr"] = {"Carolina Algonquian"},
["crs"] = {"Seselwa Creole French"},
["crt"] = {"Iyojwa'ja Chorote"},
["crv"] = {"Chaura"},
["crw"] = {"Chrau"},
["crx"] = {"Carrier"},
["cry"] = {"Cori"},
["crz"] = {"Cruzeño"},
["csa"] = {"Chiltepec Chinantec"},
["csb"] = {"Kashubian"},
["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"},
["csd"] = {"Chiangmai Sign Language"},
["cse"] = {"Czech Sign Language"},
["csf"] = {"Cuba Sign Language"},
["csg"] = {"Chilean Sign Language"},
["csh"] = {"Asho Chin"},
["csi"] = {"Coast Miwok"},
["csj"] = {"Songlai Chin"},
["csk"] = {"Jola-Kasa"},
["csl"] = {"Chinese Sign Language"},
["csm"] = {"Central Sierra Miwok"},
["csn"] = {"Colombian Sign Language"},
["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"},
["csp"] = {"Southern Ping Chinese", "Southern Pinghua"},
["csq"] = {"Croatia Sign Language"},
["csr"] = {"Costa Rican Sign Language"},
["css"] = {"Southern Ohlone"},
["cst"] = {"Northern Ohlone"},
["csu"] = {"Central Sudanic languages"},
["csv"] = {"Sumtu Chin"},
["csw"] = {"Swampy Cree"},
["csx"] = {"Cambodian Sign Language"},
["csy"] = {"Siyin Chin"},
["csz"] = {"Coos"},
["cta"] = {"Tataltepec Chatino"},
["ctc"] = {"Chetco"},
["ctd"] = {"Tedim Chin"},
["cte"] = {"Tepinapa Chinantec"},
["ctg"] = {"Chittagonian"},
["cth"] = {"Thaiphum Chin"},
["ctl"] = {"Tlacoatzintepec Chinantec"},
["ctm"] = {"Chitimacha"},
["ctn"] = {"Chhintange"},
["cto"] = {"Emberá-Catío"},
["ctp"] = {"Western Highland Chatino"},
["cts"] = {"Northern Catanduanes Bikol"},
["ctt"] = {"Wayanad Chetti"},
["ctu"] = {"Chol"},
["cty"] = {"Moundadan Chetty"},
["ctz"] = {"Zacatepec Chatino"},
["cua"] = {"Cua"},
["cub"] = {"Cubeo"},
["cuc"] = {"Usila Chinantec"},
["cuh"] = {"Chuka", "Gichuka"},
["cui"] = {"Cuiba"},
["cuj"] = {"Mashco Piro"},
["cuk"] = {"San Blas Kuna"},
["cul"] = {"Culina", "Kulina"},
["cuo"] = {"Cumanagoto"},
["cup"] = {"Cupeño"},
["cuq"] = {"Cun"},
["cur"] = {"Chhulung"},
["cus"] = {"Cushitic languages"},
["cut"] = {"Teutila Cuicatec"},
["cuu"] = {"Tai Ya"},
["cuv"] = {"Cuvok"},
["cuw"] = {"Chukwa"},
["cux"] = {"Tepeuxila Cuicatec"},
["cuy"] = {"Cuitlatec"},
["cvg"] = {"Chug"},
["cvn"] = {"Valle Nacional Chinantec"},
["cwa"] = {"Kabwa"},
["cwb"] = {"Maindo"},
["cwd"] = {"Woods Cree"},
["cwe"] = {"Kwere"},
["cwg"] = {"Chewong", "Cheq Wong"},
["cwt"] = {"Kuwaataay"},
["cxh"] = {"Cha'ari"},
["cya"] = {"Nopala Chatino"},
["cyb"] = {"Cayubaba"},
["cyo"] = {"Cuyonon"},
["czh"] = {"Huizhou Chinese"},
["czk"] = {"Knaanic"},
["czn"] = {"Zenzontepec Chatino"},
["czo"] = {"Min Zhong Chinese"},
["czt"] = {"Zotung Chin"},
["daa"] = {"Dangaléat"},
["dac"] = {"Dambi"},
["dad"] = {"Marik"},
["dae"] = {"Duupa"},
["dag"] = {"Dagbani"},
["dah"] = {"Gwahatike"},
["dai"] = {"Day"},
["daj"] = {"Dar Fur Daju"},
["dak"] = {"Dakota"},
["dal"] = {"Dahalo"},
["dam"] = {"Damakawa"},
["dao"] = {"Daai Chin"},
["daq"] = {"Dandami Maria"},
["dar"] = {"Dargwa"},
["das"] = {"Daho-Doo"},
["dau"] = {"Dar Sila Daju"},
["dav"] = {"Taita", "Dawida"},
["daw"] = {"Davawenyo"},
["dax"] = {"Dayi"},
["day"] = {"Land Dayak languages"},
["daz"] = {"Dao"},
["dba"] = {"Bangime"},
["dbb"] = {"Deno"},
["dbd"] = {"Dadiya"},
["dbe"] = {"Dabe"},
["dbf"] = {"Edopi"},
["dbg"] = {"Dogul Dom Dogon"},
["dbi"] = {"Doka"},
["dbj"] = {"Ida'an"},
["dbl"] = {"Dyirbal"},
["dbm"] = {"Duguri"},
["dbn"] = {"Duriankere"},
["dbo"] = {"Dulbu"},
["dbp"] = {"Duwai"},
["dbq"] = {"Daba"},
["dbr"] = {"Dabarre"},
["dbt"] = {"Ben Tey Dogon"},
["dbu"] = {"Bondum Dom Dogon"},
["dbv"] = {"Dungu"},
["dbw"] = {"Bankan Tey Dogon"},
["dby"] = {"Dibiyaso"},
["dcc"] = {"Deccan"},
["dcr"] = {"Negerhollands"},
["dda"] = {"Dadi Dadi"},
["ddd"] = {"Dongotono"},
["dde"] = {"Doondo"},
["ddg"] = {"Fataluku"},
["ddi"] = {"West Goodenough"},
["ddj"] = {"Jaru"},
["ddn"] = {"Dendi (Benin)"},
["ddo"] = {"Dido"},
["ddr"] = {"Dhudhuroa"},
["dds"] = {"Donno So Dogon"},
["ddw"] = {"Dawera-Daweloor"},
["dec"] = {"Dagik"},
["ded"] = {"Dedua"},
["dee"] = {"Dewoin"},
["def"] = {"Dezfuli"},
["deg"] = {"Degema"},
["deh"] = {"Dehwari"},
["dei"] = {"Demisa"},
["dek"] = {"Dek"},
["del"] = {"Delaware"},
["dem"] = {"Dem"},
["den"] = {"Slave (Athapascan)"},
["dep"] = {"Pidgin Delaware"},
["deq"] = {"Dendi (Central African Republic)"},
["der"] = {"Deori"},
["des"] = {"Desano"},
["dev"] = {"Domung"},
["dez"] = {"Dengese"},
["dga"] = {"Southern Dagaare"},
["dgb"] = {"Bunoge Dogon"},
["dgc"] = {"Casiguran Dumagat Agta"},
["dgd"] = {"Dagaari Dioula"},
["dge"] = {"Degenan"},
["dgg"] = {"Doga"},
["dgh"] = {"Dghwede"},
["dgi"] = {"Northern Dagara"},
["dgk"] = {"Dagba"},
["dgl"] = {"Andaandi", "Dongolawi"},
["dgn"] = {"Dagoman"},
["dgo"] = {"Dogri (individual language)"},
["dgr"] = {"Dogrib", "Tłı̨chǫ"},
["dgs"] = {"Dogoso"},
["dgt"] = {"Ndra'ngith"},
["dgw"] = {"Daungwurrung"},
["dgx"] = {"Doghoro"},
["dgz"] = {"Daga"},
["dhd"] = {"Dhundari"},
["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"},
["dhi"] = {"Dhimal"},
["dhl"] = {"Dhalandji"},
["dhm"] = {"Zemba"},
["dhn"] = {"Dhanki"},
["dho"] = {"Dhodia"},
["dhr"] = {"Dhargari"},
["dhs"] = {"Dhaiso"},
["dhu"] = {"Dhurga"},
["dhv"] = {"Dehu", "Drehu"},
["dhw"] = {"Dhanwar (Nepal)"},
["dhx"] = {"Dhungaloo"},
["dia"] = {"Dia"},
["dib"] = {"South Central Dinka"},
["dic"] = {"Lakota Dida"},
["did"] = {"Didinga"},
["dif"] = {"Dieri", "Diyari"},
["dig"] = {"Digo", "Chidigo"},
["dih"] = {"Kumiai"},
["dii"] = {"Dimbong"},
["dij"] = {"Dai"},
["dik"] = {"Southwestern Dinka"},
["dil"] = {"Dilling"},
["dim"] = {"Dime"},
["din"] = {"Dinka"},
["dio"] = {"Dibo"},
["dip"] = {"Northeastern Dinka"},
["diq"] = {"Dimli (individual language)"},
["dir"] = {"Dirim"},
["dis"] = {"Dimasa"},
["diu"] = {"Diriku"},
["diw"] = {"Northwestern Dinka"},
["dix"] = {"Dixon Reef"},
["diy"] = {"Diuwe"},
["diz"] = {"Ding"},
["dja"] = {"Djadjawurrung"},
["djb"] = {"Djinba"},
["djc"] = {"Dar Daju Daju"},
["djd"] = {"Djamindjung", "Ngaliwurru"},
["dje"] = {"Zarma"},
["djf"] = {"Djangun"},
["dji"] = {"Djinang"},
["djj"] = {"Djeebbana"},
["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"},
["djm"] = {"Jamsay Dogon"},
["djn"] = {"Jawoyn", "Djauan"},
["djo"] = {"Jangkang"},
["djr"] = {"Djambarrpuyngu"},
["dju"] = {"Kapriman"},
["djw"] = {"Djawi"},
["dka"] = {"Dakpakha"},
["dkg"] = {"Kadung"},
["dkk"] = {"Dakka"},
["dkr"] = {"Kuijau"},
["dks"] = {"Southeastern Dinka"},
["dkx"] = {"Mazagway"},
["dlg"] = {"Dolgan"},
["dlk"] = {"Dahalik"},
["dlm"] = {"Dalmatian"},
["dln"] = {"Darlong"},
["dma"] = {"Duma"},
["dmb"] = {"Mombo Dogon"},
["dmc"] = {"Gavak"},
["dmd"] = {"Madhi Madhi"},
["dme"] = {"Dugwor"},
["dmf"] = {"Medefaidrin"},
["dmg"] = {"Upper Kinabatangan"},
["dmk"] = {"Domaaki"},
["dml"] = {"Dameli"},
["dmm"] = {"Dama"},
["dmn"] = {"Mande languages"},
["dmo"] = {"Kemedzung"},
["dmr"] = {"East Damar"},
["dms"] = {"Dampelas"},
["dmu"] = {"Dubu", "Tebi"},
["dmv"] = {"Dumpas"},
["dmw"] = {"Mudburra"},
["dmx"] = {"Dema"},
["dmy"] = {"Demta", "Sowari"},
["dna"] = {"Upper Grand Valley Dani"},
["dnd"] = {"Daonda"},
["dne"] = {"Ndendeule"},
["dng"] = {"Dungan"},
["dni"] = {"Lower Grand Valley Dani"},
["dnj"] = {"Dan"},
["dnk"] = {"Dengka"},
["dnn"] = {"Dzùùngoo"},
["dno"] = {"Ndrulo", "Northern Lendu"},
["dnr"] = {"Danaru"},
["dnt"] = {"Mid Grand Valley Dani"},
["dnu"] = {"Danau"},
["dnv"] = {"Danu"},
["dnw"] = {"Western Dani"},
["dny"] = {"Dení"},
["doa"] = {"Dom"},
["dob"] = {"Dobu"},
["doc"] = {"Northern Dong"},
["doe"] = {"Doe"},
["dof"] = {"Domu"},
["doh"] = {"Dong"},
["doi"] = {"Dogri (macrolanguage)"},
["dok"] = {"Dondo"},
["dol"] = {"Doso"},
["don"] = {"Toura (Papua New Guinea)"},
["doo"] = {"Dongo"},
["dop"] = {"Lukpa"},
["doq"] = {"Dominican Sign Language"},
["dor"] = {"Dori'o"},
["dos"] = {"Dogosé"},
["dot"] = {"Dass"},
["dov"] = {"Dombe"},
["dow"] = {"Doyayo"},
["dox"] = {"Bussa"},
["doy"] = {"Dompo"},
["doz"] = {"Dorze"},
["dpp"] = {"Papar"},
["dra"] = {"Dravidian languages"},
["drb"] = {"Dair"},
["drc"] = {"Minderico"},
["drd"] = {"Darmiya"},
["dre"] = {"Dolpo"},
["drg"] = {"Rungus"},
["dri"] = {"C'Lela"},
["drl"] = {"Paakantyi"},
["drn"] = {"West Damar"},
["dro"] = {"Daro-Matu Melanau"},
["drq"] = {"Dura"},
["drs"] = {"Gedeo"},
["drt"] = {"Drents"},
["dru"] = {"Rukai"},
["dry"] = {"Darai"},
["dsb"] = {"Lower Sorbian"},
["dse"] = {"Dutch Sign Language"},
["dsh"] = {"Daasanach"},
["dsi"] = {"Disa"},
["dsk"] = {"Dokshi"},
["dsl"] = {"Danish Sign Language"},
["dsn"] = {"Dusner"},
["dso"] = {"Desiya"},
["dsq"] = {"Tadaksahak"},
["dsz"] = {"Mardin Sign Language"},
["dta"] = {"Daur"},
["dtb"] = {"Labuk-Kinabatangan Kadazan"},
["dtd"] = {"Ditidaht"},
["dth"] = {"Adithinngithigh"},
["dti"] = {"Ana Tinga Dogon"},
["dtk"] = {"Tene Kan Dogon"},
["dtm"] = {"Tomo Kan Dogon"},
["dtn"] = {"Daatsʼíin"},
["dto"] = {"Tommo So Dogon"},
["dtp"] = {"Kadazan Dusun", "Central Dusun"},
["dtr"] = {"Lotud"},
["dts"] = {"Toro So Dogon"},
["dtt"] = {"Toro Tegu Dogon"},
["dtu"] = {"Tebul Ure Dogon"},
["dty"] = {"Dotyali"},
["dua"] = {"Duala"},
["dub"] = {"Dubli"},
["duc"] = {"Duna"},
["due"] = {"Umiray Dumaget Agta"},
["duf"] = {"Dumbea", "Drubea"},
["dug"] = {"Duruma", "Chiduruma"},
["duh"] = {"Dungra Bhil"},
["dui"] = {"Dumun"},
["duk"] = {"Uyajitaya"},
["dul"] = {"Alabat Island Agta"},
["dum"] = {"Middle Dutch (ca. 1050-1350)"},
["dun"] = {"Dusun Deyah"},
["duo"] = {"Dupaninan Agta"},
["dup"] = {"Duano"},
["duq"] = {"Dusun Malang"},
["dur"] = {"Dii"},
["dus"] = {"Dumi"},
["duu"] = {"Drung"},
["duv"] = {"Duvle"},
["duw"] = {"Dusun Witu"},
["dux"] = {"Duungooma"},
["duy"] = {"Dicamay Agta"},
["duz"] = {"Duli-Gey"},
["dva"] = {"Duau"},
["dwa"] = {"Diri"},
["dwk"] = {"Dawik Kui"},
["dwr"] = {"Dawro"},
["dws"] = {"Dutton World Speedwords"},
["dwu"] = {"Dhuwal"},
["dww"] = {"Dawawa"},
["dwy"] = {"Dhuwaya"},
["dwz"] = {"Dewas Rai"},
["dya"] = {"Dyan"},
["dyb"] = {"Dyaberdyaber"},
["dyd"] = {"Dyugun"},
["dyg"] = {"Villa Viciosa Agta"},
["dyi"] = {"Djimini Senoufo"},
["dym"] = {"Yanda Dom Dogon"},
["dyn"] = {"Dyangadi", "Dhanggatti"},
["dyo"] = {"Jola-Fonyi"},
["dyr"] = {"Dyarim"},
["dyu"] = {"Dyula"},
["dyy"] = {"Djabugay", "Dyaabugay"},
["dza"] = {"Tunzu"},
["dzd"] = {"Daza"},
["dze"] = {"Djiwarli"},
["dzg"] = {"Dazaga"},
["dzl"] = {"Dzalakha"},
["dzn"] = {"Dzando"},
["eaa"] = {"Karenggapa"},
["ebc"] = {"Beginci"},
["ebg"] = {"Ebughu"},
["ebk"] = {"Eastern Bontok"},
["ebo"] = {"Teke-Ebo"},
["ebr"] = {"Ebrié"},
["ebu"] = {"Embu", "Kiembu"},
["ecr"] = {"Eteocretan"},
["ecs"] = {"Ecuadorian Sign Language"},
["ecy"] = {"Eteocypriot"},
["eee"] = {"E"},
["efa"] = {"Efai"},
["efe"] = {"Efe"},
["efi"] = {"Efik"},
["ega"] = {"Ega"},
["egl"] = {"Emilian"},
["egm"] = {"Benamanga"},
["ego"] = {"Eggon"},
["egx"] = {"Egyptian languages"},
["egy"] = {"Egyptian (Ancient)"},
["ehs"] = {"Miyakubo Sign Language"},
["ehu"] = {"Ehueun"},
["eip"] = {"Eipomek"},
["eit"] = {"Eitiep"},
["eiv"] = {"Askopan"},
["eja"] = {"Ejamat"},
["eka"] = {"Ekajuk"},
["eke"] = {"Ekit"},
["ekg"] = {"Ekari"},
["eki"] = {"Eki"},
["ekk"] = {"Standard Estonian"},
["ekl"] = {"Kol (Bangladesh)", "Kol"},
["ekm"] = {"Elip"},
["eko"] = {"Koti"},
["ekp"] = {"Ekpeye"},
["ekr"] = {"Yace"},
["eky"] = {"Eastern Kayah"},
["ele"] = {"Elepi"},
["elh"] = {"El Hugeirat"},
["eli"] = {"Nding"},
["elk"] = {"Elkei"},
["elm"] = {"Eleme"},
["elo"] = {"El Molo"},
["elu"] = {"Elu"},
["elx"] = {"Elamite"},
["ema"] = {"Emai-Iuleha-Ora"},
["emb"] = {"Embaloh"},
["eme"] = {"Emerillon"},
["emg"] = {"Eastern Meohang"},
["emi"] = {"Mussau-Emira"},
["emk"] = {"Eastern Maninkakan"},
["emm"] = {"Mamulique"},
["emn"] = {"Eman"},
["emp"] = {"Northern Emberá"},
["emq"] = {"Eastern Minyag"},
["ems"] = {"Pacific Gulf Yupik"},
["emu"] = {"Eastern Muria"},
["emw"] = {"Emplawas"},
["emx"] = {"Erromintxela"},
["emy"] = {"Epigraphic Mayan"},
["emz"] = {"Mbessa"},
["ena"] = {"Apali"},
["enb"] = {"Markweeta"},
["enc"] = {"En"},
["end"] = {"Ende"},
["enf"] = {"Forest Enets"},
["enh"] = {"Tundra Enets"},
["enl"] = {"Enlhet"},
["enm"] = {"Middle English (1100-1500)"},
["enn"] = {"Engenni"},
["eno"] = {"Enggano"},
["enq"] = {"Enga"},
["enr"] = {"Emumu", "Emem"},
["enu"] = {"Enu"},
["env"] = {"Enwan (Edo State)"},
["enw"] = {"Enwan (Akwa Ibom State)"},
["enx"] = {"Enxet"},
["eot"] = {"Beti (Côte d'Ivoire)"},
["epi"] = {"Epie"},
["era"] = {"Eravallan"},
["erg"] = {"Sie"},
["erh"] = {"Eruwa"},
["eri"] = {"Ogea"},
["erk"] = {"South Efate"},
["ero"] = {"Horpa"},
["err"] = {"Erre"},
["ers"] = {"Ersu"},
["ert"] = {"Eritai"},
["erw"] = {"Erokwanas"},
["ese"] = {"Ese Ejja"},
["esg"] = {"Aheri Gondi"},
["esh"] = {"Eshtehardi"},
["esi"] = {"North Alaskan Inupiatun"},
["esk"] = {"Northwest Alaska Inupiatun"},
["esl"] = {"Egypt Sign Language"},
["esm"] = {"Esuma"},
["esn"] = {"Salvadoran Sign Language"},
["eso"] = {"Estonian Sign Language"},
["esq"] = {"Esselen"},
["ess"] = {"Central Siberian Yupik"},
["esu"] = {"Central Yupik"},
["esx"] = {"Eskimo-Aleut languages"},
["esy"] = {"Eskayan"},
["etb"] = {"Etebi"},
["etc"] = {"Etchemin"},
["eth"] = {"Ethiopian Sign Language"},
["etn"] = {"Eton (Vanuatu)"},
["eto"] = {"Eton (Cameroon)"},
["etr"] = {"Edolo"},
["ets"] = {"Yekhee"},
["ett"] = {"Etruscan"},
["etu"] = {"Ejagham"},
["etx"] = {"Eten"},
["etz"] = {"Semimi"},
["eud"] = {"Eudeve"},
["euq"] = {"Basque (family)"},
["eve"] = {"Even"},
["evh"] = {"Uvbie"},
["evn"] = {"Evenki"},
["ewo"] = {"Ewondo"},
["ext"] = {"Extremaduran"},
["eya"] = {"Eyak"},
["eyo"] = {"Keiyo"},
["eza"] = {"Ezaa"},
["eze"] = {"Uzekwe"},
["faa"] = {"Fasu"},
["fab"] = {"Fa d'Ambu"},
["fad"] = {"Wagi"},
["faf"] = {"Fagani"},
["fag"] = {"Finongan"},
["fah"] = {"Baissa Fali"},
["fai"] = {"Faiwol"},
["faj"] = {"Faita"},
["fak"] = {"Fang (Cameroon)"},
["fal"] = {"South Fali"},
["fam"] = {"Fam"},
["fan"] = {"Fang (Equatorial Guinea)"},
["fap"] = {"Paloor"},
["far"] = {"Fataleka"},
["fat"] = {"Fanti"},
["fau"] = {"Fayu"},
["fax"] = {"Fala"},
["fay"] = {"Southwestern Fars"},
["faz"] = {"Northwestern Fars"},
["fbl"] = {"West Albay Bikol"},
["fcs"] = {"Quebec Sign Language"},
["fer"] = {"Feroge"},
["ffi"] = {"Foia Foia"},
["ffm"] = {"Maasina Fulfulde"},
["fgr"] = {"Fongoro"},
["fia"] = {"Nobiin"},
["fie"] = {"Fyer"},
["fif"] = {"Faifi"},
["fil"] = {"Filipino", "Pilipino"},
["fip"] = {"Fipa"},
["fir"] = {"Firan"},
["fit"] = {"Tornedalen Finnish", "Meänkieli"},
["fiu"] = {"Finno-Ugrian languages"},
["fiw"] = {"Fiwaga"},
["fkk"] = {"Kirya-Konzəl"},
["fkv"] = {"Kven Finnish"},
["fla"] = {"Kalispel-Pend d'Oreille"},
["flh"] = {"Foau"},
["fli"] = {"Fali"},
["fll"] = {"North Fali"},
["fln"] = {"Flinders Island"},
["flr"] = {"Fuliiru"},
["fly"] = {"Flaaitaal", "Tsotsitaal"},
["fmp"] = {"Fe'fe'"},
["fmu"] = {"Far Western Muria"},
["fnb"] = {"Fanbak"},
["fng"] = {"Fanagalo"},
["fni"] = {"Fania"},
["fod"] = {"Foodo"},
["foi"] = {"Foi"},
["fom"] = {"Foma"},
["fon"] = {"Fon"},
["for"] = {"Fore"},
["fos"] = {"Siraya"},
["fox"] = {"Formosan languages"},
["fpe"] = {"Fernando Po Creole English"},
["fqs"] = {"Fas"},
["frc"] = {"Cajun French"},
["frd"] = {"Fordata"},
["frk"] = {"Frankish"},
["frm"] = {"Middle French (ca. 1400-1600)"},
["fro"] = {"Old French (842-ca. 1400)"},
["frp"] = {"Arpitan", "Francoprovençal"},
["frq"] = {"Forak"},
["frr"] = {"Northern Frisian"},
["frs"] = {"Eastern Frisian"},
["frt"] = {"Fortsenal"},
["fse"] = {"Finnish Sign Language"},
["fsl"] = {"French Sign Language"},
["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"},
["fub"] = {"Adamawa Fulfulde"},
["fuc"] = {"Pulaar"},
["fud"] = {"East Futuna"},
["fue"] = {"Borgu Fulfulde"},
["fuf"] = {"Pular"},
["fuh"] = {"Western Niger Fulfulde"},
["fui"] = {"Bagirmi Fulfulde"},
["fuj"] = {"Ko"},
["fum"] = {"Fum"},
["fun"] = {"Fulniô"},
["fuq"] = {"Central-Eastern Niger Fulfulde"},
["fur"] = {"Friulian"},
["fut"] = {"Futuna-Aniwa"},
["fuu"] = {"Furu"},
["fuv"] = {"Nigerian Fulfulde"},
["fuy"] = {"Fuyug"},
["fvr"] = {"Fur"},
["fwa"] = {"Fwâi"},
["fwe"] = {"Fwe"},
["gaa"] = {"Ga"},
["gab"] = {"Gabri"},
["gac"] = {"Mixed Great Andamanese"},
["gad"] = {"Gaddang"},
["gae"] = {"Guarequena"},
["gaf"] = {"Gende"},
["gag"] = {"Gagauz"},
["gah"] = {"Alekano"},
["gai"] = {"Borei"},
["gaj"] = {"Gadsup"},
["gak"] = {"Gamkonora"},
["gal"] = {"Galolen"},
["gam"] = {"Kandawo"},
["gan"] = {"Gan Chinese"},
["gao"] = {"Gants"},
["gap"] = {"Gal"},
["gaq"] = {"Gata'"},
["gar"] = {"Galeya"},
["gas"] = {"Adiwasi Garasia"},
["gat"] = {"Kenati"},
["gau"] = {"Mudhili Gadaba"},
["gaw"] = {"Nobonob"},
["gax"] = {"Borana-Arsi-Guji Oromo"},
["gay"] = {"Gayo"},
["gaz"] = {"West Central Oromo"},
["gba"] = {"Gbaya (Central African Republic)"},
["gbb"] = {"Kaytetye"},
["gbd"] = {"Karajarri"},
["gbe"] = {"Niksek"},
["gbf"] = {"Gaikundi"},
["gbg"] = {"Gbanziri"},
["gbh"] = {"Defi Gbe"},
["gbi"] = {"Galela"},
["gbj"] = {"Bodo Gadaba"},
["gbk"] = {"Gaddi"},
["gbl"] = {"Gamit"},
["gbm"] = {"Garhwali"},
["gbn"] = {"Mo'da"},
["gbo"] = {"Northern Grebo"},
["gbp"] = {"Gbaya-Bossangoa"},
["gbq"] = {"Gbaya-Bozoum"},
["gbr"] = {"Gbagyi"},
["gbs"] = {"Gbesi Gbe"},
["gbu"] = {"Gagadu"},
["gbv"] = {"Gbanu"},
["gbw"] = {"Gabi-Gabi"},
["gbx"] = {"Eastern Xwla Gbe"},
["gby"] = {"Gbari"},
["gbz"] = {"Zoroastrian Dari"},
["gcc"] = {"Mali"},
["gcd"] = {"Ganggalida"},
["gce"] = {"Galice"},
["gcf"] = {"Guadeloupean Creole French"},
["gcl"] = {"Grenadian Creole English"},
["gcn"] = {"Gaina"},
["gcr"] = {"Guianese Creole French"},
["gct"] = {"Colonia Tovar German"},
["gda"] = {"Gade Lohar"},
["gdb"] = {"Pottangi Ollar Gadaba"},
["gdc"] = {"Gugu Badhun"},
["gdd"] = {"Gedaged"},
["gde"] = {"Gude"},
["gdf"] = {"Guduf-Gava"},
["gdg"] = {"Ga'dang"},
["gdh"] = {"Gadjerawang", "Gajirrabeng"},
["gdi"] = {"Gundi"},
["gdj"] = {"Gurdjar"},
["gdk"] = {"Gadang"},
["gdl"] = {"Dirasha"},
["gdm"] = {"Laal"},
["gdn"] = {"Umanakaina"},
["gdo"] = {"Ghodoberi"},
["gdq"] = {"Mehri"},
["gdr"] = {"Wipi"},
["gds"] = {"Ghandruk Sign Language"},
["gdt"] = {"Kungardutyi"},
["gdu"] = {"Gudu"},
["gdx"] = {"Godwari"},
["gea"] = {"Geruma"},
["geb"] = {"Kire"},
["gec"] = {"Gboloo Grebo"},
["ged"] = {"Gade"},
["gef"] = {"Gerai"},
["geg"] = {"Gengle"},
["geh"] = {"Hutterite German", "Hutterisch"},
["gei"] = {"Gebe"},
["gej"] = {"Gen"},
["gek"] = {"Ywom"},
["gel"] = {"ut-Ma'in"},
["gem"] = {"Germanic languages"},
["geq"] = {"Geme"},
["ges"] = {"Geser-Gorom"},
["gev"] = {"Eviya"},
["gew"] = {"Gera"},
["gex"] = {"Garre"},
["gey"] = {"Enya"},
["gez"] = {"Geez"},
["gfk"] = {"Patpatar"},
["gft"] = {"Gafat"},
["gga"] = {"Gao"},
["ggb"] = {"Gbii"},
["ggd"] = {"Gugadj"},
["gge"] = {"Gurr-goni"},
["ggg"] = {"Gurgula"},
["ggk"] = {"Kungarakany"},
["ggl"] = {"Ganglau"},
["ggt"] = {"Gitua"},
["ggu"] = {"Gagu", "Gban"},
["ggw"] = {"Gogodala"},
["gha"] = {"Ghadamès"},
["ghc"] = {"Hiberno-Scottish Gaelic"},
["ghe"] = {"Southern Ghale"},
["ghh"] = {"Northern Ghale"},
["ghk"] = {"Geko Karen"},
["ghl"] = {"Ghulfan"},
["ghn"] = {"Ghanongga"},
["gho"] = {"Ghomara"},
["ghr"] = {"Ghera"},
["ghs"] = {"Guhu-Samane"},
["ght"] = {"Kuke", "Kutang Ghale"},
["gia"] = {"Kija"},
["gib"] = {"Gibanawa"},
["gic"] = {"Gail"},
["gid"] = {"Gidar"},
["gie"] = {"Gaɓogbo", "Guébie"},
["gig"] = {"Goaria"},
["gih"] = {"Githabul"},
["gii"] = {"Girirra"},
["gil"] = {"Gilbertese"},
["gim"] = {"Gimi (Eastern Highlands)"},
["gin"] = {"Hinukh"},
["gip"] = {"Gimi (West New Britain)"},
["giq"] = {"Green Gelao"},
["gir"] = {"Red Gelao"},
["gis"] = {"North Giziga"},
["git"] = {"Gitxsan"},
["giu"] = {"Mulao"},
["giw"] = {"White Gelao"},
["gix"] = {"Gilima"},
["giy"] = {"Giyug"},
["giz"] = {"South Giziga"},
["gjk"] = {"Kachi Koli"},
["gjm"] = {"Gunditjmara"},
["gjn"] = {"Gonja"},
["gjr"] = {"Gurindji Kriol"},
["gju"] = {"Gujari"},
["gka"] = {"Guya"},
["gkd"] = {"Magɨ (Madang Province)"},
["gke"] = {"Ndai"},
["gkn"] = {"Gokana"},
["gko"] = {"Kok-Nar"},
["gkp"] = {"Guinea Kpelle"},
["gku"] = {"ǂUngkue"},
["glb"] = {"Belning"},
["glc"] = {"Bon Gula"},
["gld"] = {"Nanai"},
["glh"] = {"Northwest Pashai", "Northwest Pashayi"},
["glj"] = {"Gula Iro"},
["glk"] = {"Gilaki"},
["gll"] = {"Garlali"},
["glo"] = {"Galambu"},
["glr"] = {"Glaro-Twabo"},
["glu"] = {"Gula (Chad)"},
["glw"] = {"Glavda"},
["gly"] = {"Gule"},
["gma"] = {"Gambera"},
["gmb"] = {"Gula'alaa"},
["gmd"] = {"Mághdì"},
["gme"] = {"East Germanic languages"},
["gmg"] = {"Magɨyi"},
["gmh"] = {"Middle High German (ca. 1050-1500)"},
["gml"] = {"Middle Low German"},
["gmm"] = {"Gbaya-Mbodomo"},
["gmn"] = {"Gimnime"},
["gmq"] = {"North Germanic languages"},
["gmr"] = {"Mirning", "Mirniny"},
["gmu"] = {"Gumalu"},
["gmv"] = {"Gamo"},
["gmw"] = {"West Germanic languages"},
["gmx"] = {"Magoma"},
["gmy"] = {"Mycenaean Greek"},
["gmz"] = {"Mgbolizhia"},
["gna"] = {"Kaansa"},
["gnb"] = {"Gangte"},
["gnc"] = {"Guanche"},
["gnd"] = {"Zulgo-Gemzek"},
["gne"] = {"Ganang"},
["gng"] = {"Ngangam"},
["gnh"] = {"Lere"},
["gni"] = {"Gooniyandi"},
["gnj"] = {"Ngen"},
["gnk"] = {"ǁGana"},
["gnl"] = {"Gangulu"},
["gnm"] = {"Ginuman"},
["gnn"] = {"Gumatj"},
["gno"] = {"Northern Gondi"},
["gnq"] = {"Gana"},
["gnr"] = {"Gureng Gureng"},
["gnt"] = {"Guntai"},
["gnu"] = {"Gnau"},
["gnw"] = {"Western Bolivian Guaraní"},
["gnz"] = {"Ganzi"},
["goa"] = {"Guro"},
["gob"] = {"Playero"},
["goc"] = {"Gorakor"},
["god"] = {"Godié"},
["goe"] = {"Gongduk"},
["gof"] = {"Gofa"},
["gog"] = {"Gogo"},
["goh"] = {"Old High German (ca. 750-1050)"},
["goi"] = {"Gobasi"},
["goj"] = {"Gowlan"},
["gok"] = {"Gowli"},
["gol"] = {"Gola"},
["gom"] = {"Goan Konkani"},
["gon"] = {"Gondi"},
["goo"] = {"Gone Dau"},
["gop"] = {"Yeretuar"},
["goq"] = {"Gorap"},
["gor"] = {"Gorontalo"},
["gos"] = {"Gronings"},
["got"] = {"Gothic"},
["gou"] = {"Gavar"},
["gov"] = {"Goo"},
["gow"] = {"Gorowa"},
["gox"] = {"Gobu"},
["goy"] = {"Goundo"},
["goz"] = {"Gozarkhani"},
["gpa"] = {"Gupa-Abawa"},
["gpe"] = {"Ghanaian Pidgin English"},
["gpn"] = {"Taiap"},
["gqa"] = {"Ga'anda"},
["gqi"] = {"Guiqiong"},
["gqn"] = {"Guana (Brazil)"},
["gqr"] = {"Gor"},
["gqu"] = {"Qau"},
["gra"] = {"Rajput Garasia"},
["grb"] = {"Grebo"},
["grc"] = {"Ancient Greek (to 1453)"},
["grd"] = {"Guruntum-Mbaaru"},
["grg"] = {"Madi"},
["grh"] = {"Gbiri-Niragu"},
["gri"] = {"Ghari"},
["grj"] = {"Southern Grebo"},
["grk"] = {"Greek languages"},
["grm"] = {"Kota Marudu Talantang"},
["gro"] = {"Groma"},
["grq"] = {"Gorovu"},
["grr"] = {"Taznatit"},
["grs"] = {"Gresi"},
["grt"] = {"Garo"},
["gru"] = {"Kistane"},
["grv"] = {"Central Grebo"},
["grw"] = {"Gweda"},
["grx"] = {"Guriaso"},
["gry"] = {"Barclayville Grebo"},
["grz"] = {"Guramalum"},
["gse"] = {"Ghanaian Sign Language"},
["gsg"] = {"German Sign Language"},
["gsl"] = {"Gusilay"},
["gsm"] = {"Guatemalan Sign Language"},
["gsn"] = {"Nema", "Gusan"},
["gso"] = {"Southwest Gbaya"},
["gsp"] = {"Wasembo"},
["gss"] = {"Greek Sign Language"},
["gsw"] = {"Swiss German", "Alemannic", "Alsatian"},
["gta"] = {"Guató"},
["gtu"] = {"Aghu-Tharnggala"},
["gua"] = {"Shiki"},
["gub"] = {"Guajajára"},
["guc"] = {"Wayuu"},
["gud"] = {"Yocoboué Dida"},
["gue"] = {"Gurindji"},
["guf"] = {"Gupapuyngu"},
["gug"] = {"Paraguayan Guaraní"},
["guh"] = {"Guahibo"},
["gui"] = {"Eastern Bolivian Guaraní"},
["guk"] = {"Gumuz"},
["gul"] = {"Sea Island Creole English"},
["gum"] = {"Guambiano"},
["gun"] = {"Mbyá Guaraní"},
["guo"] = {"Guayabero"},
["gup"] = {"Gunwinggu"},
["guq"] = {"Aché"},
["gur"] = {"Farefare"},
["gus"] = {"Guinean Sign Language"},
["gut"] = {"Maléku Jaíka"},
["guu"] = {"Yanomamö"},
["guw"] = {"Gun"},
["gux"] = {"Gourmanchéma"},
["guz"] = {"Gusii", "Ekegusii"},
["gva"] = {"Guana (Paraguay)"},
["gvc"] = {"Guanano"},
["gve"] = {"Duwet"},
["gvf"] = {"Golin"},
["gvj"] = {"Guajá"},
["gvl"] = {"Gulay"},
["gvm"] = {"Gurmana"},
["gvn"] = {"Kuku-Yalanji"},
["gvo"] = {"Gavião Do Jiparaná"},
["gvp"] = {"Pará Gavião"},
["gvr"] = {"Gurung"},
["gvs"] = {"Gumawana"},
["gvy"] = {"Guyani"},
["gwa"] = {"Mbato"},
["gwb"] = {"Gwa"},
["gwc"] = {"Gawri", "Kalami"},
["gwd"] = {"Gawwada"},
["gwe"] = {"Gweno"},
["gwf"] = {"Gowro"},
["gwg"] = {"Moo"},
["gwi"] = {"Gwichʼin"},
["gwj"] = {"ǀGwi"},
["gwm"] = {"Awngthim"},
["gwn"] = {"Gwandara"},
["gwr"] = {"Gwere"},
["gwt"] = {"Gawar-Bati"},
["gwu"] = {"Guwamu"},
["gww"] = {"Kwini"},
["gwx"] = {"Gua"},
["gxx"] = {"Wè Southern"},
["gya"] = {"Northwest Gbaya"},
["gyb"] = {"Garus"},
["gyd"] = {"Kayardild"},
["gye"] = {"Gyem"},
["gyf"] = {"Gungabula"},
["gyg"] = {"Gbayi"},
["gyi"] = {"Gyele"},
["gyl"] = {"Gayil"},
["gym"] = {"Ngäbere"},
["gyn"] = {"Guyanese Creole English"},
["gyo"] = {"Gyalsumdo"},
["gyr"] = {"Guarayu"},
["gyy"] = {"Gunya"},
["gyz"] = {"Geji", "Gyaazi"},
["gza"] = {"Ganza"},
["gzi"] = {"Gazi"},
["gzn"] = {"Gane"},
["haa"] = {"Han"},
["hab"] = {"Hanoi Sign Language"},
["hac"] = {"Gurani"},
["had"] = {"Hatam"},
["hae"] = {"Eastern Oromo"},
["haf"] = {"Haiphong Sign Language"},
["hag"] = {"Hanga"},
["hah"] = {"Hahon"},
["hai"] = {"Haida"},
["haj"] = {"Hajong"},
["hak"] = {"Hakka Chinese"},
["hal"] = {"Halang"},
["ham"] = {"Hewa"},
["han"] = {"Hangaza"},
["hao"] = {"Hakö"},
["hap"] = {"Hupla"},
["haq"] = {"Ha"},
["har"] = {"Harari"},
["has"] = {"Haisla"},
["hav"] = {"Havu"},
["haw"] = {"Hawaiian"},
["hax"] = {"Southern Haida"},
["hay"] = {"Haya"},
["haz"] = {"Hazaragi"},
["hba"] = {"Hamba"},
["hbb"] = {"Huba"},
["hbn"] = {"Heiban"},
["hbo"] = {"Ancient Hebrew"},
["hbu"] = {"Habu"},
["hca"] = {"Andaman Creole Hindi"},
["hch"] = {"Huichol"},
["hdn"] = {"Northern Haida"},
["hds"] = {"Honduras Sign Language"},
["hdy"] = {"Hadiyya"},
["hea"] = {"Northern Qiandong Miao"},
["hed"] = {"Herdé"},
["heg"] = {"Helong"},
["heh"] = {"Hehe"},
["hei"] = {"Heiltsuk"},
["hem"] = {"Hemba"},
["hgm"] = {"Haiǁom"},
["hgw"] = {"Haigwai"},
["hhi"] = {"Hoia Hoia"},
["hhr"] = {"Kerak"},
["hhy"] = {"Hoyahoya"},
["hia"] = {"Lamang"},
["hib"] = {"Hibito"},
["hid"] = {"Hidatsa"},
["hif"] = {"Fiji Hindi"},
["hig"] = {"Kamwe"},
["hih"] = {"Pamosu"},
["hii"] = {"Hinduri"},
["hij"] = {"Hijuk"},
["hik"] = {"Seit-Kaitetu"},
["hil"] = {"Hiligaynon"},
["him"] = {"Himachali languages", "Western Pahari languages"},
["hio"] = {"Tsoa"},
["hir"] = {"Himarimã"},
["hit"] = {"Hittite"},
["hiw"] = {"Hiw"},
["hix"] = {"Hixkaryána"},
["hji"] = {"Haji"},
["hka"] = {"Kahe"},
["hke"] = {"Hunde"},
["hkh"] = {"Khah", "Poguli"},
["hkk"] = {"Hunjara-Kaina Ke"},
["hkn"] = {"Mel-Khaonh"},
["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"},
["hla"] = {"Halia"},
["hlb"] = {"Halbi"},
["hld"] = {"Halang Doan"},
["hle"] = {"Hlersu"},
["hlt"] = {"Matu Chin"},
["hlu"] = {"Hieroglyphic Luwian"},
["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"},
["hmb"] = {"Humburi Senni Songhay"},
["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"},
["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"},
["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"},
["hmf"] = {"Hmong Don"},
["hmg"] = {"Southwestern Guiyang Hmong"},
["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"},
["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"},
["hmj"] = {"Ge", "Gejia"},
["hmk"] = {"Maek"},
["hml"] = {"Luopohe Hmong", "Luopohe Miao"},
["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"},
["hmn"] = {"Hmong", "Mong"},
["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"},
["hmq"] = {"Eastern Qiandong Miao"},
["hmr"] = {"Hmar"},
["hms"] = {"Southern Qiandong Miao"},
["hmt"] = {"Hamtai"},
["hmu"] = {"Hamap"},
["hmv"] = {"Hmong Dô"},
["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"},
["hmx"] = {"Hmong-Mien languages"},
["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"},
["hmz"] = {"Hmong Shua", "Sinicized Miao"},
["hna"] = {"Mina (Cameroon)"},
["hnd"] = {"Southern Hindko"},
["hne"] = {"Chhattisgarhi"},
["hng"] = {"Hungu"},
["hnh"] = {"ǁAni"},
["hni"] = {"Hani"},
["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"},
["hnn"] = {"Hanunoo"},
["hno"] = {"Northern Hindko"},
["hns"] = {"Caribbean Hindustani"},
["hnu"] = {"Hung"},
["hoa"] = {"Hoava"},
["hob"] = {"Mari (Madang Province)"},
["hoc"] = {"Ho"},
["hod"] = {"Holma"},
["hoe"] = {"Horom"},
["hoh"] = {"Hobyót"},
["hoi"] = {"Holikachuk"},
["hoj"] = {"Hadothi", "Haroti"},
["hok"] = {"Hokan languages"},
["hol"] = {"Holu"},
["hom"] = {"Homa"},
["hoo"] = {"Holoholo"},
["hop"] = {"Hopi"},
["hor"] = {"Horo"},
["hos"] = {"Ho Chi Minh City Sign Language"},
["hot"] = {"Hote", "Malê"},
["hov"] = {"Hovongan"},
["how"] = {"Honi"},
["hoy"] = {"Holiya"},
["hoz"] = {"Hozo"},
["hpo"] = {"Hpon"},
["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"},
["hra"] = {"Hrangkhol"},
["hrc"] = {"Niwer Mil"},
["hre"] = {"Hre"},
["hrk"] = {"Haruku"},
["hrm"] = {"Horned Miao"},
["hro"] = {"Haroi"},
["hrp"] = {"Nhirrpi"},
["hrt"] = {"Hértevin"},
["hru"] = {"Hruso"},
["hrw"] = {"Warwar Feni"},
["hrx"] = {"Hunsrik"},
["hrz"] = {"Harzani"},
["hsb"] = {"Upper Sorbian"},
["hsh"] = {"Hungarian Sign Language"},
["hsl"] = {"Hausa Sign Language"},
["hsn"] = {"Xiang Chinese"},
["hss"] = {"Harsusi"},
["hti"] = {"Hoti"},
["hto"] = {"Minica Huitoto"},
["hts"] = {"Hadza"},
["htu"] = {"Hitu"},
["htx"] = {"Middle Hittite"},
["hub"] = {"Huambisa"},
["huc"] = {"ǂHua", "ǂʼAmkhoe"},
["hud"] = {"Huaulu"},
["hue"] = {"San Francisco Del Mar Huave"},
["huf"] = {"Humene"},
["hug"] = {"Huachipaeri"},
["huh"] = {"Huilliche"},
["hui"] = {"Huli"},
["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"},
["huk"] = {"Hulung"},
["hul"] = {"Hula"},
["hum"] = {"Hungana"},
["huo"] = {"Hu"},
["hup"] = {"Hupa"},
["huq"] = {"Tsat"},
["hur"] = {"Halkomelem"},
["hus"] = {"Huastec"},
["hut"] = {"Humla"},
["huu"] = {"Murui Huitoto"},
["huv"] = {"San Mateo Del Mar Huave"},
["huw"] = {"Hukumina"},
["hux"] = {"Nüpode Huitoto"},
["huy"] = {"Hulaulá"},
["huz"] = {"Hunzib"},
["hvc"] = {"Haitian Vodoun Culture Language"},
["hve"] = {"San Dionisio Del Mar Huave"},
["hvk"] = {"Haveke"},
["hvn"] = {"Sabu"},
["hvv"] = {"Santa María Del Mar Huave"},
["hwa"] = {"Wané"},
["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"},
["hwo"] = {"Hwana"},
["hya"] = {"Hya"},
["hyw"] = {"Western Armenian"},
["hyx"] = {"Armenian (family)"},
["iai"] = {"Iaai"},
["ian"] = {"Iatmul"},
["iar"] = {"Purari"},
["iba"] = {"Iban"},
["ibb"] = {"Ibibio"},
["ibd"] = {"Iwaidja"},
["ibe"] = {"Akpes"},
["ibg"] = {"Ibanag"},
["ibh"] = {"Bih"},
["ibl"] = {"Ibaloi"},
["ibm"] = {"Agoi"},
["ibn"] = {"Ibino"},
["ibr"] = {"Ibuoro"},
["ibu"] = {"Ibu"},
["iby"] = {"Ibani"},
["ica"] = {"Ede Ica"},
["ich"] = {"Etkywan"},
["icl"] = {"Icelandic Sign Language"},
["icr"] = {"Islander Creole English"},
["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"},
["idb"] = {"Indo-Portuguese"},
["idc"] = {"Idon", "Ajiya"},
["idd"] = {"Ede Idaca"},
["ide"] = {"Idere"},
["idi"] = {"Idi"},
["idr"] = {"Indri"},
["ids"] = {"Idesa"},
["idt"] = {"Idaté"},
["idu"] = {"Idoma"},
["ifa"] = {"Amganad Ifugao"},
["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"},
["ife"] = {"Ifè"},
["iff"] = {"Ifo"},
["ifk"] = {"Tuwali Ifugao"},
["ifm"] = {"Teke-Fuumu"},
["ifu"] = {"Mayoyao Ifugao"},
["ify"] = {"Keley-I Kallahan"},
["igb"] = {"Ebira"},
["ige"] = {"Igede"},
["igg"] = {"Igana"},
["igl"] = {"Igala"},
["igm"] = {"Kanggape"},
["ign"] = {"Ignaciano"},
["igo"] = {"Isebe"},
["igs"] = {"Interglossa"},
["igw"] = {"Igwe"},
["ihb"] = {"Iha Based Pidgin"},
["ihi"] = {"Ihievbe"},
["ihp"] = {"Iha"},
["ihw"] = {"Bidhawal"},
["iin"] = {"Thiin"},
["iir"] = {"Indo-Iranian languages"},
["ijc"] = {"Izon"},
["ije"] = {"Biseni"},
["ijj"] = {"Ede Ije"},
["ijn"] = {"Kalabari"},
["ijo"] = {"Ijo languages"},
["ijs"] = {"Southeast Ijo"},
["ike"] = {"Eastern Canadian Inuktitut"},
["ikh"] = {"Ikhin-Arokho"},
["iki"] = {"Iko"},
["ikk"] = {"Ika"},
["ikl"] = {"Ikulu"},
["iko"] = {"Olulumo-Ikom"},
["ikp"] = {"Ikpeshi"},
["ikr"] = {"Ikaranggal"},
["iks"] = {"Inuit Sign Language"},
["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"},
["ikv"] = {"Iku-Gora-Ankwa"},
["ikw"] = {"Ikwere"},
["ikx"] = {"Ik"},
["ikz"] = {"Ikizu"},
["ila"] = {"Ile Ape"},
["ilb"] = {"Ila"},
["ilg"] = {"Garig-Ilgar"},
["ili"] = {"Ili Turki"},
["ilk"] = {"Ilongot"},
["ilm"] = {"Iranun (Malaysia)"},
["ilo"] = {"Iloko"},
["ilp"] = {"Iranun (Philippines)"},
["ils"] = {"International Sign"},
["ilu"] = {"Ili'uun"},
["ilv"] = {"Ilue"},
["ima"] = {"Mala Malasar"},
["imi"] = {"Anamgura"},
["iml"] = {"Miluk"},
["imn"] = {"Imonda"},
["imo"] = {"Imbongu"},
["imr"] = {"Imroing"},
["ims"] = {"Marsian"},
["imt"] = {"Imotong"},
["imy"] = {"Milyan"},
["inb"] = {"Inga"},
["inc"] = {"Indic languages"},
["ine"] = {"Indo-European languages"},
["ing"] = {"Degexit'an"},
["inh"] = {"Ingush"},
["inj"] = {"Jungle Inga"},
["inl"] = {"Indonesian Sign Language"},
["inm"] = {"Minaean"},
["inn"] = {"Isinai"},
["ino"] = {"Inoke-Yate"},
["inp"] = {"Iñapari"},
["ins"] = {"Indian Sign Language"},
["int"] = {"Intha"},
["inz"] = {"Ineseño"},
["ior"] = {"Inor"},
["iou"] = {"Tuma-Irumu"},
["iow"] = {"Iowa-Oto"},
["ipi"] = {"Ipili"},
["ipo"] = {"Ipiko"},
["iqu"] = {"Iquito"},
["iqw"] = {"Ikwo"},
["ira"] = {"Iranian languages"},
["ire"] = {"Iresim"},
["irh"] = {"Irarutu"},
["iri"] = {"Rigwe", "Irigwe"},
["irk"] = {"Iraqw"},
["irn"] = {"Irántxe"},
["iro"] = {"Iroquoian languages"},
["irr"] = {"Ir"},
["iru"] = {"Irula"},
["irx"] = {"Kamberau"},
["iry"] = {"Iraya"},
["isa"] = {"Isabi"},
["isc"] = {"Isconahua"},
["isd"] = {"Isnag"},
["ise"] = {"Italian Sign Language"},
["isg"] = {"Irish Sign Language"},
["ish"] = {"Esan"},
["isi"] = {"Nkem-Nkum"},
["isk"] = {"Ishkashimi"},
["ism"] = {"Masimasi"},
["isn"] = {"Isanzu"},
["iso"] = {"Isoko"},
["isr"] = {"Israeli Sign Language"},
["ist"] = {"Istriot"},
["isu"] = {"Isu (Menchum Division)"},
["itb"] = {"Binongan Itneg"},
["itc"] = {"Italic languages"},
["itd"] = {"Southern Tidung"},
["ite"] = {"Itene"},
["iti"] = {"Inlaod Itneg"},
["itk"] = {"Judeo-Italian"},
["itl"] = {"Itelmen"},
["itm"] = {"Itu Mbon Uzo"},
["ito"] = {"Itonama"},
["itr"] = {"Iteri"},
["its"] = {"Isekiri"},
["itt"] = {"Maeng Itneg"},
["itv"] = {"Itawit"},
["itw"] = {"Ito"},
["itx"] = {"Itik"},
["ity"] = {"Moyadan Itneg"},
["itz"] = {"Itzá"},
["ium"] = {"Iu Mien"},
["ivb"] = {"Ibatan"},
["ivv"] = {"Ivatan"},
["iwk"] = {"I-Wak"},
["iwm"] = {"Iwam"},
["iwo"] = {"Iwur"},
["iws"] = {"Sepik Iwam"},
["ixc"] = {"Ixcatec"},
["ixl"] = {"Ixil"},
["iya"] = {"Iyayu"},
["iyo"] = {"Mesaka"},
["iyx"] = {"Yaka (Congo)"},
["izh"] = {"Ingrian"},
["izm"] = {"Kizamani"},
["izr"] = {"Izere"},
["izz"] = {"Izii"},
["jaa"] = {"Jamamadí"},
["jab"] = {"Hyam"},
["jac"] = {"Popti'", "Jakalteko"},
["jad"] = {"Jahanka"},
["jae"] = {"Yabem"},
["jaf"] = {"Jara"},
["jah"] = {"Jah Hut"},
["jaj"] = {"Zazao"},
["jak"] = {"Jakun"},
["jal"] = {"Yalahatan"},
["jam"] = {"Jamaican Creole English"},
["jan"] = {"Jandai"},
["jao"] = {"Yanyuwa"},
["jaq"] = {"Yaqay"},
["jas"] = {"New Caledonian Javanese"},
["jat"] = {"Jakati"},
["jau"] = {"Yaur"},
["jax"] = {"Jambi Malay"},
["jay"] = {"Yan-nhangu", "Nhangu"},
["jaz"] = {"Jawe"},
["jbe"] = {"Judeo-Berber"},
["jbi"] = {"Badjiri"},
["jbj"] = {"Arandai"},
["jbk"] = {"Barikewa"},
["jbm"] = {"Bijim"},
["jbn"] = {"Nafusi"},
["jbo"] = {"Lojban"},
["jbr"] = {"Jofotek-Bromnya"},
["jbt"] = {"Jabutí"},
["jbu"] = {"Jukun Takum"},
["jbw"] = {"Yawijibaya"},
["jcs"] = {"Jamaican Country Sign Language"},
["jct"] = {"Krymchak"},
["jda"] = {"Jad"},
["jdg"] = {"Jadgali"},
["jdt"] = {"Judeo-Tat"},
["jeb"] = {"Jebero"},
["jee"] = {"Jerung"},
["jeh"] = {"Jeh"},
["jei"] = {"Yei"},
["jek"] = {"Jeri Kuo"},
["jel"] = {"Yelmek"},
["jen"] = {"Dza"},
["jer"] = {"Jere"},
["jet"] = {"Manem"},
["jeu"] = {"Jonkor Bourmataguil"},
["jgb"] = {"Ngbee"},
["jge"] = {"Judeo-Georgian"},
["jgk"] = {"Gwak"},
["jgo"] = {"Ngomba"},
["jhi"] = {"Jehai"},
["jhs"] = {"Jhankot Sign Language"},
["jia"] = {"Jina"},
["jib"] = {"Jibu"},
["jic"] = {"Tol"},
["jid"] = {"Bu (Kaduna State)"},
["jie"] = {"Jilbe"},
["jig"] = {"Jingulu", "Djingili"},
["jih"] = {"sTodsde", "Shangzhai"},
["jii"] = {"Jiiddu"},
["jil"] = {"Jilim"},
["jim"] = {"Jimi (Cameroon)"},
["jio"] = {"Jiamao"},
["jiq"] = {"Guanyinqiao", "Lavrung"},
["jit"] = {"Jita"},
["jiu"] = {"Youle Jinuo"},
["jiv"] = {"Shuar"},
["jiy"] = {"Buyuan Jinuo"},
["jje"] = {"Jejueo"},
["jjr"] = {"Bankal"},
["jka"] = {"Kaera"},
["jkm"] = {"Mobwa Karen"},
["jko"] = {"Kubo"},
["jkp"] = {"Paku Karen"},
["jkr"] = {"Koro (India)"},
["jks"] = {"Amami Koniya Sign Language"},
["jku"] = {"Labir"},
["jle"] = {"Ngile"},
["jls"] = {"Jamaican Sign Language"},
["jma"] = {"Dima"},
["jmb"] = {"Zumbun"},
["jmc"] = {"Machame"},
["jmd"] = {"Yamdena"},
["jmi"] = {"Jimi (Nigeria)"},
["jml"] = {"Jumli"},
["jmn"] = {"Makuri Naga"},
["jmr"] = {"Kamara"},
["jms"] = {"Mashi (Nigeria)"},
["jmw"] = {"Mouwase"},
["jmx"] = {"Western Juxtlahuaca Mixtec"},
["jna"] = {"Jangshung"},
["jnd"] = {"Jandavra"},
["jng"] = {"Yangman"},
["jni"] = {"Janji"},
["jnj"] = {"Yemsa"},
["jnl"] = {"Rawat"},
["jns"] = {"Jaunsari"},
["job"] = {"Joba"},
["jod"] = {"Wojenaka"},
["jog"] = {"Jogi"},
["jor"] = {"Jorá"},
["jos"] = {"Jordanian Sign Language"},
["jow"] = {"Jowulu"},
["jpa"] = {"Jewish Palestinian Aramaic"},
["jpr"] = {"Judeo-Persian"},
["jpx"] = {"Japanese (family)"},
["jqr"] = {"Jaqaru"},
["jra"] = {"Jarai"},
["jrb"] = {"Judeo-Arabic"},
["jrr"] = {"Jiru"},
["jrt"] = {"Jakattoe"},
["jru"] = {"Japrería"},
["jsl"] = {"Japanese Sign Language"},
["jua"] = {"Júma"},
["jub"] = {"Wannu"},
["juc"] = {"Jurchen"},
["jud"] = {"Worodougou"},
["juh"] = {"Hõne"},
["jui"] = {"Ngadjuri"},
["juk"] = {"Wapan"},
["jul"] = {"Jirel"},
["jum"] = {"Jumjum"},
["jun"] = {"Juang"},
["juo"] = {"Jiba"},
["jup"] = {"Hupdë"},
["jur"] = {"Jurúna"},
["jus"] = {"Jumla Sign Language"},
["jut"] = {"Jutish"},
["juu"] = {"Ju"},
["juw"] = {"Wãpha"},
["juy"] = {"Juray"},
["jvd"] = {"Javindo"},
["jvn"] = {"Caribbean Javanese"},
["jwi"] = {"Jwira-Pepesa"},
["jya"] = {"Jiarong"},
["jye"] = {"Judeo-Yemeni Arabic"},
["jyy"] = {"Jaya"},
["kaa"] = {"Kara-Kalpak", "Karakalpak"},
["kab"] = {"Kabyle"},
["kac"] = {"Kachin", "Jingpho"},
["kad"] = {"Adara"},
["kae"] = {"Ketangalan"},
["kaf"] = {"Katso"},
["kag"] = {"Kajaman"},
["kah"] = {"Kara (Central African Republic)"},
["kai"] = {"Karekare"},
["kaj"] = {"Jju"},
["kak"] = {"Kalanguya", "Kayapa Kallahan"},
["kam"] = {"Kamba (Kenya)"},
["kao"] = {"Xaasongaxango"},
["kap"] = {"Bezhta"},
["kaq"] = {"Capanahua"},
["kar"] = {"Karen languages"},
["kav"] = {"Katukína"},
["kaw"] = {"Kawi"},
["kax"] = {"Kao"},
["kay"] = {"Kamayurá"},
["kba"] = {"Kalarko"},
["kbb"] = {"Kaxuiâna"},
["kbc"] = {"Kadiwéu"},
["kbd"] = {"Kabardian"},
["kbe"] = {"Kanju"},
["kbg"] = {"Khamba"},
["kbh"] = {"Camsá"},
["kbi"] = {"Kaptiau"},
["kbj"] = {"Kari"},
["kbk"] = {"Grass Koiari"},
["kbl"] = {"Kanembu"},
["kbm"] = {"Iwal"},
["kbn"] = {"Kare (Central African Republic)"},
["kbo"] = {"Keliko"},
["kbp"] = {"Kabiyè"},
["kbq"] = {"Kamano"},
["kbr"] = {"Kafa"},
["kbs"] = {"Kande"},
["kbt"] = {"Abadi"},
["kbu"] = {"Kabutra"},
["kbv"] = {"Dera (Indonesia)"},
["kbw"] = {"Kaiep"},
["kbx"] = {"Ap Ma"},
["kby"] = {"Manga Kanuri"},
["kbz"] = {"Duhwa"},
["kca"] = {"Khanty"},
["kcb"] = {"Kawacha"},
["kcc"] = {"Lubila"},
["kcd"] = {"Ngkâlmpw Kanum"},
["kce"] = {"Kaivi"},
["kcf"] = {"Ukaan"},
["kcg"] = {"Tyap"},
["kch"] = {"Vono"},
["kci"] = {"Kamantan"},
["kcj"] = {"Kobiana"},
["kck"] = {"Kalanga"},
["kcl"] = {"Kela (Papua New Guinea)", "Kala"},
["kcm"] = {"Gula (Central African Republic)"},
["kcn"] = {"Nubi"},
["kco"] = {"Kinalakna"},
["kcp"] = {"Kanga"},
["kcq"] = {"Kamo"},
["kcr"] = {"Katla"},
["kcs"] = {"Koenoem"},
["kct"] = {"Kaian"},
["kcu"] = {"Kami (Tanzania)"},
["kcv"] = {"Kete"},
["kcw"] = {"Kabwari"},
["kcx"] = {"Kachama-Ganjule"},
["kcy"] = {"Korandje"},
["kcz"] = {"Konongo"},
["kda"] = {"Worimi"},
["kdc"] = {"Kutu"},
["kdd"] = {"Yankunytjatjara"},
["kde"] = {"Makonde"},
["kdf"] = {"Mamusi"},
["kdg"] = {"Seba"},
["kdh"] = {"Tem"},
["kdi"] = {"Kumam"},
["kdj"] = {"Karamojong"},
["kdk"] = {"Numèè", "Kwényi"},
["kdl"] = {"Tsikimba"},
["kdm"] = {"Kagoma"},
["kdn"] = {"Kunda"},
["kdo"] = {"Kordofanian languages"},
["kdp"] = {"Kaningdon-Nindem"},
["kdq"] = {"Koch"},
["kdr"] = {"Karaim"},
["kdt"] = {"Kuy"},
["kdu"] = {"Kadaru"},
["kdw"] = {"Koneraw"},
["kdx"] = {"Kam"},
["kdy"] = {"Keder", "Keijar"},
["kdz"] = {"Kwaja"},
["kea"] = {"Kabuverdianu"},
["keb"] = {"Kélé"},
["kec"] = {"Keiga"},
["ked"] = {"Kerewe"},
["kee"] = {"Eastern Keres"},
["kef"] = {"Kpessi"},
["keg"] = {"Tese"},
["keh"] = {"Keak"},
["kei"] = {"Kei"},
["kej"] = {"Kadar"},
["kek"] = {"Kekchí"},
["kel"] = {"Kela (Democratic Republic of Congo)"},
["kem"] = {"Kemak"},
["ken"] = {"Kenyang"},
["keo"] = {"Kakwa"},
["kep"] = {"Kaikadi"},
["keq"] = {"Kamar"},
["ker"] = {"Kera"},
["kes"] = {"Kugbo"},
["ket"] = {"Ket"},
["keu"] = {"Akebu"},
["kev"] = {"Kanikkaran"},
["kew"] = {"West Kewa"},
["kex"] = {"Kukna"},
["key"] = {"Kupia"},
["kez"] = {"Kukele"},
["kfa"] = {"Kodava"},
["kfb"] = {"Northwestern Kolami"},
["kfc"] = {"Konda-Dora"},
["kfd"] = {"Korra Koraga"},
["kfe"] = {"Kota (India)"},
["kff"] = {"Koya"},
["kfg"] = {"Kudiya"},
["kfh"] = {"Kurichiya"},
["kfi"] = {"Kannada Kurumba"},
["kfj"] = {"Kemiehua"},
["kfk"] = {"Kinnauri"},
["kfl"] = {"Kung"},
["kfm"] = {"Khunsari"},
["kfn"] = {"Kuk"},
["kfo"] = {"Koro (Côte d'Ivoire)"},
["kfp"] = {"Korwa"},
["kfq"] = {"Korku"},
["kfr"] = {"Kachhi", "Kutchi"},
["kfs"] = {"Bilaspuri"},
["kft"] = {"Kanjari"},
["kfu"] = {"Katkari"},
["kfv"] = {"Kurmukar"},
["kfw"] = {"Kharam Naga"},
["kfx"] = {"Kullu Pahari"},
["kfy"] = {"Kumaoni"},
["kfz"] = {"Koromfé"},
["kga"] = {"Koyaga"},
["kgb"] = {"Kawe"},
["kge"] = {"Komering"},
["kgf"] = {"Kube"},
["kgg"] = {"Kusunda"},
["kgi"] = {"Selangor Sign Language"},
["kgj"] = {"Gamale Kham"},
["kgk"] = {"Kaiwá"},
["kgl"] = {"Kunggari"},
["kgn"] = {"Karingani"},
["kgo"] = {"Krongo"},
["kgp"] = {"Kaingang"},
["kgq"] = {"Kamoro"},
["kgr"] = {"Abun"},
["kgs"] = {"Kumbainggar"},
["kgt"] = {"Somyev"},
["kgu"] = {"Kobol"},
["kgv"] = {"Karas"},
["kgw"] = {"Karon Dori"},
["kgx"] = {"Kamaru"},
["kgy"] = {"Kyerung"},
["kha"] = {"Khasi"},
["khb"] = {"Lü"},
["khc"] = {"Tukang Besi North"},
["khd"] = {"Bädi Kanum"},
["khe"] = {"Korowai"},
["khf"] = {"Khuen"},
["khg"] = {"Khams Tibetan"},
["khh"] = {"Kehu"},
["khi"] = {"Khoisan languages"},
["khj"] = {"Kuturmi"},
["khk"] = {"Halh Mongolian"},
["khl"] = {"Lusi"},
["khn"] = {"Khandesi"},
["kho"] = {"Khotanese", "Sakan"},
["khp"] = {"Kapori", "Kapauri"},
["khq"] = {"Koyra Chiini Songhay"},
["khr"] = {"Kharia"},
["khs"] = {"Kasua"},
["kht"] = {"Khamti"},
["khu"] = {"Nkhumbi"},
["khv"] = {"Khvarshi"},
["khw"] = {"Khowar"},
["khx"] = {"Kanu"},
["khy"] = {"Kele (Democratic Republic of Congo)"},
["khz"] = {"Keapara"},
["kia"] = {"Kim"},
["kib"] = {"Koalib"},
["kic"] = {"Kickapoo"},
["kid"] = {"Koshin"},
["kie"] = {"Kibet"},
["kif"] = {"Eastern Parbate Kham"},
["kig"] = {"Kimaama", "Kimaghima"},
["kih"] = {"Kilmeri"},
["kii"] = {"Kitsai"},
["kij"] = {"Kilivila"},
["kil"] = {"Kariya"},
["kim"] = {"Karagas"},
["kio"] = {"Kiowa"},
["kip"] = {"Sheshi Kham"},
["kiq"] = {"Kosadle", "Kosare"},
["kis"] = {"Kis"},
["kit"] = {"Agob"},
["kiu"] = {"Kirmanjki (individual language)"},
["kiv"] = {"Kimbu"},
["kiw"] = {"Northeast Kiwai"},
["kix"] = {"Khiamniungan Naga"},
["kiy"] = {"Kirikiri"},
["kiz"] = {"Kisi"},
["kja"] = {"Mlap"},
["kjb"] = {"Q'anjob'al", "Kanjobal"},
["kjc"] = {"Coastal Konjo"},
["kjd"] = {"Southern Kiwai"},
["kje"] = {"Kisar"},
["kjg"] = {"Khmu"},
["kjh"] = {"Khakas"},
["kji"] = {"Zabana"},
["kjj"] = {"Khinalugh"},
["kjk"] = {"Highland Konjo"},
["kjl"] = {"Western Parbate Kham"},
["kjm"] = {"Kháng"},
["kjn"] = {"Kunjen"},
["kjo"] = {"Harijan Kinnauri"},
["kjp"] = {"Pwo Eastern Karen"},
["kjq"] = {"Western Keres"},
["kjr"] = {"Kurudu"},
["kjs"] = {"East Kewa"},
["kjt"] = {"Phrae Pwo Karen"},
["kju"] = {"Kashaya"},
["kjv"] = {"Kaikavian Literary Language"},
["kjx"] = {"Ramopa"},
["kjy"] = {"Erave"},
["kjz"] = {"Bumthangkha"},
["kka"] = {"Kakanda"},
["kkb"] = {"Kwerisa"},
["kkc"] = {"Odoodee"},
["kkd"] = {"Kinuku"},
["kke"] = {"Kakabe"},
["kkf"] = {"Kalaktang Monpa"},
["kkg"] = {"Mabaka Valley Kalinga"},
["kkh"] = {"Khün"},
["kki"] = {"Kagulu"},
["kkj"] = {"Kako"},
["kkk"] = {"Kokota"},
["kkl"] = {"Kosarek Yale"},
["kkm"] = {"Kiong"},
["kkn"] = {"Kon Keu"},
["kko"] = {"Karko"},
["kkp"] = {"Gugubera", "Koko-Bera"},
["kkq"] = {"Kaeku"},
["kkr"] = {"Kir-Balar"},
["kks"] = {"Giiwo"},
["kkt"] = {"Koi"},
["kku"] = {"Tumi"},
["kkv"] = {"Kangean"},
["kkw"] = {"Teke-Kukuya"},
["kkx"] = {"Kohin"},
["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"},
["kkz"] = {"Kaska"},
["kla"] = {"Klamath-Modoc"},
["klb"] = {"Kiliwa"},
["klc"] = {"Kolbila"},
["kld"] = {"Gamilaraay"},
["kle"] = {"Kulung (Nepal)"},
["klf"] = {"Kendeje"},
["klg"] = {"Tagakaulo"},
["klh"] = {"Weliki"},
["kli"] = {"Kalumpang"},
["klj"] = {"Khalaj"},
["klk"] = {"Kono (Nigeria)"},
["kll"] = {"Kagan Kalagan"},
["klm"] = {"Migum"},
["kln"] = {"Kalenjin"},
["klo"] = {"Kapya"},
["klp"] = {"Kamasa"},
["klq"] = {"Rumu"},
["klr"] = {"Khaling"},
["kls"] = {"Kalasha"},
["klt"] = {"Nukna"},
["klu"] = {"Klao"},
["klv"] = {"Maskelynes"},
["klw"] = {"Tado", "Lindu"},
["klx"] = {"Koluwawa"},
["kly"] = {"Kalao"},
["klz"] = {"Kabola"},
["kma"] = {"Konni"},
["kmb"] = {"Kimbundu"},
["kmc"] = {"Southern Dong"},
["kmd"] = {"Majukayang Kalinga"},
["kme"] = {"Bakole"},
["kmf"] = {"Kare (Papua New Guinea)"},
["kmg"] = {"Kâte"},
["kmh"] = {"Kalam"},
["kmi"] = {"Kami (Nigeria)"},
["kmj"] = {"Kumarbhag Paharia"},
["kmk"] = {"Limos Kalinga"},
["kml"] = {"Tanudan Kalinga"},
["kmm"] = {"Kom (India)"},
["kmn"] = {"Awtuw"},
["kmo"] = {"Kwoma"},
["kmp"] = {"Gimme"},
["kmq"] = {"Kwama"},
["kmr"] = {"Northern Kurdish"},
["kms"] = {"Kamasau"},
["kmt"] = {"Kemtuik"},
["kmu"] = {"Kanite"},
["kmv"] = {"Karipúna Creole French"},
["kmw"] = {"Komo (Democratic Republic of Congo)"},
["kmx"] = {"Waboda"},
["kmy"] = {"Koma"},
["kmz"] = {"Khorasani Turkish"},
["kna"] = {"Dera (Nigeria)"},
["knb"] = {"Lubuagan Kalinga"},
["knc"] = {"Central Kanuri"},
["knd"] = {"Konda"},
["kne"] = {"Kankanaey"},
["knf"] = {"Mankanya"},
["kng"] = {"Koongo"},
["kni"] = {"Kanufi"},
["knj"] = {"Western Kanjobal"},
["knk"] = {"Kuranko"},
["knl"] = {"Keninjal"},
["knm"] = {"Kanamarí"},
["knn"] = {"Konkani (individual language)"},
["kno"] = {"Kono (Sierra Leone)"},
["knp"] = {"Kwanja"},
["knq"] = {"Kintaq"},
["knr"] = {"Kaningra"},
["kns"] = {"Kensiu"},
["knt"] = {"Panoan Katukína"},
["knu"] = {"Kono (Guinea)"},
["knv"] = {"Tabo"},
["knw"] = {"Kung-Ekoka"},
["knx"] = {"Kendayan", "Salako"},
["kny"] = {"Kanyok"},
["knz"] = {"Kalamsé"},
["koa"] = {"Konomala"},
["koc"] = {"Kpati"},
["kod"] = {"Kodi"},
["koe"] = {"Kacipo-Bale Suri"},
["kof"] = {"Kubi"},
["kog"] = {"Cogui", "Kogi"},
["koh"] = {"Koyo"},
["koi"] = {"Komi-Permyak"},
["kok"] = {"Konkani (macrolanguage)"},
["kol"] = {"Kol (Papua New Guinea)"},
["koo"] = {"Konzo"},
["kop"] = {"Waube"},
["koq"] = {"Kota (Gabon)"},
["kos"] = {"Kosraean"},
["kot"] = {"Lagwan"},
["kou"] = {"Koke"},
["kov"] = {"Kudu-Camo"},
["kow"] = {"Kugama"},
["koy"] = {"Koyukon"},
["koz"] = {"Korak"},
["kpa"] = {"Kutto"},
["kpb"] = {"Mullu Kurumba"},
["kpc"] = {"Curripaco"},
["kpd"] = {"Koba"},
["kpe"] = {"Kpelle"},
["kpf"] = {"Komba"},
["kpg"] = {"Kapingamarangi"},
["kph"] = {"Kplang"},
["kpi"] = {"Kofei"},
["kpj"] = {"Karajá"},
["kpk"] = {"Kpan"},
["kpl"] = {"Kpala"},
["kpm"] = {"Koho"},
["kpn"] = {"Kepkiriwát"},
["kpo"] = {"Ikposo"},
["kpq"] = {"Korupun-Sela"},
["kpr"] = {"Korafe-Yegha"},
["kps"] = {"Tehit"},
["kpt"] = {"Karata"},
["kpu"] = {"Kafoa"},
["kpv"] = {"Komi-Zyrian"},
["kpw"] = {"Kobon"},
["kpx"] = {"Mountain Koiali"},
["kpy"] = {"Koryak"},
["kpz"] = {"Kupsabiny"},
["kqa"] = {"Mum"},
["kqb"] = {"Kovai"},
["kqc"] = {"Doromu-Koki"},
["kqd"] = {"Koy Sanjaq Surat"},
["kqe"] = {"Kalagan"},
["kqf"] = {"Kakabai"},
["kqg"] = {"Khe"},
["kqh"] = {"Kisankasa"},
["kqi"] = {"Koitabu"},
["kqj"] = {"Koromira"},
["kqk"] = {"Kotafon Gbe"},
["kql"] = {"Kyenele"},
["kqm"] = {"Khisa"},
["kqn"] = {"Kaonde"},
["kqo"] = {"Eastern Krahn"},
["kqp"] = {"Kimré"},
["kqq"] = {"Krenak"},
["kqr"] = {"Kimaragang"},
["kqs"] = {"Northern Kissi"},
["kqt"] = {"Klias River Kadazan"},
["kqu"] = {"Seroa"},
["kqv"] = {"Okolod"},
["kqw"] = {"Kandas"},
["kqx"] = {"Mser"},
["kqy"] = {"Koorete"},
["kqz"] = {"Korana"},
["kra"] = {"Kumhali"},
["krb"] = {"Karkin"},
["krc"] = {"Karachay-Balkar"},
["krd"] = {"Kairui-Midiki"},
["kre"] = {"Panará"},
["krf"] = {"Koro (Vanuatu)"},
["krh"] = {"Kurama"},
["kri"] = {"Krio"},
["krj"] = {"Kinaray-A"},
["krk"] = {"Kerek"},
["krl"] = {"Karelian"},
["krn"] = {"Sapo"},
["kro"] = {"Kru languages"},
["krp"] = {"Durop"},
["krr"] = {"Krung"},
["krs"] = {"Gbaya (Sudan)"},
["krt"] = {"Tumari Kanuri"},
["kru"] = {"Kurukh"},
["krv"] = {"Kavet"},
["krw"] = {"Western Krahn"},
["krx"] = {"Karon"},
["kry"] = {"Kryts"},
["krz"] = {"Sota Kanum"},
["ksb"] = {"Shambala"},
["ksc"] = {"Southern Kalinga"},
["ksd"] = {"Kuanua"},
["kse"] = {"Kuni"},
["ksf"] = {"Bafia"},
["ksg"] = {"Kusaghe"},
["ksh"] = {"Kölsch"},
["ksi"] = {"Krisa", "I'saka"},
["ksj"] = {"Uare"},
["ksk"] = {"Kansa"},
["ksl"] = {"Kumalu"},
["ksm"] = {"Kumba"},
["ksn"] = {"Kasiguranin"},
["kso"] = {"Kofa"},
["ksp"] = {"Kaba"},
["ksq"] = {"Kwaami"},
["ksr"] = {"Borong"},
["kss"] = {"Southern Kisi"},
["kst"] = {"Winyé"},
["ksu"] = {"Khamyang"},
["ksv"] = {"Kusu"},
["ksw"] = {"S'gaw Karen"},
["ksx"] = {"Kedang"},
["ksy"] = {"Kharia Thar"},
["ksz"] = {"Kodaku"},
["kta"] = {"Katua"},
["ktb"] = {"Kambaata"},
["ktc"] = {"Kholok"},
["ktd"] = {"Kokata", "Kukatha"},
["kte"] = {"Nubri"},
["ktf"] = {"Kwami"},
["ktg"] = {"Kalkutung"},
["kth"] = {"Karanga"},
["kti"] = {"North Muyu"},
["ktj"] = {"Plapo Krumen"},
["ktk"] = {"Kaniet"},
["ktl"] = {"Koroshi"},
["ktm"] = {"Kurti"},
["ktn"] = {"Karitiâna"},
["kto"] = {"Kuot"},
["ktp"] = {"Kaduo"},
["ktq"] = {"Katabaga"},
["kts"] = {"South Muyu"},
["ktt"] = {"Ketum"},
["ktu"] = {"Kituba (Democratic Republic of Congo)"},
["ktv"] = {"Eastern Katu"},
["ktw"] = {"Kato"},
["ktx"] = {"Kaxararí"},
["kty"] = {"Kango (Bas-Uélé District)"},
["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"},
["kub"] = {"Kutep"},
["kuc"] = {"Kwinsu"},
["kud"] = {"'Auhelawa"},
["kue"] = {"Kuman (Papua New Guinea)"},
["kuf"] = {"Western Katu"},
["kug"] = {"Kupa"},
["kuh"] = {"Kushi"},
["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"},
["kuj"] = {"Kuria"},
["kuk"] = {"Kepo'"},
["kul"] = {"Kulere"},
["kum"] = {"Kumyk"},
["kun"] = {"Kunama"},
["kuo"] = {"Kumukio"},
["kup"] = {"Kunimaipa"},
["kuq"] = {"Karipuna"},
["kus"] = {"Kusaal"},
["kut"] = {"Kutenai"},
["kuu"] = {"Upper Kuskokwim"},
["kuv"] = {"Kur"},
["kuw"] = {"Kpagua"},
["kux"] = {"Kukatja"},
["kuy"] = {"Kuuku-Ya'u"},
["kuz"] = {"Kunza"},
["kva"] = {"Bagvalal"},
["kvb"] = {"Kubu"},
["kvc"] = {"Kove"},
["kvd"] = {"Kui (Indonesia)"},
["kve"] = {"Kalabakan"},
["kvf"] = {"Kabalai"},
["kvg"] = {"Kuni-Boazi"},
["kvh"] = {"Komodo"},
["kvi"] = {"Kwang"},
["kvj"] = {"Psikye"},
["kvk"] = {"Korean Sign Language"},
["kvl"] = {"Kayaw"},
["kvm"] = {"Kendem"},
["kvn"] = {"Border Kuna"},
["kvo"] = {"Dobel"},
["kvp"] = {"Kompane"},
["kvq"] = {"Geba Karen"},
["kvr"] = {"Kerinci"},
["kvt"] = {"Lahta Karen", "Lahta"},
["kvu"] = {"Yinbaw Karen"},
["kvv"] = {"Kola"},
["kvw"] = {"Wersing"},
["kvx"] = {"Parkari Koli"},
["kvy"] = {"Yintale Karen", "Yintale"},
["kvz"] = {"Tsakwambo", "Tsaukambo"},
["kwa"] = {"Dâw"},
["kwb"] = {"Kwa"},
["kwc"] = {"Likwala"},
["kwd"] = {"Kwaio"},
["kwe"] = {"Kwerba"},
["kwf"] = {"Kwara'ae"},
["kwg"] = {"Sara Kaba Deme"},
["kwh"] = {"Kowiai"},
["kwi"] = {"Awa-Cuaiquer"},
["kwj"] = {"Kwanga"},
["kwk"] = {"Kwakiutl"},
["kwl"] = {"Kofyar"},
["kwm"] = {"Kwambi"},
["kwn"] = {"Kwangali"},
["kwo"] = {"Kwomtari"},
["kwp"] = {"Kodia"},
["kwr"] = {"Kwer"},
["kws"] = {"Kwese"},
["kwt"] = {"Kwesten"},
["kwu"] = {"Kwakum"},
["kwv"] = {"Sara Kaba Náà"},
["kww"] = {"Kwinti"},
["kwx"] = {"Khirwar"},
["kwy"] = {"San Salvador Kongo"},
["kwz"] = {"Kwadi"},
["kxa"] = {"Kairiru"},
["kxb"] = {"Krobu"},
["kxc"] = {"Konso", "Khonso"},
["kxd"] = {"Brunei"},
["kxf"] = {"Manumanaw Karen", "Manumanaw"},
["kxh"] = {"Karo (Ethiopia)"},
["kxi"] = {"Keningau Murut"},
["kxj"] = {"Kulfa"},
["kxk"] = {"Zayein Karen"},
["kxm"] = {"Northern Khmer"},
["kxn"] = {"Kanowit-Tanjong Melanau"},
["kxo"] = {"Kanoé"},
["kxp"] = {"Wadiyara Koli"},
["kxq"] = {"Smärky Kanum"},
["kxr"] = {"Koro (Papua New Guinea)"},
["kxs"] = {"Kangjia"},
["kxt"] = {"Koiwat"},
["kxv"] = {"Kuvi"},
["kxw"] = {"Konai"},
["kxx"] = {"Likuba"},
["kxy"] = {"Kayong"},
["kxz"] = {"Kerewo"},
["kya"] = {"Kwaya"},
["kyb"] = {"Butbut Kalinga"},
["kyc"] = {"Kyaka"},
["kyd"] = {"Karey"},
["kye"] = {"Krache"},
["kyf"] = {"Kouya"},
["kyg"] = {"Keyagana"},
["kyh"] = {"Karok"},
["kyi"] = {"Kiput"},
["kyj"] = {"Karao"},
["kyk"] = {"Kamayo"},
["kyl"] = {"Kalapuya"},
["kym"] = {"Kpatili"},
["kyn"] = {"Northern Binukidnon"},
["kyo"] = {"Kelon"},
["kyp"] = {"Kang"},
["kyq"] = {"Kenga"},
["kyr"] = {"Kuruáya"},
["kys"] = {"Baram Kayan"},
["kyt"] = {"Kayagar"},
["kyu"] = {"Western Kayah"},
["kyv"] = {"Kayort"},
["kyw"] = {"Kudmali"},
["kyx"] = {"Rapoisi"},
["kyy"] = {"Kambaira"},
["kyz"] = {"Kayabí"},
["kza"] = {"Western Karaboro"},
["kzb"] = {"Kaibobo"},
["kzc"] = {"Bondoukou Kulango"},
["kzd"] = {"Kadai"},
["kze"] = {"Kosena"},
["kzf"] = {"Da'a Kaili"},
["kzg"] = {"Kikai"},
["kzi"] = {"Kelabit"},
["kzk"] = {"Kazukuru"},
["kzl"] = {"Kayeli"},
["kzm"] = {"Kais"},
["kzn"] = {"Kokola"},
["kzo"] = {"Kaningi"},
["kzp"] = {"Kaidipang"},
["kzq"] = {"Kaike"},
["kzr"] = {"Karang"},
["kzs"] = {"Sugut Dusun"},
["kzu"] = {"Kayupulau"},
["kzv"] = {"Komyandaret"},
["kzw"] = {"Karirí-Xocó"},
["kzx"] = {"Kamarian"},
["kzy"] = {"Kango (Tshopo District)"},
["kzz"] = {"Kalabra"},
["laa"] = {"Southern Subanen"},
["lab"] = {"Linear A"},
["lac"] = {"Lacandon"},
["lad"] = {"Ladino"},
["lae"] = {"Pattani"},
["laf"] = {"Lafofa"},
["lag"] = {"Rangi"},
["lah"] = {"Lahnda"},
["lai"] = {"Lambya"},
["laj"] = {"Lango (Uganda)"},
["lal"] = {"Lalia"},
["lam"] = {"Lamba"},
["lan"] = {"Laru"},
["lap"] = {"Laka (Chad)"},
["laq"] = {"Qabiao"},
["lar"] = {"Larteh"},
["las"] = {"Lama (Togo)"},
["lau"] = {"Laba"},
["law"] = {"Lauje"},
["lax"] = {"Tiwa"},
["lay"] = {"Lama Bai"},
["laz"] = {"Aribwatsa"},
["lbb"] = {"Label"},
["lbc"] = {"Lakkia"},
["lbe"] = {"Lak"},
["lbf"] = {"Tinani"},
["lbg"] = {"Laopang"},
["lbi"] = {"La'bi"},
["lbj"] = {"Ladakhi"},
["lbk"] = {"Central Bontok"},
["lbl"] = {"Libon Bikol"},
["lbm"] = {"Lodhi"},
["lbn"] = {"Rmeet"},
["lbo"] = {"Laven"},
["lbq"] = {"Wampar"},
["lbr"] = {"Lohorung"},
["lbs"] = {"Libyan Sign Language"},
["lbt"] = {"Lachi"},
["lbu"] = {"Labu"},
["lbv"] = {"Lavatbura-Lamusong"},
["lbw"] = {"Tolaki"},
["lbx"] = {"Lawangan"},
["lby"] = {"Lamalama", "Lamu-Lamu"},
["lbz"] = {"Lardil"},
["lcc"] = {"Legenyem"},
["lcd"] = {"Lola"},
["lce"] = {"Loncong", "Sekak"},
["lcf"] = {"Lubu"},
["lch"] = {"Luchazi"},
["lcl"] = {"Lisela"},
["lcm"] = {"Tungag"},
["lcp"] = {"Western Lawa"},
["lcq"] = {"Luhu"},
["lcs"] = {"Lisabata-Nuniali"},
["lda"] = {"Kla-Dan"},
["ldb"] = {"Dũya"},
["ldd"] = {"Luri"},
["ldg"] = {"Lenyima"},
["ldh"] = {"Lamja-Dengsa-Tola"},
["ldi"] = {"Laari"},
["ldj"] = {"Lemoro"},
["ldk"] = {"Leelau"},
["ldl"] = {"Kaan"},
["ldm"] = {"Landoma"},
["ldn"] = {"Láadan"},
["ldo"] = {"Loo"},
["ldp"] = {"Tso"},
["ldq"] = {"Lufu"},
["lea"] = {"Lega-Shabunda"},
["leb"] = {"Lala-Bisa"},
["lec"] = {"Leco"},
["led"] = {"Lendu"},
["lee"] = {"Lyélé"},
["lef"] = {"Lelemi"},
["leh"] = {"Lenje"},
["lei"] = {"Lemio"},
["lej"] = {"Lengola"},
["lek"] = {"Leipon"},
["lel"] = {"Lele (Democratic Republic of Congo)"},
["lem"] = {"Nomaande"},
["len"] = {"Lenca"},
["leo"] = {"Leti (Cameroon)"},
["lep"] = {"Lepcha"},
["leq"] = {"Lembena"},
["ler"] = {"Lenkau"},
["les"] = {"Lese"},
["let"] = {"Lesing-Gelimi", "Amio-Gelimi"},
["leu"] = {"Kara (Papua New Guinea)"},
["lev"] = {"Lamma"},
["lew"] = {"Ledo Kaili"},
["lex"] = {"Luang"},
["ley"] = {"Lemolang"},
["lez"] = {"Lezghian"},
["lfa"] = {"Lefa"},
["lfn"] = {"Lingua Franca Nova"},
["lga"] = {"Lungga"},
["lgb"] = {"Laghu"},
["lgg"] = {"Lugbara"},
["lgh"] = {"Laghuu"},
["lgi"] = {"Lengilu"},
["lgk"] = {"Lingarak", "Neverver"},
["lgl"] = {"Wala"},
["lgm"] = {"Lega-Mwenga"},
["lgn"] = {"T'apo", "Opuuo"},
["lgo"] = {"Lango (South Sudan)"},
["lgq"] = {"Logba"},
["lgr"] = {"Lengo"},
["lgs"] = {"Guinea-Bissau Sign Language", "Língua Gestual Guineense"},
["lgt"] = {"Pahi"},
["lgu"] = {"Longgu"},
["lgz"] = {"Ligenza"},
["lha"] = {"Laha (Viet Nam)"},
["lhh"] = {"Laha (Indonesia)"},
["lhi"] = {"Lahu Shi"},
["lhl"] = {"Lahul Lohar"},
["lhm"] = {"Lhomi"},
["lhn"] = {"Lahanan"},
["lhp"] = {"Lhokpu"},
["lhs"] = {"Mlahsö"},
["lht"] = {"Lo-Toga"},
["lhu"] = {"Lahu"},
["lia"] = {"West-Central Limba"},
["lib"] = {"Likum"},
["lic"] = {"Hlai"},
["lid"] = {"Nyindrou"},
["lie"] = {"Likila"},
["lif"] = {"Limbu"},
["lig"] = {"Ligbi"},
["lih"] = {"Lihir"},
["lij"] = {"Ligurian"},
["lik"] = {"Lika"},
["lil"] = {"Lillooet"},
["lio"] = {"Liki"},
["lip"] = {"Sekpele"},
["liq"] = {"Libido"},
["lir"] = {"Liberian English"},
["lis"] = {"Lisu"},
["liu"] = {"Logorik"},
["liv"] = {"Liv"},
["liw"] = {"Col"},
["lix"] = {"Liabuku"},
["liy"] = {"Banda-Bambari"},
["liz"] = {"Libinza"},
["lja"] = {"Golpa"},
["lje"] = {"Rampi"},
["lji"] = {"Laiyolo"},
["ljl"] = {"Li'o"},
["ljp"] = {"Lampung Api"},
["ljw"] = {"Yirandali"},
["ljx"] = {"Yuru"},
["lka"] = {"Lakalei"},
["lkb"] = {"Kabras", "Lukabaras"},
["lkc"] = {"Kucong"},
["lkd"] = {"Lakondê"},
["lke"] = {"Kenyi"},
["lkh"] = {"Lakha"},
["lki"] = {"Laki"},
["lkj"] = {"Remun"},
["lkl"] = {"Laeko-Libuat"},
["lkm"] = {"Kalaamaya"},
["lkn"] = {"Lakon", "Vure"},
["lko"] = {"Khayo", "Olukhayo"},
["lkr"] = {"Päri"},
["lks"] = {"Kisa", "Olushisa"},
["lkt"] = {"Lakota"},
["lku"] = {"Kungkari"},
["lky"] = {"Lokoya"},
["lla"] = {"Lala-Roba"},
["llb"] = {"Lolo"},
["llc"] = {"Lele (Guinea)"},
["lld"] = {"Ladin"},
["lle"] = {"Lele (Papua New Guinea)"},
["llf"] = {"Hermit"},
["llg"] = {"Lole"},
["llh"] = {"Lamu"},
["lli"] = {"Teke-Laali"},
["llj"] = {"Ladji Ladji"},
["llk"] = {"Lelak"},
["lll"] = {"Lilau"},
["llm"] = {"Lasalimu"},
["lln"] = {"Lele (Chad)"},
["llp"] = {"North Efate"},
["llq"] = {"Lolak"},
["lls"] = {"Lithuanian Sign Language"},
["llu"] = {"Lau"},
["llx"] = {"Lauan"},
["lma"] = {"East Limba"},
["lmb"] = {"Merei"},
["lmc"] = {"Limilngan"},
["lmd"] = {"Lumun"},
["lme"] = {"Pévé"},
["lmf"] = {"South Lembata"},
["lmg"] = {"Lamogai"},
["lmh"] = {"Lambichhong"},
["lmi"] = {"Lombi"},
["lmj"] = {"West Lembata"},
["lmk"] = {"Lamkang"},
["lml"] = {"Hano"},
["lmn"] = {"Lambadi"},
["lmo"] = {"Lombard"},
["lmp"] = {"Limbum"},
["lmq"] = {"Lamatuka"},
["lmr"] = {"Lamalera"},
["lmu"] = {"Lamenu"},
["lmv"] = {"Lomaiviti"},
["lmw"] = {"Lake Miwok"},
["lmx"] = {"Laimbue"},
["lmy"] = {"Lamboya"},
["lna"] = {"Langbashe"},
["lnb"] = {"Mbalanhu"},
["lnd"] = {"Lundayeh", "Lun Bawang"},
["lng"] = {"Langobardic"},
["lnh"] = {"Lanoh"},
["lni"] = {"Daantanai'"},
["lnj"] = {"Leningitij"},
["lnl"] = {"South Central Banda"},
["lnm"] = {"Langam"},
["lnn"] = {"Lorediakarkar"},
["lns"] = {"Lamnso'"},
["lnu"] = {"Longuda"},
["lnw"] = {"Lanima"},
["lnz"] = {"Lonzo"},
["loa"] = {"Loloda"},
["lob"] = {"Lobi"},
["loc"] = {"Inonhan"},
["loe"] = {"Saluan"},
["lof"] = {"Logol"},
["log"] = {"Logo"},
["loh"] = {"Laarim", "Narim"},
["loi"] = {"Loma (Côte d'Ivoire)"},
["loj"] = {"Lou"},
["lok"] = {"Loko"},
["lol"] = {"Mongo"},
["lom"] = {"Loma (Liberia)"},
["lon"] = {"Malawi Lomwe"},
["loo"] = {"Lombo"},
["lop"] = {"Lopa"},
["loq"] = {"Lobala"},
["lor"] = {"Téén"},
["los"] = {"Loniu"},
["lot"] = {"Otuho"},
["lou"] = {"Louisiana Creole"},
["lov"] = {"Lopi"},
["low"] = {"Tampias Lobu"},
["lox"] = {"Loun"},
["loy"] = {"Loke"},
["loz"] = {"Lozi"},
["lpa"] = {"Lelepa"},
["lpe"] = {"Lepki"},
["lpn"] = {"Long Phuri Naga"},
["lpo"] = {"Lipo"},
["lpx"] = {"Lopit"},
["lqr"] = {"Logir"},
["lra"] = {"Rara Bakati'"},
["lrc"] = {"Northern Luri"},
["lre"] = {"Laurentian"},
["lrg"] = {"Laragia"},
["lri"] = {"Marachi", "Olumarachi"},
["lrk"] = {"Loarki"},
["lrl"] = {"Lari"},
["lrm"] = {"Marama", "Olumarama"},
["lrn"] = {"Lorang"},
["lro"] = {"Laro"},
["lrr"] = {"Southern Yamphu"},
["lrt"] = {"Larantuka Malay"},
["lrv"] = {"Larevat"},
["lrz"] = {"Lemerig"},
["lsa"] = {"Lasgerdi"},
["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"},
["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"},
["lsd"] = {"Lishana Deni"},
["lse"] = {"Lusengo"},
["lsh"] = {"Lish"},
["lsi"] = {"Lashi"},
["lsl"] = {"Latvian Sign Language"},
["lsm"] = {"Saamia", "Olusamia"},
["lsn"] = {"Tibetan Sign Language"},
["lso"] = {"Laos Sign Language"},
["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"},
["lsr"] = {"Aruop"},
["lss"] = {"Lasi"},
["lst"] = {"Trinidad and Tobago Sign Language"},
["lsv"] = {"Sivia Sign Language"},
["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"},
["lsy"] = {"Mauritian Sign Language"},
["ltc"] = {"Late Middle Chinese"},
["ltg"] = {"Latgalian"},
["lth"] = {"Thur"},
["lti"] = {"Leti (Indonesia)"},
["ltn"] = {"Latundê"},
["lto"] = {"Tsotso", "Olutsotso"},
["lts"] = {"Tachoni", "Lutachoni"},
["ltu"] = {"Latu"},
["lua"] = {"Luba-Lulua"},
["luc"] = {"Aringa"},
["lud"] = {"Ludian"},
["lue"] = {"Luvale"},
["luf"] = {"Laua"},
["lui"] = {"Luiseno"},
["luj"] = {"Luna"},
["luk"] = {"Lunanakha"},
["lul"] = {"Olu'bo"},
["lum"] = {"Luimbi"},
["lun"] = {"Lunda"},
["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"},
["lup"] = {"Lumbu"},
["luq"] = {"Lucumi"},
["lur"] = {"Laura"},
["lus"] = {"Lushai"},
["lut"] = {"Lushootseed"},
["luu"] = {"Lumba-Yakkha"},
["luv"] = {"Luwati"},
["luw"] = {"Luo (Cameroon)"},
["luy"] = {"Luyia", "Oluluyia"},
["luz"] = {"Southern Luri"},
["lva"] = {"Maku'a"},
["lvi"] = {"Lavi"},
["lvk"] = {"Lavukaleve"},
["lvl"] = {"Lwel"},
["lvs"] = {"Standard Latvian"},
["lvu"] = {"Levuka"},
["lwa"] = {"Lwalu"},
["lwe"] = {"Lewo Eleng"},
["lwg"] = {"Wanga", "Oluwanga"},
["lwh"] = {"White Lachi"},
["lwl"] = {"Eastern Lawa"},
["lwm"] = {"Laomian"},
["lwo"] = {"Luwo"},
["lws"] = {"Malawian Sign Language"},
["lwt"] = {"Lewotobi"},
["lwu"] = {"Lawu"},
["lww"] = {"Lewo"},
["lxm"] = {"Lakurumau"},
["lya"] = {"Layakha"},
["lyg"] = {"Lyngngam"},
["lyn"] = {"Luyana"},
["lzh"] = {"Literary Chinese"},
["lzl"] = {"Litzlitz"},
["lzn"] = {"Leinong Naga"},
["lzz"] = {"Laz"},
["maa"] = {"San Jerónimo Tecóatl Mazatec"},
["mab"] = {"Yutanduchi Mixtec"},
["mad"] = {"Madurese"},
["mae"] = {"Bo-Rukul"},
["maf"] = {"Mafa"},
["mag"] = {"Magahi"},
["mai"] = {"Maithili"},
["maj"] = {"Jalapa De Díaz Mazatec"},
["mak"] = {"Makasar"},
["mam"] = {"Mam"},
["man"] = {"Mandingo", "Manding"},
["map"] = {"Austronesian languages"},
["maq"] = {"Chiquihuitlán Mazatec"},
["mas"] = {"Masai"},
["mat"] = {"San Francisco Matlatzinca"},
["mau"] = {"Huautla Mazatec"},
["mav"] = {"Sateré-Mawé"},
["maw"] = {"Mampruli"},
["max"] = {"North Moluccan Malay"},
["maz"] = {"Central Mazahua"},
["mba"] = {"Higaonon"},
["mbb"] = {"Western Bukidnon Manobo"},
["mbc"] = {"Macushi"},
["mbd"] = {"Dibabawon Manobo"},
["mbe"] = {"Molale"},
["mbf"] = {"Baba Malay"},
["mbh"] = {"Mangseng"},
["mbi"] = {"Ilianen Manobo"},
["mbj"] = {"Nadëb"},
["mbk"] = {"Malol"},
["mbl"] = {"Maxakalí"},
["mbm"] = {"Ombamba"},
["mbn"] = {"Macaguán"},
["mbo"] = {"Mbo (Cameroon)"},
["mbp"] = {"Malayo"},
["mbq"] = {"Maisin"},
["mbr"] = {"Nukak Makú"},
["mbs"] = {"Sarangani Manobo"},
["mbt"] = {"Matigsalug Manobo"},
["mbu"] = {"Mbula-Bwazza"},
["mbv"] = {"Mbulungish"},
["mbw"] = {"Maring"},
["mbx"] = {"Mari (East Sepik Province)"},
["mby"] = {"Memoni"},
["mbz"] = {"Amoltepec Mixtec"},
["mca"] = {"Maca"},
["mcb"] = {"Machiguenga"},
["mcc"] = {"Bitur"},
["mcd"] = {"Sharanahua"},
["mce"] = {"Itundujia Mixtec"},
["mcf"] = {"Matsés"},
["mcg"] = {"Mapoyo"},
["mch"] = {"Maquiritari"},
["mci"] = {"Mese"},
["mcj"] = {"Mvanip"},
["mck"] = {"Mbunda"},
["mcl"] = {"Macaguaje"},
["mcm"] = {"Malaccan Creole Portuguese"},
["mcn"] = {"Masana"},
["mco"] = {"Coatlán Mixe"},
["mcp"] = {"Makaa"},
["mcq"] = {"Ese"},
["mcr"] = {"Menya"},
["mcs"] = {"Mambai"},
["mct"] = {"Mengisa"},
["mcu"] = {"Cameroon Mambila"},
["mcv"] = {"Minanibai"},
["mcw"] = {"Mawa (Chad)"},
["mcx"] = {"Mpiemo"},
["mcy"] = {"South Watut"},
["mcz"] = {"Mawan"},
["mda"] = {"Mada (Nigeria)"},
["mdb"] = {"Morigi"},
["mdc"] = {"Male (Papua New Guinea)"},
["mdd"] = {"Mbum"},
["mde"] = {"Maba (Chad)"},
["mdf"] = {"Moksha"},
["mdg"] = {"Massalat"},
["mdh"] = {"Maguindanaon"},
["mdi"] = {"Mamvu"},
["mdj"] = {"Mangbetu"},
["mdk"] = {"Mangbutu"},
["mdl"] = {"Maltese Sign Language"},
["mdm"] = {"Mayogo"},
["mdn"] = {"Mbati"},
["mdp"] = {"Mbala"},
["mdq"] = {"Mbole"},
["mdr"] = {"Mandar"},
["mds"] = {"Maria (Papua New Guinea)"},
["mdt"] = {"Mbere"},
["mdu"] = {"Mboko"},
["mdv"] = {"Santa Lucía Monteverde Mixtec"},
["mdw"] = {"Mbosi"},
["mdx"] = {"Dizin"},
["mdy"] = {"Male (Ethiopia)"},
["mdz"] = {"Suruí Do Pará"},
["mea"] = {"Menka"},
["meb"] = {"Ikobi"},
["mec"] = {"Marra"},
["med"] = {"Melpa"},
["mee"] = {"Mengen"},
["mef"] = {"Megam"},
["meh"] = {"Southwestern Tlaxiaco Mixtec"},
["mei"] = {"Midob"},
["mej"] = {"Meyah"},
["mek"] = {"Mekeo"},
["mel"] = {"Central Melanau"},
["mem"] = {"Mangala"},
["men"] = {"Mende (Sierra Leone)"},
["meo"] = {"Kedah Malay"},
["mep"] = {"Miriwoong"},
["meq"] = {"Merey"},
["mer"] = {"Meru"},
["mes"] = {"Masmaje"},
["met"] = {"Mato"},
["meu"] = {"Motu"},
["mev"] = {"Mano"},
["mew"] = {"Maaka"},
["mey"] = {"Hassaniyya"},
["mez"] = {"Menominee"},
["mfa"] = {"Pattani Malay"},
["mfb"] = {"Bangka"},
["mfc"] = {"Mba"},
["mfd"] = {"Mendankwe-Nkwen"},
["mfe"] = {"Morisyen"},
["mff"] = {"Naki"},
["mfg"] = {"Mogofin"},
["mfh"] = {"Matal"},
["mfi"] = {"Wandala"},
["mfj"] = {"Mefele"},
["mfk"] = {"North Mofu"},
["mfl"] = {"Putai"},
["mfm"] = {"Marghi South"},
["mfn"] = {"Cross River Mbembe"},
["mfo"] = {"Mbe"},
["mfp"] = {"Makassar Malay"},
["mfq"] = {"Moba"},
["mfr"] = {"Marrithiyel"},
["mfs"] = {"Mexican Sign Language"},
["mft"] = {"Mokerang"},
["mfu"] = {"Mbwela"},
["mfv"] = {"Mandjak"},
["mfw"] = {"Mulaha"},
["mfx"] = {"Melo"},
["mfy"] = {"Mayo"},
["mfz"] = {"Mabaan"},
["mga"] = {"Middle Irish (900-1200)"},
["mgb"] = {"Mararit"},
["mgc"] = {"Morokodo"},
["mgd"] = {"Moru"},
["mge"] = {"Mango"},
["mgf"] = {"Maklew"},
["mgg"] = {"Mpumpong"},
["mgh"] = {"Makhuwa-Meetto"},
["mgi"] = {"Lijili"},
["mgj"] = {"Abureni"},
["mgk"] = {"Mawes"},
["mgl"] = {"Maleu-Kilenge"},
["mgm"] = {"Mambae"},
["mgn"] = {"Mbangi"},
["mgo"] = {"Meta'"},
["mgp"] = {"Eastern Magar"},
["mgq"] = {"Malila"},
["mgr"] = {"Mambwe-Lungu"},
["mgs"] = {"Manda (Tanzania)"},
["mgt"] = {"Mongol"},
["mgu"] = {"Mailu"},
["mgv"] = {"Matengo"},
["mgw"] = {"Matumbi"},
["mgy"] = {"Mbunga"},
["mgz"] = {"Mbugwe"},
["mha"] = {"Manda (India)"},
["mhb"] = {"Mahongwe"},
["mhc"] = {"Mocho"},
["mhd"] = {"Mbugu"},
["mhe"] = {"Besisi", "Mah Meri"},
["mhf"] = {"Mamaa"},
["mhg"] = {"Margu"},
["mhi"] = {"Ma'di"},
["mhj"] = {"Mogholi"},
["mhk"] = {"Mungaka"},
["mhl"] = {"Mauwake"},
["mhm"] = {"Makhuwa-Moniga"},
["mhn"] = {"Mócheno"},
["mho"] = {"Mashi (Zambia)"},
["mhp"] = {"Balinese Malay"},
["mhq"] = {"Mandan"},
["mhr"] = {"Eastern Mari"},
["mhs"] = {"Buru (Indonesia)"},
["mht"] = {"Mandahuaca"},
["mhu"] = {"Digaro-Mishmi", "Darang Deng"},
["mhw"] = {"Mbukushu"},
["mhx"] = {"Maru", "Lhaovo"},
["mhy"] = {"Ma'anyan"},
["mhz"] = {"Mor (Mor Islands)"},
["mia"] = {"Miami"},
["mib"] = {"Atatláhuca Mixtec"},
["mic"] = {"Mi'kmaq", "Micmac"},
["mid"] = {"Mandaic"},
["mie"] = {"Ocotepec Mixtec"},
["mif"] = {"Mofu-Gudur"},
["mig"] = {"San Miguel El Grande Mixtec"},
["mih"] = {"Chayuco Mixtec"},
["mii"] = {"Chigmecatitlán Mixtec"},
["mij"] = {"Abar", "Mungbam"},
["mik"] = {"Mikasuki"},
["mil"] = {"Peñoles Mixtec"},
["mim"] = {"Alacatlatzala Mixtec"},
["min"] = {"Minangkabau"},
["mio"] = {"Pinotepa Nacional Mixtec"},
["mip"] = {"Apasco-Apoala Mixtec"},
["miq"] = {"Mískito"},
["mir"] = {"Isthmus Mixe"},
["mis"] = {"Uncoded languages"},
["mit"] = {"Southern Puebla Mixtec"},
["miu"] = {"Cacaloxtepec Mixtec"},
["miw"] = {"Akoye"},
["mix"] = {"Mixtepec Mixtec"},
["miy"] = {"Ayutla Mixtec"},
["miz"] = {"Coatzospan Mixtec"},
["mjb"] = {"Makalero"},
["mjc"] = {"San Juan Colorado Mixtec"},
["mjd"] = {"Northwest Maidu"},
["mje"] = {"Muskum"},
["mjg"] = {"Tu"},
["mjh"] = {"Mwera (Nyasa)"},
["mji"] = {"Kim Mun"},
["mjj"] = {"Mawak"},
["mjk"] = {"Matukar"},
["mjl"] = {"Mandeali"},
["mjm"] = {"Medebur"},
["mjn"] = {"Ma (Papua New Guinea)"},
["mjo"] = {"Malankuravan"},
["mjp"] = {"Malapandaram"},
["mjq"] = {"Malaryan"},
["mjr"] = {"Malavedan"},
["mjs"] = {"Miship"},
["mjt"] = {"Sauria Paharia"},
["mju"] = {"Manna-Dora"},
["mjv"] = {"Mannan"},
["mjw"] = {"Karbi"},
["mjx"] = {"Mahali"},
["mjy"] = {"Mahican"},
["mjz"] = {"Majhi"},
["mka"] = {"Mbre"},
["mkb"] = {"Mal Paharia"},
["mkc"] = {"Siliput"},
["mke"] = {"Mawchi"},
["mkf"] = {"Miya"},
["mkg"] = {"Mak (China)"},
["mkh"] = {"Mon-Khmer languages"},
["mki"] = {"Dhatki"},
["mkj"] = {"Mokilese"},
["mkk"] = {"Byep"},
["mkl"] = {"Mokole"},
["mkm"] = {"Moklen"},
["mkn"] = {"Kupang Malay"},
["mko"] = {"Mingang Doso"},
["mkp"] = {"Moikodi"},
["mkq"] = {"Bay Miwok"},
["mkr"] = {"Malas"},
["mks"] = {"Silacayoapan Mixtec"},
["mkt"] = {"Vamale"},
["mku"] = {"Konyanka Maninka"},
["mkv"] = {"Mafea"},
["mkw"] = {"Kituba (Congo)"},
["mkx"] = {"Kinamiging Manobo"},
["mky"] = {"East Makian"},
["mkz"] = {"Makasae"},
["mla"] = {"Malo"},
["mlb"] = {"Mbule"},
["mlc"] = {"Cao Lan"},
["mle"] = {"Manambu"},
["mlf"] = {"Mal"},
["mlh"] = {"Mape"},
["mli"] = {"Malimpung"},
["mlj"] = {"Miltu"},
["mlk"] = {"Ilwana", "Kiwilwana"},
["mll"] = {"Malua Bay"},
["mlm"] = {"Mulam"},
["mln"] = {"Malango"},
["mlo"] = {"Mlomp"},
["mlp"] = {"Bargam"},
["mlq"] = {"Western Maninkakan"},
["mlr"] = {"Vame"},
["mls"] = {"Masalit"},
["mlu"] = {"To'abaita"},
["mlv"] = {"Motlav", "Mwotlap"},
["mlw"] = {"Moloko"},
["mlx"] = {"Malfaxal", "Naha'ai"},
["mlz"] = {"Malaynon"},
["mma"] = {"Mama"},
["mmb"] = {"Momina"},
["mmc"] = {"Michoacán Mazahua"},
["mmd"] = {"Maonan"},
["mme"] = {"Mae"},
["mmf"] = {"Mundat"},
["mmg"] = {"North Ambrym"},
["mmh"] = {"Mehináku"},
["mmi"] = {"Musar"},
["mmj"] = {"Majhwar"},
["mmk"] = {"Mukha-Dora"},
["mml"] = {"Man Met"},
["mmm"] = {"Maii"},
["mmn"] = {"Mamanwa"},
["mmo"] = {"Mangga Buang"},
["mmp"] = {"Siawi"},
["mmq"] = {"Musak"},
["mmr"] = {"Western Xiangxi Miao"},
["mmt"] = {"Malalamai"},
["mmu"] = {"Mmaala"},
["mmv"] = {"Miriti"},
["mmw"] = {"Emae"},
["mmx"] = {"Madak"},
["mmy"] = {"Migaama"},
["mmz"] = {"Mabaale"},
["mna"] = {"Mbula"},
["mnb"] = {"Muna"},
["mnc"] = {"Manchu"},
["mnd"] = {"Mondé"},
["mne"] = {"Naba"},
["mnf"] = {"Mundani"},
["mng"] = {"Eastern Mnong"},
["mnh"] = {"Mono (Democratic Republic of Congo)"},
["mni"] = {"Manipuri"},
["mnj"] = {"Munji"},
["mnk"] = {"Mandinka"},
["mnl"] = {"Tiale"},
["mnm"] = {"Mapena"},
["mnn"] = {"Southern Mnong"},
["mno"] = {"Manobo languages"},
["mnp"] = {"Min Bei Chinese"},
["mnq"] = {"Minriq"},
["mnr"] = {"Mono (USA)"},
["mns"] = {"Mansi"},
["mnu"] = {"Mer"},
["mnv"] = {"Rennell-Bellona"},
["mnw"] = {"Mon"},
["mnx"] = {"Manikion"},
["mny"] = {"Manyawa"},
["mnz"] = {"Moni"},
["moa"] = {"Mwan"},
["moc"] = {"Mocoví"},
["mod"] = {"Mobilian"},
["moe"] = {"Innu", "Montagnais"},
["mog"] = {"Mongondow"},
["moh"] = {"Mohawk"},
["moi"] = {"Mboi"},
["moj"] = {"Monzombo"},
["mok"] = {"Morori"},
["mom"] = {"Mangue"},
["moo"] = {"Monom"},
["mop"] = {"Mopán Maya"},
["moq"] = {"Mor (Bomberai Peninsula)"},
["mor"] = {"Moro"},
["mos"] = {"Mossi"},
["mot"] = {"Barí"},
["mou"] = {"Mogum"},
["mov"] = {"Mohave"},
["mow"] = {"Moi (Congo)"},
["mox"] = {"Molima"},
["moy"] = {"Shekkacho"},
["moz"] = {"Mukulu", "Gergiko"},
["mpa"] = {"Mpoto"},
["mpb"] = {"Malak Malak", "Mullukmulluk"},
["mpc"] = {"Mangarrayi"},
["mpd"] = {"Machinere"},
["mpe"] = {"Majang"},
["mpg"] = {"Marba"},
["mph"] = {"Maung"},
["mpi"] = {"Mpade"},
["mpj"] = {"Martu Wangka", "Wangkajunga"},
["mpk"] = {"Mbara (Chad)"},
["mpl"] = {"Middle Watut"},
["mpm"] = {"Yosondúa Mixtec"},
["mpn"] = {"Mindiri"},
["mpo"] = {"Miu"},
["mpp"] = {"Migabac"},
["mpq"] = {"Matís"},
["mpr"] = {"Vangunu"},
["mps"] = {"Dadibi"},
["mpt"] = {"Mian"},
["mpu"] = {"Makuráp"},
["mpv"] = {"Mungkip"},
["mpw"] = {"Mapidian"},
["mpx"] = {"Misima-Panaeati"},
["mpy"] = {"Mapia"},
["mpz"] = {"Mpi"},
["mqa"] = {"Maba (Indonesia)"},
["mqb"] = {"Mbuko"},
["mqc"] = {"Mangole"},
["mqe"] = {"Matepi"},
["mqf"] = {"Momuna"},
["mqg"] = {"Kota Bangun Kutai Malay"},
["mqh"] = {"Tlazoyaltepec Mixtec"},
["mqi"] = {"Mariri"},
["mqj"] = {"Mamasa"},
["mqk"] = {"Rajah Kabunsuwan Manobo"},
["mql"] = {"Mbelime"},
["mqm"] = {"South Marquesan"},
["mqn"] = {"Moronene"},
["mqo"] = {"Modole"},
["mqp"] = {"Manipa"},
["mqq"] = {"Minokok"},
["mqr"] = {"Mander"},
["mqs"] = {"West Makian"},
["mqt"] = {"Mok"},
["mqu"] = {"Mandari"},
["mqv"] = {"Mosimo"},
["mqw"] = {"Murupi"},
["mqx"] = {"Mamuju"},
["mqy"] = {"Manggarai"},
["mqz"] = {"Pano"},
["mra"] = {"Mlabri"},
["mrb"] = {"Marino"},
["mrc"] = {"Maricopa"},
["mrd"] = {"Western Magar"},
["mre"] = {"Martha's Vineyard Sign Language"},
["mrf"] = {"Elseng"},
["mrg"] = {"Mising"},
["mrh"] = {"Mara Chin"},
["mrj"] = {"Western Mari"},
["mrk"] = {"Hmwaveke"},
["mrl"] = {"Mortlockese"},
["mrm"] = {"Merlav", "Mwerlap"},
["mrn"] = {"Cheke Holo"},
["mro"] = {"Mru"},
["mrp"] = {"Morouas"},
["mrq"] = {"North Marquesan"},
["mrr"] = {"Maria (India)"},
["mrs"] = {"Maragus"},
["mrt"] = {"Marghi Central"},
["mru"] = {"Mono (Cameroon)"},
["mrv"] = {"Mangareva"},
["mrw"] = {"Maranao"},
["mrx"] = {"Maremgi", "Dineor"},
["mry"] = {"Mandaya"},
["mrz"] = {"Marind"},
["msb"] = {"Masbatenyo"},
["msc"] = {"Sankaran Maninka"},
["msd"] = {"Yucatec Maya Sign Language"},
["mse"] = {"Musey"},
["msf"] = {"Mekwei"},
["msg"] = {"Moraid"},
["msh"] = {"Masikoro Malagasy"},
["msi"] = {"Sabah Malay"},
["msj"] = {"Ma (Democratic Republic of Congo)"},
["msk"] = {"Mansaka"},
["msl"] = {"Molof", "Poule"},
["msm"] = {"Agusan Manobo"},
["msn"] = {"Vurës"},
["mso"] = {"Mombum"},
["msp"] = {"Maritsauá"},
["msq"] = {"Caac"},
["msr"] = {"Mongolian Sign Language"},
["mss"] = {"West Masela"},
["msu"] = {"Musom"},
["msv"] = {"Maslam"},
["msw"] = {"Mansoanka"},
["msx"] = {"Moresada"},
["msy"] = {"Aruamu"},
["msz"] = {"Momare"},
["mta"] = {"Cotabato Manobo"},
["mtb"] = {"Anyin Morofo"},
["mtc"] = {"Munit"},
["mtd"] = {"Mualang"},
["mte"] = {"Mono (Solomon Islands)"},
["mtf"] = {"Murik (Papua New Guinea)"},
["mtg"] = {"Una"},
["mth"] = {"Munggui"},
["mti"] = {"Maiwa (Papua New Guinea)"},
["mtj"] = {"Moskona"},
["mtk"] = {"Mbe'"},
["mtl"] = {"Montol"},
["mtm"] = {"Mator"},
["mtn"] = {"Matagalpa"},
["mto"] = {"Totontepec Mixe"},
["mtp"] = {"Wichí Lhamtés Nocten"},
["mtq"] = {"Muong"},
["mtr"] = {"Mewari"},
["mts"] = {"Yora"},
["mtt"] = {"Mota"},
["mtu"] = {"Tututepec Mixtec"},
["mtv"] = {"Asaro'o"},
["mtw"] = {"Southern Binukidnon"},
["mtx"] = {"Tidaá Mixtec"},
["mty"] = {"Nabi"},
["mua"] = {"Mundang"},
["mub"] = {"Mubi"},
["muc"] = {"Ajumbu"},
["mud"] = {"Mednyj Aleut"},
["mue"] = {"Media Lengua"},
["mug"] = {"Musgu"},
["muh"] = {"Mündü"},
["mui"] = {"Musi"},
["muj"] = {"Mabire"},
["muk"] = {"Mugom"},
["mul"] = {"Multiple languages"},
["mum"] = {"Maiwala"},
["mun"] = {"Munda languages"},
["muo"] = {"Nyong"},
["mup"] = {"Malvi"},
["muq"] = {"Eastern Xiangxi Miao"},
["mur"] = {"Murle"},
["mus"] = {"Creek"},
["mut"] = {"Western Muria"},
["muu"] = {"Yaaku"},
["muv"] = {"Muthuvan"},
["mux"] = {"Bo-Ung"},
["muy"] = {"Muyang"},
["muz"] = {"Mursi"},
["mva"] = {"Manam"},
["mvb"] = {"Mattole"},
["mvd"] = {"Mamboru"},
["mve"] = {"Marwari (Pakistan)"},
["mvf"] = {"Peripheral Mongolian"},
["mvg"] = {"Yucuañe Mixtec"},
["mvh"] = {"Mulgi"},
["mvi"] = {"Miyako"},
["mvk"] = {"Mekmek"},
["mvl"] = {"Mbara (Australia)"},
["mvn"] = {"Minaveha"},
["mvo"] = {"Marovo"},
["mvp"] = {"Duri"},
["mvq"] = {"Moere"},
["mvr"] = {"Marau"},
["mvs"] = {"Massep"},
["mvt"] = {"Mpotovoro"},
["mvu"] = {"Marfa"},
["mvv"] = {"Tagal Murut"},
["mvw"] = {"Machinga"},
["mvx"] = {"Meoswar"},
["mvy"] = {"Indus Kohistani"},
["mvz"] = {"Mesqan"},
["mwa"] = {"Mwatebu"},
["mwb"] = {"Juwal"},
["mwc"] = {"Are"},
["mwe"] = {"Mwera (Chimwera)"},
["mwf"] = {"Murrinh-Patha"},
["mwg"] = {"Aiklep"},
["mwh"] = {"Mouk-Aria"},
["mwi"] = {"Labo", "Ninde"},
["mwk"] = {"Kita Maninkakan"},
["mwl"] = {"Mirandese"},
["mwm"] = {"Sar"},
["mwn"] = {"Nyamwanga"},
["mwo"] = {"Central Maewo"},
["mwp"] = {"Kala Lagaw Ya"},
["mwq"] = {"Mün Chin"},
["mwr"] = {"Marwari"},
["mws"] = {"Mwimbi-Muthambi"},
["mwt"] = {"Moken"},
["mwu"] = {"Mittu"},
["mwv"] = {"Mentawai"},
["mww"] = {"Hmong Daw"},
["mwz"] = {"Moingi"},
["mxa"] = {"Northwest Oaxaca Mixtec"},
["mxb"] = {"Tezoatlán Mixtec"},
["mxc"] = {"Manyika"},
["mxd"] = {"Modang"},
["mxe"] = {"Mele-Fila"},
["mxf"] = {"Malgbe"},
["mxg"] = {"Mbangala"},
["mxh"] = {"Mvuba"},
["mxi"] = {"Mozarabic"},
["mxj"] = {"Miju-Mishmi", "Geman Deng"},
["mxk"] = {"Monumbo"},
["mxl"] = {"Maxi Gbe"},
["mxm"] = {"Meramera"},
["mxn"] = {"Moi (Indonesia)"},
["mxo"] = {"Mbowe"},
["mxp"] = {"Tlahuitoltepec Mixe"},
["mxq"] = {"Juquila Mixe"},
["mxr"] = {"Murik (Malaysia)"},
["mxs"] = {"Huitepec Mixtec"},
["mxt"] = {"Jamiltepec Mixtec"},
["mxu"] = {"Mada (Cameroon)"},
["mxv"] = {"Metlatónoc Mixtec"},
["mxw"] = {"Namo"},
["mxx"] = {"Mahou", "Mawukakan"},
["mxy"] = {"Southeastern Nochixtlán Mixtec"},
["mxz"] = {"Central Masela"},
["myb"] = {"Mbay"},
["myc"] = {"Mayeka"},
["mye"] = {"Myene"},
["myf"] = {"Bambassi"},
["myg"] = {"Manta"},
["myh"] = {"Makah"},
["myj"] = {"Mangayat"},
["myk"] = {"Mamara Senoufo"},
["myl"] = {"Moma"},
["mym"] = {"Me'en"},
["myn"] = {"Mayan languages"},
["myo"] = {"Anfillo"},
["myp"] = {"Pirahã"},
["myr"] = {"Muniche"},
["mys"] = {"Mesmes"},
["myu"] = {"Mundurukú"},
["myv"] = {"Erzya"},
["myw"] = {"Muyuw"},
["myx"] = {"Masaaba"},
["myy"] = {"Macuna"},
["myz"] = {"Classical Mandaic"},
["mza"] = {"Santa María Zacatepec Mixtec"},
["mzb"] = {"Tumzabt"},
["mzc"] = {"Madagascar Sign Language"},
["mzd"] = {"Malimba"},
["mze"] = {"Morawa"},
["mzg"] = {"Monastic Sign Language"},
["mzh"] = {"Wichí Lhamtés Güisnay"},
["mzi"] = {"Ixcatlán Mazatec"},
["mzj"] = {"Manya"},
["mzk"] = {"Nigeria Mambila"},
["mzl"] = {"Mazatlán Mixe"},
["mzm"] = {"Mumuye"},
["mzn"] = {"Mazanderani"},
["mzo"] = {"Matipuhy"},
["mzp"] = {"Movima"},
["mzq"] = {"Mori Atas"},
["mzr"] = {"Marúbo"},
["mzs"] = {"Macanese"},
["mzt"] = {"Mintil"},
["mzu"] = {"Inapang"},
["mzv"] = {"Manza"},
["mzw"] = {"Deg"},
["mzx"] = {"Mawayana"},
["mzy"] = {"Mozambican Sign Language"},
["mzz"] = {"Maiadomu"},
["naa"] = {"Namla"},
["nab"] = {"Southern Nambikuára"},
["nac"] = {"Narak"},
["nae"] = {"Naka'ela"},
["naf"] = {"Nabak"},
["nag"] = {"Naga Pidgin"},
["nah"] = {"Nahuatl languages"},
["nai"] = {"North American Indian languages"},
["naj"] = {"Nalu"},
["nak"] = {"Nakanai"},
["nal"] = {"Nalik"},
["nam"] = {"Ngan'gityemerri"},
["nan"] = {"Min Nan Chinese"},
["nao"] = {"Naaba"},
["nap"] = {"Neapolitan"},
["naq"] = {"Khoekhoe", "Nama (Namibia)"},
["nar"] = {"Iguta"},
["nas"] = {"Naasioi"},
["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"},
["naw"] = {"Nawuri"},
["nax"] = {"Nakwi"},
["nay"] = {"Ngarrindjeri"},
["naz"] = {"Coatepec Nahuatl"},
["nba"] = {"Nyemba"},
["nbb"] = {"Ndoe"},
["nbc"] = {"Chang Naga"},
["nbd"] = {"Ngbinda"},
["nbe"] = {"Konyak Naga"},
["nbg"] = {"Nagarchal"},
["nbh"] = {"Ngamo"},
["nbi"] = {"Mao Naga"},
["nbj"] = {"Ngarinyman"},
["nbk"] = {"Nake"},
["nbm"] = {"Ngbaka Ma'bo"},
["nbn"] = {"Kuri"},
["nbo"] = {"Nkukoli"},
["nbp"] = {"Nnam"},
["nbq"] = {"Nggem"},
["nbr"] = {"Numana"},
["nbs"] = {"Namibian Sign Language"},
["nbt"] = {"Na"},
["nbu"] = {"Rongmei Naga"},
["nbv"] = {"Ngamambo"},
["nbw"] = {"Southern Ngbandi"},
["nby"] = {"Ningera"},
["nca"] = {"Iyo"},
["ncb"] = {"Central Nicobarese"},
["ncc"] = {"Ponam"},
["ncd"] = {"Nachering"},
["nce"] = {"Yale"},
["ncf"] = {"Notsi"},
["ncg"] = {"Nisga'a"},
["nch"] = {"Central Huasteca Nahuatl"},
["nci"] = {"Classical Nahuatl"},
["ncj"] = {"Northern Puebla Nahuatl"},
["nck"] = {"Na-kara"},
["ncl"] = {"Michoacán Nahuatl"},
["ncm"] = {"Nambo"},
["ncn"] = {"Nauna"},
["nco"] = {"Sibe"},
["ncq"] = {"Northern Katang"},
["ncr"] = {"Ncane"},
["ncs"] = {"Nicaraguan Sign Language"},
["nct"] = {"Chothe Naga"},
["ncu"] = {"Chumburung"},
["ncx"] = {"Central Puebla Nahuatl"},
["ncz"] = {"Natchez"},
["nda"] = {"Ndasa"},
["ndb"] = {"Kenswei Nsei"},
["ndc"] = {"Ndau"},
["ndd"] = {"Nde-Nsele-Nta"},
["ndf"] = {"Nadruvian"},
["ndg"] = {"Ndengereko"},
["ndh"] = {"Ndali"},
["ndi"] = {"Samba Leko"},
["ndj"] = {"Ndamba"},
["ndk"] = {"Ndaka"},
["ndl"] = {"Ndolo"},
["ndm"] = {"Ndam"},
["ndn"] = {"Ngundi"},
["ndp"] = {"Ndo"},
["ndq"] = {"Ndombe"},
["ndr"] = {"Ndoola"},
["nds"] = {"Low German", "Low Saxon"},
["ndt"] = {"Ndunga"},
["ndu"] = {"Dugun"},
["ndv"] = {"Ndut"},
["ndw"] = {"Ndobo"},
["ndx"] = {"Nduga"},
["ndy"] = {"Lutos"},
["ndz"] = {"Ndogo"},
["nea"] = {"Eastern Ngad'a"},
["neb"] = {"Toura (Côte d'Ivoire)"},
["nec"] = {"Nedebang"},
["ned"] = {"Nde-Gbite"},
["nee"] = {"Nêlêmwa-Nixumwak"},
["nef"] = {"Nefamese"},
["neg"] = {"Negidal"},
["neh"] = {"Nyenkha"},
["nei"] = {"Neo-Hittite"},
["nej"] = {"Neko"},
["nek"] = {"Neku"},
["nem"] = {"Nemi"},
["nen"] = {"Nengone"},
["neo"] = {"Ná-Meo"},
["neq"] = {"North Central Mixe"},
["ner"] = {"Yahadian"},
["nes"] = {"Bhoti Kinnauri"},
["net"] = {"Nete"},
["neu"] = {"Neo"},
["nev"] = {"Nyaheun"},
["new"] = {"Newari", "Nepal Bhasa"},
["nex"] = {"Neme"},
["ney"] = {"Neyo"},
["nez"] = {"Nez Perce"},
["nfa"] = {"Dhao"},
["nfd"] = {"Ahwai"},
["nfl"] = {"Ayiwo", "Äiwoo"},
["nfr"] = {"Nafaanra"},
["nfu"] = {"Mfumte"},
["nga"] = {"Ngbaka"},
["ngb"] = {"Northern Ngbandi"},
["ngc"] = {"Ngombe (Democratic Republic of Congo)"},
["ngd"] = {"Ngando (Central African Republic)"},
["nge"] = {"Ngemba"},
["ngf"] = {"Trans-New Guinea languages"},
["ngg"] = {"Ngbaka Manza"},
["ngh"] = {"Nǁng"},
["ngi"] = {"Ngizim"},
["ngj"] = {"Ngie"},
["ngk"] = {"Dalabon"},
["ngl"] = {"Lomwe"},
["ngm"] = {"Ngatik Men's Creole"},
["ngn"] = {"Ngwo"},
["ngp"] = {"Ngulu"},
["ngq"] = {"Ngurimi", "Ngoreme"},
["ngr"] = {"Engdewu"},
["ngs"] = {"Gvoko"},
["ngt"] = {"Kriang", "Ngeq"},
["ngu"] = {"Guerrero Nahuatl"},
["ngv"] = {"Nagumi"},
["ngw"] = {"Ngwaba"},
["ngx"] = {"Nggwahyi"},
["ngy"] = {"Tibea"},
["ngz"] = {"Ngungwel"},
["nha"] = {"Nhanda"},
["nhb"] = {"Beng"},
["nhc"] = {"Tabasco Nahuatl"},
["nhd"] = {"Chiripá", "Ava Guaraní"},
["nhe"] = {"Eastern Huasteca Nahuatl"},
["nhf"] = {"Nhuwala"},
["nhg"] = {"Tetelcingo Nahuatl"},
["nhh"] = {"Nahari"},
["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"},
["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"},
["nhm"] = {"Morelos Nahuatl"},
["nhn"] = {"Central Nahuatl"},
["nho"] = {"Takuu"},
["nhp"] = {"Isthmus-Pajapan Nahuatl"},
["nhq"] = {"Huaxcaleca Nahuatl"},
["nhr"] = {"Naro"},
["nht"] = {"Ometepec Nahuatl"},
["nhu"] = {"Noone"},
["nhv"] = {"Temascaltepec Nahuatl"},
["nhw"] = {"Western Huasteca Nahuatl"},
["nhx"] = {"Isthmus-Mecayapan Nahuatl"},
["nhy"] = {"Northern Oaxaca Nahuatl"},
["nhz"] = {"Santa María La Alta Nahuatl"},
["nia"] = {"Nias"},
["nib"] = {"Nakame"},
["nic"] = {"Niger-Kordofanian languages"},
["nid"] = {"Ngandi"},
["nie"] = {"Niellim"},
["nif"] = {"Nek"},
["nig"] = {"Ngalakgan"},
["nih"] = {"Nyiha (Tanzania)"},
["nii"] = {"Nii"},
["nij"] = {"Ngaju"},
["nik"] = {"Southern Nicobarese"},
["nil"] = {"Nila"},
["nim"] = {"Nilamba"},
["nin"] = {"Ninzo"},
["nio"] = {"Nganasan"},
["niq"] = {"Nandi"},
["nir"] = {"Nimboran"},
["nis"] = {"Nimi"},
["nit"] = {"Southeastern Kolami"},
["niu"] = {"Niuean"},
["niv"] = {"Gilyak"},
["niw"] = {"Nimo"},
["nix"] = {"Hema"},
["niy"] = {"Ngiti"},
["niz"] = {"Ningil"},
["nja"] = {"Nzanyi"},
["njb"] = {"Nocte Naga"},
["njd"] = {"Ndonde Hamba"},
["njh"] = {"Lotha Naga"},
["nji"] = {"Gudanji"},
["njj"] = {"Njen"},
["njl"] = {"Njalgulgule"},
["njm"] = {"Angami Naga"},
["njn"] = {"Liangmai Naga"},
["njo"] = {"Ao Naga"},
["njr"] = {"Njerep"},
["njs"] = {"Nisa"},
["njt"] = {"Ndyuka-Trio Pidgin"},
["nju"] = {"Ngadjunmaya"},
["njx"] = {"Kunyi"},
["njy"] = {"Njyem"},
["njz"] = {"Nyishi"},
["nka"] = {"Nkoya"},
["nkb"] = {"Khoibu Naga"},
["nkc"] = {"Nkongho"},
["nkd"] = {"Koireng"},
["nke"] = {"Duke"},
["nkf"] = {"Inpui Naga"},
["nkg"] = {"Nekgini"},
["nkh"] = {"Khezha Naga"},
["nki"] = {"Thangal Naga"},
["nkj"] = {"Nakai"},
["nkk"] = {"Nokuku"},
["nkm"] = {"Namat"},
["nkn"] = {"Nkangala"},
["nko"] = {"Nkonya"},
["nkp"] = {"Niuatoputapu"},
["nkq"] = {"Nkami"},
["nkr"] = {"Nukuoro"},
["nks"] = {"North Asmat"},
["nkt"] = {"Nyika (Tanzania)"},
["nku"] = {"Bouna Kulango"},
["nkv"] = {"Nyika (Malawi and Zambia)"},
["nkw"] = {"Nkutu"},
["nkx"] = {"Nkoroo"},
["nkz"] = {"Nkari"},
["nla"] = {"Ngombale"},
["nlc"] = {"Nalca"},
["nle"] = {"East Nyala"},
["nlg"] = {"Gela"},
["nli"] = {"Grangali"},
["nlj"] = {"Nyali"},
["nlk"] = {"Ninia Yali"},
["nll"] = {"Nihali"},
["nlm"] = {"Mankiyali"},
["nlo"] = {"Ngul"},
["nlq"] = {"Lao Naga"},
["nlu"] = {"Nchumbulu"},
["nlv"] = {"Orizaba Nahuatl"},
["nlw"] = {"Walangama"},
["nlx"] = {"Nahali"},
["nly"] = {"Nyamal"},
["nlz"] = {"Nalögo"},
["nma"] = {"Maram Naga"},
["nmb"] = {"Big Nambas", "V'ënen Taut"},
["nmc"] = {"Ngam"},
["nmd"] = {"Ndumu"},
["nme"] = {"Mzieme Naga"},
["nmf"] = {"Tangkhul Naga (India)"},
["nmg"] = {"Kwasio"},
["nmh"] = {"Monsang Naga"},
["nmi"] = {"Nyam"},
["nmj"] = {"Ngombe (Central African Republic)"},
["nmk"] = {"Namakura"},
["nml"] = {"Ndemli"},
["nmm"] = {"Manangba"},
["nmn"] = {"ǃXóõ"},
["nmo"] = {"Moyon Naga"},
["nmp"] = {"Nimanbur"},
["nmq"] = {"Nambya"},
["nmr"] = {"Nimbari"},
["nms"] = {"Letemboi"},
["nmt"] = {"Namonuito"},
["nmu"] = {"Northeast Maidu"},
["nmv"] = {"Ngamini"},
["nmw"] = {"Nimoa", "Rifao"},
["nmx"] = {"Nama (Papua New Guinea)"},
["nmy"] = {"Namuyi"},
["nmz"] = {"Nawdm"},
["nna"] = {"Nyangumarta"},
["nnb"] = {"Nande"},
["nnc"] = {"Nancere"},
["nnd"] = {"West Ambae"},
["nne"] = {"Ngandyera"},
["nnf"] = {"Ngaing"},
["nng"] = {"Maring Naga"},
["nnh"] = {"Ngiemboon"},
["nni"] = {"North Nuaulu"},
["nnj"] = {"Nyangatom"},
["nnk"] = {"Nankina"},
["nnl"] = {"Northern Rengma Naga"},
["nnm"] = {"Namia"},
["nnn"] = {"Ngete"},
["nnp"] = {"Wancho Naga"},
["nnq"] = {"Ngindo"},
["nnr"] = {"Narungga"},
["nnt"] = {"Nanticoke"},
["nnu"] = {"Dwang"},
["nnv"] = {"Nugunu (Australia)"},
["nnw"] = {"Southern Nuni"},
["nny"] = {"Nyangga"},
["nnz"] = {"Nda'nda'"},
["noa"] = {"Woun Meu"},
["noc"] = {"Nuk"},
["nod"] = {"Northern Thai"},
["noe"] = {"Nimadi"},
["nof"] = {"Nomane"},
["nog"] = {"Nogai"},
["noh"] = {"Nomu"},
["noi"] = {"Noiri"},
["noj"] = {"Nonuya"},
["nok"] = {"Nooksack"},
["nol"] = {"Nomlaki"},
["non"] = {"Old Norse"},
["nop"] = {"Numanggang"},
["noq"] = {"Ngongo"},
["nos"] = {"Eastern Nisu"},
["not"] = {"Nomatsiguenga"},
["nou"] = {"Ewage-Notu"},
["nov"] = {"Novial"},
["now"] = {"Nyambo"},
["noy"] = {"Noy"},
["noz"] = {"Nayi"},
["npa"] = {"Nar Phu"},
["npb"] = {"Nupbikha"},
["npg"] = {"Ponyo-Gongwang Naga"},
["nph"] = {"Phom Naga"},
["npi"] = {"Nepali (individual language)"},
["npl"] = {"Southeastern Puebla Nahuatl"},
["npn"] = {"Mondropolon"},
["npo"] = {"Pochuri Naga"},
["nps"] = {"Nipsan"},
["npu"] = {"Puimei Naga"},
["npx"] = {"Noipx"},
["npy"] = {"Napu"},
["nqg"] = {"Southern Nago"},
["nqk"] = {"Kura Ede Nago"},
["nql"] = {"Ngendelengo"},
["nqm"] = {"Ndom"},
["nqn"] = {"Nen"},
["nqo"] = {"N'Ko", "N’Ko"},
["nqq"] = {"Kyan-Karyaw Naga"},
["nqt"] = {"Nteng"},
["nqy"] = {"Akyaung Ari Naga"},
["nra"] = {"Ngom"},
["nrb"] = {"Nara"},
["nrc"] = {"Noric"},
["nre"] = {"Southern Rengma Naga"},
["nrf"] = {"Jèrriais", "Guernésiais", "Sercquiais"},
["nrg"] = {"Narango"},
["nri"] = {"Chokri Naga"},
["nrk"] = {"Ngarla"},
["nrl"] = {"Ngarluma"},
["nrm"] = {"Narom"},
["nrn"] = {"Norn"},
["nrp"] = {"North Picene"},
["nrr"] = {"Norra", "Nora"},
["nrt"] = {"Northern Kalapuya"},
["nru"] = {"Narua"},
["nrx"] = {"Ngurmbur"},
["nrz"] = {"Lala"},
["nsa"] = {"Sangtam Naga"},
["nsb"] = {"Lower Nossob"},
["nsc"] = {"Nshi"},
["nsd"] = {"Southern Nisu"},
["nse"] = {"Nsenga"},
["nsf"] = {"Northwestern Nisu"},
["nsg"] = {"Ngasa"},
["nsh"] = {"Ngoshie"},
["nsi"] = {"Nigerian Sign Language"},
["nsk"] = {"Naskapi"},
["nsl"] = {"Norwegian Sign Language"},
["nsm"] = {"Sumi Naga"},
["nsn"] = {"Nehan"},
["nso"] = {"Pedi", "Northern Sotho", "Sepedi"},
["nsp"] = {"Nepalese Sign Language"},
["nsq"] = {"Northern Sierra Miwok"},
["nsr"] = {"Maritime Sign Language"},
["nss"] = {"Nali"},
["nst"] = {"Tase Naga"},
["nsu"] = {"Sierra Negra Nahuatl"},
["nsv"] = {"Southwestern Nisu"},
["nsw"] = {"Navut"},
["nsx"] = {"Nsongo"},
["nsy"] = {"Nasal"},
["nsz"] = {"Nisenan"},
["ntd"] = {"Northern Tidung"},
["nte"] = {"Nathembo"},
["ntg"] = {"Ngantangarra"},
["nti"] = {"Natioro"},
["ntj"] = {"Ngaanyatjarra"},
["ntk"] = {"Ikoma-Nata-Isenye"},
["ntm"] = {"Nateni"},
["nto"] = {"Ntomba"},
["ntp"] = {"Northern Tepehuan"},
["ntr"] = {"Delo"},
["ntu"] = {"Natügu"},
["ntw"] = {"Nottoway"},
["ntx"] = {"Tangkhul Naga (Myanmar)"},
["nty"] = {"Mantsi"},
["ntz"] = {"Natanzi"},
["nua"] = {"Yuanga"},
["nub"] = {"Nubian languages"},
["nuc"] = {"Nukuini"},
["nud"] = {"Ngala"},
["nue"] = {"Ngundu"},
["nuf"] = {"Nusu"},
["nug"] = {"Nungali"},
["nuh"] = {"Ndunda"},
["nui"] = {"Ngumbi"},
["nuj"] = {"Nyole"},
["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"},
["nul"] = {"Nusa Laut"},
["num"] = {"Niuafo'ou"},
["nun"] = {"Anong"},
["nuo"] = {"Nguôn"},
["nup"] = {"Nupe-Nupe-Tako"},
["nuq"] = {"Nukumanu"},
["nur"] = {"Nukuria"},
["nus"] = {"Nuer"},
["nut"] = {"Nung (Viet Nam)"},
["nuu"] = {"Ngbundu"},
["nuv"] = {"Northern Nuni"},
["nuw"] = {"Nguluwan"},
["nux"] = {"Mehek"},
["nuy"] = {"Nunggubuyu"},
["nuz"] = {"Tlamacazapa Nahuatl"},
["nvh"] = {"Nasarian"},
["nvm"] = {"Namiae"},
["nvo"] = {"Nyokon"},
["nwa"] = {"Nawathinehena"},
["nwb"] = {"Nyabwa"},
["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"},
["nwe"] = {"Ngwe"},
["nwg"] = {"Ngayawung"},
["nwi"] = {"Southwest Tanna"},
["nwm"] = {"Nyamusa-Molo"},
["nwo"] = {"Nauo"},
["nwr"] = {"Nawaru"},
["nww"] = {"Ndwewe"},
["nwx"] = {"Middle Newar"},
["nwy"] = {"Nottoway-Meherrin"},
["nxa"] = {"Nauete"},
["nxd"] = {"Ngando (Democratic Republic of Congo)"},
["nxe"] = {"Nage"},
["nxg"] = {"Ngad'a"},
["nxi"] = {"Nindi"},
["nxk"] = {"Koki Naga"},
["nxl"] = {"South Nuaulu"},
["nxm"] = {"Numidian"},
["nxn"] = {"Ngawun"},
["nxo"] = {"Ndambomo"},
["nxq"] = {"Naxi"},
["nxr"] = {"Ninggerum"},
["nxx"] = {"Nafri"},
["nyb"] = {"Nyangbo"},
["nyc"] = {"Nyanga-li"},
["nyd"] = {"Nyore", "Olunyole"},
["nye"] = {"Nyengo"},
["nyf"] = {"Giryama", "Kigiryama"},
["nyg"] = {"Nyindu"},
["nyh"] = {"Nyikina"},
["nyi"] = {"Ama (Sudan)"},
["nyj"] = {"Nyanga"},
["nyk"] = {"Nyaneka"},
["nyl"] = {"Nyeu"},
["nym"] = {"Nyamwezi"},
["nyn"] = {"Nyankole"},
["nyo"] = {"Nyoro"},
["nyp"] = {"Nyang'i"},
["nyq"] = {"Nayini"},
["nyr"] = {"Nyiha (Malawi)"},
["nys"] = {"Nyungar"},
["nyt"] = {"Nyawaygi"},
["nyu"] = {"Nyungwe"},
["nyv"] = {"Nyulnyul"},
["nyw"] = {"Nyaw"},
["nyx"] = {"Nganyaywana"},
["nyy"] = {"Nyakyusa-Ngonde"},
["nza"] = {"Tigon Mbembe"},
["nzb"] = {"Njebi"},
["nzd"] = {"Nzadi"},
["nzi"] = {"Nzima"},
["nzk"] = {"Nzakara"},
["nzm"] = {"Zeme Naga"},
["nzr"] = {"Dir-Nyamzak-Mbarimi"},
["nzs"] = {"New Zealand Sign Language"},
["nzu"] = {"Teke-Nzikou"},
["nzy"] = {"Nzakambay"},
["nzz"] = {"Nanga Dama Dogon"},
["oaa"] = {"Orok"},
["oac"] = {"Oroch"},
["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"},
["oav"] = {"Old Avar"},
["obi"] = {"Obispeño"},
["obk"] = {"Southern Bontok"},
["obl"] = {"Oblo"},
["obm"] = {"Moabite"},
["obo"] = {"Obo Manobo"},
["obr"] = {"Old Burmese"},
["obt"] = {"Old Breton"},
["obu"] = {"Obulom"},
["oca"] = {"Ocaina"},
["och"] = {"Old Chinese"},
["ocm"] = {"Old Cham"},
["oco"] = {"Old Cornish"},
["ocu"] = {"Atzingo Matlatzinca"},
["oda"] = {"Odut"},
["odk"] = {"Od"},
["odt"] = {"Old Dutch"},
["odu"] = {"Odual"},
["ofo"] = {"Ofo"},
["ofs"] = {"Old Frisian"},
["ofu"] = {"Efutop"},
["ogb"] = {"Ogbia"},
["ogc"] = {"Ogbah"},
["oge"] = {"Old Georgian"},
["ogg"] = {"Ogbogolo"},
["ogo"] = {"Khana"},
["ogu"] = {"Ogbronuagum"},
["oht"] = {"Old Hittite"},
["ohu"] = {"Old Hungarian"},
["oia"] = {"Oirata"},
["oie"] = {"Okolie"},
["oin"] = {"Inebu One"},
["ojb"] = {"Northwestern Ojibwa"},
["ojc"] = {"Central Ojibwa"},
["ojg"] = {"Eastern Ojibwa"},
["ojp"] = {"Old Japanese"},
["ojs"] = {"Severn Ojibwa"},
["ojv"] = {"Ontong Java"},
["ojw"] = {"Western Ojibwa"},
["oka"] = {"Okanagan"},
["okb"] = {"Okobo"},
["okc"] = {"Kobo"},
["okd"] = {"Okodia"},
["oke"] = {"Okpe (Southwestern Edo)"},
["okg"] = {"Koko Babangk"},
["okh"] = {"Koresh-e Rostam"},
["oki"] = {"Okiek"},
["okj"] = {"Oko-Juwoi"},
["okk"] = {"Kwamtim One"},
["okl"] = {"Old Kentish Sign Language"},
["okm"] = {"Middle Korean (10th-16th cent.)"},
["okn"] = {"Oki-No-Erabu"},
["oko"] = {"Old Korean (3rd-9th cent.)"},
["okr"] = {"Kirike"},
["oks"] = {"Oko-Eni-Osayen"},
["oku"] = {"Oku"},
["okv"] = {"Orokaiva"},
["okx"] = {"Okpe (Northwestern Edo)"},
["okz"] = {"Old Khmer"},
["ola"] = {"Walungge"},
["old"] = {"Mochi"},
["ole"] = {"Olekha"},
["olk"] = {"Olkol"},
["olm"] = {"Oloma"},
["olo"] = {"Livvi"},
["olr"] = {"Olrat"},
["olt"] = {"Old Lithuanian"},
["olu"] = {"Kuvale"},
["oma"] = {"Omaha-Ponca"},
["omb"] = {"East Ambae"},
["omc"] = {"Mochica"},
["omg"] = {"Omagua"},
["omi"] = {"Omi"},
["omk"] = {"Omok"},
["oml"] = {"Ombo"},
["omn"] = {"Minoan"},
["omo"] = {"Utarmbung"},
["omp"] = {"Old Manipuri"},
["omq"] = {"Oto-Manguean languages"},
["omr"] = {"Old Marathi"},
["omt"] = {"Omotik"},
["omu"] = {"Omurano"},
["omv"] = {"Omotic languages"},
["omw"] = {"South Tairora"},
["omx"] = {"Old Mon"},
["omy"] = {"Old Malay"},
["ona"] = {"Ona"},
["onb"] = {"Lingao"},
["one"] = {"Oneida"},
["ong"] = {"Olo"},
["oni"] = {"Onin"},
["onj"] = {"Onjob"},
["onk"] = {"Kabore One"},
["onn"] = {"Onobasulu"},
["ono"] = {"Onondaga"},
["onp"] = {"Sartang"},
["onr"] = {"Northern One"},
["ons"] = {"Ono"},
["ont"] = {"Ontenu"},
["onu"] = {"Unua"},
["onw"] = {"Old Nubian"},
["onx"] = {"Onin Based Pidgin"},
["ood"] = {"Tohono O'odham"},
["oog"] = {"Ong"},
["oon"] = {"Önge"},
["oor"] = {"Oorlams"},
["oos"] = {"Old Ossetic"},
["opa"] = {"Okpamheri"},
["opk"] = {"Kopkaka"},
["opm"] = {"Oksapmin"},
["opo"] = {"Opao"},
["opt"] = {"Opata"},
["opy"] = {"Ofayé"},
["ora"] = {"Oroha"},
["orc"] = {"Orma"},
["ore"] = {"Orejón"},
["org"] = {"Oring"},
["orh"] = {"Oroqen"},
["orn"] = {"Orang Kanaq"},
["oro"] = {"Orokolo"},
["orr"] = {"Oruma"},
["ors"] = {"Orang Seletar"},
["ort"] = {"Adivasi Oriya"},
["oru"] = {"Ormuri"},
["orv"] = {"Old Russian"},
["orw"] = {"Oro Win"},
["orx"] = {"Oro"},
["ory"] = {"Odia (individual language)", "Oriya (individual language)"},
["orz"] = {"Ormu"},
["osa"] = {"Osage"},
["osc"] = {"Oscan"},
["osi"] = {"Osing"},
["osn"] = {"Old Sundanese"},
["oso"] = {"Ososo"},
["osp"] = {"Old Spanish"},
["ost"] = {"Osatu"},
["osu"] = {"Southern One"},
["osx"] = {"Old Saxon"},
["ota"] = {"Ottoman Turkish (1500-1928)"},
["otb"] = {"Old Tibetan"},
["otd"] = {"Ot Danum"},
["ote"] = {"Mezquital Otomi"},
["oti"] = {"Oti"},
["otk"] = {"Old Turkish"},
["otl"] = {"Tilapa Otomi"},
["otm"] = {"Eastern Highland Otomi"},
["otn"] = {"Tenango Otomi"},
["oto"] = {"Otomian languages"},
["otq"] = {"Querétaro Otomi"},
["otr"] = {"Otoro"},
["ots"] = {"Estado de México Otomi"},
["ott"] = {"Temoaya Otomi"},
["otu"] = {"Otuke"},
["otw"] = {"Ottawa"},
["otx"] = {"Texcatepec Otomi"},
["oty"] = {"Old Tamil"},
["otz"] = {"Ixtenco Otomi"},
["oua"] = {"Tagargrent"},
["oub"] = {"Glio-Oubi"},
["oue"] = {"Oune"},
["oui"] = {"Old Uighur"},
["oum"] = {"Ouma"},
["ovd"] = {"Elfdalian", "Övdalian"},
["owi"] = {"Owiniga"},
["owl"] = {"Old Welsh"},
["oyb"] = {"Oy"},
["oyd"] = {"Oyda"},
["oym"] = {"Wayampi"},
["oyy"] = {"Oya'oya"},
["ozm"] = {"Koonzime"},
["paa"] = {"Papuan languages"},
["pab"] = {"Parecís"},
["pac"] = {"Pacoh"},
["pad"] = {"Paumarí"},
["pae"] = {"Pagibete"},
["paf"] = {"Paranawát"},
["pag"] = {"Pangasinan"},
["pah"] = {"Tenharim"},
["pai"] = {"Pe"},
["pak"] = {"Parakanã"},
["pal"] = {"Pahlavi"},
["pam"] = {"Pampanga", "Kapampangan"},
["pao"] = {"Northern Paiute"},
["pap"] = {"Papiamento"},
["paq"] = {"Parya"},
["par"] = {"Panamint", "Timbisha"},
["pas"] = {"Papasena"},
["pau"] = {"Palauan"},
["pav"] = {"Pakaásnovos"},
["paw"] = {"Pawnee"},
["pax"] = {"Pankararé"},
["pay"] = {"Pech"},
["paz"] = {"Pankararú"},
["pbb"] = {"Páez"},
["pbc"] = {"Patamona"},
["pbe"] = {"Mezontla Popoloca"},
["pbf"] = {"Coyotepec Popoloca"},
["pbg"] = {"Paraujano"},
["pbh"] = {"E'ñapa Woromaipu"},
["pbi"] = {"Parkwa"},
["pbl"] = {"Mak (Nigeria)"},
["pbm"] = {"Puebla Mazatec"},
["pbn"] = {"Kpasam"},
["pbo"] = {"Papel"},
["pbp"] = {"Badyara"},
["pbr"] = {"Pangwa"},
["pbs"] = {"Central Pame"},
["pbt"] = {"Southern Pashto"},
["pbu"] = {"Northern Pashto"},
["pbv"] = {"Pnar"},
["pby"] = {"Pyu (Papua New Guinea)"},
["pca"] = {"Santa Inés Ahuatempan Popoloca"},
["pcb"] = {"Pear"},
["pcc"] = {"Bouyei"},
["pcd"] = {"Picard"},
["pce"] = {"Ruching Palaung"},
["pcf"] = {"Paliyan"},
["pcg"] = {"Paniya"},
["pch"] = {"Pardhan"},
["pci"] = {"Duruwa"},
["pcj"] = {"Parenga"},
["pck"] = {"Paite Chin"},
["pcl"] = {"Pardhi"},
["pcm"] = {"Nigerian Pidgin"},
["pcn"] = {"Piti"},
["pcp"] = {"Pacahuara"},
["pcw"] = {"Pyapun"},
["pda"] = {"Anam"},
["pdc"] = {"Pennsylvania German"},
["pdi"] = {"Pa Di"},
["pdn"] = {"Podena", "Fedan"},
["pdo"] = {"Padoe"},
["pdt"] = {"Plautdietsch"},
["pdu"] = {"Kayan"},
["pea"] = {"Peranakan Indonesian"},
["peb"] = {"Eastern Pomo"},
["ped"] = {"Mala (Papua New Guinea)"},
["pee"] = {"Taje"},
["pef"] = {"Northeastern Pomo"},
["peg"] = {"Pengo"},
["peh"] = {"Bonan"},
["pei"] = {"Chichimeca-Jonaz"},
["pej"] = {"Northern Pomo"},
["pek"] = {"Penchal"},
["pel"] = {"Pekal"},
["pem"] = {"Phende"},
["peo"] = {"Old Persian (ca. 600-400 B.C.)"},
["pep"] = {"Kunja"},
["peq"] = {"Southern Pomo"},
["pes"] = {"Iranian Persian"},
["pev"] = {"Pémono"},
["pex"] = {"Petats"},
["pey"] = {"Petjo"},
["pez"] = {"Eastern Penan"},
["pfa"] = {"Pááfang"},
["pfe"] = {"Pere"},
["pfl"] = {"Pfaelzisch"},
["pga"] = {"Sudanese Creole Arabic"},
["pgd"] = {"Gāndhārī"},
["pgg"] = {"Pangwali"},
["pgi"] = {"Pagi"},
["pgk"] = {"Rerep"},
["pgl"] = {"Primitive Irish"},
["pgn"] = {"Paelignian"},
["pgs"] = {"Pangseng"},
["pgu"] = {"Pagu"},
["pgz"] = {"Papua New Guinean Sign Language"},
["pha"] = {"Pa-Hng"},
["phd"] = {"Phudagi"},
["phg"] = {"Phuong"},
["phh"] = {"Phukha"},
["phi"] = {"Philippine languages"},
["phj"] = {"Pahari"},
["phk"] = {"Phake"},
["phl"] = {"Phalura", "Palula"},
["phm"] = {"Phimbi"},
["phn"] = {"Phoenician"},
["pho"] = {"Phunoi"},
["phq"] = {"Phana'"},
["phr"] = {"Pahari-Potwari"},
["pht"] = {"Phu Thai"},
["phu"] = {"Phuan"},
["phv"] = {"Pahlavani"},
["phw"] = {"Phangduwali"},
["pia"] = {"Pima Bajo"},
["pib"] = {"Yine"},
["pic"] = {"Pinji"},
["pid"] = {"Piaroa"},
["pie"] = {"Piro"},
["pif"] = {"Pingelapese"},
["pig"] = {"Pisabo"},
["pih"] = {"Pitcairn-Norfolk"},
["pij"] = {"Pijao"},
["pil"] = {"Yom"},
["pim"] = {"Powhatan"},
["pin"] = {"Piame"},
["pio"] = {"Piapoco"},
["pip"] = {"Pero"},
["pir"] = {"Piratapuyo"},
["pis"] = {"Pijin"},
["pit"] = {"Pitta Pitta"},
["piu"] = {"Pintupi-Luritja"},
["piv"] = {"Pileni", "Vaeakau-Taumako"},
["piw"] = {"Pimbwe"},
["pix"] = {"Piu"},
["piy"] = {"Piya-Kwonci"},
["piz"] = {"Pije"},
["pjt"] = {"Pitjantjatjara"},
["pka"] = {"Ardhamāgadhī Prākrit"},
["pkb"] = {"Pokomo", "Kipfokomo"},
["pkc"] = {"Paekche"},
["pkg"] = {"Pak-Tong"},
["pkh"] = {"Pankhu"},
["pkn"] = {"Pakanha"},
["pko"] = {"Pökoot"},
["pkp"] = {"Pukapuka"},
["pkr"] = {"Attapady Kurumba"},
["pks"] = {"Pakistan Sign Language"},
["pkt"] = {"Maleng"},
["pku"] = {"Paku"},
["pla"] = {"Miani"},
["plb"] = {"Polonombauk"},
["plc"] = {"Central Palawano"},
["pld"] = {"Polari"},
["ple"] = {"Palu'e"},
["plf"] = {"Central Malayo-Polynesian languages"},
["plg"] = {"Pilagá"},
["plh"] = {"Paulohi"},
["plk"] = {"Kohistani Shina"},
["pll"] = {"Shwe Palaung"},
["pln"] = {"Palenquero"},
["plo"] = {"Oluta Popoluca"},
["plq"] = {"Palaic"},
["plr"] = {"Palaka Senoufo"},
["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"},
["plt"] = {"Plateau Malagasy"},
["plu"] = {"Palikúr"},
["plv"] = {"Southwest Palawano"},
["plw"] = {"Brooke's Point Palawano"},
["ply"] = {"Bolyu"},
["plz"] = {"Paluan"},
["pma"] = {"Paama"},
["pmb"] = {"Pambia"},
["pmd"] = {"Pallanganmiddang"},
["pme"] = {"Pwaamei"},
["pmf"] = {"Pamona"},
["pmh"] = {"Māhārāṣṭri Prākrit"},
["pmi"] = {"Northern Pumi"},
["pmj"] = {"Southern Pumi"},
["pml"] = {"Lingua Franca"},
["pmm"] = {"Pomo"},
["pmn"] = {"Pam"},
["pmo"] = {"Pom"},
["pmq"] = {"Northern Pame"},
["pmr"] = {"Paynamar"},
["pms"] = {"Piemontese"},
["pmt"] = {"Tuamotuan"},
["pmw"] = {"Plains Miwok"},
["pmx"] = {"Poumei Naga"},
["pmy"] = {"Papuan Malay"},
["pmz"] = {"Southern Pame"},
["pna"] = {"Punan Bah-Biau"},
["pnb"] = {"Western Panjabi"},
["pnc"] = {"Pannei"},
["pnd"] = {"Mpinda"},
["pne"] = {"Western Penan"},
["png"] = {"Pangu", "Pongu"},
["pnh"] = {"Penrhyn"},
["pni"] = {"Aoheng"},
["pnj"] = {"Pinjarup"},
["pnk"] = {"Paunaka"},
["pnl"] = {"Paleni"},
["pnm"] = {"Punan Batu 1"},
["pnn"] = {"Pinai-Hagahai"},
["pno"] = {"Panobo"},
["pnp"] = {"Pancana"},
["pnq"] = {"Pana (Burkina Faso)"},
["pnr"] = {"Panim"},
["pns"] = {"Ponosakan"},
["pnt"] = {"Pontic"},
["pnu"] = {"Jiongnai Bunu"},
["pnv"] = {"Pinigura"},
["pnw"] = {"Banyjima", "Panytyima"},
["pnx"] = {"Phong-Kniang"},
["pny"] = {"Pinyin"},
["pnz"] = {"Pana (Central African Republic)"},
["poc"] = {"Poqomam"},
["poe"] = {"San Juan Atzingo Popoloca"},
["pof"] = {"Poke"},
["pog"] = {"Potiguára"},
["poh"] = {"Poqomchi'"},
["poi"] = {"Highland Popoluca"},
["pok"] = {"Pokangá"},
["pom"] = {"Southeastern Pomo"},
["pon"] = {"Pohnpeian"},
["poo"] = {"Central Pomo"},
["pop"] = {"Pwapwâ"},
["poq"] = {"Texistepec Popoluca"},
["pos"] = {"Sayula Popoluca"},
["pot"] = {"Potawatomi"},
["pov"] = {"Upper Guinea Crioulo"},
["pow"] = {"San Felipe Otlaltepec Popoloca"},
["pox"] = {"Polabian"},
["poy"] = {"Pogolo"},
["poz"] = {"Malayo-Polynesian languages"},
["ppe"] = {"Papi"},
["ppi"] = {"Paipai"},
["ppk"] = {"Uma"},
["ppl"] = {"Pipil", "Nicarao"},
["ppm"] = {"Papuma"},
["ppn"] = {"Papapana"},
["ppo"] = {"Folopa"},
["ppp"] = {"Pelende"},
["ppq"] = {"Pei"},
["pps"] = {"San Luís Temalacayuca Popoloca"},
["ppt"] = {"Pare"},
["ppu"] = {"Papora"},
["pqa"] = {"Pa'a"},
["pqe"] = {"Eastern Malayo-Polynesian languages"},
["pqm"] = {"Malecite-Passamaquoddy"},
["pqw"] = {"Western Malayo-Polynesian languages"},
["pra"] = {"Prakrit languages"},
["prc"] = {"Parachi"},
["prd"] = {"Parsi-Dari"},
["pre"] = {"Principense"},
["prf"] = {"Paranan"},
["prg"] = {"Prussian"},
["prh"] = {"Porohanon"},
["pri"] = {"Paicî"},
["prk"] = {"Parauk"},
["prl"] = {"Peruvian Sign Language"},
["prm"] = {"Kibiri"},
["prn"] = {"Prasuni"},
["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"},
["prq"] = {"Ashéninka Perené"},
["prr"] = {"Puri"},
["prs"] = {"Dari", "Afghan Persian"},
["prt"] = {"Phai"},
["pru"] = {"Puragi"},
["prw"] = {"Parawen"},
["prx"] = {"Purik"},
["prz"] = {"Providencia Sign Language"},
["psa"] = {"Asue Awyu"},
["psc"] = {"Iranian Sign Language", "Persian Sign Language"},
["psd"] = {"Plains Indian Sign Language"},
["pse"] = {"Central Malay"},
["psg"] = {"Penang Sign Language"},
["psh"] = {"Southwest Pashai", "Southwest Pashayi"},
["psi"] = {"Southeast Pashai", "Southeast Pashayi"},
["psl"] = {"Puerto Rican Sign Language"},
["psm"] = {"Pauserna"},
["psn"] = {"Panasuan"},
["pso"] = {"Polish Sign Language"},
["psp"] = {"Philippine Sign Language"},
["psq"] = {"Pasi"},
["psr"] = {"Portuguese Sign Language"},
["pss"] = {"Kaulong"},
["pst"] = {"Central Pashto"},
["psu"] = {"Sauraseni Prākrit"},
["psw"] = {"Port Sandwich"},
["psy"] = {"Piscataway"},
["pta"] = {"Pai Tavytera"},
["pth"] = {"Pataxó Hã-Ha-Hãe"},
["pti"] = {"Pindiini", "Wangkatha"},
["ptn"] = {"Patani"},
["pto"] = {"Zo'é"},
["ptp"] = {"Patep"},
["ptq"] = {"Pattapu"},
["ptr"] = {"Piamatsina"},
["ptt"] = {"Enrekang"},
["ptu"] = {"Bambam"},
["ptv"] = {"Port Vato"},
["ptw"] = {"Pentlatch"},
["pty"] = {"Pathiya"},
["pua"] = {"Western Highland Purepecha"},
["pub"] = {"Purum"},
["puc"] = {"Punan Merap"},
["pud"] = {"Punan Aput"},
["pue"] = {"Puelche"},
["puf"] = {"Punan Merah"},
["pug"] = {"Phuie"},
["pui"] = {"Puinave"},
["puj"] = {"Punan Tubu"},
["pum"] = {"Puma"},
["puo"] = {"Puoc"},
["pup"] = {"Pulabu"},
["puq"] = {"Puquina"},
["pur"] = {"Puruborá"},
["put"] = {"Putoh"},
["puu"] = {"Punu"},
["puw"] = {"Puluwatese"},
["pux"] = {"Puare"},
["puy"] = {"Purisimeño"},
["pwa"] = {"Pawaia"},
["pwb"] = {"Panawa"},
["pwg"] = {"Gapapaiwa"},
["pwi"] = {"Patwin"},
["pwm"] = {"Molbog"},
["pwn"] = {"Paiwan"},
["pwo"] = {"Pwo Western Karen"},
["pwr"] = {"Powari"},
["pww"] = {"Pwo Northern Karen"},
["pxm"] = {"Quetzaltepec Mixe"},
["pye"] = {"Pye Krumen"},
["pym"] = {"Fyam"},
["pyn"] = {"Poyanáwa"},
["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"},
["pyu"] = {"Puyuma"},
["pyx"] = {"Pyu (Myanmar)"},
["pyy"] = {"Pyen"},
["pze"] = {"Pesse"},
["pzh"] = {"Pazeh"},
["pzn"] = {"Jejara Naga", "Para Naga"},
["qua"] = {"Quapaw"},
["qub"] = {"Huallaga Huánuco Quechua"},
["quc"] = {"K'iche'", "Quiché"},
["qud"] = {"Calderón Highland Quichua"},
["quf"] = {"Lambayeque Quechua"},
["qug"] = {"Chimborazo Highland Quichua"},
["quh"] = {"South Bolivian Quechua"},
["qui"] = {"Quileute"},
["quk"] = {"Chachapoyas Quechua"},
["qul"] = {"North Bolivian Quechua"},
["qum"] = {"Sipacapense"},
["qun"] = {"Quinault"},
["qup"] = {"Southern Pastaza Quechua"},
["quq"] = {"Quinqui"},
["qur"] = {"Yanahuanca Pasco Quechua"},
["qus"] = {"Santiago del Estero Quichua"},
["quv"] = {"Sacapulteco"},
["quw"] = {"Tena Lowland Quichua"},
["qux"] = {"Yauyos Quechua"},
["quy"] = {"Ayacucho Quechua"},
["quz"] = {"Cusco Quechua"},
["qva"] = {"Ambo-Pasco Quechua"},
["qvc"] = {"Cajamarca Quechua"},
["qve"] = {"Eastern Apurímac Quechua"},
["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"},
["qvi"] = {"Imbabura Highland Quichua"},
["qvj"] = {"Loja Highland Quichua"},
["qvl"] = {"Cajatambo North Lima Quechua"},
["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"},
["qvn"] = {"North Junín Quechua"},
["qvo"] = {"Napo Lowland Quechua"},
["qvp"] = {"Pacaraos Quechua"},
["qvs"] = {"San Martín Quechua"},
["qvw"] = {"Huaylla Wanca Quechua"},
["qvy"] = {"Queyu"},
["qvz"] = {"Northern Pastaza Quichua"},
["qwa"] = {"Corongo Ancash Quechua"},
["qwc"] = {"Classical Quechua"},
["qwe"] = {"Quechuan (family)"},
["qwh"] = {"Huaylas Ancash Quechua"},
["qwm"] = {"Kuman (Russia)"},
["qws"] = {"Sihuas Ancash Quechua"},
["qwt"] = {"Kwalhioqua-Tlatskanai"},
["qxa"] = {"Chiquián Ancash Quechua"},
["qxc"] = {"Chincha Quechua"},
["qxh"] = {"Panao Huánuco Quechua"},
["qxl"] = {"Salasaca Highland Quichua"},
["qxn"] = {"Northern Conchucos Ancash Quechua"},
["qxo"] = {"Southern Conchucos Ancash Quechua"},
["qxp"] = {"Puno Quechua"},
["qxq"] = {"Qashqa'i"},
["qxr"] = {"Cañar Highland Quichua"},
["qxs"] = {"Southern Qiang"},
["qxt"] = {"Santa Ana de Tusi Pasco Quechua"},
["qxu"] = {"Arequipa-La Unión Quechua"},
["qxw"] = {"Jauja Wanca Quechua"},
["qya"] = {"Quenya"},
["qyp"] = {"Quiripi"},
["raa"] = {"Dungmali"},
["rab"] = {"Camling"},
["rac"] = {"Rasawa"},
["rad"] = {"Rade"},
["raf"] = {"Western Meohang"},
["rag"] = {"Logooli", "Lulogooli"},
["rah"] = {"Rabha"},
["rai"] = {"Ramoaaina"},
["raj"] = {"Rajasthani"},
["rak"] = {"Tulu-Bohuai"},
["ral"] = {"Ralte"},
["ram"] = {"Canela"},
["ran"] = {"Riantana"},
["rao"] = {"Rao"},
["rap"] = {"Rapanui"},
["raq"] = {"Saam"},
["rar"] = {"Rarotongan", "Cook Islands Maori"},
["ras"] = {"Tegali"},
["rat"] = {"Razajerdi"},
["rau"] = {"Raute"},
["rav"] = {"Sampang"},
["raw"] = {"Rawang"},
["rax"] = {"Rang"},
["ray"] = {"Rapa"},
["raz"] = {"Rahambuu"},
["rbb"] = {"Rumai Palaung"},
["rbk"] = {"Northern Bontok"},
["rbl"] = {"Miraya Bikol"},
["rbp"] = {"Barababaraba"},
["rcf"] = {"Réunion Creole French"},
["rdb"] = {"Rudbari"},
["rea"] = {"Rerau"},
["reb"] = {"Rembong"},
["ree"] = {"Rejang Kayan"},
["reg"] = {"Kara (Tanzania)"},
["rei"] = {"Reli"},
["rej"] = {"Rejang"},
["rel"] = {"Rendille"},
["rem"] = {"Remo"},
["ren"] = {"Rengao"},
["rer"] = {"Rer Bare"},
["res"] = {"Reshe"},
["ret"] = {"Retta"},
["rey"] = {"Reyesano"},
["rga"] = {"Roria"},
["rge"] = {"Romano-Greek"},
["rgk"] = {"Rangkas"},
["rgn"] = {"Romagnol"},
["rgr"] = {"Resígaro"},
["rgs"] = {"Southern Roglai"},
["rgu"] = {"Ringgou"},
["rhg"] = {"Rohingya"},
["rhp"] = {"Yahang"},
["ria"] = {"Riang (India)"},
["rib"] = {"Bribri Sign Language"},
["rif"] = {"Tarifit"},
["ril"] = {"Riang Lang", "Riang (Myanmar)"},
["rim"] = {"Nyaturu"},
["rin"] = {"Nungu"},
["rir"] = {"Ribun"},
["rit"] = {"Ritharrngu"},
["riu"] = {"Riung"},
["rjg"] = {"Rajong"},
["rji"] = {"Raji"},
["rjs"] = {"Rajbanshi"},
["rka"] = {"Kraol"},
["rkb"] = {"Rikbaktsa"},
["rkh"] = {"Rakahanga-Manihiki"},
["rki"] = {"Rakhine"},
["rkm"] = {"Marka"},
["rkt"] = {"Rangpuri", "Kamta"},
["rkw"] = {"Arakwal"},
["rma"] = {"Rama"},
["rmb"] = {"Rembarrnga"},
["rmc"] = {"Carpathian Romani"},
["rmd"] = {"Traveller Danish"},
["rme"] = {"Angloromani"},
["rmf"] = {"Kalo Finnish Romani"},
["rmg"] = {"Traveller Norwegian"},
["rmh"] = {"Murkim"},
["rmi"] = {"Lomavren"},
["rmk"] = {"Romkun"},
["rml"] = {"Baltic Romani"},
["rmm"] = {"Roma"},
["rmn"] = {"Balkan Romani"},
["rmo"] = {"Sinte Romani"},
["rmp"] = {"Rempi"},
["rmq"] = {"Caló"},
["rms"] = {"Romanian Sign Language"},
["rmt"] = {"Domari"},
["rmu"] = {"Tavringer Romani"},
["rmv"] = {"Romanova"},
["rmw"] = {"Welsh Romani"},
["rmx"] = {"Romam"},
["rmy"] = {"Vlax Romani"},
["rmz"] = {"Marma"},
["rnb"] = {"Brunca Sign Language"},
["rnd"] = {"Ruund"},
["rng"] = {"Ronga"},
["rnl"] = {"Ranglong"},
["rnn"] = {"Roon"},
["rnp"] = {"Rongpo"},
["rnr"] = {"Nari Nari"},
["rnw"] = {"Rungwa"},
["roa"] = {"Romance languages"},
["rob"] = {"Tae'"},
["roc"] = {"Cacgia Roglai"},
["rod"] = {"Rogo"},
["roe"] = {"Ronji"},
["rof"] = {"Rombo"},
["rog"] = {"Northern Roglai"},
["rol"] = {"Romblomanon"},
["rom"] = {"Romany"},
["roo"] = {"Rotokas"},
["rop"] = {"Kriol"},
["ror"] = {"Rongga"},
["rou"] = {"Runga"},
["row"] = {"Dela-Oenale"},
["rpn"] = {"Repanbitip"},
["rpt"] = {"Rapting"},
["rri"] = {"Ririo"},
["rro"] = {"Waima"},
["rrt"] = {"Arritinngithigh"},
["rsb"] = {"Romano-Serbian"},
["rsk"] = {"Ruthenian", "Rusnak"},
["rsl"] = {"Russian Sign Language"},
["rsm"] = {"Miriwoong Sign Language"},
["rsn"] = {"Rwandan Sign Language"},
["rsw"] = {"Rishiwa"},
["rtc"] = {"Rungtu Chin"},
["rth"] = {"Ratahan"},
["rtm"] = {"Rotuman"},
["rts"] = {"Yurats"},
["rtw"] = {"Rathawi"},
["rub"] = {"Gungu"},
["ruc"] = {"Ruuli"},
["rue"] = {"Rusyn"},
["ruf"] = {"Luguru"},
["rug"] = {"Roviana"},
["ruh"] = {"Ruga"},
["rui"] = {"Rufiji"},
["ruk"] = {"Che"},
["ruo"] = {"Istro Romanian"},
["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"},
["ruq"] = {"Megleno Romanian"},
["rut"] = {"Rutul"},
["ruu"] = {"Lanas Lobu"},
["ruy"] = {"Mala (Nigeria)"},
["ruz"] = {"Ruma"},
["rwa"] = {"Rawo"},
["rwk"] = {"Rwa"},
["rwl"] = {"Ruwila"},
["rwm"] = {"Amba (Uganda)"},
["rwo"] = {"Rawa"},
["rwr"] = {"Marwari (India)"},
["rxd"] = {"Ngardi"},
["rxw"] = {"Karuwali", "Garuwali"},
["ryn"] = {"Northern Amami-Oshima"},
["rys"] = {"Yaeyama"},
["ryu"] = {"Central Okinawan"},
["rzh"] = {"Rāziḥī"},
["saa"] = {"Saba"},
["sab"] = {"Buglere"},
["sac"] = {"Meskwaki"},
["sad"] = {"Sandawe"},
["sae"] = {"Sabanê"},
["saf"] = {"Safaliba"},
["sah"] = {"Yakut"},
["sai"] = {"South American Indian languages"},
["saj"] = {"Sahu"},
["sak"] = {"Sake"},
["sal"] = {"Salishan languages"},
["sam"] = {"Samaritan Aramaic"},
["sao"] = {"Sause"},
["saq"] = {"Samburu"},
["sar"] = {"Saraveca"},
["sas"] = {"Sasak"},
["sat"] = {"Santali"},
["sau"] = {"Saleman"},
["sav"] = {"Saafi-Saafi"},
["saw"] = {"Sawi"},
["sax"] = {"Sa"},
["say"] = {"Saya"},
["saz"] = {"Saurashtra"},
["sba"] = {"Ngambay"},
["sbb"] = {"Simbo"},
["sbc"] = {"Kele (Papua New Guinea)"},
["sbd"] = {"Southern Samo"},
["sbe"] = {"Saliba"},
["sbf"] = {"Chabu", "Shabo"},
["sbg"] = {"Seget"},
["sbh"] = {"Sori-Harengan"},
["sbi"] = {"Seti"},
["sbj"] = {"Surbakhal"},
["sbk"] = {"Safwa"},
["sbl"] = {"Botolan Sambal"},
["sbm"] = {"Sagala"},
["sbn"] = {"Sindhi Bhil"},
["sbo"] = {"Sabüm"},
["sbp"] = {"Sangu (Tanzania)"},
["sbq"] = {"Sileibi"},
["sbr"] = {"Sembakung Murut"},
["sbs"] = {"Subiya"},
["sbt"] = {"Kimki"},
["sbu"] = {"Stod Bhoti"},
["sbv"] = {"Sabine"},
["sbw"] = {"Simba"},
["sbx"] = {"Seberuang"},
["sby"] = {"Soli"},
["sbz"] = {"Sara Kaba"},
["scb"] = {"Chut"},
["sce"] = {"Dongxiang"},
["scf"] = {"San Miguel Creole French"},
["scg"] = {"Sanggau"},
["sch"] = {"Sakachep"},
["sci"] = {"Sri Lankan Creole Malay"},
["sck"] = {"Sadri"},
["scl"] = {"Shina"},
["scn"] = {"Sicilian"},
["sco"] = {"Scots"},
["scp"] = {"Hyolmo", "Helambu Sherpa"},
["scq"] = {"Sa'och"},
["scs"] = {"North Slavey"},
["sct"] = {"Southern Katang"},
["scu"] = {"Shumcho"},
["scv"] = {"Sheni"},
["scw"] = {"Sha"},
["scx"] = {"Sicel"},
["sda"] = {"Toraja-Sa'dan"},
["sdb"] = {"Shabak"},
["sdc"] = {"Sassarese Sardinian"},
["sde"] = {"Surubu"},
["sdf"] = {"Sarli"},
["sdg"] = {"Savi"},
["sdh"] = {"Southern Kurdish"},
["sdj"] = {"Suundi"},
["sdk"] = {"Sos Kundi"},
["sdl"] = {"Saudi Arabian Sign Language"},
["sdn"] = {"Gallurese Sardinian"},
["sdo"] = {"Bukar-Sadung Bidayuh"},
["sdp"] = {"Sherdukpen"},
["sdq"] = {"Semandang"},
["sdr"] = {"Oraon Sadri"},
["sds"] = {"Sened"},
["sdt"] = {"Shuadit"},
["sdu"] = {"Sarudu"},
["sdv"] = {"Eastern Sudanic languages"},
["sdx"] = {"Sibu Melanau"},
["sdz"] = {"Sallands"},
["sea"] = {"Semai"},
["seb"] = {"Shempire Senoufo"},
["sec"] = {"Sechelt"},
["sed"] = {"Sedang"},
["see"] = {"Seneca"},
["sef"] = {"Cebaara Senoufo"},
["seg"] = {"Segeju"},
["seh"] = {"Sena"},
["sei"] = {"Seri"},
["sej"] = {"Sene"},
["sek"] = {"Sekani"},
["sel"] = {"Selkup"},
["sem"] = {"Semitic languages"},
["sen"] = {"Nanerigé Sénoufo"},
["seo"] = {"Suarmin"},
["sep"] = {"Sìcìté Sénoufo"},
["seq"] = {"Senara Sénoufo"},
["ser"] = {"Serrano"},
["ses"] = {"Koyraboro Senni Songhai"},
["set"] = {"Sentani"},
["seu"] = {"Serui-Laut"},
["sev"] = {"Nyarafolo Senoufo"},
["sew"] = {"Sewa Bay"},
["sey"] = {"Secoya"},
["sez"] = {"Senthang Chin"},
["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"},
["sfe"] = {"Eastern Subanen"},
["sfm"] = {"Small Flowery Miao"},
["sfs"] = {"South African Sign Language"},
["sfw"] = {"Sehwi"},
["sga"] = {"Old Irish (to 900)"},
["sgb"] = {"Mag-antsi Ayta"},
["sgc"] = {"Kipsigis"},
["sgd"] = {"Surigaonon"},
["sge"] = {"Segai"},
["sgg"] = {"Swiss-German Sign Language"},
["sgh"] = {"Shughni"},
["sgi"] = {"Suga"},
["sgj"] = {"Surgujia"},
["sgk"] = {"Sangkong"},
["sgm"] = {"Singa"},
["sgn"] = {"Sign languages"},
["sgp"] = {"Singpho"},
["sgr"] = {"Sangisari"},
["sgs"] = {"Samogitian"},
["sgt"] = {"Brokpake"},
["sgu"] = {"Salas"},
["sgw"] = {"Sebat Bet Gurage"},
["sgx"] = {"Sierra Leone Sign Language"},
["sgy"] = {"Sanglechi"},
["sgz"] = {"Sursurunga"},
["sha"] = {"Shall-Zwall"},
["shb"] = {"Ninam"},
["shc"] = {"Sonde"},
["shd"] = {"Kundal Shahi"},
["she"] = {"Sheko"},
["shg"] = {"Shua"},
["shh"] = {"Shoshoni"},
["shi"] = {"Tachelhit"},
["shj"] = {"Shatt"},
["shk"] = {"Shilluk"},
["shl"] = {"Shendu"},
["shm"] = {"Shahrudi"},
["shn"] = {"Shan"},
["sho"] = {"Shanga"},
["shp"] = {"Shipibo-Conibo"},
["shq"] = {"Sala"},
["shr"] = {"Shi"},
["shs"] = {"Shuswap"},
["sht"] = {"Shasta"},
["shu"] = {"Chadian Arabic"},
["shv"] = {"Shehri"},
["shw"] = {"Shwai"},
["shx"] = {"She"},
["shy"] = {"Tachawit"},
["shz"] = {"Syenara Senoufo"},
["sia"] = {"Akkala Sami"},
["sib"] = {"Sebop"},
["sid"] = {"Sidamo"},
["sie"] = {"Simaa"},
["sif"] = {"Siamou"},
["sig"] = {"Paasaal"},
["sih"] = {"Zire", "Sîshëë"},
["sii"] = {"Shom Peng"},
["sij"] = {"Numbami"},
["sik"] = {"Sikiana"},
["sil"] = {"Tumulung Sisaala"},
["sim"] = {"Mende (Papua New Guinea)"},
["sio"] = {"Siouan languages"},
["sip"] = {"Sikkimese"},
["siq"] = {"Sonia"},
["sir"] = {"Siri"},
["sis"] = {"Siuslaw"},
["sit"] = {"Sino-Tibetan languages"},
["siu"] = {"Sinagen"},
["siv"] = {"Sumariup"},
["siw"] = {"Siwai"},
["six"] = {"Sumau"},
["siy"] = {"Sivandi"},
["siz"] = {"Siwi"},
["sja"] = {"Epena"},
["sjb"] = {"Sajau Basap"},
["sjd"] = {"Kildin Sami"},
["sje"] = {"Pite Sami"},
["sjg"] = {"Assangori"},
["sjk"] = {"Kemi Sami"},
["sjl"] = {"Sajalong", "Miji"},
["sjm"] = {"Mapun"},
["sjn"] = {"Sindarin"},
["sjo"] = {"Xibe"},
["sjp"] = {"Surjapuri"},
["sjr"] = {"Siar-Lak"},
["sjs"] = {"Senhaja De Srair"},
["sjt"] = {"Ter Sami"},
["sju"] = {"Ume Sami"},
["sjw"] = {"Shawnee"},
["ska"] = {"Skagit"},
["skb"] = {"Saek"},
["skc"] = {"Ma Manda"},
["skd"] = {"Southern Sierra Miwok"},
["ske"] = {"Seke (Vanuatu)"},
["skf"] = {"Sakirabiá"},
["skg"] = {"Sakalava Malagasy"},
["skh"] = {"Sikule"},
["ski"] = {"Sika"},
["skj"] = {"Seke (Nepal)"},
["skm"] = {"Kutong"},
["skn"] = {"Kolibugan Subanon"},
["sko"] = {"Seko Tengah"},
["skp"] = {"Sekapan"},
["skq"] = {"Sininkere"},
["skr"] = {"Saraiki", "Seraiki"},
["sks"] = {"Maia"},
["skt"] = {"Sakata"},
["sku"] = {"Sakao"},
["skv"] = {"Skou"},
["skw"] = {"Skepi Creole Dutch"},
["skx"] = {"Seko Padang"},
["sky"] = {"Sikaiana"},
["skz"] = {"Sekar"},
["sla"] = {"Slavic languages"},
["slc"] = {"Sáliba"},
["sld"] = {"Sissala"},
["sle"] = {"Sholaga"},
["slf"] = {"Swiss-Italian Sign Language"},
["slg"] = {"Selungai Murut"},
["slh"] = {"Southern Puget Sound Salish"},
["sli"] = {"Lower Silesian"},
["slj"] = {"Salumá"},
["sll"] = {"Salt-Yui"},
["slm"] = {"Pangutaran Sama"},
["sln"] = {"Salinan"},
["slp"] = {"Lamaholot"},
["slr"] = {"Salar"},
["sls"] = {"Singapore Sign Language"},
["slt"] = {"Sila"},
["slu"] = {"Selaru"},
["slw"] = {"Sialum"},
["slx"] = {"Salampasu"},
["sly"] = {"Selayar"},
["slz"] = {"Ma'ya"},
["sma"] = {"Southern Sami"},
["smb"] = {"Simbari"},
["smc"] = {"Som"},
["smf"] = {"Auwe"},
["smg"] = {"Simbali"},
["smh"] = {"Samei"},
["smi"] = {"Sami languages"},
["smj"] = {"Lule Sami"},
["smk"] = {"Bolinao"},
["sml"] = {"Central Sama"},
["smm"] = {"Musasa"},
["smn"] = {"Inari Sami"},
["smp"] = {"Samaritan"},
["smq"] = {"Samo"},
["smr"] = {"Simeulue"},
["sms"] = {"Skolt Sami"},
["smt"] = {"Simte"},
["smu"] = {"Somray"},
["smv"] = {"Samvedi"},
["smw"] = {"Sumbawa"},
["smx"] = {"Samba"},
["smy"] = {"Semnani"},
["smz"] = {"Simeku"},
["snc"] = {"Sinaugoro"},
["sne"] = {"Bau Bidayuh"},
["snf"] = {"Noon"},
["sng"] = {"Sanga (Democratic Republic of Congo)"},
["sni"] = {"Sensi"},
["snj"] = {"Riverain Sango"},
["snk"] = {"Soninke"},
["snl"] = {"Sangil"},
["snm"] = {"Southern Ma'di"},
["snn"] = {"Siona"},
["sno"] = {"Snohomish"},
["snp"] = {"Siane"},
["snq"] = {"Sangu (Gabon)"},
["snr"] = {"Sihan"},
["sns"] = {"South West Bay", "Nahavaq"},
["snu"] = {"Senggi", "Viid"},
["snv"] = {"Sa'ban"},
["snw"] = {"Selee"},
["snx"] = {"Sam"},
["sny"] = {"Saniyo-Hiyewe"},
["snz"] = {"Kou"},
["soa"] = {"Thai Song"},
["sob"] = {"Sobei"},
["soc"] = {"So (Democratic Republic of Congo)"},
["sod"] = {"Songoora"},
["soe"] = {"Songomeno"},
["sog"] = {"Sogdian"},
["soh"] = {"Aka"},
["soi"] = {"Sonha"},
["soj"] = {"Soi"},
["sok"] = {"Sokoro"},
["sol"] = {"Solos"},
["son"] = {"Songhai languages"},
["soo"] = {"Songo"},
["sop"] = {"Songe"},
["soq"] = {"Kanasi"},
["sor"] = {"Somrai"},
["sos"] = {"Seeku"},
["sou"] = {"Southern Thai"},
["sov"] = {"Sonsorol"},
["sow"] = {"Sowanda"},
["sox"] = {"Swo"},
["soy"] = {"Miyobe"},
["soz"] = {"Temi"},
["spb"] = {"Sepa (Indonesia)"},
["spc"] = {"Sapé"},
["spd"] = {"Saep"},
["spe"] = {"Sepa (Papua New Guinea)"},
["spg"] = {"Sian"},
["spi"] = {"Saponi"},
["spk"] = {"Sengo"},
["spl"] = {"Selepet"},
["spm"] = {"Akukem"},
["spn"] = {"Sanapaná"},
["spo"] = {"Spokane"},
["spp"] = {"Supyire Senoufo"},
["spq"] = {"Loreto-Ucayali Spanish"},
["spr"] = {"Saparua"},
["sps"] = {"Saposa"},
["spt"] = {"Spiti Bhoti"},
["spu"] = {"Sapuan"},
["spv"] = {"Sambalpuri", "Kosli"},
["spx"] = {"South Picene"},
["spy"] = {"Sabaot"},
["sqa"] = {"Shama-Sambuga"},
["sqh"] = {"Shau"},
["sqj"] = {"Albanian languages"},
["sqk"] = {"Albanian Sign Language"},
["sqm"] = {"Suma"},
["sqn"] = {"Susquehannock"},
["sqo"] = {"Sorkhei"},
["sqq"] = {"Sou"},
["sqr"] = {"Siculo Arabic"},
["sqs"] = {"Sri Lankan Sign Language"},
["sqt"] = {"Soqotri"},
["squ"] = {"Squamish"},
["sqx"] = {"Kufr Qassem Sign Language (KQSL)"},
["sra"] = {"Saruga"},
["srb"] = {"Sora"},
["src"] = {"Logudorese Sardinian"},
["sre"] = {"Sara"},
["srf"] = {"Nafi"},
["srg"] = {"Sulod"},
["srh"] = {"Sarikoli"},
["sri"] = {"Siriano"},
["srk"] = {"Serudung Murut"},
["srl"] = {"Isirawa"},
["srm"] = {"Saramaccan"},
["srn"] = {"Sranan Tongo"},
["sro"] = {"Campidanese Sardinian"},
["srq"] = {"Sirionó"},
["srr"] = {"Serer"},
["srs"] = {"Sarsi"},
["srt"] = {"Sauri"},
["sru"] = {"Suruí"},
["srv"] = {"Southern Sorsoganon"},
["srw"] = {"Serua"},
["srx"] = {"Sirmauri"},
["sry"] = {"Sera"},
["srz"] = {"Shahmirzadi"},
["ssa"] = {"Nilo-Saharan languages"},
["ssb"] = {"Southern Sama"},
["ssc"] = {"Suba-Simbiti"},
["ssd"] = {"Siroi"},
["sse"] = {"Balangingi", "Bangingih Sama"},
["ssf"] = {"Thao"},
["ssg"] = {"Seimat"},
["ssh"] = {"Shihhi Arabic"},
["ssi"] = {"Sansi"},
["ssj"] = {"Sausi"},
["ssk"] = {"Sunam"},
["ssl"] = {"Western Sisaala"},
["ssm"] = {"Semnam"},
["ssn"] = {"Waata"},
["sso"] = {"Sissano"},
["ssp"] = {"Spanish Sign Language"},
["ssq"] = {"So'a"},
["ssr"] = {"Swiss-French Sign Language"},
["sss"] = {"Sô"},
["sst"] = {"Sinasina"},
["ssu"] = {"Susuami"},
["ssv"] = {"Shark Bay"},
["ssx"] = {"Samberigi"},
["ssy"] = {"Saho"},
["ssz"] = {"Sengseng"},
["sta"] = {"Settla"},
["stb"] = {"Northern Subanen"},
["std"] = {"Sentinel"},
["ste"] = {"Liana-Seti"},
["stf"] = {"Seta"},
["stg"] = {"Trieng"},
["sth"] = {"Shelta"},
["sti"] = {"Bulo Stieng"},
["stj"] = {"Matya Samo"},
["stk"] = {"Arammba"},
["stl"] = {"Stellingwerfs"},
["stm"] = {"Setaman"},
["stn"] = {"Owa"},
["sto"] = {"Stoney"},
["stp"] = {"Southeastern Tepehuan"},
["stq"] = {"Saterfriesisch"},
["str"] = {"Straits Salish"},
["sts"] = {"Shumashti"},
["stt"] = {"Budeh Stieng"},
["stu"] = {"Samtao"},
["stv"] = {"Silt'e"},
["stw"] = {"Satawalese"},
["sty"] = {"Siberian Tatar"},
["sua"] = {"Sulka"},
["sub"] = {"Suku"},
["suc"] = {"Western Subanon"},
["sue"] = {"Suena"},
["sug"] = {"Suganga"},
["sui"] = {"Suki"},
["suj"] = {"Shubi"},
["suk"] = {"Sukuma"},
["suo"] = {"Bouni"},
["suq"] = {"Tirmaga-Chai Suri", "Suri"},
["sur"] = {"Mwaghavul"},
["sus"] = {"Susu"},
["sut"] = {"Subtiaba"},
["suv"] = {"Puroik"},
["suw"] = {"Sumbwa"},
["sux"] = {"Sumerian"},
["suy"] = {"Suyá"},
["suz"] = {"Sunwar"},
["sva"] = {"Svan"},
["svb"] = {"Ulau-Suain"},
["svc"] = {"Vincentian Creole English"},
["sve"] = {"Serili"},
["svk"] = {"Slovakian Sign Language"},
["svm"] = {"Slavomolisano"},
["svs"] = {"Savosavo"},
["svx"] = {"Skalvian"},
["swb"] = {"Maore Comorian"},
["swc"] = {"Congo Swahili"},
["swf"] = {"Sere"},
["swg"] = {"Swabian"},
["swh"] = {"Swahili (individual language)", "Kiswahili"},
["swi"] = {"Sui"},
["swj"] = {"Sira"},
["swk"] = {"Malawi Sena"},
["swl"] = {"Swedish Sign Language"},
["swm"] = {"Samosa"},
["swn"] = {"Sawknah"},
["swo"] = {"Shanenawa"},
["swp"] = {"Suau"},
["swq"] = {"Sharwa"},
["swr"] = {"Saweru"},
["sws"] = {"Seluwasan"},
["swt"] = {"Sawila"},
["swu"] = {"Suwawa"},
["swv"] = {"Shekhawati"},
["sww"] = {"Sowa"},
["swx"] = {"Suruahá"},
["swy"] = {"Sarua"},
["sxb"] = {"Suba"},
["sxc"] = {"Sicanian"},
["sxe"] = {"Sighu"},
["sxg"] = {"Shuhi", "Shixing"},
["sxk"] = {"Southern Kalapuya"},
["sxl"] = {"Selian"},
["sxm"] = {"Samre"},
["sxn"] = {"Sangir"},
["sxo"] = {"Sorothaptic"},
["sxr"] = {"Saaroa"},
["sxs"] = {"Sasaru"},
["sxu"] = {"Upper Saxon"},
["sxw"] = {"Saxwe Gbe"},
["sya"] = {"Siang"},
["syb"] = {"Central Subanen"},
["syc"] = {"Classical Syriac"},
["syd"] = {"Samoyedic languages"},
["syi"] = {"Seki"},
["syk"] = {"Sukur"},
["syl"] = {"Sylheti"},
["sym"] = {"Maya Samo"},
["syn"] = {"Senaya"},
["syo"] = {"Suoy"},
["syr"] = {"Syriac"},
["sys"] = {"Sinyar"},
["syw"] = {"Kagate"},
["syx"] = {"Samay"},
["syy"] = {"Al-Sayyid Bedouin Sign Language"},
["sza"] = {"Semelai"},
["szb"] = {"Ngalum"},
["szc"] = {"Semaq Beri"},
["sze"] = {"Seze"},
["szg"] = {"Sengele"},
["szl"] = {"Silesian"},
["szn"] = {"Sula"},
["szp"] = {"Suabo"},
["szs"] = {"Solomon Islands Sign Language"},
["szv"] = {"Isu (Fako Division)"},
["szw"] = {"Sawai"},
["szy"] = {"Sakizaya"},
["taa"] = {"Lower Tanana"},
["tab"] = {"Tabassaran"},
["tac"] = {"Lowland Tarahumara"},
["tad"] = {"Tause"},
["tae"] = {"Tariana"},
["taf"] = {"Tapirapé"},
["tag"] = {"Tagoi"},
["tai"] = {"Tai languages"},
["taj"] = {"Eastern Tamang"},
["tak"] = {"Tala"},
["tal"] = {"Tal"},
["tan"] = {"Tangale"},
["tao"] = {"Yami"},
["tap"] = {"Taabwa"},
["taq"] = {"Tamasheq"},
["tar"] = {"Central Tarahumara"},
["tas"] = {"Tay Boi"},
["tau"] = {"Upper Tanana"},
["tav"] = {"Tatuyo"},
["taw"] = {"Tai"},
["tax"] = {"Tamki"},
["tay"] = {"Atayal"},
["taz"] = {"Tocho"},
["tba"] = {"Aikanã"},
["tbc"] = {"Takia"},
["tbd"] = {"Kaki Ae"},
["tbe"] = {"Tanimbili"},
["tbf"] = {"Mandara"},
["tbg"] = {"North Tairora"},
["tbh"] = {"Dharawal", "Thurawal"},
["tbi"] = {"Gaam"},
["tbj"] = {"Tiang"},
["tbk"] = {"Calamian Tagbanwa"},
["tbl"] = {"Tboli"},
["tbm"] = {"Tagbu"},
["tbn"] = {"Barro Negro Tunebo"},
["tbo"] = {"Tawala"},
["tbp"] = {"Taworta", "Diebroud"},
["tbq"] = {"Tibeto-Burman languages"},
["tbr"] = {"Tumtum"},
["tbs"] = {"Tanguat"},
["tbt"] = {"Tembo (Kitembo)"},
["tbu"] = {"Tubar"},
["tbv"] = {"Tobo"},
["tbw"] = {"Tagbanwa"},
["tbx"] = {"Kapin"},
["tby"] = {"Tabaru"},
["tbz"] = {"Ditammari"},
["tca"] = {"Ticuna"},
["tcb"] = {"Tanacross"},
["tcc"] = {"Datooga"},
["tcd"] = {"Tafi"},
["tce"] = {"Southern Tutchone"},
["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"},
["tcg"] = {"Tamagario"},
["tch"] = {"Turks And Caicos Creole English"},
["tci"] = {"Wára"},
["tck"] = {"Tchitchege"},
["tcl"] = {"Taman (Myanmar)"},
["tcm"] = {"Tanahmerah"},
["tcn"] = {"Tichurong"},
["tco"] = {"Taungyo"},
["tcp"] = {"Tawr Chin"},
["tcq"] = {"Kaiy"},
["tcs"] = {"Torres Strait Creole", "Yumplatok"},
["tct"] = {"T'en"},
["tcu"] = {"Southeastern Tarahumara"},
["tcw"] = {"Tecpatlán Totonac"},
["tcx"] = {"Toda"},
["tcy"] = {"Tulu"},
["tcz"] = {"Thado Chin"},
["tda"] = {"Tagdal"},
["tdb"] = {"Panchpargania"},
["tdc"] = {"Emberá-Tadó"},
["tdd"] = {"Tai Nüa"},
["tde"] = {"Tiranige Diga Dogon"},
["tdf"] = {"Talieng"},
["tdg"] = {"Western Tamang"},
["tdh"] = {"Thulung"},
["tdi"] = {"Tomadino"},
["tdj"] = {"Tajio"},
["tdk"] = {"Tambas"},
["tdl"] = {"Sur"},
["tdm"] = {"Taruma"},
["tdn"] = {"Tondano"},
["tdo"] = {"Teme"},
["tdq"] = {"Tita"},
["tdr"] = {"Todrah"},
["tds"] = {"Doutai"},
["tdt"] = {"Tetun Dili"},
["tdv"] = {"Toro"},
["tdx"] = {"Tandroy-Mahafaly Malagasy"},
["tdy"] = {"Tadyawan"},
["tea"] = {"Temiar"},
["teb"] = {"Tetete"},
["tec"] = {"Terik"},
["ted"] = {"Tepo Krumen"},
["tee"] = {"Huehuetla Tepehua"},
["tef"] = {"Teressa"},
["teg"] = {"Teke-Tege"},
["teh"] = {"Tehuelche"},
["tei"] = {"Torricelli"},
["tek"] = {"Ibali Teke"},
["tem"] = {"Timne"},
["ten"] = {"Tama (Colombia)"},
["teo"] = {"Teso"},
["tep"] = {"Tepecano"},
["teq"] = {"Temein"},
["ter"] = {"Tereno"},
["tes"] = {"Tengger"},
["tet"] = {"Tetum"},
["teu"] = {"Soo"},
["tev"] = {"Teor"},
["tew"] = {"Tewa (USA)"},
["tex"] = {"Tennet"},
["tey"] = {"Tulishi"},
["tez"] = {"Tetserret"},
["tfi"] = {"Tofin Gbe"},
["tfn"] = {"Tanaina"},
["tfo"] = {"Tefaro"},
["tfr"] = {"Teribe"},
["tft"] = {"Ternate"},
["tga"] = {"Sagalla"},
["tgb"] = {"Tobilung"},
["tgc"] = {"Tigak"},
["tgd"] = {"Ciwogai"},
["tge"] = {"Eastern Gorkha Tamang"},
["tgf"] = {"Chalikha"},
["tgh"] = {"Tobagonian Creole English"},
["tgi"] = {"Lawunuia"},
["tgj"] = {"Tagin"},
["tgn"] = {"Tandaganon"},
["tgo"] = {"Sudest"},
["tgp"] = {"Tangoa"},
["tgq"] = {"Tring"},
["tgr"] = {"Tareng"},
["tgs"] = {"Nume"},
["tgt"] = {"Central Tagbanwa"},
["tgu"] = {"Tanggu"},
["tgv"] = {"Tingui-Boto"},
["tgw"] = {"Tagwana Senoufo"},
["tgx"] = {"Tagish"},
["tgy"] = {"Togoyo"},
["tgz"] = {"Tagalaka"},
["thd"] = {"Kuuk Thaayorre", "Thayore"},
["the"] = {"Chitwania Tharu"},
["thf"] = {"Thangmi"},
["thh"] = {"Northern Tarahumara"},
["thi"] = {"Tai Long"},
["thk"] = {"Tharaka", "Kitharaka"},
["thl"] = {"Dangaura Tharu"},
["thm"] = {"Aheu"},
["thn"] = {"Thachanadan"},
["thp"] = {"Thompson"},
["thq"] = {"Kochila Tharu"},
["thr"] = {"Rana Tharu"},
["ths"] = {"Thakali"},
["tht"] = {"Tahltan"},
["thu"] = {"Thuri"},
["thv"] = {"Tahaggart Tamahaq"},
["thy"] = {"Tha"},
["thz"] = {"Tayart Tamajeq"},
["tia"] = {"Tidikelt Tamazight"},
["tic"] = {"Tira"},
["tif"] = {"Tifal"},
["tig"] = {"Tigre"},
["tih"] = {"Timugon Murut"},
["tii"] = {"Tiene"},
["tij"] = {"Tilung"},
["tik"] = {"Tikar"},
["til"] = {"Tillamook"},
["tim"] = {"Timbe"},
["tin"] = {"Tindi"},
["tio"] = {"Teop"},
["tip"] = {"Trimuris"},
["tiq"] = {"Tiéfo"},
["tis"] = {"Masadiit Itneg"},
["tit"] = {"Tinigua"},
["tiu"] = {"Adasen"},
["tiv"] = {"Tiv"},
["tiw"] = {"Tiwi"},
["tix"] = {"Southern Tiwa"},
["tiy"] = {"Tiruray"},
["tiz"] = {"Tai Hongjin"},
["tja"] = {"Tajuasohn"},
["tjg"] = {"Tunjung"},
["tji"] = {"Northern Tujia"},
["tjj"] = {"Tjungundji"},
["tjl"] = {"Tai Laing"},
["tjm"] = {"Timucua"},
["tjn"] = {"Tonjon"},
["tjo"] = {"Temacine Tamazight"},
["tjp"] = {"Tjupany"},
["tjs"] = {"Southern Tujia"},
["tju"] = {"Tjurruru"},
["tjw"] = {"Djabwurrung"},
["tka"] = {"Truká"},
["tkb"] = {"Buksa"},
["tkd"] = {"Tukudede"},
["tke"] = {"Takwane"},
["tkf"] = {"Tukumanféd"},
["tkg"] = {"Tesaka Malagasy"},
["tkl"] = {"Tokelau"},
["tkm"] = {"Takelma"},
["tkn"] = {"Toku-No-Shima"},
["tkp"] = {"Tikopia"},
["tkq"] = {"Tee"},
["tkr"] = {"Tsakhur"},
["tks"] = {"Takestani"},
["tkt"] = {"Kathoriya Tharu"},
["tku"] = {"Upper Necaxa Totonac"},
["tkv"] = {"Mur Pano"},
["tkw"] = {"Teanu"},
["tkx"] = {"Tangko"},
["tkz"] = {"Takua"},
["tla"] = {"Southwestern Tepehuan"},
["tlb"] = {"Tobelo"},
["tlc"] = {"Yecuatla Totonac"},
["tld"] = {"Talaud"},
["tlf"] = {"Telefol"},
["tlg"] = {"Tofanma"},
["tlh"] = {"Klingon", "tlhIngan Hol"},
["tli"] = {"Tlingit"},
["tlj"] = {"Talinga-Bwisi"},
["tlk"] = {"Taloki"},
["tll"] = {"Tetela"},
["tlm"] = {"Tolomako"},
["tln"] = {"Talondo'"},
["tlo"] = {"Talodi"},
["tlp"] = {"Filomena Mata-Coahuitlán Totonac"},
["tlq"] = {"Tai Loi"},
["tlr"] = {"Talise"},
["tls"] = {"Tambotalo"},
["tlt"] = {"Sou Nama", "Teluti"},
["tlu"] = {"Tulehu"},
["tlv"] = {"Taliabu"},
["tlx"] = {"Khehek"},
["tly"] = {"Talysh"},
["tma"] = {"Tama (Chad)"},
["tmb"] = {"Katbol", "Avava"},
["tmc"] = {"Tumak"},
["tmd"] = {"Haruai"},
["tme"] = {"Tremembé"},
["tmf"] = {"Toba-Maskoy"},
["tmg"] = {"Ternateño"},
["tmh"] = {"Tamashek"},
["tmi"] = {"Tutuba"},
["tmj"] = {"Samarokena"},
["tml"] = {"Tamnim Citak"},
["tmm"] = {"Tai Thanh"},
["tmn"] = {"Taman (Indonesia)"},
["tmo"] = {"Temoq"},
["tmq"] = {"Tumleo"},
["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"},
["tms"] = {"Tima"},
["tmt"] = {"Tasmate"},
["tmu"] = {"Iau"},
["tmv"] = {"Tembo (Motembo)"},
["tmw"] = {"Temuan"},
["tmy"] = {"Tami"},
["tmz"] = {"Tamanaku"},
["tna"] = {"Tacana"},
["tnb"] = {"Western Tunebo"},
["tnc"] = {"Tanimuca-Retuarã"},
["tnd"] = {"Angosturas Tunebo"},
["tng"] = {"Tobanga"},
["tnh"] = {"Maiani"},
["tni"] = {"Tandia"},
["tnk"] = {"Kwamera"},
["tnl"] = {"Lenakel"},
["tnm"] = {"Tabla"},
["tnn"] = {"North Tanna"},
["tno"] = {"Toromono"},
["tnp"] = {"Whitesands"},
["tnq"] = {"Taino"},
["tnr"] = {"Ménik"},
["tns"] = {"Tenis"},
["tnt"] = {"Tontemboan"},
["tnu"] = {"Tay Khang"},
["tnv"] = {"Tangchangya"},
["tnw"] = {"Tonsawang"},
["tnx"] = {"Tanema"},
["tny"] = {"Tongwe"},
["tnz"] = {"Ten'edn"},
["tob"] = {"Toba"},
["toc"] = {"Coyutla Totonac"},
["tod"] = {"Toma"},
["tof"] = {"Gizrra"},
["tog"] = {"Tonga (Nyasa)"},
["toh"] = {"Gitonga"},
["toi"] = {"Tonga (Zambia)"},
["toj"] = {"Tojolabal"},
["tok"] = {"Toki Pona"},
["tol"] = {"Tolowa"},
["tom"] = {"Tombulu"},
["too"] = {"Xicotepec De Juárez Totonac"},
["top"] = {"Papantla Totonac"},
["toq"] = {"Toposa"},
["tor"] = {"Togbo-Vara Banda"},
["tos"] = {"Highland Totonac"},
["tou"] = {"Tho"},
["tov"] = {"Upper Taromi"},
["tow"] = {"Jemez"},
["tox"] = {"Tobian"},
["toy"] = {"Topoiyo"},
["toz"] = {"To"},
["tpa"] = {"Taupota"},
["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"},
["tpe"] = {"Tippera"},
["tpf"] = {"Tarpia"},
["tpg"] = {"Kula"},
["tpi"] = {"Tok Pisin"},
["tpj"] = {"Tapieté"},
["tpk"] = {"Tupinikin"},
["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"},
["tpm"] = {"Tampulma"},
["tpn"] = {"Tupinambá"},
["tpo"] = {"Tai Pao"},
["tpp"] = {"Pisaflores Tepehua"},
["tpq"] = {"Tukpa"},
["tpr"] = {"Tuparí"},
["tpt"] = {"Tlachichilco Tepehua"},
["tpu"] = {"Tampuan"},
["tpv"] = {"Tanapag"},
["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"},
["tpy"] = {"Trumai"},
["tpz"] = {"Tinputz"},
["tqb"] = {"Tembé"},
["tql"] = {"Lehali"},
["tqm"] = {"Turumsa"},
["tqn"] = {"Tenino"},
["tqo"] = {"Toaripi"},
["tqp"] = {"Tomoip"},
["tqq"] = {"Tunni"},
["tqr"] = {"Torona"},
["tqt"] = {"Western Totonac"},
["tqu"] = {"Touo"},
["tqw"] = {"Tonkawa"},
["tra"] = {"Tirahi"},
["trb"] = {"Terebu"},
["trc"] = {"Copala Triqui"},
["trd"] = {"Turi"},
["tre"] = {"East Tarangan"},
["trf"] = {"Trinidadian Creole English"},
["trg"] = {"Lishán Didán"},
["trh"] = {"Turaka"},
["tri"] = {"Trió"},
["trj"] = {"Toram"},
["trk"] = {"Turkic languages"},
["trl"] = {"Traveller Scottish"},
["trm"] = {"Tregami"},
["trn"] = {"Trinitario"},
["tro"] = {"Tarao Naga"},
["trp"] = {"Kok Borok"},
["trq"] = {"San Martín Itunyoso Triqui"},
["trr"] = {"Taushiro"},
["trs"] = {"Chicahuaxtla Triqui"},
["trt"] = {"Tunggare"},
["tru"] = {"Turoyo", "Surayt"},
["trv"] = {"Sediq", "Seediq", "Taroko"},
["trw"] = {"Torwali"},
["trx"] = {"Tringgus-Sembaan Bidayuh"},
["try"] = {"Turung"},
["trz"] = {"Torá"},
["tsa"] = {"Tsaangi"},
["tsb"] = {"Tsamai"},
["tsc"] = {"Tswa"},
["tsd"] = {"Tsakonian"},
["tse"] = {"Tunisian Sign Language"},
["tsg"] = {"Tausug"},
["tsh"] = {"Tsuvan"},
["tsi"] = {"Tsimshian"},
["tsj"] = {"Tshangla"},
["tsk"] = {"Tseku"},
["tsl"] = {"Ts'ün-Lao"},
["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"},
["tsp"] = {"Northern Toussian"},
["tsq"] = {"Thai Sign Language"},
["tsr"] = {"Akei"},
["tss"] = {"Taiwan Sign Language"},
["tst"] = {"Tondi Songway Kiini"},
["tsu"] = {"Tsou"},
["tsv"] = {"Tsogo"},
["tsw"] = {"Tsishingini"},
["tsx"] = {"Mubami"},
["tsy"] = {"Tebul Sign Language"},
["tsz"] = {"Purepecha"},
["tta"] = {"Tutelo"},
["ttb"] = {"Gaa"},
["ttc"] = {"Tektiteko"},
["ttd"] = {"Tauade"},
["tte"] = {"Bwanabwana"},
["ttf"] = {"Tuotomb"},
["ttg"] = {"Tutong"},
["tth"] = {"Upper Ta'oih"},
["tti"] = {"Tobati"},
["ttj"] = {"Tooro"},
["ttk"] = {"Totoro"},
["ttl"] = {"Totela"},
["ttm"] = {"Northern Tutchone"},
["ttn"] = {"Towei"},
["tto"] = {"Lower Ta'oih"},
["ttp"] = {"Tombelala"},
["ttq"] = {"Tawallammat Tamajaq"},
["ttr"] = {"Tera"},
["tts"] = {"Northeastern Thai"},
["ttt"] = {"Muslim Tat"},
["ttu"] = {"Torau"},
["ttv"] = {"Titan"},
["ttw"] = {"Long Wat"},
["tty"] = {"Sikaritai"},
["ttz"] = {"Tsum"},
["tua"] = {"Wiarumus"},
["tub"] = {"Tübatulabal"},
["tuc"] = {"Mutu"},
["tud"] = {"Tuxá"},
["tue"] = {"Tuyuca"},
["tuf"] = {"Central Tunebo"},
["tug"] = {"Tunia"},
["tuh"] = {"Taulil"},
["tui"] = {"Tupuri"},
["tuj"] = {"Tugutil"},
["tul"] = {"Tula"},
["tum"] = {"Tumbuka"},
["tun"] = {"Tunica"},
["tuo"] = {"Tucano"},
["tup"] = {"Tupi languages"},
["tuq"] = {"Tedaga"},
["tus"] = {"Tuscarora"},
["tut"] = {"Altaic languages"},
["tuu"] = {"Tututni"},
["tuv"] = {"Turkana"},
["tuw"] = {"Tungus languages"},
["tux"] = {"Tuxináwa"},
["tuy"] = {"Tugen"},
["tuz"] = {"Turka"},
["tva"] = {"Vaghua"},
["tvd"] = {"Tsuvadi"},
["tve"] = {"Te'un"},
["tvi"] = {"Tulai"},
["tvk"] = {"Southeast Ambrym"},
["tvl"] = {"Tuvalu"},
["tvm"] = {"Tela-Masbuar"},
["tvn"] = {"Tavoyan"},
["tvo"] = {"Tidore"},
["tvs"] = {"Taveta"},
["tvt"] = {"Tutsa Naga"},
["tvu"] = {"Tunen"},
["tvw"] = {"Sedoa"},
["tvx"] = {"Taivoan"},
["tvy"] = {"Timor Pidgin"},
["twa"] = {"Twana"},
["twb"] = {"Western Tawbuid"},
["twc"] = {"Teshenawa"},
["twd"] = {"Twents"},
["twe"] = {"Tewa (Indonesia)"},
["twf"] = {"Northern Tiwa"},
["twg"] = {"Tereweng"},
["twh"] = {"Tai Dón"},
["twl"] = {"Tawara"},
["twm"] = {"Tawang Monpa"},
["twn"] = {"Twendi"},
["two"] = {"Tswapong"},
["twp"] = {"Ere"},
["twq"] = {"Tasawaq"},
["twr"] = {"Southwestern Tarahumara"},
["twt"] = {"Turiwára"},
["twu"] = {"Termanu"},
["tww"] = {"Tuwari"},
["twx"] = {"Tewe"},
["twy"] = {"Tawoyan"},
["txa"] = {"Tombonuo"},
["txb"] = {"Tokharian B"},
["txc"] = {"Tsetsaut"},
["txe"] = {"Totoli"},
["txg"] = {"Tangut"},
["txh"] = {"Thracian"},
["txi"] = {"Ikpeng"},
["txj"] = {"Tarjumo"},
["txm"] = {"Tomini"},
["txn"] = {"West Tarangan"},
["txo"] = {"Toto"},
["txq"] = {"Tii"},
["txr"] = {"Tartessian"},
["txs"] = {"Tonsea"},
["txt"] = {"Citak"},
["txu"] = {"Kayapó"},
["txx"] = {"Tatana"},
["txy"] = {"Tanosy Malagasy"},
["tya"] = {"Tauya"},
["tye"] = {"Kyanga"},
["tyh"] = {"O'du"},
["tyi"] = {"Teke-Tsaayi"},
["tyj"] = {"Tai Do", "Tai Yo"},
["tyl"] = {"Thu Lao"},
["tyn"] = {"Kombai"},
["typ"] = {"Thaypan"},
["tyr"] = {"Tai Daeng"},
["tys"] = {"Tày Sa Pa"},
["tyt"] = {"Tày Tac"},
["tyu"] = {"Kua"},
["tyv"] = {"Tuvinian"},
["tyx"] = {"Teke-Tyee"},
["tyy"] = {"Tiyaa"},
["tyz"] = {"Tày"},
["tza"] = {"Tanzanian Sign Language"},
["tzh"] = {"Tzeltal"},
["tzj"] = {"Tz'utujil"},
["tzl"] = {"Talossan"},
["tzm"] = {"Central Atlas Tamazight"},
["tzn"] = {"Tugun"},
["tzo"] = {"Tzotzil"},
["tzx"] = {"Tabriak"},
["uam"] = {"Uamué"},
["uan"] = {"Kuan"},
["uar"] = {"Tairuma"},
["uba"] = {"Ubang"},
["ubi"] = {"Ubi"},
["ubl"] = {"Buhi'non Bikol"},
["ubr"] = {"Ubir"},
["ubu"] = {"Umbu-Ungu"},
["uby"] = {"Ubykh"},
["uda"] = {"Uda"},
["ude"] = {"Udihe"},
["udg"] = {"Muduga"},
["udi"] = {"Udi"},
["udj"] = {"Ujir"},
["udl"] = {"Wuzlam"},
["udm"] = {"Udmurt"},
["udu"] = {"Uduk"},
["ues"] = {"Kioko"},
["ufi"] = {"Ufim"},
["uga"] = {"Ugaritic"},
["ugb"] = {"Kuku-Ugbanh"},
["uge"] = {"Ughele"},
["ugh"] = {"Kubachi"},
["ugn"] = {"Ugandan Sign Language"},
["ugo"] = {"Ugong"},
["ugy"] = {"Uruguayan Sign Language"},
["uha"] = {"Uhami"},
["uhn"] = {"Damal"},
["uis"] = {"Uisai"},
["uiv"] = {"Iyive"},
["uji"] = {"Tanjijili"},
["uka"] = {"Kaburi"},
["ukg"] = {"Ukuriguma"},
["ukh"] = {"Ukhwejo"},
["uki"] = {"Kui (India)"},
["ukk"] = {"Muak Sa-aak"},
["ukl"] = {"Ukrainian Sign Language"},
["ukp"] = {"Ukpe-Bayobiri"},
["ukq"] = {"Ukwa"},
["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"},
["uku"] = {"Ukue"},
["ukv"] = {"Kuku"},
["ukw"] = {"Ukwuani-Aboh-Ndoni"},
["uky"] = {"Kuuk-Yak"},
["ula"] = {"Fungwa"},
["ulb"] = {"Ulukwumi"},
["ulc"] = {"Ulch"},
["ule"] = {"Lule"},
["ulf"] = {"Usku", "Afra"},
["uli"] = {"Ulithian"},
["ulk"] = {"Meriam Mir"},
["ull"] = {"Ullatan"},
["ulm"] = {"Ulumanda'"},
["uln"] = {"Unserdeutsch"},
["ulu"] = {"Uma' Lung"},
["ulw"] = {"Ulwa"},
["uly"] = {"Buli"},
["uma"] = {"Umatilla"},
["umb"] = {"Umbundu"},
["umc"] = {"Marrucinian"},
["umd"] = {"Umbindhamu"},
["umg"] = {"Morrobalama", "Umbuygamu"},
["umi"] = {"Ukit"},
["umm"] = {"Umon"},
["umn"] = {"Makyan Naga"},
["umo"] = {"Umotína"},
["ump"] = {"Umpila"},
["umr"] = {"Umbugarla"},
["ums"] = {"Pendau"},
["umu"] = {"Munsee"},
["una"] = {"North Watut"},
["und"] = {"Undetermined"},
["une"] = {"Uneme"},
["ung"] = {"Ngarinyin"},
["uni"] = {"Uni"},
["unk"] = {"Enawené-Nawé"},
["unm"] = {"Unami"},
["unn"] = {"Kurnai"},
["unr"] = {"Mundari"},
["unu"] = {"Unubahe"},
["unx"] = {"Munda"},
["unz"] = {"Unde Kaili"},
["uon"] = {"Kulon"},
["upi"] = {"Umeda"},
["upv"] = {"Uripiv-Wala-Rano-Atchin"},
["ura"] = {"Urarina"},
["urb"] = {"Urubú-Kaapor", "Kaapor"},
["urc"] = {"Urningangg"},
["ure"] = {"Uru"},
["urf"] = {"Uradhi"},
["urg"] = {"Urigina"},
["urh"] = {"Urhobo"},
["uri"] = {"Urim"},
["urj"] = {"Uralic languages"},
["urk"] = {"Urak Lawoi'"},
["url"] = {"Urali"},
["urm"] = {"Urapmin"},
["urn"] = {"Uruangnirin"},
["uro"] = {"Ura (Papua New Guinea)"},
["urp"] = {"Uru-Pa-In"},
["urr"] = {"Lehalurup", "Löyöp"},
["urt"] = {"Urat"},
["uru"] = {"Urumi"},
["urv"] = {"Uruava"},
["urw"] = {"Sop"},
["urx"] = {"Urimo"},
["ury"] = {"Orya"},
["urz"] = {"Uru-Eu-Wau-Wau"},
["usa"] = {"Usarufa"},
["ush"] = {"Ushojo"},
["usi"] = {"Usui"},
["usk"] = {"Usaghade"},
["usp"] = {"Uspanteco"},
["uss"] = {"us-Saare"},
["usu"] = {"Uya"},
["uta"] = {"Otank"},
["ute"] = {"Ute-Southern Paiute"},
["uth"] = {"ut-Hun"},
["utp"] = {"Amba (Solomon Islands)"},
["utr"] = {"Etulo"},
["utu"] = {"Utu"},
["uum"] = {"Urum"},
["uur"] = {"Ura (Vanuatu)"},
["uuu"] = {"U"},
["uve"] = {"West Uvean", "Fagauvea"},
["uvh"] = {"Uri"},
["uvl"] = {"Lote"},
["uwa"] = {"Kuku-Uwanh"},
["uya"] = {"Doko-Uyanga"},
["uzn"] = {"Northern Uzbek"},
["uzs"] = {"Southern Uzbek"},
["vaa"] = {"Vaagri Booli"},
["vae"] = {"Vale"},
["vaf"] = {"Vafsi"},
["vag"] = {"Vagla"},
["vah"] = {"Varhadi-Nagpuri"},
["vai"] = {"Vai"},
["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"},
["val"] = {"Vehes"},
["vam"] = {"Vanimo"},
["van"] = {"Valman"},
["vao"] = {"Vao"},
["vap"] = {"Vaiphei"},
["var"] = {"Huarijio"},
["vas"] = {"Vasavi"},
["vau"] = {"Vanuma"},
["vav"] = {"Varli"},
["vay"] = {"Wayu"},
["vbb"] = {"Southeast Babar"},
["vbk"] = {"Southwestern Bontok"},
["vec"] = {"Venetian"},
["ved"] = {"Veddah"},
["vel"] = {"Veluws"},
["vem"] = {"Vemgo-Mabas"},
["veo"] = {"Ventureño"},
["vep"] = {"Veps"},
["ver"] = {"Mom Jango"},
["vgr"] = {"Vaghri"},
["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"},
["vic"] = {"Virgin Islands Creole English"},
["vid"] = {"Vidunda"},
["vif"] = {"Vili"},
["vig"] = {"Viemo"},
["vil"] = {"Vilela"},
["vin"] = {"Vinza"},
["vis"] = {"Vishavan"},
["vit"] = {"Viti"},
["viv"] = {"Iduna"},
["vjk"] = {"Bajjika"},
["vka"] = {"Kariyarra"},
["vkj"] = {"Kujarge"},
["vkk"] = {"Kaur"},
["vkl"] = {"Kulisusu"},
["vkm"] = {"Kamakan"},
["vkn"] = {"Koro Nulu"},
["vko"] = {"Kodeoha"},
["vkp"] = {"Korlai Creole Portuguese"},
["vkt"] = {"Tenggarong Kutai Malay"},
["vku"] = {"Kurrama"},
["vkz"] = {"Koro Zuba"},
["vlp"] = {"Valpei"},
["vls"] = {"Vlaams"},
["vma"] = {"Martuyhunira"},
["vmb"] = {"Barbaram"},
["vmc"] = {"Juxtlahuaca Mixtec"},
["vmd"] = {"Mudu Koraga"},
["vme"] = {"East Masela"},
["vmf"] = {"Mainfränkisch"},
["vmg"] = {"Lungalunga"},
["vmh"] = {"Maraghei"},
["vmi"] = {"Miwa"},
["vmj"] = {"Ixtayutla Mixtec"},
["vmk"] = {"Makhuwa-Shirima"},
["vml"] = {"Malgana"},
["vmm"] = {"Mitlatongo Mixtec"},
["vmp"] = {"Soyaltepec Mazatec"},
["vmq"] = {"Soyaltepec Mixtec"},
["vmr"] = {"Marenje"},
["vms"] = {"Moksela"},
["vmu"] = {"Muluridyi"},
["vmv"] = {"Valley Maidu"},
["vmw"] = {"Makhuwa"},
["vmx"] = {"Tamazola Mixtec"},
["vmy"] = {"Ayautla Mazatec"},
["vmz"] = {"Mazatlán Mazatec"},
["vnk"] = {"Vano", "Lovono"},
["vnm"] = {"Vinmavis", "Neve'ei"},
["vnp"] = {"Vunapu"},
["vor"] = {"Voro"},
["vot"] = {"Votic"},
["vra"] = {"Vera'a"},
["vro"] = {"Võro"},
["vrs"] = {"Varisi"},
["vrt"] = {"Burmbar", "Banam Bay"},
["vsi"] = {"Moldova Sign Language"},
["vsl"] = {"Venezuelan Sign Language"},
["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"},
["vto"] = {"Vitou"},
["vum"] = {"Vumbu"},
["vun"] = {"Vunjo"},
["vut"] = {"Vute"},
["vwa"] = {"Awa (China)"},
["waa"] = {"Walla Walla"},
["wab"] = {"Wab"},
["wac"] = {"Wasco-Wishram"},
["wad"] = {"Wamesa", "Wondama"},
["wae"] = {"Walser"},
["waf"] = {"Wakoná"},
["wag"] = {"Wa'ema"},
["wah"] = {"Watubela"},
["wai"] = {"Wares"},
["waj"] = {"Waffa"},
["wak"] = {"Wakashan languages"},
["wal"] = {"Wolaytta", "Wolaitta"},
["wam"] = {"Wampanoag"},
["wan"] = {"Wan"},
["wao"] = {"Wappo"},
["wap"] = {"Wapishana"},
["waq"] = {"Wagiman"},
["war"] = {"Waray (Philippines)"},
["was"] = {"Washo"},
["wat"] = {"Kaninuwa"},
["wau"] = {"Waurá"},
["wav"] = {"Waka"},
["waw"] = {"Waiwai"},
["wax"] = {"Watam", "Marangis"},
["way"] = {"Wayana"},
["waz"] = {"Wampur"},
["wba"] = {"Warao"},
["wbb"] = {"Wabo"},
["wbe"] = {"Waritai"},
["wbf"] = {"Wara"},
["wbh"] = {"Wanda"},
["wbi"] = {"Vwanji"},
["wbj"] = {"Alagwa"},
["wbk"] = {"Waigali"},
["wbl"] = {"Wakhi"},
["wbm"] = {"Wa"},
["wbp"] = {"Warlpiri"},
["wbq"] = {"Waddar"},
["wbr"] = {"Wagdi"},
["wbs"] = {"West Bengal Sign Language"},
["wbt"] = {"Warnman"},
["wbv"] = {"Wajarri"},
["wbw"] = {"Woi"},
["wca"] = {"Yanomámi"},
["wci"] = {"Waci Gbe"},
["wdd"] = {"Wandji"},
["wdg"] = {"Wadaginam"},
["wdj"] = {"Wadjiginy"},
["wdk"] = {"Wadikali"},
["wdt"] = {"Wendat"},
["wdu"] = {"Wadjigu"},
["wdy"] = {"Wadjabangayi"},
["wea"] = {"Wewaw"},
["wec"] = {"Wè Western"},
["wed"] = {"Wedau"},
["weg"] = {"Wergaia"},
["weh"] = {"Weh"},
["wei"] = {"Kiunum"},
["wem"] = {"Weme Gbe"},
["wen"] = {"Sorbian languages"},
["weo"] = {"Wemale"},
["wep"] = {"Westphalien"},
["wer"] = {"Weri"},
["wes"] = {"Cameroon Pidgin"},
["wet"] = {"Perai"},
["weu"] = {"Rawngtu Chin"},
["wew"] = {"Wejewa"},
["wfg"] = {"Yafi", "Zorop"},
["wga"] = {"Wagaya"},
["wgb"] = {"Wagawaga"},
["wgg"] = {"Wangkangurru", "Wangganguru"},
["wgi"] = {"Wahgi"},
["wgo"] = {"Waigeo"},
["wgu"] = {"Wirangu"},
["wgy"] = {"Warrgamay"},
["wha"] = {"Sou Upaa", "Manusela"},
["whg"] = {"North Wahgi"},
["whk"] = {"Wahau Kenyah"},
["whu"] = {"Wahau Kayan"},
["wib"] = {"Southern Toussian"},
["wic"] = {"Wichita"},
["wie"] = {"Wik-Epa"},
["wif"] = {"Wik-Keyangan"},
["wig"] = {"Wik Ngathan"},
["wih"] = {"Wik-Me'anha"},
["wii"] = {"Minidien"},
["wij"] = {"Wik-Iiyanh"},
["wik"] = {"Wikalkan"},
["wil"] = {"Wilawila"},
["wim"] = {"Wik-Mungkan"},
["win"] = {"Ho-Chunk"},
["wir"] = {"Wiraféd"},
["wiu"] = {"Wiru"},
["wiv"] = {"Vitu"},
["wiy"] = {"Wiyot"},
["wja"] = {"Waja"},
["wji"] = {"Warji"},
["wka"] = {"Kw'adza"},
["wkb"] = {"Kumbaran"},
["wkd"] = {"Wakde", "Mo"},
["wkl"] = {"Kalanadi"},
["wkr"] = {"Keerray-Woorroong"},
["wku"] = {"Kunduvadi"},
["wkw"] = {"Wakawaka"},
["wky"] = {"Wangkayutyuru"},
["wla"] = {"Walio"},
["wlc"] = {"Mwali Comorian"},
["wle"] = {"Wolane"},
["wlg"] = {"Kunbarlang"},
["wlh"] = {"Welaun"},
["wli"] = {"Waioli"},
["wlk"] = {"Wailaki"},
["wll"] = {"Wali (Sudan)"},
["wlm"] = {"Middle Welsh"},
["wlo"] = {"Wolio"},
["wlr"] = {"Wailapa"},
["wls"] = {"Wallisian"},
["wlu"] = {"Wuliwuli"},
["wlv"] = {"Wichí Lhamtés Vejoz"},
["wlw"] = {"Walak"},
["wlx"] = {"Wali (Ghana)"},
["wly"] = {"Waling"},
["wma"] = {"Mawa (Nigeria)"},
["wmb"] = {"Wambaya"},
["wmc"] = {"Wamas"},
["wmd"] = {"Mamaindé"},
["wme"] = {"Wambule"},
["wmg"] = {"Western Minyag"},
["wmh"] = {"Waima'a"},
["wmi"] = {"Wamin"},
["wmm"] = {"Maiwa (Indonesia)"},
["wmn"] = {"Waamwang"},
["wmo"] = {"Wom (Papua New Guinea)"},
["wms"] = {"Wambon"},
["wmt"] = {"Walmajarri"},
["wmw"] = {"Mwani"},
["wmx"] = {"Womo"},
["wnb"] = {"Mokati"},
["wnc"] = {"Wantoat"},
["wnd"] = {"Wandarang"},
["wne"] = {"Waneci"},
["wng"] = {"Wanggom"},
["wni"] = {"Ndzwani Comorian"},
["wnk"] = {"Wanukaka"},
["wnm"] = {"Wanggamala"},
["wnn"] = {"Wunumara"},
["wno"] = {"Wano"},
["wnp"] = {"Wanap"},
["wnu"] = {"Usan"},
["wnw"] = {"Wintu"},
["wny"] = {"Wanyi", "Waanyi"},
["woa"] = {"Kuwema", "Tyaraity"},
["wob"] = {"Wè Northern"},
["woc"] = {"Wogeo"},
["wod"] = {"Wolani"},
["woe"] = {"Woleaian"},
["wof"] = {"Gambian Wolof"},
["wog"] = {"Wogamusin"},
["woi"] = {"Kamang"},
["wok"] = {"Longto"},
["wom"] = {"Wom (Nigeria)"},
["won"] = {"Wongo"},
["woo"] = {"Manombai"},
["wor"] = {"Woria"},
["wos"] = {"Hanga Hundi"},
["wow"] = {"Wawonii"},
["woy"] = {"Weyto"},
["wpc"] = {"Maco"},
["wrb"] = {"Waluwarra", "Warluwara"},
["wrg"] = {"Warungu", "Gudjal"},
["wrh"] = {"Wiradjuri"},
["wri"] = {"Wariyangga"},
["wrk"] = {"Garrwa"},
["wrl"] = {"Warlmanpa"},
["wrm"] = {"Warumungu"},
["wrn"] = {"Warnang"},
["wro"] = {"Worrorra"},
["wrp"] = {"Waropen"},
["wrr"] = {"Wardaman"},
["wrs"] = {"Waris"},
["wru"] = {"Waru"},
["wrv"] = {"Waruna"},
["wrw"] = {"Gugu Warra"},
["wrx"] = {"Wae Rana"},
["wry"] = {"Merwari"},
["wrz"] = {"Waray (Australia)"},
["wsa"] = {"Warembori"},
["wsg"] = {"Adilabad Gondi"},
["wsi"] = {"Wusi"},
["wsk"] = {"Waskia"},
["wsr"] = {"Owenia"},
["wss"] = {"Wasa"},
["wsu"] = {"Wasu"},
["wsv"] = {"Wotapuri-Katarqalai"},
["wtb"] = {"Matambwe"},
["wtf"] = {"Watiwa"},
["wth"] = {"Wathawurrung"},
["wti"] = {"Berta"},
["wtk"] = {"Watakataui"},
["wtm"] = {"Mewati"},
["wtw"] = {"Wotu"},
["wua"] = {"Wikngenchera"},
["wub"] = {"Wunambal"},
["wud"] = {"Wudu"},
["wuh"] = {"Wutunhua"},
["wul"] = {"Silimo"},
["wum"] = {"Wumbvu"},
["wun"] = {"Bungu"},
["wur"] = {"Wurrugu"},
["wut"] = {"Wutung"},
["wuu"] = {"Wu Chinese"},
["wuv"] = {"Wuvulu-Aua"},
["wux"] = {"Wulna"},
["wuy"] = {"Wauyai"},
["wwa"] = {"Waama"},
["wwb"] = {"Wakabunga"},
["wwo"] = {"Wetamut", "Dorig"},
["wwr"] = {"Warrwa"},
["www"] = {"Wawa"},
["wxa"] = {"Waxianghua"},
["wxw"] = {"Wardandi"},
["wyb"] = {"Wangaaybuwan-Ngiyambaa"},
["wyi"] = {"Woiwurrung"},
["wym"] = {"Wymysorys"},
["wyn"] = {"Wyandot"},
["wyr"] = {"Wayoró"},
["wyy"] = {"Western Fijian"},
["xaa"] = {"Andalusian Arabic"},
["xab"] = {"Sambe"},
["xac"] = {"Kachari"},
["xad"] = {"Adai"},
["xae"] = {"Aequian"},
["xag"] = {"Aghwan"},
["xai"] = {"Kaimbé"},
["xaj"] = {"Ararandewára"},
["xak"] = {"Máku"},
["xal"] = {"Kalmyk", "Oirat"},
["xam"] = {"ǀXam"},
["xan"] = {"Xamtanga"},
["xao"] = {"Khao"},
["xap"] = {"Apalachee"},
["xaq"] = {"Aquitanian"},
["xar"] = {"Karami"},
["xas"] = {"Kamas"},
["xat"] = {"Katawixi"},
["xau"] = {"Kauwera"},
["xav"] = {"Xavánte"},
["xaw"] = {"Kawaiisu"},
["xay"] = {"Kayan Mahakam"},
["xbb"] = {"Lower Burdekin"},
["xbc"] = {"Bactrian"},
["xbd"] = {"Bindal"},
["xbe"] = {"Bigambal"},
["xbg"] = {"Bunganditj"},
["xbi"] = {"Kombio"},
["xbj"] = {"Birrpayi"},
["xbm"] = {"Middle Breton"},
["xbn"] = {"Kenaboi"},
["xbo"] = {"Bolgarian"},
["xbp"] = {"Bibbulman"},
["xbr"] = {"Kambera"},
["xbw"] = {"Kambiwá"},
["xby"] = {"Batjala", "Batyala"},
["xcb"] = {"Cumbric"},
["xcc"] = {"Camunic"},
["xce"] = {"Celtiberian"},
["xcg"] = {"Cisalpine Gaulish"},
["xch"] = {"Chemakum", "Chimakum"},
["xcl"] = {"Classical Armenian"},
["xcm"] = {"Comecrudo"},
["xcn"] = {"Cotoname"},
["xco"] = {"Chorasmian"},
["xcr"] = {"Carian"},
["xct"] = {"Classical Tibetan"},
["xcu"] = {"Curonian"},
["xcv"] = {"Chuvantsy"},
["xcw"] = {"Coahuilteco"},
["xcy"] = {"Cayuse"},
["xda"] = {"Darkinyung"},
["xdc"] = {"Dacian"},
["xdk"] = {"Dharuk"},
["xdm"] = {"Edomite"},
["xdo"] = {"Kwandu"},
["xdq"] = {"Kaitag"},
["xdy"] = {"Malayic Dayak"},
["xeb"] = {"Eblan"},
["xed"] = {"Hdi"},
["xeg"] = {"ǁXegwi"},
["xel"] = {"Kelo"},
["xem"] = {"Kembayan"},
["xep"] = {"Epi-Olmec"},
["xer"] = {"Xerénte"},
["xes"] = {"Kesawai"},
["xet"] = {"Xetá"},
["xeu"] = {"Keoru-Ahia"},
["xfa"] = {"Faliscan"},
["xga"] = {"Galatian"},
["xgb"] = {"Gbin"},
["xgd"] = {"Gudang"},
["xgf"] = {"Gabrielino-Fernandeño"},
["xgg"] = {"Goreng"},
["xgi"] = {"Garingbal"},
["xgl"] = {"Galindan"},
["xgm"] = {"Dharumbal", "Guwinmal"},
["xgn"] = {"Mongolian languages"},
["xgr"] = {"Garza"},
["xgu"] = {"Unggumi"},
["xgw"] = {"Guwa"},
["xha"] = {"Harami"},
["xhc"] = {"Hunnic"},
["xhd"] = {"Hadrami"},
["xhe"] = {"Khetrani"},
["xhm"] = {"Middle Khmer (1400 to 1850 CE)"},
["xhr"] = {"Hernican"},
["xht"] = {"Hattic"},
["xhu"] = {"Hurrian"},
["xhv"] = {"Khua"},
["xib"] = {"Iberian"},
["xii"] = {"Xiri"},
["xil"] = {"Illyrian"},
["xin"] = {"Xinca"},
["xir"] = {"Xiriâna"},
["xis"] = {"Kisan"},
["xiv"] = {"Indus Valley Language"},
["xiy"] = {"Xipaya"},
["xjb"] = {"Minjungbal"},
["xjt"] = {"Jaitmatang"},
["xka"] = {"Kalkoti"},
["xkb"] = {"Northern Nago"},
["xkc"] = {"Kho'ini"},
["xkd"] = {"Mendalam Kayan"},
["xke"] = {"Kereho"},
["xkf"] = {"Khengkha"},
["xkg"] = {"Kagoro"},
["xki"] = {"Kenyan Sign Language"},
["xkj"] = {"Kajali"},
["xkk"] = {"Kachok", "Kaco'"},
["xkl"] = {"Mainstream Kenyah"},
["xkn"] = {"Kayan River Kayan"},
["xko"] = {"Kiorr"},
["xkp"] = {"Kabatei"},
["xkq"] = {"Koroni"},
["xkr"] = {"Xakriabá"},
["xks"] = {"Kumbewaha"},
["xkt"] = {"Kantosi"},
["xku"] = {"Kaamba"},
["xkv"] = {"Kgalagadi"},
["xkw"] = {"Kembra"},
["xkx"] = {"Karore"},
["xky"] = {"Uma' Lasan"},
["xkz"] = {"Kurtokha"},
["xla"] = {"Kamula"},
["xlb"] = {"Loup B"},
["xlc"] = {"Lycian"},
["xld"] = {"Lydian"},
["xle"] = {"Lemnian"},
["xlg"] = {"Ligurian (Ancient)"},
["xli"] = {"Liburnian"},
["xln"] = {"Alanic"},
["xlo"] = {"Loup A"},
["xlp"] = {"Lepontic"},
["xls"] = {"Lusitanian"},
["xlu"] = {"Cuneiform Luwian"},
["xly"] = {"Elymian"},
["xma"] = {"Mushungulu"},
["xmb"] = {"Mbonga"},
["xmc"] = {"Makhuwa-Marrevone"},
["xmd"] = {"Mbudum"},
["xme"] = {"Median"},
["xmf"] = {"Mingrelian"},
["xmg"] = {"Mengaka"},
["xmh"] = {"Kugu-Muminh"},
["xmj"] = {"Majera"},
["xmk"] = {"Ancient Macedonian"},
["xml"] = {"Malaysian Sign Language"},
["xmm"] = {"Manado Malay"},
["xmn"] = {"Manichaean Middle Persian"},
["xmo"] = {"Morerebi"},
["xmp"] = {"Kuku-Mu'inh"},
["xmq"] = {"Kuku-Mangk"},
["xmr"] = {"Meroitic"},
["xms"] = {"Moroccan Sign Language"},
["xmt"] = {"Matbat"},
["xmu"] = {"Kamu"},
["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"},
["xmw"] = {"Tsimihety Malagasy"},
["xmx"] = {"Salawati", "Maden"},
["xmy"] = {"Mayaguduna"},
["xmz"] = {"Mori Bawah"},
["xna"] = {"Ancient North Arabian"},
["xnb"] = {"Kanakanabu"},
["xnd"] = {"Na-Dene languages"},
["xng"] = {"Middle Mongolian"},
["xnh"] = {"Kuanhua"},
["xni"] = {"Ngarigu"},
["xnj"] = {"Ngoni (Tanzania)"},
["xnk"] = {"Nganakarti"},
["xnm"] = {"Ngumbarl"},
["xnn"] = {"Northern Kankanay"},
["xno"] = {"Anglo-Norman"},
["xnq"] = {"Ngoni (Mozambique)"},
["xnr"] = {"Kangri"},
["xns"] = {"Kanashi"},
["xnt"] = {"Narragansett"},
["xnu"] = {"Nukunul"},
["xny"] = {"Nyiyaparli"},
["xnz"] = {"Kenzi", "Mattoki"},
["xoc"] = {"O'chi'chi'"},
["xod"] = {"Kokoda"},
["xog"] = {"Soga"},
["xoi"] = {"Kominimung"},
["xok"] = {"Xokleng"},
["xom"] = {"Komo (Sudan)"},
["xon"] = {"Konkomba"},
["xoo"] = {"Xukurú"},
["xop"] = {"Kopar"},
["xor"] = {"Korubo"},
["xow"] = {"Kowaki"},
["xpa"] = {"Pirriya"},
["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"},
["xpc"] = {"Pecheneg"},
["xpd"] = {"Oyster Bay Tasmanian"},
["xpe"] = {"Liberia Kpelle"},
["xpf"] = {"Southeast Tasmanian", "Nuenonne"},
["xpg"] = {"Phrygian"},
["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"},
["xpi"] = {"Pictish"},
["xpj"] = {"Mpalitjanh"},
["xpk"] = {"Kulina Pano"},
["xpl"] = {"Port Sorell Tasmanian"},
["xpm"] = {"Pumpokol"},
["xpn"] = {"Kapinawá"},
["xpo"] = {"Pochutec"},
["xpp"] = {"Puyo-Paekche"},
["xpq"] = {"Mohegan-Pequot"},
["xpr"] = {"Parthian"},
["xps"] = {"Pisidian"},
["xpt"] = {"Punthamara"},
["xpu"] = {"Punic"},
["xpv"] = {"Northern Tasmanian", "Tommeginne"},
["xpw"] = {"Northwestern Tasmanian", "Peerapper"},
["xpx"] = {"Southwestern Tasmanian", "Toogee"},
["xpy"] = {"Puyo"},
["xpz"] = {"Bruny Island Tasmanian"},
["xqa"] = {"Karakhanid"},
["xqt"] = {"Qatabanian"},
["xra"] = {"Krahô"},
["xrb"] = {"Eastern Karaboro"},
["xrd"] = {"Gundungurra"},
["xre"] = {"Kreye"},
["xrg"] = {"Minang"},
["xri"] = {"Krikati-Timbira"},
["xrm"] = {"Armazic"},
["xrn"] = {"Arin"},
["xrr"] = {"Raetic"},
["xrt"] = {"Aranama-Tamique"},
["xru"] = {"Marriammu"},
["xrw"] = {"Karawa"},
["xsa"] = {"Sabaean"},
["xsb"] = {"Sambal"},
["xsc"] = {"Scythian"},
["xsd"] = {"Sidetic"},
["xse"] = {"Sempan"},
["xsh"] = {"Shamang"},
["xsi"] = {"Sio"},
["xsj"] = {"Subi"},
["xsl"] = {"South Slavey"},
["xsm"] = {"Kasem"},
["xsn"] = {"Sanga (Nigeria)"},
["xso"] = {"Solano"},
["xsp"] = {"Silopi"},
["xsq"] = {"Makhuwa-Saka"},
["xsr"] = {"Sherpa"},
["xsu"] = {"Sanumá"},
["xsv"] = {"Sudovian"},
["xsy"] = {"Saisiyat"},
["xta"] = {"Alcozauca Mixtec"},
["xtb"] = {"Chazumba Mixtec"},
["xtc"] = {"Katcha-Kadugli-Miri"},
["xtd"] = {"Diuxi-Tilantongo Mixtec"},
["xte"] = {"Ketengban"},
["xtg"] = {"Transalpine Gaulish"},
["xth"] = {"Yitha Yitha"},
["xti"] = {"Sinicahua Mixtec"},
["xtj"] = {"San Juan Teita Mixtec"},
["xtl"] = {"Tijaltepec Mixtec"},
["xtm"] = {"Magdalena Peñasco Mixtec"},
["xtn"] = {"Northern Tlaxiaco Mixtec"},
["xto"] = {"Tokharian A"},
["xtp"] = {"San Miguel Piedras Mixtec"},
["xtq"] = {"Tumshuqese"},
["xtr"] = {"Early Tripuri"},
["xts"] = {"Sindihui Mixtec"},
["xtt"] = {"Tacahua Mixtec"},
["xtu"] = {"Cuyamecalco Mixtec"},
["xtv"] = {"Thawa"},
["xtw"] = {"Tawandê"},
["xty"] = {"Yoloxochitl Mixtec"},
["xua"] = {"Alu Kurumba"},
["xub"] = {"Betta Kurumba"},
["xud"] = {"Umiida"},
["xug"] = {"Kunigami"},
["xuj"] = {"Jennu Kurumba"},
["xul"] = {"Ngunawal", "Nunukul"},
["xum"] = {"Umbrian"},
["xun"] = {"Unggaranggu"},
["xuo"] = {"Kuo"},
["xup"] = {"Upper Umpqua"},
["xur"] = {"Urartian"},
["xut"] = {"Kuthant"},
["xuu"] = {"Kxoe", "Khwedam"},
["xve"] = {"Venetic"},
["xvi"] = {"Kamviri"},
["xvn"] = {"Vandalic"},
["xvo"] = {"Volscian"},
["xvs"] = {"Vestinian"},
["xwa"] = {"Kwaza"},
["xwc"] = {"Woccon"},
["xwd"] = {"Wadi Wadi"},
["xwe"] = {"Xwela Gbe"},
["xwg"] = {"Kwegu"},
["xwj"] = {"Wajuk"},
["xwk"] = {"Wangkumara"},
["xwl"] = {"Western Xwla Gbe"},
["xwo"] = {"Written Oirat"},
["xwr"] = {"Kwerba Mamberamo"},
["xwt"] = {"Wotjobaluk"},
["xww"] = {"Wemba Wemba"},
["xxb"] = {"Boro (Ghana)"},
["xxk"] = {"Ke'o"},
["xxm"] = {"Minkin"},
["xxr"] = {"Koropó"},
["xxt"] = {"Tambora"},
["xya"] = {"Yaygir"},
["xyb"] = {"Yandjibara"},
["xyj"] = {"Mayi-Yapi"},
["xyk"] = {"Mayi-Kulan"},
["xyl"] = {"Yalakalore"},
["xyt"] = {"Mayi-Thakurti"},
["xyy"] = {"Yorta Yorta"},
["xzh"] = {"Zhang-Zhung"},
["xzm"] = {"Zemgalian"},
["xzp"] = {"Ancient Zapotec"},
["yaa"] = {"Yaminahua"},
["yab"] = {"Yuhup"},
["yac"] = {"Pass Valley Yali"},
["yad"] = {"Yagua"},
["yae"] = {"Pumé"},
["yaf"] = {"Yaka (Democratic Republic of Congo)"},
["yag"] = {"Yámana"},
["yah"] = {"Yazgulyam"},
["yai"] = {"Yagnobi"},
["yaj"] = {"Banda-Yangere"},
["yak"] = {"Yakama"},
["yal"] = {"Yalunka"},
["yam"] = {"Yamba"},
["yan"] = {"Mayangna"},
["yao"] = {"Yao"},
["yap"] = {"Yapese"},
["yaq"] = {"Yaqui"},
["yar"] = {"Yabarana"},
["yas"] = {"Nugunu (Cameroon)"},
["yat"] = {"Yambeta"},
["yau"] = {"Yuwana"},
["yav"] = {"Yangben"},
["yaw"] = {"Yawalapití"},
["yax"] = {"Yauma"},
["yay"] = {"Agwagwune"},
["yaz"] = {"Lokaa"},
["yba"] = {"Yala"},
["ybb"] = {"Yemba"},
["ybe"] = {"West Yugur"},
["ybh"] = {"Yakha"},
["ybi"] = {"Yamphu"},
["ybj"] = {"Hasha"},
["ybk"] = {"Bokha"},
["ybl"] = {"Yukuben"},
["ybm"] = {"Yaben"},
["ybn"] = {"Yabaâna"},
["ybo"] = {"Yabong"},
["ybx"] = {"Yawiyo"},
["yby"] = {"Yaweyuha"},
["ych"] = {"Chesu"},
["ycl"] = {"Lolopo"},
["ycn"] = {"Yucuna"},
["ycp"] = {"Chepya"},
["ycr"] = {"Yilan Creole"},
["yda"] = {"Yanda"},
["ydd"] = {"Eastern Yiddish"},
["yde"] = {"Yangum Dey"},
["ydg"] = {"Yidgha"},
["ydk"] = {"Yoidik"},
["yea"] = {"Ravula"},
["yec"] = {"Yeniche"},
["yee"] = {"Yimas"},
["yei"] = {"Yeni"},
["yej"] = {"Yevanic"},
["yel"] = {"Yela"},
["yer"] = {"Tarok"},
["yes"] = {"Nyankpa"},
["yet"] = {"Yetfa"},
["yeu"] = {"Yerukula"},
["yev"] = {"Yapunda"},
["yey"] = {"Yeyi"},
["yga"] = {"Malyangapa"},
["ygi"] = {"Yiningayi"},
["ygl"] = {"Yangum Gel"},
["ygm"] = {"Yagomi"},
["ygp"] = {"Gepo"},
["ygr"] = {"Yagaria"},
["ygs"] = {"Yolŋu Sign Language"},
["ygu"] = {"Yugul"},
["ygw"] = {"Yagwoia"},
["yha"] = {"Baha Buyang"},
["yhd"] = {"Judeo-Iraqi Arabic"},
["yhl"] = {"Hlepho Phowa"},
["yhs"] = {"Yan-nhaŋu Sign Language"},
["yia"] = {"Yinggarda"},
["yif"] = {"Ache"},
["yig"] = {"Wusa Nasu"},
["yih"] = {"Western Yiddish"},
["yii"] = {"Yidiny"},
["yij"] = {"Yindjibarndi"},
["yik"] = {"Dongshanba Lalo"},
["yil"] = {"Yindjilandji"},
["yim"] = {"Yimchungru Naga"},
["yin"] = {"Riang Lai", "Yinchia"},
["yip"] = {"Pholo"},
["yiq"] = {"Miqie"},
["yir"] = {"North Awyu"},
["yis"] = {"Yis"},
["yit"] = {"Eastern Lalu"},
["yiu"] = {"Awu"},
["yiv"] = {"Northern Nisu"},
["yix"] = {"Axi Yi"},
["yiz"] = {"Azhe"},
["yka"] = {"Yakan"},
["ykg"] = {"Northern Yukaghir"},
["ykh"] = {"Khamnigan Mongol"},
["yki"] = {"Yoke"},
["ykk"] = {"Yakaikeke"},
["ykl"] = {"Khlula"},
["ykm"] = {"Kap"},
["ykn"] = {"Kua-nsi"},
["yko"] = {"Yasa"},
["ykr"] = {"Yekora"},
["ykt"] = {"Kathu"},
["yku"] = {"Kuamasi"},
["yky"] = {"Yakoma"},
["yla"] = {"Yaul"},
["ylb"] = {"Yaleba"},
["yle"] = {"Yele"},
["ylg"] = {"Yelogu"},
["yli"] = {"Angguruk Yali"},
["yll"] = {"Yil"},
["ylm"] = {"Limi"},
["yln"] = {"Langnian Buyang"},
["ylo"] = {"Naluo Yi"},
["ylr"] = {"Yalarnnga"},
["ylu"] = {"Aribwaung"},
["yly"] = {"Nyâlayu", "Nyelâyu"},
["ymb"] = {"Yambes"},
["ymc"] = {"Southern Muji"},
["ymd"] = {"Muda"},
["yme"] = {"Yameo"},
["ymg"] = {"Yamongeri"},
["ymh"] = {"Mili"},
["ymi"] = {"Moji"},
["ymk"] = {"Makwe"},
["yml"] = {"Iamalele"},
["ymm"] = {"Maay"},
["ymn"] = {"Yamna", "Sunum"},
["ymo"] = {"Yangum Mon"},
["ymp"] = {"Yamap"},
["ymq"] = {"Qila Muji"},
["ymr"] = {"Malasar"},
["yms"] = {"Mysian"},
["ymx"] = {"Northern Muji"},
["ymz"] = {"Muzi"},
["yna"] = {"Aluo"},
["ynd"] = {"Yandruwandha"},
["yne"] = {"Lang'e"},
["yng"] = {"Yango"},
["ynk"] = {"Naukan Yupik"},
["ynl"] = {"Yangulam"},
["ynn"] = {"Yana"},
["yno"] = {"Yong"},
["ynq"] = {"Yendang"},
["yns"] = {"Yansi"},
["ynu"] = {"Yahuna"},
["yob"] = {"Yoba"},
["yog"] = {"Yogad"},
["yoi"] = {"Yonaguni"},
["yok"] = {"Yokuts"},
["yol"] = {"Yola"},
["yom"] = {"Yombe"},
["yon"] = {"Yongkom"},
["yot"] = {"Yotti"},
["yox"] = {"Yoron"},
["yoy"] = {"Yoy"},
["ypa"] = {"Phala"},
["ypb"] = {"Labo Phowa"},
["ypg"] = {"Phola"},
["yph"] = {"Phupha"},
["ypk"] = {"Yupik languages"},
["ypm"] = {"Phuma"},
["ypn"] = {"Ani Phowa"},
["ypo"] = {"Alo Phola"},
["ypp"] = {"Phupa"},
["ypz"] = {"Phuza"},
["yra"] = {"Yerakai"},
["yrb"] = {"Yareba"},
["yre"] = {"Yaouré"},
["yrk"] = {"Nenets"},
["yrl"] = {"Nhengatu"},
["yrm"] = {"Yirrk-Mel"},
["yrn"] = {"Yerong"},
["yro"] = {"Yaroamë"},
["yrs"] = {"Yarsun"},
["yrw"] = {"Yarawata"},
["yry"] = {"Yarluyandi"},
["ysc"] = {"Yassic"},
["ysd"] = {"Samatao"},
["ysg"] = {"Sonaga"},
["ysl"] = {"Yugoslavian Sign Language"},
["ysm"] = {"Myanmar Sign Language"},
["ysn"] = {"Sani"},
["yso"] = {"Nisi (China)"},
["ysp"] = {"Southern Lolopo"},
["ysr"] = {"Sirenik Yupik"},
["yss"] = {"Yessan-Mayo"},
["ysy"] = {"Sanie"},
["yta"] = {"Talu"},
["ytl"] = {"Tanglang"},
["ytp"] = {"Thopho"},
["ytw"] = {"Yout Wam"},
["yty"] = {"Yatay"},
["yua"] = {"Yucateco", "Yucatec Maya"},
["yub"] = {"Yugambal"},
["yuc"] = {"Yuchi"},
["yud"] = {"Judeo-Tripolitanian Arabic"},
["yue"] = {"Yue Chinese", "Cantonese"},
["yuf"] = {"Havasupai-Walapai-Yavapai"},
["yug"] = {"Yug"},
["yui"] = {"Yurutí"},
["yuj"] = {"Karkar-Yuri"},
["yuk"] = {"Yuki"},
["yul"] = {"Yulu"},
["yum"] = {"Quechan"},
["yun"] = {"Bena (Nigeria)"},
["yup"] = {"Yukpa"},
["yuq"] = {"Yuqui"},
["yur"] = {"Yurok"},
["yut"] = {"Yopno"},
["yuw"] = {"Yau (Morobe Province)"},
["yux"] = {"Southern Yukaghir"},
["yuy"] = {"East Yugur"},
["yuz"] = {"Yuracare"},
["yva"] = {"Yawa"},
["yvt"] = {"Yavitero"},
["ywa"] = {"Kalou"},
["ywg"] = {"Yinhawangka"},
["ywl"] = {"Western Lalu"},
["ywn"] = {"Yawanawa"},
["ywq"] = {"Wuding-Luquan Yi"},
["ywr"] = {"Yawuru"},
["ywt"] = {"Xishanba Lalo", "Central Lalo"},
["ywu"] = {"Wumeng Nasu"},
["yww"] = {"Yawarawarga"},
["yxa"] = {"Mayawali"},
["yxg"] = {"Yagara"},
["yxl"] = {"Yardliyawarra"},
["yxm"] = {"Yinwum"},
["yxu"] = {"Yuyu"},
["yxy"] = {"Yabula Yabula"},
["yyr"] = {"Yir Yoront"},
["yyu"] = {"Yau (Sandaun Province)"},
["yyz"] = {"Ayizi"},
["yzg"] = {"E'ma Buyang"},
["yzk"] = {"Zokhuo"},
["zaa"] = {"Sierra de Juárez Zapotec"},
["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"},
["zac"] = {"Ocotlán Zapotec"},
["zad"] = {"Cajonos Zapotec"},
["zae"] = {"Yareni Zapotec"},
["zaf"] = {"Ayoquesco Zapotec"},
["zag"] = {"Zaghawa"},
["zah"] = {"Zangwal"},
["zai"] = {"Isthmus Zapotec"},
["zaj"] = {"Zaramo"},
["zak"] = {"Zanaki"},
["zal"] = {"Zauzou"},
["zam"] = {"Miahuatlán Zapotec"},
["zao"] = {"Ozolotepec Zapotec"},
["zap"] = {"Zapotec"},
["zaq"] = {"Aloápam Zapotec"},
["zar"] = {"Rincón Zapotec"},
["zas"] = {"Santo Domingo Albarradas Zapotec"},
["zat"] = {"Tabaa Zapotec"},
["zau"] = {"Zangskari"},
["zav"] = {"Yatzachi Zapotec"},
["zaw"] = {"Mitla Zapotec"},
["zax"] = {"Xadani Zapotec"},
["zay"] = {"Zayse-Zergulla", "Zaysete"},
["zaz"] = {"Zari"},
["zba"] = {"Balaibalan"},
["zbc"] = {"Central Berawan"},
["zbe"] = {"East Berawan"},
["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"},
["zbt"] = {"Batui"},
["zbu"] = {"Bu (Bauchi State)"},
["zbw"] = {"West Berawan"},
["zca"] = {"Coatecas Altas Zapotec"},
["zcd"] = {"Las Delicias Zapotec"},
["zch"] = {"Central Hongshuihe Zhuang"},
["zdj"] = {"Ngazidja Comorian"},
["zea"] = {"Zeeuws"},
["zeg"] = {"Zenag"},
["zeh"] = {"Eastern Hongshuihe Zhuang"},
["zem"] = {"Zeem"},
["zen"] = {"Zenaga"},
["zga"] = {"Kinga"},
["zgb"] = {"Guibei Zhuang"},
["zgh"] = {"Standard Moroccan Tamazight"},
["zgm"] = {"Minz Zhuang"},
["zgn"] = {"Guibian Zhuang"},
["zgr"] = {"Magori"},
["zhb"] = {"Zhaba"},
["zhd"] = {"Dai Zhuang"},
["zhi"] = {"Zhire"},
["zhn"] = {"Nong Zhuang"},
["zhw"] = {"Zhoa"},
["zhx"] = {"Chinese (family)"},
["zia"] = {"Zia"},
["zib"] = {"Zimbabwe Sign Language"},
["zik"] = {"Zimakani"},
["zil"] = {"Zialo"},
["zim"] = {"Mesme"},
["zin"] = {"Zinza"},
["ziw"] = {"Zigula"},
["ziz"] = {"Zizilivakan"},
["zka"] = {"Kaimbulawa"},
["zkd"] = {"Kadu"},
["zkg"] = {"Koguryo"},
["zkh"] = {"Khorezmian"},
["zkk"] = {"Karankawa"},
["zkn"] = {"Kanan"},
["zko"] = {"Kott"},
["zkp"] = {"São Paulo Kaingáng"},
["zkr"] = {"Zakhring"},
["zkt"] = {"Kitan"},
["zku"] = {"Kaurna"},
["zkv"] = {"Krevinian"},
["zkz"] = {"Khazar"},
["zla"] = {"Zula"},
["zle"] = {"East Slavic languages"},
["zlj"] = {"Liujiang Zhuang"},
["zlm"] = {"Malay (individual language)"},
["zln"] = {"Lianshan Zhuang"},
["zlq"] = {"Liuqian Zhuang"},
["zls"] = {"South Slavic languages"},
["zlu"] = {"Zul"},
["zlw"] = {"West Slavic languages"},
["zma"] = {"Manda (Australia)"},
["zmb"] = {"Zimba"},
["zmc"] = {"Margany"},
["zmd"] = {"Maridan"},
["zme"] = {"Mangerr"},
["zmf"] = {"Mfinu"},
["zmg"] = {"Marti Ke"},
["zmh"] = {"Makolkol"},
["zmi"] = {"Negeri Sembilan Malay"},
["zmj"] = {"Maridjabin"},
["zmk"] = {"Mandandanyi"},
["zml"] = {"Matngala"},
["zmm"] = {"Marimanindji", "Marramaninyshi"},
["zmn"] = {"Mbangwe"},
["zmo"] = {"Molo"},
["zmp"] = {"Mpuono"},
["zmq"] = {"Mituku"},
["zmr"] = {"Maranunggu"},
["zms"] = {"Mbesa"},
["zmt"] = {"Maringarr"},
["zmu"] = {"Muruwari"},
["zmv"] = {"Mbariman-Gudhinma"},
["zmw"] = {"Mbo (Democratic Republic of Congo)"},
["zmx"] = {"Bomitaba"},
["zmy"] = {"Mariyedi"},
["zmz"] = {"Mbandja"},
["zna"] = {"Zan Gula"},
["znd"] = {"Zande languages"},
["zne"] = {"Zande (individual language)"},
["zng"] = {"Mang"},
["znk"] = {"Manangkari"},
["zns"] = {"Mangas"},
["zoc"] = {"Copainalá Zoque"},
["zoh"] = {"Chimalapa Zoque"},
["zom"] = {"Zou"},
["zoo"] = {"Asunción Mixtepec Zapotec"},
["zoq"] = {"Tabasco Zoque"},
["zor"] = {"Rayón Zoque"},
["zos"] = {"Francisco León Zoque"},
["zpa"] = {"Lachiguiri Zapotec"},
["zpb"] = {"Yautepec Zapotec"},
["zpc"] = {"Choapan Zapotec"},
["zpd"] = {"Southeastern Ixtlán Zapotec"},
["zpe"] = {"Petapa Zapotec"},
["zpf"] = {"San Pedro Quiatoni Zapotec"},
["zpg"] = {"Guevea De Humboldt Zapotec"},
["zph"] = {"Totomachapan Zapotec"},
["zpi"] = {"Santa María Quiegolani Zapotec"},
["zpj"] = {"Quiavicuzas Zapotec"},
["zpk"] = {"Tlacolulita Zapotec"},
["zpl"] = {"Lachixío Zapotec"},
["zpm"] = {"Mixtepec Zapotec"},
["zpn"] = {"Santa Inés Yatzechi Zapotec"},
["zpo"] = {"Amatlán Zapotec"},
["zpp"] = {"El Alto Zapotec"},
["zpq"] = {"Zoogocho Zapotec"},
["zpr"] = {"Santiago Xanica Zapotec"},
["zps"] = {"Coatlán Zapotec"},
["zpt"] = {"San Vicente Coatlán Zapotec"},
["zpu"] = {"Yalálag Zapotec"},
["zpv"] = {"Chichicapan Zapotec"},
["zpw"] = {"Zaniza Zapotec"},
["zpx"] = {"San Baltazar Loxicha Zapotec"},
["zpy"] = {"Mazaltepec Zapotec"},
["zpz"] = {"Texmelucan Zapotec"},
["zqe"] = {"Qiubei Zhuang"},
["zra"] = {"Kara (Korea)"},
["zrg"] = {"Mirgan"},
["zrn"] = {"Zerenkel"},
["zro"] = {"Záparo"},
["zrp"] = {"Zarphatic"},
["zrs"] = {"Mairasi"},
["zsa"] = {"Sarasira"},
["zsk"] = {"Kaskean"},
["zsl"] = {"Zambian Sign Language"},
["zsm"] = {"Standard Malay"},
["zsr"] = {"Southern Rincon Zapotec"},
["zsu"] = {"Sukurum"},
["zte"] = {"Elotepec Zapotec"},
["ztg"] = {"Xanaguía Zapotec"},
["ztl"] = {"Lapaguía-Guivini Zapotec"},
["ztm"] = {"San Agustín Mixtepec Zapotec"},
["ztn"] = {"Santa Catarina Albarradas Zapotec"},
["ztp"] = {"Loxicha Zapotec"},
["ztq"] = {"Quioquitani-Quierí Zapotec"},
["zts"] = {"Tilquiapan Zapotec"},
["ztt"] = {"Tejalapan Zapotec"},
["ztu"] = {"Güilá Zapotec"},
["ztx"] = {"Zaachila Zapotec"},
["zty"] = {"Yatee Zapotec"},
["zuh"] = {"Tokano"},
["zum"] = {"Kumzari"},
["zun"] = {"Zuni"},
["zuy"] = {"Zumaya"},
["zwa"] = {"Zay"},
["zxx"] = {"No linguistic content", "Not applicable"},
["zyb"] = {"Yongbei Zhuang"},
["zyg"] = {"Yang Zhuang"},
["zyj"] = {"Youjiang Zhuang"},
["zyn"] = {"Yongnan Zhuang"},
["zyp"] = {"Zyphe Chin"},
["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"},
["zzj"] = {"Zuojiang Zhuang"}
}
local deprecated = {
["in"] = {"Indonesian"},
["iw"] = {"Hebrew"},
["ji"] = {"Yiddish"},
["jw"] = {"Javanese"},
["mo"] = {"Moldavian", "Moldovan"},
["aam"] = {"Aramanik"},
["adp"] = {"Adap"},
["agp"] = {"Paranan"},
["ais"] = {"Nataoran Amis"},
["ajp"] = {"South Levantine Arabic"},
["ajt"] = {"Judeo-Tunisian Arabic"},
["aoh"] = {"Arma"},
["asd"] = {"Asas"},
["aue"] = {"ǂKxʼauǁʼein"},
["ayx"] = {"Ayi (China)"},
["ayy"] = {"Tayabas Ayta"},
["baz"] = {"Tunen"},
["bbz"] = {"Babalia Creole Arabic"},
["bgm"] = {"Baga Mboteni"},
["bhk"] = {"Albay Bicolano"},
["bic"] = {"Bikaru"},
["bij"] = {"Vaghat-Ya-Bijim-Legeri"},
["bjd"] = {"Bandjigali"},
["bjq"] = {"Southern Betsimisaraka Malagasy"},
["bkb"] = {"Finallig"},
["blg"] = {"Balau"},
["bmy"] = {"Bemba (Democratic Republic of Congo)"},
["bpb"] = {"Barbacoas"},
["btb"] = {"Beti (Cameroon)"},
["btl"] = {"Bhatola"},
["bxx"] = {"Borna (Democratic Republic of Congo)"},
["byy"] = {"Buya"},
["cbe"] = {"Chipiajes"},
["cbh"] = {"Cagua"},
["cca"] = {"Cauca"},
["ccq"] = {"Chaungtha"},
["cdg"] = {"Chamari"},
["cjr"] = {"Chorotega"},
["cka"] = {"Khumi Awa Chin"},
["cmk"] = {"Chimakum"},
["coy"] = {"Coyaima"},
["cqu"] = {"Chilean Quechua"},
["cug"] = {"Chungmboko", "Cung"},
["cum"] = {"Cumeral"},
["daf"] = {"Dan"},
["dap"] = {"Nisi (India)"},
["dgu"] = {"Degaru"},
["dha"] = {"Dhanwar (India)"},
["dit"] = {"Dirari"},
["djl"] = {"Djiwarli"},
["dkl"] = {"Kolum So Dogon"},
["drh"] = {"Darkhat"},
["drr"] = {"Dororo"},
["drw"] = {"Darwazi"},
["dud"] = {"Hun-Saare"},
["duj"] = {"Dhuwal"},
["dwl"] = {"Walo Kumbe Dogon"},
["ekc"] = {"Eastern Karnic"},
["elp"] = {"Elpaputih"},
["emo"] = {"Emok"},
["gav"] = {"Gabutamon"},
["gbc"] = {"Garawa"},
["gfx"] = {"Mangetti Dune ǃXung"},
["ggn"] = {"Eastern Gurung"},
["ggo"] = {"Southern Gondi"},
["ggr"] = {"Aghu Tharnggalu"},
["gio"] = {"Gelao"},
["gji"] = {"Geji"},
["gli"] = {"Guliguli"},
["gti"] = {"Gbati-ri"},
["guv"] = {"Gey"},
["hrr"] = {"Horuru"},
["iap"] = {"Iapama"},
["ibi"] = {"Ibilo"},
["ill"] = {"Iranun"},
["ilw"] = {"Talur"},
["ime"] = {"Imeraguen"},
["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"},
["jar"] = {"Jarawa (Nigeria)"},
["jeg"] = {"Jeng"},
["kbf"] = {"Kakauhua"},
["kdv"] = {"Kado"},
["kgc"] = {"Kasseng"},
["kgd"] = {"Kataang"},
["kgh"] = {"Upper Tanudan Kalinga"},
["kgm"] = {"Karipúna"},
["kjf"] = {"Khalaj [Indo-Iranian]"},
["koj"] = {"Sara Dunjo"},
["kox"] = {"Coxima"},
["kpp"] = {"Paku Karen"},
["krm"] = {"Krim"},
["ksa"] = {"Shuwa-Zamani"},
["ktr"] = {"Kota Marudu Tinagas"},
["kvs"] = {"Kunggara"},
["kwq"] = {"Kwak"},
["kxe"] = {"Kakihum"},
["kxl"] = {"Nepali Kurux"},
["kxu"] = {"Kui (India)"},
["kzh"] = {"Kenuzi-Dongola"},
["kzj"] = {"Coastal Kadazan"},
["kzt"] = {"Tambunan Dusun"},
["lak"] = {"Laka (Nigeria)"},
["lba"] = {"Lui"},
["leg"] = {"Lengua"},
["lii"] = {"Lingkhim"},
["llo"] = {"Khlor"},
["lmm"] = {"Lamam"},
["lmz"] = {"Lumbee"},
["lno"] = {"Lango (South Sudan)"},
["lsg"] = {"Lyons Sign Language"},
["meg"] = {"Mea"},
["mgx"] = {"Omati"},
["mhh"] = {"Maskoy Pidgin"},
["mja"] = {"Mahei"},
["mld"] = {"Malakhel"},
["mnt"] = {"Maykulan"},
["mof"] = {"Mohegan-Montauk-Narragansett"},
["mst"] = {"Cataelano Mandaya"},
["mvm"] = {"Muya"},
["mwd"] = {"Mudbura"},
["mwj"] = {"Maligo"},
["mwx"] = {"Mediak"},
["mwy"] = {"Mosiro"},
["myd"] = {"Maramba"},
["myi"] = {"Mina (India)"},
["myq"] = {"Forest Maninka"},
["myt"] = {"Sangab Mandaya"},
["nad"] = {"Nijadali"},
["nbf"] = {"Naxi"},
["nbx"] = {"Ngura"},
["ncp"] = {"Ndaktup"},
["ngo"] = {"Ngoni"},
["nln"] = {"Durango Nahuatl"},
["nlr"] = {"Ngarla"},
["nns"] = {"Ningye"},
["nnx"] = {"Ngong"},
["nom"] = {"Nocamán"},
["noo"] = {"Nootka"},
["nts"] = {"Natagaimas"},
["nxu"] = {"Narau"},
["ome"] = {"Omejes"},
["oun"] = {"ǃOǃung"},
["pat"] = {"Papitalai"},
["pbz"] = {"Palu"},
["pcr"] = {"Panang"},
["pgy"] = {"Pongyong"},
["pii"] = {"Pini"},
["plj"] = {"Polci"},
["plp"] = {"Palpa"},
["pmc"] = {"Palumata"},
["pmk"] = {"Pamlico"},
["pmu"] = {"Mirpur Panjabi"},
["pod"] = {"Ponares"},
["ppa"] = {"Pao"},
["ppr"] = {"Piru"},
["prb"] = {"Lua'"},
["prp"] = {"Parsi"},
["pry"] = {"Pray 3"},
["puk"] = {"Pu Ko"},
["puz"] = {"Purum Naga"},
["rie"] = {"Rien"},
["rmr"] = {"Caló"},
["rna"] = {"Runa"},
["rsi"] = {"Rennellese Sign Language"},
["sap"] = {"Sanapaná"},
["sca"] = {"Sansu"},
["sdm"] = {"Semandang"},
["sgl"] = {"Sanglechi-Ishkashimi"},
["sgo"] = {"Songa"},
["skk"] = {"Sok"},
["slq"] = {"Salchuq"},
["smd"] = {"Sama"},
["snb"] = {"Sebuyau"},
["snh"] = {"Shinabo"},
["sul"] = {"Surigaonon"},
["sum"] = {"Sumo-Mayangna"},
["svr"] = {"Savara"},
["szd"] = {"Seru"},
["tbb"] = {"Tapeba"},
["tdu"] = {"Tempasuk Dusun"},
["tgg"] = {"Tangga"},
["thc"] = {"Tai Hang Tong"},
["thw"] = {"Thudam"},
["thx"] = {"The"},
["tid"] = {"Tidong"},
["tie"] = {"Tingal"},
["tkk"] = {"Takpa"},
["tlw"] = {"South Wemale"},
["tmk"] = {"Northwestern Tamang"},
["tmp"] = {"Tai Mène"},
["tne"] = {"Tinoc Kallahan"},
["tnf"] = {"Tangshewi"},
["toe"] = {"Tomedes"},
["tpw"] = {"Tupí"},
["tsf"] = {"Southwestern Tamang"},
["unp"] = {"Worora"},
["uok"] = {"Uokha"},
["uun"] = {"Kulon-Pazeh"},
["vki"] = {"Ija-Zuba"},
["wgw"] = {"Wagawaga"},
["wit"] = {"Wintu"},
["wiw"] = {"Wirangu"},
["wra"] = {"Warapu"},
["wrd"] = {"Warduji"},
["wya"] = {"Wyandot"},
["xba"] = {"Kamba (Brazil)"},
["xbx"] = {"Kabixí"},
["xia"] = {"Xiandao"},
["xip"] = {"Xipináwa"},
["xkh"] = {"Karahawyana"},
["xrq"] = {"Karranga"},
["xss"] = {"Assan"},
["xtz"] = {"Tasmanian"},
["ybd"] = {"Yangbye"},
["yds"] = {"Yiddish Sign Language"},
["yen"] = {"Yendang"},
["yiy"] = {"Yir Yoront"},
["yma"] = {"Yamphe"},
["ymt"] = {"Mator-Taygi-Karagas"},
["ynh"] = {"Yangho"},
["yos"] = {"Yos"},
["yri"] = {"Yarí"},
["yuu"] = {"Yugh"},
["zir"] = {"Ziriya"},
["zkb"] = {"Koibal"},
["zua"] = {"Zeem"}
}
return {
active = active,
deprecated = deprecated,
}
7e8fcbc627dace0b48345e47103fa5243cc7add3
Module:Language/data/iana scripts
828
470
3136
3135
2023-11-09T20:07:32Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_scripts]]
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["Adlm"] = {"Adlam"},
["Afak"] = {"Afaka"},
["Aghb"] = {"Caucasian Albanian"},
["Ahom"] = {"Ahom", "Tai Ahom"},
["Arab"] = {"Arabic"},
["Aran"] = {"Arabic (Nastaliq variant)"},
["Armi"] = {"Imperial Aramaic"},
["Armn"] = {"Armenian"},
["Avst"] = {"Avestan"},
["Bali"] = {"Balinese"},
["Bamu"] = {"Bamum"},
["Bass"] = {"Bassa Vah"},
["Batk"] = {"Batak"},
["Beng"] = {"Bengali", "Bangla"},
["Bhks"] = {"Bhaiksuki"},
["Blis"] = {"Blissymbols"},
["Bopo"] = {"Bopomofo"},
["Brah"] = {"Brahmi"},
["Brai"] = {"Braille"},
["Bugi"] = {"Buginese"},
["Buhd"] = {"Buhid"},
["Cakm"] = {"Chakma"},
["Cans"] = {"Unified Canadian Aboriginal Syllabics"},
["Cari"] = {"Carian"},
["Cham"] = {"Cham"},
["Cher"] = {"Cherokee"},
["Chis"] = {"Chisoi"},
["Chrs"] = {"Chorasmian"},
["Cirt"] = {"Cirth"},
["Copt"] = {"Coptic"},
["Cpmn"] = {"Cypro-Minoan"},
["Cprt"] = {"Cypriot syllabary"},
["Cyrl"] = {"Cyrillic"},
["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"},
["Deva"] = {"Devanagari", "Nagari"},
["Diak"] = {"Dives Akuru"},
["Dogr"] = {"Dogra"},
["Dsrt"] = {"Deseret", "Mormon"},
["Dupl"] = {"Duployan shorthand", "Duployan stenography"},
["Egyd"] = {"Egyptian demotic"},
["Egyh"] = {"Egyptian hieratic"},
["Egyp"] = {"Egyptian hieroglyphs"},
["Elba"] = {"Elbasan"},
["Elym"] = {"Elymaic"},
["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"},
["Gara"] = {"Garay"},
["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"},
["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"},
["Glag"] = {"Glagolitic"},
["Gong"] = {"Gunjala Gondi"},
["Gonm"] = {"Masaram Gondi"},
["Goth"] = {"Gothic"},
["Gran"] = {"Grantha"},
["Grek"] = {"Greek"},
["Gujr"] = {"Gujarati"},
["Gukh"] = {"Gurung Khema"},
["Guru"] = {"Gurmukhi"},
["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"},
["Hang"] = {"Hangul", "Hangŭl", "Hangeul"},
["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"},
["Hano"] = {"Hanunoo", "Hanunóo"},
["Hans"] = {"Han (Simplified variant)"},
["Hant"] = {"Han (Traditional variant)"},
["Hatr"] = {"Hatran"},
["Hebr"] = {"Hebrew"},
["Hira"] = {"Hiragana"},
["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"},
["Hmng"] = {"Pahawh Hmong"},
["Hmnp"] = {"Nyiakeng Puachue Hmong"},
["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"},
["Hung"] = {"Old Hungarian", "Hungarian Runic"},
["Inds"] = {"Indus", "Harappan"},
["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"},
["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"},
["Java"] = {"Javanese"},
["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"},
["Jurc"] = {"Jurchen"},
["Kali"] = {"Kayah Li"},
["Kana"] = {"Katakana"},
["Kawi"] = {"Kawi"},
["Khar"] = {"Kharoshthi"},
["Khmr"] = {"Khmer"},
["Khoj"] = {"Khojki"},
["Kitl"] = {"Khitan large script"},
["Kits"] = {"Khitan small script"},
["Knda"] = {"Kannada"},
["Kore"] = {"Korean (alias for Hangul + Han)"},
["Kpel"] = {"Kpelle"},
["Krai"] = {"Kirat Rai"},
["Kthi"] = {"Kaithi"},
["Lana"] = {"Tai Tham", "Lanna"},
["Laoo"] = {"Lao"},
["Latf"] = {"Latin (Fraktur variant)"},
["Latg"] = {"Latin (Gaelic variant)"},
["Latn"] = {"Latin"},
["Leke"] = {"Leke"},
["Lepc"] = {"Lepcha", "Róng"},
["Limb"] = {"Limbu"},
["Lina"] = {"Linear A"},
["Linb"] = {"Linear B"},
["Lisu"] = {"Lisu", "Fraser"},
["Loma"] = {"Loma"},
["Lyci"] = {"Lycian"},
["Lydi"] = {"Lydian"},
["Mahj"] = {"Mahajani"},
["Maka"] = {"Makasar"},
["Mand"] = {"Mandaic", "Mandaean"},
["Mani"] = {"Manichaean"},
["Marc"] = {"Marchen"},
["Maya"] = {"Mayan hieroglyphs"},
["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"},
["Mend"] = {"Mende Kikakui"},
["Merc"] = {"Meroitic Cursive"},
["Mero"] = {"Meroitic Hieroglyphs"},
["Mlym"] = {"Malayalam"},
["Modi"] = {"Modi", "Moḍī"},
["Mong"] = {"Mongolian"},
["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"},
["Mroo"] = {"Mro", "Mru"},
["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"},
["Mult"] = {"Multani"},
["Mymr"] = {"Myanmar", "Burmese"},
["Nagm"] = {"Nag Mundari"},
["Nand"] = {"Nandinagari"},
["Narb"] = {"Old North Arabian", "Ancient North Arabian"},
["Nbat"] = {"Nabataean"},
["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"},
["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"},
["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"},
["Nkoo"] = {"N’Ko", "N'Ko"},
["Nshu"] = {"Nüshu"},
["Ogam"] = {"Ogham"},
["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"},
["Onao"] = {"Ol Onal"},
["Orkh"] = {"Old Turkic", "Orkhon Runic"},
["Orya"] = {"Oriya", "Odia"},
["Osge"] = {"Osage"},
["Osma"] = {"Osmanya"},
["Ougr"] = {"Old Uyghur"},
["Palm"] = {"Palmyrene"},
["Pauc"] = {"Pau Cin Hau"},
["Pcun"] = {"Proto-Cuneiform"},
["Pelm"] = {"Proto-Elamite"},
["Perm"] = {"Old Permic"},
["Phag"] = {"Phags-pa"},
["Phli"] = {"Inscriptional Pahlavi"},
["Phlp"] = {"Psalter Pahlavi"},
["Phlv"] = {"Book Pahlavi"},
["Phnx"] = {"Phoenician"},
["Piqd"] = {"Klingon (KLI pIqaD)"},
["Plrd"] = {"Miao", "Pollard"},
["Prti"] = {"Inscriptional Parthian"},
["Psin"] = {"Proto-Sinaitic"},
["Ranj"] = {"Ranjana"},
["Rjng"] = {"Rejang", "Redjang", "Kaganga"},
["Rohg"] = {"Hanifi Rohingya"},
["Roro"] = {"Rongorongo"},
["Runr"] = {"Runic"},
["Samr"] = {"Samaritan"},
["Sara"] = {"Sarati"},
["Sarb"] = {"Old South Arabian"},
["Saur"] = {"Saurashtra"},
["Sgnw"] = {"SignWriting"},
["Shaw"] = {"Shavian", "Shaw"},
["Shrd"] = {"Sharada", "Śāradā"},
["Shui"] = {"Shuishu"},
["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"},
["Sidt"] = {"Sidetic"},
["Sind"] = {"Khudawadi", "Sindhi"},
["Sinh"] = {"Sinhala"},
["Sogd"] = {"Sogdian"},
["Sogo"] = {"Old Sogdian"},
["Sora"] = {"Sora Sompeng"},
["Soyo"] = {"Soyombo"},
["Sund"] = {"Sundanese"},
["Sunu"] = {"Sunuwar"},
["Sylo"] = {"Syloti Nagri"},
["Syrc"] = {"Syriac"},
["Syre"] = {"Syriac (Estrangelo variant)"},
["Syrj"] = {"Syriac (Western variant)"},
["Syrn"] = {"Syriac (Eastern variant)"},
["Tagb"] = {"Tagbanwa"},
["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"},
["Tale"] = {"Tai Le"},
["Talu"] = {"New Tai Lue"},
["Taml"] = {"Tamil"},
["Tang"] = {"Tangut"},
["Tavt"] = {"Tai Viet"},
["Tayo"] = {"Tai Yo"},
["Telu"] = {"Telugu"},
["Teng"] = {"Tengwar"},
["Tfng"] = {"Tifinagh", "Berber"},
["Tglg"] = {"Tagalog", "Baybayin", "Alibata"},
["Thaa"] = {"Thaana"},
["Thai"] = {"Thai"},
["Tibt"] = {"Tibetan"},
["Tirh"] = {"Tirhuta"},
["Tnsa"] = {"Tangsa"},
["Todr"] = {"Todhri"},
["Tols"] = {"Tolong Siki"},
["Toto"] = {"Toto"},
["Tutg"] = {"Tulu-Tigalari"},
["Ugar"] = {"Ugaritic"},
["Vaii"] = {"Vai"},
["Visp"] = {"Visible Speech"},
["Vith"] = {"Vithkuqi"},
["Wara"] = {"Warang Citi", "Varang Kshiti"},
["Wcho"] = {"Wancho"},
["Wole"] = {"Woleai"},
["Xpeo"] = {"Old Persian"},
["Xsux"] = {"Sumero-Akkadian cuneiform"},
["Yezi"] = {"Yezidi"},
["Yiii"] = {"Yi"},
["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"},
["Zinh"] = {"Code for inherited script"},
["Zmth"] = {"Mathematical notation"},
["Zsye"] = {"Symbols (Emoji variant)"},
["Zsym"] = {"Symbols"},
["Zxxx"] = {"Code for unwritten documents"},
["Zyyy"] = {"Code for undetermined script"},
["Zzzz"] = {"Code for uncoded script"}
}
90e7ff616b305955e94fca8cce479cc69e5277c4
Module:Language/data/iana regions
828
472
3138
3137
2023-11-09T20:07:33Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_regions]]
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["AC"] = {"Ascension Island"},
["AD"] = {"Andorra"},
["AE"] = {"United Arab Emirates"},
["AF"] = {"Afghanistan"},
["AG"] = {"Antigua and Barbuda"},
["AI"] = {"Anguilla"},
["AL"] = {"Albania"},
["AM"] = {"Armenia"},
["AO"] = {"Angola"},
["AQ"] = {"Antarctica"},
["AR"] = {"Argentina"},
["AS"] = {"American Samoa"},
["AT"] = {"Austria"},
["AU"] = {"Australia"},
["AW"] = {"Aruba"},
["AX"] = {"Åland Islands"},
["AZ"] = {"Azerbaijan"},
["BA"] = {"Bosnia and Herzegovina"},
["BB"] = {"Barbados"},
["BD"] = {"Bangladesh"},
["BE"] = {"Belgium"},
["BF"] = {"Burkina Faso"},
["BG"] = {"Bulgaria"},
["BH"] = {"Bahrain"},
["BI"] = {"Burundi"},
["BJ"] = {"Benin"},
["BL"] = {"Saint Barthélemy"},
["BM"] = {"Bermuda"},
["BN"] = {"Brunei Darussalam"},
["BO"] = {"Bolivia"},
["BQ"] = {"Bonaire, Sint Eustatius and Saba"},
["BR"] = {"Brazil"},
["BS"] = {"Bahamas"},
["BT"] = {"Bhutan"},
["BV"] = {"Bouvet Island"},
["BW"] = {"Botswana"},
["BY"] = {"Belarus"},
["BZ"] = {"Belize"},
["CA"] = {"Canada"},
["CC"] = {"Cocos (Keeling) Islands"},
["CD"] = {"The Democratic Republic of the Congo"},
["CF"] = {"Central African Republic"},
["CG"] = {"Congo"},
["CH"] = {"Switzerland"},
["CI"] = {"Côte d'Ivoire"},
["CK"] = {"Cook Islands"},
["CL"] = {"Chile"},
["CM"] = {"Cameroon"},
["CN"] = {"China"},
["CO"] = {"Colombia"},
["CP"] = {"Clipperton Island"},
["CQ"] = {"Sark"},
["CR"] = {"Costa Rica"},
["CU"] = {"Cuba"},
["CV"] = {"Cabo Verde", "Cape Verde"},
["CW"] = {"Curaçao"},
["CX"] = {"Christmas Island"},
["CY"] = {"Cyprus"},
["CZ"] = {"Czechia", "Czech Republic"},
["DE"] = {"Germany"},
["DG"] = {"Diego Garcia"},
["DJ"] = {"Djibouti"},
["DK"] = {"Denmark"},
["DM"] = {"Dominica"},
["DO"] = {"Dominican Republic"},
["DZ"] = {"Algeria"},
["EA"] = {"Ceuta, Melilla"},
["EC"] = {"Ecuador"},
["EE"] = {"Estonia"},
["EG"] = {"Egypt"},
["EH"] = {"Western Sahara"},
["ER"] = {"Eritrea"},
["ES"] = {"Spain"},
["ET"] = {"Ethiopia"},
["EU"] = {"European Union"},
["EZ"] = {"Eurozone"},
["FI"] = {"Finland"},
["FJ"] = {"Fiji"},
["FK"] = {"Falkland Islands (Malvinas)"},
["FM"] = {"Federated States of Micronesia"},
["FO"] = {"Faroe Islands"},
["FR"] = {"France"},
["GA"] = {"Gabon"},
["GB"] = {"United Kingdom"},
["GD"] = {"Grenada"},
["GE"] = {"Georgia"},
["GF"] = {"French Guiana"},
["GG"] = {"Guernsey"},
["GH"] = {"Ghana"},
["GI"] = {"Gibraltar"},
["GL"] = {"Greenland"},
["GM"] = {"Gambia"},
["GN"] = {"Guinea"},
["GP"] = {"Guadeloupe"},
["GQ"] = {"Equatorial Guinea"},
["GR"] = {"Greece"},
["GS"] = {"South Georgia and the South Sandwich Islands"},
["GT"] = {"Guatemala"},
["GU"] = {"Guam"},
["GW"] = {"Guinea-Bissau"},
["GY"] = {"Guyana"},
["HK"] = {"Hong Kong"},
["HM"] = {"Heard Island and McDonald Islands"},
["HN"] = {"Honduras"},
["HR"] = {"Croatia"},
["HT"] = {"Haiti"},
["HU"] = {"Hungary"},
["IC"] = {"Canary Islands"},
["ID"] = {"Indonesia"},
["IE"] = {"Ireland"},
["IL"] = {"Israel"},
["IM"] = {"Isle of Man"},
["IN"] = {"India"},
["IO"] = {"British Indian Ocean Territory"},
["IQ"] = {"Iraq"},
["IR"] = {"Islamic Republic of Iran"},
["IS"] = {"Iceland"},
["IT"] = {"Italy"},
["JE"] = {"Jersey"},
["JM"] = {"Jamaica"},
["JO"] = {"Jordan"},
["JP"] = {"Japan"},
["KE"] = {"Kenya"},
["KG"] = {"Kyrgyzstan"},
["KH"] = {"Cambodia"},
["KI"] = {"Kiribati"},
["KM"] = {"Comoros"},
["KN"] = {"Saint Kitts and Nevis"},
["KP"] = {"Democratic People's Republic of Korea"},
["KR"] = {"Republic of Korea"},
["KW"] = {"Kuwait"},
["KY"] = {"Cayman Islands"},
["KZ"] = {"Kazakhstan"},
["LA"] = {"Lao People's Democratic Republic"},
["LB"] = {"Lebanon"},
["LC"] = {"Saint Lucia"},
["LI"] = {"Liechtenstein"},
["LK"] = {"Sri Lanka"},
["LR"] = {"Liberia"},
["LS"] = {"Lesotho"},
["LT"] = {"Lithuania"},
["LU"] = {"Luxembourg"},
["LV"] = {"Latvia"},
["LY"] = {"Libya"},
["MA"] = {"Morocco"},
["MC"] = {"Monaco"},
["MD"] = {"Moldova"},
["ME"] = {"Montenegro"},
["MF"] = {"Saint Martin (French part)"},
["MG"] = {"Madagascar"},
["MH"] = {"Marshall Islands"},
["MK"] = {"North Macedonia"},
["ML"] = {"Mali"},
["MM"] = {"Myanmar"},
["MN"] = {"Mongolia"},
["MO"] = {"Macao"},
["MP"] = {"Northern Mariana Islands"},
["MQ"] = {"Martinique"},
["MR"] = {"Mauritania"},
["MS"] = {"Montserrat"},
["MT"] = {"Malta"},
["MU"] = {"Mauritius"},
["MV"] = {"Maldives"},
["MW"] = {"Malawi"},
["MX"] = {"Mexico"},
["MY"] = {"Malaysia"},
["MZ"] = {"Mozambique"},
["NA"] = {"Namibia"},
["NC"] = {"New Caledonia"},
["NE"] = {"Niger"},
["NF"] = {"Norfolk Island"},
["NG"] = {"Nigeria"},
["NI"] = {"Nicaragua"},
["NL"] = {"Netherlands"},
["NO"] = {"Norway"},
["NP"] = {"Nepal"},
["NR"] = {"Nauru"},
["NU"] = {"Niue"},
["NZ"] = {"New Zealand"},
["OM"] = {"Oman"},
["PA"] = {"Panama"},
["PE"] = {"Peru"},
["PF"] = {"French Polynesia"},
["PG"] = {"Papua New Guinea"},
["PH"] = {"Philippines"},
["PK"] = {"Pakistan"},
["PL"] = {"Poland"},
["PM"] = {"Saint Pierre and Miquelon"},
["PN"] = {"Pitcairn"},
["PR"] = {"Puerto Rico"},
["PS"] = {"State of Palestine"},
["PT"] = {"Portugal"},
["PW"] = {"Palau"},
["PY"] = {"Paraguay"},
["QA"] = {"Qatar"},
["RE"] = {"Réunion"},
["RO"] = {"Romania"},
["RS"] = {"Serbia"},
["RU"] = {"Russian Federation"},
["RW"] = {"Rwanda"},
["SA"] = {"Saudi Arabia"},
["SB"] = {"Solomon Islands"},
["SC"] = {"Seychelles"},
["SD"] = {"Sudan"},
["SE"] = {"Sweden"},
["SG"] = {"Singapore"},
["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"},
["SI"] = {"Slovenia"},
["SJ"] = {"Svalbard and Jan Mayen"},
["SK"] = {"Slovakia"},
["SL"] = {"Sierra Leone"},
["SM"] = {"San Marino"},
["SN"] = {"Senegal"},
["SO"] = {"Somalia"},
["SR"] = {"Suriname"},
["SS"] = {"South Sudan"},
["ST"] = {"Sao Tome and Principe"},
["SV"] = {"El Salvador"},
["SX"] = {"Sint Maarten (Dutch part)"},
["SY"] = {"Syrian Arab Republic"},
["SZ"] = {"Eswatini", "eSwatini", "Swaziland"},
["TA"] = {"Tristan da Cunha"},
["TC"] = {"Turks and Caicos Islands"},
["TD"] = {"Chad"},
["TF"] = {"French Southern Territories"},
["TG"] = {"Togo"},
["TH"] = {"Thailand"},
["TJ"] = {"Tajikistan"},
["TK"] = {"Tokelau"},
["TL"] = {"Timor-Leste"},
["TM"] = {"Turkmenistan"},
["TN"] = {"Tunisia"},
["TO"] = {"Tonga"},
["TR"] = {"Türkiye", "Turkey"},
["TT"] = {"Trinidad and Tobago"},
["TV"] = {"Tuvalu"},
["TW"] = {"Taiwan, Province of China"},
["TZ"] = {"United Republic of Tanzania"},
["UA"] = {"Ukraine"},
["UG"] = {"Uganda"},
["UM"] = {"United States Minor Outlying Islands"},
["UN"] = {"United Nations"},
["US"] = {"United States"},
["UY"] = {"Uruguay"},
["UZ"] = {"Uzbekistan"},
["VA"] = {"Holy See (Vatican City State)"},
["VC"] = {"Saint Vincent and the Grenadines"},
["VE"] = {"Venezuela"},
["VG"] = {"British Virgin Islands"},
["VI"] = {"U.S. Virgin Islands"},
["VN"] = {"Viet Nam"},
["VU"] = {"Vanuatu"},
["WF"] = {"Wallis and Futuna"},
["WS"] = {"Samoa"},
["YE"] = {"Yemen"},
["YT"] = {"Mayotte"},
["ZA"] = {"South Africa"},
["ZM"] = {"Zambia"},
["ZW"] = {"Zimbabwe"},
["001"] = {"World"},
["002"] = {"Africa"},
["003"] = {"North America"},
["005"] = {"South America"},
["009"] = {"Oceania"},
["011"] = {"Western Africa"},
["013"] = {"Central America"},
["014"] = {"Eastern Africa"},
["015"] = {"Northern Africa"},
["017"] = {"Middle Africa"},
["018"] = {"Southern Africa"},
["019"] = {"Americas"},
["021"] = {"Northern America"},
["029"] = {"Caribbean"},
["030"] = {"Eastern Asia"},
["034"] = {"Southern Asia"},
["035"] = {"South-Eastern Asia"},
["039"] = {"Southern Europe"},
["053"] = {"Australia and New Zealand"},
["054"] = {"Melanesia"},
["057"] = {"Micronesia"},
["061"] = {"Polynesia"},
["142"] = {"Asia"},
["143"] = {"Central Asia"},
["145"] = {"Western Asia"},
["150"] = {"Europe"},
["151"] = {"Eastern Europe"},
["154"] = {"Northern Europe"},
["155"] = {"Western Europe"},
["202"] = {"Sub-Saharan Africa"},
["419"] = {"Latin America and the Caribbean"}
}
38ed555cd3945668fad81deefcc2ce6558bff172
Module:Language/data/iana variants
828
473
3140
3139
2023-11-09T20:07:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_variants]]
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["1606nict"] = {
["descriptions"] = {"Late Middle French (to 1606)"},
["prefixes"] = {"frm"},
},
["1694acad"] = {
["descriptions"] = {"Early Modern French"},
["prefixes"] = {"fr"},
},
["1901"] = {
["descriptions"] = {"Traditional German orthography"},
["prefixes"] = {"de"},
},
["1959acad"] = {
["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"},
["prefixes"] = {"be"},
},
["1994"] = {
["descriptions"] = {"Standardized Resian orthography"},
["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"},
},
["1996"] = {
["descriptions"] = {"German orthography of 1996"},
["prefixes"] = {"de"},
},
["abl1943"] = {
["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"},
["prefixes"] = {"pt-br"},
},
["akuapem"] = {
["descriptions"] = {"Akuapem Twi"},
["prefixes"] = {"tw"},
},
["alalc97"] = {
["descriptions"] = {"ALA-LC Romanization, 1997 edition"},
["prefixes"] = {},
},
["aluku"] = {
["descriptions"] = {"Aluku dialect", "Boni dialect"},
["prefixes"] = {"djk"},
},
["ao1990"] = {
["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"},
["prefixes"] = {"pt", "gl"},
},
["aranes"] = {
["descriptions"] = {"Aranese"},
["prefixes"] = {"oc"},
},
["arkaika"] = {
["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"},
["prefixes"] = {"eo"},
},
["asante"] = {
["descriptions"] = {"Asante Twi", "Ashanti Twi"},
["prefixes"] = {"tw"},
},
["auvern"] = {
["descriptions"] = {"Auvergnat"},
["prefixes"] = {"oc"},
},
["baku1926"] = {
["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"},
["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"},
},
["balanka"] = {
["descriptions"] = {"The Balanka dialect of Anii"},
["prefixes"] = {"blo"},
},
["barla"] = {
["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["basiceng"] = {
["descriptions"] = {"Basic English"},
["prefixes"] = {"en"},
},
["bauddha"] = {
["descriptions"] = {"Buddhist Hybrid Sanskrit"},
["prefixes"] = {"sa"},
},
["bciav"] = {
["descriptions"] = {"BCI Blissymbolics AV"},
["prefixes"] = {"zbl"},
},
["bcizbl"] = {
["descriptions"] = {"BCI Blissymbolics"},
["prefixes"] = {"zbl"},
},
["biscayan"] = {
["descriptions"] = {"Biscayan dialect of Basque"},
["prefixes"] = {"eu"},
},
["biske"] = {
["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["blasl"] = {
["descriptions"] = {"Black American Sign Language dialect"},
["prefixes"] = {"ase", "sgn-ase"},
},
["bohoric"] = {
["descriptions"] = {"Slovene in Bohorič alphabet"},
["prefixes"] = {"sl"},
},
["boont"] = {
["descriptions"] = {"Boontling"},
["prefixes"] = {"en"},
},
["bornholm"] = {
["descriptions"] = {"Bornholmsk"},
["prefixes"] = {"da"},
},
["cisaup"] = {
["descriptions"] = {"Cisalpine"},
["prefixes"] = {"oc"},
},
["colb1945"] = {
["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"},
["prefixes"] = {"pt"},
},
["cornu"] = {
["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"},
["prefixes"] = {"en"},
},
["creiss"] = {
["descriptions"] = {"Occitan variants of the Croissant area"},
["prefixes"] = {"oc"},
},
["dajnko"] = {
["descriptions"] = {"Slovene in Dajnko alphabet"},
["prefixes"] = {"sl"},
},
["ekavsk"] = {
["descriptions"] = {"Serbian with Ekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["emodeng"] = {
["descriptions"] = {"Early Modern English (1500-1700)"},
["prefixes"] = {"en"},
},
["fonipa"] = {
["descriptions"] = {"International Phonetic Alphabet"},
["prefixes"] = {},
},
["fonkirsh"] = {
["descriptions"] = {"Kirshenbaum Phonetic Alphabet"},
["prefixes"] = {},
},
["fonnapa"] = {
["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"},
["prefixes"] = {},
},
["fonupa"] = {
["descriptions"] = {"Uralic Phonetic Alphabet"},
["prefixes"] = {},
},
["fonxsamp"] = {
["descriptions"] = {"X-SAMPA transcription"},
["prefixes"] = {},
},
["gallo"] = {
["descriptions"] = {"Gallo"},
["prefixes"] = {"fr"},
},
["gascon"] = {
["descriptions"] = {"Gascon"},
["prefixes"] = {"oc"},
},
["grclass"] = {
["descriptions"] = {"Classical Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["grital"] = {
["descriptions"] = {"Italian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"},
},
["grmistr"] = {
["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"},
["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"},
},
["hepburn"] = {
["descriptions"] = {"Hepburn romanization"},
["prefixes"] = {"ja-latn"},
},
["hognorsk"] = {
["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"},
["prefixes"] = {"nn"},
},
["hsistemo"] = {
["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
},
["ijekavsk"] = {
["descriptions"] = {"Serbian with Ijekavian pronunciation"},
["prefixes"] = {"sr", "sr-latn", "sr-cyrl"},
},
["itihasa"] = {
["descriptions"] = {"Epic Sanskrit"},
["prefixes"] = {"sa"},
},
["ivanchov"] = {
["descriptions"] = {"Bulgarian in 1899 orthography"},
["prefixes"] = {"bg"},
},
["jauer"] = {
["descriptions"] = {"Jauer dialect of Romansh"},
["prefixes"] = {"rm"},
},
["jyutping"] = {
["descriptions"] = {"Jyutping Cantonese Romanization"},
["prefixes"] = {"yue"},
},
["kkcor"] = {
["descriptions"] = {"Common Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["kociewie"] = {
["descriptions"] = {"The Kociewie dialect of Polish"},
["prefixes"] = {"pl"},
},
["kscor"] = {
["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"},
["prefixes"] = {"kw"},
},
["laukika"] = {
["descriptions"] = {"Classical Sanskrit"},
["prefixes"] = {"sa"},
},
["lemosin"] = {
["descriptions"] = {"Limousin"},
["prefixes"] = {"oc"},
},
["lengadoc"] = {
["descriptions"] = {"Languedocien"},
["prefixes"] = {"oc"},
},
["lipaw"] = {
["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["ltg1929"] = {
["descriptions"] = {"The Latgalian language orthography codified in 1929"},
["prefixes"] = {"ltg"},
},
["ltg2007"] = {
["descriptions"] = {"The Latgalian language orthography codified in the language law in 2007"},
["prefixes"] = {"ltg"},
},
["luna1918"] = {
["descriptions"] = {"Post-1917 Russian orthography"},
["prefixes"] = {"ru"},
},
["metelko"] = {
["descriptions"] = {"Slovene in Metelko alphabet"},
["prefixes"] = {"sl"},
},
["monoton"] = {
["descriptions"] = {"Monotonic Greek"},
["prefixes"] = {"el"},
},
["ndyuka"] = {
["descriptions"] = {"Ndyuka dialect", "Aukan dialect"},
["prefixes"] = {"djk"},
},
["nedis"] = {
["descriptions"] = {"Natisone dialect", "Nadiza dialect"},
["prefixes"] = {"sl"},
},
["newfound"] = {
["descriptions"] = {"Newfoundland English"},
["prefixes"] = {"en-ca"},
},
["nicard"] = {
["descriptions"] = {"Niçard"},
["prefixes"] = {"oc"},
},
["njiva"] = {
["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["nulik"] = {
["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"},
["prefixes"] = {"vo"},
},
["osojs"] = {
["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["oxendict"] = {
["descriptions"] = {"Oxford English Dictionary spelling"},
["prefixes"] = {"en"},
},
["pahawh2"] = {
["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh3"] = {
["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pahawh4"] = {
["descriptions"] = {"Pahawh Hmong Final Version orthography"},
["prefixes"] = {"mww", "hnj"},
},
["pamaka"] = {
["descriptions"] = {"Pamaka dialect"},
["prefixes"] = {"djk"},
},
["peano"] = {
["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"},
["prefixes"] = {"la"},
},
["petr1708"] = {
["descriptions"] = {"Petrine orthography"},
["prefixes"] = {"ru"},
},
["pinyin"] = {
["descriptions"] = {"Pinyin romanization"},
["prefixes"] = {"zh-latn", "bo-latn"},
},
["polyton"] = {
["descriptions"] = {"Polytonic Greek"},
["prefixes"] = {"el"},
},
["provenc"] = {
["descriptions"] = {"Provençal"},
["prefixes"] = {"oc"},
},
["puter"] = {
["descriptions"] = {"Puter idiom of Romansh"},
["prefixes"] = {"rm"},
},
["rigik"] = {
["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"},
["prefixes"] = {"vo"},
},
["rozaj"] = {
["descriptions"] = {"Resian", "Resianic", "Rezijan"},
["prefixes"] = {"sl"},
},
["rumgr"] = {
["descriptions"] = {"Rumantsch Grischun"},
["prefixes"] = {"rm"},
},
["scotland"] = {
["descriptions"] = {"Scottish Standard English"},
["prefixes"] = {"en"},
},
["scouse"] = {
["descriptions"] = {"Scouse"},
["prefixes"] = {"en"},
},
["simple"] = {
["descriptions"] = {"Simplified form"},
["prefixes"] = {},
},
["solba"] = {
["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"},
["prefixes"] = {"sl-rozaj"},
},
["sotav"] = {
["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"},
["prefixes"] = {"kea"},
},
["spanglis"] = {
["descriptions"] = {"Spanglish"},
["prefixes"] = {"en", "es"},
},
["surmiran"] = {
["descriptions"] = {"Surmiran idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sursilv"] = {
["descriptions"] = {"Sursilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["sutsilv"] = {
["descriptions"] = {"Sutsilvan idiom of Romansh"},
["prefixes"] = {"rm"},
},
["synnejyl"] = {
["descriptions"] = {"Synnejysk", "South Jutish"},
["prefixes"] = {"da"},
},
["tarask"] = {
["descriptions"] = {"Belarusian in Taraskievica orthography"},
["prefixes"] = {"be"},
},
["tongyong"] = {
["descriptions"] = {"Tongyong Pinyin romanization"},
["prefixes"] = {"zh-latn"},
},
["tunumiit"] = {
["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"},
["prefixes"] = {"kl"},
},
["uccor"] = {
["descriptions"] = {"Unified Cornish orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ucrcor"] = {
["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"},
["prefixes"] = {"kw"},
},
["ulster"] = {
["descriptions"] = {"Ulster dialect of Scots"},
["prefixes"] = {"sco"},
},
["unifon"] = {
["descriptions"] = {"Unifon phonetic alphabet"},
["prefixes"] = {"en", "hup", "kyh", "tol", "yur"},
},
["vaidika"] = {
["descriptions"] = {"Vedic Sanskrit"},
["prefixes"] = {"sa"},
},
["valencia"] = {
["descriptions"] = {"Valencian"},
["prefixes"] = {"ca"},
},
["vallader"] = {
["descriptions"] = {"Vallader idiom of Romansh"},
["prefixes"] = {"rm"},
},
["vecdruka"] = {
["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"},
["prefixes"] = {"lv"},
},
["vivaraup"] = {
["descriptions"] = {"Vivaro-Alpine"},
["prefixes"] = {"oc"},
},
["wadegile"] = {
["descriptions"] = {"Wade-Giles romanization"},
["prefixes"] = {"zh-latn"},
},
["xsistemo"] = {
["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"},
["prefixes"] = {"eo"},
}
}
fe5d6330175026010e0d8d9aef185dbd571c3d57
Module:Language/data/iana suppressed scripts
828
474
3142
3141
2023-11-09T20:07:34Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Language/data/iana_suppressed_scripts]]
Scribunto
text/plain
-- File-Date: 2023-10-16
return {
["Arab"] = {"ar", "fa", "ps", "ur"},
["Armn"] = {"hy"},
["Beng"] = {"as", "bn"},
["Blis"] = {"zbl"},
["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"},
["Deva"] = {"hi", "mr", "ne", "kok", "mai"},
["Ethi"] = {"am", "ti"},
["Geor"] = {"ka"},
["Grek"] = {"el"},
["Gujr"] = {"gu"},
["Guru"] = {"pa"},
["Hebr"] = {"he", "iw", "yi"},
["Jpan"] = {"ja"},
["Khmr"] = {"km"},
["Knda"] = {"kn"},
["Kore"] = {"ko"},
["Laoo"] = {"lo"},
["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo",
"es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn",
"gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb",
"ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd",
"nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn",
"ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv",
"sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb",
"frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh",
"tpi", "tvl"},
["Mlym"] = {"ml"},
["Mymr"] = {"my"},
["Nkoo"] = {"nqo"},
["Orya"] = {"or"},
["Sinh"] = {"si"},
["Taml"] = {"ta"},
["Telu"] = {"te"},
["Thaa"] = {"dv"},
["Thai"] = {"th"},
["Tibt"] = {"dz"}
}
1708132b06b72c9ca4217aaa0ddc8a1e8b234646
Template:Transclusionless
10
1686
3144
3143
2023-11-09T20:07:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Transclusionless]]
wikitext
text/x-wiki
{{Mbox|text=This template {{Yesno|{{{should|}}}|yes=should|no=may}} have no transclusions, because {{{reason|it is substituted by a tool or script, it is used as part of a short-term or less active Wikipedia process, or for some other reason}}}.}}<!--
--><includeonly>{{#switch: {{SUBPAGENAME}} |doc |sandbox= |[[Category:Wikipedia transclusionless templates]]}}</includeonly><noinclude>{{Documentation}}</noinclude>
8a93407123b10ff7ce9ba5557b71bda67df7ec45
Template:UF-geo-other
10
1687
3146
3145
2023-11-09T20:07:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:UF-geo-other]]
wikitext
text/x-wiki
The HTML markup produced by this template emits an [[Geo (microformat)| Geo microformat]], which makes the location's [[Geographic coordinate system|coordinates]] (latitude & longitude) [[Parsing|parsable]], so that they can be, say, looked up on a map. As yet, [http://microformats.org/wiki/geo-extension-strawman the standard for doing this] for off-world bodies is still under development, but is supported in some microformat parsers (e.g. [http://buzzword.org.uk/swignition/ Swignition]). For more information about the use of [[microformat]]s on Wikipedia, please see [[WP:UF|the microformat project]].
Geo is usually produced by calling {{tl|coord}}, and uses HTML classes:
{{Flatlist|
*body
*geo
*latitude
*longitude
}}
'''Please do not rename or remove these classes.'''
When giving coordinates, please don't be [[Wikipedia:WikiProject Geographical coordinates#Precision|overly precise]].
[[Category:Templates generating Geo]]<noinclude>
[[Category:Microformat (uF) message templates]]
</noinclude>
613bb35611b91e35da4f93aa2271dff142885821
Template:GeoTemplate/doc
10
1688
3148
3147
2023-11-09T20:07:47Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:GeoTemplate/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
{{transclusionless|reason=this template is used by [[:mw:GeoHack]] to display maps on pages linked from, but outside of, the English Wikipedia. The GeoTemplate family of templates is used by {{tl|coord}} links on articles about places on Earth and on extraterrestrial bodies. See {{tl|Surface features of space objects}} for links to many such articles.}}
See [[:mw:GeoHack]] for more information about the GeoTemplate family of templates and how they are used.
== Microformat ==
{{UF-geo-other}}
[[Category:WikiProject Geographical coordinates]]
[[Category:GeoTemplates]]
[[Category:External link templates]]
af4c59f784148170319b0a83bfbec60a1b6dcc58
Template:GeoTemplate/styles.css
10
1689
3150
3149
2023-11-09T20:07:48Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:GeoTemplate/styles.css]]
sanitized-css
text/css
.geoservices tr:nth-child(odd) {
background: #f0f0f0;
}
1202731d4eca686823cf4e9af4933104fe73ccb6
Template:Bulletedlist
10
1690
3153
3152
2023-11-09T20:28:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Bulletedlist]]
wikitext
text/x-wiki
#REDIRECT [[Template:Bulleted list]]
fc3e32ae77e74a144ca12970d1e03f8429824b63
Module:Transclusion count/data/K
828
1691
3156
3155
2023-11-09T20:32:09Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/K]]
Scribunto
text/plain
return {
["KAZ"] = 4500,
["KEN"] = 3500,
["KIA"] = 8000,
["KOR"] = 7400,
["K_League_player"] = 2100,
["Keep_local"] = 6000,
["Keggcite"] = 4300,
["Kent_tasks"] = 4600,
["Key_press"] = 3700,
["Key_press/styles.css"] = 3800,
["KillMarkers"] = 44000,
["Ko-hhrm"] = 5500,
["Korean"] = 14000,
["Module:Key"] = 3800,
}
d8aa48998c354abd6c316d082ff432f36e3e4b37
Template:KIA/doc
10
1692
3158
3157
2023-11-09T20:32:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:KIA/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE -->
{{#ifeq:{{SUBPAGENAME}}|sandbox||{{High-use}}}}
{{Notice |{{about|the "[[killed in action]]" symbol|the template for the automobile company|Template:Kia}}}}
This template is used after a person's name in the <code>{{tl|Infobox military conflict}}</code> template to indicate that the person was [[killed in action]].
== Usage ==
<code>{{tl|KIA}}</code> displays dagger symbol: {{KIA}}<br/>
<code>{{tlx|KIA|<nowiki>bold=no</nowiki>}}</code> does not bold the symbol: {{KIA|bold=no}}<br/>
<code>{{tlx|KIA|<nowiki>alt=yes</nowiki>}}</code> (or <code>{{tlx|KIA2}}</code> for short) displays the abbreviation: {{KIA|alt=yes}}
The text displayed is linked to [[Killed in action]].
== See also ==
*{{tl|DOW}}
*{{tl|Executed}}
*{{tl|Assassinated}}
*{{tl|POW}}
*{{tl|Surrendered}}
*{{tl|WIA}}
*{{tl|MIA}}
*{{tl|Natural Causes}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!--Categories below here, please; interwikis to Wikidata.-->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
18858e746e8994ff29072294d2b27dc74c7983b4
Module:Disambiguation/templates
828
156
3160
3159
2023-11-09T20:32:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Disambiguation/templates]]
Scribunto
text/plain
-- This page contains a table of all disambiguation templates and their
-- redirects. Templates names are capitalized, and the Template: prefix is
-- removed. Templates are grouped with the main template first, followed by
-- its redirects.
return {
["Disambiguation"] = true,
["Begriffsklärung"] = true,
["DAB"] = true,
["Dab"] = true,
["Dabpage"] = true,
["Dbig"] = true,
["Dis"] = true,
["Disam"] = true,
["Disamb"] = true,
["Disambig"] = true,
["Disambig misspelling"] = true,
["Disambig-plants"] = true,
["Disambiguation page"] = true,
["Meta disambig"] = true,
["Project disambiguation"] = true,
["Shortcut disambig"] = true,
["WP disambig"] = true,
["WP-disambig"] = true,
["Wikipedia disambiguation"] = true,
["Airport disambiguation"] = true,
["Airport disambig"] = true,
["Biology disambiguation"] = true,
["Call sign disambiguation"] = true,
["Callsigndis"] = true,
["Caselaw disambiguation"] = true,
["Case law disambiguation"] = true,
["Chinese title disambiguation"] = true,
["CJKVdab"] = true,
["Chinese title disambig"] = true,
["Disambig-Chinese-char-title"] = true,
["Disambiguation cleanup"] = true,
["Cleanup disambig"] = true,
["Cleanup disambiguation"] = true,
["CleanupDisambig"] = true,
["Dab cleanup"] = true,
["Dab-cleanup"] = true,
["Dabclean"] = true,
["Disamb-cleanup"] = true,
["Disambcleanup"] = true,
["Disambig cleanup"] = true,
["Disambig-CU"] = true,
["Disambig-cleanup"] = true,
["Disambig-cu"] = true,
["Disambigcleanup"] = true,
["Disambiguate-cleanup"] = true,
["Disambiguation-cleanup"] = true,
["Geodis-cleanup"] = true,
["Genus disambiguation"] = true,
["Genus disambig"] = true,
["Hangul title disambiguation"] = true,
["Hospital disambiguation"] = true,
["Hospitaldis"] = true,
["Human name disambiguation"] = true,
["Bio-dab"] = true,
["HNDIS"] = true,
["HnDis"] = true,
["Hndab"] = true,
["Hndis"] = true,
["Hndisambig"] = true,
["Human name dab"] = true,
["Personal name"] = true,
["Personal name disambiguation"] = true,
["Human name disambiguation cleanup"] = true,
["Hndis-cleanup"] = true,
["Personal name disambiguation cleanup"] = true,
["Hurricane season disambiguation"] = true,
["Letter–number combination disambiguation"] = true,
["LNCD"] = true,
["Letter-Number Combination Disambiguation"] = true,
["Letter-Number combination disambiguation"] = true,
["Letter-NumberCombDisambig"] = true,
["Letter-NumberCombdisambig"] = true,
["Letter-NumberCombinationDisambiguation"] = true,
["Letter-number combination disambiguation"] = true,
["Mathematical disambiguation"] = true,
["Math dab"] = true,
["Math disambiguation"] = true,
["Mathdab"] = true,
["Mathematics disambiguation"] = true,
["Maths disambiguation"] = true,
["Military unit disambiguation"] = true,
["Mil-unit-dis"] = true,
["Mil-unit-disambig"] = true,
["Music disambiguation"] = true,
["Music disambig"] = true,
["Number disambiguation"] = true,
["Numberdis"] = true,
["Numdab"] = true,
["Numdisambig"] = true,
["Opus number disambiguation"] = true,
["Phonetics disambiguation"] = true,
["Place name disambiguation"] = true,
["DisambigG"] = true,
["DisambigGeo"] = true,
["Disambiggeo"] = true,
["Geo-dis"] = true,
["Geodab"] = true,
["Geodis"] = true,
["Geodisambig"] = true,
["Geographic disambiguation"] = true,
["Portal disambiguation"] = true,
["Portal disambig"] = true,
["Road disambiguation"] = true,
["Roaddis"] = true,
["School disambiguation"] = true,
["School disambig"] = true,
["Schooldab"] = true,
["Schooldis"] = true,
["Species Latin name abbreviation disambiguation"] = true,
["Species Latin name disambiguation"] = true,
["LatinNameDisambig"] = true,
["SpeciesLatinNameDisambig"] = true,
["Station disambiguation"] = true,
["Station dab"] = true,
["Synagogue disambiguation"] = true,
["Taxonomic authority disambiguation"] = true,
["Taxonomic authorities disambiguation"] = true,
["Taxonomy disambiguation"] = true,
["Species disambiguation"] = true,
["Template disambiguation"] = true,
["Template ambiguous"] = true,
["Template dab"] = true,
["Template disambig"] = true,
["WoO number disambiguation"] = true,
}
2cbee297a6101d351aacad836d4c2061407218dd
Template:POW
10
1693
3162
3161
2023-11-09T21:09:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:POW]]
wikitext
text/x-wiki
([[Prisoner of war|{{abbr|POW|Prisoner of war}}]])<noinclude>
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! -->
{{Documentation}}
</noinclude>
a3d34013543a96d966a6abd9a34f756a40c80826
Template:POW/doc
10
1694
3164
3163
2023-11-09T21:10:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:POW/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
== Information ==
This template is used to indicate commanders who were captured or surrendered in {{tl|Infobox military conflict}}.
== Usage ==
<code>{{tl|POW}}</code> produces: {{POW}}
== See also ==
*{{tl|WIA}}
*{{tl|Executed}}
*{{tl|Surrendered}}
*{{tl|KIA}}
*{{tl|DOW}}
*{{tl|MIA}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!-- Categories below this line, please; interwikis at Wikidata -->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
d1623cfcea1bfa435326fcdeec6262db4ab599c8
Containment War Against Wickedonezz
0
1640
3167
3166
2023-11-09T21:15:21Z
Führerredux
2
Protected "[[Containment War Against Wickedonezz]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W}}
| map_size = 300
| map_marksize = 7
| date = 8, November 2023
| territory = The Modder's Coalition gains control of the rest of the world.
| result = Modder's Coalition Victory
| combatant1 = The Modder's Coalition{{bulletedlist
| Führerredux Team
| Red Dusk Team
| Judgement Day Team
| Other Associates
}}
| combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames)
| commander1 = <strong>Führerredux team</strong>{{bulletedlist
| Dax
| Thanasis Lanaras
| The Detailed Bread
| Pascal
| Denis_MD
}}
<strong>Red Dusk team</strong>{{bulletedlist
| comrade doggo
| DUKESLAYER
| sifi-gayming
| The Masked Hungarian
}}
<strong>Judgement Day team</strong>{{bulletedlist
| Copernicus
| GrievingOhio150
| GDestruction
| Pascal
}}
<strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist
| Wickedonezz {{KIA}}
| KillerKemzstar
| Bookthecook
| Lucien
}}
<strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}}
| casualties2 = Wickedonnezz {{KIA}}
KillerKemzstar {{POW}}
Lucien {{POW}}
}}
5e0e1ee5129325cf76738f611b2f7a942b63d6f5
3172
3167
2023-11-09T22:54:04Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox military conflict
| conflict = Containment War Against Wickedonezz
| place = [[Adam Dressler|The Führer's]] office, Berlin, Germany.
| partof = [[HOI4 Community conflicts against Wickedonezz]]
| map_type = USA Minnesota
| map_relief = yes
| map_label = Cambridge
| coordinates = {{Coord|45|33|56|N|93|13|34|W}}
| map_size = 300
| map_marksize = 7
| date = 8, November 2023
| territory = The Modder's Coalition gains control of the rest of the world.
| result = Modder's Coalition Victory
| combatant1 = The Modder's Coalition{{bulletedlist
| Führerredux Team
| Red Dusk Team
| Judgement Day Team
| Other Associates
}}
| combatant2 = FuhrerReich: Ice Cold (later: <br>FuhrerReich: Infernal Flames)
| commander1 = <strong>Führerredux team</strong>{{bulletedlist
| Dax
| Thanasis Lanaras
| The Detailed Bread
| Pascal
| Denis_MD
}}
<strong>Red Dusk team</strong>{{bulletedlist
| comrade doggo
| DUKESLAYER
| sifi-gayming
| The Masked Hungarian
}}
<strong>Judgement Day team</strong>{{bulletedlist
| Copernicus
| GrievingOhio150
| GDestruction
| Pascal
| meth
}}
<strong>Ex-Ice Cold Developers</strong><br>(on opposing side up until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] was formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| commander2 = <strong>FuhrerReich: Ice Cold team</strong>{{bulletedlist
| Wickedonezz {{KIA}}
| KillerKemzstar
| Bookthecook
| Lucien
}}
<strong>Ex-Ice Cold Developers</strong><br>(until [[Second anti-Ice Cold conflict|the Second anti-Ice Cold Coalition]] formed)
{{bulletedlist
| Professional Janny Curb stomper
| Pol
| BozuyukKeresteFabrikası
| Panzerschokolade Addict
}}
| combatant1a = Associates{{bulletedlist|FuhrerReich: Ice Cold ex developers}}
| casualties2 = Wickedonnezz {{KIA}}
KillerKemzstar {{POW}}
Lucien {{POW}}
}}
b0d287a44ed4ab7f80c1ea1dc34db85189b6b239
MediaWiki:Common.css
8
240
3168
2969
2023-11-09T21:23:50Z
Führerredux
2
css
text/css
CSS placed here will be applied to all skins
* Styling inside .mw-parser-output should generally use TemplateStyles.
Reset italic styling set by user agent
cite,
dfn {
font-style: inherit;
}
Straight quote marks for <q>
q {
quotes: '"' '"' "'" "'";
}
Avoid collision of blockquote with floating elements by swapping margin and padding
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
Consistent size for <small>, <sub> and <sup>
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup {
font-size: 80%;
}
Same spacing for indented and unindented paragraphs on talk pages
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
Reduce page jumps by hiding collapsed/dismissed content
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
Avoid FOUC/reflows on collapsed elements.
This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115).
TODO: Use :is() selector at some reasonable future when support is good for Most Clients
Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
Hide charinsert base for those not using the gadget
#editpage-specialchars {
display: none;
}
Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
ol.references {
font-size: 90%;
margin-bottom: 0.5em;
}
Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
span[ rel="mw:referencedBy" ] {
counter-reset: mw-ref-linkback 0;
}
span[ rel='mw:referencedBy' ] > a::before {
content: counter( mw-ref-linkback, lower-alpha );
font-size: 80%;
font-weight: bold;
font-style: italic;
}
a[ rel="mw:referencedBy" ]::before {
font-weight: bold;
content: "^";
}
span[ rel="mw:referencedBy" ]::before {
content: "^ ";
}
.mw-ref > a[data-mw-group=lower-alpha]::after {
content: '[' counter( mw-Ref, lower-alpha ) ']';
}
.mw-ref > a[data-mw-group=upper-alpha]::after {
content: '[' counter( mw-Ref, upper-alpha ) ']';
}
.mw-ref > a[data-mw-group=decimal]::after {
content: '[' counter( mw-Ref, decimal ) ']';
}
.mw-ref > a[data-mw-group=lower-roman]::after {
content: '[' counter( mw-Ref, lower-roman ) ']';
}
.mw-ref > a[data-mw-group=upper-roman]::after {
content: '[' counter( mw-Ref, upper-roman ) ']';
}
.mw-ref > a[data-mw-group=lower-greek]::after {
content: '[' counter( mw-Ref, lower-greek ) ']';
}
Styling for jQuery makeCollapsible, matching that of collapseButton
.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
font-weight: normal;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
@noflip
float: left;
}
Lists in wikitable data cells are always left-aligned
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
@noflip
text-align: left;
}
Change the external link icon to a PDF icon for all PDF files
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
@noflip
padding: 8px 18px 8px 0;
}
System messages styled similarly to fmbox
for .mw-warning-with-logexcerpt, behavior of this line differs between
* the edit-protected notice and the special:Contribs for blocked users
* The latter has specificity of 3 classes so we have to triple up here.
.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
default colors for partial block message
gotta get over the hump introduced by the triple class above
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {
border-color: #fc3;
background-color: #fef6e7;
}
Minimum thumb width
figure[typeof~='mw:File/Thumb'],
figure[typeof~='mw:File/Frame'],
.thumbinner {
min-width: 100px;
}
Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views.
#mw-subcategories,
#mw-pages,
#mw-category-media,
#filehistory,
#wikiPreview,
#wikiDiff {
clear: both;
}
Styling for tags in changes pages
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]].
.checkuser-show,
.sysop-show,
.abusefilter-show,
.abusefilter-helper-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive.
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
Remove bullets when there are multiple edit page warnings
ul.permissions-errors {
margin: 0;
}
ul.permissions-errors > li {
list-style: none;
}
larger inline math
span.mwe-math-mathml-inline {
font-size: 118%;
}
Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
@media screen {
Put a chequered background behind images, only visible if they have transparency,
* except on main, user, and portal namespaces
body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode
#siteSub {
display: block;
}
}
Hide FlaggedRevs notice UI when there are no pending changes
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced,
"Temporary" to remove links in sidebar T255381
#t-upload,
Hide broken download box on Special:Book pending T285400
.mw-special-Book #coll-downloadbox {
display: none;
}
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-above,
.infobox .infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
padding: 0.2em;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
Normal font styling for wikitable row headers with scope="row" tag
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
@noflip
text-align: left;
}
Remove underlines from certain links
.nounderlines a,
.IPA a:link,
.IPA a:visited {
text-decoration: none !important;
}
Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a)
.nowrap,
.nowraplinks a {
white-space: nowrap;
}
But allow wrapping where desired:
.wrap,
.wraplinks a {
white-space: normal;
}
texhtml class for inline math (based on generic times-serif class)
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
white-space: nowrap;
Force tabular and lining display for texhtml
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
span.texhtml span.texhtml {
font-size: 100%;
}
@media screen {
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
8917880f435e31d1d842a8d55193a6ff12d8338f
3169
3168
2023-11-09T21:24:13Z
Führerredux
2
css
text/css
/*
* This is the CSS common to all desktop skins on en.Wikipedia.
* Styling inside .mw-parser-output should generally use TemplateStyles.
*/
/* Reset italic styling set by user agent */
cite,
dfn {
font-style: inherit;
}
/* Straight quote marks for <q> */
q {
quotes: '"' '"' "'" "'";
}
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
blockquote {
overflow: hidden;
margin: 1em 0;
padding: 0 40px;
}
/* Consistent size for <small>, <sub> and <sup> */
small {
font-size: 85%;
}
.mw-body-content sub,
.mw-body-content sup {
font-size: 80%;
}
/* Same spacing for indented and unindented paragraphs on talk pages */
.ns-talk .mw-body-content dd {
margin-top: 0.4em;
margin-bottom: 0.4em;
}
/* Reduce page jumps by hiding collapsed/dismissed content */
.client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
/* Avoid FOUC/reflows on collapsed elements. */
/* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */
/* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */
/* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
.client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
/* Hide charinsert base for those not using the gadget */
#editpage-specialchars {
display: none;
}
/* Make the list of references smaller
* Keep in sync with Template:Refbegin/styles.css
* And Template:Reflist/styles.css
*/
ol.references {
font-size: 90%;
margin-bottom: 0.5em;
}
/* Cite customizations for Parsoid
* Once everything uses the one true parser these are just customizations
*/
span[ rel="mw:referencedBy" ] {
counter-reset: mw-ref-linkback 0;
}
span[ rel='mw:referencedBy' ] > a::before {
content: counter( mw-ref-linkback, lower-alpha );
font-size: 80%;
font-weight: bold;
font-style: italic;
}
a[ rel="mw:referencedBy" ]::before {
font-weight: bold;
content: "^";
}
span[ rel="mw:referencedBy" ]::before {
content: "^ ";
}
.mw-ref > a[data-mw-group=lower-alpha]::after {
content: '[' counter( mw-Ref, lower-alpha ) ']';
}
.mw-ref > a[data-mw-group=upper-alpha]::after {
content: '[' counter( mw-Ref, upper-alpha ) ']';
}
.mw-ref > a[data-mw-group=decimal]::after {
content: '[' counter( mw-Ref, decimal ) ']';
}
.mw-ref > a[data-mw-group=lower-roman]::after {
content: '[' counter( mw-Ref, lower-roman ) ']';
}
.mw-ref > a[data-mw-group=upper-roman]::after {
content: '[' counter( mw-Ref, upper-roman ) ']';
}
.mw-ref > a[data-mw-group=lower-greek]::after {
content: '[' counter( mw-Ref, lower-greek ) ']';
}
/* Styling for jQuery makeCollapsible, matching that of collapseButton */
.mw-parser-output .mw-collapsible-toggle:not(.mw-ui-button) {
font-weight: normal;
padding-right: 0.2em;
padding-left: 0.2em;
}
.mw-collapsible-leftside-toggle .mw-collapsible-toggle {
/* @noflip */
float: left;
}
/* Lists in wikitable data cells are always left-aligned */
.wikitable td ul,
.wikitable td ol,
.wikitable td dl {
/* @noflip */
text-align: left;
}
/* Change the external link icon to a PDF icon for all PDF files */
.mw-parser-output a[href$=".pdf"].external,
.mw-parser-output a[href*=".pdf?"].external,
.mw-parser-output a[href*=".pdf#"].external,
.mw-parser-output a[href$=".PDF"].external,
.mw-parser-output a[href*=".PDF?"].external,
.mw-parser-output a[href*=".PDF#"].external {
background: url("//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png") no-repeat right;
/* @noflip */
padding: 8px 18px 8px 0;
}
/* System messages styled similarly to fmbox */
/* for .mw-warning-with-logexcerpt, behavior of this line differs between
* the edit-protected notice and the special:Contribs for blocked users
* The latter has specificity of 3 classes so we have to triple up here.
*/
.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt.mw-warning-with-logexcerpt,
div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning,
div#mw-protect-cascadeon {
clear: both;
margin: 0.2em 0;
border: 1px solid #bb7070;
background-color: #ffdbdb;
padding: 0.25em 0.9em;
box-sizing: border-box;
}
/* default colors for partial block message */
/* gotta get over the hump introduced by the triple class above */
.mw-contributions-blocked-notice-partial .mw-warning-with-logexcerpt.mw-warning-with-logexcerpt {
border-color: #fc3;
background-color: #fef6e7;
}
/* Minimum thumb width */
figure[typeof~='mw:File/Thumb'],
figure[typeof~='mw:File/Frame'],
.thumbinner {
min-width: 100px;
}
/* Prevent floating boxes from overlapping any category listings,
file histories, edit previews, and edit [Show changes] views. */
#mw-subcategories,
#mw-pages,
#mw-category-media,
#filehistory,
#wikiPreview,
#wikiDiff {
clear: both;
}
/* Styling for tags in changes pages */
.mw-tag-markers {
font-style: italic;
font-size: 90%;
}
/* Hide stuff meant for accounts with special permissions. Made visible again in
[[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-abusefilter.css]],
[[MediaWiki:Group-abusefilter-helper.css]], [[MediaWiki:Group-patroller.css]],
[[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]],
[[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */
.checkuser-show,
.sysop-show,
.abusefilter-show,
.abusefilter-helper-show,
.patroller-show,
.templateeditor-show,
.extendedmover-show,
.extendedconfirmed-show,
.autoconfirmed-show,
.user-show {
display: none;
}
/* Hide the redlink generated by {{Editnotice}},
this overrides the ".sysop-show { display: none; }" above that applies
to the same link as well. See [[phab:T45013]]
Hide the images in editnotices to keep them readable in VE view.
Long term, editnotices should become a core feature so that they can be designed responsive. */
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink,
.ve-ui-mwNoticesPopupTool-item .mbox-image,
.ve-ui-mwNoticesPopupTool-item .mbox-imageright {
display: none !important;
}
/* Remove bullets when there are multiple edit page warnings */
ul.permissions-errors {
margin: 0;
}
ul.permissions-errors > li {
list-style: none;
}
/* larger inline math */
span.mwe-math-mathml-inline {
font-size: 118%;
}
/* Make <math display="block"> be left aligned with one space indent for
* compatibility with style conventions
*/
.mwe-math-fallback-image-display,
.mwe-math-mathml-display {
margin-left: 1.6em !important;
margin-top: 0.6em;
margin-bottom: 0.6em;
}
.mwe-math-mathml-display math {
display: inline;
}
@media screen {
/* Put a chequered background behind images, only visible if they have transparency,
* except on main, user, and portal namespaces
*/
body:not(.ns-0):not(.ns-2):not(.ns-100) .gallerybox .thumb img {
background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
}
/* Display "From Wikipedia, the free encyclopedia" in skins that support it,
do not apply to print mode */
#siteSub {
display: block;
}
}
/* Hide FlaggedRevs notice UI when there are no pending changes */
.flaggedrevs_draft_synced,
.flaggedrevs_stable_synced,
/* "Temporary" to remove links in sidebar T255381 */
#t-upload,
/* Hide broken download box on Special:Book pending T285400 */
.mw-special-Book #coll-downloadbox {
display: none;
}
/*
* BELOW HERE THERE BE SOONTOBE TEMPLATESTYLES THINGS;
* SEE [[MediaWiki talk:Common.css/to do]]
*/
/* Infobox template style */
.infobox {
border: 1px solid #a2a9b1;
border-spacing: 3px;
background-color: #f8f9fa;
color: black;
/* @noflip */
margin: 0.5em 0 0.5em 1em;
padding: 0.2em;
/* @noflip */
float: right;
/* @noflip */
clear: right;
font-size: 88%;
line-height: 1.5em;
width: 22em;
}
.infobox-header,
.infobox-label,
.infobox-above,
.infobox-full-data,
.infobox-data,
.infobox-below,
.infobox-subheader,
.infobox-image,
.infobox-navbar,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
vertical-align: top;
}
.infobox-label,
.infobox-data,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox th,
.infobox td {
/* @noflip */
text-align: left;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-above,
.infobox .infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
font-size: 125%;
font-weight: bold;
text-align: center;
}
.infobox-title,
/* Remove element selector when every .infobox thing is using the standard module/templates */
.infobox caption {
padding: 0.2em;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-header,
.infobox .infobox-subheader,
.infobox .infobox-image,
.infobox .infobox-full-data,
.infobox .infobox-below {
text-align: center;
}
/* Remove .infobox when element selectors above are removed */
.infobox .infobox-navbar {
/* @noflip */
text-align: right;
}
/* Normal font styling for wikitable row headers with scope="row" tag */
.wikitable.plainrowheaders th[scope=row],
.wikitable.plainrowheaders th[scope=rowgroup] {
font-weight: normal;
/* @noflip */
text-align: left;
}
/* Remove underlines from certain links */
.nounderlines a,
.IPA a:link,
.IPA a:visited {
text-decoration: none !important;
}
/* Prevent line breaks in silly places where desired (nowrap)
and links when we don't want them to (nowraplinks a) */
.nowrap,
.nowraplinks a {
white-space: nowrap;
}
/* But allow wrapping where desired: */
.wrap,
.wraplinks a {
white-space: normal;
}
/* texhtml class for inline math (based on generic times-serif class) */
span.texhtml {
font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
font-size: 118%;
line-height: 1;
white-space: nowrap;
/* Force tabular and lining display for texhtml */
font-variant-numeric: lining-nums tabular-nums;
font-kerning: none;
}
span.texhtml span.texhtml {
font-size: 100%;
}
@media screen {
.nochecker .gallerybox .thumb img {
background-image: none;
}
}
/* Put anything you mean to be a sitewide addition above the TemplateStyles
* comment above.
*/
6fb8f3b49a11a996e92a6014fa1eb15459a6daa4
File:FX LOGO WIKI.png
6
1695
3170
2023-11-09T21:47:17Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
3171
3170
2023-11-09T21:51:15Z
Führerredux
2
Führerredux uploaded a new version of [[File:FX LOGO WIKI.png]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Philippines
0
437
3185
1432
2023-11-10T12:35:57Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945)
</div>
| life_span = 1935–1942<br />1942–1945: [[Government in exile of the Commonwealth of the Philippines|Government-in-exile]]<br />1945–1946
| p1 = Insular Government of the Philippine Islands{{!}}'''1935:'''<br />Insular Government of the Philippine Islands
| flag_p1 = Flag of the Philippines (1919-1936).svg
| p2 = Second Philippine Republic{{!}}'''1945:'''<br />Second Philippine Republic
| flag_p2 = Flag of the Philippines (1943-1945).svg
| s1 = Philippine Executive Commission{{!}}'''1942:'''<br />Philippine Executive Commission
| flag_s1 = Flag of Japan (1870-1999).svg
| s2 = Third Philippine Republic{{!}}'''1946:'''<br />{{nowrap|Third Philippine}}<br />Republic
| flag_s2 = Flag of the Philippines (1936–1985, 1986–1998).svg
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
{{Main article|Philippine Pre-Colonial History}}
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
{{Main article|Philippine Spanish Colonial History}}
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
{{Main article|Filipino-American War}}
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
{{Main article|Philippine American Colony}}
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
eeead3b19d42564953bcaf9a574b7d82793f9908
3186
3185
2023-11-10T12:40:12Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}<br />[[Government in exile of the Commonwealth of the Philippines|Government-in-exile]] (1942–1945)
</div>
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
{{Main article|Philippine Pre-Colonial History}}
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
{{Main article|Philippine Spanish Colonial History}}
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
{{Main article|Filipino-American War}}
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
{{Main article|Philippine American Colony}}
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
727dc50b628e56e506cf0120f2114daef29ef0de
3187
3186
2023-11-10T12:42:54Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] (1935–1946){{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}
</div>
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
{{Main article|Philippine Pre-Colonial History}}
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
{{Main article|Philippine Spanish Colonial History}}
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
{{Main article|Filipino-American War}}
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
{{Main article|Philippine American Colony}}
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
115f31e3674223bf94396cde4b63b73732bc0e00
3188
3187
2023-11-10T12:43:17Z
Dax0102
32
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] {{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}
</div>
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
{{Main article|Philippine Pre-Colonial History}}
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
{{Main article|Philippine Spanish Colonial History}}
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
{{Main article|Filipino-American War}}
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
{{Main article|Philippine American Colony}}
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
026b7a9420ef3d1dc9414005ed3985ad21749dc2
3189
3188
2023-11-10T12:45:21Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| languages_type = National language
| conventional_long_name = The Commonwealth of the Philippines
| image_flag = File:Flag_of_the_Philippines_(1936–1985,_1986–1998).svg
| image_flag2 = Flag of the United States (1912-1959).svg
| image_coat = File:Coat of arms of the Philippines (1935–1940, 1941–1946).svg
| symbol_type = [[Coat of arms of the Philippines|Coat of arms]]
| native_name = {{small|{{lang|es|Commonwealth de Filipinas}} ([[Philippine Spanish|Spanish]])}} <br />{{small|{{lang|tl|Komonwelt ng Pilipinas}} ([[Tagalog language|Tagalog]])}} <br>
| common_name = Philippines
| capital = [[Manila]]
| largest_city = [[Balintawak City]]
| englishmotto = "For God, People, Nature, and Country"
| national_motto = Maka-Diyos, Maka-tao, Makakalikasan at Makabansa
| national_anthem = "<i>Lupang Hinirang</i>"<br/>"Chosen Land"<div style="display:inline-block;margin-top:0.4em;">{{center|[[File:PhilippinesHymn.ogg]]}}
| image_map = PHL orthographic.svg
| image_map_caption = Location of the Philippines in [[Southeast Asia]]
| status = [[Unincorporated territories of the United States|Unincorporated and organized]] [[Commonwealth (U.S. insular area)|U.S. commonwealth]] {{efn|The Philippines belonged to, but were not a part of, the United States. See the [[Insular Cases#Background|Insular Cases]] article for more information.}}
</div>
| official_languages = {{plainlist|
* [[English language|English]]
* [[Spanish language in the Philippines|Spanish]]<ref name="official languages provision">1935 Constitution, Article XIII, section 3 "The National Assembly shall take steps toward the development and adoption of a common national language based on one of the existing native languages. Until otherwise provided by law, English and Spanish shall continue as official languages."</ref><ref name="OLs">{{Cite book |last=Mair |first=Christian |url=https://books.google.com/books?id=xyYkxBmiA7AC&q=%22official%20language%22%20philippine%20commonwealth%20english&pg=PA480 |title=The politics of English as a world language: new horizons in postcolonial cultural studies |publisher=Rodopi |year=2003 |isbn=978-90-420-0876-2 |location=[[Netherlands|NL]] |pages=479–82 |access-date=February 17, 2011}} 497 pp.<br />{{Cite book |last=Roger M. Thompson |url=https://books.google.com/books?id=W1h9oF9rj-MC&pg=PA27 |title=Filipino English and Taglish: Language Switching from Multiple Perspectives |date=January 1, 2003 |publisher=John Benjamins Publishing |isbn=90-272-4891-5 |pages=27–29 |access-date=April 15, 2017}}<br />{{Cite book |last=Christian Mair |url=https://books.google.com/books?id=xyYkxBmiA7AC&pg=PA480 |title=The Politics of English as a World Language: New Horizons in Postcolonial Cultural Studies |date=January 1, 2003 |publisher=Rodopi |isbn=90-420-0876-8 |page=480 |access-date=April 15, 2017}}<br />{{Cite book |last=Antonio L. Rappa |url=https://books.google.com/books?id=KXQTIl2eox4C&pg=PA68 |title=Language Policy and Modernity in Southeast Asia: Malaysia, the Philippines, Singapore, and Thailand |last2=Lionel Wee Hock An |date=February 23, 2006 |publisher=Springer Science & Business Media |isbn=978-1-4020-4510-3 |page=68 |access-date=April 15, 2017}}</ref>
}}
| ethnic_groups = {{#invoke:list|unbulleted
| 33.7% Visayan
| 24.4% Tagalog
| 8.4% Ilocano
| 6.8% Bicolano
| 26.2% other
}}
| demonym = Filipino<br />(''neutral'')<br />Filipina<br />(''feminine'')<br />
Pinoy<br />(''colloquial neutral'')<br />Pinay<br />(''colloquial feminine'')<br />
Philippine<br />(''adjective for certain common nouns'') <!-- "Philippine" is a demonym as it is used to identify natives or residents of a certain or specific place that are derived from the place name Philippines, i.e. Philippine-American War -- refer to Oxford definition of demonym(s). -->
| languages_sub = no
| religion = [[Separation of church and state|None official]]
| government_type = Devolved presidential constitutional dependency
| legislature = National Assembly
| upper_house = [[Senate of the Philippines|Senate]]<br />(1945–1946)
| lower_house = [[House of Representatives of the Philippines|House of Representatives]]<br />(1945–1946)
| era = [[Interwar period|Interwar]]
| leader_title1 = [[President of the Philippines|President]]
| leader_name1 = <span style="white-space:nowrap;">[[Manuel Luis Quezon]]</span>
| leader_title2 = [[Foreign Minister|Foreign Secretary]]
| leader_name2 = <span style="white-space:nowrap;">[[Sergio P. Osmeña]]</span>
| leader_title3 = [[Economy Minister|Economic Secretary]]
| leader_name3 = <span style="white-space:nowrap;">[[Benigno Aquino Sr.]]</span>
| leader_title4 = [[Security Minister|Defense Secretary]]
| leader_name4 = <span style="white-space:nowrap;">[[Teofisto Sison]]</span>
| currency = Philippine Peso
| drives_on = left
| calling_code = +63
| iso3166 = PH
| time_zone = [[Philippine Standard Time|PST]]
| utc_offset = +08:00
| date_format = {{plainlist|
* {{abbr|mm|month}}/{{abbr|dd|day}}/{{abbr|yyyy|year}}
* {{abbr|dd|day}}-{{abbr|mm|month}}-{{abbr|yyyy|year}}}}
}}
The '''Commonwealth of the Philippines''' (Spanish: ''Commonwealth de Filipinas'' or ''Mancomunidad de Filipinas''; Tagalog: ''Komonwelt ng Pilipinas'') was an unincorporated territory and commonwealth of the United States. It traces it roots in 1912, when the Jones Act or the Philippine Autonomy Act was signed by President Theodore Roosevelt replacing the Philippine Organic Act of 1902, which allowed elections of members of both the lower and upper houses of the legislature, namely the National Assembly to be elected.
As the Great Depression weakened the United States; President Herbert Hoover signed the Hare-Hares Cutting Act of 1933, granting the Philippines independence after a 10 year transition period. This also allowed the election of a Filipino President and Vice-President; abolishing the position of the American Governor-General but establishing the position of the American High Commissioner.
The 10th of July was chosen by then Governor-General Frank Murphy as a date of the election of the Filipino President and Vice-President as well as various positions in the legislature and positions in the local government units. Manuel Luis Quezon and his Nacionalistas ultimately won this first election; becoming him the First President of the Commonwealth of the Philippines and the second President of the Philippines after Emilio Aguinaldo.
== History==
===Pre-Colonial Period (pre-1521)===
The pre-colonial period of the Philippines, also known as the pre-Hispanic era, was marked by a diverse and complex cultural landscape. The archipelago was home to numerous indigenous communities, each with its distinct languages, customs, and social structures. These communities engaged in agriculture, fishing, trade, and craftsmanship, showcasing advanced knowledge in metallurgy, weaving, and pottery. The Tagalogs, Visayans, Ilocanos, Moros, and other ethnic groups inhabited various regions, establishing intricate societies with their unique political systems. Many communities were organized into chiefdoms or barangays, headed by local leaders known as datus or rajahs. These societies had sophisticated social hierarchies, and some even engaged in maritime trade with neighbouring countries like China and other Southeast Asian nations, contributing to the flourishing regional exchange of goods and ideas.
Religion played a vital role in pre-colonial Philippines, with animism and polytheism being the dominant belief systems. Anitos, or ancestral spirits, were worshipped, and rituals were performed to honor them. The Filipinos had a deep connection with nature, attributing spiritual significance to natural elements such as mountains, rivers, and trees. Social harmony, respect for elders, and communal living were core values in these societies. This period was characterized by a thriving cultural heritage and a harmonious way of life that reflected the deep-rooted traditions of the Filipino people long before the arrival of European colonizers.
===Spanish Colonial Period (1521-1898)===
The Spanish Era in the Philippines, which began with the arrival of Ferdinand Magellan in 1521, significantly shaped the nation's history and culture. Under Spanish rule, the Philippines became a colony of the Spanish Crown for over three centuries. This period witnessed widespread changes in various aspects of Filipino society. The Spaniards introduced Christianity, converting a large portion of the population to Catholicism, which remains a dominant religion in the Philippines today. They also established a hierarchical system of government, where Spanish officials ruled alongside local nobility. The Spanish Crown exploited the Philippines for its rich resources, leading to economic transformations. The introduction of new crops like tobacco and coffee, along with the construction of galleon trade routes, facilitated economic growth and cultural exchange between the Philippines, Spain, and other parts of the world.
Revolutionary sentiment grew in 1872 after three activist Catholic priests were executed on questionable grounds. This inspired the Propaganda Movement, organized by Marcelo H. del Pilar, José Rizal, Graciano López Jaena, and Mariano Ponce, which advocated political reform in the Philippines. Rizal was executed on December 30, 1896, for rebellion, and his death radicalized many who had been loyal to Spain. Attempts at reform met with resistance; Andrés Bonifacio founded the Katipunan secret society, which sought independence from Spain through armed revolt, in 1892.
The Katipunan Cry of Pugad Lawin began the Philippine Revolution in 1896. Internal disputes led to the Tejeros Convention, at which Bonifacio lost his position and Emilio Aguinaldo was elected the new leader of the revolution. The 1897 Pact of Biak-na-Bato resulted in the Hong Kong Junta government in exile. The Spanish–American War began the following year, and reached the Philippines; Aguinaldo returned, resumed the revolution, and declared independence from Spain on June 12, 1898. In December 1898, the islands were ceded by Spain to the United States with Puerto Rico and Guam after the Spanish–American War.
===Filipino-American War and American Colonial Period (1898-1936)===
The United States would not recognize the First Philippine Republic, beginning the Philippine–American War. The war resulted in the deaths of 250,000 to 1 million civilians, primarily due to famine and disease. Many Filipinos were transported by the Americans to concentration camps, where thousands died.
After the fall of the First Philippine Republic in 1902, an American civilian government was established with the Philippine Organic Act. American forces continued to secure and extend their control of the islands, suppressing an attempted extension of the Philippine Republic, securing the Sultanate of Sulu, establishing control of interior mountainous areas which had resisted Spanish conquest, and encouraging large-scale resettlement of Christians in once-predominantly-Muslim Mindanao.
However more autonomy will be given to the people of the Philippines in 1933, when former President, Herbert Hoover signed the Hare-Hawes-Cutting Act, which guarantees Filipino independence after a 10-year transition period. This also allowed the election of a Filipino President and Vice-President as well as the abolishment of the office of the Governor-General and establishment of the office of the High Commissioner.
<references group="lower-alpha" />
<references />
1812ef43073259554f930a66aa00f128c5682be7
Template:Infobox country/doc
10
245
3190
950
2023-11-11T10:21:05Z
Führerredux
2
wikitext
text/x-wiki
{{#ifeq:{{{nested|no}}}|no|{{documentation subpage}}{{hatnote|{{tl|Infobox geopolitical organisation}} and {{tl|Infobox former country}} redirect here; related parameters and examples are included below.}}}}
{{High-use}}
{{Lua|Module:Infobox|Module:InfoboxImage|Module:Coordinates|Module:Check for unknown parameters}}
{{Uses TemplateStyles|Template:Infobox country/styles.css}}
This infobox template is used to generate an infobox for the right-hand side of two specific types of article: on a country or territory, or on a geopolitical organisation. Parameter syntax and examples are detailed in the collapsed sections immediately below.
__FORCETOC__
== Syntax ==
<!---------------------- Country/territory use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|micronation = <!--yes if a micronation-->
|conventional_long_name = <!--Formal or official full name of the country in English-->
|native_name = <!--Country's name (usually full name) in its official/defacto language(s), hence in italics (double quotemarks)-->
|common_name = <!--Common name in English (used for wikilinks, captions, and to produce a default iso3166 code)-->
|status = <!--Status of country, especially useful for micronations-->
|image_flag = <!--e.g. Flag of country.svg-->
|alt_flag = <!--alt text for flag (text shown when pointer hovers over flag)-->
|flag_border = <!--set to no to disable border around the flag-->
|image_flag2 = <!--e.g. Second-flag of country.svg-->
|alt_flag2 = <!--alt text for second flag-->
|flag2_border = <!--set to no to disable border around the flag-->
|image_coat = <!--e.g. Coat of arms of country.svg-->
|alt_coat = <!--alt text for coat of arms-->
|symbol_type = <!--emblem, seal, etc (if not a coat of arms)-->
|national_motto = <!--in inverted commas and wikilinked if link exists-->
|englishmotto = <!--English language version of motto-->
|national_anthem = <!--in inverted commas and wikilinked if link exists-->
|royal_anthem = <!--in inverted commas and wikilinked if link exists-->
|other_symbol_type = <!--Use if a further symbol exists, e.g. hymn-->
|other_symbol =
|image_map = <!--e.g. LocationCountry.svg-->
|loctext = <!--text description of location of country-->
|alt_map = <!--alt text for map-->
|map_caption = <!--Caption to place below map-->
|image_map_size = <!--Map size in number of pixels-->
|image_map2 = <!--Another map, if required-->
|alt_map2 = <!--alt text for second map-->
|map_caption2 = <!--Caption to place below second map-->
|image_map2_size = <!--Map size in number of pixels-->
|capital = <!--Name of country/territory's capital, wikilinked if link exists-->
|coordinates = <!-- Coordinates for capital, using {{tl|coord}} -->
|largest_city = <!--Name of country/territory's largest city. Use "capital" (without quotation marks) if it's the capital.-->
|largest_settlement_type = <!--Type of settlement if largest settlement not a city-->
|largest_settlement = <!--Name of largest settlement-->
|overlord = <!--Name of Overlord wikilinked-->
|official_languages = <!--Languages recognised in legislation, constitution, etc-->
|national_languages = <!--Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc-->
|regional_languages = <!--Languages recognised or associated with particular regions within the country/territory-->
|languages_type = <!--Use to specify a further type of language, if not official, national or regional-->
|languages = <!--Languages of the further type-->
|languages_sub = <!--Is this further type of language a sub-item of the previous non-sub type? ("yes" or "no")-->
|languages2_type = <!--Another further type of language-->
|languages2 = <!--Languages of this second further type-->
|languages2_sub = <!--Is the second alternative type of languages a sub-item of the previous non-sub type? ("yes" or "no")-->
|ethnic_groups = <!--List/breakdown of ethnic groups within the country/territory-->
|ethnic_groups_year = <!--Year of ethnic groups data (if provided)-->
|ethnic_groups_ref = <!--(for any ref/s to associate with ethnic groups data)-->
|religion = <!--Religion-->
|religion_year = <!--Year of religion data (if provided)-->
|religion_ref = <!--(for any ref/s to associate with religion data)-->
|demonym = <!--Term/s describing those associated with the country/territory (e.g. "Belgian" for the country Belgium)-->
|government_type = <!--Wikilinked if link exists-->
|leader_title1 = <!--(for a country, usually the head of state's (wikilinked) title, e.g. "President", "Monarch")-->
|leader_name1 =
|leader_title2 = <!--(could be "Vice President", otherwise "Prime Minster", etc, etc)-->
|leader_name2 =
|leader_title14 = <!--(up to 14 distinct leaders may be included)-->
|leader_name14 =
|legislature = <!--Name of the country/territory's governing body, e.g. "Parliament", "Congress", etc-->
|upper_house = <!--Name of governing body's upper house, if given (e.g. "Senate")-->
|lower_house = <!--Name of governing body's lower house, if given (e.g. "Chamber of Deputies")-->
|sovereignty_type = <!--Brief description of country/territory's status ("Independence [from...]", "Autonomous province [of...]", etc)-->
|sovereignty_note =
|established_event1 = <!--First key event in history of country/territory's status or formation-->
|established_date1 = <!--Date of first key event-->
|established_event2 = <!--Second key event-->
|established_date2 = <!--Date of second key event-->
|established_event13 = <!--(up to 13 distinct events may be included)-->
|established_date13 =
|area_rank =
|area = <!--Major area size (in [[Template:convert]] either km2 or sqmi first)-->
|area_km2 = <!--Major area size (in square km)-->
|area_sq_mi = <!--Area in square mi (requires area_km2)-->
|area_footnote = <!--Optional footnote for area-->
|percent_water =
|area_label = <!--Label under "Area" (default is "Total")-->
|area_label2 = <!--Label below area_label (optional)-->
|area_data2 = <!--Text after area_label2 (optional)-->
|population_estimate =
|population_estimate_rank =
|population_estimate_year =
|population_census =
|population_census_year =
|population_density_km2 =
|population_density_sq_mi =
|population_density_rank =
|nummembers = <!--An alternative to population for micronation-->
|GDP_PPP = <!--(Gross Domestic Product from Purchasing Power Parity)-->
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_PPP_per_capita_rank =
|GDP_nominal =
|GDP_nominal_rank =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|GDP_nominal_per_capita_rank =
|Gini = <!--(Gini measure of income inequality; input number only; valid values are between 0 and 100)-->
|Gini_ref = <!--(for any ref/s to associate with Gini number)-->
|Gini_rank =
|Gini_year =
|HDI_year = <!-- Please use the year to which the data refers, not the publication year-->
|HDI = <!--(Human Development Index; input number only; valid values are between 0 and 1)-->
|HDI_change = <!--increase/decrease/steady; rank change from previous year-->
|HDI_rank =
|HDI_ref = <!--(for any ref/s to associate with HDI number)-->
|currency = <!--Name/s of currency/ies used in country/territory-->
|currency_code = <!--ISO 4217 code/s for currency/ies (each usually three capital letters)-->
|time_zone = <!--e.g. GMT, PST, AST, etc, etc (wikilinked if possible)-->
|utc_offset = <!--in the form "+N", where N is number of hours offset-->
|time_zone_DST = <!--Link to DST (Daylight Saving Time) used, otherwise leave empty-->
|utc_offset_DST = <!--in the form "+N", where N is number of hours offset-->
|DST_note = <!--Optional note regarding DST use-->
|antipodes = <!--Place/s exactly on the opposite side of the world to country/territory-->
|date_format = <!--all-numeric date format and era, such as [[Common Era|CE]], [[Anno Domini|AD]], [[Hijri year|AH]], etc.; e.g. {{abbr|yyyy|year}}-{{abbr|mm|month}}-{{abbr|dd|day}} ([[Anno Domini|AD]]) -->
|drives_on = <!--"right" or "left" (side of road)-->
|cctld = <!--Internet country code top-level domain identifier (e.g. [[.br]], [[.de]], etc)-->
|iso3166code = <!--ISO code only; no extra text. Use to override default from common_name parameter above; omit using "omit".-->
|calling_code = <!--e.g. [[+1]], [[+531]], [[+44]], etc-->
|patron_saint = <!--Use patron_saints for multiple-->
|image_map3 = <!--Optional third map position, e.g. for use with reference to footnotes below it-->
|alt_map3 = <!--alt text for third map position-->
|footnote_a = <!--For any footnote <sup>a</sup> used above-->
|footnote_b = <!--For any footnote <sup>b</sup> used above-->
|footnote_h = <!--For any footnote <sup>h</sup> used above-->
|footnotes = <!--For any generic non-numbered footnotes-->
}}
</syntaxhighlight>
{{hidden end}}
{{hidden begin |toggle=left|title=France-specific parameters}}<!--(France-specific parameters)-->
Note: Now redundant.
<syntaxhighlight lang="wikitext">
|metropole =
|metropole_area =
|metropole_area_rank =
|metropole_area_magnitude =
|metropole_areami² =
|metropole_population =
|metropole_population_estimate_rank =
|foot =
|foot2 =
|foot3 =
|foot4 =
|foot5 =
</syntaxhighlight>
<!--(France-specific parameters)-->
{{smaller|* If, on a particular page, the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use ''flag_width'' (as % or px) to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included).}}
{{hidden end}}
<!------------------------- Geopolitical use -------------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name = <!-- (in English) -->
|native_name = <!-- Long-form name in native or any/all non-English languages -->
|linking_name = <!-- For wikilinks, if diff from name -->
|image_flag = <!-- Flag image's filename -->
|alt_flag = <!-- alt text for flag-->
|flag_border = <!--set to no to disable border around the flag-->
|symbol_type = <!-- Symbol, Emblem, Logo, etc. -->
|image_symbol = <!-- Symbol image's filename -->
|alt_symbol = <!-- alt text for symbol -->
|symbol_width = <!-- Symbol image's width (default 85px) -->
|motto = <!-- "[motto]" -->
|englishmotto = <!--English language version of motto-->
|anthem = <!-- ''[anthem name]'' -->
|text_symbol_type = <!-- for other types of text symbol -->
|text_symbol = <!-- e.g. ''[hymn name]'' -->
|image_map = <!-- Map image's filename -->
|loctext = <!--text description of location of organization-->
|alt_map = <!-- alt text for map image -->
|map_width = <!-- Map image's width (default 250px) -->
|map_caption =
|org_type = <!-- e.g. Trade bloc -->
|membership_type = <!-- (default "Membership") -->
|membership = <!-- Type/s and/or number/s of members -->
|admin_center_type = <!-- e.g. "Administrative center" (default) -->
|admin_center = <!-- Location/s of administrative center/s -->
|languages_type = <!-- e.g. "[[Official language]]s" (default) -->
|languages =
|leader_title1 = <!-- e.g. "Chair", "President", etc. -->
|leader_name1 =
|leader_title2 = <!-- e.g. "Deputy chair", etc. -->
|leader_name2 =
|leader_title14 =
|leader_name14 =
|established = <!-- Usually a date, in lieu of event/s hereafter -->
|established_event1 =
|established_date1 =
|established_event2 =
|established_date2 =
|established_event9 =
|established_date9 =
|official_website =
|area_km2 = <!-- major area size (in sq_km) -->
|area_sq_mi = <!-- area in square mi (requires area_km2) -->
|area_footnote = <!-- optional footnote for area -->
|percent_water =
|area_label = <!-- label under "Area" (default is "Total") -->
|area_label2 = <!-- label below area_label (optional) -->
|area_dabodyalign = <!-- text after area_label2 (optional) -->
|population_estimate =
|population_estimate_year =
|population_density_km2 =
|population_density_sq_mi =
|GDP_PPP =
|GDP_PPP_rank =
|GDP_PPP_year =
|GDP_PPP_per_capita =
|GDP_nominal =
|GDP_nominal_year =
|GDP_nominal_per_capita =
|Gini = <!-- number only, 0-100 -->
|Gini_ref = <!-- for any ref/s to associate with Gini number -->
|Gini_year =
|HDI = <!-- number only, 0-1 -->
|HDI_ref = <!-- for any ref/s to associate with HDI number -->
|HDI_year =
|currency =
|currency_code =
|time_zone =
|utc_offset = <!-- +N, where N is number of hours -->
|footnote1 =
|footnote2 =
|footnote7 =
|footnotes = <!-- For generic non-numbered footnotes -->
}}
</syntaxhighlight>
{{hidden end}}
<!-------------------- Former country use ---------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = <!-- Name in a modern syntax of native language(s). Leave blank if name is only in English.
Separate with line breaks<br/> or use Template:Plainlist. If language uses Latin characters, place name(s) in italics. -->
|conventional_long_name = <!-- Full name in English -->
|common_name = <!-- Name to be used in constructing links and category names; not for display -->
|iso3166code = omit <!-- For a country or geopolitical version of a country that ceased to exist prior to the introduction of iso3166-->
|era = <!-- Use: "Napoleonic Wars", "Cold War", etc. -->
|status = <!-- Status: see Category list on template page -->
|status_text = <!-- A free text to describe status at the top of the infobox. Use sparingly. -->
|empire = <!-- The empire or country to which the entity was in a state of dependency -->
|government_type = <!-- To generate categories: "Monarchy", "Republic", etc. to generate categories -->
<!-- Rise and fall, events, years and dates -->
<!-- only fill in the start/end event entry if a specific article exists. Don't just say "abolition" or "declaration" -->
|event_start = <!-- Default: "Established" -->
|date_start = <!-- Optional: Date of establishment, in format 1 January (no year) -->
|year_start = <!-- Year of establishment -->
|event_end = <!-- Default: "Disestablished" -->
|date_end = <!-- Optional: Date of disestablishment, in format 1 January (no year) -->
|year_end = <!-- Year of disestablishment -->
|year_exile_start = <!-- Year of start of exile (if dealing with exiled government: status="Exile") -->
|year_exile_end = <!-- Year of end of exile (leave blank if still in exile) -->
|event1 = <!-- Optional: other events between "start" and "end" -->
|date_event1 =
|event2 =
|date_event2 =
|event3 =
|date_event3 =
|event4 =
|date_event4 =
|event5 =
|date_event5 =
|event6 =
|date_event6 =
|event_pre = <!-- Optional: A crucial event that took place before "event_start" -->
|date_pre =
|event_post = <!-- Optional: A crucial event that took place after "event_end" -->
|date_post =
<!-- Flag navigation: Preceding and succeeding entities p1 to p5 and s1 to s5 -->
|p1 = <!-- Name of the article for preceding entity, numbered 1-5 -->
|flag_p1 = <!-- Default: "Flag of {{{p1}}}.svg" (size 30) -->
|image_p1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|p2 =
|flag_p2 =
|p3 =
|flag_p3 =
|p4 =
|flag_p4 =
|p5 =
|flag_p5 =
|s1 = <!-- Name of the article for succeeding entity, numbered 1-5 -->
|flag_s1 = <!-- Default: "Flag of {{{s1}}}.svg" (size 30) -->
|image_s1 = <!-- Use: [[File:Sin escudo.svg|20px|Image missing]] -->
|s2 =
|flag_s2 =
|s3 =
|flag_s3 =
|s4 =
|flag_s4 =
|s5 =
|flag_s5 =
|image_flag = <!-- Default: Flag of {{{common_name}}}.svg -->
|flag_alt = <!-- Alt text for flag -->
|image_flag2 = <!-- Second flag -->
|flag_alt2 = <!-- Alt text for second flag -->
|flag = <!-- Link target under flag image. Default: Flag of {{{common_name}}} -->
|flag2 = <!-- Link target under flag2 image. Default: Flag of {{{common_name}}} -->
|flag_type = <!-- Displayed text for link under flag. Default "Flag" -->
|flag2_type = <!-- Displayed text for link under flag2. Default "Flag" -->
|image_coat = <!-- Default: Coat of arms of {{{common_name}}}.svg -->
|coa_size = <!-- Size of coat of arms -->
|coat_alt = <!-- Alt text for coat of arms -->
|symbol_type = <!-- Displayed text for link under symbol. Default "Coat of arms" -->
|symbol_type_article = <!-- Link target under symbol image. Default: Coat of arms of {{{common_name}}} -->
|image_map =
|image_map_size = <!--Map size in number of pixels-->
|image_map_alt =
|image_map_caption =
|image_map2 = <!-- If second map is needed; does not appear by default -->
|image_map2_size = <!--Map size in number of pixels-->
|image_map2_alt =
|image_map2_caption =
|capital =
|capital_exile = <!-- If status="Exile" -->
|national_motto =
|national_anthem =
|common_languages =
|religion =
|demonym =
|currency =
<!-- Titles and names of the first and last leaders and their deputies -->
|leader1 = <!-- Name of king or president -->
|leader2 =
|leader3 =
|leader4 =
|leader21 = <!--(up to 21 distinct leaders may be included)-->
|year_leader1 = <!-- Years served -->
|year_leader2 =
|year_leader3 =
|year_leader4 =
|year_leader21 =
|title_leader = <!-- Default: "King" for monarchy, otherwise "President" -->
|representative1 = <!-- Name of representative of head of state (e.g. colonial governor) -->
|representative2 =
|representative3 =
|representative4 =
|representative5 =
|year_representative1 = <!-- Years served -->
|year_representative2 =
|year_representative3 =
|year_representative4 =
|year_representative5 =
|title_representative = <!-- Default: "Governor" -->
|deputy1 = <!-- Name of prime minister -->
|deputy2 =
|deputy3 =
|deputy4 =
|year_deputy1 = <!-- Years served -->
|year_deputy2 =
|year_deputy3 =
|year_deputy4 =
|title_deputy = <!-- Default: "Prime minister" -->
<!-- Legislature -->
|legislature = <!-- Name of legislature -->
|house1 = <!-- Name of first chamber -->
|type_house1 = <!-- Default: "Upper house" -->
|house2 = <!-- Name of second chamber -->
|type_house2 = <!-- Default: "Lower house" -->
<!-- Area and population of a given year -->
|stat_year1 = <!-- year of the statistic, specify either area, population or both -->
|stat_area1 = <!-- area in square kilometres (w/o commas or spaces); area in square miles is calculated -->
|stat_pop1 = <!-- population (w/o commas or spaces) -->
|stat_year2 =
|stat_area2 =
|stat_pop2 =
|stat_year3 =
|stat_area3 =
|stat_pop3 =
|stat_year4 =
|stat_area4 =
|stat_pop4 =
|stat_year5 =
|stat_area5 =
|stat_pop5 =
|today = <!-- Present-day countries that overlap with the territorial extent of the former country. Do not use this parameter if there are more than four such countries. --><!-- Do NOT add flags, per MOS:INFOBOXFLAG -->
|footnote_a = <!-- Accepts wikilinks -->
|footnote_b = <!-- Accepts wikilinks -->
...
|footnote_h = <!-- Accepts wikilinks -->
|footnotes = <!-- Accepts wikilinks -->
}}
</syntaxhighlight>
{{hidden end}}
== Examples ==
<!------------------ Country/territory example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Country or territory |style=font-size:100%;}}
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST =
|utc_offset_DST =
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox country
|conventional_long_name = Republic of Cameroon
|native_name = {{lang|fr|République du Cameroun}}
|common_name = Cameroon
|image_flag = Flag of Cameroon.svg
|alt_flag = Vertical tricolor (green, red, yellow) with a five-pointed gold star in the center of the red.
|image_coat = Coat of arms of Cameroon.svg
|symbol_type = Coat of arms
|image_map = Cameroon (orthographic projection).svg
|alt_map = Location of Cameroon on the globe.
|national_motto = <br/>{{native phrase|fr|"Paix – Travail – Patrie"|italics=off}}<br/>{{small|"Peace – Work – Fatherland"}}
|national_anthem = <br/>"{{native phrase|fr|[[O Cameroon, Cradle of our Forefathers|Ô Cameroun, Berceau de nos Ancêtres]]|nolink=yes|italics=off}}"<br/>{{raise|0.2em|{{small|''O Cameroon, Cradle of our Forefathers''}} {{lower|0.1em|<sup>a</sup>}}}}
|official_languages = {{hlist |[[French language|French]] |[[English language|English]]}}
|demonym = Cameroonian
|ethnic_groups =
{{unbulleted list
| {{nowrap|31% [[Ethnic groups in Cameroon|Cameroon Highlanders]]}}
| 19% [[Bantu peoples|Equatorial Bantu]]
| 11% [[Kirdi]]
| 10% [[Fula people|Fulani]]
| {{0|0}}8% [[Bantu peoples|Northwestern Bantu]]
| {{0|0}}7% Eastern Nigritic
| 13% other African
| <1% non-African
}}
|capital = [[Yaoundé]]
|coordinates = {{coord|3|52|N|11|31|E}}
|largest_city = [[Douala]]
|government_type = [[Republic]]
|leader_title1 = [[List of heads of state of Cameroon|President]]
|leader_name1 = [[Paul Biya]]
|leader_title2 = [[Prime Minister of Cameroon|Prime Minister]]
|leader_name2 = [[Philémon Yang]]
|legislature = [[National Assembly (Cameroon)|National Assembly]]
|area_rank = 54th <!--Demographic Yearbook 1.-->
|area_km2 = 475,442
|area_sq_mi = 183,568 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 1.3 <!--CIA World Factbook-->
|population_estimate = 20,129,878
|population_estimate_rank = 58th <!--UN World Population Prospects-->
|population_estimate_year = July 2012
|population_census = 17,463,836
|population_census_year = 2005
|population_density_km2 = 39.7
|population_density_sq_mi = 102.8 <!--Do not remove per [[WP:MOSNUM]]-->
|population_density_rank = 167th <!--UN World Population Prospects-->
|GDP_PPP = $47.251 billion
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $2,257
|GDP_PPP_per_capita_rank =
|GDP_nominal = $25.759 billion
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $1,230
|sovereignty_type = Independence {{nobold|from [[France]]}}
|established_event1 = Declared
|established_date1 = 1 January 1960
|established_event2 = {{nowrap|Annexation of former<br/>[[British Cameroons]]}}
|established_date2 = 1 October 1961
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.482 <!--number only-->
|HDI_ref =
|HDI_rank = 150th
|Gini_year = 2001
|Gini_change = <!--increase/decrease/steady-->
|Gini = 44.6 <!--number only-->
|Gini_ref =
|Gini_rank =
|currency = [[Central African CFA franc]]
|currency_code = XAF
|time_zone = [[West Africa Time|WAT]]
|utc_offset = +1
|time_zone_DST = not observed
|utc_offset_DST = +1
|drives_on = right
|calling_code = [[+237]]
|cctld = [[.cm]]
|footnote_a = These are the titles as given in the ''Constitution of the Republic of Cameroon'', Article X. The French version of the song is sometimes called {{lang|fr|Chant de Ralliement}}, as in ''National Anthems of the World''; and the English version "O Cameroon, Cradle of Our Forefathers", as in DeLancey and DeLancey 61.
}}
</syntaxhighlight>
{{hidden end}}
<!-------------- Geopolitical organization example --------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Geopolitical organization |style=font-size:100%;}}
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">"[[Anthem of Europe|Ode to Joy]]" {{small|(orchestral)}}</div>[[File:Anthem of Europe (US Navy instrumental short version).ogg|center]]
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607<!--same ref as above-->
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox geopolitical organization
|name =
{{collapsible list
|titlestyle = background:transparent;text-align:center;font-size:85%;
|title = {{resize|130%|European Union}}
|liststyle = text-align:center;
| {{smaller|{{native name|bg|Европейски съюз}}<br/><!--
-->{{native name|hr|Europska unija}}<br/><!--
-->{{native name|cs|Evropská unie}}<br/><!--
-->{{native name|da|Den Europæiske Union}}<br/><!--
-->{{native name|nl|Europese Unie}}<br /><!--
-->{{native name|et|Euroopa Liit}}<br/><!--
-->{{native name|fi|Euroopan unioni}}<br/><!--
-->{{native name|fr|Union européenne}}<br/><!--
-->{{native name|de|Europäische Union}}<br/><!--
-->{{native name|el|Ευρωπαϊκή Ένωση}}<br/><!--
-->{{native name|hu|Európai Unió}}<br/><!--
-->{{native name|ga|An tAontas Eorpach}}<br/><!--
-->{{native name|it|Unione europea}}<br/><!--
-->{{native name|lv|Eiropas Savienība}}<br/><!--
-->{{native name|lt|Europos Sąjunga}}<br/><!--
-->{{native name|mt|Unjoni Ewropea}}<br/><!--
-->{{native name|pl|Unia Europejska}}<br/><!--
-->{{native name|pt|União Europeia}}<br/><!--
-->{{native name|ro|Uniunea Europeană}}<br/><!--
-->{{native name|sk|Európska únia}}<br/><!--
-->{{native name|sl|Evropska unija}}<br/><!--
-->{{native name|es|Unión Europea}}<br/><!--
-->{{native name|sv|Europeiska unionen}}<!--
-->}}
}}
|linking_name = Europe
|image_flag = Flag of Europe.svg
|alt_flag = Circle of 12 gold stars on a blue background
|motto = "[[Motto of the European Union|United in diversity]]"
|anthem = <div style="padding-bottom:0.2em;">''[[Anthem of Europe|Ode to Joy]]'' {{small|(orchestral)}}</div>{{center|[[File:Anthem of Europe (US Navy instrumental short version).ogg]]}}
|image_map = EU Globe No Borders.svg
|map_caption = An [[Orthographic projection (cartography)|orthographic projection]] of the world, highlighting the European Union and its Member States (green).
|map_width = 220px
|admin_center_type = Political centres
|admin_center = {{unbulleted list |[[Brussels]] ([[Brussels and the European Union|de facto capital]])|[[Luxembourg (city)|Luxembourg]] |[[Strasbourg]]}}
|largest_city = [[London]]
|official_languages =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = [[Languages of the European Union|24 languages]]
| {{hlist |[[Bulgarian language|Bulgarian]] |[[Croatian language|Croatian]] |[[Czech language|Czech]] |[[Danish language|Danish]] |[[Dutch language|Dutch]] |[[English language|English]] |[[Estonian language|Estonian]] |[[Finnish language|Finnish]] |[[French language|French]] |[[German language|German]] |[[Greek language|Greek]] |[[Hungarian language|Hungarian]] |[[Irish language|Irish]] |[[Italian language|Italian]] |[[Latvian language|Latvian]] |[[Lithuanian language|Lithuanian]] |[[Maltese language|Maltese]] |[[Polish language|Polish]] |[[Portuguese language|Portuguese]] |[[Romanian language|Romanian]] |[[Slovak language|Slovak]] |[[Slovene language|Slovene]] |[[Spanish language|Spanish]] |[[Swedish language|Swedish]]}}
}}
|demonym = [[Citizenship of the European Union|European]]
|membership_type = [[Member state of the European Union|Member state]]s
|membership =
{{collapsible list
|titlestyle = background:transparent;text-align:left;font-weight:normal;
|title = 27 states
|{{flagcountry|Austria}} |{{flagcountry|Belgium|state}} |{{flagcountry|Bulgaria}}
|{{flagcountry|Croatia}} |{{flagcountry|Cyprus}} |{{flagcountry|Czech Republic}}
|{{flagcountry|Denmark}} |{{flagcountry|Estonia}} |{{flagcountry|Finland}}
|{{flagcountry|France}} |{{flagcountry|Germany}} |{{flagcountry|Greece}}
|{{flagcountry|Hungary}} |{{flagcountry|Ireland}} |{{flagcountry|Italy}}
|{{flagcountry|Latvia}} |{{flagcountry|Lithuania}} |{{flagcountry|Luxembourg}}
|{{flagcountry|Malta}} |{{flagcountry|Netherlands}} |{{flagcountry|Poland}}
|{{flagcountry|Portugal}} |{{flagcountry|Romania}} |{{flagcountry|Slovakia}}
|{{flagcountry|Slovenia}} |{{flagcountry|Spain}} |{{flagcountry|Sweden}}
}}
|leader_title1 = [[President of the European Council|President of the European Council]]
|leader_name1 = {{nowrap|[[Charles Michel]] ([[Mouvement Réformateur|MR]])}}
|leader_title2 = [[President of the European Commission|President of the Commission]]
|leader_name2 = {{nowrap|[[Ursula von der Leyen]] ([[Christian Democratic Union of Germany|CDU]])}}
|legislature = [[Legislature of the European Union]]
|upper_house = {{nowrap|[[Council of the European Union]]}}
|lower_house = [[European Parliament]]
|established_event1 = [[Treaty of Paris (1951)|Treaty of Paris]]
|established_date1 = 23 July 1952
|established_event2 = [[Treaty of Rome]]
|established_date2 = 1 January 1958
|established_event3 = {{nowrap|[[Maastricht Treaty|Treaty of Maastricht]]}}
|established_date3 = 1 November 1993
|official_website = {{URL|europa.eu}}
|area_rank = 7th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|area_km2 = 4,381,376 <!--Do not remove per [[WP:MOSNUM]]-->
|area_sq_mi = 1,691,658 <!--Do not remove per [[WP:MOSNUM]]-->
|percent_water = 3.08
|population_estimate = 507,890,191
|population_estimate_rank = 3rd<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|population_estimate_year = 2012
|population_density_km2 = 116.2 <!--502,486,499 / 4,324,782km2 = 116.2 people/km2 (1 January 2011)-->
|population_density_sq_mi = 300.9 <!--502,486,499 / 1,669,807sq_mi = 300.9 people/sq_mi (1 January 2011)-->
|population_density_rank = <!--Calculated by taking out EU members from the list-->
<!--IMF GDP data published in September 2011; so please do not use the IMF *projections* for 2011-->
|GDP_PPP = $15.821 trillion
|GDP_PPP_rank = 1st<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|GDP_PPP_year = 2011
|GDP_PPP_per_capita = $31,607
|GDP_PPP_per_capita_rank = 15th<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal = $17.577 trillion
|GDP_nominal_rank = 1st<sup>a</sup><!--Calculated by taking out EU members from the list-->
|GDP_nominal_year = 2011
|GDP_nominal_per_capita = $35,116
|GDP_nominal_per_capita_rank = 14th<sup>a</sup><!--gives link to list--><!--Calculated by taking out EU members from the list-->
|Gini_year = 2010
|Gini_change = <!--increase/decrease/steady-->
|Gini = 30.4 <!--number only-->
|Gini_ref =
|Gini_rank =
|HDI_year = 2011
|HDI_change = increase <!--increase/decrease/steady-->
|HDI = 0.876 <!--number only-->
|HDI_ref =
|HDI_rank = 13th<!--Calculated by taking out EU members from the list-->{{\}}25th<sup>a</sup><!--Calculated with EU members in the list-->
|currency =
{{(!}} cellspacing="0" cellpadding="0"
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%; white-space:nowrap" {{!}} [[Eurozone]]{{spaces|2}}{{nobold|{{small|(17 countries)}}}}
{{!-}} style="height: 22px;"
! {{flagicon|EU}}
! [[Euro]]
! [[Euro sign|€]]
! [[ISO 4217|EUR]]
{{!-}} style="height: 22px;"
! colspan="4" style="font-size: 120%;" {{!}} [[Currencies of the European Union|Other currencies]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Bulgaria}}
{{!}} [[Bulgarian lev|Lev]]
{{!}} лв
{{!}} [[ISO 4217|BGN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Croatia}}
{{!}} [[Croatian kuna|Kuna]]
{{!}} kn
{{!}} [[ISO 4217|HRK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Czech Republic}}
{{!}} [[Czech koruna|Koruna]]
{{!}} Kč
{{!}} [[ISO 4217|CZK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Denmark}}
{{!}} [[Danish krone|Krone]]
{{!}} kr
{{!}} [[ISO 4217|DKK]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Hungary}}
{{!}} [[Hungarian forint|Forint]]
{{!}} Ft
{{!}} [[ISO 4217|HUF]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Latvia}}
{{!}} [[Latvian lats|Lats]]
{{!}} Ls
{{!}} [[ISO 4217|LVL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Lithuania}}
{{!}} [[Lithuanian litas|Litas]]
{{!}} Lt
{{!}} [[ISO 4217|LTL]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Poland}}
{{!}} [[Polish złoty|Złoty]]
{{!}} zł
{{!}} [[ISO 4217|PLN]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Romania}}
{{!}} [[Romanian Leu|Leu]]
{{!}} L
{{!}} [[ISO 4217|RON]]
{{!-}} style="height: 22px;"
{{!}} {{flagicon|Sweden}}
{{!}} [[Swedish krona|Krona]]
{{!}} kr
{{!}} [[ISO 4217|SEK]]
{{!)}}
|time_zone =
|utc_offset = +0 to +2
|time_zone_DST =
|utc_offset_DST = +1 to +3
|date_format =
|cctld = [[.eu]]
|calling_code = [[Telephone numbers in the European Union|27 codes]]
|footnote_a = If considered as a single entity.
}}
</syntaxhighlight>
{{hidden end}}
<!------------------ Former country example ------------------->
{{hidden begin |toggle=left |titlestyle=font-size:120%; |title=Former country |style=font-size:100%;}}
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:49428470}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:64925993}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
<syntaxhighlight lang="wikitext" style="overflow:auto;">
{{Infobox former country
|native_name = ''Deutsches Reich''
|conventional_long_name = German Empire
|common_name = Germany
|iso3166code = omit
|status = Empire
|era = [[New Imperialism]]/[[World War I|WWI]]
|event_start = [[Unification of Germany|Unification]]
|date_start = 18 January
|year_start = 1871
|event_end = [[German Revolution of 1918–1919|Republic declared]]
|date_end = 9 November
|year_end = 1918
|event_post = Formal abdication
|date_post = 28 November 1918
|p1 = North German Confederation
|flag_p1 = Flag of the German Empire.svg
|p2 = Kingdom of Bavaria
|flag_p2 = Flag of Bavaria (striped).svg
|p3 = Kingdom of Württemberg
|flag_p3 = Flagge Königreich Württemberg.svg
|p4 = Grand Duchy of Baden
|flag_p4 = Flagge Großherzogtum Baden (1871-1891).svg
|p5 = Grand Duchy of Hesse
|flag_p5 = Flagge_Großherzogtum_Hessen_ohne_Wappen.svg
|p6 = Alsace-Lorraine
|flag_p6 = Flag of France.svg
|s1 = Weimar Republic
|s2 = Republic of Alsace-Lorraine
|s3 = Free City of Danzig
|s4 = Second Polish Republic
|s5 = Klaipėda Region
|s6 = Saar (League of Nations)
|s7 = Hlučín Region
|s8 = South Jutland County{{!}}Northern Schleswig
|s9 = Eupen-Malmedy
|flag_s1 = Flag of Germany (3-2 aspect ratio).svg
|flag_s2 = Flag of the Republic of Alsace-Lorraine.svg
|flag_s3 = Gdansk flag.svg
|flag_s4 = Flag of Poland.svg
|flag_s5 = Flag of Lithuania 1918-1940.svg
|flag_s6 = Flag of Saar 1920-1935.svg
|flag_s7 = Flag of Bohemia.svg
|flag_s8 = Flag of Denmark.svg
|flag_s9 = Flag of Belgium.svg
|image_flag = Flag of the German Empire.svg
|flag_alt = Horizontal tricolor (black, white, red)
|flag_caption = Flag of the German Empire
|image_coat = Wappen Deutsches Reich - Reichsadler 1889.svg
|symbol_type = Imperial Coat of arms
|coat_alt = Shield containing a black, one-headed, rightward-looking eagle with red beak, tongue and claws. On its breast is a shield with another eagle. Over its head is an imperial crown with two crossing ribbons.
|image_map = German Empire, Wilhelminian third version.svg
|image_map_alt = Located in north central Europe, containing modern Germany plus much of modern Poland
|image_map_caption = Territory of the German Empire in 1914, prior to [[World War I]]
|national_motto = ''[[Gott mit uns]]''<br/>{{small|"God with us"}}
|national_anthem = {{plainlist|
* ''(none official)''
* "[[Heil dir im Siegerkranz]]" (Imperial)
* "[[Deutschlandlied]]" (popular)
* "[[Die Wacht am Rhein]]" (unofficial)
}}
|capital = Berlin
|common_languages =
;Official language
:[[German language|German]]
;Unofficial minority languages
:[[Danish language|Danish]], [[French language|French]], [[Polish language|Polish]], [[Saterland Frisian language|Frisian]], [[Old Prussian language|Old Prussian]], [[Lithuanian language|Lithuanian]]
;Colonial languages
:[[Bantu languages|Bantu]], [[Oshiwambo]], [[Afrikaans]], [[Swahili language|Swahili]] (African Colonies)
:[[Chinese language|Chinese]] (Tsingtao & Jiaozhou bay)
:[[Papuan languages]] (German New Guinea)
:[[Samoan language|Samoan]] (German Samoa)
|government_type = Constitutional monarchy
|title_leader = [[German Emperor|Emperor]]
|leader1 = [[William I, German Emperor|William I]]
|year_leader1 = 1871–1888
|leader2 = [[Frederick III, German Emperor|Frederick III]]
|year_leader2 = 1888
|leader3 = [[Wilhelm II, German Emperor|Wilhelm II]]
|year_leader3 = 1888–1918
|title_deputy = [[List of Chancellors of Germany|Chancellor]]
|deputy1 = [[Otto von Bismarck]] (first)
|year_deputy1 = 1871–1890
|deputy2 = [[Friedrich Ebert]] (last)
|year_deputy2 = 8–9 Nov 1918
|legislature = [[Reichstag (German Empire)|Reichstag]]
|house1 = [[Reichsrat (Germany)|Reichsrat]]
|type_house1 = State council
|stat_year1 = 1871
|religion = {{plainlist|
* [[Lutherans]]~60%
* [[Roman Catholics]]~40%
}}
|stat_pop1 = {{formatnum:41058792}}
|stat_year2 = 1890
|stat_pop2 = {{formatnum:41058792}}
|stat_year4 = 1910
|stat_pop4 = {{formatnum:41058792}}
|stat_area4 = 540857.54
|currency = {{plainlist|
* [[Vereinsthaler]], [[South German gulden]], [[Bremen thaler]], [[Hamburg mark]], [[French franc]] {{small|(until 1873, together)}}
* [[German gold mark|Goldmark]] {{small|(1873–1914)}}
* [[German Papiermark|Papiermark]] {{small|(after 1914)}}
}}
|footnotes = Area and population not including colonial possessions
|today =
}}
</syntaxhighlight>
{{hidden end}}
== Errors ==
If the template generates errors when calculating data for the Gini or HDI fields, it will add the article to [[:Category:Country articles requiring maintenance]]. This only happens if the page is in the [[WP:MAINSPACE|main article space]], not any other [[WP:NAMESPACE|namespaces]].
== Microformat ==
{{UF-hcard-place}}
== Tracking categories ==
* {{clc|Country articles requiring maintenance}}
* {{clc|Pages using infobox country with unknown parameters}}
* {{clc|Pages using infobox country with syntax problems}}
* {{clc|Pages using infobox country or infobox former country with the flag caption or type parameters}}
* {{clc|Pages using infobox country or infobox former country with the symbol caption or type parameters}}
* {{clc|Former country articles using status text with Colony or Exile}}
== TemplateData ==
{{TemplateData header}}
{{collapse top|title=TemplateData}}
<templatedata>
{
"description": "This template produces an infobox for countries that covers their major attributes such as their flags, ethnic makeup, and political system.",
"format": "{{_\n| ______________________ = _\n}}\n",
"params": {
"conventional_long_name": {
"label": "Full name",
"type": "string",
"required": false,
"description": "Formal or official full name of the country in English. This entry should not be enclosed in brackets.",
"example": "The United States of America"
},
"common_name": {},
"linking_name": {},
"native_name": {
"label": "Native name",
"type": "string",
"required": false,
"example": "{{native name|Bundesrepublik Deutschland}}",
"description": "Country's name (usually full name) in its native language, hence in italics (double quotemarks). The template {{native name}} should be used with this parameter to automatically italicize the text."
},
"name": {
"label": "Geopolitical organisation name",
"type": "string",
"required": false,
"description": "Name of the geopolitical organisation in English."
},
"overlord" : {
"label": "Overlord",
"type": "string",
"required": false,
"description": "Name of the Overlord if any, wiki-linked"
},
"image_flag": {
"label": "Flag",
"type": "wiki-file-name",
"required": false,
"example": "Flag of Iceland.svg",
"description": "File name of an image file on Wikipedia or on Commons that contains the country's current flag. Do not enclose this entry in double brackets and do not give it a prefix such as File:"
},
"flag_width": {
"label": "Flag width",
"type": "string",
"required": false,
"description": "If the default widths provided for the flag and coat-of-arms/symbol images produce an unsatisfactory result, use this to specify the width to be used for the flag image; the remaining width is then assigned to the coat-of-arms/symbol (if included). Can be done as a % or px."
},
"alt_flag": {
"label": "Flag alt text",
"type": "string",
"required": false,
"description": "Alternate text for flag (text shown when pointer hovers over flag)."
},
"flag_border": {
"label": "Flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"flag_caption": {
"label": "Flag caption",
"type": "string",
"required": false,
"description": "Use this parameter to enter a caption for the flag, if one is necessary. Do not end this entry with a period.",
"example": "1992 version of the flag prior to the country's dissolution"
},
"image_flag2": {
"label": "Second flag",
"type": "wiki-file-name",
"required": false,
"example": "Secondflag of Namibia.svg",
"description": "If a country has a second flag— perhaps because of an ongoing civil war or a dispute over sovereignty— you can provide the file name of that second flag in this parameter. Do not include the prefix File:, and do not enclose it in double brackets."
},
"alt_flag2": {
"label": "Second flag alt text",
"type": "string",
"required": false,
"description": "Alt text for second flag (text shown when pointer hovers over flag)."
},
"flag2_border": {
"label": "Second flag border",
"type": "string",
"required": false,
"description": "Set to no to disable border around the flag."
},
"image_coat": {
"label": "Coat of arms",
"type": "wiki-file-name",
"aliases": [
"image_symbol"
],
"example": "Great Seal of the United States (obverse).svg"
},
"symbol_width": {
"label": "Symbol width",
"type": "string",
"required": false,
"description": "Symbol image's width.",
"default": "85px"
},
"alt_coat": {
"label": "Coat of arms alt text",
"type": "string",
"aliases": [
"alt_symbol",
"coat_alt"
],
"required": false,
"description": "Alt text for coat of arms."
},
"symbol_type": {
"label": "Symbol type",
"type": "string",
"required": false,
"description": "If not a coat of arms.",
"example": "emblem, seal, etc"
},
"symbol_type_article": {
"label": "Symbol type article",
"type": "string",
"description": "An article about the type of symbol of the country"
},
"text_symbol": {
"label": "Text symbol",
"type": "string",
"required": false,
"description": "For other types of text symbol.",
"example": "''[hymn name]''"
},
"text_symbol_type": {
"label": "Text symbol type",
"type": "string",
"required": false,
"description": "For other types of text symbol."
},
"other_symbol": {
"label": "Other symbol",
"type": "string",
"required": false,
"description": "Use if a further symbol exists."
},
"other_symbol_type": {
"label": "Other symbol type",
"type": "string",
"required": false
},
"national_motto": {
"label": "National motto",
"type": "string",
"required": false,
"example": "{{lang|de|''{{lang|de|[[Das Lied der Deutschen|Einigkeit und Recht und Freiheit]]}}''}}",
"description": "In inverted commas and wikilinked if link exists. Can also be used with the {{lang}} template and correct two-letter language code to designate the language of the motto where not provided in English."
},
"motto": {
"label": "Motto",
"type": "string",
"required": false
},
"national_anthem": {
"label": "National anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"anthem": {
"label": "Anthem",
"type": "string",
"required": false
},
"royal_anthem": {
"label": "Royal anthem",
"type": "string",
"required": false,
"description": "In inverted commas and wikilinked if link exists."
},
"image_map": {
"label": "Map",
"type": "string",
"required": false,
"example": "LocationCountry.svg"
},
"map_width": {
"label": "Map width",
"type": "string",
"required": false,
"description": "Map image's width.",
"default": "250px"
},
"alt_map": {
"label": "Map alt text",
"type": "string",
"required": false
},
"map_caption": {
"label": "Map caption",
"type": "string",
"required": false,
"description": "Caption to place below map."
},
"image_map2": {
"label": "Map 2",
"type": "string",
"required": false,
"description": "Another map, if required."
},
"map2_width": {
"label": "Map 2 width",
"type": "string",
"required": false
},
"alt_map2": {
"label": "Map 2 alt text",
"type": "string",
"required": false
},
"map_caption2": {
"label": "Map 2 caption",
"type": "string",
"required": false,
"description": "Caption to place below second map."
},
"image_map3": {},
"map3_width": {},
"alt_map3": {},
"map_caption3": {},
"capital": {
"label": "Capital",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type": {
"label": "Capital type",
"type": "string",
"required": false
},
"coordinates": {
"label": "Coordinates",
"type": "string",
"required": false,
"description": "The geographic coordinates of the capital."
},
"latd": {
"label": "Latitude degrees",
"type": "string",
"required": false,
"description": "The degrees of the capital's latitude."
},
"latm": {
"label": "Latitude minutes",
"type": "string",
"description": "The minutes of the capital's latitude."
},
"latNS": {
"label": "Latitude NS",
"type": "string",
"description": "The direction of the capital's latitude."
},
"longd": {
"label": "Longitude degrees",
"type": "string",
"description": "The degrees of the capital's longitude."
},
"longm": {
"label": "Longitude minutes",
"type": "string",
"description": "The minutes of the capital's longitude."
},
"longEW": {
"label": "Longitude EW",
"type": "string",
"description": "The direction of the capital's longitude."
},
"admin_center": {
"label": "Administrative center",
"type": "string",
"required": false,
"description": "Location/s of administrative center/s."
},
"admin_center_type": {
"label": "Administrative center type",
"type": "string",
"required": false,
"default": "Administrative center"
},
"capital2": {
"label": "Capital 2",
"type": "string",
"required": false,
"description": "Name of country/territory's capital, wikilinked if link exists."
},
"capital_type2": {
"label": "Capital 2 type",
"type": "string",
"required": false
},
"admin_center2": {
"label": "Administrative center 2",
"type": "string",
"required": false
},
"admin_center_type2": {
"label": "Administrative center 2 type",
"type": "string",
"required": false
},
"largest_city": {
"label": "Largest city",
"type": "string",
"required": false,
"description": "Name of country/territory's largest city. Use \"capital\" (without quotemarks) if it's the capital."
},
"largest_settlement": {
"label": "Largest settlement",
"type": "string",
"required": false,
"description": "Name of largest settlement if not a city."
},
"largest_settlement_type": {
"label": "Largest settlement type",
"type": "string",
"required": false,
"description": "Type of settlement if largest settlement not a city."
},
"official_languages": {
"label": "Official languages",
"type": "string",
"required": false,
"description": "Languages recognised in legislation, constitution, etc."
},
"national_languages": {
"label": "National languages",
"type": "string",
"required": false,
"description": "Country/territory-wide languages recognised but not necessarily in country/territory-wide law, etc."
},
"regional_languages": {
"label": "Regional languages",
"type": "string",
"required": false,
"description": "Languages recognised or associated with particular regions within the country/territory."
},
"languages_type": {
"label": "Languages type",
"type": "string",
"description": "Use to specify a further type of language, if not official, national or regional."
},
"languages_sub": {
"label": "Languages sub",
"type": "string",
"required": false,
"description": "Is this further type of language a sub-item of the previous non-sub type?",
"example": "'yes' or 'no'"
},
"languages": {
"label": "Languages",
"type": "string",
"required": false,
"description": "Languages of the further type."
},
"languages2_type": {
"label": "2nd languages type",
"type": "string",
"description": "Use to specify a 2nd further type of language, if not official, national or regional."
},
"languages2_sub": {
"label": "Languages 2 sub",
"type": "string",
"required": false,
"description": "Is the second alternative type of languages a sub-item of the previous non-sub type?",
"example": "'yes or 'no'"
},
"languages2": {
"label": "Languages 2",
"type": "string",
"required": false,
"description": "Languages of the second further type."
},
"ethnic_groups": {
"label": "Ethnic groups",
"type": "string",
"required": false,
"description": "The primary ethnic groups of the country",
"example": "{{unbulleted list | 68.8% [[Bumiputera (Malaysia)|Bumiputera]] | 23.2% [[Malaysian Chinese|Chinese]] | 7.0% [[Malaysian Indian|Indian]] | 1.0% Others }}"
},
"ethnic_groups_ref": {
"label": "Ethnic groups reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of ethnic composition"
},
"ethnic_groups_year": {
"label": "Ethnic groups year",
"type": "number",
"required": false,
"description": "Year the ethnic group statistic is from",
"example": "2017"
},
"religion": {
"label": "Religions",
"type": "string",
"required": false,
"description": "List of religious affiliations in {{ublist}} format",
"example": "{{ublist|list_style=line-height:1.3em; |class=nowrap | 33.2% [[Buddhism in Singapore|Buddhism]]...}}"
},
"religion_ref": {
"label": "Religions reference",
"type": "string",
"required": false,
"description": "Reference, in <ref> format, of religious composition"
},
"demonym": {
"label": "Demonym",
"type": "string",
"required": false,
"description": "Name of residents of this country",
"example": "Singaporean",
"suggested": true
},
"org_type": {
"label": "Organization type",
"type": "string",
"required": false
},
"membership": {
"label": "membership",
"type": "string",
"required": false
},
"membership_type": {
"label": "membership_type",
"type": "string",
"required": false
},
"government_type": {
"label": "Type of government",
"type": "string",
"required": false,
"description": "The type of government, e.g. federal republic",
"example": "[[Monarchy]]"
},
"politics_link": {
"label": "Politics link",
"type": "string",
"required": false
},
"leader_title1": {
"label": "Leader 1 title",
"type": "line",
"required": false,
"description": "Title of principal leader",
"example": "[[President of Singapore|President]]"
},
"leader_name1": {
"label": "Leader 1 name",
"type": "line",
"required": false,
"description": "Name of principal leader",
"example": "[[Halimah Yacob]]"
},
"leader_title2": {
"label": "Leader 2 title",
"type": "line",
"required": false,
"description": "Title of 2nd leader",
"example": "[[Prime Minister of Singapore|Prime Minister]]"
},
"leader_name2": {
"label": "Leader 2 name",
"type": "line",
"description": "Name of 2nd leader",
"example": "[[Lee Hsien Loong]]"
},
"leader_title3": {
"label": "Leader 3 title",
"type": "line",
"required": false,
"description": "Title of 3rd leader",
"example": "[[Deputy Prime Minister of Singapore|Deputy Prime Ministers]]"
},
"leader_name3": {
"label": "Leader 3 name",
"type": "line",
"description": "Name of 3rd leader",
"example": "[[Teo Chee Hean]]<br>[[Tharman Shanmugaratnam]]"
},
"leader_title4": {
"label": "Leader 4 title",
"type": "line",
"required": false,
"description": "Title of the 4th leader",
"example": "[[President pro tempore of the United States Senate|President pro tempore]]"
},
"leader_name4": {
"label": "Leader 4 name",
"type": "line",
"description": "Name of the 4th leader"
},
"leader_title5": {
"label": "leader_title5",
"type": "string",
"required": false
},
"leader_name5": {
"label": "Leader name 5",
"type": "string"
},
"leader_title6": {
"label": "Leader title 6",
"type": "string",
"required": false
},
"leader_name6": {
"label": "Leader name 6",
"type": "string"
},
"leader_title7": {
"label": "Leader title7",
"type": "string",
"required": false
},
"leader_name7": {
"label": "Leader name 7",
"type": "string"
},
"leader_title8": {
"label": "Leader title 8",
"type": "string",
"required": false
},
"leader_name8": {
"label": "Leader name 8",
"type": "string"
},
"leader_title9": {
"label": "Leader title 9",
"type": "string",
"required": false
},
"leader_name9": {
"label": "Leader name 9",
"type": "string"
},
"leader_title10": {
"label": "Leader title 10",
"type": "string",
"required": false
},
"leader_name10": {
"label": "Leader name 10",
"type": "string"
},
"leader_title11": {
"label": "Leader title 11",
"type": "string",
"required": false
},
"leader_name11": {
"label": "Leader name 11",
"type": "string"
},
"leader_title12": {
"label": "Leader title 12",
"type": "string",
"required": false
},
"leader_name12": {
"label": "Leader name 12",
"type": "string"
},
"leader_title13": {
"label": "Leader title 13",
"type": "string",
"required": false
},
"leader_name13": {
"label": "Leader name 13",
"type": "string"
},
"leader_title14": {
"label": "Leader title 14",
"type": "string",
"required": false
},
"leader_name14": {
"label": "Leader name 14",
"type": "string"
},
"legislature": {
"label": "Legislature",
"type": "line",
"description": "Name of, and link to, the country's national legislature",
"example": "[[Parliament of Singapore|Parliament]]"
},
"upper_house": {
"description": "Upper house of the country or organization's legislature",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"lower_house": {
"description": "Lower house of the country or organization's legislature",
"label": "Lower house",
"type": "string",
"example": "[[United States House of Representatives|House of Representatives]]"
},
"sovereignty_type": {
"label": "Sovereignty type",
"type": "line",
"required": false,
"description": "Type of sovereignty this country has",
"example": "Independence"
},
"sovereignty_note": {
"label": "Sovereignty note",
"type": "content",
"required": false,
"description": "Note about this country's sovereignty",
"example": "from the [[United Kingdom]]"
},
"established": {
"label": "established",
"type": "string",
"required": false
},
"established_event1": {
"label": "Establishment event 1",
"type": "string",
"required": false
},
"established_date1": {
"label": "Establishment date 1",
"type": "string",
"required": false
},
"established_event2": {
"label": "Establishment event 2",
"type": "string",
"required": false
},
"established_date2": {
"label": "Establishment date 2",
"type": "string",
"required": false
},
"established_event3": {
"label": "Establishment event 3",
"type": "string",
"required": false
},
"established_date3": {
"label": "Establishment date 3",
"type": "string",
"required": false
},
"established_event4": {
"label": "Establishment event 4",
"type": "string",
"required": false
},
"established_date4": {
"label": "established_date4",
"type": "string",
"required": false
},
"established_event5": {
"label": "Establishment event 5",
"type": "string",
"required": false
},
"established_date5": {
"label": "established_date5",
"type": "string",
"required": false
},
"established_event6": {
"label": "established_event6",
"type": "string",
"required": false
},
"established_date6": {
"label": "established_date6",
"type": "string",
"required": false
},
"established_event7": {
"label": "established_event7",
"type": "string",
"required": false
},
"established_date7": {
"label": "established_date7",
"type": "string",
"required": false
},
"established_event8": {
"label": "established_event8",
"type": "string",
"required": false
},
"established_date8": {
"label": "established_date8",
"type": "string",
"required": false
},
"established_event9": {
"label": "established_event9",
"type": "string",
"required": false
},
"established_date9": {
"label": "established_date9",
"type": "string",
"required": false
},
"established_event10": {
"label": "established_event10",
"type": "string",
"required": false
},
"established_date10": {
"label": "established_date10",
"type": "string",
"required": false
},
"established_event11": {
"label": "established_event11",
"type": "string",
"required": false
},
"established_date11": {
"label": "established_date11",
"type": "string",
"required": false
},
"established_event12": {
"label": "established_event12",
"type": "string",
"required": false
},
"established_date12": {
"label": "established_date12",
"type": "string",
"required": false
},
"area_km2": {
"label": "Land area (km²)",
"type": "number",
"required": false,
"description": "Land area of the country in square kilometers",
"example": "722.5",
"suggested": true
},
"area_link": {
"label": "area_link",
"type": "string",
"required": false
},
"area_label": {
"label": "area_label",
"type": "string",
"required": false
},
"FR_foot4": {
"label": "FR_foot4",
"type": "string",
"required": false,
"deprecated": true
},
"area_footnote": {
"label": "area_footnote",
"type": "string",
"required": false
},
"area_rank": {
"label": "Area rank",
"type": "string",
"required": false,
"description": "Rank among countries of land area",
"example": "174th",
"suggested": true
},
"area_sq_mi": {
"label": "Land area (mi²)",
"type": "number",
"required": false,
"description": "Land area of the country in square miles",
"example": "290"
},
"percent_water": {
"label": "percent_water",
"type": "string",
"required": false
},
"area_label2": {
"label": "area_label2",
"type": "string",
"required": false
},
"area_data2": {
"label": "area_data2",
"type": "string",
"required": false
},
"area_label3": {
"label": "area_label3",
"type": "string",
"required": false
},
"area_data3": {
"label": "area_data3",
"type": "string",
"required": false
},
"FR_metropole": {
"label": "FR_metropole",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot2": {
"label": "FR_foot2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_km2": {
"label": "FR_IGN_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_rank": {
"label": "FR_IGN_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_IGN_area_sq_mi": {
"label": "FR_IGN_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"FR_foot3": {
"label": "FR_foot3",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_km2": {
"label": "FR_cadastre_area_km2",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_rank": {
"label": "FR_cadastre_area_rank",
"type": "string",
"required": false,
"deprecated": true
},
"FR_cadastre_area_sq_mi": {
"label": "FR_cadastre_area_sq_mi",
"type": "string",
"required": false,
"deprecated": true
},
"population_estimate": {
"label": "Population estimate",
"type": "number",
"required": false,
"description": "An estimate of the country's population",
"example": "24,000,000"
},
"population_census": {
"label": "Population census",
"type": "string"
},
"population_link": {
"label": "Population link",
"type": "url"
},
"population_estimate_year": {
"label": "Population estimate year",
"type": "number",
"description": "The year the population estimate is from",
"example": "2018"
},
"population_estimate_rank": {
"label": "Population estimate rank",
"type": "string",
"description": "Rank among countries in estimated population",
"example": "3rd"
},
"population_label2": {
"label": "population_label2",
"type": "string",
"required": false
},
"population_data2": {
"label": "Population data 2",
"type": "string",
"required": false
},
"population_label3": {
"label": "Population label 3",
"type": "string",
"required": false
},
"population_data3": {
"label": "Population data 3",
"type": "string",
"required": false
},
"population_census_year": {
"label": "Population census year",
"type": "number",
"required": false,
"description": "Year the population census statistics are from",
"example": "2010"
},
"population_census_rank": {
"label": "Population census rank",
"type": "string",
"description": "Rank among countries in census population",
"example": "3rd"
},
"population_density_km2": {
"label": "Population density per km²",
"type": "number",
"example": "20,212",
"description": "Population density per square kilometer"
},
"population_density_sq_mi": {
"label": "Population density per mi²",
"type": "number",
"description": "Population density per square mile",
"example": "20,212"
},
"pop_den_footnote": {
"label": "Population density footnote",
"type": "string",
"description": "footnote about the population density statistic"
},
"population_density_rank": {
"label": "Population density rank",
"type": "string",
"required": false,
"description": "Rank among countries in population density",
"example": "3rd"
},
"FR_metropole_population": {
"label": "FR_metropole_population",
"type": "string",
"required": false,
"deprecated": true
},
"FR_total_population_estimate_year": {
"label": "FR_total_population_estimate_year",
"type": "string",
"deprecated": true
},
"FR_foot": {
"label": "FR_foot",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate": {
"label": "FR_total_population_estimate",
"type": "string",
"deprecated": true
},
"FR_total_population_estimate_rank": {
"label": "FR_total_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_metropole_population_estimate_rank": {
"label": "FR_metropole_population_estimate_rank",
"type": "string",
"deprecated": true
},
"FR_foot5": {
"label": "FR_foot5",
"type": "string",
"required": false,
"deprecated": true
},
"GDP_PPP": {
"label": "GDP (PPP)",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity)",
"example": "$554.855 billion",
"suggested": true
},
"GDP_PPP_year": {
"label": "GDP (PPP) year cited",
"type": "number",
"required": false,
"description": "Year the GDP (PPP) statistic is cited from",
"example": "2018",
"suggested": true
},
"GDP_PPP_rank": {
"label": "GDP (PPP) rank",
"type": "string",
"required": false,
"description": "Rank among countries for GDP PPP",
"example": "39th"
},
"GDP_PPP_per_capita": {
"label": "GDP_PPP_per_capita",
"type": "line",
"required": false,
"description": "Gross domestic product (purchasing power parity) per capita",
"example": "$98,014"
},
"GDP_PPP_per_capita_rank": {
"label": "GDP (PPP) per capita rank",
"type": "line",
"required": false,
"description": "Rank among countries for GDP PPP per capita",
"example": "3rd"
},
"GDP_nominal": {
"label": "GDP (nominal)",
"type": "string",
"required": false,
"description": "Nominal GDP of the country"
},
"GDP_nominal_year": {
"label": "GDP (nominal) year",
"type": "number",
"required": false,
"description": "Year cited for the country's nominal GDP statistic"
},
"GDP_nominal_rank": {
"label": "GDP (nominal) rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP",
"example": "41st"
},
"GDP_nominal_per_capita": {
"label": "GDP (nominal) per capita",
"type": "string",
"required": false,
"description": "Nominal GDP per capita in the country",
"example": "$61,766"
},
"GDP_nominal_per_capita_rank": {
"label": "GDP (nominal) per capita rank",
"type": "string",
"required": false,
"description": "Rank among countries for nominal GDP per capita",
"example": "8th"
},
"Gini": {
"label": "Gini index",
"type": "number",
"required": false,
"description": "Gini index of the country",
"example": "46.4"
},
"Gini_year": {
"label": "Gini index year cited",
"type": "number",
"required": false,
"description": "Year the gini index statistic is cited for",
"example": "2014"
},
"Gini_change": {
"label": "Gini change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" (over last year)",
"example": "increase"
},
"Gini_ref": {
"label": "Gini index reference",
"type": "line",
"required": false,
"description": "Reference for cited Gini index statistic"
},
"Gini_rank": {
"label": "Gini rank",
"type": "string",
"required": false,
"description": "Rank of Gini indices",
"example": "30th"
},
"HDI": {
"label": "Human development index",
"type": "number",
"required": false,
"example": "0.932",
"suggested": true,
"description": "The country's human development index (HDI)"
},
"HDI_year": {
"label": "Human Development Index year",
"type": "number",
"required": false,
"description": "Year to which the HDI statistic refers",
"example": "2017",
"suggested": true
},
"HDI_change": {
"label": "HDI change",
"type": "string",
"required": false,
"description": "\"increase\" or \"decrease\" from previous year",
"example": "increase"
},
"HDI_ref": {
"label": "Human Development Index reference",
"type": "line",
"required": false,
"description": "Reference for HDI statistic"
},
"HDI_rank": {
"label": "Human development index rank",
"type": "string",
"required": false,
"description": "Rank among countries for HDI score",
"example": "9th"
},
"currency": {
"label": "Currency",
"type": "line",
"required": false,
"description": "National/official currency name and article link",
"example": "[[Singapore dollar]]"
},
"currency_code": {
"label": "Currency code",
"type": "line",
"required": false,
"description": "Currency code of the official currency",
"example": "SGD"
},
"time_zone": {
"label": "Time zone",
"type": "line",
"required": false,
"description": "National time zone(s)",
"example": "[[Singapore Standard Time|SST]]"
},
"utc_offset": {
"label": "UTC offsets",
"type": "string",
"example": "−4 to −12, +10, +11"
},
"utc_offset_DST": {
"label": "UTF offsets (DST)",
"type": "string",
"example": "−4 to −10"
},
"DST_note": {
"label": "DST note",
"type": "string",
"example": "{{efn|name=\"time\"}}"
},
"time_zone_DST": {
"label": "Time zones (DST)",
"type": "string",
"required": false
},
"DST": {
"label": "Daylight savings time",
"type": "string",
"required": false
},
"antipodes": {
"label": "antipodes",
"type": "string",
"required": false
},
"date_format": {
"label": "Date format",
"type": "string",
"required": false
},
"drives_on": {
"label": "drives on",
"type": "string",
"required": false
},
"rail gauge": {
"label": "Rail gauge",
"type": "string",
"required": false
},
"calling_code": {
"label": "Calling code",
"type": "string",
"example": "+1"
},
"patron_saint": {
"label": "Patron saint",
"aliases": [
"patron_saints"
],
"type": "string",
"required": false
},
"iso3166code": {
"label": "ISO 3166 code",
"type": "string",
"description": "ISO 3166 code for the country",
"example": "US"
},
"cctld": {
"label": "Country code top level domain",
"type": "string",
"example": ".se"
},
"official_website": {
"label": "official_website",
"type": "string",
"required": false,
"description": "For geopolitical entities: do not use government website (e.g. usa.gov) for countries (e.g. [[United States]])."
},
"footnote_a": {
"label": "footnote_a",
"type": "string",
"required": false
},
"footnote_b": {
"label": "footnote_b",
"type": "string",
"required": false
},
"footnote_c": {
"label": "footnote_c",
"type": "string",
"required": false
},
"footnote_d": {
"label": "footnote_d",
"type": "string",
"required": false
},
"footnote_e": {
"label": "footnote_e",
"type": "string",
"required": false
},
"footnote_f": {
"label": "footnote_f",
"type": "string",
"required": false
},
"footnote_g": {
"label": "footnote_g",
"type": "string",
"required": false
},
"footnote_h": {
"label": "footnote_h",
"type": "string",
"required": false
},
"footnote1": {
"label": "footnote1",
"type": "string",
"required": false
},
"footnote2": {
"label": "footnote2",
"type": "string",
"required": false
},
"footnote3": {
"label": "footnote3",
"type": "string",
"required": false
},
"footnote4": {
"label": "footnote4",
"type": "string",
"required": false
},
"footnote5": {
"label": "footnote5",
"type": "string",
"required": false
},
"footnote6": {
"label": "footnote6",
"type": "string",
"required": false
},
"footnote7": {
"label": "footnote7",
"type": "string",
"required": false
},
"footnote8": {
"label": "footnote8",
"type": "string",
"required": false
},
"footnotes": {
"label": "footnotes",
"type": "string",
"required": false
},
"navbar": {
"label": "navbar",
"type": "string",
"required": false
},
"micronation": {},
"status": {
"type": "line"
},
"status_text": {
"type": "line"
},
"empire": {},
"year_end": {
"type": "number"
},
"year_exile_start": {
"type": "number"
},
"year_exile_end": {
"type": "number"
},
"life_span": {
"type": "line"
},
"year_start": {
"type": "number"
},
"flag_size": {
"type": "line"
},
"flag_alt": {
"type": "string"
},
"flag_alt2": {
"type": "string"
},
"flag_type": {
"type": "string"
},
"coa_size": {
"type": "line"
},
"englishmotto": {
"type": "string",
"label": "Motto in English",
"description": "The country's motto translated into English"
},
"image_map_size": {
"type": "line"
},
"image_map_alt": {
"type": "string"
},
"image_map_caption": {
"type": "content"
},
"image_map2_size": {
"type": "line"
},
"image_map2_alt": {
"type": "string"
},
"image_map2_caption": {
"type": "content"
},
"loctext": {
"type": "string"
},
"capital_exile": {
"type": "string"
},
"recognized_languages": {
"aliases": [
"recognised_languages"
],
"type": "content",
"label": "Recognized languages",
"description": "Recognized languages of the country, possibly in list format"
},
"recognized_national_languages": {
"aliases": [
"recognised_national_languages"
],
"type": "content",
"label": "Recognized national languages",
"description": "Recognized national languages of the country, possibly in list format"
},
"recognized_regional_languages": {
"aliases": [
"recognised_regional_languages"
],
"type": "content",
"label": "Recognized regional languages",
"description": "Recognized regional languages of the country, possibly in list format"
},
"common_languages": {
"type": "content",
"label": "Common languages",
"description": "Common languages of the country, possibly in list format",
"example": "{{ublist|[[English language|English]]|[[Spanish language|Spanish]]|[[Chinese language|Chinese]]}}"
},
"religion_year": {
"type": "number",
"label": "Religion statistic year",
"description": "Year the religion statistic is from",
"example": "2015"
},
"leader_title15": {
"type": "line"
},
"leader_name15": {
"type": "line"
},
"title_leader": {
"type": "line",
"label": "Leader's title",
"description": "Title of the country's leader",
"example": "[[President of the United States|President]]"
},
"year_leader1": {
"type": "line",
"label": "Leader 1 years",
"description": "Years the first leader reigned",
"example": "1776-1795"
},
"leader1": {
"type": "line",
"label": "Leader 1",
"description": "The first leader of the country",
"example": "[[George Washington]]"
},
"year_leader2": {
"type": "line"
},
"leader2": {
"type": "line"
},
"year_leader3": {
"type": "line"
},
"leader3": {
"type": "line"
},
"year_leader4": {
"type": "line"
},
"leader4": {
"type": "line"
},
"year_leader5": {
"type": "line"
},
"leader5": {
"type": "line"
},
"year_leader6": {
"type": "line"
},
"leader6": {
"type": "line"
},
"year_leader7": {
"type": "line"
},
"leader7": {
"type": "line"
},
"year_leader8": {
"type": "line"
},
"leader8": {
"type": "line"
},
"year_leader9": {
"type": "line"
},
"leader9": {
"type": "line"
},
"year_leader10": {
"type": "line"
},
"leader10": {
"type": "line"
},
"year_leader11": {
"type": "line",
"label": "Leader 11 years",
"description": "Year of leader 11",
"example": "1980-1987"
},
"leader11": {
"type": "line"
},
"title_representative": {
"type": "line",
"label": "Representative title",
"description": "Title of the country's representative",
"example": "[[Governor General of Canada|Governor General]]"
},
"year_representative1": {
"type": "line",
"label": "Representative 1 years",
"description": "Year of representative 1",
"example": "1492-1506"
},
"representative1": {
"type": "line",
"label": "Representative 1",
"description": "First representative"
},
"year_representative2": {
"type": "line",
"label": "Representative 2 years",
"description": "Year of representative 2",
"example": "1552-1580"
},
"representative2": {
"type": "line"
},
"year_representative3": {
"type": "line",
"label": "Representative 3 years",
"description": "Year of representative 3",
"example": "1652-1666"
},
"representative3": {
"type": "line"
},
"year_representative4": {
"type": "line",
"label": "Representative 4 year",
"description": "Year of representative 4",
"example": "1652-1666"
},
"representative4": {
"type": "line"
},
"year_representative5": {
"type": "line",
"label": "Representative 5 years",
"description": "Year of representative 5",
"example": "1652-1666"
},
"representative5": {
"type": "line"
},
"title_deputy": {
"type": "line"
},
"year_deputy1": {
"type": "line",
"label": "Deputy 1 years",
"description": "Years of the 1st deputy",
"example": "2006-2009"
},
"deputy1": {
"type": "line",
"label": "Deputy 1",
"description": "First deputy"
},
"year_deputy2": {
"type": "line",
"label": "Deputy 2 years",
"description": "Years of the 2nd deputy",
"example": "2009-2011"
},
"deputy2": {
"type": "line"
},
"year_deputy3": {
"type": "line",
"label": "Deputy 3 years",
"description": "Years of the 3rd deputy",
"example": "2011-2013"
},
"deputy3": {
"type": "line"
},
"year_deputy4": {
"type": "line",
"label": "Deputy 4 years",
"description": "Years of the 4th deputy",
"example": "2013-2016"
},
"deputy4": {
"type": "line"
},
"year_deputy5": {
"type": "line",
"label": "Deputy 5 years",
"description": "Years of the 5th deputy",
"example": "2016-2018"
},
"deputy5": {
"type": "line"
},
"year_deputy6": {
"type": "line",
"label": "Deputy 6 years",
"description": "Years of the 6th deputy",
"example": "2018-"
},
"deputy6": {
"type": "line"
},
"type_house1": {
"type": "line"
},
"house1": {
"type": "line"
},
"type_house2": {
"type": "line"
},
"house2": {
"type": "line"
},
"event_pre": {
"type": "line"
},
"established_event13": {
"label": "Establishment event 13",
"type": "line"
},
"established_date13": {
"label": "Establishment date 13",
"type": "date"
},
"established_event14": {
"type": "line"
},
"established_date14": {
"type": "line"
},
"established_event15": {
"type": "line"
},
"established_date15": {
"type": "line"
},
"event_start": {
"label": "Starting event",
"description": "The foundational event of the country",
"example": "Established",
"type": "string"
},
"date_pre": {},
"date_start": {
"label": "Date established",
"description": "Date the country, dynasty or organization was established (date of event_start)",
"example": "601 CE",
"type": "string"
},
"event1": {
"label": "Event 1",
"description": "First significant event",
"example": "Signing of the [[Chanyuan Treaty]] with [[Liao dynasty|Liao]]",
"type": "string"
},
"date_event1": {
"label": "Event 1 date",
"description": "Date of the first significant event",
"example": "601",
"type": "date"
},
"event2": {
"label": "Event 2",
"description": "Second significant event",
"example": "[[Alliance Conducted at Sea|Alliance with Jin]]",
"type": "string"
},
"date_event2": {
"label": "Event 2 date",
"description": "Date of the second significant event",
"type": "string"
},
"event3": {
"label": "Event 3",
"description": "Third significant event",
"example": "[[Jingkang Incident]]",
"type": "string"
},
"date_event3": {},
"event4": {
"label": "Event 4",
"description": "Fourth significant event",
"example": "Beginning of [[Mongol conquest of the Song dynasty|Mongol invasion]]",
"type": "string"
},
"date_event4": {},
"event5": {
"label": "Event 5",
"description": "Fifth significant event",
"example": "Fall of [[Hangzhou|Lin'an]]",
"type": "string"
},
"date_event5": {},
"event6": {
"label": "Event 6",
"description": "Sixth significant event",
"example": "[[Krystallnacht]]",
"type": "string"
},
"date_event6": {},
"event_end": {
"label": "Event ending the country",
"description": "The event that caused the country to stop existing or transition, if applicable",
"example": "[[Battle of Yamen]] (end of dynasty)",
"type": "string"
},
"date_end": {
"label": "End date",
"description": "Date the country stopped existing or transitioned, if applicable",
"example": "1433",
"type": "date"
},
"event_post": {},
"date_post": {},
"area_ha": {},
"area_acre": {},
"area_land_km2": {},
"area_land_ha": {},
"area_land_sq_mi": {},
"area_land_acre": {},
"area_water_km2": {},
"area_water_ha": {},
"area_water_sq_mi": {},
"area_water_acre": {},
"stat_area1": {},
"stat_area2": {},
"stat_area3": {},
"stat_area4": {},
"stat_area5": {},
"area_land_footnote": {},
"area_water_footnote": {},
"stat_year1": {},
"ref_area1": {},
"stat_year2": {},
"ref_area2": {},
"stat_year3": {},
"ref_area3": {},
"stat_year4": {},
"ref_area4": {},
"stat_year5": {
"label": "Statistic 5 year",
"description": "Year of statistic 5",
"example": "1933",
"type": "number"
},
"ref_area5": {},
"stat_pop1": {},
"stat_pop2": {},
"stat_pop3": {},
"stat_pop4": {},
"stat_pop5": {},
"ref_pop1": {},
"ref_pop2": {},
"ref_pop3": {},
"ref_pop4": {},
"ref_pop5": {},
"nummembers": {},
"p1": {},
"s1": {},
"flag_p1": {},
"image_p1": {},
"border_p1": {},
"flag_p2": {},
"image_p2": {},
"p2": {},
"border_p2": {},
"flag_p3": {},
"image_p3": {},
"p3": {},
"border_p3": {},
"flag_p4": {},
"image_p4": {},
"p4": {},
"border_p4": {},
"flag_p5": {},
"image_p5": {},
"p5": {},
"border_p5": {},
"flag_p6": {},
"image_p6": {},
"p6": {},
"border_p6": {},
"flag_p7": {},
"image_p7": {},
"p7": {},
"border_p7": {},
"flag_p8": {},
"image_p8": {},
"p8": {},
"border_p8": {},
"flag_p9": {},
"image_p9": {},
"p9": {},
"border_p9": {},
"flag_p10": {},
"image_p10": {},
"p10": {},
"border_p10": {},
"flag_p11": {},
"image_p11": {},
"p11": {},
"border_p11": {},
"flag_p12": {},
"image_p12": {},
"p12": {},
"border_p12": {},
"flag_p13": {},
"image_p13": {},
"p13": {},
"border_p13": {},
"flag_p14": {},
"image_p14": {},
"p14": {},
"border_p14": {},
"flag_p15": {},
"image_p15": {},
"p15": {},
"border_p15": {},
"flag_s1": {},
"image_s1": {},
"border_s1": {},
"flag_s2": {},
"image_s2": {},
"s2": {},
"border_s2": {},
"flag_s3": {},
"image_s3": {},
"s3": {},
"border_s3": {},
"flag_s4": {},
"image_s4": {},
"s4": {},
"border_s4": {},
"flag_s5": {},
"image_s5": {},
"s5": {},
"border_s5": {},
"flag_s6": {},
"image_s6": {},
"s6": {},
"border_s6": {},
"flag_s7": {},
"image_s7": {},
"s7": {},
"border_s7": {},
"flag_s8": {},
"image_s8": {},
"s8": {},
"border_s8": {},
"flag_s9": {},
"image_s9": {},
"s9": {},
"border_s9": {},
"flag_s10": {},
"image_s10": {},
"s10": {},
"border_s10": {},
"flag_s11": {},
"image_s11": {},
"s11": {},
"border_s11": {},
"flag_s12": {},
"image_s12": {},
"s12": {},
"border_s12": {},
"flag_s13": {},
"image_s13": {},
"s13": {},
"border_s13": {},
"flag_s14": {},
"image_s14": {},
"s14": {},
"border_s14": {},
"flag_s15": {},
"image_s15": {},
"s15": {},
"border_s15": {},
"today": {
"label": "Today part of",
"description": "For former countries, a list of countries of which the former country's territories are now part, if no more than four.",
"example": "{{plainlist| *[[Czech Republic]] *[[Denmark]] *[[France]] *[[Germany]] }}",
"type": "content",
"suggested": true
},
"footnotes2": {},
"symbol_caption": {},
"nested": {}
},
"paramOrder": [
"conventional_long_name",
"common_name",
"linking_name",
"native_name",
"name",
"image_flag",
"flag_width",
"alt_flag",
"flag_border",
"flag_caption",
"image_flag2",
"alt_flag2",
"flag2_border",
"image_coat",
"symbol_width",
"alt_coat",
"symbol_type",
"symbol_type_article",
"text_symbol",
"text_symbol_type",
"other_symbol",
"other_symbol_type",
"national_motto",
"motto",
"national_anthem",
"anthem",
"royal_anthem",
"image_map",
"map_width",
"alt_map",
"map_caption",
"image_map2",
"map2_width",
"alt_map2",
"map_caption2",
"image_map3",
"map3_width",
"alt_map3",
"map_caption3",
"capital",
"capital_type",
"overlord",
"coordinates",
"latd",
"latm",
"latNS",
"longd",
"longm",
"longEW",
"admin_center",
"admin_center_type",
"capital2",
"capital_type2",
"admin_center2",
"admin_center_type2",
"largest_city",
"largest_settlement",
"largest_settlement_type",
"official_languages",
"national_languages",
"regional_languages",
"languages_type",
"languages_sub",
"languages",
"languages2_type",
"languages2_sub",
"languages2",
"ethnic_groups",
"ethnic_groups_ref",
"ethnic_groups_year",
"religion",
"religion_ref",
"demonym",
"org_type",
"membership",
"membership_type",
"government_type",
"politics_link",
"leader_title1",
"leader_name1",
"leader_title2",
"leader_name2",
"leader_title3",
"leader_name3",
"leader_title4",
"leader_name4",
"leader_title5",
"leader_name5",
"leader_title6",
"leader_name6",
"leader_title7",
"leader_name7",
"leader_title8",
"leader_name8",
"leader_title9",
"leader_name9",
"leader_title10",
"leader_name10",
"leader_title11",
"leader_name11",
"leader_title12",
"leader_name12",
"leader_title13",
"leader_name13",
"leader_title14",
"leader_name14",
"legislature",
"upper_house",
"lower_house",
"sovereignty_type",
"sovereignty_note",
"established",
"established_event1",
"established_date1",
"established_event2",
"established_date2",
"established_event3",
"established_date3",
"established_event4",
"established_date4",
"established_event5",
"established_date5",
"established_event6",
"established_date6",
"established_event7",
"established_date7",
"established_event8",
"established_date8",
"established_event9",
"established_date9",
"established_event10",
"established_date10",
"established_event11",
"established_date11",
"established_event12",
"established_date12",
"area_km2",
"area_link",
"area_label",
"FR_foot4",
"area_footnote",
"area_rank",
"area_sq_mi",
"percent_water",
"area_label2",
"area_data2",
"area_label3",
"area_data3",
"FR_metropole",
"FR_foot2",
"FR_IGN_area_km2",
"FR_IGN_area_rank",
"FR_IGN_area_sq_mi",
"FR_foot3",
"FR_cadastre_area_km2",
"FR_cadastre_area_rank",
"FR_cadastre_area_sq_mi",
"population_estimate",
"population_census",
"population_link",
"population_estimate_year",
"population_estimate_rank",
"population_label2",
"population_data2",
"population_label3",
"population_data3",
"population_census_year",
"population_census_rank",
"population_density_km2",
"population_density_sq_mi",
"pop_den_footnote",
"population_density_rank",
"FR_metropole_population",
"FR_total_population_estimate_year",
"FR_foot",
"FR_total_population_estimate",
"FR_total_population_estimate_rank",
"FR_metropole_population_estimate_rank",
"FR_foot5",
"GDP_PPP",
"GDP_PPP_year",
"GDP_PPP_rank",
"GDP_PPP_per_capita",
"GDP_PPP_per_capita_rank",
"GDP_nominal",
"GDP_nominal_year",
"GDP_nominal_rank",
"GDP_nominal_per_capita",
"GDP_nominal_per_capita_rank",
"Gini",
"Gini_year",
"Gini_change",
"Gini_ref",
"Gini_rank",
"HDI",
"HDI_year",
"HDI_change",
"HDI_ref",
"HDI_rank",
"currency",
"currency_code",
"time_zone",
"utc_offset",
"utc_offset_DST",
"DST_note",
"time_zone_DST",
"DST",
"antipodes",
"date_format",
"drives_on",
"rail gauge",
"calling_code",
"patron_saint",
"iso3166code",
"cctld",
"official_website",
"footnote_a",
"footnote_b",
"footnote_c",
"footnote_d",
"footnote_e",
"footnote_f",
"footnote_g",
"footnote_h",
"footnote1",
"footnote2",
"footnote3",
"footnote4",
"footnote5",
"footnote6",
"footnote7",
"footnote8",
"footnotes",
"navbar",
"micronation",
"status",
"status_text",
"empire",
"year_end",
"year_exile_start",
"year_exile_end",
"life_span",
"year_start",
"flag_size",
"flag_alt",
"flag_alt2",
"flag_type",
"coa_size",
"englishmotto",
"image_map_size",
"image_map_alt",
"image_map_caption",
"image_map2_size",
"image_map2_alt",
"image_map2_caption",
"loctext",
"capital_exile",
"recognized_languages",
"recognized_national_languages",
"recognized_regional_languages",
"common_languages",
"religion_year",
"leader_title15",
"leader_name15",
"title_leader",
"year_leader1",
"leader1",
"year_leader2",
"leader2",
"year_leader3",
"leader3",
"year_leader4",
"leader4",
"year_leader5",
"leader5",
"year_leader6",
"leader6",
"year_leader7",
"leader7",
"year_leader8",
"leader8",
"year_leader9",
"leader9",
"year_leader10",
"leader10",
"year_leader11",
"leader11",
"title_representative",
"year_representative1",
"representative1",
"year_representative2",
"representative2",
"year_representative3",
"representative3",
"year_representative4",
"representative4",
"year_representative5",
"representative5",
"title_deputy",
"year_deputy1",
"deputy1",
"year_deputy2",
"deputy2",
"year_deputy3",
"deputy3",
"year_deputy4",
"deputy4",
"year_deputy5",
"deputy5",
"year_deputy6",
"deputy6",
"type_house1",
"house1",
"type_house2",
"house2",
"established_event13",
"established_date13",
"established_event14",
"established_date14",
"established_event15",
"established_date15",
"event_pre",
"date_pre",
"event_start",
"date_start",
"event1",
"date_event1",
"event2",
"date_event2",
"event3",
"date_event3",
"event4",
"date_event4",
"event5",
"date_event5",
"event6",
"date_event6",
"event_end",
"date_end",
"event_post",
"date_post",
"area_ha",
"area_acre",
"area_land_km2",
"area_land_ha",
"area_land_sq_mi",
"area_land_acre",
"area_water_km2",
"area_water_ha",
"area_water_sq_mi",
"area_water_acre",
"stat_area1",
"stat_area2",
"stat_area3",
"stat_area4",
"stat_area5",
"area_land_footnote",
"area_water_footnote",
"stat_year1",
"ref_area1",
"stat_year2",
"ref_area2",
"stat_year3",
"ref_area3",
"stat_year4",
"ref_area4",
"stat_year5",
"ref_area5",
"stat_pop1",
"stat_pop2",
"stat_pop3",
"stat_pop4",
"stat_pop5",
"ref_pop1",
"ref_pop2",
"ref_pop3",
"ref_pop4",
"ref_pop5",
"nummembers",
"p1",
"s1",
"flag_p1",
"image_p1",
"border_p1",
"flag_p2",
"image_p2",
"p2",
"border_p2",
"flag_p3",
"image_p3",
"p3",
"border_p3",
"flag_p4",
"image_p4",
"p4",
"border_p4",
"flag_p5",
"image_p5",
"p5",
"border_p5",
"flag_p6",
"image_p6",
"p6",
"border_p6",
"flag_p7",
"image_p7",
"p7",
"border_p7",
"flag_p8",
"image_p8",
"p8",
"border_p8",
"flag_p9",
"image_p9",
"p9",
"border_p9",
"flag_p10",
"image_p10",
"p10",
"border_p10",
"flag_p11",
"image_p11",
"p11",
"border_p11",
"flag_p12",
"image_p12",
"p12",
"border_p12",
"flag_p13",
"image_p13",
"p13",
"border_p13",
"flag_p14",
"image_p14",
"p14",
"border_p14",
"flag_p15",
"image_p15",
"p15",
"border_p15",
"flag_s1",
"image_s1",
"border_s1",
"flag_s2",
"image_s2",
"s2",
"border_s2",
"flag_s3",
"image_s3",
"s3",
"border_s3",
"flag_s4",
"image_s4",
"s4",
"border_s4",
"flag_s5",
"image_s5",
"s5",
"border_s5",
"flag_s6",
"image_s6",
"s6",
"border_s6",
"flag_s7",
"image_s7",
"s7",
"border_s7",
"flag_s8",
"image_s8",
"s8",
"border_s8",
"flag_s9",
"image_s9",
"s9",
"border_s9",
"flag_s10",
"image_s10",
"s10",
"border_s10",
"flag_s11",
"image_s11",
"s11",
"border_s11",
"flag_s12",
"image_s12",
"s12",
"border_s12",
"flag_s13",
"image_s13",
"s13",
"border_s13",
"flag_s14",
"image_s14",
"s14",
"border_s14",
"flag_s15",
"image_s15",
"s15",
"border_s15",
"today",
"footnotes2",
"symbol_caption",
"nested"
]
}
</templatedata>
{{cob}}
<includeonly>{{Sandbox other||
<!--Categories below this line, please; interwikis at Wikidata-->
[[Category:Country infobox templates| ]]
[[Category:Templates that add a tracking category]]
}}</includeonly>
fc821aaf0ce6dab1cb45342f04d77bfe226fae77
Template:Infobox nation
10
1696
3191
2023-11-11T10:38:55Z
Führerredux
2
Created page with "<includeonly>{{infobox |templatestyles = Template:Infobox country/styles.css |bodyclass = ib-country vcard |aboveclass = adr |bodyclass = ib-adminunit |title = |above= {{#if:{{{full_name|}}}{{{native_name|}}}{{{name|}}} | {{#if:{{{full_name|}}} |<div class="fn org country-name">{{{full_name|}}}</div> }} {{#if:{{{native_name|}}}{{{name|}}} |<div class="ib-country-names"><!-- -->{{br separated entries |{{{na..."
wikitext
text/x-wiki
<includeonly>{{infobox
|templatestyles = Template:Infobox country/styles.css
|bodyclass = ib-country vcard
|aboveclass = adr
|bodyclass = ib-adminunit
|title =
|above=
{{#if:{{{full_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{full_name|}}}
|<div class="fn org country-name">{{{full_name|}}}</div>
}}
{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
| <div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}
}}
</div>
}}
}}
|subheader =
{{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
|data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
|class2 = anthem
|data2 = {{#if: {{{anthem|}}}|<b>{{{anthem_type|{{#if: {{{second_anthem|}}}|National anthem|Anthem}}}}}:</b> {{{anthem|}}}|}}
|data3 = {{#if: {{{second_anthem|}}}|<b>{{{second_anthem_type|Royal anthem}}}:</b> {{{second_anthem|}}}|}}
|data4 = {{#if: {{{motto|}}}|<b>{{{motto_type|Motto}}}</b>: {{{motto|}}}|}}
|label4 = Status
|data4 = {{{status|}}}
|rowclass5 = mergedrow
|label5 = {{{members_type|Membership}}}
|data5 = {{{members|}}}
|label6 = {{{membership_type|Country}}}
|data6 = {{{membership|}}}
|rowclass7 = mergedrow
|label7 = {{{membership_type2|State}}}
|data7 = {{{membership2|}}}
|rowclass8 = mergedrow
|label8 = {{{membership_type3|}}}
|data8 = {{{membership3|}}}
|label9 = {{{capital_type|Capital}}}<br>{{#ifeq:{{{capital}}}|{{{largest}}}|<div style="font-weight: normal">and largest {{{largest_type|city}}}</div>|}}
|data9 = {{{capital|}}}
|rowclass10 = mergedrow
|label10 = Largest {{{largest_type|city}}}
|data10 = {{#ifeq:{{{capital|}}}|{{{largest|}}}||{{{largest|}}}}}
|label11 = {{nowrap|{{{language_type|Official language}}}}}
|data11 = {{{language|}}}
|rowclass12 = {{#if: {{{language|}}}|mergedrow|}}
|label12 = {{nowrap|{{{languages_type|Common languages}}}}}
|data12 = {{{languages|}}}
|label13 = Demonyms
|data13 = {{{demonyms|}}}
|label14 = {{{religion_type|State religion}}}
|data14 = {{{religion|}}}
|label15 = {{#if:{{{government|}}}|{{{government_type|Government}}}|}}
|header15 = {{#if:{{{government|}}}||{{#if:{{{leader1|}}}{{{historical_leader1|}}}|{{{government_type|Government}}}}}}}
|data15 = {{{government|}}}
|label16 = <div style="font-weight: normal;text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{ideology_type|State ideology}}}</div>
|data16 = {{{ideology|}}}
|rowclass16 = mergedrow
|label17 = <div style="font-weight: normal;text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{party_type|Ruling party}}}</div>
|data17 = {{{party|}}}
|rowclass17 = mergedrow
|rowclass18 = mergedrow
|data18 = {{#if:{{{leader1|}}}|{{Infobox country/multirow|{{{title_leader1|}}} |{{{leader1|}}} |{{{title_leader2|}}} |{{{leader2|}}} |{{{title_leader3|}}} |{{{leader3|}}} |{{{title_leader4|}}} |{{{leader4|}}} |{{{title_leader5|}}} |{{{leader5|}}}|{{{title_leader6|}}} |{{{leader6|}}}|{{{title_leader7|}}} |{{{leader7|}}}|{{{title_leader8|}}} |{{{leader8|}}} }} }}
|rowclass19 = mergedrow
|header19 = {{{historical_title_leader|}}}
|rowclass20 = mergedrow
|data20 = {{#if:{{{historical_leader1|}}}|{{Infobox country/multirow|{{{historical_year1|}}} |{{{historical_leader1|}}} |{{{historical_year2|}}} |{{{historical_leader2|}}} |{{{historical_year3|}}} |{{{historical_leader3|}}} |{{{historical_year4|}}} |{{{historical_leader4|}}} |{{{historical_year5|}}} |{{{historical_leader5|}}}|{{{historical_year6|}}} |{{{historical_leader6|}}}|{{{historical_year7|}}} |{{{historical_leader7|}}}|{{{historical_year8|}}} |{{{historical_leader8|}}} }} }}
|rowclass21 = mergedrow
|header21 = {{{historical2_title_leader|}}}
|rowclass22 = mergedrow
|data22 = {{#if:{{{historical2_leader1|}}}|{{Infobox country/multirow|{{{historical2_year1|}}} |{{{historical2_leader1|}}} |{{{historical2_year2|}}} |{{{historical2_leader2|}}} |{{{historical2_year3|}}} |{{{historical2_leader3|}}} |{{{historical2_year4|}}} |{{{historical2_leader4|}}} |{{{historical2_year5|}}} |{{{historical2_leader5|}}}|{{{historical2_year6|}}} |{{{historical2_leader6|}}}|{{{historical2_year7|}}} |{{{historical2_leader7|}}}|{{{historical2_year8|}}} |{{{historical2_leader8|}}} }} }}
|rowclass23 = mergedrow
|header23 = {{{historical3_title_leader|}}}
|rowclass24 = mergedrow
|data24 = {{#if:{{{historical3_leader1|}}}|{{Infobox country/multirow|{{{historical3_year1|}}} |{{{historical3_leader1|}}} |{{{historical3_year2|}}} |{{{historical3_leader2|}}} |{{{historical3_year3|}}} |{{{historical3_leader3|}}} |{{{historical3_year4|}}} |{{{historical3_leader4|}}} |{{{historical3_year5|}}} |{{{historical3_leader5|}}}|{{{historical3_year6|}}} |{{{historical3_leader6|}}}|{{{historical3_year7|}}} |{{{historical3_leader7|}}}|{{{historical3_year8|}}} |{{{historical3_leader8|}}} }} }}
|rowclass25 = mergedrow
|header25 = {{{historical4_title_leader|}}}
|rowclass26 = mergedrow
|data26 = {{#if:{{{historical4_leader1|}}}|{{Infobox country/multirow|{{{historical4_year1|}}} |{{{historical4_leader1|}}} |{{{historical4_year2|}}} |{{{historical4_leader2|}}} |{{{historical4_year3|}}} |{{{historical4_leader3|}}} |{{{historical4_year4|}}} |{{{historical4_leader4|}}} |{{{historical4_year5|}}} |{{{historical4_leader5|}}}|{{{historical4_year6|}}} |{{{historical4_leader6|}}}|{{{historical4_year7|}}} |{{{historical4_leader7|}}}|{{{historical4_year8|}}} |{{{historical4_leader8|}}} }} }}
|header26 = {{#if:{{{upper_house|}}}{{{lower_house|}}}|{{#if:{{{legislature|}}}||{{{legislature_type|Legislature}}}}}|}}
|label27 = {{#if:{{{legislature|}}}|{{{legislature_type|Legislature}}}|}}
|data27 = {{{legislature|}}}
|rowclass28 = mergedrow
|label28 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{upper_house_type|Upper house}}}</div>
|data28 = {{{upper_house|}}}
|rowclass29 = mergedrow
|label29 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{lower_house_type|Lower house}}}</div>
|data29 = {{{lower_house|}}}
|label30 = Economy
|data30 = {{{economy|}}}
|header31 = {{#if: {{{history_year1|}}}|{{{history|History}}}|}}
|rowclass32 = mergedrow
|data32 = {{#if:{{{history_year1|}}}|{{Infobox country/multirow|{{{history_event1|}}} |{{{history_year1|}}} |{{{history_event2|}}} |{{{history_year2|}}} |{{{history_event3|}}} |{{{history_year3|}}} |{{{history_event4|}}} |{{{history_year4|}}} |{{{history_event5|}}} |{{{history_year5|}}}|{{{history_event6|}}} |{{{history_year6|}}}|{{{history_event7|}}} |{{{history_year7|}}}|{{{history_event8|}}} |{{{history_year8|}}} }} }}
|header33 = {{#if: {{{area_year|}}}||{{#if: {{{area_total|}}}|Area|}}}}
|label33 = {{#if: {{{area_year|}}}|{{#if: {{{area_total|}}}|Area|}}|}}
|data33 = {{{area_year|}}}
|rowclass34 = mergedrow
|label34 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Total</div>
|data34 = {{#if: {{{area_total|}}}|{{{area_total|}}} km<sup>2</sup>|}}
|rowclass35 = mergedrow
|label35 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Water </div>
|data35 = {{#if: {{{area_water|}}}|{{{area_water|}}} km<sup>2</sup>|}}
|header36 = {{#if: {{{population_estimate|}}}{{{population_census|}}}|Population|}}
|rowclass37 = mergedrow
|label37 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{population_estimate_year|}}} estimate</div>
|data37 = {{{population_estimate|}}}
|rowclass38 = mergedrow
|label38 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• {{{population_census_year|}}} census</div>
|data38 = {{{population_census|}}}
|rowclass39 = mergedrow
|label39 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Density</div>
|data39 = {{{population_density|}}}
|header40 = {{#if: {{{gdp_ppp|}}}|GDP <div style="font-weight: normal;"> (PPP)</div>|}}
|rowclass41 = mergedrow
|label41 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Total</div>
|data41 = {{{gdp_ppp|}}}
|rowclass42 = mergedrow
|label42 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Per capita</div>
|data42 = {{{gdp_ppp_capita|}}}
|header43 = {{#if: {{{gdp_nominal|}}}|GDP <div style="font-weight: normal;"> (nominal)</div>|}}
|rowclass44 = mergedrow
|label44 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Total</div>
|data44 = {{{gdp_nominal|}}}
|rowclass45 = mergedrow
|label45 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Per capita</div>
|data45 = {{{gdp_nominal_capita|}}}
|label46 = Gini {{#if:{{{gini_year|}}}|({{{gini_year|}}})|}}
|data46 = {{{gini|}}}
|label47 = HDI {{#if:{{{hdi_year|}}}|({{{hdi_year|}}})|}}
|data47 = {{{hdi|}}}
|label48 = Currency
|data48 = {{{currency|}}} {{#if:{{{currency_symbol|}}}|({{{currency_symbol|}}})}} {{#if:{{{currency_code|}}}|({{{currency_code|}}})}}
|label49 = Time zone
|data49 = {{{time_zone|}}}
|rowclass50 = mergedrow
|label50 = <div style="text-indent:-0.9em;margin-left:1.2em;font-weight:normal;">• Summer (DST)</div>
|data50 = {{{time_zone_dst|}}}
|label51 = Date format
|data51 = {{{date_format|}}}
|label52 = Driving side
|data52 = {{{driving_side|}}}
|label53 = Calling code
|data53 = {{{calling_code|}}}
|label54 = ISO 3166 code
|data54 = {{{iso_3166_code|}}}
|label55 = Internet TLD
|data55 = {{{internet_tld|}}}
|data80 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}}}
}}
}}</includeonly><noinclude>{{documentation}}</noinclude>
c306f1c3bbb78ab388e870a789e59b4da3f3a9a0
Greece
0
243
3192
2141
2023-11-11T10:51:43Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name = Ἑλληνικὴ Δημοκρατία
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = National flag
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic_Republic(1936).png
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = Athens
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of the Hellenic Republic|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = Greek (Katharevousa has official status, while Demotic is popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }}
| largest_city = capital
| languages = Greek
| demonym = Greek, Hellene
| leader1 = Pavlos Kountouriotis
| year_leader1 = 1924–1926
| leader2 = Theodoros Pangalos
| year_leader2 = 1926
| leader3 = Pavlos Kountouriotis
| year_leader3 = 1926–1929
| leader4 = Alexandros Zaimis
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = Prime Minister
| leader_title1 = President of the Hellenic Republic
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = Prime Minister
| legislature = Hellenic Parliament
| house1 = Hellenic Senate
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = Establishment history
| established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}}
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration)
| established_event2 = Recognised
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|Current constitution}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
67d382c40a0a254e8584ff6344c5c4af0e9a5e7a
3193
3192
2023-11-11T11:13:46Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name =
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = National flag
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic_Republic(1936).png
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = Athens
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of the Hellenic Republic|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = Greek (Katharevousa has official status, while Demotic is popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }}
| largest_city = capital
| languages = Greek
| demonym = Greek, Hellene
| leader1 = Pavlos Kountouriotis
| year_leader1 = 1924–1926
| leader2 = Theodoros Pangalos
| year_leader2 = 1926
| leader3 = Pavlos Kountouriotis
| year_leader3 = 1926–1929
| leader4 = Alexandros Zaimis
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = Prime Minister
| leader_title1 = President of the Hellenic Republic
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = Prime Minister
| legislature = Hellenic Parliament
| house1 = Hellenic Senate
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = Establishment history
| established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}}
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration)
| established_event2 = Recognised
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|Current constitution}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period.
== History ==
=== The Formation of the Second Hellenic Republic ===
Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]].
This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile.
=== The Great War and the Greco-Turkish War ===
Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large.
The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936.
=== The Rise of Valkism in Greece ===
As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force.
=== Prospects for the Future ===
As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece.
=== The International Straits Commision ===
{{main|International Straits Commision}}
Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms.
Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state.
The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges.
5fffcb1d548212939518077b1fffc42399cdf411
3241
3193
2023-11-11T12:48:27Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name =
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = National flag
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic_Republic(1936).png
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = Athens
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of the Hellenic Republic|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = Greek (Katharevousa has official status, while Demotic is popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }}
| largest_city = capital
| languages = Greek
| demonym = Greek, Hellene
| leader1 = Pavlos Kountouriotis
| year_leader1 = 1924–1926
| leader2 = Theodoros Pangalos
| year_leader2 = 1926
| leader3 = Pavlos Kountouriotis
| year_leader3 = 1926–1929
| leader4 = Alexandros Zaimis
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = Prime Minister
| leader_title1 = President of the Hellenic Republic
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = Prime Minister
| legislature = Hellenic Parliament
| house1 = Hellenic Senate
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = Establishment history
| established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}}
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration)
| established_event2 = Recognised
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|Current constitution}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period.
== History ==
=== The Formation of the Second Hellenic Republic ===
Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]].
This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile.
=== The Great War and the Greco-Turkish War ===
Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large.
The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936.
=== The Rise of Valkism in Greece ===
As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force.
=== Prospects for the Future ===
As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece.
=== The International Straits Commision ===
{{main|International Straits Commision}}
Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms.
Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state.
The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges.
[[Category:Important_Minors]]
c7934c21f112e458eb864c57dcfb25de3fe65ba6
File:Alexandros Zaimis.png
6
1697
3194
2023-11-11T11:16:41Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Eleftherios Kyriakou Venizelos.png
6
1698
3195
2023-11-11T11:17:11Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Aléxandros Zaímis
0
1699
3196
2023-11-11T11:20:04Z
Führerredux
2
Created page with "{{Infobox officeholder | name = Aléxandros Zaímis | office = President of the Hellenic Republic | order = 4th | native_name = Αλέξανδρος Ζαίμης | native_name_lang = el | image = Alexandros Zaimis.png | alt = Portrait of Alexandros Zaimis }} He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was..."
wikitext
text/x-wiki
{{Infobox officeholder
| name = Aléxandros Zaímis
| office = President of the Hellenic Republic
| order = 4th
| native_name = Αλέξανδρος Ζαίμης
| native_name_lang = el
| image = Alexandros Zaimis.png
| alt = Portrait of Alexandros Zaimis
}}
He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.\nIn 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, Eleftherios Venizelos nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at
11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes.
15f337bb7048321aa94dfbabc0a5c582f5cdf66a
3197
3196
2023-11-11T11:27:31Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox officeholder
| name = Aléxandros Zaímis
| office = President of the Hellenic Republic
| order = 4th
| native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}}
| native_name_lang = el
| image = Alexandros Zaimis.png
| alt = Portrait of Alexandros Zaimis
| predecessor = [[Pavlos Kountouriotis]]
| primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]]
| term_start = 10 December 1929
| office2 = Prime Minister of Greece
|term_start2 = 4 December 1926
|term_end2 = 4 July 1928
|president2 = Pavlos Kountouriotis
|predecessor2 = [[Georgios Kondilis]]
|successor2 = [[Eleftherios Venizelos]]
|term_start3 = 5 February 1917
|term_end3 = 27 June 1917
|monarch3 = [[Constantine I of Greece|Constantine I]]<br>[[Alexander of Greece|Alexander]]
|predecessor3 = [[Spyridon Lambros]]
|successor3 = [[Eleftherios Venizelos]]
|term_start4 = 22 June 1916
|term_end4 = 16 September 1916
|monarch4 = Constantine I
|predecessor4 = [[Stephanos Skouloudis]]
|successor4 = [[Nikolaos Kalogeropoulos]]
|term_start5 = 7 October 1915
|term_end5 = 7 November 1915
|monarch5 = Constantine I
|predecessor5 = [[Eleftherios Venizelos]]
|successor5 = [[Stephanos Skouloudis]]
|term_start6 = 25 November 1901
|term_end6 = 6 December 1902
|monarch6 = [[George I of Greece|George I]]
|predecessor6 = [[Georgios Theotokis]]
|successor6 = [[Theodoros Deligiannis]]
|term_start7 = 3 October 1897
|term_end7 = 14 April 1899
|monarch7 = [[George I of Greece|George I]]
|predecessor7 = [[Dimitrios Rallis]]
|successor7 = [[Georgios Theotokis]]
|office8 = [[High Commissioner]] of [[Cretan State|Crete]]
|term_start8 = 18 September 1906
|term_end8 = 24 September 1908
|monarch8 = [[George I of Greece|George I]]
|predecessor8 = [[Prince George of Greece]]
|successor8 = ([[Enosis|Unification with Greece]] unilaterally declared)
| party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>[[Papyrus Larousse Britannica]], tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}}
| successor2 = [[Eleftherios Venizelos]]
| birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}}
| birth_place = Athens, Kingdom of Greece
| residence = [[Kerpini]], [[Kalavryta]], [[Achaea|Achaia]] prefecture, [[Peloponnese]], [[Greece]]
| occupation = Politician
}}
He was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.\nIn 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, Eleftherios Venizelos nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at
11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes.
4a730544da88a0747bff53e75cf4c2fad0926a9b
3198
3197
2023-11-11T11:32:52Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox officeholder
| name = Aléxandros Zaímis
| office = President of the Hellenic Republic
| order = 4th
| native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}}
| native_name_lang = el
| image = Alexandros Zaimis.png
| alt = Portrait of Alexandros Zaimis
| predecessor = Pavlos Kountouriotis
| primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]]
| term_start = 10 December 1929
| office2 = Prime Minister of Greece
|term_start2 = 4 December 1926
|term_end2 = 4 July 1928
|president2 = Pavlos Kountouriotis
|predecessor2 = Georgios Kondylis
|successor2 = [[Eleftherios Venizelos]]
|term_start3 = 5 February 1917
|term_end3 = 27 June 1917
|monarch3 = Constantine I<br>Alexander
|predecessor3 = Spyridon Lambros
|successor3 = [[Eleftherios Venizelos]]
|term_start4 = 22 June 1916
|term_end4 = 16 September 1916
|monarch4 = Constantine I
|predecessor4 = Stephanos Skouloudis
|successor4 = Nikolaos Kalogeropoulos
|term_start5 = 7 October 1915
|term_end5 = 7 November 1915
|monarch5 = Constantine I
|predecessor5 = [[Eleftherios Venizelos]]
|successor5 = Stephanos Skouloudis
|term_start6 = 25 November 1901
|term_end6 = 6 December 1902
|monarch6 = George I
|predecessor6 = Georgios Theotokis
|successor6 = Theodoros Deligiannis
|term_start7 = 3 October 1897
|term_end7 = 14 April 1899
|monarch7 = George
|predecessor7 = [[Dimitrios Rallis]]
|successor7 = Georgios Theotokis
|office8 = High Commissioner of Crete
|term_start8 = 18 September 1906
|term_end8 = 24 September 1908
|monarch8 = George I
|predecessor8 = Prince George of Greece
|successor8 = (Unification with Greece unilaterally declared)
| party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}}
| successor2 = [[Eleftherios Venizelos]]
| birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}}
| birth_place = Athens, Kingdom of Greece
| residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]]
| occupation = Politician
}}
'''{{PAGENAME}}''' was born in Athens and was the son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis. On his father's side, he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture. He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.
In 1929 he was elected senator and then president of the Senate. With the resignation of Koundouriotis on December 9, 1929, [[Eleftherios Venizelos]] nominated Alexandros Zaimis as the next President of the Republic. Papanastasiou and Argyropoulos opposed Zaimi's candidacy. Venizelos justified his choice for the person of Zaimis that he came from a historical family. He was also not always democratic, but he was a moderate conservative. During the voting in the joint session of the two Legislatures held at
11 in the morning of December 14, 1929, 101 senators voted out of a total of 120 and 226 deputies out of a total of 250, Zaimis was elected with 257 votes.
4d330785e199d1014a752ef9beb0d28d90a20320
3207
3198
2023-11-11T11:51:10Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox officeholder
| name = Aléxandros Zaímis
| office = President of the Hellenic Republic
| order = 4th
| native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}}
| native_name_lang = el
| image = Alexandros Zaimis.png
| alt = Portrait of Alexandros Zaimis
| predecessor = Pavlos Kountouriotis
| primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]]
| term_start = 10 December 1929
| office2 = Prime Minister of Greece
| term_start2 = 4 December 1926
| term_end2 = 4 July 1928
| president2 = Pavlos Kountouriotis
| predecessor2 = Georgios Kondylis
| successor2 = [[Eleftherios Venizelos]]
| term_start3 = 5 February 1917
| term_end3 = 27 June 1917
| monarch3 = Constantine I<br>Alexander
| predecessor3 = Spyridon Lambros
| successor3 = [[Eleftherios Venizelos]]
| term_start4 = 22 June 1916
| term_end4 = 16 September 1916
| monarch4 = Constantine I
| predecessor4 = Stephanos Skouloudis
| successor4 = Nikolaos Kalogeropoulos
| term_start5 = 7 October 1915
| term_end5 = 7 November 1915
| monarch5 = Constantine I
| predecessor5 = [[Eleftherios Venizelos]]
| successor5 = Stephanos Skouloudis
| term_start6 = 25 November 1901
| term_end6 = 6 December 1902
| monarch6 = George I
| predecessor6 = Georgios Theotokis
| successor6 = Theodoros Deligiannis
| term_start7 = 3 October 1897
| term_end7 = 14 April 1899
| monarch7 = George
| predecessor7 = [[Dimitrios Rallis]]
| successor7 = Georgios Theotokis
| office8 = High Commissioner of Crete
| term_start8 = 18 September 1906
| term_end8 = 24 September 1908
| monarch8 = George I
| predecessor8 = Prince George of Greece
| successor8 = (Unification with Greece unilaterally declared)
| party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}}
| birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}}
| birth_place = Athens, Kingdom of Greece
| residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]]
| occupation = Politician
| parents = Thrasyvoulos Zaimis<br>Eleni Mourouzi
| relations = Asimakis Zaimis (Brother)
}}
'''Alexandros Zaimis''' (Greek: Αλέξανδρος Ζαΐμης; 9 November 1855 – 15 September 1936) was a Greek politician who currently serves as Greece's Prime Minister, and has previously served as Minister of the Interior, Minister of Justice, and High Commissioner of Crete. He served as Prime Minister six times. Although he was a leader of the monarchist faction, Zaimis is the fourth and President of Greece.
== Early life and family ==
Zaimis was born in Athens, a son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis.
On his father's side he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture.
He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.
== Political Career ==
Alexandros became involved in politics after the death of his father who was the elected member of parliament for Kalavryta.
He became a Member of Parliament in 1885. He served as Minister of the Interior and Justice Minister in Theodoros Deligiannis' government (1890–92) and Speaker of the Hellenic Parliament (1895-97). He became Prime Minister for the first time in 1897.
==== Appointement as High Commisioner ====
In 1906, he was appointed as High Commissioner of Crete and presided over a critical period of the island's history up to the ''de facto'' union of Crete with Greece in 1908.
==== Re-election as Prime Minister ====
Alexandros Zaimis was re-elected as Prime Minister a further five times. He was appointed Prime Minister under King Constantine I to succeed Venizelos in October 1915, but resigned a month later when his government failed to receive a vote of confidence. In 1917, Zaimis served again as Prime Minister under King Constantine I, while Eleftherios Venizelos led a rival government controlling northern Greece. Under Entente pressure, he resigned in favor of Venizelos in June of the same year. During World War I, he was generally supposed to favor neutrality for Greece, but to be personally in favor of the Allies.
A moderate conservative, he served again as Prime Minister in the Hellenic Republic, from 1926 to 1928, in a coalition government of Venizelist and moderate conservatives.
Zaimis was elected the fourth President of the Hellenic Republic in 1929. He was reelected in 1933.
==References==
{{Reflist}}
==Sources==
* {{cite book| last=Svolopoulos | first=Konstantinos | chapter= Η Περίοδος της Αυτονομίας ("The Period of Autonomy") | pages=459–492 |editor-first=Nikolaos M. |editor-last=Panagiotakis | title=Crete, History and Civilization| volume=II | publisher=Vikelea Library, Association of Regional Associations of Regional Municipalities |year= 1988|language=Greek}}
* {{Cite Americana|wstitle=Zaimis, Alexander}}
71227422ee1179e781068338e90ae9a7975e6c95
3226
3207
2023-11-11T11:54:56Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox officeholder
| name = Aléxandros Zaímis
| office = President of the Hellenic Republic
| order = 4th
| native_name = {{Nobold|{{Lang|el|Αλέξανδρος Ζαΐμης}}}}
| native_name_lang = el
| image = Alexandros Zaimis.png
| alt = Portrait of Alexandros Zaimis
| predecessor = Pavlos Kountouriotis
| primeminister = [[Eleftherios Venizelos]]<br>[[Alexandros Papanastasiou]]
| term_start = 10 December 1929
| office2 = Prime Minister of Greece
| term_start2 = 4 December 1926
| term_end2 = 4 July 1928
| president2 = Pavlos Kountouriotis
| predecessor2 = Georgios Kondylis
| successor2 = [[Eleftherios Venizelos]]
| term_start3 = 5 February 1917
| term_end3 = 27 June 1917
| monarch3 = Constantine I<br>Alexander
| predecessor3 = Spyridon Lambros
| successor3 = [[Eleftherios Venizelos]]
| term_start4 = 22 June 1916
| term_end4 = 16 September 1916
| monarch4 = Constantine I
| predecessor4 = Stephanos Skouloudis
| successor4 = Nikolaos Kalogeropoulos
| term_start5 = 7 October 1915
| term_end5 = 7 November 1915
| monarch5 = Constantine I
| predecessor5 = [[Eleftherios Venizelos]]
| successor5 = Stephanos Skouloudis
| term_start6 = 25 November 1901
| term_end6 = 6 December 1902
| monarch6 = George I
| predecessor6 = Georgios Theotokis
| successor6 = Theodoros Deligiannis
| term_start7 = 3 October 1897
| term_end7 = 14 April 1899
| monarch7 = George
| predecessor7 = [[Dimitrios Rallis]]
| successor7 = Georgios Theotokis
| office8 = High Commissioner of Crete
| term_start8 = 18 September 1906
| term_end8 = 24 September 1908
| monarch8 = George I
| predecessor8 = Prince George of Greece
| successor8 = (Unification with Greece unilaterally declared)
| party = [[Nationalist Party (Greece)|Nationalist Party]]<ref>Papyrus Larousse Britannica, tome 25, p. 298, 299</ref><br />{{small|(1887–1902)}}<br />[[Third Party (Greece)|Third Party]] {{small|(1902–1924)}}<br />[[Independent politician|Independent]] {{small|(1924–1935)}}
| birth_date = {{birth date|1855|11|9|df=y}}{{Greece Old Style dating}}
| birth_place = Athens, Kingdom of Greece
| residence = Kerpini, Kalavryta, Achaia prefecture, Peloponnese, [[Greece]]
| occupation = Politician
| parents = Thrasyvoulos Zaimis<br>Eleni Mourouzi
| relations = Asimakis Zaimis (Brother)
}}
'''Alexandros Zaimis''' (Greek: Αλέξανδρος Ζαΐμης; 9 November 1855 – 15 September 1936) was a Greek politician who currently serves as Greece's Prime Minister, and has previously served as Minister of the Interior, Minister of Justice, and High Commissioner of Crete. He served as Prime Minister six times. Although he was a leader of the monarchist faction, Zaimis is the fourth and President of Greece.
== Early life and family ==
Zaimis was born in Athens, a son of Thrasyvoulos Zaimis, a former Prime Minister of Greece, and Eleni Mourouzi. His brother was Asimakis Zaimis.
On his father's side he was the grandson of Andreas Zaimis, another former Prime Minister of Greece, and related to the great Kalavrytan family with notable participation in the Greek War of Independence from 1821. From his mother's side he was a descendant of an important Fanariote family of the Mourozidon. His family lived in Kerpini, Kalavryta in the Achaia prefecture.
He studied law at the University of Athens and at the University of Heidelberg. He also attended the universities of Leipzig, Paris and Berlin.
== Political Career ==
Alexandros became involved in politics after the death of his father who was the elected member of parliament for Kalavryta.
He became a Member of Parliament in 1885. He served as Minister of the Interior and Justice Minister in Theodoros Deligiannis' government (1890–92) and Speaker of the Hellenic Parliament (1895-97). He became Prime Minister for the first time in 1897.
==== Appointement as High Commisioner ====
In 1906, he was appointed as High Commissioner of Crete and presided over a critical period of the island's history up to the ''de facto'' union of Crete with Greece in 1908.
==== Re-election as Prime Minister ====
Alexandros Zaimis was re-elected as Prime Minister a further five times. He was appointed Prime Minister under King Constantine I to succeed Venizelos in October 1915, but resigned a month later when his government failed to receive a vote of confidence. In 1917, Zaimis served again as Prime Minister under King Constantine I, while Eleftherios Venizelos led a rival government controlling northern Greece. Under Entente pressure, he resigned in favor of Venizelos in June of the same year. During World War I, he was generally supposed to favor neutrality for Greece, but to be personally in favor of the Allies.
A moderate conservative, he served again as Prime Minister in the Hellenic Republic, from 1926 to 1928, in a coalition government of Venizelist and moderate conservatives.
Zaimis was elected the fourth President of the Hellenic Republic in 1929. He was reelected in 1933.
==References==
{{Reflist}}
==Sources==
* {{cite book| last=Svolopoulos | first=Konstantinos | chapter= Η Περίοδος της Αυτονομίας ("The Period of Autonomy") | pages=459–492 |editor-first=Nikolaos M. |editor-last=Panagiotakis | title=Crete, History and Civilization| volume=II | publisher=Vikelea Library, Association of Regional Associations of Regional Municipalities |year= 1988|language=Greek}}
* {{Cite Americana|wstitle=Zaimis, Alexander}}
* [https://en.wikipedia.org/w/index.php?title=Alexandros_Zaimis Wikipedia. "Alexandros Zaimis"]
9ca89e4c83be573aa00080a49305b83b5141e9ef
Template:Cite Americana
10
1700
3200
3199
2023-11-11T11:50:01Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_Americana]]
wikitext
text/x-wiki
<!--
optional icon - included by default
-->{{#if:{{{noicon|}}}||{{#if:{{{wstitle|}}}||[[File:PD-icon.svg|12px|class=noviewer|alt=public domain|link=]] }}}}<!--
optional verbatim message - not included by default
-->{{#if:{{{vb|}}}|{{#if: {{{inline|}}}|One or more of the preceding sentences|This article}} incorporates text from a publication now in the [[public domain]]: |}}<!--no white space
-->{{#invoke:template wrapper|{{#if:{{{_debug|}}}|list|wrap}}|_template=cite encyclopedia
|_exclude=display, inline, no-icon, noicon, short, wstitle, vb, _debug
|_reuse=title <!-- these are reused -->
<!-- set defaults for some parameters-->
|year={{{year|1920}}}
|editor-first={{{editor-first|{{#if:{{{short|}}}| |George Edwin}}}}}
|editor-last={{{editor-last|{{#if:{{{short|}}}| |Rines}}}}}
|encyclopedia=[[Encyclopedia Americana]]
|title={{#if:{{{title|}}}|{{{title}}}|{{#if:{{{wstitle|}}}|{{cite wikisource/make link
|link=The Encyclopedia Americana ({{{year|1920}}})/{{{wstitle|}}}
|anchor=
|label={{{display|{{{wstitle|}}}}}}
|noicon={{{no-icon|{{{noicon|}}}}}}
}}}}}}
}}<includeonly><!--
-->{{#ifeq: {{NAMESPACEE}} |<!--is not set-->
|<!--Set: sort out the parameters-->
{{#if: {{{wstitle|}}} |[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with a Wikisource reference]]
|<!--else-->
{{#if: {{{title|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana without a Wikisource reference]]
|<!--else-->
{{#if: {{{1|}}} | [[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with an unnamed parameter]]
|<!--else-->
[[Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana with no wstitle or title parameter]]
}}
}}
}}
}}</includeonly><noinclude>
{{documentation}}
</noinclude>
ed5c9ece372ad2d5f69121e72f392dbb30307c17
Template:Cite encyclopedia
10
1701
3202
3201
2023-11-11T11:50:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_encyclopedia]]
wikitext
text/x-wiki
<includeonly>{{#invoke:citation/CS1|citation
|CitationClass=encyclopaedia
}}</includeonly><noinclude>
{{documentation}}
[[Category:Lua-based templates]]
</noinclude>
a5fbaa0493d06b11ef4dd711383f9fd5174a4238
Template:Cite wikisource/make link
10
1702
3204
3203
2023-11-11T11:50:16Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_wikisource/make_link]]
wikitext
text/x-wiki
{{#if:{{{noicon|}}}
|[[:s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]
|[[s:{{#if:{{{language|}}}|{{{language}}}:}}{{#if:{{{anchor|}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}#{{{anchor}}}|{{{link|}}}{{#if:{{{chapter|}}}|/{{{chapter}}}}}}}|{{{label|{{{link|}}}}}}]]}}<noinclude>
{{documentation}}
</noinclude>
8811d0350c08f66930c6b4d5ea7dc16afa99541c
Template:Cite Americana/doc
10
1703
3206
3205
2023-11-11T11:50:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cite_Americana/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
=== Purpose ===
This template facilitates the citation of articles from editions of ''[[Encyclopedia Americana]]'' that are in the [[public domain]] using {{tl|cite encyclopedia}}. The template can also be used to cite articles from editions that are not in the public domain. In these cases, the <code>noicon</code> parameter should be used to suppress the icon.
=== Usage ===
<code><nowiki>{{Cite Americana|wstitle=''name of the Americana article here''}}</nowiki></code>
or with a specification of additional options:
<pre><nowiki>{{</nowiki>Cite Americana</pre>
|noicon=''1'' — suppress the leading icon
|inline=''1'' — changes the prescript and should be used when this template is used as an inline citation
|short=''1'' — suppresses some of the fields such as editor's name
|ref=''harv'' — can be overridden (if you need to ask you do not need to change it)
|wstitle=''Americana article'' — if the article is available on Wikisource
|display=''alternative name'' — displayed inplace of the wstitle name
|title=''Americana article'' — if the article is not available on Wikisource
|url= — will not be set unless the parameter ''title='' is set
If not set, set in the template Cite Americana to default values
|encyclopedia= — "''Encyclopedia Americana''"
|editor-first= — defaults to "''George Edwin''"
|editor-last= — defaults to "''Rines''"
|{encyclopedia=
|year — defaults to 1920
If set pass in other standard parameters:
|first=
|first1=
|first2=
|last=
|last1=
|last2=
|author=
|author1=
|author2=
|authors=
|authorlink=
|coauthors=
|volume=
|page=
|pages=
|separator=
|postscript=
<pre>}}</pre>
Some parameters, unless set to other values, are pre-set:
*<code>editor-first</code> defaults to "''George Edwin''"
*<code>editor-last</code> defaults to "''Rines''"
*<code>year</code> defaults to "''1920''"
=== Examples ===
====Simple====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon}}
====With comment====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon}} A French history and portrait painter with many famous students.
====Using <code>author</code>====
<code><nowiki>{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}</nowiki></code>
displays as:
{{Cite Americana|author=[[Wilbur L. Cross]] |wstitle=David Copperfield}}
====Using <code>volume</code>, <code>pages</code>, <code>page</code>====
These work as with other {{tl|cite journal}} templates:
<code><nowiki>{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}</nowiki></code>
displays as:
{{Cite Americana |title=Pulte, Joseph Hippolyt |volume=22 |page=799 }}
====Using <code>display</code>====
The mechanics of Wikisource will sometimes require that a link have disambiguation information which is not part of the original title. The <code>display</code> parameter allows this information to be hidden for the purpose of the citation. For example:
<code><nowiki>{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Monroe (Louisiana) |display=Monroe, La.}}
====Using <code>noicon</code>====
<code><nowiki>{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Cogniet, Leon|noicon=x}}
====Using <code>vb</code>====
If text is incorporated verbatim into an article, the <code>vb</code> parameter can be used to tack on a notice appropriate to the policy in [[Wikipedia:Plagiarism]].
<code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Schlatter, Michael |vb=x}}
This option is depreciated. Instead use {{tl|Americana}} which does the same thing without the need for a ''vb=x'' parameter.
====Using <code>title</code> (no Wikisource link)====
<code><nowiki>{{Cite Americana |title=Sterne, Simon}}</nowiki></code>
displays as:
{{Cite Americana |title=Sterne, Simon}}
When <code>title</code> is being used, <code>url</code> can be used to specify an external link. For example:
<pre><nowiki>
{{Cite Americana
|title=Sterne, Simon
|url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632
}} At [[Google Books]].
</nowiki></pre>
displays as:
{{Cite Americana
|title=Sterne, Simon
|url=https://books.google.com/books?id=cr9PAAAAMAAJ&pg=PA632
}} At [[Google Books]].
====Using <code>short</code>====
If a shorter citation is desired, excluding the editor of the 1920 edition, the <code>short</code> option can be used. For example:
<code><nowiki>{{Cite Americana|wstitle=Schlatter, Michael|short=x}}</nowiki></code>
displays as:
{{Cite Americana|wstitle=Schlatter, Michael|short=x}}
If another edition besides 1920 is being used, the editor name can be customized using <code>editor-first</code> and <code>editor-last</code>. If used, these two items will be displayed whether or not the <code>short</code> option is specified.
== Hidden categories ==
This template places articles into a hidden category with sub-categories to aid maintenance:
*[[:Category:Wikipedia articles incorporating a citation from the Encyclopedia Americana]]
== See also ==
* {{tl|Americana}} Similar in effect to setting the parameter vb=''x''
* {{tl|Americana Poster}}
<includeonly>{{Sandbox other||
<!-- CATEGORIES AND INTERWIKIS HERE, THANKS -->
{{DEFAULTSORT:Americana Cite}}
[[Category:Attribution templates]]
[[Category:Encyclopedia source templates]]
[[Category:Wikisource link templates]]
[[ja:Template:Cite Americana]]
}}</includeonly>
51b57656e51c3431a29d8167fb0a29bcf06f68ea
Main Page
0
1
3227
2437
2023-11-11T12:04:59Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Majors ==
386587fb2f059c5d5dc8c6e240d2f625e50ee610
3228
3227
2023-11-11T12:12:00Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Countries ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
46dedc5fee260b2a279a9ee3ae3fa17bfb8c13e7
3233
3228
2023-11-11T12:41:46Z
Führerredux
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Countries ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
__NOTOC____NOEDITSECTION__
84e7b3c0cd570078463487a74d0737eeae33cc1e
3234
3233
2023-11-11T12:42:16Z
Führerredux
2
wikitext
text/x-wiki
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Countries ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
__NOTOC____NOEDITSECTION__
6cd5d69246db6c17811be0ae41084667d2928571
3239
3234
2023-11-11T12:47:54Z
Führerredux
2
wikitext
text/x-wiki
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Articles ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Great Powers Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Majors]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Minor Articles</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minor Articles</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important Personss</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
__NOTOC____NOEDITSECTION__
125c369b6683f459591a090890dc3afd4cfa8a67
3242
3239
2023-11-11T12:50:20Z
Führerredux
2
wikitext
text/x-wiki
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod. Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Articles ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Majors</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Great Powers Articles]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Minors</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minors</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Persons</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
__NOTOC____NOEDITSECTION__
d9c6ac9597ba00631d251c7879a4cf84b0383283
Template:Flagicon image/doc
10
1712
3230
3229
2023-11-11T12:14:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flagicon_image/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
Produces an icon for the supplied image parameter, of the same size, CSS class, etc. as images produced by [[Template:Flagicon]]. This template can be used for arbitrary images that are not included in any [[:Category:Country data templates|country data template]].
Caution is advised if this is used in infoboxes, as flags are [[MOS:INFOBOXFLAG|generally discouraged there]], and additional concerns (such as not using flags purely for decoration, and not using them in an anachronistic manner) may apply. Further guidance is given at [[MOS:FLAGS]].
''Please do not use this template to render [[Wikipedia:Non-free content|non-free images]], which would also not be acceptable within a country data template.''
;Usage
: <code><nowiki>{{flagicon image|image name|size=optional|border=optional|link=optional}}</nowiki></code>
;Examples
: <code><nowiki>{{flagicon image|Red flag.svg}}</nowiki></code> → {{flagicon image|Red flag.svg}}
: <code><nowiki>{{flagicon image|Red flag.svg|size=30x20px|link=Japan}}</nowiki></code> → {{flagicon image|Red flag.svg|size=30x20px|link=Japan}}
: <code><nowiki>{{flagicon image|ICS Alfa.svg|border=}}</nowiki></code> → {{flagicon image|ICS Alfa.svg|border=}}
== See also ==
{{tl|ListFlag}}
<includeonly>{{Sandbox other||
[[Category:Flag template system| ]]
}}</includeonly>
3dd2992a52b7ced3a23804de680b1806d5957e78
Hellenic Republic
0
1713
3231
2023-11-11T12:15:56Z
Führerredux
2
Redirected page to [[Greece]]
wikitext
text/x-wiki
#REDIRECT [[Greece]]
7a92884986e626a5493cf380531153dc9baa8f8d
Template:Miniflag
10
1714
3232
2023-11-11T12:16:40Z
Führerredux
2
Redirected page to [[Template:Flagicon image]]
wikitext
text/x-wiki
#REDIRECT [[Template:Flagicon image]]
5353026e0dede54cf40ed8a19564aabff5c20d77
Main Page/styles.css
0
1715
3235
2023-11-11T12:42:53Z
Führerredux
2
Created page with "/* {{pp|small=yes}} */ .header-img { width: 100%; border-radius: 15px; transform: scale(1) !important; } .mp-box { border: 1px solid #aaa; /* all border colors overriden on specific elements */ padding: 0 0.5em 0.5em; margin-top: 4px; } .mp-h2, body.skin-timeless .mp-h2 { /* Timeless needs a higher specificity */ border: 1px solid #aaa; /* all border colors overriden on specific elements */ margin: 0.5em 0; padding: 0.2em 0.4em; font-size: 120%; font-weight..."
wikitext
text/x-wiki
/* {{pp|small=yes}} */
.header-img {
width: 100%;
border-radius: 15px;
transform: scale(1) !important;
}
.mp-box {
border: 1px solid #aaa; /* all border colors overriden on specific elements */
padding: 0 0.5em 0.5em;
margin-top: 4px;
}
.mp-h2,
body.skin-timeless .mp-h2 { /* Timeless needs a higher specificity */
border: 1px solid #aaa; /* all border colors overriden on specific elements */
margin: 0.5em 0;
padding: 0.2em 0.4em;
font-size: 120%;
font-weight: bold;
font-family: inherit;
}
.mp-later {
font-size: 85%;
font-weight: normal;
}
#mp-topbanner {
background: #f9f9f9;
border-color: #ddd;
}
#mp-welcomecount {
text-align: center;
margin: 0.4em;
}
#mp-welcome {
font-size: 162%;
padding: 0.1em;
}
#mp-welcome h1 {
font-size: inherit;
font-family: inherit;
display: inline;
border: none;
}
#mp-free {
font-size: 95%;
}
#articlecount {
font-size: 85%;
}
/* clear fix */
.mp-contains-float::after {
content: "";
display: block;
clear: both;
}
#mp-banner {
background: #fffaf5;
border-color: #f2e0ce;
}
#mp-left {
background: #f5fffa;
border-color: #cef2e0;
}
#mp-left .mp-h2 {
background: #cef2e0;
border-color: #a3bfb1;
}
#mp-right {
background: #f5faff;
border-color: #cedff2;
}
#mp-right .mp-h2 {
background: #cedff2;
border-color: #a3b0bf;
}
#mp-middle {
background: #fff5fa;
border-color: #f2cedd;
}
#mp-middle .mp-h2 {
background: #f2cedd;
border-color: #bfa3af;
}
#mp-lower {
background: #faf5ff;
border-color: #ddcef2;
}
#mp-lower .mp-h2 {
background: #ddcef2;
border-color: #afa3bf;
}
#mp-bottom {
/* no background */
border-color: #e2e2e2;
}
#mp-bottom .mp-h2 {
background: #eee;
border-color: #ddd;
}
@media (max-width: 875px) {
/* We need to improve Template:POTD as used on the main page so that these
* hacks aren't necessary */
#mp-tfp table,
#mp-tfp tr,
#mp-tfp td,
#mp-tfp tbody {
display: block !important;
width: 100% !important;
box-sizing: border-box;
}
#mp-tfp tr:first-child td:first-child a {
text-align: center;
display: table;
margin: 0 auto;
}
}
@media (min-width: 875px) {
#mp-upper {
display: flex;
}
#mp-left {
flex: 1 1 55%;
margin-right: 2px;
}
#mp-right {
flex: 1 1 45%;
margin-left: 2px;
}
}
6ee75e52a445c7f66cafc3f7504fdb328ac4956d
Category:Majors
14
1716
3236
2023-11-11T12:46:42Z
Führerredux
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Category:Important Minors
14
1717
3237
2023-11-11T12:47:05Z
Führerredux
2
Created page with " "
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Category:Minors
14
1718
3238
2023-11-11T12:47:38Z
Führerredux
2
Created page with " "
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Category:Important Persons
14
1719
3240
2023-11-11T12:48:01Z
Führerredux
2
Created page with " "
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Country mini flag
10
1720
3243
2023-11-11T13:08:08Z
Führerredux
2
Created page with "<span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude> "
wikitext
text/x-wiki
<span class="flagicon">[[File:{{#if:{{{1|}}}|{{{1}}}|Flag placeholder.svg}}|{{{size|23x15px}}}|{{{border|{{#if:{{{1|}}}|border}}}}} |alt=|link={{{link|}}}]]</span><noinclude>{{documentation}}</noinclude>
057d0b94a9367359ad010c3da1fcdcb1e880dcb5
Template:Flagdeco
10
1721
3245
3244
2023-11-11T13:10:11Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flagdeco]]
wikitext
text/x-wiki
<includeonly>{{#ifeq: {{Yesno-no|{{{noredlink|}}}}}|yes<!--
-->|<!--
#Check for existence of Template: Country data foo before invoking it
-->{{#ifexist: Template: Country data {{{1|}}}<!--
-->|<!--
# It exists, so proceed
-->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!--
-->|<!--
# It doesn't exist, so do nothing
-->}}<!--
-->|<!--
# DEFAULT call Template: Country data {{{1|}}}
# with no prior checks
-->{{country data {{{1|}}}|flagdeco/core|variant={{{variant|{{{2|}}}}}}|size={{{size|}}}}}<!--
# Track use where "Template:Country data Foo" does not exist
-->{{#ifexist: Template:Country data {{{1|}}}||{{namespace detect showall
| 1 =
| 2 = [[Category:Flagdeco with missing country data templates]]
| user = 1
| talk = 1
| other = 2
}}}}<!--
-->}}</includeonly><noinclude>
{{Documentation}}
</noinclude>
2cd50bb91e18505de93484a7348c92b68745dbf9
Template:Flagdeco/core
10
1722
3247
3246
2023-11-11T13:10:12Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flagdeco/core]]
wikitext
text/x-wiki
<span class="flagicon">[[File:{{{flag alias-{{{variant}}}|{{{flag alias}}}}}}|{{#if:{{{size|}}}|{{{size}}}|{{{size flag alias-{{{variant}}}|{{#if:{{{variant|}}}|23x15px|{{{size flag alias|23x15px}}}}}}}}}}|{{{border-{{{variant}}}|{{{border|border}}}}}} |alt=|link=]]</span><noinclude>{{documentation}}</noinclude>
42dea5caf343aa87e6e075eb1bec3aebe1f396b1
Template:Country data Peru
10
1723
3249
3248
2023-11-11T13:10:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Country_data_Peru]]
wikitext
text/x-wiki
{{ {{{1<noinclude>|country showdata</noinclude>}}}
| alias = Peru
| flag alias = Flag of Peru.svg
| flag alias-spain = Flag of Cross of Burgundy.svg
| flag alias-1820 = Flag of Tacna Regiment (1820 proposal).svg
| flag alias-1821 = Flag of Peru (1821-1822).svg
| flag alias-1822 = Flag of Peru (1822).svg
| flag alias-1822a = Flag of Peru (1822-1825).svg
| flag alias-1825 = Flag of Peru (1825–1884).svg
| flag alias-confederation = Flag of the Peru-Bolivian Confederation.svg
| flag alias-north = Flag of Peru (1825–1884).svg
| link alias-north = North Peru
| flag alias-south = Flag of South Peru.svg
| link alias-south = South Peru
| flag alias-1884 = Flag of Peru (1884–1950).svg
| flag alias-state = Flag of Peru (state).svg
| flag alias-football = Flag of Peru (state).svg
| flag alias-army = Flag of the Peruvian Army.svg
| link alias-army = Peruvian Army
| flag alias-naval= Flag of the Peruvian Navy.svg
| link alias-naval = Peruvian Navy
| flag alias-air force= Flag of the Peruvian Air Force.svg
| link alias-air force = Peruvian Air Force
| flag alias-military=Flag of Peru (war).svg
| link alias-military=Peruvian Armed Forces
| flag alias-marines = Flag of the Peruvian Navy.svg
| link alias-marines = Peruvian Naval Infantry
| flag alias-navy = Flag of Peru (state).svg
| link alias-navy = Peruvian Navy
| size = {{{size|}}}
| name = {{{name|}}}
| altvar = {{{altvar|}}}
| altlink = {{{altlink|}}}
| variant = {{{variant|}}}
<noinclude>
| var1 = spain
| var2 = 1820
| var3 = 1821
| var4 = 1822
| var5 = 1822a
| var6 = 1825
| var7 = confederation
| var8 = north
| var9 = south
| var10 = 1884
| var11 = state
| var12 = football
| redir1 = PER
</noinclude>
}}
49f1c34c9465c56dbcb96877d044cb5aa1b9f728
Template:Country data PER
10
1724
3251
3250
2023-11-11T13:10:20Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Country_data_PER]]
wikitext
text/x-wiki
#REDIRECT [[Template:Country data Peru]]
[[category:country data redirects|PER]]
ab47b4cecba4ecbadf1dd2e33112395e6a627818
Module:Transclusion count/data/F
828
1725
3253
3252
2023-11-11T13:10:26Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/F]]
Scribunto
text/plain
return {
["F1"] = 4700,
["FA-Class"] = 15000,
["FAA-airport"] = 3700,
["FACClosed"] = 5100,
["FAR_link"] = 102000,
["FCC-LMS-Facility"] = 5500,
["FIDE"] = 2200,
["FIFA_player"] = 10000,
["FIN"] = 9200,
["FIPS"] = 2000,
["FJC_Bio"] = 4200,
["FL-Class"] = 12000,
["FLCClosed"] = 2600,
["FM-Class"] = 2800,
["FMA"] = 3300,
["FMARB"] = 10000,
["FML"] = 9100,
["FMQ"] = 12000,
["FMXL"] = 2400,
["FM_station_data"] = 8700,
["FPCnom/VotingEnds"] = 9700,
["FPCresult"] = 16000,
["FRA"] = 19000,
["FRG"] = 3700,
["FULLBASEPAGENAME"] = 5400,
["FULLROOTPAGENAME"] = 2440000,
["FXL"] = 2200,
["Fa_bottom"] = 2200,
["Fa_top"] = 2200,
["Facebook"] = 14000,
["Facepalm"] = 2600,
["Fact"] = 36000,
["FadedPage"] = 2400,
["FailedGA"] = 3300,
["Failed_verification"] = 15000,
["Family_name_explanation"] = 80000,
["Family_name_explanation/core"] = 80000,
["Family_name_hatnote"] = 79000,
["Farl"] = 102000,
["Fb"] = 26000,
["Fb-rt"] = 5800,
["Fb_cs_footer"] = 2900,
["Fb_gd"] = 8800,
["Fb_overview"] = 3700,
["Fb_overview2"] = 3400,
["Fb_rs"] = 8500,
["Fb_rs_footer"] = 8400,
["Fba/core"] = 24000,
["Fba/list"] = 29000,
["Fbaicon"] = 7200,
["Fbaicon/core"] = 8200,
["Fbicon"] = 2900,
["Fbu"] = 3700,
["Fbu-rt"] = 2200,
["Fbw"] = 4900,
["Fdacite"] = 14000,
["FeaturedPicture"] = 6300,
["Featured_article"] = 6700,
["Featured_article_tools"] = 11000,
["Featured_list"] = 4300,
["Featured_picture"] = 7700,
["Featured_topic_box"] = 3100,
["Featured_topic_box/styles.css"] = 3100,
["Feedback_link"] = 4600,
["Fiction-based_redirects_to_list_entries_category_handler"] = 2300,
["File-Class"] = 12000,
["File_other"] = 934000,
["Film"] = 54000,
["Film_date"] = 119000,
["Film_lists_by_country"] = 2300,
["Find"] = 8200,
["FindYDCportal"] = 176000,
["Find_a_Grave"] = 28000,
["Find_a_Grave_cemetery"] = 2300,
["Find_country"] = 233000,
["Find_general_sources"] = 868000,
["Find_medical_sources"] = 7400,
["Find_page_text"] = 636000,
["Find_sources"] = 631000,
["Find_sources/proj/is_biography"] = 619000,
["Find_sources/proj/is_med"] = 631000,
["Find_sources/proj/is_video"] = 624000,
["Find_sources/top_proj"] = 631000,
["Find_sources_AFD"] = 200000,
["Find_sources_mainspace"] = 694000,
["Find_video_game_sources"] = 5000,
["Find_video_game_sources_short"] = 3100,
["Findsources"] = 42000,
["First_nonempty"] = 14000,
["First_word"] = 442000,
["FishBase"] = 14000,
["FishBase_genus"] = 4600,
["Fishproject"] = 10000,
["Fix"] = 913000,
["Fix-span"] = 55000,
["Fix/category"] = 867000,
["Fix_comma_category"] = 562000,
["Fixed"] = 8900,
["Flag"] = 567000,
["Flag/core"] = 567000,
["FlagIOC"] = 11000,
["FlagIOC2"] = 16000,
["FlagIOC2athlete"] = 11000,
["FlagIOC2medalist"] = 4500,
["FlagIOC2team"] = 6700,
["FlagIOCathlete"] = 17000,
["FlagIOCteam"] = 2700,
["FlagIPC"] = 3400,
["FlagPASO"] = 2700,
["FlagPASOathlete"] = 2500,
["Flag_data"] = 7300,
["Flag_icon"] = 15000,
["Flagathlete"] = 28000,
["Flagbig"] = 4500,
["Flagbig/core"] = 7700,
["Flagcountry"] = 40000,
["Flagcountry/core"] = 40000,
["Flagdeco"] = 113000,
["Flagdeco/core"] = 113000,
["Flagg"] = 21000,
["Flagicon"] = 601000,
["Flagicon/core"] = 601000,
["Flagicon/nt"] = 5000,
["Flagicon_image"] = 41000,
["Flaglink/core"] = 78000,
["Flagmedalist"] = 2200,
["Flagmedalist/core"] = 2200,
["Flagright/core"] = 23000,
["Flagteam"] = 6100,
["Flagu"] = 24000,
["Flagu/core"] = 24000,
["Flat_list"] = 8000,
["Flatlist"] = 2090000,
["FloraBase"] = 5600,
["Floruit"] = 4100,
["Fmbox"] = 19000,
["Font"] = 8900,
["Font_color"] = 38000,
["Fontcolor"] = 6600,
["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000,
["Fooian_fooers"] = 13000,
["Football"] = 57000,
["FootballDatabase.eu"] = 8600,
["FootballFacts.ru"] = 5700,
["Football_box"] = 25000,
["Football_box_collapsible"] = 24000,
["Football_kit"] = 48000,
["Football_manager_history"] = 21000,
["Football_squad"] = 47000,
["Football_squad2_player"] = 50000,
["Football_squad_end"] = 19000,
["Football_squad_manager"] = 47000,
["Football_squad_mid"] = 17000,
["Football_squad_player"] = 19000,
["Football_squad_player/role"] = 6800,
["Football_squad_player/styles.css"] = 19000,
["Football_squad_start"] = 19000,
["Footballbox"] = 7200,
["Footballbox_collapsible"] = 7200,
["Footballstats"] = 2900,
["Foo–Bar_relations_category"] = 9200,
["Foo–Bar_relations_category/core"] = 9200,
["Foo–Bar_relations_category/countrynamesortfix"] = 9200,
["Foo–Bar_relations_category/fixcountryname"] = 9200,
["Foo–Bar_relations_category/inner_core"] = 9200,
["Foo–Bar_relations_category/mapname"] = 9200,
["For"] = 186000,
["For-multi"] = 9600,
["For_loop"] = 777000,
["For_multi"] = 7900,
["For_nowiki"] = 8700,
["ForaDeJogo"] = 4100,
["Force_plural"] = 3200,
["Format_linkr"] = 4400,
["Format_numeric_span"] = 3600,
["Format_price"] = 8200,
["Format_price/digits"] = 8100,
["Formatprice"] = 3200,
["Fossil_range"] = 12000,
["Fossil_range/bar"] = 21000,
["Fossil_range/marker"] = 21000,
["Fossilrange"] = 5800,
["Frac"] = 31000,
["Fraction"] = 35000,
["Fraction/styles.css"] = 94000,
["France_metadata_Wikidata"] = 36000,
["Free_access"] = 4300,
["Free_in_US_media"] = 15000,
["Free_media"] = 156000,
["Frequency"] = 3400,
["Friday"] = 2700,
["Fs_end"] = 18000,
["Fs_mid"] = 16000,
["Fs_player"] = 18000,
["Fs_start"] = 18000,
["Full_citation_needed"] = 8300,
["Full_party_name_with_color"] = 4000,
["Fullurl"] = 6500,
["Fullurl:"] = 6400,
["Further"] = 63000,
["Fussballdaten"] = 4300,
["Module:Fb_overview"] = 3800,
["Module:FeaturedTopicSum"] = 6800,
["Module:Fedi-share"] = 3100,
["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2300,
["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2300,
["Module:Fiction_redirect_category_handler"] = 2900,
["Module:File_link"] = 68000,
["Module:FindYDCportal"] = 309000,
["Module:Find_country"] = 184000,
["Module:Find_sources"] = 1570000,
["Module:Find_sources/config"] = 1570000,
["Module:Find_sources/links"] = 1570000,
["Module:Find_sources/templates/Find_general_sources"] = 868000,
["Module:Find_sources/templates/Find_sources_mainspace"] = 694000,
["Module:Find_sources/templates/Find_sources_medical"] = 7400,
["Module:Find_sources/templates/Find_sources_video_games"] = 5000,
["Module:FishRef"] = 7000,
["Module:Flag"] = 51000,
["Module:Flagg"] = 126000,
["Module:Football_box"] = 26000,
["Module:Football_box/styles.css"] = 26000,
["Module:Football_box_collapsible"] = 24000,
["Module:Football_manager_history"] = 21000,
["Module:Football_squad"] = 47000,
["Module:Footnotes"] = 291000,
["Module:Footnotes/anchor_id_list"] = 210000,
["Module:Footnotes/anchor_id_list/data"] = 210000,
["Module:Footnotes/whitelist"] = 210000,
["Module:For"] = 187000,
["Module:For_loop"] = 777000,
["Module:For_nowiki"] = 8700,
["Module:Format_link"] = 1330000,
["Module:Formatted_appearance"] = 5000,
}
2a1e6682573b7aa8fdbcb99e8d139cefa6e9e0f9
3273
3253
2023-11-12T05:11:24Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["F1"] = 4700,
["FA-Class"] = 15000,
["FAA-airport"] = 3700,
["FACClosed"] = 5200,
["FAR_link"] = 102000,
["FCC-LMS-Facility"] = 5600,
["FIDE"] = 2200,
["FIFA_player"] = 10000,
["FIN"] = 9200,
["FIPS"] = 2000,
["FJC_Bio"] = 4200,
["FL-Class"] = 12000,
["FLCClosed"] = 2600,
["FLC_link"] = 102000,
["FM-Class"] = 2800,
["FMA"] = 3300,
["FMARB"] = 10000,
["FML"] = 9100,
["FMQ"] = 12000,
["FMXL"] = 2400,
["FM_station_data"] = 8700,
["FPCnom/VotingEnds"] = 9800,
["FPCresult"] = 16000,
["FRA"] = 19000,
["FRG"] = 3700,
["FULLBASEPAGENAME"] = 5400,
["FULLROOTPAGENAME"] = 2470000,
["FXL"] = 2200,
["Fa_bottom"] = 2200,
["Fa_top"] = 2200,
["Facebook"] = 14000,
["Facepalm"] = 2600,
["Fact"] = 37000,
["FadedPage"] = 2400,
["FailedGA"] = 3300,
["Failed_verification"] = 15000,
["Family_name_explanation"] = 80000,
["Family_name_explanation/core"] = 80000,
["Family_name_hatnote"] = 79000,
["Farl"] = 102000,
["Fb"] = 26000,
["Fb-rt"] = 5800,
["Fb_cs_footer"] = 2900,
["Fb_gd"] = 8800,
["Fb_overview"] = 3700,
["Fb_overview2"] = 3400,
["Fb_rs"] = 8500,
["Fb_rs_footer"] = 8400,
["Fba/core"] = 24000,
["Fba/list"] = 29000,
["Fbaicon"] = 7200,
["Fbaicon/core"] = 8200,
["Fbicon"] = 2900,
["Fbu"] = 3700,
["Fbu-rt"] = 2200,
["Fbw"] = 5000,
["Fdacite"] = 14000,
["FeaturedPicture"] = 6300,
["Featured_article"] = 6700,
["Featured_article_tools"] = 11000,
["Featured_list"] = 4300,
["Featured_picture"] = 7700,
["Featured_topic_box"] = 3100,
["Featured_topic_box/styles.css"] = 3100,
["Feedback_link"] = 4600,
["Fiction-based_redirects_to_list_entries_category_handler"] = 2400,
["File-Class"] = 12000,
["File_other"] = 934000,
["Film"] = 54000,
["Film_date"] = 119000,
["Film_lists_by_country"] = 2300,
["Find"] = 8200,
["FindYDCportal"] = 176000,
["Find_a_Grave"] = 28000,
["Find_a_Grave_cemetery"] = 2300,
["Find_country"] = 234000,
["Find_general_sources"] = 868000,
["Find_medical_sources"] = 7400,
["Find_page_text"] = 635000,
["Find_sources"] = 631000,
["Find_sources/proj/is_biography"] = 619000,
["Find_sources/proj/is_med"] = 631000,
["Find_sources/proj/is_video"] = 624000,
["Find_sources/top_proj"] = 631000,
["Find_sources_AFD"] = 201000,
["Find_sources_mainspace"] = 694000,
["Find_video_game_sources"] = 5000,
["Find_video_game_sources_short"] = 3100,
["Findsources"] = 42000,
["First_nonempty"] = 14000,
["First_word"] = 453000,
["FishBase"] = 14000,
["FishBase_genus"] = 4600,
["Fishproject"] = 10000,
["Fix"] = 914000,
["Fix-span"] = 55000,
["Fix/category"] = 868000,
["Fix_comma_category"] = 563000,
["Fixed"] = 8900,
["Flag"] = 568000,
["Flag/core"] = 568000,
["FlagIOC"] = 11000,
["FlagIOC2"] = 16000,
["FlagIOC2athlete"] = 11000,
["FlagIOC2medalist"] = 4500,
["FlagIOC2team"] = 6700,
["FlagIOCathlete"] = 17000,
["FlagIOCteam"] = 2700,
["FlagIPC"] = 3400,
["FlagPASO"] = 2800,
["FlagPASOathlete"] = 2600,
["Flag_data"] = 7300,
["Flag_icon"] = 15000,
["Flagathlete"] = 28000,
["Flagbig"] = 4500,
["Flagbig/core"] = 7700,
["Flagcountry"] = 40000,
["Flagcountry/core"] = 40000,
["Flagdeco"] = 113000,
["Flagdeco/core"] = 113000,
["Flagg"] = 21000,
["Flagicon"] = 600000,
["Flagicon/core"] = 601000,
["Flagicon/nt"] = 5000,
["Flagicon_image"] = 41000,
["Flaglink/core"] = 78000,
["Flagmedalist"] = 2200,
["Flagmedalist/core"] = 2200,
["Flagright/core"] = 23000,
["Flagteam"] = 6100,
["Flagu"] = 24000,
["Flagu/core"] = 24000,
["Flat_list"] = 8000,
["Flatlist"] = 2090000,
["Flcl"] = 102000,
["FloraBase"] = 5600,
["Floruit"] = 4100,
["Fmbox"] = 19000,
["Font"] = 9000,
["Font_color"] = 38000,
["Fontcolor"] = 6600,
["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000,
["Fooian_fooers"] = 13000,
["Football"] = 57000,
["FootballDatabase.eu"] = 8600,
["FootballFacts.ru"] = 5700,
["Football_box"] = 25000,
["Football_box_collapsible"] = 24000,
["Football_kit"] = 48000,
["Football_manager_history"] = 21000,
["Football_squad"] = 47000,
["Football_squad2_player"] = 50000,
["Football_squad_end"] = 19000,
["Football_squad_manager"] = 47000,
["Football_squad_mid"] = 17000,
["Football_squad_player"] = 19000,
["Football_squad_player/role"] = 6800,
["Football_squad_player/styles.css"] = 19000,
["Football_squad_start"] = 19000,
["Footballbox"] = 7200,
["Footballbox_collapsible"] = 7200,
["Footballstats"] = 2900,
["Foo–Bar_relations_category"] = 9200,
["Foo–Bar_relations_category/core"] = 9200,
["Foo–Bar_relations_category/countrynamesortfix"] = 9200,
["Foo–Bar_relations_category/fixcountryname"] = 9200,
["Foo–Bar_relations_category/inner_core"] = 9200,
["Foo–Bar_relations_category/mapname"] = 9200,
["For"] = 186000,
["For-multi"] = 9600,
["For_loop"] = 779000,
["For_multi"] = 7900,
["For_nowiki"] = 8700,
["ForaDeJogo"] = 4100,
["Force_plural"] = 3300,
["Format_linkr"] = 4500,
["Format_numeric_span"] = 3600,
["Format_price"] = 8200,
["Format_price/digits"] = 8100,
["Formatprice"] = 3200,
["Fossil_range"] = 12000,
["Fossil_range/bar"] = 21000,
["Fossil_range/marker"] = 21000,
["Fossilrange"] = 5900,
["Frac"] = 31000,
["Fraction"] = 35000,
["Fraction/styles.css"] = 94000,
["France_metadata_Wikidata"] = 36000,
["Free_access"] = 4300,
["Free_in_US_media"] = 15000,
["Free_media"] = 156000,
["Frequency"] = 3400,
["Friday"] = 2700,
["Fs_end"] = 18000,
["Fs_mid"] = 16000,
["Fs_player"] = 18000,
["Fs_start"] = 18000,
["Full_citation_needed"] = 8300,
["Full_party_name_with_color"] = 4100,
["Fullurl"] = 6500,
["Fullurl:"] = 6400,
["Further"] = 63000,
["Fussballdaten"] = 4300,
["Module:Fb_overview"] = 3800,
["Module:FeaturedTopicSum"] = 6800,
["Module:Fedi-share"] = 3300,
["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2400,
["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2400,
["Module:Fiction_redirect_category_handler"] = 2900,
["Module:File_link"] = 68000,
["Module:FindYDCportal"] = 309000,
["Module:Find_country"] = 184000,
["Module:Find_sources"] = 1570000,
["Module:Find_sources/config"] = 1570000,
["Module:Find_sources/links"] = 1570000,
["Module:Find_sources/templates/Find_general_sources"] = 868000,
["Module:Find_sources/templates/Find_sources_mainspace"] = 694000,
["Module:Find_sources/templates/Find_sources_medical"] = 7400,
["Module:Find_sources/templates/Find_sources_video_games"] = 5000,
["Module:FishRef"] = 7000,
["Module:Flag"] = 51000,
["Module:Flagg"] = 126000,
["Module:Football_box"] = 26000,
["Module:Football_box/styles.css"] = 26000,
["Module:Football_box_collapsible"] = 24000,
["Module:Football_manager_history"] = 21000,
["Module:Football_squad"] = 47000,
["Module:Footnotes"] = 291000,
["Module:Footnotes/anchor_id_list"] = 210000,
["Module:Footnotes/anchor_id_list/data"] = 210000,
["Module:Footnotes/whitelist"] = 210000,
["Module:For"] = 187000,
["Module:For_loop"] = 779000,
["Module:For_nowiki"] = 8700,
["Module:Format_link"] = 1330000,
["Module:Formatted_appearance"] = 5000,
}
c4dc69810385b6bbce6e5430d153c8c6202559d1
Template:Flagicon/doc
10
1726
3255
3254
2023-11-11T13:10:31Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Flagicon/doc]]
wikitext
text/x-wiki
{{documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
{{high-use}}
'''Template:Flagicon''' displays a flag of the named parameter in "icon" size, currently 23×15 pixels maximally (defined in [[Template:Flagicon/core]]), plus a one-pixel border. The image also has a clickable link to the associated article. For an unlinked flag icon, use [[Template:Flagdeco]] instead.
Please consider the [[Wikipedia:Manual of Style (icons)#Flags|Manual of Style section on flag]]s before using this template.
==Usage==
<code><nowiki>{{flagicon|name|variant=|size=|noredlink=}}</nowiki></code>
;name: The first parameter is mandatory, and identifies the name of the country, region, city, etc. A full list of available values can be found in [[:Category:Country data templates]]. For example, [[:Template:Country data Peru]] is used when the ''name'' parameter is specified as <code>Peru</code>. Many flags are also available via shortened "aliases", such as standard three-letter country codes as specified by [[ISO 3166-1 alpha-3]], [[List of IOC country codes|IOC]], or [[List of FIFA country codes|FIFA]]. The list of available "aliases" is found in [[:Category:Country data redirects]]. Many of these country codes could be considered obscure, so it is recommended to use the full country name.
;variant: The second parameter is optional, and identifies a flag variant to be used instead of the standard flag. This is most often used for historical flags but can also be used to specify naval flags, sport-use flags, etc. The list of available flag variants for each country is documented on the specific page for the country data template. For example, [[Template:Country data Peru]] includes a description of each of the available flag variations for Peru. This parameter can be a named parameter (e.g.. "<code>variant=1815</code>"), or a positional parameter, always after the country name.
;size: This parameter is optional, and is used to specify the maximum width and/or height of the flag image. This parameter is specified using standard [[Wikipedia:Extended image syntax|image syntax]].
==Template data==
{{TemplateData header}}
<templatedata>
{
"description": "This template displays a wikilinked flag of the named parameter in 'icon' size, currently 23×15 pixels (defined in Template:Flagicon/core) plus a one-pixel border.",
"params": {
"1": {
"label": "Name",
"description": "Name of the country, region, city, etc.; full name is recommended for countries",
"type": "string",
"required": true
},
"variant": {
"label": "Variant",
"description": "Identifies a flag variant to be used instead of the standard flag, e.g. 1815",
"type": "string",
"required": false,
"aliases": [
"2"
]
},
"size": {
"label": "Maximum dimension",
"description": "The maximum width or height, specified via standard 'extended image syntax' (e.g. x30px)",
"type": "string",
"required": false
},
"noredlink": {
"label": "No redlink",
"description": "If set to any value which evaluates as true (i.e. '1', 'true', 'yes', or 'y'), it displays nothing if the country data file doesn't exist. (The default is to display a redlink)",
"type": "string",
"required": false
}
}
}
</templatedata>
==Examples==
{| class="wikitable"
! Wikicode !! Results !! Notes
|-
| <code><nowiki>{{flagicon|Peru}}</nowiki></code> || {{flagicon|Peru}} ||
|-
| <code><nowiki>{{flagicon|PER}}</nowiki></code> || {{flagicon|PER}} || Uses the ISO/IOC/FIFA country code
|-
| <code><nowiki>{{flagicon|Peru|1822}}</nowiki></code> || {{flagicon|Peru|1822}} || rowspan="2"| Specifies a historical flag
|-
| <code><nowiki>{{flagicon|Peru|variant=1822}}</nowiki></code> || {{flagicon|Peru|variant=1822}}
|-
| <code><nowiki>{{flagicon|PER|naval}}</nowiki></code> || {{flagicon|PER|naval}} || Specifies the naval ensign
|-
| <code><nowiki>{{flagicon|PER|air force}}</nowiki></code> || {{flagicon|PER|air force}} || Specifies the air force flag
|-
| <code><nowiki>{{flagicon|Peru|size=50px}}</nowiki></code> || {{flagicon|Peru|size=50px}} || Sets width to 50 pixels
|-
| <code><nowiki>{{flagicon|Xanadu}}</nowiki></code> || [[Template:Country data Xanadu]] || No flag for Xanadu, so displays redlink
|-
| <code><nowiki>{{flagicon|Xanadu|noredlink=yes}}</nowiki></code> || {{flagicon|Xanadu|noredlink=yes}} || No flag, so displays nothing
|}
==Implementation notes==
This template uses the data templates listed under [[:Category:Country data templates]], which contain the data specifying '''what''' to display and the formatter [[Template:Flagicon/core]], which contains the logic of '''how''' to display the flag.
* <code><nowiki>{{flagicon|Peru}}</nowiki></code> → {{flagicon|Peru}} — uses [[Template:Country data Peru]]
* <code><nowiki>{{flagicon|PER}}</nowiki></code> → {{flagicon|PER}} — uses [[Template:Country data PER]], which is a redirect to [[Template:Country data Peru]]
Inside each country data template, this template uses the following parameters:
* <code>flag alias</code> — name of the image file to display
* <code>flag alias-xxxx</code> — name of the image file of flag variant <code>xxxx</code>
* <code>alias</code> — used to display the [[alt attribute]] of the image (defaults to "Flag of ''alias''")
== Tracking categories ==
*{{clc|Pages using flagicon template with unknown parameters}}
Where <code><nowiki>{{Flagicon|Foo}}</nowiki></code> is used, but the <code><nowiki>Template:Country data Foo</nowiki></code> does not exist, then a [[WP:Red link|redlink]] is displayed, ''unless'' the {{para|noredlink|yes}} parameter has been set.
Where the redlink is displayed, the page is addded to a tracking category:
* [[:Category:Flagicons with missing country data templates]] (population: {{PAGESINCATEGORY:Flagicons with missing country data templates}})
==Related templates==
* [[Template:Flag]] is used to display a wikilinked name next to the flag. The displayed name will be the same as the parameter used with the template, but the link target will be the main article for the country (in these examples, [[Peru]]).
** <code><nowiki>{{flag|Peru}}</nowiki></code> → {{flag|Peru}}
** <code><nowiki>{{flag|PER}}</nowiki></code> → {{flag|Peru}}
* [[Template:Flagcountry]] is also used to display a wikilinked name next to the flag. The displayed name will always be the same, regardless of whether or not a country code alias is used as the template parameter.
** <code><nowiki>{{flagcountry|Peru}}</nowiki></code> → {{flagcountry|Peru}}
** <code><nowiki>{{flagcountry|PER}}</nowiki></code> → {{flagcountry|PER}}
* [[Template:Flagdeco]] displays an unlinked flag icon without country name.
** <code><nowiki>{{flagdeco|Peru}}</nowiki></code> → {{flagdeco|Peru}}
For a full list of flag templates, see [[:Category:Flag template system]].
==Alternatives to avoid Wikipedia's [[WP:PEIS|Post-expand include size]] limit==
Pages with many flag icons may come close to or exceed Wikipedia's [[WP:PEIS|Post-expand include size]] limit. In these cases consider using modules or module-wrapper templates instead:
* {{tl|flagg}} is a simple wrapper for [[Module:Flagg]]: For basic use, <code><nowiki>{{flagicon|</nowiki>''country''<nowiki>}}</nowiki></code> can be replaced with <code><nowiki>{{flagg|cxxlo|</nowiki>''country''<nowiki>}}</nowiki></code>
==See also==
* [[Template:Flagicon image]]
* [[Template:Coat of arms]]
* [[Wikipedia:WikiProject Flag Template]]
* [[Regional indicator symbol]]
<includeonly>{{Sandbox other||
[[Category:Flag template system]]
}}</includeonly>
879ee079273663abd7cfb598fedbf382231852c7
Module:Transclusion count/data/I
828
70
3285
1094
2023-11-12T05:11:54Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["IAST"] = 6400,
["IBDB_name"] = 9200,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 154000,
["IMDb_title"] = 191000,
["IMO_Number"] = 4100,
["IMSLP"] = 8300,
["INA"] = 2200,
["IND"] = 7700,
["INR"] = 6600,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5000,
["IP"] = 2600,
["IPA"] = 143000,
["IPA-de"] = 8200,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 5900,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 49000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7100,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3700,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 494000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8200,
["ISP"] = 5300,
["ISR"] = 4900,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9100,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 19000,
["Icehockeystats"] = 12000,
["Icon"] = 582000,
["If"] = 277000,
["If_all"] = 6500,
["If_between"] = 3800,
["If_both"] = 129000,
["If_empty"] = 3680000,
["If_first_display_both"] = 73000,
["If_in_page"] = 10000,
["If_last_display_both"] = 30000,
["If_number"] = 2300,
["If_preview"] = 58000,
["If_then_show"] = 294000,
["Ifempty"] = 4000,
["Ifeq"] = 17000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1310000,
["Ifnotempty"] = 15000,
["Ifnumber"] = 36000,
["Ifsubst"] = 453000,
["Ih"] = 7600,
["Ill"] = 121000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 168000,
["Image_requested/Category_helper"] = 161000,
["Imbox"] = 922000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5660000,
["Importance/colour"] = 5670000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7400,
["Improve_documentation"] = 2600,
["In_class"] = 5700,
["In_lang"] = 358000,
["In_progress"] = 3300,
["In_string"] = 77000,
["In_title"] = 20000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 44000,
["Incumbent_pope"] = 4300,
["Indent"] = 4400,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4400,
["Inflation/UK/dataset"] = 4400,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6300,
["Inflation/year"] = 26000,
["Info"] = 7200,
["Infobox"] = 3240000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 148000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2900,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4700,
["Infobox_Indian_constituency/defaultdata"] = 4700,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 17000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7600,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4700,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Pan_American_Games_event"] = 2200,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3400,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8100,
["Infobox_UK_place/NoPostCode"] = 3200,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3900,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2700,
["Infobox_YouTube_personality/styles.css"] = 2700,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 13000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 193000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6900,
["Infobox_animanga/Header"] = 6900,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 29000,
["Infobox_artist_discography"] = 6000,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8500,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_baseball_team_season"] = 3200,
["Infobox_baseball_team_season/leagueseason"] = 3200,
["Infobox_baseball_team_season/season"] = 3200,
["Infobox_baseball_team_season/styles.css"] = 3200,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 28000,
["Infobox_character"] = 7500,
["Infobox_chess_biography"] = 4000,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5600,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_football_player"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3500,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 84000,
["Infobox_computing_device"] = 2400,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5500,
["Infobox_country"] = 6500,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6500,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2400,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_deity"] = 2000,
["Infobox_deity/color"] = 2000,
["Infobox_designation_list"] = 20000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 7000,
["Infobox_dim/core"] = 7000,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9800,
["Infobox_drug/chemical_formula"] = 9800,
["Infobox_drug/data_page_link"] = 9800,
["Infobox_drug/formatATC"] = 9700,
["Infobox_drug/formatCASnumber"] = 9800,
["Infobox_drug/formatChEBI"] = 9800,
["Infobox_drug/formatChEMBL"] = 9800,
["Infobox_drug/formatChemDBNIAID"] = 9800,
["Infobox_drug/formatChemSpider"] = 9800,
["Infobox_drug/formatCompTox"] = 9800,
["Infobox_drug/formatDrugBank"] = 9800,
["Infobox_drug/formatIUPHARBPS"] = 9800,
["Infobox_drug/formatJmol"] = 9800,
["Infobox_drug/formatKEGG"] = 9800,
["Infobox_drug/formatPDBligand"] = 9200,
["Infobox_drug/formatPubChemCID"] = 9800,
["Infobox_drug/formatPubChemSID"] = 9800,
["Infobox_drug/formatUNII"] = 9800,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9900,
["Infobox_drug/maintenance_categories"] = 9800,
["Infobox_drug/non-ref-space"] = 4300,
["Infobox_drug/pregnancy_category"] = 9900,
["Infobox_drug/title"] = 9800,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5500,
["Infobox_family"] = 2200,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 157000,
["Infobox_film/short_description"] = 153000,
["Infobox_film_awards"] = 2700,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2700,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 207000,
["Infobox_football_club"] = 28000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 20000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8100,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2600,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4100,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3500,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 12000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8900,
["Infobox_islands/area"] = 9300,
["Infobox_islands/density"] = 9300,
["Infobox_islands/length"] = 8900,
["Infobox_islands/styles.css"] = 8900,
["Infobox_journal"] = 9800,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4300,
["Infobox_language"] = 9600,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6600,
["Infobox_language/linguistlist"] = 9600,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3700,
["Infobox_library"] = 2200,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 81000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 425000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2100,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2100,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 11000,
["Infobox_musical_artist"] = 122000,
["Infobox_musical_artist/color"] = 122000,
["Infobox_musical_artist/hCard_class"] = 314000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7500,
["Infobox_name_module"] = 7100,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2400,
["Infobox_noble"] = 7400,
["Infobox_officeholder"] = 221000,
["Infobox_officeholder/office"] = 226000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 3000,
["Infobox_park"] = 7500,
["Infobox_person"] = 477000,
["Infobox_person/Wikidata"] = 4600,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7000,
["Infobox_person/weight"] = 67000,
["Infobox_philosopher"] = 3500,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3100,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3900,
["Infobox_racing_driver_series_section"] = 2100,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 3000,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6500,
["Infobox_religious_biography"] = 5300,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 3000,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6500,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 16000,
["Infobox_rugby_league_biography"] = 10000,
["Infobox_rugby_league_biography/PLAYER"] = 9900,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 49000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 563000,
["Infobox_settlement/areadisp"] = 238000,
["Infobox_settlement/columns"] = 95000,
["Infobox_settlement/columns/styles.css"] = 95000,
["Infobox_settlement/densdisp"] = 438000,
["Infobox_settlement/impus"] = 82000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 95000,
["Infobox_settlement/metric"] = 211000,
["Infobox_settlement/pref"] = 294000,
["Infobox_settlement/styles.css"] = 563000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3500,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2200,
["Infobox_sports_competition_event"] = 18000,
["Infobox_sports_competition_event/medalrow"] = 12000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5500,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 107000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3500,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 55000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2000,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_weather_event"] = 2000,
["Infobox_weather_event/Footer"] = 2000,
["Infobox_weather_event/styles.css"] = 2000,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inline_block"] = 4600,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 159000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 2900,
["Invalid_SVG/styles.css"] = 2900,
["Iptalk"] = 17000,
["IranCensus2006"] = 46000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 46000,
["Irc"] = 2100,
["Irish_place_name"] = 2700,
["IsIPAddress"] = 36000,
["IsValidPageName"] = 143000,
["Is_MLB_league"] = 3200,
["Is_NPB_league"] = 3200,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 5900,
["Is_italic_taxon"] = 487000,
["Is_redirect"] = 27000,
["Isbn"] = 7700,
["Isfdb_name"] = 3600,
["Isfdb_title"] = 4400,
["Isnumeric"] = 142000,
["Iso2continent"] = 36000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 202000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5300,
["Italic_title"] = 280000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4200,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 143000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 132000,
["Module:IPA"] = 143000,
["Module:IPA/data"] = 129000,
["Module:IPA/styles.css"] = 115000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 49000,
["Module:IPAc-en/data"] = 49000,
["Module:IPAc-en/phonemes"] = 49000,
["Module:IPAc-en/pronunciation"] = 49000,
["Module:IPAddress"] = 187000,
["Module:ISO_3166"] = 1010000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 9100,
["Module:ISO_3166/data/National"] = 1010000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 583000,
["Module:Icon/data"] = 583000,
["Module:If_empty"] = 3680000,
["Module:If_in_page"] = 10000,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 359000,
["Module:Indent"] = 4400,
["Module:Infobox"] = 4130000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4390000,
["Module:Infobox3cols"] = 298000,
["Module:InfoboxImage"] = 4440000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 407000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3100,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 64000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9100,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3400,
["Module:Is_infobox_in_lead"] = 378000,
["Module:Is_instance"] = 337000,
["Module:Italic_title"] = 1120000,
["Module:Italic_title2"] = 5300,
}
5d035dc37ac3c3fcd01d436985bf0942e4d13b49
Module:Transclusion count/data/M
828
991
3289
3064
2023-11-12T05:12:34Z
wikipedia>Ahechtbot
0
[[Wikipedia:BOT|Bot]]: Updated page.
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 4000,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 835000,
["MONTHNUMBER"] = 853000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3800,
["MacTutor"] = 2000,
["Main"] = 343000,
["Main_article"] = 30000,
["Main_articles"] = 2000,
["Main_other"] = 9660000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9700,
["Main_page_image/ITN/styles.css"] = 2700,
["Main_page_image/TFA"] = 4900,
["Maintenance_category"] = 38000,
["Malay_name"] = 2300,
["Map_requested"] = 6400,
["Map_requested/Category_helper"] = 6400,
["Maplink"] = 29000,
["Maplink-road"] = 6100,
["Marriage"] = 74000,
["Marriage/doc"] = 74000,
["Marriage/styles.css"] = 74000,
["Math"] = 9800,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 249000,
["Maybe_free_media"] = 12000,
["Mbox"] = 3030000,
["Mdash"] = 8900,
["MeSH_name"] = 6100,
["Medal"] = 114000,
["MedalBottom"] = 17000,
["MedalBronze"] = 55000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3200,
["MedalCountry"] = 79000,
["MedalGold"] = 54000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3600,
["Merged-from"] = 17000,
["Merged-to"] = 19000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7400,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2200,
["MilHist"] = 5200,
["Military_navigation"] = 84000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5700,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 7500,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3600,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7100,
["Monthyear"] = 71000,
["Monthyear-1"] = 70000,
["MoreInfo"] = 2100,
["More_citations_needed"] = 368000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2300,
["More_references"] = 3100,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7400,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 212000,
["Multiple_image"] = 51000,
["Multiple_image/styles.css"] = 51000,
["Multiple_issues"] = 123000,
["Multiple_issues/styles.css"] = 123000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5200,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 96000,
["Mvar"] = 7100,
["Mw_lang"] = 80000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 432000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18100000,
["Module:Message_box/ambox.css"] = 3140000,
["Module:Message_box/cmbox.css"] = 427000,
["Module:Message_box/configuration"] = 9610000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 929000,
["Module:Message_box/ombox.css"] = 1590000,
["Module:Message_box/tmbox.css"] = 12400000,
["Module:Military_navigation"] = 84000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1270000,
["Module:Multiple_image"] = 51000,
["Module:Music_ratings"] = 96000,
["Module:Mw_lang"] = 80000,
}
22a58a02f62dce5a2a147541a49e16eb70c16b8d
3290
3289
2023-11-12T13:12:05Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/M]]
Scribunto
text/plain
return {
["M"] = 2100,
["MAD"] = 2100,
["MAR"] = 2800,
["MAS"] = 2600,
["MDG"] = 2400,
["MEX"] = 6200,
["MILHIST"] = 13000,
["MINUTE"] = 2300,
["MKD"] = 2300,
["MLB_Farm_System"] = 2100,
["MLB_Year"] = 14000,
["MLB_standings"] = 3700,
["MLBplayer"] = 4000,
["MMA_record_start"] = 3600,
["MMArecordbox"] = 3700,
["MMSI_Number"] = 3100,
["MONTH"] = 13000,
["MONTHNAME"] = 835000,
["MONTHNUMBER"] = 853000,
["MS"] = 5100,
["MV"] = 8900,
["MYS"] = 3800,
["MacTutor"] = 2000,
["Main"] = 343000,
["Main_article"] = 30000,
["Main_articles"] = 2000,
["Main_other"] = 9660000,
["Main_page_image"] = 26000,
["Main_page_image/DYK"] = 9700,
["Main_page_image/ITN/styles.css"] = 2700,
["Main_page_image/TFA"] = 4900,
["Maintenance_category"] = 38000,
["Malay_name"] = 2300,
["Map_requested"] = 6400,
["Map_requested/Category_helper"] = 6400,
["Maplink"] = 29000,
["Maplink-road"] = 6100,
["Marriage"] = 74000,
["Marriage/doc"] = 74000,
["Marriage/styles.css"] = 74000,
["Math"] = 9800,
["MathGenealogy"] = 7000,
["MathWorld"] = 2400,
["Mathgenealogy"] = 2100,
["Maths_rating"] = 20000,
["Max"] = 249000,
["Maybe_free_media"] = 12000,
["Mbox"] = 3030000,
["Mdash"] = 8900,
["MeSH_name"] = 6100,
["Medal"] = 114000,
["MedalBottom"] = 17000,
["MedalBronze"] = 55000,
["MedalComp"] = 2200,
["MedalCompetition"] = 88000,
["MedalCount"] = 3200,
["MedalCountry"] = 79000,
["MedalGold"] = 54000,
["MedalOlympic"] = 4000,
["MedalOlympics"] = 6100,
["MedalSilver"] = 53000,
["MedalSport"] = 78000,
["MedalTableTop"] = 17000,
["MedalTop"] = 3900,
["MedalWorldChampionships"] = 2100,
["MedalistTable"] = 15000,
["Medals_table"] = 14000,
["Media"] = 2600,
["Medical_resources"] = 6700,
["Merge_done"] = 3600,
["Merged-from"] = 17000,
["Merged-to"] = 19000,
["Merged_to"] = 2200,
["MeshName"] = 5900,
["Metacritic_film"] = 4100,
["Metadata_Population_DE-BY"] = 2100,
["Metadata_Population_DE-RP"] = 2300,
["Mhof"] = 7400,
["Mid-Class"] = 15000,
["Mid-importance"] = 15000,
["Middot"] = 6000,
["Midsize"] = 2200,
["MilHist"] = 5200,
["Military_navigation"] = 84000,
["Min"] = 22000,
["Minor_planet"] = 5000,
["Minor_planet_link"] = 2700,
["Minor_planet_list_link"] = 4200,
["Minor_planets_navigator"] = 3200,
["MirrorH"] = 5700,
["Missing_information"] = 3600,
["Mlby"] = 14000,
["Mobile_IP"] = 8800,
["MobyGames"] = 8900,
["Moby_game"] = 7000,
["Mod"] = 7500,
["Module_other"] = 3600,
["Mojo_title"] = 7800,
["Molecular_formula_index"] = 2300,
["Monday"] = 2700,
["Mono"] = 30000,
["Mono/styles.css"] = 31000,
["MonthCategoryNav"] = 35000,
["MonthlyArchive"] = 3600,
["MonthlyLinks"] = 3600,
["Monthly_archive_list"] = 3600,
["Monthly_clean-up_category"] = 16000,
["Monthly_clean-up_category/core"] = 16000,
["Monthly_clean-up_category/monthname"] = 17000,
["Monthly_clean-up_category/monthno"] = 17000,
["Monthly_clean-up_category/name_part"] = 17000,
["Monthly_clean-up_category/outer_core"] = 16000,
["Monthly_clean-up_category/to_add"] = 2800,
["Monthly_clean_up_category"] = 7100,
["Monthyear"] = 71000,
["Monthyear-1"] = 70000,
["MoreInfo"] = 2100,
["More_citations_needed"] = 368000,
["More_citations_needed_section"] = 16000,
["More_footnotes"] = 35000,
["More_footnotes_needed"] = 53000,
["More_plot"] = 2300,
["More_references"] = 3100,
["Moresources"] = 5900,
["Motorcycle_Hall_of_Fame"] = 7400,
["Motorcycling"] = 3200,
["Motorsport_season"] = 4900,
["Motorsport_season/styles.css"] = 4900,
["Moved_discussion_from"] = 2900,
["Moved_discussion_to"] = 2600,
["Mp"] = 5000,
["Mpl"] = 2700,
["MultiReplace"] = 212000,
["Multiple_image"] = 51000,
["Multiple_image/styles.css"] = 51000,
["Multiple_issues"] = 123000,
["Multiple_issues/styles.css"] = 123000,
["Music"] = 7600,
["MusicBrainz_artist"] = 2200,
["MusicBrainz_meta"] = 5200,
["MusicBrainz_release_group"] = 2200,
["Music_ratings"] = 96000,
["Mvar"] = 7100,
["Mw_lang"] = 80000,
["My"] = 2500,
["My_sandbox"] = 3800,
["Myprefs"] = 11000,
["Module:MLB_standings"] = 3700,
["Module:MLB_standings/data"] = 3700,
["Module:Main_page_image"] = 15000,
["Module:Mapframe"] = 432000,
["Module:Math"] = 1570000,
["Module:Medals_table"] = 14000,
["Module:Message_box"] = 18100000,
["Module:Message_box/ambox.css"] = 3140000,
["Module:Message_box/cmbox.css"] = 427000,
["Module:Message_box/configuration"] = 9610000,
["Module:Message_box/fmbox.css"] = 19000,
["Module:Message_box/imbox.css"] = 929000,
["Module:Message_box/ombox.css"] = 1590000,
["Module:Message_box/tmbox.css"] = 12400000,
["Module:Military_navigation"] = 84000,
["Module:Minor_planet_list_link"] = 4200,
["Module:MultiReplace"] = 1270000,
["Module:Multiple_image"] = 51000,
["Module:Music_ratings"] = 96000,
["Module:Mw_lang"] = 80000,
}
22a58a02f62dce5a2a147541a49e16eb70c16b8d
Main Page
0
1
3256
3242
2023-11-12T12:24:08Z
Führerredux
2
wikitext
text/x-wiki
== Welcome to the {{SITENAME}}! ==
{{#css:Main Page/styles.css}}
<table style="width: 90%; position: relative; left: 5%">
<tr>
<td style="padding: 10px">
'''The Führerredux Wiki''' is an encyclopedia about the Hearts of Iron IV mod, Führerredux. This mod explores an alternate timeline, from the perspective of the world of Kaiserreich, in which the German Empire lost the Great War to the Entente. With the support of the [[United States]] led by the "Bull Moose Party" candidate Theodore Roosevelt, the Western Powers of [[France]], [[United Kingdom|Britain]] and [[Italy]] overcame the might of the Kaiser's seemingly unstoppable armies. In the wake of their defeat the [[Central Powers]] were divided and weakened by their neighbors, losing their Great Power status in the process.
Despite the [[Entente]]'s victory little could be done to help what was left of their [[Russia|Russian]] ally. Growing social unrest and the unjustifiable cost of war against [[Germany]] had led [[Russia]] into a full-scale Civil War in which the Leftist Bolsheviks led by [[Vladimir Lenin]] would ultimately win, turning Russia into the world's first Socialist state, The [[Soviet Union|USSR]].
While the 1920s was a peaceful and prosperous decade for most of the world, the 1930s began to sow the seeds of another global conflict. The victorious [[Entente]] of [[United Kingdom|Britain]] and [[France]] has collapsed as the [[United Kingdom]] follows in the footsteps of The [[United States]] and adopts an isolationist foreign policy. The Socialists in the [[Soviet Union|USSR]] continued to modernize and industrialize their nation, threatening the stability of Eastern Europe, and most troubling of all the Far-Right nationalist ideology "[[Valkism]]" took power in the defeated nation of [[Germany]]. As the world enters 1936 German "Fuhrer" [[Adam Dressler]] calls for radical change in Europe as he seeks to confirm [[Germany]]'s place as one of Europe's Great Powers by any means necessary.
</td>
<td style="padding: 10px">
{{nowrap|Total number of articles: '''{{NUMBEROFARTICLES}}'''}}<br>
{{nowrap|Number of uploaded files: '''{{NUMBEROFFILES}}'''}}<br>
{{nowrap|Number of edits: '''{{NUMBEROFEDITS}}'''}}
</td>
</tr>
</table>
== Articles ==
{| class="wikitable sortable"
|-
! Articles
! Information
|-
|data-sort-value = {{PAGESINCATEGORY:Majors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Majors</categorytree>''
| ''{{Miniflag}} '''[[:Category:Majors|Great Powers Articles]]''' are articles which contain information about the Great Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Minors}}|''<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Minors</categorytree>''
| ''{{Miniflag}} '''[[:Category:Important_Minors|Important Minors]]''' are articles which contain information about Important Minors, like Regional Powers''
|-
|data-sort-value = {{PAGESINCATEGORY:Minors}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Minors</categorytree>
|{{Miniflag}} '''[[:Category:Minors|Minors]]'''<br />''are articles that contain information about minor nations''
|-
|data-sort-value = {{PAGESINCATEGORY:Important_Persons}}|<categorytree mode="pages" namespaces="Main" showcount="on" depth=0>Important_Persons</categorytree>
|{{Miniflag}} '''[[:Category:Important Persons|Important Persons]]'''<br />''are articles that contain information about important persons like country leaders''
|}
__NOTOC____NOEDITSECTION__
9f326b2957a459541c9f31e55298cf5b57405f9f
File:Flag of Germany.png
6
1727
3257
2023-11-12T12:33:28Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Germany
0
450
3258
986
2023-11-12T12:49:41Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = Deutschland
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat_of_arms_of_Germany.svg
| alt_coat = The Coat of Arms of Germany
| capital = Berlin
| demonym = Germans
}}
47b11e2353e9ae06287992a7914cf8c446b599ef
3259
3258
2023-11-12T12:57:29Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat_of_arms_of_Germany.svg
| alt_coat = The Coat of Arms of Germany
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
| image_map = {{switcher|[[File:EU-Germany (orthographic projection).svg|frameless]]|Show globe|[[File:EU-Germany.svg|upright=1.15|frameless]]|Show map of Europe|default=1}}
| map_caption = {{map caption
| location_color = dark green
| region = Europe
| region_color = dark grey
| subregion = the [[European Union]]
| subregion_color = light green
}}
| map_width = 250px
}}
[[Category:Majors]]
67a0014177deb2c60f8676261b908cee5e99a397
3272
3259
2023-11-12T12:59:41Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat_of_arms_of_Germany.svg
| alt_coat = The Coat of Arms of Germany
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
| image_map = {{switcher|[[File:EU-Germany (orthographic projection).svg|frameless]]|Show globe|[[File:EU-Germany.svg|upright=1.15|frameless]]|Show map of Europe|default=1}}
| map_caption = {{map caption
| location_color = dark green
| region = Europe
| region_color = dark grey
| subregion = the [[European Union]]
| subregion_color = light green
}}
| map_width = 250px
}}
[[Category:Articles containing German-language text]]
[[Category:Majors]]
71ea062437a8cc1929d28371a0ae484fed64de96
3301
3272
2023-11-12T14:20:25Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat_of_arms_of_Germany.svg
| alt_coat = The Coat of Arms of Germany
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
| image_map = [[File:World_Map_1936.svg]]
| map_caption = Germany
| map_width = 250px
}}
[[Category:Articles containing German-language text]]
[[Category:Majors]]
1e7367759f85c45e5e57fe4ff1fc4ea44d4ba09c
3302
3301
2023-11-12T14:22:41Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat_of_arms_of_Germany.svg
| alt_coat = The Coat of Arms of Germany
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
}}
[[Category:Articles containing German-language text]]
[[Category:Majors]]
f9493ecefde828a9060d41ff3d9f832a0ef52dd5
3304
3302
2023-11-12T14:29:18Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat of Arms of Deutsches Reich.png
| alt_coat = The Coat of Arms of Germany
| national_anthem = {{lang|de|"[[Lied der Deutschen]]"|italics=no}}{{efn|From 1952 to 1990, the entire "Lied der Deutschen" was the national anthem, but only the third verse was sung on official occasions. Since 1991, the third verse alone has been the national anthem.<ref name="PresidentsOffice">{{cite web|url=http://www.bundespraesident.de/DE/Amt-und-Aufgaben/Wirken-im-Inland/Repraesentation-und-Integration/repraesentation-und-integration-node.html|title=Repräsentation und Integration|publisher=[[Bundespräsidialamt]]|language=de|url-status=live|archiveurl=https://web.archive.org/web/20160307221541/http://www.bundespraesident.de/DE/Amt-und-Aufgaben/Wirken-im-Inland/Repraesentation-und-Integration/repraesentation-und-integration-node.html|archivedate=7 March 2016|accessdate=8 March 2016}}</ref>}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div>
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
}}
[[Category:Articles containing German-language text]]
[[Category:Majors]]
4475e167e2b7bc2cf55dfb6d03d9c340cf8c69f1
3305
3304
2023-11-12T14:30:40Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat of Arms of Deutsches Reich.png
| alt_coat = The Coat of Arms of Germany
| national_anthem = {{lang|de|"[[Lied der Deutschen]]"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div>
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
}}
[[Category:Articles containing German-language text]]
[[Category:CS1 German-language sources (de)]]
[[Category:Majors]]
[[Category:Pages with reference errors]]
6928c3eeac2282e935351c811de7183b3600be33
3306
3305
2023-11-12T14:31:08Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat of Arms of Deutsches Reich.png
| alt_coat = The Coat of Arms of Germany
| national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div>
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| official_languages = German
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| coa_size = 80
}}
[[Category:Articles containing German-language text]]
[[Category:CS1 German-language sources (de)]]
[[Category:Majors]]
[[Category:Pages with reference errors]]
02bc7f9ee28dc4790dc4d27885bff9cecf9f1d59
3307
3306
2023-11-12T14:41:41Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| languages = German
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat of Arms of Deutsches Reich.png
| alt_coat = The Coat of Arms of Germany
| national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div>
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| demonym = Germans
| government_type = One Party State
| leader_title1 = [[Führer]]
| leader_name1 = [[Adam Dressler]]
| population_estimate = 72,375,281
| population_estimate_year = 1936
| coa_size = 80
}}
[[Category:Articles containing German-language text]]
[[Category:CS1 German-language sources (de)]]
[[Category:Majors]]
[[Category:Pages with reference errors]]
4f85562d55915d690bdb012994c2742c55b230a8
3308
3307
2023-11-12T15:12:14Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| conventional_long_name = Das Deutches Reich
| common_name = Germany
| languages = German
| native_name = {{native name|de|Deutschland}}
| image_flag = Flag of Germany.png
| alt_flag = Flag of Germany
| image_coat = Coat of Arms of Deutsches Reich.png
| alt_coat = The Coat of Arms of Germany
| national_anthem = {{lang|de|"Lied der Deutschen"|italics=no}}<br />("Song of the Germans")<br /><div style="display:inline-block;margin-top:0.4em;">{{center|[[File:German national anthem performed by the US Navy Band.ogg]]}}</div>
| capital = Berlin
| coordinates = {{Coord|52|31|N|13|23|E}}
| largest_city = capital
| religion = {{unbulleted list |list_style=line-height:1.3em; |class=nowrap | 59% Protestantism | 34% Catholicism | 4% Gottgläubig | 1.5% Atheism | 1.5% Other Religions}}
| demonym = Germans
| government_type = Federal one-party [[Valkism|Valkist]] state
| leader_title1 = Führer und Reichspräsident
| leader_name1 = [[Adam Dressler]]
| leader_title2 = Chancellor
| leader_name2 = Vacant
| legislature = {{unbulleted list |list_style=line-height:1.3em; |class=nowrap | Reichstag|Reich Chamber of Valkism|Reich Economic Chamber}}
| sovereignty_type = Establishment history
| established_event1 = Signing of the Treaty of Versailles
| established_date1 = {{nowrap|August 28 1919}}
| established_event2 = Establishment of the Valkist<br>Bavarian government
| established_date2 = {{nowrap|October 25 1923}}
| established_event3 = {{nowrap|Reichspräsident election}}
| established_date3 = April 10 1923
| established_event4 = March on Berlin
| established_date4 = April 25 1932
| established_event5 = {{nowrap|First Battle of Berlin}}
| established_date5 = April 28 1932
| established_event6 = Inauguration<br>of [[Adam Dressler]]
| established_date6 = April 29 1932
| established_event7 = Second Battle of Berlin
| established_date7 = May 1 1932
| established_event8 = Snap election of 1932
| established_date8 = May 10 1932
| population_estimate = 72,375,281
| population_estimate_year = 1936
| currency = Reichsmark
| currency_code = ℛ︁ℳ︁
| coa_size = 80
| title_leader = Führer und Reichspräsident
| year_leader1 = Incumbent
| leader1 = [[Adam Dressler]]
}}
[[Category:Articles containing German-language text]]
[[Category:CS1 German-language sources (de)]]
[[Category:Majors]]
[[Category:Pages using infobox country with syntax problems|P]]
[[Category:Pages with reference errors]]
546ddc2559dc8a717c5eeba346b161f185a24549
Template:Switcher
10
1728
3261
3260
2023-11-12T12:57:55Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Switcher]]
wikitext
text/x-wiki
<includeonly><div class="switcher-container">{{
safesubst:#if:{{{2|}}}|<div>{{{1|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|1|data-switcher-default=""}}>{{safesubst:#if:trim|{{{2|}}}}}</span></div>}}{{
safesubst:#if:{{{4|}}}|<div>{{{3|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|2|data-switcher-default=""}}>{{safesubst:#if:trim|{{{4|}}}}}</span></div>}}{{
safesubst:#if:{{{6|}}}|<div>{{{5|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|3|data-switcher-default=""}}>{{safesubst:#if:trim|{{{6|}}}}}</span></div>}}{{
safesubst:#if:{{{8|}}}|<div>{{{7|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|4|data-switcher-default=""}}>{{safesubst:#if:trim|{{{8|}}}}}</span></div>}}{{
safesubst:#if:{{{10|}}}|<div>{{{9|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|5|data-switcher-default=""}}>{{safesubst:#if:trim|{{{10|}}}}}</span></div>}}{{
safesubst:#if:{{{12|}}}|<div>{{{11|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|6|data-switcher-default=""}}>{{safesubst:#if:trim|{{{12|}}}}}</span></div>}}{{
safesubst:#if:{{{14|}}}|<div>{{{13|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|7|data-switcher-default=""}}>{{safesubst:#if:trim|{{{14|}}}}}</span></div>}}{{
safesubst:#if:{{{16|}}}|<div>{{{15|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|8|data-switcher-default=""}}>{{safesubst:#if:trim|{{{16|}}}}}</span></div>}}{{
safesubst:#if:{{{18|}}}|<div>{{{17|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|9|data-switcher-default=""}}>{{safesubst:#if:trim|{{{18|}}}}}</span></div>}}{{
safesubst:#if:{{{20|}}}|<div>{{{19|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|10|data-switcher-default=""}}>{{safesubst:#if:trim|{{{20|}}}}}</span></div>}}{{
safesubst:#if:{{{22|}}}|<div>{{{21|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|11|data-switcher-default=""}}>{{safesubst:#if:trim|{{{22|}}}}}</span></div>}}{{
safesubst:#if:{{{24|}}}|<div>{{{23|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|12|data-switcher-default=""}}>{{safesubst:#if:trim|{{{24|}}}}}</span></div>}}{{
safesubst:#if:{{{26|}}}|<div>{{{25|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|13|data-switcher-default=""}}>{{safesubst:#if:trim|{{{26|}}}}}</span></div>}}{{
safesubst:#if:{{{28|}}}|<div>{{{27|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|14|data-switcher-default=""}}>{{safesubst:#if:trim|{{{28|}}}}}</span></div>}}{{
safesubst:#if:{{{30|}}}|<div>{{{29|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|15|data-switcher-default=""}}>{{safesubst:#if:trim|{{{30|}}}}}</span></div>}}{{
safesubst:#if:{{{32|}}}|<div>{{{31|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|16|data-switcher-default=""}}>{{safesubst:#if:trim|{{{32|}}}}}</span></div>}}{{
safesubst:#if:{{{34|}}}|<div>{{{33|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|17|data-switcher-default=""}}>{{safesubst:#if:trim|{{{34|}}}}}</span></div>}}{{
safesubst:#if:{{{36|}}}|<div>{{{35|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|18|data-switcher-default=""}}>{{safesubst:#if:trim|{{{36|}}}}}</span></div>}}{{
safesubst:#if:{{{38|}}}|<div>{{{37|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|19|data-switcher-default=""}}>{{safesubst:#if:trim|{{{38|}}}}}</span></div>}}{{
safesubst:#if:{{{40|}}}|<div>{{{39|}}}<span class="switcher-label" style="display:none" {{
safesubst:#ifeq:{{{default|}}}|20|data-switcher-default=""}}>{{safesubst:#if:trim|{{{40|}}}}}</span></div>}}</div></includeonly><noinclude><!--
NOTES
The includeonly tags prevent the safesubst from substituting.
#if:trim is the same as trim but lowers the post-expand include size.
-->{{Documentation}}</noinclude>
27599f049d0a8b8213aed569de1293a6910d6e40
Template:Switcher/doc
10
1729
3263
3262
2023-11-12T12:58:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Switcher/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Categories go at the bottom of this page and interwikis go in Wikidata. -->
This template is used to create a switchable image with caption, for use in infoboxes. Note that this template does not work in the editing preview.
== Parameters ==
Odd numbered parameters provide the image in wikitext; even numbered parameters provide the captions. Up to 20 images are supported.
== Example ==
<syntaxhighlight lang="wikitext">
{{Switcher
| [[File:Example.png|300px]]
| An example
| [[File:Example image not to be used in article namespace.jpg|300px]]
| A different example
}}
</syntaxhighlight>
Output:
{{Switcher
| [[File:Example.png|300px]]
| An example
| [[File:Example image not to be used in article namespace.jpg|300px]]
| A different example
}}
==TemplateData==
<templatedata>
{
"params": {
"1": {
"description": "Image 1 wikitext",
"example": "[[File:Example.png|300px]]",
"type": "unbalanced-wikitext"
},
"2": {
"description": "Image 1 caption",
"example": "This is just an example.",
"type": "string"
},
"3": {
"description": "See {{{1}}} (recursive)",
"type": "unbalanced-wikitext"
},
"4": {
"description": "See {{{2}}} (recursive)",
"type": "string"
}
},
"description": "Creates a switchable image with caption for use in infoboxes"
}
</templatedata>
330b78009be757eea7e8649ba816537c6af1f65d
Template:Map caption
10
1730
3265
3264
2023-11-12T12:58:45Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Map_caption]]
wikitext
text/x-wiki
<div style="text-align:center;line-height:1.15em;">Location of{{#if:{{{countryprefix|}}}
| {{{countryprefix}}}
}} {{#ifexist:{{{country}}}
|[[{{{country}}}]]
|{{{country|{{PAGENAME}}}}}
}}{{#ifeq:{{{location|{{{location_color|any}}}}}}|none|
| ({{{location|{{{location_color|orange}}}}}})
}}{{#if:{{{region|{{{legend|}}}}}}
|{{#if:{{{subregion|}}}
|<p style="text-align:left;margin-left:1.2ex;margin-top:0px;margin-bottom:0px;line-height:1.15em;">–
|<p style="text-align:center;margin-top:0px;margin-bottom:0px;line-height:1.15em;">
}}{{#switch:{{{region|none}}}
| none =
| Europe
| [[Europe]]
| in Europe
| in [[Europe]]
| on the European continent
| on the [[Europe|European continent]] = in [[Europe]]
| Pacific
| [[Pacific]]
| the Pacific
| the [[Pacific]]
| the Pacific Ocean = in the [[Pacific Ocean]]
| Middle East
| [[Middle East]]
| Arctic Circle
| [[Arctic Circle]]
| Pacific Ocean
| [[Pacific Ocean]] = in the {{#ifexist:{{{region}}}|[[{{{region}}}]]|{{{region}}}}}
| #default = in {{#ifexist:{{{region}}}
|[[{{{region}}}]]
|{{{region}}}
}}
}}{{#if:{{{region|}}}
|{{#ifeq:{{{region_color|any}}}|none|
| ({{#if:{{{subregion|}}}
|{{#ifeq:{{{subregion_color|tan}}}|{{{region_color|white}}}|
|{{#ifeq:{{{subregion_color|any}}}|none|
|{{{subregion_color|tan}}} &
}}
}}
}}{{{region_color|white}}})
}}{{#if:{{{subregion|}}}
|<br />– {{#switch:{{{subregion|none}}}
| EU
| [[EU]]
| the EU
| the [[EU]]
| European Union
| [[European Union]]
| the European Union
| the [[European Union]] = in the [[European Union]]
| #default = in {{#ifexist:{{{subregion}}}
|[[{{{subregion}}}]]
|{{{subregion}}}
}}
}}{{#ifeq:{{{subregion_color|any}}}|none|
| ({{{subregion_color|tan}}})
}}
}}
}}{{#if:{{{legend|}}}
|{{#switch:<!--[13]-->{{{subregion|none}}}
| EU
| [[EU]]
| the EU
| the [[EU]]
| European Union
| [[European Union]]
| the European Union
| the [[European Union]] = {{#ifeq:{{{subregion_color|tan}}}|tan
|
| –
}}
| none = {{#ifeq:{{{region|none}}}|none|
| –
}}
| #default = –
}} [[[:File:{{{legend}}}|Legend]]]
}}</p>
}}</div><noinclude>
{{documentation}}
</noinclude>
6f689b2b33b7f1e8612ae284122114c91acec1f2
Template:Infobox country
10
241
3267
3266
2023-11-12T12:59:21Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Infobox_country]]
wikitext
text/x-wiki
{{infobox
|templatestyles = Template:Infobox country/styles.css
| bodyclass = ib-country vcard
| aboveclass = adr
| above =
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}
| {{#if:{{{conventional_long_name|}}}
|<div class="fn org country-name">{{{conventional_long_name|}}}</div>
}}{{#if:{{{native_name|}}}{{{name|}}}
|<div class="ib-country-names"><!--
-->{{br separated entries
|{{{native_name|}}}
|{{#if:{{{name|}}}
|<div class="ib-country-name-style fn org country-name">{{{name|}}}</div>
}}}}</div>
}}<!--
-->{{#ifeq:{{{micronation|}}}|yes
|<span class="fn org">[[Micronation]]</span>
}}
}}
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}
|{{infobox country/imagetable
|image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}
|caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}
|image2 = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}
|caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}
}} }}
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}
|'''Motto: '''{{if empty|{{{motto|}}}|{{{national_motto|}}}}}<!--
-->{{#if:{{{englishmotto|}}}|<div>{{{englishmotto}}}</div> }}
}}
| class2 = anthem
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}
|'''Anthem:''' {{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}
}}{{#if:{{{anthems|}}}
|'''Anthems:''' {{{anthems}}}
}}{{#if:{{{royal_anthem|}}}
|
<div class="ib-country-anthem">'''[[Royal anthem]]:''' {{{royal_anthem}}}</div>
}}{{#if:{{{flag_anthem|}}}
|
<div class="ib-country-anthem">'''[[Flag anthem]]:''' {{{flag_anthem}}}</div>
}}{{#if:{{{national_march|}}}
|
<div class="ib-country-anthem">'''National march:''' {{{national_march}}}</div>
}}{{#if:{{{territorial_anthem|}}}
|
<div class="ib-country-anthem">'''Territorial anthem:''' {{{territorial_anthem}}}</div>
}}{{#if:{{{regional_anthem|}}}
|
<div class="ib-country-anthem">'''Regional anthem:''' {{{regional_anthem}}}</div>
}}{{#if:{{{state_anthem|}}}
|
<div class="ib-country-anthem">'''State anthem:''' {{{state_anthem}}}</div>
}}{{#if:{{{march|}}}
|
<div class="ib-country-anthem">'''March:''' {{{march}}}</div>
}}
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}
|{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}
| '''{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}'''<br/>}}<!--
-->{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}
}}
| data4 = {{#if:{{{image_map|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption|{{{image_map_caption|}}}}}}</div>}} }}
| data5 = {{#if:{{{image_map2|}}}
|{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|<div class="ib-country-map-caption">{{{map_caption2|{{{image_map2_caption|}}}}}}</div>}} }}
| label6 = Status
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}
| label7 = Location
| data7 = {{{loctext|}}}
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!------------------------------------------
capital is largest_city/_settlement:
-------------------------------------------
--><div class="ib-country-largest">and {{{largest_settlement_type|largest city}}}</div>
}}
| data8 = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}
| label9 = Capital-in-exile
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative center }}
| data10 = {{#switch:{{{admin_center|}}}
|capital | =
|[[{{{capital|}}}]] =
|{{{capital|}}} =
|#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|<br/>{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}
| label11 = Largest {{{largest_settlement_type|city}}}
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital
|capital<!--
-->|{{#switch:{{{capital}}}
| [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital
| {{{largest_city|}}}{{{largest_settlement|}}} = capital
| not capital
}}<!--
-->}}|capital <!--
(#ifeq:)-->|<!-- nothing already appears above -->
| {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}
}}
| rowclass12 = mergedtoprow
| label12 = Official languages
| data12 = {{{official_languages|}}}
| rowclass13 = mergedrow
| label13 = <span class="ib-country-lang">{{#if:{{{recognized_languages|}}}|Recognized|Recognised}} languages</span>
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}
| rowclass14 = mergedrow
| label14 = <span class="ib-country-lang">{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national languages</span>
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}
| rowclass15 = mergedrow
| label15 = <span class="ib-country-lang">{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional languages</span>
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}
| label16 = Common languages
| data16 = {{{common_languages|}}}
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes
|{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}
|{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}
| label17 ={{#ifeq:{{{languages_sub|}}}|yes
|<div class="ib-country-lang">{{if empty| {{{languages_type|}}} | Other languages }}</div>
|{{if empty| {{{languages_type|}}} | Other languages }}
}}
| data17 = {{{languages|}}}
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes
|<div class="ib-country-lang">{{if empty|{{{languages2_type|}}} | Other languages }}</div>
|{{if empty|{{{languages2_type|}}} | Other languages }}
}}
| data18 = {{{languages2|}}}
| label19 = [[Ethnic group|Ethnic groups]] <!--
-->{{#if:{{{ethnic_groups_year|}}} |<div class="ib-country-ethnic"> ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}</div>|<div class="ib-country-ethnic">{{{ethnic_groups_ref|}}}</div>}}
| data19 = {{{ethnic_groups|}}}
| label20 = Religion <!--
-->{{#if:{{{religion_year|}}} |<div class="ib-country-religion"> ({{{religion_year}}}){{{religion_ref|}}}</div>|<div class="ib-country-religion">{{{religion_ref|}}}</div>}}
| data20 = {{{religion|}}}
| label21 = [[Demonym|Demonym(s)]]
| data21 = {{#if:{{{demonym|}}}
|{{#ifexist:{{{demonym}}} people
| [[{{{demonym}}} people|{{{demonym}}}]]
| {{{demonym}}}
}}
}}
| label22 = Type
| data22 = {{{org_type|}}}
| label23 = {{if empty|{{{membership_type|}}} | Membership }}
| data23 = {{{membership|}}}
| label24 = {{#if:{{{government_type|}}}
| {{#if:{{{politics_link|}}}
| [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]<!--
-->| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}<!--
-->}}<!--
-->}}<!--
-->}}
| data24 = {{{government_type|}}}
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}
| {{#if:{{{name|}}}{{{membership|}}}
| <!--template being used for geopolitical org:-->Leaders
| <!--template being used for country/territory: -->Government
}}
}} }}
| rowclass26 = mergedrow
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}
| rowclass27 = mergedrow
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}
| data27 = {{#if:{{{title_leader|}}}| }}
| rowclass28 = mergedrow
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}
| rowclass29 = mergedrow
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}
| data29 = {{#if:{{{title_representative|}}}| }}
| rowclass30 = mergedrow
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}
| rowclass31 = mergedrow
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}
| data31 = {{#if:{{{title_deputy|}}}| }}
| rowclass32 = mergedrow
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}
| label40 = Legislature
| data40 = {{{legislature|}}}
| rowclass41 = mergedrow
| label41 = <div class="ib-country-fake-li">• {{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}</div>
| data41 = {{{upper_house|{{{house1|}}}}}}
| rowclass42 = mergedbottomrow
| label42 = <div class="ib-country-fake-li">• {{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}</div>
| data42 = {{{lower_house|{{{house2|}}}}}}
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}
|{{#if:{{{sovereignty_type|}}}
| {{{sovereignty_type}}}<!--
-->{{#if:{{{sovereignty_note|}}} | <div class="ib-country-sovereignty">{{{sovereignty_note}}}</div>}}
| {{#if:{{{established|}}}| | Establishment }}
}} }}
| label44 = Establishment
| data44 = {{#if:{{{sovereignty_type|}}}
|
|{{{established|}}}
}}
| label45 = {{#if:{{{era|}}}|Historical era|History}}
| data45 = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}| }}}}
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}} |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}} |{{{event1|}}} |{{{date_event1|}}} |{{{event2|}}} |{{{date_event2|}}} |{{{event3|}}} |{{{date_event3|}}} |{{{event4|}}} |{{{date_event4|}}} |{{{event5|}}} |{{{date_event5|}}} |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}} |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}} |{{{event_post|}}} |{{{date_post|}}} }} }}
| rowclass60 = mergedtoprow
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}
| {{#if:{{{area_link|}}}
| [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]
| Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}<!--
-->}}<!--
-->}} }}
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label61 = <div class="ib-country-fake-li">• {{{area_label|Total}}}{{{FR_foot4|}}}</div>
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}
|{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}
|{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_ha|}}}{{{area_acre|}}}
|{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}
}}
}}{{{area_footnote|}}}{{#if:{{{area_rank|}}} | ([[List of countries and dependencies by area|{{{area_rank}}}]]) }}
}}
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label62 = <div class="ib-country-fake-li">• Land</div>
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}
|{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}
|{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}
|{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}
}}
}}{{{area_land_footnote|}}}
}}
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label63 = <div class="ib-country-fake-li">• Water</div>
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}
|{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}
|{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}
|{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}
|{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}
}}
}}{{{area_water_footnote|}}}
}}
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label64 = <div class="ib-country-fake-li">• Water (%)</div>
| data64 = {{{percent_water|}}}
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label65 = <div class="ib-country-fake-li">• {{{area_label2|}}}</div>
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label66 = <div class="ib-country-fake-li">• {{{area_label3|}}}</div>
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}
| rowclass72 = mergedrow
| label72 = <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data72 = {{#if:{{{FR_metropole|}}}| <nowiki /> }}
| rowclass73 = mergedrow
| label73 = <div class="ib-country-fake-li2">• [[Institut Géographique National|IGN]]{{{FR_foot2|}}}</div>
| data73 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}
|{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}
}}
}}
| rowclass89 = mergedbottomrow
| label89 = <div class="ib-country-fake-li2">• [[Cadastre]]{{{FR_foot3|}}}</div>
| data89 = {{#if:{{{FR_metropole|}}}
|{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}
| {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}| ([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}
}}
}}
| rowclass90 = mergedtoprow
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}
|{{#if:{{{population_link|}}}
| {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}<!--
-->| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]<!--
-->| Population<!--
-->}}<!--
-->}} }}
| rowclass91 = mergedrow
| label91 = <div class="ib-country-fake-li">• {{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}</div>
| data91 = {{#if:{{{population_estimate|}}}
|{{{population_estimate}}}<!--
-->{{#if:{{{population_estimate_rank|}}} | ([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}
}}
| rowclass92 = mergedrow
| label92= <div class="ib-country-fake-li">• {{{population_label2|}}}</div>
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}
| rowclass93= mergedrow
| label93= <div class="ib-country-fake-li">• {{{population_label3|}}}</div>
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}
| rowclass94= mergedrow
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{{stat_pop1|}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{{stat_pop2|}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{{stat_pop3|}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{{stat_pop4|}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{{stat_pop5|}}} }} }}
| rowclass95= mergedrow
| label95= <div class="ib-country-fake-li">• {{#if:{{{population_census_year|}}} |{{{population_census_year}}} census|Census}}</div>
| data95= {{#if:{{{population_census|}}}
|{{{population_census}}}<!--
-->{{#if:{{{population_census_rank|}}} | ([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}
}}
| rowclass96= mergedrow
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1= ({{{FR_total_population_estimate_year}}})}}}}}}
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|<nowiki />}}}}
| rowclass97 = mergedrow
| label97= <div class="ib-country-fake-li">• Total{{{FR_foot|}}}</div>
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}
|{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}| ([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}
}} }}
| rowclass98 = mergedrow
| label98= <div class="ib-country-fake-li">• {{{FR_metropole}}}</div>
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}
| ([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}
}}
| rowclass99 = mergedbottomrow
| label99= <div class="ib-country-fake-li">• Density{{{FR_foot5|}}}</div>
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}
| {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}<!--
-->{{#if:{{{population_density_rank|}}} | ([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}
}}
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}
| label100 = Membership
| data100= {{{nummembers|}}}
| rowclass101= mergedtoprow
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|([[Purchasing power parity|PPP]])}}
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}
|{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}} }}estimate
}}
| rowclass102= mergedrow
| label102= <div class="ib-country-fake-li">• Total</div>
| data102= {{#if:{{{GDP_PPP|}}}
|{{{GDP_PPP}}}<!--
-->{{#if:{{{GDP_PPP_rank|}}} | ([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}
}}
| rowclass103= mergedbottomrow
| label103= <div class="ib-country-fake-li">• Per capita</div>
| data103= {{#if:{{{GDP_PPP_per_capita|}}}
|{{{GDP_PPP_per_capita}}}<!--
-->{{#if:{{{GDP_PPP_per_capita_rank|}}} | ([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}
}}
| rowclass104= mergedtoprow
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]] {{nobold|(nominal)}}
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}
|{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}} }}estimate
}}
| rowclass105= mergedrow
| label105= <div class="ib-country-fake-li">• Total</div>
| data105= {{#if:{{{GDP_nominal|}}}
|{{{GDP_nominal}}}<!--
-->{{#if:{{{GDP_nominal_rank|}}} | ([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}
}}
| rowclass106= mergedbottomrow
| label106= <div class="ib-country-fake-li">• Per capita</div>
| data106= {{#if:{{{GDP_nominal_per_capita|}}}
| {{{GDP_nominal_per_capita}}}<!--
-->{{#if:{{{GDP_nominal_per_capita_rank|}}} | ([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}
}}
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} | {{nobold|1=({{{Gini_year}}})}}}}
| data107= {{#if:{{{Gini|}}}
| {{#switch:{{{Gini_change|}}}
|increase = {{increaseNegative}} <!--
-->|decrease = {{decreasePositive}} <!--
-->|steady = {{steady}} <!--
-->}}{{{Gini}}}{{{Gini_ref|}}}<br/><!--
---------Evaluate and add Gini category:----------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{Gini}}}>100 <!--
-->| {{error|Error: Gini value above 100}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{Gini}}}>=60 |{{color|red|very high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=46 <!--
-->| {{color|darkred|high}}<!--
-->| {{#ifexpr:{{{Gini}}}>=30 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{Gini}}}>=0 <!--
-->| {{color|forestgreen|low}}<!--
-->| {{error|Error:Gini value below 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
-----------Add Gini_rank (if supplied):----------
-->{{#if:{{{Gini_rank|}}}
| · [[List of countries by income equality|{{{Gini_rank}}}]]<!--
-->}}<!--
-->}}
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} | {{nobold|1=({{{HDI_year}}})}}}}
| data108= {{#if:{{{HDI|}}}
| {{#switch:{{{HDI_change|}}}
|increase = {{increase}} <!--
-->|decrease = {{decrease}} <!--
-->|steady = {{steady}} <!--
-->}}{{{HDI}}}{{{HDI_ref|}}}<br/><!--
---------Evaluate and add HDI category:---------
-->{{nowrap|1=<!--
-->{{#iferror:<!--
-->{{#ifexpr:{{{HDI}}}>1 <!--
-->| {{error|Error: HDI value greater than 1}}<!--Handled by outer #iferror, not visible to users--><!--
-->| {{#ifexpr:{{{HDI}}}>0.799 <!--
-->| {{color|darkgreen|very high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.699 <!--
-->| {{color|forestgreen|high}}<!--
-->| {{#ifexpr:{{{HDI}}}>0.549 <!--
-->| {{color|orange|medium}}<!--
-->| {{#ifexpr:{{{HDI}}}>=0.000<!--
-->| {{color|red|low}}<!--
-->| {{error|Error: HDI value less than 0}}<!--Handled by outer #iferror, not visible to users--><!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}<!--
-->}}<!--
-->}}<!--
----------Add HDI_rank (if supplied):-----------
-->{{#if:{{{HDI_rank|}}}
| · [[List of countries by Human Development Index|{{{HDI_rank}}}]]<!--
-->}}<!--
-->}}
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}
| data109= {{#if:{{{currency|}}}
| {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}
}}
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}
| label119= Time zone
| data119= {{#if:{{{utc_offset|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}
|{{{time_zone|}}}
}}
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}
| label120= <div class="ib-country-fake-li">• Summer ([[Daylight saving time|DST]])</div>
| data120= {{#if:{{{utc_offset_DST|}}}
|{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}
|{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}
}}
| rowclass121= mergedbottomrow
| label121= <nowiki />
| data121= {{{DST_note|}}}
| label122 = [[Antipodes]]
| data122= {{{antipodes|}}}
| label123 = Date format
| data123= {{{date_format|}}}
| label125= [[Left- and right-hand traffic|Driving side]]
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}
| label126= {{#if:{{{calling_code|}}}
|{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}
| [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]
| Calling code
}}
}}
| data126= {{{calling_code|}}}
| label127= [[ISO 3166|ISO 3166 code]]
| data127= {{#switch:{{{iso3166code|}}}
|omit = <!--(do nothing)-->
| = <!--if iso3166code is not supplied:
-->{{#if:{{{common_name|}}}
| {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}
| [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]
}}
}}
|#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]
}}
| label128= [[Country code top-level domain|Internet TLD]]
| data128= {{{cctld|}}}
| data129 = {{#if:{{{official_website|}}}
|<div class="ib-country-website">'''Website'''<br/>{{{official_website}}}</div>
}}
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}
| {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}<!--
-->{{#if:{{{map_caption3|}}}|<div class="ib-country-map-caption3">{{{map_caption3|}}}</div>}}
}}
| data134 = {{#if:{{{p1|}}}{{{s1|}}}
|{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_p22={{{flag_p22|}}}|image_p22={{{image_p22|}}}|p22={{{p22|}}}|border_p22={{{border_p22|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}|flag_s22={{{flag_s22|}}}|image_s22={{{image_s22|}}}|s22={{{s22|}}}|border_s22={{{border_s22|}}}}}
}}
| label135 = Today part of
| data135 = {{{today|}}}
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-alpha">
{{#if:{{{footnote_a|}}}|<li value=1>{{{footnote_a|}}}</li>
}}{{#if:{{{footnote_b|}}}|<li value=2>{{{footnote_b|}}}</li>
}}{{#if:{{{footnote_c|}}}|<li value=3>{{{footnote_c|}}}</li>
}}{{#if:{{{footnote_d|}}}|<li value=4>{{{footnote_d|}}}</li>
}}{{#if:{{{footnote_e|}}}|<li value=5>{{{footnote_e|}}}</li>
}}{{#if:{{{footnote_f|}}}|<li value=6>{{{footnote_f|}}}</li>
}}{{#if:{{{footnote_g|}}}|<li value=7>{{{footnote_g|}}}</li>
}}{{#if:{{{footnote_h|}}}|<li value=8>{{{footnote_h|}}}</li>}}
</ol></div>}}
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}
|<div class="ib-country-fn"><ol class="ib-country-fn-num">
{{#if:{{{footnote1|}}}|<li value=1>{{{footnote1|}}}</li>
}}{{#if:{{{footnote2|}}}|<li value=2>{{{footnote2|}}}</li>
}}{{#if:{{{footnote3|}}}|<li value=3>{{{footnote3|}}}</li>
}}{{#if:{{{footnote4|}}}|<li value=4>{{{footnote4|}}}</li>
}}{{#if:{{{footnote5|}}}|<li value=5>{{{footnote5|}}}</li>
}}{{#if:{{{footnote6|}}}|<li value=6>{{{footnote6|}}}</li>
}}{{#if:{{{footnote7|}}}|<li value=7>{{{footnote7|}}}</li>
}}{{#if:{{{footnote8|}}}|<li value=8>{{{footnote8|}}}</li>}}
</ol></div>}}
| data138 = {{#if:{{{footnotes|}}}|<div class="ib-country-fn">{{{footnotes}}}{{#if:{{{footnotes2|}}}|<br>{{{footnotes2}}}}}</div>}}
| belowclass = mergedtoprow noprint
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter "_VALUE_"|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | regexp1 = border_[ps][%d]+ | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | regexp2 = date_event[%d]+ | date_format | date_post | date_pre | date_start | demonym | regexp3 = deputy[%d]+ | drives_on | DST_note | DST | empire | englishmotto | era | regexp4 = established_date[%d]+ | regexp5 = established_event[%d]+ | established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | regexp6 = event[%d]+ | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | regexp7 = flag_[ps][%d]+ | flag_size | flag_type | flag_type_article | flag_width | flag2_border | regexp8 = footnote_[a-h] | regexp9 = footnote[%d]+ | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | regexp10 = image_[ps][%d]+ | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | regexp11 = leader_name[%d]+ | regexp12 = leader_title[%d]+ | regexp13 = leader[%d]+ | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | regexp14 = [ps][%d]+ | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | regexp15 = ref_area[%d]+ | regexp16 = ref_pop[%d]+ | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | regexp17 = representative[%d]+ | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | sovereignty_note | sovereignty_type | regexp18 = stat_area[%d]+ | regexp19 = stat_pop[%d]+ | regexp20 = stat_year[%d]+ | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | regexp21 = year_deputy[%d]+ | year_end | year_exile_end | year_exile_start | regexp22 = year_leader[%d]+ | regexp23 = year_representative[%d]+ | year_start}}{{main other|
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]
}}}}<!--
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.
-->{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}
}}<!--End of former country tracking cats--><noinclude>
{{documentation}}
</noinclude>
7b1a18da8309a84e21d417a3332665cdc72535c5
Template:Tsp
10
1731
3269
3268
2023-11-12T12:59:28Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tsp]]
wikitext
text/x-wiki
#REDIRECT [[Template:Thin space]]
[[Category:Inline spacing templates|Thinsp]]
[[Category:Typing-aid templates|Thinsp]]
5c0846b57ba875d535c1e5602e2c070f41d4cf23
Template:Map caption/doc
10
1732
3271
3270
2023-11-12T12:59:35Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Map_caption/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- EDIT TEMPLATE DOCUMENTATION BELOW THIS LINE -->
<p style="width:100%;">Template intended to simplify adding a standardized and formatted caption below a map indicating the location of something (e.g. a country), possibly referring to the map's main region and optionally also to a shown subregion. Original use within infoboxes (e.g. see articles on [[Template:Countries of Europe|European countries]]). For a complete set of elements of reasonable length, a width of (minimally) 250px (without extra padding or margins) should be available.</p>
===Parameters===
Required parameters shown in '''''bold italics'''''
{{Aligned table
|cols=3 |class=wikitable |style=font-size:95%; |colstyle=padding-left:0.5em;padding-right:0.5em;
|col1style=font-style:italic; |col3align=center
|row1header=on| Parameter | Description | Default
| countryprefix | {{plainlist|1=
* Neither linked nor styled prefix e.g. "the" (for articles named e.g. "United Kingdom", "Czech Republic", "Netherlands").
}}
| –
| country |{{plainlist|1=
* Only if the country name at the map should not be identical to the article name (e.g. "Metropolitan France").
* <nowiki>Template sets [[...]]</nowiki> (if article or redirect exists).
}}
| <{{tsp|''article name''}}>
| location |{{plainlist|1=
* Only if ''colour'' is not used and its default is not appropriate: Description identifying ''country''{{'}}s location (e.g. "circled in inset")
* This parameter must never be empty; "none" suppresses it. If passed, ''location_color'' cannot be shown.
}}
| –
| location_color |{{plainlist|1=
* Only if ''description'' is not used: Colour identifying ''country''{{'}}s location; "none" suppresses the default.
}}
| orange
| region |{{plainlist|1=
* Name (or equally extremely short description) for approximately the entire area depicted by the map.
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>Antarctica<nowiki>]]</nowiki>" shown as "on [[Antarctica]]",
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>Middle East<nowiki>]]</nowiki>", "<nowiki>[[</nowiki>Arctic Circle<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>Pacific Ocean<nowiki>]]</nowiki>" shown as "in the ...",
* <span style{{=}}"visibility:hidden;">special: </span>versus any other: shown as "in ...", e.g. "<nowiki>[[</nowiki>Africa<nowiki>]]</nowiki>" shown as "in Africa"
}}
| –
| region_color |{{plainlist|1=
* Colour identifying ''region''; "none" suppresses the default.
}}
| white
| subregion |{{plainlist|1=
* Subregion indicated within region <span style{{=}}"font-size:87%;">(only if used: aligning both region and subregion lines to the left, else single region line centered as top line)</span>
* Must not occur without parameter ''region''.
* <span style{{=}}"visibility:hidden;">special: </span>"<nowiki>[[</nowiki>EU<nowiki>]]</nowiki>" or "<nowiki>[[</nowiki>European Union<nowiki>]]</nowiki>" shown as "in the [[European Union]]",
* <span style{{=}}"visibility:hidden;">special: </span>versus any other: shown as "in ...", e.g. "the <nowiki>[[</nowiki>Caucasus<nowiki>]]</nowiki>" shown as "in the [[Caucasus]]"
}}
| –
| subregion_color |{{plainlist|1=
* Colour identifying ''subregion''; "none" suppresses showing the default.
}}
| tan
| legend |{{plainlist|1=
* Filename of image providing a map legend.
}}
| –
}}<!--(end Aligned table)-->
; Note : <div style="font-size:95%;line-height:1.35em;font-weight:400;"> If ''country'', ''region'' or ''subregion'' is exactly the name of a page in article space, the template automatically creates a link to it. You can still put a link here manually, using the usual syntax.</div>
===Examples===
{| style="width:100%; border:1px solid #a0a0a0; background-color:#f8f8ff;"<!-- no class formatting other than article space: mustnot show result in any different style here -->
|- style="vertical-align:top;text-align:left;"
|style="width:50%; font-size:110%;font-weight:bold;"| Code || <span style="font-size:110%;font-weight:bold;">Raw result</span> (in unformatted box, compare to handling in Infobox)
|- style="vertical-align:top;"
|colspan="2" style="padding-top:.5em; font-size:87%;"|<code style="color:#705000;"><nowiki>{{map caption}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"|<code><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption |region=Europe |legend=European location legend en.png}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%; color:#705000;"| <code><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;"|{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}
|}
|- style="vertical-align:top;"
|colspan="2" style="padding-top:1.5em; font-size:87%;"| '' Typical sample for an article on a European Union member that needs no "the" before its name, for otherwise identical output:''<br /><code style="color:#705000;"><nowiki>{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}</nowiki></code>
|-
| ||
{|style="border:1px solid #000000;"
|-
|style="padding:0;|{{map caption |region=Europe |subregion=EU |legend=European location legend en.png}}
|}
|}
{| xclass="toccolours" style="width:100%; margin-top:.5em;border:1px solid #a0a0a0;background-color:#f8f8ff;" <!-- no class formatting other than article space -->
|- style="text-align:left;"
|'''<span style="font-size:110%;">Infobox usage of code</span> (as intended)''' — in which the alignment, the padding/margins, and font are rendered differently (''this'' template adjusts for ''that'' infobox):
|- style="text-align:left;line-height:1.4em;font-size:87%;"
|style="white-space:normal;"|'''Sample for article named 'Armenia', about a non-European country'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = Armenia</nowiki><br />
<nowiki> |image_map = Europe location ARM.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>'''Sample for article named 'Belarus', about a non-member of the EU'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = Belarus</nowiki><br />
<nowiki> |image_map = Europe location BLR.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |region=Europe |legend=European location legend en.png}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code><span style="line-height:.9em;"><br /><br /></span>
'''Sample for article named 'Netherlands', about a member of the EU'''<br />
<code><nowiki>
{{Infobox Country or territory|</nowiki><br />
<nowiki> |common_name = the Netherlands</nowiki><br />
<nowiki> |image_map = EU location NED.png</nowiki><br />
<nowiki> |map_caption = </nowiki><span style="color:#705000;"><nowiki>{{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}</nowiki></span><br />
''<nowiki> |(some required infobox parameters omitted from sample)</nowiki>''<br />
<nowiki>}}</nowiki></code>
|-
|
{| style="background-color:#f8f8ff;"
|-
|colspan="3" |<span style="font-size:110%;">'''Net result'''</span> — The three simplified samples above, shown here side by side<br /><span style="font-size:110%;visibility:hidden;">'''Net result''' — </span><span style="font-size:87%;">(called here without country parameter, and with placeholder values for population to prevent error messages)</span>:
|- style="vertical-align:top;"
|{{Infobox country|
|common_name = Armenia
|image_map = Europe location ARM.png
|map_caption = {{map caption}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|{{Infobox country|
|common_name = Belarus
|image_map = Europe location BLR.png
|map_caption = {{map caption |region=Europe |legend=European location legend en.png}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|{{Infobox country|
|common_name = the Netherlands
|image_map = EU location NED.png
|map_caption = {{map caption |countryprefix=the |region=Europe |subregion=the [[European Union]] |legend=European location legend en.png}}
|capital = <span style="display:none">x</span>
|government_type = <span style="display:none">x</span>
|official_languages = <span style="display:none">x</span>
|area_km2 = 10
|area_sq_mi = <span style="display:none">0</span>
|population_density_km2 = 10
|population_density_rank = <span style="display:none">0</span>
|population_density_sq_mi = <span style="display:none">0</span>
|time_zone = <span style="display:none">x</span>
|utc_offset = <span style="display:none">0</span>
|cctld = <span style="display:none">x</span>
|currency = <span style="display:none">x</span>
|currency_code = <span style="display:none">x</span>
|calling_code = <span style="display:none">0</span>
|footnotes =
}}
|}
|}
<includeonly>{{Sandbox other|
| <!-- CATEGORIES BELOW THIS LINE, PLEASE: -->
[[Category:Map formatting and function templates]]
}}</includeonly>
a4d3dff2acaf90414f21b798752523e1efbb574e
Module:Transclusion count/data/F
828
1725
3274
3273
2023-11-12T13:02:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/F]]
Scribunto
text/plain
return {
["F1"] = 4700,
["FA-Class"] = 15000,
["FAA-airport"] = 3700,
["FACClosed"] = 5200,
["FAR_link"] = 102000,
["FCC-LMS-Facility"] = 5600,
["FIDE"] = 2200,
["FIFA_player"] = 10000,
["FIN"] = 9200,
["FIPS"] = 2000,
["FJC_Bio"] = 4200,
["FL-Class"] = 12000,
["FLCClosed"] = 2600,
["FLC_link"] = 102000,
["FM-Class"] = 2800,
["FMA"] = 3300,
["FMARB"] = 10000,
["FML"] = 9100,
["FMQ"] = 12000,
["FMXL"] = 2400,
["FM_station_data"] = 8700,
["FPCnom/VotingEnds"] = 9800,
["FPCresult"] = 16000,
["FRA"] = 19000,
["FRG"] = 3700,
["FULLBASEPAGENAME"] = 5400,
["FULLROOTPAGENAME"] = 2470000,
["FXL"] = 2200,
["Fa_bottom"] = 2200,
["Fa_top"] = 2200,
["Facebook"] = 14000,
["Facepalm"] = 2600,
["Fact"] = 37000,
["FadedPage"] = 2400,
["FailedGA"] = 3300,
["Failed_verification"] = 15000,
["Family_name_explanation"] = 80000,
["Family_name_explanation/core"] = 80000,
["Family_name_hatnote"] = 79000,
["Farl"] = 102000,
["Fb"] = 26000,
["Fb-rt"] = 5800,
["Fb_cs_footer"] = 2900,
["Fb_gd"] = 8800,
["Fb_overview"] = 3700,
["Fb_overview2"] = 3400,
["Fb_rs"] = 8500,
["Fb_rs_footer"] = 8400,
["Fba/core"] = 24000,
["Fba/list"] = 29000,
["Fbaicon"] = 7200,
["Fbaicon/core"] = 8200,
["Fbicon"] = 2900,
["Fbu"] = 3700,
["Fbu-rt"] = 2200,
["Fbw"] = 5000,
["Fdacite"] = 14000,
["FeaturedPicture"] = 6300,
["Featured_article"] = 6700,
["Featured_article_tools"] = 11000,
["Featured_list"] = 4300,
["Featured_picture"] = 7700,
["Featured_topic_box"] = 3100,
["Featured_topic_box/styles.css"] = 3100,
["Feedback_link"] = 4600,
["Fiction-based_redirects_to_list_entries_category_handler"] = 2400,
["File-Class"] = 12000,
["File_other"] = 934000,
["Film"] = 54000,
["Film_date"] = 119000,
["Film_lists_by_country"] = 2300,
["Find"] = 8200,
["FindYDCportal"] = 176000,
["Find_a_Grave"] = 28000,
["Find_a_Grave_cemetery"] = 2300,
["Find_country"] = 234000,
["Find_general_sources"] = 868000,
["Find_medical_sources"] = 7400,
["Find_page_text"] = 635000,
["Find_sources"] = 631000,
["Find_sources/proj/is_biography"] = 619000,
["Find_sources/proj/is_med"] = 631000,
["Find_sources/proj/is_video"] = 624000,
["Find_sources/top_proj"] = 631000,
["Find_sources_AFD"] = 201000,
["Find_sources_mainspace"] = 694000,
["Find_video_game_sources"] = 5000,
["Find_video_game_sources_short"] = 3100,
["Findsources"] = 42000,
["First_nonempty"] = 14000,
["First_word"] = 453000,
["FishBase"] = 14000,
["FishBase_genus"] = 4600,
["Fishproject"] = 10000,
["Fix"] = 914000,
["Fix-span"] = 55000,
["Fix/category"] = 868000,
["Fix_comma_category"] = 563000,
["Fixed"] = 8900,
["Flag"] = 568000,
["Flag/core"] = 568000,
["FlagIOC"] = 11000,
["FlagIOC2"] = 16000,
["FlagIOC2athlete"] = 11000,
["FlagIOC2medalist"] = 4500,
["FlagIOC2team"] = 6700,
["FlagIOCathlete"] = 17000,
["FlagIOCteam"] = 2700,
["FlagIPC"] = 3400,
["FlagPASO"] = 2800,
["FlagPASOathlete"] = 2600,
["Flag_data"] = 7300,
["Flag_icon"] = 15000,
["Flagathlete"] = 28000,
["Flagbig"] = 4500,
["Flagbig/core"] = 7700,
["Flagcountry"] = 40000,
["Flagcountry/core"] = 40000,
["Flagdeco"] = 113000,
["Flagdeco/core"] = 113000,
["Flagg"] = 21000,
["Flagicon"] = 600000,
["Flagicon/core"] = 601000,
["Flagicon/nt"] = 5000,
["Flagicon_image"] = 41000,
["Flaglink/core"] = 78000,
["Flagmedalist"] = 2200,
["Flagmedalist/core"] = 2200,
["Flagright/core"] = 23000,
["Flagteam"] = 6100,
["Flagu"] = 24000,
["Flagu/core"] = 24000,
["Flat_list"] = 8000,
["Flatlist"] = 2090000,
["Flcl"] = 102000,
["FloraBase"] = 5600,
["Floruit"] = 4100,
["Fmbox"] = 19000,
["Font"] = 9000,
["Font_color"] = 38000,
["Fontcolor"] = 6600,
["Fooian_expatriate_sportspeople_in_Bar_cat"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/core"] = 10000,
["Fooian_expatriate_sportspeople_in_Bar_cat/sortname"] = 10000,
["Fooian_fooers"] = 13000,
["Football"] = 57000,
["FootballDatabase.eu"] = 8600,
["FootballFacts.ru"] = 5700,
["Football_box"] = 25000,
["Football_box_collapsible"] = 24000,
["Football_kit"] = 48000,
["Football_manager_history"] = 21000,
["Football_squad"] = 47000,
["Football_squad2_player"] = 50000,
["Football_squad_end"] = 19000,
["Football_squad_manager"] = 47000,
["Football_squad_mid"] = 17000,
["Football_squad_player"] = 19000,
["Football_squad_player/role"] = 6800,
["Football_squad_player/styles.css"] = 19000,
["Football_squad_start"] = 19000,
["Footballbox"] = 7200,
["Footballbox_collapsible"] = 7200,
["Footballstats"] = 2900,
["Foo–Bar_relations_category"] = 9200,
["Foo–Bar_relations_category/core"] = 9200,
["Foo–Bar_relations_category/countrynamesortfix"] = 9200,
["Foo–Bar_relations_category/fixcountryname"] = 9200,
["Foo–Bar_relations_category/inner_core"] = 9200,
["Foo–Bar_relations_category/mapname"] = 9200,
["For"] = 186000,
["For-multi"] = 9600,
["For_loop"] = 779000,
["For_multi"] = 7900,
["For_nowiki"] = 8700,
["ForaDeJogo"] = 4100,
["Force_plural"] = 3300,
["Format_linkr"] = 4500,
["Format_numeric_span"] = 3600,
["Format_price"] = 8200,
["Format_price/digits"] = 8100,
["Formatprice"] = 3200,
["Fossil_range"] = 12000,
["Fossil_range/bar"] = 21000,
["Fossil_range/marker"] = 21000,
["Fossilrange"] = 5900,
["Frac"] = 31000,
["Fraction"] = 35000,
["Fraction/styles.css"] = 94000,
["France_metadata_Wikidata"] = 36000,
["Free_access"] = 4300,
["Free_in_US_media"] = 15000,
["Free_media"] = 156000,
["Frequency"] = 3400,
["Friday"] = 2700,
["Fs_end"] = 18000,
["Fs_mid"] = 16000,
["Fs_player"] = 18000,
["Fs_start"] = 18000,
["Full_citation_needed"] = 8300,
["Full_party_name_with_color"] = 4100,
["Fullurl"] = 6500,
["Fullurl:"] = 6400,
["Further"] = 63000,
["Fussballdaten"] = 4300,
["Module:Fb_overview"] = 3800,
["Module:FeaturedTopicSum"] = 6800,
["Module:Fedi-share"] = 3300,
["Module:Fiction-based_redirects_to_list_entries_category_handler"] = 2400,
["Module:Fiction-based_redirects_to_list_entries_category_handler/RedirectType"] = 2400,
["Module:Fiction_redirect_category_handler"] = 2900,
["Module:File_link"] = 68000,
["Module:FindYDCportal"] = 309000,
["Module:Find_country"] = 184000,
["Module:Find_sources"] = 1570000,
["Module:Find_sources/config"] = 1570000,
["Module:Find_sources/links"] = 1570000,
["Module:Find_sources/templates/Find_general_sources"] = 868000,
["Module:Find_sources/templates/Find_sources_mainspace"] = 694000,
["Module:Find_sources/templates/Find_sources_medical"] = 7400,
["Module:Find_sources/templates/Find_sources_video_games"] = 5000,
["Module:FishRef"] = 7000,
["Module:Flag"] = 51000,
["Module:Flagg"] = 126000,
["Module:Football_box"] = 26000,
["Module:Football_box/styles.css"] = 26000,
["Module:Football_box_collapsible"] = 24000,
["Module:Football_manager_history"] = 21000,
["Module:Football_squad"] = 47000,
["Module:Footnotes"] = 291000,
["Module:Footnotes/anchor_id_list"] = 210000,
["Module:Footnotes/anchor_id_list/data"] = 210000,
["Module:Footnotes/whitelist"] = 210000,
["Module:For"] = 187000,
["Module:For_loop"] = 779000,
["Module:For_nowiki"] = 8700,
["Module:Format_link"] = 1330000,
["Module:Formatted_appearance"] = 5000,
}
c4dc69810385b6bbce6e5430d153c8c6202559d1
Module:File link/doc
828
1733
3276
3275
2023-11-12T13:02:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:File_link/doc]]
wikitext
text/x-wiki
{{high-use}}
{{Module rating|protected}}
{{Lua|Module:Yesno|Module:Arguments}}
This module is used to construct wikitext links to files. It is primarily useful for templates and modules that use complicated logic to make file links. Simple file links should be made with wikitext markup directly, as it uses less resources than calling this module. For help with wikitext file markup please refer to the [[mw:Help:Images|documentation at mediawiki.org]].
== Usage from wikitext ==
From wikitext, this module should be called from a template, usually {{tl|file link}}. Please see the template page for documentation. However, it can also be called using the syntax <code><nowiki>{{#invoke:File link|main|</nowiki>''arguments''<nowiki>}}</nowiki></code>.
== Usage from Lua ==
First, you need to import the module.
<syntaxhighlight lang="lua">
local mFileLink = require('Module:File link')
</syntaxhighlight>
Then you can make file links using the <code>_main</code> function.
<syntaxhighlight lang="lua">
mFileLink._main(args)
</syntaxhighlight>
<var>args</var> is a table of arguments that can have the following keys:
* <code>file</code> - the filename. (required)
* <code>format</code> - the file format, e.g. 'thumb', 'thumbnail', 'frame', 'framed', or 'frameless'.
* <code>formatfile</code> - a filename to specify with the 'thumbnail' format option. The filename specified will be used instead of the automatically generated thumbnail.
* <code>border</code> - set this to true or "yes" (or any other value recognized as true by [[Module:Yesno]]) to set a border for the image.
* <code>location</code> - the horizontal alignment of the file, e.g. 'right', 'left', 'center', or 'none'.
* <code>alignment</code> - the vertical alignment of the file, e.g. 'baseline', 'middle', 'sub', 'super', 'text-top', 'text-bottom', 'top', or 'bottom'.
* <code>size</code> - the size of the image, e.g. '100px', 'x100px' or '100x100px'.
* <code>upright</code> - the 'upright' parameter, used for setting the size of tall and thin images.
* <code>link</code> - the page that the file should link to. Use the blank string <nowiki>''</nowiki> to suppress the default link to the file description page.
* <code>alt</code> - the alt text. Use the blank string <nowiki>''</nowiki> to suppress the default alt text.
* <code>caption</code> - a caption for the file.
* <code>page</code> - sets a page number for multi-paged files such as PDFs.
* <code>class</code> - adds a <code>class</code> parameter to image links. The MediaWiki software adds this parameter to the <code>class="..."</code> attribute of the image's <code><nowiki><img /></nowiki></code> element when the page is rendered into HTML.
* <code>lang</code> - adds a language attribute to specify what language to render the file in.
* <code>start</code> - specifies a start time for audio and video files.
* <code>end</code> - specifies an end time for audio and video files.
* <code>thumbtime</code> - specifies the time to use to generate the thumbnail image for video files.
To see the effect of each of these parameters, see the [[mw:Help:Images#Format|images help page on mediawiki.org]].
=== Examples ===
With the file only:
<syntaxhighlight lang="lua">
mFileLink.main{file = 'Example.png'}
-- Renders as [[File:Example.png]]
</syntaxhighlight>
With format, size, link and caption options:
<syntaxhighlight lang="lua">
mFileLink.main{
file = 'Example.png',
format = 'thumb',
size = '220px',
link = 'Wikipedia:Sandbox',
caption = 'An example.'
}
-- Renders as [[File:Example.png|thumb|220px|link=Wikipedia:Sandbox|An example.]]
</syntaxhighlight>
With format, size, and border:
<syntaxhighlight lang="lua">
mFileLink.main{
file = 'Example.png',
format = 'frameless',
size = '220px',
border = true
}
-- Renders as [[File:Example.png|frameless|border|220px]]
</syntaxhighlight>
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox||
<!-- Categories go here and interwikis go in Wikidata. -->
}}</includeonly>
3ed97b9b6e53a4e041285a77da0c01f25e581d13
Module:Switcher
828
1734
3278
3277
2023-11-12T13:03:14Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Switcher]]
Scribunto
text/plain
local p = {}
function p.main(frame)
local root = mw.html.create('div'):addClass('switcher-container')
local default = (tonumber(frame.args.default) or 0) * 2 - 1
for i,v in ipairs(frame.args) do
if i % 2 == 1 then
local span = root
:tag('div')
:wikitext(frame.args[i])
:tag('span')
:addClass('switcher-label')
:css('display', 'none')
:wikitext(mw.text.trim(frame.args[i + 1]))
if i == default then
span:attr('data-switcher-default', '')
end
end
end
return root
end
return p
9393d11155145cb28d5fdad5ce6b9cde1bbad60f
Module:Wd
828
1048
3280
3279
2023-11-12T13:10:57Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Wd]]
Scribunto
text/plain
-- Original module located at [[:en:Module:Wd]] and [[:en:Module:Wd/i18n]].
require("strict")
local p = {}
local arg = ...
local i18n
local function loadI18n(aliasesP, frame)
local title
if frame then
-- current module invoked by page/template, get its title from frame
title = frame:getTitle()
else
-- current module included by other module, get its title from ...
title = arg
end
if not i18n then
i18n = require(title .. "/i18n").init(aliasesP)
end
end
p.claimCommands = {
property = "property",
properties = "properties",
qualifier = "qualifier",
qualifiers = "qualifiers",
reference = "reference",
references = "references"
}
p.generalCommands = {
label = "label",
title = "title",
description = "description",
alias = "alias",
aliases = "aliases",
badge = "badge",
badges = "badges"
}
p.flags = {
linked = "linked",
short = "short",
raw = "raw",
multilanguage = "multilanguage",
unit = "unit",
-------------
preferred = "preferred",
normal = "normal",
deprecated = "deprecated",
best = "best",
future = "future",
current = "current",
former = "former",
edit = "edit",
editAtEnd = "edit@end",
mdy = "mdy",
single = "single",
sourced = "sourced"
}
p.args = {
eid = "eid",
page = "page",
date = "date"
}
local aliasesP = {
coord = "P625",
-----------------------
image = "P18",
author = "P50",
authorNameString = "P2093",
publisher = "P123",
importedFrom = "P143",
wikimediaImportURL = "P4656",
statedIn = "P248",
pages = "P304",
language = "P407",
hasPart = "P527",
publicationDate = "P577",
startTime = "P580",
endTime = "P582",
chapter = "P792",
retrieved = "P813",
referenceURL = "P854",
sectionVerseOrParagraph = "P958",
archiveURL = "P1065",
title = "P1476",
formatterURL = "P1630",
quote = "P1683",
shortName = "P1813",
definingFormula = "P2534",
archiveDate = "P2960",
inferredFrom = "P3452",
typeOfReference = "P3865",
column = "P3903",
subjectNamedAs = "P1810",
wikidataProperty = "P1687",
publishedIn = "P1433"
}
local aliasesQ = {
percentage = "Q11229",
prolepticJulianCalendar = "Q1985786",
citeWeb = "Q5637226",
citeQ = "Q22321052"
}
local parameters = {
property = "%p",
qualifier = "%q",
reference = "%r",
alias = "%a",
badge = "%b",
separator = "%s",
general = "%x"
}
local formats = {
property = "%p[%s][%r]",
qualifier = "%q[%s][%r]",
reference = "%r",
propertyWithQualifier = "%p[ <span style=\"font-size:85\\%\">(%q)</span>][%s][%r]",
alias = "%a[%s]",
badge = "%b[%s]"
}
local hookNames = { -- {level_1, level_2}
[parameters.property] = {"getProperty"},
[parameters.reference] = {"getReferences", "getReference"},
[parameters.qualifier] = {"getAllQualifiers"},
[parameters.qualifier.."\\d"] = {"getQualifiers", "getQualifier"},
[parameters.alias] = {"getAlias"},
[parameters.badge] = {"getBadge"}
}
-- default value objects, should NOT be mutated but instead copied
local defaultSeparators = {
["sep"] = {" "},
["sep%s"] = {","},
["sep%q"] = {"; "},
["sep%q\\d"] = {", "},
["sep%r"] = nil, -- none
["punc"] = nil -- none
}
local rankTable = {
["preferred"] = 1,
["normal"] = 2,
["deprecated"] = 3
}
local function replaceAlias(id)
if aliasesP[id] then
id = aliasesP[id]
end
return id
end
local function errorText(code, param)
local text = i18n["errors"][code]
if param then text = mw.ustring.gsub(text, "$1", param) end
return text
end
local function throwError(errorMessage, param)
error(errorText(errorMessage, param))
end
local function replaceDecimalMark(num)
return mw.ustring.gsub(num, "[.]", i18n['numeric']['decimal-mark'], 1)
end
local function padZeros(num, numDigits)
local numZeros
local negative = false
if num < 0 then
negative = true
num = num * -1
end
num = tostring(num)
numZeros = numDigits - num:len()
for _ = 1, numZeros do
num = "0"..num
end
if negative then
num = "-"..num
end
return num
end
local function replaceSpecialChar(chr)
if chr == '_' then
-- replace underscores with spaces
return ' '
else
return chr
end
end
local function replaceSpecialChars(str)
local chr
local esc = false
local strOut = ""
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
esc = true
else
strOut = strOut .. replaceSpecialChar(chr)
end
else
strOut = strOut .. chr
esc = false
end
end
return strOut
end
local function buildWikilink(target, label)
if not label or target == label then
return "[[" .. target .. "]]"
else
return "[[" .. target .. "|" .. label .. "]]"
end
end
-- used to make frame.args mutable, to replace #frame.args (which is always 0)
-- with the actual amount and to simply copy tables
local function copyTable(tIn)
if not tIn then
return nil
end
local tOut = {}
for i, v in pairs(tIn) do
tOut[i] = v
end
return tOut
end
-- used to merge output arrays together;
-- note that it currently mutates the first input array
local function mergeArrays(a1, a2)
for i = 1, #a2 do
a1[#a1 + 1] = a2[i]
end
return a1
end
local function split(str, del)
local out = {}
local i, j = str:find(del)
if i and j then
out[1] = str:sub(1, i - 1)
out[2] = str:sub(j + 1)
else
out[1] = str
end
return out
end
local function parseWikidataURL(url)
local id
if url:match('^http[s]?://') then
id = split(url, "Q")
if id[2] then
return "Q" .. id[2]
end
end
return nil
end
local function parseDate(dateStr, precision)
precision = precision or "d"
local i, j, index, ptr
local parts = {nil, nil, nil}
if dateStr == nil then
return parts[1], parts[2], parts[3] -- year, month, day
end
-- 'T' for snak values, '/' for outputs with '/Julian' attached
i, j = dateStr:find("[T/]")
if i then
dateStr = dateStr:sub(1, i-1)
end
local from = 1
if dateStr:sub(1,1) == "-" then
-- this is a negative number, look further ahead
from = 2
end
index = 1
ptr = 1
i, j = dateStr:find("-", from)
if i then
-- year
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10) -- explicitly give base 10 to prevent error
if parts[index] == -0 then
parts[index] = tonumber("0") -- for some reason, 'parts[index] = 0' may actually store '-0', so parse from string instead
end
if precision == "y" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
i, j = dateStr:find("-", ptr)
if i then
-- month
parts[index] = tonumber(dateStr:sub(ptr, i-1), 10)
if precision == "m" then
-- we're done
return parts[1], parts[2], parts[3] -- year, month, day
end
index = index + 1
ptr = i + 1
end
end
if dateStr:sub(ptr) ~= "" then
-- day if we have month, month if we have year, or year
parts[index] = tonumber(dateStr:sub(ptr), 10)
end
return parts[1], parts[2], parts[3] -- year, month, day
end
local function datePrecedesDate(aY, aM, aD, bY, bM, bD)
if aY == nil or bY == nil then
return nil
end
aM = aM or 1
aD = aD or 1
bM = bM or 1
bD = bD or 1
if aY < bY then
return true
end
if aY > bY then
return false
end
if aM < bM then
return true
end
if aM > bM then
return false
end
if aD < bD then
return true
end
return false
end
local function getHookName(param, index)
if hookNames[param] then
return hookNames[param][index]
elseif param:len() > 2 then
return hookNames[param:sub(1, 2).."\\d"][index]
else
return nil
end
end
local function alwaysTrue()
return true
end
-- The following function parses a format string.
--
-- The example below shows how a parsed string is structured in memory.
-- Variables other than 'str' and 'child' are left out for clarity's sake.
--
-- Example:
-- "A %p B [%s[%q1]] C [%r] D"
--
-- Structure:
-- [
-- {
-- str = "A "
-- },
-- {
-- str = "%p"
-- },
-- {
-- str = " B ",
-- child =
-- [
-- {
-- str = "%s",
-- child =
-- [
-- {
-- str = "%q1"
-- }
-- ]
-- }
-- ]
-- },
-- {
-- str = " C ",
-- child =
-- [
-- {
-- str = "%r"
-- }
-- ]
-- },
-- {
-- str = " D"
-- }
-- ]
--
local function parseFormat(str)
local chr, esc, param, root, cur, prev, new
local params = {}
local function newObject(array)
local obj = {} -- new object
obj.str = ""
array[#array + 1] = obj -- array{object}
obj.parent = array
return obj
end
local function endParam()
if param > 0 then
if cur.str ~= "" then
cur.str = "%"..cur.str
cur.param = true
params[cur.str] = true
cur.parent.req[cur.str] = true
prev = cur
cur = newObject(cur.parent)
end
param = 0
end
end
root = {} -- array
root.req = {}
cur = newObject(root)
prev = nil
esc = false
param = 0
for i = 1, #str do
chr = str:sub(i,i)
if not esc then
if chr == '\\' then
endParam()
esc = true
elseif chr == '%' then
endParam()
if cur.str ~= "" then
cur = newObject(cur.parent)
end
param = 2
elseif chr == '[' then
endParam()
if prev and cur.str == "" then
table.remove(cur.parent)
cur = prev
end
cur.child = {} -- new array
cur.child.req = {}
cur.child.parent = cur
cur = newObject(cur.child)
elseif chr == ']' then
endParam()
if cur.parent.parent then
new = newObject(cur.parent.parent.parent)
if cur.str == "" then
table.remove(cur.parent)
end
cur = new
end
else
if param > 1 then
param = param - 1
elseif param == 1 then
if not chr:match('%d') then
endParam()
end
end
cur.str = cur.str .. replaceSpecialChar(chr)
end
else
cur.str = cur.str .. chr
esc = false
end
prev = nil
end
endParam()
-- make sure that at least one required parameter has been defined
if not next(root.req) then
throwError("missing-required-parameter")
end
-- make sure that the separator parameter "%s" is not amongst the required parameters
if root.req[parameters.separator] then
throwError("extra-required-parameter", parameters.separator)
end
return root, params
end
local function sortOnRank(claims)
local rankPos
local ranks = {{}, {}, {}, {}} -- preferred, normal, deprecated, (default)
local sorted = {}
for _, v in ipairs(claims) do
rankPos = rankTable[v.rank] or 4
ranks[rankPos][#ranks[rankPos] + 1] = v
end
sorted = ranks[1]
sorted = mergeArrays(sorted, ranks[2])
sorted = mergeArrays(sorted, ranks[3])
return sorted
end
local Config = {}
-- allows for recursive calls
function Config:new()
local cfg = {}
setmetatable(cfg, self)
self.__index = self
cfg.separators = {
-- single value objects wrapped in arrays so that we can pass by reference
["sep"] = {copyTable(defaultSeparators["sep"])},
["sep%s"] = {copyTable(defaultSeparators["sep%s"])},
["sep%q"] = {copyTable(defaultSeparators["sep%q"])},
["sep%r"] = {copyTable(defaultSeparators["sep%r"])},
["punc"] = {copyTable(defaultSeparators["punc"])}
}
cfg.entity = nil
cfg.entityID = nil
cfg.propertyID = nil
cfg.propertyValue = nil
cfg.qualifierIDs = {}
cfg.qualifierIDsAndValues = {}
cfg.bestRank = true
cfg.ranks = {true, true, false} -- preferred = true, normal = true, deprecated = false
cfg.foundRank = #cfg.ranks
cfg.flagBest = false
cfg.flagRank = false
cfg.periods = {true, true, true} -- future = true, current = true, former = true
cfg.flagPeriod = false
cfg.atDate = {parseDate(os.date('!%Y-%m-%d'))} -- today as {year, month, day}
cfg.mdyDate = false
cfg.singleClaim = false
cfg.sourcedOnly = false
cfg.editable = false
cfg.editAtEnd = false
cfg.inSitelinks = false
cfg.langCode = mw.language.getContentLanguage().code
cfg.langName = mw.language.fetchLanguageName(cfg.langCode, cfg.langCode)
cfg.langObj = mw.language.new(cfg.langCode)
cfg.siteID = mw.wikibase.getGlobalSiteId()
cfg.states = {}
cfg.states.qualifiersCount = 0
cfg.curState = nil
cfg.prefetchedRefs = nil
return cfg
end
local State = {}
function State:new(cfg, type)
local stt = {}
setmetatable(stt, self)
self.__index = self
stt.conf = cfg
stt.type = type
stt.results = {}
stt.parsedFormat = {}
stt.separator = {}
stt.movSeparator = {}
stt.puncMark = {}
stt.linked = false
stt.rawValue = false
stt.shortName = false
stt.anyLanguage = false
stt.unitOnly = false
stt.singleValue = false
return stt
end
-- if id == nil then item connected to current page is used
function Config:getLabel(id, raw, link, short)
local label = nil
local prefix, title= "", nil
if not id then
id = mw.wikibase.getEntityIdForCurrentPage()
if not id then
return ""
end
end
id = id:upper() -- just to be sure
if raw then
-- check if given id actually exists
if mw.wikibase.isValidEntityId(id) and mw.wikibase.entityExists(id) then
label = id
end
prefix, title = "d:Special:EntityPage/", label -- may be nil
else
-- try short name first if requested
if short then
label = p._property{aliasesP.shortName, [p.args.eid] = id} -- get short name
if label == "" then
label = nil
end
end
-- get label
if not label then
label = mw.wikibase.getLabelByLang(id, self.langCode) -- XXX: should use fallback labels?
end
end
if not label then
label = ""
elseif link then
-- build a link if requested
if not title then
if id:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(id)
elseif id:sub(1,1) == "P" then
-- properties have no sitelink, link to Wikidata instead
prefix, title = "d:Special:EntityPage/", id
end
end
label = mw.text.nowiki(label) -- escape raw label text so it cannot be wikitext markup
if title then
label = buildWikilink(prefix .. title, label)
end
end
return label
end
function Config:getEditIcon()
local value = ""
local prefix = ""
local front = " "
local back = ""
if self.entityID:sub(1,1) == "P" then
prefix = "Property:"
end
if self.editAtEnd then
front = '<span style="float:'
if self.langObj:isRTL() then
front = front .. 'left'
else
front = front .. 'right'
end
front = front .. '">'
back = '</span>'
end
value = "[[File:OOjs UI icon edit-ltr-progressive.svg|frameless|text-top|10px|alt=" .. i18n['info']['edit-on-wikidata'] .. "|link=https://www.wikidata.org/wiki/" .. prefix .. self.entityID .. "?uselang=" .. self.langCode
if self.propertyID then
value = value .. "#" .. self.propertyID
elseif self.inSitelinks then
value = value .. "#sitelinks-wikipedia"
end
value = value .. "|" .. i18n['info']['edit-on-wikidata'] .. "]]"
return front .. value .. back
end
-- used to create the final output string when it's all done, so that for references the
-- function extensionTag("ref", ...) is only called when they really ended up in the final output
function Config:concatValues(valuesArray)
local outString = ""
local j, skip
for i = 1, #valuesArray do
-- check if this is a reference
if valuesArray[i].refHash then
j = i - 1
skip = false
-- skip this reference if it is part of a continuous row of references that already contains the exact same reference
while valuesArray[j] and valuesArray[j].refHash do
if valuesArray[i].refHash == valuesArray[j].refHash then
skip = true
break
end
j = j - 1
end
if not skip then
-- add <ref> tag with the reference's hash as its name (to deduplicate references)
outString = outString .. mw.getCurrentFrame():extensionTag("ref", valuesArray[i][1], {name = valuesArray[i].refHash})
end
else
outString = outString .. valuesArray[i][1]
end
end
return outString
end
function Config:convertUnit(unit, raw, link, short, unitOnly)
local space = " "
local label = ""
local itemID
if unit == "" or unit == "1" then
return nil
end
if unitOnly then
space = ""
end
itemID = parseWikidataURL(unit)
if itemID then
if itemID == aliasesQ.percentage then
return "%"
else
label = self:getLabel(itemID, raw, link, short)
if label ~= "" then
return space .. label
end
end
end
return ""
end
function State:getValue(snak)
return self.conf:getValue(snak, self.rawValue, self.linked, self.shortName, self.anyLanguage, self.unitOnly, false, self.type:sub(1,2))
end
function Config:getValue(snak, raw, link, short, anyLang, unitOnly, noSpecial, type)
if snak.snaktype == 'value' then
local datatype = snak.datavalue.type
local subtype = snak.datatype
local datavalue = snak.datavalue.value
if datatype == 'string' then
if subtype == 'url' and link then
-- create link explicitly
if raw then
-- will render as a linked number like [1]
return "[" .. datavalue .. "]"
else
return "[" .. datavalue .. " " .. datavalue .. "]"
end
elseif subtype == 'commonsMedia' then
if link then
return buildWikilink("c:File:" .. datavalue, datavalue)
elseif not raw then
return "[[File:" .. datavalue .. "]]"
else
return datavalue
end
elseif subtype == 'geo-shape' and link then
return buildWikilink("c:" .. datavalue, datavalue)
elseif subtype == 'math' and not raw then
local attribute = nil
if (type == parameters.property or (type == parameters.qualifier and self.propertyID == aliasesP.hasPart)) and snak.property == aliasesP.definingFormula then
attribute = {qid = self.entityID}
end
return mw.getCurrentFrame():extensionTag("math", datavalue, attribute)
elseif subtype == 'external-id' and link then
local url = p._property{aliasesP.formatterURL, [p.args.eid] = snak.property} -- get formatter URL
if url ~= "" then
url = mw.ustring.gsub(url, "$1", datavalue)
return "[" .. url .. " " .. datavalue .. "]"
else
return datavalue
end
else
return datavalue
end
elseif datatype == 'monolingualtext' then
if anyLang or datavalue['language'] == self.langCode then
return datavalue['text']
else
return nil
end
elseif datatype == 'quantity' then
local value = ""
local unit
if not unitOnly then
-- get value and strip + signs from front
value = mw.ustring.gsub(datavalue['amount'], "^%+(.+)$", "%1")
if raw then
return value
end
-- replace decimal mark based on locale
value = replaceDecimalMark(value)
-- add delimiters for readability
value = i18n.addDelimiters(value)
end
unit = self:convertUnit(datavalue['unit'], raw, link, short, unitOnly)
if unit then
value = value .. unit
end
return value
elseif datatype == 'time' then
local y, m, d, p, yDiv, yRound, yFull, value, calendarID, dateStr
local yFactor = 1
local sign = 1
local prefix = ""
local suffix = ""
local mayAddCalendar = false
local calendar = ""
local precision = datavalue['precision']
if precision == 11 then
p = "d"
elseif precision == 10 then
p = "m"
else
p = "y"
yFactor = 10^(9-precision)
end
y, m, d = parseDate(datavalue['time'], p)
if y < 0 then
sign = -1
y = y * sign
end
-- if precision is tens/hundreds/thousands/millions/billions of years
if precision <= 8 then
yDiv = y / yFactor
-- if precision is tens/hundreds/thousands of years
if precision >= 6 then
mayAddCalendar = true
if precision <= 7 then
-- round centuries/millenniums up (e.g. 20th century or 3rd millennium)
yRound = math.ceil(yDiv)
if not raw then
if precision == 6 then
suffix = i18n['datetime']['suffixes']['millennium']
else
suffix = i18n['datetime']['suffixes']['century']
end
suffix = i18n.getOrdinalSuffix(yRound) .. suffix
else
-- if not verbose, take the first year of the century/millennium
-- (e.g. 1901 for 20th century or 2001 for 3rd millennium)
yRound = (yRound - 1) * yFactor + 1
end
else
-- precision == 8
-- round decades down (e.g. 2010s)
yRound = math.floor(yDiv) * yFactor
if not raw then
prefix = i18n['datetime']['prefixes']['decade-period']
suffix = i18n['datetime']['suffixes']['decade-period']
end
end
if raw and sign < 0 then
-- if BCE then compensate for "counting backwards"
-- (e.g. -2019 for 2010s BCE, -2000 for 20th century BCE or -3000 for 3rd millennium BCE)
yRound = yRound + yFactor - 1
end
else
local yReFactor, yReDiv, yReRound
-- round to nearest for tens of thousands of years or more
yRound = math.floor(yDiv + 0.5)
if yRound == 0 then
if precision <= 2 and y ~= 0 then
yReFactor = 1e6
yReDiv = y / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years only if we have a whole number of them
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
if yRound == 0 then
-- otherwise, take the unrounded (original) number of years
precision = 5
yFactor = 1
yRound = y
mayAddCalendar = true
end
end
if precision >= 1 and y ~= 0 then
yFull = yRound * yFactor
yReFactor = 1e9
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to billions of years if we're in that range
precision = 0
yFactor = yReFactor
yRound = yReRound
else
yReFactor = 1e6
yReDiv = yFull / yReFactor
yReRound = math.floor(yReDiv + 0.5)
if yReDiv == yReRound then
-- change precision to millions of years if we're in that range
precision = 3
yFactor = yReFactor
yRound = yReRound
end
end
end
if not raw then
if precision == 3 then
suffix = i18n['datetime']['suffixes']['million-years']
elseif precision == 0 then
suffix = i18n['datetime']['suffixes']['billion-years']
else
yRound = yRound * yFactor
if yRound == 1 then
suffix = i18n['datetime']['suffixes']['year']
else
suffix = i18n['datetime']['suffixes']['years']
end
end
else
yRound = yRound * yFactor
end
end
else
yRound = y
mayAddCalendar = true
end
if mayAddCalendar then
calendarID = parseWikidataURL(datavalue['calendarmodel'])
if calendarID and calendarID == aliasesQ.prolepticJulianCalendar then
if not raw then
if link then
calendar = " ("..buildWikilink(i18n['datetime']['julian-calendar'], i18n['datetime']['julian'])..")"
else
calendar = " ("..i18n['datetime']['julian']..")"
end
else
calendar = "/"..i18n['datetime']['julian']
end
end
end
if not raw then
local ce = nil
if sign < 0 then
ce = i18n['datetime']['BCE']
elseif precision <= 5 then
ce = i18n['datetime']['CE']
end
if ce then
if link then
ce = buildWikilink(i18n['datetime']['common-era'], ce)
end
suffix = suffix .. " " .. ce
end
value = tostring(yRound)
if m then
dateStr = self.langObj:formatDate("F", "1-"..m.."-1")
if d then
if self.mdyDate then
dateStr = dateStr .. " " .. d .. ","
else
dateStr = d .. " " .. dateStr
end
end
value = dateStr .. " " .. value
end
value = prefix .. value .. suffix .. calendar
else
value = padZeros(yRound * sign, 4)
if m then
value = value .. "-" .. padZeros(m, 2)
if d then
value = value .. "-" .. padZeros(d, 2)
end
end
value = value .. calendar
end
return value
elseif datatype == 'globecoordinate' then
-- logic from https://github.com/DataValues/Geo (v4.0.1)
local precision, unitsPerDegree, numDigits, strFormat, value, globe
local latitude, latConv, latValue, latLink
local longitude, lonConv, lonValue, lonLink
local latDirection, latDirectionN, latDirectionS, latDirectionEN
local lonDirection, lonDirectionE, lonDirectionW, lonDirectionEN
local degSymbol, minSymbol, secSymbol, separator
local latDegrees = nil
local latMinutes = nil
local latSeconds = nil
local lonDegrees = nil
local lonMinutes = nil
local lonSeconds = nil
local latDegSym = ""
local latMinSym = ""
local latSecSym = ""
local lonDegSym = ""
local lonMinSym = ""
local lonSecSym = ""
local latDirectionEN_N = "N"
local latDirectionEN_S = "S"
local lonDirectionEN_E = "E"
local lonDirectionEN_W = "W"
if not raw then
latDirectionN = i18n['coord']['latitude-north']
latDirectionS = i18n['coord']['latitude-south']
lonDirectionE = i18n['coord']['longitude-east']
lonDirectionW = i18n['coord']['longitude-west']
degSymbol = i18n['coord']['degrees']
minSymbol = i18n['coord']['minutes']
secSymbol = i18n['coord']['seconds']
separator = i18n['coord']['separator']
else
latDirectionN = latDirectionEN_N
latDirectionS = latDirectionEN_S
lonDirectionE = lonDirectionEN_E
lonDirectionW = lonDirectionEN_W
degSymbol = "/"
minSymbol = "/"
secSymbol = "/"
separator = "/"
end
latitude = datavalue['latitude']
longitude = datavalue['longitude']
if latitude < 0 then
latDirection = latDirectionS
latDirectionEN = latDirectionEN_S
latitude = math.abs(latitude)
else
latDirection = latDirectionN
latDirectionEN = latDirectionEN_N
end
if longitude < 0 then
lonDirection = lonDirectionW
lonDirectionEN = lonDirectionEN_W
longitude = math.abs(longitude)
else
lonDirection = lonDirectionE
lonDirectionEN = lonDirectionEN_E
end
precision = datavalue['precision']
if not precision or precision <= 0 then
precision = 1 / 3600 -- precision not set (correctly), set to arcsecond
end
-- remove insignificant detail
latitude = math.floor(latitude / precision + 0.5) * precision
longitude = math.floor(longitude / precision + 0.5) * precision
if precision >= 1 - (1 / 60) and precision < 1 then
precision = 1
elseif precision >= (1 / 60) - (1 / 3600) and precision < (1 / 60) then
precision = 1 / 60
end
if precision >= 1 then
unitsPerDegree = 1
elseif precision >= (1 / 60) then
unitsPerDegree = 60
else
unitsPerDegree = 3600
end
numDigits = math.ceil(-math.log10(unitsPerDegree * precision))
if numDigits <= 0 then
numDigits = tonumber("0") -- for some reason, 'numDigits = 0' may actually store '-0', so parse from string instead
end
strFormat = "%." .. numDigits .. "f"
if precision >= 1 then
latDegrees = strFormat:format(latitude)
lonDegrees = strFormat:format(longitude)
if not raw then
latDegSym = replaceDecimalMark(latDegrees) .. degSymbol
lonDegSym = replaceDecimalMark(lonDegrees) .. degSymbol
else
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
end
else
latConv = math.floor(latitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
lonConv = math.floor(longitude * unitsPerDegree * 10^numDigits + 0.5) / 10^numDigits
if precision >= (1 / 60) then
latMinutes = latConv
lonMinutes = lonConv
else
latSeconds = latConv
lonSeconds = lonConv
latMinutes = math.floor(latSeconds / 60)
lonMinutes = math.floor(lonSeconds / 60)
latSeconds = strFormat:format(latSeconds - (latMinutes * 60))
lonSeconds = strFormat:format(lonSeconds - (lonMinutes * 60))
if not raw then
latSecSym = replaceDecimalMark(latSeconds) .. secSymbol
lonSecSym = replaceDecimalMark(lonSeconds) .. secSymbol
else
latSecSym = latSeconds .. secSymbol
lonSecSym = lonSeconds .. secSymbol
end
end
latDegrees = math.floor(latMinutes / 60)
lonDegrees = math.floor(lonMinutes / 60)
latDegSym = latDegrees .. degSymbol
lonDegSym = lonDegrees .. degSymbol
latMinutes = latMinutes - (latDegrees * 60)
lonMinutes = lonMinutes - (lonDegrees * 60)
if precision >= (1 / 60) then
latMinutes = strFormat:format(latMinutes)
lonMinutes = strFormat:format(lonMinutes)
if not raw then
latMinSym = replaceDecimalMark(latMinutes) .. minSymbol
lonMinSym = replaceDecimalMark(lonMinutes) .. minSymbol
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
else
latMinSym = latMinutes .. minSymbol
lonMinSym = lonMinutes .. minSymbol
end
end
latValue = latDegSym .. latMinSym .. latSecSym .. latDirection
lonValue = lonDegSym .. lonMinSym .. lonSecSym .. lonDirection
value = latValue .. separator .. lonValue
if link then
globe = parseWikidataURL(datavalue['globe'])
if globe then
globe = mw.wikibase.getLabelByLang(globe, "en"):lower()
else
globe = "earth"
end
latLink = table.concat({latDegrees, latMinutes, latSeconds}, "_")
lonLink = table.concat({lonDegrees, lonMinutes, lonSeconds}, "_")
value = "[https://geohack.toolforge.org/geohack.php?language="..self.langCode.."¶ms="..latLink.."_"..latDirectionEN.."_"..lonLink.."_"..lonDirectionEN.."_globe:"..globe.." "..value.."]"
end
return value
elseif datatype == 'wikibase-entityid' then
local label
local itemID = datavalue['numeric-id']
if subtype == 'wikibase-item' then
itemID = "Q" .. itemID
elseif subtype == 'wikibase-property' then
itemID = "P" .. itemID
else
return '<strong class="error">' .. errorText('unknown-data-type', subtype) .. '</strong>'
end
label = self:getLabel(itemID, raw, link, short)
if label == "" then
label = nil
end
return label
else
return '<strong class="error">' .. errorText('unknown-data-type', datatype) .. '</strong>'
end
elseif snak.snaktype == 'somevalue' and not noSpecial then
if raw then
return " " -- single space represents 'somevalue'
else
return i18n['values']['unknown']
end
elseif snak.snaktype == 'novalue' and not noSpecial then
if raw then
return "" -- empty string represents 'novalue'
else
return i18n['values']['none']
end
else
return nil
end
end
function Config:getSingleRawQualifier(claim, qualifierID)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[qualifierID] end
if qualifiers and qualifiers[1] then
return self:getValue(qualifiers[1], true) -- raw = true
else
return nil
end
end
function Config:snakEqualsValue(snak, value)
local snakValue = self:getValue(snak, true) -- raw = true
if snakValue and snak.snaktype == 'value' and snak.datavalue.type == 'wikibase-entityid' then value = value:upper() end
return snakValue == value
end
function Config:setRank(rank)
local rankPos
if rank == p.flags.best then
self.bestRank = true
self.flagBest = true -- mark that 'best' flag was given
return
end
if rank:sub(1,9) == p.flags.preferred then
rankPos = 1
elseif rank:sub(1,6) == p.flags.normal then
rankPos = 2
elseif rank:sub(1,10) == p.flags.deprecated then
rankPos = 3
else
return
end
-- one of the rank flags was given, check if another one was given before
if not self.flagRank then
self.ranks = {false, false, false} -- no other rank flag given before, so unset ranks
self.bestRank = self.flagBest -- unsets bestRank only if 'best' flag was not given before
self.flagRank = true -- mark that a rank flag was given
end
if rank:sub(-1) == "+" then
for i = rankPos, 1, -1 do
self.ranks[i] = true
end
elseif rank:sub(-1) == "-" then
for i = rankPos, #self.ranks do
self.ranks[i] = true
end
else
self.ranks[rankPos] = true
end
end
function Config:setPeriod(period)
local periodPos
if period == p.flags.future then
periodPos = 1
elseif period == p.flags.current then
periodPos = 2
elseif period == p.flags.former then
periodPos = 3
else
return
end
-- one of the period flags was given, check if another one was given before
if not self.flagPeriod then
self.periods = {false, false, false} -- no other period flag given before, so unset periods
self.flagPeriod = true -- mark that a period flag was given
end
self.periods[periodPos] = true
end
function Config:qualifierMatches(claim, id, value)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[id] end
if qualifiers then
for _, v in pairs(qualifiers) do
if self:snakEqualsValue(v, value) then
return true
end
end
elseif value == "" then
-- if the qualifier is not present then treat it the same as the special value 'novalue'
return true
end
return false
end
function Config:rankMatches(rankPos)
if self.bestRank then
return (self.ranks[rankPos] and self.foundRank >= rankPos)
else
return self.ranks[rankPos]
end
end
function Config:timeMatches(claim)
local startTime = nil
local startTimeY = nil
local startTimeM = nil
local startTimeD = nil
local endTime = nil
local endTimeY = nil
local endTimeM = nil
local endTimeD = nil
if self.periods[1] and self.periods[2] and self.periods[3] then
-- any time
return true
end
startTime = self:getSingleRawQualifier(claim, aliasesP.startTime)
if startTime and startTime ~= "" and startTime ~= " " then
startTimeY, startTimeM, startTimeD = parseDate(startTime)
end
endTime = self:getSingleRawQualifier(claim, aliasesP.endTime)
if endTime and endTime ~= "" and endTime ~= " " then
endTimeY, endTimeM, endTimeD = parseDate(endTime)
end
if startTimeY ~= nil and endTimeY ~= nil and datePrecedesDate(endTimeY, endTimeM, endTimeD, startTimeY, startTimeM, startTimeD) then
-- invalidate end time if it precedes start time
endTimeY = nil
endTimeM = nil
endTimeD = nil
end
if self.periods[1] then
-- future
if startTimeY and datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD) then
return true
end
end
if self.periods[2] then
-- current
if (startTimeY == nil or not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], startTimeY, startTimeM, startTimeD)) and
(endTimeY == nil or datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD)) then
return true
end
end
if self.periods[3] then
-- former
if endTimeY and not datePrecedesDate(self.atDate[1], self.atDate[2], self.atDate[3], endTimeY, endTimeM, endTimeD) then
return true
end
end
return false
end
function Config:processFlag(flag)
if not flag then
return false
end
if flag == p.flags.linked then
self.curState.linked = true
return true
elseif flag == p.flags.raw then
self.curState.rawValue = true
if self.curState == self.states[parameters.reference] then
-- raw reference values end with periods and require a separator (other than none)
self.separators["sep%r"][1] = {" "}
end
return true
elseif flag == p.flags.short then
self.curState.shortName = true
return true
elseif flag == p.flags.multilanguage then
self.curState.anyLanguage = true
return true
elseif flag == p.flags.unit then
self.curState.unitOnly = true
return true
elseif flag == p.flags.mdy then
self.mdyDate = true
return true
elseif flag == p.flags.single then
self.singleClaim = true
return true
elseif flag == p.flags.sourced then
self.sourcedOnly = true
return true
elseif flag == p.flags.edit then
self.editable = true
return true
elseif flag == p.flags.editAtEnd then
self.editable = true
self.editAtEnd = true
return true
elseif flag == p.flags.best or flag:match('^'..p.flags.preferred..'[+-]?$') or flag:match('^'..p.flags.normal..'[+-]?$') or flag:match('^'..p.flags.deprecated..'[+-]?$') then
self:setRank(flag)
return true
elseif flag == p.flags.future or flag == p.flags.current or flag == p.flags.former then
self:setPeriod(flag)
return true
elseif flag == "" then
-- ignore empty flags and carry on
return true
else
return false
end
end
function Config:processFlagOrCommand(flag)
local param = ""
if not flag then
return false
end
if flag == p.claimCommands.property or flag == p.claimCommands.properties then
param = parameters.property
elseif flag == p.claimCommands.qualifier or flag == p.claimCommands.qualifiers then
self.states.qualifiersCount = self.states.qualifiersCount + 1
param = parameters.qualifier .. self.states.qualifiersCount
self.separators["sep"..param] = {copyTable(defaultSeparators["sep%q\\d"])}
elseif flag == p.claimCommands.reference or flag == p.claimCommands.references then
param = parameters.reference
else
return self:processFlag(flag)
end
if self.states[param] then
return false
end
-- create a new state for each command
self.states[param] = State:new(self, param)
-- use "%x" as the general parameter name
self.states[param].parsedFormat = parseFormat(parameters.general) -- will be overwritten for param=="%p"
-- set the separator
self.states[param].separator = self.separators["sep"..param] -- will be nil for param=="%p", which will be set separately
if flag == p.claimCommands.property or flag == p.claimCommands.qualifier or flag == p.claimCommands.reference then
self.states[param].singleValue = true
end
self.curState = self.states[param]
return true
end
function Config:processSeparators(args)
local sep
for i, v in pairs(self.separators) do
if args[i] then
sep = replaceSpecialChars(args[i])
if sep ~= "" then
self.separators[i][1] = {sep}
else
self.separators[i][1] = nil
end
end
end
end
function Config:setFormatAndSeparators(state, parsedFormat)
state.parsedFormat = parsedFormat
state.separator = self.separators["sep"]
state.movSeparator = self.separators["sep"..parameters.separator]
state.puncMark = self.separators["punc"]
end
-- determines if a claim has references by prefetching them from the claim using getReferences,
-- which applies some filtering that determines if a reference is actually returned,
-- and caches the references for later use
function State:isSourced(claim)
self.conf.prefetchedRefs = self:getReferences(claim)
return (#self.conf.prefetchedRefs > 0)
end
function State:resetCaches()
-- any prefetched references of the previous claim must not be used
self.conf.prefetchedRefs = nil
end
function State:claimMatches(claim)
local matches, rankPos
-- first of all, reset any cached values used for the previous claim
self:resetCaches()
-- if a property value was given, check if it matches the claim's property value
if self.conf.propertyValue then
matches = self.conf:snakEqualsValue(claim.mainsnak, self.conf.propertyValue)
else
matches = true
end
-- if any qualifier values were given, check if each matches one of the claim's qualifier values
for i, v in pairs(self.conf.qualifierIDsAndValues) do
matches = (matches and self.conf:qualifierMatches(claim, i, v))
end
-- check if the claim's rank and time period match
rankPos = rankTable[claim.rank] or 4
matches = (matches and self.conf:rankMatches(rankPos) and self.conf:timeMatches(claim))
-- if only claims with references must be returned, check if this one has any
if self.conf.sourcedOnly then
matches = (matches and self:isSourced(claim)) -- prefetches and caches references
end
return matches, rankPos
end
function State:out()
local result -- collection of arrays with value objects
local valuesArray -- array with value objects
local sep = nil -- value object
local out = {} -- array with value objects
local function walk(formatTable, result)
local valuesArray = {} -- array with value objects
for i, v in pairs(formatTable.req) do
if not result[i] or not result[i][1] then
-- we've got no result for a parameter that is required on this level,
-- so skip this level (and its children) by returning an empty result
return {}
end
end
for _, v in ipairs(formatTable) do
if v.param then
valuesArray = mergeArrays(valuesArray, result[v.str])
elseif v.str ~= "" then
valuesArray[#valuesArray + 1] = {v.str}
end
if v.child then
valuesArray = mergeArrays(valuesArray, walk(v.child, result))
end
end
return valuesArray
end
-- iterate through the results from back to front, so that we know when to add separators
for i = #self.results, 1, -1 do
result = self.results[i]
-- if there is already some output, then add the separators
if #out > 0 then
sep = self.separator[1] -- fixed separator
result[parameters.separator] = {self.movSeparator[1]} -- movable separator
else
sep = nil
result[parameters.separator] = {self.puncMark[1]} -- optional punctuation mark
end
valuesArray = walk(self.parsedFormat, result)
if #valuesArray > 0 then
if sep then
valuesArray[#valuesArray + 1] = sep
end
out = mergeArrays(valuesArray, out)
end
end
-- reset state before next iteration
self.results = {}
return out
end
-- level 1 hook
function State:getProperty(claim)
local value = {self:getValue(claim.mainsnak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getQualifiers(claim, param)
local qualifiers
if claim.qualifiers then qualifiers = claim.qualifiers[self.conf.qualifierIDs[param]] end
if qualifiers then
-- iterate through claim's qualifier statements to collect their values;
-- return array with multiple value objects
return self.conf.states[param]:iterate(qualifiers, {[parameters.general] = hookNames[parameters.qualifier.."\\d"][2], count = 1}) -- pass qualifier state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getQualifier(snak)
local value = {self:getValue(snak)} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getAllQualifiers(claim, param, result, hooks)
local out = {} -- array with value objects
local sep = self.conf.separators["sep"..parameters.qualifier][1] -- value object
-- iterate through the output of the separate "qualifier(s)" commands
for i = 1, self.conf.states.qualifiersCount do
-- if a hook has not been called yet, call it now
if not result[parameters.qualifier..i] then
self:callHook(parameters.qualifier..i, hooks, claim, result)
end
-- if there is output for this particular "qualifier(s)" command, then add it
if result[parameters.qualifier..i] and result[parameters.qualifier..i][1] then
-- if there is already some output, then add the separator
if #out > 0 and sep then
out[#out + 1] = sep
end
out = mergeArrays(out, result[parameters.qualifier..i])
end
end
return out
end
-- level 1 hook
function State:getReferences(claim)
if self.conf.prefetchedRefs then
-- return references that have been prefetched by isSourced
return self.conf.prefetchedRefs
end
if claim.references then
-- iterate through claim's reference statements to collect their values;
-- return array with multiple value objects
return self.conf.states[parameters.reference]:iterate(claim.references, {[parameters.general] = hookNames[parameters.reference][2], count = 1}) -- pass reference state with level 2 hook
else
return {} -- return empty array
end
end
-- level 2 hook
function State:getReference(statement)
local key, citeWeb, citeQ, label
local params = {}
local citeParams = {['web'] = {}, ['q'] = {}}
local citeMismatch = {}
local useCite = nil
local useParams = nil
local value = ""
local ref = {}
local referenceEmpty = true -- will be set to false if at least one parameter is left unremoved
local numAuthorParameters = 0
local numAuthorNameStringParameters = 0
local tempLink
local additionalRefProperties = {} -- will hold properties of the reference which are not in statement.snaks, namely backup title from "subject named as" and URL from an external ID
local wikidataPropertiesOfSource -- will contain "Wikidata property" properties of the item in stated in, if any
local version = 5 -- increment this each time the below logic is changed to avoid conflict errors
if statement.snaks then
-- don't include "imported from", which is added by a bot
if statement.snaks[aliasesP.importedFrom] then
statement.snaks[aliasesP.importedFrom] = nil
end
-- don't include "Wikimedia import URL"
if statement.snaks[aliasesP.wikimediaImportURL] then
statement.snaks[aliasesP.wikimediaImportURL] = nil
-- don't include "retrieved" if no "referenceURL" is present,
-- as "retrieved" probably belongs to "Wikimedia import URL"
if statement.snaks[aliasesP.retrieved] and not statement.snaks[aliasesP.referenceURL] then
statement.snaks[aliasesP.retrieved] = nil
end
end
-- don't include "inferred from", which is added by a bot
if statement.snaks[aliasesP.inferredFrom] then
statement.snaks[aliasesP.inferredFrom] = nil
end
-- don't include "type of reference"
if statement.snaks[aliasesP.typeOfReference] then
statement.snaks[aliasesP.typeOfReference] = nil
end
-- don't include "image" to prevent littering
if statement.snaks[aliasesP.image] then
statement.snaks[aliasesP.image] = nil
end
-- don't include "language" if it is equal to the local one
if self:getReferenceDetail(statement.snaks, aliasesP.language) == self.conf.langName then
statement.snaks[aliasesP.language] = nil
end
if statement.snaks[aliasesP.statedIn] and not statement.snaks[aliasesP.referenceURL] then
-- "stated in" was given but "reference URL" was not.
-- get "Wikidata property" properties from the item in "stated in"
-- if any of the returned properties of the external-id datatype is in statement.snaks, generate a URL from it and use the URL in the reference
-- find the "Wikidata property" properties in the item from "stated in"
wikidataPropertiesOfSource = mw.text.split(p._properties{p.flags.raw, aliasesP.wikidataProperty, [p.args.eid] = self.conf:getValue(statement.snaks[aliasesP.statedIn][1], true, false)}, ", ", true)
for i, wikidataPropertyOfSource in pairs(wikidataPropertiesOfSource) do
if statement.snaks[wikidataPropertyOfSource] and statement.snaks[wikidataPropertyOfSource][1].datatype == "external-id" then
tempLink = self.conf:getValue(statement.snaks[wikidataPropertyOfSource][1], false, true) -- not raw, linked
if mw.ustring.match(tempLink, "^%[%Z- %Z+%]$") then -- getValue returned a URL.
additionalRefProperties[aliasesP.referenceURL] = mw.ustring.gsub(tempLink, "^%[(%Z-) %Z+%]$", "%1") -- the URL is in wiki markup, so strip the square brackets and the display text
statement.snaks[wikidataPropertyOfSource] = nil
break
end
end
end
end
-- don't include "subject named as", but use it as the title when "title" is not present but a URL is
if statement.snaks[aliasesP.subjectNamedAs] then
if not statement.snaks[aliasesP.title] and (statement.snaks[aliasesP.referenceURL] or additionalRefProperties[aliasesP.referenceURL]) then
additionalRefProperties[aliasesP.title] = statement.snaks[aliasesP.subjectNamedAs][1].datavalue.value
end
statement.snaks[aliasesP.subjectNamedAs] = nil
end
-- retrieve all the parameters
for i in pairs(statement.snaks) do
label = ""
-- multiple authors may be given
if i == aliasesP.author or i == aliasesP.authorNameString then
params[i] = self:getReferenceDetails(statement.snaks, i, false, self.linked, true) -- link = true/false, anyLang = true
else
params[i] = {self:getReferenceDetail(statement.snaks, i, false, (self.linked or (i == aliasesP.statedIn)) and (statement.snaks[i][1].datatype ~= 'url'), true)} -- link = true/false, anyLang = true
end
if #params[i] == 0 then
params[i] = nil
else
referenceEmpty = false
if statement.snaks[i][1].datatype == 'external-id' then
key = "external-id"
label = self.conf:getLabel(i)
if label ~= "" then
label = label .. " "
end
else
key = i
end
-- add the parameter to each matching type of citation
for j in pairs(citeParams) do
-- do so if there was no mismatch with a previous parameter
if not citeMismatch[j] then
-- check if this parameter is not mismatching itself
if i18n['cite'][j][key] then
-- continue if an option is available in the corresponding cite template
if i18n['cite'][j][key] ~= "" then
-- handle non-author properties (and author properties ("author" and "author name string"), if they don't use the same template parameter)
if (i ~= aliasesP.author and i ~= aliasesP.authorNameString) or (i18n['cite'][j][aliasesP.author] ~= i18n['cite'][j][aliasesP.authorNameString]) then
citeParams[j][i18n['cite'][j][key]] = label .. params[i][1]
-- to avoid problems with non-author multiple parameters (if existent), the following old code is retained
for k=2, #params[i] do
citeParams[j][i18n['cite'][j][key]..k] = label .. params[i][k]
end
-- handle "author" and "author name string" specially if they use the same template parameter
elseif i == aliasesP.author or i == aliasesP.authorNameString then
if params[aliasesP.author] ~= nil then
numAuthorParameters = #params[aliasesP.author]
else
numAuthorParameters = 0
end
if params[aliasesP.authorNameString] ~= nil then
numAuthorNameStringParameters = #params[aliasesP.authorNameString]
else
numAuthorNameStringParameters = 0
end
-- execute only if both "author" and "author name string" satisfy this condition: the property is both in params and in statement.snaks or it is neither in params nor in statement.snaks
-- reason: parameters are added to params each iteration of the loop, not before the loop
if ((statement.snaks[aliasesP.author] == nil) == (numAuthorParameters == 0)) and ((statement.snaks[aliasesP.authorNameString] == nil) == (numAuthorNameStringParameters == 0)) then
for k=1, numAuthorParameters + numAuthorNameStringParameters do
if k <= numAuthorParameters then -- now handling the authors from the "author" property
citeParams[j][i18n['cite'][j][aliasesP.author]..k] = label .. params[aliasesP.author][k]
else -- now handling the authors from "author name string"
citeParams[j][i18n['cite'][j][aliasesP.authorNameString]..k] = label .. params[aliasesP.authorNameString][k - numAuthorParameters]
end
end
end
end
end
else
citeMismatch[j] = true
end
end
end
end
end
-- use additional properties
for i in pairs(additionalRefProperties) do
for j in pairs(citeParams) do
if not citeMismatch[j] and i18n["cite"][j][i] then
citeParams[j][i18n["cite"][j][i]] = additionalRefProperties[i]
else
citeMismatch[j] = true
end
end
end
-- get title of general template for citing web references
citeWeb = split(mw.wikibase.getSitelink(aliasesQ.citeWeb) or "", ":")[2] -- split off namespace from front
-- get title of template that expands stated-in references into citations
citeQ = split(mw.wikibase.getSitelink(aliasesQ.citeQ) or "", ":")[2] -- split off namespace from front
-- (1) use the general template for citing web references if there is a match and if at least both "reference URL" and "title" are present
if citeWeb and not citeMismatch['web'] and citeParams['web'][i18n['cite']['web'][aliasesP.referenceURL]] and citeParams['web'][i18n['cite']['web'][aliasesP.title]] then
useCite = citeWeb
useParams = citeParams['web']
-- (2) use the template that expands stated-in references into citations if there is a match and if at least "stated in" is present
elseif citeQ and not citeMismatch['q'] and citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] then
-- we need the raw "stated in" Q-identifier for the this template
citeParams['q'][i18n['cite']['q'][aliasesP.statedIn]] = self:getReferenceDetail(statement.snaks, aliasesP.statedIn, true) -- raw = true
useCite = citeQ
useParams = citeParams['q']
end
if useCite and useParams then
-- if this module is being substituted then build a regular template call, otherwise expand the template
if mw.isSubsting() then
for i, v in pairs(useParams) do
value = value .. "|" .. i .. "=" .. v
end
value = "{{" .. useCite .. value .. "}}"
else
value = mw.getCurrentFrame():expandTemplate{title=useCite, args=useParams}
end
-- (3) if the citation couldn't be displayed using Cite web or Cite Q, but has properties other than the removed ones, throw an error
elseif not referenceEmpty then
value = "<span style=\"color:#dd3333\">" .. errorText("malformed-reference") .. "</span>"
end
if value ~= "" then
value = {value} -- create one value object
if not self.rawValue then
-- this should become a <ref> tag, so save the reference's hash for later
value.refHash = "wikidata-" .. statement.hash .. "-v" .. (tonumber(i18n['cite']['version']) + version)
end
ref = {value} -- wrap the value object in an array
end
end
return ref
end
-- gets a detail of one particular type for a reference
function State:getReferenceDetail(snaks, dType, raw, link, anyLang)
local switchLang = anyLang
local value = nil
if not snaks[dType] then
return nil
end
-- if anyLang, first try the local language and otherwise any language
repeat
for _, v in ipairs(snaks[dType]) do
value = self.conf:getValue(v, raw, link, false, anyLang and not switchLang, false, true) -- noSpecial = true
if value then
break
end
end
if value or not anyLang then
break
end
switchLang = not switchLang
until anyLang and switchLang
return value
end
-- gets the details of one particular type for a reference
function State:getReferenceDetails(snaks, dType, raw, link, anyLang)
local values = {}
if not snaks[dType] then
return {}
end
for _, v in ipairs(snaks[dType]) do
-- if nil is returned then it will not be added to the table
values[#values + 1] = self.conf:getValue(v, raw, link, false, anyLang, false, true) -- noSpecial = true
end
return values
end
-- level 1 hook
function State:getAlias(object)
local value = object.value
local title = nil
if value and self.linked then
if self.conf.entityID:sub(1,1) == "Q" then
title = mw.wikibase.getSitelink(self.conf.entityID)
elseif self.conf.entityID:sub(1,1) == "P" then
title = "d:Property:" .. self.conf.entityID
end
if title then
value = buildWikilink(title, value)
end
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
-- level 1 hook
function State:getBadge(value)
value = self.conf:getLabel(value, self.rawValue, self.linked, self.shortName)
if value == "" then
value = nil
end
value = {value} -- create one value object
if #value > 0 then
return {value} -- wrap the value object in an array and return it
else
return {} -- return empty array if there was no value
end
end
function State:callHook(param, hooks, statement, result)
local valuesArray, refHash
-- call a parameter's hook if it has been defined and if it has not been called before
if not result[param] and hooks[param] then
valuesArray = self[hooks[param]](self, statement, param, result, hooks) -- array with value objects
-- add to the result
if #valuesArray > 0 then
result[param] = valuesArray
result.count = result.count + 1
else
result[param] = {} -- an empty array to indicate that we've tried this hook already
return true -- miss == true
end
end
return false
end
-- iterate through claims, claim's qualifiers or claim's references to collect values
function State:iterate(statements, hooks, matchHook)
matchHook = matchHook or alwaysTrue
local matches = false
local rankPos = nil
local result, gotRequired
for _, v in ipairs(statements) do
-- rankPos will be nil for non-claim statements (e.g. qualifiers, references, etc.)
matches, rankPos = matchHook(self, v)
if matches then
result = {count = 0} -- collection of arrays with value objects
local function walk(formatTable)
local miss
for i2, v2 in pairs(formatTable.req) do
-- call a hook, adding its return value to the result
miss = self:callHook(i2, hooks, v, result)
if miss then
-- we miss a required value for this level, so return false
return false
end
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point breaks the loop
return true
end
end
for _, v2 in ipairs(formatTable) do
if result.count == hooks.count then
-- we're done if all hooks have been called;
-- returning at this point prevents further childs from being processed
return true
end
if v2.child then
walk(v2.child)
end
end
return true
end
gotRequired = walk(self.parsedFormat)
-- only append the result if we got values for all required parameters on the root level
if gotRequired then
-- if we have a rankPos (only with matchHook() for complete claims), then update the foundRank
if rankPos and self.conf.foundRank > rankPos then
self.conf.foundRank = rankPos
end
-- append the result
self.results[#self.results + 1] = result
-- break if we only need a single value
if self.singleValue then
break
end
end
end
end
return self:out()
end
local function getEntityId(arg, eid, page, allowOmitPropPrefix)
local id = nil
local prop = nil
if arg then
if arg:sub(1,1) == ":" then
page = arg
eid = nil
elseif arg:sub(1,1):upper() == "Q" or arg:sub(1,9):lower() == "property:" or allowOmitPropPrefix then
eid = arg
page = nil
else
prop = arg
end
end
if eid then
if eid:sub(1,9):lower() == "property:" then
id = replaceAlias(mw.text.trim(eid:sub(10)))
if id:sub(1,1):upper() ~= "P" then
id = ""
end
else
id = replaceAlias(eid)
end
elseif page then
if page:sub(1,1) == ":" then
page = mw.text.trim(page:sub(2))
end
id = mw.wikibase.getEntityIdForTitle(page) or ""
end
if not id then
id = mw.wikibase.getEntityIdForCurrentPage() or ""
end
id = id:upper()
if not mw.wikibase.isValidEntityId(id) then
id = ""
end
return id, prop
end
local function nextArg(args)
local arg = args[args.pointer]
if arg then
args.pointer = args.pointer + 1
return mw.text.trim(arg)
else
return nil
end
end
local function claimCommand(args, funcName)
local cfg = Config:new()
cfg:processFlagOrCommand(funcName) -- process first command (== function name)
local lastArg, parsedFormat, formatParams, claims, value
local hooks = {count = 0}
-- set the date if given;
-- must come BEFORE processing the flags
if args[p.args.date] then
cfg.atDate = {parseDate(args[p.args.date])}
cfg.periods = {false, true, false} -- change default time constraint to 'current'
end
-- process flags and commands
repeat
lastArg = nextArg(args)
until not cfg:processFlagOrCommand(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID, cfg.propertyID = getEntityId(lastArg, args[p.args.eid], args[p.args.page])
if cfg.entityID == "" then
return "" -- we cannot continue without a valid entity ID
end
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if not cfg.propertyID then
cfg.propertyID = nextArg(args)
end
cfg.propertyID = replaceAlias(cfg.propertyID)
if not cfg.entity or not cfg.propertyID then
return "" -- we cannot continue without an entity or a property ID
end
cfg.propertyID = cfg.propertyID:upper()
if not cfg.entity.claims or not cfg.entity.claims[cfg.propertyID] then
return "" -- there is no use to continue without any claims
end
claims = cfg.entity.claims[cfg.propertyID]
if cfg.states.qualifiersCount > 0 then
-- do further processing if "qualifier(s)" command was given
if #args - args.pointer + 1 > cfg.states.qualifiersCount then
-- claim ID or literal value has been given
cfg.propertyValue = nextArg(args)
end
for i = 1, cfg.states.qualifiersCount do
-- check if given qualifier ID is an alias and add it
cfg.qualifierIDs[parameters.qualifier..i] = replaceAlias(nextArg(args) or ""):upper()
end
elseif cfg.states[parameters.reference] then
-- do further processing if "reference(s)" command was given
cfg.propertyValue = nextArg(args)
end
-- check for special property value 'somevalue' or 'novalue'
if cfg.propertyValue then
cfg.propertyValue = replaceSpecialChars(cfg.propertyValue)
if cfg.propertyValue ~= "" and mw.text.trim(cfg.propertyValue) == "" then
cfg.propertyValue = " " -- single space represents 'somevalue', whereas empty string represents 'novalue'
else
cfg.propertyValue = mw.text.trim(cfg.propertyValue)
end
end
-- parse the desired format, or choose an appropriate format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
elseif cfg.states.qualifiersCount > 0 then -- "qualifier(s)" command given
if cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.propertyWithQualifier)
else
parsedFormat, formatParams = parseFormat(formats.qualifier)
end
elseif cfg.states[parameters.property] then -- "propert(y|ies)" command given
parsedFormat, formatParams = parseFormat(formats.property)
else -- "reference(s)" command given
parsedFormat, formatParams = parseFormat(formats.reference)
end
-- if a "qualifier(s)" command and no "propert(y|ies)" command has been given, make the movable separator a semicolon
if cfg.states.qualifiersCount > 0 and not cfg.states[parameters.property] then
cfg.separators["sep"..parameters.separator][1] = {";"}
end
-- if only "reference(s)" has been given, set the default separator to none (except when raw)
if cfg.states[parameters.reference] and not cfg.states[parameters.property] and cfg.states.qualifiersCount == 0
and not cfg.states[parameters.reference].rawValue then
cfg.separators["sep"][1] = nil
end
-- if exactly one "qualifier(s)" command has been given, make "sep%q" point to "sep%q1" to make them equivalent
if cfg.states.qualifiersCount == 1 then
cfg.separators["sep"..parameters.qualifier] = cfg.separators["sep"..parameters.qualifier.."1"]
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hooks that should be called (getProperty, getQualifiers, getReferences);
-- only define a hook if both its command ("propert(y|ies)", "reference(s)", "qualifier(s)") and its parameter ("%p", "%r", "%q1", "%q2", "%q3") have been given
for i, v in pairs(cfg.states) do
-- e.g. 'formatParams["%q1"] or formatParams["%q"]' to define hook even if "%q1" was not defined to be able to build a complete value for "%q"
if formatParams[i] or formatParams[i:sub(1, 2)] then
hooks[i] = getHookName(i, 1)
hooks.count = hooks.count + 1
end
end
-- the "%q" parameter is not attached to a state, but is a collection of the results of multiple states (attached to "%q1", "%q2", "%q3", ...);
-- so if this parameter is given then this hook must be defined separately, but only if at least one "qualifier(s)" command has been given
if formatParams[parameters.qualifier] and cfg.states.qualifiersCount > 0 then
hooks[parameters.qualifier] = getHookName(parameters.qualifier, 1)
hooks.count = hooks.count + 1
end
-- create a state for "properties" if it doesn't exist yet, which will be used as a base configuration for each claim iteration;
-- must come AFTER defining the hooks
if not cfg.states[parameters.property] then
cfg.states[parameters.property] = State:new(cfg, parameters.property)
-- if the "single" flag has been given then this state should be equivalent to "property" (singular)
if cfg.singleClaim then
cfg.states[parameters.property].singleValue = true
end
end
-- if the "sourced" flag has been given then create a state for "reference" if it doesn't exist yet, using default values,
-- which must exist in order to be able to determine if a claim has any references;
-- must come AFTER defining the hooks
if cfg.sourcedOnly and not cfg.states[parameters.reference] then
cfg:processFlagOrCommand(p.claimCommands.reference) -- use singular "reference" to minimize overhead
end
-- set the parsed format and the separators (and optional punctuation mark);
-- must come AFTER creating the additonal states
cfg:setFormatAndSeparators(cfg.states[parameters.property], parsedFormat)
-- process qualifier matching values, analogous to cfg.propertyValue
for i, v in pairs(args) do
i = tostring(i)
if i:match('^[Pp]%d+$') or aliasesP[i] then
v = replaceSpecialChars(v)
-- check for special qualifier value 'somevalue'
if v ~= "" and mw.text.trim(v) == "" then
v = " " -- single space represents 'somevalue'
end
cfg.qualifierIDsAndValues[replaceAlias(i):upper()] = v
end
end
-- first sort the claims on rank to pre-define the order of output (preferred first, then normal, then deprecated)
claims = sortOnRank(claims)
-- then iterate through the claims to collect values
value = cfg:concatValues(cfg.states[parameters.property]:iterate(claims, hooks, State.claimMatches)) -- pass property state with level 1 hooks and matchHook
-- if desired, add a clickable icon that may be used to edit the returned values on Wikidata
if cfg.editable and value ~= "" then
value = value .. cfg:getEditIcon()
end
return value
end
local function generalCommand(args, funcName)
local cfg = Config:new()
cfg.curState = State:new(cfg)
local lastArg
local value = nil
repeat
lastArg = nextArg(args)
until not cfg:processFlag(lastArg)
-- get the entity ID from either the positional argument, the eid argument or the page argument
cfg.entityID = getEntityId(lastArg, args[p.args.eid], args[p.args.page], true)
if cfg.entityID == "" or not mw.wikibase.entityExists(cfg.entityID) then
return "" -- we cannot continue without an entity
end
-- serve according to the given command
if funcName == p.generalCommands.label then
value = cfg:getLabel(cfg.entityID, cfg.curState.rawValue, cfg.curState.linked, cfg.curState.shortName)
elseif funcName == p.generalCommands.title then
cfg.inSitelinks = true
if cfg.entityID:sub(1,1) == "Q" then
value = mw.wikibase.getSitelink(cfg.entityID)
end
if cfg.curState.linked and value then
value = buildWikilink(value)
end
elseif funcName == p.generalCommands.description then
value = mw.wikibase.getDescription(cfg.entityID)
else
local parsedFormat, formatParams
local hooks = {count = 0}
cfg.entity = mw.wikibase.getEntity(cfg.entityID)
if funcName == p.generalCommands.alias or funcName == p.generalCommands.badge then
cfg.curState.singleValue = true
end
if funcName == p.generalCommands.alias or funcName == p.generalCommands.aliases then
if not cfg.entity.aliases or not cfg.entity.aliases[cfg.langCode] then
return "" -- there is no use to continue without any aliasses
end
local aliases = cfg.entity.aliases[cfg.langCode]
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.alias)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getAlias);
-- only define the hook if the parameter ("%a") has been given
if formatParams[parameters.alias] then
hooks[parameters.alias] = getHookName(parameters.alias, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(aliases, hooks))
elseif funcName == p.generalCommands.badge or funcName == p.generalCommands.badges then
if not cfg.entity.sitelinks or not cfg.entity.sitelinks[cfg.siteID] or not cfg.entity.sitelinks[cfg.siteID].badges then
return "" -- there is no use to continue without any badges
end
local badges = cfg.entity.sitelinks[cfg.siteID].badges
cfg.inSitelinks = true
-- parse the desired format, or parse the default aliases format
if args["format"] then
parsedFormat, formatParams = parseFormat(args["format"])
else
parsedFormat, formatParams = parseFormat(formats.badge)
end
-- process overridden separator values;
-- must come AFTER tweaking the default separators
cfg:processSeparators(args)
-- define the hook that should be called (getBadge);
-- only define the hook if the parameter ("%b") has been given
if formatParams[parameters.badge] then
hooks[parameters.badge] = getHookName(parameters.badge, 1)
hooks.count = hooks.count + 1
end
-- set the parsed format and the separators (and optional punctuation mark)
cfg:setFormatAndSeparators(cfg.curState, parsedFormat)
-- iterate to collect values
value = cfg:concatValues(cfg.curState:iterate(badges, hooks))
end
end
value = value or ""
if cfg.editable and value ~= "" then
-- if desired, add a clickable icon that may be used to edit the returned value on Wikidata
value = value .. cfg:getEditIcon()
end
return value
end
-- modules that include this module should call the functions with an underscore prepended, e.g.: p._property(args)
local function establishCommands(commandList, commandFunc)
for _, commandName in pairs(commandList) do
local function wikitextWrapper(frame)
local args = copyTable(frame.args)
args.pointer = 1
loadI18n(aliasesP, frame)
return commandFunc(args, commandName)
end
p[commandName] = wikitextWrapper
local function luaWrapper(args)
args = copyTable(args)
args.pointer = 1
loadI18n(aliasesP)
return commandFunc(args, commandName)
end
p["_" .. commandName] = luaWrapper
end
end
establishCommands(p.claimCommands, claimCommand)
establishCommands(p.generalCommands, generalCommand)
-- main function that is supposed to be used by wrapper templates
function p.main(frame)
if not mw.wikibase then return nil end
local f, args
loadI18n(aliasesP, frame)
-- get the parent frame to take the arguments that were passed to the wrapper template
frame = frame:getParent() or frame
if not frame.args[1] then
throwError("no-function-specified")
end
f = mw.text.trim(frame.args[1])
if f == "main" then
throwError("main-called-twice")
end
assert(p["_"..f], errorText('no-such-function', f))
-- copy arguments from immutable to mutable table
args = copyTable(frame.args)
-- remove the function name from the list
table.remove(args, 1)
return p["_"..f](args)
end
return p
279887e54847ae34d319ff4c305ab2c65fdbc474
Template:Tt
10
1735
3282
3281
2023-11-12T13:11:06Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Tt]]
wikitext
text/x-wiki
#REDIRECT [[Template:Mono]]
a7a3647ba0499a71e399c9dd87e77998307f51bf
Template:Cot
10
1736
3284
3283
2023-11-12T13:11:13Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Cot]]
wikitext
text/x-wiki
#REDIRECT [[Template:Collapse top]]
{{Redirect category shell|
{{R from template shortcut}}
}}
708f8bf79aefbfe8ee62f4fa68561059be0372d2
Module:Transclusion count/data/I
828
70
3286
3285
2023-11-12T13:11:19Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Transclusion_count/data/I]]
Scribunto
text/plain
return {
["IAST"] = 6400,
["IBDB_name"] = 9200,
["ICD10"] = 4700,
["ICD9"] = 4400,
["ICS"] = 2900,
["IDN"] = 3400,
["IMDb_episode"] = 10000,
["IMDb_episodes"] = 2700,
["IMDb_name"] = 154000,
["IMDb_title"] = 191000,
["IMO_Number"] = 4100,
["IMSLP"] = 8300,
["INA"] = 2200,
["IND"] = 7700,
["INR"] = 6600,
["INRConvert"] = 5700,
["INRConvert/CurrentRate"] = 5600,
["INRConvert/USD"] = 5600,
["INRConvert/out"] = 5600,
["IOC_profile"] = 5000,
["IP"] = 2600,
["IPA"] = 143000,
["IPA-de"] = 8200,
["IPA-es"] = 7900,
["IPA-fr"] = 44000,
["IPA-it"] = 5900,
["IPA-nl"] = 3900,
["IPA-pl"] = 4100,
["IPA-pt"] = 3300,
["IPA-sl"] = 6900,
["IPA-th"] = 3000,
["IPA_audio_link"] = 3500,
["IPA_link"] = 3500,
["IPAc-cmn"] = 2300,
["IPAc-en"] = 49000,
["IPAc-pl"] = 51000,
["IPC_athlete"] = 2800,
["IPSummary"] = 78000,
["IP_summary"] = 79000,
["IPtalk"] = 18000,
["IPuser"] = 7100,
["IPvandal"] = 2700,
["IRC"] = 7300,
["IRI"] = 2300,
["IRL"] = 5500,
["IRN"] = 3700,
["ISBN"] = 462000,
["ISBN?"] = 2100,
["ISBNT"] = 39000,
["ISBN_missing"] = 2600,
["ISFDB_name"] = 4100,
["ISFDB_title"] = 4600,
["ISL"] = 2100,
["ISO_15924/script-example-character"] = 2800,
["ISO_15924/wp-article"] = 2800,
["ISO_15924/wp-article/format"] = 2800,
["ISO_15924/wp-article/label"] = 2700,
["ISO_3166_code"] = 494000,
["ISO_3166_name"] = 16000,
["ISO_639_name"] = 8200,
["ISP"] = 5300,
["ISR"] = 4900,
["ISSN"] = 12000,
["ISSN_link"] = 30000,
["ISTAT"] = 8100,
["ISU_figure_skater"] = 2500,
["ITA"] = 17000,
["ITF"] = 6300,
["ITF_profile"] = 9100,
["ITIS"] = 4400,
["ITN_talk"] = 10000,
["ITN_talk/date"] = 10000,
["IUCN_banner"] = 15000,
["I_sup"] = 4600,
["Ice_hockey"] = 19000,
["Ice_hockey_stats"] = 19000,
["Icehockeystats"] = 12000,
["Icon"] = 582000,
["If"] = 277000,
["If_all"] = 6500,
["If_between"] = 3800,
["If_both"] = 129000,
["If_empty"] = 3680000,
["If_first_display_both"] = 73000,
["If_in_page"] = 10000,
["If_last_display_both"] = 30000,
["If_number"] = 2300,
["If_preview"] = 58000,
["If_then_show"] = 294000,
["Ifempty"] = 4000,
["Ifeq"] = 17000,
["Iferror_then_show"] = 3300,
["Ifexist_not_redirect"] = 1310000,
["Ifnotempty"] = 15000,
["Ifnumber"] = 36000,
["Ifsubst"] = 453000,
["Ih"] = 7600,
["Ill"] = 121000,
["Illm"] = 6700,
["Image_frame"] = 4900,
["Image_label"] = 4500,
["Image_label_begin"] = 3800,
["Image_label_end"] = 3800,
["Image_label_small"] = 2600,
["Image_needed"] = 4500,
["Image_other"] = 272000,
["Image_requested"] = 168000,
["Image_requested/Category_helper"] = 161000,
["Imbox"] = 922000,
["Imdb_name"] = 5400,
["Imdb_title"] = 4000,
["Import_style"] = 11000,
["Import_style/inputbox.css"] = 11000,
["Importance"] = 5660000,
["Importance/colour"] = 5670000,
["Importance_mask"] = 10400000,
["Improve_categories"] = 7400,
["Improve_documentation"] = 2600,
["In_class"] = 5700,
["In_lang"] = 358000,
["In_progress"] = 3300,
["In_string"] = 77000,
["In_title"] = 20000,
["Inactive_userpage_blanked"] = 4900,
["Include-USGov"] = 29000,
["Incomplete_list"] = 23000,
["Inconclusive"] = 2100,
["Increase"] = 44000,
["Incumbent_pope"] = 4300,
["Indent"] = 4400,
["IndexFungorum"] = 2200,
["Indian_English"] = 4300,
["Indian_Rupee"] = 10000,
["Indian_railway_code"] = 3200,
["Inflation"] = 21000,
["Inflation-fn"] = 5400,
["Inflation-year"] = 4500,
["Inflation/IN/startyear"] = 5600,
["Inflation/UK"] = 4400,
["Inflation/UK/dataset"] = 4400,
["Inflation/UK/startyear"] = 4400,
["Inflation/US"] = 12000,
["Inflation/US-GDP"] = 2400,
["Inflation/US-GDP/dataset"] = 2400,
["Inflation/US-GDP/startyear"] = 2400,
["Inflation/US/dataset"] = 12000,
["Inflation/US/startyear"] = 12000,
["Inflation/fn"] = 6300,
["Inflation/year"] = 26000,
["Info"] = 7200,
["Infobox"] = 3240000,
["Infobox/Columns"] = 2400,
["Infobox/mobileviewfix.css"] = 148000,
["Infobox3cols"] = 17000,
["Infobox_AFL_biography"] = 14000,
["Infobox_Aircraft_Begin"] = 5300,
["Infobox_Aircraft_Type"] = 4700,
["Infobox_Athletics_Championships"] = 2700,
["Infobox_Australian_place"] = 15000,
["Infobox_CFL_biography"] = 2200,
["Infobox_COA_wide"] = 3200,
["Infobox_Canada_electoral_district"] = 2500,
["Infobox_Canadian_Football_League_biography"] = 5700,
["Infobox_Canadian_Football_League_biography/position"] = 5700,
["Infobox_Chinese"] = 20000,
["Infobox_Chinese/Chinese"] = 2700,
["Infobox_Chinese/Footer"] = 8700,
["Infobox_Chinese/Header"] = 8700,
["Infobox_Chinese/Korean"] = 17000,
["Infobox_Christian_leader"] = 18000,
["Infobox_French_commune"] = 38000,
["Infobox_GAA_player"] = 2700,
["Infobox_Gaelic_games_player"] = 5000,
["Infobox_German_location"] = 13000,
["Infobox_German_place"] = 14000,
["Infobox_Grand_Prix_race_report"] = 2000,
["Infobox_Greece_place"] = 2900,
["Infobox_Greek_Dimos"] = 2800,
["Infobox_Hindu_temple"] = 2400,
["Infobox_Indian_constituency"] = 4700,
["Infobox_Indian_constituency/defaultdata"] = 4700,
["Infobox_Italian_comune"] = 8100,
["Infobox_Korean_name"] = 15000,
["Infobox_Korean_name/categories"] = 15000,
["Infobox_NASCAR_race_report"] = 2200,
["Infobox_NCAA_team_season"] = 17000,
["Infobox_NFL_biography"] = 28000,
["Infobox_NFL_player"] = 7600,
["Infobox_NFL_team_season"] = 3900,
["Infobox_NRHP"] = 72000,
["Infobox_NRHP/conv"] = 18000,
["Infobox_NRHP/locmapin2region"] = 66000,
["Infobox_Officeholder"] = 4700,
["Infobox_Olympic_event"] = 7300,
["Infobox_Olympic_event/games_text"] = 7300,
["Infobox_Pan_American_Games_event"] = 2200,
["Infobox_Paralympic_event"] = 2600,
["Infobox_Paralympic_event/games_text"] = 2600,
["Infobox_Politician"] = 2200,
["Infobox_Romanian_subdivision"] = 3200,
["Infobox_Russian_district"] = 2000,
["Infobox_Russian_inhabited_locality"] = 4500,
["Infobox_SCOTUS_case"] = 3700,
["Infobox_Site_of_Special_Scientific_Interest"] = 2000,
["Infobox_Swiss_town"] = 2800,
["Infobox_Switzerland_municipality"] = 2900,
["Infobox_Turkey_place"] = 19000,
["Infobox_U.S._county"] = 3000,
["Infobox_U.S._county/district"] = 3000,
["Infobox_UK_constituency"] = 2100,
["Infobox_UK_constituency/year"] = 2100,
["Infobox_UK_legislation"] = 3400,
["Infobox_UK_place"] = 26000,
["Infobox_UK_place/NoDialCode"] = 8100,
["Infobox_UK_place/NoPostCode"] = 3200,
["Infobox_UK_place/area"] = 2400,
["Infobox_UK_place/dist"] = 2500,
["Infobox_UK_place/local"] = 26000,
["Infobox_UK_place/styles.css"] = 26000,
["Infobox_UN_resolution"] = 2300,
["Infobox_US_Supreme_Court_case"] = 3900,
["Infobox_US_Supreme_Court_case/courts"] = 3800,
["Infobox_Wikipedia_user"] = 9800,
["Infobox_YouTube_personality"] = 2700,
["Infobox_YouTube_personality/styles.css"] = 2700,
["Infobox_academic"] = 14000,
["Infobox_aircraft_begin"] = 14000,
["Infobox_aircraft_occurrence"] = 2300,
["Infobox_aircraft_type"] = 13000,
["Infobox_airline"] = 4600,
["Infobox_airport"] = 15000,
["Infobox_airport/datatable"] = 15000,
["Infobox_album"] = 162000,
["Infobox_album/color"] = 193000,
["Infobox_album/link"] = 162000,
["Infobox_anatomy"] = 4500,
["Infobox_ancient_site"] = 5400,
["Infobox_animanga/Footer"] = 6900,
["Infobox_animanga/Header"] = 6900,
["Infobox_animanga/Print"] = 5500,
["Infobox_animanga/Video"] = 4700,
["Infobox_architect"] = 3700,
["Infobox_artist"] = 29000,
["Infobox_artist_discography"] = 6000,
["Infobox_artwork"] = 11000,
["Infobox_athlete"] = 2800,
["Infobox_automobile"] = 8500,
["Infobox_award"] = 13000,
["Infobox_badminton_player"] = 3200,
["Infobox_baseball_biography"] = 28000,
["Infobox_baseball_biography/style"] = 28000,
["Infobox_baseball_biography/styles.css"] = 28000,
["Infobox_baseball_team_season"] = 3200,
["Infobox_baseball_team_season/leagueseason"] = 3200,
["Infobox_baseball_team_season/season"] = 3200,
["Infobox_baseball_team_season/styles.css"] = 3200,
["Infobox_basketball_biography"] = 21000,
["Infobox_basketball_biography/style"] = 21000,
["Infobox_basketball_club"] = 3000,
["Infobox_beauty_pageant"] = 2400,
["Infobox_bilateral_relations"] = 4400,
["Infobox_body_of_water"] = 18000,
["Infobox_book"] = 52000,
["Infobox_boxer"] = 5700,
["Infobox_bridge"] = 6000,
["Infobox_building"] = 28000,
["Infobox_character"] = 7500,
["Infobox_chess_biography"] = 4000,
["Infobox_chess_player"] = 3200,
["Infobox_church"] = 15000,
["Infobox_church/denomination"] = 15000,
["Infobox_church/font_color"] = 15000,
["Infobox_civil_conflict"] = 2400,
["Infobox_civilian_attack"] = 5600,
["Infobox_college_coach"] = 12000,
["Infobox_college_football_game"] = 2100,
["Infobox_college_football_player"] = 2100,
["Infobox_college_sports_team_season"] = 40000,
["Infobox_college_sports_team_season/link"] = 40000,
["Infobox_college_sports_team_season/name"] = 40000,
["Infobox_college_sports_team_season/succession"] = 40000,
["Infobox_college_sports_team_season/team"] = 40000,
["Infobox_comic_book_title"] = 3000,
["Infobox_comics_character"] = 3500,
["Infobox_comics_creator"] = 3500,
["Infobox_comics_creator/styles.css"] = 3500,
["Infobox_company"] = 84000,
["Infobox_computing_device"] = 2400,
["Infobox_concert"] = 3300,
["Infobox_constituency"] = 5500,
["Infobox_country"] = 6500,
["Infobox_country/formernext"] = 6000,
["Infobox_country/imagetable"] = 5200,
["Infobox_country/multirow"] = 8300,
["Infobox_country/status_text"] = 2800,
["Infobox_country/styles.css"] = 6500,
["Infobox_country_at_games"] = 15000,
["Infobox_country_at_games/core"] = 15000,
["Infobox_country_at_games/see_also"] = 12000,
["Infobox_court_case"] = 4700,
["Infobox_court_case/images"] = 2400,
["Infobox_cricket_tournament"] = 2400,
["Infobox_cricketer"] = 32000,
["Infobox_cricketer/career"] = 32000,
["Infobox_cricketer/national_side"] = 7500,
["Infobox_criminal"] = 6400,
["Infobox_curler"] = 2600,
["Infobox_cycling_race_report"] = 4500,
["Infobox_cyclist"] = 16000,
["Infobox_dam"] = 5700,
["Infobox_deity"] = 2000,
["Infobox_deity/color"] = 2000,
["Infobox_designation_list"] = 20000,
["Infobox_designation_list/entry"] = 17000,
["Infobox_dim"] = 7000,
["Infobox_dim/core"] = 7000,
["Infobox_diocese"] = 3800,
["Infobox_drug"] = 9800,
["Infobox_drug/chemical_formula"] = 9800,
["Infobox_drug/data_page_link"] = 9800,
["Infobox_drug/formatATC"] = 9700,
["Infobox_drug/formatCASnumber"] = 9800,
["Infobox_drug/formatChEBI"] = 9800,
["Infobox_drug/formatChEMBL"] = 9800,
["Infobox_drug/formatChemDBNIAID"] = 9800,
["Infobox_drug/formatChemSpider"] = 9800,
["Infobox_drug/formatCompTox"] = 9800,
["Infobox_drug/formatDrugBank"] = 9800,
["Infobox_drug/formatIUPHARBPS"] = 9800,
["Infobox_drug/formatJmol"] = 9800,
["Infobox_drug/formatKEGG"] = 9800,
["Infobox_drug/formatPDBligand"] = 9200,
["Infobox_drug/formatPubChemCID"] = 9800,
["Infobox_drug/formatPubChemSID"] = 9800,
["Infobox_drug/formatUNII"] = 9800,
["Infobox_drug/legal_status"] = 10000,
["Infobox_drug/licence"] = 9900,
["Infobox_drug/maintenance_categories"] = 9800,
["Infobox_drug/non-ref-space"] = 4300,
["Infobox_drug/pregnancy_category"] = 9900,
["Infobox_drug/title"] = 9800,
["Infobox_election"] = 30000,
["Infobox_election/row"] = 30000,
["Infobox_election/shortname"] = 28000,
["Infobox_enzyme"] = 5100,
["Infobox_ethnic_group"] = 7300,
["Infobox_event"] = 5500,
["Infobox_family"] = 2200,
["Infobox_figure_skater"] = 4200,
["Infobox_film"] = 157000,
["Infobox_film/short_description"] = 153000,
["Infobox_film_awards"] = 2700,
["Infobox_film_awards/link"] = 2600,
["Infobox_film_awards/style"] = 2700,
["Infobox_food"] = 6900,
["Infobox_football_biography"] = 207000,
["Infobox_football_club"] = 28000,
["Infobox_football_club_season"] = 20000,
["Infobox_football_league"] = 2600,
["Infobox_football_league_season"] = 20000,
["Infobox_football_match"] = 5900,
["Infobox_football_tournament_season"] = 8100,
["Infobox_former_subdivision"] = 3300,
["Infobox_former_subdivision/styles.css"] = 3300,
["Infobox_galaxy"] = 2100,
["Infobox_game"] = 2600,
["Infobox_game_score"] = 3400,
["Infobox_gene"] = 13000,
["Infobox_given_name"] = 4100,
["Infobox_golfer"] = 4400,
["Infobox_golfer/highest_ranking"] = 4400,
["Infobox_government_agency"] = 10000,
["Infobox_government_cabinet"] = 2600,
["Infobox_gridiron_football_person"] = 2400,
["Infobox_gridiron_football_person/position"] = 5700,
["Infobox_gymnast"] = 3500,
["Infobox_handball_biography"] = 4900,
["Infobox_historic_site"] = 12000,
["Infobox_horseraces"] = 2600,
["Infobox_hospital"] = 6300,
["Infobox_hospital/care_system"] = 6300,
["Infobox_hospital/lists"] = 6300,
["Infobox_ice_hockey_biography"] = 20000,
["Infobox_ice_hockey_player"] = 19000,
["Infobox_ice_hockey_team"] = 3000,
["Infobox_ice_hockey_team_season"] = 2000,
["Infobox_international_football_competition"] = 5800,
["Infobox_islands"] = 8900,
["Infobox_islands/area"] = 9300,
["Infobox_islands/density"] = 9300,
["Infobox_islands/length"] = 8900,
["Infobox_islands/styles.css"] = 8900,
["Infobox_journal"] = 9800,
["Infobox_journal/Abbreviation_search"] = 9600,
["Infobox_journal/Bluebook_check"] = 9400,
["Infobox_journal/Former_check"] = 9400,
["Infobox_journal/ISO_4_check"] = 9400,
["Infobox_journal/ISSN-eISSN"] = 9500,
["Infobox_journal/Indexing_search"] = 9500,
["Infobox_journal/MathSciNet_check"] = 9400,
["Infobox_journal/NLM_check"] = 9400,
["Infobox_journal/frequency"] = 8600,
["Infobox_lake"] = 4300,
["Infobox_language"] = 9600,
["Infobox_language/family-color"] = 11000,
["Infobox_language/genetic"] = 6600,
["Infobox_language/linguistlist"] = 9600,
["Infobox_language/ref"] = 7100,
["Infobox_legislature"] = 3700,
["Infobox_library"] = 2200,
["Infobox_lighthouse"] = 2600,
["Infobox_lighthouse/light"] = 2600,
["Infobox_locomotive"] = 4900,
["Infobox_magazine"] = 7600,
["Infobox_manner_of_address"] = 3300,
["Infobox_mapframe"] = 81000,
["Infobox_martial_artist"] = 5700,
["Infobox_martial_artist/record"] = 5700,
["Infobox_medal_templates"] = 425000,
["Infobox_medical_condition"] = 10000,
["Infobox_medical_condition_(new)"] = 8200,
["Infobox_medical_details"] = 2100,
["Infobox_military_conflict"] = 22000,
["Infobox_military_installation"] = 9800,
["Infobox_military_person"] = 45000,
["Infobox_military_unit"] = 26000,
["Infobox_mine"] = 2100,
["Infobox_model"] = 2300,
["Infobox_monument"] = 2100,
["Infobox_mountain"] = 28000,
["Infobox_multi-sport_competition_event"] = 2400,
["Infobox_museum"] = 11000,
["Infobox_musical_artist"] = 122000,
["Infobox_musical_artist/color"] = 122000,
["Infobox_musical_artist/hCard_class"] = 314000,
["Infobox_musical_composition"] = 2900,
["Infobox_name"] = 7500,
["Infobox_name_module"] = 7100,
["Infobox_newspaper"] = 9700,
["Infobox_nobility"] = 2400,
["Infobox_noble"] = 7400,
["Infobox_officeholder"] = 221000,
["Infobox_officeholder/office"] = 226000,
["Infobox_official_post"] = 8100,
["Infobox_organization"] = 36000,
["Infobox_pageant_titleholder"] = 3000,
["Infobox_park"] = 7500,
["Infobox_person"] = 477000,
["Infobox_person/Wikidata"] = 4600,
["Infobox_person/height"] = 103000,
["Infobox_person/length"] = 7000,
["Infobox_person/weight"] = 67000,
["Infobox_philosopher"] = 3500,
["Infobox_planet"] = 4700,
["Infobox_play"] = 3900,
["Infobox_political_party"] = 14000,
["Infobox_power_station"] = 3100,
["Infobox_prepared_food"] = 3100,
["Infobox_professional_wrestler"] = 4300,
["Infobox_professional_wrestling_event"] = 2700,
["Infobox_protected_area"] = 14000,
["Infobox_protein_family"] = 2100,
["Infobox_publisher"] = 2400,
["Infobox_racehorse"] = 5500,
["Infobox_racing_driver"] = 3900,
["Infobox_racing_driver_series_section"] = 2100,
["Infobox_radio_station"] = 22000,
["Infobox_rail"] = 2900,
["Infobox_rail_line"] = 7300,
["Infobox_rail_service"] = 3000,
["Infobox_rail_service/doc"] = 2900,
["Infobox_reality_competition_season"] = 3500,
["Infobox_record_label"] = 4000,
["Infobox_recurring_event"] = 6500,
["Infobox_religious_biography"] = 5300,
["Infobox_religious_building"] = 12000,
["Infobox_religious_building/color"] = 17000,
["Infobox_restaurant"] = 3000,
["Infobox_river"] = 30000,
["Infobox_river/calcunit"] = 30000,
["Infobox_river/discharge"] = 30000,
["Infobox_river/row-style"] = 30000,
["Infobox_river/source"] = 30000,
["Infobox_road"] = 24000,
["Infobox_road/meta/mask/category"] = 24000,
["Infobox_road/meta/mask/country"] = 24000,
["Infobox_road/styles.css"] = 25000,
["Infobox_road_small"] = 2300,
["Infobox_rockunit"] = 6500,
["Infobox_royalty"] = 22000,
["Infobox_royalty/short_description"] = 12000,
["Infobox_rugby_biography"] = 16000,
["Infobox_rugby_biography/correct_date"] = 16000,
["Infobox_rugby_biography/depcheck"] = 16000,
["Infobox_rugby_league_biography"] = 10000,
["Infobox_rugby_league_biography/PLAYER"] = 9900,
["Infobox_rugby_team"] = 2600,
["Infobox_sailboat_specifications"] = 2300,
["Infobox_saint"] = 5000,
["Infobox_school"] = 38000,
["Infobox_school/short_description"] = 38000,
["Infobox_school_district"] = 5700,
["Infobox_school_district/styles.css"] = 5700,
["Infobox_scientist"] = 49000,
["Infobox_service_record"] = 2600,
["Infobox_settlement"] = 563000,
["Infobox_settlement/areadisp"] = 238000,
["Infobox_settlement/columns"] = 95000,
["Infobox_settlement/columns/styles.css"] = 95000,
["Infobox_settlement/densdisp"] = 438000,
["Infobox_settlement/impus"] = 82000,
["Infobox_settlement/lengthdisp"] = 169000,
["Infobox_settlement/link"] = 95000,
["Infobox_settlement/metric"] = 211000,
["Infobox_settlement/pref"] = 294000,
["Infobox_settlement/styles.css"] = 563000,
["Infobox_ship_begin"] = 41000,
["Infobox_ship_career"] = 37000,
["Infobox_ship_characteristics"] = 41000,
["Infobox_ship_class_overview"] = 4100,
["Infobox_ship_image"] = 40000,
["Infobox_shopping_mall"] = 3500,
["Infobox_short_story"] = 2400,
["Infobox_skier"] = 2500,
["Infobox_soap_character"] = 2900,
["Infobox_software"] = 14000,
["Infobox_software/simple"] = 14000,
["Infobox_song"] = 76000,
["Infobox_song/color"] = 76000,
["Infobox_song/link"] = 76000,
["Infobox_spaceflight"] = 3600,
["Infobox_spaceflight/styles.css"] = 3600,
["Infobox_sport_event"] = 2200,
["Infobox_sports_competition_event"] = 18000,
["Infobox_sports_competition_event/medalrow"] = 12000,
["Infobox_sports_league"] = 5000,
["Infobox_sports_season"] = 5500,
["Infobox_sports_team"] = 2200,
["Infobox_sportsperson"] = 107000,
["Infobox_stadium"] = 3500,
["Infobox_station"] = 55000,
["Infobox_station/doc"] = 55000,
["Infobox_station/services"] = 55000,
["Infobox_station/styles.css"] = 55000,
["Infobox_street"] = 3500,
["Infobox_swimmer"] = 9400,
["Infobox_television"] = 57000,
["Infobox_television/Short_description"] = 55000,
["Infobox_television_channel"] = 6200,
["Infobox_television_episode"] = 12000,
["Infobox_television_episode/styles.css"] = 12000,
["Infobox_television_season"] = 9500,
["Infobox_television_station"] = 3700,
["Infobox_tennis_biography"] = 10000,
["Infobox_tennis_event"] = 2500,
["Infobox_tennis_tournament_event"] = 19000,
["Infobox_tennis_tournament_year"] = 9200,
["Infobox_tennis_tournament_year/color"] = 28000,
["Infobox_tennis_tournament_year/footer"] = 28000,
["Infobox_train"] = 2300,
["Infobox_union"] = 2000,
["Infobox_university"] = 26000,
["Infobox_user"] = 2700,
["Infobox_venue"] = 18000,
["Infobox_video_game"] = 28000,
["Infobox_video_game/styles.css"] = 28000,
["Infobox_volleyball_biography"] = 5400,
["Infobox_weapon"] = 7300,
["Infobox_weather_event"] = 2000,
["Infobox_weather_event/Footer"] = 2000,
["Infobox_weather_event/styles.css"] = 2000,
["Infobox_website"] = 7700,
["Infobox_writer"] = 39000,
["Information"] = 101000,
["Information/styles.css"] = 101000,
["Inline_block"] = 4600,
["Inprogress"] = 2400,
["Input_link"] = 32000,
["Instagram"] = 11000,
["Interlanguage_link"] = 159000,
["Interlanguage_link_multi"] = 19000,
["Internet_Archive_author"] = 19000,
["Internet_Archive_film"] = 2500,
["Intitle"] = 12000,
["Invalid_SVG"] = 2900,
["Invalid_SVG/styles.css"] = 2900,
["Iptalk"] = 17000,
["IranCensus2006"] = 46000,
["IranNCSGN"] = 3200,
["Iran_Census_2006"] = 46000,
["Irc"] = 2100,
["Irish_place_name"] = 2700,
["IsIPAddress"] = 36000,
["IsValidPageName"] = 143000,
["Is_MLB_league"] = 3200,
["Is_NPB_league"] = 3200,
["Is_country_in_Central_America"] = 13000,
["Is_country_in_the_Caribbean"] = 14000,
["Is_interwiki_link"] = 5900,
["Is_italic_taxon"] = 487000,
["Is_redirect"] = 27000,
["Isbn"] = 7700,
["Isfdb_name"] = 3600,
["Isfdb_title"] = 4400,
["Isnumeric"] = 142000,
["Iso2continent"] = 36000,
["Iso2country"] = 23000,
["Iso2country/article"] = 22000,
["Iso2country/data"] = 23000,
["Iso2nationality"] = 202000,
["Issubst"] = 72000,
["Isu_name"] = 2200,
["Italic_dab2"] = 5300,
["Italic_title"] = 280000,
["Italic_title_prefixed"] = 8700,
["Italics_colon"] = 3800,
["Italictitle"] = 4200,
["Ivm"] = 5700,
["Ivm/styles.css"] = 5700,
["Ivmbox"] = 123000,
["Ivory_messagebox"] = 143000,
["Module:I18n/complex_date"] = 66000,
["Module:IP"] = 132000,
["Module:IPA"] = 143000,
["Module:IPA/data"] = 129000,
["Module:IPA/styles.css"] = 115000,
["Module:IPA_symbol"] = 4800,
["Module:IPA_symbol/data"] = 4800,
["Module:IPAc-en"] = 49000,
["Module:IPAc-en/data"] = 49000,
["Module:IPAc-en/phonemes"] = 49000,
["Module:IPAc-en/pronunciation"] = 49000,
["Module:IPAddress"] = 187000,
["Module:ISO_3166"] = 1010000,
["Module:ISO_3166/data/AT"] = 2500,
["Module:ISO_3166/data/BA"] = 3400,
["Module:ISO_3166/data/CA"] = 2500,
["Module:ISO_3166/data/CN"] = 2100,
["Module:ISO_3166/data/DE"] = 14000,
["Module:ISO_3166/data/ES"] = 3600,
["Module:ISO_3166/data/FR"] = 38000,
["Module:ISO_3166/data/GB"] = 6400,
["Module:ISO_3166/data/GR"] = 3100,
["Module:ISO_3166/data/IN"] = 29000,
["Module:ISO_3166/data/IR"] = 9100,
["Module:ISO_3166/data/National"] = 1010000,
["Module:ISO_3166/data/PL"] = 6700,
["Module:ISO_3166/data/RS"] = 3200,
["Module:ISO_3166/data/RU"] = 25000,
["Module:ISO_3166/data/US"] = 85000,
["Module:ISO_639_name"] = 20000,
["Module:ISOdate"] = 66000,
["Module:Icon"] = 583000,
["Module:Icon/data"] = 583000,
["Module:If_empty"] = 3680000,
["Module:If_in_page"] = 10000,
["Module:If_preview"] = 295000,
["Module:If_preview/configuration"] = 295000,
["Module:If_preview/styles.css"] = 295000,
["Module:Import_style"] = 11000,
["Module:In_lang"] = 359000,
["Module:Indent"] = 4400,
["Module:Infobox"] = 4130000,
["Module:Infobox/dates"] = 69000,
["Module:Infobox/styles.css"] = 4390000,
["Module:Infobox3cols"] = 298000,
["Module:InfoboxImage"] = 4440000,
["Module:Infobox_body_of_water_tracking"] = 18000,
["Module:Infobox_cyclist_tracking"] = 16000,
["Module:Infobox_gene"] = 13000,
["Module:Infobox_mapframe"] = 407000,
["Module:Infobox_military_conflict"] = 22000,
["Module:Infobox_military_conflict/styles.css"] = 22000,
["Module:Infobox_multi-lingual_name"] = 20000,
["Module:Infobox_multi-lingual_name/data"] = 20000,
["Module:Infobox_power_station"] = 3100,
["Module:Infobox_road"] = 25000,
["Module:Infobox_road/browselinks"] = 25000,
["Module:Infobox_road/errors"] = 24000,
["Module:Infobox_road/length"] = 25000,
["Module:Infobox_road/locations"] = 24000,
["Module:Infobox_road/map"] = 25000,
["Module:Infobox_road/route"] = 25000,
["Module:Infobox_road/sections"] = 24000,
["Module:Infobox_television"] = 57000,
["Module:Infobox_television_disambiguation_check"] = 64000,
["Module:Infobox_television_episode"] = 12000,
["Module:Infobox_television_season_disambiguation_check"] = 9100,
["Module:Infobox_television_season_name"] = 9500,
["Module:Internet_Archive"] = 19000,
["Module:IrelandByCountyCatNav"] = 3400,
["Module:Is_infobox_in_lead"] = 378000,
["Module:Is_instance"] = 337000,
["Module:Italic_title"] = 1120000,
["Module:Italic_title2"] = 5300,
}
5d035dc37ac3c3fcd01d436985bf0942e4d13b49
Module:Infobox mapframe/doc
828
1737
3288
3287
2023-11-12T13:11:22Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Infobox_mapframe/doc]]
wikitext
text/x-wiki
{{Module rating|beta}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua sidebar}}
== Usage ==
Module that automatically makes a mapframe suitable for an infobox automatically, with minimal user input.
===Generic usage===
Just use the template {{tl|Infobox mapframe}}, following the documentation there. This module may also be imported to another Lua module.
===Automatic maps in infoboxes===
:''Example edits: [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison&type=revision&diff=962824818&oldid=782742135 Template:Infobox prison], [https://en.wikipedia.org/w/index.php?title=Template%3AInfobox_prison%2Fdoc&type=revision&diff=962825435&oldid=768262729 Template:Infobox prison/doc]''
Edit the infobox template (or its sandbox).
Add lines like the following examples to the infobox. Replace numbers ({{kbd|4}}, or {{kbd|97}} to {{kbd|99}}), with the appropriate number based on how many other image or data parameters are already present.
{|style=width:100%
|-
! If placing near the top of infobox !! If placing at/near the bottom of the infobox
|-
|<pre>
| image4 = {{#invoke:Infobox mapframe|auto}}
| caption4 = {{#invoke:Infobox mapframe|autocaption}}
</pre>
|<pre>
| header97 = {{#if:{{{mapframe|}}}|Location}}
| data98 = {{#invoke:Infobox mapframe|auto}}
| data99 = {{#invoke:Infobox mapframe|autocaption}}
</pre>
|}
If the template has a <code><nowiki>{{#invoke:</nowiki>[[Module:Check for unknown parameters|Check for unknown parameters]]<nowiki>}}</nowiki></code>, add the following parameters:
<pre>
| mapframe | mapframe-area_km2 | mapframe-area_mi2 | mapframe-caption | mapframe-coord | mapframe-coordinates | mapframe-custom | mapframe-frame-coord | mapframe-frame-coordinates | mapframe-frame-height | mapframe-frame-width | mapframe-geomask | mapframe-geomask-fill | mapframe-geomask-fill-opacity | mapframe-geomask-stroke-color | mapframe-geomask-stroke-colour | mapframe-geomask-stroke-width | mapframe-height | mapframe-id | mapframe-length_km | mapframe-length_mi | mapframe-marker | mapframe-marker-color | mapframe-marker-colour | mapframe-point | mapframe-shape | mapframe-shape-fill | mapframe-shape-fill-opacity | mapframe-stroke-color | mapframe-stroke-colour | mapframe-stroke-width | mapframe-switcher | mapframe-width | mapframe-wikidata | mapframe-zoom
</pre>
Once this is done, the above parameters will be available to users of the template.
* Defaults values for these parameters can also be specified in the {{kbd|#invoke}} calls above, e.g. <code><nowiki>{{#invoke:Infobox mapframe|auto|mapframe-marker=library}}</nowiki></code> means that the library marker will be used, unless a different value is passed in to the template.
* The maps are off by default, which means maps will not be displayed unless {{para|mapframe|yes}} is present in the template call. To turn maps on by default, in the {{kbd|#invoke}} calls above add {{para|onByDefault|yes}} – which means maps will be displayed unless {{para|mapframe|no}} is present in the template call. {{kbd|onByDefault}} can also be set to a conditional, such as if another parameters is present, e.g. {{para|onByDefault|2=<nowiki>{{#if:{{{pushpin_map|}}}|no|yes}}</nowiki>}}
* Add the new parameters to the document. You can use {{tlx|Infobox mapframe/doc/parameters}}. Specify default values (if any are used in the {{kbd|#invoke}} calls) using by adding parameters in the form {{tt|{{!}}}}''parameter-name''{{tt|{{=}}}}''value''. The default output is shown here collapsed:
{{cot}}
{{Infobox mapframe/doc/parameters}}
{{cob}}
*Parameters can also be added to the TemplateData can also be added by copy-pasting from {{edit|Template:Infobox mapframe/doc/templatedata|Template:Infobox mapframe/doc/templatedata}}
== See also ==
* [[Wikipedia:Mapframe maps in infoboxes]]
* [[Module:Mapframe]] & [[Template:Maplink]]
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
51cd0f5b193959f102c4be64250d13289a60a5fa
Template:Wde
10
1738
3292
3291
2023-11-12T13:12:07Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:Wde]]
wikitext
text/x-wiki
#REDIRECT [[Template:Wikidata entity link]]
[[Category:Wikidata templates]]
6ef9e52b49c26bd5d901ebd61f6b059c8971384b
Module:Mapframe/doc
828
1739
3294
3293
2023-11-12T13:12:08Z
Führerredux
2
1 revision imported from [[:wikipedia:Module:Mapframe/doc]]
wikitext
text/x-wiki
{{Module rating |beta}}
<!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) -->
{{High-use}}
{{Lua|Module:Transcluder}}
On English Wikipedia, this module is called by {{tlx|Maplink}}, see that template's documentation for usage instructions.
== Usage ==
;Standard usage:
:Just use {{tl|Maplink}}, which passes its parameters to this module's {{mono|main}} function.
;From another module:
:# Import this module, e.g. <code><nowiki>local mf = require('Module:Mapframe')</nowiki></code>
:# Pass a table of parameter names/values to the {{mono|_main}} function. See {{tl|Maplink}} documentation for parameter names and descriptions. E.g. <code><nowiki>local mapframe = mf._main(parameters)</nowiki></code>
:# Preprocess {{mono|_main}}'s output before returning it, e.g. <code><nowiki>return frame:preprocess(mapframe)</nowiki></code>
== Set up on another wiki ==
# '''Create template and module:'''
#* Import this module and its template to that wiki (or copy the code over, giving attribution in the edit summary). Optionally, give them a name that makes sense in that wiki's language
#* On Wikidata, add them to the items {{wde|Q52554979}} and {{wde|Q27882107}}
# '''Localise the module'''
#* Edit the top bits of the module, between the comments <code>-- ##### Localisation (L10n) settings #####</code> and <code>-- #### End of L10n settings ####</code>, replacing values between <code>"</code> <code>"</code> symbols with local values (when necessary)
# '''Add documentation'''
#* to the template (e.g. by translating [[Template:Maplink/doc]], adjusting as necessary per any localisations made in the previous step)
#* to the module (please transfer/translate these instructions so that wikimedians who read your wiki but not the English Wikipedia can also set up the module and template on another wiki).
<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox | |
<!-- Categories below this line, please; interwikis at Wikidata -->
}}</includeonly>
47c4c6915b49b24acb2d97871354c5d87de5b5a7
Template:WIA
10
1740
3296
3295
2023-11-12T13:13:56Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:WIA]]
wikitext
text/x-wiki
([[Wounded in action|{{abbr|WIA|Wounded in action}}]])<noinclude>{{documentation}}</noinclude>
e1621e089aafa654395dd85099656f4d070e1f5e
Template:WIA/doc
10
1741
3298
3297
2023-11-12T13:14:10Z
Führerredux
2
1 revision imported from [[:wikipedia:Template:WIA/doc]]
wikitext
text/x-wiki
{{Documentation subpage}}
===Usage===
{{tlx|WIA}} produces: {{WIA}}
This template is used to indicate wounded commanders in {{tlx|Infobox military conflict}}.
===See also===
*{{tl|DOW}}
*{{tl|Executed}}
*{{tl|KIA}}
*{{tl|POW}}
*{{tl|Surrendered}}
*{{tl|MIA}}
*{{tl|Natural Causes}}
<includeonly>{{Sandbox other||{{#ifeq:{{SUBPAGENAME}}|doc||
<!--Categories below here, please; interwikis to Wikidata.-->
[[Category:Military abbreviation templates|{{PAGENAME}}]]
}}}}</includeonly>
365dec2816e1ee347d5d8be208b2bc63cc7df513
Greece
0
243
3299
3241
2023-11-12T13:27:53Z
Führerredux
2
wikitext
text/x-wiki
{{Infobox country
| native_name = Ἑλληνικὴ Δημοκρατία
| conventional_long_name = Hellenic Republic
| era = 1936
| government_type = [[Presidential Republic]]
| event_start = Established
| date_start = 25 March
| year_start = 1924
| p1 = Kingdom of Greece
| flag_p1 = Flag of Greece (1822-1978).svg
| image_flag = File:Flag_of_Greece_(1822-1978).svg
| flag_alt = Flag of the Hellenic Republic
| flag_type = National flag
| image_coat = Coat of arms of Greece (1924–1935).svg
| coat_alt = Coat of arms of the Hellenic Republic
| symbol = Coat of arms of Greece
| symbol_type = Coat of arms
| image_map = Hellenic_Republic(1936).png
| image_map_alt = Locator map of the Hellenic Republic
| image_map_caption = The Hellenic Republic in 1935
| capital = Athens
| languages_type = Official language<br />{{nobold|and national language}}
| leader_name2 = [[Elefthérios Kyriákou Venizélos]]
| coa_size = 90
| englishmotto = Freedom or Death
| title_leader = [[President of the Hellenic Republic|President]]
| common_name = Greece
| national_motto = Ελευθερία ή Θάνατος
| national_anthem = «Ύμνος εις την Ελευθερίαν»<br />Ýmnos eis tin Eleftherían<br />{{small|"Hymn to Liberty"}}<br />{{center|[[File:Greece national anthem.ogg]]}}
| common_languages = Greek (Katharevousa has official status, while Demotic is popular)
| currency = Drachmae
| religion = Eastern Orthodox
| ethnic_groups = {{unbulleted list | 86.28% [[Hellenes]] | 4.32% [[Albabians]] | 9.40% [[Turks]] }}
| largest_city = capital
| languages = Greek
| demonym = Greek, Hellene
| leader1 = Pavlos Kountouriotis
| year_leader1 = 1924–1926
| leader2 = Theodoros Pangalos
| year_leader2 = 1926
| leader3 = Pavlos Kountouriotis
| year_leader3 = 1926–1929
| leader4 = Alexandros Zaimis
| year_leader4 = 1929–1936
| deputy1 = {{nowrap|[[Alexandros Papanastasiou]]}}
| deputy2 = [[Eleftherios Venizelos]]
| year_deputy1 = 1924 <small>(first)</small>
| year_deputy2 = 1933–1936 <small>(last)</small>
| title_deputy = Prime Minister
| leader_title1 = President of the Hellenic Republic
| leader_name1 = <span style="white-space:nowrap;">[[Aléxandros Zaímis]]</span>
| leader_title2 = Prime Minister
| legislature = Hellenic Parliament
| house1 = Hellenic Senate
| type_house1 = Upper house
| house2 = Chamber of Deputies
| type_house2 = Lower house
| date_format = DD/MM/YYYY
| drives_on = left
| calling_code = +30
| iso3166code = GR
| sovereignty_type = Establishment history
| established_event1 = Independence declared {{nobold|from the [[Ottoman Empire]]}}
| established_date1 = {{nowrap|25 March 1821}} (traditional starting date of the Greek War of Independence), {{nowrap|15 January 1822}} (official declaration)
| established_event2 = Recognised
| established_date2 = {{nowrap|3 February 1830}}
| established_event3 = Second Hellenic Republic
| established_date3 = 25 March 1924
| established_event4 = {{nowrap|Current constitution}}
| established_date4 = 3 June 1927
| population_estimate = 13,000,000
}}
The Second Hellenic Republic, established in 1924, emerged from the aftermath of the Balkan Wars and World War I, marked by territorial expansion and political upheavals. Led by Ethnarch Elefthérios Venizélos, the Republic faced internal power struggles, economic challenges, and the impending threat of conflict. This article delves into the key events and circumstances that shaped the political landscape of Greece during this period.
== History ==
=== The Formation of the Second Hellenic Republic ===
Following the victorious outcome of the 1912-1913 Balkan Wars, Greece experienced territorial growth but found itself navigating a complex international situation. The assassination of Archduke Franz Ferdinand in 1914 triggered a chain of events that led to a divergence in Greece's stance, with Venizélos advocating for Entente support while the monarchy leaned towards [[Germany]].
This disagreement culminated in a power struggle between Liberals led by Venizélos and Royalists supporting the monarchy. Unconstitutional actions, including the dismissal of Venizélos by the King, set the stage for the establishment of the State of National Defense in Thessaloniki, aligning Greece with the Entente. Venizélos, rejecting the monarchy, declared the establishment of the Second Hellenic Republic, leading to a divided nation for nine months until an Allied ultimatum forced the Royal Family into exile.
=== The Great War and the Greco-Turkish War ===
Under Venizélos' leadership, Greece actively participated in World War I, securing victory alongside the Entente. The subsequent Asia Minor Campaign, aimed at the Partition of the Ottoman Empire, further shaped the Republic's destiny. The Treaty of Sèvres ratified the outcomes, but economic challenges loomed large.
The years following the war saw Venizélos' Liberal Party dominating elections, implementing reforms, and purging remaining royalist sentiments. Despite these political successes, economic woes persisted, particularly in Smyrna, which lacked access to deep Anatolian raw materials and faced mounting debts. Unrest simmered within the population as the Hellenic Republic entered 1936.
=== The Rise of Valkism in Greece ===
As the threat of war loomed, the Hellenic Republic faced new challenges. Anti-Venizelist sentiment, a persistent issue, threatened political stability. The specter of conflict with the Ottomans, seeking the return of lost territories, added to the Republic's vulnerabilities. Additionally, the rise of the [[Golden Dawn]] [[Valkism|Valkists]], fueled by anti-Turkish sentiments, presented a formidable force.
=== Prospects for the Future ===
As the Second Hellenic Republic approaches the 1936 elections, uncertainties abide. The nation stands at a crossroads, grappling with economic hardships, political divisions, and the looming threat of external conflicts. The anti-Venizelist sentiment and the rise of Valkism cast a shadow over Greece's future. Only time will reveal whether the nation of the Hellenes ccan withstand the challenges that lay ahead. Amidst political tensions and potential military conflicts, the economic crisis stands out as a paramount concern. Ignoring the economic challenges may have dire consequences for the Greece.
=== The International Straits Commision ===
{{main|International Straits Commision}}
Established in the aftermath of the [[Ottoman Empire]]'s defeat in the Great War, the ISC's primary objective is to ensure free access to the Bosporus for all vessels and maintain peace in the region. Despite facing challenges, the ISC has demonstrated stability, garnering international support and providing citizens with various freedoms.
Over the years, the ISC has transformed into more than just a strategic waterway. The commission's support for freedom of religion has led to an increase in membership for the Patriarchate of Constantinople. This has resulted in the straits taking on characteristics akin to a new state, complete with its own unique culture. However, this evolution has also given rise to a significant portion of the population advocating for the abolition of the ISC and the declaration of an independent state.
The ISC's stability faces external threats from expansionist ambitions of Greece and the revanchism of the Turks. Both Athens and Ankara harbor dissatisfaction with the outcomes of the Great War, placing the ISC in a precarious position. To ensure the survival of the free straits, decisive action is imperative, considering the looming threats and geopolitical challenges.
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category:Important Minors]]
[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|TGreece]]
[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|TGreece]]
370e147749c5f725ce58f51d146c43e0058039d0
File:World Map 1936.svg
6
1742
3300
2023-11-12T14:08:40Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Coat of Arms of Deutsches Reich.png
6
1743
3303
2023-11-12T14:27:33Z
Führerredux
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
UserWiki:Führerredux
200
1744
3309
2023-11-12T18:53:59Z
Führerredux
2
import user wiki
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709